From 4be5cef3efecf86376d9f28ba878dc3dd9871de9 Mon Sep 17 00:00:00 2001 From: Jeremy Pritts <49847914+ds5678@users.noreply.github.com> Date: Thu, 24 Aug 2023 21:09:19 -0400 Subject: [PATCH 01/66] Add implicit conversions to System.Drawing structs. --- src/ElectronNET.API/Entities/Point.cs | 9 +++++++++ src/ElectronNET.API/Entities/Rectangle.cs | 9 +++++++++ src/ElectronNET.API/Entities/Size.cs | 9 +++++++++ 3 files changed, 27 insertions(+) diff --git a/src/ElectronNET.API/Entities/Point.cs b/src/ElectronNET.API/Entities/Point.cs index a464bed..9b3bed8 100644 --- a/src/ElectronNET.API/Entities/Point.cs +++ b/src/ElectronNET.API/Entities/Point.cs @@ -20,5 +20,14 @@ /// The y. /// public int Y { get; set; } + + /// + /// Convert this to . + /// + /// The point. + public static implicit operator System.Drawing.Point(Point point) + { + return new System.Drawing.Point(point.X, point.Y); + } } } \ No newline at end of file diff --git a/src/ElectronNET.API/Entities/Rectangle.cs b/src/ElectronNET.API/Entities/Rectangle.cs index 5d171e7..b062272 100644 --- a/src/ElectronNET.API/Entities/Rectangle.cs +++ b/src/ElectronNET.API/Entities/Rectangle.cs @@ -36,5 +36,14 @@ /// The height. /// public int Height { get; set; } + + /// + /// Convert this to . + /// + /// The rectangle. + public static implicit operator System.Drawing.Rectangle(Rectangle rectangle) + { + return new System.Drawing.Rectangle(rectangle.X, rectangle.Y, rectangle.Width, rectangle.Height); + } } } \ No newline at end of file diff --git a/src/ElectronNET.API/Entities/Size.cs b/src/ElectronNET.API/Entities/Size.cs index d63d180..61bbd12 100644 --- a/src/ElectronNET.API/Entities/Size.cs +++ b/src/ElectronNET.API/Entities/Size.cs @@ -20,5 +20,14 @@ /// The height. /// public int Height { get; set; } + + /// + /// Convert this to . + /// + /// The size. + public static implicit operator System.Drawing.Size(Size size) + { + return new System.Drawing.Size(size.Width, size.Height); + } } } \ No newline at end of file From 91714f5807f909b3a1c6be7cc0f799455efed682 Mon Sep 17 00:00:00 2001 From: Misha Gorshenin Date: Sun, 28 Apr 2024 23:42:30 +0500 Subject: [PATCH 02/66] feat: CLI: add /no-restore arg and SelfContained propeprty support --- src/ElectronNET.CLI/Commands/BuildCommand.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/ElectronNET.CLI/Commands/BuildCommand.cs b/src/ElectronNET.CLI/Commands/BuildCommand.cs index 2f4f52c..6ccf4ac 100644 --- a/src/ElectronNET.CLI/Commands/BuildCommand.cs +++ b/src/ElectronNET.CLI/Commands/BuildCommand.cs @@ -15,6 +15,7 @@ namespace ElectronNET.CLI.Commands " for custom target, check .NET Core RID Catalog and Electron build target/" + Environment.NewLine + " e.g. '/target win' or '/target custom \"win7-x86;win\"'" + Environment.NewLine + "Optional: '/dotnet-configuration' with the desired .NET Core build config e.g. release or debug. Default = Release" + Environment.NewLine + + "Optional: '/no-restore' to disable nuget packages restore" + Environment.NewLine + "Optional: '/electron-arch' to specify the resulting electron processor architecture (e.g. ia86 for x86 builds). Be aware to use the '/target custom' param as well!" + Environment.NewLine + "Optional: '/electron-params' specify any other valid parameter, which will be routed to the electron-packager." + Environment.NewLine + "Optional: '/relative-path' to specify output a subdirectory for output." + Environment.NewLine + @@ -45,6 +46,8 @@ namespace ElectronNET.CLI.Commands private string _manifest = "manifest"; private string _paramPublishReadyToRun = "PublishReadyToRun"; private string _paramPublishSingleFile = "PublishSingleFile"; + private string _paramSelfContained = "SelfContained"; + private string _paramNoRestore = "no-restore"; private string _paramVersion = "Version"; public Task ExecuteAsync() @@ -81,6 +84,10 @@ namespace ElectronNET.CLI.Commands configuration = parser.Arguments[_paramDotNetConfig][0]; } + string noRestore = parser.Arguments.ContainsKey(_paramNoRestore) + ? " --no-restore" + : string.Empty; + var platformInfo = GetTargetPlatformInformation.Do(desiredPlatform, specifiedFromCustom); Console.WriteLine($"Build ASP.NET Core App for {platformInfo.NetCorePublishRid}..."); @@ -107,7 +114,7 @@ namespace ElectronNET.CLI.Commands var dotNetPublishFlags = GetDotNetPublishFlags(parser); var command = - $"dotnet publish -r {platformInfo.NetCorePublishRid} -c \"{configuration}\" --output \"{tempBinPath}\" {string.Join(' ', dotNetPublishFlags.Select(kvp => $"{kvp.Key}={kvp.Value}"))} --self-contained"; + $"dotnet publish -r {platformInfo.NetCorePublishRid} -c \"{configuration}\"{noRestore} --output \"{tempBinPath}\" {string.Join(' ', dotNetPublishFlags.Select(kvp => $"{kvp.Key}={kvp.Value}"))}"; // output the command Console.ForegroundColor = ConsoleColor.Green; @@ -212,6 +219,7 @@ namespace ElectronNET.CLI.Commands { {"/p:PublishReadyToRun", parser.TryGet(_paramPublishReadyToRun, out var rtr) ? rtr[0] : "true"}, {"/p:PublishSingleFile", parser.TryGet(_paramPublishSingleFile, out var psf) ? psf[0] : "true"}, + {"/p:SelfContained", parser.TryGet(_paramSelfContained, out var sc) ? sc[0] : "true"}, }; if (parser.Arguments.ContainsKey(_paramVersion)) From f55dbc14c01e06e73a582b19ceca87497231780f Mon Sep 17 00:00:00 2001 From: Misha Gorshenin Date: Wed, 1 May 2024 09:16:25 +0500 Subject: [PATCH 03/66] chore: update node modules packages --- src/ElectronNET.Host/package-lock.json | 84 +++++++++++++------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/src/ElectronNET.Host/package-lock.json b/src/ElectronNET.Host/package-lock.json index a5258df..e3e1d91 100644 --- a/src/ElectronNET.Host/package-lock.json +++ b/src/ElectronNET.Host/package-lock.json @@ -474,9 +474,9 @@ } }, "node_modules/electron": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/electron/-/electron-23.2.0.tgz", - "integrity": "sha512-De9e21cri0QYct/w6tTNOnKyCt9RVKUw5F8PEN4FPzGR9tr6IT53uyt42uH754uJWrZeLMCAdoXy6/0GmMmYZA==", + "version": "23.3.13", + "resolved": "https://registry.npmjs.org/electron/-/electron-23.3.13.tgz", + "integrity": "sha512-BaXtHEb+KYKLouUXlUVDa/lj9pj4F5kiE0kwFdJV84Y2EU7euIDgPthfKtchhr5MVHmjtavRMIV/zAwEiSQ9rQ==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -532,9 +532,9 @@ } }, "node_modules/electron-updater/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -569,9 +569,9 @@ } }, "node_modules/engine.io": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.1.tgz", - "integrity": "sha512-JFYQurD/nbsA5BSPmbaOSLa3tSVj8L6o4srSwXXY3NqE+gGUNmmPTbhn8tjzcCtSqhFgIeqef81ngny8JM25hw==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.2.tgz", + "integrity": "sha512-FKn/3oMiJjrOEOeUub2WCox6JhxBXq/Zn3fZOMCBxKnNYtsdKjxhl7yR3fZhM9PV+rdE75SU5SYMc+2PGzo+Tg==", "dependencies": { "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", @@ -762,9 +762,9 @@ } }, "node_modules/global-agent/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "optional": true, "dependencies": { @@ -1313,9 +1313,9 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -1369,9 +1369,9 @@ } }, "node_modules/socket.io-parser": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.2.tgz", - "integrity": "sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" @@ -1483,9 +1483,9 @@ } }, "node_modules/tslint/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -1965,9 +1965,9 @@ "dev": true }, "electron": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/electron/-/electron-23.2.0.tgz", - "integrity": "sha512-De9e21cri0QYct/w6tTNOnKyCt9RVKUw5F8PEN4FPzGR9tr6IT53uyt42uH754uJWrZeLMCAdoXy6/0GmMmYZA==", + "version": "23.3.13", + "resolved": "https://registry.npmjs.org/electron/-/electron-23.3.13.tgz", + "integrity": "sha512-BaXtHEb+KYKLouUXlUVDa/lj9pj4F5kiE0kwFdJV84Y2EU7euIDgPthfKtchhr5MVHmjtavRMIV/zAwEiSQ9rQ==", "dev": true, "requires": { "@electron/get": "^2.0.0", @@ -2019,9 +2019,9 @@ } }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "requires": { "lru-cache": "^6.0.0" } @@ -2043,9 +2043,9 @@ } }, "engine.io": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.1.tgz", - "integrity": "sha512-JFYQurD/nbsA5BSPmbaOSLa3tSVj8L6o4srSwXXY3NqE+gGUNmmPTbhn8tjzcCtSqhFgIeqef81ngny8JM25hw==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.2.tgz", + "integrity": "sha512-FKn/3oMiJjrOEOeUub2WCox6JhxBXq/Zn3fZOMCBxKnNYtsdKjxhl7yR3fZhM9PV+rdE75SU5SYMc+2PGzo+Tg==", "requires": { "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", @@ -2185,9 +2185,9 @@ }, "dependencies": { "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "optional": true, "requires": { @@ -2619,9 +2619,9 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true }, "semver-compare": { @@ -2663,9 +2663,9 @@ } }, "socket.io-parser": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.2.tgz", - "integrity": "sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "requires": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" @@ -2749,9 +2749,9 @@ } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true }, "sprintf-js": { From 0775b91dd4acaddab70fc1a020b6c5be7de2970e Mon Sep 17 00:00:00 2001 From: Misha Gorshenin Date: Wed, 1 May 2024 09:37:38 +0500 Subject: [PATCH 04/66] fix: get back net6 support --- .github/workflows/ci.yml | 2 ++ src/ElectronNET.API/ElectronNET.API.csproj | 2 +- src/ElectronNET.CLI/ElectronNET.CLI.csproj | 3 +-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0901bd2..a0e7cfb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,6 +17,7 @@ jobs: uses: actions/setup-dotnet@v4 with: dotnet-version: | + 6.0.x 8.0.x - name: Build @@ -32,6 +33,7 @@ jobs: uses: actions/setup-dotnet@v4 with: dotnet-version: | + 6.0.x 8.0.x - name: Build diff --git a/src/ElectronNET.API/ElectronNET.API.csproj b/src/ElectronNET.API/ElectronNET.API.csproj index 1f44ff7..51fb9b5 100644 --- a/src/ElectronNET.API/ElectronNET.API.csproj +++ b/src/ElectronNET.API/ElectronNET.API.csproj @@ -1,6 +1,6 @@  - net8.0 + net6.0;net8.0 ..\..\artifacts ElectronNET.API Gregor Biswanger, Florian Rappl diff --git a/src/ElectronNET.CLI/ElectronNET.CLI.csproj b/src/ElectronNET.CLI/ElectronNET.CLI.csproj index fd30a57..5aa7182 100644 --- a/src/ElectronNET.CLI/ElectronNET.CLI.csproj +++ b/src/ElectronNET.CLI/ElectronNET.CLI.csproj @@ -1,7 +1,7 @@  Exe - net8.0 + net6.0;net8.0 dotnet-electronize electronize DotnetCliTool @@ -25,7 +25,6 @@ Changelog: https://github.com/ElectronNET/Electron.NET/blob/main/Changelog.md PackageIcon.png true - true From 1864c21c109530839b595b0f024311c7750bfb5a Mon Sep 17 00:00:00 2001 From: Misha Gorshenin Date: Wed, 1 May 2024 12:35:06 +0500 Subject: [PATCH 05/66] fix: specify target framework --- nuke/Build.cs | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/nuke/Build.cs b/nuke/Build.cs index 0b39025..77bbe7b 100644 --- a/nuke/Build.cs +++ b/nuke/Build.cs @@ -71,6 +71,8 @@ class Build : NukeBuild } } + string Framework => Solution.GetProject(DemoTargetLibName).GetProperty("TargetFramework"); + protected override void OnBuildInitialized() { var parser = new ReleaseNotesParser(); @@ -184,7 +186,9 @@ class Build : NukeBuild var cli = SourceDirectory / CliTargetLibName / $"{CliTargetLibName}.csproj"; var args = "build /target custom win7-x86;win /dotnet-configuration Debug /electron-arch ia32 /electron-params \"--publish never\""; - DotNet($"run --project {cli} -- {args}", sample); + var cmd = $"run --project {cli} --framework {Framework} -- {args}"; + Log.Debug(cmd); + DotNet(cmd, sample); }); Target ElectronizeWindowsTargetSample => _ => _ @@ -195,7 +199,9 @@ class Build : NukeBuild var cli = SourceDirectory / CliTargetLibName / $"{CliTargetLibName}.csproj"; var args = "build /target win /electron-params \"--publish never\""; - DotNet($"run --project {cli} -- {args}", sample); + var cmd =$"run --project {cli} --framework {Framework} -- {args}"; + Log.Debug(cmd); + DotNet(cmd, sample); }); Target ElectronizeCustomWin7TargetSample => _ => _ @@ -206,7 +212,9 @@ class Build : NukeBuild var cli = SourceDirectory / CliTargetLibName / $"{CliTargetLibName}.csproj"; var args = "build /target custom win7-x86;win /electron-params \"--publish never\""; - DotNet($"run --project {cli} -- {args}", sample); + var cmd =$"run --project {cli} --framework {Framework} -- {args}"; + Log.Debug(cmd); + DotNet(cmd, sample); }); Target ElectronizeMacOsTargetSample => _ => _ @@ -217,7 +225,9 @@ class Build : NukeBuild var cli = SourceDirectory / CliTargetLibName / $"{CliTargetLibName}.csproj"; var args = "build /target osx /electron-params \"--publish never\""; - DotNet($"run --project {cli} -- {args}", sample); + var cmd =$"run --project {cli} --framework {Framework} -- {args}"; + Log.Debug(cmd); + DotNet(cmd, sample); }); Target ElectronizeLinuxTargetSample => _ => _ @@ -228,7 +238,9 @@ class Build : NukeBuild var cli = SourceDirectory / CliTargetLibName / $"{CliTargetLibName}.csproj"; var args = "build /target linux /electron-params \"--publish never\""; - DotNet($"run --project {cli} -- {args}", sample); + var cmd =$"run --project {cli} --framework {Framework} -- {args}"; + Log.Debug(cmd); + DotNet(cmd, sample); }); Target PublishPackages => _ => _ From fdb8be46b759952b6f398356940eaf732bc9eccc Mon Sep 17 00:00:00 2001 From: Robert Schmid Date: Fri, 10 May 2024 16:56:51 +0200 Subject: [PATCH 06/66] Update electron version --- src/ElectronNET.CLI/Commands/BuildCommand.cs | 10 ++-- src/ElectronNET.Host/package-lock.json | 52 +++++++++++++------- src/ElectronNET.Host/package.json | 2 +- 3 files changed, 41 insertions(+), 23 deletions(-) diff --git a/src/ElectronNET.CLI/Commands/BuildCommand.cs b/src/ElectronNET.CLI/Commands/BuildCommand.cs index 6ccf4ac..2d4322b 100644 --- a/src/ElectronNET.CLI/Commands/BuildCommand.cs +++ b/src/ElectronNET.CLI/Commands/BuildCommand.cs @@ -110,13 +110,13 @@ namespace ElectronNET.CLI.Commands string tempBinPath = Path.Combine(tempPath, "bin"); Console.WriteLine($"Build ASP.NET Core App for {platformInfo.NetCorePublishRid} under {configuration}-Configuration..."); - + var dotNetPublishFlags = GetDotNetPublishFlags(parser); var command = $"dotnet publish -r {platformInfo.NetCorePublishRid} -c \"{configuration}\"{noRestore} --output \"{tempBinPath}\" {string.Join(' ', dotNetPublishFlags.Select(kvp => $"{kvp.Key}={kvp.Value}"))}"; - - // output the command + + // output the command Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine(command); Console.ResetColor(); @@ -205,7 +205,7 @@ namespace ElectronNET.CLI.Commands : $"node build-helper.js {manifestFileName} {version}", tempPath); Console.WriteLine($"Package Electron App for Platform {platformInfo.ElectronPackerPlatform}..."); - ProcessHelper.CmdExecute($"npx electron-builder --config=./bin/electron-builder.json --{platformInfo.ElectronPackerPlatform} --{electronArch} -c.electronVersion=23.2.0 {electronParams}", tempPath); + ProcessHelper.CmdExecute($"npx electron-builder --config=./bin/electron-builder.json --{platformInfo.ElectronPackerPlatform} --{electronArch} -c.electronVersion=30.0.3 {electronParams}", tempPath); Console.WriteLine("... done"); @@ -260,4 +260,4 @@ namespace ElectronNET.CLI.Commands return dotNetPublishFlags; } } -} \ No newline at end of file +} diff --git a/src/ElectronNET.Host/package-lock.json b/src/ElectronNET.Host/package-lock.json index e3e1d91..7b64a91 100644 --- a/src/ElectronNET.Host/package-lock.json +++ b/src/ElectronNET.Host/package-lock.json @@ -17,7 +17,7 @@ }, "devDependencies": { "@types/node": "^18.15.5", - "electron": "^23.2.0", + "electron": "^30.0.3", "tslint": "^6.1.3", "typescript": "^5.0.2" } @@ -474,14 +474,14 @@ } }, "node_modules/electron": { - "version": "23.3.13", - "resolved": "https://registry.npmjs.org/electron/-/electron-23.3.13.tgz", - "integrity": "sha512-BaXtHEb+KYKLouUXlUVDa/lj9pj4F5kiE0kwFdJV84Y2EU7euIDgPthfKtchhr5MVHmjtavRMIV/zAwEiSQ9rQ==", + "version": "30.0.3", + "resolved": "https://registry.npmjs.org/electron/-/electron-30.0.3.tgz", + "integrity": "sha512-h+suwx6e0fnv/9wi0/cmCMtG+4LrPzJZa+3DEEpxcPcP+pcWnBI70t8QspxgMNIh2wzXLMD9XVqrLkEbiBAInw==", "dev": true, "hasInstallScript": true, "dependencies": { "@electron/get": "^2.0.0", - "@types/node": "^16.11.26", + "@types/node": "^20.9.0", "extract-zip": "^2.0.1" }, "bin": { @@ -554,10 +554,13 @@ } }, "node_modules/electron/node_modules/@types/node": { - "version": "16.18.16", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.16.tgz", - "integrity": "sha512-ZOzvDRWp8dCVBmgnkIqYCArgdFOO9YzocZp8Ra25N/RStKiWvMOXHMz+GjSeVNe5TstaTmTWPucGJkDw0XXJWA==", - "dev": true + "version": "20.12.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.11.tgz", + "integrity": "sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/end-of-stream": { "version": "1.4.4", @@ -1543,6 +1546,12 @@ "node": ">=12.20" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -1965,21 +1974,24 @@ "dev": true }, "electron": { - "version": "23.3.13", - "resolved": "https://registry.npmjs.org/electron/-/electron-23.3.13.tgz", - "integrity": "sha512-BaXtHEb+KYKLouUXlUVDa/lj9pj4F5kiE0kwFdJV84Y2EU7euIDgPthfKtchhr5MVHmjtavRMIV/zAwEiSQ9rQ==", + "version": "30.0.3", + "resolved": "https://registry.npmjs.org/electron/-/electron-30.0.3.tgz", + "integrity": "sha512-h+suwx6e0fnv/9wi0/cmCMtG+4LrPzJZa+3DEEpxcPcP+pcWnBI70t8QspxgMNIh2wzXLMD9XVqrLkEbiBAInw==", "dev": true, "requires": { "@electron/get": "^2.0.0", - "@types/node": "^16.11.26", + "@types/node": "^20.9.0", "extract-zip": "^2.0.1" }, "dependencies": { "@types/node": { - "version": "16.18.16", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.16.tgz", - "integrity": "sha512-ZOzvDRWp8dCVBmgnkIqYCArgdFOO9YzocZp8Ra25N/RStKiWvMOXHMz+GjSeVNe5TstaTmTWPucGJkDw0XXJWA==", - "dev": true + "version": "20.12.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.11.tgz", + "integrity": "sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } } } }, @@ -2792,6 +2804,12 @@ "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", "dev": true }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", diff --git a/src/ElectronNET.Host/package.json b/src/ElectronNET.Host/package.json index ad77a94..81b0c05 100644 --- a/src/ElectronNET.Host/package.json +++ b/src/ElectronNET.Host/package.json @@ -20,7 +20,7 @@ }, "devDependencies": { "@types/node": "^18.15.5", - "electron": "^23.2.0", + "electron": "^30.0.3", "tslint": "^6.1.3", "typescript": "^5.0.2" } From 4b9fe4656e461238b4e1bb37ddc723eaf431d1fa Mon Sep 17 00:00:00 2001 From: Robert Schmid Date: Tue, 4 Jun 2024 15:56:47 +0200 Subject: [PATCH 07/66] Add changelog entry --- Changelog.md | 66 ++++++++++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 31 deletions(-) diff --git a/Changelog.md b/Changelog.md index 4998dda..d8ffd28 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,7 @@ +# 30.0.3 + +(none) + # 23.6.2 ## ElectronNET.API @@ -34,7 +38,7 @@ ## ElectronNET.API -* New Feature: Native Electron 23.2.0 support, but not all new API features included (we search contributors) +* New Feature: Native Electron 23.2.0 support, but not all new API features included (we search contributors) * New Feature: Upgrade to .NET 6 support * New Feature: Changed Web-Socket .NET Library to [SocketIOClient](https://github.com/doghappy/socket.io-client-csharp) * Breaking Changes: We removed deprecated API events/methods from ElectronNET.API [(More Details)](https://www.electronjs.org/docs/latest/breaking-changes) @@ -43,26 +47,26 @@ ElectronNET.CLI: -* New Feature: Using exit code instead of seek for the term 'error' (thanks [TSrgy](https://github.com/TSrgy)) [\#562](https://github.com/ElectronNET/Electron.NET/pull/562) -* Fixed bug: Allow for property overrides to be passed in (thanks [danatcofo](https://github.com/danatcofo)) [\#531](https://github.com/ElectronNET/Electron.NET/pull/531) -Use `/p:propertyName=value` or `/property:propertyName=value` to pass in property overrides. This is equivalent to the `-p:` option documented here: [https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-publish](https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-publish) -* Fixed bug: Add ability to pass an argument for "Version" for both the "dotnet publish" and "electron-builder" commands (thanks [tub5](https://github.com/tub5)) [\#546](https://github.com/ElectronNET/Electron.NET/pull/546) -* Fixed bug: Version flag not persisting with the referenced executable (thanks [tub5](https://github.com/tub5)) [\#585](https://github.com/ElectronNET/Electron.NET/pull/585) -* Fixed bug: Changes PublishSingleFile default to false for NET5 compatibility (thanks [cristiangiagante](https://github.com/cristiangiagante)) [\#570](https://github.com/ElectronNET/Electron.NET/pull/570) - -ElectronNET.API: - -* New Feature: Native Electron 13.1.5 support, but not all new features (we search contributors) -* Breaking API Changes (from native Electron 13.1.5): - - `Shell.MoveItemToTrashAsync` renamed with `Shell.TrashItemAsync` - - The deprecated extension APIs have been removed: `BrowserWindow.GetAllExtensionsAsync()`, `BrowserWindow.RemoveExtension()`, `BrowserWindow.AddExtensionAsync()`. Use the session APIs instead: `Session.GetAllExtensionsAsync()`, `Session.RemoveExtension()`, `Session.LoadExtensionAsync()`. -* New Feature: singleInstance handle command line arguments [\#520](https://github.com/ElectronNET/Electron.NET/issues/520) -* New Feature: Add WebContents [insertCSS](https://www.electronjs.org/docs/api/web-contents#contentsinsertcsscss-options) functionality (thanks [nfichter](https://github.com/nfichter)) [\#559](https://github.com/ElectronNET/Electron.NET/pull/559) -* New Feature: Allow IpcMain to send IPC messages to BrowserViews (thanks [nfichter](https://github.com/nfichter)) [\#560](https://github.com/ElectronNET/Electron.NET/pull/560) -* New Feature: Add support for proxies that require basic username/password authentication (thanks [nfichter](https://github.com/nfichter)) [\#561](https://github.com/ElectronNET/Electron.NET/pull/561) -* New Feature: Add PostData to LoadURLOptions to allow http-posts in LoadURL calls (thanks [Funkrusha](https://github.com/Funkrusha)) [\#547](https://github.com/ElectronNET/Electron.NET/pull/547) -* Fixed bug: Fix splash screen interaction causing crashes, ghost dragging, and resizable behavior #540 (thanks [MiniguyBrendan](https://github.com/MiniguyBrendan)) [\#540](https://github.com/ElectronNET/Electron.NET/pull/540) -* Fixed bug: Vibrancy serialization fix (thanks [tantumalice](https://github.com/tantumalice)) [\#573](https://github.com/ElectronNET/Electron.NET/pull/573) +* New Feature: Using exit code instead of seek for the term 'error' (thanks [TSrgy](https://github.com/TSrgy)) [\#562](https://github.com/ElectronNET/Electron.NET/pull/562) +* Fixed bug: Allow for property overrides to be passed in (thanks [danatcofo](https://github.com/danatcofo)) [\#531](https://github.com/ElectronNET/Electron.NET/pull/531) +Use `/p:propertyName=value` or `/property:propertyName=value` to pass in property overrides. This is equivalent to the `-p:` option documented here: [https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-publish](https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-publish) +* Fixed bug: Add ability to pass an argument for "Version" for both the "dotnet publish" and "electron-builder" commands (thanks [tub5](https://github.com/tub5)) [\#546](https://github.com/ElectronNET/Electron.NET/pull/546) +* Fixed bug: Version flag not persisting with the referenced executable (thanks [tub5](https://github.com/tub5)) [\#585](https://github.com/ElectronNET/Electron.NET/pull/585) +* Fixed bug: Changes PublishSingleFile default to false for NET5 compatibility (thanks [cristiangiagante](https://github.com/cristiangiagante)) [\#570](https://github.com/ElectronNET/Electron.NET/pull/570) + +ElectronNET.API: + +* New Feature: Native Electron 13.1.5 support, but not all new features (we search contributors) +* Breaking API Changes (from native Electron 13.1.5): + - `Shell.MoveItemToTrashAsync` renamed with `Shell.TrashItemAsync` + - The deprecated extension APIs have been removed: `BrowserWindow.GetAllExtensionsAsync()`, `BrowserWindow.RemoveExtension()`, `BrowserWindow.AddExtensionAsync()`. Use the session APIs instead: `Session.GetAllExtensionsAsync()`, `Session.RemoveExtension()`, `Session.LoadExtensionAsync()`. +* New Feature: singleInstance handle command line arguments [\#520](https://github.com/ElectronNET/Electron.NET/issues/520) +* New Feature: Add WebContents [insertCSS](https://www.electronjs.org/docs/api/web-contents#contentsinsertcsscss-options) functionality (thanks [nfichter](https://github.com/nfichter)) [\#559](https://github.com/ElectronNET/Electron.NET/pull/559) +* New Feature: Allow IpcMain to send IPC messages to BrowserViews (thanks [nfichter](https://github.com/nfichter)) [\#560](https://github.com/ElectronNET/Electron.NET/pull/560) +* New Feature: Add support for proxies that require basic username/password authentication (thanks [nfichter](https://github.com/nfichter)) [\#561](https://github.com/ElectronNET/Electron.NET/pull/561) +* New Feature: Add PostData to LoadURLOptions to allow http-posts in LoadURL calls (thanks [Funkrusha](https://github.com/Funkrusha)) [\#547](https://github.com/ElectronNET/Electron.NET/pull/547) +* Fixed bug: Fix splash screen interaction causing crashes, ghost dragging, and resizable behavior #540 (thanks [MiniguyBrendan](https://github.com/MiniguyBrendan)) [\#540](https://github.com/ElectronNET/Electron.NET/pull/540) +* Fixed bug: Vibrancy serialization fix (thanks [tantumalice](https://github.com/tantumalice)) [\#573](https://github.com/ElectronNET/Electron.NET/pull/573) # 11.5.1 @@ -150,24 +154,24 @@ Thank you for donation [Phil Seeman](https://github.com/mpnow) ❤ ElectronNET.CLI: * New Feature: Deactivate PublishReadyToRun for build or start [\#395](https://github.com/ElectronNET/Electron.NET/issues/395) - - `electronize build /target win /PublishReadyToRun false` - `electronize start /PublishReadyToRun false` + + `electronize build /target win /PublishReadyToRun false` + `electronize start /PublishReadyToRun false` * Fixed bug: Application window doesn't open after packaging [\#387](https://github.com/ElectronNET/Electron.NET/issues/387) ElectronNET.API: -* New Feature: NativeImage Support (thanks [ThrDev](https://github.com/ThrDev)) [\#394](https://github.com/ElectronNET/Electron.NET/pull/394) -* New Feature: Update menu items for context menu and system tray on-the-fly. [\#270](https://github.com/ElectronNET/Electron.NET/pull/270) +* New Feature: NativeImage Support (thanks [ThrDev](https://github.com/ThrDev)) [\#394](https://github.com/ElectronNET/Electron.NET/pull/394) +* New Feature: Update menu items for context menu and system tray on-the-fly. [\#270](https://github.com/ElectronNET/Electron.NET/pull/270) # 8.31.1 ElectronNET.CLI: * New Feature: Set a name and author of the app in `electron.manifest.json` [\#348](https://github.com/ElectronNET/Electron.NET/issues/348#issuecomment-615977950) [\#310](https://github.com/ElectronNET/Electron.NET/issues/310#issuecomment-617361086) -* New Feature: Live reload (thanks [syedadeel2](https://github.com/syedadeel2)) [\#390](https://github.com/ElectronNET/Electron.NET/pull/390) +* New Feature: Live reload (thanks [syedadeel2](https://github.com/syedadeel2)) [\#390](https://github.com/ElectronNET/Electron.NET/pull/390) `electronize start /watch` -* New Feature: Every new window will created with an clear cache [\#273](https://github.com/ElectronNET/Electron.NET/issues/273) +* New Feature: Every new window will created with an clear cache [\#273](https://github.com/ElectronNET/Electron.NET/issues/273) `electronize start /clear-cache` ElectronNET.API: @@ -247,7 +251,7 @@ ElectronNET.API: * Fixed bug: Menu Item visibility [\#257](https://github.com/ElectronNET/Electron.NET/issues/257) * Fixed bug: electron.manifest.json - singleInstance not working [\#258](https://github.com/ElectronNET/Electron.NET/issues/258) -* Fixed security issue: ASP.NET Core process is now bound to 127.0.0.1 instead of the broader localhost [\#258](https://github.com/ElectronNET/Electron.NET/pull/266) +* Fixed security issue: ASP.NET Core process is now bound to 127.0.0.1 instead of the broader localhost [\#258](https://github.com/ElectronNET/Electron.NET/pull/266) # 5.22.12 @@ -337,7 +341,7 @@ ElectronNET.CLI: ElectronNET.CLI: * nuget packages are now release bits and have the correct assembly version -* Version command +* Version command * better devCleanup.cmd * Better Platform Support Issue - thanks to @Petermarcu * Start Command should now work on OSX/Linux - thanks to @r105m @@ -369,7 +373,7 @@ ElectronNET.CLI: * Build for all platforms (well... for newest OSX/Linux/Windows) ElectronNET.API: -* Moar XML documentation +* Moar XML documentation * Hybrid support (e.g. running as normal website and electron app) * Event bugfixing From e46ba98c8dd55bac11038cdde41252bd54cf6fe0 Mon Sep 17 00:00:00 2001 From: Robert Schmid Date: Tue, 4 Jun 2024 15:57:22 +0200 Subject: [PATCH 08/66] Update version in ElectronNET.WebApp electron manifest --- src/ElectronNET.WebApp/electron.manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ElectronNET.WebApp/electron.manifest.json b/src/ElectronNET.WebApp/electron.manifest.json index 5fed92e..f423bab 100644 --- a/src/ElectronNET.WebApp/electron.manifest.json +++ b/src/ElectronNET.WebApp/electron.manifest.json @@ -9,7 +9,7 @@ "appId": "com.electronnetapidemos.app", "productName": "ElectronNET API Demos", "copyright": "Copyright © 2019-2024", - "buildVersion": "23.6.2", + "buildVersion": "30.0.3", "compression": "maximum", "win": { "icon": "Assets/electron.ico", @@ -46,4 +46,4 @@ "**/*" ] } -} \ No newline at end of file +} From c6b9de2afa608b39668b89b4c708b56d458ccbd1 Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 13:03:36 +0200 Subject: [PATCH 09/66] Update .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 705f03c..e75ee86 100644 --- a/.gitignore +++ b/.gitignore @@ -266,3 +266,4 @@ __pycache__/ # Nuke build tool .nuke/temp +/publish.cmd From f634dc45ed93f83cb2acd21cd278753ab4b2c59c Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 13:03:53 +0200 Subject: [PATCH 10/66] Update NuGet.config --- NuGet.config | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/NuGet.config b/NuGet.config index c1e1ed5..53d8875 100644 --- a/NuGet.config +++ b/NuGet.config @@ -1,8 +1,11 @@ - + + + + - + \ No newline at end of file From 0f3f29eae340e644447cf43890f0db040a7a80bd Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 13:04:24 +0200 Subject: [PATCH 11/66] global.json: Pin .net SDK --- src/global.json | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/global.json diff --git a/src/global.json b/src/global.json new file mode 100644 index 0000000..2523da8 --- /dev/null +++ b/src/global.json @@ -0,0 +1,7 @@ +{ + "sdk": { + "version": "8.0.316", + "rollForward": "patch", + "allowPrerelease": false + } +} From 74b80b31771a045ac3d6f3ee8142787710956379 Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 13:05:34 +0200 Subject: [PATCH 12/66] Add ElectronNET project (all build functionality) --- src/ElectronNET/ElectronNET.csproj | 47 ++ .../PackageIcon.png | Bin src/ElectronNET/build/ElectronNET.Build.dll | Bin 0 -> 8192 bytes src/ElectronNET/build/ElectronNET.Core.props | 6 + .../build/ElectronNET.Core.targets | 6 + .../build/ElectronNET.DesignTime.targets | 129 ++++ .../build/ElectronNET.LateImport.targets | 480 +++++++++++++++ src/ElectronNET/build/ElectronNET.props | 32 + src/ElectronNET/build/ElectronNET.targets | 26 + .../build/ElectronNETRules.Project.xaml | 566 ++++++++++++++++++ .../build/ElectronNETRules.Project2.xaml | 62 ++ src/ElectronNET/build/electron-builder.json | 19 + src/ElectronNET/build/package.template.json | 48 ++ .../build/update_electron_versions.py | 131 ++++ 14 files changed, 1552 insertions(+) create mode 100644 src/ElectronNET/ElectronNET.csproj rename src/{ElectronNET.CLI => ElectronNET}/PackageIcon.png (100%) create mode 100644 src/ElectronNET/build/ElectronNET.Build.dll create mode 100644 src/ElectronNET/build/ElectronNET.Core.props create mode 100644 src/ElectronNET/build/ElectronNET.Core.targets create mode 100644 src/ElectronNET/build/ElectronNET.DesignTime.targets create mode 100644 src/ElectronNET/build/ElectronNET.LateImport.targets create mode 100644 src/ElectronNET/build/ElectronNET.props create mode 100644 src/ElectronNET/build/ElectronNET.targets create mode 100644 src/ElectronNET/build/ElectronNETRules.Project.xaml create mode 100644 src/ElectronNET/build/ElectronNETRules.Project2.xaml create mode 100644 src/ElectronNET/build/electron-builder.json create mode 100644 src/ElectronNET/build/package.template.json create mode 100644 src/ElectronNET/build/update_electron_versions.py diff --git a/src/ElectronNET/ElectronNET.csproj b/src/ElectronNET/ElectronNET.csproj new file mode 100644 index 0000000..c0a909e --- /dev/null +++ b/src/ElectronNET/ElectronNET.csproj @@ -0,0 +1,47 @@ + + + + + + net6.0;net8.0 + ..\..\artifacts + $(PackageNamePrefix) + $(PackageId) + $(DescriptionFirstPart) This package contains the ElectronNET project system. + false + false + + + + + + + + + + .electron\%(RecursiveDir)%(FileName)%(Extension) + Never + true + .electron\ + + + + + true + build\ + + + + + True + + + + + MSBuild:Compile + + + MSBuild:Compile + + + \ No newline at end of file diff --git a/src/ElectronNET.CLI/PackageIcon.png b/src/ElectronNET/PackageIcon.png similarity index 100% rename from src/ElectronNET.CLI/PackageIcon.png rename to src/ElectronNET/PackageIcon.png diff --git a/src/ElectronNET/build/ElectronNET.Build.dll b/src/ElectronNET/build/ElectronNET.Build.dll new file mode 100644 index 0000000000000000000000000000000000000000..b3794d9f7bb0bafe18af677f615c6d4daa980738 GIT binary patch literal 8192 zcmeZ`n!v!!z`(%5z`*eTKLf)K1_*F~Pfq{VmWR@I69!5GaFgU^3F#3lXgavXN69X&58)XKD8-ffBj1XaxNjau! zMg|5JEhQ%AS}=owfkE1Ujo|_V*i1o?%QP4n7}&VPxGiRY;+K6E4+E11KLZ1oSP>%w zLjgy=00RS;h9HPwWMI(F7iM7KVqoCN7hz!F$`@r|;NsP`FHz7)u+ zI}GgN5!~!-eVO+0|Ns9N7iPaFCd>hKqaa7VG)R${F#A0QL3S-h8BkEWGI;efh(ZF3 zkzw0*1~Cx^21X?&4H=MHEjgxYP*Md43YY;2lQp2gU|IgmMGJooA#DkXar7#J8;FR(E%uxQ9LFmQ?ID=;u{aWSy*iV3r5 zTW|`p%o1j05M<3)WMJSD(NF?uhlC9%H5G{Wih=Zt39>HAR|d&32(pMr2(t*XaQ0;y z9TexeCo0Sab%h`s)WT!I_7VVaiknQFK2t!y+EckYlQ5feC;aa!l2%Faa<_ z+JKee7Xt&R{1Id*76c^<1||(oP)MkNLV`_0m4Sh)SdD>!tCk&<)tNMS8K7RYfqIdx z8YCmg3QjbFtVN3%7z)5?p=dn=LqXAI5LX?Pa5ONyxwmL114981I|ti8HX#NEwqi|C zGSLFr%%s5$a)mZ1O@Y#e9s^Va*d>zCHs3SJ8ct z=L|reGXzCG6F4Z?gc$RUK&hL9IUgjf&B)H9&A_3>z`)=X?B&D=&Do$bt;|HvK+o8~ z*w7M`a#lhen*ccclurn|y2bUCO=A{>dRPgXIFuY-4U{DSXX86Ge zE>Rhj-9tTH7#J8h_!$^3FflMFJLTjjffPg1He>kIMVg#k3=9mv7>yY~iH?DRL5G2X zfgOs4Kt%up1A`F*1A`i*i~!d~prV+S0pxjbxdC=Hs7wNhgNil~n}Oj53xsB4IKzCA zm5o7;1w?W)?_=d>_z22U41vrEENl#{EMlx|3~QM|WEPlg2a|8Wq!pMv!X(DZ#c-L0 zfsKvf0~5%cwM_e1*%;)R_p$OZFtAQ#VPoiLJ;KJu@Sl;3m5m{Qm5Y^+;T{u6T!{&=C5Q0o6im+O~C9ZFxk$u6kJy>28TW{g5cpxT|kYN5M%)PT9RQ0D;I+%!wyyf2177u2__xEq$ijR1e1|qGLc~it0+SuSZ^c44pwP~ zm0)%zLnDhZLnp&S1`CFp4BYHC3=bK)*qsN zC&N{S6tK!nhKUR|?1c<78J04!F z>~k4zG6=F-FeozKVO$P2zn4Li(UtuGgCS!-(@_Qo`)GwLx2Gh{I8F-SACGwLxYGfZIAW6)-} z!KlYz%)r5<$6(DM%%sQQ%%I4m$KcHn!KB9!%#g*T#}LiX$m9Sv(-BI7O!fquoCp?4 zWB`d|f<+p^B8^~?PO!)Vu*gCv2~xQj%w7qWJpg7O29pYmAon|f$pkRj045iJ$pc`L z5!}>eXHaCQW?0L>z{teF$iU3N#J~co9~tJeg)%ZQl(I!LGB6l3fyiJmY04G~RmsS} z1Xj<=z{&tJiQf+2%TW^zepeqLfxWr7idp_`+#tBbRVnUjT!p|hovlbfrfrKy{x zg@Ku|ftk6Hv7@P}nVXA&v$3<8v7v>FiII_|lZlaqldF-5n~Q}hLwtO2Nn%N6vSU$E zVx?zZW=Tk8L27VjRjRESgN<)~N@-529fM6kQD#|UNvdaVK~8FJY92^Oex6HeNn&PB zu^mHjWpPPruAZkqgL`U;Z)!7WqFFDgmQOHO6*$xnw0G6biVxaO5*7Uk!G0t@B>22a<#(%jS{kZTw` zK{20S3}y$F=9OgTrh+}}k(if~lL`(znD0P-XDCiBiANCt1ur6O!174ku*96wR8Ukh z_+};-`R!Oi9nYwEUvnL~zc^!KunQKQApay|f6d4q*tyZ(zZo)SSc$Fsm3L z4|734QGQBkatWpc$biJWN`wS7Nr1&mGLt}2h9nCuBfzNy9McRTMV0QUB@lKQDDGi7 z4r-7d)JvIp=?sttELgKoemaA1Vo7oaLoS#^Pb~1zWN<0XEdb>gSX7537H7jU11w#F z#W1puUP?|5*fNlIa5@DuJVC0#EJ*Re5K@$x3wL#D8YmZL=I1eZBFYQ~_oDpL0wlgq ze!6Q>QGStIQGTv#MRIBZDEc6(7@RW_ix@z5_~fUjXXd4Qq~;W)7C}7^4%ed8B2cCU zn*h(7CHY05QVg0?K|FByxPk&T5yaI?29Xdq>$zkmrsw4smt-av!<`Pv%z7XzKRjJ_WjUm4v z-ZL*1TBS007W0)q^T z0wW(EI|B`%kx^8rVJ@RE z1FHhaf$R!QjKU1Uj38ghNN_MP^YQTsH7sOhU}ECqV`T?%Srr(B8dkC?FbXxS<>OFb zViIN$5N6~!Q!V`etnS@Fjt%zl^@3NqtXSA&gX=_w&gHj9fi!)2|iz-8la&$6EN(zdt^!3v- zOEOB6^pf*)^^x?!*&tK(85qE$9vtAX1Ep^eF8DR=J_Dm~0H`_M%D})NVaC890UA>V zNkYd}gc%qZ)EO8U=9)1u%tev|DFF}bff!I66zmervd(Ds(>!+PRXa-0-TfOD1+vi1 zDkh*PA5?M`#{}o6m4JgX-ZeL=G6v>gkRxM?i<032aG%HICuPNeLp%nlk!hr7fT>ik zASH<**u&At)Qkb@j>|B26#SYNKV|pFk8S6kK95>f6#WJ|h7EE$8*H8c#6iQbv2KWP zymNk$OHPh&VrCvgZgFycQEDosL4Da2q85de<`g3>gU3#LHhjf~Km$&DcsTrYVt z`dJK>d1cgBdgAs;a^w0x^8wkU~PMg7yA(bJC!HB_x!~3rs3k_oEg(OjU<1gUp#-ShM3ETfjD!#X039IctpET3 literal 0 HcmV?d00001 diff --git a/src/ElectronNET/build/ElectronNET.Core.props b/src/ElectronNET/build/ElectronNET.Core.props new file mode 100644 index 0000000..c9e1eed --- /dev/null +++ b/src/ElectronNET/build/ElectronNET.Core.props @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/ElectronNET/build/ElectronNET.Core.targets b/src/ElectronNET/build/ElectronNET.Core.targets new file mode 100644 index 0000000..4bee510 --- /dev/null +++ b/src/ElectronNET/build/ElectronNET.Core.targets @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/ElectronNET/build/ElectronNET.DesignTime.targets b/src/ElectronNET/build/ElectronNET.DesignTime.targets new file mode 100644 index 0000000..6f6adba --- /dev/null +++ b/src/ElectronNET/build/ElectronNET.DesignTime.targets @@ -0,0 +1,129 @@ + + + + + True + + + + + + Project + + + + + + Project + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $(ElectronSplashScreen.Replace('$(MSBuildProjectDirectory)', '').TrimStart('\')) + + + + + + + + + + + + + + $(ElectronIcon.Replace('$(MSBuildProjectDirectory)', '').TrimStart('\')) + + + + + + + + + + + + + <_ProjectDir>$([System.IO.Path]::GetFullPath('$(MSBuildProjectDirectory)'))\ + + $([System.String]::Substring($(ElectronSplashScreen), + $([System.String]::Length($(_ProjectDir))))) + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ElectronNET/build/ElectronNET.LateImport.targets b/src/ElectronNET/build/ElectronNET.LateImport.targets new file mode 100644 index 0000000..892f764 --- /dev/null +++ b/src/ElectronNET/build/ElectronNET.LateImport.targets @@ -0,0 +1,480 @@ + + + + + + + + + + + + + + + + Never + Never + + + Never + Never + + + Never + Never + + + + + + + + + + + + + + + + + $([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)\..\..\xxxxElectronNET.Host')) + $([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)\..\.electron')) + .electron + $([System.IO.Path]::GetFileName($(ElectronSplashScreen))) + $([System.IO.Path]::GetFileName($(ElectronIcon))) + + + + + + + + + + + + + + + + + + + + + + + $(OutDir)$(ElectronDirName)\ + $(TargetDir)$(ElectronDirName)\ + $(IntermediateOutputPath)$(ElectronDirName)\ + $(ElectronIntermediateOutputPath)package.json + + + + + + + + <_ProjectPropertiesFolder>$(MSBuildProjectDirectory)\Properties\ + <_ElectronBuilderExpectedPath>$(_ProjectPropertiesFolder)$(ElectronBuilderJson) + <_NeedCopyElectronBuilderFile>True + <_NeedCopyElectronBuilderFile Condition="Exists($(_ElectronBuilderExpectedPath))">False + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + $(TargetName) + + + + + $([System.Text.RegularExpressions.Regex]::Replace('$(Version)', '^(\d+\.\d+\.\d+)(?:\.\d+)?(.*)$', '$1$2')) + + linux + $(Title) + $(Title.Replace(' ', '-')) + + + + + + + + + + + + + + + + + + + + + + + + + + + <_NonIntermediatePublishDir>$(PublishDir) + $(PublishDir) + $(IntermediateOutputPath)PubTmp\ + + + + + + + + + + + + + + + + false + true + + + + + + + + + + + + + $(ElectronDirName)\%(RecursiveDir)%(FileName)%(Extension) + PreserveNewest + + + + + + + + + + + + + + + + + + + + $(ElectronDirName)\%(RelativeDir)%(FileName)%(Extension) + + + + + + + + + + $(ElectronDirName)\%(FileName)%(Extension) + + + + + + + + + + + + + + + + + $(ElectronDirName)\%(DestinationRelativePath) + $(ElectronDirName)\%(DestinationRelativePath) + PreserveNewest + + + + + + + + + + <_ElectronFiles Include="$(ElectronSplashScreen)" Condition="'$(ElectronSplashScreen)'!=''" /> + <_ElectronFiles Include="$(ElectronIcon)" Condition="'$(ElectronIcon)'!=''" /> + + + + <_ElectronFiles Update="**"> + PreserveNewest + + + + + + + <_ElectronFilesToCopy Include="@(_ElectronFiles->'%(FullPath)')" /> + + + + + + <_ElectronFilesToCopyWithTargetPath Include="@(_ElectronFilesToCopy)"> + $(ElectronDirName)\%(FileName)%(Extension) + + + + + + + + + + + <_SourceItemsToCopyToOutputDirectoryIfDifferent Include="@(_ElectronFilesToCopyWithTargetPath)"/> + + + + + + + + $(OutDir)$(ElectronDirName)\node_modules\electron-host-hook + + + + + + + + + + + + + + + + + + $([System.IO.Path]::GetFullPath('$(ElectronOutDir)')) + linux + false + true + <_NpmCmd>npm install --no-bin-links + <_NpmCmd Condition="'$(IsLinuxWsl)' == 'true'">wsl bash -ic '$(_NpmCmd)' + + + + + + + + + + + + + + + + + + + + + + <_OriginalPublishDir>$(PublishDir) + $(_OriginalPublishDir)bin\ + true + + + + + + + + + + + + + + <_PublishIntermediateOutputPathFiles Remove="@(_PublishIntermediateOutputPathFiles)"> + + + + + <_ElectronPublishAppAfterTarget Condition="'$(UsingMicrosoftNETSdkWeb)' == 'true'">AfterPublish + <_ElectronPublishAppAfterTarget Condition="'$(UsingMicrosoftNETSdkWeb)' != 'true'">Publish + + + + + + $(_OriginalPublishDir) + $(_NonIntermediatePublishDir) + $(_OriginalPublishDir) + + + + + + x64 + ia32 + arm64 + x64 + armv7l + arm64 + x64 + arm64 + + win + linux + mac + + + + + + + + + + + + + + + + + + + + + + + + + + + $(ElectronPublishDir)%(RecursiveDir)%(FileName)%(Extension) + + + + + + + + + $([System.IO.Path]::GetFullPath('$(ElectronPublishDir)')) + $([System.IO.Path]::GetFullPath('$(PublishUrl.TrimEnd("\"))')) + + + + false + true + <_NpmCmd>npm install electron-builder@$(ElectronBuilderVersion) --save-dev + <_NpmCmd Condition="'$(IsLinuxWsl)' == 'true'">wsl bash -ic '$(_NpmCmd)' + + + + + + + + + + + + + + + + + + $(ElectronPaParams) -c.appId "$(PackageId)" + $(ElectronPaParams) -c.buildVersion "$(Version)" + $(ElectronPaParams) -c.copyright "$(Copyright)" + $(ElectronPaParams) -c.extraResources "bin/**/*" + + + + <_NpxCmd>npx electron-builder --config=./$(ElectronBuilderJson) --$(ElectronPlatform) --$(ElectronArch) -c.electronVersion=$(ElectronVersion) -c.directories.output "$(ElectronPublishUrlFullPath)" $(ElectronPaParams) + <_NpxCmd Condition="'$(IsLinuxWsl)' == 'true'">wsl bash -ic '$(_NpxCmd)' + + + + + + + + + + + + + + + + diff --git a/src/ElectronNET/build/ElectronNET.props b/src/ElectronNET/build/ElectronNET.props new file mode 100644 index 0000000..f616fbb --- /dev/null +++ b/src/ElectronNET/build/ElectronNET.props @@ -0,0 +1,32 @@ + + + + + 30.4.0 + 26.0 + win-x64 + true + + + + $(MSBuildProjectName.Replace(".", "-").ToLower()) + electron-builder.json + $(MSBuildProjectName) + + + + false + false + false + + + + $(MSBuildThisFileDirectory)ElectronNET.LateImport.targets + + + + $(CollectUpToDateCheckBuiltDesignTimeDependsOn);ElectronCollectUpToDateCheckBuiltDesignTime + $(FileSystemPublishDependsOn);ElectronFileSystemPublishClearItems + + + diff --git a/src/ElectronNET/build/ElectronNET.targets b/src/ElectronNET/build/ElectronNET.targets new file mode 100644 index 0000000..40c5872 --- /dev/null +++ b/src/ElectronNET/build/ElectronNET.targets @@ -0,0 +1,26 @@ + + + + + win + $(Title) + $(PackageId) + + + + <_IsMsAspNetProject>False + <_IsMsAspNetProject Condition="'$(UsingMicrosoftNETSdkWeb)' == 'true'">True + + + + + + + + + + + + + + diff --git a/src/ElectronNET/build/ElectronNETRules.Project.xaml b/src/ElectronNET/build/ElectronNETRules.Project.xaml new file mode 100644 index 0000000..62fcb82 --- /dev/null +++ b/src/ElectronNET/build/ElectronNETRules.Project.xaml @@ -0,0 +1,566 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ElectronNET/build/ElectronNETRules.Project2.xaml b/src/ElectronNET/build/ElectronNETRules.Project2.xaml new file mode 100644 index 0000000..3a4d2f5 --- /dev/null +++ b/src/ElectronNET/build/ElectronNETRules.Project2.xaml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ElectronNET/build/electron-builder.json b/src/ElectronNET/build/electron-builder.json new file mode 100644 index 0000000..41f483c --- /dev/null +++ b/src/ElectronNET/build/electron-builder.json @@ -0,0 +1,19 @@ +{ + "$schema": "https://raw.githubusercontent.com/electron-userland/electron-builder/refs/heads/master/packages/app-builder-lib/scheme.json", + "compression": "maximum", + "linux": { + "target": [ + "tar.xz" + ], + "executableArgs": [ "--no-sandbox" ], + "artifactName": "${name}-${arch}-${version}.${ext}" + }, + "win": { + "target": [ + { + "target": "portable", + "arch": "x64" + } + ] + } +} \ No newline at end of file diff --git a/src/ElectronNET/build/package.template.json b/src/ElectronNET/build/package.template.json new file mode 100644 index 0000000..156fab2 --- /dev/null +++ b/src/ElectronNET/build/package.template.json @@ -0,0 +1,48 @@ +{ + "name": "$(PackageId)", + "productName": "$(ElectronTitle)", + "build": { + "appId": "$(PackageId)", + "linux": { + "desktop": { + "entry": { "Name": "$(Title)" } + }, + "executableName": "$(PackageId)" + }, + "deb": { + "desktop": { + "entry": { "Name": "$(Title)" } + } + } + }, + "description": "$(Description)", + "version": "$(Version)", + "main": "main.js", + "author": { + "name": "$(Company)" + }, + "license": "$(License)", + "executable": "$(TargetName)", + "singleInstance": "$(ElectronSingleInstance)", + "homepage": "$(ProjectUrl)", + "splashscreen": { + "imageFile": "$(ElectronSplashScreen)" + }, + "scripts": { + "start": "tsc -p ." + }, + "dependencies": { + "dasherize": "^2.0.0", + "electron-updater": "^6.6.2", + "image-size": "^1.2.1", + "portscanner": "^2.2.0", + "socket.io": "^4.8.1", + "electron-host-hook": "file:./ElectronHostHook" + }, + "devDependencies": { + "@types/node": "^22.18", + "electron": "$(ElectronVersion)", + "eslint": "^9.37.0", + "typescript": "^5.9.3" + } +} \ No newline at end of file diff --git a/src/ElectronNET/build/update_electron_versions.py b/src/ElectronNET/build/update_electron_versions.py new file mode 100644 index 0000000..beeee44 --- /dev/null +++ b/src/ElectronNET/build/update_electron_versions.py @@ -0,0 +1,131 @@ +#!/usr/bin/env python3 +""" +Update Electron version list in ElectronNETRules.Project.xaml + +This script: +1. Downloads the Electron releases feed from GitHub +2. Filters for stable releases >= 23.0.0 +3. Generates the ElectronVersion enum XML +4. Updates the XAML file with the new version list +""" + +import json +import re +import urllib.request +from pathlib import Path + + +def download_releases(): + """Download Electron releases JSON from GitHub.""" + url = "https://releases.electronjs.org/releases.json" + print(f"Downloading releases from {url}...") + + with urllib.request.urlopen(url) as response: + data = response.read() + + print(f"Downloaded {len(data)} bytes") + return json.loads(data) + + +def filter_versions(releases, min_version="23.0.0"): + """Filter and sort stable Electron versions.""" + print(f"Filtering versions >= {min_version}...") + + # Regular expression for stable versions (major.minor.patch) + stable_pattern = re.compile(r'^\d+\.\d+\.\d+$') + + # Parse minimum version + min_parts = tuple(map(int, min_version.split('.'))) + + # Filter and collect versions + versions = set() + for release in releases: + version = release.get('version', '') + if stable_pattern.match(version): + parts = tuple(map(int, version.split('.'))) + if parts >= min_parts: + versions.add(version) + + # Sort versions + sorted_versions = sorted(versions, key=lambda v: tuple(map(int, v.split('.')))) + + print(f"Found {len(sorted_versions)} stable versions") + return sorted_versions + + +def generate_enum_xml(versions): + """Generate the ElectronVersion enum property XML.""" + lines = [ + ' ', + ' ', + ] + + for version in versions: + lines.append(f' ') + + lines.append(' ') + + return '\n'.join(lines) + + +def update_xaml_file(xaml_path, enum_xml): + """Update the XAML file with the new enum.""" + print(f"Updating {xaml_path}...") + + # Read the original file + content = Path(xaml_path).read_text(encoding='utf-8') + + # Find the ElectronVersion enum markers + start_marker = ' Date: Mon, 13 Oct 2025 13:06:20 +0200 Subject: [PATCH 13/66] Add ElectronNET.Build project (dll with custom MSBuild tasks) --- .../ElectronNET.Build.csproj | 35 ++++++++ .../ElectronNET.Build.csproj.DotSettings | 2 + src/ElectronNET.Build/PrintItemMetadata.cs | 39 +++++++++ .../RemoveEnvironmentVariables.cs | 42 ++++++++++ .../ReplaceMsBuildPropertiesTask.cs | 83 +++++++++++++++++++ 5 files changed, 201 insertions(+) create mode 100644 src/ElectronNET.Build/ElectronNET.Build.csproj create mode 100644 src/ElectronNET.Build/ElectronNET.Build.csproj.DotSettings create mode 100644 src/ElectronNET.Build/PrintItemMetadata.cs create mode 100644 src/ElectronNET.Build/RemoveEnvironmentVariables.cs create mode 100644 src/ElectronNET.Build/ReplaceMsBuildPropertiesTask.cs diff --git a/src/ElectronNET.Build/ElectronNET.Build.csproj b/src/ElectronNET.Build/ElectronNET.Build.csproj new file mode 100644 index 0000000..5b6931a --- /dev/null +++ b/src/ElectronNET.Build/ElectronNET.Build.csproj @@ -0,0 +1,35 @@ + + + + + + netstandard2.0 + + + + + + + + + + + <_DllTargetPath>$(MSBuildThisFileDirectory)\..\ElectronNET\build + + + + + + + + + + + + + + + + diff --git a/src/ElectronNET.Build/ElectronNET.Build.csproj.DotSettings b/src/ElectronNET.Build/ElectronNET.Build.csproj.DotSettings new file mode 100644 index 0000000..89316e4 --- /dev/null +++ b/src/ElectronNET.Build/ElectronNET.Build.csproj.DotSettings @@ -0,0 +1,2 @@ + + Library \ No newline at end of file diff --git a/src/ElectronNET.Build/PrintItemMetadata.cs b/src/ElectronNET.Build/PrintItemMetadata.cs new file mode 100644 index 0000000..2cce179 --- /dev/null +++ b/src/ElectronNET.Build/PrintItemMetadata.cs @@ -0,0 +1,39 @@ +namespace ElectronNET.Build +{ + using System; + using Microsoft.Build.Framework; + using Microsoft.Build.Utilities; + + public class DumpItemMetadataTask : Task + { + // The item group whose metadata will be dumped. + [Required] + public ITaskItem[] Items { get; set; } + + public override bool Execute() + { + try + { + foreach (var item in this.Items) + { + // Log the item's identity (the Include attribute) + this.Log.LogMessage(MessageImportance.High, $"Item: {item.ItemSpec}"); + + // Iterate through each metadata field of the item. + foreach (string metadataName in item.MetadataNames) + { + string metadataValue = item.GetMetadata(metadataName); + this.Log.LogMessage(MessageImportance.High, $" {metadataName}: {metadataValue}"); + } + } + + return true; + } + catch (Exception ex) + { + this.Log.LogErrorFromException(ex); + return false; + } + } + } +} \ No newline at end of file diff --git a/src/ElectronNET.Build/RemoveEnvironmentVariables.cs b/src/ElectronNET.Build/RemoveEnvironmentVariables.cs new file mode 100644 index 0000000..2840e9b --- /dev/null +++ b/src/ElectronNET.Build/RemoveEnvironmentVariables.cs @@ -0,0 +1,42 @@ +namespace ElectronNET.Build +{ + using System; + using System.Collections.Generic; + using System.IO; + using System.Linq; + using System.Text.RegularExpressions; + using Microsoft.Build.Framework; + using Microsoft.Build.Utilities; + + public class RemoveEnvironmentVariables : Task + { + [Required] + public string Variables { get; set; } + + public override bool Execute() + { + try + { + if (string.IsNullOrEmpty(this.Variables)) + { + this.Log.LogError("The Variables property is not set"); + return false; + } + + var items = this.Variables.Split(new[] { ':', ';', ',' }, StringSplitOptions.RemoveEmptyEntries); + foreach (var item in items) + { + Environment.SetEnvironmentVariable(item.Trim(), null); + this.Log.LogMessage("Unset environment variable: {0}", item); + } + + return true; + } + catch (Exception ex) + { + this.Log.LogErrorFromException(ex); + return false; + } + } + } +} \ No newline at end of file diff --git a/src/ElectronNET.Build/ReplaceMsBuildPropertiesTask.cs b/src/ElectronNET.Build/ReplaceMsBuildPropertiesTask.cs new file mode 100644 index 0000000..30e7d65 --- /dev/null +++ b/src/ElectronNET.Build/ReplaceMsBuildPropertiesTask.cs @@ -0,0 +1,83 @@ +namespace ElectronNET.Build +{ + using System; + using System.Collections.Generic; + using System.IO; + using System.Text.RegularExpressions; + using Microsoft.Build.Framework; + using Microsoft.Build.Utilities; + + public class ReplaceTemplateTask : Task + { + [Required] + public string TemplateFile { get; set; } + + [Required] + public string OutputFile { get; set; } + + [Required] + public ITaskItem[] TemplateProperties { get; set; } + + public override bool Execute() + { + try + { + ////var props = this.BuildEngine9.GetGlobalProperties(); + + ////var globalProperties = props + //// .Select(e => string.Format("{0}: {1}", e.Key, e.Value)); + + ////this.Log.LogMessage(MessageImportance.High, "Global Properties: \r\n" + string.Join(Environment.NewLine, globalProperties)); + + ////var envVariables = Environment.GetEnvironmentVariables(); + ////var envList = new List(); + ////foreach (var v in envVariables.Keys) + ////{ + //// envList.Add(string.Format("{0}: {1}", v, envVariables[v])); + ////} + + ////this.Log.LogMessage(MessageImportance.High, "Environment Variables: \r\n" + string.Join(Environment.NewLine, envList)); + + string content = File.ReadAllText(this.TemplateFile); + + // Build a dictionary of property names and values. + var dict = new Dictionary(StringComparer.OrdinalIgnoreCase); + foreach (var item in this.TemplateProperties) + { + dict[item.ItemSpec] = item.GetMetadata("Value").Replace("\\", "\\\\"); + } + + // Regex pattern to match placeholders like $(PropertyName) + string pattern = @"\$\((?\w+)\)"; + content = Regex.Replace(content, pattern, match => + { + string propName = match.Groups["prop"].Value; + return dict.TryGetValue(propName, out var value) ? value : match.Value; + }); + + // Check if the output file exists and read its content + if (File.Exists(this.OutputFile)) + { + string existingContent = File.ReadAllText(this.OutputFile); + // Only write the file if the content has changed + if (existingContent != content) + { + File.WriteAllText(this.OutputFile, content); + } + } + else + { + // Write the transformed content to the output file if it doesn't exist + File.WriteAllText(this.OutputFile, content); + } + + return true; + } + catch (Exception ex) + { + this.Log.LogErrorFromException(ex); + return false; + } + } + } +} \ No newline at end of file From 14722e1f639f1be6ee1668f488dcd6431bf6012a Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 13:06:50 +0200 Subject: [PATCH 14/66] Remove ElectronNET.CLI project --- .../Actions/DeployEmbeddedElectronFiles.cs | 54 ---- .../Commands/Actions/DirectoryCopy.cs | 67 ----- .../Actions/GetTargetPlatformInformation.cs | 70 ----- src/ElectronNET.CLI/Commands/AddCommand.cs | 139 --------- src/ElectronNET.CLI/Commands/BuildCommand.cs | 263 ------------------ src/ElectronNET.CLI/Commands/CommandOption.cs | 53 ---- src/ElectronNET.CLI/Commands/ICommand.cs | 12 - src/ElectronNET.CLI/Commands/InitCommand.cs | 214 -------------- .../Commands/StartElectronCommand.cs | 185 ------------ .../Commands/VersionCommand.cs | 35 --- src/ElectronNET.CLI/ElectronNET.CLI.csproj | 88 ------ src/ElectronNET.CLI/EmbeddedFileHelper.cs | 47 ---- src/ElectronNET.CLI/ProcessHelper.cs | 53 ---- src/ElectronNET.CLI/Program.cs | 201 ------------- .../Properties/launchSettings.json | 8 - .../SimpleCommandLineParser.cs | 54 ---- src/ElectronNET.CLI/devCleanup.cmd | 3 - src/ElectronNET.CLI/devCleanup.sh | 1 - 18 files changed, 1547 deletions(-) delete mode 100644 src/ElectronNET.CLI/Commands/Actions/DeployEmbeddedElectronFiles.cs delete mode 100644 src/ElectronNET.CLI/Commands/Actions/DirectoryCopy.cs delete mode 100644 src/ElectronNET.CLI/Commands/Actions/GetTargetPlatformInformation.cs delete mode 100644 src/ElectronNET.CLI/Commands/AddCommand.cs delete mode 100644 src/ElectronNET.CLI/Commands/BuildCommand.cs delete mode 100644 src/ElectronNET.CLI/Commands/CommandOption.cs delete mode 100644 src/ElectronNET.CLI/Commands/ICommand.cs delete mode 100644 src/ElectronNET.CLI/Commands/InitCommand.cs delete mode 100644 src/ElectronNET.CLI/Commands/StartElectronCommand.cs delete mode 100644 src/ElectronNET.CLI/Commands/VersionCommand.cs delete mode 100644 src/ElectronNET.CLI/ElectronNET.CLI.csproj delete mode 100644 src/ElectronNET.CLI/EmbeddedFileHelper.cs delete mode 100644 src/ElectronNET.CLI/ProcessHelper.cs delete mode 100644 src/ElectronNET.CLI/Program.cs delete mode 100644 src/ElectronNET.CLI/Properties/launchSettings.json delete mode 100644 src/ElectronNET.CLI/SimpleCommandLineParser.cs delete mode 100644 src/ElectronNET.CLI/devCleanup.cmd delete mode 100644 src/ElectronNET.CLI/devCleanup.sh diff --git a/src/ElectronNET.CLI/Commands/Actions/DeployEmbeddedElectronFiles.cs b/src/ElectronNET.CLI/Commands/Actions/DeployEmbeddedElectronFiles.cs deleted file mode 100644 index 205ff7b..0000000 --- a/src/ElectronNET.CLI/Commands/Actions/DeployEmbeddedElectronFiles.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System.IO; - -namespace ElectronNET.CLI.Commands.Actions -{ - public static class DeployEmbeddedElectronFiles - { - public static void Do(string tempPath) - { - EmbeddedFileHelper.DeployEmbeddedFile(tempPath, "main.js"); - EmbeddedFileHelper.DeployEmbeddedFile(tempPath, "package.json"); - EmbeddedFileHelper.DeployEmbeddedFile(tempPath, "build-helper.js"); - - string vscodeFolder = Path.Combine(tempPath, ".vscode"); - if (Directory.Exists(vscodeFolder) == false) - { - Directory.CreateDirectory(vscodeFolder); - } - EmbeddedFileHelper.DeployEmbeddedFile(vscodeFolder, "launch.json", ".vscode."); - EmbeddedFileHelper.DeployEmbeddedFile(vscodeFolder, "tasks.json", ".vscode."); - - string hostApiFolder = Path.Combine(tempPath, "api"); - if (Directory.Exists(hostApiFolder) == false) - { - Directory.CreateDirectory(hostApiFolder); - } - - EmbeddedFileHelper.DeployEmbeddedFile(hostApiFolder, "ipc.js", "api."); - EmbeddedFileHelper.DeployEmbeddedFile(hostApiFolder, "app.js", "api."); - EmbeddedFileHelper.DeployEmbeddedFile(hostApiFolder, "browserWindows.js", "api."); - EmbeddedFileHelper.DeployEmbeddedFile(hostApiFolder, "commandLine.js", "api."); - EmbeddedFileHelper.DeployEmbeddedFile(hostApiFolder, "dialog.js", "api."); - EmbeddedFileHelper.DeployEmbeddedFile(hostApiFolder, "dock.js", "api."); - EmbeddedFileHelper.DeployEmbeddedFile(hostApiFolder, "menu.js", "api."); - EmbeddedFileHelper.DeployEmbeddedFile(hostApiFolder, "notification.js", "api."); - EmbeddedFileHelper.DeployEmbeddedFile(hostApiFolder, "tray.js", "api."); - EmbeddedFileHelper.DeployEmbeddedFile(hostApiFolder, "webContents.js", "api."); - EmbeddedFileHelper.DeployEmbeddedFile(hostApiFolder, "globalShortcut.js", "api."); - EmbeddedFileHelper.DeployEmbeddedFile(hostApiFolder, "shell.js", "api."); - EmbeddedFileHelper.DeployEmbeddedFile(hostApiFolder, "screen.js", "api."); - EmbeddedFileHelper.DeployEmbeddedFile(hostApiFolder, "clipboard.js", "api."); - EmbeddedFileHelper.DeployEmbeddedFile(hostApiFolder, "autoUpdater.js", "api."); - EmbeddedFileHelper.DeployEmbeddedFile(hostApiFolder, "browserView.js", "api."); - EmbeddedFileHelper.DeployEmbeddedFile(hostApiFolder, "powerMonitor.js", "api."); - EmbeddedFileHelper.DeployEmbeddedFile(hostApiFolder, "nativeTheme.js", "api."); - - string splashscreenFolder = Path.Combine(tempPath, "splashscreen"); - if (Directory.Exists(splashscreenFolder) == false) - { - Directory.CreateDirectory(splashscreenFolder); - } - EmbeddedFileHelper.DeployEmbeddedFile(splashscreenFolder, "index.html", "splashscreen."); - } - } -} diff --git a/src/ElectronNET.CLI/Commands/Actions/DirectoryCopy.cs b/src/ElectronNET.CLI/Commands/Actions/DirectoryCopy.cs deleted file mode 100644 index 39ded69..0000000 --- a/src/ElectronNET.CLI/Commands/Actions/DirectoryCopy.cs +++ /dev/null @@ -1,67 +0,0 @@ -using System.Collections.Generic; -using System.IO; - -namespace ElectronNET.CLI.Commands.Actions -{ - public static class DirectoryCopy - { - public static void Do(string sourceDirName, string destDirName, bool copySubDirs, List ignoredSubDirs) - { - // Get the subdirectories for the specified directory. - DirectoryInfo dir = new DirectoryInfo(sourceDirName); - - if (!dir.Exists) - { - throw new DirectoryNotFoundException( - "Source directory does not exist or could not be found: " - + sourceDirName); - } - - DirectoryInfo[] dirs = dir.GetDirectories(); - // If the destination directory doesn't exist, create it. - if (!Directory.Exists(destDirName)) - { - Directory.CreateDirectory(destDirName); - } - else - { - DirectoryInfo targetDir = new DirectoryInfo(destDirName); - - foreach (FileInfo fileDel in targetDir.EnumerateFiles()) - { - fileDel.Delete(); - } - foreach (DirectoryInfo dirDel in targetDir.EnumerateDirectories()) - { - dirDel.Delete(true); - } - } - - - - - // Get the files in the directory and copy them to the new location. - FileInfo[] files = dir.GetFiles(); - foreach (FileInfo file in files) - { - string temppath = Path.Combine(destDirName, file.Name); - file.CopyTo(temppath, false); - } - - // If copying subdirectories, copy them and their contents to new location. - if (copySubDirs) - { - foreach (DirectoryInfo subdir in dirs) - { - if (ignoredSubDirs.Contains(subdir.Name)) - { - continue; - } - - string temppath = Path.Combine(destDirName, subdir.Name); - Do(subdir.FullName, temppath, copySubDirs, ignoredSubDirs); - } - } - } - } -} diff --git a/src/ElectronNET.CLI/Commands/Actions/GetTargetPlatformInformation.cs b/src/ElectronNET.CLI/Commands/Actions/GetTargetPlatformInformation.cs deleted file mode 100644 index 4918414..0000000 --- a/src/ElectronNET.CLI/Commands/Actions/GetTargetPlatformInformation.cs +++ /dev/null @@ -1,70 +0,0 @@ -using System; -using System.Runtime.InteropServices; - -namespace ElectronNET.CLI.Commands.Actions -{ - public static class GetTargetPlatformInformation - { - public struct GetTargetPlatformInformationResult - { - public string NetCorePublishRid { get; set; } - public string ElectronPackerPlatform { get; set; } - - } - - public static GetTargetPlatformInformationResult Do(string desiredPlatform, string specifiedPlatfromFromCustom) - { - string netCorePublishRid = string.Empty; - string electronPackerPlatform = string.Empty; - - switch (desiredPlatform) - { - case "win": - netCorePublishRid = "win-x64"; - electronPackerPlatform = "win"; - break; - case "osx": - netCorePublishRid = "osx-x64"; - electronPackerPlatform = "mac"; - break; - case "linux": - netCorePublishRid = "linux-x64"; - electronPackerPlatform = "linux"; - break; - case "linux-arm": - netCorePublishRid = "linux-arm"; - electronPackerPlatform = "linux"; - break; - case "custom": - var splittedSpecified = specifiedPlatfromFromCustom.Split(';'); - netCorePublishRid = splittedSpecified[0]; - electronPackerPlatform = splittedSpecified[1]; - break; - default: - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - { - netCorePublishRid = $"win-x{(Environment.Is64BitOperatingSystem ? "64" : "86")}"; - electronPackerPlatform = "win"; - } - if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) - { - netCorePublishRid = RuntimeInformation.ProcessArchitecture == Architecture.Arm64 ? "osx-arm64" : "osx-x64"; - electronPackerPlatform = "mac"; - } - if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) - { - netCorePublishRid = "linux-x64"; - electronPackerPlatform = "linux"; - } - - break; - } - - return new GetTargetPlatformInformationResult() - { - ElectronPackerPlatform = electronPackerPlatform, - NetCorePublishRid = netCorePublishRid - }; - } - } -} diff --git a/src/ElectronNET.CLI/Commands/AddCommand.cs b/src/ElectronNET.CLI/Commands/AddCommand.cs deleted file mode 100644 index cbfb0dd..0000000 --- a/src/ElectronNET.CLI/Commands/AddCommand.cs +++ /dev/null @@ -1,139 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Threading.Tasks; -using System.Xml; -using System.Xml.Linq; - -namespace ElectronNET.CLI.Commands -{ - public class AddCommand : ICommand - { - public const string COMMAND_NAME = "add"; - public const string COMMAND_DESCRIPTION = "The add command needs to be invoked via 'add hosthook'. This creates a special folder for your custom npm package installation."; - public const string COMMAND_ARGUMENTS = "hosthook"; - public static IList CommandOptions { get; set; } = new List(); - - - private string[] _args; - - public AddCommand(string[] args) - { - _args = args; - } - - private static string ElectronHostHookFolderName = "ElectronHostHook"; - - public Task ExecuteAsync() - { - return Task.Run(() => - { - if(_args.Length == 0) - { - Console.WriteLine("Specify 'hosthook' to add custom npm packages."); - return false; - } - - if(_args[0].ToLowerInvariant() != "hosthook") - { - Console.WriteLine("Specify 'hosthook' to add custom npm packages."); - return false; - } - - string aspCoreProjectPath = ""; - - // Maybe ToDo: Adding the possiblity to specify a path (like we did in the InitCommand, but this would require a better command args parser) - aspCoreProjectPath = Directory.GetCurrentDirectory(); - - var currentDirectory = aspCoreProjectPath; - - var targetFilePath = Path.Combine(currentDirectory, ElectronHostHookFolderName); - - if(Directory.Exists(targetFilePath)) - { - Console.WriteLine("ElectronHostHook directory already in place. If you want to start over, delete the folder and invoke this command again."); - return false; - } - - Console.WriteLine("Adding the ElectronHostHook folder to your project..."); - - Directory.CreateDirectory(targetFilePath); - - // Deploy related files - EmbeddedFileHelper.DeployEmbeddedFile(targetFilePath, "index.ts", "ElectronHostHook."); - EmbeddedFileHelper.DeployEmbeddedFile(targetFilePath, "connector.ts", "ElectronHostHook."); - EmbeddedFileHelper.DeployEmbeddedFile(targetFilePath, "package.json", "ElectronHostHook."); - EmbeddedFileHelper.DeployEmbeddedFile(targetFilePath, "tsconfig.json", "ElectronHostHook."); - EmbeddedFileHelper.DeployEmbeddedFile(targetFilePath, ".gitignore", "ElectronHostHook."); - - // npm for typescript compiler etc. - Console.WriteLine("Start npm install..."); - ProcessHelper.CmdExecute("npm install", targetFilePath); - - // run typescript compiler - // ToDo: Not sure if this runs under linux/macos - ProcessHelper.CmdExecute(@"npx tsc -p ../../", targetFilePath); - - // search .csproj or .fsproj (.csproj has higher precedence) - Console.WriteLine($"Search your .csproj/.fsproj to add configure CopyToPublishDirectory to 'Never'"); - var projectFile = Directory.EnumerateFiles(currentDirectory, "*.csproj", SearchOption.TopDirectoryOnly) - .Union(Directory.EnumerateFiles(currentDirectory, "*.fsproj", SearchOption.TopDirectoryOnly)) - .FirstOrDefault(); - - var extension = Path.GetExtension(projectFile); - Console.WriteLine($"Found your {extension}: {projectFile} - check for existing CopyToPublishDirectory setting or update it."); - - if (!EditProjectFile(projectFile)) return false; - - Console.WriteLine($"Everything done - happy electronizing with your custom npm packages!"); - - return true; - }); - } - - // ToDo: Cleanup this copy/past code. - private static bool EditProjectFile(string projectFile) - { - using (var stream = File.Open(projectFile, FileMode.OpenOrCreate, FileAccess.ReadWrite)) - { - var xmlDocument = XDocument.Load(stream); - - var projectElement = xmlDocument.Descendants("Project").FirstOrDefault(); - if (projectElement == null || projectElement.Attribute("Sdk")?.Value != "Microsoft.NET.Sdk.Web") - { - Console.WriteLine( - $"Project file is not a compatible type of 'Microsoft.NET.Sdk.Web'. Your project: {projectElement?.Attribute("Sdk")?.Value}"); - return false; - } - - string itemGroupXmlString = "" + - "" + - "Never" + - "" + - ""; - - var newItemGroupForConfig = XElement.Parse(itemGroupXmlString); - xmlDocument.Root.Add(newItemGroupForConfig); - - stream.SetLength(0); - stream.Position = 0; - - var xws = new XmlWriterSettings - { - OmitXmlDeclaration = true, - Indent = true - }; - using (XmlWriter xw = XmlWriter.Create(stream, xws)) - { - xmlDocument.Save(xw); - } - - } - - Console.WriteLine($"Publish setting added in csproj/fsproj!"); - return true; - } - - } -} diff --git a/src/ElectronNET.CLI/Commands/BuildCommand.cs b/src/ElectronNET.CLI/Commands/BuildCommand.cs deleted file mode 100644 index 2d4322b..0000000 --- a/src/ElectronNET.CLI/Commands/BuildCommand.cs +++ /dev/null @@ -1,263 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Threading.Tasks; -using ElectronNET.CLI.Commands.Actions; - -namespace ElectronNET.CLI.Commands -{ - public class BuildCommand : ICommand - { - public const string COMMAND_NAME = "build"; - public const string COMMAND_DESCRIPTION = "Build your Electron Application."; - public static string COMMAND_ARGUMENTS = "Needed: '/target' with params 'win/osx/linux' to build for a typical app or use 'custom' and specify .NET Core build config & electron build config" + Environment.NewLine + - " for custom target, check .NET Core RID Catalog and Electron build target/" + Environment.NewLine + - " e.g. '/target win' or '/target custom \"win7-x86;win\"'" + Environment.NewLine + - "Optional: '/dotnet-configuration' with the desired .NET Core build config e.g. release or debug. Default = Release" + Environment.NewLine + - "Optional: '/no-restore' to disable nuget packages restore" + Environment.NewLine + - "Optional: '/electron-arch' to specify the resulting electron processor architecture (e.g. ia86 for x86 builds). Be aware to use the '/target custom' param as well!" + Environment.NewLine + - "Optional: '/electron-params' specify any other valid parameter, which will be routed to the electron-packager." + Environment.NewLine + - "Optional: '/relative-path' to specify output a subdirectory for output." + Environment.NewLine + - "Optional: '/absolute-path to specify and absolute path for output." + Environment.NewLine + - "Optional: '/package-json' to specify a custom package.json file." + Environment.NewLine + - "Optional: '/install-modules' to force node module install. Implied by '/package-json'" + Environment.NewLine + - "Optional: '/Version' to specify the version that should be applied to both the `dotnet publish` and `electron-builder` commands. Implied by '/Version'" + Environment.NewLine + - "Optional: '/p:[property]' or '/property:[property]' to pass in dotnet publish properties. Example: '/property:Version=1.0.0' to override the FileVersion" + Environment.NewLine + - "Full example for a 32bit debug build with electron prune: build /target custom win7-x86;win32 /dotnet-configuration Debug /electron-arch ia32 /electron-params \"--prune=true \""; - - public static IList CommandOptions { get; set; } = new List(); - - private string[] _args; - - public BuildCommand(string[] args) - { - _args = args; - } - - private string _paramTarget = "target"; - private string _paramDotNetConfig = "dotnet-configuration"; - private string _paramElectronArch = "electron-arch"; - private string _paramElectronParams = "electron-params"; - private string _paramOutputDirectory = "relative-path"; - private string _paramAbsoluteOutput = "absolute-path"; - private string _paramPackageJson = "package-json"; - private string _paramForceNodeInstall = "install-modules"; - private string _manifest = "manifest"; - private string _paramPublishReadyToRun = "PublishReadyToRun"; - private string _paramPublishSingleFile = "PublishSingleFile"; - private string _paramSelfContained = "SelfContained"; - private string _paramNoRestore = "no-restore"; - private string _paramVersion = "Version"; - - public Task ExecuteAsync() - { - return Task.Run(() => - { - Console.WriteLine("Build Electron Application..."); - - SimpleCommandLineParser parser = new SimpleCommandLineParser(); - parser.Parse(_args); - - //This version will be shared between the dotnet publish and electron-builder commands - string version = null; - if (parser.Arguments.ContainsKey(_paramVersion)) - version = parser.Arguments[_paramVersion][0]; - - if (!parser.Arguments.ContainsKey(_paramTarget)) - { - Console.WriteLine($"Error: missing '{_paramTarget}' argument."); - Console.WriteLine(COMMAND_ARGUMENTS); - return false; - } - - var desiredPlatform = parser.Arguments[_paramTarget][0]; - string specifiedFromCustom = string.Empty; - if (desiredPlatform == "custom" && parser.Arguments[_paramTarget].Length > 1) - { - specifiedFromCustom = parser.Arguments[_paramTarget][1]; - } - - string configuration = "Release"; - if (parser.Arguments.ContainsKey(_paramDotNetConfig)) - { - configuration = parser.Arguments[_paramDotNetConfig][0]; - } - - string noRestore = parser.Arguments.ContainsKey(_paramNoRestore) - ? " --no-restore" - : string.Empty; - - var platformInfo = GetTargetPlatformInformation.Do(desiredPlatform, specifiedFromCustom); - - Console.WriteLine($"Build ASP.NET Core App for {platformInfo.NetCorePublishRid}..."); - - string tempPath = Path.Combine(Directory.GetCurrentDirectory(), "obj", "desktop", desiredPlatform); - - if (Directory.Exists(tempPath) == false) - { - Directory.CreateDirectory(tempPath); - } - else - { - Directory.Delete(tempPath, true); - Directory.CreateDirectory(tempPath); - } - - - Console.WriteLine("Executing dotnet publish in this directory: " + tempPath); - - string tempBinPath = Path.Combine(tempPath, "bin"); - - Console.WriteLine($"Build ASP.NET Core App for {platformInfo.NetCorePublishRid} under {configuration}-Configuration..."); - - var dotNetPublishFlags = GetDotNetPublishFlags(parser); - - var command = - $"dotnet publish -r {platformInfo.NetCorePublishRid} -c \"{configuration}\"{noRestore} --output \"{tempBinPath}\" {string.Join(' ', dotNetPublishFlags.Select(kvp => $"{kvp.Key}={kvp.Value}"))}"; - - // output the command - Console.ForegroundColor = ConsoleColor.Green; - Console.WriteLine(command); - Console.ResetColor(); - - var resultCode = ProcessHelper.CmdExecute(command, Directory.GetCurrentDirectory()); - - if (resultCode != 0) - { - Console.WriteLine("Error occurred during dotnet publish: " + resultCode); - return false; - } - - DeployEmbeddedElectronFiles.Do(tempPath); - var nodeModulesDirPath = Path.Combine(tempPath, "node_modules"); - - if (parser.Arguments.ContainsKey(_paramPackageJson)) - { - Console.WriteLine("Copying custom package.json."); - - File.Copy(parser.Arguments[_paramPackageJson][0], Path.Combine(tempPath, "package.json"), true); - } - - var checkForNodeModulesDirPath = Path.Combine(tempPath, "node_modules"); - - if (Directory.Exists(checkForNodeModulesDirPath) == false || parser.Contains(_paramForceNodeInstall) || parser.Contains(_paramPackageJson)) - - Console.WriteLine("Start npm install..."); - ProcessHelper.CmdExecute("npm install --production", tempPath); - - Console.WriteLine("ElectronHostHook handling started..."); - - string electronhosthookDir = Path.Combine(Directory.GetCurrentDirectory(), "ElectronHostHook"); - - if (Directory.Exists(electronhosthookDir)) - { - string hosthookDir = Path.Combine(tempPath, "ElectronHostHook"); - DirectoryCopy.Do(electronhosthookDir, hosthookDir, true, new List() { "node_modules" }); - - Console.WriteLine("Start npm install for hosthooks..."); - ProcessHelper.CmdExecute("npm install", hosthookDir); - - // ToDo: Not sure if this runs under linux/macos - ProcessHelper.CmdExecute(@"npx tsc -p . --sourceMap false", hosthookDir); - } - - Console.WriteLine("Build Electron Desktop Application..."); - - // Specifying an absolute path supercedes a relative path - string buildPath = Path.Combine(Directory.GetCurrentDirectory(), "bin", "desktop"); - if (parser.Arguments.ContainsKey(_paramAbsoluteOutput)) - { - buildPath = parser.Arguments[_paramAbsoluteOutput][0]; - } - else if (parser.Arguments.ContainsKey(_paramOutputDirectory)) - { - buildPath = Path.Combine(Directory.GetCurrentDirectory(), parser.Arguments[_paramOutputDirectory][0]); - } - - Console.WriteLine("Executing electron magic in this directory: " + buildPath); - - string electronArch = "x64"; - if (parser.Arguments.ContainsKey(_paramElectronArch)) - { - electronArch = parser.Arguments[_paramElectronArch][0]; - } - - string electronParams = ""; - if (parser.Arguments.ContainsKey(_paramElectronParams)) - { - electronParams = parser.Arguments[_paramElectronParams][0]; - } - - // ToDo: Make the same thing easer with native c# - we can save a tmp file in production code :) - Console.WriteLine("Create electron-builder configuration file..."); - - string manifestFileName = "electron.manifest.json"; - - if (parser.Arguments.ContainsKey(_manifest)) - { - manifestFileName = parser.Arguments[_manifest].First(); - } - - ProcessHelper.CmdExecute( - string.IsNullOrWhiteSpace(version) - ? $"node build-helper.js {manifestFileName}" - : $"node build-helper.js {manifestFileName} {version}", tempPath); - - Console.WriteLine($"Package Electron App for Platform {platformInfo.ElectronPackerPlatform}..."); - ProcessHelper.CmdExecute($"npx electron-builder --config=./bin/electron-builder.json --{platformInfo.ElectronPackerPlatform} --{electronArch} -c.electronVersion=30.0.3 {electronParams}", tempPath); - - Console.WriteLine("... done"); - - return true; - }); - } - - private Dictionary GetDotNetPublishFlags(SimpleCommandLineParser parser) - { - var dotNetPublishFlags = new Dictionary - { - {"/p:PublishReadyToRun", parser.TryGet(_paramPublishReadyToRun, out var rtr) ? rtr[0] : "true"}, - {"/p:PublishSingleFile", parser.TryGet(_paramPublishSingleFile, out var psf) ? psf[0] : "true"}, - {"/p:SelfContained", parser.TryGet(_paramSelfContained, out var sc) ? sc[0] : "true"}, - }; - - if (parser.Arguments.ContainsKey(_paramVersion)) - { - if(parser.Arguments.Keys.All(key => !key.StartsWith("p:Version=") && !key.StartsWith("property:Version="))) - dotNetPublishFlags.Add("/p:Version", parser.Arguments[_paramVersion][0]); - if(parser.Arguments.Keys.All(key => !key.StartsWith("p:ProductVersion=") && !key.StartsWith("property:ProductVersion="))) - dotNetPublishFlags.Add("/p:ProductVersion", parser.Arguments[_paramVersion][0]); - } - - foreach (var parm in parser.Arguments.Keys.Where(key => key.StartsWith("p:") || key.StartsWith("property:"))) - { - var split = parm.IndexOf('='); - if (split < 0) - { - continue; - } - - var key = $"/{parm.Substring(0, split)}"; - // normalize the key - if (key.StartsWith("/property:")) - { - key = key.Replace("/property:", "/p:"); - } - - var value = parm.Substring(split + 1); - - if (dotNetPublishFlags.ContainsKey(key)) - { - dotNetPublishFlags[key] = value; - } - else - { - dotNetPublishFlags.Add(key, value); - } - } - - return dotNetPublishFlags; - } - } -} diff --git a/src/ElectronNET.CLI/Commands/CommandOption.cs b/src/ElectronNET.CLI/Commands/CommandOption.cs deleted file mode 100644 index 675f571..0000000 --- a/src/ElectronNET.CLI/Commands/CommandOption.cs +++ /dev/null @@ -1,53 +0,0 @@ -namespace ElectronNET.CLI.Commands -{ - /// - /// The definitionn of an option for a command. - /// - public class CommandOption - { - /// - /// An enum for the possible values for an option - /// - public enum CommandOptionValueType { NoValue, StringValue, BoolValue, IntValue, CommaDelimitedList, KeyValuePairs } - - /// - /// The name of the option. - /// - public string Name { get; set; } - - /// - /// The short form of the command line switch. This will start with just one dash e.g. -f for framework - /// - public string ShortSwitch { get; set; } - - /// - /// The full form of the command line switch. This will start with two dashes e.g. --framework - /// - public string Switch { get; set; } - - /// - /// The description of the option - /// - public string Description { get; set; } - - /// - /// The type of value that is expected with this command option - /// - public CommandOptionValueType ValueType { get; set; } - - /// - /// The JSON key used in configuration file.` - /// - public string ConfigFileKey - { - get - { - var key = this.Switch; - if (key.StartsWith("--")) - key = key.Substring(2); - - return key; - } - } - } -} \ No newline at end of file diff --git a/src/ElectronNET.CLI/Commands/ICommand.cs b/src/ElectronNET.CLI/Commands/ICommand.cs deleted file mode 100644 index e247a2a..0000000 --- a/src/ElectronNET.CLI/Commands/ICommand.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System.Threading.Tasks; - -namespace ElectronNET.CLI.Commands -{ - /// - /// Interface for commands to implement. - /// - public interface ICommand - { - Task ExecuteAsync(); - } -} diff --git a/src/ElectronNET.CLI/Commands/InitCommand.cs b/src/ElectronNET.CLI/Commands/InitCommand.cs deleted file mode 100644 index c253920..0000000 --- a/src/ElectronNET.CLI/Commands/InitCommand.cs +++ /dev/null @@ -1,214 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Xml; -using System.Xml.Linq; - -namespace ElectronNET.CLI.Commands -{ - public class InitCommand : ICommand - { - public const string COMMAND_NAME = "init"; - public const string COMMAND_DESCRIPTION = "Creates the needed Electron.NET config for your Electron Application."; - public const string COMMAND_ARGUMENTS = " from ASP.NET Core Project."; - public static IList CommandOptions { get; set; } = new List(); - - private static SimpleCommandLineParser _parser = new SimpleCommandLineParser(); - private static string ConfigName = "electron.manifest.json"; - private const string DefaultConfigFileName = "electron.manifest.json"; - - public InitCommand(string[] args) - { - _parser.Parse(args); - } - - private static string _aspCoreProjectPath = "project-path"; - private static string _manifest = "manifest"; - - public Task ExecuteAsync() - { - return Task.Run(() => - { - string aspCoreProjectPath = ""; - - if (_parser.Arguments.ContainsKey(_aspCoreProjectPath)) - { - string projectPath = _parser.Arguments[_aspCoreProjectPath].First(); - if (Directory.Exists(projectPath)) - { - aspCoreProjectPath = projectPath; - } - } - else - { - aspCoreProjectPath = Directory.GetCurrentDirectory(); - } - - var currentDirectory = aspCoreProjectPath; - - if(_parser.Arguments.ContainsKey(_manifest)) - { - ConfigName = "electron.manifest." + _parser.Arguments[_manifest].First() + ".json"; - Console.WriteLine($"Adding your custom {ConfigName} config file to your project..."); - } - else - { - Console.WriteLine("Adding our config file to your project..."); - } - - var targetFilePath = Path.Combine(currentDirectory, ConfigName); - - if (File.Exists(targetFilePath)) - { - Console.WriteLine("Config file already in your project."); - return false; - } - - // Deploy config file - EmbeddedFileHelper.DeployEmbeddedFileToTargetFile(currentDirectory, DefaultConfigFileName, ConfigName); - - // search .csproj/.fsproj (.csproj has higher precedence) - Console.WriteLine($"Search your .csproj/fsproj to add the needed {ConfigName}..."); - var projectFile = Directory.EnumerateFiles(currentDirectory, "*.csproj", SearchOption.TopDirectoryOnly) - .Union(Directory.EnumerateFiles(currentDirectory, "*.fsproj", SearchOption.TopDirectoryOnly)) - .FirstOrDefault(); - - // update config file with the name of the csproj/fsproj - // ToDo: If the csproj/fsproj name != application name, this will fail - string text = File.ReadAllText(targetFilePath); - text = text.Replace("{{executable}}", Path.GetFileNameWithoutExtension(projectFile)); - File.WriteAllText(targetFilePath, text); - - var extension = Path.GetExtension(projectFile); - Console.WriteLine($"Found your {extension}: {projectFile} - check for existing config or update it."); - - if (!EditProjectFile(projectFile)) return false; - - // search launchSettings.json - Console.WriteLine($"Search your .launchSettings to add our electron debug profile..."); - - EditLaunchSettings(currentDirectory); - - Console.WriteLine($"Everything done - happy electronizing!"); - - return true; - }); - } - - private static void EditLaunchSettings(string currentDirectory) - { - // super stupid implementation, but because there is no nativ way to parse json - // and cli extensions and other nuget packages are buggy - // this is should solve the problem for 80% of the users - // for the other 20% we might fail... - var launchSettingFile = Path.Combine(currentDirectory, "Properties", "launchSettings.json"); - - if (File.Exists(launchSettingFile) == false) - { - Console.WriteLine("launchSettings.json not found - do nothing."); - return; - } - - string launchSettingText = File.ReadAllText(launchSettingFile); - - if(_parser.Arguments.ContainsKey(_manifest)) - { - string manifestName = _parser.Arguments[_manifest].First(); - - if(launchSettingText.Contains("start /manifest " + ConfigName) == false) - { - StringBuilder debugProfileBuilder = new StringBuilder(); - debugProfileBuilder.AppendLine("profiles\": {"); - debugProfileBuilder.AppendLine(" \"Electron.NET App - " + manifestName + "\": {"); - debugProfileBuilder.AppendLine(" \"commandName\": \"Executable\","); - debugProfileBuilder.AppendLine(" \"executablePath\": \"electronize\","); - debugProfileBuilder.AppendLine(" \"commandLineArgs\": \"start /manifest " + ConfigName + "\","); - debugProfileBuilder.AppendLine(" \"workingDirectory\": \".\""); - debugProfileBuilder.AppendLine(" },"); - - launchSettingText = launchSettingText.Replace("profiles\": {", debugProfileBuilder.ToString()); - File.WriteAllText(launchSettingFile, launchSettingText); - - Console.WriteLine($"Debug profile added!"); - } - else - { - Console.WriteLine($"Debug profile already existing"); - } - } - else if (launchSettingText.Contains("\"executablePath\": \"electronize\"") == false) - { - StringBuilder debugProfileBuilder = new StringBuilder(); - debugProfileBuilder.AppendLine("profiles\": {"); - debugProfileBuilder.AppendLine(" \"Electron.NET App\": {"); - debugProfileBuilder.AppendLine(" \"commandName\": \"Executable\","); - debugProfileBuilder.AppendLine(" \"executablePath\": \"electronize\","); - debugProfileBuilder.AppendLine(" \"commandLineArgs\": \"start\","); - debugProfileBuilder.AppendLine(" \"workingDirectory\": \".\""); - debugProfileBuilder.AppendLine(" },"); - - launchSettingText = launchSettingText.Replace("profiles\": {", debugProfileBuilder.ToString()); - File.WriteAllText(launchSettingFile, launchSettingText); - - Console.WriteLine($"Debug profile added!"); - } - else - { - Console.WriteLine($"Debug profile already existing"); - } - } - - private static bool EditProjectFile(string projectFile) - { - using (var stream = File.Open(projectFile, FileMode.OpenOrCreate, FileAccess.ReadWrite)) - { - var xmlDocument = XDocument.Load(stream); - - var projectElement = xmlDocument.Descendants("Project").FirstOrDefault(); - if (projectElement == null || projectElement.Attribute("Sdk")?.Value != "Microsoft.NET.Sdk.Web") - { - Console.WriteLine( - $"Project file is not a compatible type of 'Microsoft.NET.Sdk.Web'. Your project: {projectElement?.Attribute("Sdk")?.Value}"); - return false; - } - - if (xmlDocument.ToString().Contains($"Content Update=\"{ConfigName}\"")) - { - Console.WriteLine($"{ConfigName} already in csproj/fsproj."); - return false; - } - - Console.WriteLine($"{ConfigName} will be added to csproj/fsproj."); - - string itemGroupXmlString = "" + - "" + - "PreserveNewest" + - "" + - ""; - - var newItemGroupForConfig = XElement.Parse(itemGroupXmlString); - xmlDocument.Root.Add(newItemGroupForConfig); - - stream.SetLength(0); - stream.Position = 0; - - var xws = new XmlWriterSettings - { - OmitXmlDeclaration = true, - Indent = true - }; - using (XmlWriter xw = XmlWriter.Create(stream, xws)) - { - xmlDocument.Save(xw); - } - - } - - Console.WriteLine($"{ConfigName} added in csproj/fsproj!"); - return true; - } - } -} diff --git a/src/ElectronNET.CLI/Commands/StartElectronCommand.cs b/src/ElectronNET.CLI/Commands/StartElectronCommand.cs deleted file mode 100644 index 03382ec..0000000 --- a/src/ElectronNET.CLI/Commands/StartElectronCommand.cs +++ /dev/null @@ -1,185 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices; -using System.Threading.Tasks; -using ElectronNET.CLI.Commands.Actions; - -namespace ElectronNET.CLI.Commands -{ - public class StartElectronCommand : ICommand - { - public const string COMMAND_NAME = "start"; - public const string COMMAND_DESCRIPTION = "Start your ASP.NET Core Application with Electron, without package it as a single exe. Faster for development."; - public const string COMMAND_ARGUMENTS = " from ASP.NET Core Project."; - public static IList CommandOptions { get; set; } = new List(); - - private string[] _args; - - public StartElectronCommand(string[] args) - { - _args = args; - } - - private string _aspCoreProjectPath = "project-path"; - private string _arguments = "args"; - private string _manifest = "manifest"; - private string _clearCache = "clear-cache"; - private string _paramPublishReadyToRun = "PublishReadyToRun"; - private string _paramPublishSingleFile = "PublishSingleFile"; - private string _paramDotNetConfig = "dotnet-configuration"; - private string _paramTarget = "target"; - - public Task ExecuteAsync() - { - return Task.Run(() => - { - Console.WriteLine("Start Electron Desktop Application..."); - - SimpleCommandLineParser parser = new SimpleCommandLineParser(); - parser.Parse(_args); - - string aspCoreProjectPath = ""; - - if (parser.Arguments.ContainsKey(_aspCoreProjectPath)) - { - string projectPath = parser.Arguments[_aspCoreProjectPath].First(); - if (Directory.Exists(projectPath)) - { - aspCoreProjectPath = projectPath; - } - } - else - { - aspCoreProjectPath = Directory.GetCurrentDirectory(); - } - - string tempPath = Path.Combine(aspCoreProjectPath, "obj", "Host"); - if (Directory.Exists(tempPath) == false) - { - Directory.CreateDirectory(tempPath); - } - - string tempBinPath = Path.Combine(tempPath, "bin"); - var resultCode = 0; - - string publishReadyToRun = "/p:PublishReadyToRun="; - if (parser.Arguments.ContainsKey(_paramPublishReadyToRun)) - { - publishReadyToRun += parser.Arguments[_paramPublishReadyToRun][0]; - } - else - { - publishReadyToRun += "true"; - } - - string publishSingleFile = "/p:PublishSingleFile="; - if (parser.Arguments.ContainsKey(_paramPublishSingleFile)) - { - publishSingleFile += parser.Arguments[_paramPublishSingleFile][0]; - } - else - { - publishSingleFile += "true"; - } - - // If target is specified as a command line argument, use it. - // Format is the same as the build command. - // If target is not specified, autodetect it. - var platformInfo = GetTargetPlatformInformation.Do(string.Empty, string.Empty); - if (parser.Arguments.ContainsKey(_paramTarget)) - { - var desiredPlatform = parser.Arguments[_paramTarget][0]; - string specifiedFromCustom = string.Empty; - if (desiredPlatform == "custom" && parser.Arguments[_paramTarget].Length > 1) - { - specifiedFromCustom = parser.Arguments[_paramTarget][1]; - } - platformInfo = GetTargetPlatformInformation.Do(desiredPlatform, specifiedFromCustom); - } - - string configuration = "Debug"; - if (parser.Arguments.ContainsKey(_paramDotNetConfig)) - { - configuration = parser.Arguments[_paramDotNetConfig][0]; - } - - if (parser != null && !parser.Arguments.ContainsKey("watch")) - { - resultCode = ProcessHelper.CmdExecute($"dotnet publish -r {platformInfo.NetCorePublishRid} -c \"{configuration}\" --output \"{tempBinPath}\" {publishReadyToRun} {publishSingleFile} --no-self-contained", aspCoreProjectPath); - } - - if (resultCode != 0) - { - Console.WriteLine("Error occurred during dotnet publish: " + resultCode); - return false; - } - - DeployEmbeddedElectronFiles.Do(tempPath); - - var nodeModulesDirPath = Path.Combine(tempPath, "node_modules"); - - Console.WriteLine("node_modules missing in: " + nodeModulesDirPath); - - Console.WriteLine("Start npm install..."); - ProcessHelper.CmdExecute("npm install", tempPath); - - Console.WriteLine("ElectronHostHook handling started..."); - - string electronhosthookDir = Path.Combine(Directory.GetCurrentDirectory(), "ElectronHostHook"); - - if (Directory.Exists(electronhosthookDir)) - { - string hosthookDir = Path.Combine(tempPath, "ElectronHostHook"); - DirectoryCopy.Do(electronhosthookDir, hosthookDir, true, new List() { "node_modules" }); - - Console.WriteLine("Start npm install for typescript & hosthooks..."); - ProcessHelper.CmdExecute("npm install", hosthookDir); - - // ToDo: Not sure if this runs under linux/macos - ProcessHelper.CmdExecute(@"npx tsc -p ../../ElectronHostHook", tempPath); - } - - string arguments = ""; - - if (parser.Arguments.ContainsKey(_arguments)) - { - arguments = string.Join(' ', parser.Arguments[_arguments]); - } - - if (parser.Arguments.ContainsKey(_manifest)) - { - arguments += " --manifest=" + parser.Arguments[_manifest].First(); - } - - if (parser.Arguments.ContainsKey(_clearCache)) - { - arguments += " --clear-cache=true"; - } - - if (parser.Arguments.ContainsKey("watch")) - { - arguments += " --watch=true"; - } - - string path = Path.Combine(tempPath, "node_modules", ".bin"); - bool isWindows = RuntimeInformation.IsOSPlatform(OSPlatform.Windows); - - if (isWindows) - { - Console.WriteLine("Invoke electron.cmd - in dir: " + path); - ProcessHelper.CmdExecute(@"electron.cmd ""..\..\main.js"" " + arguments, path); - - } - else - { - Console.WriteLine("Invoke electron - in dir: " + path); - ProcessHelper.CmdExecute(@"./electron ""../../main.js"" " + arguments, path); - } - - return true; - }); - } - } -} diff --git a/src/ElectronNET.CLI/Commands/VersionCommand.cs b/src/ElectronNET.CLI/Commands/VersionCommand.cs deleted file mode 100644 index c8f60f8..0000000 --- a/src/ElectronNET.CLI/Commands/VersionCommand.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Reflection; -using System.Threading.Tasks; - -namespace ElectronNET.CLI.Commands -{ - public class VersionCommand : ICommand - { - public const string COMMAND_NAME = "version"; - public const string COMMAND_DESCRIPTION = "Displays the ElectronNET.CLI version"; - public const string COMMAND_ARGUMENTS = ""; - public static IList CommandOptions { get; set; } = new List(); - - public VersionCommand(string[] args) - { - } - - public Task ExecuteAsync() - { - return Task.Run(() => - { - var runtimeVersion = typeof(VersionCommand) - .GetTypeInfo() - .Assembly - .GetCustomAttribute(); - - Console.WriteLine($"ElectronNET.CLI Version: " + runtimeVersion.Version); - - return true; - }); - } - - } -} \ No newline at end of file diff --git a/src/ElectronNET.CLI/ElectronNET.CLI.csproj b/src/ElectronNET.CLI/ElectronNET.CLI.csproj deleted file mode 100644 index 5aa7182..0000000 --- a/src/ElectronNET.CLI/ElectronNET.CLI.csproj +++ /dev/null @@ -1,88 +0,0 @@ - - - Exe - net6.0;net8.0 - dotnet-electronize - electronize - DotnetCliTool - ..\..\artifacts - ElectronNET.CLI - - 99.0.0.0 - Gregor Biswanger, Florian Rappl - Electron.NET - - - Building cross platform electron based desktop apps with .NET Core and ASP.NET Core. - This package contains the dotnet tooling to electronize your application. - - MIT - https://github.com/ElectronNET/Electron.NET/ - https://github.com/ElectronNET/Electron.NET/ - git - true - electron aspnetcore - Changelog: https://github.com/ElectronNET/Electron.NET/blob/main/Changelog.md - PackageIcon.png - true - - - - - AnyCPU - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - all - runtime; build; native; contentfiles; analyzers - - - all - - - - - - - - - \ No newline at end of file diff --git a/src/ElectronNET.CLI/EmbeddedFileHelper.cs b/src/ElectronNET.CLI/EmbeddedFileHelper.cs deleted file mode 100644 index d41e657..0000000 --- a/src/ElectronNET.CLI/EmbeddedFileHelper.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System; -using System.IO; -using System.Reflection; - -namespace ElectronNET.CLI -{ - public static class EmbeddedFileHelper - { - private const string ResourcePath = "ElectronNET.CLI.{0}"; - - private static Stream GetTestResourceFileStream(string folderAndFileInProjectPath) - { - var asm = Assembly.GetExecutingAssembly(); - var resource = string.Format(ResourcePath, folderAndFileInProjectPath); - - return asm.GetManifestResourceStream(resource); - } - - public static void DeployEmbeddedFile(string targetPath, string file, string namespacePath = "") - { - using (var fileStream = File.Create(Path.Combine(targetPath, file))) - { - var streamFromEmbeddedFile = GetTestResourceFileStream("ElectronHost." + namespacePath + file); - if (streamFromEmbeddedFile == null) - { - Console.WriteLine("Error: Couldn't find embedded file: " + file); - } - - streamFromEmbeddedFile.CopyTo(fileStream); - } - } - - public static void DeployEmbeddedFileToTargetFile(string targetPath, string embeddedFile, string targetFile, string namespacePath = "") - { - using (var fileStream = File.Create(Path.Combine(targetPath, targetFile))) - { - var streamFromEmbeddedFile = GetTestResourceFileStream("ElectronHost." + namespacePath + embeddedFile); - if (streamFromEmbeddedFile == null) - { - Console.WriteLine("Error: Couldn't find embedded file: " + embeddedFile); - } - - streamFromEmbeddedFile.CopyTo(fileStream); - } - } - } -} \ No newline at end of file diff --git a/src/ElectronNET.CLI/ProcessHelper.cs b/src/ElectronNET.CLI/ProcessHelper.cs deleted file mode 100644 index 9e0048f..0000000 --- a/src/ElectronNET.CLI/ProcessHelper.cs +++ /dev/null @@ -1,53 +0,0 @@ -using System; -using System.Diagnostics; -using System.Runtime.InteropServices; - -namespace ElectronNET.CLI -{ - public class ProcessHelper - { - public static int CmdExecute(string command, string workingDirectoryPath, bool output = true, bool waitForExit = true) - { - using (Process cmd = new Process()) - { - bool isWindows = RuntimeInformation.IsOSPlatform(OSPlatform.Windows); - - if (isWindows) - { - cmd.StartInfo = new ProcessStartInfo("cmd.exe", "/c " + command); - } - else - { - // works for OSX and Linux (at least on Ubuntu) - var escapedArgs = command.Replace("\"", "\\\""); - cmd.StartInfo = new ProcessStartInfo("bash", $"-c \"{escapedArgs}\""); - } - - cmd.StartInfo.RedirectStandardInput = true; - cmd.StartInfo.RedirectStandardOutput = true; - cmd.StartInfo.RedirectStandardError = true; - cmd.StartInfo.CreateNoWindow = true; - cmd.StartInfo.UseShellExecute = false; - cmd.StartInfo.WorkingDirectory = workingDirectoryPath; - - if (output) - { - cmd.OutputDataReceived += (s, e) => Console.WriteLine(e.Data); - cmd.ErrorDataReceived += (s, e) => Console.WriteLine(e.Data); - } - - Console.WriteLine(command); - cmd.Start(); - cmd.BeginOutputReadLine(); - cmd.BeginErrorReadLine(); - - if (waitForExit) - { - cmd.WaitForExit(); - } - - return cmd.ExitCode; - } - } - } -} diff --git a/src/ElectronNET.CLI/Program.cs b/src/ElectronNET.CLI/Program.cs deleted file mode 100644 index 2030030..0000000 --- a/src/ElectronNET.CLI/Program.cs +++ /dev/null @@ -1,201 +0,0 @@ -using ElectronNET.CLI.Commands; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System.Text; - -namespace ElectronNET.CLI -{ - class Program - { - static void Main(string[] args) - { - if (args.Length == 0) - { - PrintUsageHeader(); - PrintUsage(); - Environment.Exit(-1); - } - - ICommand command = null; - - switch (args[0]) - { - case StartElectronCommand.COMMAND_NAME: - command = new StartElectronCommand(args.Skip(1).ToArray()); - break; - case BuildCommand.COMMAND_NAME: - command = new BuildCommand(args.Skip(1).ToArray()); - break; - case InitCommand.COMMAND_NAME: - command = new InitCommand(args.Skip(1).ToArray()); - break; - case AddCommand.COMMAND_NAME: - command = new AddCommand(args.Skip(1).ToArray()); - break; - case VersionCommand.COMMAND_NAME: - command = new VersionCommand(args.Skip(1).ToArray()); - break; - case "--help": - case "--h": - case "help": - PrintUsageHeader(); - - if (args.Length > 1) - PrintUsage(args[1]); - else - PrintUsage(); - break; - default: - Console.Error.WriteLine($"Unknown command {args[0]}"); - PrintUsage(); - Environment.Exit(-1); - break; - } - - if (command != null) - { - var success = command.ExecuteAsync().Result; - if (!success) - { - Environment.Exit(-1); - } - } - } - - private static void PrintUsageHeader() - { - var sb = new StringBuilder("Electron.NET Tools"); - var version = Version; - if (!string.IsNullOrEmpty(version)) - { - sb.Append($" ({version})"); - } - Console.WriteLine(sb.ToString()); - Console.WriteLine("Project Home: https://github.com/ElectronNET/Electron.NET"); - Console.WriteLine("\t"); - } - - private static void PrintUsage() - { - const int NAME_WIDTH = 23; - Console.WriteLine("\t"); - Console.WriteLine("Commands to start the Electron Application:"); - Console.WriteLine("\t"); - Console.WriteLine($"\t{StartElectronCommand.COMMAND_NAME.PadRight(NAME_WIDTH)} {StartElectronCommand.COMMAND_DESCRIPTION}"); - - Console.WriteLine("\t"); - Console.WriteLine("Command to build the Electron Application:"); - Console.WriteLine("\t"); - Console.WriteLine($"\t{BuildCommand.COMMAND_NAME.PadRight(NAME_WIDTH)} {BuildCommand.COMMAND_DESCRIPTION}"); - - Console.WriteLine("\t"); - Console.WriteLine("Command to init the Electron Application:"); - Console.WriteLine("\t"); - Console.WriteLine($"\t{InitCommand.COMMAND_NAME.PadRight(NAME_WIDTH)} {InitCommand.COMMAND_DESCRIPTION}"); - - Console.WriteLine("\t"); - Console.WriteLine("Command to add a custom npm packages to the Electron Application:"); - Console.WriteLine("\t"); - Console.WriteLine($"\t{AddCommand.COMMAND_NAME.PadRight(NAME_WIDTH)} {AddCommand.COMMAND_DESCRIPTION}"); - - Console.WriteLine("\t"); - Console.WriteLine("Commands to see the current ElectronNET version number:"); - Console.WriteLine("\t"); - Console.WriteLine($"\t{VersionCommand.COMMAND_NAME.PadRight(NAME_WIDTH)} {VersionCommand.COMMAND_DESCRIPTION}"); - - Console.WriteLine("\t"); - Console.WriteLine("\t"); - Console.WriteLine("To get help on individual commands execute:"); - Console.WriteLine("\tdotnet electronize help "); - } - - private static void PrintUsage(string command) - { - switch (command) - { - case StartElectronCommand.COMMAND_NAME: - PrintUsage(StartElectronCommand.COMMAND_NAME, StartElectronCommand.COMMAND_DESCRIPTION, StartElectronCommand.CommandOptions, StartElectronCommand.COMMAND_ARGUMENTS); - break; - case BuildCommand.COMMAND_NAME: - PrintUsage(BuildCommand.COMMAND_NAME, BuildCommand.COMMAND_DESCRIPTION, BuildCommand.CommandOptions, BuildCommand.COMMAND_ARGUMENTS); - break; - case InitCommand.COMMAND_NAME: - PrintUsage(InitCommand.COMMAND_NAME, InitCommand.COMMAND_DESCRIPTION, InitCommand.CommandOptions, InitCommand.COMMAND_ARGUMENTS); - break; - case AddCommand.COMMAND_NAME: - PrintUsage(AddCommand.COMMAND_NAME, AddCommand.COMMAND_DESCRIPTION, AddCommand.CommandOptions, AddCommand.COMMAND_ARGUMENTS); - break; - case VersionCommand.COMMAND_NAME: - PrintUsage(VersionCommand.COMMAND_NAME, VersionCommand.COMMAND_DESCRIPTION, VersionCommand.CommandOptions, VersionCommand.COMMAND_ARGUMENTS); - break; - default: - Console.Error.WriteLine($"Unknown command {command}"); - PrintUsage(); - break; - } - } - - private static void PrintUsage(string command, string description, IList options, string arguments) - { - const int INDENT = 3; - - Console.WriteLine($"{command}: "); - Console.WriteLine($"{new string(' ', INDENT)}{description}"); - Console.WriteLine("\t"); - - - if (!string.IsNullOrEmpty(arguments)) - { - Console.WriteLine($"{new string(' ', INDENT)}dotnet electronize {command} [arguments] [options]"); - Console.WriteLine($"{new string(' ', INDENT)}Arguments:"); - Console.WriteLine($"{new string(' ', INDENT * 2)}{arguments}"); - } - else - { - Console.WriteLine($"{new string(' ', INDENT)}dotnet electronize {command} [options]"); - } - - const int SWITCH_COLUMN_WIDTH = 40; - - Console.WriteLine($"{new string(' ', INDENT)}Options:"); - foreach (var option in options) - { - StringBuilder stringBuilder = new StringBuilder(); - if (option.ShortSwitch != null) - { - stringBuilder.Append($"{option.ShortSwitch.PadRight(6)} | "); - } - - stringBuilder.Append($"{option.Switch}"); - if (stringBuilder.Length < SWITCH_COLUMN_WIDTH) - { - stringBuilder.Append(new string(' ', SWITCH_COLUMN_WIDTH - stringBuilder.Length)); - } - - stringBuilder.Append(option.Description); - - - Console.WriteLine($"{new string(' ', INDENT * 2)}{stringBuilder.ToString()}"); - } - } - - private static string Version - { - get - { - AssemblyInformationalVersionAttribute attribute = null; - try - { - attribute = Assembly.GetEntryAssembly().GetCustomAttribute(); - } - catch (AmbiguousMatchException) - { - // Catch exception and continue if multiple attributes are found. - } - return attribute?.InformationalVersion; - } - } - } -} diff --git a/src/ElectronNET.CLI/Properties/launchSettings.json b/src/ElectronNET.CLI/Properties/launchSettings.json deleted file mode 100644 index 5adf9cd..0000000 --- a/src/ElectronNET.CLI/Properties/launchSettings.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "profiles": { - "ElectronNET.CLI": { - "commandName": "Project", - "commandLineArgs": "start /project-path \"$(SolutionDir)ElectronNET.WebApp\" /watch" - } - } -} \ No newline at end of file diff --git a/src/ElectronNET.CLI/SimpleCommandLineParser.cs b/src/ElectronNET.CLI/SimpleCommandLineParser.cs deleted file mode 100644 index 9da5d73..0000000 --- a/src/ElectronNET.CLI/SimpleCommandLineParser.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; - -namespace ElectronNET.CLI -{ - public class SimpleCommandLineParser - { - public SimpleCommandLineParser() - { - Arguments = new Dictionary(); - } - public IDictionary Arguments { get; private set; } - public void Parse(string[] args) - { - var currentName = ""; - var values = new List(); - foreach (var arg in args) - { - if (arg.StartsWith("/")) - { - if (currentName != "") - Arguments[currentName] = values.ToArray(); - values.Clear(); - currentName = arg.Substring(1); - } - else if (currentName == "") - Arguments[arg] = new string[0]; - else - values.Add(arg); - } - if (currentName != "") - Arguments[currentName] = values.ToArray(); - - Console.ForegroundColor = ConsoleColor.Green; - Console.WriteLine($"Arguments: \n\t{string.Join("\n\t",Arguments.Keys.Select(i => $"{i} = {string.Join(" ", Arguments[i])}"))}"); - Console.ResetColor(); - } - public bool Contains(string name) - { - return Arguments.ContainsKey(name); - } - - internal bool TryGet(string key, out string[] value) - { - value = null; - if (!Contains(key)) { - return false; - } - value = Arguments[key]; - return true; - } - } -} \ No newline at end of file diff --git a/src/ElectronNET.CLI/devCleanup.cmd b/src/ElectronNET.CLI/devCleanup.cmd deleted file mode 100644 index 669e3af..0000000 --- a/src/ElectronNET.CLI/devCleanup.cmd +++ /dev/null @@ -1,3 +0,0 @@ -rd /s /q %userprofile%\.nuget\packages\.tools\electronnet.cli -rd /s /q %userprofile%\.nuget\packages\electronnet.cli -del ..\artifacts\ElectronNET.CLI.1.0.0.nupkg \ No newline at end of file diff --git a/src/ElectronNET.CLI/devCleanup.sh b/src/ElectronNET.CLI/devCleanup.sh deleted file mode 100644 index b8b7e1f..0000000 --- a/src/ElectronNET.CLI/devCleanup.sh +++ /dev/null @@ -1 +0,0 @@ -rm -rf ~/.nuget/packages/electronnet.cli \ No newline at end of file From c0c3aaebdced3cdb173dc0e76eab143753eaf008 Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 13:08:17 +0200 Subject: [PATCH 15/66] ElectronNET.Host: Remove build-helper and manifest (no longer needed) --- src/ElectronNET.Host/.vscode/launch.json | 12 ----- src/ElectronNET.Host/build-helper.js | 53 --------------------- src/ElectronNET.Host/electron.manifest.json | 35 -------------- 3 files changed, 100 deletions(-) delete mode 100644 src/ElectronNET.Host/build-helper.js delete mode 100644 src/ElectronNET.Host/electron.manifest.json diff --git a/src/ElectronNET.Host/.vscode/launch.json b/src/ElectronNET.Host/.vscode/launch.json index fb126ae..bb2469e 100644 --- a/src/ElectronNET.Host/.vscode/launch.json +++ b/src/ElectronNET.Host/.vscode/launch.json @@ -15,18 +15,6 @@ "--test=true", "--blub=wuhuu" ] - }, - { - "type": "node", - "request": "launch", - "name": "Launch build-helper", - "program": "${workspaceFolder}/build-helper.js", - "skipFiles": [ - "/**" - ], - "args": [ - "electron.manifest.json" - ] } ] } \ No newline at end of file diff --git a/src/ElectronNET.Host/build-helper.js b/src/ElectronNET.Host/build-helper.js deleted file mode 100644 index d8ebc94..0000000 --- a/src/ElectronNET.Host/build-helper.js +++ /dev/null @@ -1,53 +0,0 @@ -const manifestFileName = process.argv[2]; -// @ts-ignore -const manifestFile = require('./bin/' + manifestFileName); -const dasherize = require('dasherize'); -const fs = require('fs'); - -const builderConfiguration = { ...manifestFile.build }; -if(process.argv.length > 3) { - builderConfiguration.buildVersion = process.argv[3]; -} -if(builderConfiguration.hasOwnProperty('buildVersion')) { - // @ts-ignore - const packageJson = require('./package'); - packageJson.name = dasherize(manifestFile.name || 'electron-net'); - packageJson.author = manifestFile.author || ''; - packageJson.version = builderConfiguration.buildVersion; - packageJson.description = manifestFile.description || ''; - - fs.writeFile('./package.json', JSON.stringify(packageJson), (error) => { - if(error) { - console.log(error.message); - } - }); - - try { - // @ts-ignore - const packageLockJson = require('./package-lock'); - packageLockJson.name = dasherize(manifestFile.name || 'electron-net'); - packageLockJson.author = manifestFile.author || ''; - packageLockJson.version = builderConfiguration.buildVersion; - fs.writeFile('./package-lock.json', JSON.stringify(packageLockJson), (error) => { - if(error) { - console.log(error.message); - } - }); - } catch (error) { - // ignore missing module - } -} - -const builderConfigurationString = JSON.stringify(builderConfiguration); -fs.writeFile('./bin/electron-builder.json', builderConfigurationString, (error) => { - if(error) { - console.log(error.message); - } -}); - -const manifestContent = JSON.stringify(manifestFile); -fs.writeFile('./bin/electron.manifest.json', manifestContent, (error) => { - if(error) { - console.log(error.message); - } -}); \ No newline at end of file diff --git a/src/ElectronNET.Host/electron.manifest.json b/src/ElectronNET.Host/electron.manifest.json deleted file mode 100644 index 014fdec..0000000 --- a/src/ElectronNET.Host/electron.manifest.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "executable": "{{executable}}", - "splashscreen": { - "imageFile": "" - }, - "name": "{{executable}}", - "author": "", - "singleInstance": false, - "environment": "Production", - "build": { - "appId": "com.{{executable}}.app", - "productName": "{{executable}}", - "copyright": "Copyright © 2020", - "buildVersion": "1.0.0", - "compression": "maximum", - "directories": { - "output": "../../../bin/Desktop" - }, - "extraResources": [ - { - "from": "./bin", - "to": "bin", - "filter": [ "**/*" ] - } - ], - "files": [ - { - "from": "./ElectronHostHook/node_modules", - "to": "ElectronHostHook/node_modules", - "filter": [ "**/*" ] - }, - "**/*" - ] - } -} \ No newline at end of file From 0dca0e90f9dc64a22ebdb81bbbf685da2597a46f Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 13:16:10 +0200 Subject: [PATCH 16/66] ElectronNET.Host: Update build configuration - changes: - Update all packages to their latest version - Drop tslint (replaced by eslint) - Update node types to 22 => nodejs => 22 is minimum now - Also use latest TypeScript version - Finally, reference ElectronHostHook has a package dependency this avoids conflicts of dependency versions between main code and host-hook code, by letting npm resolve them --- .../ElectronHostHook/package-lock.json | 346 +- .../ElectronHostHook/package.json | 6 +- .../ElectronHostHook/tsconfig.json | 19 +- src/ElectronNET.Host/package-lock.json | 2845 +++++++---------- src/ElectronNET.Host/package.json | 19 +- src/ElectronNET.Host/tsconfig.json | 21 +- src/ElectronNET.Host/tslint.json | 129 - 7 files changed, 1208 insertions(+), 2177 deletions(-) delete mode 100644 src/ElectronNET.Host/tslint.json diff --git a/src/ElectronNET.Host/ElectronHostHook/package-lock.json b/src/ElectronNET.Host/ElectronHostHook/package-lock.json index 373eefe..fa31f12 100644 --- a/src/ElectronNET.Host/ElectronHostHook/package-lock.json +++ b/src/ElectronNET.Host/ElectronHostHook/package-lock.json @@ -1,50 +1,49 @@ { "name": "electron-host-hook", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "electron-host-hook", "version": "1.0.0", "license": "MIT", + "dependencies": { + "socket.io": "^4.8.1" + }, "devDependencies": { - "socket.io": "^4.6.1", - "typescript": "^5.0.2" + "typescript": "^5.9.3" } }, "node_modules/@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", - "dev": true - }, - "node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", + "license": "MIT" }, "node_modules/@types/cors": { - "version": "2.8.13", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", - "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", - "dev": true, + "version": "2.8.19", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", + "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/node": { - "version": "18.15.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.5.tgz", - "integrity": "sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew==", - "dev": true + "version": "24.7.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.7.2.tgz", + "integrity": "sha512-/NbVmcGTP+lj5oa4yiYxxeBjRivKQ5Ns1eSZeB99ExsEQ6rX5XYU1Zy/gGxY/ilqtD4Etx9mKyrPxZRetiahhA==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.14.0" + } }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -57,16 +56,16 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true, + "license": "MIT", "engines": { "node": "^4.5.0 || >= 5.9" } }, "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true, + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -75,7 +74,7 @@ "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, + "license": "MIT", "dependencies": { "object-assign": "^4", "vary": "^1" @@ -85,12 +84,12 @@ } }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -102,31 +101,30 @@ } }, "node_modules/engine.io": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.1.tgz", - "integrity": "sha512-JFYQurD/nbsA5BSPmbaOSLa3tSVj8L6o4srSwXXY3NqE+gGUNmmPTbhn8tjzcCtSqhFgIeqef81ngny8JM25hw==", - "dev": true, + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.4.tgz", + "integrity": "sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==", + "license": "MIT", "dependencies": { - "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", "@types/node": ">=10.0.0", "accepts": "~1.3.4", "base64id": "2.0.0", - "cookie": "~0.4.1", + "cookie": "~0.7.2", "cors": "~2.8.5", "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.11.0" + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1" }, "engines": { - "node": ">=10.0.0" + "node": ">=10.2.0" } }, "node_modules/engine.io-parser": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz", - "integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==", - "dev": true, + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", + "license": "MIT", "engines": { "node": ">=10.0.0" } @@ -135,7 +133,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -144,7 +142,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -153,16 +151,16 @@ } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -171,42 +169,44 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/socket.io": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz", - "integrity": "sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA==", - "dev": true, + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz", + "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==", + "license": "MIT", "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", + "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.4.1", + "engine.io": "~6.6.0", "socket.io-adapter": "~2.5.2", - "socket.io-parser": "~4.2.1" + "socket.io-parser": "~4.2.4" }, "engines": { - "node": ">=10.0.0" + "node": ">=10.2.0" } }, "node_modules/socket.io-adapter": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", - "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", - "dev": true, + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", + "license": "MIT", "dependencies": { - "ws": "~8.11.0" + "debug": "~4.3.4", + "ws": "~8.17.1" } }, "node_modules/socket.io-parser": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.2.tgz", - "integrity": "sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw==", - "dev": true, + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" @@ -216,38 +216,45 @@ } }, "node_modules/typescript": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", - "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=12.20" + "node": ">=14.17" } }, + "node_modules/undici-types": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.14.0.tgz", + "integrity": "sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==", + "license": "MIT" + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "dev": true, + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "license": "MIT", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -258,184 +265,5 @@ } } } - }, - "dependencies": { - "@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", - "dev": true - }, - "@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, - "@types/cors": { - "version": "2.8.13", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", - "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/node": { - "version": "18.15.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.5.tgz", - "integrity": "sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew==", - "dev": true - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true - }, - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "engine.io": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.1.tgz", - "integrity": "sha512-JFYQurD/nbsA5BSPmbaOSLa3tSVj8L6o4srSwXXY3NqE+gGUNmmPTbhn8tjzcCtSqhFgIeqef81ngny8JM25hw==", - "dev": true, - "requires": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.11.0" - } - }, - "engine.io-parser": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz", - "integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==", - "dev": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true - }, - "socket.io": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz", - "integrity": "sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA==", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~6.4.1", - "socket.io-adapter": "~2.5.2", - "socket.io-parser": "~4.2.1" - } - }, - "socket.io-adapter": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", - "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", - "dev": true, - "requires": { - "ws": "~8.11.0" - } - }, - "socket.io-parser": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.2.tgz", - "integrity": "sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw==", - "dev": true, - "requires": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" - } - }, - "typescript": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", - "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", - "dev": true - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true - }, - "ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "dev": true, - "requires": {} - } } } diff --git a/src/ElectronNET.Host/ElectronHostHook/package.json b/src/ElectronNET.Host/ElectronHostHook/package.json index 6c3d73a..6489dfa 100644 --- a/src/ElectronNET.Host/ElectronHostHook/package.json +++ b/src/ElectronNET.Host/ElectronHostHook/package.json @@ -13,7 +13,9 @@ "author": "Gregor Biswanger", "license": "MIT", "devDependencies": { - "socket.io": "^4.6.1", - "typescript": "^5.0.2" + "typescript": "^5.9.3" + }, + "dependencies": { + "socket.io": "^4.8.1" } } diff --git a/src/ElectronNET.Host/ElectronHostHook/tsconfig.json b/src/ElectronNET.Host/ElectronHostHook/tsconfig.json index 01f4d55..55509f8 100644 --- a/src/ElectronNET.Host/ElectronHostHook/tsconfig.json +++ b/src/ElectronNET.Host/ElectronHostHook/tsconfig.json @@ -1,11 +1,12 @@ { - "compilerOptions": { - "module": "commonjs", - "sourceMap": true, - "skipLibCheck": true, - "target": "es2015" - }, - "exclude": [ - "node_modules" - ] + "compilerOptions": { + "module": "commonjs", + "target": "ES2019", + "sourceMap": true, + "skipLibCheck": true, + "newLine": "crlf" + }, + "exclude": [ + "node_modules" + ] } \ No newline at end of file diff --git a/src/ElectronNET.Host/package-lock.json b/src/ElectronNET.Host/package-lock.json index 7b64a91..4a45d86 100644 --- a/src/ElectronNET.Host/package-lock.json +++ b/src/ElectronNET.Host/package-lock.json @@ -1,7 +1,7 @@ { "name": "electron.net.host", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { @@ -10,57 +10,34 @@ "license": "MIT", "dependencies": { "dasherize": "^2.0.0", - "electron-updater": "^5.3.0", - "image-size": "^1.0.2", + "electron-host-hook": "file:./ElectronHostHook", + "electron-updater": "^6.6.2", + "image-size": "^1.2.1", "portscanner": "^2.2.0", - "socket.io": "^4.6.1" + "socket.io": "^4.8.1" }, "devDependencies": { - "@types/node": "^18.15.5", + "@types/node": "^22.18", "electron": "^30.0.3", - "tslint": "^6.1.3", - "typescript": "^5.0.2" + "eslint": "^9.37.0", + "typescript": "^5.9.3" } }, - "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, + "ElectronHostHook": { + "name": "electron-host-hook", + "version": "1.0.0", + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.18.6" + "socket.io": "^4.8.1" }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" + "devDependencies": { + "typescript": "^5.9.3" } }, "node_modules/@electron/get": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.2.tgz", - "integrity": "sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz", + "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==", "dev": true, "dependencies": { "debug": "^4.1.1", @@ -78,6 +55,188 @@ "global-agent": "^3.0.0" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "dev": true, + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.0.tgz", + "integrity": "sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==", + "dev": true, + "dependencies": { + "@eslint/core": "^0.16.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", + "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "9.37.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.37.0.tgz", + "integrity": "sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz", + "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==", + "dev": true, + "dependencies": { + "@eslint/core": "^0.16.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@sindresorhus/is": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", @@ -91,9 +250,9 @@ } }, "node_modules/@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==" }, "node_modules/@szmarczak/http-timer": { "version": "4.0.6", @@ -119,23 +278,30 @@ "@types/responselike": "^1.0.0" } }, - "node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" - }, "node_modules/@types/cors": { - "version": "2.8.13", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", - "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", + "version": "2.8.19", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", + "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", "dependencies": { "@types/node": "*" } }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true + }, "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, "node_modules/@types/keyv": { @@ -148,28 +314,26 @@ } }, "node_modules/@types/node": { - "version": "18.15.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.5.tgz", - "integrity": "sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew==" + "version": "22.18.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.10.tgz", + "integrity": "sha512-anNG/V/Efn/YZY4pRzbACnKxNKoBng2VTFydVu8RRs5hQjikP8CQfaeAV59VFSCzKNp90mXiVXW2QzV56rwMrg==", + "dependencies": { + "undici-types": "~6.21.0" + } }, "node_modules/@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", "dev": true, "dependencies": { "@types/node": "*" } }, - "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==" - }, "node_modules/@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", "dev": true, "optional": true, "dependencies": { @@ -188,16 +352,56 @@ "node": ">= 0.6" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, - "dependencies": { - "color-convert": "^1.9.0" + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=4" + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/argparse": { @@ -231,13 +435,14 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, "optional": true }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", @@ -254,9 +459,9 @@ } }, "node_modules/builder-util-runtime": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz", - "integrity": "sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.3.1.tgz", + "integrity": "sha512-2/egrNDDnRaxVwK3A+cJq6UOlqOdedGA7JPqCeJjN2Zjk1/QB/6QUi3b714ScIGS7HafFXTyzJEOr5b44I3kvQ==", "dependencies": { "debug": "^4.3.4", "sax": "^1.2.4" @@ -265,15 +470,6 @@ "node": ">=12.0.0" } }, - "node_modules/builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/cacheable-lookup": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", @@ -284,9 +480,9 @@ } }, "node_modules/cacheable-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", - "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", "dev": true, "dependencies": { "clone-response": "^1.0.2", @@ -301,27 +497,29 @@ "node": ">=8" } }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/chalk/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/clone-response": { @@ -337,24 +535,21 @@ } }, "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "color-name": "1.1.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "node_modules/concat-map": { @@ -364,9 +559,9 @@ "dev": true }, "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "engines": { "node": ">= 0.6" } @@ -383,17 +578,31 @@ "node": ">= 0.10" } }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/dasherize": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dasherize/-/dasherize-2.0.0.tgz", "integrity": "sha512-APql/TZ6FdLEpf2z7/X2a2zyqK8juYtqaSVqxw9mYoQ64CXkfU15AeLh8pUszT8+fnYjgm6t0aIYpWKJbnLkuA==" }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -431,6 +640,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, "node_modules/defer-to-connect": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", @@ -440,13 +655,32 @@ "node": ">=10" } }, - "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, "optional": true, "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "optional": true, + "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -464,19 +698,10 @@ "dev": true, "optional": true }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/electron": { - "version": "30.0.3", - "resolved": "https://registry.npmjs.org/electron/-/electron-30.0.3.tgz", - "integrity": "sha512-h+suwx6e0fnv/9wi0/cmCMtG+4LrPzJZa+3DEEpxcPcP+pcWnBI70t8QspxgMNIh2wzXLMD9XVqrLkEbiBAInw==", + "version": "30.5.1", + "resolved": "https://registry.npmjs.org/electron/-/electron-30.5.1.tgz", + "integrity": "sha512-AhL7+mZ8Lg14iaNfoYTkXQ2qee8mmsQyllKdqxlpv/zrKgfxz6jNVtcRRbQtLxtF8yzcImWdfTQROpYiPumdbw==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -491,20 +716,23 @@ "node": ">= 12.20.55" } }, + "node_modules/electron-host-hook": { + "resolved": "ElectronHostHook", + "link": true + }, "node_modules/electron-updater": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-5.3.0.tgz", - "integrity": "sha512-iKEr7yQBcvnQUPnSDYGSWC9t0eF2YbZWeYYYZzYxdl+HiRejXFENjYMnYjoOm2zxyD6Cr2JTHZhp9pqxiXuCOw==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.6.2.tgz", + "integrity": "sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==", "dependencies": { - "@types/semver": "^7.3.6", - "builder-util-runtime": "9.1.1", - "fs-extra": "^10.0.0", + "builder-util-runtime": "9.3.1", + "fs-extra": "^10.1.0", "js-yaml": "^4.1.0", "lazy-val": "^1.0.5", "lodash.escaperegexp": "^4.1.2", "lodash.isequal": "^4.5.0", - "semver": "^7.3.5", - "typed-emitter": "^2.1.0" + "semver": "^7.6.3", + "tiny-typed-emitter": "^2.1.0" } }, "node_modules/electron-updater/node_modules/fs-extra": { @@ -521,9 +749,9 @@ } }, "node_modules/electron-updater/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", "dependencies": { "universalify": "^2.0.0" }, @@ -532,12 +760,9 @@ } }, "node_modules/electron-updater/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "bin": { "semver": "bin/semver.js" }, @@ -546,57 +771,72 @@ } }, "node_modules/electron-updater/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "engines": { "node": ">= 10.0.0" } }, "node_modules/electron/node_modules/@types/node": { - "version": "20.12.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.11.tgz", - "integrity": "sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw==", + "version": "20.19.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.21.tgz", + "integrity": "sha512-CsGG2P3I5y48RPMfprQGfy4JPRZ6csfC3ltBZSRItG3ngggmNY/qs2uZKp4p9VbrpqNNSMzUZNFZKzgOGnd/VA==", "dev": true, "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.21.0" } }, "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", "dev": true, "dependencies": { "once": "^1.4.0" } }, "node_modules/engine.io": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.2.tgz", - "integrity": "sha512-FKn/3oMiJjrOEOeUub2WCox6JhxBXq/Zn3fZOMCBxKnNYtsdKjxhl7yR3fZhM9PV+rdE75SU5SYMc+2PGzo+Tg==", + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.4.tgz", + "integrity": "sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==", "dependencies": { - "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", "@types/node": ">=10.0.0", "accepts": "~1.3.4", "base64id": "2.0.0", - "cookie": "~0.4.1", + "cookie": "~0.7.2", "cors": "~2.8.5", "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.11.0" + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1" }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", "engines": { "node": ">=10.0.0" } }, - "node_modules/engine.io-parser": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz", - "integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==", + "node_modules/engine.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, "engines": { - "node": ">=10.0.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/env-paths": { @@ -608,6 +848,26 @@ "node": ">=6" } }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es6-error": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", @@ -620,7 +880,6 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "optional": true, "engines": { "node": ">=10" }, @@ -628,17 +887,151 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "node_modules/eslint": { + "version": "9.37.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.37.0.tgz", + "integrity": "sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==", "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.4.0", + "@eslint/core": "^0.16.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.37.0", + "@eslint/plugin-kit": "^0.4.0", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, "node_modules/extract-zip": { @@ -661,6 +1054,24 @@ "@types/yauzl": "^2.9.1" } }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, "node_modules/fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -670,6 +1081,53 @@ "pend": "~1.2.0" } }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true + }, "node_modules/fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -684,33 +1142,6 @@ "node": ">=6 <7 || >=8" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", - "dev": true, - "optional": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", @@ -726,24 +1157,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "is-glob": "^4.0.3" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=10.13.0" } }, "node_modules/global-agent": { @@ -765,14 +1188,11 @@ } }, "node_modules/global-agent/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "optional": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -780,14 +1200,27 @@ "node": ">=10" } }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "optional": true, "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -796,6 +1229,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/got": { "version": "11.8.6", "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", @@ -822,61 +1268,36 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "optional": true, "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "optional": true, - "engines": { - "node": ">= 0.4" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", "dev": true }, "node_modules/http2-wrapper": { @@ -892,10 +1313,19 @@ "node": ">=10.19.0" } }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/image-size": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", - "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", + "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", "dependencies": { "queue": "6.0.2" }, @@ -903,17 +1333,32 @@ "image-size": "bin/image-size.js" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.x" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" } }, "node_modules/inherits": { @@ -921,16 +1366,25 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "dependencies": { - "has": "^1.0.3" + "is-extglob": "^2.1.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-number-like": { @@ -941,10 +1395,10 @@ "lodash.isfinite": "^3.3.2" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "node_modules/js-yaml": { @@ -964,6 +1418,18 @@ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -981,9 +1447,9 @@ } }, "node_modules/keyv": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", - "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "dependencies": { "json-buffer": "3.0.1" @@ -994,6 +1460,34 @@ "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==" }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -1007,13 +1501,20 @@ "node_modules/lodash.isequal": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead." }, "node_modules/lodash.isfinite": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==" }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, "node_modules/lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", @@ -1023,17 +1524,6 @@ "node": ">=8" } }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/matcher": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", @@ -1087,31 +1577,16 @@ "node": "*" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true }, "node_modules/negotiator": { "version": "0.6.3", @@ -1160,6 +1635,23 @@ "wrappy": "1" } }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/p-cancelable": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", @@ -1169,20 +1661,65 @@ "node": ">=8" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } }, "node_modules/pend": { "version": "1.2.0", @@ -1203,6 +1740,15 @@ "npm": ">=1.0.0" } }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -1213,15 +1759,24 @@ } }, "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", "dev": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/queue": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", @@ -1242,29 +1797,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/resolve-alpn": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", "dev": true }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/responselike": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", @@ -1295,25 +1842,10 @@ "node": ">=8.0" } }, - "node_modules/rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", - "optional": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/rxjs/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "optional": true - }, "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" }, "node_modules/semver": { "version": "6.3.1", @@ -1347,28 +1879,67 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/socket.io": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz", - "integrity": "sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz", + "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==", "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", + "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.4.1", + "engine.io": "~6.6.0", "socket.io-adapter": "~2.5.2", - "socket.io-parser": "~4.2.1" + "socket.io-parser": "~4.2.4" }, "engines": { - "node": ">=10.0.0" + "node": ">=10.2.0" } }, "node_modules/socket.io-adapter": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", - "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", "dependencies": { - "ws": "~8.11.0" + "debug": "~4.3.4", + "ws": "~8.17.1" + } + }, + "node_modules/socket.io-adapter/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/socket.io-parser": { @@ -1383,13 +1954,57 @@ "node": ">=10.0.0" } }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", "dev": true, "optional": true }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/sumchecker": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", @@ -1403,113 +2018,32 @@ } }, "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/tiny-typed-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz", + "integrity": "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==" }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tslint": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", - "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", - "deprecated": "TSLint has been deprecated in favor of ESLint. Please see https://github.com/palantir/tslint/issues/4534 for more information.", + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.3", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.13.0", - "tsutils": "^2.29.0" - }, - "bin": { - "tslint": "bin/tslint" + "prelude-ls": "^1.2.1" }, "engines": { - "node": ">=4.8.0" - }, - "peerDependencies": { - "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev" - } - }, - "node_modules/tslint/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/tslint/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/tslint/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/tslint/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "peerDependencies": { - "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" + "node": ">= 0.8.0" } }, "node_modules/type-fest": { @@ -1525,32 +2059,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typed-emitter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/typed-emitter/-/typed-emitter-2.1.0.tgz", - "integrity": "sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==", - "optionalDependencies": { - "rxjs": "*" - } - }, "node_modules/typescript": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", - "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=12.20" + "node": ">=14.17" } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==" }, "node_modules/universalify": { "version": "0.1.2", @@ -1561,6 +2086,15 @@ "node": ">= 4.0.0" } }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -1569,6 +2103,30 @@ "node": ">= 0.8" } }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -1576,15 +2134,15 @@ "dev": true }, "node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -1595,11 +2153,6 @@ } } }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", @@ -1609,1243 +2162,17 @@ "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@electron/get": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.2.tgz", - "integrity": "sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "env-paths": "^2.2.0", - "fs-extra": "^8.1.0", - "global-agent": "^3.0.0", - "got": "^11.8.5", - "progress": "^2.0.3", - "semver": "^6.2.0", - "sumchecker": "^3.0.1" - } - }, - "@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "dev": true - }, - "@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" - }, - "@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "dev": true, - "requires": { - "defer-to-connect": "^2.0.0" - } - }, - "@types/cacheable-request": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", - "dev": true, - "requires": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" - } - }, - "@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" - }, - "@types/cors": { - "version": "2.8.13", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", - "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", - "requires": { - "@types/node": "*" - } - }, - "@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", - "dev": true - }, - "@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/node": { - "version": "18.15.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.5.tgz", - "integrity": "sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew==" - }, - "@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==" - }, - "@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", - "dev": true, - "optional": true, - "requires": { - "@types/node": "*" - } - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "requires": { - "lodash": "^4.17.14" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" - }, - "boolean": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", - "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true - }, - "builder-util-runtime": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz", - "integrity": "sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==", - "requires": { - "debug": "^4.3.4", - "sax": "^1.2.4" - } - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", - "dev": true - }, - "cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "dev": true - }, - "cacheable-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", - "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", - "dev": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "engines": { + "node": ">=10" }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - } - } - }, - "clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "dasherize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dasherize/-/dasherize-2.0.0.tgz", - "integrity": "sha512-APql/TZ6FdLEpf2z7/X2a2zyqK8juYtqaSVqxw9mYoQ64CXkfU15AeLh8pUszT8+fnYjgm6t0aIYpWKJbnLkuA==" - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "requires": { - "mimic-response": "^3.1.0" - }, - "dependencies": { - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true - } - } - }, - "defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true - }, - "define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "dev": true, - "optional": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true, - "optional": true - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "electron": { - "version": "30.0.3", - "resolved": "https://registry.npmjs.org/electron/-/electron-30.0.3.tgz", - "integrity": "sha512-h+suwx6e0fnv/9wi0/cmCMtG+4LrPzJZa+3DEEpxcPcP+pcWnBI70t8QspxgMNIh2wzXLMD9XVqrLkEbiBAInw==", - "dev": true, - "requires": { - "@electron/get": "^2.0.0", - "@types/node": "^20.9.0", - "extract-zip": "^2.0.1" - }, - "dependencies": { - "@types/node": { - "version": "20.12.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.11.tgz", - "integrity": "sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw==", - "dev": true, - "requires": { - "undici-types": "~5.26.4" - } - } - } - }, - "electron-updater": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-5.3.0.tgz", - "integrity": "sha512-iKEr7yQBcvnQUPnSDYGSWC9t0eF2YbZWeYYYZzYxdl+HiRejXFENjYMnYjoOm2zxyD6Cr2JTHZhp9pqxiXuCOw==", - "requires": { - "@types/semver": "^7.3.6", - "builder-util-runtime": "9.1.1", - "fs-extra": "^10.0.0", - "js-yaml": "^4.1.0", - "lazy-val": "^1.0.5", - "lodash.escaperegexp": "^4.1.2", - "lodash.isequal": "^4.5.0", - "semver": "^7.3.5", - "typed-emitter": "^2.1.0" - }, - "dependencies": { - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - } - } - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "engine.io": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.2.tgz", - "integrity": "sha512-FKn/3oMiJjrOEOeUub2WCox6JhxBXq/Zn3fZOMCBxKnNYtsdKjxhl7yR3fZhM9PV+rdE75SU5SYMc+2PGzo+Tg==", - "requires": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.11.0" - } - }, - "engine.io-parser": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz", - "integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==" - }, - "env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true - }, - "es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true, - "optional": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "optional": true - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, - "requires": { - "@types/yauzl": "^2.9.1", - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - } - }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dev": true, - "requires": { - "pend": "~1.2.0" - } - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", - "dev": true, - "optional": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "global-agent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", - "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", - "dev": true, - "optional": true, - "requires": { - "boolean": "^3.0.1", - "es6-error": "^4.1.1", - "matcher": "^3.0.0", - "roarr": "^2.15.3", - "semver": "^7.3.2", - "serialize-error": "^7.0.1" - }, - "dependencies": { - "semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "optional": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, - "optional": true, - "requires": { - "define-properties": "^1.1.3" - } - }, - "got": { - "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", - "dev": true, - "requires": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "optional": true, - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "optional": true - }, - "http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "dev": true, - "requires": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - } - }, - "image-size": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", - "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", - "requires": { - "queue": "6.0.2" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-number-like": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", - "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", - "requires": { - "lodash.isfinite": "^3.3.2" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "requires": { - "argparse": "^2.0.1" - } - }, - "json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true, - "optional": true - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "keyv": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", - "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", - "dev": true, - "requires": { - "json-buffer": "3.0.1" - } - }, - "lazy-val": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", - "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==" - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.escaperegexp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" - }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" - }, - "lodash.isfinite": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", - "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==" - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "matcher": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", - "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", - "dev": true, - "optional": true, - "requires": { - "escape-string-regexp": "^4.0.0" - } - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - }, - "normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true - }, - "portscanner": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", - "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", - "requires": { - "async": "^2.6.0", - "is-number-like": "^1.0.3" - } - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "queue": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", - "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", - "requires": { - "inherits": "~2.0.3" - } - }, - "quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true - }, - "responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dev": true, - "requires": { - "lowercase-keys": "^2.0.0" - } - }, - "roarr": { - "version": "2.15.4", - "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", - "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", - "dev": true, - "optional": true, - "requires": { - "boolean": "^3.0.1", - "detect-node": "^2.0.4", - "globalthis": "^1.0.1", - "json-stringify-safe": "^5.0.1", - "semver-compare": "^1.0.0", - "sprintf-js": "^1.1.2" - } - }, - "rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", - "optional": true, - "requires": { - "tslib": "^2.1.0" - }, - "dependencies": { - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "optional": true - } - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - }, - "semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", - "dev": true, - "optional": true - }, - "serialize-error": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", - "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", - "dev": true, - "optional": true, - "requires": { - "type-fest": "^0.13.1" - } - }, - "socket.io": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz", - "integrity": "sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA==", - "requires": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~6.4.1", - "socket.io-adapter": "~2.5.2", - "socket.io-parser": "~4.2.1" - } - }, - "socket.io-adapter": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", - "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", - "requires": { - "ws": "~8.11.0" - } - }, - "socket.io-parser": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", - "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", - "requires": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" - } - }, - "sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", - "dev": true, - "optional": true - }, - "sumchecker": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", - "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", - "dev": true, - "requires": { - "debug": "^4.1.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "tslint": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", - "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.3", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.13.0", - "tsutils": "^2.29.0" - }, - "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - } - } - }, - "tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true, - "optional": true - }, - "typed-emitter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/typed-emitter/-/typed-emitter-2.1.0.tgz", - "integrity": "sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==", - "requires": { - "rxjs": "*" - } - }, - "typescript": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", - "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", - "dev": true - }, - "undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "requires": {} - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dev": true, - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } } } diff --git a/src/ElectronNET.Host/package.json b/src/ElectronNET.Host/package.json index 81b0c05..183fca0 100644 --- a/src/ElectronNET.Host/package.json +++ b/src/ElectronNET.Host/package.json @@ -12,16 +12,17 @@ "start": "tsc -p ." }, "dependencies": { - "dasherize": "^2.0.0", - "electron-updater": "^5.3.0", - "image-size": "^1.0.2", - "portscanner": "^2.2.0", - "socket.io": "^4.6.1" + "dasherize": "^2.0.0", + "electron-updater": "^6.6.2", + "image-size": "^1.2.1", + "portscanner": "^2.2.0", + "socket.io": "^4.8.1", + "electron-host-hook": "file:./ElectronHostHook" }, "devDependencies": { - "@types/node": "^18.15.5", - "electron": "^30.0.3", - "tslint": "^6.1.3", - "typescript": "^5.0.2" + "@types/node": "^22.18", + "electron": "^30.0.3", + "eslint": "^9.37.0", + "typescript": "^5.9.3" } } diff --git a/src/ElectronNET.Host/tsconfig.json b/src/ElectronNET.Host/tsconfig.json index ea3d493..6c0db62 100644 --- a/src/ElectronNET.Host/tsconfig.json +++ b/src/ElectronNET.Host/tsconfig.json @@ -1,12 +1,13 @@ { - "compilerOptions": { - "module": "commonjs", - "target": "ES2019", - "sourceMap": true, - "skipLibCheck": true - }, - "exclude": [ - "node_modules", - "ElectronHostHook" - ] + "compilerOptions": { + "module": "commonjs", + "target": "ES2019", + "sourceMap": true, + "skipLibCheck": true, + "newLine": "crlf" + }, + "exclude": [ + "node_modules", + "ElectronHostHook" + ] } \ No newline at end of file diff --git a/src/ElectronNET.Host/tslint.json b/src/ElectronNET.Host/tslint.json deleted file mode 100644 index 4c7c0dc..0000000 --- a/src/ElectronNET.Host/tslint.json +++ /dev/null @@ -1,129 +0,0 @@ -{ - "rulesDirectory": [], - "rules": { - "arrow-return-shorthand": true, - "callable-types": true, - "class-name": true, - "comment-format": [ - true, - "check-space" - ], - "curly": true, - "deprecation": { - "severity": "warn" - }, - "eofline": true, - "forin": true, - "import-blacklist": [ - true, - "rxjs/Rx" - ], - "import-spacing": true, - "indent": [ - true, - "spaces" - ], - "interface-over-type-literal": true, - "label-position": true, - "max-line-length": [ - true, - 140 - ], - "member-access": false, - "member-ordering": [ - true, - { - "order": [ - "static-field", - "instance-field", - "static-method", - "instance-method" - ] - } - ], - "no-arg": true, - "no-bitwise": true, - "no-console": [ - true, - "debug", - "info", - "time", - "timeEnd", - "trace" - ], - "no-construct": true, - "no-debugger": true, - "no-duplicate-super": true, - "no-empty": false, - "no-empty-interface": true, - "no-eval": true, - "no-inferrable-types": [ - true, - "ignore-params" - ], - "no-misused-new": true, - "no-non-null-assertion": true, - "no-redundant-jsdoc": true, - "no-shadowed-variable": true, - "no-string-literal": false, - "no-string-throw": true, - "no-switch-case-fall-through": true, - "no-trailing-whitespace": true, - "no-unnecessary-initializer": true, - "no-unused-expression": true, - "no-use-before-declare": true, - "no-var-keyword": true, - "object-literal-sort-keys": false, - "one-line": [ - true, - "check-open-brace", - "check-catch", - "check-else", - "check-whitespace" - ], - "prefer-const": true, - "quotemark": [ - true, - "single" - ], - "radix": true, - "semicolon": [ - true, - "always" - ], - "triple-equals": [ - true, - "allow-null-check" - ], - "typedef-whitespace": [ - true, - { - "call-signature": "nospace", - "index-signature": "nospace", - "parameter": "nospace", - "property-declaration": "nospace", - "variable-declaration": "nospace" - } - ], - "unified-signatures": true, - "variable-name": false, - "whitespace": [ - true, - "check-branch", - "check-decl", - "check-operator", - "check-separator", - "check-type" - ], - "no-output-on-prefix": true, - "use-input-property-decorator": true, - "use-output-property-decorator": true, - "use-host-property-decorator": true, - "no-input-rename": true, - "no-output-rename": true, - "use-life-cycle-interface": true, - "use-pipe-transform-interface": true, - "component-class-suffix": true, - "directive-class-suffix": true - } -} \ No newline at end of file From 5ea368bb16a5672311c16b7700080144f9759316 Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 13:59:20 +0200 Subject: [PATCH 17/66] ElectronNET.Host: Update main.js with these changes: - Consume host-hook as a module - Use package.json instead of electron-manifest.json - Support new commandline flags: - unpackedelectron running in debug mode, electron first, so must launch dotnet - unpackeddotnet running in debug mode, dotnet first, do not launch dotnet - dotnetpacked running from electron-builder output, dotnet first, do not launch - {none of the above flags} running from electron-builder output, electron first, launch dotnet - electronforcedport specified by dotnet when dotnet-first, port is validated to be free - Removed 'watch' functionality (regular debugging is working now) - New feature to load a custom_main.js file, if present - Removed the 'electronWebPort' handling When ASP.Net is launched first, then the information which port it should use would be coming too late; anyway, there's no need for letting the port number round-trip all the way through the manifest file, loaded by main.js and then sent to dotnet. - Reworked handling of 'quit' message --- src/ElectronNET.Host/main.js | 619 ++++++++++++++++++++--------------- 1 file changed, 346 insertions(+), 273 deletions(-) diff --git a/src/ElectronNET.Host/main.js b/src/ElectronNET.Host/main.js index 622342e..4019948 100644 --- a/src/ElectronNET.Host/main.js +++ b/src/ElectronNET.Host/main.js @@ -5,6 +5,7 @@ const path = require('path'); const cProcess = require('child_process').spawn; const portscanner = require('portscanner'); const { imageSize } = require('image-size'); +const { HookService } = require('electron-host-hook'); let io, server, browserWindows, ipc, apiProcess, loadURL; let appApi, menu, dialogApi, notification, tray, webContents; let globalShortcut, shellApi, screen, clipboard, autoUpdater; @@ -16,342 +17,414 @@ let dock; let launchFile; let launchUrl; -let manifestJsonFileName = 'electron.manifest.json'; -let watchable = false; +let manifestJsonFileName = 'package.json'; +let unpackedelectron = false; +let unpackeddotnet = false; +let dotnetpacked = false; +let electronforcedport; + if (app.commandLine.hasSwitch('manifest')) { - manifestJsonFileName = app.commandLine.getSwitchValue('manifest'); + manifestJsonFileName = app.commandLine.getSwitchValue('manifest'); } -if (app.commandLine.hasSwitch('watch')) { - watchable = true; +console.log('Entry!!!: '); + +if (app.commandLine.hasSwitch('unpackedelectron')) { + unpackedelectron = true; +} +else if (app.commandLine.hasSwitch('unpackeddotnet')) { + unpackeddotnet = true; +} +else if (app.commandLine.hasSwitch('dotnetpacked')) { + dotnetpacked = true; } -let currentBinPath = path.join(__dirname.replace('app.asar', ''), 'bin'); -let manifestJsonFilePath = path.join(currentBinPath, manifestJsonFileName); +if (app.commandLine.hasSwitch('electronforcedport')) { + electronforcedport = app.commandLine.getSwitchValue('electronforcedport'); +} -// if watch is enabled lets change the path -if (watchable) { - currentBinPath = path.join(__dirname, '../../'); // go to project directory - manifestJsonFilePath = path.join(currentBinPath, manifestJsonFileName); +// Custom startup hook: look for custom_main.js and invoke its onStartup(host) if present. +// If the hook returns false, abort Electron startup. +try { + const fs = require('fs'); + const customMainPath = path.join(__dirname, 'custom_main.js'); + if (fs.existsSync(customMainPath)) { + const customMain = require(customMainPath); + if (customMain && typeof customMain.onStartup === 'function') { + const continueStartup = customMain.onStartup(globalThis); + if (continueStartup === false) { + ////console.log('custom_main.js onStartup returned false. Exiting Electron host.'); + // Ensure the app terminates immediately before further initialization. + // Use app.exit to allow Electron to perform its shutdown, fallback to process.exit. + try { app.exit(0); } catch (err) { process.exit(0); } + } + } else { + console.warn('custom_main.js found but no onStartup function exported.'); + } + } +} catch (err) { + console.error('Error while executing custom_main.js:', err); +} + +const currentPath = __dirname; +let currentBinPath = path.join(currentPath.replace('app.asar', ''), 'bin'); +let manifestJsonFilePath = path.join(currentPath, manifestJsonFileName); + +// if running unpackedelectron, lets change the path +if (unpackedelectron || unpackeddotnet) { + console.log('unpackedelectron! dir: ' + currentPath); + + manifestJsonFilePath = path.join(currentPath, manifestJsonFileName); + currentBinPath = path.join(currentPath, '../'); // go to project directory } // handle macOS events for opening the app with a file, etc app.on('will-finish-launching', () => { - app.on('open-file', (evt, file) => { - evt.preventDefault(); - launchFile = file; - }); - app.on('open-url', (evt, url) => { - evt.preventDefault(); - launchUrl = url; - }); + app.on('open-file', (evt, file) => { + evt.preventDefault(); + launchFile = file; + }); + app.on('open-url', (evt, url) => { + evt.preventDefault(); + launchUrl = url; + }); }); const manifestJsonFile = require(manifestJsonFilePath); -if (manifestJsonFile.singleInstance || manifestJsonFile.aspCoreBackendPort) { - const mainInstance = app.requestSingleInstanceLock(); - app.on('second-instance', (events, args = []) => { - args.forEach((parameter) => { - const words = parameter.split('='); - if (words.length > 1) { - app.commandLine.appendSwitch(words[0].replace('--', ''), words[1]); - } else { - app.commandLine.appendSwitch(words[0].replace('--', '')); - } +if (manifestJsonFile.singleInstance) { + const mainInstance = app.requestSingleInstanceLock(); + app.on('second-instance', (events, args = []) => { + args.forEach((parameter) => { + const words = parameter.split('='); + + if (words.length > 1) { + app.commandLine.appendSwitch(words[0].replace('--', ''), words[1]); + } else { + app.commandLine.appendSwitch(words[0].replace('--', '')); + } + }); + + const windows = BrowserWindow.getAllWindows(); + if (windows.length) { + if (windows[0].isMinimized()) { + windows[0].restore(); + } + windows[0].focus(); + } }); - const windows = BrowserWindow.getAllWindows(); - if (windows.length) { - if (windows[0].isMinimized()) { - windows[0].restore(); - } - windows[0].focus(); + if (!mainInstance) { + app.quit(); } - }); - - if (!mainInstance) { - app.quit(); - } } -app.on('ready', () => { - // Fix ERR_UNKNOWN_URL_SCHEME using file protocol - // https://github.com/electron/electron/issues/23757 - protocol.registerFileProtocol('file', (request, callback) => { - const pathname = request.url.replace('file:///', ''); - callback(pathname); - }); +// Collect user supplied command line args (excluding those handled by Electron host itself) +function getForwardedArgs() { + const skipSwitches = new Set(['unpackedelectron', 'unpackeddotnet', 'dotnetpacked']); + return process.argv.slice(2).filter(arg => { + if (!arg) return false; + // Node/Electron internal or we already process them + if (arg.startsWith('--manifest')) return false; + const cleaned = arg.replace(/^--/, '').replace(/^\//, ''); + if (skipSwitches.has(cleaned)) return false; + if (cleaned.startsWith('inspect')) return false; + if (cleaned.startsWith('remote-debugging-port')) return false; + // We add /electronPort ourselves later + if (cleaned.startsWith('electronPort=')) return false; + if (cleaned.startsWith('electronWebPort=')) return false; + return true; + }); +} - if (isSplashScreenEnabled()) { - startSplashScreen(); - } - // Added default port as configurable for port restricted environments. - let defaultElectronPort = 8000; - if (manifestJsonFile.electronPort) { - defaultElectronPort = manifestJsonFile.electronPort; - } - // hostname needs to be localhost, otherwise Windows Firewall will be triggered. - portscanner.findAPortNotInUse(defaultElectronPort, 65535, 'localhost', function (error, port) { - console.log('Electron Socket IO Port: ' + port); - startSocketApiBridge(port); - }); +const forwardedArgs = getForwardedArgs(); + +app.on('ready', () => { + // Fix ERR_UNKNOWN_URL_SCHEME using file protocol + // https://github.com/electron/electron/issues/23757 + ////protocol.registerFileProtocol('file', (request, callback) => { + //// const pathname = request.url.replace('file:///', ''); + //// callback(pathname); + ////}); + + if (isSplashScreenEnabled()) { + startSplashScreen(); + } + + if (electronforcedport) { + console.log('Electron Socket IO (forced) Port: ' + electronforcedport); + startSocketApiBridge(electronforcedport); + return; + } + + // Added default port as configurable for port restricted environments. + let defaultElectronPort = 8000; + if (manifestJsonFile.electronPort) { + defaultElectronPort = manifestJsonFile.electronPort; + } + + // hostname needs to be localhost, otherwise Windows Firewall will be triggered. + portscanner.findAPortNotInUse(defaultElectronPort, 65535, 'localhost', function (error, port) { + console.log('Electron Socket IO Port: ' + port); + startSocketApiBridge(port); + }); }); app.on('quit', async (event, exitCode) => { - await server.close(); - apiProcess.kill(); + try { + server.close(); + server.closeAllConnections(); + } catch (e) { + console.error(e); + } + + try { + apiProcess?.kill(); + } catch (e) { + console.error(e); + } + + try { + if (io && typeof io.close === 'function') { + io.close(); + } + } catch (e) { + console.error(e); + } }); function isSplashScreenEnabled() { - if (manifestJsonFile.hasOwnProperty('splashscreen')) { - if (manifestJsonFile.splashscreen.hasOwnProperty('imageFile')) { - return Boolean(manifestJsonFile.splashscreen.imageFile); + if (manifestJsonFile.hasOwnProperty('splashscreen')) { + if (manifestJsonFile.splashscreen.hasOwnProperty('imageFile')) { + return Boolean(manifestJsonFile.splashscreen.imageFile); + } } - } - return false; + return false; } function startSplashScreen() { - let imageFile = path.join(currentBinPath, manifestJsonFile.splashscreen.imageFile); - const startWindow = (width, height) => { - splashScreen = new BrowserWindow({ - width: width, - height: height, - transparent: true, - center: true, - frame: false, - closable: false, - resizable: false, - skipTaskbar: true, - alwaysOnTop: true, - show: true, - }); - splashScreen.setIgnoreMouseEvents(true); + let imageFile = path.join(currentPath, manifestJsonFile.splashscreen.imageFile); + const startWindow = (width, height) => { + splashScreen = new BrowserWindow({ + width: width, + height: height, + transparent: true, + center: true, + frame: false, + closable: false, + resizable: false, + skipTaskbar: true, + alwaysOnTop: true, + show: true, + }); + splashScreen.setIgnoreMouseEvents(true); - app.once('browser-window-created', () => { - splashScreen.destroy(); - }); + app.once('browser-window-created', () => { + splashScreen.destroy(); + }); - const loadSplashscreenUrl = path.join(__dirname, 'splashscreen', 'index.html') + '?imgPath=' + imageFile; - splashScreen.loadURL('file://' + loadSplashscreenUrl); - splashScreen.once('closed', () => { - splashScreen = null; - }); - } + const loadSplashscreenUrl = path.join(currentPath, 'splashscreen', 'index.html') + '?imgPath=' + imageFile; + splashScreen.loadURL('file://' + loadSplashscreenUrl); + splashScreen.once('closed', () => { + splashScreen = null; + }); + }; - if (manifestJsonFile.splashscreen.width && manifestJsonFile.splashscreen.height) { - startWindow(manifestJsonFile.splashscreen.width, manifestJsonFile.splashscreen.height); - return; - } - - imageSize(imageFile, (error, dimensions) => { - if (error) { - console.log(`load splashscreen error:`); - console.error(error); - - throw new Error(error.message); + if (manifestJsonFile.splashscreen.width && manifestJsonFile.splashscreen.height) { + startWindow(manifestJsonFile.splashscreen.width, manifestJsonFile.splashscreen.height); + return; } - startWindow(dimensions.width, dimensions.height) - }); + imageSize(imageFile, (error, dimensions) => { + if (error) { + console.log(`load splashscreen error:`); + console.error(error); + + throw new Error(error.message); + } + + startWindow(dimensions.width, dimensions.height); + }); } function startSocketApiBridge(port) { - // instead of 'require('socket.io')(port);' we need to use this workaround - // otherwise the Windows Firewall will be triggered - server = require('http').createServer(); - const { Server } = require('socket.io'); - io = new Server({ - pingTimeout: 60000, // in ms, default is 5000 - pingInterval: 10000, // in ms, default is 25000 - }); - io.attach(server); + // instead of 'require('socket.io')(port);' we need to use this workaround + // otherwise the Windows Firewall will be triggered + console.log('Electron Socket: starting...'); + server = require('http').createServer(); + const { Server } = require('socket.io'); + io = new Server({ + pingTimeout: 60000, // in ms, default is 5000 + pingInterval: 10000, // in ms, default is 25000 + }); + io.attach(server); - server.listen(port, 'localhost'); - server.on('listening', function () { - console.log('Electron Socket started on port %s at %s', server.address().port, server.address().address); - // Now that socket connection is established, we can guarantee port will not be open for portscanner - if (watchable) { - startAspCoreBackendWithWatch(port); - } else { - startAspCoreBackend(port); - } - }); - - // prototype - app['mainWindowURL'] = ''; - app['mainWindow'] = null; - - // @ts-ignore - io.on('connection', (socket) => { - socket.on('disconnect', function (reason) { - console.log('Got disconnect! Reason: ' + reason); - try { - if (hostHook) { - const hostHookScriptFilePath = path.join(__dirname, 'ElectronHostHook', 'index.js'); - delete require.cache[require.resolve(hostHookScriptFilePath)]; - hostHook = undefined; + server.listen(port, 'localhost'); + server.on('listening', function () { + console.log('Electron Socket: listening on port %s at %s', server.address().port, server.address().address); + // Now that socket connection is established, we can guarantee port will not be open for portscanner + if (unpackedelectron) { + startAspCoreBackendUnpackaged(port); + } else if (!unpackeddotnet && !dotnetpacked) { + startAspCoreBackend(port); } - } catch (error) { - console.error(error.message); - } }); - if (global['electronsocket'] === undefined) { - global['electronsocket'] = socket; - global['electronsocket'].setMaxListeners(0); - } + // prototype + app['mainWindowURL'] = ''; + app['mainWindow'] = null; - console.log( - 'ASP.NET Core Application connected...', - 'global.electronsocket', - global['electronsocket'].id, - new Date() - ); + // @ts-ignore + io.on('connection', (socket) => { + console.log('Electron Socket: connected!'); + socket.on('disconnect', function (reason) { + console.log('Got disconnect! Reason: ' + reason); + try { + ////console.log('requireCache'); + ////console.log(require.cache['electron-host-hook']); - if (appApi === undefined) appApi = require('./api/app')(socket, app); - if (browserWindows === undefined) browserWindows = require('./api/browserWindows')(socket, app); - if (commandLine === undefined) commandLine = require('./api/commandLine')(socket, app); - if (autoUpdater === undefined) autoUpdater = require('./api/autoUpdater')(socket); - if (ipc === undefined) ipc = require('./api/ipc')(socket); - if (menu === undefined) menu = require('./api/menu')(socket); - if (dialogApi === undefined) dialogApi = require('./api/dialog')(socket); - if (notification === undefined) notification = require('./api/notification')(socket); - if (tray === undefined) tray = require('./api/tray')(socket); - if (webContents === undefined) webContents = require('./api/webContents')(socket); - if (globalShortcut === undefined) globalShortcut = require('./api/globalShortcut')(socket); - if (shellApi === undefined) shellApi = require('./api/shell')(socket); - if (screen === undefined) screen = require('./api/screen')(socket); - if (clipboard === undefined) clipboard = require('./api/clipboard')(socket); - if (browserView === undefined) browserView = require('./api/browserView').browserViewApi(socket); - if (powerMonitor === undefined) powerMonitor = require('./api/powerMonitor')(socket); - if (nativeTheme === undefined) nativeTheme = require('./api/nativeTheme')(socket); - if (dock === undefined) dock = require('./api/dock')(socket); + if (hostHook) { + const hostHookScriptFilePath = path.join(currentPath, 'ElectronHostHook', 'index.js'); + delete require.cache[require.resolve(hostHookScriptFilePath)]; + hostHook = undefined; + } + } catch (err) { + console.error(err.message); + } + }); - socket.on('register-app-open-file-event', (id) => { - global['electronsocket'] = socket; + if (global['electronsocket'] === undefined) { + global['electronsocket'] = socket; + global['electronsocket'].setMaxListeners(0); + } - app.on('open-file', (event, file) => { - event.preventDefault(); + console.log('Electron Socket: loading components...'); - global['electronsocket'].emit('app-open-file' + id, file); - }); + if (appApi === undefined) appApi = require('./api/app')(socket, app); + if (browserWindows === undefined) browserWindows = require('./api/browserWindows')(socket, app); + if (commandLine === undefined) commandLine = require('./api/commandLine')(socket, app); + if (autoUpdater === undefined) autoUpdater = require('./api/autoUpdater')(socket); + if (ipc === undefined) ipc = require('./api/ipc')(socket); + if (menu === undefined) menu = require('./api/menu')(socket); + if (dialogApi === undefined) dialogApi = require('./api/dialog')(socket); + if (notification === undefined) notification = require('./api/notification')(socket); + if (tray === undefined) tray = require('./api/tray')(socket); + if (webContents === undefined) webContents = require('./api/webContents')(socket); + if (globalShortcut === undefined) globalShortcut = require('./api/globalShortcut')(socket); + if (shellApi === undefined) shellApi = require('./api/shell')(socket); + if (screen === undefined) screen = require('./api/screen')(socket); + if (clipboard === undefined) clipboard = require('./api/clipboard')(socket); + if (browserView === undefined) browserView = require('./api/browserView').browserViewApi(socket); + if (powerMonitor === undefined) powerMonitor = require('./api/powerMonitor')(socket); + if (nativeTheme === undefined) nativeTheme = require('./api/nativeTheme')(socket); + if (dock === undefined) dock = require('./api/dock')(socket); - if (launchFile) { - global['electronsocket'].emit('app-open-file' + id, launchFile); - } + socket.on('register-app-open-file-event', (id) => { + global['electronsocket'] = socket; + + app.on('open-file', (event, file) => { + event.preventDefault(); + + global['electronsocket'].emit('app-open-file' + id, file); + }); + + if (launchFile) { + global['electronsocket'].emit('app-open-file' + id, launchFile); + } + }); + + socket.on('register-app-open-url-event', (id) => { + global['electronsocket'] = socket; + + app.on('open-url', (event, url) => { + event.preventDefault(); + + global['electronsocket'].emit('app-open-url' + id, url); + }); + + if (launchUrl) { + global['electronsocket'].emit('app-open-url' + id, launchUrl); + } + }); + + try { + if (hostHook === undefined) { + hostHook = new HookService(socket, app); + hostHook.onHostReady(); + } + } catch (error) { + console.error(error.message); + } + console.log('Electron Socket: startup complete.'); }); - - socket.on('register-app-open-url-event', (id) => { - global['electronsocket'] = socket; - - app.on('open-url', (event, url) => { - event.preventDefault(); - - global['electronsocket'].emit('app-open-url' + id, url); - }); - - if (launchUrl) { - global['electronsocket'].emit('app-open-url' + id, launchUrl); - } - }); - - try { - const hostHookScriptFilePath = path.join(__dirname, 'ElectronHostHook', 'index.js'); - - if (isModuleAvailable(hostHookScriptFilePath) && hostHook === undefined) { - const { HookService } = require(hostHookScriptFilePath); - hostHook = new HookService(socket, app); - hostHook.onHostReady(); - } - } catch (error) { - console.error(error.message); - } - }); -} - -function isModuleAvailable(name) { - try { - require.resolve(name); - return true; - } catch (e) {} - return false; } function startAspCoreBackend(electronPort) { - if (manifestJsonFile.aspCoreBackendPort) { - startBackend(manifestJsonFile.aspCoreBackendPort); - } else { - // hostname needs to be localhost, otherwise Windows Firewall will be triggered. - portscanner.findAPortNotInUse(electronPort + 1, 65535, 'localhost', function (error, electronWebPort) { - startBackend(electronWebPort); - }); - } + startBackend(); - function startBackend(aspCoreBackendPort) { - console.log('ASP.NET Core Port: ' + aspCoreBackendPort); - loadURL = `http://localhost:${aspCoreBackendPort}`; - const parameters = [ - getEnvironmentParameter(), - `/electronPort=${electronPort}`, - `/electronWebPort=${aspCoreBackendPort}`, - ]; - let binaryFile = manifestJsonFile.executable; + function startBackend() { + loadURL = `about:blank`; + const envParam = getEnvironmentParameter(); + const parameters = [ + envParam, + `/electronPort=${electronPort}`, + `/electronPID=${process.pid}`, + // forward user supplied args (avoid duplicate environment) + ...forwardedArgs.filter(a => !(envParam && a.startsWith('--environment='))) + ].filter(p => p); + let binaryFile = manifestJsonFile.executable; - const os = require('os'); - if (os.platform() === 'win32') { - binaryFile = binaryFile + '.exe'; + const os = require('os'); + if (os.platform() === 'win32') { + binaryFile = binaryFile + '.exe'; + } + + let binFilePath = path.join(currentBinPath, binaryFile); + var options = { cwd: currentBinPath }; + console.log('Starting backend with parameters:', parameters.join(' ')); + apiProcess = cProcess(binFilePath, parameters, options); + + apiProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data.toString()}`); + }); } - - let binFilePath = path.join(currentBinPath, binaryFile); - var options = { cwd: currentBinPath }; - apiProcess = cProcess(binFilePath, parameters, options); - - apiProcess.stdout.on('data', (data) => { - console.log(`stdout: ${data.toString()}`); - }); - } } -function startAspCoreBackendWithWatch(electronPort) { - if (manifestJsonFile.aspCoreBackendPort) { - startBackend(manifestJsonFile.aspCoreBackendPort); - } else { - // hostname needs to be localhost, otherwise Windows Firewall will be triggered. - portscanner.findAPortNotInUse(electronPort + 1, 65535, 'localhost', function (error, electronWebPort) { - startBackend(electronWebPort); - }); - } +function startAspCoreBackendUnpackaged(electronPort) { + startBackend(); - function startBackend(aspCoreBackendPort) { - console.log('ASP.NET Core Watch Port: ' + aspCoreBackendPort); - loadURL = `http://localhost:${aspCoreBackendPort}`; - const parameters = [ - 'watch', - 'run', - getEnvironmentParameter(), - `/electronPort=${electronPort}`, - `/electronWebPort=${aspCoreBackendPort}`, - ]; + function startBackend() { + loadURL = `about:blank`; + const envParam = getEnvironmentParameter(); + const parameters = [ + envParam, + `/electronPort=${electronPort}`, + `/electronPID=${process.pid}`, + ...forwardedArgs.filter(a => !(envParam && a.startsWith('--environment='))) + ].filter(p => p); + let binaryFile = manifestJsonFile.executable; - var options = { - cwd: currentBinPath, - env: process.env, - }; - apiProcess = cProcess('dotnet', parameters, options); + const os = require('os'); + if (os.platform() === 'win32') { + binaryFile = binaryFile + '.exe'; + } - apiProcess.stdout.on('data', (data) => { - console.log(`stdout: ${data.toString()}`); - }); - } + let binFilePath = path.join(currentBinPath, binaryFile); + var options = { cwd: currentBinPath }; + console.log('Starting backend (unpackaged) with parameters:', parameters.join(' ')); + apiProcess = cProcess(binFilePath, parameters, options); + + apiProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data.toString()}`); + }); + } } function getEnvironmentParameter() { - if (manifestJsonFile.environment) { - return '--environment=' + manifestJsonFile.environment; - } + if (manifestJsonFile.environment) { + return '--environment=' + manifestJsonFile.environment; + } - return ''; + return ''; } From 77efea50ed2ed8d22ed82d4d4525d6a9220f0e0c Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 14:03:13 +0200 Subject: [PATCH 18/66] ElectronNET.Host: Fix TS compilation error in tray.js This probably stems from newer ts definition or the newer ts version. It errored because it cannot determine the event name and so it considers argv[] as empty. --- src/ElectronNET.Host/api/tray.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ElectronNET.Host/api/tray.ts b/src/ElectronNET.Host/api/tray.ts index af9f6cf..55a0f12 100644 --- a/src/ElectronNET.Host/api/tray.ts +++ b/src/ElectronNET.Host/api/tray.ts @@ -114,7 +114,7 @@ export = (socket: Socket) => { socket.on('register-tray-on-event', (eventName, listenerName) => { if (tray.value){ - tray.value.on(eventName, (...args) => { + tray.value.on(eventName, (...args: any[]) => { if (args.length > 1) { electronSocket.emit(listenerName, args[1]); } else { @@ -126,7 +126,7 @@ export = (socket: Socket) => { socket.on('register-tray-once-event', (eventName, listenerName) => { if (tray.value){ - tray.value.once(eventName, (...args) => { + tray.value.once(eventName, (...args: any[]) => { if (args.length > 1) { electronSocket.emit(listenerName, args[1]); } else { From 1e93d91e66078425ccfc1ff39299e9cc40586472 Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 14:04:36 +0200 Subject: [PATCH 19/66] ElectronNET.Host: Fix TS compilation error webcontents.ts The crashed event has been removed in Electron 29 - just let TS ignore that error --- src/ElectronNET.Host/api/webContents.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/ElectronNET.Host/api/webContents.ts b/src/ElectronNET.Host/api/webContents.ts index ae0be75..fc4df48 100644 --- a/src/ElectronNET.Host/api/webContents.ts +++ b/src/ElectronNET.Host/api/webContents.ts @@ -6,10 +6,13 @@ let electronSocket; export = (socket: Socket) => { electronSocket = socket; + + // The crashed event has been removed in Electron 29 socket.on('register-webContents-crashed', (id) => { const browserWindow = getWindowById(id); browserWindow.webContents.removeAllListeners('crashed'); + // @ts-expect-error No overload matches this call browserWindow.webContents.on('crashed', (event, killed) => { electronSocket.emit('webContents-crashed' + id, killed); }); @@ -246,6 +249,19 @@ export = (socket: Socket) => { browserWindow.webContents.session.setUserAgent(userAgent, acceptLanguages); }); + socket.on('register-webContents-session-webRequest-onBeforeRequest', (id, filter) => { + const browserWindow = getWindowById(id); + const session = browserWindow.webContents.session; + + session.webRequest.onBeforeRequest(filter, (details, callback) => { + socket.emit(`webContents-session-webRequest-onBeforeRequest${id}`, details); + // Listen for a response from C# to continue the request + electronSocket.once(`webContents-session-webRequest-onBeforeRequest-response${id}`, (response) => { + callback(response); + }); + }); + }); + socket.on('register-webContents-session-cookies-changed', (id) => { const browserWindow = getWindowById(id); From e4ce61c9655a2dbc2222fd914f65bf4eb7306000 Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 14:05:33 +0200 Subject: [PATCH 20/66] ElectronNET.Host: Update compiled files --- .../ElectronHostHook/connector.js.map | 2 +- .../ElectronHostHook/index.js.map | 2 +- src/ElectronNET.Host/api/app.js.map | 2 +- src/ElectronNET.Host/api/app.ts | 9 +++++---- src/ElectronNET.Host/api/browserView.js.map | 2 +- src/ElectronNET.Host/api/browserWindows.js.map | 2 +- src/ElectronNET.Host/api/clipboard.js.map | 2 +- src/ElectronNET.Host/api/dialog.js.map | 2 +- src/ElectronNET.Host/api/dock.js.map | 2 +- src/ElectronNET.Host/api/globalShortcut.js.map | 2 +- src/ElectronNET.Host/api/ipc.js.map | 2 +- src/ElectronNET.Host/api/menu.js.map | 2 +- src/ElectronNET.Host/api/notification.js.map | 2 +- src/ElectronNET.Host/api/shell.js.map | 2 +- src/ElectronNET.Host/api/tray.js.map | 2 +- src/ElectronNET.Host/api/webContents.js | 18 +++++++++++++----- src/ElectronNET.Host/api/webContents.js.map | 2 +- 17 files changed, 33 insertions(+), 24 deletions(-) diff --git a/src/ElectronNET.Host/ElectronHostHook/connector.js.map b/src/ElectronNET.Host/ElectronHostHook/connector.js.map index be84b69..dfa3a4f 100644 --- a/src/ElectronNET.Host/ElectronHostHook/connector.js.map +++ b/src/ElectronNET.Host/ElectronHostHook/connector.js.map @@ -1 +1 @@ -{"version":3,"file":"connector.js","sourceRoot":"","sources":["connector.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAS;IAClB,YAAoB,MAAuB;IACvC,aAAa;IACN,GAAiB;QAFR,WAAM,GAAN,MAAM,CAAiB;QAEhC,QAAG,GAAH,GAAG,CAAc;IAAI,CAAC;IAEjC,EAAE,CAAC,GAAW,EAAE,cAAwB;QACpC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;YACnC,MAAM,EAAE,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;YAE9B,IAAI;gBACA,cAAc,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;oBAC7B,IAAI,IAAI,EAAE;wBACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;qBACjD;gBACL,CAAC,CAAC,CAAC;aACN;YAAC,OAAO,KAAK,EAAE;gBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,QAAQ,EAAE,EAAE,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAC;aACtE;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AApBD,8BAoBC"} \ No newline at end of file +{"version":3,"file":"connector.js","sourceRoot":"","sources":["connector.ts"],"names":[],"mappings":";;;AAEA,MAAa,SAAS;IAClB,YAAoB,MAAc;IAC9B,aAAa;IACN,GAAiB;QAFR,WAAM,GAAN,MAAM,CAAQ;QAEvB,QAAG,GAAH,GAAG,CAAc;IAAI,CAAC;IAEjC,EAAE,CAAC,GAAW,EAAE,cAAwB;QACpC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;YACnC,MAAM,EAAE,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;YAE9B,IAAI,CAAC;gBACD,cAAc,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;oBAC7B,IAAI,IAAI,EAAE,CAAC;wBACP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;oBAClD,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,QAAQ,EAAE,EAAE,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAC;YACvE,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AApBD,8BAoBC"} \ No newline at end of file diff --git a/src/ElectronNET.Host/ElectronHostHook/index.js.map b/src/ElectronNET.Host/ElectronHostHook/index.js.map index 868dd90..ff24e73 100644 --- a/src/ElectronNET.Host/ElectronHostHook/index.js.map +++ b/src/ElectronNET.Host/ElectronHostHook/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAEA,2CAAwC;AAExC,MAAa,WAAY,SAAQ,qBAAS;IACtC,YAAY,MAAuB,EAAS,GAAiB;QACzD,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QADqB,QAAG,GAAH,GAAG,CAAc;IAE7D,CAAC;IAED,WAAW;QACP,8CAA8C;IAClD,CAAC;CACJ;AARD,kCAQC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAGA,2CAAwC;AAExC,MAAa,WAAY,SAAQ,qBAAS;IACtC,YAAY,MAAc,EAAS,GAAiB;QAChD,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QADY,QAAG,GAAH,GAAG,CAAc;IAEpD,CAAC;IAED,WAAW;QACP,8CAA8C;IAClD,CAAC;CACJ;AARD,kCAQC"} \ No newline at end of file diff --git a/src/ElectronNET.Host/api/app.js.map b/src/ElectronNET.Host/api/app.js.map index 25e6697..c3fc58d 100644 --- a/src/ElectronNET.Host/api/app.js.map +++ b/src/ElectronNET.Host/api/app.js.map @@ -1 +1 @@ -{"version":3,"file":"app.js","sourceRoot":"","sources":["app.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"app.js","sourceRoot":"","sources":["app.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/ElectronNET.Host/api/app.ts b/src/ElectronNET.Host/api/app.ts index 1f04f9f..69cb8d9 100644 --- a/src/ElectronNET.Host/api/app.ts +++ b/src/ElectronNET.Host/api/app.ts @@ -1,3 +1,4 @@ +import { RelaunchOptions, LoginItemSettingsOptions, Settings, AboutPanelOptionsOptions } from "electron"; import { Socket } from "net"; let isQuitWindowAllClosed = true, electronSocket; @@ -83,7 +84,7 @@ export = (socket: Socket, app: Electron.App) => { }); socket.on('appRelaunch', (options) => { - app.relaunch(options); + app.relaunch(options as RelaunchOptions); }); socket.on('appFocus', (options) => { @@ -257,12 +258,12 @@ export = (socket: Socket, app: Electron.App) => { }); socket.on('appGetLoginItemSettings', (options) => { - const loginItemSettings = app.getLoginItemSettings(options); + const loginItemSettings = app.getLoginItemSettings(options as LoginItemSettingsOptions); electronSocket.emit('appGetLoginItemSettingsCompleted', loginItemSettings); }); socket.on('appSetLoginItemSettings', (settings) => { - app.setLoginItemSettings(settings); + app.setLoginItemSettings(settings as Settings); }); socket.on('appIsAccessibilitySupportEnabled', () => { @@ -279,7 +280,7 @@ export = (socket: Socket, app: Electron.App) => { }); socket.on('appSetAboutPanelOptions', (options) => { - app.setAboutPanelOptions(options); + app.setAboutPanelOptions(options as AboutPanelOptionsOptions); }); socket.on('appGetUserAgentFallback', () => { diff --git a/src/ElectronNET.Host/api/browserView.js.map b/src/ElectronNET.Host/api/browserView.js.map index 596b53a..a61597d 100644 --- a/src/ElectronNET.Host/api/browserView.js.map +++ b/src/ElectronNET.Host/api/browserView.js.map @@ -1 +1 @@ -{"version":3,"file":"browserView.js","sourceRoot":"","sources":["browserView.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"browserView.js","sourceRoot":"","sources":["browserView.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/ElectronNET.Host/api/browserWindows.js.map b/src/ElectronNET.Host/api/browserWindows.js.map index ea5862a..85b223c 100644 --- a/src/ElectronNET.Host/api/browserWindows.js.map +++ b/src/ElectronNET.Host/api/browserWindows.js.map @@ -1 +1 @@ -{"version":3,"file":"browserWindows.js","sourceRoot":"","sources":["browserWindows.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"browserWindows.js","sourceRoot":"","sources":["browserWindows.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/ElectronNET.Host/api/clipboard.js.map b/src/ElectronNET.Host/api/clipboard.js.map index c45e255..d3922dd 100644 --- a/src/ElectronNET.Host/api/clipboard.js.map +++ b/src/ElectronNET.Host/api/clipboard.js.map @@ -1 +1 @@ -{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["clipboard.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["clipboard.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/ElectronNET.Host/api/dialog.js.map b/src/ElectronNET.Host/api/dialog.js.map index 185e223..90aacb6 100644 --- a/src/ElectronNET.Host/api/dialog.js.map +++ b/src/ElectronNET.Host/api/dialog.js.map @@ -1 +1 @@ -{"version":3,"file":"dialog.js","sourceRoot":"","sources":["dialog.ts"],"names":[],"mappings":";AACA,uCAAiD;AACjD,IAAI,cAAsB,CAAC;AAE3B,iBAAS,CAAC,MAAc,EAAE,EAAE;IACxB,cAAc,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC/D,IAAI,IAAI,IAAI,aAAa,EAAE;YACvB,MAAM,MAAM,GAAG,wBAAa,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAEtD,MAAM,qBAAqB,GAAG,MAAM,iBAAM,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC3E,cAAc,CAAC,IAAI,CAAC,wBAAwB,GAAG,IAAI,EAAE,CAAC,qBAAqB,CAAC,QAAQ,EAAE,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC;SACjI;aAAM;YACH,MAAM,EAAE,GAAG,IAAI,IAAI,OAAO,CAAC;YAC3B,MAAM,qBAAqB,GAAG,MAAM,iBAAM,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YAEzE,cAAc,CAAC,IAAI,CAAC,wBAAwB,GAAG,EAAE,EAAE,CAAC,qBAAqB,CAAC,QAAQ,EAAE,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC;SAC/H;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC/D,MAAM,MAAM,GAAG,wBAAa,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACtD,MAAM,qBAAqB,GAAG,MAAM,iBAAM,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE3E,cAAc,CAAC,IAAI,CAAC,wBAAwB,GAAG,IAAI,EAAE,qBAAqB,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAChG,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC/D,MAAM,MAAM,GAAG,wBAAa,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACtD,MAAM,qBAAqB,GAAG,MAAM,iBAAM,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE3E,cAAc,CAAC,IAAI,CAAC,wBAAwB,GAAG,IAAI,EAAE,qBAAqB,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACzC,iBAAM,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,4BAA4B,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC3E,MAAM,MAAM,GAAG,wBAAa,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACtD,MAAM,iBAAM,CAAC,0BAA0B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEzD,cAAc,CAAC,IAAI,CAAC,oCAAoC,GAAG,IAAI,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"dialog.js","sourceRoot":"","sources":["dialog.ts"],"names":[],"mappings":";AACA,uCAAiD;AACjD,IAAI,cAAsB,CAAC;AAE3B,iBAAS,CAAC,MAAc,EAAE,EAAE;IACxB,cAAc,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC/D,IAAI,IAAI,IAAI,aAAa,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,wBAAa,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAEtD,MAAM,qBAAqB,GAAG,MAAM,iBAAM,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC3E,cAAc,CAAC,IAAI,CAAC,wBAAwB,GAAG,IAAI,EAAE,CAAC,qBAAqB,CAAC,QAAQ,EAAE,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC;QAClI,CAAC;aAAM,CAAC;YACJ,MAAM,EAAE,GAAG,IAAI,IAAI,OAAO,CAAC;YAC3B,MAAM,qBAAqB,GAAG,MAAM,iBAAM,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YAEzE,cAAc,CAAC,IAAI,CAAC,wBAAwB,GAAG,EAAE,EAAE,CAAC,qBAAqB,CAAC,QAAQ,EAAE,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC;QAChI,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC/D,MAAM,MAAM,GAAG,wBAAa,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACtD,MAAM,qBAAqB,GAAG,MAAM,iBAAM,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE3E,cAAc,CAAC,IAAI,CAAC,wBAAwB,GAAG,IAAI,EAAE,qBAAqB,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAChG,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC/D,MAAM,MAAM,GAAG,wBAAa,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACtD,MAAM,qBAAqB,GAAG,MAAM,iBAAM,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE3E,cAAc,CAAC,IAAI,CAAC,wBAAwB,GAAG,IAAI,EAAE,qBAAqB,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACzC,iBAAM,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,4BAA4B,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC3E,MAAM,MAAM,GAAG,wBAAa,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACtD,MAAM,iBAAM,CAAC,0BAA0B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEzD,cAAc,CAAC,IAAI,CAAC,oCAAoC,GAAG,IAAI,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"} \ No newline at end of file diff --git a/src/ElectronNET.Host/api/dock.js.map b/src/ElectronNET.Host/api/dock.js.map index 449d44b..1d3f0eb 100644 --- a/src/ElectronNET.Host/api/dock.js.map +++ b/src/ElectronNET.Host/api/dock.js.map @@ -1 +1 @@ -{"version":3,"file":"dock.js","sourceRoot":"","sources":["dock.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"dock.js","sourceRoot":"","sources":["dock.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/ElectronNET.Host/api/globalShortcut.js.map b/src/ElectronNET.Host/api/globalShortcut.js.map index bed5642..8a1b0b2 100644 --- a/src/ElectronNET.Host/api/globalShortcut.js.map +++ b/src/ElectronNET.Host/api/globalShortcut.js.map @@ -1 +1 @@ -{"version":3,"file":"globalShortcut.js","sourceRoot":"","sources":["globalShortcut.ts"],"names":[],"mappings":";AAAA,uCAA0C;AAE1C,IAAI,cAAc,CAAC;AAEnB,iBAAS,CAAC,MAAc,EAAE,EAAE;IACxB,cAAc,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,WAAW,EAAE,EAAE;QACjD,yBAAc,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;YACtC,cAAc,CAAC,IAAI,CAAC,wBAAwB,EAAE,WAAW,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,6BAA6B,EAAE,CAAC,WAAW,EAAE,EAAE;QACrD,MAAM,YAAY,GAAG,yBAAc,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAE9D,cAAc,CAAC,IAAI,CAAC,sCAAsC,EAAE,YAAY,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,2BAA2B,EAAE,CAAC,WAAW,EAAE,EAAE;QACnD,yBAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QAC3C,IAAI;YACA,yBAAc,CAAC,aAAa,EAAE,CAAC;SAClC;QAAC,OAAO,KAAK,EAAE,GAAG;IACvB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"globalShortcut.js","sourceRoot":"","sources":["globalShortcut.ts"],"names":[],"mappings":";AAAA,uCAA0C;AAE1C,IAAI,cAAc,CAAC;AAEnB,iBAAS,CAAC,MAAc,EAAE,EAAE;IACxB,cAAc,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,WAAW,EAAE,EAAE;QACjD,yBAAc,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;YACtC,cAAc,CAAC,IAAI,CAAC,wBAAwB,EAAE,WAAW,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,6BAA6B,EAAE,CAAC,WAAW,EAAE,EAAE;QACrD,MAAM,YAAY,GAAG,yBAAc,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAE9D,cAAc,CAAC,IAAI,CAAC,sCAAsC,EAAE,YAAY,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,2BAA2B,EAAE,CAAC,WAAW,EAAE,EAAE;QACnD,yBAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QAC3C,IAAI,CAAC;YACD,yBAAc,CAAC,aAAa,EAAE,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"} \ No newline at end of file diff --git a/src/ElectronNET.Host/api/ipc.js.map b/src/ElectronNET.Host/api/ipc.js.map index 2876296..e16f8eb 100644 --- a/src/ElectronNET.Host/api/ipc.js.map +++ b/src/ElectronNET.Host/api/ipc.js.map @@ -1 +1 @@ -{"version":3,"file":"ipc.js","sourceRoot":"","sources":["ipc.ts"],"names":[],"mappings":";AAAA,uCAA+D;AAE/D,IAAI,cAAc,CAAC;AAEnB,iBAAS,CAAC,MAAc,EAAE,EAAE;IACxB,cAAc,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,wBAAwB,EAAE,CAAC,OAAO,EAAE,EAAE;QAC5C,kBAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAChC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,4BAA4B,EAAE,CAAC,OAAO,EAAE,EAAE;QAChD,kBAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAChC,MAAM,CAAC,GAAQ,MAAM,CAAC;YACtB,CAAC,CAAC,kBAAkB,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;YACvC,MAAM,CAAC,EAAE,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;gBACnC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC;YAC/B,CAAC,CAAC,CAAC;YAEH,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,4BAA4B,EAAE,CAAC,OAAO,EAAE,EAAE;QAChD,kBAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAClC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,kCAAkC,EAAE,CAAC,OAAO,EAAE,EAAE;QACtD,kBAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE;QAC/D,MAAM,MAAM,GAAG,wBAAa,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAEtD,IAAI,MAAM,EAAE;YACR,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;SAC7C;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,8BAA8B,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE;QAC/D,MAAM,YAAY,GAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,CAAkB,CAAC;QAC7G,IAAI,IAAI,GAAgB,IAAI,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;gBAC9B,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBACvB,MAAM;aACT;SACJ;QAED,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;SAC3C;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"ipc.js","sourceRoot":"","sources":["ipc.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/ElectronNET.Host/api/menu.js.map b/src/ElectronNET.Host/api/menu.js.map index 1ad421e..a818070 100644 --- a/src/ElectronNET.Host/api/menu.js.map +++ b/src/ElectronNET.Host/api/menu.js.map @@ -1 +1 @@ -{"version":3,"file":"menu.js","sourceRoot":"","sources":["menu.ts"],"names":[],"mappings":";AACA,uCAA+C;AAC/C,MAAM,gBAAgB,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAG,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC;AACzF,IAAI,cAAc,CAAC;AAEnB,iBAAS,CAAC,MAAc,EAAE,EAAE;IACxB,cAAc,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC,eAAe,EAAE,SAAS,EAAE,EAAE;QAC5D,MAAM,IAAI,GAAG,eAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAE/C,gCAAgC,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE;YAC3E,cAAc,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,eAAe,KAAK,eAAe,CAAC,CAAC;QAEzG,MAAM,eAAe,GAAG;YACpB,IAAI,EAAE,IAAI;YACV,eAAe,EAAE,eAAe;SACnC,CAAC;QAEF,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACd,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SAC1C;aAAM;YACH,gBAAgB,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC;SAC7C;IACL,CAAC,CAAC,CAAC;IAEH,SAAS,gCAAgC,CAAC,SAAS,EAAE,eAAe,EAAE,QAAQ;QAC1E,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACvB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/C,gCAAgC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;aACnF;YAED,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE;gBACzB,IAAI,CAAC,KAAK,GAAG,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;aAC9D;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,EAAE,CAAC,uBAAuB,EAAE,CAAC,eAAe,EAAE,EAAE;QACnD,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACzB,IAAI,CAAC,CAAC,eAAe,KAAK,eAAe,EAAE;gBACvC,MAAM,aAAa,GAAG,wBAAa,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;gBAC5D,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;aAC/B;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,SAAS,EAAE,EAAE;QAC/C,MAAM,IAAI,GAAG,eAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAE/C,yBAAyB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE;YACzC,cAAc,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,eAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,SAAS,yBAAyB,CAAC,SAAS,EAAE,QAAQ;QAClD,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACvB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/C,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;aAC3D;YAED,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE;gBACzB,IAAI,CAAC,KAAK,GAAG,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;aAC7C;QACL,CAAC,CAAC,CAAC;IACP,CAAC;AACL,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"menu.js","sourceRoot":"","sources":["menu.ts"],"names":[],"mappings":";AACA,uCAA+C;AAC/C,MAAM,gBAAgB,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAG,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC;AACzF,IAAI,cAAc,CAAC;AAEnB,iBAAS,CAAC,MAAc,EAAE,EAAE;IACxB,cAAc,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC,eAAe,EAAE,SAAS,EAAE,EAAE;QAC5D,MAAM,IAAI,GAAG,eAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAE/C,gCAAgC,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE;YAC3E,cAAc,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,eAAe,KAAK,eAAe,CAAC,CAAC;QAEzG,MAAM,eAAe,GAAG;YACpB,IAAI,EAAE,IAAI;YACV,eAAe,EAAE,eAAe;SACnC,CAAC;QAEF,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACJ,gBAAgB,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC;QAC9C,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,SAAS,gCAAgC,CAAC,SAAS,EAAE,eAAe,EAAE,QAAQ;QAC1E,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACvB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChD,gCAAgC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;YACpF,CAAC;YAED,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;gBAC1B,IAAI,CAAC,KAAK,GAAG,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,EAAE,CAAC,uBAAuB,EAAE,CAAC,eAAe,EAAE,EAAE;QACnD,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACzB,IAAI,CAAC,CAAC,eAAe,KAAK,eAAe,EAAE,CAAC;gBACxC,MAAM,aAAa,GAAG,wBAAa,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;gBAC5D,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAChC,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,SAAS,EAAE,EAAE;QAC/C,MAAM,IAAI,GAAG,eAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAE/C,yBAAyB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE;YACzC,cAAc,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,eAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,SAAS,yBAAyB,CAAC,SAAS,EAAE,QAAQ;QAClD,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACvB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChD,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC5D,CAAC;YAED,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;gBAC1B,IAAI,CAAC,KAAK,GAAG,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;AACL,CAAC,CAAC"} \ No newline at end of file diff --git a/src/ElectronNET.Host/api/notification.js.map b/src/ElectronNET.Host/api/notification.js.map index f6e58d4..e67c9d1 100644 --- a/src/ElectronNET.Host/api/notification.js.map +++ b/src/ElectronNET.Host/api/notification.js.map @@ -1 +1 @@ -{"version":3,"file":"notification.js","sourceRoot":"","sources":["notification.ts"],"names":[],"mappings":";AACA,uCAAwC;AACxC,MAAM,aAAa,GAA4B,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,CAA4B,CAAC;AACpI,IAAI,cAAc,CAAC;AAEnB,iBAAS,CAAC,MAAc,EAAE,EAAE;IACxB,cAAc,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,OAAO,EAAE,EAAE;QACxC,MAAM,YAAY,GAAG,IAAI,uBAAY,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,IAAI,OAAO,CAAC,MAAM,EAAE;YAChB,SAAS,GAAG,IAAI,CAAC;YACjB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;gBACzB,cAAc,CAAC,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;SACN;QAED,IAAI,OAAO,CAAC,OAAO,EAAE;YACjB,SAAS,GAAG,IAAI,CAAC;YACjB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC1B,cAAc,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;SACN;QAED,IAAI,OAAO,CAAC,OAAO,EAAE;YACjB,SAAS,GAAG,IAAI,CAAC;YACjB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC1B,cAAc,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;SACN;QAED,IAAI,OAAO,CAAC,OAAO,EAAE;YACjB,SAAS,GAAG,IAAI,CAAC;YACjB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACtC,cAAc,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;YAC5E,CAAC,CAAC,CAAC;SACN;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE;YAClB,SAAS,GAAG,IAAI,CAAC;YACjB,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACvC,cAAc,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;YAC9E,CAAC,CAAC,CAAC;SACN;QAED,IAAI,SAAS,EAAE;YACX,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACpC;QAED,YAAY,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACtC,MAAM,WAAW,GAAG,uBAAY,CAAC,WAAW,CAAC;QAC7C,cAAc,CAAC,IAAI,CAAC,iCAAiC,EAAE,WAAW,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"notification.js","sourceRoot":"","sources":["notification.ts"],"names":[],"mappings":";AACA,uCAAwC;AACxC,MAAM,aAAa,GAA4B,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,CAA4B,CAAC;AACpI,IAAI,cAAc,CAAC;AAEnB,iBAAS,CAAC,MAAc,EAAE,EAAE;IACxB,cAAc,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,OAAO,EAAE,EAAE;QACxC,MAAM,YAAY,GAAG,IAAI,uBAAY,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACjB,SAAS,GAAG,IAAI,CAAC;YACjB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;gBACzB,cAAc,CAAC,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAClB,SAAS,GAAG,IAAI,CAAC;YACjB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC1B,cAAc,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAClB,SAAS,GAAG,IAAI,CAAC;YACjB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC1B,cAAc,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAClB,SAAS,GAAG,IAAI,CAAC;YACjB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACtC,cAAc,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;YAC5E,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnB,SAAS,GAAG,IAAI,CAAC;YACjB,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACvC,cAAc,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;YAC9E,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACZ,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrC,CAAC;QAED,YAAY,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACtC,MAAM,WAAW,GAAG,uBAAY,CAAC,WAAW,CAAC;QAC7C,cAAc,CAAC,IAAI,CAAC,iCAAiC,EAAE,WAAW,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"} \ No newline at end of file diff --git a/src/ElectronNET.Host/api/shell.js.map b/src/ElectronNET.Host/api/shell.js.map index 83dbfa2..0b9e3cc 100644 --- a/src/ElectronNET.Host/api/shell.js.map +++ b/src/ElectronNET.Host/api/shell.js.map @@ -1 +1 @@ -{"version":3,"file":"shell.js","sourceRoot":"","sources":["shell.ts"],"names":[],"mappings":";AACA,uCAAiC;AACjC,IAAI,cAAc,CAAC;AAEnB,iBAAS,CAAC,MAAc,EAAE,EAAE;IACxB,cAAc,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,wBAAwB,EAAE,CAAC,QAAQ,EAAE,EAAE;QAC7C,gBAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAEjC,cAAc,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACvC,MAAM,YAAY,GAAG,MAAM,gBAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEhD,cAAc,CAAC,IAAI,CAAC,yBAAyB,EAAE,YAAY,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;QACnD,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,OAAO,EAAE;YACT,MAAM,gBAAK,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBAC7C,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC;YACvB,CAAC,CAAC,CAAC;SACN;aAAM;YACH,MAAM,gBAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBACtC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC;YACvB,CAAC,CAAC,CAAC;SACN;QAED,cAAc,CAAC,IAAI,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE;QAC1D,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,IAAI;YACA,MAAM,gBAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAChC,OAAO,GAAG,IAAI,CAAC;SAClB;QAAC,OAAO,KAAK,EAAE;YACZ,OAAO,GAAG,KAAK,CAAC;SACnB;QAED,cAAc,CAAC,IAAI,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;QACzB,gBAAK,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;QACtE,MAAM,OAAO,GAAG,gBAAK,CAAC,iBAAiB,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAE1E,cAAc,CAAC,IAAI,CAAC,kCAAkC,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,wBAAwB,EAAE,CAAC,YAAY,EAAE,EAAE;QACjD,MAAM,eAAe,GAAG,gBAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAE7D,cAAc,CAAC,IAAI,CAAC,iCAAiC,EAAE,eAAe,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"shell.js","sourceRoot":"","sources":["shell.ts"],"names":[],"mappings":";AACA,uCAAiC;AACjC,IAAI,cAAc,CAAC;AAEnB,iBAAS,CAAC,MAAc,EAAE,EAAE;IACxB,cAAc,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,wBAAwB,EAAE,CAAC,QAAQ,EAAE,EAAE;QAC7C,gBAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAEjC,cAAc,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACvC,MAAM,YAAY,GAAG,MAAM,gBAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEhD,cAAc,CAAC,IAAI,CAAC,yBAAyB,EAAE,YAAY,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;QACnD,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,OAAO,EAAE,CAAC;YACV,MAAM,gBAAK,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBAC7C,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC;YACvB,CAAC,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACJ,MAAM,gBAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBACtC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC;YACvB,CAAC,CAAC,CAAC;QACP,CAAC;QAED,cAAc,CAAC,IAAI,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE;QAC1D,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,IAAI,CAAC;YACD,MAAM,gBAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAChC,OAAO,GAAG,IAAI,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,GAAG,KAAK,CAAC;QACpB,CAAC;QAED,cAAc,CAAC,IAAI,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;QACzB,gBAAK,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;QACtE,MAAM,OAAO,GAAG,gBAAK,CAAC,iBAAiB,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAE1E,cAAc,CAAC,IAAI,CAAC,kCAAkC,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,wBAAwB,EAAE,CAAC,YAAY,EAAE,EAAE;QACjD,MAAM,eAAe,GAAG,gBAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAE7D,cAAc,CAAC,IAAI,CAAC,iCAAiC,EAAE,eAAe,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"} \ No newline at end of file diff --git a/src/ElectronNET.Host/api/tray.js.map b/src/ElectronNET.Host/api/tray.js.map index 6a84a7a..8328f0d 100644 --- a/src/ElectronNET.Host/api/tray.js.map +++ b/src/ElectronNET.Host/api/tray.js.map @@ -1 +1 @@ -{"version":3,"file":"tray.js","sourceRoot":"","sources":["tray.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tray.js","sourceRoot":"","sources":["tray.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/ElectronNET.Host/api/webContents.js b/src/ElectronNET.Host/api/webContents.js index 191cffc..edb0a6a 100644 --- a/src/ElectronNET.Host/api/webContents.js +++ b/src/ElectronNET.Host/api/webContents.js @@ -5,9 +5,11 @@ const fs = require('fs'); let electronSocket; module.exports = (socket) => { electronSocket = socket; + // The crashed event has been removed in Electron 29 socket.on('register-webContents-crashed', (id) => { const browserWindow = getWindowById(id); browserWindow.webContents.removeAllListeners('crashed'); + // @ts-expect-error No overload matches this call browserWindow.webContents.on('crashed', (event, killed) => { electronSocket.emit('webContents-crashed' + id, killed); }); @@ -63,16 +65,13 @@ module.exports = (socket) => { } }); }); - socket.on('register-webContents-domReady', (id) => { const browserWindow = getWindowById(id); - browserWindow.webContents.removeAllListeners('dom-ready'); browserWindow.webContents.on('dom-ready', () => { electronSocket.emit('webContents-domReady' + id); }); }); - socket.on('webContentsOpenDevTools', (id, options) => { if (options) { getWindowById(id).webContents.openDevTools(options); @@ -100,12 +99,10 @@ module.exports = (socket) => { } }); }); - socket.on('webContents-executeJavaScript', async (id, code, userGesture = false) => { const result = await getWindowById(id).webContents.executeJavaScript(code, userGesture); electronSocket.emit('webContents-executeJavaScript-completed', result); }); - socket.on('webContents-getUrl', function (id) { const browserWindow = getWindowById(id); electronSocket.emit('webContents-getUrl' + id, browserWindow.webContents.getURL()); @@ -197,6 +194,17 @@ module.exports = (socket) => { const browserWindow = getWindowById(id); browserWindow.webContents.session.setUserAgent(userAgent, acceptLanguages); }); + socket.on('register-webContents-session-webRequest-onBeforeRequest', (id, filter) => { + const browserWindow = getWindowById(id); + const session = browserWindow.webContents.session; + session.webRequest.onBeforeRequest(filter, (details, callback) => { + socket.emit(`webContents-session-webRequest-onBeforeRequest${id}`, details); + // Listen for a response from C# to continue the request + electronSocket.once(`webContents-session-webRequest-onBeforeRequest-response${id}`, (response) => { + callback(response); + }); + }); + }); socket.on('register-webContents-session-cookies-changed', (id) => { const browserWindow = getWindowById(id); browserWindow.webContents.session.cookies.removeAllListeners('changed'); diff --git a/src/ElectronNET.Host/api/webContents.js.map b/src/ElectronNET.Host/api/webContents.js.map index fa03b14..759d326 100644 --- a/src/ElectronNET.Host/api/webContents.js.map +++ b/src/ElectronNET.Host/api/webContents.js.map @@ -1 +1 @@ -{"version":3,"file":"webContents.js","sourceRoot":"","sources":["webContents.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"webContents.js","sourceRoot":"","sources":["webContents.ts"],"names":[],"mappings":"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"} \ No newline at end of file From feddf5f8f47e072b860d1812c1abf98d4e5bfccd Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 13:20:23 +0200 Subject: [PATCH 21/66] ElectronNET.API: Move API code to subfolder --- src/ElectronNET.API/{ => API}/App.cs | 37 +++-- src/ElectronNET.API/{ => API}/AutoUpdater.cs | 0 src/ElectronNET.API/{ => API}/BrowserView.cs | 0 .../{ => API}/BrowserWindow.cs | 0 src/ElectronNET.API/{ => API}/Clipboard.cs | 0 src/ElectronNET.API/{ => API}/CommandLine.cs | 0 src/ElectronNET.API/{ => API}/Dialog.cs | 6 +- src/ElectronNET.API/{ => API}/Dock.cs | 0 src/ElectronNET.API/{ => API}/Electron.cs | 0 .../{ => API}/Entities/AboutPanelOptions.cs | 0 .../Entities/AddRepresentationOptions.cs | 0 .../{ => API}/Entities/AppDetailsOptions.cs | 0 .../{ => API}/Entities/AutoResizeOptions.cs | 0 .../{ => API}/Entities/BitmapOptions.cs | 0 .../{ => API}/Entities/Blob.cs | 0 .../{ => API}/Entities/BlockMapDataHolder.cs | 0 .../Entities/BrowserViewConstructorOptions.cs | 0 .../Entities/BrowserWindowOptions.cs | 0 .../{ => API}/Entities/CPUUsage.cs | 0 .../{ => API}/Entities/Certificate.cs | 0 .../Entities/CertificatePrincipal.cs | 0 .../Entities/CertificateTrustDialogOptions.cs | 0 .../{ => API}/Entities/ChromeExtensionInfo.cs | 0 .../Entities/ClearStorageDataOptions.cs | 0 .../{ => API}/Entities/Cookie.cs | 0 .../{ => API}/Entities/CookieChangedCause.cs | 0 .../{ => API}/Entities/CookieDetails.cs | 0 .../{ => API}/Entities/CookieFilter.cs | 0 .../Entities/CreateFromBitmapOptions.cs | 0 .../Entities/CreateFromBufferOptions.cs | 0 .../CreateInterruptedDownloadOptions.cs | 0 .../{ => API}/Entities/Data.cs | 0 .../{ => API}/Entities/DefaultFontFamily.cs | 0 .../{ => API}/Entities/DevToolsMode.cs | 0 .../{ => API}/Entities/Display.cs | 0 .../Entities/DisplayBalloonOptions.cs | 0 .../{ => API}/Entities/DockBounceType.cs | 0 .../Entities/EnableNetworkEmulationOptions.cs | 0 .../{ => API}/Entities/Extension.cs | 0 .../{ => API}/Entities/FileFilter.cs | 0 .../{ => API}/Entities/FileIconOptions.cs | 0 .../{ => API}/Entities/FileIconSize.cs | 0 .../{ => API}/Entities/FocusOptions.cs | 0 .../{ => API}/Entities/GPUFeatureStatus.cs | 0 .../{ => API}/Entities/IPostData.cs | 0 .../Entities/ImportCertificateOptions.cs | 0 .../{ => API}/Entities/InputEvent.cs | 3 +- .../{ => API}/Entities/InputEventType.cs | 0 .../{ => API}/Entities/JumpListCategory.cs | 0 .../Entities/JumpListCategoryType.cs | 0 .../{ => API}/Entities/JumpListItem.cs | 0 .../{ => API}/Entities/JumpListItemType.cs | 0 .../{ => API}/Entities/JumpListSettings.cs | 0 .../{ => API}/Entities/LoadURLOptions.cs | 0 .../{ => API}/Entities/LoginItemSettings.cs | 0 .../Entities/LoginItemSettingsOptions.cs | 0 .../{ => API}/Entities/LoginSettings.cs | 0 .../{ => API}/Entities/Margins.cs | 0 .../{ => API}/Entities/MemoryInfo.cs | 0 .../{ => API}/Entities/MenuItem.cs | 0 .../{ => API}/Entities/MenuRole.cs | 0 .../{ => API}/Entities/MenuType.cs | 0 .../{ => API}/Entities/MessageBoxOptions.cs | 0 .../{ => API}/Entities/MessageBoxResult.cs | 0 .../{ => API}/Entities/MessageBoxType.cs | 0 .../{ => API}/Entities/ModifierType.cs | 0 .../{ => API}/Entities/NativeImage.cs | 0 .../Entities/NativeImageJsonConverter.cs | 0 .../{ => API}/Entities/NotificationAction.cs | 0 .../{ => API}/Entities/NotificationOptions.cs | 0 .../{ => API}/Entities/OnDidFailLoadInfo.cs | 0 .../{ => API}/Entities/OnDidNavigateInfo.cs | 0 .../{ => API}/Entities/OnTopLevel.cs | 0 .../{ => API}/Entities/OpenDevToolsOptions.cs | 0 .../{ => API}/Entities/OpenDialogOptions.cs | 0 .../{ => API}/Entities/OpenDialogProperty.cs | 0 .../{ => API}/Entities/OpenExternalOptions.cs | 0 .../{ => API}/Entities/PathName.cs | 0 .../{ => API}/Entities/Point.cs | 0 .../{ => API}/Entities/PrintOptions.cs | 0 .../{ => API}/Entities/PrintToPDFOptions.cs | 0 .../{ => API}/Entities/PrinterInfo.cs | 0 .../{ => API}/Entities/ProcessMetric.cs | 0 .../{ => API}/Entities/ProgressBarMode.cs | 0 .../{ => API}/Entities/ProgressBarOptions.cs | 0 .../{ => API}/Entities/ProgressInfo.cs | 0 .../{ => API}/Entities/ProxyConfig.cs | 0 .../{ => API}/Entities/ReadBookmark.cs | 0 .../{ => API}/Entities/Rectangle.cs | 0 .../{ => API}/Entities/RelaunchOptions.cs | 0 .../{ => API}/Entities/ReleaseNoteInfo.cs | 0 .../{ => API}/Entities/RemovePassword.cs | 0 .../{ => API}/Entities/ResizeOptions.cs | 0 .../{ => API}/Entities/SaveDialogOptions.cs | 0 .../{ => API}/Entities/Scheme.cs | 0 .../{ => API}/Entities/SemVer.cs | 0 .../{ => API}/Entities/ShortcutDetails.cs | 0 .../Entities/ShortcutLinkOperation.cs | 0 .../{ => API}/Entities/Size.cs | 0 .../{ => API}/Entities/ThemeSourceMode.cs | 0 .../{ => API}/Entities/ThumbarButton.cs | 0 .../{ => API}/Entities/ThumbarButtonFlag.cs | 0 .../{ => API}/Entities/TitleBarStyle.cs | 0 .../{ => API}/Entities/ToBitmapOptions.cs | 0 .../{ => API}/Entities/ToDataUrlOptions.cs | 0 .../{ => API}/Entities/ToPNGOptions.cs | 0 .../{ => API}/Entities/TrayClickEventArgs.cs | 0 .../Entities/UpdateCancellationToken.cs | 0 .../{ => API}/Entities/UpdateCheckResult.cs | 0 .../{ => API}/Entities/UpdateFileInfo.cs | 0 .../{ => API}/Entities/UpdateInfo.cs | 0 .../{ => API}/Entities/UploadFile.cs | 0 .../{ => API}/Entities/UploadRawData.cs | 0 .../{ => API}/Entities/UserTask.cs | 0 .../{ => API}/Entities/Vibrancy.cs | 0 .../{ => API}/Entities/WebPreferences.cs | 0 .../{ => API}/Extensions/EnumExtensions.cs | 0 .../Extensions/MenuItemExtensions.cs | 0 .../Extensions/ThumbarButtonExtensions.cs | 0 .../{ => API}/GlobalShortcut.cs | 0 src/ElectronNET.API/{ => API}/HostHook.cs | 0 .../{ => API}/HybridSupport.cs | 2 +- src/ElectronNET.API/{ => API}/IpcMain.cs | 2 +- src/ElectronNET.API/{ => API}/Menu.cs | 0 src/ElectronNET.API/{ => API}/NativeTheme.cs | 0 src/ElectronNET.API/{ => API}/Notification.cs | 0 src/ElectronNET.API/{ => API}/PowerMonitor.cs | 0 .../{ => API}/QuitEventArgs.cs | 0 src/ElectronNET.API/{ => API}/Screen.cs | 0 src/ElectronNET.API/{ => API}/Session.cs | 3 + src/ElectronNET.API/{ => API}/Shell.cs | 0 src/ElectronNET.API/{ => API}/Tray.cs | 26 +-- src/ElectronNET.API/{ => API}/WebContents.cs | 0 .../{ => API}/WindowManager.cs | 16 +- src/ElectronNET.API/BridgeConnector.cs | 33 ---- src/ElectronNET.API/BridgeSettings.cs | 24 --- src/ElectronNET.API/Cookies.cs | 154 ------------------ src/ElectronNET.API/Events.cs | 88 ---------- src/ElectronNET.API/GlobalUsings.cs | 3 - src/ElectronNET.API/LifetimeServiceHost.cs | 41 ----- .../ServiceCollectionExtensions.cs | 33 ---- src/ElectronNET.API/SocketIOFacade.cs | 93 ----------- .../WebHostBuilderExtensions.cs | 58 ------- src/ElectronNET.API/devCleanup.cmd | 1 - src/ElectronNET.API/devCleanup.sh | 1 - 145 files changed, 52 insertions(+), 572 deletions(-) rename src/ElectronNET.API/{ => API}/App.cs (97%) rename src/ElectronNET.API/{ => API}/AutoUpdater.cs (100%) rename src/ElectronNET.API/{ => API}/BrowserView.cs (100%) rename src/ElectronNET.API/{ => API}/BrowserWindow.cs (100%) rename src/ElectronNET.API/{ => API}/Clipboard.cs (100%) rename src/ElectronNET.API/{ => API}/CommandLine.cs (100%) rename src/ElectronNET.API/{ => API}/Dialog.cs (96%) rename src/ElectronNET.API/{ => API}/Dock.cs (100%) rename src/ElectronNET.API/{ => API}/Electron.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/AboutPanelOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/AddRepresentationOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/AppDetailsOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/AutoResizeOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/BitmapOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/Blob.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/BlockMapDataHolder.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/BrowserViewConstructorOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/BrowserWindowOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/CPUUsage.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/Certificate.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/CertificatePrincipal.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/CertificateTrustDialogOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/ChromeExtensionInfo.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/ClearStorageDataOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/Cookie.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/CookieChangedCause.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/CookieDetails.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/CookieFilter.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/CreateFromBitmapOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/CreateFromBufferOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/CreateInterruptedDownloadOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/Data.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/DefaultFontFamily.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/DevToolsMode.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/Display.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/DisplayBalloonOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/DockBounceType.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/EnableNetworkEmulationOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/Extension.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/FileFilter.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/FileIconOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/FileIconSize.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/FocusOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/GPUFeatureStatus.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/IPostData.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/ImportCertificateOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/InputEvent.cs (98%) rename src/ElectronNET.API/{ => API}/Entities/InputEventType.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/JumpListCategory.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/JumpListCategoryType.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/JumpListItem.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/JumpListItemType.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/JumpListSettings.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/LoadURLOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/LoginItemSettings.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/LoginItemSettingsOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/LoginSettings.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/Margins.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/MemoryInfo.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/MenuItem.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/MenuRole.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/MenuType.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/MessageBoxOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/MessageBoxResult.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/MessageBoxType.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/ModifierType.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/NativeImage.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/NativeImageJsonConverter.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/NotificationAction.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/NotificationOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/OnDidFailLoadInfo.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/OnDidNavigateInfo.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/OnTopLevel.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/OpenDevToolsOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/OpenDialogOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/OpenDialogProperty.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/OpenExternalOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/PathName.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/Point.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/PrintOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/PrintToPDFOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/PrinterInfo.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/ProcessMetric.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/ProgressBarMode.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/ProgressBarOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/ProgressInfo.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/ProxyConfig.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/ReadBookmark.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/Rectangle.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/RelaunchOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/ReleaseNoteInfo.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/RemovePassword.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/ResizeOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/SaveDialogOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/Scheme.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/SemVer.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/ShortcutDetails.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/ShortcutLinkOperation.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/Size.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/ThemeSourceMode.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/ThumbarButton.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/ThumbarButtonFlag.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/TitleBarStyle.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/ToBitmapOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/ToDataUrlOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/ToPNGOptions.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/TrayClickEventArgs.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/UpdateCancellationToken.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/UpdateCheckResult.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/UpdateFileInfo.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/UpdateInfo.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/UploadFile.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/UploadRawData.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/UserTask.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/Vibrancy.cs (100%) rename src/ElectronNET.API/{ => API}/Entities/WebPreferences.cs (100%) rename src/ElectronNET.API/{ => API}/Extensions/EnumExtensions.cs (100%) rename src/ElectronNET.API/{ => API}/Extensions/MenuItemExtensions.cs (100%) rename src/ElectronNET.API/{ => API}/Extensions/ThumbarButtonExtensions.cs (100%) rename src/ElectronNET.API/{ => API}/GlobalShortcut.cs (100%) rename src/ElectronNET.API/{ => API}/HostHook.cs (100%) rename src/ElectronNET.API/{ => API}/HybridSupport.cs (86%) rename src/ElectronNET.API/{ => API}/IpcMain.cs (99%) rename src/ElectronNET.API/{ => API}/Menu.cs (100%) rename src/ElectronNET.API/{ => API}/NativeTheme.cs (100%) rename src/ElectronNET.API/{ => API}/Notification.cs (100%) rename src/ElectronNET.API/{ => API}/PowerMonitor.cs (100%) rename src/ElectronNET.API/{ => API}/QuitEventArgs.cs (100%) rename src/ElectronNET.API/{ => API}/Screen.cs (100%) rename src/ElectronNET.API/{ => API}/Session.cs (99%) rename src/ElectronNET.API/{ => API}/Shell.cs (100%) rename src/ElectronNET.API/{ => API}/Tray.cs (95%) rename src/ElectronNET.API/{ => API}/WebContents.cs (100%) rename src/ElectronNET.API/{ => API}/WindowManager.cs (92%) delete mode 100644 src/ElectronNET.API/BridgeConnector.cs delete mode 100644 src/ElectronNET.API/BridgeSettings.cs delete mode 100644 src/ElectronNET.API/Cookies.cs delete mode 100644 src/ElectronNET.API/Events.cs delete mode 100644 src/ElectronNET.API/GlobalUsings.cs delete mode 100644 src/ElectronNET.API/LifetimeServiceHost.cs delete mode 100644 src/ElectronNET.API/ServiceCollectionExtensions.cs delete mode 100644 src/ElectronNET.API/SocketIOFacade.cs delete mode 100644 src/ElectronNET.API/WebHostBuilderExtensions.cs delete mode 100644 src/ElectronNET.API/devCleanup.cmd delete mode 100644 src/ElectronNET.API/devCleanup.sh diff --git a/src/ElectronNET.API/App.cs b/src/ElectronNET.API/API/App.cs similarity index 97% rename from src/ElectronNET.API/App.cs rename to src/ElectronNET.API/API/App.cs index 20e1541..088ed84 100644 --- a/src/ElectronNET.API/App.cs +++ b/src/ElectronNET.API/API/App.cs @@ -70,7 +70,7 @@ namespace ElectronNET.API { BridgeConnector.Socket.On("app-before-quit" + GetHashCode(), async () => { - await _beforeQuit(new QuitEventArgs()); + await this._beforeQuit(new QuitEventArgs()).ConfigureAwait(false); if (_preventQuit) { @@ -84,7 +84,7 @@ namespace ElectronNET.API } else if (_willQuit != null) { - await _willQuit(new QuitEventArgs()); + await this._willQuit(new QuitEventArgs()).ConfigureAwait(false); if (_preventQuit) { @@ -98,14 +98,14 @@ namespace ElectronNET.API } else { - await _quitting(); + await this._quitting().ConfigureAwait(false); Exit(); } } } else if (_quitting != null) { - await _quitting(); + await this._quitting().ConfigureAwait(false); Exit(); } } @@ -142,7 +142,7 @@ namespace ElectronNET.API { BridgeConnector.Socket.On("app-will-quit" + GetHashCode(), async () => { - await _willQuit(new QuitEventArgs()); + await this._willQuit(new QuitEventArgs()).ConfigureAwait(false); if (_preventQuit) { @@ -156,7 +156,7 @@ namespace ElectronNET.API } else { - await _quitting(); + await this._quitting().ConfigureAwait(false); Exit(); } } @@ -192,7 +192,7 @@ namespace ElectronNET.API { if(_willQuit == null) { - await _quitting(); + await this._quitting().ConfigureAwait(false); Exit(); } }); @@ -567,6 +567,11 @@ namespace ElectronNET.API BridgeConnector.Socket.Emit("appExit", exitCode); } + public void DisposeSocket() + { + BridgeConnector.Socket.DisposeSocket(); + } + /// /// Relaunches the app when current instance exits. By default the new instance will use the same working directory /// and command line arguments with current instance. @@ -816,7 +821,7 @@ namespace ElectronNET.API /// Whether the call succeeded. public async Task SetAsDefaultProtocolClientAsync(string protocol, CancellationToken cancellationToken = default) { - return await SetAsDefaultProtocolClientAsync(protocol, null, null, cancellationToken); + return await this.SetAsDefaultProtocolClientAsync(protocol, null, null, cancellationToken).ConfigureAwait(false); } /// @@ -847,7 +852,7 @@ namespace ElectronNET.API /// Whether the call succeeded. public async Task SetAsDefaultProtocolClientAsync(string protocol, string path, CancellationToken cancellationToken = default) { - return await SetAsDefaultProtocolClientAsync(protocol, path, null, cancellationToken); + return await this.SetAsDefaultProtocolClientAsync(protocol, path, null, cancellationToken).ConfigureAwait(false); } /// @@ -906,7 +911,7 @@ namespace ElectronNET.API /// Whether the call succeeded. public async Task RemoveAsDefaultProtocolClientAsync(string protocol, CancellationToken cancellationToken = default) { - return await RemoveAsDefaultProtocolClientAsync(protocol, null, null, cancellationToken); + return await this.RemoveAsDefaultProtocolClientAsync(protocol, null, null, cancellationToken).ConfigureAwait(false); } /// @@ -919,7 +924,7 @@ namespace ElectronNET.API /// Whether the call succeeded. public async Task RemoveAsDefaultProtocolClientAsync(string protocol, string path, CancellationToken cancellationToken = default) { - return await RemoveAsDefaultProtocolClientAsync(protocol, path, null, cancellationToken); + return await this.RemoveAsDefaultProtocolClientAsync(protocol, path, null, cancellationToken).ConfigureAwait(false); } /// @@ -966,7 +971,7 @@ namespace ElectronNET.API /// Whether the current executable is the default handler for a protocol (aka URI scheme). public async Task IsDefaultProtocolClientAsync(string protocol, CancellationToken cancellationToken = default) { - return await IsDefaultProtocolClientAsync(protocol, null, null, cancellationToken); + return await this.IsDefaultProtocolClientAsync(protocol, null, null, cancellationToken).ConfigureAwait(false); } /// @@ -985,7 +990,7 @@ namespace ElectronNET.API /// Whether the current executable is the default handler for a protocol (aka URI scheme). public async Task IsDefaultProtocolClientAsync(string protocol, string path, CancellationToken cancellationToken = default) { - return await IsDefaultProtocolClientAsync(protocol, path, null, cancellationToken); + return await this.IsDefaultProtocolClientAsync(protocol, path, null, cancellationToken).ConfigureAwait(false); } /// @@ -1437,7 +1442,7 @@ namespace ElectronNET.API /// public async Task GetLoginItemSettingsAsync(CancellationToken cancellationToken = default) { - return await GetLoginItemSettingsAsync(null, cancellationToken); + return await this.GetLoginItemSettingsAsync(null, cancellationToken).ConfigureAwait(false); } /// @@ -1624,7 +1629,7 @@ namespace ElectronNET.API /// The event name /// The handler public async Task On(string eventName, Action action) - => await Events.Instance.On(ModuleName, eventName, action); + => await Events.Instance.On(ModuleName, eventName, action).ConfigureAwait(false); /// /// Subscribe to an unmapped event on the module once. /// @@ -1638,6 +1643,6 @@ namespace ElectronNET.API /// The event name /// The handler public async Task Once(string eventName, Action action) - => await Events.Instance.Once(ModuleName, eventName, action); + => await Events.Instance.Once(ModuleName, eventName, action).ConfigureAwait(false); } } diff --git a/src/ElectronNET.API/AutoUpdater.cs b/src/ElectronNET.API/API/AutoUpdater.cs similarity index 100% rename from src/ElectronNET.API/AutoUpdater.cs rename to src/ElectronNET.API/API/AutoUpdater.cs diff --git a/src/ElectronNET.API/BrowserView.cs b/src/ElectronNET.API/API/BrowserView.cs similarity index 100% rename from src/ElectronNET.API/BrowserView.cs rename to src/ElectronNET.API/API/BrowserView.cs diff --git a/src/ElectronNET.API/BrowserWindow.cs b/src/ElectronNET.API/API/BrowserWindow.cs similarity index 100% rename from src/ElectronNET.API/BrowserWindow.cs rename to src/ElectronNET.API/API/BrowserWindow.cs diff --git a/src/ElectronNET.API/Clipboard.cs b/src/ElectronNET.API/API/Clipboard.cs similarity index 100% rename from src/ElectronNET.API/Clipboard.cs rename to src/ElectronNET.API/API/Clipboard.cs diff --git a/src/ElectronNET.API/CommandLine.cs b/src/ElectronNET.API/API/CommandLine.cs similarity index 100% rename from src/ElectronNET.API/CommandLine.cs rename to src/ElectronNET.API/API/CommandLine.cs diff --git a/src/ElectronNET.API/Dialog.cs b/src/ElectronNET.API/API/Dialog.cs similarity index 96% rename from src/ElectronNET.API/Dialog.cs rename to src/ElectronNET.API/API/Dialog.cs index ddc7be5..f8cc413 100644 --- a/src/ElectronNET.API/Dialog.cs +++ b/src/ElectronNET.API/API/Dialog.cs @@ -103,7 +103,7 @@ namespace ElectronNET.API /// The API call will be asynchronous and the result will be passed via MessageBoxResult. public async Task ShowMessageBoxAsync(string message) { - return await ShowMessageBoxAsync(null, new MessageBoxOptions(message)); + return await this.ShowMessageBoxAsync(null, new MessageBoxOptions(message)).ConfigureAwait(false); } /// @@ -117,7 +117,7 @@ namespace ElectronNET.API /// The API call will be asynchronous and the result will be passed via MessageBoxResult. public async Task ShowMessageBoxAsync(MessageBoxOptions messageBoxOptions) { - return await ShowMessageBoxAsync(null, messageBoxOptions); + return await this.ShowMessageBoxAsync(null, messageBoxOptions).ConfigureAwait(false); } /// @@ -130,7 +130,7 @@ namespace ElectronNET.API /// The API call will be asynchronous and the result will be passed via MessageBoxResult. public async Task ShowMessageBoxAsync(BrowserWindow browserWindow, string message) { - return await ShowMessageBoxAsync(browserWindow, new MessageBoxOptions(message)); + return await this.ShowMessageBoxAsync(browserWindow, new MessageBoxOptions(message)).ConfigureAwait(false); } /// diff --git a/src/ElectronNET.API/Dock.cs b/src/ElectronNET.API/API/Dock.cs similarity index 100% rename from src/ElectronNET.API/Dock.cs rename to src/ElectronNET.API/API/Dock.cs diff --git a/src/ElectronNET.API/Electron.cs b/src/ElectronNET.API/API/Electron.cs similarity index 100% rename from src/ElectronNET.API/Electron.cs rename to src/ElectronNET.API/API/Electron.cs diff --git a/src/ElectronNET.API/Entities/AboutPanelOptions.cs b/src/ElectronNET.API/API/Entities/AboutPanelOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/AboutPanelOptions.cs rename to src/ElectronNET.API/API/Entities/AboutPanelOptions.cs diff --git a/src/ElectronNET.API/Entities/AddRepresentationOptions.cs b/src/ElectronNET.API/API/Entities/AddRepresentationOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/AddRepresentationOptions.cs rename to src/ElectronNET.API/API/Entities/AddRepresentationOptions.cs diff --git a/src/ElectronNET.API/Entities/AppDetailsOptions.cs b/src/ElectronNET.API/API/Entities/AppDetailsOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/AppDetailsOptions.cs rename to src/ElectronNET.API/API/Entities/AppDetailsOptions.cs diff --git a/src/ElectronNET.API/Entities/AutoResizeOptions.cs b/src/ElectronNET.API/API/Entities/AutoResizeOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/AutoResizeOptions.cs rename to src/ElectronNET.API/API/Entities/AutoResizeOptions.cs diff --git a/src/ElectronNET.API/Entities/BitmapOptions.cs b/src/ElectronNET.API/API/Entities/BitmapOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/BitmapOptions.cs rename to src/ElectronNET.API/API/Entities/BitmapOptions.cs diff --git a/src/ElectronNET.API/Entities/Blob.cs b/src/ElectronNET.API/API/Entities/Blob.cs similarity index 100% rename from src/ElectronNET.API/Entities/Blob.cs rename to src/ElectronNET.API/API/Entities/Blob.cs diff --git a/src/ElectronNET.API/Entities/BlockMapDataHolder.cs b/src/ElectronNET.API/API/Entities/BlockMapDataHolder.cs similarity index 100% rename from src/ElectronNET.API/Entities/BlockMapDataHolder.cs rename to src/ElectronNET.API/API/Entities/BlockMapDataHolder.cs diff --git a/src/ElectronNET.API/Entities/BrowserViewConstructorOptions.cs b/src/ElectronNET.API/API/Entities/BrowserViewConstructorOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/BrowserViewConstructorOptions.cs rename to src/ElectronNET.API/API/Entities/BrowserViewConstructorOptions.cs diff --git a/src/ElectronNET.API/Entities/BrowserWindowOptions.cs b/src/ElectronNET.API/API/Entities/BrowserWindowOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/BrowserWindowOptions.cs rename to src/ElectronNET.API/API/Entities/BrowserWindowOptions.cs diff --git a/src/ElectronNET.API/Entities/CPUUsage.cs b/src/ElectronNET.API/API/Entities/CPUUsage.cs similarity index 100% rename from src/ElectronNET.API/Entities/CPUUsage.cs rename to src/ElectronNET.API/API/Entities/CPUUsage.cs diff --git a/src/ElectronNET.API/Entities/Certificate.cs b/src/ElectronNET.API/API/Entities/Certificate.cs similarity index 100% rename from src/ElectronNET.API/Entities/Certificate.cs rename to src/ElectronNET.API/API/Entities/Certificate.cs diff --git a/src/ElectronNET.API/Entities/CertificatePrincipal.cs b/src/ElectronNET.API/API/Entities/CertificatePrincipal.cs similarity index 100% rename from src/ElectronNET.API/Entities/CertificatePrincipal.cs rename to src/ElectronNET.API/API/Entities/CertificatePrincipal.cs diff --git a/src/ElectronNET.API/Entities/CertificateTrustDialogOptions.cs b/src/ElectronNET.API/API/Entities/CertificateTrustDialogOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/CertificateTrustDialogOptions.cs rename to src/ElectronNET.API/API/Entities/CertificateTrustDialogOptions.cs diff --git a/src/ElectronNET.API/Entities/ChromeExtensionInfo.cs b/src/ElectronNET.API/API/Entities/ChromeExtensionInfo.cs similarity index 100% rename from src/ElectronNET.API/Entities/ChromeExtensionInfo.cs rename to src/ElectronNET.API/API/Entities/ChromeExtensionInfo.cs diff --git a/src/ElectronNET.API/Entities/ClearStorageDataOptions.cs b/src/ElectronNET.API/API/Entities/ClearStorageDataOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/ClearStorageDataOptions.cs rename to src/ElectronNET.API/API/Entities/ClearStorageDataOptions.cs diff --git a/src/ElectronNET.API/Entities/Cookie.cs b/src/ElectronNET.API/API/Entities/Cookie.cs similarity index 100% rename from src/ElectronNET.API/Entities/Cookie.cs rename to src/ElectronNET.API/API/Entities/Cookie.cs diff --git a/src/ElectronNET.API/Entities/CookieChangedCause.cs b/src/ElectronNET.API/API/Entities/CookieChangedCause.cs similarity index 100% rename from src/ElectronNET.API/Entities/CookieChangedCause.cs rename to src/ElectronNET.API/API/Entities/CookieChangedCause.cs diff --git a/src/ElectronNET.API/Entities/CookieDetails.cs b/src/ElectronNET.API/API/Entities/CookieDetails.cs similarity index 100% rename from src/ElectronNET.API/Entities/CookieDetails.cs rename to src/ElectronNET.API/API/Entities/CookieDetails.cs diff --git a/src/ElectronNET.API/Entities/CookieFilter.cs b/src/ElectronNET.API/API/Entities/CookieFilter.cs similarity index 100% rename from src/ElectronNET.API/Entities/CookieFilter.cs rename to src/ElectronNET.API/API/Entities/CookieFilter.cs diff --git a/src/ElectronNET.API/Entities/CreateFromBitmapOptions.cs b/src/ElectronNET.API/API/Entities/CreateFromBitmapOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/CreateFromBitmapOptions.cs rename to src/ElectronNET.API/API/Entities/CreateFromBitmapOptions.cs diff --git a/src/ElectronNET.API/Entities/CreateFromBufferOptions.cs b/src/ElectronNET.API/API/Entities/CreateFromBufferOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/CreateFromBufferOptions.cs rename to src/ElectronNET.API/API/Entities/CreateFromBufferOptions.cs diff --git a/src/ElectronNET.API/Entities/CreateInterruptedDownloadOptions.cs b/src/ElectronNET.API/API/Entities/CreateInterruptedDownloadOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/CreateInterruptedDownloadOptions.cs rename to src/ElectronNET.API/API/Entities/CreateInterruptedDownloadOptions.cs diff --git a/src/ElectronNET.API/Entities/Data.cs b/src/ElectronNET.API/API/Entities/Data.cs similarity index 100% rename from src/ElectronNET.API/Entities/Data.cs rename to src/ElectronNET.API/API/Entities/Data.cs diff --git a/src/ElectronNET.API/Entities/DefaultFontFamily.cs b/src/ElectronNET.API/API/Entities/DefaultFontFamily.cs similarity index 100% rename from src/ElectronNET.API/Entities/DefaultFontFamily.cs rename to src/ElectronNET.API/API/Entities/DefaultFontFamily.cs diff --git a/src/ElectronNET.API/Entities/DevToolsMode.cs b/src/ElectronNET.API/API/Entities/DevToolsMode.cs similarity index 100% rename from src/ElectronNET.API/Entities/DevToolsMode.cs rename to src/ElectronNET.API/API/Entities/DevToolsMode.cs diff --git a/src/ElectronNET.API/Entities/Display.cs b/src/ElectronNET.API/API/Entities/Display.cs similarity index 100% rename from src/ElectronNET.API/Entities/Display.cs rename to src/ElectronNET.API/API/Entities/Display.cs diff --git a/src/ElectronNET.API/Entities/DisplayBalloonOptions.cs b/src/ElectronNET.API/API/Entities/DisplayBalloonOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/DisplayBalloonOptions.cs rename to src/ElectronNET.API/API/Entities/DisplayBalloonOptions.cs diff --git a/src/ElectronNET.API/Entities/DockBounceType.cs b/src/ElectronNET.API/API/Entities/DockBounceType.cs similarity index 100% rename from src/ElectronNET.API/Entities/DockBounceType.cs rename to src/ElectronNET.API/API/Entities/DockBounceType.cs diff --git a/src/ElectronNET.API/Entities/EnableNetworkEmulationOptions.cs b/src/ElectronNET.API/API/Entities/EnableNetworkEmulationOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/EnableNetworkEmulationOptions.cs rename to src/ElectronNET.API/API/Entities/EnableNetworkEmulationOptions.cs diff --git a/src/ElectronNET.API/Entities/Extension.cs b/src/ElectronNET.API/API/Entities/Extension.cs similarity index 100% rename from src/ElectronNET.API/Entities/Extension.cs rename to src/ElectronNET.API/API/Entities/Extension.cs diff --git a/src/ElectronNET.API/Entities/FileFilter.cs b/src/ElectronNET.API/API/Entities/FileFilter.cs similarity index 100% rename from src/ElectronNET.API/Entities/FileFilter.cs rename to src/ElectronNET.API/API/Entities/FileFilter.cs diff --git a/src/ElectronNET.API/Entities/FileIconOptions.cs b/src/ElectronNET.API/API/Entities/FileIconOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/FileIconOptions.cs rename to src/ElectronNET.API/API/Entities/FileIconOptions.cs diff --git a/src/ElectronNET.API/Entities/FileIconSize.cs b/src/ElectronNET.API/API/Entities/FileIconSize.cs similarity index 100% rename from src/ElectronNET.API/Entities/FileIconSize.cs rename to src/ElectronNET.API/API/Entities/FileIconSize.cs diff --git a/src/ElectronNET.API/Entities/FocusOptions.cs b/src/ElectronNET.API/API/Entities/FocusOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/FocusOptions.cs rename to src/ElectronNET.API/API/Entities/FocusOptions.cs diff --git a/src/ElectronNET.API/Entities/GPUFeatureStatus.cs b/src/ElectronNET.API/API/Entities/GPUFeatureStatus.cs similarity index 100% rename from src/ElectronNET.API/Entities/GPUFeatureStatus.cs rename to src/ElectronNET.API/API/Entities/GPUFeatureStatus.cs diff --git a/src/ElectronNET.API/Entities/IPostData.cs b/src/ElectronNET.API/API/Entities/IPostData.cs similarity index 100% rename from src/ElectronNET.API/Entities/IPostData.cs rename to src/ElectronNET.API/API/Entities/IPostData.cs diff --git a/src/ElectronNET.API/Entities/ImportCertificateOptions.cs b/src/ElectronNET.API/API/Entities/ImportCertificateOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/ImportCertificateOptions.cs rename to src/ElectronNET.API/API/Entities/ImportCertificateOptions.cs diff --git a/src/ElectronNET.API/Entities/InputEvent.cs b/src/ElectronNET.API/API/Entities/InputEvent.cs similarity index 98% rename from src/ElectronNET.API/Entities/InputEvent.cs rename to src/ElectronNET.API/API/Entities/InputEvent.cs index 95f3d57..aa38542 100644 --- a/src/ElectronNET.API/Entities/InputEvent.cs +++ b/src/ElectronNET.API/API/Entities/InputEvent.cs @@ -1,10 +1,11 @@ using Newtonsoft.Json.Converters; using System.Collections.Generic; -using ElectronNET.API.Converter; using Newtonsoft.Json; namespace ElectronNET.API.Entities { + using ElectronNET.Converter; + /// /// /// diff --git a/src/ElectronNET.API/Entities/InputEventType.cs b/src/ElectronNET.API/API/Entities/InputEventType.cs similarity index 100% rename from src/ElectronNET.API/Entities/InputEventType.cs rename to src/ElectronNET.API/API/Entities/InputEventType.cs diff --git a/src/ElectronNET.API/Entities/JumpListCategory.cs b/src/ElectronNET.API/API/Entities/JumpListCategory.cs similarity index 100% rename from src/ElectronNET.API/Entities/JumpListCategory.cs rename to src/ElectronNET.API/API/Entities/JumpListCategory.cs diff --git a/src/ElectronNET.API/Entities/JumpListCategoryType.cs b/src/ElectronNET.API/API/Entities/JumpListCategoryType.cs similarity index 100% rename from src/ElectronNET.API/Entities/JumpListCategoryType.cs rename to src/ElectronNET.API/API/Entities/JumpListCategoryType.cs diff --git a/src/ElectronNET.API/Entities/JumpListItem.cs b/src/ElectronNET.API/API/Entities/JumpListItem.cs similarity index 100% rename from src/ElectronNET.API/Entities/JumpListItem.cs rename to src/ElectronNET.API/API/Entities/JumpListItem.cs diff --git a/src/ElectronNET.API/Entities/JumpListItemType.cs b/src/ElectronNET.API/API/Entities/JumpListItemType.cs similarity index 100% rename from src/ElectronNET.API/Entities/JumpListItemType.cs rename to src/ElectronNET.API/API/Entities/JumpListItemType.cs diff --git a/src/ElectronNET.API/Entities/JumpListSettings.cs b/src/ElectronNET.API/API/Entities/JumpListSettings.cs similarity index 100% rename from src/ElectronNET.API/Entities/JumpListSettings.cs rename to src/ElectronNET.API/API/Entities/JumpListSettings.cs diff --git a/src/ElectronNET.API/Entities/LoadURLOptions.cs b/src/ElectronNET.API/API/Entities/LoadURLOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/LoadURLOptions.cs rename to src/ElectronNET.API/API/Entities/LoadURLOptions.cs diff --git a/src/ElectronNET.API/Entities/LoginItemSettings.cs b/src/ElectronNET.API/API/Entities/LoginItemSettings.cs similarity index 100% rename from src/ElectronNET.API/Entities/LoginItemSettings.cs rename to src/ElectronNET.API/API/Entities/LoginItemSettings.cs diff --git a/src/ElectronNET.API/Entities/LoginItemSettingsOptions.cs b/src/ElectronNET.API/API/Entities/LoginItemSettingsOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/LoginItemSettingsOptions.cs rename to src/ElectronNET.API/API/Entities/LoginItemSettingsOptions.cs diff --git a/src/ElectronNET.API/Entities/LoginSettings.cs b/src/ElectronNET.API/API/Entities/LoginSettings.cs similarity index 100% rename from src/ElectronNET.API/Entities/LoginSettings.cs rename to src/ElectronNET.API/API/Entities/LoginSettings.cs diff --git a/src/ElectronNET.API/Entities/Margins.cs b/src/ElectronNET.API/API/Entities/Margins.cs similarity index 100% rename from src/ElectronNET.API/Entities/Margins.cs rename to src/ElectronNET.API/API/Entities/Margins.cs diff --git a/src/ElectronNET.API/Entities/MemoryInfo.cs b/src/ElectronNET.API/API/Entities/MemoryInfo.cs similarity index 100% rename from src/ElectronNET.API/Entities/MemoryInfo.cs rename to src/ElectronNET.API/API/Entities/MemoryInfo.cs diff --git a/src/ElectronNET.API/Entities/MenuItem.cs b/src/ElectronNET.API/API/Entities/MenuItem.cs similarity index 100% rename from src/ElectronNET.API/Entities/MenuItem.cs rename to src/ElectronNET.API/API/Entities/MenuItem.cs diff --git a/src/ElectronNET.API/Entities/MenuRole.cs b/src/ElectronNET.API/API/Entities/MenuRole.cs similarity index 100% rename from src/ElectronNET.API/Entities/MenuRole.cs rename to src/ElectronNET.API/API/Entities/MenuRole.cs diff --git a/src/ElectronNET.API/Entities/MenuType.cs b/src/ElectronNET.API/API/Entities/MenuType.cs similarity index 100% rename from src/ElectronNET.API/Entities/MenuType.cs rename to src/ElectronNET.API/API/Entities/MenuType.cs diff --git a/src/ElectronNET.API/Entities/MessageBoxOptions.cs b/src/ElectronNET.API/API/Entities/MessageBoxOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/MessageBoxOptions.cs rename to src/ElectronNET.API/API/Entities/MessageBoxOptions.cs diff --git a/src/ElectronNET.API/Entities/MessageBoxResult.cs b/src/ElectronNET.API/API/Entities/MessageBoxResult.cs similarity index 100% rename from src/ElectronNET.API/Entities/MessageBoxResult.cs rename to src/ElectronNET.API/API/Entities/MessageBoxResult.cs diff --git a/src/ElectronNET.API/Entities/MessageBoxType.cs b/src/ElectronNET.API/API/Entities/MessageBoxType.cs similarity index 100% rename from src/ElectronNET.API/Entities/MessageBoxType.cs rename to src/ElectronNET.API/API/Entities/MessageBoxType.cs diff --git a/src/ElectronNET.API/Entities/ModifierType.cs b/src/ElectronNET.API/API/Entities/ModifierType.cs similarity index 100% rename from src/ElectronNET.API/Entities/ModifierType.cs rename to src/ElectronNET.API/API/Entities/ModifierType.cs diff --git a/src/ElectronNET.API/Entities/NativeImage.cs b/src/ElectronNET.API/API/Entities/NativeImage.cs similarity index 100% rename from src/ElectronNET.API/Entities/NativeImage.cs rename to src/ElectronNET.API/API/Entities/NativeImage.cs diff --git a/src/ElectronNET.API/Entities/NativeImageJsonConverter.cs b/src/ElectronNET.API/API/Entities/NativeImageJsonConverter.cs similarity index 100% rename from src/ElectronNET.API/Entities/NativeImageJsonConverter.cs rename to src/ElectronNET.API/API/Entities/NativeImageJsonConverter.cs diff --git a/src/ElectronNET.API/Entities/NotificationAction.cs b/src/ElectronNET.API/API/Entities/NotificationAction.cs similarity index 100% rename from src/ElectronNET.API/Entities/NotificationAction.cs rename to src/ElectronNET.API/API/Entities/NotificationAction.cs diff --git a/src/ElectronNET.API/Entities/NotificationOptions.cs b/src/ElectronNET.API/API/Entities/NotificationOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/NotificationOptions.cs rename to src/ElectronNET.API/API/Entities/NotificationOptions.cs diff --git a/src/ElectronNET.API/Entities/OnDidFailLoadInfo.cs b/src/ElectronNET.API/API/Entities/OnDidFailLoadInfo.cs similarity index 100% rename from src/ElectronNET.API/Entities/OnDidFailLoadInfo.cs rename to src/ElectronNET.API/API/Entities/OnDidFailLoadInfo.cs diff --git a/src/ElectronNET.API/Entities/OnDidNavigateInfo.cs b/src/ElectronNET.API/API/Entities/OnDidNavigateInfo.cs similarity index 100% rename from src/ElectronNET.API/Entities/OnDidNavigateInfo.cs rename to src/ElectronNET.API/API/Entities/OnDidNavigateInfo.cs diff --git a/src/ElectronNET.API/Entities/OnTopLevel.cs b/src/ElectronNET.API/API/Entities/OnTopLevel.cs similarity index 100% rename from src/ElectronNET.API/Entities/OnTopLevel.cs rename to src/ElectronNET.API/API/Entities/OnTopLevel.cs diff --git a/src/ElectronNET.API/Entities/OpenDevToolsOptions.cs b/src/ElectronNET.API/API/Entities/OpenDevToolsOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/OpenDevToolsOptions.cs rename to src/ElectronNET.API/API/Entities/OpenDevToolsOptions.cs diff --git a/src/ElectronNET.API/Entities/OpenDialogOptions.cs b/src/ElectronNET.API/API/Entities/OpenDialogOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/OpenDialogOptions.cs rename to src/ElectronNET.API/API/Entities/OpenDialogOptions.cs diff --git a/src/ElectronNET.API/Entities/OpenDialogProperty.cs b/src/ElectronNET.API/API/Entities/OpenDialogProperty.cs similarity index 100% rename from src/ElectronNET.API/Entities/OpenDialogProperty.cs rename to src/ElectronNET.API/API/Entities/OpenDialogProperty.cs diff --git a/src/ElectronNET.API/Entities/OpenExternalOptions.cs b/src/ElectronNET.API/API/Entities/OpenExternalOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/OpenExternalOptions.cs rename to src/ElectronNET.API/API/Entities/OpenExternalOptions.cs diff --git a/src/ElectronNET.API/Entities/PathName.cs b/src/ElectronNET.API/API/Entities/PathName.cs similarity index 100% rename from src/ElectronNET.API/Entities/PathName.cs rename to src/ElectronNET.API/API/Entities/PathName.cs diff --git a/src/ElectronNET.API/Entities/Point.cs b/src/ElectronNET.API/API/Entities/Point.cs similarity index 100% rename from src/ElectronNET.API/Entities/Point.cs rename to src/ElectronNET.API/API/Entities/Point.cs diff --git a/src/ElectronNET.API/Entities/PrintOptions.cs b/src/ElectronNET.API/API/Entities/PrintOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/PrintOptions.cs rename to src/ElectronNET.API/API/Entities/PrintOptions.cs diff --git a/src/ElectronNET.API/Entities/PrintToPDFOptions.cs b/src/ElectronNET.API/API/Entities/PrintToPDFOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/PrintToPDFOptions.cs rename to src/ElectronNET.API/API/Entities/PrintToPDFOptions.cs diff --git a/src/ElectronNET.API/Entities/PrinterInfo.cs b/src/ElectronNET.API/API/Entities/PrinterInfo.cs similarity index 100% rename from src/ElectronNET.API/Entities/PrinterInfo.cs rename to src/ElectronNET.API/API/Entities/PrinterInfo.cs diff --git a/src/ElectronNET.API/Entities/ProcessMetric.cs b/src/ElectronNET.API/API/Entities/ProcessMetric.cs similarity index 100% rename from src/ElectronNET.API/Entities/ProcessMetric.cs rename to src/ElectronNET.API/API/Entities/ProcessMetric.cs diff --git a/src/ElectronNET.API/Entities/ProgressBarMode.cs b/src/ElectronNET.API/API/Entities/ProgressBarMode.cs similarity index 100% rename from src/ElectronNET.API/Entities/ProgressBarMode.cs rename to src/ElectronNET.API/API/Entities/ProgressBarMode.cs diff --git a/src/ElectronNET.API/Entities/ProgressBarOptions.cs b/src/ElectronNET.API/API/Entities/ProgressBarOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/ProgressBarOptions.cs rename to src/ElectronNET.API/API/Entities/ProgressBarOptions.cs diff --git a/src/ElectronNET.API/Entities/ProgressInfo.cs b/src/ElectronNET.API/API/Entities/ProgressInfo.cs similarity index 100% rename from src/ElectronNET.API/Entities/ProgressInfo.cs rename to src/ElectronNET.API/API/Entities/ProgressInfo.cs diff --git a/src/ElectronNET.API/Entities/ProxyConfig.cs b/src/ElectronNET.API/API/Entities/ProxyConfig.cs similarity index 100% rename from src/ElectronNET.API/Entities/ProxyConfig.cs rename to src/ElectronNET.API/API/Entities/ProxyConfig.cs diff --git a/src/ElectronNET.API/Entities/ReadBookmark.cs b/src/ElectronNET.API/API/Entities/ReadBookmark.cs similarity index 100% rename from src/ElectronNET.API/Entities/ReadBookmark.cs rename to src/ElectronNET.API/API/Entities/ReadBookmark.cs diff --git a/src/ElectronNET.API/Entities/Rectangle.cs b/src/ElectronNET.API/API/Entities/Rectangle.cs similarity index 100% rename from src/ElectronNET.API/Entities/Rectangle.cs rename to src/ElectronNET.API/API/Entities/Rectangle.cs diff --git a/src/ElectronNET.API/Entities/RelaunchOptions.cs b/src/ElectronNET.API/API/Entities/RelaunchOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/RelaunchOptions.cs rename to src/ElectronNET.API/API/Entities/RelaunchOptions.cs diff --git a/src/ElectronNET.API/Entities/ReleaseNoteInfo.cs b/src/ElectronNET.API/API/Entities/ReleaseNoteInfo.cs similarity index 100% rename from src/ElectronNET.API/Entities/ReleaseNoteInfo.cs rename to src/ElectronNET.API/API/Entities/ReleaseNoteInfo.cs diff --git a/src/ElectronNET.API/Entities/RemovePassword.cs b/src/ElectronNET.API/API/Entities/RemovePassword.cs similarity index 100% rename from src/ElectronNET.API/Entities/RemovePassword.cs rename to src/ElectronNET.API/API/Entities/RemovePassword.cs diff --git a/src/ElectronNET.API/Entities/ResizeOptions.cs b/src/ElectronNET.API/API/Entities/ResizeOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/ResizeOptions.cs rename to src/ElectronNET.API/API/Entities/ResizeOptions.cs diff --git a/src/ElectronNET.API/Entities/SaveDialogOptions.cs b/src/ElectronNET.API/API/Entities/SaveDialogOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/SaveDialogOptions.cs rename to src/ElectronNET.API/API/Entities/SaveDialogOptions.cs diff --git a/src/ElectronNET.API/Entities/Scheme.cs b/src/ElectronNET.API/API/Entities/Scheme.cs similarity index 100% rename from src/ElectronNET.API/Entities/Scheme.cs rename to src/ElectronNET.API/API/Entities/Scheme.cs diff --git a/src/ElectronNET.API/Entities/SemVer.cs b/src/ElectronNET.API/API/Entities/SemVer.cs similarity index 100% rename from src/ElectronNET.API/Entities/SemVer.cs rename to src/ElectronNET.API/API/Entities/SemVer.cs diff --git a/src/ElectronNET.API/Entities/ShortcutDetails.cs b/src/ElectronNET.API/API/Entities/ShortcutDetails.cs similarity index 100% rename from src/ElectronNET.API/Entities/ShortcutDetails.cs rename to src/ElectronNET.API/API/Entities/ShortcutDetails.cs diff --git a/src/ElectronNET.API/Entities/ShortcutLinkOperation.cs b/src/ElectronNET.API/API/Entities/ShortcutLinkOperation.cs similarity index 100% rename from src/ElectronNET.API/Entities/ShortcutLinkOperation.cs rename to src/ElectronNET.API/API/Entities/ShortcutLinkOperation.cs diff --git a/src/ElectronNET.API/Entities/Size.cs b/src/ElectronNET.API/API/Entities/Size.cs similarity index 100% rename from src/ElectronNET.API/Entities/Size.cs rename to src/ElectronNET.API/API/Entities/Size.cs diff --git a/src/ElectronNET.API/Entities/ThemeSourceMode.cs b/src/ElectronNET.API/API/Entities/ThemeSourceMode.cs similarity index 100% rename from src/ElectronNET.API/Entities/ThemeSourceMode.cs rename to src/ElectronNET.API/API/Entities/ThemeSourceMode.cs diff --git a/src/ElectronNET.API/Entities/ThumbarButton.cs b/src/ElectronNET.API/API/Entities/ThumbarButton.cs similarity index 100% rename from src/ElectronNET.API/Entities/ThumbarButton.cs rename to src/ElectronNET.API/API/Entities/ThumbarButton.cs diff --git a/src/ElectronNET.API/Entities/ThumbarButtonFlag.cs b/src/ElectronNET.API/API/Entities/ThumbarButtonFlag.cs similarity index 100% rename from src/ElectronNET.API/Entities/ThumbarButtonFlag.cs rename to src/ElectronNET.API/API/Entities/ThumbarButtonFlag.cs diff --git a/src/ElectronNET.API/Entities/TitleBarStyle.cs b/src/ElectronNET.API/API/Entities/TitleBarStyle.cs similarity index 100% rename from src/ElectronNET.API/Entities/TitleBarStyle.cs rename to src/ElectronNET.API/API/Entities/TitleBarStyle.cs diff --git a/src/ElectronNET.API/Entities/ToBitmapOptions.cs b/src/ElectronNET.API/API/Entities/ToBitmapOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/ToBitmapOptions.cs rename to src/ElectronNET.API/API/Entities/ToBitmapOptions.cs diff --git a/src/ElectronNET.API/Entities/ToDataUrlOptions.cs b/src/ElectronNET.API/API/Entities/ToDataUrlOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/ToDataUrlOptions.cs rename to src/ElectronNET.API/API/Entities/ToDataUrlOptions.cs diff --git a/src/ElectronNET.API/Entities/ToPNGOptions.cs b/src/ElectronNET.API/API/Entities/ToPNGOptions.cs similarity index 100% rename from src/ElectronNET.API/Entities/ToPNGOptions.cs rename to src/ElectronNET.API/API/Entities/ToPNGOptions.cs diff --git a/src/ElectronNET.API/Entities/TrayClickEventArgs.cs b/src/ElectronNET.API/API/Entities/TrayClickEventArgs.cs similarity index 100% rename from src/ElectronNET.API/Entities/TrayClickEventArgs.cs rename to src/ElectronNET.API/API/Entities/TrayClickEventArgs.cs diff --git a/src/ElectronNET.API/Entities/UpdateCancellationToken.cs b/src/ElectronNET.API/API/Entities/UpdateCancellationToken.cs similarity index 100% rename from src/ElectronNET.API/Entities/UpdateCancellationToken.cs rename to src/ElectronNET.API/API/Entities/UpdateCancellationToken.cs diff --git a/src/ElectronNET.API/Entities/UpdateCheckResult.cs b/src/ElectronNET.API/API/Entities/UpdateCheckResult.cs similarity index 100% rename from src/ElectronNET.API/Entities/UpdateCheckResult.cs rename to src/ElectronNET.API/API/Entities/UpdateCheckResult.cs diff --git a/src/ElectronNET.API/Entities/UpdateFileInfo.cs b/src/ElectronNET.API/API/Entities/UpdateFileInfo.cs similarity index 100% rename from src/ElectronNET.API/Entities/UpdateFileInfo.cs rename to src/ElectronNET.API/API/Entities/UpdateFileInfo.cs diff --git a/src/ElectronNET.API/Entities/UpdateInfo.cs b/src/ElectronNET.API/API/Entities/UpdateInfo.cs similarity index 100% rename from src/ElectronNET.API/Entities/UpdateInfo.cs rename to src/ElectronNET.API/API/Entities/UpdateInfo.cs diff --git a/src/ElectronNET.API/Entities/UploadFile.cs b/src/ElectronNET.API/API/Entities/UploadFile.cs similarity index 100% rename from src/ElectronNET.API/Entities/UploadFile.cs rename to src/ElectronNET.API/API/Entities/UploadFile.cs diff --git a/src/ElectronNET.API/Entities/UploadRawData.cs b/src/ElectronNET.API/API/Entities/UploadRawData.cs similarity index 100% rename from src/ElectronNET.API/Entities/UploadRawData.cs rename to src/ElectronNET.API/API/Entities/UploadRawData.cs diff --git a/src/ElectronNET.API/Entities/UserTask.cs b/src/ElectronNET.API/API/Entities/UserTask.cs similarity index 100% rename from src/ElectronNET.API/Entities/UserTask.cs rename to src/ElectronNET.API/API/Entities/UserTask.cs diff --git a/src/ElectronNET.API/Entities/Vibrancy.cs b/src/ElectronNET.API/API/Entities/Vibrancy.cs similarity index 100% rename from src/ElectronNET.API/Entities/Vibrancy.cs rename to src/ElectronNET.API/API/Entities/Vibrancy.cs diff --git a/src/ElectronNET.API/Entities/WebPreferences.cs b/src/ElectronNET.API/API/Entities/WebPreferences.cs similarity index 100% rename from src/ElectronNET.API/Entities/WebPreferences.cs rename to src/ElectronNET.API/API/Entities/WebPreferences.cs diff --git a/src/ElectronNET.API/Extensions/EnumExtensions.cs b/src/ElectronNET.API/API/Extensions/EnumExtensions.cs similarity index 100% rename from src/ElectronNET.API/Extensions/EnumExtensions.cs rename to src/ElectronNET.API/API/Extensions/EnumExtensions.cs diff --git a/src/ElectronNET.API/Extensions/MenuItemExtensions.cs b/src/ElectronNET.API/API/Extensions/MenuItemExtensions.cs similarity index 100% rename from src/ElectronNET.API/Extensions/MenuItemExtensions.cs rename to src/ElectronNET.API/API/Extensions/MenuItemExtensions.cs diff --git a/src/ElectronNET.API/Extensions/ThumbarButtonExtensions.cs b/src/ElectronNET.API/API/Extensions/ThumbarButtonExtensions.cs similarity index 100% rename from src/ElectronNET.API/Extensions/ThumbarButtonExtensions.cs rename to src/ElectronNET.API/API/Extensions/ThumbarButtonExtensions.cs diff --git a/src/ElectronNET.API/GlobalShortcut.cs b/src/ElectronNET.API/API/GlobalShortcut.cs similarity index 100% rename from src/ElectronNET.API/GlobalShortcut.cs rename to src/ElectronNET.API/API/GlobalShortcut.cs diff --git a/src/ElectronNET.API/HostHook.cs b/src/ElectronNET.API/API/HostHook.cs similarity index 100% rename from src/ElectronNET.API/HostHook.cs rename to src/ElectronNET.API/API/HostHook.cs diff --git a/src/ElectronNET.API/HybridSupport.cs b/src/ElectronNET.API/API/HybridSupport.cs similarity index 86% rename from src/ElectronNET.API/HybridSupport.cs rename to src/ElectronNET.API/API/HybridSupport.cs index 935ea51..a84641e 100644 --- a/src/ElectronNET.API/HybridSupport.cs +++ b/src/ElectronNET.API/API/HybridSupport.cs @@ -15,7 +15,7 @@ { get { - return !string.IsNullOrEmpty(BridgeSettings.SocketPort); + return ElectronNetRuntime.RuntimeController != null; } } } diff --git a/src/ElectronNET.API/IpcMain.cs b/src/ElectronNET.API/API/IpcMain.cs similarity index 99% rename from src/ElectronNET.API/IpcMain.cs rename to src/ElectronNET.API/API/IpcMain.cs index 3239083..31122d1 100644 --- a/src/ElectronNET.API/IpcMain.cs +++ b/src/ElectronNET.API/API/IpcMain.cs @@ -46,7 +46,7 @@ namespace ElectronNET.API /// Callback Method. public async Task On(string channel, Action listener) { - await BridgeConnector.Socket.Emit("registerIpcMainChannel", channel); + await BridgeConnector.Socket.Emit("registerIpcMainChannel", channel).ConfigureAwait(false); BridgeConnector.Socket.Off(channel); BridgeConnector.Socket.On(channel, (args) => { diff --git a/src/ElectronNET.API/Menu.cs b/src/ElectronNET.API/API/Menu.cs similarity index 100% rename from src/ElectronNET.API/Menu.cs rename to src/ElectronNET.API/API/Menu.cs diff --git a/src/ElectronNET.API/NativeTheme.cs b/src/ElectronNET.API/API/NativeTheme.cs similarity index 100% rename from src/ElectronNET.API/NativeTheme.cs rename to src/ElectronNET.API/API/NativeTheme.cs diff --git a/src/ElectronNET.API/Notification.cs b/src/ElectronNET.API/API/Notification.cs similarity index 100% rename from src/ElectronNET.API/Notification.cs rename to src/ElectronNET.API/API/Notification.cs diff --git a/src/ElectronNET.API/PowerMonitor.cs b/src/ElectronNET.API/API/PowerMonitor.cs similarity index 100% rename from src/ElectronNET.API/PowerMonitor.cs rename to src/ElectronNET.API/API/PowerMonitor.cs diff --git a/src/ElectronNET.API/QuitEventArgs.cs b/src/ElectronNET.API/API/QuitEventArgs.cs similarity index 100% rename from src/ElectronNET.API/QuitEventArgs.cs rename to src/ElectronNET.API/API/QuitEventArgs.cs diff --git a/src/ElectronNET.API/Screen.cs b/src/ElectronNET.API/API/Screen.cs similarity index 100% rename from src/ElectronNET.API/Screen.cs rename to src/ElectronNET.API/API/Screen.cs diff --git a/src/ElectronNET.API/Session.cs b/src/ElectronNET.API/API/Session.cs similarity index 99% rename from src/ElectronNET.API/Session.cs rename to src/ElectronNET.API/API/Session.cs index a4cb6bb..a6acbc9 100644 --- a/src/ElectronNET.API/Session.cs +++ b/src/ElectronNET.API/API/Session.cs @@ -25,10 +25,13 @@ namespace ElectronNET.API /// public Cookies Cookies { get; } + public WebRequest WebRequest { get; private set; } + internal Session(int id) { Id = id; Cookies = new Cookies(id); + WebRequest = new WebRequest(id); } /// diff --git a/src/ElectronNET.API/Shell.cs b/src/ElectronNET.API/API/Shell.cs similarity index 100% rename from src/ElectronNET.API/Shell.cs rename to src/ElectronNET.API/API/Shell.cs diff --git a/src/ElectronNET.API/Tray.cs b/src/ElectronNET.API/API/Tray.cs similarity index 95% rename from src/ElectronNET.API/Tray.cs rename to src/ElectronNET.API/API/Tray.cs index e8947fa..906a58c 100644 --- a/src/ElectronNET.API/Tray.cs +++ b/src/ElectronNET.API/API/Tray.cs @@ -241,7 +241,7 @@ namespace ElectronNET.API /// The menu item. public async Task Show(string image, MenuItem menuItem) { - await Show(image, new MenuItem[] { menuItem }); + await this.Show(image, new MenuItem[] { menuItem }).ConfigureAwait(false); } /// @@ -252,7 +252,7 @@ namespace ElectronNET.API public async Task Show(string image, MenuItem[] menuItems) { menuItems.AddMenuItemsId(); - await BridgeConnector.Socket.Emit("create-tray", image, JArray.FromObject(menuItems, _jsonSerializer)); + await BridgeConnector.Socket.Emit("create-tray", image, JArray.FromObject(menuItems, this._jsonSerializer)).ConfigureAwait(false); _items.Clear(); _items.AddRange(menuItems); @@ -270,7 +270,7 @@ namespace ElectronNET.API /// The image. public async Task Show(string image) { - await BridgeConnector.Socket.Emit("create-tray", image); + await BridgeConnector.Socket.Emit("create-tray", image).ConfigureAwait(false); } /// @@ -278,7 +278,7 @@ namespace ElectronNET.API /// public async Task Destroy() { - await BridgeConnector.Socket.Emit("tray-destroy"); + await BridgeConnector.Socket.Emit("tray-destroy").ConfigureAwait(false); _items.Clear(); } @@ -288,7 +288,7 @@ namespace ElectronNET.API /// public async Task SetImage(string image) { - await BridgeConnector.Socket.Emit("tray-setImage", image); + await BridgeConnector.Socket.Emit("tray-setImage", image).ConfigureAwait(false); } /// @@ -297,7 +297,7 @@ namespace ElectronNET.API /// public async Task SetPressedImage(string image) { - await BridgeConnector.Socket.Emit("tray-setPressedImage", image); + await BridgeConnector.Socket.Emit("tray-setPressedImage", image).ConfigureAwait(false); } /// @@ -306,7 +306,7 @@ namespace ElectronNET.API /// public async Task SetToolTip(string toolTip) { - await BridgeConnector.Socket.Emit("tray-setToolTip", toolTip); + await BridgeConnector.Socket.Emit("tray-setToolTip", toolTip).ConfigureAwait(false); } /// @@ -315,7 +315,7 @@ namespace ElectronNET.API /// public async Task SetTitle(string title) { - await BridgeConnector.Socket.Emit("tray-setTitle", title); + await BridgeConnector.Socket.Emit("tray-setTitle", title).ConfigureAwait(false); } /// @@ -324,7 +324,7 @@ namespace ElectronNET.API /// public async Task DisplayBalloon(DisplayBalloonOptions options) { - await BridgeConnector.Socket.Emit("tray-displayBalloon", JObject.FromObject(options, _jsonSerializer)); + await BridgeConnector.Socket.Emit("tray-displayBalloon", JObject.FromObject(options, this._jsonSerializer)).ConfigureAwait(false); } /// @@ -342,9 +342,9 @@ namespace ElectronNET.API taskCompletionSource.SetResult(isDestroyed); }); - await BridgeConnector.Socket.Emit("tray-isDestroyed"); + await BridgeConnector.Socket.Emit("tray-isDestroyed").ConfigureAwait(false); - return await taskCompletionSource.Task; + return await taskCompletionSource.Task.ConfigureAwait(false); } private readonly JsonSerializer _jsonSerializer = new() @@ -367,7 +367,7 @@ namespace ElectronNET.API /// The event name /// The handler public async Task On(string eventName, Action action) - => await Events.Instance.On(ModuleName, eventName, action); + => await Events.Instance.On(ModuleName, eventName, action).ConfigureAwait(false); /// /// Subscribe to an unmapped event on the module once. /// @@ -381,6 +381,6 @@ namespace ElectronNET.API /// The event name /// The handler public async Task Once(string eventName, Action action) - => await Events.Instance.Once(ModuleName, eventName, action); + => await Events.Instance.Once(ModuleName, eventName, action).ConfigureAwait(false); } } diff --git a/src/ElectronNET.API/WebContents.cs b/src/ElectronNET.API/API/WebContents.cs similarity index 100% rename from src/ElectronNET.API/WebContents.cs rename to src/ElectronNET.API/API/WebContents.cs diff --git a/src/ElectronNET.API/WindowManager.cs b/src/ElectronNET.API/API/WindowManager.cs similarity index 92% rename from src/ElectronNET.API/WindowManager.cs rename to src/ElectronNET.API/API/WindowManager.cs index 0f9b5b5..f5e714d 100644 --- a/src/ElectronNET.API/WindowManager.cs +++ b/src/ElectronNET.API/API/WindowManager.cs @@ -84,7 +84,7 @@ namespace ElectronNET.API /// public async Task CreateWindowAsync(string loadUrl = "http://localhost") { - return await CreateWindowAsync(new BrowserWindowOptions(), loadUrl); + return await this.CreateWindowAsync(new BrowserWindowOptions(), loadUrl).ConfigureAwait(false); } /// @@ -124,9 +124,9 @@ namespace ElectronNET.API } }); - if (loadUrl.ToUpper() == "HTTP://LOCALHOST") + if (loadUrl.ToUpper() == "HTTP://LOCALHOST" && ElectronNetRuntime.AspNetWebPort.HasValue) { - loadUrl = $"{loadUrl}:{BridgeSettings.WebPort}"; + loadUrl = $"{loadUrl}:{ElectronNetRuntime.AspNetWebPort}"; } // Workaround Windows 10 / Electron Bug @@ -142,7 +142,7 @@ namespace ElectronNET.API options.X = 0; options.Y = 0; - await BridgeConnector.Socket.Emit("createBrowserWindow", JObject.FromObject(options, _jsonSerializer), loadUrl); + await BridgeConnector.Socket.Emit("createBrowserWindow", JObject.FromObject(options, this._jsonSerializer), loadUrl).ConfigureAwait(false); } else { @@ -158,10 +158,10 @@ namespace ElectronNET.API ContractResolver = new CamelCasePropertyNamesContractResolver(), NullValueHandling = NullValueHandling.Ignore }; - await BridgeConnector.Socket.Emit("createBrowserWindow", JObject.FromObject(options, ownjsonSerializer), loadUrl); + await BridgeConnector.Socket.Emit("createBrowserWindow", JObject.FromObject(options, ownjsonSerializer), loadUrl).ConfigureAwait(false); } - return await taskCompletionSource.Task; + return await taskCompletionSource.Task.ConfigureAwait(false); } private bool IsWindows10() @@ -208,9 +208,9 @@ namespace ElectronNET.API ContractResolver = new CamelCasePropertyNamesContractResolver(), NullValueHandling = NullValueHandling.Ignore }; - await BridgeConnector.Socket.Emit("createBrowserView", JObject.FromObject(options, ownjsonSerializer)); + await BridgeConnector.Socket.Emit("createBrowserView", JObject.FromObject(options, ownjsonSerializer)).ConfigureAwait(false); - return await taskCompletionSource.Task; + return await taskCompletionSource.Task.ConfigureAwait(false); } private readonly JsonSerializer _jsonSerializer = new() diff --git a/src/ElectronNET.API/BridgeConnector.cs b/src/ElectronNET.API/BridgeConnector.cs deleted file mode 100644 index 23319e5..0000000 --- a/src/ElectronNET.API/BridgeConnector.cs +++ /dev/null @@ -1,33 +0,0 @@ -namespace ElectronNET.API -{ - internal static class BridgeConnector - { - private static SocketIoFacade _socket; - private static readonly object SyncRoot = new(); - - public static SocketIoFacade Socket - { - get - { - if (_socket == null) - { - lock (SyncRoot) - { - if (_socket == null) - { - - string socketUrl = HybridSupport.IsElectronActive - ? $"http://localhost:{BridgeSettings.SocketPort}" - : "http://localhost"; - - _socket = new SocketIoFacade(socketUrl); - _socket.Connect(); - } - } - } - - return _socket; - } - } - } -} \ No newline at end of file diff --git a/src/ElectronNET.API/BridgeSettings.cs b/src/ElectronNET.API/BridgeSettings.cs deleted file mode 100644 index 96a2653..0000000 --- a/src/ElectronNET.API/BridgeSettings.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace ElectronNET.API -{ - /// - /// - /// - public static class BridgeSettings - { - /// - /// Gets the socket port. - /// - /// - /// The socket port. - /// - public static string SocketPort { get; internal set; } - - /// - /// Gets the web port. - /// - /// - /// The web port. - /// - public static string WebPort { get; internal set; } - } -} diff --git a/src/ElectronNET.API/Cookies.cs b/src/ElectronNET.API/Cookies.cs deleted file mode 100644 index 98be3d4..0000000 --- a/src/ElectronNET.API/Cookies.cs +++ /dev/null @@ -1,154 +0,0 @@ -using System; -using System.Threading.Tasks; -using ElectronNET.API.Entities; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using Newtonsoft.Json.Serialization; - -namespace ElectronNET.API -{ - /// - /// Query and modify a session's cookies. - /// - public class Cookies - { - /// - /// Gets the identifier. - /// - /// - /// The identifier. - /// - public int Id { get; private set; } - - internal Cookies(int id) - { - Id = id; - } - - /// - /// Emitted when a cookie is changed because it was added, edited, removed, or expired. - /// - public event Action OnChanged - { - add - { - if (_changed == null) - { - BridgeConnector.Socket.On("webContents-session-cookies-changed" + Id, (args) => - { - Cookie cookie = ((JArray)args)[0].ToObject(); - CookieChangedCause cause = ((JArray)args)[1].ToObject(); - bool removed = ((JArray)args)[2].ToObject(); - _changed(cookie, cause, removed); - }); - - BridgeConnector.Socket.Emit("register-webContents-session-cookies-changed", Id); - } - _changed += value; - } - remove - { - _changed -= value; - - if (_changed == null) - BridgeConnector.Socket.Off("webContents-session-cookies-changed" + Id); - } - } - - private event Action _changed; - - /// - /// Sends a request to get all cookies matching filter, and resolves a callack with the response. - /// - /// - /// - /// A task which resolves an array of cookie objects. - public Task GetAsync(CookieFilter filter) - { - var taskCompletionSource = new TaskCompletionSource(); - string guid = Guid.NewGuid().ToString(); - - BridgeConnector.Socket.On("webContents-session-cookies-get-completed" + guid, (cookies) => - { - Cookie[] result = ((JArray)cookies).ToObject(); - - BridgeConnector.Socket.Off("webContents-session-cookies-get-completed" + guid); - taskCompletionSource.SetResult(result); - }); - - BridgeConnector.Socket.Emit("webContents-session-cookies-get", Id, JObject.FromObject(filter, _jsonSerializer), guid); - - return taskCompletionSource.Task; - } - - /// - /// - /// - /// - /// - public Task SetAsync(CookieDetails details) - { - var taskCompletionSource = new TaskCompletionSource(); - string guid = Guid.NewGuid().ToString(); - - BridgeConnector.Socket.On("webContents-session-cookies-set-completed" + guid, () => - { - BridgeConnector.Socket.Off("webContents-session-cookies-set-completed" + guid); - taskCompletionSource.SetResult(null); - }); - - BridgeConnector.Socket.Emit("webContents-session-cookies-set", Id, JObject.FromObject(details, _jsonSerializer), guid); - - return taskCompletionSource.Task; - } - - /// - /// Removes the cookies matching url and name - /// - /// The URL associated with the cookie. - /// The name of cookie to remove. - /// A task which resolves when the cookie has been removed - public Task RemoveAsync(string url, string name) - { - var taskCompletionSource = new TaskCompletionSource(); - string guid = Guid.NewGuid().ToString(); - - BridgeConnector.Socket.On("webContents-session-cookies-remove-completed" + guid, () => - { - BridgeConnector.Socket.Off("webContents-session-cookies-remove-completed" + guid); - taskCompletionSource.SetResult(null); - }); - - BridgeConnector.Socket.Emit("webContents-session-cookies-remove", Id, url, name, guid); - - return taskCompletionSource.Task; - } - - /// - /// Writes any unwritten cookies data to disk. - /// - /// A task which resolves when the cookie store has been flushed - public Task FlushStoreAsync() - { - var taskCompletionSource = new TaskCompletionSource(); - string guid = Guid.NewGuid().ToString(); - - BridgeConnector.Socket.On("webContents-session-cookies-flushStore-completed" + guid, () => - { - BridgeConnector.Socket.Off("webContents-session-cookies-flushStore-completed" + guid); - taskCompletionSource.SetResult(null); - }); - - BridgeConnector.Socket.Emit("webContents-session-cookies-flushStore", Id, guid); - - return taskCompletionSource.Task; - } - - private JsonSerializer _jsonSerializer = new JsonSerializer() - { - ContractResolver = new CamelCasePropertyNamesContractResolver(), - NullValueHandling = NullValueHandling.Ignore, - DefaultValueHandling = DefaultValueHandling.Ignore - }; - } -} \ No newline at end of file diff --git a/src/ElectronNET.API/Events.cs b/src/ElectronNET.API/Events.cs deleted file mode 100644 index 4c3c366..0000000 --- a/src/ElectronNET.API/Events.cs +++ /dev/null @@ -1,88 +0,0 @@ -using System; -using System.Globalization; -using System.Threading.Tasks; - -namespace ElectronNET.API -{ - /// - /// Generic Event Consumers for Electron Modules - /// - internal class Events - { - private static Events _events; - private static readonly object SyncRoot = new(); - private readonly TextInfo _textInfo = new CultureInfo("en-US", false).TextInfo; - - private Events() - {} - - public static Events Instance - { - get - { - if (_events == null) - { - lock (SyncRoot) - { - if (_events == null) - { - _events = new Events(); - } - } - } - - return _events; - } - } - - /// - /// Subscribe to an unmapped electron event. - /// - /// The name of the module, e.g. app, dock, etc... - /// The name of the event - /// The event handler - public void On(string moduleName, string eventName, Action action) - => On(moduleName, eventName, action); - - - /// - /// Subscribe to an unmapped electron event. - /// - /// The name of the module, e.g. app, dock, etc... - /// The name of the event - /// The event handler - public async Task On(string moduleName, string eventName, Action action) - { - var listener = $"{moduleName}{_textInfo.ToTitleCase(eventName)}Completed"; - var subscriber = $"register-{moduleName}-on-event"; - - BridgeConnector.Socket.On(listener, action); - await BridgeConnector.Socket.Emit(subscriber, eventName, listener); - } - - /// - /// Subscribe to an unmapped electron event. - /// - /// The name of the module, e.g. app, dock, etc... - /// The name of the event - /// The event handler - public void Once(string moduleName, string eventName, Action action) - => Once(moduleName, eventName, action); - - - /// - /// Subscribe to an unmapped electron event. - /// - /// The name of the module, e.g. app, dock, etc... - /// The name of the event - /// The event handler - public async Task Once(string moduleName, string eventName, Action action) - { - var listener = $"{moduleName}{_textInfo.ToTitleCase(eventName)}Completed"; - var subscriber = $"register-{moduleName}-once-event"; - BridgeConnector.Socket.Once(listener, action); - await BridgeConnector.Socket.Emit(subscriber, eventName, listener); - } - - } -} diff --git a/src/ElectronNET.API/GlobalUsings.cs b/src/ElectronNET.API/GlobalUsings.cs deleted file mode 100644 index 7b02f48..0000000 --- a/src/ElectronNET.API/GlobalUsings.cs +++ /dev/null @@ -1,3 +0,0 @@ -// Global using directives - -global using System.Web; \ No newline at end of file diff --git a/src/ElectronNET.API/LifetimeServiceHost.cs b/src/ElectronNET.API/LifetimeServiceHost.cs deleted file mode 100644 index cb58eb1..0000000 --- a/src/ElectronNET.API/LifetimeServiceHost.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Extensions.Hosting; - -namespace ElectronNET.API -{ - /// - /// Base class that reports if ASP.NET Core has fully started. - /// - internal class LifetimeServiceHost : IHostedService - { - public LifetimeServiceHost(IHostApplicationLifetime lifetime) - { - lifetime.ApplicationStarted.Register(() => - { - App.Instance.IsReady = true; - - Console.WriteLine("ASP.NET Core host has fully started."); - }); - } - - /// - /// Triggered when the application host is ready to start the service. - /// - /// Indicates that the start process has been aborted. - public Task StartAsync(CancellationToken cancellationToken) - { - return Task.CompletedTask; - } - - /// - /// Triggered when the application host is performing a graceful shutdown. - /// - /// Indicates that the shutdown process should no longer be graceful. - public Task StopAsync(CancellationToken cancellationToken) - { - return Task.CompletedTask; - } - } -} \ No newline at end of file diff --git a/src/ElectronNET.API/ServiceCollectionExtensions.cs b/src/ElectronNET.API/ServiceCollectionExtensions.cs deleted file mode 100644 index f933731..0000000 --- a/src/ElectronNET.API/ServiceCollectionExtensions.cs +++ /dev/null @@ -1,33 +0,0 @@ -using Microsoft.Extensions.DependencyInjection; - -namespace ElectronNET.API -{ - /// - /// - /// - public static class ServiceCollectionExtensions - { - /// - /// Adds the Members to the Service Collection - /// - public static IServiceCollection AddElectron(this IServiceCollection services) - => services - // adding in this manner to ensure late binding. - .AddSingleton(provider => IpcMain.Instance) - .AddSingleton(provider => App.Instance) - .AddSingleton(provider => AutoUpdater.Instance) - .AddSingleton(provider => WindowManager.Instance) - .AddSingleton(provider => Menu.Instance) - .AddSingleton(provider => Dialog.Instance) - .AddSingleton(provider => Notification.Instance) - .AddSingleton(provider => Tray.Instance) - .AddSingleton(provider => GlobalShortcut.Instance) - .AddSingleton(provider => Shell.Instance) - .AddSingleton(provider => Screen.Instance) - .AddSingleton(provider => Clipboard.Instance) - .AddSingleton(provider => HostHook.Instance) - .AddSingleton(provider => PowerMonitor.Instance) - .AddSingleton(provider => NativeTheme.Instance) - .AddSingleton(provider => Dock.Instance); - } -} diff --git a/src/ElectronNET.API/SocketIOFacade.cs b/src/ElectronNET.API/SocketIOFacade.cs deleted file mode 100644 index ec5eb46..0000000 --- a/src/ElectronNET.API/SocketIOFacade.cs +++ /dev/null @@ -1,93 +0,0 @@ -using System; -using System.Threading.Tasks; -using Newtonsoft.Json; -using Newtonsoft.Json.Serialization; -using SocketIOClient; -using SocketIOClient.Newtonsoft.Json; - -namespace ElectronNET.API; - -internal class SocketIoFacade -{ - private readonly SocketIO _socket; - - public SocketIoFacade(string uri) - { - _socket = new SocketIO(uri); - var jsonSerializer = new NewtonsoftJsonSerializer(new JsonSerializerSettings - { - ContractResolver = new CamelCasePropertyNamesContractResolver(), - NullValueHandling = NullValueHandling.Ignore, - DefaultValueHandling = DefaultValueHandling.Ignore - }); - - _socket.JsonSerializer = jsonSerializer; - } - - public void Connect() - { - _socket.OnError += (sender, e) => - { - Console.WriteLine($"BridgeConnector Error: {sender} {e}"); - }; - - _socket.OnConnected += (_, _) => - { - Console.WriteLine("BridgeConnector connected!"); - }; - - _socket.OnDisconnected += (_, _) => - { - Console.WriteLine("BridgeConnector disconnected!"); - }; - - _socket.ConnectAsync().GetAwaiter().GetResult(); - } - - public void On(string eventName, Action action) - { - _socket.On(eventName, response => - { - Task.Run(action); - }); - } - - public void On(string eventName, Action action) - { - _socket.On(eventName, response => - { - var value = response.GetValue(); - Task.Run(() => action(value)); - }); - } - - // TODO: Remove this method when SocketIoClient supports object deserialization - public void On(string eventName, Action action) - { - _socket.On(eventName, response => - { - var value = response.GetValue(); - Console.WriteLine($"Called Event {eventName} - data {value}"); - Task.Run(() => action(value)); - }); - } - - public void Once(string eventName, Action action) - { - _socket.On(eventName, (socketIoResponse) => - { - _socket.Off(eventName); - Task.Run(() => action(socketIoResponse.GetValue())); - }); - } - - public void Off(string eventName) - { - _socket.Off(eventName); - } - - public async Task Emit(string eventName, params object[] args) - { - await _socket.EmitAsync(eventName, args); - } -} \ No newline at end of file diff --git a/src/ElectronNET.API/WebHostBuilderExtensions.cs b/src/ElectronNET.API/WebHostBuilderExtensions.cs deleted file mode 100644 index af7cf91..0000000 --- a/src/ElectronNET.API/WebHostBuilderExtensions.cs +++ /dev/null @@ -1,58 +0,0 @@ -using Microsoft.AspNetCore.Hosting; -using System; -using System.IO; -using Microsoft.Extensions.DependencyInjection; - -namespace ElectronNET.API -{ - /// - /// - /// - public static class WebHostBuilderExtensions - { - /// - /// Use a Electron support for this .NET Core Project. - /// - /// The builder. - /// The arguments. - /// - public static IWebHostBuilder UseElectron(this IWebHostBuilder builder, string[] args) - { - foreach (string argument in args) - { - if (argument.ToUpper().Contains("ELECTRONPORT")) - { - BridgeSettings.SocketPort = argument.ToUpper().Replace("/ELECTRONPORT=", ""); - Console.WriteLine("Use Electron Port: " + BridgeSettings.SocketPort); - } - else if (argument.ToUpper().Contains("ELECTRONWEBPORT")) - { - BridgeSettings.WebPort = argument.ToUpper().Replace("/ELECTRONWEBPORT=", ""); - } - } - - if (HybridSupport.IsElectronActive) - { - builder.ConfigureServices(services => - { - services.AddHostedService(); - }); - - // check for the content folder if its exists in base director otherwise no need to include - // It was used before because we are publishing the project which copies everything to bin folder and contentroot wwwroot was folder there. - // now we have implemented the live reload if app is run using /watch then we need to use the default project path. - if (Directory.Exists($"{AppDomain.CurrentDomain.BaseDirectory}\\wwwroot")) - { - builder.UseContentRoot(AppDomain.CurrentDomain.BaseDirectory) - .UseUrls("http://localhost:" + BridgeSettings.WebPort); - } - else - { - builder.UseUrls("http://localhost:" + BridgeSettings.WebPort); - } - } - - return builder; - } - } -} \ No newline at end of file diff --git a/src/ElectronNET.API/devCleanup.cmd b/src/ElectronNET.API/devCleanup.cmd deleted file mode 100644 index 1ea3754..0000000 --- a/src/ElectronNET.API/devCleanup.cmd +++ /dev/null @@ -1 +0,0 @@ -rd /s /q %userprofile%\.nuget\packages\electronnet.api 2>nul diff --git a/src/ElectronNET.API/devCleanup.sh b/src/ElectronNET.API/devCleanup.sh deleted file mode 100644 index f3b1b44..0000000 --- a/src/ElectronNET.API/devCleanup.sh +++ /dev/null @@ -1 +0,0 @@ -rm -rf ~/.nuget/packages/electronnet.api \ No newline at end of file From 9275f2a7654a56282b5ff71fe3d07cbb4391f74c Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 13:21:35 +0200 Subject: [PATCH 22/66] ElectronNET.API: Add WebRequest API --- src/ElectronNET.API/API/Cookies.cs | 67 +++++++ src/ElectronNET.API/API/WebRequest.cs | 61 ++++++ src/ElectronNET.API/API/web-request.md | 255 +++++++++++++++++++++++++ 3 files changed, 383 insertions(+) create mode 100644 src/ElectronNET.API/API/Cookies.cs create mode 100644 src/ElectronNET.API/API/WebRequest.cs create mode 100644 src/ElectronNET.API/API/web-request.md diff --git a/src/ElectronNET.API/API/Cookies.cs b/src/ElectronNET.API/API/Cookies.cs new file mode 100644 index 0000000..4959cd9 --- /dev/null +++ b/src/ElectronNET.API/API/Cookies.cs @@ -0,0 +1,67 @@ +using System; +using System.Threading.Tasks; +using ElectronNET.API.Entities; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using Newtonsoft.Json.Serialization; + +namespace ElectronNET.API +{ + /// + /// Query and modify a session's cookies. + /// + public class Cookies + { + /// + /// Gets the identifier. + /// + /// + /// The identifier. + /// + public int Id { get; private set; } + + internal Cookies(int id) + { + Id = id; + } + + /// + /// Emitted when a cookie is changed because it was added, edited, removed, or expired. + /// + public event Action OnChanged + { + add + { + if (_changed == null) + { + BridgeConnector.Socket.On("webContents-session-cookies-changed" + Id, (args) => + { + Cookie cookie = ((JArray)args)[0].ToObject(); + CookieChangedCause cause = ((JArray)args)[1].ToObject(); + bool removed = ((JArray)args)[2].ToObject(); + _changed(cookie, cause, removed); + }); + + BridgeConnector.Socket.Emit("register-webContents-session-cookies-changed", Id); + } + _changed += value; + } + remove + { + _changed -= value; + + if (_changed == null) + BridgeConnector.Socket.Off("webContents-session-cookies-changed" + Id); + } + } + + private event Action _changed; + + private JsonSerializer _jsonSerializer = new JsonSerializer() + { + ContractResolver = new CamelCasePropertyNamesContractResolver(), + NullValueHandling = NullValueHandling.Ignore, + DefaultValueHandling = DefaultValueHandling.Ignore + }; + } +} \ No newline at end of file diff --git a/src/ElectronNET.API/API/WebRequest.cs b/src/ElectronNET.API/API/WebRequest.cs new file mode 100644 index 0000000..3b55106 --- /dev/null +++ b/src/ElectronNET.API/API/WebRequest.cs @@ -0,0 +1,61 @@ +using Newtonsoft.Json.Linq; +using System; + +namespace ElectronNET.API.Entities +{ + public class OnBeforeRequestDetails + { + public int Id { get; set; } + public string Url { get; set; } + public string Method { get; set; } + public int? WebContentsId { get; set; } + // Ensure all necessary properties are included as per Electron documentation + } + + public class WebRequestFilter + { + public string[] Urls { get; set; } + } + + public class WebRequest + { + public int Id { get; private set; } + + internal WebRequest(int id) + { + Id = id; + } + + private event Action> _onBeforeRequest; + + public void OnBeforeRequest(WebRequestFilter filter, Action> listener) + { + if (_onBeforeRequest == null) + { + BridgeConnector.Socket.On($"webContents-session-webRequest-onBeforeRequest{Id}", + (args) => + { + ////var details = ((JObject)args[0]).ToObject(); + ////var callback = args.Length > 1 ? (Action)((response) => { BridgeConnector.Socket.Emit($"webContents-session-webRequest-onBeforeRequest-response{Id}", response); }) : null; + var details = ((JObject)args).ToObject(); + var callback = (Action)((response) => { BridgeConnector.Socket.Emit($"webContents-session-webRequest-onBeforeRequest-response{Id}", response); }); + + _onBeforeRequest?.Invoke(details, callback); + }); + + BridgeConnector.Socket.Emit("register-webContents-session-webRequest-onBeforeRequest", Id, JObject.FromObject(filter)); + } + + _onBeforeRequest += listener; + } + + public void RemoveListener(Action> listener) + { + _onBeforeRequest -= listener; + if (_onBeforeRequest == null) + { + BridgeConnector.Socket.Off($"webContents-session-webRequest-onBeforeRequest{Id}"); + } + } + } +} \ No newline at end of file diff --git a/src/ElectronNET.API/API/web-request.md b/src/ElectronNET.API/API/web-request.md new file mode 100644 index 0000000..a337836 --- /dev/null +++ b/src/ElectronNET.API/API/web-request.md @@ -0,0 +1,255 @@ +## Class: WebRequest + +> Intercept and modify the contents of a request at various stages of its lifetime. + +Process: [Main](../glossary.md#main-process)
+_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._ + +Instances of the `WebRequest` class are accessed by using the `webRequest` +property of a `Session`. + +The methods of `WebRequest` accept an optional `filter` and a `listener`. The +`listener` will be called with `listener(details)` when the API's event has +happened. The `details` object describes the request. + +⚠️ Only the last attached `listener` will be used. Passing `null` as `listener` will unsubscribe from the event. + +The `filter` object has a `urls` property which is an Array of URL +patterns that will be used to filter out the requests that do not match the URL +patterns. If the `filter` is omitted then all requests will be matched. + +For certain events the `listener` is passed with a `callback`, which should be +called with a `response` object when `listener` has done its work. + +An example of adding `User-Agent` header for requests: + +```js +const { session } = require('electron') + +// Modify the user agent for all requests to the following urls. +const filter = { + urls: ['https://*.github.com/*', '*://electron.github.io/*'] +} + +session.defaultSession.webRequest.onBeforeSendHeaders(filter, (details, callback) => { + details.requestHeaders['User-Agent'] = 'MyAgent' + callback({ requestHeaders: details.requestHeaders }) +}) +``` + +### Instance Methods + +The following methods are available on instances of `WebRequest`: + +#### `webRequest.onBeforeRequest([filter, ]listener)` + +* `filter` [WebRequestFilter](structures/web-request-filter.md) (optional) +* `listener` Function | null + * `details` Object + * `id` Integer + * `url` string + * `method` string + * `webContentsId` Integer (optional) + * `webContents` WebContents (optional) + * `frame` WebFrameMain (optional) + * `resourceType` string - Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`. + * `referrer` string + * `timestamp` Double + * `uploadData` [UploadData[]](structures/upload-data.md) + * `callback` Function + * `response` Object + * `cancel` boolean (optional) + * `redirectURL` string (optional) - The original request is prevented from + being sent or completed and is instead redirected to the given URL. + +The `listener` will be called with `listener(details, callback)` when a request +is about to occur. + +The `uploadData` is an array of `UploadData` objects. + +The `callback` has to be called with an `response` object. + +Some examples of valid `urls`: + +```js +'http://foo:1234/' +'http://foo.com/' +'http://foo:1234/bar' +'*://*/*' +'*://example.com/*' +'*://example.com/foo/*' +'http://*.foo:1234/' +'file://foo:1234/bar' +'http://foo:*/' +'*://www.foo.com/' +``` + +#### `webRequest.onBeforeSendHeaders([filter, ]listener)` + +* `filter` [WebRequestFilter](structures/web-request-filter.md) (optional) +* `listener` Function | null + * `details` Object + * `id` Integer + * `url` string + * `method` string + * `webContentsId` Integer (optional) + * `webContents` WebContents (optional) + * `frame` WebFrameMain (optional) + * `resourceType` string - Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`. + * `referrer` string + * `timestamp` Double + * `uploadData` [UploadData[]](structures/upload-data.md) (optional) + * `requestHeaders` Record + * `callback` Function + * `beforeSendResponse` Object + * `cancel` boolean (optional) + * `requestHeaders` Record (optional) - When provided, request will be made + with these headers. + +The `listener` will be called with `listener(details, callback)` before sending +an HTTP request, once the request headers are available. This may occur after a +TCP connection is made to the server, but before any http data is sent. + +The `callback` has to be called with a `response` object. + +#### `webRequest.onSendHeaders([filter, ]listener)` + +* `filter` [WebRequestFilter](structures/web-request-filter.md) (optional) +* `listener` Function | null + * `details` Object + * `id` Integer + * `url` string + * `method` string + * `webContentsId` Integer (optional) + * `webContents` WebContents (optional) + * `frame` WebFrameMain (optional) + * `resourceType` string - Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`. + * `referrer` string + * `timestamp` Double + * `requestHeaders` Record + +The `listener` will be called with `listener(details)` just before a request is +going to be sent to the server, modifications of previous `onBeforeSendHeaders` +response are visible by the time this listener is fired. + +#### `webRequest.onHeadersReceived([filter, ]listener)` + +* `filter` [WebRequestFilter](structures/web-request-filter.md) (optional) +* `listener` Function | null + * `details` Object + * `id` Integer + * `url` string + * `method` string + * `webContentsId` Integer (optional) + * `webContents` WebContents (optional) + * `frame` WebFrameMain (optional) + * `resourceType` string - Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`. + * `referrer` string + * `timestamp` Double + * `statusLine` string + * `statusCode` Integer + * `responseHeaders` Record (optional) + * `callback` Function + * `headersReceivedResponse` Object + * `cancel` boolean (optional) + * `responseHeaders` Record (optional) - When provided, the server is assumed + to have responded with these headers. + * `statusLine` string (optional) - Should be provided when overriding + `responseHeaders` to change header status otherwise original response + header's status will be used. + +The `listener` will be called with `listener(details, callback)` when HTTP +response headers of a request have been received. + +The `callback` has to be called with a `response` object. + +#### `webRequest.onResponseStarted([filter, ]listener)` + +* `filter` [WebRequestFilter](structures/web-request-filter.md) (optional) +* `listener` Function | null + * `details` Object + * `id` Integer + * `url` string + * `method` string + * `webContentsId` Integer (optional) + * `webContents` WebContents (optional) + * `frame` WebFrameMain (optional) + * `resourceType` string - Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`. + * `referrer` string + * `timestamp` Double + * `responseHeaders` Record (optional) + * `fromCache` boolean - Indicates whether the response was fetched from disk + cache. + * `statusCode` Integer + * `statusLine` string + +The `listener` will be called with `listener(details)` when first byte of the +response body is received. For HTTP requests, this means that the status line +and response headers are available. + +#### `webRequest.onBeforeRedirect([filter, ]listener)` + +* `filter` [WebRequestFilter](structures/web-request-filter.md) (optional) +* `listener` Function | null + * `details` Object + * `id` Integer + * `url` string + * `method` string + * `webContentsId` Integer (optional) + * `webContents` WebContents (optional) + * `frame` WebFrameMain (optional) + * `resourceType` string - Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`. + * `referrer` string + * `timestamp` Double + * `redirectURL` string + * `statusCode` Integer + * `statusLine` string + * `ip` string (optional) - The server IP address that the request was + actually sent to. + * `fromCache` boolean + * `responseHeaders` Record (optional) + +The `listener` will be called with `listener(details)` when a server initiated +redirect is about to occur. + +#### `webRequest.onCompleted([filter, ]listener)` + +* `filter` [WebRequestFilter](structures/web-request-filter.md) (optional) +* `listener` Function | null + * `details` Object + * `id` Integer + * `url` string + * `method` string + * `webContentsId` Integer (optional) + * `webContents` WebContents (optional) + * `frame` WebFrameMain (optional) + * `resourceType` string - Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`. + * `referrer` string + * `timestamp` Double + * `responseHeaders` Record (optional) + * `fromCache` boolean + * `statusCode` Integer + * `statusLine` string + * `error` string + +The `listener` will be called with `listener(details)` when a request is +completed. + +#### `webRequest.onErrorOccurred([filter, ]listener)` + +* `filter` [WebRequestFilter](structures/web-request-filter.md) (optional) +* `listener` Function | null + * `details` Object + * `id` Integer + * `url` string + * `method` string + * `webContentsId` Integer (optional) + * `webContents` WebContents (optional) + * `frame` WebFrameMain (optional) + * `resourceType` string - Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`. + * `referrer` string + * `timestamp` Double + * `fromCache` boolean + * `error` string - The error description. + +The `listener` will be called with `listener(details)` when an error occurs. \ No newline at end of file From 3811b7ea20881caa808ab25ff350cabb75366d57 Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 13:22:37 +0200 Subject: [PATCH 23/66] ElectronNET.API: Re-add moved types --- src/ElectronNET.API/Bridge/BridgeConnector.cs | 15 +++ src/ElectronNET.API/Bridge/Events.cs | 101 +++++++++++++++ src/ElectronNET.API/Bridge/SocketIOFacade.cs | 115 ++++++++++++++++++ .../Converter/ModifierTypeListConverter.cs | 6 +- 4 files changed, 234 insertions(+), 3 deletions(-) create mode 100644 src/ElectronNET.API/Bridge/BridgeConnector.cs create mode 100644 src/ElectronNET.API/Bridge/Events.cs create mode 100644 src/ElectronNET.API/Bridge/SocketIOFacade.cs diff --git a/src/ElectronNET.API/Bridge/BridgeConnector.cs b/src/ElectronNET.API/Bridge/BridgeConnector.cs new file mode 100644 index 0000000..3c06b43 --- /dev/null +++ b/src/ElectronNET.API/Bridge/BridgeConnector.cs @@ -0,0 +1,15 @@ +#pragma warning disable IDE0130 // Namespace does not match folder structure +// ReSharper disable once CheckNamespace +namespace ElectronNET.API +{ + internal static class BridgeConnector + { + public static SocketIoFacade Socket + { + get + { + return ElectronNetRuntime.GetSocket(); + } + } + } +} \ No newline at end of file diff --git a/src/ElectronNET.API/Bridge/Events.cs b/src/ElectronNET.API/Bridge/Events.cs new file mode 100644 index 0000000..732819a --- /dev/null +++ b/src/ElectronNET.API/Bridge/Events.cs @@ -0,0 +1,101 @@ +#pragma warning disable IDE0130 // Namespace does not match folder structure +// ReSharper disable once CheckNamespace +namespace ElectronNET.API +{ + using System; + using System.Globalization; + using System.Threading.Tasks; + + /// + /// Generic Event Consumers for Electron Modules + /// + internal class Events + { + private static Events _events; + private static readonly object SyncRoot = new(); + private readonly TextInfo _textInfo = new CultureInfo("en-US", false).TextInfo; + + private Events() + { } + + public static Events Instance + { + get + { + if (_events == null) + { + lock (SyncRoot) + { + if (_events == null) + { + _events = new Events(); + } + } + } + + return _events; + } + } + + /// + /// Subscribe to an unmapped electron event. + /// + /// The name of the module, e.g. app, dock, etc... + /// The name of the event + /// The event handler + public async Task On(string moduleName, string eventName, Action action) + { + var listener = $"{moduleName}{_textInfo.ToTitleCase(eventName)}Completed"; + var subscriber = $"register-{moduleName}-on-event"; + + BridgeConnector.Socket.On(listener, action); + await BridgeConnector.Socket.Emit(subscriber, eventName, listener).ConfigureAwait(false); + } + + + /// + /// Subscribe to an unmapped electron event. + /// + /// The name of the module, e.g. app, dock, etc... + /// The name of the event + /// The event handler + public async Task On(string moduleName, string eventName, Action action) + { + var listener = $"{moduleName}{_textInfo.ToTitleCase(eventName)}Completed"; + var subscriber = $"register-{moduleName}-on-event"; + + BridgeConnector.Socket.On(listener, action); + await BridgeConnector.Socket.Emit(subscriber, eventName, listener).ConfigureAwait(false); + } + + /// + /// Subscribe to an unmapped electron event. + /// + /// The name of the module, e.g. app, dock, etc... + /// The name of the event + /// The event handler + public async Task Once(string moduleName, string eventName, Action action) + { + var listener = $"{moduleName}{_textInfo.ToTitleCase(eventName)}Completed"; + var subscriber = $"register-{moduleName}-once-event"; + BridgeConnector.Socket.Once(listener, action); + await BridgeConnector.Socket.Emit(subscriber, eventName, listener).ConfigureAwait(false); + } + + + /// + /// Subscribe to an unmapped electron event. + /// + /// The name of the module, e.g. app, dock, etc... + /// The name of the event + /// The event handler + public async Task Once(string moduleName, string eventName, Action action) + { + var listener = $"{moduleName}{_textInfo.ToTitleCase(eventName)}Completed"; + var subscriber = $"register-{moduleName}-once-event"; + BridgeConnector.Socket.Once(listener, action); + await BridgeConnector.Socket.Emit(subscriber, eventName, listener).ConfigureAwait(false); + } + + } +} diff --git a/src/ElectronNET.API/Bridge/SocketIOFacade.cs b/src/ElectronNET.API/Bridge/SocketIOFacade.cs new file mode 100644 index 0000000..c3815d6 --- /dev/null +++ b/src/ElectronNET.API/Bridge/SocketIOFacade.cs @@ -0,0 +1,115 @@ +#pragma warning disable IDE0130 // Namespace does not match folder structure +// ReSharper disable once CheckNamespace +namespace ElectronNET.API; + +using System; +using System.Threading.Tasks; +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; +using SocketIO.Serializer.NewtonsoftJson; +using SocketIO = SocketIOClient.SocketIO; + +internal class SocketIoFacade +{ + private readonly SocketIO _socket; + + public SocketIoFacade(string uri) + { + _socket = new SocketIO(uri); + var jsonSerializer = new NewtonsoftJsonSerializer(new JsonSerializerSettings + { + ContractResolver = new CamelCasePropertyNamesContractResolver(), + NullValueHandling = NullValueHandling.Ignore, + DefaultValueHandling = DefaultValueHandling.Ignore + }); + + _socket.Serializer = jsonSerializer; + } + + public event EventHandler BridgeDisconnected; + + public event EventHandler BridgeConnected; + + public void Connect() + { + _socket.OnError += (sender, e) => + { + Console.WriteLine($"BridgeConnector Error: {sender} {e}"); + }; + + _socket.OnConnected += (_, _) => + { + Console.WriteLine("BridgeConnector connected!"); + this.BridgeConnected?.Invoke(this, EventArgs.Empty); + }; + + _socket.OnDisconnected += (_, _) => + { + Console.WriteLine("BridgeConnector disconnected!"); + this.BridgeDisconnected?.Invoke(this, EventArgs.Empty); + }; + + _socket.ConnectAsync().GetAwaiter().GetResult(); + } + + public void On(string eventName, Action action) + { + _socket.On(eventName, _ => + { + Task.Run(action); + }); + } + + public void On(string eventName, Action action) + { + _socket.On(eventName, response => + { + var value = response.GetValue(); + Task.Run(() => action(value)); + }); + } + + // TODO: Remove this method when SocketIoClient supports object deserialization + public void On(string eventName, Action action) + { + _socket.On(eventName, response => + { + var value = response.GetValue(); + ////Console.WriteLine($"Called Event {eventName} - data {value}"); + Task.Run(() => action(value)); + }); + } + + public void Once(string eventName, Action action) + { + _socket.On(eventName, _ => + { + _socket.Off(eventName); + Task.Run(action); + }); + } + + public void Once(string eventName, Action action) + { + _socket.On(eventName, (socketIoResponse) => + { + _socket.Off(eventName); + Task.Run(() => action(socketIoResponse.GetValue())); + }); + } + + public void Off(string eventName) + { + _socket.Off(eventName); + } + + public async Task Emit(string eventName, params object[] args) + { + await _socket.EmitAsync(eventName, args).ConfigureAwait(false); + } + + public void DisposeSocket() + { + _socket.Dispose(); + } +} \ No newline at end of file diff --git a/src/ElectronNET.API/Converter/ModifierTypeListConverter.cs b/src/ElectronNET.API/Converter/ModifierTypeListConverter.cs index e4b4446..5d1daed 100644 --- a/src/ElectronNET.API/Converter/ModifierTypeListConverter.cs +++ b/src/ElectronNET.API/Converter/ModifierTypeListConverter.cs @@ -1,12 +1,12 @@ -using System; +namespace ElectronNET.Converter; + +using System; using System.Collections.Generic; using System.Linq; using ElectronNET.API.Entities; using Newtonsoft.Json; using Newtonsoft.Json.Linq; -namespace ElectronNET.API.Converter; - /// /// /// From b06d20450beadcf3435da8ef3028231154c8db61 Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 13:23:10 +0200 Subject: [PATCH 24/66] ElectronNET.API: Add ProcessRunner (for running electron from dotnet) --- src/ElectronNET.API/Common/ProcessRunner.cs | 595 ++++++++++++++++++++ src/ElectronNET.API/Common/RunnerParams.cs | 163 ++++++ 2 files changed, 758 insertions(+) create mode 100644 src/ElectronNET.API/Common/ProcessRunner.cs create mode 100644 src/ElectronNET.API/Common/RunnerParams.cs diff --git a/src/ElectronNET.API/Common/ProcessRunner.cs b/src/ElectronNET.API/Common/ProcessRunner.cs new file mode 100644 index 0000000..f3c3529 --- /dev/null +++ b/src/ElectronNET.API/Common/ProcessRunner.cs @@ -0,0 +1,595 @@ +namespace ElectronNET.Common +{ + using System; + using System.Diagnostics; + using System.Diagnostics.CodeAnalysis; + using System.Text; + using System.Threading; + using System.Threading.Tasks; + + /// + /// Class encapsulating out-of-process execution of console applications. + /// + /// + /// Why this class? + /// Probably everybody who has tried to use System.Diagnotics.Process cross-platform and with reading + /// stderr and stdout will know that it is a pretty quirky API. + /// The code below may look weird, even non-sensical, but it works 100% reliable with all .net frameworks + /// and .net versions and on every platform where .net runs. This is just the innermost core, that's why + /// there are many dead ends, but it has all the crucial parts. + /// + /// + [SuppressMessage("ReSharper", "SuspiciousLockOverSynchronizationPrimitive")] + public class ProcessRunner : IDisposable + { + private volatile Process process; + private readonly StringBuilder stdOut = new StringBuilder(4 * 1024); + private readonly StringBuilder stdErr = new StringBuilder(4 * 1024); + + private volatile ManualResetEvent stdOutEvent; + private volatile ManualResetEvent stdErrEvent; + private volatile Stopwatch stopwatch; + + /// Initializes a new instance of the class. + /// A name identifying the process to execute. + public ProcessRunner(string name) + { + this.Name = name; + } + + public event EventHandler ProcessExited; + + public bool IsDisposed { get; private set; } + + private Process Process + { + get + { + return this.process; + } + } + + public bool IsRunning + { + get + { + var proc = this.process; + if (proc != null) + { + try + { + return !proc.HasExited; + } + catch + { + return false; + } + } + + return false; + } + } + + /// Gets the name identifying the process. + /// The name. + public string Name { get; } + + public string CommandLine { get; private set; } + + public string ExecutableFileName { get; private set; } + + public string WorkingFolder { get; private set; } + + public bool RecordStandardOutput { get; set; } + + public bool RecordStandardError { get; set; } + + public string StandardOutput + { + get + { + lock (this.stdOut) + { + return this.stdOut.ToString(); + } + } + } + + public string StandardError + { + get + { + lock (this.stdErr) + { + return this.stdErr.ToString(); + } + } + } + + public int? LastExitCode { get; private set; } + + public bool Run(string exeFileName, string commandLineArgs, string workingDirectory) + { + this.CommandLine = commandLineArgs; + this.WorkingFolder = workingDirectory; + this.ExecutableFileName = exeFileName; + + var startInfo = new RunnerParams(exeFileName) + { + Arguments = commandLineArgs, + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true, + RedirectStandardInput = true, + ErrorDialog = false, + CreateNoWindow = true, + WorkingDirectory = workingDirectory + }; + + return this.Run(startInfo); + } + + protected bool Run(RunnerParams runnerParams) + { + if (this.IsDisposed) + { + throw new ObjectDisposedException(this.GetType().ToString()); + } + + this.Close(); + + this.LastExitCode = null; + + lock (this.stdOut) + { + this.stdOut.Clear(); + } + + lock (this.stdErr) + { + this.stdErr.Clear(); + } + + this.stdOutEvent = new ManualResetEvent(false); + this.stdErrEvent = new ManualResetEvent(false); + + if (!this.OnBeforeStartProcessCore(runnerParams)) + { + return false; + } + + var startInfo = new ProcessStartInfo(runnerParams.FileName) + { + Arguments = runnerParams.Arguments, + UseShellExecute = runnerParams.UseShellExecute, + RedirectStandardOutput = runnerParams.RedirectStandardOutput, + RedirectStandardError = runnerParams.RedirectStandardError, + RedirectStandardInput = runnerParams.RedirectStandardInput, + ErrorDialog = runnerParams.ErrorDialog, + CreateNoWindow = runnerParams.CreateNoWindow, + WorkingDirectory = runnerParams.WorkingDirectory + }; + + foreach (var variableSetting in runnerParams.EnvironmentVariables) + { + startInfo.EnvironmentVariables[variableSetting.Key] = variableSetting.Value; + } + + var proc = new Process { StartInfo = startInfo }; + + proc.EnableRaisingEvents = true; + + this.RegisterProcessEvents(proc); + + this.process = proc; + + try + { + this.process.Start(); + this.stopwatch = Stopwatch.StartNew(); + this.process.BeginOutputReadLine(); + this.process.BeginErrorReadLine(); + this.process.Refresh(); + this.OnProcessStartedCore(); + } + catch (Exception ex) + { + this.OnProcessErrorCore(ex); + this.Close(); + throw; + } + + return true; + } + + public async Task WriteAsync(string data) + { + var proc = this.Process; + if (proc != null && !proc.HasExited) + { + try + { + await proc.StandardInput.WriteAsync(data).ConfigureAwait(false); + return true; + } + catch (Exception ex) + { + Console.WriteLine("{0}.{1}: {2}", ex, nameof(ProcessRunner), nameof(this.WriteAsync)); + } + } + + return false; + } + + public bool WaitForExit() + { + var proc = this.process; + + if (proc == null) + { + return true; + } + + try + { + // Wait for process and all I/O to finish. + proc.WaitForExit(); + return true; + } + catch (Exception ex) + { + this.OnProcessErrorCore(ex); + return false; + } + } + + /// Sychronously waits for the specified amount and ends the process afterwards. + /// The timeout ms. + /// This method allows for a clean exit, since it also waits until the StandardOutput and + /// StandardError pipes are processed to the end. + /// true, if the process has exited gracefully; false otherwise. + public bool WaitAndKill(int timeoutMs) + { + var proc = this.process; + + if (proc == null) + { + return true; + } + + try + { + if (timeoutMs <= 0) + { + throw new ArgumentException("Argument must be greater then 0", nameof(timeoutMs)); + } + + // Timed waiting. We need to wait for I/O ourselves. + if (!proc.WaitForExit(timeoutMs)) + { + this.Cancel(); + } + + // Wait for the I/O to finish. + var waitMs = (int)(timeoutMs - this.stopwatch.ElapsedMilliseconds); + waitMs = Math.Max(waitMs, 10); + this.stdOutEvent?.WaitOne(waitMs); + + waitMs = (int)(timeoutMs - this.stopwatch.ElapsedMilliseconds); + waitMs = Math.Max(waitMs, 10); + return this.stdErrEvent?.WaitOne(waitMs) ?? false; + } + finally + { + // Cleanup. + this.Cancel(); + } + } + + /// Asynchronously waits for the specified amount and ends the process afterwards. + /// The timeout ms. + /// Tjhis method performs the wait operation on a threadpool thread. + /// Only recommended for short timeouts and situations where a synchronous call is undesired. + /// true, if the process has exited gracefully; false otherwise. + public Task WaitAndKillAsync(int timeoutMs) + { + var task = Task.Run(() => this.WaitAndKill(timeoutMs)); + return task; + } + + /// Waits asynchronously for the process to exit. + /// The timeout ms. + /// The cancellation token. + /// true, if the process has exited, false if the process is still running. + /// + /// This methods waits until the process has existed or the + /// has elapsed. + /// This method does not end the process itself. + /// + public Task WaitForExitAsync(int timeoutMs, CancellationToken cancellationToken = default) + { + timeoutMs = Math.Max(0, timeoutMs); + + var timeoutSource = new CancellationTokenSource(timeoutMs); + var linkedSource = CancellationTokenSource.CreateLinkedTokenSource(timeoutSource.Token, cancellationToken); + + return this.WaitForExitAsync(linkedSource.Token); + } + + /// Waits asynchronously for the process to exit. + /// The cancellation token. + /// This methods waits until the process has existed or the + /// has been triggered. + /// This method does not end the process itself. + /// true, if the process has exited, false if the process is still running. + public async Task WaitForExitAsync(CancellationToken cancellationToken = default(CancellationToken)) + { + var proc = this.process; + + if (proc == null) + { + return true; + } + + var tcs = new TaskCompletionSource(); + + // Use local function instead of a lambda to allow proper deregistration of the event + void ProcessExited(object sender, EventArgs e) + { + tcs.TrySetResult(true); + } + + try + { + proc.EnableRaisingEvents = true; + proc.Exited += ProcessExited; + + if (proc.HasExited) + { + return true; + } + + using (cancellationToken.Register(() => tcs.TrySetResult(false))) + { + return await tcs.Task.ConfigureAwait(false); + } + } + finally + { + proc.Exited -= ProcessExited; + } + } + + public void Cancel() + { + var proc = this.process; + + if (proc != null) + { + try + { + // Invalidate cached data to requery. + proc.Refresh(); + + // We need to do this in case of a non-UI proc + // or one to be forced to cancel. + if (!proc.HasExited) + { + // Cancel all pending IO ops. + proc.CancelErrorRead(); + proc.CancelOutputRead(); + } + + if (!proc.HasExited) + { + proc.Kill(); + } + } + catch + { + // Kill will throw when/if the process has already exited. + } + } + + var outEvent = this.stdOutEvent; + this.stdOutEvent = null; + if (outEvent != null) + { + lock (outEvent) + { + outEvent.Close(); + outEvent.Dispose(); + } + } + + var errEvent = this.stdErrEvent; + this.stdErrEvent = null; + if (errEvent != null) + { + lock (errEvent) + { + errEvent.Close(); + errEvent.Dispose(); + } + } + } + + private void Close() + { + this.Cancel(); + + var proc = this.process; + this.process = null; + if (proc != null) + { + try + { + this.UnRegisterProcessEvents(proc); + + // Dispose in all cases. + proc.Close(); + proc.Dispose(); + } + catch (Exception ex) + { + this.OnProcessErrorCore(ex); + } + } + } + + protected virtual void OnDispose() + { + } + + void IDisposable.Dispose() + { + this.IsDisposed = true; + this.Close(); + this.OnDispose(); + } + + public override string ToString() + { + return string.Format("{0}: {1} {2}", this.GetType().Name, this.Name, this.process); + } + + protected virtual bool OnBeforeStartProcessCore(RunnerParams processRunnerInfo) + { + return true; + } + + protected virtual void OnProcessStartedCore() + { + } + + protected virtual void OnProcessErrorCore(Exception processException) + { + } + + protected virtual void OnProcessExitCore(int exitCode) + { + } + + private void RegisterProcessEvents(Process proc) + { + proc.ErrorDataReceived += this.Process_ErrorDataReceived; + proc.OutputDataReceived += this.Process_OutputDataReceived; + proc.Exited += this.Process_Exited; + } + + private void UnRegisterProcessEvents(Process proc) + { + proc.ErrorDataReceived -= this.Process_ErrorDataReceived; + proc.OutputDataReceived -= this.Process_OutputDataReceived; + proc.Exited -= this.Process_Exited; + } + + private void Process_Exited(object sender, EventArgs e) + { + this.WaitForExitAfterExited(); + this.SetExitCode(); + this.OnProcessExitCore(this.LastExitCode ?? -9998); + this.ProcessExited?.Invoke(this, new EventArgs()); + } + + private void WaitForExitAfterExited() + { + try + { + // This shouldn't throw here, but the mono process implementation doesn't always behave as it should. + this.process.WaitForExit(); + } + catch (Exception ex) + { + Console.WriteLine("Error when calling WaitForExit after exited event has fired: {0}.{1}: {2}", ex, nameof(ProcessRunner), nameof(this.WaitForExitAfterExited)); + } + } + + private void SetExitCode() + { + int exitCode = -9999; + + try + { + if (this.Process != null) + { + exitCode = this.Process.ExitCode; + } + } + catch + { + // Ignore error. + } + + this.LastExitCode = exitCode; + } + + private void Process_ErrorDataReceived(object sender, DataReceivedEventArgs e) + { + if (this.RecordStandardError) + { + lock (this.stdErr) + { + this.stdErr.AppendLine(e.Data); + } + } + + if (e.Data != null) + { + Console.WriteLine("|| " + e.Data); + } + else + { + var evt = this.stdErrEvent; + if (evt != null) + { + lock (evt) + { + try + { + evt.Set(); + } + catch + { + // Ignore error. + } + } + } + } + } + + private void Process_OutputDataReceived(object sender, DataReceivedEventArgs e) + { + if (this.RecordStandardOutput) + { + lock (this.stdOut) + { + this.stdOut.AppendLine(e.Data); + } + } + + if (e.Data != null) + { + Console.WriteLine("|| " + e.Data); + } + else + { + var evt = this.stdOutEvent; + if (evt != null) + { + lock (evt) + { + try + { + evt.Set(); + } + catch + { + // Ignore error. + } + } + } + } + } + } +} \ No newline at end of file diff --git a/src/ElectronNET.API/Common/RunnerParams.cs b/src/ElectronNET.API/Common/RunnerParams.cs new file mode 100644 index 0000000..001b881 --- /dev/null +++ b/src/ElectronNET.API/Common/RunnerParams.cs @@ -0,0 +1,163 @@ +namespace ElectronNET.Common +{ + using System; + using System.Collections.Generic; + using System.ComponentModel; + using System.Diagnostics; + using System.Text; + + public sealed class RunnerParams + { + private string fileName; + private string arguments; + private string directory; + private string userName; + private string verb; + private ProcessWindowStyle windowStyle; + + /// + /// Default constructor. At least the + /// property must be set before starting the process. + /// + public RunnerParams() + { + } + + /// + /// Specifies the name of the application or document that is to be started. + /// + public RunnerParams(string fileName) + { + this.fileName = fileName; + } + + /// + /// Specifies the name of the application that is to be started, as well as a set + /// of command line arguments to pass to the application. + /// + public RunnerParams(string fileName, string arguments) + { + this.fileName = fileName; + this.arguments = arguments; + } + + /// + /// Specifies the set of command line arguments to use when starting the application. + /// + public string Arguments + { + get + { + return this.arguments ?? string.Empty; + } + + set + { + this.arguments = value; + } + } + + public bool CreateNoWindow { get; set; } + + public Dictionary EnvironmentVariables { get; set; } = new Dictionary(); + + public bool RedirectStandardInput { get; set; } + + public bool RedirectStandardOutput { get; set; } + + public bool RedirectStandardError { get; set; } + + public Encoding StandardInputEncoding { get; set; } + + public Encoding StandardErrorEncoding { get; set; } + + public Encoding StandardOutputEncoding { get; set; } + + /// + /// + /// Returns or sets the application, document, or URL that is to be launched. + /// + /// + public string FileName + { + get + { + return this.fileName ?? string.Empty; + } + + set + { + this.fileName = value; + } + } + + /// + /// Returns or sets the initial directory for the process that is started. + /// Specify "" to if the default is desired. + /// + public string WorkingDirectory + { + get + { + return this.directory ?? string.Empty; + } + + set + { + this.directory = value; + } + } + + public bool ErrorDialog { get; set; } + + public IntPtr ErrorDialogParentHandle { get; set; } + + public string UserName + { + get + { + return this.userName ?? string.Empty; + } + + set + { + this.userName = value; + } + } + + [DefaultValue("")] + public string Verb + { + get + { + return this.verb ?? string.Empty; + } + + set + { + this.verb = value; + } + } + + [DefaultValue(ProcessWindowStyle.Normal)] + public ProcessWindowStyle WindowStyle + { + get + { + return this.windowStyle; + } + + set + { + if (!Enum.IsDefined(typeof(ProcessWindowStyle), value)) + { + throw new InvalidEnumArgumentException(nameof(value), (int)value, typeof(ProcessWindowStyle)); + } + + this.windowStyle = value; + } + } + + public bool UseShellExecute { get; set; } + } +} \ No newline at end of file From d1db92822299e657268f5f205c71bb200e8b9706 Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 13:24:28 +0200 Subject: [PATCH 25/66] ElectronNET.API: Add new runtime code (for launch, lifecycle and service orchestration) --- src/ElectronNET.API/Common/Extensions.cs | 37 ++++ src/ElectronNET.API/ElectronNetRuntime.cs | 55 ++++++ .../Controllers/RuntimeControllerBase.cs | 33 ++++ .../RuntimeControllerDotNetFirst.cs | 107 ++++++++++++ .../RuntimeControllerElectronFirst.cs | 108 ++++++++++++ src/ElectronNET.API/Runtime/Data/BuildInfo.cs | 19 ++ .../Runtime/Data/DotnetAppType.cs | 11 ++ .../Runtime/Data/LifetimeState.cs | 12 ++ .../Runtime/Data/StartupMethod.cs | 37 ++++ .../Runtime/Helpers/LaunchOrderDetector.cs | 72 ++++++++ .../Runtime/Helpers/PortHelper.cs | 26 +++ .../Runtime/Helpers/UnpackagedDetector.cs | 109 ++++++++++++ .../Runtime/IElectronNetRuntimeController.cs | 33 ++++ .../ElectronProcess/ElectronProcessActive.cs | 94 ++++++++++ .../ElectronProcess/ElectronProcessBase.cs | 15 ++ .../ElectronProcess/ElectronProcessPassive.cs | 53 ++++++ .../Runtime/Services/LifetimeServiceBase.cs | 135 +++++++++++++++ .../SocketBridge/SocketBridgeService.cs | 56 ++++++ src/ElectronNET.API/Runtime/StartupManager.cs | 163 ++++++++++++++++++ 19 files changed, 1175 insertions(+) create mode 100644 src/ElectronNET.API/Common/Extensions.cs create mode 100644 src/ElectronNET.API/ElectronNetRuntime.cs create mode 100644 src/ElectronNET.API/Runtime/Controllers/RuntimeControllerBase.cs create mode 100644 src/ElectronNET.API/Runtime/Controllers/RuntimeControllerDotNetFirst.cs create mode 100644 src/ElectronNET.API/Runtime/Controllers/RuntimeControllerElectronFirst.cs create mode 100644 src/ElectronNET.API/Runtime/Data/BuildInfo.cs create mode 100644 src/ElectronNET.API/Runtime/Data/DotnetAppType.cs create mode 100644 src/ElectronNET.API/Runtime/Data/LifetimeState.cs create mode 100644 src/ElectronNET.API/Runtime/Data/StartupMethod.cs create mode 100644 src/ElectronNET.API/Runtime/Helpers/LaunchOrderDetector.cs create mode 100644 src/ElectronNET.API/Runtime/Helpers/PortHelper.cs create mode 100644 src/ElectronNET.API/Runtime/Helpers/UnpackagedDetector.cs create mode 100644 src/ElectronNET.API/Runtime/IElectronNetRuntimeController.cs create mode 100644 src/ElectronNET.API/Runtime/Services/ElectronProcess/ElectronProcessActive.cs create mode 100644 src/ElectronNET.API/Runtime/Services/ElectronProcess/ElectronProcessBase.cs create mode 100644 src/ElectronNET.API/Runtime/Services/ElectronProcess/ElectronProcessPassive.cs create mode 100644 src/ElectronNET.API/Runtime/Services/LifetimeServiceBase.cs create mode 100644 src/ElectronNET.API/Runtime/Services/SocketBridge/SocketBridgeService.cs create mode 100644 src/ElectronNET.API/Runtime/StartupManager.cs diff --git a/src/ElectronNET.API/Common/Extensions.cs b/src/ElectronNET.API/Common/Extensions.cs new file mode 100644 index 0000000..8d9a90a --- /dev/null +++ b/src/ElectronNET.API/Common/Extensions.cs @@ -0,0 +1,37 @@ +namespace ElectronNET.Common +{ + using System; + using System.Collections.Immutable; + using ElectronNET.Runtime.Data; + using ElectronNET.Runtime.Services; + + public static class Extensions + { + public static bool IsUnpackaged(this StartupMethod method) + { + switch (method) + { + case StartupMethod.UnpackedElectronFirst: + case StartupMethod.UnpackedDotnetFirst: + return true; + default: + return false; + } + } + + public static bool IsReady(this LifetimeServiceBase service) + { + return service != null && service.State == LifetimeState.Ready; + } + + public static bool IsNotStopped(this LifetimeServiceBase service) + { + return service != null && service.State != LifetimeState.Stopped; + } + + public static bool IsNullOrStopped(this LifetimeServiceBase service) + { + return service == null || service.State == LifetimeState.Stopped; + } + } +} diff --git a/src/ElectronNET.API/ElectronNetRuntime.cs b/src/ElectronNET.API/ElectronNetRuntime.cs new file mode 100644 index 0000000..bf3ce4e --- /dev/null +++ b/src/ElectronNET.API/ElectronNetRuntime.cs @@ -0,0 +1,55 @@ +namespace ElectronNET +{ + using System; + using System.Collections.Immutable; + using System.Threading.Tasks; + using ElectronNET.API; + using ElectronNET.Runtime; + using ElectronNET.Runtime.Controllers; + using ElectronNET.Runtime.Data; + + public static class ElectronNetRuntime + { + internal static StartupManager StartupManager; + + internal const int DefaultSocketPort = 8000; + internal const int DefaultWebPort = 8001; + internal const string ElectronPortArgumentName = "electronPort"; + internal const string ElectronPidArgumentName = "electronPID"; + + /// Initializes the class. + static ElectronNetRuntime() + { + StartupManager = new StartupManager(); + StartupManager.Initialize(); + } + + public static int? ElectronSocketPort { get; internal set; } + + public static int? AspNetWebPort { get; internal set; } + + public static StartupMethod StartupMethod { get; internal set; } + + public static DotnetAppType DotnetAppType { get; internal set; } + + public static string ElectronExecutable { get; internal set; } + + public static ImmutableList ProcessArguments { get; internal set; } + + public static BuildInfo BuildInfo { get; internal set; } + + public static IElectronNetRuntimeController RuntimeController => RuntimeControllerCore; + + // The below properties are non-public + internal static RuntimeControllerBase RuntimeControllerCore { get; set; } + + internal static int? ElectronProcessId { get; set; } + + internal static Func OnAppReadyCallback { get; set; } + + internal static SocketIoFacade GetSocket() + { + return RuntimeControllerCore?.Socket; + } + } +} diff --git a/src/ElectronNET.API/Runtime/Controllers/RuntimeControllerBase.cs b/src/ElectronNET.API/Runtime/Controllers/RuntimeControllerBase.cs new file mode 100644 index 0000000..c80c0d6 --- /dev/null +++ b/src/ElectronNET.API/Runtime/Controllers/RuntimeControllerBase.cs @@ -0,0 +1,33 @@ +namespace ElectronNET.Runtime.Controllers +{ + using System.Threading.Tasks; + using ElectronNET.API; + using ElectronNET.Runtime.Services; + using ElectronNET.Runtime.Services.ElectronProcess; + using ElectronNET.Runtime.Services.SocketBridge; + + internal abstract class RuntimeControllerBase : LifetimeServiceBase, IElectronNetRuntimeController + { + protected RuntimeControllerBase() + { + } + + internal abstract SocketIoFacade Socket { get; } + + internal abstract ElectronProcessBase ElectronProcess { get; } + + internal abstract SocketBridgeService SocketBridge { get; } + + protected override Task StartCore() + { + + return Task.CompletedTask; + } + + protected override Task StopCore() + { + return Task.CompletedTask; + } + + } +} diff --git a/src/ElectronNET.API/Runtime/Controllers/RuntimeControllerDotNetFirst.cs b/src/ElectronNET.API/Runtime/Controllers/RuntimeControllerDotNetFirst.cs new file mode 100644 index 0000000..7b8e888 --- /dev/null +++ b/src/ElectronNET.API/Runtime/Controllers/RuntimeControllerDotNetFirst.cs @@ -0,0 +1,107 @@ +namespace ElectronNET.Runtime.Controllers +{ + using System; + using System.Threading.Tasks; + using ElectronNET.API; + using ElectronNET.Common; + using ElectronNET.Runtime.Data; + using ElectronNET.Runtime.Helpers; + using ElectronNET.Runtime.Services.ElectronProcess; + using ElectronNET.Runtime.Services.SocketBridge; + + internal class RuntimeControllerDotNetFirst : RuntimeControllerBase + { + private ElectronProcessBase electronProcess; + private SocketBridgeService socketBridge; + private int? port; + + public RuntimeControllerDotNetFirst() + { + } + + internal override SocketIoFacade Socket + { + get + { + if (this.State == LifetimeState.Ready) + { + return this.socketBridge.Socket; + } + + throw new Exception("Cannot access socket bridge. Runtime is not in 'Ready' state"); + } + } + + internal override ElectronProcessBase ElectronProcess => this.electronProcess; + + internal override SocketBridgeService SocketBridge => this.socketBridge; + + protected override Task StartCore() + { + var isUnPacked = ElectronNetRuntime.StartupMethod.IsUnpackaged(); + var electronBinaryName = ElectronNetRuntime.ElectronExecutable; + var args = Environment.CommandLine; + this.port = ElectronNetRuntime.ElectronSocketPort; + + if (!this.port.HasValue) + { + this.port = PortHelper.GetFreePort(ElectronNetRuntime.DefaultSocketPort); + ElectronNetRuntime.ElectronSocketPort = this.port; + } + + this.electronProcess = new ElectronProcessActive(isUnPacked, electronBinaryName, args, this.port.Value); + this.electronProcess.Ready += this.ElectronProcess_Ready; + this.electronProcess.Stopped += this.ElectronProcess_Stopped; + + return this.electronProcess.Start(); + } + + private void ElectronProcess_Ready(object sender, EventArgs e) + { + this.TransitionState(LifetimeState.Started); + this.socketBridge = new SocketBridgeService(this.port!.Value); + this.socketBridge.Ready += this.SocketBridge_Ready; + this.socketBridge.Stopped += this.SocketBridge_Stopped; + this.socketBridge.Start(); + } + + private void SocketBridge_Ready(object sender, EventArgs e) + { + this.TransitionState(LifetimeState.Ready); + + } + + private void SocketBridge_Stopped(object sender, EventArgs e) + { + this.HandleStopped(); + } + + private void ElectronProcess_Stopped(object sender, EventArgs e) + { + this.HandleStopped(); + } + + private void HandleStopped() + { + if (this.socketBridge.State != LifetimeState.Stopped) + { + this.socketBridge.Stop(); + } + else if (this.electronProcess.State != LifetimeState.Stopped) + { + this.electronProcess.Stop(); + } + else + { + this.TransitionState(LifetimeState.Stopped); + } + } + + protected override Task StopCore() + { + this.electronProcess.Stop(); + return Task.CompletedTask; + } + + } +} diff --git a/src/ElectronNET.API/Runtime/Controllers/RuntimeControllerElectronFirst.cs b/src/ElectronNET.API/Runtime/Controllers/RuntimeControllerElectronFirst.cs new file mode 100644 index 0000000..c8b9031 --- /dev/null +++ b/src/ElectronNET.API/Runtime/Controllers/RuntimeControllerElectronFirst.cs @@ -0,0 +1,108 @@ +namespace ElectronNET.Runtime.Controllers +{ + using System; + using System.Threading.Tasks; + using ElectronNET.API; + using ElectronNET.Runtime.Data; + using ElectronNET.Runtime.Services.ElectronProcess; + using ElectronNET.Runtime.Services.SocketBridge; + + internal class RuntimeControllerElectronFirst : RuntimeControllerBase + { + private ElectronProcessBase electronProcess; + private SocketBridgeService socketBridge; + private int? port; + + public RuntimeControllerElectronFirst() + { + } + + internal override SocketIoFacade Socket + { + get + { + if (this.State == LifetimeState.Ready) + { + return this.socketBridge.Socket; + } + + throw new Exception("Cannot access socket bridge. Runtime is not in 'Ready' state"); + } + } + + internal override ElectronProcessBase ElectronProcess => this.electronProcess; + + internal override SocketBridgeService SocketBridge => this.socketBridge; + + protected override Task StartCore() + { + this.port = ElectronNetRuntime.ElectronSocketPort; + + if (!this.port.HasValue) + { + throw new Exception("No port has been specified by Electron!"); + } + + if (!ElectronNetRuntime.ElectronProcessId.HasValue) + { + throw new Exception("No electronPID has been specified by Electron!"); + } + + this.TransitionState(LifetimeState.Starting); + this.socketBridge = new SocketBridgeService(this.port!.Value); + this.socketBridge.Ready += this.SocketBridge_Ready; + this.socketBridge.Stopped += this.SocketBridge_Stopped; + this.socketBridge.Start(); + + this.electronProcess = new ElectronProcessPassive(ElectronNetRuntime.ElectronProcessId.Value); + this.electronProcess.Ready += this.ElectronProcess_Ready; + this.electronProcess.Stopped += this.ElectronProcess_Stopped; + + this.electronProcess.Start(); + + return Task.CompletedTask; + } + + private void ElectronProcess_Ready(object sender, EventArgs e) + { + } + + private void SocketBridge_Ready(object sender, EventArgs e) + { + this.TransitionState(LifetimeState.Ready); + } + + private void SocketBridge_Stopped(object sender, EventArgs e) + { + this.HandleStopped(); + } + + private void ElectronProcess_Stopped(object sender, EventArgs e) + { + this.HandleStopped(); + } + + private void HandleStopped() + { + if (this.socketBridge.State != LifetimeState.Stopped) + { + this.socketBridge.Stop(); + } + else if (this.electronProcess.State != LifetimeState.Stopped) + { + this.electronProcess.Stop(); + } + else + { + this.TransitionState(LifetimeState.Stopped); + } + } + + protected override Task StopCore() + { + this.socketBridge.Stop(); + return Task.CompletedTask; + } + + } +} diff --git a/src/ElectronNET.API/Runtime/Data/BuildInfo.cs b/src/ElectronNET.API/Runtime/Data/BuildInfo.cs new file mode 100644 index 0000000..cb71aa0 --- /dev/null +++ b/src/ElectronNET.API/Runtime/Data/BuildInfo.cs @@ -0,0 +1,19 @@ +namespace ElectronNET.Runtime.Data +{ + public class BuildInfo + { + public string ElectronExecutable { get; internal set; } + + public string ElectronVersion { get; internal set; } + + public string RuntimeIdentifier { get; internal set; } + + public string ElectronSingleInstance { get; internal set; } + + public string Title { get; internal set; } + + public string Version { get; internal set; } + + public string BuildConfiguration { get; internal set; } + } +} \ No newline at end of file diff --git a/src/ElectronNET.API/Runtime/Data/DotnetAppType.cs b/src/ElectronNET.API/Runtime/Data/DotnetAppType.cs new file mode 100644 index 0000000..d52328a --- /dev/null +++ b/src/ElectronNET.API/Runtime/Data/DotnetAppType.cs @@ -0,0 +1,11 @@ +namespace ElectronNET.Runtime.Data +{ + public enum DotnetAppType + { + /// A plain DotNet cross-platform console app. + ConsoleApp, + + /// ASP.NET Core cross-platform app. + AspNetCoreApp, + } +} diff --git a/src/ElectronNET.API/Runtime/Data/LifetimeState.cs b/src/ElectronNET.API/Runtime/Data/LifetimeState.cs new file mode 100644 index 0000000..1785887 --- /dev/null +++ b/src/ElectronNET.API/Runtime/Data/LifetimeState.cs @@ -0,0 +1,12 @@ +namespace ElectronNET.Runtime.Data +{ + public enum LifetimeState + { + Uninitialized, + Starting, + Started, + Ready, + Stopping, + Stopped, + } +} diff --git a/src/ElectronNET.API/Runtime/Data/StartupMethod.cs b/src/ElectronNET.API/Runtime/Data/StartupMethod.cs new file mode 100644 index 0000000..9d3e380 --- /dev/null +++ b/src/ElectronNET.API/Runtime/Data/StartupMethod.cs @@ -0,0 +1,37 @@ +namespace ElectronNET.Runtime.Data +{ + public enum StartupMethod + { + /// Packaged Electron app where Electron launches the DotNet app. + /// + /// This is the classic way of ElectrronNET startup. + /// + PackagedElectronFirst, + + /// Packaged Electron app where DotNet launches the Electron prozess. + /// + /// Provides better ways for managing the overall app lifecycle. + /// On the command lines, this is "dotnetpacked" + /// + PackagedDotnetFirst, + + /// Unpackacked execution for debugging the Electron process and NodeJS. + /// + /// Similar to the legacy ElectronNET debugging but without packaging (=fast) and allows selection of + /// the debug adapter. It's rarely useful, unless it's about debugging NodeJS. + /// Note: 'Unpackaged' means that it's run directly from the compilation output folders (./bin/*). + /// On the command lines, this is "unpackedelectron" + /// + UnpackedElectronFirst, + + + /// Unpackacked execution for debugging the DotNet process. + /// + /// This is the new way of super-fast startup for debugging in-place with Hot Reload + /// (edit and continue), even on WSL - all from within Visual Studio. + /// Note: 'Unpackaged' means that it's run directly from the compilation output folders (./bin/*). + /// On the command lines, this is "unpackeddotnet" + /// + UnpackedDotnetFirst, + } +} diff --git a/src/ElectronNET.API/Runtime/Helpers/LaunchOrderDetector.cs b/src/ElectronNET.API/Runtime/Helpers/LaunchOrderDetector.cs new file mode 100644 index 0000000..8320cfe --- /dev/null +++ b/src/ElectronNET.API/Runtime/Helpers/LaunchOrderDetector.cs @@ -0,0 +1,72 @@ +namespace ElectronNET.Runtime.Helpers +{ + using System; + using System.Collections.Generic; + using System.Diagnostics; + using System.Linq; + + internal class LaunchOrderDetector + { + public static bool CheckIsLaunchedByDotNet() + { + var tests = new List>(); + + tests.Add(CheckIsDotNetStartup1); + tests.Add(CheckIsDotNetStartup2); + tests.Add(CheckIsDotNetStartup3); + + int scoreDotNet = 0, scoreElectron = 0; + + foreach (var test in tests) + { + var res = test(); + + if (res == true) + { + scoreDotNet++; + } + + if (res == false) + { + scoreElectron++; + } + } + + Console.WriteLine("Probe scored for launch origin: DotNet {0} vs. {1} Electron", scoreDotNet, scoreElectron); + return scoreDotNet > scoreElectron; + } + + private static bool? CheckIsDotNetStartup1() + { + var hasPortArg = ElectronNetRuntime.ProcessArguments.Any(e => e.Contains(ElectronNetRuntime.ElectronPortArgumentName, StringComparison.OrdinalIgnoreCase)); + if (hasPortArg) + { + return false; + } + + + return true; + } + + private static bool? CheckIsDotNetStartup2() + { + var hasPidArg = ElectronNetRuntime.ProcessArguments.Any(e => e.Contains(ElectronNetRuntime.ElectronPidArgumentName, StringComparison.OrdinalIgnoreCase)); + if (hasPidArg) + { + return false; + } + + return true; + } + + private static bool? CheckIsDotNetStartup3() + { + if (Debugger.IsAttached) + { + return true; + } + + return null; + } + } +} diff --git a/src/ElectronNET.API/Runtime/Helpers/PortHelper.cs b/src/ElectronNET.API/Runtime/Helpers/PortHelper.cs new file mode 100644 index 0000000..3a14108 --- /dev/null +++ b/src/ElectronNET.API/Runtime/Helpers/PortHelper.cs @@ -0,0 +1,26 @@ +namespace ElectronNET.Runtime.Helpers +{ + using System.Linq; + using System.Net.NetworkInformation; + + internal static class PortHelper + { + public static int GetFreePort(int? defaultPost) + { + var listeners = IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpListeners().Select(e => e.Port).ToList(); + + int port = defaultPost ?? 8000; + + while (true) + { + if (!listeners.Contains(port)) + { + return port; + } + + port += 2; + } + } + + } +} diff --git a/src/ElectronNET.API/Runtime/Helpers/UnpackagedDetector.cs b/src/ElectronNET.API/Runtime/Helpers/UnpackagedDetector.cs new file mode 100644 index 0000000..d4fbd9d --- /dev/null +++ b/src/ElectronNET.API/Runtime/Helpers/UnpackagedDetector.cs @@ -0,0 +1,109 @@ +namespace ElectronNET.Runtime.Helpers +{ + using System; + using System.Collections.Generic; + using System.Diagnostics; + using System.IO; + using System.Linq; + + internal class UnpackagedDetector + { + public static bool CheckIsUnpackaged() + { + var tests = new List>(); + + tests.Add(CheckUnpackaged1); + + // We let this one account twice + tests.Add(CheckUnpackaged2); + tests.Add(CheckUnpackaged2); + + tests.Add(CheckUnpackaged3); + tests.Add(CheckUnpackaged4); + + int scoreUnpackaged = 0, scorePackaged = 0; + + foreach (var test in tests) + { + var res = test(); + + if (res == true) + { + scoreUnpackaged++; + } + + if (res == false) + { + scorePackaged++; + } + } + + Console.WriteLine("Probe scored for package mode: Unpackaged {0} vs. {1} Packaged", scoreUnpackaged, scorePackaged); + return scoreUnpackaged > scorePackaged; + } + + private static bool? CheckUnpackaged1() + { + var cfg = ElectronNetRuntime.BuildInfo.BuildConfiguration; + if (cfg != null) + { + if (cfg.Equals("Debug", StringComparison.OrdinalIgnoreCase)) + { + return true; + } + + if (cfg.Equals("Release", StringComparison.OrdinalIgnoreCase)) + { + return false; + } + } + + return null; + } + + private static bool? CheckUnpackaged2() + { + var dir = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory); + if (dir.Name == "bin" && dir.Parent?.Name == "resources") + { + return false; + } + + if (dir.GetDirectories().Any(e => e.Name == ".electron")) + { + return true; + } + + return null; + } + + private static bool? CheckUnpackaged3() + { + if (Debugger.IsAttached) + { + return true; + } + + + return null; + } + + private static bool? CheckUnpackaged4() + { + var isUnpackaged = ElectronNetRuntime.ProcessArguments.Any(e => e.Contains("unpacked", StringComparison.OrdinalIgnoreCase)); + + if (isUnpackaged) + { + return true; + } + + var isPackaged = ElectronNetRuntime.ProcessArguments.Any(e => e.Contains("dotnetpacked", StringComparison.OrdinalIgnoreCase)); + if (isPackaged) + { + return false; + } + + return null; + } + } +} diff --git a/src/ElectronNET.API/Runtime/IElectronNetRuntimeController.cs b/src/ElectronNET.API/Runtime/IElectronNetRuntimeController.cs new file mode 100644 index 0000000..4b69c3c --- /dev/null +++ b/src/ElectronNET.API/Runtime/IElectronNetRuntimeController.cs @@ -0,0 +1,33 @@ +namespace ElectronNET.Runtime +{ + using System; + using System.Threading.Tasks; + using ElectronNET.Runtime.Data; + + public interface IElectronNetRuntimeController + { + LifetimeState State { get; } + + Task WaitStartedTask { get; } + + Task WaitReadyTask { get; } + + Task WaitStoppingTask { get; } + + Task WaitStoppedTask { get; } + + event EventHandler Starting; + + event EventHandler Started; + + event EventHandler Ready; + + event EventHandler Stopping; + + event EventHandler Stopped; + + Task Start(); + + Task Stop(); + } +} \ No newline at end of file diff --git a/src/ElectronNET.API/Runtime/Services/ElectronProcess/ElectronProcessActive.cs b/src/ElectronNET.API/Runtime/Services/ElectronProcess/ElectronProcessActive.cs new file mode 100644 index 0000000..57056fe --- /dev/null +++ b/src/ElectronNET.API/Runtime/Services/ElectronProcess/ElectronProcessActive.cs @@ -0,0 +1,94 @@ +namespace ElectronNET.Runtime.Services.ElectronProcess +{ + using System; + using System.ComponentModel; + using System.IO; + using System.Threading.Tasks; + using ElectronNET.Common; + using ElectronNET.Runtime.Data; + + /// + /// Launches and manages the Electron app process. + /// + [Localizable(false)] + internal class ElectronProcessActive : ElectronProcessBase + { + private readonly bool isUnpackaged; + private readonly string electronBinaryName; + private readonly string extraArguments; + private readonly int socketPort; + private ProcessRunner process; + + /// Initializes a new instance of the class. + /// The is debug. + /// Name of the electron. + /// The extraArguments. + /// The socket port. + public ElectronProcessActive(bool isUnpackaged, string electronBinaryName, string extraArguments, int socketPort) + { + this.isUnpackaged = isUnpackaged; + this.electronBinaryName = electronBinaryName; + this.extraArguments = extraArguments; + this.socketPort = socketPort; + } + + protected override Task StartCore() + { + var dir = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory); + string startCmd, args, workingDir; + + if (this.isUnpackaged) + { + var electrondir = Path.Combine(dir.FullName, ".electron"); + startCmd = Path.Combine(electrondir, "node_modules", "electron", "dist", "electron"); + + args = $"main.js -unpackeddotnet --trace-warnings -electronforcedport={this.socketPort:D} " + this.extraArguments; + workingDir = electrondir; + } + else + { + dir = dir.Parent?.Parent; + startCmd = Path.Combine(dir.FullName, this.electronBinaryName); + args = $"-dotnetpacked -electronforcedport={this.socketPort:D} " + this.extraArguments; + workingDir = dir.FullName; + } + + + // We don't await this in order to let the state transition to "Starting" + Task.Run(async () => await this.StartInternal(startCmd, args, workingDir).ConfigureAwait(false)); + + return Task.CompletedTask; + } + + protected override Task StopCore() + { + this.process.Cancel(); + return Task.CompletedTask; + } + + private async Task StartInternal(string startCmd, string args, string directoriy) + { + await Task.Delay(10).ConfigureAwait(false); + + this.process = new ProcessRunner("ElectronRunner"); + this.process.ProcessExited += this.Process_Exited; + this.process.Run(startCmd, args, directoriy); + + await Task.Delay(500).ConfigureAwait(false); + + if (!this.process.IsRunning) + { + Task.Run(() => this.TransitionState(LifetimeState.Stopped)); + + throw new Exception("Failed to launch the Electron process."); + } + + this.TransitionState(LifetimeState.Ready); + } + + private void Process_Exited(object sender, EventArgs e) + { + this.TransitionState(LifetimeState.Stopped); + } + } +} \ No newline at end of file diff --git a/src/ElectronNET.API/Runtime/Services/ElectronProcess/ElectronProcessBase.cs b/src/ElectronNET.API/Runtime/Services/ElectronProcess/ElectronProcessBase.cs new file mode 100644 index 0000000..969c807 --- /dev/null +++ b/src/ElectronNET.API/Runtime/Services/ElectronProcess/ElectronProcessBase.cs @@ -0,0 +1,15 @@ +namespace ElectronNET.Runtime.Services.ElectronProcess +{ + using System.ComponentModel; + + /// + /// Manages the Electron app process. + /// + [Localizable(false)] + internal abstract class ElectronProcessBase : LifetimeServiceBase + { + protected ElectronProcessBase() + { + } + } +} \ No newline at end of file diff --git a/src/ElectronNET.API/Runtime/Services/ElectronProcess/ElectronProcessPassive.cs b/src/ElectronNET.API/Runtime/Services/ElectronProcess/ElectronProcessPassive.cs new file mode 100644 index 0000000..7d13b3f --- /dev/null +++ b/src/ElectronNET.API/Runtime/Services/ElectronProcess/ElectronProcessPassive.cs @@ -0,0 +1,53 @@ +namespace ElectronNET.Runtime.Services.ElectronProcess +{ + using System; + using System.ComponentModel; + using System.Diagnostics; + using System.Threading.Tasks; + using ElectronNET.Runtime.Data; + + /// + /// Launches and manages the Electron app process. + /// + [Localizable(false)] + internal class ElectronProcessPassive : ElectronProcessBase + { + private readonly int pid; + private Process process; + + /// Initializes a new instance of the class. + /// + public ElectronProcessPassive(int pid) + { + this.pid = pid; + } + + protected override Task StartCore() + { + this.process = Process.GetProcessById(this.pid); + + if (this.process == null) + { + throw new ArgumentException($"Unable to find process with ID {this.pid}"); + } + + this.process.Exited += this.Process_Exited1; + + Task.Run(() => this.TransitionState(LifetimeState.Ready)); + + return Task.CompletedTask; + } + + private void Process_Exited1(object sender, EventArgs e) + { + this.TransitionState(LifetimeState.Stopped); + } + + protected override Task StopCore() + { + // Not sure about this: + ////this.process.Kill(true); + return Task.CompletedTask; + } + } +} \ No newline at end of file diff --git a/src/ElectronNET.API/Runtime/Services/LifetimeServiceBase.cs b/src/ElectronNET.API/Runtime/Services/LifetimeServiceBase.cs new file mode 100644 index 0000000..c2bfc6f --- /dev/null +++ b/src/ElectronNET.API/Runtime/Services/LifetimeServiceBase.cs @@ -0,0 +1,135 @@ +namespace ElectronNET.Runtime.Services +{ + using System; + using System.Runtime.CompilerServices; + using System.Threading.Tasks; + using ElectronNET.Runtime.Data; + + public abstract class LifetimeServiceBase + { + private readonly TaskCompletionSource tcsStarted = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + private readonly TaskCompletionSource tcsReady = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + private readonly TaskCompletionSource tcsStopping = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + private readonly TaskCompletionSource tcsStopped = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + + private LifetimeState state = LifetimeState.Uninitialized; + + protected LifetimeServiceBase() { } + + public event EventHandler Starting; + + public event EventHandler Started; + + public event EventHandler Ready; + + public event EventHandler Stopping; + + public event EventHandler Stopped; + + + public LifetimeState State => this.state; + + public Task WaitStartedTask => this.tcsStarted.Task; + + public Task WaitReadyTask => this.tcsReady.Task; + + public Task WaitStoppingTask => this.tcsStopping.Task; + + public Task WaitStoppedTask => this.tcsStopped.Task; + + + public virtual async Task Start() + { + this.ValidateMaxState(LifetimeState.Uninitialized); + + await this.StartCore().ConfigureAwait(false); + + this.TransitionState(LifetimeState.Starting); + } + + public virtual async Task Stop() + { + this.ValidateMaxState(LifetimeState.Ready); + + await this.StopCore().ConfigureAwait(false); + + this.TransitionState(LifetimeState.Stopping); + } + + protected virtual Task StopCore() + { + return Task.CompletedTask; + } + + protected virtual Task StartCore() + { + return Task.CompletedTask; + } + + private void ValidateMaxState(LifetimeState evalState, [CallerMemberName] string callerMemberName = null) + { + if (this.state > evalState) + { + throw new Exception($"Invalid state! Cannot execute {callerMemberName} in state {this.state}"); + } + } + + protected void TransitionState(LifetimeState newState) + { + if (newState == this.state) + { + return; + } + + if (newState < this.state) + { + throw new Exception($"Invalid state transision from {this.state} to {newState}: " + this.GetType().Name); + } + + var oldState = this.state; + + this.state = newState; + + switch (this.state) + { + case LifetimeState.Starting: + this.Starting?.Invoke(this, EventArgs.Empty); + break; + case LifetimeState.Started: + this.Started?.Invoke(this, EventArgs.Empty); + break; + case LifetimeState.Ready: + this.Ready?.Invoke(this, EventArgs.Empty); + break; + case LifetimeState.Stopping: + this.Stopping?.Invoke(this, EventArgs.Empty); + break; + case LifetimeState.Stopped: + this.Stopped?.Invoke(this, EventArgs.Empty); + break; + default: + throw new ArgumentOutOfRangeException(); + } + + if (oldState < LifetimeState.Started && newState >= LifetimeState.Started) + { + this.tcsStarted.TrySetResult(); + } + + if (oldState < LifetimeState.Ready && newState >= LifetimeState.Ready) + { + this.tcsReady.TrySetResult(); + } + + if (oldState < LifetimeState.Stopping && newState >= LifetimeState.Stopping) + { + this.tcsStopping.TrySetResult(); + } + + if (oldState < LifetimeState.Stopped && newState >= LifetimeState.Stopped) + { + this.tcsStopped.TrySetResult(); + } + } + } +} diff --git a/src/ElectronNET.API/Runtime/Services/SocketBridge/SocketBridgeService.cs b/src/ElectronNET.API/Runtime/Services/SocketBridge/SocketBridgeService.cs new file mode 100644 index 0000000..1253051 --- /dev/null +++ b/src/ElectronNET.API/Runtime/Services/SocketBridge/SocketBridgeService.cs @@ -0,0 +1,56 @@ +namespace ElectronNET.Runtime.Services.SocketBridge +{ + using System; + using System.Threading.Tasks; + using ElectronNET.API; + using ElectronNET.Runtime.Data; + + internal class SocketBridgeService : LifetimeServiceBase + { + private readonly int socketPort; + private readonly string socketUrl; + private SocketIoFacade socket; + + public SocketBridgeService(int socketPort) + { + this.socketPort = socketPort; + this.socketUrl = $"http://localhost:{this.socketPort}"; + } + + public int SocketPort => this.socketPort; + + internal SocketIoFacade Socket => this.socket; + + protected override Task StartCore() + { + this.socket = new SocketIoFacade(this.socketUrl); + this.socket.BridgeConnected += this.Socket_BridgeConnected; + this.socket.BridgeDisconnected += this.Socket_BridgeDisconnected; + Task.Run(this.Connect); + + return Task.CompletedTask; + } + + protected override Task StopCore() + { + this.socket.DisposeSocket(); + return Task.CompletedTask; + } + + private void Connect() + { + this.socket.Connect(); + this.TransitionState(LifetimeState.Started); + } + + private void Socket_BridgeDisconnected(object sender, EventArgs e) + { + this.TransitionState(LifetimeState.Stopped); + } + + private void Socket_BridgeConnected(object sender, EventArgs e) + { + this.TransitionState(LifetimeState.Ready); + } + } +} diff --git a/src/ElectronNET.API/Runtime/StartupManager.cs b/src/ElectronNET.API/Runtime/StartupManager.cs new file mode 100644 index 0000000..c0e98ab --- /dev/null +++ b/src/ElectronNET.API/Runtime/StartupManager.cs @@ -0,0 +1,163 @@ +namespace ElectronNET.Runtime +{ + using System; + using System.Collections.Immutable; + using System.Globalization; + using System.Linq; + using System.Reflection; + using ElectronNET.Runtime.Controllers; + using ElectronNET.Runtime.Data; + using ElectronNET.Runtime.Helpers; + + internal class StartupManager + { + public void Initialize() + { + try + { + ElectronNetRuntime.BuildInfo = this.GatherBuildInfo(); + } + catch (Exception ex) + { + Console.WriteLine(ex); + } + + this.CollectProcessData(); + this.SetElectronExecutable(); + + + ElectronNetRuntime.StartupMethod = this.DetectAppTypeAndStartup(); + Console.WriteLine((string)("Evaluated StartupMethod: " + ElectronNetRuntime.StartupMethod)); + + if (ElectronNetRuntime.DotnetAppType != DotnetAppType.AspNetCoreApp) + { + ElectronNetRuntime.RuntimeControllerCore = this.CreateRuntimeController(); + } + } + + private RuntimeControllerBase CreateRuntimeController() + { + switch (ElectronNetRuntime.StartupMethod) + { + case StartupMethod.PackagedDotnetFirst: + case StartupMethod.UnpackedDotnetFirst: + return new RuntimeControllerDotNetFirst(); + case StartupMethod.PackagedElectronFirst: + case StartupMethod.UnpackedElectronFirst: + return new RuntimeControllerElectronFirst(); + default: + throw new ArgumentOutOfRangeException(); + } + + return null; + } + + private StartupMethod DetectAppTypeAndStartup() + { + var isLaunchedByDotNet = LaunchOrderDetector.CheckIsLaunchedByDotNet(); + var isUnPackaged = UnpackagedDetector.CheckIsUnpackaged(); + + if (isLaunchedByDotNet) + { + if (isUnPackaged) + { + return StartupMethod.UnpackedDotnetFirst; + } + + return StartupMethod.PackagedDotnetFirst; + } + else + { + if (isUnPackaged) + { + return StartupMethod.UnpackedElectronFirst; + } + + return StartupMethod.PackagedElectronFirst; + } + } + + private void CollectProcessData() + { + var argsList = Environment.GetCommandLineArgs().ToImmutableList(); + + ElectronNetRuntime.ProcessArguments = argsList; + + var portArg = argsList.FirstOrDefault(e => e.Contains(ElectronNetRuntime.ElectronPortArgumentName, StringComparison.OrdinalIgnoreCase)); + + if (portArg != null) + { + var parts = portArg.Split('=', StringSplitOptions.TrimEntries); + if (parts.Length > 1 && int.TryParse(parts[1], NumberStyles.Integer, NumberFormatInfo.InvariantInfo, out var result)) + { + ElectronNetRuntime.ElectronSocketPort = result; + + Console.WriteLine("Use Electron Port: " + result); + } + } + + var pidArg = argsList.FirstOrDefault(e => e.Contains(ElectronNetRuntime.ElectronPidArgumentName, StringComparison.OrdinalIgnoreCase)); + + if (pidArg != null) + { + var parts = pidArg.Split('=', StringSplitOptions.TrimEntries); + if (parts.Length > 1 && int.TryParse(parts[1], NumberStyles.Integer, NumberFormatInfo.InvariantInfo, out var result)) + { + ElectronNetRuntime.ElectronProcessId = result; + + Console.WriteLine("Electron Process ID: " + result); + } + } + } + + private void SetElectronExecutable() + { + string executable = ElectronNetRuntime.BuildInfo.ElectronExecutable; + if (string.IsNullOrEmpty(executable)) + { + throw new Exception("AssemblyMetadataAttribute 'ElectronExecutable' could not be found!"); + } + + if (Environment.OSVersion.Platform == PlatformID.Win32NT) + { + executable += ".exe"; + } + + ElectronNetRuntime.ElectronExecutable = executable; + + } + + private BuildInfo GatherBuildInfo() + { + var buildInfo = new BuildInfo(); + + var attributes = Assembly.GetEntryAssembly()?.GetCustomAttributes().ToList(); + + if (attributes?.Count > 0) + { + buildInfo.ElectronExecutable = attributes.FirstOrDefault(e => e.Key == nameof(buildInfo.ElectronExecutable))?.Value; + buildInfo.ElectronVersion = attributes.FirstOrDefault(e => e.Key == nameof(buildInfo.ElectronVersion))?.Value; + buildInfo.RuntimeIdentifier = attributes.FirstOrDefault(e => e.Key == nameof(buildInfo.RuntimeIdentifier))?.Value; + buildInfo.ElectronSingleInstance = attributes.FirstOrDefault(e => e.Key == nameof(buildInfo.ElectronSingleInstance))?.Value; + buildInfo.Title = attributes.FirstOrDefault(e => e.Key == nameof(buildInfo.Title))?.Value; + buildInfo.Version = attributes.FirstOrDefault(e => e.Key == nameof(buildInfo.Version))?.Value; + buildInfo.BuildConfiguration = attributes.FirstOrDefault(e => e.Key == nameof(buildInfo.BuildConfiguration))?.Value; + var isAspNet = attributes.FirstOrDefault(e => e.Key == "IsAspNet")?.Value; + + if (isAspNet?.Length > 0 && bool.TryParse(isAspNet, out var res) && res) + { + ElectronNetRuntime.DotnetAppType = DotnetAppType.AspNetCoreApp; + } + + var httpPort = attributes.FirstOrDefault(e => e.Key == "AspNetHttpPort")?.Value; + + if (httpPort?.Length > 0 && int.TryParse(httpPort, out var port)) + { + ElectronNetRuntime.AspNetWebPort = port; + } + } + + return buildInfo; + } + } +} From c6c73a7c8a33e46a659ea25804db265815dc13fa Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 13:24:53 +0200 Subject: [PATCH 26/66] ElectronNET.API: Update project file --- src/ElectronNET.API/ElectronNET.API.csproj | 55 ++++++++----------- .../ElectronNET.API.csproj.DotSettings | 3 + 2 files changed, 27 insertions(+), 31 deletions(-) create mode 100644 src/ElectronNET.API/ElectronNET.API.csproj.DotSettings diff --git a/src/ElectronNET.API/ElectronNET.API.csproj b/src/ElectronNET.API/ElectronNET.API.csproj index 51fb9b5..15d7663 100644 --- a/src/ElectronNET.API/ElectronNET.API.csproj +++ b/src/ElectronNET.API/ElectronNET.API.csproj @@ -1,47 +1,40 @@  + + + net6.0;net8.0 ..\..\artifacts - ElectronNET.API - Gregor Biswanger, Florian Rappl - - Electron.NET - MIT - https://github.com/ElectronNET/Electron.NET/ - Building cross platform electron based desktop apps with .NET Core and ASP.NET Core. -This package contains the API to access the "native" electron API. - https://github.com/ElectronNET/Electron.NET/ - git - true - electron aspnetcore - Changelog: https://github.com/ElectronNET/Electron.NET/blob/main/Changelog.md - PackageIcon.png - 99.0.0.0 + $(PackageNamePrefix).API + $(PackageId) true + True + snupkg + disable + $(DescriptionFirstPart) This package contains the API to access the "native" electron API. + ElectronNET + 1701;1702;4014;CS4014;CA1416;CS1591 + + + - - - - - - - - - - + all runtime; build; native; contentfiles; analyzers - - - - - all - + + + + + + + + + \ No newline at end of file diff --git a/src/ElectronNET.API/ElectronNET.API.csproj.DotSettings b/src/ElectronNET.API/ElectronNET.API.csproj.DotSettings new file mode 100644 index 0000000..8d8335c --- /dev/null +++ b/src/ElectronNET.API/ElectronNET.API.csproj.DotSettings @@ -0,0 +1,3 @@ + + Library + True \ No newline at end of file From 3a42c479dd2deb8177f96dabb0eadb321f1ee220 Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 13:26:26 +0200 Subject: [PATCH 27/66] Add ElectronNET.AspNet project (ASP.Net specific runtime code) --- .../API/ServiceCollectionExtensions.cs | 33 +++++ .../API/WebHostBuilderExtensions.cs | 103 ++++++++++++++ .../ElectronNET.AspNet.csproj | 44 ++++++ src/ElectronNET.AspNet/PackageIcon.png | Bin 0 -> 39446 bytes .../RuntimeControllerAspNetBase.cs | 132 ++++++++++++++++++ .../RuntimeControllerAspNetDotnetFirst.cs | 58 ++++++++ .../RuntimeControllerAspNetElectronFirst.cs | 56 ++++++++ .../Helpers/ServerReadyStartupFilter.cs | 30 ++++ .../Runtime/Services/AspNetLifetimeAdapter.cs | 27 ++++ 9 files changed, 483 insertions(+) create mode 100644 src/ElectronNET.AspNet/API/ServiceCollectionExtensions.cs create mode 100644 src/ElectronNET.AspNet/API/WebHostBuilderExtensions.cs create mode 100644 src/ElectronNET.AspNet/ElectronNET.AspNet.csproj create mode 100644 src/ElectronNET.AspNet/PackageIcon.png create mode 100644 src/ElectronNET.AspNet/Runtime/Controllers/RuntimeControllerAspNetBase.cs create mode 100644 src/ElectronNET.AspNet/Runtime/Controllers/RuntimeControllerAspNetDotnetFirst.cs create mode 100644 src/ElectronNET.AspNet/Runtime/Controllers/RuntimeControllerAspNetElectronFirst.cs create mode 100644 src/ElectronNET.AspNet/Runtime/Helpers/ServerReadyStartupFilter.cs create mode 100644 src/ElectronNET.AspNet/Runtime/Services/AspNetLifetimeAdapter.cs diff --git a/src/ElectronNET.AspNet/API/ServiceCollectionExtensions.cs b/src/ElectronNET.AspNet/API/ServiceCollectionExtensions.cs new file mode 100644 index 0000000..b12f636 --- /dev/null +++ b/src/ElectronNET.AspNet/API/ServiceCollectionExtensions.cs @@ -0,0 +1,33 @@ +namespace ElectronNET.API +{ + using Microsoft.Extensions.DependencyInjection; + + /// + /// + /// + public static class ServiceCollectionExtensions + { + /// + /// Adds the Members to the Service Collection + /// + public static IServiceCollection AddElectron(this IServiceCollection services) + => services + // adding in this manner to ensure late binding. + .AddSingleton(_ => IpcMain.Instance) + .AddSingleton(_ => App.Instance) + .AddSingleton(_ => AutoUpdater.Instance) + .AddSingleton(_ => WindowManager.Instance) + .AddSingleton(_ => Menu.Instance) + .AddSingleton(_ => Dialog.Instance) + .AddSingleton(_ => Notification.Instance) + .AddSingleton(_ => Tray.Instance) + .AddSingleton(_ => GlobalShortcut.Instance) + .AddSingleton(_ => Shell.Instance) + .AddSingleton(_ => Screen.Instance) + .AddSingleton(_ => Clipboard.Instance) + .AddSingleton(_ => HostHook.Instance) + .AddSingleton(_ => PowerMonitor.Instance) + .AddSingleton(_ => NativeTheme.Instance) + .AddSingleton(_ => Dock.Instance); + } +} diff --git a/src/ElectronNET.AspNet/API/WebHostBuilderExtensions.cs b/src/ElectronNET.AspNet/API/WebHostBuilderExtensions.cs new file mode 100644 index 0000000..c607836 --- /dev/null +++ b/src/ElectronNET.AspNet/API/WebHostBuilderExtensions.cs @@ -0,0 +1,103 @@ +namespace ElectronNET.API +{ + using System; + using System.IO; + using System.Threading.Tasks; + using ElectronNET.AspNet; + using ElectronNET.AspNet.Runtime; + using ElectronNET.Runtime; + using ElectronNET.Runtime.Data; + using ElectronNET.Runtime.Helpers; + using Microsoft.AspNetCore.Hosting; + using Microsoft.Extensions.DependencyInjection; + + /// + /// Provides extension methods for to enable Electron.NET + /// integration in ASP.NET Core applications (including Razor Pages) using the WebHost-based hosting model. + /// + /// + /// Call this extension during web host configuration (for example, inside ConfigureWebHostDefaults in Program.cs) + /// to wire up Electron with any command-line arguments and an optional application-ready callback. + /// + public static class WebHostBuilderExtensions + { + /// + /// Adds Electron.NET support to the current ASP.NET Core web host and registers an application-ready callback. + /// + /// The to extend. + /// The command-line arguments passed to the process. + /// + /// An asynchronous callback invoked when the Electron app is ready. Use this to create windows or perform initialization. + /// + /// + /// The same instance to enable fluent configuration. + /// + /// + /// + /// using Microsoft.AspNetCore.Hosting; + /// using Microsoft.Extensions.Hosting; + /// using ElectronNET.API; + /// + /// public class Program + /// { + /// public static void Main(string[] args) + /// { + /// Host.CreateDefaultBuilder(args) + /// .ConfigureWebHostDefaults(webBuilder => + /// { + /// webBuilder.UseStartup<Startup>(); + /// webBuilder.UseElectron(args, async () => + /// { + /// // Create the main browser window or perform other startup tasks. + /// }); + /// }) + /// .Build() + /// .Run(); + /// } + /// } + /// + /// + public static IWebHostBuilder UseElectron(this IWebHostBuilder builder, string[] args, Func onAppReadyCallback) + { + ElectronNetRuntime.OnAppReadyCallback = onAppReadyCallback; + + var webPort = PortHelper.GetFreePort(ElectronNetRuntime.AspNetWebPort ?? ElectronNetRuntime.DefaultWebPort); + ElectronNetRuntime.AspNetWebPort = webPort; + + // check for the content folder if its exists in base director otherwise no need to include + // It was used before because we are publishing the project which copies everything to bin folder and contentroot wwwroot was folder there. + // now we have implemented the live reload if app is run using /watch then we need to use the default project path. + if (Directory.Exists($"{AppDomain.CurrentDomain.BaseDirectory}\\wwwroot")) + { + builder = builder.UseContentRoot(AppDomain.CurrentDomain.BaseDirectory) + .UseUrls("http://localhost:" + webPort); + } + else + { + builder = builder.UseUrls("http://localhost:" + webPort); + } + + builder = builder.ConfigureServices(services => + { + services.AddTransient(); + services.AddSingleton(); + + switch (ElectronNetRuntime.StartupMethod) + { + case StartupMethod.PackagedElectronFirst: + case StartupMethod.UnpackedElectronFirst: + services.AddSingleton(); + break; + case StartupMethod.PackagedDotnetFirst: + case StartupMethod.UnpackedDotnetFirst: + services.AddSingleton(); + break; + default: + throw new ArgumentOutOfRangeException(); + } + }); + + return builder; + } + } +} \ No newline at end of file diff --git a/src/ElectronNET.AspNet/ElectronNET.AspNet.csproj b/src/ElectronNET.AspNet/ElectronNET.AspNet.csproj new file mode 100644 index 0000000..d3a95fe --- /dev/null +++ b/src/ElectronNET.AspNet/ElectronNET.AspNet.csproj @@ -0,0 +1,44 @@ + + + + + + net6.0;net8.0 + ..\..\artifacts + $(PackageNamePrefix).AspNet + $(PackageId) + $(DescriptionFirstPart) This package contains the ASP.Net Core integration. + true + True + snupkg + disable + ElectronNET + + + 1701;1702;4014;CS4014;CA1416;CS1591 + + + 1701;1702;4014;CS4014;CA1416;CS1591 + + + 1701;1702;4014;CS4014;CA1416;CS1591 + + + 1701;1702;4014;CS4014;CA1416;CS1591 + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers + + + + + + \ No newline at end of file diff --git a/src/ElectronNET.AspNet/PackageIcon.png b/src/ElectronNET.AspNet/PackageIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..10d55ebe2477afb3d51044c5b642303942e31c1d GIT binary patch literal 39446 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 V=Mq`N85kHCJYD@<);T3K0RX`utw#U= literal 0 HcmV?d00001 diff --git a/src/ElectronNET.AspNet/Runtime/Controllers/RuntimeControllerAspNetBase.cs b/src/ElectronNET.AspNet/Runtime/Controllers/RuntimeControllerAspNetBase.cs new file mode 100644 index 0000000..65487df --- /dev/null +++ b/src/ElectronNET.AspNet/Runtime/Controllers/RuntimeControllerAspNetBase.cs @@ -0,0 +1,132 @@ +namespace ElectronNET.AspNet.Runtime +{ + using System; + using System.Threading.Tasks; + using ElectronNET.API; + using ElectronNET.Common; + using ElectronNET.Runtime.Controllers; + using ElectronNET.Runtime.Data; + using ElectronNET.Runtime.Services.SocketBridge; + + internal abstract class RuntimeControllerAspNetBase : RuntimeControllerBase + { + private readonly AspNetLifetimeAdapter aspNetLifetimeAdapter; + private SocketBridgeService socketBridge; + + protected RuntimeControllerAspNetBase(AspNetLifetimeAdapter aspNetLifetimeAdapter) + { + this.aspNetLifetimeAdapter = aspNetLifetimeAdapter; + this.aspNetLifetimeAdapter.Ready += this.AspNetLifetimeAdapter_Ready; + this.aspNetLifetimeAdapter.Stopping += this.AspNetLifetimeAdapter_Stopping; + this.aspNetLifetimeAdapter.Stopped += this.AspNetLifetimeAdapter_Stopped; + + ElectronNetRuntime.RuntimeControllerCore = this; + } + + internal override SocketBridgeService SocketBridge => this.socketBridge; + + internal override SocketIoFacade Socket + { + get + { + if (this.State == LifetimeState.Ready) + { + return this.socketBridge.Socket; + } + + throw new Exception("Cannot access socket bridge. Runtime is not in 'Ready' state"); + } + } + + protected void CreateSocketBridge(int port) + { + this.socketBridge = new SocketBridgeService(port); + this.socketBridge.Ready += this.SocketBridge_Ready; + this.socketBridge.Stopped += this.SocketBridge_Stopped; + this.socketBridge.Start(); + } + + protected void HandleReady() + { + if (this.SocketBridge.IsReady() && + this.ElectronProcess.IsReady() && + this.aspNetLifetimeAdapter.IsReady()) + { + this.TransitionState(LifetimeState.Ready); + Task.Run(this.RunReadyCallback); + } + } + + protected void HandleStopped() + { + this.TransitionState(LifetimeState.Stopping); + + if (this.SocketBridge.IsNotStopped()) + { + this.SocketBridge.Stop(); + } + + if (this.ElectronProcess.IsNotStopped()) + { + this.ElectronProcess.Stop(); + } + + if (this.aspNetLifetimeAdapter.IsNotStopped()) + { + this.aspNetLifetimeAdapter.Stop(); + } + + if ((this.SocketBridge.IsNullOrStopped()) && + (this.ElectronProcess.IsNullOrStopped()) && + (this.aspNetLifetimeAdapter.IsNullOrStopped())) + { + this.TransitionState(LifetimeState.Stopped); + } + } + + protected abstract override Task StopCore(); + + private void SocketBridge_Ready(object sender, EventArgs e) + { + this.HandleReady(); + } + + private void AspNetLifetimeAdapter_Ready(object sender, EventArgs e) + { + this.HandleReady(); + } + + private void SocketBridge_Stopped(object sender, EventArgs e) + { + this.HandleStopped(); + } + + private void AspNetLifetimeAdapter_Stopped(object sender, EventArgs e) + { + this.HandleStopped(); + } + + private void AspNetLifetimeAdapter_Stopping(object sender, EventArgs e) + { + } + + private async Task RunReadyCallback() + { + if (ElectronNetRuntime.OnAppReadyCallback == null) + { + Console.WriteLine("Warning: Non OnReadyCallback provided in UseElectron() setup."); + return; + } + + try + { + await ElectronNetRuntime.OnAppReadyCallback().ConfigureAwait(false); + } + catch (Exception ex) + { + Console.WriteLine("Exception while executing OnAppReadyCallback. Stopping...\n" + ex); + this.Stop(); + } + } + } +} diff --git a/src/ElectronNET.AspNet/Runtime/Controllers/RuntimeControllerAspNetDotnetFirst.cs b/src/ElectronNET.AspNet/Runtime/Controllers/RuntimeControllerAspNetDotnetFirst.cs new file mode 100644 index 0000000..4c76291 --- /dev/null +++ b/src/ElectronNET.AspNet/Runtime/Controllers/RuntimeControllerAspNetDotnetFirst.cs @@ -0,0 +1,58 @@ +namespace ElectronNET.AspNet.Runtime +{ + using System; + using System.Threading.Tasks; + using ElectronNET.Common; + using ElectronNET.Runtime.Data; + using ElectronNET.Runtime.Helpers; + using ElectronNET.Runtime.Services.ElectronProcess; + + internal class RuntimeControllerAspNetDotnetFirst : RuntimeControllerAspNetBase + { + private ElectronProcessBase electronProcess; + private int? port; + + public RuntimeControllerAspNetDotnetFirst(AspNetLifetimeAdapter aspNetLifetimeAdapter) : base(aspNetLifetimeAdapter) + { + } + + internal override ElectronProcessBase ElectronProcess => this.electronProcess; + + protected override Task StartCore() + { + var isUnPacked = ElectronNetRuntime.StartupMethod.IsUnpackaged(); + var electronBinaryName = ElectronNetRuntime.ElectronExecutable; + var args = Environment.CommandLine; + this.port = ElectronNetRuntime.ElectronSocketPort; + + if (!this.port.HasValue) + { + this.port = PortHelper.GetFreePort(ElectronNetRuntime.DefaultSocketPort); + ElectronNetRuntime.ElectronSocketPort = this.port; + } + + this.electronProcess = new ElectronProcessActive(isUnPacked, electronBinaryName, args, this.port.Value); + this.electronProcess.Ready += this.ElectronProcess_Ready; + this.electronProcess.Stopped += this.ElectronProcess_Stopped; + + return this.electronProcess.Start(); + } + + protected override Task StopCore() + { + this.electronProcess.Stop(); + return Task.CompletedTask; + } + + private void ElectronProcess_Ready(object sender, EventArgs e) + { + this.TransitionState(LifetimeState.Started); + this.CreateSocketBridge(this.port!.Value); + } + + private void ElectronProcess_Stopped(object sender, EventArgs e) + { + this.HandleStopped(); + } + } +} diff --git a/src/ElectronNET.AspNet/Runtime/Controllers/RuntimeControllerAspNetElectronFirst.cs b/src/ElectronNET.AspNet/Runtime/Controllers/RuntimeControllerAspNetElectronFirst.cs new file mode 100644 index 0000000..c9eb069 --- /dev/null +++ b/src/ElectronNET.AspNet/Runtime/Controllers/RuntimeControllerAspNetElectronFirst.cs @@ -0,0 +1,56 @@ +namespace ElectronNET.AspNet.Runtime +{ + using System; + using System.Threading.Tasks; + using ElectronNET.Runtime.Data; + using ElectronNET.Runtime.Services.ElectronProcess; + + internal class RuntimeControllerAspNetElectronFirst : RuntimeControllerAspNetBase + { + private ElectronProcessBase electronProcess; + private int? port; + + public RuntimeControllerAspNetElectronFirst(AspNetLifetimeAdapter aspNetLifetimeAdapter) : base(aspNetLifetimeAdapter) + { + } + + internal override ElectronProcessBase ElectronProcess => this.electronProcess; + + protected override Task StartCore() + { + this.port = ElectronNetRuntime.ElectronSocketPort; + + if (!this.port.HasValue) + { + throw new Exception("No port has been specified by Electron!"); + } + + if (!ElectronNetRuntime.ElectronProcessId.HasValue) + { + throw new Exception("No electronPID has been specified by Electron!"); + } + + this.CreateSocketBridge(this.port!.Value); + + this.electronProcess = new ElectronProcessPassive(ElectronNetRuntime.ElectronProcessId.Value); + this.electronProcess.Stopped += this.ElectronProcess_Stopped; + + this.electronProcess.Start(); + + Task.Run(() => this.TransitionState(LifetimeState.Started)); + + return Task.CompletedTask; + } + + protected override Task StopCore() + { + this.electronProcess.Stop(); + return Task.CompletedTask; + } + + private void ElectronProcess_Stopped(object sender, EventArgs e) + { + this.HandleStopped(); + } + } +} diff --git a/src/ElectronNET.AspNet/Runtime/Helpers/ServerReadyStartupFilter.cs b/src/ElectronNET.AspNet/Runtime/Helpers/ServerReadyStartupFilter.cs new file mode 100644 index 0000000..115a96f --- /dev/null +++ b/src/ElectronNET.AspNet/Runtime/Helpers/ServerReadyStartupFilter.cs @@ -0,0 +1,30 @@ +namespace ElectronNET.AspNet +{ + using System; + using ElectronNET.AspNet.Runtime; + using ElectronNET.Runtime; + using Microsoft.AspNetCore.Builder; + using Microsoft.AspNetCore.Hosting; + using Microsoft.Extensions.DependencyInjection; + + internal sealed class ServerReadyStartupFilter : IStartupFilter + { + /// + /// Extends the provided and returns an of the same type. + /// + /// The Configure method to extend. + /// A modified . + public Action Configure(Action next) + { + return app => + { + _ = app.ApplicationServices.GetService(); + var runtimeController = app.ApplicationServices.GetService(); + + runtimeController.Start(); + + next(app); + }; + } + } +} diff --git a/src/ElectronNET.AspNet/Runtime/Services/AspNetLifetimeAdapter.cs b/src/ElectronNET.AspNet/Runtime/Services/AspNetLifetimeAdapter.cs new file mode 100644 index 0000000..9c108a0 --- /dev/null +++ b/src/ElectronNET.AspNet/Runtime/Services/AspNetLifetimeAdapter.cs @@ -0,0 +1,27 @@ +namespace ElectronNET.AspNet.Runtime +{ + using System.Threading.Tasks; + using ElectronNET.Runtime.Data; + using ElectronNET.Runtime.Services; + using Microsoft.Extensions.Hosting; + + internal class AspNetLifetimeAdapter : LifetimeServiceBase + { + private readonly IHostApplicationLifetime lifetimeSercice; + + public AspNetLifetimeAdapter(IHostApplicationLifetime lifetimeSercice) + { + this.lifetimeSercice = lifetimeSercice; + + this.lifetimeSercice.ApplicationStarted.Register(() => this.TransitionState(LifetimeState.Ready)); + this.lifetimeSercice.ApplicationStopping.Register(() => this.TransitionState(LifetimeState.Stopping)); + this.lifetimeSercice.ApplicationStopped.Register(() => this.TransitionState(LifetimeState.Stopped)); + } + + protected override Task StopCore() + { + this.lifetimeSercice.StopApplication(); + return Task.CompletedTask; + } + } +} From bcde1032af9f0e235a83f73436bf7a2f2daa8f40 Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 13:27:25 +0200 Subject: [PATCH 28/66] ElectronNET.AspNet: Add WebApplicationBuilderExtensions (new ASP.Net builders) --- .../API/WebApplicationBuilderExtensions.cs | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/ElectronNET.AspNet/API/WebApplicationBuilderExtensions.cs diff --git a/src/ElectronNET.AspNet/API/WebApplicationBuilderExtensions.cs b/src/ElectronNET.AspNet/API/WebApplicationBuilderExtensions.cs new file mode 100644 index 0000000..0283bea --- /dev/null +++ b/src/ElectronNET.AspNet/API/WebApplicationBuilderExtensions.cs @@ -0,0 +1,48 @@ +namespace ElectronNET.API +{ + using System; + using System.Threading.Tasks; + using Microsoft.AspNetCore.Builder; + + /// + /// Provides extension methods for to enable Electron.NET + /// integration in ASP.NET Core applications (including Razor Pages) using the minimal hosting model. + /// + /// + /// Call this extension during host configuration (for example, in Program.cs) to wire up Electron + /// with any command-line arguments and an optional application-ready callback. + /// + public static class WebApplicationBuilderExtensions + { + /// + /// Adds Electron.NET support to the current ASP.NET Core application and registers an application-ready callback. + /// + /// The to extend. + /// The command-line arguments passed to the process, forwarded to Electron. + /// + /// An asynchronous callback invoked when the Electron app is ready. Use this to create windows or perform initialization. + /// + /// + /// The same instance to enable fluent configuration. + /// + /// + /// + /// var builder = WebApplication.CreateBuilder(args) + /// .UseElectron(args, async () => + /// { + /// // Create the main browser window or perform other startup tasks. + /// }); + /// + /// var app = builder.Build(); + /// app.MapRazorPages(); + /// app.Run(); + /// + /// + public static WebApplicationBuilder UseElectron(this WebApplicationBuilder builder, string[] args, Func onAppReadyCallback) + { + builder.WebHost.UseElectron(args, onAppReadyCallback); + + return builder; + } + } +} \ No newline at end of file From 69129a6f022ea5bb5a697e84157d9238122d491f Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 14:08:36 +0200 Subject: [PATCH 29/66] ElectronNET.WebApp: nav.js and demo-btns.js: Increase timeouts These were too short when debugging on WSL --- src/ElectronNET.WebApp/wwwroot/assets/demo-btns.js | 2 +- src/ElectronNET.WebApp/wwwroot/assets/nav.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ElectronNET.WebApp/wwwroot/assets/demo-btns.js b/src/ElectronNET.WebApp/wwwroot/assets/demo-btns.js index 01df802..221cef7 100644 --- a/src/ElectronNET.WebApp/wwwroot/assets/demo-btns.js +++ b/src/ElectronNET.WebApp/wwwroot/assets/demo-btns.js @@ -10,4 +10,4 @@ setTimeout(() => { parent.classList.toggle('is-open'); }) }) -}, 1000); +}, 3000); diff --git a/src/ElectronNET.WebApp/wwwroot/assets/nav.js b/src/ElectronNET.WebApp/wwwroot/assets/nav.js index 36f26cf..5981ec8 100644 --- a/src/ElectronNET.WebApp/wwwroot/assets/nav.js +++ b/src/ElectronNET.WebApp/wwwroot/assets/nav.js @@ -77,4 +77,4 @@ function showNav() { setTimeout(() => { activateDefaultSection(); displayAbout(); -}, 350); \ No newline at end of file +}, 1000); \ No newline at end of file From 7fcb2f05bd9fbbae5c9d02412924f6d97aff7336 Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 14:12:56 +0200 Subject: [PATCH 30/66] ElectronNET.WebApp: HostHook: Add missing deps, update same like Host code --- .../ElectronHostHook/package-lock.json | 1834 +++++++++++++++-- .../ElectronHostHook/package.json | 10 +- .../ElectronHostHook/tsconfig.json | 18 +- 3 files changed, 1723 insertions(+), 139 deletions(-) diff --git a/src/ElectronNET.WebApp/ElectronHostHook/package-lock.json b/src/ElectronNET.WebApp/ElectronHostHook/package-lock.json index cb7a95e..8f881fa 100644 --- a/src/ElectronNET.WebApp/ElectronHostHook/package-lock.json +++ b/src/ElectronNET.WebApp/ElectronHostHook/package-lock.json @@ -9,45 +9,247 @@ "version": "1.0.0", "license": "MIT", "dependencies": { - "exceljs": "^1.10.0" + "archiver-utils": "^2.1.0", + "exceljs": "^1.10.0", + "socket.io": "^4.8.1" }, "devDependencies": { - "socket.io": "^4.6.1", - "typescript": "^5.0.2" + "eslint": "^9.37.0", + "typescript": "^5.9.3" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "dev": true, + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.0.tgz", + "integrity": "sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==", + "dev": true, + "dependencies": { + "@eslint/core": "^0.16.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", + "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "9.37.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.37.0.tgz", + "integrity": "sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz", + "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==", + "dev": true, + "dependencies": { + "@eslint/core": "^0.16.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, "node_modules/@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", - "dev": true - }, - "node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==" }, "node_modules/@types/cors": { - "version": "2.8.13", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", - "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", - "dev": true, + "version": "2.8.19", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", + "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", "dependencies": { "@types/node": "*" } }, - "node_modules/@types/node": { - "version": "18.15.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.5.tgz", - "integrity": "sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew==", + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "dev": true }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "24.7.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.7.2.tgz", + "integrity": "sha512-/NbVmcGTP+lj5oa4yiYxxeBjRivKQ5Ns1eSZeB99ExsEQ6rX5XYU1Zy/gGxY/ilqtD4Etx9mKyrPxZRetiahhA==", + "dependencies": { + "undici-types": "~7.14.0" + } + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -56,6 +258,58 @@ "node": ">= 0.6" } }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/archiver": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/archiver/-/archiver-3.1.1.tgz", @@ -120,6 +374,12 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "node_modules/arguments-extended": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/arguments-extended/-/arguments-extended-0.0.3.tgz", @@ -175,7 +435,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true, "engines": { "node": "^4.5.0 || >= 5.9" } @@ -271,6 +530,15 @@ "node": ">=0.2.0" } }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/chainsaw": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", @@ -282,6 +550,40 @@ "node": "*" } }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/compress-commons": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-2.1.1.tgz", @@ -329,10 +631,9 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true, + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "engines": { "node": ">= 0.6" } @@ -346,7 +647,6 @@ "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, "dependencies": { "object-assign": "^4", "vary": "^1" @@ -375,6 +675,20 @@ "node": ">= 6.9.0" } }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/date-extended": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/date-extended/-/date-extended-0.0.6.tgz", @@ -389,7 +703,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -407,6 +720,12 @@ "resolved": "https://registry.npmjs.org/declare.js/-/declare.js-0.0.8.tgz", "integrity": "sha512-O659hy1gcHef7JnwtqdQlrj2c5DAEgtxm8pgFXofW7eUE1L4FjsSLlziovWcrOJAOFlEPaOJshY+0hBWCG/AnA==" }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, "node_modules/duplexer2": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", @@ -451,33 +770,50 @@ } }, "node_modules/engine.io": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.1.tgz", - "integrity": "sha512-JFYQurD/nbsA5BSPmbaOSLa3tSVj8L6o4srSwXXY3NqE+gGUNmmPTbhn8tjzcCtSqhFgIeqef81ngny8JM25hw==", - "dev": true, + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.4.tgz", + "integrity": "sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==", "dependencies": { - "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", "@types/node": ">=10.0.0", "accepts": "~1.3.4", "base64id": "2.0.0", - "cookie": "~0.4.1", + "cookie": "~0.7.2", "cors": "~2.8.5", "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.11.0" + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1" }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", "engines": { "node": ">=10.0.0" } }, - "node_modules/engine.io-parser": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz", - "integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==", - "dev": true, + "node_modules/engine.io/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "engines": { "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "node_modules/es6-promise": { @@ -485,6 +821,165 @@ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==" }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.37.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.37.0.tgz", + "integrity": "sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.4.0", + "@eslint/core": "^0.16.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.37.0", + "@eslint/plugin-kit": "^0.4.0", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/exceljs": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/exceljs/-/exceljs-1.15.0.tgz", @@ -534,6 +1029,71 @@ "node": ">=4.0.0" } }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "dev": true + }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -577,11 +1137,44 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -601,11 +1194,45 @@ } ] }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -628,11 +1255,68 @@ "extended": "~0.0.3" } }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, "node_modules/jszip": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", @@ -671,6 +1355,15 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/lazystream": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", @@ -709,6 +1402,19 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/lie": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", @@ -722,6 +1428,21 @@ "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -747,6 +1468,12 @@ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, "node_modules/lodash.union": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", @@ -756,7 +1483,6 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -765,7 +1491,6 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, "dependencies": { "mime-db": "1.52.0" }, @@ -814,14 +1539,18 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -838,7 +1567,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -861,11 +1589,79 @@ "wrappy": "1" } }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -874,6 +1670,24 @@ "node": ">=0.10.0" } }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -890,6 +1704,15 @@ "node": ">=6.0.0" } }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -903,6 +1726,15 @@ "node": ">= 6" } }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -948,37 +1780,56 @@ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" }, - "node_modules/socket.io": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz", - "integrity": "sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA==", + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/socket.io": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz", + "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==", "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", + "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.4.1", + "engine.io": "~6.6.0", "socket.io-adapter": "~2.5.2", - "socket.io-parser": "~4.2.1" + "socket.io-parser": "~4.2.4" }, "engines": { - "node": ">=10.0.0" + "node": ">=10.2.0" } }, "node_modules/socket.io-adapter": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", - "dev": true, "dependencies": { "ws": "~8.11.0" } }, "node_modules/socket.io-parser": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.2.tgz", - "integrity": "sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw==", - "dev": true, + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" @@ -1006,6 +1857,30 @@ "is-extended": "~0.0.3" } }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/tar-stream": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", @@ -1040,19 +1915,36 @@ "node": "*" } }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/typescript": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", - "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=12.20" + "node": ">=14.17" } }, + "node_modules/undici-types": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.14.0.tgz", + "integrity": "sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==" + }, "node_modules/unzipper": { "version": "0.9.15", "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.9.15.tgz", @@ -1096,6 +1988,15 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -1105,11 +2006,34 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, "engines": { "node": ">= 0.8" } }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -1119,7 +2043,6 @@ "version": "8.11.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "dev": true, "engines": { "node": ">=10.0.0" }, @@ -1136,6 +2059,18 @@ } } }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/zip-stream": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.3.tgz", @@ -1151,43 +2086,209 @@ } }, "dependencies": { - "@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.4.3" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + } + } + }, + "@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true }, - "@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "@eslint/config-array": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "dev": true, + "requires": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + } + }, + "@eslint/config-helpers": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.0.tgz", + "integrity": "sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==", + "dev": true, + "requires": { + "@eslint/core": "^0.16.0" + } + }, + "@eslint/core": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", + "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.15" + } + }, + "@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, + "@eslint/js": { + "version": "9.37.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.37.0.tgz", + "integrity": "sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==", "dev": true }, + "@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true + }, + "@eslint/plugin-kit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz", + "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==", + "dev": true, + "requires": { + "@eslint/core": "^0.16.0", + "levn": "^0.4.1" + } + }, + "@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true + }, + "@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "requires": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "dependencies": { + "@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true + } + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true + }, + "@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==" + }, "@types/cors": { - "version": "2.8.13", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", - "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", - "dev": true, + "version": "2.8.19", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", + "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", "requires": { "@types/node": "*" } }, - "@types/node": { - "version": "18.15.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.5.tgz", - "integrity": "sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew==", + "@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "dev": true }, + "@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "@types/node": { + "version": "24.7.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.7.2.tgz", + "integrity": "sha512-/NbVmcGTP+lj5oa4yiYxxeBjRivKQ5Ns1eSZeB99ExsEQ6rX5XYU1Zy/gGxY/ilqtD4Etx9mKyrPxZRetiahhA==", + "requires": { + "undici-types": "~7.14.0" + } + }, "accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, "requires": { "mime-types": "~2.1.34", "negotiator": "0.6.3" } }, + "acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "archiver": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/archiver/-/archiver-3.1.1.tgz", @@ -1248,6 +2349,12 @@ } } }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "arguments-extended": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/arguments-extended/-/arguments-extended-0.0.3.tgz", @@ -1288,8 +2395,7 @@ "base64id": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" }, "big-integer": { "version": "1.6.51", @@ -1353,6 +2459,12 @@ "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==" }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, "chainsaw": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", @@ -1361,6 +2473,31 @@ "traverse": ">=0.3.0 <0.4" } }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "compress-commons": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-2.1.1.tgz", @@ -1407,10 +2544,9 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==" }, "core-util-is": { "version": "1.0.3", @@ -1421,7 +2557,6 @@ "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, "requires": { "object-assign": "^4", "vary": "^1" @@ -1444,6 +2579,17 @@ "readable-stream": "^3.4.0" } }, + "cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, "date-extended": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/date-extended/-/date-extended-0.0.6.tgz", @@ -1458,7 +2604,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "requires": { "ms": "2.1.2" } @@ -1468,6 +2613,12 @@ "resolved": "https://registry.npmjs.org/declare.js/-/declare.js-0.0.8.tgz", "integrity": "sha512-O659hy1gcHef7JnwtqdQlrj2c5DAEgtxm8pgFXofW7eUE1L4FjsSLlziovWcrOJAOFlEPaOJshY+0hBWCG/AnA==" }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, "duplexer2": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", @@ -1514,34 +2665,145 @@ } }, "engine.io": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.1.tgz", - "integrity": "sha512-JFYQurD/nbsA5BSPmbaOSLa3tSVj8L6o4srSwXXY3NqE+gGUNmmPTbhn8tjzcCtSqhFgIeqef81ngny8JM25hw==", - "dev": true, + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.4.tgz", + "integrity": "sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==", "requires": { - "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", "@types/node": ">=10.0.0", "accepts": "~1.3.4", "base64id": "2.0.0", - "cookie": "~0.4.1", + "cookie": "~0.7.2", "cors": "~2.8.5", "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.11.0" + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1" + }, + "dependencies": { + "ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "requires": {} + } } }, "engine.io-parser": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz", - "integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==", - "dev": true + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==" }, "es6-promise": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==" }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "9.37.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.37.0.tgz", + "integrity": "sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.4.0", + "@eslint/core": "^0.16.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.37.0", + "@eslint/plugin-kit": "^0.4.0", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + } + }, + "eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true + }, + "espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "requires": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + } + }, + "esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, "exceljs": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/exceljs/-/exceljs-1.15.0.tgz", @@ -1585,6 +2847,59 @@ "string-extended": "0.0.8" } }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "requires": { + "flat-cache": "^4.0.0" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "requires": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + } + }, + "flatted": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "dev": true + }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -1619,21 +2934,64 @@ "path-is-absolute": "^1.0.0" } }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true + }, "graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, + "ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true + }, "immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" }, + "import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1656,11 +3014,59 @@ "extended": "~0.0.3" } }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, "jszip": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", @@ -1701,6 +3107,15 @@ } } }, + "keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "requires": { + "json-buffer": "3.0.1" + } + }, "lazystream": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", @@ -1738,6 +3153,16 @@ } } }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, "lie": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", @@ -1751,6 +3176,15 @@ "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -1776,6 +3210,12 @@ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, "lodash.union": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", @@ -1784,14 +3224,12 @@ "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" }, "mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, "requires": { "mime-db": "1.52.0" } @@ -1825,14 +3263,18 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, "negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" }, "normalize-path": { "version": "3.0.0", @@ -1842,8 +3284,7 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, "object-extended": { "version": "0.0.7", @@ -1863,16 +3304,75 @@ "wrappy": "1" } }, + "optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, "pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -1886,6 +3386,12 @@ "es6-promise": "^3.0.2" } }, + "punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true + }, "readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -1896,6 +3402,12 @@ "util-deprecate": "^1.0.1" } }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -1924,34 +3436,47 @@ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" }, - "socket.io": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz", - "integrity": "sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA==", + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "socket.io": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz", + "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==", "requires": { "accepts": "~1.3.4", "base64id": "~2.0.0", + "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.4.1", + "engine.io": "~6.6.0", "socket.io-adapter": "~2.5.2", - "socket.io-parser": "~4.2.1" + "socket.io-parser": "~4.2.4" } }, "socket.io-adapter": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", - "dev": true, "requires": { "ws": "~8.11.0" } }, "socket.io-parser": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.2.tgz", - "integrity": "sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw==", - "dev": true, + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "requires": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" @@ -1976,6 +3501,21 @@ "is-extended": "~0.0.3" } }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, "tar-stream": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", @@ -2001,12 +3541,26 @@ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==" }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, "typescript": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz", - "integrity": "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true }, + "undici-types": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.14.0.tgz", + "integrity": "sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==" + }, "unzipper": { "version": "0.9.15", "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.9.15.tgz", @@ -2052,6 +3606,15 @@ } } }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -2060,7 +3623,21 @@ "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true }, "wrappy": { @@ -2072,9 +3649,14 @@ "version": "8.11.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "dev": true, "requires": {} }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, "zip-stream": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.3.tgz", diff --git a/src/ElectronNET.WebApp/ElectronHostHook/package.json b/src/ElectronNET.WebApp/ElectronHostHook/package.json index 756cd2b..edf07c6 100644 --- a/src/ElectronNET.WebApp/ElectronHostHook/package.json +++ b/src/ElectronNET.WebApp/ElectronHostHook/package.json @@ -13,10 +13,12 @@ "author": "Gregor Biswanger", "license": "MIT", "devDependencies": { - "socket.io": "^4.6.1", - "typescript": "^5.0.2" + "eslint": "^9.37.0", + "typescript": "^5.9.3" }, - "dependencies": { + "dependencies": { + "archiver-utils": "^2.1.0", + "socket.io": "^4.8.1", "exceljs": "^1.10.0" - } + } } diff --git a/src/ElectronNET.WebApp/ElectronHostHook/tsconfig.json b/src/ElectronNET.WebApp/ElectronHostHook/tsconfig.json index 01f4d55..bffeea2 100644 --- a/src/ElectronNET.WebApp/ElectronHostHook/tsconfig.json +++ b/src/ElectronNET.WebApp/ElectronHostHook/tsconfig.json @@ -1,11 +1,11 @@ { - "compilerOptions": { - "module": "commonjs", - "sourceMap": true, - "skipLibCheck": true, - "target": "es2015" - }, - "exclude": [ - "node_modules" - ] + "compilerOptions": { + "module": "commonjs", + "target": "ES2019", + "sourceMap": true, + "skipLibCheck": true + }, + "exclude": [ + "node_modules" + ] } \ No newline at end of file From f81424978e31df140999353d1ca77725f0ef2231 Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 14:13:47 +0200 Subject: [PATCH 31/66] ElectronNET.WebApp: HostHook: Make it compile properly --- .../ElectronHostHook/connector.js | 4 +- .../ElectronHostHook/connector.js.map | 2 +- .../ElectronHostHook/connector.ts | 9 +++-- .../ElectronHostHook/excelCreator.js | 37 +++++++------------ .../ElectronHostHook/excelCreator.js.map | 2 +- .../ElectronHostHook/excelCreator.ts | 5 +-- .../ElectronHostHook/index.js | 15 ++------ .../ElectronHostHook/index.js.map | 2 +- .../ElectronHostHook/index.ts | 7 ++-- 9 files changed, 30 insertions(+), 53 deletions(-) diff --git a/src/ElectronNET.WebApp/ElectronHostHook/connector.js b/src/ElectronNET.WebApp/ElectronHostHook/connector.js index 5e5a0e8..9fba7df 100644 --- a/src/ElectronNET.WebApp/ElectronHostHook/connector.js +++ b/src/ElectronNET.WebApp/ElectronHostHook/connector.js @@ -2,9 +2,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.Connector = void 0; class Connector { - constructor(socket, - // @ts-ignore - app) { + constructor(socket, app) { this.socket = socket; this.app = app; } diff --git a/src/ElectronNET.WebApp/ElectronHostHook/connector.js.map b/src/ElectronNET.WebApp/ElectronHostHook/connector.js.map index be84b69..0f0b23c 100644 --- a/src/ElectronNET.WebApp/ElectronHostHook/connector.js.map +++ b/src/ElectronNET.WebApp/ElectronHostHook/connector.js.map @@ -1 +1 @@ -{"version":3,"file":"connector.js","sourceRoot":"","sources":["connector.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAS;IAClB,YAAoB,MAAuB;IACvC,aAAa;IACN,GAAiB;QAFR,WAAM,GAAN,MAAM,CAAiB;QAEhC,QAAG,GAAH,GAAG,CAAc;IAAI,CAAC;IAEjC,EAAE,CAAC,GAAW,EAAE,cAAwB;QACpC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;YACnC,MAAM,EAAE,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;YAE9B,IAAI;gBACA,cAAc,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;oBAC7B,IAAI,IAAI,EAAE;wBACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;qBACjD;gBACL,CAAC,CAAC,CAAC;aACN;YAAC,OAAO,KAAK,EAAE;gBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,QAAQ,EAAE,EAAE,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAC;aACtE;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AApBD,8BAoBC"} \ No newline at end of file +{"version":3,"file":"connector.js","sourceRoot":"","sources":["connector.ts"],"names":[],"mappings":";;;AAEA,MAAa,SAAS;IAClB,YAAoB,MAAe,EACxB,GAAQ;QADC,WAAM,GAAN,MAAM,CAAS;QACxB,QAAG,GAAH,GAAG,CAAK;IAAI,CAAC;IAExB,EAAE,CAAC,GAAW,EAAE,cAAwB;QACpC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;YACnC,MAAM,EAAE,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;YAE9B,IAAI,CAAC;gBACD,cAAc,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;oBAC7B,IAAI,IAAI,EAAE,CAAC;wBACP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;oBAClD,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,QAAQ,EAAE,EAAE,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAC;YACvE,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAnBD,8BAmBC"} \ No newline at end of file diff --git a/src/ElectronNET.WebApp/ElectronHostHook/connector.ts b/src/ElectronNET.WebApp/ElectronHostHook/connector.ts index aabc182..7ba9c0b 100644 --- a/src/ElectronNET.WebApp/ElectronHostHook/connector.ts +++ b/src/ElectronNET.WebApp/ElectronHostHook/connector.ts @@ -1,7 +1,8 @@ -export class Connector { - constructor(private socket: SocketIO.Socket, - // @ts-ignore - public app: Electron.App) { } +import { Socket } from 'socket.io'; + +export class Connector { + constructor(private socket: Socket, + public app: any) { } on(key: string, javaScriptCode: Function): void { this.socket.on(key, (...args: any[]) => { diff --git a/src/ElectronNET.WebApp/ElectronHostHook/excelCreator.js b/src/ElectronNET.WebApp/ElectronHostHook/excelCreator.js index cb0a22b..6c62363 100644 --- a/src/ElectronNET.WebApp/ElectronHostHook/excelCreator.js +++ b/src/ElectronNET.WebApp/ElectronHostHook/excelCreator.js @@ -1,31 +1,20 @@ "use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; Object.defineProperty(exports, "__esModule", { value: true }); exports.ExcelCreator = void 0; -const Excel = require("exceljs"); +const exceljs_1 = require("exceljs"); class ExcelCreator { - create(path) { - return __awaiter(this, void 0, void 0, function* () { - const workbook = new Excel.Workbook(); - const worksheet = workbook.addWorksheet("My Sheet"); - worksheet.columns = [ - { header: "Id", key: "id", width: 10 }, - { header: "Name", key: "name", width: 32 }, - { header: "Birthday", key: "birthday", width: 10, outlineLevel: 1 } - ]; - worksheet.addRow({ id: 1, name: "John Doe", birthday: new Date(1970, 1, 1) }); - worksheet.addRow({ id: 2, name: "Jane Doe", birthday: new Date(1965, 1, 7) }); - yield workbook.xlsx.writeFile(path + "\\sample.xlsx"); - return "Excel file created!"; - }); + async create(path) { + const workbook = new exceljs_1.Workbook(); + const worksheet = workbook.addWorksheet("My Sheet"); + worksheet.columns = [ + { header: "Id", key: "id", width: 10 }, + { header: "Name", key: "name", width: 32 }, + { header: "Birthday", key: "birthday", width: 10, outlineLevel: 1 } + ]; + worksheet.addRow({ id: 1, name: "John Doe", birthday: new Date(1970, 1, 1) }); + worksheet.addRow({ id: 2, name: "Jane Doe", birthday: new Date(1965, 1, 7) }); + await workbook.xlsx.writeFile(path + "\\sample.xlsx"); + return "Excel file created YAY YAY!"; } } exports.ExcelCreator = ExcelCreator; diff --git a/src/ElectronNET.WebApp/ElectronHostHook/excelCreator.js.map b/src/ElectronNET.WebApp/ElectronHostHook/excelCreator.js.map index 813defb..e60e982 100644 --- a/src/ElectronNET.WebApp/ElectronHostHook/excelCreator.js.map +++ b/src/ElectronNET.WebApp/ElectronHostHook/excelCreator.js.map @@ -1 +1 @@ -{"version":3,"file":"excelCreator.js","sourceRoot":"","sources":["excelCreator.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iCAAiC;AAGjC,MAAa,YAAY;IACf,MAAM,CAAC,IAAY;;YACrB,MAAM,QAAQ,GAAa,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAChD,MAAM,SAAS,GAAc,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YAC/D,SAAS,CAAC,OAAO,GAAG;gBAChB,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;gBACtC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;gBAC1C,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE;aACtE,CAAC;YACF,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9E,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAE9E,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,eAAe,CAAC,CAAC;YAEtD,OAAO,qBAAqB,CAAC;QACjC,CAAC;KAAA;CACJ;AAhBD,oCAgBC"} \ No newline at end of file +{"version":3,"file":"excelCreator.js","sourceRoot":"","sources":["excelCreator.ts"],"names":[],"mappings":";;;AAAA,qCAA8C;AAE9C,MAAa,YAAY;IACrB,KAAK,CAAC,MAAM,CAAC,IAAY;QACrB,MAAM,QAAQ,GAAa,IAAI,kBAAQ,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAc,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC/D,SAAS,CAAC,OAAO,GAAG;YAChB,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;YACtC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;YAC1C,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE;SACtE,CAAC;QACF,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9E,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAE9E,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,eAAe,CAAC,CAAC;QAEtD,OAAO,6BAA6B,CAAC;IACzC,CAAC;CACJ;AAhBD,oCAgBC"} \ No newline at end of file diff --git a/src/ElectronNET.WebApp/ElectronHostHook/excelCreator.ts b/src/ElectronNET.WebApp/ElectronHostHook/excelCreator.ts index af9798b..5b33290 100644 --- a/src/ElectronNET.WebApp/ElectronHostHook/excelCreator.ts +++ b/src/ElectronNET.WebApp/ElectronHostHook/excelCreator.ts @@ -1,9 +1,8 @@ -import * as Excel from "exceljs"; import { Workbook, Worksheet } from "exceljs"; export class ExcelCreator { async create(path: string): Promise { - const workbook: Workbook = new Excel.Workbook(); + const workbook: Workbook = new Workbook(); const worksheet: Worksheet = workbook.addWorksheet("My Sheet"); worksheet.columns = [ { header: "Id", key: "id", width: 10 }, @@ -15,6 +14,6 @@ export class ExcelCreator { await workbook.xlsx.writeFile(path + "\\sample.xlsx"); - return "Excel file created!"; + return "Excel file created YAY YAY!"; } } \ No newline at end of file diff --git a/src/ElectronNET.WebApp/ElectronHostHook/index.js b/src/ElectronNET.WebApp/ElectronHostHook/index.js index 5eca5dc..e0e4171 100644 --- a/src/ElectronNET.WebApp/ElectronHostHook/index.js +++ b/src/ElectronNET.WebApp/ElectronHostHook/index.js @@ -1,13 +1,4 @@ "use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; Object.defineProperty(exports, "__esModule", { value: true }); exports.HookService = void 0; const connector_1 = require("./connector"); @@ -19,11 +10,11 @@ class HookService extends connector_1.Connector { } onHostReady() { // execute your own JavaScript Host logic here - this.on("create-excel-file", (path, done) => __awaiter(this, void 0, void 0, function* () { + this.on("create-excel-file", async (path, done) => { const excelCreator = new excelCreator_1.ExcelCreator(); - const result = yield excelCreator.create(path); + const result = await excelCreator.create(path); done(result); - })); + }); } } exports.HookService = HookService; diff --git a/src/ElectronNET.WebApp/ElectronHostHook/index.js.map b/src/ElectronNET.WebApp/ElectronHostHook/index.js.map index 7341785..f5803bb 100644 --- a/src/ElectronNET.WebApp/ElectronHostHook/index.js.map +++ b/src/ElectronNET.WebApp/ElectronHostHook/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,2CAAwC;AACxC,iDAA8C;AAE9C,MAAa,WAAY,SAAQ,qBAAS;IACtC,YAAY,MAAuB,EAAS,GAAiB;QACzD,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QADqB,QAAG,GAAH,GAAG,CAAc;IAE7D,CAAC;IAED,WAAW;QACP,8CAA8C;QAC9C,IAAI,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAO,IAAI,EAAE,IAAI,EAAE,EAAE;YAC9C,MAAM,YAAY,GAAiB,IAAI,2BAAY,EAAE,CAAC;YACtD,MAAM,MAAM,GAAW,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAEvD,IAAI,CAAC,MAAM,CAAC,CAAC;QACjB,CAAC,CAAA,CAAC,CAAC;IACP,CAAC;CACJ;AAdD,kCAcC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAExC,iDAA8C;AAE9C,MAAa,WAAY,SAAQ,qBAAS;IACtC,YAAY,MAAc,EAAS,GAAQ;QACvC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QADY,QAAG,GAAH,GAAG,CAAK;IAE3C,CAAC;IAED,WAAW;QACP,8CAA8C;QAC9C,IAAI,CAAC,EAAE,CAAC,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;YAC9C,MAAM,YAAY,GAAiB,IAAI,2BAAY,EAAE,CAAC;YACtD,MAAM,MAAM,GAAW,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAEvD,IAAI,CAAC,MAAM,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAdD,kCAcC"} \ No newline at end of file diff --git a/src/ElectronNET.WebApp/ElectronHostHook/index.ts b/src/ElectronNET.WebApp/ElectronHostHook/index.ts index 52135f5..9032180 100644 --- a/src/ElectronNET.WebApp/ElectronHostHook/index.ts +++ b/src/ElectronNET.WebApp/ElectronHostHook/index.ts @@ -1,10 +1,9 @@ -// @ts-ignore -import * as Electron from "electron"; import { Connector } from "./connector"; -import { ExcelCreator } from "./excelCreator"; +import { Socket } from "socket.io"; +import { ExcelCreator } from './excelCreator'; export class HookService extends Connector { - constructor(socket: SocketIO.Socket, public app: Electron.App) { + constructor(socket: Socket, public app: any) { super(socket, app); } From c5d9ba0e43090e7680b76fddb46163ad708bca1c Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 14:14:17 +0200 Subject: [PATCH 32/66] ElectronNET.WebApp: Remove invalid property in appSettings --- src/ElectronNET.WebApp/appsettings.Development.json | 1 - src/ElectronNET.WebApp/appsettings.json | 1 - 2 files changed, 2 deletions(-) diff --git a/src/ElectronNET.WebApp/appsettings.Development.json b/src/ElectronNET.WebApp/appsettings.Development.json index fa8ce71..0623a3f 100644 --- a/src/ElectronNET.WebApp/appsettings.Development.json +++ b/src/ElectronNET.WebApp/appsettings.Development.json @@ -1,6 +1,5 @@ { "Logging": { - "IncludeScopes": false, "LogLevel": { "Default": "Debug", "System": "Information", diff --git a/src/ElectronNET.WebApp/appsettings.json b/src/ElectronNET.WebApp/appsettings.json index f94192b..9147709 100644 --- a/src/ElectronNET.WebApp/appsettings.json +++ b/src/ElectronNET.WebApp/appsettings.json @@ -1,6 +1,5 @@ { "Logging": { - "IncludeScopes": false, "LogLevel": { "Default": "Warning" } From 667a1b290e260bc1c2d90bfa17624359310b1587 Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 14:15:12 +0200 Subject: [PATCH 33/66] ElectronNET.WebApp: Remove manifest file (not needed anymore) --- src/ElectronNET.WebApp/electron.manifest.json | 49 ------------------- 1 file changed, 49 deletions(-) delete mode 100644 src/ElectronNET.WebApp/electron.manifest.json diff --git a/src/ElectronNET.WebApp/electron.manifest.json b/src/ElectronNET.WebApp/electron.manifest.json deleted file mode 100644 index f423bab..0000000 --- a/src/ElectronNET.WebApp/electron.manifest.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "executable": "ElectronNET.WebApp", - "splashscreen": { - "imageFile": "/wwwroot/assets/img/about@2x.png" - }, - "environment": "Production", - "singleInstance": false, - "build": { - "appId": "com.electronnetapidemos.app", - "productName": "ElectronNET API Demos", - "copyright": "Copyright © 2019-2024", - "buildVersion": "30.0.3", - "compression": "maximum", - "win": { - "icon": "Assets/electron.ico", - "publish": [ - { - "provider": "github", - "owner": "ElectronNET", - "repo": "electron.net-api-demos", - "token": ">> Insert GH_TOKEN here! <<" - } - ] - }, - "directories": { - "output": "../../../bin/Desktop", - "buildResources": "Assets" - }, - "extraResources": [ - { - "from": "./bin", - "to": "bin", - "filter": [ - "**/*" - ] - } - ], - "files": [ - { - "from": "./ElectronHostHook/node_modules", - "to": "ElectronHostHook/node_modules", - "filter": [ - "**/*" - ] - }, - "**/*" - ] - } -} From 78b59f62c9faac6ee1d0ae46919ecb2ab8a8979b Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 14:15:47 +0200 Subject: [PATCH 34/66] ElectronNET.WebApp: Adjust controllers for API changes --- src/ElectronNET.WebApp/Controllers/CrashHangController.cs | 4 ++-- src/ElectronNET.WebApp/Controllers/DialogsController.cs | 2 +- src/ElectronNET.WebApp/Controllers/WindowsController.cs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ElectronNET.WebApp/Controllers/CrashHangController.cs b/src/ElectronNET.WebApp/Controllers/CrashHangController.cs index 6df56ea..e298ded 100644 --- a/src/ElectronNET.WebApp/Controllers/CrashHangController.cs +++ b/src/ElectronNET.WebApp/Controllers/CrashHangController.cs @@ -12,7 +12,7 @@ namespace ElectronNET.WebApp.Controllers { Electron.IpcMain.On("process-crash", async (args) => { - string viewPath = $"http://localhost:{BridgeSettings.WebPort}/crashhang/processcrash"; + string viewPath = $"http://localhost:{ElectronNetRuntime.AspNetWebPort}/crashhang/processcrash"; var browserWindow = await Electron.WindowManager.CreateWindowAsync(viewPath); browserWindow.WebContents.OnCrashed += async (killed) => @@ -38,7 +38,7 @@ namespace ElectronNET.WebApp.Controllers Electron.IpcMain.On("process-hang", async (args) => { - string viewPath = $"http://localhost:{BridgeSettings.WebPort}/crashhang/processhang"; + string viewPath = $"http://localhost:{ElectronNetRuntime.AspNetWebPort}/crashhang/processhang"; var browserWindow = await Electron.WindowManager.CreateWindowAsync(viewPath); browserWindow.OnUnresponsive += async () => diff --git a/src/ElectronNET.WebApp/Controllers/DialogsController.cs b/src/ElectronNET.WebApp/Controllers/DialogsController.cs index 419e800..6e957c2 100644 --- a/src/ElectronNET.WebApp/Controllers/DialogsController.cs +++ b/src/ElectronNET.WebApp/Controllers/DialogsController.cs @@ -27,7 +27,7 @@ namespace ElectronNET.WebApp.Controllers Electron.IpcMain.On("error-dialog", (args) => { - Electron.Dialog.ShowErrorBox("An Error Message", "Demonstrating an error message."); + Electron.Dialog.ShowErrorBox("An Error Message", "Demonstrating a really great message."); }); Electron.IpcMain.On("information-dialog", async (args) => diff --git a/src/ElectronNET.WebApp/Controllers/WindowsController.cs b/src/ElectronNET.WebApp/Controllers/WindowsController.cs index a528b27..bdf7472 100644 --- a/src/ElectronNET.WebApp/Controllers/WindowsController.cs +++ b/src/ElectronNET.WebApp/Controllers/WindowsController.cs @@ -11,7 +11,7 @@ namespace ElectronNET.WebApp.Controllers { if (HybridSupport.IsElectronActive) { - string viewPath = $"http://localhost:{BridgeSettings.WebPort}/windows/demowindow"; + string viewPath = $"http://localhost:{ElectronNetRuntime.AspNetWebPort}/windows/demowindow"; Electron.IpcMain.On("new-window", async (args) => { From 2a26b46f91b74e7071b2301ab39dcc66e0683106 Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 14:16:39 +0200 Subject: [PATCH 35/66] ElectronNET.WebApp: Add builder.json, launchsettings and publish profiles --- .../PublishProfiles/linux-x64.pubxml | 20 ++++++++++ .../Properties/PublishProfiles/win-x64.pubxml | 20 ++++++++++ .../Properties/electron-builder.json | 31 ++++++++++++++++ .../Properties/launchSettings.json | 37 +++++++++---------- 4 files changed, 88 insertions(+), 20 deletions(-) create mode 100644 src/ElectronNET.WebApp/Properties/PublishProfiles/linux-x64.pubxml create mode 100644 src/ElectronNET.WebApp/Properties/PublishProfiles/win-x64.pubxml create mode 100644 src/ElectronNET.WebApp/Properties/electron-builder.json diff --git a/src/ElectronNET.WebApp/Properties/PublishProfiles/linux-x64.pubxml b/src/ElectronNET.WebApp/Properties/PublishProfiles/linux-x64.pubxml new file mode 100644 index 0000000..3c9c831 --- /dev/null +++ b/src/ElectronNET.WebApp/Properties/PublishProfiles/linux-x64.pubxml @@ -0,0 +1,20 @@ + + + + + true + false + true + Release + FileSystem + publish\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\ + FileSystem + <_TargetId>Folder + + net8.0 + linux-x64 + 6ea447d9-343f-46b8-b456-66557bddbb9f + true + Any CPU + + \ No newline at end of file diff --git a/src/ElectronNET.WebApp/Properties/PublishProfiles/win-x64.pubxml b/src/ElectronNET.WebApp/Properties/PublishProfiles/win-x64.pubxml new file mode 100644 index 0000000..04d7a39 --- /dev/null +++ b/src/ElectronNET.WebApp/Properties/PublishProfiles/win-x64.pubxml @@ -0,0 +1,20 @@ + + + + + true + false + true + Release + FileSystem + publish\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\ + FileSystem + <_TargetId>Folder + + net8.0 + win-x64 + 6ea447d9-343f-46b8-b456-66557bddbb9f + true + Any CPU + + \ No newline at end of file diff --git a/src/ElectronNET.WebApp/Properties/electron-builder.json b/src/ElectronNET.WebApp/Properties/electron-builder.json new file mode 100644 index 0000000..e5a106a --- /dev/null +++ b/src/ElectronNET.WebApp/Properties/electron-builder.json @@ -0,0 +1,31 @@ +{ + "$schema": "https://raw.githubusercontent.com/electron-userland/electron-builder/refs/heads/master/packages/app-builder-lib/scheme.json", + "compression": "maximum", + //"afterPack": "bin/Assets/afterPack.js", + //"beforePack": "bin/Assets/beforePack.js", + "buildNumber": "", + "linux": { + "target": [ + "tar.xz" + //"AppImage", + //"rpm", + //"deb", + //"pacman" + ], + "executableArgs": [ "--no-sandbox" ], + "icon": "bin/Assets/icon.png", + "artifactName": "${name}-${arch}-${version}.${ext}" + }, + "win": { + "target": [ + { + "target": "portable", + "arch": "x64" + } + ], + "icon": "bin/Assets/icon.ico" + }, + "mac": { + "icon": "bin/Assets/icon.icns" + } +} \ No newline at end of file diff --git a/src/ElectronNET.WebApp/Properties/launchSettings.json b/src/ElectronNET.WebApp/Properties/launchSettings.json index 7ea18a5..2cd3aa8 100644 --- a/src/ElectronNET.WebApp/Properties/launchSettings.json +++ b/src/ElectronNET.WebApp/Properties/launchSettings.json @@ -1,32 +1,29 @@ { - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:50394/", - "sslPort": 0 - } - }, "profiles": { - "Electron.NET App": { - "commandName": "Executable", - "executablePath": "$(SolutionDir)ElectronNET.CLI\\bin\\Debug\\netcoreapp3.1\\dotnet-electronize.exe", - "commandLineArgs": "start", - "workingDirectory": "$(SolutionDir)ElectronNET.WebApp" + "ASP.Net (unpackaged)": { + "commandName": "Project", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "http://localhost:8001/" }, - "IIS Express": { - "commandName": "IISExpress", + "Electron (unpackaged)": { + "commandName": "Executable", + "executablePath": "node", + "commandLineArgs": "node_modules/electron/cli.js main.js -unpackedelectron", + "workingDirectory": "$(TargetDir).electron", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }, - "ElectronNET.WebApp": { - "commandName": "Project", - "launchBrowser": true, + "WSL": { + "commandName": "WSL2", + "launchUrl": "http://localhost:8001/", "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" + "ASPNETCORE_ENVIRONMENT": "Development", + "ASPNETCORE_URLS": "http://localhost:8001/" }, - "applicationUrl": "http://localhost:50395/" + "distributionName": "" } } } \ No newline at end of file From ae12eb49ee7ae136e8da69d6d0c34eb49f0a28b6 Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 14:17:02 +0200 Subject: [PATCH 36/66] ElectronNET.WebApp: Adjust startup to use new onAppReady callback --- src/ElectronNET.WebApp/Program.cs | 72 ++++++++++++++++++++++++++++- src/ElectronNET.WebApp/Startup.cs | 77 +------------------------------ 2 files changed, 72 insertions(+), 77 deletions(-) diff --git a/src/ElectronNET.WebApp/Program.cs b/src/ElectronNET.WebApp/Program.cs index 6a32e60..9adf2ea 100644 --- a/src/ElectronNET.WebApp/Program.cs +++ b/src/ElectronNET.WebApp/Program.cs @@ -5,6 +5,9 @@ using Microsoft.Extensions.Logging; namespace ElectronNET.WebApp { + using System.Threading.Tasks; + using ElectronNET.API.Entities; + public class Program { public static void Main(string[] args) @@ -16,8 +19,75 @@ namespace ElectronNET.WebApp { return WebHost.CreateDefaultBuilder(args) .ConfigureLogging((hostingContext, logging) => { logging.AddConsole(); }) - .UseElectron(args) + .UseElectron(args, ElectronBootstrap) .UseStartup(); } + + public static async Task ElectronBootstrap() + { + //AddDevelopmentTests(); + + var browserWindow = await Electron.WindowManager.CreateWindowAsync(new BrowserWindowOptions + { + Width = 1152, + Height = 940, + Show = false + }); + + await browserWindow.WebContents.Session.ClearCacheAsync(); + + browserWindow.OnReadyToShow += () => browserWindow.Show(); + } + + private static void AddDevelopmentTests() + { + // NOTE: on mac you will need to allow the app to post notifications when asked. + + _ = Electron.App.On("activate", (obj) => + { + // obj should be a boolean that represents where there are active windows or not. + var hasWindows = (bool)obj; + + Electron.Notification.Show( + new NotificationOptions("Activate", $"activate event has been captured. Active windows = {hasWindows}") + { + Silent = false, + }); + }); + + Electron.Dock.SetMenu(new[] + { + new MenuItem + { + Type = MenuType.normal, + Label = "MenuItem", + Click = () => + { + Electron.Notification.Show(new NotificationOptions( + "Dock MenuItem Click", + "A menu item added to the Dock was selected;")); + }, + }, + new MenuItem + { + Type = MenuType.submenu, + Label = "SubMenu", + Submenu = new[] + { + new MenuItem + { + Type = MenuType.normal, + Label = "Sub MenuItem", + Click = () => + { + Electron.Notification.Show(new NotificationOptions( + "Dock Sub MenuItem Click", + "A menu item added to the Dock was selected;")); + }, + }, + } + } + }); + } } } diff --git a/src/ElectronNET.WebApp/Startup.cs b/src/ElectronNET.WebApp/Startup.cs index f6c0c33..03442a5 100644 --- a/src/ElectronNET.WebApp/Startup.cs +++ b/src/ElectronNET.WebApp/Startup.cs @@ -1,6 +1,4 @@ -using ElectronNET.API; -using ElectronNET.API.Entities; -using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -40,79 +38,6 @@ namespace ElectronNET.WebApp { endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}"); }); - - if (HybridSupport.IsElectronActive) - { - ElectronBootstrap(); - } - } - - public async void ElectronBootstrap() - { - //AddDevelopmentTests(); - - var browserWindow = await Electron.WindowManager.CreateWindowAsync(new BrowserWindowOptions - { - Width = 1152, - Height = 940, - Show = false - }); - - await browserWindow.WebContents.Session.ClearCacheAsync(); - - browserWindow.OnReadyToShow += () => browserWindow.Show(); - browserWindow.SetTitle(Configuration["DemoTitleInSettings"]); - } - - private static void AddDevelopmentTests() - { - // NOTE: on mac you will need to allow the app to post notifications when asked. - - Electron.App.On("activate", (obj) => - { - // obj should be a boolean that represents where there are active windows or not. - var hasWindows = (bool) obj; - - Electron.Notification.Show( - new NotificationOptions("Activate", $"activate event has been captured. Active windows = {hasWindows}") - { - Silent = false, - }); - }); - - Electron.Dock.SetMenu(new[] - { - new MenuItem - { - Type = MenuType.normal, - Label = "MenuItem", - Click = () => - { - Electron.Notification.Show(new NotificationOptions( - "Dock MenuItem Click", - "A menu item added to the Dock was selected;")); - }, - }, - new MenuItem - { - Type = MenuType.submenu, - Label = "SubMenu", - Submenu = new[] - { - new MenuItem - { - Type = MenuType.normal, - Label = "Sub MenuItem", - Click = () => - { - Electron.Notification.Show(new NotificationOptions( - "Dock Sub MenuItem Click", - "A menu item added to the Dock was selected;")); - }, - }, - } - } - }); } } } From 40d6558613e5244e109fb895b37b1def6ccbabf5 Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 14:33:36 +0200 Subject: [PATCH 37/66] ElectronNET.WebApp: Update project file with these changes: - Add a ElectronNetDevMode property at the top This allows switching the project between using the nuget packages and consuming the core code directly via project references and direct imports or .props and .targets files - Add the project data which was previously in the manifest file - Add the Microsoft.TypeScript.MSBuild package This overrides the ASP.Net built-in TS support which is currently at version 5.6 only. With this package, we get 5.9.3 everywhere, so everything is consistent now. The only caveat is that it requires exclusion of folders (especially node_modules), so that they don't get attempted to be compiled --- .../ElectronNET.WebApp.csproj | 76 +++++++++++++------ 1 file changed, 54 insertions(+), 22 deletions(-) diff --git a/src/ElectronNET.WebApp/ElectronNET.WebApp.csproj b/src/ElectronNET.WebApp/ElectronNET.WebApp.csproj index 41ea283..da1ddc2 100644 --- a/src/ElectronNET.WebApp/ElectronNET.WebApp.csproj +++ b/src/ElectronNET.WebApp/ElectronNET.WebApp.csproj @@ -1,11 +1,54 @@ - + + + + + False + + + + net8.0 OutOfProcess AspNetCoreModule - win-x64 - 4.2 + + false + false + False + False + + + 128.png + wwwroot\assets\app-icon\win\app.ico + true + wwwroot\assets\app-icon\win\app.ico + ElectronNET API Demo1 + 1.0.2 + com.electronnet-apisamples.app + Electron.NET Demo Application + Electron.Net + Copyright © 2025, Electron.NET + Electron;.NET;ASP;NET;Sample;App + 30.4.0 + wwwroot\assets\img\about@2x.png + MIT + False + win-x64 + 26.0 + + + commonjs + true + ElectronHostHook/tsconfig.json + + + + + + + + @@ -15,19 +58,6 @@ - - - - all - - - - - - - - - PreserveNewest @@ -37,13 +67,15 @@ - - Never - + + - - PreserveNewest - + + + + + + \ No newline at end of file From 43ce20d60fd8183a535eeac107dbab3e3eb2818f Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 14:25:57 +0200 Subject: [PATCH 38/66] Add ElectronNET.ConsoleApp test project --- .../Assets/electron.ico | Bin 0 -> 279958 bytes .../Assets/electron_32x32.png | Bin 0 -> 1281 bytes .../ElectronNET.ConsoleApp.csproj | 77 ++++++++++++++++++ src/ElectronNET.ConsoleApp/Program.cs | 50 ++++++++++++ .../PublishProfiles/linux-x64.pubxml | 15 ++++ .../PublishProfiles/publish-win-x64.pubxml | 19 +++++ .../Properties/PublishProfiles/win-x64.pubxml | 16 ++++ .../Properties/electron-builder.json | 31 +++++++ .../Properties/launchSettings.json | 30 +++++++ src/ElectronNET.ConsoleApp/app.ico | Bin 0 -> 162091 bytes 10 files changed, 238 insertions(+) create mode 100644 src/ElectronNET.ConsoleApp/Assets/electron.ico create mode 100644 src/ElectronNET.ConsoleApp/Assets/electron_32x32.png create mode 100644 src/ElectronNET.ConsoleApp/ElectronNET.ConsoleApp.csproj create mode 100644 src/ElectronNET.ConsoleApp/Program.cs create mode 100644 src/ElectronNET.ConsoleApp/Properties/PublishProfiles/linux-x64.pubxml create mode 100644 src/ElectronNET.ConsoleApp/Properties/PublishProfiles/publish-win-x64.pubxml create mode 100644 src/ElectronNET.ConsoleApp/Properties/PublishProfiles/win-x64.pubxml create mode 100644 src/ElectronNET.ConsoleApp/Properties/electron-builder.json create mode 100644 src/ElectronNET.ConsoleApp/Properties/launchSettings.json create mode 100644 src/ElectronNET.ConsoleApp/app.ico diff --git a/src/ElectronNET.ConsoleApp/Assets/electron.ico b/src/ElectronNET.ConsoleApp/Assets/electron.ico new file mode 100644 index 0000000000000000000000000000000000000000..3a104492d2e1a089e2e03b0eba36a53c94ccd009 GIT binary patch literal 279958 zcmZQzU}Rup00Bk@2?h-XW`;Bd28MRLz_7ZgMa{ppTWw&py$BCpaHRffq@AmE&<{(FfcGfX$0kD zq(6#ALtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU z1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0q zLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$( zGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!n zMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ON zU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU|>VQ(NGT$8d$fD z+CCZrGz$Seu*smr4`yJ$cHGerq71t%9*v_?qaiTZLI6_ELtF)CI~(ge8ymooK9~y@ zF)@I!os9J1is1~1A*1AI2n@LpfE4M@#`>&>G7Uzh*;vi#qdW&gh{`v*q< zzb^m&YQgO@eLGiI_SD9PyIEUlX<4XiI2!7?m>4)2K|2l*lZQ%ZjJk8=gaABcIvVOh z%6wB*buUZf#=@|Zds;p}pZD+U@_*k~{QI!v*XxBpUoQCh3XC9(mkWNrT=4tN!v7za z{`;}=@2912AI{#rrm85}*Ir-OLPHbMH9)pv&Kg}J&0q+blTaoC6Ls0Rmg2*AfDA+2<4EiD%lg9Q__zP?)U|I4x;FQF+P zp6q{s8aa#pe_rQxD}TKP zmEONzFZ}gp;V)Pk{`YCw|8Fb4Jezm%Q2Vy!0Y@*c3mnKV$Wr!rg1CA6%U9 z_v6z4UzY#~!3Rvg{l02(F**EMiw z4Cb&Jb=xot0Z6KYl>9Cx24-sNH95iGUM~3eVF{$U0&VcTnE&tN(!U><9@tP@l;mTt zuVbOEVWp*IudnN3V&Gn-c}|ZmC;v^cm4mm9Mo}s0qQ4dh{{L?)?wy|y<700%ngxtdW(kK`G8@d^ftUQ|>KZMj5kKB8`txq_kC*d*y;=DC z%|gi7=KpUiuAk|v$Oy2}(Kb`la5B;Z4`UiY`~@)qPJ(BhPAO`+tAE@Xy;t;MuE1zuthlz5hNg{qS^dV_}%N8ffMhobsWww~$iW5qGWa zXb8#_kV*lPYb-T2?e%q6%*g%!W!bMci$Fs|Z$RB@P($d;vU?XNhPhc=Ya_bD5Er63 zdz3pG0+fdUBxylPesgt=^l-P2Pv-swHG39-x~SlBp8ubgKEF9FGt%8mOY0WIc) zBzuqph*;hXu?137KaW)ezdfJ#|J(9QM>}0j4ZsWM;C6vB z5y(2+8EsT{Gz7>90mvkmt*&;UgT;eOlm35N3hD4d208zKTK4Gjq-Y;Ib2SZDQ%dJ* zAsGQeIvX1pE34Jy1bu(C;P+c_EdZWG1~r7fuh_b@%tl)q?j490ICqpW8UmDu0Ju#8 zDpws0bR7+J4{vMy|7`_0@q=b{f4rCvO8i$RM|j#=YG^_dKcd(tw;YC~WC-bMYG9(G z)>It!^X=l_(1s9b`NWTx3;usuKB*jzA;8gG9a{2Jp7L)=I4P|snH_& zfvXC^!v>saP717!R1MQc4l^Zpp64ghS0tMwE|((oDmxW zko50ttZ%2M<85tn_xyzapO(Tqp`hl+=Ve{hF=ndj)N1x%4{D?&ZL6cbYfaVvZ_9sx z=LLShSp*sm`nF>I!eR>z=o&d{RY2GsLvD+1)U=@$0+7TH>GoP^Xs(%C2y6C(r=q~K zv1{iQS!jR;`5|6|Xo0Y)NWzCkAvw|0()i}7-v6JM{Q%DngZ31>TKMPvlFG~gGqurH z5U8g{#lRoIMuCRzL8JW|8hNpvKfo;?$UGOQ$o;(R>hUf&Gehv2Oh}Uh)KH;Oa6xhw zq!nbLp_vlm{OQ>|$Z*i_H=wmf|35Che_?{RjVZJh1l~$dBgc#yJM2RMlHQz*K&$#) zObjj`=>)B6elZ`?>-_Zw)a=iQaI-+^b<(!vfj9}01u-qv|8+TNg%5ZU4kV?`>Pe&js3Rl`K$`cChI(iB zw?P&NfpX=`1^+)Sy>zn2Ru?fHK%?*(HFkK10C>~|bUu%*u1=t%`J?Mo|Gr=R^VI^- zc+1NL|35Fga;($E#K6Ho7ZMKeWC`KYk_0ueAXR{smS%FW^QY(Yf4yDw{rUW_Pv`#s zvi$Ucb}KDSS~`HXb=;`S2RsBIi5Zf{%+%BuP0of7_=9?yuNVG)x40N}ydAP)fu1gh z^vccE)j@UBw-x`sE&u;x<&O_bsIQ!4r#XnzxX1hS$-ft_mEGvf`%K%C6u%v~>5QqY*lMoxhq@JCwPJKb> z-t{%R)>M_H`B`gg!O}LUOAfBcK)rYf11yC_93l%gkbb_Pda#TdNO=fA(g39JH&@qK zIV&GD*#zzOF8KRy@wpqlM!gsy{)c}wYHX-nmRaz zgJi)A@C;l`up?Jf0|>af79a`0+1S8J zTPw=T_SLZU5{rYay26BRWxHFZl(O>1p!J3Sppu6F?) zMhY?n63dVPfwLhDG!j`2n$#$lq7Z%P|pk+vgK~5I&{tlUu?)mXvC8>VpS%LLMVeOUCt>sY-#o;yip_Ms7<(UEb3En9o zE)kx#es-n~2B58HW@_qInwqw{+71Swt(xF13}`hSC<8(q2|t?-%mrmn@X#5E0T!WV zq>LN`;pGXO0Xs7pa(FT*RN+!^2DQQmGRGR|VDaki3~=EOZuvi-|Nr~Sc@r|t)WC&5 ztOY_XOX21~yaP$+$ZT*E1>}A3Il4M#YU(B`YBr#=AoRVhO_G9~8Vf_`_h)QbR(5b( z!}-GLL3Qp7-aJ%$a(NX ziXgJc>LI#DN#aAm1#})VXqeGPN84IU%Lg@3#WC{6R$`EAIjV$gnM z@S$5jUd%^Bpfk8Yr)+_?u>Je6>?vqrMMjv6KrN6EgOHH31Wi=b z+|3O`oGs)09MU7)BE4(_oh%#;^^BEOA*TYu6F)>3*?|Vq4&H%iudnN2ZglNL4`_i6 z_|PiQI=8PYmQBw^UR~n^R!p{aNE-FPZ3caCBOjCnz$GfE1@2&=Yp$+gtgPm2tRLoP zU7a1YY5mtn0~kTOEMG7D{dUp6PfP#*T=nzKqPv$SZCX;673J<|pl70@ zW)E%`IT`7jtAjchUREZdu2u;Fj%nep5gs-H4(4`xI>ySXkXplW^zdF1mkUCAVYYgp z14GinTo+BrzIdqP^OL!M-Yx$7VacyIi{9Rwd1PzD)V8Eh7b`P0b;w9KDD{$P5mE|7 zlu@A7KI$6PIl+*`4@x}X%~oHY&WrW2x6#pt*Y9ZBN#(*F3`zWuBOoBXR~v0@$n5~0 z7RE)%zO#GNPwZ^^{A4bui2l3`bbRzj&^fx_pU;CFllTjs&cV~u5I6sXBx&$5bU$8z zj#va8wD^2Jf`rrvUX?o8mOn@+Iwql zt%IBEL92aUf>!&0#{9pp+_9o}HeKsfwDFmR6{% zRYPIeuGN)yFHipdasem=zAguCw0{LUAQ4iwL)QF&PJ{sMg+Yk_1gGBLZx;P~zvTbt zrJ#n;w-x`tul)aW)&F0s|NjP~U#tKBS_MKsR{s080(27lCs1PvQW5+B*#bGL7gS|{ z1i^Xa*XxC#VE?-O>hbQ@(ukd_tA4&)407AYr4VO8@*OC4zOVTAb;Z3)6Whw8Y_zq( z6#=xlNOri95!6FS3nW-Ti64A^a%P14<13T@e_#3Q4QOT`veyF=yrAfK1v+Wr`}6sK z-Y@?DedX~TjsAA#;F1}%>lR+xkm`Mi?KV2vG2V9X9?$vxb`hjp1*NFBi%L`dpgmvk z9d@J|j_fK(vIiIV2CgOswz@jz>KfMCT7ixhZRL@>R#&~cJsniYe_r}r}6*iWl*<45BP;vA3tA#jxGK10(55M|F6q8FD`WjU4@_n z?lgf~caXRyBLIi17D#|Vnmy*~8o6;^AD_$#wZ58If)wE>=D^rmm)-j?tss{!8R@&58~NIrB?UP*6@@LDlyzu(!_(_iKxdZzSP5D91m5fn z8V3WFKj6a{e}a=eC?df7k-vkRSV*x0T9WnFR`5L;KB4&i)Lz?#bx{w)U@DLMdMl9UjrYbvd+4S5;S0;lF<^=~kqzZ;O3_^lB z4lfsgYJ?vvL9z37`ET%+Ot4B&lNA&@KUS`qoo@|3qyk(NK+7oNLvk3againrQEjcI zwR>F+s7!kfYIuXj?p}gU{P_QM`ID=Y4{vSQy{_iu?&c2TKz~C# zyoo|;h=DVpft8k4tgrp2$8%tj3o7y6Kb#%uX=|;mMN-cf<}YYmL*}X=OBBM~th;Mt z&+c#g0Y2OO->0QNU(WyWaz0v1161U`Sp;s7EdT#)#oN0xj_zz)JT<2(D=^5(($PrI zN=wT`8I_hP}HcZ>ghT6X{Zg#DZAcCV{Gx4-Sn^Le1y zf!7Y;`)>YzTw0bMV6G0`n+6XYWCx5)HY6?}qb`L>zQ17S+klQc10SvM;nD0#&51$I zmbSXup!F?=da=ItYvvXG{s0=>29+~!Kx23RJ}kL^c~YRGxveg=sYy~GgVR5#A06y$ z_44-gfA5!k1Fa~Y_y5{`Thf`np!A>*7#70?i8$H$%b=l6@fOky>bIn5wF;oSFCk(^7Dg z3{TN3Z+*@GPs>34CeR`9pvwCH=VccTbvPR8 zIT*n0f-+EDGGtmTRCl(uw$_$qW&gjg03D$TZc_ezxA@)tS=rGZMoOxXR1KMnx6%SF z^y+Vj|My`Dq|5|$#9qw*|9wSAWt54s8hk4{DUJk12WZ)kmgcOkR8S-Q7D zD>=y7N=plpj3H?QtFg#Z5H@6P$Q*o)U3o^pzI8R_O)l{scFB zKm#lvm;V2{{Lj0^SB`WpoRpmx=jCc@08Uz&c6LnZ`4du?7V`1gLvt9vuk z!d#7&Kv!Ej8-pqiM?*bJO-)Np&6P9rAqNG33MlZ9)UUUT^5eX~YqO!l6gaFNQCR?# z>YR+grz=>QJijpw+}i@R>OoUZpO$u1MjI-sxS2t(#D&BNsFpX@H&@fxyrc}&Q3Wr~ z1T}%auGqD@$_{*aD9K?98r1=Xyn}(RgMn^+LFk^fRqN&#CI&iz6F;cg07-9HO@=rO zuD}^QD{88$=4oZzSrvWZNaxS@i~oOH0okYvDndagMT7hA;LGp+zF++R=gM!d7T!49 zzj#V^Mx?ukxsi#Anx!V_!WYO)E4-}^whJ0=ki?JdBydFrYRKiqdVYVq`2Uw>zh5u> z|9kai@JWe~9s#7aiL47N8)CSNiGii2W=g2bhevZDt3e=1`sbU41qt4!s%ownu>Kf`J=a7<4L(wh)zXnB2#qgot;`6w@2{X|X@U~}=Vez<_rk*p zK1l>gV=mx1g0wK#FVE)v24A!C^VP!t@0UEfJjuht$X;L93H1tTf}sjNmKId#K^AmD z3NgsSNQjMa63r-ZY6N8*2*VY88mF0>x|fx4e?$D8bN%2e@Rq?#cu3+-+g!-7Cfdhl2lq$Gsi@c47($ES0T?`~-;i|}_a zw@}wG1GkjG{ZNoCaPuKq4`K_%YCI$){hKJOEt#4FX|6yl{r`E{>Ny3N;fcp6h`pfn zudLeNl<@!e>hI6zL56q!|6Db(IT6yI1)Bg02Z(yeFqe(4c94@LcBdbRuVf4iqL}yM`45lK#!rHQFm8|HInzplgFZFIzl0+fq{#Uhl*G4o?Yox;m%! zw}DQA0=K1qy;=12)q*fLYuH2p$pHm78EzL=1~_Gc3-V-cnbMl{@Y2Np z-C3WbH>NI{lARvzYNMlVp`l@`s{`4Gf@&QoQGqKa zkX@)!I7J}gX{o7MnHBi^9q6P)X!`%M?BelmNbLqrs5ni4TLktUXu#H7O?^&Z`v0G+ zAYC(1Q}frV=CTN5WmU)&1Cka{K>=An>t}EF_{tLisHyV;w1eRPm*syxF1>QJYeGZ3 zudS)Mx(4LnEJ$|-Vi%-k4sip-7Sc)3MKgAKIzBe0ukOwSEsc8xx={7^n?;|V%*}{! zM>?}AwoPwP#KR%ib zS-1kK(7!CZd<0bfJLrQZ!XPT~+ddLxA?<%_ZLRchx9_0gGEnCiH0$(f>GiXHuBM>V zrNHGCD0tz?1Jq8|&`6JP`vz)7gS9}~|CeCxf6CUvVGVhBl!4t0Y8qK+XxQoMRAdHT zI@0;?^D@xYjo=Hcp=JK7g+D+mh!+0;zT(^Kg-5nERAmRbnu3n81($)K0TU#zfl5x0 zy|5`f5Ss#D*y-tj#vx%7d7xEHKUVfP#+$0Bxqy#nC&GMCIRI(@G#0_z|DenG{(oL} zbXxS(7+dBR%ZwO{|xH*K+lK&zTybD{SP0!BEkWLE2$xF2qabO+w1Fi zSsFjRJ{2_e51!Qml^CCw_1482DM7}6K)p7IXCVcqxw^)VRTYp<8T<^)?JFxF>(9X| zp@xIm6on+bK!#)i7ZU@>eyf~V&!gKLK$nwZT=)x_z54%k`L~w~cCD_=jC8lr(Kc7t zfNZLQI0<4JBn!aV5GhJXPznSe7Tr}H13DA}GCl?#f!VXR8hkn&u^|I7%1TQsDah%~ z{aMK4Kfm8CE=uwNuTD2|2Im5Zn_W!}?e%pW4D>D>>VOY{f@1UQ@+DKUjg?2of3PP- zD=n>!i%UTJ4Z-mR+H&%4@rOrq3KG2y6;-UYVGECq^daN_)7q24ZA;Mp6le+aZAEKY zB)Cxu8DS&o#3TtkTM@M*aBWS^#A*c zPcP>0SXG%8?rNn4+PVT6#)PDHh+SYav4;jk0U0FNOi-7^LPH}h%oQ@14Vf$d_kQuS z8&f?kjls1KQT9Uo4q0J)`anB)S;&0IDDM9cOCDdD9Ovg?q@-#GZqk6f2Hq54t*y0o zUJ>#Fa?q-ww~Ml)J-~y>kk}#00c3>0(9(j4FLjOl1n(c<6)%vq1UXv& z*g-ab+3D&e2RUzDUIy9=08+dVG!YM;DZYDgl0WziaQIR~3WEY3`$!EQ(3Ojmni5~% zo$>$M3P`?#xE9pS1Rux@D)V2=-?FqUHPpolJQ)O;OGS1J++<`yYOx`PI~eG>nHpXK zkB>nHpg;$OJ3iZ(Nh}>x{?^Y z?#R(VFDKUX@YZ^8%Lmjh1&tShPYgS|zm>8DTEjEHKq3nq$oiI=n%h@a{Qt4?8+gk( zD83-;e}1fd{b1I)Bb_IAHeET{^Wn){$d!nY^~sQg_y5}p&^hGbDR_vP6ecH#ArR69 zyh_Rmk40Xl9G)aL??X#IS- z;LrOde?KpKbYtq71MMevHeWm2_Z1utkP!*+OfjhU{pZ7y!bBfPe;IBjE=xzCI3)es z>gt5LT0Ocl`Tu9o;%7*?3K>87^KS9~&&&ROUiSa$nu8|Sp_Wt24P%;CL>OC`| z3~QV}-05X$0vYy%#24A&33rSWctxePww8^yR%21vlWS8z`*FZ~Y$1`0$e3T3Uq9K? zP!MXb58AE^nE--~XX=AaZh>S0BGN6{&PLS;Dg>O3K?{fC{2V~*(7^kAL7mXg%dVg9 z^|3JpO+tas??TmxrHug(5NBi1hTp23pl{$+sh~OzLSx@nVLqJoAsVGRewG${rh3b_ZRbjLSr118GnIS zFTcJwb5cv9o0%bauPdnI2@g_G%BNqNM^C!oNhn=UOXGXzCx8bEK&|mVZx?-hG$%R4 z1v0S+_cGkgSQ+rxft*NCn(FuZ?#%x`R)P{aq$>*@4ytL1Sk=q)zdtF54G zp2;p@Ahv^JAC!hcn?ba++A5-6-2?S=L7NT1IT768SpbgQWxw7o+PtJR)D^S`-(DYd zR21BHBGVPvI`ni)6+yUn?DTZNmnE(E@d6Z#psCyME2?vYL9+lRpm7+uN<#L64yk~Y z4Cd+@QC_y&SCoH$1!_?J`>^EC`^CTCE&ly>5okLAWC!KfKfN>K@Rs_{>X-lr3sY5;^B-U)Kn*0x zUWi^$YhO*>-`*V56aNg_lLZ>dhZp-V=Kp@T`2W`x7msunB>GrtYJyLoLiBLqS%65Z zX{QW4b!!N^FRv#JymSY&r3jM#=k%ppYQPtk5EWMN!6HaA)ka6#N>ei<(tY8itm~(G zUp|=i{_&iTPv^aUIQ#L9sk_%yH57(=S{g&{0f&bPB!p?_<>6$qt*-XTolS^dz}rP% zp3Q43iwt$K^0G3q1T0`~BGMii!3);{D%n8i`RiF|XqKn@Ke;*?G{gj6oc#Os z!r!2QR#2ns|JUUo9?hQGn&e~zIv^1|yaQSq4KZiHi+$t-08ak~rmAW+Il+)>6f{r< z9*R7&rQTj2blNAfdV*~5?if&J0fiNKWgzH~77a}Y1HAxy^Q1th^l;a3cWXCOL(ql= zbq%CC5vq%z6{8B^Az-bowQpTDBK^Nv^yT^d%t&`*Wi`lZ6UZzuB?%8%uZsz2&Af|= z!SWe-Ki)6?`w`UIhg3SCWb&I=2ntRB+i2N}>=heiH6qi22UOp!=ch^gyRigZ3Tk zf=)X@o9P==#R7ic4IWw0bnwDrNc#tp4*$GeRF@ZGp`igeTMzD3NQ}U_L^2?{AS7sH zLro*b$Ns{>_W$2kKwA4COTpXFKy8L^D_-B7(Nz^~4?ar)mhz!#24V=2_R>um#8nOk zdafq=*U$BXCZr(aY3~-ldonk|!^Tz@G^GwvMv|*AwSenE#NnSLnKr5zH3T4IcluVE znxGZz;N@GO68IJ9a;whDC=(Sm_?la?3l>NWf=e(^@nxo_UY{TG>i$g7R1xy57O1tq z=>M1H2RGG)d)Sz&szJ0sw8NXVsP2bmia{a>Imr6hjwbNZ1<;(uuQv;Syk1zE;%A`= zn#+d!g;WP42R?)iAtB~K*kl_HF=RxN(DZMqsR>%)^L0672oyZdziLKjs-dC^JpEG= zK9GJKKQ*-`+2QkpPy8pi{`}B0~gvJD0U2Pj3ZO9o8kT`{qlsJGsdLii_bc@Gl z=uMH3rTF~~@usTkuHYdc`nY7&7GgpGlCB`fL6l_#{QriW{#R~WQ2|~+MM)V8%3qMa zp@oKKprgf!-Oc}htOTtP12+#q#Uto^r-lE&tvG+MJt@c;HpB!PErfUh;z$U4(2@{G zf=28$G(ihNAxn|pfVU$4T(x>mfsqpW?v+97myzQzaJ>mStj1DPGv43vD`nFOstWA)|lZg)*NP2*fkU`G0FxLl{K)Vzn6I-BJw%4G!`@bKS{Qj_b>9ibB z;sG}j;7uKfcH%7^K$Q@uIvay_uV=@4f=(GiY{gx9XmcH8m)rolaMWt7ApmJ(+v(}} z*_quu)eB!k{`<|MZ_npPdf8foPa^>@Fd()ffFuTp$&iD)8;im~hwFY?3UBlLd<|Z# z@^$&kJ2PssgW!WakSqz$0$ANV2n8Wtb~e_x*4B#fu=(7~KM*Lf5#na>DhM5ad-I1ECqiZcKnG=fSn}lRQCE!gfpfx<8HAUb9J$}7i^!M|!l{534jP$LwwZS8tpq>Ie3sBdC^fC?P1qTCN zH#0-fX*}RfYM^G`n?+xr%}We)vIMv8z!e-wCB0llLfJJkodhncL31}LA||l9hgk4~Cy0;}zqPiOr-d=-VE^wcKr0nrfev1Stl;|hamnWw^E)b| zEi|CBmT-*_1|BPhgp{qWHfR;lchF(cpqdoCL_a6a3$`F1G=)7RJTjsj2|6p%Q2)lM zUP#3angw_{|Np0D4TWLgSpd+044(7}k%E-`R$7|DPL>ysbVBwEL&`u%;{X3;+4CFI za^pNfi&em<8Nf9TgV2W8q$_6T!&d=;ju-g0qNyYTT$3UekPHL=4g)X1r{h7xFB+N) zCS^jp0H6i`;6pxlt*Nrn(T4jJl3d|j2m>MrN&FTX8qwZ%w=YZpCI090f4v3`C_xkd z_Z4Rkwuiadz%TZKYlN6H)JaJCH&RrY+LnX}MsWE*qca7(3L4ZJf%tl;dv@5kAJQTP z%>t-_HUEqWnC<(D zJ?pC7%s}h4;0G;&8~mUoF+2hjlKxFq)j+#IJ`80NLvP|J(AFv+^NBG;o#hWF|8vRQUyRf3u!Vz6F=y5XpPhm7tkps;2AFP zCSuTl=byKWf4o`PSrKKbst(r((FNfSGZLJ^L8o=a`q;mI06M@5Jd6NZOnB{dpDp+% z@nPoWVdfoYV*?9yjV04^LESgdxhRW%zFPSA{o)t5rv*A%Ku&vuXBJ3tXQ2UV^FO;W z6?Bgn=%fP389|^m{NG+LY%B~lQ32g34NvxP?X(U$NG8Rw4%EiO5Ts6X6rBD+*DLtj znLoKT{V({0;h(P-{`KIUDKUyE^3`=q!{4p!EM?$>W>T{A|s@$00(4 z0?l5CtKc0X2m=x+Xevj!vO?2S)lct@Iiivu{3o##Bhj3kTe6?isET$+*}f|b5-T_6Fv7X zPPlZaWA)s^q7*-S@D^IyxzI*O`^?@JX!-}AB=h0PoU|~|*}QN|A#R3{ppqYa)Nodm z$I99HYvvZ_#CchPt|Nh-(+=?(MDZv|yAXgU9$Q`QU?dr5zXY-=3_Omv^!C|4 z$gMh{J?xsApq}#Y)!(1Z`~H0X-}j4uy<6N=6b>o*AyEb)Y3E=}lR;?-e0W-MvhS@k zegD5M|MzA2zmH2ncl&-^3cAtzmxjDArn#%7eYu()5sIC*48?-xeh*z{QJ$K zug~Y@$9Y+3VA%x;DR3+_G)j_vLFajXU-|Fr@?Y;4x0Xc?Y)F#l_hFz593%SX>gt`< z(eOz8^%}HY<^Q)8OQ+?6s{lhA9qk||iwlQ4{{L9{|NDxMPv$lig@G3KfbLw=b27x< z(W6oLKoT${@mpwUww6Zx0-s_Ey8QITe9#&^@Ckw6!R-IvS3bWvEeYwaRY;SGT5hw} z*4nwM5)pK77X5g&pfuIb0(K`g+#-mxos9JD^>mNzYWn|U<=3ZkzdfJ#=iTCOuNLOT zdn4T-L)Y+xyKtm2;4$K8sAsRQdlGyREo43yas>3ZR||4tJj~TK+)P1Pz{}dCzA&t- zHYUc`9@aa69$!Y^paTtTLXNY`j`sNWYQdkkpzVi{RUF_c2~ZCOvFZ+g=}ZcH-4zUH?CUHV*%W zY@GbC4@HPi*PDEiGJ$U(T^R?xCrXZpOr zH#>m)n7S6~8W!pr;AjGsQPfIBcwGqUIl>jdQw4aONB7);HqZhj*mx|Y{{kZyfpWy_ zMca`l`7NW}_| z7i8_DY+8f>B&b2{Qhm_Pzc;`)Kf<#BDDiw=+EEEw*Z_}Eh?apmhZ)>w0o`^te?kVL z;SD}Y6q4ZKB&hrcZ_fSs5_Fb+VUn+@D)gQ#h!-dbPf+>?&mn59o?U>P{{OvS+)x+_ zIt2ywIy{Jt5XW0;YNm&~eRw;PH|X z;r0c#90IgE?B#+#?-qZ2GB+{M(GqD)V*uj?vi8_mS#{fra>%ePX5o*P1wc)ppR1Zm zBjD+u;uM8Q|DXv(*m+{0&CVZ|w3L8G#xT!Qf&>~QsLj;W8wx@}V{WfN6K9aizy7{o z{1!a<2pX_L93lj=i(&^8l?+CvEy(d=s;Um!)A4mV%$2kq0+>nD4>t)W){!_^N+ zaKY36&efHm#Y^DEKcuLKCwn*pA`Uuh@yE*6a`-SK<%t25CL!hjvgvv7Q{Z6fKLT9- z8$tpKIg}tG&@7;;zG!kbX!j8Ka6D*Ge_eihPYYyp8ln-R1;QRBX%PZwp>3zDb8vGV zXsH9_7zaoP?c0h2o9pcLbs^D#Owz(hc+7+(9#d8IWz%!v2@jIa;mIDtfCxfYW`15) zn&waX`TV$Y3L^clo`cf<`TKrxLqQlg{X<7`(EI`pZIH2$F8uMG&5$lUq}vY4s^3=3 z=u8=%5kLz!8gY?RGUP@@8y)RX7pv#DrvLv4nec^o&{iy+4w?}F9}@ve0FaBbY2+|m z#zNA+rKV;@M!-MN!b{Nco0v@?NOFQ~%=!0z$@5#&B0Ov$_q{rTZVQ6AACwMpS%g;{ zs@+OUbNvGJ^Mq@2gU!@5;N2yx=0N(wHagnjZq_euP5%d;TL+&Q16o!4>Dj#0P{eIA zSWOreq*e$(;=;)YG&JF0pyzIGWUj7Joa_s}I39Eh6(n_mDtGYR+0<)Alac(O3C~_% z*WKI*be$78lfsMoU#~%f{}3*u7Wf7p|Aek+0yV11uoP1Z)EQP50;&uxrob5xG=L1bw!S7O7`%cSnvp?cL0^}j-`@tVDWE1mw4j+Y%B3U(AVCUA z{GbczbhHB;EL_2xTwF{I&DGTV>*N1_Sq9nM3c5A*6?muQ>xC5=0mxYZVh$xPAyF@M z&ca+>qrM;%eCQBp-!UY$LyCRKB0bO$?(_NoJ}i0jXm+HhEqF~DDAkc@9cJQ3h*)cD zZC_D=NdIp@*OHc{`QuOj$aB!3<%OD>>lYS7I|6S&we63W^Z$QY-d7)I23uGQaxsn8QDt~S0FwAYwXnPOp0!nvE={_4sG~A7z*<|&#T0bJ<=S~gpm+g~2tgXs zf8Q_u_;_v};*=Xu0Y%R&0JRHz`J=U#)}o1^#e2Wsg66p(7m`Ak*;zCWJ_+N$$r zVO4e@cy$3Z@k33ZM&hy7*4n+M3ZDK!eb|=^ij#f8)?sh|!=nRSyo1uSot}=5jmft)&GDa6`S5yIY`H06fMHDw;kneRF?SN~jBREQ1tNBSjI85pc=}Tc_t}q-U+I zHMu46{gb)>f2{oXVF_p}?wdt_-Y)w0Y1#iDD<52%RG0+1Pz+w=f;ECt9bt=bdj~%8 zZLO`fe?u*D`v3Z3em-b150>?BXf{Gz0_o0}t80{}2mE=z7*^YYR&@OTzH;ND68HjX zxEIjO8Re1{0?<~3sj6CET^uOcKb!aS)q<~2=l=h;eDTyAOHEBzQv+LFoj^wmP|<{R z)B~u2`f1tI>r?BHkp(KB}7DF^IvJ#%%9gaF5-({gW}?)&s?-q)84K0KatZhza< zwq$>MGstN?5G`Q!lqP;;Lu_=kPwZ@hmfPU<&!3*n%Z_qK4i;qfXl$6P^uR-@nxM-8 zzb%K4=t2&SPYZX2ERcpNrl$MR+%rPB@Q}3E*Y&nB0UhG{aVd0d|BLzmzpa=zA=6S5 zwB`Y__&LVM{`swG|35B;%-2JgtbAF1_rk<*cWdOhhMP?5kc3zSZbE=IvRP?qTBvKd znHdH+n1{Jr``Vg;4r5nU2k*mzwnHFVsOm618y)S-M`8P4UW4|(ynQ%3A;1y5L<(vz zK^x(%&@eaamv?6Td%qa55dG`&{Tpj-bhN;Rfa+@+_+n&bC`bT8s$DZR^(n1Mpi_Xr zXW@c}O%{HCwJ;;n-9kgt88lh~N?qpa8kv#q?;p*E57YgEtSkGn?B2zR5gs-Jm<1s9 zj*E!_Wbv4-u8xh4wymy?g8|6p5Lq}0PDNCUZpi+}TNgp?_Mfo*k1z1?D)0|NeB0~UDW;z>#cJ&51SvON36Am>%zr= zm$6}85~uwURC$st()G{E>`{{PR*9$%jl@9%(AMuGIg zqZO+Is3-_Y;?64khq{60ar!|1JYu#)6)rXFn@X*bpFY&SKwPvKQ6s{WwN7z zt^?^~mGE+=wJZ|ep@xiQ{d%)73*4um(&AOBg##sFI3RlAi2*WybnpBG$P_B5@CToQ zyKX@dWWWL9JVzr?N`|mqOhAXfwUtNxdb=2;9#lYqYk}vWEb#oswA4@+$l674feZ>{ zxOET{h7Acx|28_>QC@bh?$7%3e(|qYpmV_fe_DF|bT51xKJosAS7Z(bx-KRLmyUJ8 zvH*A>=GB#2Y)R5;FuK<&3$yMqOSA=->{}^;Mv<>(4vT;=?#U2hid} z@Sz;=)C-CoBT!iisRdfgBH&rz*PDgE!TTlueO&tH;jGeBKNIj8WAHsn(7FTD4MSZ7 zoc=*qd#8oEet10R&)db2$&vq`mY&<+O7{7Okf>MbSV zKS9Ini@^;c(2|26FXsPwzvSD?1#M-Kkb_6SwZQPq0+57iuC7s<>h}XYEe=ippO@|5 zP;0FX8LrWH#65$68Sn7Y#z9}#-NNYh**0ssA+*2fW(ME zBF;iXGdvuIZz<;tLDRvR*q~W6sQXGNq?$pqj z)0YlfJpX(?q$U6V%kp#J1y`WkVZfypmK2Mac-40?0qwx5&kz0zT3`d27g+QgwE6{f z4B-DS%T~?GbI{kd(E;801vd({LK(sV3rhcHhK7nN(>qc?!3f@i080N~mrw6Ny8pt6 zwDb?@Z8;koSZixXd)d9bI}VCVanCqehifVZ+j$3?#_zjuB@YN#vhq@ZEb76KK#keg&dD;9pB+<%uF?~ObT zOeiF=SAvj5q1D+z|6%vbgNl?d%dQ^lf*eW)HWu0=1GBN4Gb)7~0^m~1z(iSXQd1&q zcnv&i_j%co?TwHH56J5AvO#G8QVUpWYKFL2UOCnUS|$hXP5%bZCV+ZvAD4c5I)mGYCUREYYw>SL%zT)Sr1)xQYkYjRRfNlr)^^FET$Iq7we!Kz=uAbc09N}SWuBHxIoB-F0?8w2-1{b+{;4Z3Ggs07y zXY>BN1s${nYM*>scH>01kBzCFK2g^wn}D5EODjSWy+5j66nshJSq`1Kid%LV^FE`c5*1kMHEbu24h+?i3AA7ZYKave6QHWKePTBwBh7Zj2jnprU( z|2{1RRd%nzv$Wq=9@<=oyikX12SADxD=p2eDECiKq4$e{YU+jz&TZhtx05#`@-J z>iO|r&q23Cf|jyFsu)O*_|N;re?Kf)H7noE)DSX`hm`n1g&vy8gOCgHETn(hQ5p6B z6KH=ZbbRLLsw{0jUU~d240{DT3`3~{gP*QW&}H1+UinR z#gG%xr21kosRwmeA+ZLUSOIt0K(Y3G{{Nq==Juu=DXLHsYmoQ?Et4<=tvWVSQxA8y zIlI5@|BsbFz^5@oHs}6)xd3!W>h~2_j&`MlIGd@dLkc>GcBH&8cw+}r-hwY3&|Eq# z2Rc3jx%~I@vPsPe)E%F+(a}DCs2zEK&F5$Ha$-E;UF^Y>#s+V!!9xjjUcq9-c?F;= ztKKhZD#CYO4O}mN267s9F)^^#)^as9Tsyz$@291I-Y@3m-H@#)-Y z?a7XYdXT7uCw@pK!f)4r$%4n{oxmeM=IR;;H`PJL=OJ_GKi_~(envhek8*cfYin&? zRt_Jm1Km;hZgE2amh%-Uw`(MrV6ClnWJ^6fJb%3bUE@-c;s+m6qa+aENf*)&7lq8Y{RZzfKDWOuc}P_RkZca|>6J6R@R0odcF~8Yb7Ot% ziJn8jUs^)zYb#C7#Z$6jxeTM{hUVm!L`eDvwO2uF z)K^YzO9J&W%tq5c{xSqpR?il+U$qn7p8WG}@w-Q}lY*Q`+OJA5W+BlBX(~h7LQaNy zizjFQe!t`|Y+ML3ItpqRfhvOK=k~Q`M!K7+soUx4Am7_K*m4164$)Lqy(%jZbb2#* zW(qQlc5+v^mnK2x$ROwI zf|hl?S^zpz<;(J~FBhzsndfhBZl;Rp7ei74ge1mZTB`x4f6&UGsU6Axf35lsUPB8S z-Tk&=(UffP78P&^Kza%!M-W&qY|jxm{cC`x0N~>lFXsRMv2t2_vXK%+;}x_Hr9o>x z=)S^zt?=^y_nSpup3l#Z_o8C^2ifnCbPFLNqp!YpW*Zll`~g)2pjD&bwh(y!=mlsI z_5W`x9$lH-Ru*Zer(>lFIzk7s;}2p2ghV!Q$3bPqjf?jAsUt+lldY($*b1WJBy z7uDnhW8POqEk{D45>g$wm>AgV=~$?1RAdA^xHJjWBLHn11f~4nphM5VcWQrJ`uFp) z<2#$u!a)n?Y;{2^s3Exk;v|TH5cYtOkgcOPPxZoA{{Mcn=*!c&X<@FAE)2x8l(`L> z(X6$!)+60713H5B%=ak z^R?bA`u1W0cozWn`^E4?!AO>ZBtOWkOQUbXcW&MI;$hJqC1`)&!kaHJ7 z6@jjfg@#6XhX3s|egD5L2OZ!Enj={F3$|Y3_Z!e*jBoDEoY|G?V`FNjrViN~4(?Mx z6Enn2nmQZVaB%(w9gEsj90o7^LDL!ES03D24>~c)7_@*2Sqph=h`$^RK$k^6yfGC# z{|mY%=FhvuuOG~c^|80s(S~dUCeQqlrVA3DkQR7eg7?4A%RuKfy#|;6pO)S@(M|UH zA5udS;u3H|(uY(89+pP4d(%IH&t3cp>I*}U0sr|5bTQ(ecZ>gjTYm52q|S zRpeX%Dv-h10aP83>Jl>4LuRW@Rn#^tECH1v;8UtVwbhs93npeFpNUO|;mBGb7FlR$ zb1$-q=qZQ-OW(E4X^TMLxYJ}=w4tjtOay1yQxc$6eA1VE)FXk&$rHt2dI@I9x{ zRkdH2FQ1VIK3jlJTeRRkL`b4?F#(+=Vy&%Jn-_BX{DlACR{VJfS~3AT&-~3I$ZF~z zFBkm#yzI~CWmk@OHx-A0Hz2Fo8|Xp~d_y)6VkU860?O~isDzmBVghRXBnLace=zIM z+eJS?XI?G*`)={;yEA-jOdySaVobxM2JU#sP1&Hv;V1B5^_xYIQP$?t@X_`Ecmfc& z6sVB^IlyN^Lp*%q9=!i?@v}QKLS3w2bNA3(fZHfylMRt3K&pEuBhaQ-Z!6>3-Dz*{ z&;0*w1-w%LSw06@O84*6(*K{AT|Uy;UJ>PC0lKONK1Kv?3qjoms$a+*e#ho)Xy}=$ zs5KUcLvBfimL6Z0AKX|AzZngiUZ|4@Nc6WM%UI?<*Ee%mlA0f!5&k30p|H z3U;2JlM!g`sGXjUnVNd2tJRvhg&&{I`~PjlFVGk%v{L{XZ~6Ih!M`ud{(f0@=lq08 zEs23n7N)9dpe5W!po1x3ra@B(bvK-3xB>@lpp6sqnS$L90@8? zhOSC*8qjw(F|Y#d0(1KKWbSWJBNo)tg!HYh9PM&9H?#w}RrdI*C)fd;n=(hPPo(zn#qw9(NnO!7Ult>G7F zICKTHE`Y422A?|zx-$iwL4JQ&a_LCtq~^q6XGQ3s9l)W%<@+Wk`iT3CSK3o)G^+90NZ2O+7c(^Zmowp#C*z z%^PUj*Y7urzP_BF5#a{E%LbwgV!|j%QV2kT4s_?5wdwtf6QQSIL1vv^f;Ot}SXtp@ z1iIM-vJMksI7AnOO=}X87$A)SP#JClD#I-_G;DOVi;{hgY_0$PX5s&@&?z(co&rdw z0QD2UEc^du`TK{nwy&tD$qn|lGB#6Fx7N}EWolE0`9T0y+m$0u`P_l$rBs6pit=tk^R@G(ks z?VTY9)bLexf)`}^|M{>4)V2hVw}X-pI13!x-UwQUsSY};0kZZ6t`W|lLx6yf zjDxrt)HQZ8(znpiu+`PciuTyPs`A6rx&Oa|M@qq4Ea8nJ$S@J;F2C<9et%qg`+Wb3 znRyuzZXOm!W~%CDY8sG(Nu7-ikopLq-Zv!2K~g*1ci_wj>XKM!XkDNsbnQ5_Qhq-F|JUWG z_Ov({=%VSuWy`2I{t$o#Bj^wt3k}VgU8$f79en>0sB8HeH0%2R>+(leCzqxBTWV@r zYeQC`feK-8l#yJ;<8cqnF$go!MBrQq15zbfYHC_(Y9qDDS$?bJ}v$KW%-|Xi*KInSu{DjDA@;e$FaHw*lVDPBv(^Ih_MiNf)hM? zy9l%tQ$us%C|k^8e?m?=R-V$27jbnE&_VlArGu zZ(Uvy?QLhKrVi4FBmc=57}G*$s;YZf7>q9U zfPxX8Bq(7(q7_0yD%LGa%l>}{oz(zsPQO_QJ*(mC^7jvBt)5em5D3~MX0EOQIou4K z5ukYi;u3iL62pLKfsoGN0Z$hb16NZ6gJNU5ud zL3K{h-t{$K!3~CgpO^i5wE&)@;TZvPNbkQ-OaFoU2(RzVIJCKLdPhoroR^oSv5gL> z5dv9g2Wj;|G9zTgMP)_+V&v!50`O5J(?eYlN0DH793{RWu5~dnu+!5qSJ$x8)bzGC z>8_3et)u?B{LhCa$dwmpTH({u_mAgfM|+s7A(nb#2@_I!9ME7K)dJgL1PV`MeS3Xf zTV3syv-AHWO}T>FpP-2+&;f@3zpwcCbl#z@^$kT~VeZyeTAC&*YF64>c6y*|7M+ar zosB`M*A?8mgj~f4Ze4@YGd$iQDIC(+fH%DD!DpmfYHFIPshg@oYZ*vF0!J1oor4*O zv;=Z9I0hlgAa#L*fu5z8e>n zJiR&X&!=VJwTSb<%Mn3`13*^&{r|e+>5ZvbQSQjIT@c5hg~lkC>=1y2CuH!!(NND? zORKjw?(?&GplKISTL?5S0N$1YDoB67UG(qsvj1O~Kff{c;HJ769m%;dp1!uGkdYz_ zbqy0`H4_yzGc|P!4NWU8O)D)eYi$s+($cch(zMjnG*{O!RaG}uRy9>sv((hI)zx-1 z(sMI4jPS52P4S!15I?gsH7m;9N=plJ(FUaK#pOH5I%|*ue<}~xFL~ z%)WG}WAoCoIeqCZWswz`frW`a>EUjPfll%Mjxj#=(cX6P{*FmO&S_z;d2wFl83A<# zp}qBSi>736Us-W>U+a_WQ$IbQ|MShle;=3r`?T!$yTy}Rk|2dDe3TxKXCYMpB&R@p z0clM+80dofESj2r_GT?55j$5`KD##M|JUXJzkpI5B&Gd$0bf%An*IPyrM+D6A$bbLDBki6=?Y4^}FK$hHeskKZJ2T$hpY`$a98j|P zxb)x8mH&RN`u}~!zpu;xe_HnU{gU6{^J9O4o9ll+E`9lMc9@%$4e96mLA(IT3y?uY zXJdWvY9b8_4UJG&>+0O#ohvJz-kJtFgYM_be_xk_yaTEf7J!-`pn*;BMP}fk;Ac0c zMtj>q#&%qc^{<`k`TuDtNEu`{_WO#3ld?=y)ZERDEHyO?6Mb%;>;Lq44yc#?Vaflm zEB^gl{r~5xf8SStIvO9B{(ZL?vWoTli}|3SgAGzaG94u4e}BDj`>M*MU}wl#@yHzz zvLkm?BQYU>oN}Cv4IB*g%+%CFTr3w%%zSxk+W&7W{(V{sDx;o5;||m{0FO~XF1-Z} zuz-rq`H&vmpSO$tzFYkF-Qs`mK?uxV1V1GC`*V;o$m*RRFF}_jfyOGqrh%6eFZlX= zUQv<{d?PI}?uV-ZH;VKjT!^P2)q#r%=++N#=N)uTdwH7wlBwBe_qKj{HV>3mKQH_D zX&JPq@O=K)r*lDj4bJv^SsFVT>6@u()Z_+(nopn%0vi1P{dUo(XY-PRoNRQo?esv4 z37_7a`v1pDh(~_B1eFiS-UOBNFue#h&p|D*e;=3p|GNC=n?(mV*5<^3PGPdr(t?Z* zLEH}^AwC)!+NP>%!7i4Qni4J^>-zqBA*ew6ybN;57bwjmrC!MT zWauT@h{OzWadeRgh%!|MRk^cV`AVSU}np5XX?=Yk0c|QXM!N zf|~J=bOkw;4t#!sL9CxcQ%S^@C8bwS_rAVA>+i>T|MzX>_h<7U9)wK8A$t>&uVEp!;5WFj_y6arUmup- zxiDerw4Bs1SJ1Hl8XDlfJan8BGCEC$-$%7j9s-a~F?g4*wz&pqMP*^4&%(*s7Z0`n zds4XDlhY zuN&{@&{Q10aB|kN8F@uXK9H+AthBT;BHVr`9W`?nT4sGR88x|IyJJR{^+LX^v z=KTM(?BDOz|9-Ce|7``RkNJ7o|4+;Qe_Hzg<5Cd$2~2{=jz9{2fZP8+SN(mr_|xM# zPi{=Te5&WrwuTim@;a-cBiwC4<3EPb`7e0trNpxkLm=J(n*%Z&A_yC#1$huMK53$& zW~!oQuC4(d)YZ4r(%QYY8Z;mVT8akVf%SFynSHG&BUFZZyVg|w|F`z*Aq~bNky)>}=Y%zIx;0lBLsgr+22dRYX-}1Y|_IMS9x0fUgWN zSJ$x60Il#BFJsoJopWckdzc@r|HwkNk$M3tuaB?dbA+nL*FYn!R5 zLl#}w>w^YG!2`Ak4%hE(wPf{t#b)TnkIyh!w5iSc52lkRWAX!BNI&2n^m3fQFESI zT0FZs?JsDPJ7^IUq}zMxNC%{82T940`~qQ*lA|Foq(cCbn8AfVXu@~>{9^bCKj2Ba z1%E#-smKgKT8%kcun*pHY)B_X`a2#e@f(<{YgA?i{sJ#ag3RQCw%>kTzH?P2WJNT@ zc@QlS_9!_T0z)?hASoHr@&T=LcD8(aW7_`@;2pSc7J>E%ykGqK-pp`!8`$A^qb2`n z$v?P405VSjPRXF*S)>jrbR-9V_5^DL`N&3Fd;f+S&~E4#^C8!hK??r~jS0xzUbuSv z#*WI4h5)TYfWo8*(GG6*8PyH0%4DmqaiR*AplQ@ z5C(Ww8nnpM(GWE62AOC>TUrCI7eM7a#LW z|7dn%pd)xA7-U)IXyXSFfRJDuCFvgm@TBWxqz^el#8N}k0)#Xi4RpOMjqP-`Ex-$k zth6*C#XEd*4Z?t%;A(1Mrlye{?f&`MJjfOR$lB~5uRzlAiC)9-%%S! zLjWEEkVFU}os9HAyM4_K^Ao&R%*Z>vzwOHDzFQY2TsqlvY-iJ~uGHiZ7dt)BMN7yl z5FmOXCBK=PdYqrbvl~;P=iq@?JAjT~__kuh!eUEJO|V8tu@50f3&7D37_bn4CtdIk z9UXgporZ$YYsb4mTWdcr1MNxxt-f9g+EW19p#VBg>d>aT>?n5&4Gp+na8}ZDH8nI- zQ%??d1||MaOF`R#-+)>^pv3=m`PE}x9_B{&`k+H}A^mHxt^xD-sO_U608hZ+{ft^( zR>r&5R{#3~KKu>5jTf}<<|Sw|FLb*N_@Ju)-&TBkvv5{-DrBuGBp98I^^KKPb7MVU z-)6%Ecr$%_#SZQlPR`h{a=#3Wsqj`TILja!mosB^&lLH+rE+6Uq z{~dHD1M-e?(9jKRyB4G+4?4vHd|vM6#ifw_><$LH7U~*}g`uAw&-wRZ$@dq~3y6Qb znE&s?lD7|Mry||tJDT_*CB`T@NJ0R7^PRzo-Oc~Mul)WTwCfg<&LO$r&%4Ec-Y)@N z9|k^J2Op>L)kkkli`NaA5=JR=~`!Q9QvFx=gy zvoh-1iEjA)aiF7q!0n>{pO*du-KYr8JK$RnzCEA+|I^Yp_h%I(c+>L|%s~~xqmCK; zAppL=USsjp9LN#{_;D+L-YuTemJB&!(N0eXe4MF{i7IHf{*INEklpJ@HN`?umI0qY z1v=F3#r*%@Ry?^eH6_FazPxjEz-RC$h7smM(C`arr?8RU&9i;~KP&+q#r7I}fBl!` zD`w=GsHj199fF7JK@-8QriQk<+RjG$=MJ<%#`Ym+@<3K~g7!1MT=4S^=*Yp7yPCt@ zZIBP!9ARNQki#0IK}}2ufY)b&?#NCJb@}iVbZsBx=()e|mpr{a-OtX!+-3qlg(s!=tgAwZuHfb@LL z)io+I0wH%VLJIKzpO@`fTWzHUnx#cs*Z^4qWUH$k;$rpm+7wWg0l6>lHK_gb|I^az zCwg+@Jk8ZW^J4IEe)@Q4)Rxf@ASndEg}I@riduVlBZIZHZr&FPfYMxf=*= zpdM0;gDVdGQ@fjydjbF6FP_qp=xCq|TiyU#CXJ?@Bwh|7$;^x(!Ya&uDiL>`2%h6CeWX^i#|M@?Qd^xsj2B^208^1 zq7p*V)EA?MkA?twApmLrSZIJw8vh2Gt_7Xg4@&=^mR>mA3AyST(`4{?sdl87?fVC_ z{=8ibYWBZc@c+Y-hnFS>Izo@wh3Fbh{E%=MB?o5+K$5(I0)WPpAjk3y zPG66@YBU7Un&nnnT1U1u{QtZR=_;0`x6kwi*qcKRt#vg69l8j)kkMF4H9yYt%kz1l zVIT117if9g_Z8DSl8uy9A!1#z9kBZx(`DL7$gh zKh>KZ?O_ML%+yd(#Y9=n)zqN5B>dgO*|6)RL6;Hye!KYXquFu34&YlXq21oW@BL91 zj_?qGq<_dgyw1k@=MT0+rhq{O`)g1Z`1f(?kJk&2Y;Bm=pE<29dCAnA%SSr@eOme( z)L90dVfE|vBGAJAA1jy5$QxbcFv645kn=ty{lj{}8hLSE-#|;(K=Z$lEC8Mk22JMv z`?c!d_m%&Dtp+WAdj-2+=?&gt%p6g{IO^G<8v>Bz3Lz~u zHG67ezJYhC{{UY(2U!jZS>yvs_HPz}mi>b-GXDQ<#nbCkvZFn~S9(F4{Sb48ZfK0U zd<2F7eB9F6Sl>)dy&%!&`iY*uUzUNcY6ag!_7l7j@+Wu~)ql5o9e>c ztig#Nx<+U;@sGg7GhDo^2VUx<=WMJGx+%{{zq>l-#LlJ<4`=`X4!YGBv?KW2ivM4h zKf5+%&)VwJR6lENEgPND>!e4!y~8F1KvP$cNihclJyTURdwtzFKZl|e-?s9oiA@O& zMPa$|-k>sHQxh^T0AJxYTJjHnX7@WdIz0_rLJMFt^q3Z zjX}38fnwYcWDBw`kRZmYp;5un5Ev>U0PhPxQnfQUsY4G!Gyx@h$X*zTEd0jOq2jwy zcaDYtF(Cj>-q7X{xL*J&=h4RY!D^u5#F#m%W;6tbRtSK1?1EA_q*8#BXc=K>d1}

$l2Jy*;pUMHU)8=jPxN2sA%J;QIHUT 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 literal 0 HcmV?d00001 diff --git a/src/ElectronNET.ConsoleApp/Assets/electron_32x32.png b/src/ElectronNET.ConsoleApp/Assets/electron_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..125dde6e575ca5da10d077cbd7b6bd394dc0b053 GIT binary patch literal 1281 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4rT@h2A3sW#~2uxrU&?hxau1@=@~j27(445 zJ8NoKXsDZOX<2zE6!@o?Y3tY+n79OFlvl0UU9oaUaBi)#yuP8Co2s&LLeqrY=}Y43 zdS*R%>);osXXL17;HYQdkTr2Z_LRl$k(u4cui1J=YH3@mshAj=x*D0e>FC<(=-H_% z8A-N@fJ?s&kt)XFI?HU?i-yh#Fp?vw~xVql* z72D$K`*aN)G&L=Y7pyN`vf0r;-qgm&%+}Y^IoLHktzqktoT*C!GRjI8t<%+aa0*N; zoVT`O#SU#Lj>UFynWpq>&4bANQ%9d`a-+U-Avr=8v)Wq7mZu0?oNzKwFn?eif zRF#Yq8vE2#OpVOlqbk}v4_^u^Y%nl&tysC;B_u^h*G@ytJffsIy?2&@sf&S$v%0ET zPQGZQF|zPz-Fwp5(ldY7N?koWZEb5^efy-=De?7v z&AX0Sxdb}}B~`E8o8C9KYR#UeohM>zx>LJm$_T4uPhOlgX`xqqUi0o#*6v~bXYb6o z^E$SsC!uMgg+oBYwxi8Ek2(g#N0zlI$?7IFPl|8oH@5WfNh~Osvr17$H@$aG=EMcz z#ZBsJW-5wCG1cvLoA(yYTWjwVt)gI1x_F~UbXI6Vy_IW-v4uzFs+~TGg{^zf46Sf63yF=JtNgyN`Rt<+kiOZeZ-<7Lji06x6u=SZHB`rE^eBO?Tg^OWyH$ zjoS|gW>wW~KI9gWp`mUOlvPo^W`}P|ap~esm8*8-&0G;t($cW?kb6|7wOeRH;{+S` zFbDrQ6Du#5kmSxIm)j1U4@fT$%&h1*bTP4cQe0hM`+@V3Wvy1Op-HV%Q#xn3S37TD zU|>@9ba4!+xV3lE^>ATFiKENktb51dwP9Uu`5jq9CaD~i1f7j;od;b_gsR^+O*o?W zt?!1kR>Hxiz2R^6e*bn{B7W0s;io4b*UsL#-}3&>a=Q=fSp}Ikn8_F0v~3WJUlAOx zQqRs2udlbSuDQit=!1EJXU>fkg~EL%tOm!_R?KW+%(=HHb@eqP2Nfw!d6B+tfu?6R zZ}WU>aVqlg^fdXdx08c|tV>e1ZSkACyX5V(IqPnoWhqNZDJ%c>V&&IUZ{B*ny1YI9 zKO^(q0|JlOdCyI1Oz$wS)<~&3XQ1?iPky1W^1S?%qfu_v$0z4L=pSlu@* zSn0r(%**L#MADZ2&~15C5OF=nZ>F*Ndte?5|y6QN*J($q3=_j{D+zt=Za2>t4 zO;?%?E=&_up0dB@=&8`vl8tN)KTNZ)e-v@}{foD5LC&2mJ6*co8Esi=QvKS@X^Ycx zx7yp~C#+Rd)*alI{e9k?M|&%snnV~{-rmk_3SaYDE2sjBEyE!7bFnwI76 z{j9uBtE}SYEnK)pSlvHVdsj^9ubxL%v#az3Bo{85yT9P$q?(^y6Y8#3zpeVpyY#`c zwYQfV^|c7RyK<-W{_g(=jbP0l+XkKRa7vc literal 0 HcmV?d00001 diff --git a/src/ElectronNET.ConsoleApp/ElectronNET.ConsoleApp.csproj b/src/ElectronNET.ConsoleApp/ElectronNET.ConsoleApp.csproj new file mode 100644 index 0000000..5c58a31 --- /dev/null +++ b/src/ElectronNET.ConsoleApp/ElectronNET.ConsoleApp.csproj @@ -0,0 +1,77 @@ + + + + + False + + + + + + net8.0 + exe + + + false + false + False + False + + + 128.png + app.ico + true + app.ico + ElectronNET API Demo1 + 1.0.2 + com.electronnet-apisamples.app + Electron.NET Demo Application + Electron.Net + Copyright © 2025, Electron.NET + Electron;.NET;ASP;NET;Sample;App + 30.4.0 + + MIT + commonjs + False + linux-x64 + + + + + + + + + + + + + PreserveNewest + + + PreserveNewest + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/ElectronNET.ConsoleApp/Program.cs b/src/ElectronNET.ConsoleApp/Program.cs new file mode 100644 index 0000000..858473c --- /dev/null +++ b/src/ElectronNET.ConsoleApp/Program.cs @@ -0,0 +1,50 @@ +using ElectronNET.API; + +namespace ElectronNET.WebApp +{ + using System; + using System.Threading.Tasks; + using ElectronNET.API.Entities; + + public class Program + { + public static async Task Main(string[] args) + { + var runtimeController = ElectronNetRuntime.RuntimeController; + + try + { + await runtimeController.Start(); + + await runtimeController.WaitReadyTask; + + await ElectronBootstrap(); + + await runtimeController.WaitStoppedTask; + } + catch (Exception ex) + { + Console.WriteLine(ex); + await runtimeController.Stop().ConfigureAwait(false); + + await runtimeController.WaitStoppedTask.WaitAsync(TimeSpan.FromSeconds(2)).ConfigureAwait(false); + } + } + + public static async Task ElectronBootstrap() + { + //AddDevelopmentTests(); + + var browserWindow = await Electron.WindowManager.CreateWindowAsync(new BrowserWindowOptions + { + Width = 1152, + Height = 940, + Show = false, + }, "https://github.com/ElectronNET/Electron.NET"); + + await browserWindow.WebContents.Session.ClearCacheAsync(); + + browserWindow.OnReadyToShow += () => browserWindow.Show(); + } + } +} diff --git a/src/ElectronNET.ConsoleApp/Properties/PublishProfiles/linux-x64.pubxml b/src/ElectronNET.ConsoleApp/Properties/PublishProfiles/linux-x64.pubxml new file mode 100644 index 0000000..c92d1b5 --- /dev/null +++ b/src/ElectronNET.ConsoleApp/Properties/PublishProfiles/linux-x64.pubxml @@ -0,0 +1,15 @@ + + + + + Release + Any CPU + publish\Release\net8.0\linux-x64 + FileSystem + <_TargetId>Folder + net8.0 + linux-x64 + false + false + + \ No newline at end of file diff --git a/src/ElectronNET.ConsoleApp/Properties/PublishProfiles/publish-win-x64.pubxml b/src/ElectronNET.ConsoleApp/Properties/PublishProfiles/publish-win-x64.pubxml new file mode 100644 index 0000000..01940b3 --- /dev/null +++ b/src/ElectronNET.ConsoleApp/Properties/PublishProfiles/publish-win-x64.pubxml @@ -0,0 +1,19 @@ + + + + + true + false + Release + Any CPU + FileSystem + publish\Release\net8.0\win-x64\ + FileSystem + <_TargetId>Folder + net8.0 + win-x64 + true + + \ No newline at end of file diff --git a/src/ElectronNET.ConsoleApp/Properties/PublishProfiles/win-x64.pubxml b/src/ElectronNET.ConsoleApp/Properties/PublishProfiles/win-x64.pubxml new file mode 100644 index 0000000..fbd2007 --- /dev/null +++ b/src/ElectronNET.ConsoleApp/Properties/PublishProfiles/win-x64.pubxml @@ -0,0 +1,16 @@ + + + + + Release + Any CPU + publish\Release\net8.0\win-x64 + FileSystem + <_TargetId>Folder + net8.0 + win-x64 + false + false + false + + \ No newline at end of file diff --git a/src/ElectronNET.ConsoleApp/Properties/electron-builder.json b/src/ElectronNET.ConsoleApp/Properties/electron-builder.json new file mode 100644 index 0000000..8130425 --- /dev/null +++ b/src/ElectronNET.ConsoleApp/Properties/electron-builder.json @@ -0,0 +1,31 @@ +{ + "$schema": "https://raw.githubusercontent.com/electron-userland/electron-builder/refs/heads/master/packages/app-builder-lib/scheme.json", + "compression": "maximum", + //"afterPack": "bin/Assets/afterPack.js", + //"beforePack": "bin/Assets/beforePack.js", + "buildNumber": "", + "linux": { + "target": [ + "tar.xz" + //"AppImage", + //"rpm", + //"deb", + //"pacman" + ], + "executableArgs": [ "--no-sandbox" ], + "icon": "bin/Assets/icon.png", + "artifactName": "${name}-${arch}-${version}.${ext}" + }, + "win": { + "target": [ + { + "target": "portable", + "arch": "x64" + } + ], + "icon": "bin/Assets/icon.ico" + }, + "mac": { + "icon": "bin/Assets/icon.icns" + } +} diff --git a/src/ElectronNET.ConsoleApp/Properties/launchSettings.json b/src/ElectronNET.ConsoleApp/Properties/launchSettings.json new file mode 100644 index 0000000..5eed0b9 --- /dev/null +++ b/src/ElectronNET.ConsoleApp/Properties/launchSettings.json @@ -0,0 +1,30 @@ +{ + "profiles": { + "DotNet (unpackaged)": { + "commandName": "Project", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "Electron (unpackaged)": { + "commandName": "Executable", + "executablePath": "node", + "commandLineArgs": "node_modules/electron/cli.js main.js -unpackedelectron", + "workingDirectory": "$(TargetDir).electron", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "WSL": { + "commandName": "WSL2", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "ASPNETCORE_URLS": "http://localhost:8001/" + }, + "distributionName": "" + }, + "Profile 1": { + "commandName": "Project" + } + } +} \ No newline at end of file diff --git a/src/ElectronNET.ConsoleApp/app.ico b/src/ElectronNET.ConsoleApp/app.ico new file mode 100644 index 0000000000000000000000000000000000000000..4127fe84f4f5033f3a0163facdb138b5974df9f3 GIT binary patch literal 162091 zcmZQzU}Rut5D);-3Je;o3=Cxq3=9$y5Pk+X1H(L41_lKM2wy{lfq_ksfx*B4%GYIJ z&{Jh#aBzU~0~i>>f*2SY8lZd!MuxgY3}C>>puo^Nje%j=BSr=d1_lNJ1_lNN28cSa z0#-1Im#CT5;8(x6;cU^o(jRHlGyiGSZ2o82w)2Ny@Ak7nZOi>|X>OR=z}2w0@lwX@ z?0<94&;Nh$%aQ-L|KI(8_5J_|FZ+1{y#PC|NjN~m(LzsV8xW$B6kKR*5YzbgLg|DT`#|9^Jw|NnXM_kSE&qWACrk9+_B z|NZv=@j;|9gA?gZ2LY{{R1%m;e9I41D+x zuK&;H|NrkM{Xerx|Ns971z1FZMo_doyFr)>kXr+Gj8|K=9L{jl)+_vys{9aG)@ z|Gs?S|Nn)rp?HRu2TI{fzkg6N(9e|-E84?j@+?Va!R z@Au0)|NlR`{r_Q8)c+3?Gyng;diekUx6l6npa1;-spxh8e|6vc|Dy8D|NmFM{Qq_5 z%m2kO7r^lcN&}ZBmR_y7OTfBrwO zIQ{=n+4@T$y&$}~A&u+q#KO1#=9mBf|Kk4t|3AL||NrSNT>t;)KmY&#`se@uyWhZi zPZw`}yE$zpN*(~20dmKS&cuKJ_bmAT|G_1Q`|o}K|Ns2w|Nmz`{eLlO>%XIA8!n;i z1-Su+H#X<^U7S#Q_I_XXkB4pX|4t`t_;)5}%a6ll>(8#rnT0d|!t{?c8dOe7FfcF} zAeEC2+@ys|Axn#{~!5&{QtH8H~(LF`~UyC`~UwJ9sB>^bMgKE>WzE; z`Sk9%9?&o!|zK<);a4XP(VZU(s(WG<-O2Z@2o+`NT_|1}zR z{?}Hh=OBY(f&{$DdC<$va!oc|M#OaYtMe`wNw zkR7|lEo0~o>>;J5?bN}D?02cm# z;MxEG@|9b`;UC;|t4mc(% zc7f{oPfwBRX=L;Nd<2_)Vwv{;{|`&S=75NQe}DeJIxF@6;gY>@^EYSw`+sfi|NrOa z{r|r->I2vxAoD@t^Z6OXeAMvy`2YX2p8sc88~p$OZauhN^7B^u|9^jefvoud{~yHN z5YGSqE8^b$zrXMQe~`Nug}?oOXD4R(AmaDc|Np<=|Nnk9>i^r*0bnD(zdZT>*`&<> zzvqQI8|7+>H{(oq^ z^8abs$^Sn(@BF`>vHSn?sx$w8zy9_A$A^C?`3sbX53C5i{_1G^|9@XTK-wbTKK=iH zdh7rHTc-T~zoGB{|GkU;|Nr?N;%-n|WZN5v+owJK{~v_+yo0neKL7du@BOd;ccwl6 zzcBX-xO@PazpNos?^##s-~V^d{r?X#8`jHme)Eq~|dOx6XN4a2+Ji(20Gr~mu^{2s&(ka-|CgW7^1 zdroit|FSCy96k>UkNp4t{`Y^dxgh_1{`3F;hu`3K()Enp|27pY!dlN9?JZpcwgcpk zuOA^{1@a5Xo+mf{KWmTwe<5+p|Nl3>LfUMgwin3FAhXYW0>#6>J*BI#)-TBZ0Eg9% z*^qV^$R1djeSGu(|Epi%wjekxK;}OA@&EtiC*Ux_89&Tv!)VNzr*YR(Hk3bOpf%F zth_y`=+%SX?4L;O!k?#0w!Yd`ynN;IoEapyPe5jm;?WQwCImq3Y|vPQ15!JiL4+8c z*wui>460|>Ry8bXyi~cU<{hlvtzNSg-0pVj+V#$_cl)KFwv|=LV+GhvBVM#>dX-MY zlE%v!Gqe9yudDk%|I(uW+h6Va4;nWBwSmsQ{{MgVz5o9^FZ}->v+dJ=i%IAHYu0W5 z=i9sUa$v(E9pY_5RoSqrfu~_{^mR-gWF(1YhL`xouHS(Ti-Pd^9OQ41-D~cz2ZuAv zUXYz24C-@$@V);J{`Vf30B&!q)@}dqwdBG7>+k>n2lWR)?f_wQcVr&^{~ziGtZ4!i z-=HuD`5P9$$o>V{3+gL?9o>3J*{? zfYJvjK0s~&rH8=YEeDa~Va4=7oec}!|6Tcd3fw;e*$ql(APln`WFKgZF?B}9e^B_t z?1s^xJQ%R*+5e0~|G@pIs#B2u?8UeL!TnBHnmBj&=l`kkm;O!6*aDA-BWpr0gW9M6 ze?I>I=lA3Phu-R zo%#>zTRF_S_Ft>z0K9(%8b|Cr^z;9h4}boDef#hK(eD5M7v*2O3<`tIGkv*^E;ab~ z|I2A;U+B&M*QZ1OuiMq|f5!1y;BiT?W&i*G-}8PyI9=}hcn};1$;u8@A~!?kICSk>L# z4*x-Z2ltgg{h6n&{|_%z`@eI6>HnP<7lMoeV^Dqog+bcP%>UC*%>s|vf+e5?sE-V? z6BHL9p_0~f|0f1s`41WcJl^*oJQfM+gM54Q|Nn;6-~XrN?yEYoI^@#-d+GoG|9lGR ztAX0`e?Fs(OM=Wg`f}g@?0I?M@Bod6fW)w2>!}z2cW*~@<}NP!|NqujNM8=r#s}N~ z?*IR@v%qn1>G)c&cmH26M796#xBpKMd;I@@F9l-7^L}uj@#d|`5I!Dq-IUk=k94B; zmq1PJKR*$D7*HHMIQakn;`ICP!2PffpbpdvL|^jnxBvg2PlWWxp0=IAZ$sojY*1efG>!}EV}k5|c?qc>`|T<`?ScEUe}91cvv+pc z|9^4J`~UwByCDW4k-y(8{a-R6@qbX>hW~euK>J+(|NpqFp691sI z59-T7 z-u(ylS<&r>g+Dy~fyP-t_CwSE{k=|ze*XJy|Bo-z`TuZV{{Mg9K0^%0L7r)c%r(HI z&&~P&e_I|j{J%i*ASnD{=?^3Sf&354e{a{qjQRiP{j>j|@$UB%GXDR+cL6Sr&H(ix zzifC87Y5BiERXpF9)rM^{}AO5DF1`V!YKR@^9|1Fu2{0~ZdptuM5A6EV#%HMO4H2CY) z|9`(f{Qr1u_5b@Idq90O(EI?@3NZEI6?hEbXi?_ibN|o8ZUE0Ud}_W1>hFT*KtSUU|2Mt{_lf_0 z`u+dM`#=9den+l;HeySOlow3+l&%`tTqc)JMH`^#A{xC;$I{ zdJ{5k0J0w$pZo|3dr%+zW_o^`tN`L|9R`n|3z^ZQ0iZh8%|BAIQV~g z)Bpb;LUj(WIK^Qc?0kRu54gnhXnECYo>B23aR%KytkFTrB(0SaG@%#Uo?T~l? zxdY?|5Qez}6el1Inr~av`Tu3r+5ZoVj{XPFH-W}$Kp12%2qW9Q@%8_+nOlA@%9sdm z_kjG3jyJXB2ZP-J8hZl81;`Dc^Z;@L2*ccQ|Kfj8SpZJ&m%f107}yPkN1JbDM4WY!XS6RFvud<|L>mv|Nrdg|No%yKlJ|p z|9Q{;gUa7CNt^y1E!%XNR6pZ$2WY->M_Yc?SwRpBhZ8|OB?ESpvN zGk03S-_*(J|5PhC{WEUZ@Yl6%)6dA>buaV#mz}8YpH&3XLp>LeZc?fVt&HsufF5L_=n><$$*0pNY zD(3E)-P7`B7yf~TGia=B+0B*zPyIa$9+L!(!GXp?kTGbS5rjeGTp$c$gD_}5JbCX= z@H#e_Urd{}{wbZfXd1{a!Y(3SMRQk|a@FjbFEDq5!g}YMJ>W4Tkefjm=4Q~?8i);| zK^QcC1adcs24N5zgh76Q;r>hi|0BmqNcXzW4ek9(#Jdo;%8rR0{;)6yjcFMBf4oWL${-1}3IdT|--TD6wc)cTRY!ybo{Q()r291}(FfPA<{BYtW zWZV~&rqrr7|Errgr;V^nF;(=;>}gM!oD5zIIqB$Bl=KY>YY+y7F$lxl3L1-s;X_}K z{$Fu>_5aL6f5GdMKx4iz3>$+6`3L3~SbTu|02;3bt&;@#L9Tq$e^UJbN;9xj4E18D3P6t*xwfM|4ofcyZ$pfm*<(*~`j z0r^3#dh@@A-YGtqp^Pcg+|{fMOYg97M@}mscY`n}%t2ud8V3hq(AuQqzfOV2LX)PZ zg4f>c|8(g8%Deynhi`oQU!iIncsv?Z?jWyIg82jF7f@V)+z-MaKY-!_77rH9TmBHr z)1Y#zdUh?ioB^eG(0Dwu+d<(DayJNr+zi4XcY|gSKyt;)%Km4}&IYfE0(Ip#aa*u0ZYwVUQfi{U8i-KPVnRYlT7a5Yf5%GsumYp$-x0 zn%O-K6z8CF2DEk;R=$AThAYfLZUSGh&Dbz#{V&KJVH@6n=R=VF0E!0? z2Du-EL2&_#gQGA0|A&=JH52Dgfw&fxoH=tQ*Xnt}e+v6k|AWd%nA<_=9prWpMhy_2h~-x&&~V4>FL)0pfrQ*c96S3>$^ej z2hF>J_~;nqR?z&9$D(`xLGxjtI6%grb!njbD`D5S|9&f;{0GeyfY#iB`~gZwPe1(q z|K;7E|LaqJf#)n{wyfQR9QvTP*q#NJ|3L1C%^Cdr`RxDCKQI5UzOe>gmVnX+XwDWC z<}f#c@-S%bs%vjAObASa{0Um;X*2a4xcmXR7nJ^Or(gabvhEdlP8sAUP#Xd?zlF_T zajT#G|MCemw)YRb#tt;L3z~D89(L^?$jvZ6ESS;M4RZU#{Vve?o)_>rm(v@a|93Ae z_M5B{Ha<=_9r%q{;kt&ZiJr1PMwPAoqjf0VWDcV{#Q+{s)!s{C{f2XK*^1AM)xyXlxsKeEHJS z|6sYI|8fR+&JE;05WaJ>A7&+-2JNqC zhSphSD=Ytl@(WxN2gA7cBzR2%vh?ioJO8J8Jpj886viO8!sdoRaR3Vc_xB<0pAmTX zAIR;qr?nJ--L=aeGFJkcuK>FrGF}f_V|jb0-T#a0P5y(|T_Rif|37#wGpNi5rK<&( z7lUV$(Uf52g3>&wPWud9I|);CWySyh2b%u>e|iQowhwYYC=NjGhovD{KAzUSs9@#1 z%3~n+gZ6G9<{BYs2jq6pehScD3h;arXu=9+(f|MdUtUQ4Uoj!!f9Z;f|Dd`TNs1sd z|LFh!(OFymKfm%DLoLV}&`>gLZV2RlP#OaH0Tc(Ixjaz(%xKF?ll^5_VrCb0W| zLFSe~>r2tye|VGO>WXiYXK4S>=+h!08= zCnkbe5DZE`pt)Ue_@lWWG{*?iJ3a2g-@OZrA!QG2t`(ejq2Uj5I|%>#1ujcLdHDQV zBk&$2h%LCu&v#4V^T6j8iIvC%ggA6caSA3TQ&@)yWr9QgagY5xy*1pi;3u=4+dJ(zhE zv~C^Q{h++MI^o;@xj`@fe|`bpHUwS=jUN7>{0o|62I&R4f5&`BqSDXH<35me>Q5TL zX&=M~t%=9se2DPvGynge{sdv8k#BB6!W%R%50e6|3z*^i7+ij$ryu0-ho_(T^M7|N z@+X{sKc57<`Ny?rh*kGez-uB! zrZ*RY+z)E^gV!2?@-V3F19tyM@R|?M{s~YU0@)5Y`_-fWU#I1P_t=5w{y}qJa7o+@ z&^|!W-1xsAh&3W0)u6Hmv^Qc$A;SHzx)+poKx>p>?T0Dda|=LiphJrdAZ5@O#9D#> zAU}Z9(8vGJj(CFCErIrAfb77)pgHXQOTqK`;CXz|{s991xR-wjyq^HwEKnH<+E;V9 z1KR$9uI&JcgWL~VV*m>K8NqkJ?Ke;xbjzX?MEe;O{;)a#76(t;|8JjR@&D8DrRdh7 z@Gat$es+)S`82etxo{W+i#uv|Np{D@Sd4h-O1qm z`+rgO|No#p7BIJ?(;zo(c>`Y80&?g7B`?5h96)gc+K2mp##8W~Uicmo&^iau{Qsvv z|Np-K_5V9k|9w{b>Wv^bBV*8*#E$vCe-3tp|Nnn}H)L%AXf7WV?w~aVF!zJ}0Lrf* z3|eaf!su?r#sBjUye8vP@;1o243IiddIGJ70SyL$Fle0yY>f!W{jfCz+ur=&n7Hi! zob;oAKw~|~Zilg#PVAZjN*kc{K>tB$7_=q<uEq3zwygkgSw#RVuWfiNg8 zKo}I>pt!hx44lvZFRlUaRR`G(!l1qHC~Jw3-3?3c$ZmiC`~UBr``|L^M8?KHUCmv} z$Zo~Op4#2wd$%R-AJ`8Emm~55%nzXa0P_PVJt6x6t7N3(?D(pVVIjiX&r=NZh!j=9_}Zj*8X4A zF}od`8wrUmn%LQPuN4{(pmPaec^c*iP`}s?6GzK|AW>mgZzMwL4Et$^HpGGpT(Q27qB z3)yaJvO)Fq#>p+4@3tp_%O{XOKo}e+pz|_7`()AA!Cm?C|Nr3+|G{fsXFf#y(8x@F41T8%c!lRAut*OBQpeM&Ya2GFsmV5Qi>f{p&MW$rJuCNb%9QkfN>y9` zY1eQ6Ytp*wmt*Iy51=y&gL*b^3~gVPkT&xS5hv0PzHseZ)yG*syP>sqas6Y^IWVC0 zeb{i)q*VACKF}I5bgWso_ z2y8tvhz4QM+GG$0oreQDBM7u650*9zn|J&P>e?`Wu;h)p*>$y`v!G$|UAd;_KWLv0 z$gdy_@+S;G`~Mug<{m_Y@Y8?Kz~?T5)-$7HP&j}vC>%f-bY2qZtV>upfX=kvc+KM4XCS|W)>nhlIcTjZvfr`!7qn&@ zhC%Dj-~4+E-h%^LHwy{_WDE)e5FbQ?!U7ZqAPfov(3)D%S*M`2wxIOj-m~jjWa~0< zdW1pk^jhnZ`DNcheg~~(2CeId`5WEO$bJR+7qreEnFg)p1Few<`5#2XFo+NGJ2D1^ z0|OVN6b>K^3kQ(@L1_VmVPOC|GX9fRsWkUv2CRA3ks z4j?ux3_vs}3}6@(7O-#t=>=iXIZmMU|De18N(a==3!t(Nmfu0~4)QywTmxZHyrcUa z6t^Hh!!WYHLE$s+;==!+_4Kgz4`^*aXpaTRk08Ip_Kbkopzr{N0SJTSK^QpI76zbj0QnyjcA&ZuWDcl}ls0oF*?p*OizDYXPmKIuxTxemsD4NHJ19;; z=^cbY@ecAg2!rAqghBoW`4hD74CHsv9UL$*kT^CBE5|_Rqr>E3;eZ?lF#m(n0m$zl z3`z$e|AX2G)-8wsSH&OrKda#Ad~))^(rHnG$Cg|C0j*v8`Lyl-+dq&0gW9X0bPw`3 zDE)%`4U2P-|3Q8RVRS!&_Ai3Y288W}g82&@4T?ihI@t0Ma!%;n8~^`<@-^sOLiBV1 z3Ih;E4ukt2|NVde{?GsGn|_1$Va$zu_-9(?7Lxl+`&NYQ0QnufzV_#1@Y=(_zn=Vm z{r4q!KQhSwpnY|qJzk(ac%ZfbHot?)3{c$T+d~L)fAiV@|9zJ~{txQw!16CB4I^Vv zJrTJ2`F~Jd0XjDobnZQiOghAyasNaJgr=Ye1NFLPRMVH(C zdf$IgUWc8l5ArLBZ8`Zo_>53cI*8ix0lZHRqz+cLgVez=Xs^@R$AA8R|MC}nUL$Bt zDQrzF=sp(Ey3E<35C8TR9wU1EV9Ua=R#4o7*096ZUW3=bgZ2=;2k-g#b}Qq5{lwV+ zlaEXT?<)oQ5wtfB-H)KO0Xn|{CJss?tM0D-59%+$>VHtZ4e}?bEeFcuAhkJ1{)6w- z0p({9AA~{aALL(<--Fk_{BO~A___{(#T(hwViGg#l-EC_AO5}q?;ix!?I3sJ!k~SdAb*3x z3RE8S@1F$T1CLETXdDFOPtcxPWO)^HDpa1`Vv*JI<{~!!H?{Mxk_y3Dd z&PR4CoPG2EZSeV{Ab*4Q^MTGp1?>TcE5O27cKbiLO%IA^Wa-$ZlmB}|&V%oW0Qn1q zLHi!S`w7tYGlBg7<_2Ux$m|gC`K1Kw!VPo7<3N78vdJ8>=M}c@9lUNFv3C))|L^m~ zFmM=v_5l965&Qq&U(EeX>mF_d?_CG^9kdq{RAwUk2NxSu$Ai*3Xv_my4Jd9wcRYdC z@`KLH1f7!#-wy>{6OWt*K>J-l=P821X=?87I6`S)@A3%nerwSFKghmE(4JoqhUR_n z-UZN^n?L@8?&AQ3)&Ive$W8>azx;Xizjb>DxUCC18y9qb3s`~#0<`y9tzzr{AKx+e zl7Nf>?a2W79fZMq0>1r+@2drs0idt~rGWztkTfv2=rqRqZuIatvO4HG*iR3OFw;KR z?~uJGp!f&fqXkk6yQc!=CNTc_7<}K?s#(_m`_?!ACpON(dXb3kS^*zchIm;Zi& z&zuFNfB1f_Z`c2W@(#$1FPFkG_7=e%PXq(D9|&~k2{z?0|AXQmQGJA879@$a0WFp0Vf#Uxg_`GNELCv5r`1$ldXfGis-Tx$V@AaFrY5xy)hWy`>u>AkYKImOL5HG<= z*nUjV8Oi-#zv~LU z+=KB^+rN-;4^SP4==;FVZ}{>5|FbTz|NlQ}KzH8%zdt|!|Fyaeyk7`(pA~rTAciXZ z0-*hi$D&vN{|nkvgr*eMuLIpx0P;I>*$*oFKxqWzcToF}l=knY`B4d=v-p4bT9M-JM*0N%?9+EW6T#KZXW4}5po?VSBs6@l)< z1I0h6j6n83$nPKw%ljbzFN^*Nt}}?~|6ulip?Lu0cQ6Lk1JF7U+6M-;bN_)dB376F zhn%~-xCWdSKzpD;ch~+0?SaFk9wdI_D|p|}&#t>59tPfB4k-gc=N*9jkDm5n{(pTP zqK?@9FDM^ijDNt|fnfhb&j10Xfj^)BA75el|G>ns|NlVeOJleaP2k#5@ZK{}S^#12 z`R$;)Ytgosf^{u{?D6{#+S>~jKoI|~fBC;DWzGM^G55jaKG@Pe*#B=J_jZ8N39;iJ zApfI`fBkp}Z3iNqpYZ$r|9`(f{r~&>`~Tlp4uSWRzUWN+|Nk85UJl4Tgb3GSVck3l z-jfXq1JE9xE2%rc_YZ^jB7yck{{Ii&p9kJw2-;@_GXk{dcH?XC`SBoqe-6C;|L5D^ z|G&Qd1BU}B-GlNy*zcfuB+$0#gm2)qPs;cg%J?Vf{2fp`5S#`eZQ;K^Km7j(+EWPI z-+68)I1E7k0f)n~2FP89pflk?cOR~71>Xhn{}NhWzIWk2D1Bc}*$z(YAU|D9+WPJcM)73fYgBRV+7q(02&bd@%R6~uYdmk`V87v4{7&<%e{C1 z|HImkpmq-_ec!FM!*{Q0@%I@tgJq2~#J{0ze2v-2lE`Trkummt*d;JvfZy^!EL z8$M7z{tfa!^8Cl|N8SH_e|i1?-{<#`eb=DIa49enrWo!kSEz2u;~IY4Jcfbs!oA_$ZRKp2!yK=mTX?;s4?NBQCR z|9|g({r~;u*Z-Ro&VPWyVEdwo`CBKs|9?6;^Z$R)osOV=kf3%uX#Xb2kFYcV%Lm9| z0ICm&^)pgffa-iuT>szu4k8Ll8z2nxJ950k{14g#3-v$vzRXv@{$I}7^?ym+rvI}F zj*vC~1@iyQnQ5%xd%~Nd{{IKvBLIp=P#A#x55ll80EGi63_ut;3_$*eVTf-KB40g2_)PnLcIR9Qh2Dxtp76u^ygD}YdAPn+92!p}^gkkvsmKI=P@%$dVO$3T- zP~Bz-hxr{8_n`a%!iV02?^OYrwXt9!Ro2Iyn^1NH z6b7KO4Sb&qC>?pGwf#{z|sOJ96%Tp4j_yk4$!tB_$-cl-@$1W9Pc2%g8U7_AT|gi`x_MJ zAPn<6%>SS?|K!Ji*m*4{OSU`%xtSV%hncalHDCN*Z}xXk7=X@b`TyoABrkx{00_g< z0W1ta`2jf$VBr9wPizFoKjDQ-uwrh?F7#2(d+($%6X7m(A`HbKB#>FYa@Ze;peQP|NoKO39#@0`5hU9 z{14)T{D+P~euZI>pF#NW2XLPd=5J8jhFbMIrC|jcGda{#JpW;L8u&aHP&j-8okIr7 z7oc$tP#AzPC{4g<5F3PH{)EvWzrrx+uEcrI{@*V+49?>qzn@Ou^k+x$^7&^dY}Zlh zXKebnRAdUC>@VB#up=2@!o{tt3j2s&zeG#Fk!m(5Z)|JIk2~I9w(-iu zvTJuI7JhixoB0czMp|P2osM1q4-~g&v$p&?UAXnbv9e9q_Li>NxH@-k++a-Or22nU z{b&e`hQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQPpu0O*`R z&>4XYj0_Bn3`JHPt(Z9g5T>FBQe4afo?|;qudhq=e zpfi3qKH2hr=bJtM4}3oSA9SWE=-f`wIo+T$WkF|+g3e-HaP$BF{!9P=m!A0lA9U6( z=)MZjnVlL<`@m-wqQ^NlKB!!9>)HJxv|~*XVV{kvz!w7ba~c{!(I*SrSxiVNTR@c%yugXBSJr0CfH|Df}%4Z4mIl^#I#LvY8M zMtpu8mBS2yy15NKB@4>G;fr_Bxx9^ATK=xk;X4Z_H55FZ)C(gH|q@00)k(+~aypYx9ETw_@IVBNm!TTtif9!#H(iXewT z-HbZl%0)Hr@Wngm{vA+x4vKS79Kzxp7N;OF7#l?6!=Q7&LGca3pfkonG$9O%dt?ks z6QHyZx8n==jB8k&W22qAcD)O3S>}uE=TSBTL*=AO(Yi$qCsL-T;cUmZY;XU+``tcp z9tOoRG6uylh!3J+_!;z0B6L1T9EL&h4~lnW42yr57>p01LGccvK^VkF#-MZn;!nBq z|G(qx>p1HNrK)ZJ{Cl>Z2yL4uIvV#347GC_>hk9l{l=B&J9c;f-~Z_l&UnWczp!`) z(V+W0Kr{%$*w6pHgx|{qyJrAK!{Q&A2E{uFgTz2I2!rArM1wGh4Z@(b0BTFR&cBT_ z9T+w5{2kn}s&1sF0nlA~bqg9!B~DGjn&+Fgw*Ei-?bv@<`Hr5yk>ec{ryxFvhG9?~ zgD{8>qOoC6{Da~f9fRT*CI(}JXmkvUbC4K_2E{uFBeOyL6?gvsx1V_xM>^R0&$nmm zsn8*C2Ou@mX~XOW3ta8`yoH6}dk2u?9X;+raf*(y#V@)T=zb577>EX88A#U+RhqG1>muOK#vCWJxp4~lcp9U~x` z5QfD&GL0VpAU-S&fM{460MX}O|NjrV_W*SMKYBXQs^9)MsC{kIV2w9wxT|47)AGbA znB{%`qN4x1-tL9h@t}A{#-KPx#-R9xVNe`{*dQ8)L3h}|*dQ9j2VoE!gh6Z&2HjH# zihEobmL5RzFg7UeL2P6i#D-x|{KGIP{$Ust{~!!13qWl|(0y3wX+W-G%fFzW&C96~ z)`QKAhDA*WK=~XUgWC0{|DA)!J+^!gi+fN!BV$lpg7_dB6rUg(gh6a<7<8`_2*cz+ z_cVgy7KCBEg(J?M@pP<+EMwmc7tUl0bR0T2zspg0C$P&}g3ATbyQ#Wf6r#9(X~4Z5ci z6z}L56#v-7K;q~a6z?DmihCFa#XT|`#D~Q_j0U9v5C)AiW2+DR`gU9$>T}MZxUXGY z_Yghq(`IJ=-~4PFyloGPcTgGt(I5wtSyCCkJI52Nd5h42yFR4T@_R2E{dq4WdEu3&WuJM90YS z3u5EKpnLtk{QHV>Pc0}N!0urLu|XIV-!K})M#rGIhhb2>gV-P%gh6QmhC%TT!=Q8k z!?1KP{p$b!*zSP?l>_9Ky#uKaTYV2|=NenCtbqe0jgXMV;4T^72Ji{<3 zu0d?%c!se-aSX$tcm%OQGzf#@7@Y=*A!E=zrZD{N-}nEZ_y%Fn{e&P4V(AT3F`5qSc z*y10Q24HaxqCxQtqd{yCCN{1?@ehh~keOSaZ~x!5xA%YPii-akGqV3H)$I7M*Ky>( z$D(`xL1Q$aI0K~vWDJUP5FbQ?Feu)UF)Z#uG)O;;2C+dHJq^I(9!7)W9)v;Z0Ms4; zl>=%Gd(g)W{|)x>0noS}`q&Prt+(g>et5n|FY`h99EL&h1H+)WhG9@#BV%0g4vJ%3 zc;%fn|3T>xRvv+9Z0mnOb#ThQUl@0FgW?~ALGh1{k<$W*4T^sd2E{!Lqo)B-eE^Gp z5Dkid5C)|I5C*je(A$KdF`~gbP6!&$M<3G#_3=RMd{CUjFmj#;<$DlDj(<>`gVF$q z2E{py2C+f$4#J@P45LA8P@KbP&^@#uK8Ob4^ZzgYuUu1uQWt^Z9)z*QKdk)?x}y>_ zUI&VE&~e=$8X4nD1E9EvVf6S%PY0m52Vqd$!!RiRLAdtx|NrQHL(o|9V4N=i&*e-> zK?!H%{yiw(kufaJK{P17VHg(QFd9AHLGcX3pm+wcK{P0?VKj&h!k~3tIrH;T+yuI( z7v!!Jzfb=MjsJqe8FVLk{LZf!?QhV!FVNk^p!kPjVP?Iv+XSL2(blpg0F%^mvEGJ#w6b z;u{%*;tz(A;~W&9Fbukv8adyC)`Ei411O$}!JxT&mAYN<_Lo-6f&ZX92}%Pn3`zqa zjGP8wY*5^TFev_E7?cKJaSx)=;~!fZ0OfxWKKkPSfAskR(E5SFu!aP*ZU>aVU>H>A z!{&03;~vB&Htu2Z4~utDe1q5^8WiU+8pMXhIgAF0RjjUtm-(P{0BQpe6Yt1sK;=Gi z8{B#BO}I328UV4;(*Y>%L1_U*Bga1|4S+Bx{y`W$4Iq~RAT}t?f#M&8Ctk*E3xL)U zp_j$<|Vigysk7Wbh156bf(42p9QhL!Um8WiU+42yFZ4U2CW z4U3%lmlna}9#rOo){wyDNTosjFyytJp!J@h_=cGSVuLU!{$VtT4U2nF{DUwo4S;A+ z{KGJE8UUpQP#FNiu($`sKL~^3AA~`3$FO<{M1$6nMK>?;p=X>U+qG+X@Vl}JiT@KP zL)v|yF&^0bJt)p$nAo^Sj(a?42pjk2E{)NgW?~A(c>SM4nT1a!l3wvVNm>oFev^{ zze0=+$(L>VpOL!r|H6!0?~vn!UhHj)!h1mXiGuLr8BYJRC!~Vc?SS$sIEuG zp!^QPp!kMiP=1GDSlq*C4TMwo zW8UcuQUk-VGytMOX#f=WFd7v1FbqorAR3hSVHgzuFbs-!7zV{Zs4WN@qYBK~^1mfgF^AB~=E8b!D9AD-14HWk<{P>{T|KERZ|9|xN@qbvngJ@9R2VqeB!^(RY z4U2majUM;d@;xlhVKj1_?)`889`~s;GX7uue+5~ZA~tA`knQx#|1Bn+`wz;ixC{fO z0Z_cdXi&VvFen|sFenXx;vIxR=D{#14Zz|aM5C7h&p!P9|M~5o|J(8)cfW$-9)uSp zKKKfY7kbd!7DYC~;vGi+|FH8v=w9J}KcD>n{QJTGNBv6>(7fU3~lh|CWdU|AYDppuJ#2Vqd$gD@!1gD@!HgW?-TgV>L2kX;}QDg!_ml>Z-o`uG3C$3OqS zz5DkceE02}|6uy->;L~@_e6u@9)uSr-}^+5yuWo}WDzLNk@5d`o4|P=l>h&O?h^*# zUoZZH?pOc&`}zO3f8YEE#XSfk$33W@KJ(0+|Dbvsw0{pYFSFtC=Kr8L2VqcrgD@!W zU^Ix0j(hg^Q!Vd<`hAg`--Gw^Ah-ST#Wy}VkQtzTq@X=Qpfm&;O8|}Og8G&=(=Po7 zjWJ_O1Mk25{r~Ob-~XUHpFtQL|Dd~{LHN!8|If~0DFX@)(0tG7vDLmWkmLT@5l^JJ z2j%~#(0jEZcS?iOz`tLw|Nr{)@;_+3B`p3ydvQVIGO&D$OoPS_LFzzp4#Md1jm!t- zbx=PKrk~WlKB%q+&9#8?D=2R8#U)G*G%o`x3qbMbFzecXt0@=$oA#gnuits}Kl0ci zOg%mtlsZWx%p2 z!P&yTDpgZ3|7!>y)432wH-Une& zJ@DrL|3^nqyYFA#x`qc+#}_Cc>F{2KRE6|Y2f|;|G(e= z|NrOX|2wC${})Vvj2VFDV?g7Dpf$jteVwql1ks>9o+yEfg|p-J?*E{@z#zQu<3TJc zP=!G25PA$t4=}q_{h-puTjz$Xipf( z?63`Q{)6HjlpbO;w*TLd_x1m;Z~wt@j~xHVX#idaK;s`&2CPo_2JZ)g+5vM5PpzX> z8E|5?%U9(1|9>wXHU7bMKB(S@=KWu<;CUYw_n`Q{x!vYJ$eh{JJpUj2a1=Zz18eUg z*X8RTZp0U~a5>PLGElt21+XwcZN$2bjqr8?D1E`=9~9>io8J8g#VZ!A7($@-9Vp&F z^*E@_kD&lb0F+KZYC#xOmVo*LAPh=dHOpWB?+QHwj=%XKum1o3{vRU^fbu>p4WN_( z&~o7HEYvb!K@x5Hg6ro*27uxWhL0>#|NsBu{$gT{Lx?R{w34~}za zyo2&R2!qOd82Mo=G5P=hf4~0!`}gPn-+#aV*KI)LQP5f~d|``E z4pg6X?&-mZchK0-)DtuQ6H~X~GCyh04|tjGyZkXOWngiadAHzd^_vg;|NHmf|3AO~ z{r~&t|NosOh`hTf{4FB?Bc%aQ-Une&{DUwk{^9k&yZ`?|b-=b9ggK!2Ur=!25Vh+7 z^gjRpCk@cN4~>6#y$?+TSn7RH*$;~U|Mybh@qcWI=6`S>;%WQ;Cx_hsFP~xeKW9S9 ze^5Mu_JD!|kpu!XelYjKg8#_#0HFL1;!im~9lQpS1mmzO1+CEpAoWSS*|NMl+ zKfDb9jel4jfSv}x@egeSfa(Bb^FaN8{g7zX8k5C+x%pmYGL z16IU-MlpXz{ywUmEpc#l=xOBm|9mkFHU5$FK0Mz;+kNP9|K~F#{{Q~?|NCYfJpOO( zu>Jr4N%Q~z->#yC9)9kT@5ldx`jE)+4jNYio%e=cCuOoR+dhHIbx{0+#tVrt?fwDC zxGgBIKy~(|rT_o`{e{4wbOOTgGT;lOKM2bEAPkCsP`tx1DDJ^&;LU$mi?dMZGUjt|M$oL{~-Lh z4xazPWeSm@_~-Al|LvPQQ0n=txw+u;9f>r8Vr8JU7@)WZVYj*iB%241|38TQ4@wK5 zxCf;J5RE<_1dDqZ4Jrq~>EO+Oa21O5qagb1Y6GOXKIHrl zt@pwGK4{sGweE+;Jt+R)Z-K}E#q}n{h2gjB;I`wgc{=~=Cr1BIoRk8dKO(2EK%9lR zRq0f1|6iK0@Bb9wqouBWgkM4#S|nJ4(MFp7*iz`@nTSdftbY{r`S}$AUraJ($`5zh1x$C}fcj zyZ?jIA51-H4C>vj^8bJSVXnzR)E)--@)J^(rY zgW7=TZOrKf`)VnT|Gmp2P{#Z}o)5v1|B>S#z3mTc^FiYtl=ngL|L+&L?+=U5|Both z2jc66|Bo-#f|nO3mTCY0|7t#N^>mOyUWfCPh`9h{CxPM~gu!u-R0n|KAB55KKXN}1 z6z?DmF8e`k0O&XnXbb_l4xq+dz@b$^S77l2qW|B|M6LVbZ9i!F4{Q6Om;LazAGG`j z$N%5|pz%MDxgZSc4}!)5k;4hhe!cMj(Zw3@xIe$v=>Pvuhrm(;NgQlOw7G6=CEX>U z_y=KZX#gJopgzDi#C#yWIsknxU}4VHE0pH{qpQ7Nf#L>+|3B|X&Hv!|hsHg;?tcR= z+fmy7pgun+-@`CC{(phTenIgLHy_luKn}{+Oa3F*5ukCS|KIN*s~9l$>FJ30zd*)R z1t{)e7}WLy<$DkY#XSgv>wjqc!}32y{SVFmp!y$_29fjs!n8ZDD2@N)tKC1s;s!+j zf3plV|HJEl(3lUX-3P+Z@*lbW2gg6O{0GN9QYQ$hA8=)pIizz0iq&`PG2<@BbgyfJFa4Kk5Y+1Lu1x#yx1C!s^@W zz-M@a*7t%fB$2qW0TKU4yD>FCKmY$fsEqjh3{wsy0?+%PxCdcSllUi=u|QB6fENFt z`X7ctc^`zIo4I`WGzjLG=HR2cYqf-1kFn`$6+RIPXKpeUS4$ za@>Og02B}){I~`l*PwPDxG(Uy4qWfU`y3#3RKTD$hM;)?*!(|e9-q)WE;eg#Z$pGP zXif)N4JZ%K3w{aiAAsh3K=~9|9>fNDAB1t00pPq3>i>Z-H2y*5KMaH7A7m~Vzxn_F z^>u`M!0{jZ=oh8&e{7lYUr@Zm@PF{w4=C=T`5%-gLG?ZigW7#Cj4KU*^FFBVht>h0 z!1(|F|AT$b@HB9Dw*#ae0JSHf^3f2E{!H zgX1352EZ}~G&}U+UrOWu$YL$ju|H7T>nAksL2W;9{A0=gpfmuEe=L1Ja2WuNdywa0 zf%5GtN*@p0*MP}Ui+8;3aT8-QGc(CCK$HXgxN%Zcup) zTGs)Je-J)34PC{5@Hzl^{>L%~fE@qGZ9q^NfFA#!Um(&W$i5kV5C73F{*lrEJnw_b zeh|ho_K#c#;K={r(0Nn|jvr8Y0~+7?|7tE+m}vUeCZA$_re-K8_`=I;}!tnf$r~XII|6g7r?4nlu zW0wD?QR{zj{)hJeKxH*3--9qX??dZn`-?Ir1a1p_ATeUFM+I0E zwBBs@q`?1o8YBNdY>N7SDtg`j3)l=ndxIsQTO$RM}CFg415jP@UB+yz$tgX11l_Jc5T z8bIs+gYrH&4M4|!;N|}>STOwm|Fjj+*8BbDKWvRCs2l+G4gP<(;6NFFF(9 z@qaOC>;M0!Kap(ejZKLBcBB)xcF@@D+@KfWItCOsu(1MA+=DPEJ;3rmhz8|*l>Cnr z|Dd`bRQ7`~DDL5D;LZR4udX881F~m6721Co{Xh6#A5a_c>Hq(rHUJpI`v1_rAG{2J zj{k$w04Ux;7+n4%)&D=A{s)ccg5ny4!EycL-ha?IABYda;Bf&^+XHtnlP2@?`~Uyf zkNy9D=>7ly-~N)O7pnToDnxh_>i;A66+vkM6px^|2VrphALQ`}kR6ND z@4lwA{f{~SlZ_?+L*pNw|DkmNavKmF|H$<}wEg#_0iO54>k2^uf*z0`cK$!LLKm(M z#0HN;qN}4bAJpapg)<0)*543g{i^t{@OA*GzX^|fX!#F{dk{v6e?s{mI{phPgFtS9 zVQS3(pwIt)I2Vi~{-J3AqYQx7|KRo?DF6RJ$^Xb>KA<)r&M^FR1ZD0YG$({tJx+tD zC$S|HQU8PX;}T;ssGNYs&(0#G{y$pV9~A!}3@!tpc^_8xW6S@bHYP3Rf3dFrK;G*Q zuKz)C55mxP0I2N;!{9OiNB#fn#eYyAA6~coxQ9Oozh3x%VVyC&902Kibvow%Ur-?7 z*GUuEC9x0Sc^NeJLX0J#c!I@0Xlw`+$KWymDgJTge^9)G(g3L32Vrp84{G~C=l^N3 z{sZg!FXZ|k9{;eo2eth`7L7oa2Wv2|L`^-+87Y1{s&=L8SwAd zf6$t5P#F%w{~zR$6oz2Mm-hdE)*g?N4*oB$`TzgjbFef`i9_$<@&B%#w6Q7Ve#80s zi1oi1c^|3Wk1hX$;~$#$LG4diy#k`Cwf-9v|5*2bz}o=G<3P|ffYAno_5tDX56S=E zu0+D~KWHxiS@HGq!T&E)b5YU&C{6r7y7vG7f257)l4Spkr||gyKa;e&=iEF*yYbu{ z^5P#H_n^EFt@}aq&!BjRVQTLGAZq^?cpLy4|KKtJ)Ca`h4)}XJ0V)1dND6)w#lL_4 z|G#(9|HmycDCywmtfK$_A74jNN-fUwiqnYrKlYJmV?o{9<9&$uhvk1z-UnfLy${X% zpt>J~Vfi0c?}KP?8i3}1(4Hb#+=J-pdHd@@d6ycPsQsVdIsmy30F8T48vxt~fR+K^ z@*kA{zk&CAfy#am2JZm|1rE_6iACXy`~QE>DM3jCptiyP70v(uza(RUHWn+uLVy1K zKNr6V5&xh5fQ1PWFzA{1ZI?0iOSn z(f}wOfH7JcfR_P3{)75`p!~mYp7#H@XJ-8W_m{l67>s1`;nn~D8z=k+#XG1BfMHM_ z@qcwYW%a_67x4K1(@T80^6&4z{|}}<{6Ed_2DtwR+CKn_cMt~Udk_Zq`9Nhq2t&tx zkn=q#{y`Wt-V4H@@dV`Z1eB&|asC6=^IyKe`hi&5fZ+U(qYi-O|Gz)}|9jm0f9qtI z|CgI1!1Xt{z6RxCj0h!D;MJr5|5vqP)Cr*U0IDng?|~lBNP_W?ijTqLAFQ8Py<6UZ z^&O5~`G0ZjmjCzm{R8j&Mvi}Q8bHhY$ng)Z^P%NFDE>iv|B=fRQ2f*4{1;FefN}m4 zd@l%S8~}uo=7Yic9u)r|3~CF)$^gVzz`s9V|Nr~-c^n{Qu9cyO1>igt`pReuCo=qz}{vAbRe2+nfJqVmH9`zOB3X|KE?l z|Ns2>2R`=$9Pgk!55h?C4~lzG*$>L|Fbqorpu7+2KY-)h`yseYq1E|Mp!i3h3jm-0 zhP59Esslh6wk80Y2B7W0f4@Kd|NHv~IPU+0+V1b3|9{z)1WyB?y!n6A#Q*=_6F69d z_}E9NeEsGe{Sdh|DbpyR4;(ceSYWv|C=ZO|Nrs<7Gv1yZ=e2y#t1;|H&C45 z!uJaf|Np=G72FJzvj4z)xHz2g_0RwRSHArJKj+#1heb!>`5k6H$iDwiet_ftKjLZ{MRK}_h@?lD=7YnI{z8o7ku&m@6Xr&|9<=M z|37lv!_ojK{y`WP|DZGg!uK!!|G%&jB|fpG2Yh0nwDKR6#_&WtR;lY>|Nme5;{WTK z^YHit*Ygj*|Nqc<1)e^@bp%pd02a^aG$@^XZM*sZ|HJS9|AP+ygT*~G--Fu^(768( zDmy;^`Tzg(pZ|Y9{r>;s!(VV30L48BgUWm`e)Io7`dTkg{+~gI^PfR!0DUX~_5628 zUjVeu_RseZ|Nnjc2#I@8d5fF|Kyd?#dk_Z2Ka2*&KL~>+ML~VI;~W0}U)hRLH(-l< z&>YZ@nT7ws{kun`og;)bEr8KH@ej)XAPh}E2!rZ=ke;{C{{IKn@t`u|!KMHIpWTME4G7iuSRz;O?X z>u>G15E?;w_trN^dkz%Op#B30gV-<(igyqO#XAV2$34glP~1cFJ}CeH2c>}zzyJUL z@caM2x4-`X0^R@c8gl=`i;IZyV_5vt^Zo}=x;VZX_5K&o*^R%yKK=jq%R5Nh3ltxq zxCdcS{KGJE8UV#T41?kyghBBS!m#)U(V+MTVNe^yn`?(-eDL${y}jM!m#)U#XSgv;{QD)4g7!m>;K<3KmUJ!gL(hU!o&yPKygA( zjC}voj#(!E4|at9|9^h>|No$T55l1MhhgNn2eHx904UyJ7!>y)42pLc2E{!HgW?`W zgV-R9Jtn9p`t$GqyLkuUdH+i*jej!ri01=Sp0)%Q2c{1EdF6MdfbEJAB3qF+n6TJM9lME zPTBq+ln+r9f#Mw*gW?^8L2(YlpfmuAcNhl6JqRPmJt+P`7!>ay3`zqaj2!n*e*C|l zu^XHgk4LTfzcz8z|0P-12ju=YP#Rd}D z2*c6*@kAOC~;?4WQ4Vfa`dD86AB7Uv)u6yGo!6z3p5EZ$)>D9?j1EZ#wJ4#S`{ z0K%ZS2gNyv2E{oHANzl42tXj%c0}Vhu*{c{vbKnoSVDS#3L2(Vjpm>JSuy_a2FpM1cpm>MHKel)W z*#W|!_=jOo{6GATF*bE3bMx!Qcn9G(zy5>fijduS zI(q%TO@)i7cD^$;($2a5l2f4YM8^LQEc^fe(_2V70L4G7EC9tn2!rAtghA;5gh6o+ zqhV|C`zi zC~*!8YjE6y=4oK@4T@)EHi!?3YZwh;!{Qx8BgZ+ucn8HlDBeLB7WXiE{&Nhs9V}gU ziW+f7O*2;Y6>{F~&;JAqUl0v$3tTw_iGNVsgD@x^fZ`s6L2(bGLGcd4pfrGt(c>RI z4S>=DD9&LR6yG2=G7VzCdk)Y0Z+cVzgU5zJX#^CXU;m)g^`Q6%jrINq#Q{hjhC%TR z!=ShZu|YHpgW?>7Vet;5L2(blp!^QQpg0F%P@Kas$UYDT<$Dm`^A4lVKV7)x)2hNg zPHM&-wanVokZbX%Bl#~V?qL|b7Wd9s)N%lp20%0@4IpDs8USHzX#kWKK=BX4pm>MT zAT|tx;vU2X(J%~(|9cnU@ei6?0M8A9<^O@l<>hS4B42!rAsgkkXxqCxQv!nor7%`foS@%eNriV?aZ2{2S{{M$p5aj?U-a+{uMuXU}GysZwWK1X>U`qp__=jOo9D~@O z-ooP_G*1Aom%wuW{{Mge6Q#We8gm8D&4S_@gh6o(!=U&@W`p=J42o|M2E{ir2E{oH zgW?^ALGcgD?=TF?^B{cj^Z!f9+fd^ERP?%kn~N4V(IU>MZRXLwvgNS+52HbK?|)Fg z3seWdFev^(7!?07j4d7DO9RMd0xT`SXi&Vv@SorRL32Ye_k5m`^Z);;E#SF*(0U9| zz6W7&e-IYG*y0`**Dx9s-!P0E=P))b-a#~Syo2H%gpuPOl<#kUgOBlm+yldV%2qC? zc0AG2ytDmf2Vh|hqrqtay&M3=KM2F(A4J2_0Ek8|3qWj8S^&j4ItIl#41?kv#s<+K zJ_tX)j&=PPEQ~?xv;N=siaIwBi)R=Oifa%XM8hyFu90cv_{JCSp!f&nc@Vzz1#8?N zEL(SgmT^TZv#(AnzY2?c7!9rqK z#8&42KVH7+Dy`y&*5>|SwTk)Hq>_iQu!hm#HsR$1sOnL>?c2 z#Xl_WVKk^L0AW}<0L4Fu4WeNf6yG2=hz4O$T!Uy32C?yBP@LkzptuFeA=4l>a$LjM zu(*cNptwfIpg0F%P@ID>sJ@^79HWm1j{EXWSBHAsBc}^&?Ez4E@E$^a80SJTQ9v#Ed0Vu9P7{mwBAPkC6bQ&av zjA8K(qhWCiigyr(@zH5me1pVcY!D5KZ)6OLYjg~XcMt}x`=0a|Yk3bE+ZihTdwlUr zj2vj35Phr|lm-?G%NeZW`J}`rxoW|4$7t&ZK=BX5ptaxsL2G?M=>UXb@eiXx zX#yF8;vB>W(bzC7Er8@eY*73m$1gG)B!`SaaSY>w*dPpwXBZ7)gD@!G&wc*?vFR%M z7%rR-n!g`xbGYQjA*K32Ye+!rh|t%P!O{ST2KN(S^GL*`16Ue>(V+N-VPr8-+`-}$ znTCnOXpkI;4Z@%}2GJl4V#6>f-j996*{%oWf6$sO(7K($vUY>gxTB{2&5gOf_a+v- z1I0Hk4BpoT8aH@xA2EIeDhtptD2{PqP&$Cgf#MK3Zb5ux42xTk7&bO2&hLHy|9{@I z|De5spg6{b&lGQcw=#EzFEzt#IGVMmv$*HMguHLK(f~*tbgskyMb(fw9DHd37SA9W zmPSBq7zV{DC~iR*#>Pg2#E>y)z2Mqc|6f&~Ls=t=E$+|cZTY&jcuCiAj4N9DX-`LS zBd&e|C=DQE@O&O<&p4>>06Oaj7T2)40!G8cVKj1_!q}iZjm`$;@ojJZ|LVT?|4!}! zcs-6SzF}gZcKxQpMUAu!qmf|tuC}70JCllEJZz4}7&}5v1ITR9eqhl0-v8@+|Nq~= z6mm8sXp9NemIST)0*yI>_7}eV`Tzfe@BhK`e&;^_{|`FLYx`SpdH%iQ_J7cPFlbL7 zEKUj1G3)=GD&6v8W5L3rkq|fZ^y8Y^RPAGZrR(nZ=YB04QF$Fy#_uUv zwQfQ76m5Ej$w;+pb8|t!*@WfR0O0V3WQ26TJ#Db6adb7Vj?9Kf35VTIUCFbAh*!BO;q-^|q zHfzhTQ#qTzpDx_`@l?^4S4T=WUfEl^YTd?yg|*8vr`Zpuxme5)8xE)e-c?47#tWpT^vIy7~kyWY>;)`YFGDe@8&eM z$*pfrr|_#NvUuEZ3}d{R5*#2R!onE%ea5l7OZFcl{H9- z?N=SvY!_Xz-e&IlM(uUgB@>>Q%Fm0Bs7T0*ySSx7slFmxr@UbE6aJj3E``C~eu>H6 zI_tNp%4KI|c5dHtZ0XL>B;T`2&-ZN)d}MixSLl*f;otef*`2CirYraAc0Rjx&80ZB z+vI&lr)hq6PUek>>k*&xVr$PfrDazBJQb~f{DEzQ%R_bV&X z7A<%%WzU~U%2CDae)%~k<-;z|xV(Os-`VZm1@C@K@7B8V^_nsxC)y{rzt)G_Op0}!d`u)nI`g&2)$L_b^FEzdJ zoS`iC?(d>~pKgEe(bbWxDqU3Y!*i?e(aGDwj&e^~c>MNqb(x0uhbDDiyK`{ku4{+d zQbl`j&(~UizvOaw-p-0rhIsib_3IA(1Z}uGe=e+-hfPB%3 zWnFV7h3(b9e^Y$JWSNHdo01GO&q_+kPw?m80tkm1gz=OV{v&1S!%dnauF z%W2*9mEYdho;$F1;XLo}mJRb(-`?_Ueck(s+@HMN;$yFFxy~rMb<$+DFHIi#1q|Dy zio75B_8z^OpSSW}$>r4THLvo#Uw5bPXZt1N@a^@L%N^Cf>Y9)J+oG6$=4G^2QmgG0 z-|bhwnXxD6YvgB%3TX-z!!$!q0`6%#&vDq6WN?2%uS%euS( ziCY_LsxKdtuYV|>{u@Z5ff0;dyDt#Pxa`Di?5f#ocLJBHUh5xc6Tp&-4d3lqaaoTezsBd2_}M zm7w+f-(Q_}*_L}lF?w6h#J9Jr%kl&MeW>`k?3tdFnf1(l-;6B z5m$a6d(;jnpJ+J?HeZ3>(^}PeU@AIc_ z+GLcOb;)Nl%g^S=rPiO!?uUh1ewn5Jzs@iGPUJMNP1UPj7BkGv*q&WiSD&~i^N4O~ zXW{(2ak`ar1$a~6-rv9fjd|&WGcxL%w)cJ7dCs^=V==!`-Xj5~j6Y_%m0ed-);zrY zK#<9!`0|2@;vWMVf*F>aYL;~RDirGhRn4a)@nS?yc|9AS=v@Y%c zkHzPo`!_|IJM~Sk)-M?c_Nb@-en$(hUsv<-+^ZWuK5Jz~%L>13U}{&@*Y{8JkyUi} z@s`><_fT~6^ArBfTeEcfj`8j?tvC`Z^|a&t@@xi^yc5yQ?st}6d?D%7R@iocwP~*6 zg6El1=Mp~Oi8?Q7VzQ$Ah1vtdq}2Uuzt=vSAgte2YqiXKcCA1tb1k33sP%^_^?#YB#Tm+Uj+h!|A$Wy~m!a+SjYJ z_kCGi{O;ARX}0m3&NH@b`S|p@y~)0m4^P~$z0sJtP$zcX@`cXrrxsr3etKc=xnRLo_Av9x*g3w{d<;Doa@{kyqNNI-q*{sYI@j>z!c4}`%E?-Hw>U5P z!#a^)eBG3@v&|>pn!3R>z2vcVw)QE%{g1ZKkGv_$TD{AMeb<$FajgGdA3pW3{_mHg z_upnnmV1`p+c(>6YlxqH#Gd1&CKfFW*0(ONuxv8+DRTS2)Nb|VSKBU$>xyeu@42(vl_TU1qsl$MHF6uCZu?wc zbZPqUc@jUgdwgFUuX70wkNf}N=FjHu`}eLs|H<&|eAC)BbBxrBS?$+&Sw6Zf*z)mW zXM>!`_Hzt2pm1h&yv4{O*jUVad6}d;M?!v*Rp-~gOO-eH9XNiVW%2IBxhHP9XQ!N; zq#C==_JCZ|)l&JmnxDGQ?N8*`y;7Y0Mmd&$dhP4RiK>UyY&Y#Iy3m+qFn8T#7bQjZ zGZMPXim-@U1ha*Zv1oIL&dv-5j)YOnsibLY;Y4|U2t?(zs%!x7o#7y$Tb{QHT<`K$?iRlpBybteC4iC@o!$9X!PY%;PMBT8u?kJ@?Xtz z`pMJyi&sn1bl0qs!w;XiM?HDF{re*pd*OcQai7=hd70c~gIJ2-t1n zWBC5-|KHQ$^3lQbaMXlR(?CFxTAp0to~V}(2bfsLQ6{?$hPY8ck4uK zSa8{xY45*l&jPRd&-=VM+3)X)b-X339Ur7Odycp3@OD;Z{4irV8+&K*#GrYKUkzB~Ggy{s`qxC9DB4l-Xs;wg731d(g&aFG z!vnS6O6l=VTj8RgO_-y_WHBZgsDYA`<>Wejhvel|T{9A2a*)L#Ram(>Ze@|{) z^zJt&PS+LxyHpnO-NI;gV*l<98@PY{`YykJky`n&vvX~G7Vp>*an3SrgN(`2voF?O zytH6~{v*AJ!%Jlj_kGx9lXvUve7<(YAClV>?W?7Im6u#JZZUYw)A*X@};Z1mb1-ekn!5IwBT&G{=cV@+smACwx_!m*QqF2KCOS- zx%H~De@^bpAKAMiZrT@pi}?9OQHgcePxCVwk)5)pb)R-8nz@y|STZr#{xVOe{sT7! zg`mZnnfoS~NM(x4G@8~)`#(Qy(~w}7nPl|HN<`jLwfXHa>G#=F&F@t>-_~}S=x;Fd zK(52*6{qS!(O~~EaHr}I4~vG?>;B)it87l&yJMk^fBb^C7CmydQFiq;PHwNYw>!3- z3^YISVq&-K*XE+!e!ssHQs-3eY?E2C-&W?+`RBhRuQ3Fz{`B@_Wl8p$umiWETP7E{ z7teRzuxsV{i%(D8R=P0pq3ROV^7WIqW`F&+KzM?+)3!Bh{(o4p{@<_7?@OI>wx`^E zEPLRpxlK`~@4ve3WzXLHX=-A!{QM&EUR>>#tO*~P-%Blh`qZaUF@xdyi&(3Q72<^r zzQ%n991&sG9}N9J?EbigdBLVDNeRp6Fs8;HUV70;Wj<%DbDJ_l!II^M+s&0dyk_p# z>29}k4~_5N zzGU^)damV6_Qn6E`+J^v&~UuU#Hw!}PiBbO8I2w#hwToJmj_NhRx^W-Yo>Tc&uxK< zSMD|(4*CV|wM*6tcXS1d+4Qidvdl5`=vO_WdErB?F;n>R)u%6L<_E;x^S$jNc7I#k zwKW$r9oZSx1*h^yl^<^1Z}E7ytjNu`H|FT=ygk)^%Yp0vzWlUbvvzJlXW1vd_{SI7 zr=Qx{zI|m0?=+F@1=n6Q@tnJ)`2N#{AI(l5g5?UuBkW$4IDZm8zlHbnTcri6H!5ZX zEAYQGQ{h$Qy>_gz_`qD=hB*&8R;+IR6el+2V)osN^(S7h-}ml`%)BdBd28kOz1{Y? zzUHaz2BO;HU2)2q!o3p3*qI%n@o=ax}XIZVeDD2LhBBjVX zZHvZZ?n|DrSCTJx1j{>LlHApIHLZ#3HVbzAG+I(K-Pxj5VL@P1TJO!7k_9gO zr7Y|Aob2Aj_Vj7!)_^BhtHsJ+Em<_}Vrc*T-;W>reSLY0S*Usn^8v5_rTeRXf4%yY zxwPBwc*2<(hDAp;3*TSxky<;I$2cfkVM=kKNsyH47bCyDCN3A&*j!?GP+!1jbv zr}?bUm}Ne1QcPpWlM9xp-^g4ci6yW>4SJ$H1}tPngP?1$W)2yz^0d zYcpedo5h=wkMFI^y#?fB{~uGYFL~lveMz{<_88-XE%WBg`Fk&N_u_)4wyzB^1V8i{*9 z{!)&Z{F){4HLHoAM#1C0O9Ac=J{U@#;9nH?d)aT7xY^e~MmOCF)YZ1j(3-t*`5db) z?iLODb)Ww&WNw%LaPC-F-`h8br~Kz$&Ldh|c;5WiLjN6XY%;u8+73i_EMk4RWm8AF z%RHki?Iw@rvOZ(o$-^#?wt#Wwg&&?tRu?39Y;M{R&8*SPyrChxq@dBw_xQsPPN5q6 zFBQZ++_T%d&U=D+jG2CZjLqY0^Y}Y!4|4^qi{*`dVYhqNiGP3A@BDYM^DOgn-8(@O z7r*}Y*4fjuv*zoYMx&&JWgmlQxw$%TRIC(W@=ti~KI_wxn+879we#J}q-?%UV%vK~ zd>Z>#BbNES&o2qYGB0)NX4gC77%^AG)x+kHNkF>PLcwW=ALZORad?K|+U)`v4-!01 zM$S}-%Tb+I{`&X5a{e{(CPhT5WsM`qy1!qo5KF7+mHF#Nwd9N zx^ZIK=^y*bzFaRo{@bf|?Y5xr&h=R@)egG5w!Lg;W0O$~vann_*X`7VnMS=AS{a@@ zurq{BJ1u(JBl_+N?{7hmS=R9ITGg)SS9&TVX~lG^qAJKHLVU*m)uQ*l^RD@~!D7yV zu4%5q<344!wPm4b&x0{uh6s$_* z>b?{Zd$|0v+r4T1Pt8;QTRBdUlQL`RDg4cIYx#xq>7J5CtJX)_SA6-FZ?&&lU^}yS zba>zG*y}6-M|aC6Y?bG(lQsRPIoa!}{rPhy{|pZEuNJsnc`*5@;PdmRb{kDg`zh)E zf{FLeRaTqKyo}O6vGEgrUW`qZJeFT65x=);tIglXKR109Ji0-L=j0KAz3sLgg)P?% zCzy+Fn&ZKCY~}e=kus;84x2wc^y2({QQz|{H78OI?d?7ARqcyg(f@3>lS@1&GpQH_ z@=B+^m@?;5`2}_3m3!qE$9LWSyCCnw&Cl1Te4l@B;w1SE`73LFK6xTun$zB_^GlG2 zZ?S&HlG_$PW~j+pG-%I1qV|8%bj44K_D&3$C#U?^&-gRZylcJWoI-}sqZK2qv$S;-o&9wK!) z@Kf0pHTy47lGaDrbv@WNC4QQ~I3cgHb92d&_{-IQ)t|RX+gB_~c(-_cwe}Oa{_KKd zGcrQt;!hp8R28{>j_3r3JRdGYg4Eo9Z}!LjUVq%`z^&C0cb>fpZ7t?*e!Dk2OReVQQTC<&zav)8S#!JbPUdD) zn^PM%@7!}>_YQ^17o3ll{xgs~HSzq}?ut*Y7j^X?>1G++{}J2z=ElPG9P5U~r~0iI z1gQ0jNG^Xe>$~f{+QOMRx0gvjlVy1S&|d0&g7c&jA(KS{+f1a~c$=3MF6Yes+LwK< zfuXKny}|skoqP{tjhvOo`cIF_UQA85+7`Yb@yIs&cYe3qdgZ^Y+Hn2f!EW2vuhnZ~ zxo@nyeCR~K^3KF5CV4RuJQwG_``o0fpW4wZ^UJ6D(*;(^PtkXKjF;qPUongSq{uR_ zhUc!0j(x^?{cCU6<>zn7(675PC+KJY=Hk@(hE)wK>q0H^^=-v+M>`IFnbP3-r`h+OVK!OvmfytZf9!#6&-Lf7a9jU<2aAMJ-A9{=oZ-(;e|UJ< z)2n^<^Q+6|@18vW`>h0}bJwj_{_@i72=;Y12Qo z@rkTg&bVgqX0y`ocf0jfot<-c-)MNdcwh1D@c(6*8o~NXETP`|TJt#gJ|Fn~N49dQ z`0Bsn^B3^0f<#M6yO-jD_fm2{72h{$`&;o|Tqd~vspGAw{HN?Y`mYOx zsC{7Gux#TZo#KzLHXlD?{K?l#<^Q976~`i%iakC0G35a3^#vIwCW}n=N0;YWon0Y# zhV6o~@A?$mjsIqBOOo3^*HeN2^0jH#b+@}0pL+6G(f4cbewX~&Rv$_h?A)kowx#aQ zTJ!j?;&ZLPw&vnxT^Rd@dHLIr2g`Xf!uT>9 zPBT|NXsVbjlxwtZ&Dm~~?#))YGF3Cv?wn!_U%&hhi)@`?s>lk@4<{E)US9Y2i*TCW zlKl_3<(#zqk_&n7Khm5eH*uys=auYg<;N>0lui*VOg-Q(X)y7efQGaGabDS^78Bdv z3msM`YS&5VyvTm*7+jj2RP*nNc=hkcj=`#LV=tXs9{>IH^?7ej7{=Y>v%mXf@?zd6 zuWzhWDpuLf#xGTzpLbpn+%1L zY^+RQ0;b!aUJ~K(e#=vTqnZ2XI7&>Be!7`PuwZ z<|ihwulsGDweGr;gXs6ZO?7YEj_=#FtZIqfk#4p(Z;yYAlev-kTbHNvSc`zkzZDbz zm@Sb>)m^XcFDE^zUGa&ed&cFHAy z*XF10ca~i?ZV=J$e)6&@Zh4MQd%yl%54R>6Rx|FiJF}V=yx+>+xz$yE|J!W-x}~=J zVqME;Wrd3#p09uI?RxDS-#wqhfD{L_!6ETQdzla-A!UR>T5&;Bq$Agpg` zQ7Nhacx!pNnsOdN7-npQmwuuK(_!+)NwA zieJ^-DW~r%PC0ZqT;W{&viBaJZ(S7s`LpNr)a7#7XBd_DtnCiz+#+~+V@k{3IjOFN zoyCt{&h+(SeXTmxhi#R*JAaq$m#)36wFX=T+y-0f-uUkSe`;^=;vZ$AXG0FJ(`vGh z50S9Db#Y?x?~h*k_g*ny*pcbMRTRC;irjVXJxd0M!Ld`UZ{?@AzW=!Q%Y)aS z?(u6a72PhiGTT4BWy^1GN#oC4+_tjoa-uf6F;%Tz+ijx#Q{a(%`-5qro;u!9W-9fc zDigi@=jpM^R5||kXPdPuN_a81`ra$j*O|Yp+ga}T_JF_5zI90t)_n77P5&!@c~?67 z2F0Gv%omPx+>UIy+W(L9uw%y4Llv=dpI9GyI&&n%X(&HF5PYpo$GGqT^M*A&&f1$$NA<+)s0crD@Q-A@{u)y1dnzmyw!dDqnV zc(zH6*0=5}FPLwj9rfuIJNte6@8@=3{8)A=qRhw?blu@N26+wUuBRvH0kNnPyIVZKYhC7q`9xUcTeekqsYGxZ}FrvZv6ZG z{{6$@;pzK~1LETJZpY_On#j&SWydr2$4eJh9DDOkZ;Mu)X7ZOFS&gHCeG88}*F8PS zaA}R*5z(5j(+?T?_cQ*CuJkpEZ^>M+MybXs`04UKCE1QFvE#RGy%pl7n*ThKY`5{F z{Q7(5_H&Qx_3iN8a=NS8zreu~XpcY*%d|MxvEb-u8vZsGishn{af z_Ogz#e44}E$H#gnXWrMDXn34|0;6=ZyQM|j+kBH#GZtUrTq2fq+0Df{u=U=(>Lq)< z()n@~U$Z1e?dx5`Wg>WqE%WiQlK8KS?Ti^V9SQE&>^^IMHht=nlouK?^As=tKE3OD z*_Q81A4Pb+J208w?!yXuyRXNb=l(96sp~EFc*UkTM$nkvrHTF}kH5r~U*tdbRBFb0 z$KY@dnL0gtZ3fxnQj1Tgmj;QabS}5~y7SYK=*ZdfFZYO@GUl~<6eee3UVmxh0qp0YN*`X;-XJ?zAJ|v$rN$hSt!+{fd z^#_*nx}Sc}=&X_>bCRLbzpeg2e(H_x;Kk1GumojHx>;-FuqAhnLUH5$Y#eV+YC5w%BSK6O@YhRW& zd*UI9J>Qa*XEI&ZXxLP^L^Jv08y&rKvW1SzFHX9CO6Yja?aAu)>sb|3H0Jkg{mZ)l z?EFt0KeHcS6Rs=K{V?NiQA+JohRE$J4^7&$r#2>~2F-&_u&u zY!_$!j5fAA+Ize42s?A?i9jn}g9&CeF_Zt<9QKTzpC97?G|^@63V%6?4~}vRrzXzY zHI*kJRyFvSc+H$=x9`orboAGkPYWiTZMRs#H1B7o%xgyGFLN79vrCtnG9_KLRPML^ z^ux7(-@onU$~VfmPX0PHchbVyoMCRC+27aiHVg4ERaY&zU*9+H0e6D(#T_xtinb@; z{^w@i?DlN=wxtJ{6FBBxIXz)6_d?cZj4@O8Ox<`r>FL44duHl8nftFk-J8sO;c9xv zoexVl7JXO~^z!=p`KKSra+f`5WIuJ%{M^Ki@%@#`^=y-sx~?$FSKqB`?B734C-TwU zP1(JZl~tXj`7gbF&A9Rx{}e{v(sx&O`=_r;zis7x`R41F94oY^s{fdgAH`TcZ}EKpmUb1>!Y=iUDV1dC7Z^S+tc*|+CWcmCJf*Pjok1O#4^2(XZv zrmG=s&BbmhCCz*CRHW6H3GIciwiz8!e6zyl^!ZH&OZ1+du6dE;@!pRkc6MoQ!R&jj zeOEml*X3oMmcC}$d-Z+CpV#X7Ucr;=Z!4N9%q_T^qd9BcuY`yfiG2%~xtC73(vgs3 zm&`Rmd9U)Gm*reNjcrywpA7tUg-_28H2XB;^~nc;AD6BDW%jK9)_<|Y{EE^WeoX~0 ztwr_r|6BO+YUj)PtekH@|MeKnss5vJGkX5cOA-efEPC23TGmaRz*Z+Q=X#w~)SljE zej5|NC5#Ug=S!e<$q0d4$l_(w4IT6%C8zl zp)k9plfRz6FuCz#ve|>uo)8WvFS$J>HV(q?j|SIY`V~>e``GHB)Ew)WQ}=rJiJr*U zy!AhsUH*4{|Jiy6|I{0%2ToqlJGuA&1JC|zSC&stV>;dN^2$W3SuB+W*8^56+||%z z`H_*s!T8{#)C}I~F6k2WTyyy{E@Zkm9C?=iI3e|42m93fPub)1TOE(TbeqwC{-lN+ zpJHTT@hk5=n#o*7n|dzVI0th%%FbHinC5fwa7v^9*P`3^;%u4EOENt5jdM_xkB@t! zuW2`>J@r$_k`K)NdH=%}tX!sQx9R^4_nBYUaRi5M{=C`le?Nb1UEI4@FVA+KT{tt@ z@zv+!>X#O4NM>H}xtt-f%gyUCyM4+*_x2`>fvju|X9oa^w3ZA^#XcYB5 z=C)PK$B5>#)*A=J@_G5bC@`zqKfURA$K>ZBr%%yVr*jHBn#=tgYS+tYMJz8&JUI9C zq}#2rOuT1~X3sh{MQvlB0<*``%g3f2+4h%puF;W2(+_hlX?Xj7b-lB{w8iHT%ljJq zwtjN^W-?@G&0fEK?dJ6JY}@%~CGiTK{~5q{>(@LVz4hI`E4B7*{rc}(Y?1XoZ=+s+ zyFcr`OADWzb#dCAg>%!RKbC3c-BYsUWxi_gC@3aIXZrjojh)Xn8uQ*XHHvr63cYQT zdV%SPams3zrJb7(lkqJ)csI)~)jEo*W{#I`2&N@>gp; zx9|UTqIurExj)jEpJ%Wu{r|Uh^=Geh#p^fPsmI@wjnX*nUZ>Gpx%%mxbG}@0V@BSKSME|qS6WSart=*-6)ks4Q6->F@${op6X&O<-FoJF=bap%ja$m6 zCnqJR8~(qa@0ENbR<4()?Z}Rc0v4wxizjk1<+FP%zt=FYuPhA>n%|>Nhj|?B)`p^C1uek{ z9?x2G@StP`UtdsK-6tRAL#WCh5mn#F}wYF3oi~edbm9hQG$)A6t zQc`>?Y`09i{#@k|bAD;aw~9&AZ$6e(Y(8CQZeL!y=!J3MOjRMypU2i12FahFcxuiJ zlVgFIC&M-QSxKoq)Ek0cOagw{Xr+K=~1NMevHj`&OiGQ{A zXY{XmLdR|2&slu;=e`q%TDh0j`KqrsO06(hVwP-Vb>W|;T+%`J_JyfZf)-*?b1oYmz!eDqAzS;oN#2>jr3>n-*#Ww zW8P(4y=Cqz1}!f0|4G5Ilk3;7DAv8vyRCnn`oS4Ozm_|GpLhMq7O!BQ*{oZFn6;#} z))Zd!ketL8`Dji~?WYBe(bkWEIGZuWVZc}Zz&RWjr%%RyfzmrSaM_4ZX@wZ z-G2Q(vuEc85=t@;Gt1d9v~?`2u(5melEWtLZ*rCG?HMZiEOYIJR(KyiV6^1N27V>A zvsquVeppph`ZHc&ben$S#o|)wRFRz3XIH;f-`|mR((G)A>$cF}UlVUXKGxJY{l~_C zBInlrc3XMR#8Tk$-PEmB58`Y6x=mg?c?B#MWLGYAPrQ)PViKg@y~Xd<#*%RLuYu|n zvCkP~Ui{c;_4>=--)$dmD!7zKACPYRJ>Noi@t+%NZ>;@vnw1$C53^qQVIoyBU-ro3 z*_;mZcG;x;JuGN9HBH*^%Y|v}pH^O2E`KIYK6_%zx)0A2rpnh$NpH8To>gwPc)9fx z|CfDD-eu3k9$u*aIN?*NWbM8Aa=#DW`q6ME-PP@J-S4;R)tQ|cJ|FznI3Jn)_!Y~R zw8vFizIEK^m^r@1Pubpk(xO*Vv2YoOU9+nGi?HRUS&v>unC1A_RaGBln;5$5N9aQ4 z_}bdN3(D9_T2{rYTqyT zfBCO!?W_%AGS~OKY!uVnd+dH%RY050|I)QO@%!%V-t*^A%|rh8I#YObzsW6s_>DktK69&)bxo%ORIlR!iBuY3SQ?cJb1ku8(wmt&*=E z?0mYQ?v!(K;k+K3oLN)$ekcp7zi|KTRo3(Mf6MIyE|oey$$4Bhi}^;F%@eJanLN7o z@A~)I`R)Iat99#ItkcJ;=%sHP#Y2UHR_jh(-lwo!H2to6>lz*7q{EZkoLT3Zd}6a? z@n+tyy}4-d3GQ9`b)J#k-xWP=-o4Z~pz%Uv%^9xQ9!CrL4#ic!RXu*T>$E33o535W zkm99MbNl{$yz+!s{`#H&PimhW-M{ahw&*n`x2f_9mdv*iTrcE zKV{>QPtXdK^^DgHbxmB;8z?M}gm3~{3^j!kZQd2X?@ev`%OuNc;UnX>>($%RPX{l*UXoQ8!zK00`=3Ovyw3be*#*9{ zuh$(Ays+?t@`Zq4n|00KE7saP3E3B#@A^3F2WM?iYxEV98-i*_Ur#;Ry*k0MZ_1kd z37o5EIE#OF)D}SnD(Wm>*-bTdT&G@s=Uc2W(y~Sq^ z$@ah_Q#h`k`nIs;d4_4?syoW6S2&+&72gTS*mI$?j4{AI^T17uODw0m`!@P4|5|Rh zI{0^JYRXO3hg()I{bVm`ty#5BN)W4+JQAZy_3?f3oh%bj&W$J9@pV_PzHdHKx<)z$xhGoC%3miNUWC*=Pp z&iWsF?)~|y^W_K6gU$87j;Fpic{W$NRMI%@%!JSGzn1?uDfq?Q_wP#cDrMdsGorF5 zD;cOB=F`3>R$=mBuKaDLl7>RXW4pg`-R)h%GXUde;28BIzIY!t&DMU*E^AKDPhiu_WySt z>~_1O)GK9p%Q}W7hWXpssneGJ-Lqbze5u|H+gC-0+juwqx!D`EDRapKZg-nSJT`IF zm+oz;tz}SV<(=#2{7tl9{pjsgEi>er=Ufo|XJN%r+IUjRD4ijIN$%Ox)|D=S>v%L) zPyX~ZdXG-izav`GT<0v__IxcrSAAt)px}{Px-tFh8Lx=(?+aU%o0~fA`=^t;9!+K1 z;&|$2RpPp9lJEY0eEfnx%!)&Qoz2Or>(LCc-Uog;?A!Hchn~ozz(w3|CGBqu6n)>P z@acT`HMe`4BmYV~bmNiMNp623UjFspmXP@Ex)=Y({wVOY-|Oy{!RXJN_4;do=ii4f z9a_(|ZJf~2U$N$T!Q*RDH}}<6|JwU|qO$v`<^7waHi;kih+lVo_phgGHzghAn*Xp& zMSKtc1^(v@OBBlWCuUw=cGCL&3#HD+t>;5eG$?!9`1JJ^8n2gE`E7PyOowCJi?54i zbg%we;*uWo^|k9N^DEqbifxUDFDz!*p1A&8Z7i3#$f-o}x7w=hn%lq0-sfT9x}kf) zGOY;`{Jb&oNR(Yyt36*{Vq@wsw6*!V>ytgvUvq2jHJ#P&Q__qYSqWIL&z2tbSnM<>g&T zt_ln1DIeFlS*6?<_-@%s{`=Q|AHDB-FE%P|hwxcE$a_ew*}zRiD6#|JL|>@>CJ!$I~;_sfz`BM!*g*X{B7c_%@0&ZFsT zF0sB}UjJr4ufyEARiAV2CoPEAvbf6RzSAY&RqWN<8@E^QalM{!&g{*>b~zPg{ZMJs z;=5an8_q6DUzT&-^io*rkrn4{f8X=y=Q}JY-~rKB>+tISq^LdFN-&zF#KWSyxftZ2l->PcOfeiHD#4p8e@RRI3}p6p{37Pwt9^Q(R14D6z@@qakOl2wD=vepbr<(uLN@1OK_p8P@XpZk$-D zY9IPeF8brkK=uuq`~SZb+W22`{`y(LQ`Wd&;cRs4naewwZhTMPbbouBn!jccn-x<&+XSHx?>=9(Ji7O6 z+O3})*D7u%UTBQjz}F<()z{$HVl-jCNkjs3V)v>9*=@?-OS-2`@%GI0dqS0;wrbtn<|{64#bNMkCA-fQNA(wK zbMkJydNA4K@bf=2*TwITlQQdl`6aTYPWNPpQ+k53o{;6op2$!4)^9uAE}z!7N;`br zlpp+$jXu|xBpzbS{}^c9z$a{FkUjsyGWJ`F9FE7lXYnRpnZT|f$8u%rBW;_aNhh3V zH(S`o)D-(Z3=aSIs%diG&s%pF`rK9cGJ`ooOR{FG3yLudV%j z@l^b!+YOs*SFBUtvbUK1Wz(Z__LC>t`6un<-#c+*LdV^^0}UU?*_> zXXTmdHR)EoJR)v$-dSiJ=HvQkVyoKh=N=PO`$^wgD=19-(uMjj7M-?#R=GLLv~B7= z^Rj*`+wOkm3*DWvh4;0qmLDsW41djDQ<~1?a z+f#ho1X-p^ul^pfR=y~vue@IN$mQ5OKO(E*_C02}rgLKrpM(756v?(Znnh z-+1nU)#vvps-Kyu+dBE-pRdQC|I7#}(Q3%<*`w~tF)RDUo1R3!1HrR?G0U>NkPOjC zKHfihlc;v*Sq}D`JWB?%r2_9%jh0xo6|kT0^W1v)Yu?K>-qW{>)fsiY{c`j7DaNY* z{s*RB{L#4iSpSx-mKMApqMcjTd=H*=bn`I<{<(2>9vThu#uIg4S?>G&p?K1Ym&<={ z@$K5MtM~DV#6Ju#w(gpI z;IT5AckjSu;qWPov)SbBp3i4YNPj#<*sWDhp=_5-#`TcfVm((U79Y`ww5;Fj?>pJV zCk>`-bLR&$~Vf>qBG|=du@V-Xz99Yr4CZi`0TgPxIG(S=3nn zYWCyL@zu3o|L^_vV|L@0JcZj;)#g)nEL!`wJx1@BjXBSUOQ$QVw2$q2sB_@c=YR5U z*|N+P3hAjYjy4pRMnzh$W|(*G2m9;fO*=f|kDSz=?0GwRQoOO}Z38{=IX1V9>$a%N z*w5Xso1Whho)v3v5T3s|KK}Z?e3a>M zG~0^f)myh~3~bYyg!UeDzBga_^Ss)-#cjPmrBmL^zE1fdB>QuID1YIhBPol64wNZ8 zuniC(Wrhkub{_m7L^O{6uZW&v{FD2{OGi%IBWSLWS`g@z>R-bx)F8;y7>|*Ye zjd`9oR==~gti7UGwCLUuhN{&MlMCO!|6Ee|eroSqyHkg)jxF5mc1n`{_1}tTRuP|^ zs(-w{QoD>p?sVjhk7LU4SVemq`2lcx> z&8J)BFUWl#t~B3DF7-(5qG`U|H)qdj*jKCNzi;8O|Bu2rf90637grSf>St3i;XB*I zb#+T`+@89e?=(}HjNgQnVpsoGWQjFA|Jk5?UP57Yeui<~gKc?twOrq4JU$=L@6XJB zkk!nl^2SO5A$CbCzP1CAyG-kDGrn}`lhqe`$gpIQ-N*B*>x<`Q?G3MwY+hr{pegs` z=!&cLB`1=<)CqiLS@3Xk+~H*}pCtcPD(RhXwKh&)_&NV)re9M{Xa3&!G3exxrYDyh zpM@NbT>fsw?Ug54PrKyRFS>MFPG+j%y`}bVI~0pvIqps0&t%4v7<+V|X(z7}Z`JH` z;vI|DtvtLX6)i>|+AO>R|Bm2!LEoIXummZ5ioOPSGJwALnr(0QYDY&73{JGj4J~qLPYzwtPMEG!IZ1m zwDj?k&-KOUZ%p0ls~RZe{`%s5y$u2qfA2~%WM&9oQLK~r`S!*6U8%br+luny%>M3? z61}Itz2S0(fit7Q{*jgy#n)9${(g{CZWDKmMn2?A|kSDPP4FZ2jM``s=T)*P0mL=g2RA zrEDThzw&t>@dfIUF{_6ga)D~lIy+spmni>F?a2f_|@;lYZtv% z-a0Yb)zH~8WBf1CFoH_D1AO6Hnt>a2bL@<+A3JM8V3-!6Z?_S(P6uMRNI^qUu<6>k-2|8ef$ zy(Wx1Q`xWjr$4HYzOe6F_e6=~U8T?dHu+6=lP-GDp*WK-VQ-qxhPHQ7oBEeAnZ%s9 zW!5xt^W_wYnpMKg`A=u=x8s#Cty?ptc1P2Uo`MYThn`(;=JF+Yd)EYAnfuc&dGh!A zHOdl7z4ODf+_SwG`^@SWcj5j!_*zTn4{Q>%@aGbn$xoBH6HXN`ZG_w~*{&)%Ef z`~5!gXTru8#p-;Y_RW$xb~*ZE1iOS$ipR0ldraTI7VfsR4ah3vGkI1qSLx;H0J|HD zY8&RVv1GsS2)>v8zSi2v+DcL@OSf$o!`YB#nHn2!qCC_(f06Xza~G)>R%+d zh~e4=#pXVy21R3@O;VQ*I`1@i{9WXw{O!n-*2NMl8xw21eGhKFe#gpc!VT7xYk7>X zxVZE#{R!SWB~oZkmbLTi`HQt=HC{7x*Rx!@^fJVHL7d^&?GCj^Zf@Ji-L)WC-|5An zztgzq81ATw-Iueh@YnhCaycS<6vf$+kM&H{_P=`AebI0C85QdfeV@N5?wfA?#BFO= zT)CUK@@lxfrnRO?#@yT0AzR-X$h1yOo}j#7V%aj65}qsVMGO}hH|pQ8l7Db~3P+CW zqXkzY)~x)g^z@J2josYeKJ8wreJ!8iov%}4-2L5oPZvGh%wVu*%SX+*6&fYI6E`!w zV&ea?mZzXB%yHK7<&}==Wyg1J*sE!5KV5zH%X)pWpWo!o+obI0T-m8UE%9@cn1ed;f_^p#)p**<-FbT@B(aKCDna-qCqjon~o3$|4=3W>E&0doD#mQc+vfchrzA8YH4$W)fI8Z zWBm4h>JB!tnkj1^MlWZI^WQFIU&3bDAiL_$GxxtY`3m=3e?RX^aPfT|?oivRFBv~? zNpeaWt4vAVt|H>ovNo}NshJDc2CIJM{fGR-l;Wp5OT@%F{6FK^ACSQAB-560YMNQZ zgBYnFjE;W}EbqDH&Tmxris8TAtq0!InT0u+S0&G!EyZMc+db_pV@{Spt+chwn|JmF zm2ES)GM7y0GphS=;KxgswHuesy0m?IgO%VUzZlO%yTvaHLQUN|&&+h3rN}L~XWj3| z``hgA9X9@J+%Kt{E_>}-{iX@I>jN8G9c(6TKHhRr^2+*a!gXrj0}L+)YF#Q zFpEh^naPI>Gfw(1e^{D!m4AWqh9b|d`;`;U`EkacDc)sw?I(My(cvR~zdWK(PvJOj z@VlUoFTn2W?%(Ot%*|Y1&5E5e=j(-^k;>0s$WIeZHTd*dkI&+Y;=ycYHIpTNVqJ<6 z8tsoy#2jc;ICFk!s`B5O$gO|Qzg_J-|1H0qO~k(Hj~SM~Kb-kDt@lrLH{Tw~jD?oh zRL-t0iwL>)_~~h;YZ1$q-0RsS%i`waT;`qlal*m=J_Zvj&N8JEvqyrP9#7)?Yr^)) zH|O}i)l!f9V@p5#bd-s|NiB~I_e;FEGVqXv!{&(g+$*fT=bvt8%jQ1%i)p|0+wE2n z?MDj34sKJt*VZm}JH)7O@$$o`W}Lihd1h;>()9nobt4Ua)UMS26Y#rrf63^Tr-2UzPYP9rMu4dfMMbEwB);<4VeZS;Du;{{#8#OQdOgLha zGOc5-Qiq$I_Th7Vd_Fc#uNr%LmFqvftYf&wAG$knf5amZ@#|Ad!txkr3IA+&zw@t} zUH;O;kF(ZJyc|);xJ`C~n*F11_v9;9Uw*~Bp4EG?%puKR7cSkc3=I!g@BVV}gU?-= zX}SlrkI%2pcK^j~QS-LK<88H3+HHrI;_~|Qtt(q(?6spUzt!3PZF}xjo42!PUG&oR zFU?fA?@TssI6B){iXYQ9KYXw#b=Vbf%+`2> z?TI*kB#M`3kk!SJC4_{MLUsjYWy}#Nu=jWA44v*XK zot&(G`mwry_+$Raj#qxq_Qq_hu!!5fO?Pp2$veBhI&sctPoFm4nz*s|z#;>ddr~`Z z7p{@9)+yv!%TsE&#pJ{7nu&7awn|T~c`iBY=<0sp>^5a1NgL}~QOfFPs;z%B$2PZK zEaE+IDdEMBorkM**1^sKXxOF9E8ZY~`+(Kt1>K83H~3jhInOeuZ*$extb-@+%Fb9F zea3#Z`;J!G!?jN)x}QpJ@1M{ZIkUNR`I6lpWg*X&$>*o5#nqoN)44fk2OlZCSiN3=Qz22Ol3dl&bkCtKzo^O3tE{JN|E zzr*GV{kcLL&b3s;De%f~Dp0$&@XV}l#WjMto=Uyl}%=l5PS0y$J=}!GR_5?jg{UVW}e8j zntz3Yq_($Z%Zd4)b{00ib!psZA(L4hxM|5nyBY6FW}J9ko-jpVA9uUegAU#}D<7$S zQ_Hzip1xqwId@9w-K&(i1%Z539~KM$SU>TWUxi8v!}=BXmUlPKZM1*s^!dNt*RJ;` zv`;%~+03)3 zlxO-0S-GPe>7X)zj=FJ?JDSs z6!hbK7#!qZl2Ck0-mLSFOYeQTqJuRbS(ntyn0va_ei8c>$@(zyf^9|WfwH>=ycb1m zzZ73q%aswgTe`ib%w$7brnPXdDG}e+`M2d~o@ki}k*nVcbB-EkcfStVV<^TS;hrBHIA#9x-C+Sa%S<93RQ`>-v(j2>&07Bt zk+B}dYz|VTw|=pmZ7nX975FV0^W*01)iG1_|C+~s`2EwqxwrmM3+JZ?6O)&=w0`&e zrnT7VmM{@GBHpVsTHYGPa?*D9G zcW&R7YYqYI>rWlxS+Fot>s_7g;;y|H=g+RsS>Dok`Gn$8KWE-+8M^0A-8jclcWFZZ zZ1K_^ilqT{30s&wOk8izTWzP28|Kt>;_c&Cs*S~UPLhVq3mO|auXE(ZX{|3nB<(gVc@ZE zhb;Sr8;iDGw|%jVc|~?6?~aMt+9GKTEVo#k%YXUXyq;NfEg|#7lA9OKG2Cdo!fE%q zW6hl2WZehbI)z!e8(Q{$zc)MZeRPxf-W@iN&l(vdeEV=+`Pi4J$H(0#)O`y7-?(^n zc)rM;XD6Kg_T4+IoN~_mxL4kjRerm)cFAjc-IbT}?fuGo*Sh!N-?f{btvoaJ|D~6c zjo<%WY$a?x!8C0<^Ut0beWeo}mPrq#jOVyzg)sHXPPIB9UDC~RPvnSHv{G(=O`ziD z-bbBFRu*P?9%fw6xOrY-?jAd@3mK93j|8(V-p9R7cFmkpjT6V?=1krAE9bYs|L4x` zCmq>kRVE0YrkKvSaOIBFO6B7s z7gLvfbS|E8FzE|F^Q+{HpG^fz4zG03e?3p}W%bK7PtRZe^z>!2*VFC7UuqUyF^yTy z{PcGIe&1~+9m%`i+a=C=A-!&|(5oxPb?^6mSKe=ZyeXOaO1FKy##-Br>hotBT)CU4 zcjGr5W~LKTkXK%rPpW(!IOQdWjJ95Hu1br&t(W*QZ{b>FN4Yb{pUuDdG)8yk%hFv2 zwU3MQvvy}3wko*#vHjFVRlZHrRpX=fg;~eNoGJ;vw&-H?l1&wzao)EtcZ<#CH+{Z# zQsmS3C(h)CzVg`mY+n4;&*6dwhe}T}zOd{Iz5d_$aAiVu`MIs`TT7R$(B71rZOxzJ zk=(vy-nThyFSjuVU2D4_{iNhe$^ws!ywHR18Y36Ip0(&$nI7NjhxfiNouj^Pa$Bd& z+ZDOq4qGRYe5D z_oa5P`?u5~{@$eT-!Hv?@-<%X@%E>$SK3T9T3WQ0=V;*xwyZD7tQUV@;3*DY%-DN> zscD1sKiMC*zRtM(?8QRvU8|&7-Xtu!Iq_zni$R@yuWY2V72693_r-ILR&NPmce(Q_ zS#r<0nUj{wePF%9AF^a&r{prjxqT(K8B0vurF7TxFRZRTAb8@uiSvWZGt=b17}Tyw zf3?9+K}Y^mU3qWa%9n@FT=(2~F}=KUsd+|-Zq`k$=Ff3c8C_qi?w8?C`N#THLGqgC zdakeg_UCN0yIhiRgu^!CV>jdMx)bTraSqK_l|u~pdJ>s{Hj5GywC63+@Ez$b&HFOpO)u8b;n@J!5iKJ6>qmKQ~NouHZXYU zoA94aPgKl2R-5^F{|`^OI_3J(gx8r>X7@u*dau>~djE8NR(^j>SKf`ngSN^Cmj1q! zzh?5)@B804D>hzV_c`y!j&=98B|C1re<>q2c^Tv7g0(!EC#FO$3}*6BwzpDvbVPmU zB#R@O{Q_18!~^UTe3|!WPH-!+yHv|A(7pZI>q|iq*LtgDS>mKGbF39kxVuqLCqCki z72`U_7R#v$vKhj!WpvKh@84zgIQXoE=QHc$@AgOUy<=Q^i6wG>)ccRx@l%Cgo{wee7GOGe! zZCri$`9zr)A9x=87h9HY8g}%CG5^aQpEt=iyJcF7iX8sn`8dPzucjc=RL$@dDfzFsKul4qx$i=e@WvBCk38NOJm}!Hx+$?JuZf}Jnsmj@IFq_pTf~o< zZLoU#Wb)gSe>S|TzwiBdrcb+bJKxuDtO6UIwzJf~TFYhmFJAlUtkB%emY1r%Eu!SN z&;9!HvQggyE-iVpvoh5;#Z~T|->)Wc`~e zbAB-1See7V=;1BCC#M4RR;s=<5m?USWWmFIX1>L2^@`g&Sv#JW{C8Y%cGA%oAuG6o zOvQEDOc|oDKX8g=w8&BqKDmFJ!y0*s)!7@?gh#(GVY+g>X2LSPOK;XR?ef@N<=Oh+ zH-nhL);<3|?7cj@$zk`4pZt4z9cO6T{ChwB$sF@-sZWwi-<rv2?F zik?1ye)_om_t@Hn4|Nt*neohE^r-IN7qKW=-QZd4z3FZ1?2ol~`z*M4^TRcRi;Oo5 zGkyfL?0D-kVWEum+Nqmo?q+k4`t0rz`HIQkn$O{Sfre}ET)y44+yMgp55KOxvtdr* zu6K6lw7K`VWp7whekmY*jr@ykY}ucc_8(R3o3+v8Rg>InpN@8(gt)0E7P)p$;{05G zZjR-?$9tx&tS=~^s~fq=<=n)VpANh^xNnoR>28x>8z&{F-bsD@^d{^16PK2Hryjp1 z+w@-GQ9#I^_XZDM$ajhK->pmq`NENX_Y-wBZ_RfT=SOQA`N&7a6(xMQ-5MDFSjwbF z=D;})X7zK2vu`!^FJqatcxtlyw#vZvrH1~O7VMrIzBs!0aqetOjq4{jG;ft%XBs~% zd#Y4b)x)soX6H?PtQfDw2KbpowdC3E`qlKrmVI`S#@y=zNY%=K=q$es6!Lo+qv z>;BYL^{eImerRfFoS30`fOF1j`TW1P8=I?^3QMR9KY7HgFB({V^QnNzq0$nzhC}ns zOn<(9*J|;0?!t4XFL>BoTS^nkbWYvabHmWH_;4AYd*->`!{2tXmQ8pwN$IZo`s6f= zoG^9=<>H-pTpgk%qVo-+teH2MtiJq8S?;ZqySI!i*X1kU*Kwd@?9WQ)@8>H{ zE)U?Yeri};BKD$(Yt@&z<@YA~@7<~VW!KF2?sjj^={l5apD*LuvM|^E`i!*~jp84y z>3O?nn*7flm4WTjLF}dBFO`B>OrCFXyA{`xG3$uV<&JZ1LT7y^E`OGL&9ketIE_t zYd$KU^^ zh3uCe_KAsyel+JX-kB4-+-dHE;?oKF>>FODAMFxdXSMUqgG|YyX)j;zdids&aMN6d zYeL^D)Ekby(t5G^4-bcxsz$SBcZY&ApK+R$(dK@mj8|KYjs)JjHuvp{1jf#gK+&TC1*@1JD8^c@PUb!ItOh)IP?8Ft*Kh2)J+q|>v@UMvM?f!Wi zj+T8b*NKh)pC^)hg&uKP>yo=J@{Sd`oZf znN}P>cAOCJ4Saof0; z+`hO#y5f@4+_qEE3GS?Vs`s~;{u0~2ZRtPT)r+)0F7SRgW!|&4S*(FfPoF-0scG`M z>3Y}8U2`{WmUCp+|G6{cxTf`oZExSWM$En7JnL%vr(2Ro*IKm~@_&DGef|6xQ<*uk z?XTThts6^UUpqO|Uq|Rp))&W3Y_G~$N%a>E_a(q%D~8_7tYx2>neUTPZPDLXWUjEz zQp;INr!pdc&bsKurJuLFO-N_ZlfPV|=CS|7!>mP@AI`bSUiLD_-lCD)IgKgfLbrTv zY{3o>`IZ_!ne$)D*$PSuKPNqBp4awXO7G)?jeo+9EzWFbzp-ac&ZJp?y7|ud@yOkM z{Ge9%<|m7fY9~9l*tXjmycDyapvm=fy0-oeI|Kd1x0=ne(P@$FCZBlJniFgt+KSAW zt^6;o@sqGm7d;Rxel?ga^TmaIigLw`)OYJBZyr&Mq~wzhU}&F_!X zS>H?5EOGqKaOK*s>#=*@8}k*F^``Egbb--g(}4|%IVJ_$Hw*L|ZFp?(<)RZ8XWZ%c zr@b@9)~Gst|J87F;#2)|*>-QQX@6aE{9WVOZKr3kJv+jb_w3dc-J%uS=2=EXFHT*! zN7DIJ=eEr3)xq18f2Igc1TL*=Ho6Q1!fR7Ec5aZJCf%olrp?a4X)=jUwWKXJEh@fQ30^{4(d zE$4JJ$iHV}`SgD3rbV9LMeC0&$h&=w=lE&WG z;$xdNRk{D@WzLN{Ve_6wiPrwVAE7YO?0C*??#i8SKe}G}EcJT2i($^aJ(jk@n`-vt z_1*9gX19B-lDMXT=?7y(dtA)_fIee}S2^#QuCF_L=TCD!a|*YbXot(yizb^9D zF61y+Qn$D!=XbNwvZtc9Qft4`Q%~Lq zUuxyP{)WCS{SNnK@EU38Td|j!d=lt4u`;yInPB%UbuM#(4tMD#i3QG;+U6kU2NqK5p^O&RbD!)5V#7_I9)5fzwvbGHlrk7q=$eb-MP-d6qH5 zk=O;oGo&}1YkFz*?Pt35gy(lJb3gfSt)gfAYU{3|Kf5h9@_js|z5YZmf35$$spXsI z)~>&tet$`h+>bdrvwumiob_y5(zNbe-ka$YX7O*@_V%6B=BZncc4=*TyC6)ybRwVZ zmFA+COqw}rTv<`Gm2>sHu3dVg8eOyeQT^Xf%f)$5d_6alYihM`Z|`+(wb_R6Z+E80 zR%DvWG)z6}!%*5W|7dm3Gk)3bwecSwvq#oExXfB}Pupwx>H9aouvW|KiPt@J;*9=q zsID>o|HHJ(q`!;jhVG627|q_$bX=%3$mZ&MkNW?V?4CN^Vck zzx{CHQTNlO;&tB3{CMwW-nei@e+UUZe{52vlo2uiaERV z!0Qzi=j+oC7)a{<|N8OulP8n?zwtfgI92@cP;1fQ`TNxU^D1;Y_WXWy&2DyJ*`Csu zwHa2;lT=x(1)Q>%ypZ_Qn(F$Tao5zXvNxut)*T7%t9ZrpYQ|fOhEI#Gc|<2qljYp} zj3Fxf)cmef1%H2il{A+Bu$f^8?}J+FS1lDE7MzQS_xS9|@JLJ}`Sp~(R+CT8%XbU1 zn$(<~k?V4A9?$uiUowAQn!ZnE9wSRi%iRQin-2|tKAil2H~AV{)OFkWg-Z{&mlxeH zZEGtN*v4GArH#XitvuR9^OT;kje_KDRQ)UD;-`U0q7OrN2BU-jic{s6BDmwak3& ze6H!c?@#-b`g-r=*&j9v&#AUZIKXi7=Z}<${;%rzrPMw(ZB*)&=e<6yv7}|2a^SQ* z+YSq{OP2jnc)XnNE`x}PL11s&+O?LQ*1o%<1NUBfb8zGL{V|)jZL=)Vf1Y_u+BqSvY4>^_PY0r}>Y+ zDy(#jQ+Hle-EsW7t&+dZN0(!P$zj^_Lgtj+$}Ea_I8kix?IZVpeSP@o-F}O&pYMyz ztg9?r_waCTQ0-ykO{J@?8aNJAb}Y6pTp;&ifqkFAwGTG~*B<=!!foeKVPDJXZZ@A) z><=BE<`sG1xZjCOMoZ$~wpj0{nEx~CVlOrNrr+obMVvvra%|J-#G zncb^XYO88~9Y4kBzW2c6_F^u3%ktda$M_?4PT2lE@^zh?cu zZCdx@SkD5V_;aiNUTU6oVIHIN)1CumT2cni9Jl?_p4voZZE?TDx?22Nx~@Q#*qUz7>o zF|lo*mZ;7Do%~Gx{}=iMbof>Odz{Z1m-8x9LN)ox>*F=fdOIF4eeB!KcS7Jd+r5g% zygMImdw;U_{eRb2sp=KW8;VM#w!V^YTpxG3L33`{RK*Vub_abs{`^XxulnhPQ!WY1 zU-fmr|150r=tiIGa|gfMg@-@!9NwI4%rd`@BjxU?t5@VC@}}MLkmeTYa=7K)k?>kV zGc2-h^0nxUx8|m%oP76E=03Vr`S%3lgkMm>5peI^h(Nd z$_gtMTr<4k=T&z}xA)VYfDe0iTRsjhQK?SUxwdQX##d_c>t=JFTeN$nn&!SAAKA5@ z)qLBOz0G`^NQ-8Ugh7a(#GKcwjrV@pa`8|^<{6W^)!n5lug;sN%Fw<`mG{pD&kq%% zA7{KX-ueG2tIKbvny=57IP*r@r{&*PWd0_<{_X1RH(vO>uwalXGMaj1GTWT>k0mX;+2yU3QYEWQd~Lop zPFc^je`&T{XiVXa_v?O$-Pp{UyLF0c@8 zgbJ>-X7eAd*+c$MuqVJ}v zudgmlWcu2D*yH*7O5dpV?JJZya=Ye+S3J8CpvW!vv+$Tm?W>peLNCoH#mwdZx-IEp zH-AOZTGrG}wI6C$dhkp<$a^^D4sW_A&wNh%fUob3U7pPN81&~QbIO53vO)V)i|u_6 zKFXa`eCpoGbIiSx%6lH&co}p20AEKR`-YOfe@kv=W@+`m-M;_LT1(Yd$e{> zbm841z2Q-7bnPX>zX^VK18Q%+S{}Tl^wQrf-SNqr5A2t7R*U! z?OkkRtza$m!*j8Yb6MH4gWD?>?_hs1=}dul@m1NLbnPX*Dc(#H9^96Vz7*Myx#CVlPMv0H#+4(ls6zHENI1)pP=GdJfNe=vDhOdXkjW*4*C`@8ox4C1%dW-4Prg%@M$N{`taUgo%(&zmxFYWeBq z@$FvCvPT=Y%oQ}bwDvNCeCC^&CA0q=e8yNYKYFHD3ybQ{v+DQ0O#SV&BGxT>_v=kU z+AHEuWy;RZh{`C;lexe2@MVT;yf3ar7&1T5IWV>K@- zuW;?1tuOpHMTJFv^6O-OyHmn4vuyk4W53$Dh1GmK7A0|Z9^IOJVD0v8Khl|h{WAQ< zl+sWudHhQ=k6m|xwS2~e)`!tj)+(uqe|G)a|L|?<5tcU5!$RDN(Tzv)6z)DMaSolG zv8d>{Ztlu667$wR*3h$ZEr>{d%F{4uK_q)(?;IPR$on4AlD1PcnD>a+i`?$|sCaG7 z+fa2&zh?8*Vjp%sn5XpSQhAz`bkn}yC;vaUHOo0Kc;(8K6WscH6#oCdE&cS_^ZJ$d zold{fP5qG?zV1xLzxS3mSBkfuE}78u{HLA>|0UUU2HC%iC$yJswz~LOJ39Ic`{Cdi zKfgZr?|)Z@*;x^AL?~Fc!I)@9_t}fX8&*oX|5B7fEha7g_cb-3aV`H+iH`C&SNe`2^ z*GI?wJjodJ{mjuSpZA+QX66Z+@0+Cf?(P5chpu;QobcM|<|b7=uiFvn%vK7=AHA4W zI!~EnmhFiZ|2!WrQ*@r3t+`-gpWksl&N+{y_xi%qFWA54K zFBp%X{9k_T`;$Z5`cpXPaJg&T+?G4r=J%V;pN{nVO<1~pzQU(p+g)E7ho4Xm+2Su% zR&Z?5(=RV?R!)&BnYQ5j#PFVfx33!DDx+LuyNM)uh{AGV$*-J50@KKuWt?*E%k?gv83UIGVsJqnl?IdZPZaOqj3@cZ4H-(UWGy|y?1 z`^;I@yQ>q@BpzI|xxD<<70czX!oF8$?JRvgO`I<*{_6I75+%Yjk4l-SKayZQ!0E9; znO{+DwWM3v=Lak)c3&p62h3SHpZjOY{8Q_0E%no{5BwS=zas7K>*TB7yOqyf;eEJ6 z&WHU0i-cVC&lS(_Horc%JFYZ**Yb?^hSr_c^ZvI+?W@^Y_51DitL{(bR~fg@E4?tS zJwAb0UypK(S-?aV8iZ1`;rwaV%9z6c~er4}^`z21%(^mXZn|uGa zOKnr&_8E5=U5!3p{UB%kwZFD`r!d0@aleX?`jhPc|CBm@T@`kFSK;25*71Rr$NkGz zNgw+D`k$1*{oj36KUc=DPOEKSu2Vl%%lG}dUE!ju=H1=3`c1a~#YO9M9J=L2|NTt9 zbTNXVgRy|^m7?zF75-f{C-nZhOkI1wYfAo&E1SP9FAjUX{ZxsAL#dU{9P9tRuhw4e z-M3#RXJ6%~I}?}Ha2Bz5eat%fl3~Y*>9%{X^g5frvrxFdM7sLit?(-F<6STXq=JOE?|-xY!Lx*gIVUD4X8ri^P^;+9 z_9?H5-GXG}8NVFj4fRUpIR9RIj#FE9zUN6!-8s^xA0J%FG`Cq7(yz$p{rz9)`a1u$ z5gQjxt=XdKUR!zO|EfK&^}0$`mR&!_-?7)6@!Y(7{D0Okd|s&kRw4fOs-GW)9?#Is zyZp?~($uxzZ{xA`+paV&w+(aPyE9|$&E@MJwXR)tTV?inld2`Ap~_cZUc2}+N4t+f zgTKqn#bLLXx%o))x!Lz; z=0x~dz2EaW>A>{GtdV)qkK+34*TwCP>fOJkR+eF&;g4f8G_yX<$iBMiuKw!sYkL+u zS;u9vvh02rp?`pDU*ysFT_I1OKApMpsG(~WhrQ4D4L{XyX#LCNIeDA=PgUZ^U%f(~ zeOhF0o;YN9DEd#mzDaj&#D~Lk?)#e=ua0{f|6g>kS-{%*_`6@;pMERPS(iDZ&*9Sx z5taTz{tv5rmvSEDzZ$#qtL(1*xB1Q2d~>{L_&jz`R(;uec@x*K5tr3-0wZ5Ns%4Vf5hX9P@+PHp>liOo-2uH+U&sn3f2DcikmeESR9 zp7MmJ^ZxIWs(V#os!+RnXWn^M!+xQQb_KI$Xw~c~T6gQ``S#Gy>D?jU?xkw^&aYTw zRHeDJ{g13r+4`W1+v^tE)ji#w^>xvGspV6=_I@-H^Wpx(B=h@6cHZU7b0>dMQhX<2 zv3_fK)sz++VTP(>nH}~{w-pyWPn1h}%0Fw<=KDdZ)!!}$X-l2zFsYvtTlg_PZ2yam z-AkwbU^Kj=ZLM&3$`rl&Utf7&ubS1aD)jI0k6sa!>c+)B%s zwQsM!EN$7*&%N8Bw(@d!*2zh#`)nEC-ukj;^SPkw^DT~Ah^>=!SZ3?Scw=Mw{alN` zUoKzW?!WuwI=ACX?Po6kw&(knUk{r3MYf5^`y5ys%(H*vO|JhpE1Bm^bm~{y8yT;^ zDfRV#lleCjd&`t|m4}B$pNZL9a@}onSaY+Bb<%%U2D`jF7NVA)r%P>#@GNTXOWtxp z=Iq74?neq)SoB>i_Vl0hJ`(*?=33LCW8b*8R=#q|s=9P*(Hwubd*)BM=goY3IveyrS>Xq$2~uJg-`<1ZV2Zu(+&Az;TE)(;z(^~dSI z+V${r_pz06*S`gIi|J;4&0)y(nl*K5>bZB)<`0z8Lllim=e%ZE5?1ErxyP8{>qN%& zI_vG$M#*ovk{Ij|IY;uG_$$S~H>YQRYulOiy_)+Bv)jpSE4GWH?l6bN7Vzj)^0gK-YK-|xC|qWQ6d`g0iOIBUc#G+do8=)QTY zGKY1aLz8^NG-c+Q?M#)HEcO-t)pwS$#JA*1ZvEbs((Yni!_pAdU;pduCI8h@MSs^Z z^x70Znts;Hw)%65GQ*8YM!i+a{%vgg>ejb2T2)t1<77Y3U}M3&r{(e0{`fG4S$BUs zi9P@FFrkmTZ-2noFxHU%Kua!$&k1f!JMLEecD6Sxz7oM`WmNdc#WeAO%gI-NeryX5 zz1!|TgEi2mK%RXyg-Q@D8t05 z&Q%W{waZLnuuV-`%=jcxWo4$xs`pVYUw<*AZT+#4=}l3HK=3ueCxU;TIG2@Az4hrb zYg&opHs8g6tEY&b-xqg&sg+qt7xRoSFFprfZ~Oeuf04K4!xrHy`F*b?r9)MVSs3hZ zi8=UrYhR6TyLUp_;oK&MvJZw_4hwqTDwM5~%_{$@*E+Yz!d!2^`#!C(_zR!0j=(&U1de*MjSs_CKvPjlbU?4>`PUdr$G(dF!u-w7qKemT_3L zolSbe?gwV2UyE2yOsKJ7sy(hCa<=51*n;oNg(vK_uUqhDslaoOhyUtVon0-|&tNAh zHMi`YeBMuak-HNY2Foz$J^1r8KP+!uUdG<#*Y;Z7$*M|uH2sQ0Vf2h#b?Js|#=yHX z9&XXHy{><~&*I+h-;8to8h&obv}SBq&)vF?QP!c`>gc}I_SdS)Pyas3H~kxI`{P0L z+D+?sK9efV`^UQWM{Lu@ki}P~?O%D!x8C%*dcsxN@^Y)J)h2Ck3c7Zv&NQv+s+)Ub z`kXWc2h|xj9ST^C7=G|v*j$?7eae9E)w9DsTUNIJ`}Xyxn9=<*rZdgV7o_XA-ThW_ zC@`e>{+v~d+?PdsKbEniHnV*_*=mB-}-`Awl3jujr>!GE@g&w><#>q`sxifEW6v;&u7o$w_G2{@Z|5S zb{p$Cv&weeJGA@8mo-NDH#eoex}&{&1@i%?xQkD<7XANfH2HW=a_YX&{oMj)M ze=TxDMZ2|hM9h)9Vr%YHTXOO|Efmn+7WMe8XM~Rlcjw0Mo`l#}u zF)W8+(iDg3B4rXM+@%VqJ-jsGUu(jbn|Ic@&$t*Pns@0nYgK!q&Ik6KFQz{PzidoB zxhz1s`pTb+g71Eu7wcQC+^RB%9dynzn-;e9(F66pAx5h;E)&$>M zOP>FHnfc52aFxD!gX%%;gJS=$768?y;_U!E)hu__fut_BFRIf4n$F>&!~oKQGKTZ&fa_b<pr=M;j`!dUSITgiD!M~+05S|QM>APc5v6dV7l{%c?M%1 zlZ>tHCyjKaUx(!wJ!(%J;Hs+p^H`X1itV1n7yO#emd_>zwY?0{kbCj5Y6AQ1mi`kH zW-kBE^P+yQ=yuj0j24`BaW<7c&9`hACjDpGca!Ul)<*T|sTG!TnbWNd8cSJkvAbUQ znfQ0v^MG4=e+wel7OOMc%QMI`zGm6={kzmx3#N0=pT%wEFBkg}n6%uILFC%zWgpsW zHz}Rl8I@4M@}~9wg}d#|(awRj+-|8k7kO7dpB2V%K;Xt@=1nXXGLD-VB3WKppF8l^ zN%yIX!g7t2Jx?P1PpK|`KCe1YTky=<>F=U0b=`j|5%~A(y50W!@B6J!Rk(L8q4}Km z{Di3t%VZch8;lBW_`3@{=9c`B;XTbi@|hv;DI<;dr&=yVE}6PAfTeH2y_?)D>KoR^ zZC%;=}k8-E1#{g;(X;TUAT9L^M-?GKWTcuddeYlU0}Owq<+`* z_Nuv4K0oT#*Rq}bE$F3`jqRNJ-~I8S-Oul=7PGJGkE;G(|DyKB)ZEpx-(;$Ocw@2V zlHd*14dHC^2h!i?H*Rf}%02n1ci+ErGu&Cf{qr#P4~pe;`;a+tZ`G4s;ifOwzR0>3 z?fLv)bhWvyW!bfI=?I_n3x1^xI~E)}@ozTwCZ&DVM(m;aAv*j+atcil8IrdoaS;So%753+L$wT>rL3YoM+qS1;U%(8of2;I^cBcPUza} z>??{_ygVnqFLfKoX1Ql??cXokF#Ra^9TTRm8m69_mCB4KYdmlM_LjcjzCd;++kJ1b zn)MFSCl&aZ(9cVvi-L#hUm6vq>>poj}=ghHy6@T{cIa98({<7?WKc17b*se}L zzgb^vd)W&lFwGO8;7_iJ{ohNo+dSwuMnuSdIdH(~Go!G4YxX(&e>T~%0BzRh;y*jhy zsRMmIi)(C|qBg!!y*lS}-z}Rr~rxH81$#3A^;!OP@V1yZCx_Ts~vW3FRYc!A7ZmP=cX+E_JK-1@mG=YUtkWlMoOS6EwRno1-*s!ulQA5MK9pO@F^ zDR<3vUj4tH>%OWf)ZY1iD!pELb>^cR0ZaWZ@Zb2s+SLAFa?z8CO6U88KPTjobZVAL;Dkx~uk&BmIQ9mJ z#}qKSCX49rt$FnJc=AhU*_$8lh@9X1{dxcH2>bT(^_Y zs_q)p>5FCVUcNnbf`9c1=LTL2rdv$&Qv=zGO4vG-JuKO;_{FYh{(Yo?LKM@uGQNaDDtguhm6e-QA%N zQ|mL2nsXN|Yyb9R@9`gtj13a5W?pXQwrl8!o4NgFz@(d#y5mAm%-rFzxF^E$LgD2F zR~9!r%naNc<0=^`mbxX(X2;VVeHm{LWp>Vw>zT6h*Tb)`_4fSUZhkbkB#$S&_Jvbu zg_B=epE2L3m8@cuuGMV1#V~R2rZ+1W9*dh|tI^;S8T9Q_nPKOrnb)J1Kkc8snBnH` z&3@bTE(P@!o;rN+!Tjq?RYz6BwbnQ57oPdPYS+{_*AhPee8#w4Pi}^#CaT{r4F7xY zp|HjRBR}1f$ugBj=S-^OJ#W5lHu9?skj$7YQrU63{)0vAgd&Z}nL*L=nJjM&W?lQY z>8kdHxo3W)M}?h#@vUo%_v1O|`elRI1B!}IF1z=VwO?g-PEOO!yBoZjmE&Ujn3m{O zr!$FPxi<0Bl*u-?cPj7~O;I(Ft@CzgkYnt%U^=Mt^#J>s+{h1#?e(u3D5)(mjfaGgC4r^2yE5 z1)LQtyLYV3zs_n@_Vdcbnkk;`%{7u5>OWTm-#o50wKuxdQdxfA!Y4O9=g4PEt)dnvFVu}}>k+=e zvi*$noXlsza$gns3r`u=J>B4W>a|F$&NRC%3EK``?wKq0g}>&h^ZhR}_vTf-TIp3A zc>kBOMat3x%JW5j_IRJN_{8ZDaO_||@7cSKDy0sR?J|!i`OAHhRPmqYy6;LmUxWYh z#x1WWT(kTBxn;SRqls~S#LXk}wtr)f@TXcl;bXWh_m#QUTMZxF5wty>~R!q;Dg`P}U>KpBMD^Z_!9*fQ;2D2uX($iHhjwQiTZ$(SzrC+*$(FNVurzg_dq|8+V0nyMFB=Uwfuti3OKZO?r+-Yge~lea2A zPS9t(?=){g`N}hs3vaJ`vo`h4w8t6DPlNkJzG=!Y_Otz_H+x#i3;9dinae`Hd;OX{ zefq_~!fc<*fk#!g{r;}He*JulpO?H(zdrq2eNv0ChD^)~u3h3UT#br9Oc$Jf;3(6q zKZlc~J~I}*x>)Hj?PtsvW`4#geGQpGw;ZJowCS8;Ds^~$rN6JCYDtOQ6=r$H%%AGw zT!GUkE_Pd0ZdbMY>On<|h%fQ-|GY(eUatMs`g`WC1#&SyC2N-d=#)3D3J+TK((->c zfBk9UKNVH)yYFASZM~`L_}3Nw(Z5bbv7S2eX-f~|T)p`Zo*T&6>WKg9@txcEGW)bn zyG;NKb4>2_XN!G4McAD>k~BZ&Lo;u(_h-p=-wzS$FJ3EOowoPK9_7goj6(_@-HxCC zD`t7#&#$Y`Datc$NGjdhJN?_4S1)%vPbjMY`#S#WykmELj%ie988H}q+wtb@;ty+%;@6K!7hbR1eNHBdNm8<) zUH)qG&FXN#Dge(6lPrn}smznaN1ofndCefcM`(qu*X^ZQwG ztC}ADWorBP^lsnor?*yePycS=P3Wx zc29k_A-m7H18nv+OE{fwuym*%u;g;k_iylSXOO+&pfG=vk8;1++)uIwo7vs$m=C^r z%A(+0dusA=ldtS)JVDHUR>$^iJM%gsCr9kp^WCdMV%JBR8q_a1b)lYTkKB^OziK=9 z0(1;s==s#|^v7MUvh7iN@23=j%xhB}+Gd3R+>rl<+*vPlVL_eZM7y}pe_u4Y+whw%wSA*_ zK(=MFpOxp_i?Msye4Bmu>rGDL>-ds5>-W9*jC;WildJzY?XUZLW##qrVXLldm+4qul&MdRyN{-Bjb0w71l^J9z$+;$zVqyH_io|LuPMy39k!sH*=~ z@xlIS-+Z^-n0v%$cY1gJ{=2#I8xBs2R8{sm{M&BDnzcR_P6t1HezkgiSo0?K?HZ@K z7YMnqn9N~dx@_W9`zbg5V9okc7X50z^Z$chusnKt+}+?oqSt|6r!Ag-yl~}>c)HeS zCm*9)jc?B%-^h{KJoUPZk}*!}kt&)x@BOl9cN-yvH%~oR zW&|_!*EHSxvgy}u#Z~Kf5#Y%d~iv<>kSd zw>loLn`iZ2dDa`PEC0hQIkI>BX?^q7<(&Ck$AMv{jSstodi=S^jCp(?m&(jxxHLg^e&2ySt!Li53*%~f8>&t;3o9J0 zkq>5h<O-v~aMjCD3jrbmHmH4##X9>%ObcS_b zc{^I~Ml5{b$Zwx&Zm;(GnWNb;W6qi#d~T;tSV=5bc4Jspb8A`c+c{ruoyaa;KC@iM z>ewE8!}sgYNY$QxvhwrvDsP#nyy+zj8Iwfy*F+TGT+$hT={4go6OaE5KlS5G?MluB zd}iWh5IvwgVIk)NW(x+v>&y&Ff4L3XWb17FWGAn*pYZ;v4u{vX;Ct7m*Su_)QzYB2 z@cPk<>fg366i#fCl%HBYN2)AqGmKX-qXUpX~Z`|P7B_d67B-frAj)==7PSABI+ z1OtPZil>WXNP1oT%0nA<&Mo{_5baz&2sl$qMfF1z$7gZ)x3kLj8Wj zjko7tu$)MqwP{n`lbc2lylb!d%NK9^)|sz<_YL#co_osQ;yx^%{;OnbrTwd87naI0 zXhj-rPPy{@VeR|ytEzGQ4R1Ci9=@{V!j znD}Xn;@1<*OO+k&lrcRpydYQ+c&Z{WM=);h!})2o49cpOXTBFPM1*TF}{T2BinvpOm`ZdMe8x_4XY5vifTOjPGaKj>}ra~ERSviN?G`>EU8W_;69pLhL|<|jKfReZ?{ICCR1wSE>C6doZzp=~ zo34B6=2vz5(AwDl=f(ay?EU}m_mwY8Gbf&TcIk}a{k>_&j8EqC|A=}yr)NpSt2tRJ z`b(cIoPT%g+Pu>|KHQT$=NBH6e06B!<6epCO#OgMoF42Bx6K^(evS5*UBUlqDYM<& z_E@%05)sQ?7Bih{68dq+RO51wcje{_D`p#=o>%1Dk&q}8!Zfci=*ek^4b8{z&1;xm zq;_BSoUtF5`T>g-Z$&uDI1@DcEt;-xZJ57mU-bXl)5}+z->(s##mOx8H>=2h@9$N& z#sBCmOb|c$W>a@V*>9ctx}!yVH7o-3x#lH3znOXG+#&8#_V1E8n>J{iIBMMBx9*d3 zLwCl4h$YGn3)$H(nf={Szv;A#)V7n;zXkRM?_1no5pyn5qvX?E3vuJhw?T3Z&(Asj z{#8)k=*RTb{Yxz4W`p*lmOB&J9~2xsCvh-ohV%(@s~P8CTS+g-kUWw)%j#E_%!QYN zU5xVXS{qK+hu^T^j@|e0a>LU68yAY33t6mq-4m~g-?51kUe~Vp%%tXvZ|vRImp+~{ ze;4-u$8q}=b0?TRoBwOWy*I_#P7C#>RNk;)*m84I`tSR&C03ulHhrqATMk;BZkgP0+4DFDgKZ^u0Cz$_V9@2m!e6YI8_I7VU1;}; z&&dkzQ7oKKX84-NziPgEYNCXikwEA7e?ouMn4do0J>hH0ou%u94_~fb*%YroMepaW ze(|{6E(;&KsDDBHlfC}``8dgR_G!Dz{PWcLD_(z4jh`tHE%9Uu!z?p}gUTmf@Njqq zu;|yWSw22EIWC*sfUdFqlRc7(qiTu$r@4OEj-f8+$w)dMzQ)=_Ar;n>l-)}y; zeW}Uw_RcMbCg0!nV%zgI(W)n2-g>y9gdu``$Lo*Q_BW&UZMB&C?C9Ob)yL{%^QT{2 zex>UHt4otx$IKPt5-a)H8xEK}3W{4Mm_FgtlZjsL403M`@ArGLySYDjVcoEV*L-;`??x>B_xB8caMauOlV1)! zHt*YAdU3)=~Y`iBbPazoV=-o?TP0pi(HFRc5}Pu zOM?~quf$kaSxe3^+q>YzvM>{{0cGKIL?CF~9qV$D8=Q*&Dj;439%{o`Ve9K98 zHKQug(7fz3(zY+J{ha&HiGRv{xrZC(FrDDmuUwLn5xe8pUE8VEkNBBA7`5+hPWNwJ z&hfikI-w|M149GDViv>d0R8p{%g-k*mHl*MvGQCWd84>eru*6+x6i1bUsk2Hv`E_E zySS~9qjPG&?DXZD+HWU3UwYm~(|`7o35p)7{ks;JJ(%fkyUcO#sY5H;g6HkcUwwVv zuh!>{>X&#PGyI?TtWiC#{P^VglgceF9lpo7;Ntrqe`Q-A&da*H?$lgQdBrxHvfZ&o zCsm&XCM|jUfHmsG1;z#Lt}#vGd)NCo$1z$UsxvLmy&n=c$}TUdO2UV1}T zv-nS;12U`){_YJsc;d`v_%DCN8geQip6}^Pi3sr%RYx=DZ;Rm5{5ffspo49G{Ye=? z^$jPIW;IOmV=82MX6U!i$6NA4s>c-f55K?u+o1eaa{5;jqg~&xS5{BIzcOrXl&ZJC zgulMT=8ZaYiX-@cKV_9OqwM@FN{*?` z9efSN*~@NjxRO3=%7L$&y)9n||9EiHB2{H+?57#uwA|yolZzLhT7Q|ZfnjRGLc@R$ zOM7~}Eu*JZUee2*n7(|avZf=y+~WmX5}Tu6Dfw9nm$&~Foxiet{@jHh+Lnee=Y8$n z|Mli&zU!>^>tEX}l3~#Q@Xmg^&c8K(jQ=L>y27-aW$`b$+gTF)+$6vsV8K1+^gebEUe~X+I}V_uZ9~ zQ0e^htG=^~r%mbkxaQ3+=3nkY3P@yi1}rB}C(K9155 z{IQZ-R@mXL1;cq;_73HO>5C>8*(IB)2ya@)cWSwB*9*b(^TL;}e5$Yesb;a@QI(_j z>T=%O-YNTWGTTGMUP+cgPvUml{<5Rj51Fp|wfa}(k0pK#Ry#s>6#ibm>i>r1kndaM z(q8x`Fy?T?DIDcEz^Ghy%R0K`>-vb-*2|fc`|CHPH%~doYV>C9+ajsZFYZ(uvX z>>?gtbn#n;+vlUazF$A8erH+Ry!qp`wb9Ej6<_|ExvM$pz#^{dB+dW^?nZ^@QyR`O zOkrf$(&$lpOJV9chNmYFY|`-die6B{)6;zGX}bB&eG?O|8Ew3Gd$ssG5@l%rvAk%KiJe~ zrabYTyj=Is)YDc&wr@-$6tRJn)UY5@8EkkoP#Y+rbj!! z3*YrCQEtuqgBKPbVw`cmxw!p7ezcZZ`~?}`x@8Q~q3eHW?fLL&b^4s#b22OiZyXFJ z`6~$hc;NjZ*e~eT(EwS;Ws=MHycJ0K*(t;F)w59g!ez!A3dVcQx5ju$25k`B&g^im z`deI~zWRhSYNr-Xv_(fNCqvWv(R-Vn{6d#om2bk3hkN4M+A)T^xh zvVGqri{~o}8TLG}PWSsCR~dEl{UljSzsjIJzu(O%J{PFYZ>MS|l`wA!i}KutGtP7T z4xU#OcvHaA;r;5x_A-Y}Jdt)kOC&su`Lbjjdhc*TAQsW=H z7_k08oJ?hp@Rgu@+ULvo%KGCs2fvN`Y5iGEx$?nElh@+MC)nTm{bc{cfB!BTJ=uPH zk*|GC^iL0u>1SpY23PL*!~b;a(+bbH*-U+Bk2NYMAMXooooMGaeZdyqn|ue#Sf;cq zPiQmm18gS%l`qs_JEpGLBiFV^WlW8g^2>H=Ty1^7#$oUGd)3ccH-`95eWbg0>BL9>=hYl%`kQunvAN7wK8E7R=jg)+_wMr}9g zt~~f)j-ux4i;fpGRf47jv!1xfI6>{w*3TO_GGrR&UYxc?yx?}Ue4oSlkLG)S?x_4~ z`Kney5j29{_bSf3Zu66wt?Y~HRbH|19rzVy$h714#@%Uevu{)B1?oHd}#>jn5i+h;mKt8SsMLD43`?T6koEZeS2Ugx@uow zrtwU>>Y9Ky+0$2#=i8*lHT#7{XGVpc&xrlj;jZ?t;$V5-wVnIoXS4DhSf1)7r=b~S zdC@ic^mdu$u6#S@a&dE?UGd;Xa=)p+OpyiOEAc&UOqV22?3m8WbZ6NFRsN3?>LfJG zm>2>iCoxVfnk4jMQoF^^OZ#+_pWNALdmw&qZ0Nq<8(zNs{>E~J`@7kfx%_@4q^G7F z;#EDL_etwp#&g*Z{J%3YcTBozyf1QcT=oBbr}kR17oVLW$0KQU#G?7)(ZydsE{QxA zqs7PAB%^4+H|va`gIb`0a)THD1NER!r<703oX+v)%~QqG78%WUH{Uv^=k+V!r#BX# zER!5;A{AaJw*Od`ekJ|=dIRS_zp83$zB{t5c^96_Gqb$%qiL|yWHrwBWfR)^1HK+$ z-14yd=t}2MQ&IjYuBX>&uKi`Rn0M8_MYdI649+dsu_HqCyKdj!yAoXAUL1(CpKxG$ zp_rST=8vA{S%MC&)oFG{oOuB(OtY^%JZAs*#{`87s;v7x<#%uWD7m%x@ou&+6+c$l zI#u=W`?__e^RsKM&gSyx+Do>%M{ham_JHBmrKojp&dfBvT%Pvkhi~bMPtm`%zFQ{$ zWZsax+C@pwwBkcT>)o~m%*AYyg6jnvOW2J3X0z;yzxCm3(k@BH0FO&9587lJ=j!y; z>}`tQ{Ze&n;bXV0m7kwYnSZoBYtw|8)*H4dy`9m{{`}j&hd17zJH*-UnBmOL!nc68 zH?{kfoJq;`HAS*pj-1;bkC!a^_xJbgdYhRy_J3!%8vEb#fUzH!?J-YP z{*MtJPZ$(Znq_Q0-&nglK|NKWyFsq*_UctNr=_;m{x17`f7#@68EsE{<0{^jTG{VD zA77nU|En({)jqTMCl?Fff$f>MrWq!G+p^L(^5T4%7jjJ@-ltEW4rXO#%xr-nQv!L zp1ioIxLEXFbwep@kKB*>bLXx#GBy_7rk8v@$zn}B=d%AwXJ2Mz%#35nxst%PU~v^o zZ^h!ciR*9W%9pos9>!Ti#M-R{y->&cpd(CeQ9z zzwGn%F?Xbho0z5YS1jLR_G$O)W%i$4++(W~u4gtLU@Up0&)D5&UtMslzHRsNyCG5A z{~y^V=XL2`=vys5hW0{}bpERCTddw5T)kYsMkC@%_WS%>_v0Qg{JFi%xpN4eiM zGxLe*rRwUJ2W%**5d1abM5sR_I`a@60|9} zzF=;NZ+oiY<#)5qG;Fp1{$A))ni%SQbi?1!-y8QYaNa-PuY}?3OI!9UtIjm}pOU^j zJ|de0=926$X6r+@Rt4)n7w7kp4iFCvHrjMae@*YT-gRr%pRk^> zTzIe6{Xjkj|NBc*zyIB1xc2$3u3Z-{-O9L?9K7uO{b!-=4dofp3Iz=9+y34T`PDPi zxX-_TN$e$=zIivNT&szx-LlT#*SU0C8BdaN{VO&8Ym6?NKF@NJ+}q*-hgsSKUQgePZnfV^H)r*jwat>6edS2*`WL~wFMoAr65PwQ&|IMX z^5TVCO8#~&I#cyGUYK`zxY=rtNE4Bp*F|{Wugc_DyMBHDKG}0CqATypcH8GK_vSdm pqARe);R2H*_aI^H(EaeAvBJo3(!rK#Dhvz^44$rjF6*2UngC!l38Vl3 literal 0 HcmV?d00001 From d0d214cd24b5be89b59089629efce33b95bdc3bb Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 14:28:34 +0200 Subject: [PATCH 39/66] Introduce a common.props file, which provides version and other package metadata ...in a single place. There's some special sauce for myself, but we'll find a better way eventually, so that it can be removed. --- src/common.props | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/common.props diff --git a/src/common.props b/src/common.props new file mode 100644 index 0000000..a4bb353 --- /dev/null +++ b/src/common.props @@ -0,0 +1,31 @@ + + + 0.0.18.0 + ElectronNET.Core + Gregor Biswanger, Florian Rappl, softworkz + Electron.NET + MIT + https://github.com/ElectronNET/Electron.NET/ + $(PackageProjectUrl) + git + true + electron aspnetcore + Changelog: https://github.com/ElectronNET/Electron.NET/blob/main/Changelog.md + PackageIcon.png + Building cross platform electron based desktop apps with .NET Core and - optionally - ASP.NET Core. + + + 50.0.24.0 + ElectronNET + / + false + + PackageIcon.png + + + $(Version) + $(Version) + $(Version) + + + From 471289813a44f13fa2cb39dd1f84a2ff1b0d7b15 Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 14:34:43 +0200 Subject: [PATCH 40/66] Check in version 0.0.18 packages for convenient testing --- artifacts/ElectronNET.Core.0.0.18.nupkg | Bin 0 -> 87622 bytes artifacts/ElectronNET.Core.API.0.0.18.nupkg | Bin 0 -> 376509 bytes artifacts/ElectronNET.Core.API.0.0.18.snupkg | Bin 0 -> 110964 bytes artifacts/ElectronNET.Core.AspNet.0.0.18.nupkg | Bin 0 -> 58530 bytes .../ElectronNET.Core.AspNet.0.0.18.snupkg | Bin 0 -> 27759 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 artifacts/ElectronNET.Core.0.0.18.nupkg create mode 100644 artifacts/ElectronNET.Core.API.0.0.18.nupkg create mode 100644 artifacts/ElectronNET.Core.API.0.0.18.snupkg create mode 100644 artifacts/ElectronNET.Core.AspNet.0.0.18.nupkg create mode 100644 artifacts/ElectronNET.Core.AspNet.0.0.18.snupkg diff --git a/artifacts/ElectronNET.Core.0.0.18.nupkg b/artifacts/ElectronNET.Core.0.0.18.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..3c863a8c0428002f8294ca569b9d72520640a9e1 GIT binary patch literal 87622 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 literal 0 HcmV?d00001 diff --git a/artifacts/ElectronNET.Core.API.0.0.18.nupkg b/artifacts/ElectronNET.Core.API.0.0.18.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..9aa86ab8907a239ec5aa4925e0b33f86fe68f501 GIT binary patch literal 376509 zcmWIWW@Zs#U|`^2P)YKQUVLorDH%ov1|}v325trhhWMh?oML@F5IJ??*(@eQ5x4KH z`;5)ht}e27+Cf+IB~DhwqR&bqPiidWH9Yi+ zG3ii-{vnQ)hnLtl`W(D@y)Hf{rXlI;Hr+RtRTCs~L)**e1fI*hoB!!`cxkiX&-{7q zQ9{g~8WUM2S{^^r?$f?R@!pcZ3zb{Cr+qMY)|lRG6H>bJ)T&umgAayQCWQEgp1%Fb zfm^vxxtk z_hNU?_GO%mx;~1fmR_$6tmV|wf4&Z%`84UEw}QmFzZx^!6Z|DVC-I4X-!kctWPVyB zSMbJM9ivym8DB@sIq48tE|!O5sHXpw=44e#Q)gy*sQne7w6ACwKzwvG~2Fn z)oURp({(9tCmWWi_Z$$(-~Ooo?nQ4t#-FfKXu0S%f7l%O>gdJ#-yw% z-O#9YfLlGcV^iFfAXo7T5t06D9wny5xGrE+41Tvzp&~`FM^$5{y7!*xE+s-+)nmk; z%$UI|7oOGI{dxE8zjmsVce*?|7C9s6K~S~OGlva1DiViU9a7EXh0ZqbX@BCtkeqSs z)|}ZUGHnVwrG*bXpZ+-_HuY5SC-qN0Q)h1C`nkcDVQp8B?V)>-{nPF4Uw(8ii-Sqn zXxq_sg9}ghW=YN;#0$n)!W+e$ctgndvu#Gp#)Ccf9j7 z)MoqZSAXDRqud;o7Fn(wNAVjEiq6aJpLXubG?sT4y07#UWd;$-CuU1o&hP@2l+;CTeC$x^*kd3LmDfC z90LPGPG*vRUTTS%o`F7c4ge+ol$@M5d&_G?uU=!@bAHaO$pJwgPJ&L|&VDaC8os1$ zXlP;$oESH?S-r`_LvN9if`V^|i>u3M$DvH#;a3)t(kOC*=_2a z$#YD0I`6IeXy$c{)49b$Pe5e(x7~%jr~gK5(K^XjBJ`+dgMi_otW{4cIW>3>r#jo1 zpU6{uv-pOfo6JAfqdUA6H2ig|Bo5Zb_Oa z(73JjVDHtSj1_D2?{h4Rb*`M&D>^lH>1^)QkhZJ`{+nzoVy`VxW7|Gkn)~C8C2HQW zX%|ytVvoHvijGaYoZ7eR%)--EuQtiWUJIXIk&|RLiA(jC!$Mw-K-?6 zsXL2!{$J|7lZkapuDq76N6X~TPb+N{S-X}Qowa!qxlFL_rt3Y!&l^3yKRfcY()xkp zo2lEa7_(-~eR)ApDD7~i*Qxorr(7n!+2fGA@Jx=%=@dO<#`;r=`!!>GM6R-NWiwlD z{PfGHn*BsvN7X4Ni9d`N4Z@$8OjiFnmub=RhFwf$iyvgz7_qDhp5wE%ud{9H{|VoV zg}!P}e`pw_>8)mGuf{8&qux?|OJzBV&%dmx%aD`=3g)Zk}zU z!qob6;vJ95l_z+^1$yae z-vIBWZ^=J}1E?=C*Gc7MA2`rQ0!bKl41?pt!Ie7<%3rE}%;&F=5iy8riG&E~f? z-?Kl5uBzeR@p*3c^J<6L`F*FpFR+e3b?*BDv->|M=tq5?U>&`5?pwuJv&h6xo6j%? z%$oZ+vQn{F!8I-Kg-*{Coxqf9ha0-D<&<~Zofq31t1k7rYVn;7ljhBpKG!{?Ipo3V zsK9#;Puw&VnbQ$|dINu?_|J3QOwV1F zcWA89YhmtWu5?tK9sOc)aj(|RqV`9do^sD}e){(FtW#}<$0Harbh6ww{Ov6J+wrR1 zF8-+EQ|)W7wC!4IMBAsV-xwDE*!e_wp~ufz8DC8;A%ZKz;x9X&2oDV3_smU{#XnMf zF_)8`ru03Fm?zfyTyw;G*Kj-LZp~?H?Rk6Wl%-+L(*DK+H7;S(Is*S{$Vi3S^R%-z zJmq}RB2XL?2KJIXKb2t&m@<;!7&*OzJj~8~@ z%ZV&z?b9q~4HQ^o`e@>(L?!(Thjh%^oyEmGOdIE=u-up?&M{N{f@jti=A~x>b_#zw zC8HVmYQ_e+eX7+zsun1Fyv$4bB8!h?{rhul7xsO^=Ffx^&s%9J$$&I~HATJ5V9{FJJM0yI{YFVv4^? zl}^(#&e<*7-Zn4olv(^NWkMa7hR>Nrr&jMQ778^!J2x&w(WKlDWUK3ftCPmZ7>Jb&;N3xZb z87z5~l6Wc}tl*3A@6w6YP`b&#>1O9KgF2NiZL{`=2Uht=_`bb->{Ur~Vqcn5RDa6G%*QIN?c^AA3PrPfsYW|d~Q8Sh|zf5;{F^}`G-D0jMCl=o5 zz2NUQdD6^^SIG(AbY47E_64fSxiiI(~uM@5r1j^B22WvrE5y zzQ*mgpw-eo2RebuQ$D(nMp^QgwC3BtP{lF@cxwPl*zBzL%|4TM;hz zxj@c{_mT@&mU4Py+sg&TY%f?cVysN=@rtI2KRfaBqR$GZ&c~^@>&-;+JkD7paw&F4 zp8K43kke#x(UTYxtLSOfbw1lNDh>Bco*gPZVR_Lbf#nAaT#j_PonAEQP@4CKzq!@Y zPgt|LQ>U2tnz7BT4!YZvR93R{jR=$BpX_EpPpcN_NdLmujeLL=X=J18!o76{;@A1PvYI!& zsqXOb`qr^|w%Y0i50b+^Uh|&f8uWLKwSn3urloO<_MPAkzWKcEwW^EQ)Spv>`~_bX zmWO}zC}J!LP+nrOIcnZi^L~rp%)6?!?oV~*2@m1xRLNGTx%cElCG+8Q&6e}_1~m`( zj?_4v%e~n+$7S!H37ZUE1Zy)s`rL`txh#IWG;8|pw$!q@w^FZbiua06`KVid?DU(S z{K8{zR=>_&Jljb_Elv0;HciGKlAUC-eWgnO(*Qlmw!>)-#qoGOIcQ0NBE9K z31RuEaq@D~ZH4xWJGXAjjBDkN`l`5lr@*3v4ViIEcIlU7az9vKskl|cD8(l+q1stn zSa{*8!;-4&4jl=6Rjqt+#;Ls=P1PzLZ+cf&1;Ua>c(1z1BW;s#W{arIS9Z&NJ4T9K0ZYnW4b5 zmZr=u?z5Y6q>QXso^-mnKkc6D5q7Wb%|b7c?Z;S^YHM=U|KvYfQZHM0$^WQleKlX= ziI1hmlbRU~8JLqAlogiTk(v1G&ZHEvgGv?i4t~!(`?bU1zIoT0LsAd)*8Gcz_`5P7 ztdiUN;p)AuSMO`-91iL=@@Jm;Hz3XaRQ1mAWrwa;q<-6+qIC4etRt=F64$EE*=)QJ zFU|e;?#2uL(%gUf%*1|WCo!Jp{q~OU@K)x}O0R-aLc6zjEbiK%al*5tQ{}0HMc`+? z?OXDby>|;m-8y>X(jnOwOu`!^CoiyL{FaqsDt0!o>{C$2{Uw~<0hPs;e(_wj%^ZjH z&Q$KcjNCOJ=Q0nw4bjTYET=VUCafa!nPD zLoEK1ss<}p#&GK1SLjea{x#wFq*ZTt`!>E7UbAuQ5z}p4-*3%Pym`V(8o2g)WcAqN#JIWxU&VJfmrCM}Hz1x44t=m?mQN$xf=f(e^exvxtu!^CU~18@ygRTQj_Has1-%zP7*Zk~k0Z-UI75-f3li?3ndkA9(!k zs~^*L{hzt3PPYHy6FZAzy&aYEX0M7=*dG5jGt%=~d3T?j)X|8_c>$-Z9{4|%%IP}m zeo@4-AW!9WprO&*iE{_6@K&Lq9+{NE z?>2^?l)aJvCU?qw<(@lpo=jfR;0_VLN@cpl)48k>vb-j*^`Q z7aG{2_*wlrqgJNhv*dD>iCr)eWKb+ z>21lUq#&36wJ&@(Y`E5-&>ZQq&SULV=P6h8B$nS{o~kV5bI;pXF7I-x=e>eLZYl=QzUUvO-mZ16j_ClsR4Hd^&Uu1-RV$|5f^RhkZS3qW>l9OZ#clOJsWo}zd zeUF;*KhiV*7XOx&kG)7+Km7H)_d*YMU)^%}qomXDQ+epBC=a%FuMI^dfqa5h7N zBP?&ZBsluFANvClO=^RGB#uOj>{VCMe*)PIaqD+Q45aI*E3X*8|PW9MGEa8KQo2gf(eySaU3htkPMn)V6aIaemH?ccM0md?SYQ=1Px;E_*n zc>4F8(lmMfGw08>wl%aI^@unlHchwnXr#oH)tQHOnFN@WAcQ)1m{=Yk=`=1UD`Bf@8y`CVwc+Ml6gk(X`x8(oF!7f z-d77wX?{QV!V-JlMe`Vq8LJL9%}ad|`7kQP_w?_Ws(a5be|{&jC0*{w-syfvo)wBME*ch5Wiudd_!S%35VM7O7} zFMR1MJ7aPxEz`kL&Q|c);?sZLOD=phaYD;;8`(@78==RxK~bOCu0IbtVHm`F*8l0l zcPqIh&K}5MopbC!CYQwF0}`xr&K-EkWzpPdEK;DxoUWCi!(5?cV>W-q_Ma}Xw*r4{ zSv+OY=7@`tToT6*SY+3{pHx06?w+UBUG>+O=dHQK_M!4>-jr`5^Oid9zB>E%rR(jE z?4OpMk&EeDzMDn=xJc)faHFv1vPq}57wnK zNHuqnmGhUnFuPs*m}BX1+N+*^{R0%YU`2@xAoPR8u*A@|K#H zpIx73TzHhdDfN9w{Jx;G$we6-`6iluec)02oV8z;=b!40?*e_lXC97vbYa`cGdV)S zCu_bq*s1NVYCAasdmeI4~qj#rl+3{NBbNB8{E3V^5jgH1DEa%$_xEeWv8kS<9Y! z&p&_k`WKUZavz^&FY8SJsz(v zztg{dbL0B*gFoWT;<+Es{Bi2)r>X8WXFq&;y4bFF{k#|7dCcPzv$m&CxbF)M)${}V zrr+9b*v(|||Fn=}g!^&L{+k*L=9%-%YMr*e?BT}zU ze`mAHcdXbTmB+I5D{Iq|$B&#{EQ6+rNk3n5^qAfK8y4>3(px2y7q2ukn-!Qd=W#Eu z{MXEl7rB30A3s~&a_Wc7qxCcU%JcVi_56&fIqUU!wfi>t_{}9Xy=TrH3Fp?0S3PoF zM?c=~Rqc;iOP^+kx$R5K{CVj)_kpHqvo_CKyY%MC?-l!IJ?iXkZdp*Y_e>qzLyZ&B zpS9l`{%@*2V}9__m)}g^W<2bxl*nLRcweGb;;Y+JxgF6z6?g0xf3){kOr!ql5Uc6> zTHB?SlKOZe&bvwdxKf#aW#*O_Z&kC>s>SPnly2rVsKt@Z(pDTLdp^wv? zvd=HEKk@7E!K)0DOgmC|RU-ceUSpVaRVtO&<8ju8K5f0#k(Mu0S!MVb{?6U>#&&k> zlK--o{)-jNZPv!_Ga1ck2U>6K+Bol}9EZ_vtCW5IM&Bo$;rDnpPr&Z-U&YQk ze%Jl}i*7G^@m+RN;J1^XEI3li%TL^M-?U%l=KM)-&U<`&Ua&%b)xV~ankK7n6Z?X$ zY&^f3*+P=X>Xt=Gjpy$rIVt+alNJv^~>8lF5j_{6tMhik+9y_Q_}3 zPrh^a_|mNLOHn9y(TnzyIXtX4Q~7TCPk58=@r`fNUzL+}UWK1bURKDI+BjO>TG*#v zGDn8j>XVF>*u*|>kK?XO9w!M^DRRZSIGql7p~R~$s<3&Y^Ru8yJDXDUlxI$#c=xpD z7a@_oQ(V*oz68mtA9g6)==?2f(%yL~>lJTidw#PzdQx;rvgoS_U#nAr$FpSBk2mz) zrXD9zIw|Q}@=*29*U1^inNiIo|(wgb#Wwmh9%W0GJiq?o|8T21}SKE8( zNB5N*H?saLxR@6$v#nir+P{Yj{=2(Z-|qXO?oluK(mb%<`qF*LuiH1@iZ0s}X?8PFr00d{SlX1)CiP`wNd>;#Byo z{poA;gqhw(pFPv$II}wr6?sO4i?E45D_>Xl%4Nb=<*0r?2cnJLO&L+?DzrCf?6{byj1-&)PH3)~lY( z@imH`xIswd+N73J_e5RYN3*0uHShiN__$B}gdJy!dFhSa6I0^dH?3E_d40i~UX|Y- zQ}$joo02-0XVX6=>w1>R!yeZ*s=St%6xz6{ZQ>d^4Q{vMK$*_Og*Q*bZ@}R znr>k^zW2pivHPwV$~=<_jf%H#uw7QCR=l@(s`1w1sXxE+C$0N5yL#QGtMgX>c{XeH z3C=h{Klf8@v!5#bHPf_}@Y+^>_4~yG@t<{m@7=C@@RnUe!b&XRke8DZ5>-#t;Dje1=}{v zlgvGzE%Z#hXy4Q+Q?-NUCI933e7T;x;{Os2zx5Xnxy{^blW4o#ge~W`L+L~D4R52X z;xg=QHNNoLX?)SO)lhjZ!kK>Wvf_I+_j~n$_vUN9_n+}Se#-Xs>hC2de2;R!C$I6I z@zihIXMY<%eQVyc_X?No&xYy2cc)*zGyU@0(-X5wbt;5i%08KMw@mF&ux0zZoAunM zrav)apJG0jdmK&3{$IQ{et&VocmFfo@zEDT&=z%I5lkD(gEY`>y@` zwAFL_@=sxI`}8h;+B)OMtk+LZyYD?e?^Mj&U%&74ynbKYn)f#rr21!OP3g(6k6*LJ z*36wdyL0{0sD0A}%CU{%+jA^Z=JT@ z^vHEqNCV51@9(|?XTy8`>}&WVx90I_Xq)WwWKE^Aho&w|<;DEq`KK{*qf8HG|ULH}@R>xAW9a{!I$G@=H$bcF%m94pS7Za6D^@R{*kv**8W&Pl&% zvxlMQWU+*CSo)c3TT;?rPWt<7ljZr$;(e!|-41E{*DJGI+~h(|v`A6E#lijDOY0{e z*k5>RzXQX*U(cS$H$J^z*?ZsvQ~SfmrEU57PfYe4$h6S#lwy3o-SEV`lL_ZpmfO14 zeG`fL_Qt)MOZJ=3m7B?8R&O;+ZUsNtQtJ7;a@7s5e{cDF^Y4}Ux}UzK+r6qi_PBe?Rmsyt3#FMIS_3EYr-RxO_SyjnbU&ih!ElFzoa zcH;5k%Ric~zR|z_>8>A9^Czx%-&$kqRulUMlvn&~V%PMp?>0Vm{phV9m!21YEcKL% zU;q2lR;T0Fq^~t>(2Gw5S6ck zbmOO|Jpoa_YV`I^TeAMW>Bq;}Q~TBz`Wk)wI%(Sa>7DCU!5QPjR+rP)C-v0mUi`H5 z{PRcInNso5H9w=)K7M_)r)KZ6r>{#NWv_&E0(7r_+G?U4?+xh$L`^$3{oZjS}A4_LK42@m( z^!28mnpkLm;giX}d7qwU&+S{k-sscU#%b$qk6bT;1Xa|!r`eTm`=(|81O@6=rQY?E z(&}nr7e3Ce*z8kNyX5KX;x*&8td|t=Aw9y_WSe zYWBqSTOnPmwchggw|{t?y|{0Eqps1%ukyO_^+NHl_dpWW+-d7eC4WXOha@V|%$l{I zpT3Tgjn7Yg@;YBP{*c4Ib)f#&z4rCmTWVq_P6SclK%IXqJhM|i{`$)wvtlQ8u3xb5 zv9?Ri+V7BH{Tj9JTKbdhy^vrHU-t3qCjI#9uYYLe%FZNH zHL)up4hVhuc>T1xn%qlo%X7}22;Vksz09N6THpZqX1(sxyYiT+h5H|Cna7ttEB;to zDi!~`_UA6ga ze)@V=PfhG%h;xsb?5o=P?QwQ@-+I=y#viYSoDMgBl)V_DHuuV>t%l0+(x42}`k_+i zM|w!w;bxBOToos6+5OfF@A`gs?Q$(M&g;RVw_mK}s+yO?d1+H)x#8<27rnk6Kd7pm zSsZY(?b=+Q51S<}KZxwfd==SK^`Kn%b!3lZ?uW>pm%Gvp->nL+Tf((O<@M*y5{E9C z%YHdq@G3j&EOUe0t zGvRm6^0#MoZ$EBd{Py{)9Qn$MyW7mK->NH|yK_y-?N@%sw#{eWwtUXE?Hh9H=jW`y za`WD)HMhTs>D`upzWlJybLOzJb=zF;O^>>S7eEHY+&t13m`_-YmvR^IWk?z@$-B#X{<*Rp}zR%Em zv)-cU=Z!~aRL^?V^NF0&;7m2S{!=H$d$(;)duqwPbv<6EUg<5Kwl4kQjpGkf|M&J! zcwPVKan6Urd6$oemB~z7*f0K~=Fa4U$HVmGzkghOtn*CajC*&$@iTPzSlf0Xa2Bz>(lQCSboJW{ahWmC~v=`*QSNn-&_AP|FiFL{o(f_KlUDY zSuTD0{rMB`v*zB9J@xwA?%r$fC7=H9y`PY-dL#1jmd$HZpFb$->nm=X3=C#-S zHvg^9eqNdI+-dpTrPJmlwm)UV`nlKkF}LU3x7m>2d3m4FX}itBx3-6*->;neYTJ6B z?EATM`L6EcKCmy<@3+vj+W3jJ(_g-MeRXHvZ=tB)&&upVem`rjJw5l^)aY+_FG;?Q zUby-FZ=P>cv)^Xld-~wb?dKlvuj}cCz7_IWDqQ+iTH(n0`vu&Mb%(E>x@i;2=&wE3 zX6yC}tEJqZN_O@wKO6h%*~-0TdK-41i^;iekXXC9XiMY$H9cJq5|^J0o4llBUHh$7 zlkZGqSNy*JZAa|>iEQ_IdzbI>C_K5R;j?V!yrOM%ZEf>$O-@DT@ zIA39J{K@-ARG*y5C`~BUh+5_O|BT|Y|DP2uN84OyIRARi*L9Qc?vrn{iC_4*@|Ixf z=Q}6U_db$ekiU0xjP>pHvXk~{Z+)A{Ry#NL=_$kOYkx01a>r@ITdn1}u{yWKO5AU+ zyLR(i-S=I&uNU?140D&uiZ4>UvHf6VSnS)44<=^ZH?{ix&URDY?_F89PrQG9CRJ7Y zZD6{QUgt$yqiILP`<9gYd^DXLx-B*E?zRux&BZQCS+4o6_Br-#lE|^mU-UEhntZZi z9_8;fI{vZHe3Fch*ny~xQK1umX0E)w&n!#Xd}sL~9ebDaR(~IGyt;DPzG<7)rT-5- z-e1qk72UVmWKCX_?5i!gr(FfsOV9my>ulHcUR%Ss^;eI+K3=*@e&wra*R}=hjPrTQ z)&2dX+q|M$H#vRA>UF0V-A{Wh*CwB;yt!|~nN|0>&+fXH8+Jh^>-eD^aqS}98NP}w zOmo>MyOzboTt6)-#tR+Rb8a zmUX$Ag=5*SA=g!n;IhqA!n;)%_uy~zXXtq$ksH}V2{I}ue=?bbhEoyzX@O-(u z?u#j7?cTT7-+11awW{6w`}$h`B`UL*olX2LFZKNU@8#|D4{Tf3cD8rb>(;90QvUaz zxT@AOdcNAUsAcj$-j($_DKUsn{rt}K3CVf?z%_;tncaS!*!yx+IylJA4iI41X1>S>oE?mn1S z-21y|ac$@4Guw>H^fw<5dX>!C?0n(iHgh3M!D5j=4^*F4oT|5vm7D!=->=@j+OI~x zXKS8zbU({`O__DC%h|Mtf77~l`QG=rsl^_~&FJ|%jjN%w);M*G&ANtPKQQ}-b&=Gmz^lv|MJa^ z^r`-_(-Fbb=x2DvJ0D~Rv+lAo+8`cDEn8( zdfH^!@2}oelrDHJylkS@iD^0K)IOy5{FjM1p5Ak_?P|i|T0gyC(PmTlouuDgziE&? z;dt9WJ*gkrE2P;o_qClekH2=eWXff!4R0A!qq#TaHr(x>kjwun=e1o#xZecx$U|)R zj@tf7aJQ5UHNR!ua4!GrWZUe6^V+A_>K>feSXRmFR=w@@o0}`QvVT&G-e~)0H6#0+ zZwJmN?$8O8pW1kB(V8n+kvn1|+uxoNOW$1-9JPDX(VOcI&nmo!gk54?4?D1@)%4ViiKINImFD;*V_)liuQBwnsf(^po0#L&#VM&cQ6@;d^Vph zyDJwhB|^7b-?qJ;YRI{H*4oWGB%j{TR*zoK7=6FsoATqoIkM?Dt@v|gpKti;`_}v% z-@$8ze$mHw?-w|BU-~}Bws(un7K!-G^~gPvlBKK`_}G9^y1ny?#hiv-=9n322Y&K? z%XYkG%@=vu^P0~j)8-UkXAraVi!@7K-uEaqnG$GPSi56k5rRgIb9&~TEXgv7wuvNw^)Bw<-d93ohZv$^Mv-U z{f0gpcXL`)xfV`g=sWl2@e7{r#hVs4E;g2t**j}#wf^%L&E;Qs(%&?3o-8_l{mFuz zn$@AU_p8J2@_)Vec2-S+bQ$xu#Bz(<8>}zi+F(5=_l91^;dd9dCYE2h*%s)N&z85p z=#SXZny!~wT`#q|Ub2c@7EkawzkG(A>--=5pZ&EysBhRV_x5{txXqi2k1wp)=I(!y z$F?f+IqPp?yTq*kN{uhm}52n4-UGUre zctwWp%Y98H>y__j2YipZRBQAqE}Or_rkbhzIWzLU-(&SzCVV)ce?bu?>^8 z?yTNhpnF{Nx6N*bY4zrf_4g;&zg29~SNs z3pHIsJr(Aiw)y;Xx6!%htZR2Wf5<(|)Au6!*vM zh;ZhoeD|8=50Acgs0oPrWi425$h)8W;~$ehc}Md74sTbCo7;BZ`Q_y|JHKe%OBVU>bswwcKl{0my#d6_+7Qc4tK`yMhpB_G&Wm*|2X$|$fe(sJK`Dn z4L&q5$)!ASWVJbRz?tjDxdUaaHfIhTj{DpHVXk|~C3ne+5XOGP4>OqlojhP4d&o^{ z>f8lYZwmC~BXfT=-)OUcmveZ&NA_X)@@)?*C;e{ie|_u2apN`eXSd9IyW&=3>59!; z)(BjkcPK*R=FvQnYt>S%U$1DG@MW=;ozKYHsImFke}2d6kDH6v);C}M`!A;P^V|B@ z$GU6VUp~7n9i#mxTDN_dmxpO%v8m+guvJq|=53q2owwNh;i{*NK>@X%>iYRRj5wco zK9kygQ8{7NqPj~g&#XVpIafAA{UL|SJoP!s6PCYz^K~uf8DqPRpAC+kn|$s@rIv2l zypm&n!X0zfOE-Q_X}i%__e@aZaQud|{9*CVZ~wa8SmmOm9LliNZgPoK=mW`reYRem6OvW)#?z-IUC80K4R=bt29(<+T*yoYTe@AOl{g%VK;y$%qVtjdVfrsd# zQwtV9sodo_0=Uxkzt7hj~w4guzz;}`Fsb4MU`DiKx1xO!J`<$?B)A{V< zjs1x-Hm`e{pI>_PATnKMii3>J>h9)r{v??n{u+}V?)-bZAX-B#Z~4CeVN&e(+?*R` z7jhJE^D_D!Rb+^{kk3BR=f~Oo$KRSZF3HgsdX~9CC1A!}4Z(>SoAd)Dl|L`N7qLk` zq(pI%>*CFeC#KX_hH9TZ$Gf#&d6N9JYweY91G@zM8}`<(-23%x%H7_S*J9c=!N&~G zt#{1dc>MjU6O0o-2F!jcDL8Q+SLGeXs()csc}lj?xvaK*p7|3$_yu$wJ>a%6dCB8L zQZi>Rr99er|5Ag1KU4lx<^@e5d@XDniv$W(4}InO>}(r1RdaKZv-GFKlO{dU5U`K9 zmsc+l&pR>vspZaxmPIwf6DH2!5K&`t1utaZ*zv5bch&RCH#20o6g7m3E#F_9aD7q; zW0ACn=V#AJZ^D;s_>++r;?)%~DWPeKjN7DBv6aPd_9Qszn1{{NO)@%ZI3vm} z#3uzdnL^%u8?rZgl$4yve50?P^Sw-jd-}isPZ#Ms-LZD8{hDo-mep^z9;rZ+vv6E5 zV!3hEmZ|0AdvBY6M}@b%HqX3tIib8Ghto1wvU*MORP~p4D*0dPR7>hMr<|O4ZN=A^ zhkFE#{M!TXXjIMP{4i_x;aA(2z2iEZ@B8q<=Oqk(u8G`PdGpym+1A_Yk8^h<&tuHK z;I`#chy-8B6ur;EPrGf`=%|J5s*HH}y#HPKrFlNp|2&R9=Wg16Ha_coY5bRSrIQWL z=H9l8n6*KD_XPH1GtXQ64v=Vcu-m$3o(=CD31(fvLSf%|eaadFvxU9Iqi5Njs}M{6 z7n*)%|1`1B>#dUiadi9)FE#w1)%GzhdtqI>PR2Y=WyY^x<~E<~NM7Udd;WRH|I*!; zWghdaxcxn%xTo#-Lm6f5b zwx8aAKUMy=dGEY!{M*uY+<*U(ha>A+q`c(3m)|RXu~o{i*}mcX!C$O}@@KBy-tST4heU z_bcPp(<>&I7IUu4mMh9WwcXVA$(1i+nN5Kc=C3QCyGyL9?cwykTQyX%`qtihWv7r#ynzAo3Vw_{!9k+rKYT>ILw zR=bJ$(yv8n;z!DhavC1bzP)bx!nav3b9R?S|h}g=jzgXUUUj9mI18?5a3udyyPi)JbW%5q)&N?16 zJN0yaM)&jHs&ebk+qTtKSttMgvTa-KrRT*z|M|^&uRrPi<&u5x{lC}l=zp(#;(Pg? zefwX${%sv~|NhArAnNPSn0@3_fY#P{;O`l{N|baer3sh|BoO4hJ32se*OE#ef!>D`?b${@%!Cd_r3nS zv!-7E?Dy3tzR$F}pYQ#>wx|F7^2zVtSJv)7b^ZJIE&KLQzX+nh3hmE+4?p>RbLqbN z$?twg$lpJ&bpQVMU;kFEfB!zaw%&d*hyvOC&vDlKqskY*7nkfSmzw$PH;epz^-1sL zD{AG9FP;C+zhz(jgo_|*`P0j1-p3s@d?NQ;;?vx<<-a4HcfwTAKe?AlYZQ0q_XT4u$ z?~Yk?n{9V?%Ceo_r)KT8nE!C~k{=tsZeJH%d&{_HebUYMrN@2d%sYD9JJmi+-1uIN zsO0CJKYnTSuFtRe8MWr|>a#0+YR+E$RBHF}>qN*PAZTEEaSv#G+I#-_qt}mT*7!<2 zJ$`-ZtskdOT(8lM4?S}Ic-%hFvZ1e1zy5BVy*}sD@8nOvb!6l3)rgipwVuKGVfnAG zH?D7d`|HTfvbWyZyX^|M#d0rr`^)8eS#8ksTOw!O?=}4N$TpRiWdA%-eeF+=w;FT$ zw_H5yuI2aXjJrZ~QO&KWv$GZUubpJi_{2W-WPF9tDgCP_>rZLRZ&FoXcJe;!C;sqH z>WzPv>;AN#SQD(i|My9`pA&Q~Eq(t*E9{>;$)5Fzee%iqWk#p;FQ2^sYAXNDNx`z8 z7Jrc5^C)-1{DNEm*QoyYofN-ra(q!&_Q6NN=bK!Yyoy|JzvR8_h3ofLzPI$gFS&fd zK0d43^ps2A=XlS5C8bz$dfAG93KjPGaaI?;F?7 zox5${i}csra?$YxH*Ot0A7-06<)+a)*X@Nlw|^%@hcD07|9$h@q}1ELf)8$+F0-xl z^389dvfK7P+444ZZ?1epuDeBU_0{v+!r!!hzL;=ZoA36n*E!Lqx9)EXpR;Z6s_nV_ zH_Db=-gfvOj4eYdsu)v@-3X#eH8`M+*{YfHU- z>hghY<}%y9Ub^}1c_w?T`MrW!zm}a2sZ;+o#c-eKJ;CUep7Z|fjh#07F~|M? z=eP7*@AZ2a@Go2Scy;6B#gF>li|&1T{G(p?g$`{%5HfZ+n)QkblcRqFY|Bj_Pgz{^mVMnrnkZyavkn`)I0OLZrk4U zn`V!FHoUcM&t)#%_IAbLZQti?YxKIlTVJI3_knGWez(8w-e^( zEV{2*%GISw>OtR_%4uMz3uw>_x!s1qvx{L)xY>q zy<(m1?AmLN+tcN(G;h4lI)7vR?Q^GITvzT}@~>t0z4+GmMm20QGHWenFv`@V?A-NV zN2WjQ#i_3|3QJAXCu&WYH0R{uz;DTScQk9y=cqA{sNvhj8@z2U@3z{Uo7>W5Zk6?% z+m`qE^^yZWSvx#LJACFHZj(E6=A-oUGZUZp#y{BeQTzFxkFU2>J`O)u`8aHbdEL_4 z=5S};eh`q^Zp(vDBH5fa{rmNhAt{XeY@9{AL&_@Z)3ZoBcyiXy*wuK`wh9v zExrrw-!lKP!fn5+g`ek4o2?%!-SsEwg1GP<|EbLSo0q=Jcl=(k{GGq<-TF!I1g-AY zs#n=DB={XzA12m**|tBV_SL4&zxVie`3LMuZ+v%N=k8{;Mel@5cfFsr;+M$iwxvIL9jF`MFBpFxy5gWbYTv%oC$5)6 z=E-X3AG`j2U(MUAxz(og=X9=D-%|5dVc$ORjMnq-<@>I`>#m(&82_ev;cfBD&x=2P zb(V@(_x<+xwX$q{xACX1Tc)i~?^rJnnO6hN^4X_60a3qd^!D*B`S^8*e!TqaAHOt} zBM#OTq2Yjt8$Oy4z=i^pry)wx~x4?1PuB|0JJNK{s!v13B>kGwp zFK4<}=_%NL_VgEhWjX)L88_SK(N$M8WTSYlzB_2%`oB5%)b&fxiJb3J@Laq@|p z;AJ&?XXl81I1|I*wCbUtr$@)i)mcwe=dn)y-=Mqn;*C?Hc?)t^7AH1q1}#|^^yR0V z#DBNsldX)eZEKhF-j`d$J3%0LGVgu4NxZ*bZ+SSoc`Kt(Qr4!2vz<3Rv|i4;_sWVB zAD^7!e|MVso9a>5&JFhj8_TR-eAjGw=5|$oPvQ6OTPJ@{ZH%|%i~0LKKl5+-cg+uq zD{Bvac^_fQmHDhYdAY^)8Q)kh?@#_Zb=&`cvwpq5zvu7v{$E@E?Nm7d?+tpp z>lfGUSh?>1w`Z$Q%s7Aa`uoh9*r%t%6FrRYRaz>?|K3_t>t6Hs9cb$Ne8uzfw-wL7 z_dK3^f9qpe(42bxl8;l(ulBE3dhpt5Mex*bHE&y1&irAu;OT4kN3Z$8GrM*D-}%ks zUzL~s7nliQgJyTX&Nta-_VZIHPmM0qzH^&@R@o}Y+h_m$W&ZK2JV@K+AHRhE{_CH; zzUs;M`V;Rht@iB!FMR&^HNC3F_w(b`8};_F`JX;=JwIw+o%+6iKHd6ztLFds6)YWJ zpVqV9e(Oijiig+hzkC&r-#6>Ut>4p)KYd+3ZTpBIXbDt<;iKYcxM*T*A|C4Y8h z{ye3$4?Kwb-gsWao0pF{9bU`%-vIfMyHm00pX`x+@d^*BzP$_to;e)pW)yNqwzzSkc2Tk~oiZ#BPOBC_B3@cD~Z$O=NJCm1BeN{H^L4GNlHvjbCAY=O{ zx76!m?(sM7^?vl_?3{Iif9^^zSu@);^7H1c%MP!%el_ob#M{|5GtX^)ntt80s_Ks0 zs$H&g&R6X@6<_&5Jmv2dh3%ZmS53?-gztF%OFR3ye*5#EwO2z_SJW{tTrbtdK6yIJ zk6-@B|4L?Qh~~)ac(}ya&o^-GmAdlz(C38cDnony91hE!q7NDD^n1SRHyoR0wZY?4 zPoE*$%Bx8xQCmU7&>aY{9yAkik4Yx%?jjuC?) zM!pW)p1F4S&XjURh0N@`48PWvnwzgW@Nd)ERVwy&w||BPxvw>DdXWLz)xO6^ulZSA=DY$WDZ?jE+DNuu{ZFDo9QOQQyXg&Pp)I%blvh=&H4qV_rGp=R;{}BXB=yL z!Pl!>zU*e4UblY1()&_VYFoE{c|9RkJ|+JBhH9gmwsYUib1L&!-MxI`-N_f;olN;| zAMh<@?pD^^%_rTxKI!iDiFdD0zB~KGJLwDWdQ-kTP1$>KcgkGR2j4$6|5!V_ zjq%4aCH_}h=FTA}KJka%lh_b7TX)seou0DW4{iLEW^isr(~*f!bkCV4NOT`7(3$mE z?y%X?jTwBsuFAU%*O-G2DpaX(vBe)&UYC#~>LeA52+I1j`!{&}SOXU(Lm=`$|1 z*>p@~H~i;xwR_?Dd=Go|T^z&+nB8U-;^Gj_-u$b(Jem2QyT@ z3#eLkr|R967nWYnGFd9Ot^DZ08`@DH&>E59-4XJ)na%rq#SxBa!5l?$4%NM{*foF1 zFM4o4FIs-3(;Bl+8;-Z`%gOpAxO;xvz6Bgl^2)E=RShZER}P*&Y31n^m*TpnmT`vO z;@+5~yHP7wUvIU0;Nhx?uN0yqH^(d}6>$Dxy8?9PfX3J07BAD26SdsudmX*a`zeCw z<28pXVt&*9TGfT>$$8p|9ni0MdgN5GYu4l`({Jhj54orO{#<`VXCcF9e~E`~si*gB z64>9Qe*3MRQq+!zUo-cZ2hXU9S#~gg{gEPPEy+4L)%b1qTBXl5PdTZs;HxrGJ?4?B zQqfvF-&f+j%s=MNlFKeg5WYDU|VLMg#vbf zTl9mYxXwiX)t@7$czzt|dc)K0b~+-;a<3W7{Rgj0uidZzpZg@;^Y`Y8Ghg=Dm@)p= zKHqtO<$#AB=bNt)ou%h$xZKt#wVAOjeBbG9q^u++-Wh55;Zw(qx2YkOl3Vwj;rBNF zeCSD<%PvVZ^NByd1?gFF%}-c-R%64Zh1~lYB*bSOT;tz zO^x!;O}EeY7Vp39aA$+>zrfTjEHz7wyj1=_XD!*GBYZQ~J;fwR@`&pe3ri`^aMkwt zYl=6@pY7eY|Hz4cPvztt;x;k2uK3(6VYxY_#%>i?lvd_4u5EE~7b4eLFTPjQ%0I&{ zF+$#;)o7}ymkisc!e>!G-KKDTlbrLzbh?e*YA;cdsHIX(L9El}PcFZ`-(AGNG-yqm zS=VExAExbWSvoQH3%0R;bYbF^$XL+O#$yuVpvSzE>qN4GKjTlHC)x`d8kty4k{ssF zxORO9_fNltUQtIJCNgzNYJ@o?vq@<$;AE~ax|5-L{cguNmkWZFC`sajitg(uQk14^B!g7WjP1+1qN%BIoSw(zzDl z(#zN9-s!xhCAxIZjwwRRU!51)y!!SoVfk~NeBnEN*nC*GBrllDbV@?w^QQ?9tU0G{ znbTOrx+Q(VUh{nReU}|o-=1)AXDvxuFqz59_(CLOti+2&4eNMHLLJQ6c4{UE{m?l#UdAGH{RoVao9ng^-Jo4^-RAEFZeV5 zm3*|hYo0RSxjvV7B!gFc#+GZm(ixNE>&;+`YBUbS`SPx_i~f|B+_&@qeW4V zU*LwDAlodPFH4;Dtz=x=@0B!cFbp~xaF|`tsD;n@rNOD#x5qblCQs>IZd|a7>0H7C z9@aT056t9}IDH_3b;XgO13;WTfv<@uXlCoFm9 zEN+P8ITPeCsc{KYnz6y{>_wyj1x!?mbY|k_j^q7l93+$Mm zYbVGte-;W35^Kz< z154wYr+t{Ks`WC6ZJJhsB=c#J0!ilSnhBQ7r$sk3HHyZSYX3avHT6poo8EV|*rVlP zE0?U6j9A-X%JYD;{9pDR(P~}wsMSSllN07LtxI^owS0#5ouq5Ui@s`IpUM-nvSGEv z4ll-V--a+oB%~nEACI2(rlq9$3s{v#Q~^M8z5JGkp6tJFC`C zYE&2fAj0gg`5=?+!;Uz{OWs)7ATCjH z@b#hYn&+-lzo@dseNwBP`ToJlnAJ`u6E^QNe&D>$;J(THXC3v;llMOq{i1fiGWg}4 zqX+a@_Z&SC%~dhGal7aTKIZot4`SKwg&xRbE7N{p%XTmLz;B*C>l^qbemF2zOWau8 zz%ThDfU#Qg#_O-2l=pp}==IBxS-yI5-Jx>3K+o@n8~hpP8+};GWS9KFn6>8If#+O5 zni};*KBzLsYdz3r+ZS};I#12ohJ1-1ZjASh8q{}$88sd6-%-|}w<6dej_t?tk{>;M z^DjT-wyN=LU;pC6*4t$??f*86moODIgiKk$?B&!pDH!7J#FZcK69Vw^7EaJ zzcy;^^)57-Vbfgvc>PB$yM*|?rnf#yy_>yk*BPPBXRjN2f8wpEN!Z6SDgV&5t9lV# zeKU(v1lCVa^|Dg>xsbz8rpWo^_QdI$L6xivvKn`JPq*Vg>n*Q~w-}sx zYUJ!UFL9rDwcFQCr@CFT=K7>8i95Pv(-*Dk2j?dGsJe?399?Ny=Sn?RQ{{13IXx}?JSj?4D!S#w9=Pfbb8iOnl2Ic<#Q zO`lrD{YGNp0|WI2`J%qVY8^Ypj~pp}{8YAe4^#W6&7U`2T>NLw9hsK_E^$pSKW#g# zvgM)j4fUD6zf~sQI#m3|wI(fCEIiLvLqF~Pt)jHSRWmy;KGol#GL2)) zA>B2zb2&ZdaXv0B7Jaiout58U)53`_WPSShSL!Zvs`;_;j52@z`fJa^&NFVEUN)8O z#m)E~(&6@JCaMe9vHiZ}X{pjP-_BTFFq?JXjq~4HU5YDh=GklT7VjGu>ZSK}%r6XT{U>TB&-N#8%CFj6y#nVxn3R~#)7&o=y=_*}8ExgyzM8v_suXvh zekSne-?|L;zegV5@ZYd7|MZm%yBv)}$1$QglW|K1P~TXFZ~43D?da(%ZMD1}Zi|0z4`$F|%>Id%KnpP6rsU)H^> zZgTzRGx8hGE;bX-(ce^SqmZ8%Em2bO;^9O0kWJQe*;gcA5Sx-H`@3`A>Vwl*G$%|n zX`C(g#r!zOwp@AL-i0@xoefCM`q%olDDdg|8y}vzb%ojVoWJ|D?U1q7f7yoRdi9Mn z&Q9IyrlU0b`jhoHCaTmQ-d34^nCYjwb&y=|id{3LLrV>`&aGegeCw>TF0Px`J6mLv z6Sr*Gv%`^Ld(-XbCI%l`>SXl=H6|T9?&9dzug!eu)F;)i)AutUR9bEEliluwpxOFk z^ZdGQHTrEhlNQpQ_N?vLjQ@e}5~Z&jOb`f~@0A;|(*F8#Ga)68+Wt)@`f;~2*xuwH z7yhck5tR1mhLXM1x&EiF8{-RAvlR~7Z!DK==A6!)_m8!I&IHSa|ARlasknqS?D!(W zH+8E--zE)i?zwM$p5710DF6uarO6f9hY{#q8yi@7i6I{;Iq8fACMYW`*DG=Y6-FU!JsiE{~Ux z(;STy)n9j}YD^J$_&?ga`Ro7wl^mXI29uooJorvJE>xRz*YW+y7d@{6qC$#&4wuh4 zKTZ9*WSNiieKQZa+s;0-8JUlnPJDA{&XI=~Z?H*j_B`Bh%}V3{EJbHqaZ$m@O@H$> zl3W)TCtaL+dG{Nw4aXk{1}Z--Jz!?j^XU%r(!8t%Q{+!^KW$ZY77UdvR{rXuk|uH_ zWP5|HzfqROaWDVny;G0e`&Hzj>wf-iLCj8ZIgvx^nJJt5>&%6i{T6PVJR$eTkIY5; zTA2S-OUar(ZfSd0*d)V#q-5kzWKnpZ7Xe&ZY)Et__>Mus^tCw>|Pe0mH7cz2}*Z1x%9_Ghl7d4Boe)L1d{$V3b&# zce99u{y`amdNC7|^uClcmN~mwk1;$<(2+F%ar4E36;obXJOBDMX_5ECl>ssW>8HO~ zvh6u~!L_gKwd93oPg&3Y60pioY;=E`%FHY`>(EZ6b0U=nIWu^l&i!`&6q8vNcW@b_ zdu*}ItL|>s{lP1J+S%ggC)au_hI=(gR?J&CO=;cZoj*&nHr3fOU#||&GW$5!SL-D& z&z%JgXL)kM4)pTeS<#@&lM{Hrm*>ushP6C7p$E?L+*#8QEwRIual28$YNov82WG5y z&K-EmwWGPwTBJaoxm@c3QO!Jtc^2jyvzT0q)+$y zCB|HF>AJ=t>pq$Jg-z!}`p!%KxHBvNg3VIyZJC}oZ@Km?VKjbN9z3+3c*Dqb>`&EVgjJm-sQAsV?n7I_sa=jrH0O#M$Zs53J|;v#Q~~#1CJ_{l*`5GyO|=z`uU_ z|A*H913mwzJn(1zbM!zw*NW5yVT|?0AGR~O1Ta=8H8L37Bsl=m;^zai3?6>@15~p zWc89>$&57(YCI24Cb?HzntHu``bEQbrh)OQTW6QeS-Nu4#h%8rxWDZm=N=BZ^o++O z+<}`dN@GC_qfKD8c)+XJm1jK@XBW%;o7-JqsLFS2dFESx?`cXs=(o_NQO= z)GfTsxqCcsf10~ZD^rtsDVN2Z#>1isMhRLAWSQTJ1RP_SXYrj?Fa4hI9F>KirWgmT zYxu_V;ADaFR+%jK>hjnZr#g47in%NCVp)T-goP91UC9^g8k8k1f*5TjUMy^w$MYq` zL7%Nk^MM9i-zT9vv)_LS^Zada;rQ$=`uAV1p7bqw!F;A)#uwrlnI$9^G&J(?gd9*{ zW7AA9U~b;~tNr8LM6H*GJP$a(Prs{CHvdRPt<4061HX932e;9 zA_kKiXL4E0Zrm(dz{gy%>4Zj1A@iH9%`TO7mUGURNLzS6^(i{H1k~+}W_)f`u#PE+ z=fO!Y<*jmB-*m2+GH*WkF=qQduc<$6&ehDz5;b#t=2ia4a!y9yDbwkVJGm_8H+~j1 z=x?m#+R@O+En+ag@h8`cqy?vo%eAAE(Pm-gF%>y>u|%H}hlQ-xEIItNB*M4dv?Rit z{lU$QivoYAOrO1>X@Tvh4Xu3UJGBplnI*2?^fHYtFYJIW&z(gL(ULo^N}t{SaqjIs z<$2GoD<0*{JAU-e{biO+_r%xjQhrf&ew$+LWcCXYS7H`bpT7p$&b_ZAf~z`p%Xb#f zjKy}Y^5Q4Bx4Z~QIaF2@r?6EwGgpS4=d;ca#w`}_G}#M2-&oP>)0t@(8CbvVv$6Js zv%fC2+&rLTL&=JUJ{2tDE$|}Tf zdZyUDmt0fc9lY{A$nSEB;2QIjt8eVQcJ)HSrU3q-2`Jab#QBcnf{}l(K?sZREt!$_!e{6=1xsY2@kIqT=r>Tjncs8As=+#iE++w5e zW7d|s&*pGW(gpJkvkzU0tzWz$caPK&iHom}KL|J<@u9=!8SAH}XGRMu-&ZW=dY2;2 z{UG4>ivrK>7d=uZH}N$Gsf4;dGq|vOyXU?foh(niuG73T&nn)$$7G(jZGpf6Q>Td6 zvE{uPOxb${d(YcmcwWD&w$3Te%&)Zk2aiWlhT8o9o_6m8?Cj6k#UHbKuQ0!SNA17m zr_%$j9(ikg%C#_We(s+IHP7CQeQ){ubh*s?s`U%Y_g=qr`|j$GZ{L}IDf?bjv%9+Y zYuWbCJC`ln^zJ-QLzeS2-ee{xvthiQl!N zPsyCjURffmIgedY(yT9EVtixaC!rG`X6^$ddfyIp!J|JvN+;+VBIb<^wzxAxWd1b)>M z`;hnHx8uV(_YYn+e($(?a*nd`v}s=#opvhCT-to2KDww_Yw zaVU z^K@#X===qZAIz)YAMr>$Zj;O?5f&Z67`v}ZY}JNj?s%rMM;~(h>qL^IT*VU@PcWxB zTrOIi#-zNzG@R8mBfqcIAm&o!k;kz=|9dj+uU1k!yt(brKlak} ziASb6El#{Dn|@!o>Erwty&FHTl(mjkOxV}3U=QQ0_4*gXe?;G#&=;}mi;kz?n&-7E zdN=inX}MNs?hX8EIj3yHEo~jEj18|&ZsWMU`d~!Mg4-un{gd)G$kF-1<7J?6`gf7e z!L1QZ1>xIL<9E+q?Qf`Q8t!_t+WiE>iQbTU){j$e>1wYCWPQH!tDvFvSK%*9^jFqK z2F}>KU3IJ1e4(E&)L%{O6&4LNew*ullV!tPDGj|^$1T}y^UJ!rnD=*0+f}#EKcK_z z#8>kZUnfk^a*M(v_UL`aleSZzMS~)EC%m|LK5@>RhSpo= zA>xx?PG0h7;UuPW>2h)nf~EZ%9-ayhkZw8NST#?k;PmHWv3&}U-n_eTJEnhk;OV<_ z8Oy@MeAe#2SW=(7bE8T9d$Db`r(FNMai3K`y+TOMdiigG^WB^Ik51z++|FNkx_!c1 z=a~1-cV03_E9LIIm0fILZ*9K&`J!e6Lv{UjADIl3Z9ZoTXU{mS_HOQyH>WS&p1ydi zKOfI4M_K2a8iw2F-8?EMabw5Lt6BWA$;~U)1b=Nlx3O{exxKm{_eDJ4xBa&Hi*tN` z?2pv4M~J##`SxaS`T7o}6&}(a_77vCO|{bnCRf)^8`j>A#(BrLXt6x^Mdo@5jsZe*O2$->CoYO?XG|_V1Rx=G`Zs z%Fd3l`(W_Hc~;CMgP_xiOX?CPpJw0s{(Z>g)77g_KHZzNAy=vB@sfjTzH0BMHtQa9 z3e=v|TVj4ddFO^FjInAVdJ?MQ3X>GszX?V0NlfL_P?nrtyQNp`rPKNZf4}KBf{zuN z-^x}LtG*+0BdG3*_Vy_i=NRAXTxqUee%!2Ue{)v)gntWG_*(qqy`~nIyXVRCYR#CI& z?%I&^FWjznXQs)~P^dK1F$p5ii$ z*qX575Le3Tr~~IE9^P5QXl>rS{_G8@!%Yh(#r-%tV}oCTZGWwyo52I|F#>g>h!FssbASvTl`$6!F@CGSSRDDYavs=%Ii)yP1svtAQ^Ug)f$e}?BvKYySHw? z7cNwo%h=apCY|(G$ZY;!-zbfAp4G{z=Q+N;in{T6`rEfbHx7S3nUZ$C-lYi2&h%X13uCZ^s z!Opwp&C`u}r+HnYKc(Ch^W42L=~!c?pM8-{#_z1`+ZtQmZo0DU?WuIx&3egCH~rky z9a;T)lVjJWZ;{hls}DXb`J35O&C1?fx&BIwc%9feK^fkHK7mMvu*SBWpUq1O>UR{j zZMeG8XWE~$6@InN@h1-Ce{kKOx#8K#!wy;naoLtL4Z^n0F^DzWCG}A2{*3$!vp!ti zx3VUf)9(UrR3h{J1y9XC@ZNH|v)t!sEc25~wo-pSuML<|qSfHKa_h4TCF)7%M<>R$d=b1QkIK8UvK(+eeaog!DI27o%|FAk; z_FfdOI`z-r1!v<0-2ymOR%kq4zxK@h&@#R0W&cg^|Z7+!l{~R7Sd%xiUdF=w{?)@d+{~V^TWvHF7|J$7Xd~^0I%-nyeXMdMa z{W+ofZqYxXDStv;{w1mW^D6$=wD6_qh1FbM|4wCp4xc3$!pB*Z_NR2x&&{XKJ-zgE z|FiXypPnyz^xopb^K(CnLq9yvldG>fHeb8yRbR=RfX~kto|J!+x`au6>yPS;lkzV% z#Rm30KHvH=-1X7=Nk{GrvDSx5)Q4VqeBRaapVs2=sZ;+{W_*5rh@;58Nh`9~e)XIG z%^$DJ{QMm9v7GV8=fppi+CQ3?e9(KaXyV7`z4Lx4$ckV6^E2zycJAx;VGkyW)w3Rp z{J_2|$NYxq_5FEs_P?96U(Tq0UeEq4q53$XdT-G`p~-(jo&PQK_)}T*ugdZA>P6w9 zQ~&(T`uzMP$0x_8JrebMQ~#~mRJ`-c&-FjE8~^-V`QtYKpQ}lKt_FNy_k5`MKwN%j{~%TsD6?ysA(|KFVbj7If!J^ObF)n8Tp zH%;@$>eD|~cmFx+`R8ZhKQ_n9uNQ=uPWf~7+OzZhf+5_TtIqw9*7=-1b?#}^FZ-XZ zSN#<3fAl`vgY)x0UUxV+e}Cn_KSzFKH_ZE`EGvEWkLjf+{O5R#4|5f$hH0>YRhkj%)nrHu7^ZEH>FG7=5>wCBSTz#D5lY7&v=(F>~ZvKDy zXXWwx%cB(QeN+E2t(dHysvTI3#oWD+2_e1eFb(5%$c*E$_?Vy$_0?|x;GtAG5ZrKR8G zg89d|?gSrSsi$;6;cs7bh*e9lyKdpR-zBSx1YkRrpt(&VRCG+J!UIc7z_=Iq}mCXXSGbr+>H@d2HuIm&<$1PSm@L{y*RN ze_hZ2b6o#+&w8#|eXKscWV80ApH64%&1e2knfYH~&-oQQ>o&s80RFN0StZDWsjZ0k2{-1*Y~pCd7WylcUy7&!oDAsovU6|1TG6KH6S(OSyh>%0H_h z_2moLC$B7768$S;!3Mp&m!{SIxi8f>-kYuVHLmAM^~y`r>ZD%p%6zqM_L4WdRz`db zX-@L)|Cw?2j%DkWm(SuRe*417z2(~%rJWAN)(iF*ZrUHaa{uNHw#5wcyEa$3O+O}KTy1y-%bLr*Hi1#^5FVE<|cE#`X%So3fo&P*N>t~M2W{v-j zFN&M8dfv4d?rP}0__ND!*8v;1{hRilugST~BvZ8eN^;3U8@KBxl11v?Pvd%Xt)?bn z&m-leyKk=pt^&ueanQciD~guPpoSv$!2g>g;jp>?!T~xO>LOjS*+v zn*`A z2W6~}%Vsv+7EQ}5-u$y%vT7I8%3VvJl`Vbt=eFqc_^=1t#J0EVJdeMSx}W3uiTgsw z?q_xGUn*4pTJ+D_v_EUZK5ut9d0*>G*3?P+r{4Obo5-@(p=nyw$MmUx=bzip_DR{7 z-|gQujc4)Vy9`XcR>7iy(5)Kh*taoo7@v@44J|ApueBFyzk*~)&dZ%YLy zOm-LFd2T_~t;}A>x)|>&b{5}-tY57aigsPKR@i8~^_l#$Wc4qFwPJR8F7oD${j-Zc z7219-X|bj_YR0U(f#0vFt+AEqBYm*0m|GGt$2luC9{3+qo|H`Rf;a z8zQxrtEOs8v+iCRxWQM7HF}9^s<|}N?yJrTtBW|^9O^39oGx<4J^PiatKa|d*BRnp z%KNKiZ5yt>bKW_B?PB}7>6fc#TxM5Y{@u$jf9f2&6LaiVlvVX#dRel@Jocr@v&E)c zFBkpVAL+h((fRg};Hp)>lI0EO(}MEOpSn|av2{7~_URY6)y@Y? zsv2z4*Eq2+MQ!$m)~`)FFPJ}eG`%@Jb<_8gDf~y7*~1=85WD$QX^DDGijJton$QJ~ zEl0h0cD>=;FQfcGr@LWw5X+p&N(sA_nAUCL*s-dwVe=`D9Zh!&TqPN&Z&iMvvshxc z@UCi`MdL) zZ+546%N9= z`M1QjYW{|YKe-|+vrMZ%<vyVZRItNY$1|CBE7 zjCOop?e@IdbZ-8Xl7EeU{}wL!JlAY)zC`?f<@o&(7c-~oUi`WL|Jt^>qTk*0>{sl# z!yHqW6!UNCgHMxZp3cvi^RG3p&ME8Ls-1swE?8;*YkE9I^v3d|Pi;k~*Dw0JpZ8Ma zNAIVRh7pP9KR)+(&F=O(yz^SW(AsK|Ep@3|>OwF7a`b#Ho^xJYb?yAEnST#d{BGG( zyJgW;t=n0>f6LR4PCfkksoJp@`D|y)qkkRPt)5%Fx!ixk{ymGnygRv^qvrdP*u1sv zxk|eCZ3QdySKrU&Wc+>5>-V>`-;b3q)~W0M4%c~mJNx!~?r+XhzID%dE8gw&yLRiF z@7|4}?tU9K z%#XhPk72`otL=~ODn)PpD|@C+TK9L#qSjiCWgp*Na@Zh$;B9|f_SLj~@ctd3lQZYsr@PuO&oXp~evXz-^2@ho`26g4IgiPt?dff(>*cy^*P^=J>3&iUoY9lJMlK#-St_w?XGRBxv`Do z?X3hq!~KmDQ*U$FIkSG(iuVfY>Wq)O=6yWUU#`DYtG5_qc-y>~ZrKIi|Q?%5Bf zs86rf+v^?4Xuqt{_n^J_p<9b<9!ky*>VYJ)tl zl^y$cY-J{k%U71SO2#oyl~VVu_h2^P=@F^Zq_6jn!&NOy{A7rT=J#6Hu-&I!Pu0gy zoF`W_k?W?o;ql_sogPPJZdxq7PSZL4ij&(39Pk-I;AFa5Q?ODVKyPEkxvYVLU%>G?}8d^>fqEG0DZwzd1)c~?_% zgZp$NqhhapI~iyl&l`FBdXV%t`3>KAlJB#u^!ltkP5ASrt4A2>EzdeXpLYF4k=VYS zrR^ElCT^b=DYTX<_z+1H$HWk@x8j6FYI2Ia`438 zt~S|x--sn~FII%7X3RUy_~Uc_{T}Ir+t!`Wb}u>1{bW~%)Q$lEu<&qq`E8*M?iZv$G2>4~SF3N$tbG`8KWxSM75%H6Lp!&Y-`3fCIP37T)Q7RM-0znxl)UfoY{@#C?eZ-P zC71gyu6Ew(u~&z^CFG!VYgujOo5R+B6EEvpIoxudKJB~b$A4ngFPwAu?=pN}YP=;n zV%NTy^usdkZ>(Ck)%V?+*Tt7TWocPxtV{C6SG^x^coy9}7RkpDwXHMbYuYzW*PCid zVfiha-(PU$Xz59LAJ%bd^ZI0yv_(;!72mEpO*y|$q4VzSrc~L}DJSpu94}sdZeLXQ zv(4*We!k(3QWv#YSh_n>!L9P!)tHbu9?qK23j6$Znysy7uV9!sztmLtXXN$7qmklI zo?Uf4WZ$JeZR3hBM~bAs@GtqfhWpPYi`R#e`fg;dvHB`}I_%~%^=VVnW5qe^qA$H# z!+malR(i3V?7_PHMK)}!Dr|Uc*bL=vYge?Wl(Ai&@$rV-UmmBZz7>^kR-8=M`E-Iy z=IW!3OS_JjdC4sl>HZ~iUWZw-f3Aw$Z7&RnH$O0)n$A-;fsF6$z=Cj zIcCW~M~{%`i=WP1(u)3k=2QJ4Gdo}Q`Od}8!M>l#M%Bc_js=F`$1OV^z7|<71`F_*>_iZ-L`Pc zTWq~;T(vG} zp1Hqy!SAAyQikHvjwi1iPF_u(wAy*bYUeBK_yTrGb**dDialDhWm#FM-}IQX|70z` znRg#wJl{Fh{$ajY|ADCXg);yCKH*E1>z`u7H`&HcuhM2xrA^S=j{!@MKa9xUaVhzX zdv;d;(~_AnC!g=^UR$$_`-jHsqxME_aR=N}xBuvG+w^(knk}8T7HL>V-CH`h!8c^n z)JDTaSMT3B86Y8{oc7tg{8-d`n;f;%smIfHex6Wg-65HZjmDGg`epW7vTd&p?wSRt7d{Cp$+OMbbHx=#eYB=Sub-%QE(VD|WHJZsX z-Mc)4uJle{^lnPh#aTy~@+YmR(oB}&x2e%omYUlWrWYl=ReWt>PUx(LhvsoxYBUdP zMOSG)-d}ZHS7>KXVBt@h9dl0Y=m{<0^vvP6oK`5=o#*G86}MvN9JMT4VV*)Y(TbHv zQxBwct50;8?wZqQeO$urUP9=h( z7QH!BC+eNd+D-rY@0E5t{YzW%qnhQ<*|a}L!Q(=#4<2P4i?^w=l73mS=2?E9T77hZ z&L$@REkC%oKH)F9S+YHV{g3XWKf2HU=uZ4O``{1nDL-awek^x87_anLU+|~*v>&q% z{)}ex^>62r)$ads|1|3q_wz?O z;eY&nqQy71tm-+D!=|Fs+Goq>-+E_Ky-bzsc30&f4fY!5+L=kGi;bnsU4H%*_+zq0 zcl$0bzwRQVj`>|%bsfAcXYIExO5F74uHfF&mPggyZ|M7HFR5$ZQS0@8u0~DxU#`~e zQCzGiwmWsN2wlXV&EBag;8*!&al-G1KYY*I`OI&BalL7hZeh0DkA)ASI_zf$=FXfK zo3|=OxJ>R{R7Z5=?7)LMvi~QnQBvQ2Q%I3tmb+_@_NVSMj-Mu|OB@agtv(=@az*eF zhv9-}PVTQR*Dtf*&9iT%6Yxoi%*sI&Mqt3>$g4NB(Knp4$R zyuaGBM0%@r=gru)iQ=+pVxI-fZ%zK7{ZxwMCzcRW(Bc)1>8 z^JthiN$yui=(}&%x-Y$S*;c<$;?>osUAK7t-*~BXz4K4(gl-Gtv&Uz08hw7DWZu2% zy5l96pQQr#Rt7BB+H-yO?B8d9xZ19^D@n_ruw>&(j@U!5&gxGRxqfC_)%+*d`7hm{ zuwF**mQeB+vA~~eLL{pXrZ)50IXmi`9lGi0==e2MWXJ#Yp1Qu%-v5`4@+!VQwe{Ki zpa;kHZ#b=%m884m)+?oL%3Eh|J?}L+>Xh(1G?^PZskxsw97@aFdX{HP<&9Izc23{@`mmm);)jLtH%r$1 zD-sUf(Z=;MQu~fmYjdQ=m&@&UommUcW)^PKYTq1U`2Ufp0{f+jI*0vs3ID(5cg;>~ z*83y+&i8Y!>IvPA(<|~Z`LD#jKPK{CgSYEF%`Tbg*)KV_=3Le@TF@Nxq$T6u+^1Y3 zH`m2JnYHM|$@i<5W>1KD67tP;$>J0JjvKbj7t{4)I^QAXKJk@Ny6)*Yr`P!uxoZ^P z+jOS&&8ZNMHY0J}(=n&ko#ECgzPahl)HkQjykkjS7d36?ve32@&o^Fvy1%t|zrih| zZ0TJMTVGGRmiHhe=VSG*61nK*+EaFBMn0Q1<7(uDS3VJyA5Ooy>r}m6_w8N5&6dJ) zS9nj|*{W0Qf991>gw~4Je5~)I#m=1AwBXA7)GCLA?9*7~({8?h^ZmHwC#xUJ+K=k* z4Zr#DyK+fM`!|h~FEsln9si`UlWlQ|di;W@Lrh;?wmO(jKXbel!~j)*G#ztaTH-+MaY{e0%7&pDE&mT$VbPxDXPTfX|o zyAQ`Nx%-gUChOhm?jOCmy!FBPy!SP>we9MNe^~d9|HmDd1rATb+b^2U3fXU^vwZgU zs%Lxe%}IH?-`G7oy~4cn*YB`zJT z`QMpxZ)V;3sz-Zwso(3m_TFc)=9UFzF@D=`J=Tj^_&3g?=6$YN^?B!zn$0THXY0-r z{@uxR$BX6iMX|5qZ+4Uje&Dy(Yx$9|-aaoh>`Mij^`Hks5imu8@YxaFT6n{eC z_g4d{2ty39}a5&aXZOg_Wz@J z5p&qt`zqQCXX?r?(byl!^uA=v`G@%uXA<8xUB2|{`|rEI8Lg{JKTOu~1ooO|!t zrA@-VAGZIX=x=eUA!4ukQLQHzB3kQ3{_bc0dSzqRvI|XCVNbu*e>LY3x^SF1^2dxm zJ2@8l_s^d^W_Jxi~97XCYP`9t+tPTX1cPruYZeID~=bHmp8 zmCH5$mi)1^=QgmPyJJ49s=d5tot2^e+$(ir7d{C4E@a(0zv$QgPsMV-B5&OC7oR%c zb^rPEht8aTbmzR%r1|}-_T9$z-K+oVtbrT-{@Z7cvvd3FrcL%6GCa7@kV=9z5;r%ulIpSS2oTZN0Ia(&}2n{OVhi?{e!&Ae>aIahsJ z;@-fC-`yftn$LUmX}@H2z{FAy*V6VWhFa#m5gYephNx^<)@sRhY3JjPdBIoeuQD2F ze>nTYh2OvHkh9Cf6YTFZbJVu^-Mw72%W~P2*A;QM*0Z***|+fcv5QRKVwqnTUI{Vn zi`kzqvvb40lIMRTJzt$q4=UNY`CLhO`Lb@el7*UE7JQ5J`#-NxKpB=9cM!R!gqAR!DEI zn-)@)pSiGxKhj8q=`@S&SCKjf4TqRjhcc%<_4YYv`Rb)oP0y!Xi)*3rvDd%fN=RpT z=$?4JnI=1!Qm?3!zc=_&p`XKVN1 z>h9EP>tzvh1Rq592Fq=~b>Svg@$rSNA8fXrF1~T+;rxef`XX8(eom?;@3`2XpImx^ z!p{|a!RCVS>8C?q_Bg(_es$}9)3wRMCbg2s+?XrpwVy9EXF3-D$mTKsk}2+1>k6&b z6G@-;~;;*F(U5;zN%-pBe)2((xH+yN`!J;cybYDz6c0;$fw`=)N1NpU2 z#bfi5-9>_yKQG$3_?GvXS(+4jYYMEklbqI-|)muZNk%@qCRp#D-R z%0cAb(tAA`=2PpN@7=w3v`s+y%P$qKkDqV9``WRtU}C|KMEQR<_S(;d7}kjy^kmpv z{o}l!@${}gE%x7}KOFzJLTt^)2OZw5x0L=I(h9jZXW10~+0K)_o^tbfCm0)h`z(3T z{$PWO$K%e#Voi;dq6Zmv3g3RF|5)=`aGPth&hibFn>3eiNZF}9%Re;l#;n=D&6TDr z_%d&3%ud{RP$MJwz_CZOFT7d(!M8BySr^v3s z`TD$DT^8SuJkT`Jqv=plVIBXBN-#D(N*ldne8fe0uo1!HqR-%Diizoj=}Q z!+AC*^U3Pxdm>AooV%R<*Un8@icPyfE+gCIez1)Dp;E!O8$)Fm+UKzDc*C%_h`;R# zheY^?81E1RjouknqHaba5*u&Kx$2n|BiihTY8+LDc@!oyGk>Ao>8oz!U&dJ)?=eo8- zJ>Z}C=ZWj}m`tAhWBYvL{(`@-L8y*0)C-FSqA8)mT*X{d&iH$F3i3Ov>A4Y-T(Cu{TPP zc|nb@YYl(c(eirDeeAXIHSHUI@IC!_H@xfp{U!hSQa{SB>U%HH`-3l0(YoWWv4ryW z^`SNCOTWJVRc-pMd|7FY{qY4gipRfu_x`9`+L5oZ;Klp-Pky+q?U=vtPqb^z|0P}T zrw7&S|F!SOxs;E8XC418t+}s$`mf)n-S4lz`f=_`$9o^KP3v#i+b2HRx3TN}nk}1N zzd!YGDX-I(;pHPglXo+< zgKuX)xH&6+LRjpT^%tBL-_v{}YZLc*n$lzQ$L|Z`+xVZBseRbjdeb96mPMqaqJ2wa z*$w%y@99CdngQpcVmCvt4 zUb6Li`k|!bZKT`j^uPOFOgV4ad!ha1hWF1J^7kLGTp;Jx>$vo4l=wu4&zUdRJDfHT zRr^y`+InqXTkQ;u?+*oHkHowdcfsTgXPCNEWzYV^*dDF?u zPeNsbT!g%y?wZV`Y27GrJeX;xH$Q zOC)_4zY(yWWoN8k#PnGr((nI#kN^BjE8Sh3mR-)a$Y!(t@W$$H;$eArCHV>|Mdj<8 z>U&j8R{l2JC3Tjyk|}ks%kssnC!Zxxh&I+N>YSJ}=k=bu9(}5fHBCiIrEFmp- z?yb(BV>XG~{?OLk7PW8k>1M91 zO!}VeePSW=gVQ@}CtQ*<7501Xt?i(udTg1*$tQOk)zlxATz&aMLa1EAZ+q$Y@Vh3H zZf5?xm#1H{F>9Yt@Oy3 zOwrx)+BzGi#joa==AX+t*Lt$!^B<3-`+JV4ao+m>+HB3-Z3~$!pL~+utNf?qZ;asY zEcLIuR3ty-oQ_len9r&CQgq=rzr2FI4VxZ&)%h{ZEjM>qF1qb)!qI)2>rzCo-M+?K z;--F}^#0w_ZJ}zhKF;r}CY!R~zbt1_yx{l7Q%^GfT-fbaRAzN!&%V=@)t;M-Z0}E< zwB%FFi;c@e#1!l=Uc2=A$ZG3VlbQlGy?awivlgt>%G|G>n#miK7kO#tswYo+xw}_S zT5s)m?mqvgf2kA7+=Hi0Q)$1v{@n`aqPzZ)QSBk!jG5aFQZt!@a`JZPnwUL%>YeQ) zcichRPKU8F)B42Ha>ZTKY#Lrjx!30VHL0yzHt*S9mYqvixSL#xc~JF+b4T1}{&h!9 zCLG@DsAki?VqF2>W0}k5u?&6l&Yhbc)@JdWx%suZ)30r@jcTv17fq0}R(SfkZu#Q1 zCyzb0-G1rBeNMrtmbItv86A1gG3C}~*@)Lam?ES%@_ae(|7*hvhRRxVv!k6dKQF$_ zkSxj)%24xd>d@WH{OiL12ODx#Px6OIot%{Z^U|$JiJ7JSTUFO?ySCKk)ij5cZ3pUR zSaN3RY+{KpNO7oY?>u^red4uswV6+@ER88wGydNGrd)OM_j3DdGj%LQH_bnGY@OAW zf476f%S+S?+2>zwEtE}N#isd1=Vc6U(k(ut8vPUZ)79oKE}X$wy0)LuY`QGNzPjql z!>hF<3#23JN*Jmh`%keCu1~xd`OvjMPpIJWH_L|)Ub>}Snb()(VC5qGjOo(Fy=PTs z)u!AE2v)dwxw1lZZe+1+gjw%}w-R@bSx@-LCQMr}hV9S(i4;=jF zGm3beQ_R}^eQCMEOW!(Yk!pqu8bWFgmfzJI)GowIFUajso4A%K?onTtzf+etJXP z%!_71;?`V38N;8a^&2oThhMEL`4AX9yL0rcgAScg5xpT{mNxHC%ply)eFJ?y*6X zQT86IM#u(tk-kc2R(F@BY7A0(BI1c9XJ(uJ`4MOox1y)=UAlt)ti^X;Hau$C)$z)O zahC2Dmz4ImJ_1aFye=l;9BwAUuf4^p6kfI5(-Ut~y!BJ&LRO;8wR!47S@G&VNB5YW zSI9S3n6WQq#C4=`I-@Xd=$(S))DdspoX?bg-E|YR^(KFVE5>b{Dc*69!)D7Ru zZu_j|ULV6=;%m{IA-wI^#1A|dd#fAfajd^^>Vss$)7}sL9G@3hf9;syw5vYg^E2)X zI!lz@F5GFK@E}z#ec7IyxYM_5T^Tg^Sf!=HG`hI6#l)Idv@>Pt$ z+5=&~U-@+8CB&J|m0#4I&Up38Rda{7#?Czv$1t2AA5+F#-3VbF9!`Zzu7&X5&>>3!#Zqn||qaywhb0ak>j%zb?cYef?p4OjC0@5eA@R0*HfvN{YmrgI-SU7>v(q8{eRR8|KxeM z{Z3>vcRc&MgX7b!*XtFd%p?QE9YQwST)RGb@x2#;`hR_0N;h8J`?XxcU7GRh#ry74 z`V1u&)%UEh{A#=YLi~TBixF=+8Gp?e+533HcxnIq4So~!X@0K@5 zj58va+!OpfO}=?gri|&)c^+4{J3r|$KE+lW?$XH5kbC9(hKtshEnD&mU+65APguPC z_2Jn;4c}h7E8cp@^kPAs&LRnG2luan9efo`RxA61B6cq54_k2hR|M;>Rr8lQn1B74 z@w9_?!R=p`9VHQmV{4TbU7E^x_wsq?6b;@NGwT=^8J05qT@&AtRG!3WUpPn#Sm?|>+(U1*BKX-g(mEu$ELif zH}t=8WVyO`rrmQ?K$Yq054r{fxS!>G4M6I@gcoMeui>yQ#>32}JS zma#%^!r~jk7p=FvRQcwX(!Nz(&^dxXY3HIOdzW<)>tmszwBLN!E>=drg!NP!HzeDCey^+l{OtLe67>x7Q*=XR7bL4k5t0CJ({fwioJ+50=*M;82ro5`-b4$C0bRhea^_yliXb4ts=$g@@!DsnNYNL>93IoRLh)IsaJb^FcC)`nOgr{1N-HhYUG)1zAg>{B zpzfT7*XuK%g;?b*)Xu;Y;ajUfR!jI(H7A{vRd)>WTbmMJ@ zJKY(=pRNboS>K^k|FJ=7lT;_WXl3uw!ySD}?!HHoJCq8Sn2Gu;W%ViR1=uW>2%UTM zbJw&|QGKnf_j+;Xbl3OV9$l>ycfl+Fqt&96HHi%s+!saW7`Atn3vN9wC!?CCP}Lpg z*4-~++9Nn$%SKAuF8yi2JPGxENrwGq$w#ht_&wfZ;{0do)WiGygzCe;97+1PchObv zBmEtD;S5`R{&)xe_WHPa(VeW1s~53f@A|Lssy%mMxzV;yd$zcm+&E>LBc7X+s%`BO z9ewkZpW*toZ|>_E&OdZ2@1kSiyM_pfK-+YOmq~#xhqV~3G{oFPM4w-Ce#GA~>*1ZM z2%V)X-gms{$uQbf8KRS|eZKVgkxw05$!FxnwUxMzO4uldIX!7tez4?4+Y5zlZ>GFR z)OJ6Sxshv8QpV>sFIqEX`o4c&bTX{(b@!t6YtQ^n-8gHl%+v6rue!?O#Iv<-RR*tF zoAEq%slML`JHQX zpJtpDVHUY#Cw^P2>U-;rxP#BU4LK&VpJQErB;oc+5!J*we^tudz9_HDvM)B_b3d2e zwcyTtiIe#jyV@rH347D_!YG>e=)4ZEFqSW_Z<}oHjfq zE%98*s^x7?mXDi>`0bn5c5qD8{^l+IILPJp1+R`m)NU-C}RW3nAR5%FsZrz^!Rllrc3t6R?3 z_+9Xp)M+0Zl%748;8)z$I&o@(O;ZN*yFbFc$8)qNL@sZN(VlR*+iJI%%Jc8##ku0P z_Q`vacfYu$;qSjQB}aVk)Kh;_etd{q_tP_aiYhaEz)Nu%ucw`56QVO-7*yFVdM}|R z+^oDJ=8lv}bCpj?soLGy{);~qsGVT;cKDWWayC>US12v$X7WoJt!h*DN;}~v3sn`4 zo6K@Hy`14a$1~@ZYSsSuhhZ-dojY;bK8MyfvdA`0*)z-Ma&6S6*GI1~ zZShsO|Es~~9{-br4in68H`{c*{OqhJ*?Ww4*~dP|i(9|9?P7B^UmE0f@_Lb)@5_xM zDeIppoKJ7E*~0Q9RnL7%du za({kkk6yW^JVo30W?{bg)X#xtvD5rgXFgM3@#hL#jr=vnD7#h4C$3i5a_sGvF`WMD zi6n#33f+i#vfM9UUU%@T;Ve2JGGYIZh8o+SLSO1FUerrh%ss`Ik!b4WzvZ*@b{?(# zGS-*<*Qf7xtSb7g9+LNp=Q?Mv@ya_jzty$k7su==QCcF?_$BwcV_qiLCHd5YZSPms zOyj(sZglX_p&9xieLjDg3^!kY;HLa`U+-*VPx~3id2LD;Tq;Rlm!0s1>5E6X#Fy>o z*tkEdi!9nXKR|AGRM)8=zgkzcwlGiCc{3%CcVl4g3iiEW%W`VD%KXe2XX~aNEd8mb zu)mM(rImcjF`EhD7Z*prxag|$RD!YSuhWG63uQV!-SU}mRlISFC!6FYrj&)e3iH=6 z@2s{xk)~nZ-+1frvgS1#ID=mG9Sr-~FsJI;>}_Qam(I#t^Y_f+KPvAn>fbFs5WMJ- z%o)uy*8kgl&+g=(&KCKiea)*Rzr?K@=H0yEE~k0%@RQd!-YM{ZXR%E3@Lv_lc;ZljIW12{*_Q=TYoj9*lY7NiPbk&{gYPKxi#~j#jQC) zjc?b8S+$;OOn*MR^qrrt;p;uic%G?;o3DSa`SWBGcl4QiUl0E4cm8Sqt+>@PG{`qZqP@A&;=CjMcUWUBOV=VG(4mPPh)0VxeY?EEN+HLlG%dXe+oHy96oB39_ zJ40vNE7qy;VNG9LZn7(99rv10mGgg9`og}rJt7+ppYmGV@G)BJ34aEE-%7r(3*KDR z6>wcw{BP0A%Xx=N1(vN@xx85X#PRCNl`(Ga^F>_qzgh3Bo|yK+b^0-b!&mkN-nlz- z%8tNmv6l*W-@D%V(qi($-FGvpen!u`;`chuAiO?@>yzX;*Y5^J*V<1OzgeiLkk0pU z>94@K4|j>WU0n6fz`c}{d1s14>8#xw;|2D{UFR-R-_CYZ-t>G+^YXvU4|W9$Xj_Y) zZhCV;_=&vjvm)zrPk7Ju_8TtRSGLYom;WtOk<79;nas0z*{?0tv~_d#`jn6+ob^(O zt*B6Y!tB7fmrTDH|2p1tom+6_C-eIB$E9b#P58Y^)`M}q_o6w?ny&-@-4lOu@t(qA zgQZ^f6C`gGneDr=V|GXJr$Y)8%3j1S_fxQbG-nRKx37cs_213=>|f1y|7&;HVUrxk zn+N{2CS?s%*3S6tUtv6J6Myx4)^$?X{uZnkJrQj2D*bD|Z}DoreD~DMH$SIEWW5gX zSl_A{?C!`fBF%THL6hIDaf|!x%!LPj=cep8+O&VYa76NFw&>FlbGEok8VZ=?^Dvw& z(ob3$H6yxKWJ^qc;6{Ckb>4|yD+S(c^gH0UFuYnU`csdqiFq zO_|#_p(u|frai$sE&10*Ifd-U>y~LRYgruAt2y(<_2Yq`_?ACLV)lI=hO?I~zFlAJbLis6t*D?)dB;^QD$qR}GdjdAa-OcYjjZ_CbHmYpy7} zW?diW*`gbBx}Pa5U-UG5#ZRfyzQo>tD>f%b_srZK-n=}~{*2N0!|j(hCv3ULoLMiP z@_9>Sh`QACrN3$&^Nww8SgW98CiivHclCTLwV7+b#?N)p-D1g8 zNd9?Gf%~!7!+xWE+$VfBqIuXX_pz_J+kRXBuwCR^z1~gdHPm?~gttq?>|az+o7r{U zsbbb{ld@0Wrn(=Ax1Jt&|G&e|Pl_kl^d07TGyHs>G9mU_6VKr(j@*vh=CE$MCp*FX zRpXu>qpv(C{z^N9`7!TI6!zL;^V;ylTa93Yr7kQd%%(ev9e%yN+tJQBb63C6+Y}qd z$|U|1oX4lll>AfqH7iBn$=>4%uWgxU?x{BYb}3Ek|Dl@-%-@}K*lwJ^dg#zf+=-_2aG}^&S6OjN^6(Zm53K_wv2dgIluevmaHJZ<%gmFTPaMs61SO zZCX>#M~Nr5L?+07yj8%QViEV;zM^$odP;Oe=bHCM^Z52;-qSrG+n!P%c&0XL+hy+w z+nzg0`8Awr*SwzIEK??wQa{V-yQ@VJzed>M*O%ok$4JXh;L}+Djxkb0GUZFk1i5O* zZM)ctz64HqTI=}Dp0nt#>V&C&%|5rj+=$(qpR!qI_SRdEPt{F-AD;O2|6+EJ>N%3T z9_t*GsOkG25WF$R>Yb%EoAbM?eV6`Cd)I#P*3QNq`A6nH{L^?o^A}G{=d15OZpL1c zzYxDo@($m(197nv%45FP9o?!U|4umSf!_Au7x^K_*^hH{Z%KOiJ~8j0?1@={^_R2N zw}h>jerNKz%ljXm;x76;C*LB=VOz#0-kGd3n>J_59D7*3$6BKAkKKXVbH;Ppck>?F zA*JGO(XE}jUaS0N&NAIwvG=4^%BPi2%IW>bt-FWgQniPi?}KuIPjzc9W!#(|w6BVP z7oQzNq$cnB=MFcu9tNyp{Pt~efb^_Q+w8YIv^`~hw?HRhFC*iHRoVv?q)Rq6S2a6+ z%RC##{>3(+kJl{i=B{r=EACACy;(N%t#|-iPw|(4UwL*5y|lfGr{81RnHd_$pDCKK z`s9IwskBh!`>Z!L}WzW3yv(|)@$&ULxnRh1DS@L@pKTfGH_h7&IQtZS*_J{MD zjxO|iBxAigUo~p6v-F3*j_*&&y_y@n(@||!5m)l<%!1M?*+#(^xB1@9lC)m-E=Qeb zciwI}h5f8ojqYFm$O#MF7%xzrnr?Nec>9YQF$70sMBXV_(-(y5K@cw2yaN<|n9 zA!cQ5q4^HE_l)i>kIoecoR}YI$IoKPr(AD&N?-Z)rGG1LitefI{@s#P@t3vy$HE=w zeU8SuN9RZ%tUd8>-H!i9tnJF|4*a^`@v&@!smpIu8B-neca8hqLoeM~y|-OBa^`B` zsm)%^In$SmPu)MA?PUz-6YuZ|^Y1uVRW#%TOD@^S+!r(RIMsD>#^QC$t90>G#C9EkS|j7SwOMRJr=zj-F|}dH*+;e0aq6 zWq-l+Q?8ZoFWu36JYPG-OYD>Q=dZQ@?L}X%nGztGk~gJq>eCpCbx87X3 z=}!BFPps#bonq2_z_s`Kp|k6aegrMwwC4U9FZ+On{DylrIZbfdzk6z(eXE_zk5gRD zo43l(Tl;ro*e^q_znM4wRkYS^n)=VH^-I#J-cMUTbK9T#Me~bpU0>C1|MZ60)_?XlUmc$FvyAJ?*TmTiyT18+vbFkO z|63)0>YQIKXJcOl{Vdk``v1K0a+%xLKG?;q_7*+A@yhGVOIJrsTeTpN>l*iVtqoyS zVU1S>QpBq#2y>ngRyuM2(}Ap@y9>qk%B3`9`_FzBsuM0?cD{UV(#%We=LlU8`jvR< z$HdSr>*rUmSg&d=yyn%ZIHOv%$D1bH&+mO{zx`84we8(XD?{$zpEG|=-F4vNl#i!h zmd=$vnrX8o_hgWnR@Tkl>+P!|uBF~&dsU=b?$8vPC!ibQj&~x7#~@^^+yVFFcdXt}U5&vGSC)aH@C0 z)g9)_K89?&H$)!&T>YKR$9{i$+1^)AGFQe&EtKyy&Z_i(J9Ey<@Q+ts)jzxYSo6&H zi+Pu}UU}~RR?)U;*>9PI&E~tmEi9eupSbi%%+opNi=GBuXp5TnsczH0<-#{(b{S6n zzoX>XKG~<4vJV$nUKCE_XP&FdWzn1yz`3MX`oyDm3Hx)srOmhc>}T7oG&5f zziO?ePv-`%SbWXv?)OW!{%`O2$_4#mdhRaat{~K5uECJ!RkLEt7Yf zocF%|UNoofE6cT>I34jDCm*X$csun$`G2uIzBnWIzPO^5@-MbJYh_DMi3(8^Oy9#L zW>u>ny75BHgExyeocA*PeQMK#-&rxND$^A6%ICd%tunzPea?NYjgjXz9lx?PBInQT zp#P<@2ESHSTTYbw`MSb$mhrRH0Ld4ZuDjm4d2R-~vHt?^J2A2tIIV_Ky(p z3-QmCUPkoyO}VVQ!*r)=?w$uvmh2UG3D4Im&fjKp{6^(2`{%X`O!myQ-Fo8A;SY9Y z>c(74e=46@Q7zbbWW}dR0;*z_Wfc~#(gLctznqs~y`wxU+gMS#Ytdhu^%`d{PgJ%! z-}~(43CVfe>)(Xv+wMH``CR{8&x^V9(#@4Go_3J?v?s`Tl4jMx&vAY-`2r{PZQkE@ zQR;ZYe7<|-x;6Q}1lOsV#o;@tIF|%HJ+np>Tfp@5grf(m_4X zr_QLHpp@RX>YR;RplYAftG-XCd~GbH;?291?EBQ#TRcwnepR%k;%I2sEF+h$`@7yx zZU1jOA-IhFnN8q=O{;yaBufJpW@&vXohr07B5V2dKm*sxvnMw1oO|zFPgdZR^F3N= zw_d(Idt$y4yK&UMBYyMm_m~BR9O!9rEBn=y7Sg8V&e>`Hes)RgnG>n{3j)5>Y86Im z2+Rs+yP)#vcEA1}u8GTJ&ffSvYY|Id*RO_W`!?~2cCkGP=vyeY`(DslQPB%($MO_6 z@dfI**DF>{l>W6;;NzMT0$;j?B@YOG@lM<{N%_Ter6+vu7xY~_o4K7Y=pXe6?pqMw zH94biLA=+5S{cXve;n==vHT61G-dq}0fX4CiUJm&=}M*+uNqcxx?dI8`kZ5io~x6< zT%iT!-V;k@9N$k<$`_a`z;%u#r64uKY?08qHRo5U*DToTuH2=%RCr&7<>Yzqg7~|p zOw#4K$&$WD?9?RN4z=4a@?P#aJxRI4Phdmjv>nw3Ap(KY{9(>-XESMb=ZiCBUCOaM zD}C-_zVGzcrzU&wue6hX-=%WYdD~03Q=t=ccTHRtS|PHg@I#sMYKvW-xnXLvEu<#I zE6hvr7oAz|U$ms_%|!K`fv)Qgc7OSt^7Ky3v|y7F}D@be>c>wquP=Z*jTm>8m3|7lN>z14y81FJUeQGRSUDeK5Gt<$^h&owUk zWAi@rjQb<^u1|Z)4f#Z-KCHaAW#6kKQ=ea5_%&2rZQk^qUzJxnW_{XoK3Z1e(|WDy zkjYzCX>I1bzp~|j-)(1}Q!g%0_2MeAU1j8YFf?^p_N2tn)V%CTnX9CpDO%;7&YAbP z+`Ge$KzjkuFpOxZVqS*O; za`d$cIbT8KlHVtFvpw$p1d(=NlIQBvX{IWyStoR}J-Dt;h`!b_Wu4;oHJpE5niQX& zB{*NI=ycSCR?{cbwko{r@SCV^?Q>7pW8y5Hzk3#MEobOlt+{=d?9A}VN59VhT3xYS z`M1Tb**CB6wmtbE!)5Wld$JrWj|RARHFXs0p6p_N>2b?AW%BNy3GWkx&IcBDSxsCl zQ)%LPwNx!#(09|yt4F4nsF_<>Ri*Zni+`Gy{VihBs@G0`vW!!te@`q?{A%$^jD1CB zZdjhj9A?)>oAtI=-*{Pl+;eavpUBr|mGR$dRqmcpm^VFtKeOvYoAu`xhs2f(9SnS; z9Dix75MgnLB|tQ@%Xn*tf~9rNt!atLUz} zW7QgwCj%Y34tcP-Z&2bzYdsJxBZGMUa&&Mz0g0X^s%RF-!z+#s*gL> z-P`-_f9q4Ileug6uVv9MnW+md3VY5f44LZYuabHCV$CdZSF7SJz0X`H+R3b4G|{w? z=h+K}-Zh*lD(-v5_kWz{p=8+=^QUi-ri^4}oXO0iftjv-U6O?ky8%U4E68y7M3z589Ga`{9-pHZ!hM%R;!`zdoZ`_4Rm zaVAB&%gEwacHXKytCLSO-rK|*&D}Hglhn=GX%iTAE8>!?FZ*m-%PL*3tl6c$-eQ*D zMV+8ss+VO-Z=W=ot@A`<+9Jy*h2G0%`UEm*Ug}yH(k0~SpuKG8{6#87ZHt3N&Z_dQ zo%u|+>)FI*GO0l(^If*5&0?N5%~W;rp4^JJBDx9(b7wpg=@Og7()TQAOUImtvuyis z%odwm#mLjUEQ7O?J7HF_MwC}y!4$8HMxVs5zp1=?Z_6AW?vxB3SM3w~9G1=Wxajq1 z+TyPwYY*8^@A`dW*|%j^Q&im#YeqT8ZB3oES;I?l>21R)ZWp73?(}8u%TLPpQVq8_ z<^1`Q$HZ?wn{8ZQdoZ|f)r|6gbj$c`DX)!>G{?&WmCG}fGjBC!?pu~2-1$r+-OurpiCa~1t9J}uACt~_kIK4?qt6z(LA=0$IpWD8vOIqh@xt%9v~*8?<`nw@K3u@~{SN=|97r zHp^D?mcL$sNy{Sn&V|C4TTI_E6h2#_AUm7g!?sT?balR$`eH%fV>|WczHu_Sp7wml zGn4f(=~q-t-#f(V_C?(j)O>Yr;$7WF8I^@HqOoim*LrTv;G5(tBfCp)g7cFWN!FQs z6U}96rS&HqK60UT;a-2nsSj3!e9c>Sc!|Ax?KJBN$|}XwTFIQ6 zhbyvs^Oj9sk{RB%F8pnpmFu&jE$`MbTl#J*yz*d{!?_8@GILjo=2|&>l}x^%bJ^19 zTFz?vITNRVjQyjx)T@<>kob=-4 zg$c8yeb0LsxWCPoGq6?9wz&1}!J3z>I}cp!copue?|CwgCp2Dl!u$?-ciGj;tN**G z6<_&qwfORRm4iKTv+qr)m5E(*?d%uni{H~$+|_Q}qk7a*s_Dd$z>mB5L|6;H1aB>0 zcHfiBy*-P=u71LHnW^iaKKMNE%B#Zx%Wp;RwV%M!Cv{!#$~b>7#+ zaO`a(pJUq`hNe2e#=5B)73v~ls2YaIq}?h=h2JLf*tMRIbWW>pmo3Gef|+;0axSkLYEaK+WuJUf>g$0nTpCMw^l5cA~47cTa$dj%n@t7<3vXRs_F5X|nY{Zk0F_kaCv2W4C)eD^@`{peW)$c13 z=UK4A(EWT4vxnS5Zuhxg7**CA~XiHtqD!u&=%sLi+ z`M6JIzrcZu(^KU=85QR(z95xc%f+E?VKs-Ta^@tp)HMwONe0fdv;3CL%C$VT|SOpm}o#n#28BBH`ZJJLRLdfFXr{pKwB$}^BN@nyg=%f3bOEz&Y)m#tVb!MrDP zSx|^q$I}-Eu1j0F6Ma70xt?oElyI&O2yt6s+LPJ0XV;zOYc_N*o+&a_cwfQUts+y! zYub!U8WwRmy(m}~xx8+YzpLWp#e5<=Io>JHNRx1#+9J@mEZ~Wjj?>;|4)m^iV;gKfKqZiy;AF2AtpWU-J z;`!DGx++Sua*7xCdF*LDYV-ceR%JW2MAP%TOW%sP&aSw3X|Z^1O^dY5QrW$Jf%go9 z_IDf!e__;C8Ip3*cK#|SCHH&nG9IRiwLICUzcl&R{9(Diu_$^K_r2uEc<1O<+*>Q| zZCL(onbaY@z9fxRnl%q+acitn{n7K-&?7Kcu|(#w%;hDsR`yLec`>K!71z7RJJnpj zwg~j`1%|{&Sk23nO20WrKChrFK0gkb_V;ZwHx+ktGc4&{B<55la=FGa(EFjSyS!$W z>JI;eS?izOoE^ojDO0;_Mem0+rpssS@81(qm@@lBKx7wF>pJ0?&%9RM4BK(=Vp-QM zPSr&-pLurO;(lwn%QKK&(Qa0z*+T2b3I`237j6?N6^Zgon&qy+C6;7qxadz$E+HJARC(!&M@AW?)j@-Kv%Q5qez`{G<1k8NXX1x^o zDq>`52ulTV!*-}8E0M%E@7v~Gt#QN+Bh|3zAnqyG2x(T_?a!{y#lxV(=&`+A0E2& z(q@vTl;)iWFKk>Fx9l;lXbI3>+#1oBBX)E4F%I!GgR@*By`ntElAo4k%n8U=>-Uhd zecT!=W4l1Z>Bk|{|4TH2K6Ivgcx*FwxWk zQ@S`~(uNYT%QoBZ-4ju^IG6Uq&~}6d4 ziY0EjTr^Rvunn8Wy=M%oe&VW4COUrsob&fEKq370*mF za{b)$O=fA3Nqoor)5+_weuiF8Zu+io-=I#bn0IG5&#F4|Ys&*LKZroz`*V)6uoao|4t!z|=MCUj?;ACB&KceLKSbhK&j^p3sTll3*q-b8E=&q-ipbv@`JY-_gY|NA#} z{hK}C)y}(L{J!?x`|tI(*RN;qUtf9t`R2{Wn>TOXTz$^*HDjsfrGf&vpwDZ~GH(8n zKdETSv(hfZ{mNXAXb0;>&lI+@zn$^xtW+~o(wb9-rB*>4b2dJHWxeEF@|shHTW>`* z&vCF`sOL6|`xfU{o1nrALRSxzvcKm0Q{s9m|2 z;q8=NtS@;pmS3Ipnz!g~cBtQKU%NoV*OH}w)U}drSF0(XZT?*6xOVr!1=l!N6*=}g z%@X*oymNtCol@T3CA;#ktXE#znWP+k)lHf=w`RfSud8;kue@Q=T@-rOLF$G0t6JaO zttS^$nQKL^UzuzlXqvsLN+9#8%jzQMvu>-lo?mq*#Qt{9g(p|To=%hME0J8+cRPzI z=-|eM_qK=j>sExRMNPS#WxXV_;ETvtkxR3Vg{ivMHc#Qap1bPT-!L6kx1v>6%qzF} zee~$vtLyOHe&Y16eNjoX9j#xjIAy!F&(Y6xGSk}cSI({Q^;pe6r7uL?H}u_VzuUZ4 z8@JE=y6@Hh&Zx-CR}?+|US4~Oxs>@*;{=)c?W=C{J?0SBt4pq3@$3D8&*E2PPiXQT zzd0}4PI8rbP`|C1YVg|@k&3j2uM?%Zr|fnPm0Qg|@!r9T$~DgvYPpj&z5k}EfAgLe zdNOFavT6IrpDwlSPfG5rvI$)M)=0xYpznNeso|x?tHYkItP)!pIVbdF*nP#f%^PPg zt~w%JVpluk>&#n{nx-jRzKVY}3R?R>(_w4b=`3m1L`T9Qd_**BynwKOgSQ zx_q*tu3}xDd-~KbPp^q*9m`98^KVXkXkBo%zO0zg}bsb%~0I zm>{aDGk<}>l4zHJ>?O>sthMb=rnv{ytE^XQI;IeN$$Mt2h!?AF`GoETYdt1^4HBB5 z^fl<5V(Sy}DNR?RMZd6QHr`ug?$Nw+flW1UQdM`C;@MN$E0}`P_qy77oaJ_7Fm zp`vu7(8MWQ7M;pAbHt4?}^JN$O8Z7#7$nErL~ zt#1vE<>9hyU2e04gn0i&M(vg)h%VMI zFE+QkPCf5wzJ&ds{f}Lf4d-VxerqkZ z;+JRho5MSTT3r-$*Q5v9c*rlAs;ui3Y9yQ4l<)pN>xtT=i0hS;;wK*Ax-i*duF;Cw z@lDg!Gm|IOZC~NXwovVz*i}!lODDEi?u!?Cf0=FWjikV=2_2U=xte-D$$V@hQr;Jk zHR-0++45H#DqGi!-)u;^d;7@kZW&jp;)2Qj;yYWXY^s;Fn6LbEX)arlRq};(OZ6O{ zPUy?)W&Y&;>)XS)1sqEje&=KS>N0E3JC+L)OYUD+XVi81Wl*yAYWJH0i||;cw>&{V z7hi9@G+~n3GN!$bt2Sy$olrgbV)G8&vZLK1?p6$cnZCLR-JkMNZR*4$=Bax;eV1fu zmK|+pQTVw$qT!X)l73F@%q*>=UQx5XHcs+b^6>QAF8!BnCZ#)BSMXn&XIgf&|4&Ov zRxfLY$feERFZcaRQMz>7JJMnE1gX9)+KefTLD>?Kj47&@ax{!5p-m?WgS(qfTDDKiR6h7b>QaM`c1HPxS&d>&Micfi>bBT8uVRYQ{ls;W zD@ykh<4S>yt(|4p7F=3zRZTDb>BZLq+c$seTJ4-Qr!=Opz2^0VscpfPb1s}^pYxo@ zYm45;Ro;sx&Qp(=Qgx&)q|RP%`x9$diGxV~0;QjmD+%wEr@-N#nEHq4jL^?4OHCDlx=Sn%HX&0L_kNY$Jc+lPMY{r& zJWYfOy8^5xX`822<+ zl3%+0yeFFd<~(J3LUYr??(f@EF61^>F_o%uS{=2x%ks)8PAQe4)_v8I6J{l<*F+Xy zQ%`KYGPPytiKuc_=U|zweV^ZYZ3^mH{J!?XT!%>7V-VIu=uW?`1^@RCM5>g zT+k4jmT2M6*sFHYSZl_zj5XTGD~Y3JiVk4}*4 z-(cT(Y|_I14eX7_CdzuOba?D3W>sx2``o;-q%P-z#DdP0!^wwt3S}*L=_#A;lzp|g#bvLF#)4~ZuZ1T4pX!)B zEpp1zBjPJh8}k28T_PQHIm-0U^vO+S&9@F2pX3ty(AlM>?diYdqT|1Rt55PSIlaLy z+V@6wvlM&V&-IFn<4A34i@*<3F)^H1lmDOT>2CNjxaPX2tPS8_@3o8VVAFWbHpm&^|m zKf$*|u=>}OT^>afyLw*-zY@wk!h36f@yh?HLftC&?#3%_pK!!HVBLf{{#&m7ms+`0 zQe|Ib(cCRRU9$h?3(fXB7O`vX|NH4laaH`q*K!}tKfWND}zO)wb69@B4`sbB|db z&A-b&r6DTC*8lzQBkJoN?HQI%e6hz(Q@P=ir_H651?(#9bEjG9-Q)M%Ucz|J zmn0V4KQXPT?ep6(`}g-dcXvCwF4WWaoYMX93uBe*HKnZ#nmCv<)Smm|z<^Op-?zNB_T;bNfU@lGwSlvnEWR%91ff)L297i0XmPK1Zoc?yu+Eb&vAC%6J>BCBOD# zrx)9k+guba}8MPKZK)aHCl`m%HOoTXhCKM3_jX3fnvoE32B z#a(@=8y<$UIzo0giq1Jd!Ddo6i^%f#6F#Z4Gg(eGxiwuxi0#TV;jJ76i>1Aix<#Zl zJJ^2k}YC2ehrzeL7=v8~c>yUYYE@`~}P3dY^tAy2zH-_kUZRYSk5mA`$ao&*mj9TRcAZsT0JXno_G5j>y>49_Zeh3J-XHq@QY1z(YKWiySDW1 zcAQ!s%elh+{0`~ddfR*Jt}LHE@ss}shP!TAo35@iS@6;$c3V`#JSEXxnc-5G?oT*% zZwtd-ccJ}Xvs^M+n~&u0l?qH(`7OHp(u`e76IY8Zxa83|{XM(MLeU9QG2cGqJFQk; zJ0~}MR#5yB-OaiVTPLp4*{=O?i{hmBMce@{tjA{rOikOeH+lb4<-M~m>UmU8^Jn;V z(9ztj%5*vNguc5o7)+QlFHY=f5G#?nbWC~b8r>HqOHzO9PwiN+(L?%Mc~SR*(-Y>c z->j|s(rU?_Qn3ZO%Vup|bUg6$np}3P?kC~5nM!z9%57P1>g$@t`!?IxctTzMgtgli zT6(-u48L_D+@rVs#?qIX9EexXTHL|Zwo3{GJ3uEa_ zZ|(4sFEd5A%;MXXsQfm=!PR|!A%++=9YWuJjAs_^#oChhwd1C~6F6kDL? z@!tRT)OA}#Cq3<9UD5oK<8H=wufEUI*On~~oGSCYzxmtb=Dd{EcVC|H>ic|r>bnx9 zOA+sLzE)caXKpeN-?yB5!n5XU&FdVZxT5%XF|Pc|B>mE}T%mUVfmL6Y{GND7C})Yd zZQB*4gR8zQN}srC!94p5t3B3(sE{R}1J2+3q8P+=WwZHNMXx*aE6HhtLY<^j!lCM#05ZfP;Houo=;q8g5 z-fz}&eqpynV~1J$rNti24{ynMO`dQ>o$v4qQI(IKhYe;mso1@j@RL{QJa650IcG`x zOEaUUe|=LX=Y_gmh*|PdI9FxXCM}CiYEe@&q8MH>TuD{Y?V7?-D(QJzVeR}x<;5AU zOIjquQbqm>X}%Yfmh}BQVV^}(sM}>LkMQrePDtG1czH2ywNcwP7p~TSJqzDXR9a}C z{G#0BC*SR<8^5qGF>2R!V4k?I>09q&d^J$GW3 z%m(etE471~nZ*`dk}E2k?WkRG;$|+}+INcS+h<<6?tCuKI5U^ua`)LqytYr?n032> zq|NqrMJ?MdtHJtGJfHi5^Ae?%WvP5;-F_)uW%_cdu!ZIMf%%zwlgd^Y2&~Tv$ja(G zuyYH;rOQ_~IUJqv>u{~{v}uk~%&(V5L~*`6UR#zb_xIAmx0@M$Do@?{PR3&XHOEgo z;v`lWUeeJhX3Xu}!gMOeVZY<8zZ%i89{ZiGes*YcXXY=Ny7J~LB`blBUtYCRMis8OM8xsE%@s3+cDZ}yYgJ7T+O@fBIV!e z4j5I5ygU-g|3B4)bLE4pzZp-z6jk}YTJGQJOs-1@Bg;}*Yae7>)Zq@;w(^?xOYbXP z=XC^kOnRmiIxAAFBiz`dMr>!7n1j%K*L91It~wbMc6rnM6&e8yR!8+8UAq*Z^09lz z)-9ZqBDSwvymrEoU8S;bA6!T%+kA1IhoZsmo1kv>@2mc?e!23*Oa1rw zZ#bwcJeB$S;l4xqtXDfH>KR2538E^HQly8o`>C>;M zdq0QKs{4z{Ww&jhylTAml-R5;la!gUH@)PQdLz>qPdR$cO;f)8!h4DPr9Oxu{E>GFR9JjG`;L%7?|Xnw`uyL%y9pk-XBd)1%JDgXLSNhUJCwpM9%6U zn7kbP?MR%}eGs|pQ1G`ScDwFf5&r#xFF5=A<=SP}-Yq}wv)0z({H&~eccj(NxZE==@zRQZNwZimV|E}@q`Dj!28c!rmNmt>@ThHjM?eZUjH&9_v(SuCHh&J z-`}3%tzvn3vX=XT-S^7w{Twy+hKlhx&4(1Tm2R@ z2UZsx=QCk?`B#?vLWRo5?u{i@vYvmEbmpFO&SFXb#TeUmMeN)c<}Bwd_N{du+byG5 zw$^!kS5m!uF3k9a;F90lcTRFVukiPyLG;-r()+u&k*1HF%grjyXdn|Q2 zZ2l!KQ`zeh;qxxN@^D{xe$z_*OQJ6}=R`@ryrv?3av|?TIsZ*smL^OqkJQ{hkiJFs z((}*Fjk^@ye%bfnGxyupk|V#RE-)-vwc-By5{n>%H{Z2o!-MCYeO_XfRk{4eiDIel zkdiLZEvX(eFYMNTVYNh@f9I#BykeQZaoc`L-)){!(yzV$qOwQkg1>(L%6pmKmRH>@ z`7+&P?J^s8{md}m%D%Wu;vP%iU*oQEy{}Yxr#Ilul!}wqC$ndr_rB*DcUdW}h^^Y$ z{_`Z`8`7`dslNBi&otGqEU)rj>yfngOJAEp=hsWtw+?t;`(>NkI7@hq=>5yvJdP%= z{V}i1?5fW6ZzdqZeCj85*>_JZwwEo~Xm#|!&aDi-zn|nt{AkQ`dCn`bRz7piV%`sT zeoT}zn7VR<@QS^5S?pHrE`5;=lP1ROdDC_3okH!iRK`;-RbiLc34G&u>FmorLH6ad zl-*7@*_S+@tm{y@hj-P6E9(rNH9gsXh3QG#lgcye3c~nSDqd;btmUDqcT=?Ys>`RH zDU4h$vvwX{_aw1&V%WP445qH1dber&tuYO1&fpGExx{ec)22L+WXIE|e<{@RM%jH6 z4l=*+X=9*Ao`Kq@&7B_e56?JpK24GL(+2HxIgFPw__;55<=_0wdc*BX*ZD2XM-@Y7 zWincUN?Yv{eabrzzX_W#*LdoqLz4o7jo&(yPxzD;)nGL7RR0ETv2Q#llUrC%^qJV- zbmQ8{@9}!_S}(^UjyAz7G z6)m-R-TdY3(r1l%Z`7B}n|_P2*GbA|X?6mqnPBFZDRB;)Yg72ArF8v!AHw)?-a?hr z-zJ79dw$#9zemb@Q_PYt#($aYlh0%Ye4DB0z`CaIaW9|F(XJ@jNaN~YS@Lwl{pmSkK{ju`t44QxDVo-MB|&@QkDS#(&ABF5*Qnio zseQiMx9mXpyzjH#v@AaFcc1@5((@YGBJTUMqW%rVN6f1bYjV2)YPLspqBt{$RdDXSH8M1u@66mx_x?VNlwOLv>_%X6OV zt|YPhy017Z6u5hLl5;|CncT~dT;lIr>G zuJKa7CjPSG*31LPattmV-SX?&u^f|05wd29lS`zQujiY+;pU33eVes?Z#pemSSYq2 z^xvlEhi}@|yYt6!@ua)|m9?#q)!hR2t0o) zCiC2;zfW^+HT`|3pMF_PN8EGI>Fxxb0}3DY^qWK-R;k%Jrn*l2b3}c`8lFqM7RhTP zT$kur%wBtAy2ts2?9s;dDr~m*XIha{Olb32y5)X~l1D^oT!PwMbXG@rw90;oO@)7~J1SO)1N<%L-qfzWVLWq9wmC z@4Pf`t@+ho(%bHayw1O|kD;>9YJdcik``{zV-6OFx4(qCDU7%tyb`#cGP-w zS8;{@?SSJ8MApA=s!Mr3@zUNZwy(+hrCovZ=DrcXGGCY1bj6!R4;`B$a%`LT-LTfp z;COxWz=HYTZ#ONvX*c(nW_W)-ztl-9a}$k{D|HJZ=Jw<-?@6+i<`k+|{hDz>W1E0x z?em=rB*J!Xbj%OVXZKBL>`guIpYoOG()}GiDZUerNKfxvw*N`5b7J;D3( z*Uc>p=0{pC`LemcVU@yD@6Fo9k-kfeGQ}1+ENS95V>z~Imxrp{j*8=(mihKnmh;+} zpG#glaofS-$2MY}=gPFrS3ov>?d$;Wx;e=XQ-`(}H?-;oo~25@jen{06r3=fGsXZN6PuUpD$ z?U~oEEKpS5v1!syg`Ed)Rf}r(g|J?`w>o0yvZ6QZ(n14--z$V|p5^gK_DGgk#}i)n zh{LaxOq-O~B>MU;U6Yy{;4PKNA9Y%3;<~;QtgrHl)+N`w@>hyO#QyU z_YKRWAGY_@%J@A0$mI)rn_aCk-rapGd~&La@VPP_!HLsJkwcAzpecjj_>Lzsm*NtN}C9~d()NC&JP)v}G49^K4a@-15{^6|~YB}Z2qGnH))_IMp0zUf`sbf2Yf z61N9@ZWsM3H?2*COZ%1W8_u9->vBr1pO3+M9^Ql#M z--b+&h3Yv^G-h{;)E!zSlj&2?HOlFPWO<;&l$QwKZWEL+ST9>VUGtycX{r8+6=t>?ExS8h#yBYVl5)2yg# z;xjg0j}2POBmO=6v}R74>#Wn8i)KxA`Xn<|w4iOL^3UF^G~2^A6OWzUuI+iI%cOcA z>x!^q_w2W)BCjpjxp=GC0x^%b={Khquh9*)77fyzakJwy!rP z;qZiCXSQpJ--uY^?0M}$caBz2P>?`CPVr6e={JPig~Rqwzrnp^@`hh~kK9x2+!AIfF*{G$Oq8?D60GTsoET^G zi))40rI*XhCY_N|h|SLmofOHvWX{&Ir&ihBUj*k}UAOt1Zc2CFhB#fB&2=dsc(3hm zO}_S@FJs5a%E`UXZ)aC)9atW%%26 zMd{+YJE`v{SgA%eWVAT0TW~k|=fqVFW&JzdEcyy=RL%eCcEb7|bC|Z%y^nGm+B_b; z`#oW6fyF}*)ji?snS@xSCwrBfzjjUd-p6C6;B?R0=;jBG%J(Ny9#1%8E+W4%)8mnJ zSAWDB(70j$%^;PJyho4cIJZ2WcUjw_`>x5=r<~r-%PWq5YDrb>EZ6bB!M#ND^qW(` z->wC2P8CzQ6f|wp*-z3->JLpk+ojOyZ?P#-b4l&yw_be3?p9{EnVw{7J(c`iI)y3w zVfq@eNk875Fuo?>x##7-)~yag`Mc^9-%jXSw_SVxrgI*t*P|P%6eoHzH_hMt&x2Ks zmsRRsP~1xW8#ktX@~S*6f*6dyXi_{Dtf z`udsIPAv#C&UwPC-63Lmc-5Z7qZ6&>NX!12Hr4f2VIEUJ>Js+$O;^j;umzn{T(>8g z(ZiQNef9fDjZ5L}J3q}cb^H`DZSAv7VIFp;cT75MwPn)c2mIHzPL*M;-=MMNVDo$S znuO*F$9TSd_&S8lyL$QA!_<<^Z3(i499 z%$Hm9N!H`>vcsP(@8@f^et5iM@2XVLFnGvqrjoT&A6ISAp0a#fQ4GJ>0-hyS25ge& z9kW=HCwvU|NUA;dQyxU_ymm|BW6$!BO&*UV{U0Blc;xmkn>{*{Dx&ANhr6BHnHN5% zf_KUF>$(n%Yg4;FecHA5>6r=B%`dQ0fi-Y$l7eC`JHM%#^@^k2l&hkFiA8sli&uwJ5-)Zt@itY{t`v#MDSHczuFPm5J z@VSre!$XrNUVFDuTda;f^SB&$z_aDEBBwb0G0jT48akuiMQHW9Lw8p8<~R$+t?Dfi zd-yJQ$!3o4CYG_4D^9*VB|Ur2x;;}*Moy{kzxB#MTJzLzrMDcLo6L?V{H_0`ajadr zceY~2l9f}EYLwnxx2-ELFtiiS4EW=?fYoDV={t6j=h_oCy{h;j{#;t-*0RS3^J>^H zb^E3_e4E`D&=jAc{N7#lN2$AJfxXtj_cQ0H{(NlqX_xNF`dsDpw|6gx99{8T~yk}r~C z3lf$%DsR5J$%ZHMmB+d%PtWd~v{mo;?^h{*`WDK__ndotnx)ri7t8lmMKwZ`p7+MY z%{%Y(X@8*M2AlYfFF(6t{#nMqELgWf;)mt^j+D7mL_e_hJ7*cKocWcz?m&omdENOC z@$!EhbF2O1v>u+TceE$avqWJ*<;{$gJne?^dxpzWR{0a_81w z_V=AC*UaSh*iWj^TX(8mvGe((RW)y}Z*sl*!{mzF{EZW{YV-p@A|6nfZM9icRe2SMNED5$KcXEtFouwbzCo9WVtV>E;+@YyM%3j=abJD zR$Y0J>Cyf8jhFAd)-8(Xn7$mk_)R&IG479U(5H!MVfuczq)g1Ny6vg7TVlB~?C5N9 z$6rdP-D-ZMd)$i*JKDZmxpnD{j;Z0!ucjr1uDR1SrQnWRO(n;rmyg4aPB(XWWN7y2 z_-y5=y&JXa_UKN!Z6*Ej`F*9@edkvF_&m?UyZp8X!~6Cvh1)|p9~_>rPW`5bLcgPz z|0b=*8m&vOU8Ff5*(*o-MNL)M$FlO2r!?oY>(AOHt~1X!z5a0A!0qji!sXfA8XKqq}@WtRx6pt=P-V9{1lU< z{I${`s97~^sona1ld8$RCJ)X|NXyxz#rxyB$Mx+uJ)G}xzI=liIZF)Xo3~U>49z^VTw$wxy0Y&NnI(0P*LVr<+cJ00qgh4IzqP5= z>E4^NTd6a?+x+R$+o!7?EY@F$yT^Q}vUG{*hc(xFek*RjJg%#OAe>o{E7Y`?{kjB?n20U4m&6H$Kh`UYxejZ)1MLj zsda_x-CFTGUGZ*Rj9F*r?z`w6sPx{deal1biCQu>;(tufU)6M*8L8ovdHS!l#Ff1@ zEtmTIFP;3+v(R?_ZO3bCY~xp5wn$B$r||q+jqs%dMULn0f2j31{CPV6%LC_?_G*XQ zsZ6@>_-RFu-4f;htS@)E|D50#(`nKXrY-+TSHCCZ(B>MC^mlz%)>ZwSpm#_7JWsmQcc!i(8D=u>H;sWN$tC>yTYs|e{xx4Su&AHcKs?5Dx zdDrjKPh0-?DKhU}CG$Vo&i|{Po2edo>U&L9I*3e5zd7Ib$D?ya`{inU(-)tSG&!-8 zz2BMZspC1@pMsa`_WrQET(`Hv$m;g0sZLcNt<|3M+nj##r*XeSdTN~Q6L!Dd5+(OF zPwX_;Zz~pTJCQxm<@KCl-^%4Bd`~{wE-hBLf5F>|{gdzBCB*{$?^WkESM0xc$+Cn0g>Ll+ zb-PvD@4Q#H+qwN>S+~@yzryF8qF&3qvYlbxGwGb7jnb(LS<^+XaArOc7j$^+b8cac zRaSmCS5(iE8ac+2BTrz|cg z=y-f$mgDls%F{SR-lR1a<7hgLZdck&y#g6Ab z54Y?u@q2piFYnuMi+dq)mzVfHZd_5>VAfloeQDX}c`HtH3SHGa-+#_vvuje}Vo~gf_b9DbdPpkCL z=j=V7=e)CWu}c4(iLH!3olu=-ENZsn)|Int)_pp4qjR;=|4wp?&%*ZGcWC&6F*OF?&+VWBrolpvwoi9Tn=cS!(;&Zg;X79Wm^D^f2=A@;?y7f}pb6@{B z9q}^e_~vKc&#nHI>?^tTSDWO&=~AQ9QS&^hDaf zvqd}ar`^llX?Q(%nWf$AN~KHE>W=TUdAbS(P2@7Wlr)$%=c{StEOpHP++LOcEPLXs z$hKcO4|AqEHb<=Z9(Ipc^FrpF^JaBPQ`ej>tCKU`-X-Xu?{kaqAKzA=9oBCjq=tLz z_JzmgW|$`Ix43s^$=fGy17>rVFPK|1&GYtA@kM1!r|ul(pSh)?j%(}s#QhcXaxayA zp1xvh`|kI7aizUiz7@YE%1m^UUf>^DCcf#TchFmx%Rk=>Hy}J@uvNH<$4 z`|O>Wb2f9X#Tn_@Ta@>RW=StNqg>PBX?^PWf^RZg7T3)6v_7_dVcCKRmJ6nn%jVp7 z%&qO@P$=Dd#qUGS>y5mw$_@KWGCS|cZ?##V`l(Ott;&D7txc-R4a;V33APd2dUwIx zNA141GV7$aZeB3=nZD00$$xxXWnR2CzEj(LWzvr4Y|g(qqJ;9ZFP-~zZpB;Xw>tB) zE}i?hb44ucTN(S5OXofZukdZMvp&Ds_ZI6vp{-U6VjrlQdA(KoU$b~&E$c1Udl#0( zJ`!B5Qld}Hb7S9Iy!#lozAh-e^MF(Bt(tx3EoY6- zYV}!{@;=@Vv}SqyS*-lF&eq#|{-ilq$6GP2X!P`cs2dQ?aXptyzD0y5yk6^mO3}TC zy8~V`DSzVIpL*%tr;;nvoX@^1%I&`Lu5h|;+c%D?mvY|?Grw2LUeR*Se*f82O}97S zF}J4m!32|e370PYl)N%)Y8S(&J6c=W@6@kec((kxgQ416#ra*gUTYmxUY|1y;c%*c}N-B_fF?q z-+JrFqozX>-I|Qsznfdm|ClkiXZL&Kck<~IcKo(`+*o+&CpUlh?VX*`NOnzjuF$?eoKdvmdBs+?~HgcE#7SZiZiHm+XD;J}{f}7I&O!T-N@= z`4y3y@9(&s7rFU<#mT#uep;8`*PXk+IJLjz-?@`=FKbTD{qFJH``@J}H7DPyJ=gwM z*#G#S!iocN&0S9M`ya(sFTH%OIUqYUEFgKw$Aa~nJ~yg8&z9?*wROdUl^&WOT7J&T zH@Ce1p?1YtU9A@)L3|eXKjcjQtXsb`eA^4%{`>mTU#7jksXzDqkBfgV{p{nn(wO`H z$AjieKj-yZYRrAV^St8An)9{%p6Pn)i#@E0f1W;kY3Av-?MpxN|NFS%V%trF>wgd4 z?e}=g{M{xgBlVOUgX_#K{WTg{;Sag~pSZ8^wb8U|(OyffxvP%#NzT%rvM5Wp-?KMk z;tJX3*ZmplzEW597MF<~Grj61KV9mwmi+X$$+s>DZ>sf?UN?DT*V9`^gp2IgowZ7w zvU7XPU4eDFE~lcGmUb+=>2uEJ7T*=ALphV(t8*{SF;TsE;oM=H_e(-OrbNZ9waU7= z;OW(<*;{I&RI+5=J^Z<4hD+r6Keu=$8}HvHFgH9#sbSJYyXL}YYa;!mu59sY33A|e z*9tLp(p<6DrD(m_!W|j==TAwE+7fdmtLhuy#*B5#mxOs}*PgoYEA+i=kjLg(TMk9( zUeT((X}x5_x2>Mqi)y>0eoO6j?#ejqGi$Y(*w$yJ)$Kd7ynUkrb7ix(CteY~dT!R1 zq+6y}bPT48U;by1dDQgnmW92oznu%$9?M+0Gm~*eY0Jk)%Suf%RkvtdsXA1ry5*dJc6BKaEAza^!=CtqXVn!Ib< z2mf1ISMpxn`e~neJuv%~mWQWNcID(Vv(C@oVzuI@L;Unh$7XH0bj##Q*r5)cwX!Ce zsassGOgkL4xM$hisZo(xJ~Aqvt{lIPwn+b7i?SJvp~20 z(zk_Tyy1S8Z^I{l+xd-cYgfSZ^IOlKKdJqkd+jgFmw%i-Tc=wnf9B5mq`uZP>;9oR zUt7(tEZLd;IB+%ltledYmV{n7x42Bi&5`wOtLN$!d!64hya^A~u8zx^y5-b!-nY6L zQ@5n4t=;s^H0ylqT8C!eDAC+Am6p3hFYbz+usK@v?QiZ&FBg8@tuR+E>WS;iFBhz0 zr<_|Ab-w#jWN7hzow=b~yQVMQJS*(+rjoGBbJlsJo9f;defi}|%zBUI%cmt5Rb}m; zG3V-5bG7tR-Jh#U!mj7VOg*Q+b<65YKbKA`@U_~1g)e^cIjLJSvoA$DN6*%oYibg` zspQ&~G8ON1-`roNFW0O*yGL(s+^s{eFTGsKyGwCy+^q-FmtL;z-KjYDUer0?mtU^c z?bMuWcWd_SOD`9z-k;o^Cgp$%wrhCbl>N${F&97FCC>lV`+`4{p4rM zuR6X}y5stH%R9BR@vpmY+1xlEKRfdh(-zhhp^d989IR6=F>N(o@w8m@$>gT%CU+W{ zw$2cF$#ZGh;UGBR_nzspZ_hBlT(fv?t-{=eQJ(!`^X?ND|+h%n7#reS2Ft#h#<7RAWi_**5mwI13d&N(?iBZaHzX|V& z4iUNX&Od6qdeMHjTSb$vMMUS{TEDUEi+_|*R{H5Z`qv_UUtMB)@!pIrYEgTa2W78n zwKv@|g{!IRzo+zA{AL$9Y-?NwXo-jK# zCo<2$!#H=3XZE_Y4!Y}3oS5+JmfGZNPPbcUMU~ZfaKGK+*?mDT{q!!E3{J~UdV;eS ztvGe%#{d6ElQ!#$Eo$)*cqz5nHKyMENZ)VKR*kLVe@)N6>e_PL#dYDS1FO3ZU9d0R za3a1s>Pi2ZKdQQ_Z7wHhA6E zDSCJGb$a^p4tMvC8~dj9{P*BLBlEt)#dF86^YSzQ3;&lny3_1j&eYFJb$b-f|NHe+ zX<5IyTWhk6&T|2FTh95SZs&Ng@B2LGS`YpYY||9j1mU+r|{%7*>V zmivgR+VuY~o~6}j_A+zndHcKiv%XKw+IwaHw9GHtERSzo?_qDD`uTX9 zzrN(?{`$Jz|J48a|9P!pyZ*lR@;%Q|2ti_*k#e0*|q5q$}fAaadkXO$X)tcQtOU^34ZF*^! z=QsQK!~N!7N4a7``IeuqGh5y}bLUpg`zH)9x$V2S=%ePQ^Ji5%!Y0_?4Xuw?i_YDb z?52LQq;ul`-?RRwKiZ(YsO|ny%S(Mbp3LjW6n--6+8n#>VM}WHPSqJd|6}_01^dKh zJJi1akM1*E)f**Qr~JHN*PBL%zb|eo{|ncRs)##Q-+J@?eq%8Y(Th92-L{)@(Zaoc z{^ac{CpZ53E>Y>=lKju`*(A(Ng z${Ald`sg)Xf*>-79)Yxe@)9l#t!q!=jU23nHrg<-R{l8p0dim}8 z-v8gz8tS)ZZ22X2Kggq@UuMir>+gt~_9e#C?3Bp)Rc`wpzim8mFnQ*@ z@2#gwrY@c}S7*`0f4|d}>i_c`J@MY;YyJJ?|9>x5oI88=$Np-O$C1zC7w-K(t1x4g z1$V8`(HSeJ{^);~Y9swGy>Ip>eKWP@|BclzcIy8BQ}u7Z%>RET52q^J7o2%t`LAKD z%j4p!|9xz%f3E*1e>3}BmEhU=Z~yI;kv#i9Bl;wFLEj zrdmGBuz3B_IB~wJlAOJ2(%%jHt*+0$x8=|JSAW)v{oh;vKP>-`?Z2wPW%~DoCd&QH zuDWg{`TvXC(uE!Tv%4&O>gDSK?aQZr-5BN7FKXU7W5NEfyH>g$G9jiNF(?4;CN9i6|Q?limC zB=z3@{Oi>RS^ipEs%}5E`P<@ue<$a=pDN6FBK`R7{#RU&>SrhR{4=>%D0$rU*AW}1 ze;+@cHC||FEPb(J_LO8V>3>tJQ}0W?+&no})O=}6QS{2yK4I4nY!ln2d&(wNJLh)d zZRXo?H@+R*Cclk&Lu~6?shpD=V%y)c<(Mb#X1$$zBPhYU^(|jcdE##N+qE|?C3v^L zWz6AEJl&uxyv==sZJRFlHuVj*t-8|NWNyqm_>DU!^lGJ->5Z&I&sb-h=lt8idO(aL zS|F!1@ilXF{EfPnwemTC6Qvn$JKSJ9_)R#cIZ>MFcEF9K1ZnQu7B`L^He=k@xxu$7 zmoMjY!s*p7_8SEpxi6=+aQSKHGs~}p9Eq3axsbdPv6Y(DBVlu$S1G3(svWRyc9$KAKNdtTH^kKYx_H|N1V^(zqsni%17^6x2gXM zRB+Qc{G~)jaNb{m=dUh)h?qJnWQvS~Y~8w+S1*r+{FhrR_x*KYSKMk9tNc&gsZ&2y zbjI#|-~xme`uws)S(OZ~!w=U;Fw&t7%;;C-K3@Af-cYvUHm=6?(Lyh&>J@0G1L zwn#Q#jR;uoAa(lWtmVsI=lU;y7cIUz^hU>5?W+uCmY*A>PF>5qy3oy|dRtOa;HB25vY~R9Sf7il=1-lz zdXMLdSyr3Hj=Wx(DByZdbm@gx>z3GjdDt(|d_7{yr&s5FdwvK%F}a=I9`=2f)$}RL zAL*~z9ul6StF(P;*Wzi;GyU^#D(GfiZSAOV<-8&4U$rrI_Ic+swJG7dR{V-g^H02= z7_hp$YLA!8&+Q)KU$4G3d9=>rTdhmg%FL~%Qis0?E>bhmbJ+gkZP#_%=qU#-XbPyy z{OnWHcpBt(p<=~Jj#(>8_NzWx5Fu@|YToXA zSTGkpUfTV|W}fE#*WWXArhJ&Frv1_L+#9a71<$yz&F}mcw@^j9r8IEAbzuM9i+^8k zdHm#|PMCd|&YW(+lBv6Po-^9!C2Mn(ZR3ltx;oC~c_GhjS}fhyzxCd`P5Np>ME9ql z^$*>?x(Cedy|}bX@P>EoeTh$zYgz2~O>DhiweZNxzY~^hyM4Vq{^Ie|d(&h(|2c<(KLHwSD%}PWNxj<`>cJ44waH*7P9R^gTUc9{YcB zP1K(K%4yfR4{lNVU$5U<^rycnW+&gT_R8}DfiaKwhD_YIX!-gJJx@As<*IqTUb-&N zNch{?Yme=0CoNN&*A{psD1W+k&$QH864KI&^@logwz3HR-(Ee*s`OK)?p)Ql?Gt1E z_QWjI-lUhcN=m*sxI1uu>(Wg92O5#Lw3aHrQB7l5Z}V=I;V13BphUU8X2BPqSH|xC ztaGXV$F!Hlvwl5YSX}w(lW641%D#y;*X5sbUi+;Z@qT;4-us8X%rUT4_c=e4`5d#~ z!>YO+^W@h(-+r<9)(gwrFLOL>)q~D=UMb%7((>+?IeArnigtIZ!|n;~dH<`ja`}WS zGgm8eZI$|RQsk<8e_+*L_LsSx*DgQ)Y7v`%T1iOCPWyhz-YpTf>S6x!%Esw)PK&RZ zF0kzQ(qD1eUyH<6%8P0L-2UR9?k@W{fAtrJf{RbsuU~%t^-G~W-_AWOP(7y3YI%IM zx^c4NK8c-oEFJyT4~Qyy30R)|6?gJiT=|zTvbK9YN@IieI<(E3yzu#x7cXUO{|5Q* zzjArupV*?9M$0E%XV)fJT-l#>FlO)fqObQ(U$ynwUv8ju>0H&VNdMhJwSQjQzFhTu z%B8D8Dkhg_PE~4L7^t_@oRM>{d?9doBooy`suD8FP{DoDAeb;_MPkU;(oc%(nHSDfmcrk=cx2_R0f3}j}x=J z{p_a4hIx+{A5YlZV$h>3&lcVE^~K`j1$(zt>}@~%HLT_J+Kk2LKTJF_!?@ZmD)A-T z%be3%U!TP;y`Xh9w7)kmtM$-VGq;ydU0!~bUm{;VVV-br;FJFAmmh!qQetZx>wo;! z%Lv=MZt{T>1s2Cld-c=%>z}PvRcq(nTeN)piT1r13yiBUhlsfZg-HSQ9|M_hUs`B-E>8|5?G~e#dSDEq^p*tVFtE#gq3%hkrMJqiklQ{YM=!>`e^w(5W?s}F|@i9Q_->UpIb?f`XkH%hY@7leJ zU$lH3i>-RZdCqIaZ5z|0<3#w4Upc?`Uz+#u%0{!*Pp`Fgg*sMu%)JwJiFI3E-o&cA zVujyRrSDcF%uDmiRNDfVd++t`xgKrU)Aj%MUe&#`WrCCJ_is%J;w%iG z6}ZTL@1_;9N74muzt-(q_+Bnw*RZwgcaG4U*K;S_%d-wxq&io&TE<3MK2FQ9{hw5B z`;5Ool&6$!+Z48mSM;yWrJvqq3zKSh1g@FjeQu$i@?9^!#q0muAG^o$Zq-Wu|Nq{W zF019gdUuWI_e{UmDei)E7hBKb@$D$+`!u0a?T}rUisWgT-x|)(B2#X-xB5tO34RMy zIrZVh1?4^0f6di?`~Cl(`QK~p&maG~cisKC?Dt!*-AsR5`{}{l$%gZ0f17dR+nE~; zfx@@%Wt}lUzIAWZdJA2%{8GVt>#nA(^;x%O_T@Lz7Q9{S_dD9`;fmPyoxAwTkG!cq zA-hYexYShUc+KS{ch}z9z9PIn=Bl0T@-4F$-go?6a-e$FjsI5ft1mrY{QCCS(lFhf zOYb^7ciZEhIydw1`g5{oJ-L>rZ@hlgd9%UX?d?{dzeZpEkFKfLO8d)g zXs!RIYsDFZTS5JLmlx-+toQz_^>y`?aLM2CpQDy#Z`E0L{@@JR|5dX8)nxx$z(|X| zRrzyYiskO~jpn;F?e>u6yQbvBKL$Q?|)GEtvDoa-DMK z`n|g{*5A98z3AJkwR_dF)_2~%e(>GxTdVhflUlM@YD;+Yx2y|syth_6R`*_-_IS%v zmt4!pXum7dCU1S3(ypCWo@x6(rB-{k%yrr5znUMt?ryVj{hGCW(KjCc&}U0;nbe(~ zGuwKu@cK6@%KFl;*IfE#vUbg+S3kS0*IqppRr_jf_MA;$m1J)f8P__KL59DVbyPwD--pv7~3pKukbp5!Rh_sN@|`WpN*7 zg#T}udtKqJsYf;MrMTuTsLZPi&cACr@O-UkKc{uA5!+7I@0oYxv6^g@3qfXIj;X=p_*v_G+5}HaJ|0S zk9DBB~$IY#o~qC3woc%J}9L8R>g+?UX>Qw zzPc~mHtuW4)s?F@hpZ2uyF4mnulrZmtD>v&SML+wtQ;w7&0p6WW*7X|t90=z|5eco z-Q@bd-#PkVd-eHPgT*a#ANO-wAJ^ryK7L=gOm>^<8!H{3TZ_M|zrEN#>D!BB&+0Gb zYx6JvYMAo1Ip|t?(6+O|QITt=if<8GlCwTlv-;fi;IiENUa?u%ZA=fZtIV1f`}vCL zjH9!rbZBP>o8S8Cf49jiQu}rA=ZE`){`8?EfmLvH5 zf=!{?w}ZR`1kD?c-F>=3JxAnvE%VfzVSD8*)7&-g{v~g{<~_PK)#mV4?aJ4Is zYP+?+lAfLk-F9|^*6s3;sc)+@rv4Q<7JAeFVTaalO`kQJ<~yxBRmU}X^}3DWYc{>E z_qwY4tt<5N!sj73P4_Q&W%pvss`dqOQ)8b?hMsp=zh;wmP3hFwhp$&nbABFnbL-xv zSxaTpuWDJJ)7m|cd$ry6@{p@m)$XA;O>5Rdh1 z=i=%=>%wm?3!f-eJ+-2DZ&!5k`b)dr+(Q>HUUf0>>WdXwB_X%=Io{^K{LMY%cjqm; zgD>Wj8T%yrz&qT3e?`|w(b2Bw=z9-vr9WOW*2Wc%X%wq*0!6A zzTV%u&-eAE8`mE9=EiT|_%{0Xjdjkk$-DVG$%X2sMgJ9D8?KyhB#?#&|S-WX7Psq1Pf2aOE68uiN zU$gy$&{L0@leWreKiBS`3sPgCvUMT!9XQf>1`8jOx zdCS*`HAVGTHqYw|Sbuy@?}clh&s09Eh)HR*_1_b8euCvCJZ^2hqhSQa=d{no1 z$5A?W#$~}*J7#VM5ueYnK4aQE|H+RN6Q+c;eobkUnY3z6d|#!|=HoVVZ>IB|c=+R2 zeZ%hzt{*Gs*qmd|pCb4>`d;4c?0K8_pMMilcrSEn;j)>R&qO}cDV}F}J|;oWz@I&P zj`lIJNc~N5NqUCUXP!ReXL>v^_GIvZ(oMN@;&YGhE~@vozBl3RDZ#A&Qs34;w3&gT z|M!`r9Hnw+RG%3Y&%C+vsYRA0-!qfqX_lwwq@ObupTT{`^_fy}=guQBX?n)iy%m4m z_ShBAvOEm(dhwZ`9JzOsznx5K*`;qdUFphu>CGn3{`#h!$Z4snP3!-1GO1V%))iv!XU(5Jj?R*oK!u-=`&8BdHVM6>l^#~{?6Qdrt+ChapTSd zF)4aR(`R^}NquIt`SO&<`KMkRFQ2*jOyo10;(0p{#3bk$iO=+gx;pdNYxBonQG-Q% zX7?G@XF|m@cb@5)&U5$uoM$rb#qTb!Ssv-Xd0wLJ>8fd8WnNca`@9C^MZ02$wiHVz z*>G;VevkeyCmVEJSA5qjwsf+M_pXaS!821?eWIM@+%G3tp9B@LN)+$e_w(ZON{U_@Ef^(C1?%OJRe2L<;GMUV4mvgSqw3J?WuHRCA;ko{u z0t?Tz@03`0uDw!oXJ60Tki_&N4$ICtetHViCux^$nt$B1eO>as6EfL{&u{frEl+!Q z(x#=-qIllTpyx+zT8}R`)>oK5NpWZ2lx;EJIZFS|e0}mvC zP37g2?RGZsoCs>MvVT_8Vx|AA_pR3ZT)*mbt8Jejy)*O8&3WIsKY#c(wa)UH=Mr}@ zr7Q0lH~WhzUpe1t3CbWgGpc8x#p~lS9RbG=znOfLqtxaMV`Nvr@xw8F z0oSMAyjjU!Y729;pAy1SIgq9E-adY@quEOCS(TCO!h74#NE%6lsGl6AduMVBzN#|* zonq(|oBs?Hp`VlW+*f?QZMXiH?3JH}*C)?C$z$0v$Hh;*wun)3g7?YN6rHo5C(k`O z@8zlY8+bko6j{8UJY%_m_zd0Bxiiu~?l>RQ6L7t|GH}-?8NM0bg0FTNu20x)R6O(e zb;Ep?+m;pgUmq!bbEGt7o%&_LSG9-cC~gK*{Q>WVpEa zfBX5>o@OiiXCTlrO|WcD?bgzm9A78iYs5K1m(m^Q1SCKN51~L?3GG`<;qt+f>eGq zehy-ZD_!|$EDmB#2eH~?-&Q|)r8sT-?aB>tX}e2rKfjpEUTSyd>)o9HF3n5d&QG&F zTQ(O|e*KwIe5<~{P3HIW$n%@;s-*ef_RacmW8HzO#<$Br2L3dju5{(6aeLK0X=$f< z+s{^=b2Iwhep>VVW}eXI%MFo(u5nw9_R<=^`E?_sBH`kyOizP)akf92cn{^_w_>?G4x zzTV7zJzabqfALklZGRU&em(QD;HxUb?^ntuA4{LHS@6{_L;mY!)BDc9{QA1>dBtCw z{^vLAgg%Sp+L!NH{)-Ab%zxW$6PNOv6_lD{XNJG1 zyeBLFs&X0+f8{)*{^>XCWIwy*{(oArT>Sb*@#_N zr~8LLpQ)6ae{t$C=ZmTfa{|?a4B-V6I9_G{`T|Tu4b!zP)3V?meXS8|Eva7YH98cdlsIc z_u)s$vm{XN3u>|A2W8Cuw~z1VvX{!8c?qf+olpG9`&NCw=8MX+mrt0AG$XH-y}bB( zTYUO=*(%yF9=ph%fa?>%C0&)#bmc2w@7S&1XT9Qc zGPrp7Gs8H=%xSKCu^os|bebyqf(PsF5v>Re|~{iFBSavn$S-g%a?3)g~@)~%{OOZkOstIxD@Ya9nobJ$Z=BDt|cqu92#U==)mJVwLyIsb$-~ zjD)A}xm(tpzPHD(rONi1PBF;SaqT+=7Ovwjp1AW!OcLMB(}J(6-W)FN2)N#Cd3H|f zIU}&OKW1GE=+d-x3 zJS>el_5wTh0$2o|pOdalT;&8Cpd{4geKf&Fsdc*VhYx~DvkYKh%)n6(3Lw3{C z^G0PcGmoFPdB^j-qAk3rref*drMdB@dp4b4epByknQbJfXs|`q39|X#iPs^$D+(+u zD_v6O1kXsH*nJ|^=3a4#s=s9D&)*5%Cqz?TCdBs(oj2%`2gM!OF2%v83$q|R)llIjC$g`b%y_i{3$9vU@C6h3C(Y(&!nb3H;DUh5H}y1pk{*m0>u+|o```q+|NDS^Y0<3 zd41FR&cDi-swGd~e%p7U=7-1pofSK3^XD7vT4Ix0a^hd=S@Hg9$`$*RbM{r0gjv>? z%q#WY%U7)E^fzW^x8SX+12J6z&yUBXm8lif30v4dGbzq%ntPsCS@&&?&Dr(+UuM*v zt?&IZ^Rs)=9rvQYGr7 z1T~%tL5-(EW54jzzPV|(XRE|F%sgXj0_yD86wj+Px-A-^zacI~&xrlZQjV{`kAZ@tQt5c5 z(tG!3B`v%DA$70jX3P&)@72^kFa6kOVR>#zUf)+a7K zt2+B$KIHtIi!#<0hv!`0bNirWn*ZmPX4|y*&uf}%p9OrL)O`5u^Zh5DeL6U;YG1bn zKcsMsf)|cOhPNlny_{Uc*$<+)^;iDsi*=i(zwv+lWw+#~LHFdRhZWgwcK@}c!p8pP zL_1AZIrYD%E%J?2Qmt-Jlr(a$TC(5v{D#-jr5#J_2n%kMAOw-P}_c_4(@1J!KN6vi ze`VPv&`^tWP})ZOnTo|r+<$>GX3WulDQ(cwJny~v?7t^uUQPs!-)M$!wx6j8E%W() zL!9K_wj}0o9ZZAf^-c2NYQZ^ZU2?UN^E2>Jz?9cF`_DkebyS|ReN#40>HFd_pXbDc zBfgO@{nOy)7vG!@Ri@w^^bFZeca9+3G^xn=_hfKz__L*WoYH-RWWx4MNFKR!3`x_C z9xZsiWTf(x@0&W*6&^Fs!<{cVsYo5!>{y7|pla>u?l+&;osIaYee^kjFiD&iqfaB!hw{QF#Y{4PU93+=w4-N4NQ`&DpLOk6j z<-g6VSJbERo<=XLxG?#_F#%dkB0 zoPoK)^BL;K)n|-nz^$&d-E4F6wf)K0#&{GQeQkdfn}X9PCVc&R=99_#-zMu%-)Xfx zeCNQNVK+B0|m=zZyWiUiqdh9{vNiOc{6$5 z!8gY2DITXz+vwkXntE?Oa%e^}&4We;%bVjelY){UVfY1<5-MBasWNEVCV5aU1gB~v zcrNjXJXe=8{b@}3Gqz_kpHtHME7>-m-!s7y969ULr-kp--+QXIb0>E(^UUO0qs_-{ zns27_c~tg(h6h9H`ocM9UeA2IzPM(6am^V?6q7!DJ$2uldxmpRSizl?wl60nwJYSF zHSl;=HoyMKcKq}lXd~~bZyZwQyoch4*$_V%DL4n+ON6CCP%=M>lmS2KAyV_6<8>)* zJmH^zwA=Wlfr|(p&z~KCL8F9_;^k>Fa;%sl$IAQ-NLjq*6vBqQ_uHp|%PL06NuMNt zPqe(G%xt9cw0IjVr=OTGMgPWpNXe$DcpFrPu%&o-&3p?@4bDOPKsl&ti9cJ)j=g`a zwyDF4#5L(iQTDS7;$3j@{xtiWx-qoi%t=7<`_DFnsyp}cmBH?*1qIQ*RJdVN-rwkl zxJPo*rcQ|eK}yUvBT~Zm9C)$uv++74HtyVe=N{L7W}=+r1Vv5zjbO!)!uwDA-;=Q7 z+WvDDte~BuyGIU`wxEg*fkO>krtjYbEk2A?o|?x&(rK-c!r`}n>(cFwKz*uHVaOr) zA5_5C8Yw*G2RlIXcEucMnXU5F9}!}Ij=qN14}Z=g3bnlV>V8Y*XF{r-Ib5%yLCeoy!vB z4D@HrKQn(>WscvQ#v9xl(>}(13Z{j&VRQ5kpEb+s5)u;k-E;d zBa@Cy@AU0V*%V(CV>ErvtUWrG`a2DNR(zWIr26FiN&D6AUO8~ZaAoGoq*s5h^sk(8 z`;zbO+B=Q!0?M~kZ?QgVdtG-&@tx?q)pt_g?S2>aUHUu!_RP@jt87<&TP+n>nsfDJ z=<{&j^}80onz-uuYP)s6wyxUutKn7fs`G2-h1ceP<-R&Ue0f&c+LPC0LW~za`!UNn zTW{UW(Bk5=wx;K=?+M$yYFW(YooU&=i?(Ivw%@v&WxSRBs^1FRec#U9>dsETs<*0k zm)VNi)!!c9`nuKrnwr$tj4kPl|4Q{{lte6kEajV9Qn~oHlQ`+H;ecH&gs3&z^lI|C8I~P~Ssp%g(LMjw#Q$JF#^Cb)@%s;FCT21oj z_*vGvQd=`FFUs!Tr~56}aL>^nV#d)r8HrKfGAavB7e}4Ttc*VWJId~+QO3?qPmfKr z-|n+D>)tBo)wR*GH?ne87e`gDeV6eyV)gdu+?>>?-D{<{zq_?7|MkbU=W}YqUmsl? zpZ~Y?^+)TuyDs0fj@@zj%-m^jLvE|xPOF&Rd|T#nTHNf=+^Q|I_r6Wp#=ot0(c9O# zx3|2$u`YXe+}m>*<&nFOzP*>beOv6Nzlm>`Z;ik3uk~B@t@^8RR$Ja*Sbul}-(#yE zviIIjxV7{7x#e&FJUO?zJnwd4#&Kb*bFY3R9N%vJ@508++Wo&ietmvDKDs{sZ`ZH) zucVijd-wazpF3}Qo!MTszoEaDf0_Ssm7lKlQfuB9S1x1*E!Uj8tZdhk%WM3umqlI4 z%v|1YmHYO}y5jzGwN~@5{_H!q+WP;^oypTr#^$~Hg98GfA6rnZOP5Buv^dQ0}~g6%8gWNu93Umf?U@#^sqeTlTMf>+a4@vhST zo}c>vw)3}mlYYY+r>w4W>t}bL(p}|#C;O|+)%>_kS#jH{KALWOx_Fg(%qC;4&mr-l zf7id_eP7zNZ;_Q@ws!dHbH9RquR3RaVP5XetoxSRjDo&q&Mm#pymp=C`B(E-rOmq< z8zO#w>#nfUrgOh+uPT>ZlV4SKVfCK1QTr}rb$72hx9jLDrK{$l^#QW$tX#jYycu>s zJhy1|)y7q?zrK3s8|L1##VWG&u+nN>`3=9G{H=1m>b>>fmaO8d4_9qIw|#S6MCqQt z*VmtZx$2o>^_JOL$3L&-3){PM|JA3f?tXjUHjVdNe4Lhc>C}C}xl6<6EZMdG)znq< zUrBCT6&AlTJs|eZ^;g!b!fSKCGG0~n&(gno^jo~IM*OOCGMQg9uWtNxf6A_~uP(pW zdrsQ+Exu1he)aujQEPYYezotHrccn`Q`>*FypsC6CfVwr@z=aPVOztGg&kXcuJXt_ zA5YV|xBD0DULm*pR#@7qZPypKuZ){>Q+k&}=~eaLj`g8?Bi?`bxr&{C`~9u)?U8#w zZT_p;_`XW$eqs15uc=!mS>5!E@^H`W{N5RMNwnI5KeIc(%389kHepK11mz9lGOc3A zz4kuYp#J3ICySRllQ($F^vgZ>GJnH+_i50VIeNCKZEuvOd+YCXsyglSMn3%HIwR@o z6IX9IKRY2;)ca-f>%vy)4b#s|tv~6zY5E;C<_~r|^uJC0o3fB+n(L&A?kd{;C;oj} z!ZUICQpb6RJK`oVKasW!_@{jMNx5X-{Kd*2f{Rq@mdUn+e`sEM&eA2yvi+3bxs1%` zJqKSujClF1XL9VE!zty@IZj##FF9x#0L2T=BUgo-W2m}j#9YA@>4m_O?Do$49+V*H|h7B;?#-7`)nS> zDDYbbKNWrM6#2|&a`@ctr>4(?DsO9^@Oo}kd48te>ba7iCKm5pQ@C!z`nfYdEjIS9 zD_%G0{@k0NmKU4u6DmG3BU>eNo#^!#^{daSRvMdo6&r`&nq9eR^Ula!v!a*o-sxO5 z`{$+OcQkj;+MQzl`1HGF8h_8+y>wq^!d~963wM+wi|6wge?QHcHgQgl+=Sqs6RFwj z?}n$CU!5v`hv#k0RoM%3_b7e&_WgZh+Po@>TQw(zFYHaX=iZyLA-Dc{tiFTvx@f+) zb>F2gaIX5j!fMt3_wMf_b_?zL+%Eq@^t!|P>Km`losa&TwCZZ}vgp08uj}o1J)8fn ze(!I|FN?eP|M?$zQf3F^tyg>BFPNOSz3zbMx1992%&%W0!)Dv2U;TYZZtmwvSH<^j zn0h^K)2}D4_Kx!_?*H0->f4Lu-rH}PUi{|2a^IT0du}KFxK$ch8}+rw_J5r8ntk={ zxu3Haa(zwK-##_}*Xx?)=1xoV*4h4g^GjBFPtE#gEAr>vsH;laZH$J{^W6HfhbHiU9 zyUPCzKZ-K1*iSVM?`fR>_1wkZx%Rs%Uv;ip{_k?y=PR4H8kO#U`?kOKL(q#E>2GJG z>uh}f|Ig0T3(vQ0UMPPz@wR^TkE$0-O3j^@*V@TfeYNFYkZ!YqBkPM+xtM%w8SlKd zeYHo0GX5{xdulcR+a2c1YBwE@U;Mc?x$&xf__PZ}pN?L;zkKRs_nW4c@3mJSU%?mR zyE<>4ReXBl`if6`u3wE`W%YZ0rR>H>x@&a;_r`tAyz2UY&9MVZ=O66g49P7qv2k_d54o|GodSyY)V9&%ONa zdv3Gj%I!Y)OS$yj+IO4EU(T10s{Qd)%;MLhVr$2zan&XB4~FqypZ3nmdeWbtw_bO7 z-RHe^{nbV8HFg!>+v?A4{-t$0?SNdE^xaF0Q}gpTS*>qhYh!q2+n&!;O|;h6C2Q-( zt)El8bl&Axck064hugkPyIuE&J8b*COzrvEv!C7ixBnHp=$nh4^RCVgxgWguNziKV zkZAktuM^qVyjwc;P15SkrB9~rUR1Q*=J(RII(rYj+FfNbBYErZ(^lEG{(k2-FR#0Q z{^I)|?{Dopsvf4TZBSoTex~sL%Wa<~$;ED4$FC)SKl3lg-QEAnWz}Ak@Atpu!`?e9x=uYI@c)-~~r)T7tSSm*t@@=7jhXJ~o9c}RTq;ktLW_qN|!Fu!hn z_M4kp<<+V8SKLvLoclX|{f%k%Y+>5&>1Ve7y3`!@|HAM8d3&|@&CRWi)b5tw_A1U; zV(+?L<;Q0(uKmCL`u}bJ?@ya*{JwPK+`AXJ!~WUd+x|a#<(!2d7R){RdGi|imES$% z_ol~5C25=A$@+S1=C(`fSFAtFyH%{_f*BIAi*^&FQD_ zq}0xi-1e`#j{W|>JFl*tFP~F<{e0X1&z_-av61IbrC0ruwzfO&wml+t{rBQcDYfo@ z+oZ1Q{wk3!Xdtr7*(G!Su31-e{8i)M^9L?!%WYEr z`N(c{<=5`3;j!Bv=k0&JRqem~>5RKCW?0*0ub;8|{Hw^S{kF?)6>PrRleOc{D$RNQ zajW%qN2HtAe)zU~k=y(|%lGX`*59?^VBBk^yZ2vR*)M-iYR})x`#*g=RkPmtX#MfN zC!w`jA=egulD+S4ztXp=F8q9e<>zI8b51*53_EwpKkM{W?f;p@@3-*&uhG|<@9}g_ zZ%BP~e(AkgvgxlsZ~a=l^{Ga!wN>DL>-lRhSHC$s+hCht)i%EPTRZI+mf!8%_ci#+ z_qoY`GrsEX+s9nj`pdLG(%${AtN6?9U+>9&|EaO|%iOZ_5B@J#|2^4T{!jY))izK6 zubrRy^sm;hDJ$>fPu>0cJb%v9Y5m&%=DX+HRBXSx@Yl(IKc1Ybe^z&tHLUz{`L=_< z+{~Y8+1_3w>woxs`0Y~*y>nB)Yz-@q{KfKW@0aS5i?QA8`T6ztxUJ9KEaVRZ;r8Oob4-_?zq9y$WcGY_{adSjDm<^3{X12^ z&gijC_1*M!+h)!FtXlHyYFN2k%+I`6vPPxH)uVTYYwtcTzxw(g`OPb8mTTQV`#bJ$ z*@ti6{B1Wso9}PD%KxSL)28Khn|AwN>sxrSc|Y&J{qGO-PXF8K<@tWX>}ki1mEzA{ z-2LT|?EG8XcjYPDZ}C68uRPMWBCWkXEc0~H@363+rXTn3jxV{t`p(tQ@!J)xlI+F{nO^Dg^-f7L#J+pnu!wc8`} zN~gT?`?dOE;a=x`A+?`YOPx7)C+YY$kMFzuLyq5B<}dJ9wRG=3)7t+X`~KTxe7zXG zcHZLm9#hTloqAQf;`{Tx&2M8ro_g)e7T&jOl9+PoCC)4rO~XPJ*3zY$j|9GFGWGa& zUTf8YbtSH=tzNR32K8?1yW$Z0vTy&ZCG1x`bZ=Q*;&|odzh%|r*adDk-!)=zc}P}aS8 zYGPPG__w1Ut#0yXEivu0*d%;q>d#;4I^|BiTMi1k-*Srm$$0$r6ZaJpzgavwL+)W%IeiW%)>VF#ov-!@uvT4@zKJvji1}3B$f6C zbXx8W>~!w!nPT@%xTwrkmDAM7tIS#T>6^YTZqr}OkM+&rDP4N%CiB;<6%&J($iG_d z6uYwU*Wx&C(;_K5d3V3|U6)S$6o1vb(CyrT=Z{a!3<#fP!Tctj$+Sq!PTu`o+pbGj zHqH++UNN!wgQjJX-j%7(&M91pcIchc?tgOP=Y{LGlzemED|+QbYlM3EEepwzTTZ<( zEun===We#wdb`kVSt4)D%LgV4HW^>(Pxhp49jbx@a z88b~iy}&Ik`Dx6|cRfz2Y*$WP{dRuclcL|t!;4t2oRG0(nL6{_!WA)`rbW|xj-9Ao zp}l#I;fi=x)1WCESDYz3wy?Ec43WvDZdvazN#+nLVeB1C;wueOzJl`j7O~qXEkOCplmI zwzx9&`5fWEdbzA8xig!7SqFqqvru37kLk(@uRHO5d$>!Vx;_`V65k|M$^U)2@_Xml z%A1zFUm3EVFyD#qThp{FsOX%-U(pp4ukP3{^Hbo}si5aNSEf7m*0lUSJ+Xh`I-T-! zj(Jrn(y@8uQ|m=K8$JjB^{tV|76G&`}SR*mK7_$%6IIo zX{{JRS9~1*K?!;BKb{?ZtWDTJ?;?u^VH1lU)KYa-7P-{%;zXg zZ7vpmb>E>^=Ix!HQ*O`2LiV*vS>D|#s(Zd+*QdF~(ywMOa64C$=l)k`h4$>Z)&c+J zvYzCm+r4`3u+iAM{MKB_tS2$g^{$+6PO2}f*=_IKJLkPf;C_a#*jqbqzq=Hm96Xn` zYX!N%@8EHt*h2y#Mafg*T$-xRy;XliRS{cj-d6cZG89r>hsmRaLl`sOq5&Ic&3pZ#>j7PIxY_D3_CZaTFmtvu)RuDcr-{-~QNT6Wwl|Awq| zSAJKe@YL`#(JORXr6Tk1xuwpmWS{yppeFl_R|wnDd#rpBG+8b8 zBi9xiF=jn+|17HIer%uHQ;ii9=bvE?YoNH-nd^m-y-#M{ZG!X_6yd{ z5&g~oD&4s^$Jl=HKlLk9i<6=Q?8UR5=zr#ZRqq^YssBy;)pKXwx_f`xb}^SeZMyM( zg@5ZKUc+soUnQYLjlixy;`6{p5}L-)e=rmixca|NW&= zYGv2o-YQd(^9p;49!av81_>9-xMwY_5IV~9s(YcE)X{)R#{z6RlM1iQZXe$f z#!&0@0=KH8vleW!32Q&KIzV}EvTtCe?lqpN*B82#^_m`+C~MyJsdNqNE9nJp|3tGp zPnmBFTanZ9=&bHFsj2zN)(bz$UODk`quGj_uC1=A#v;3Y*T`z!KYnZRC*~_Brf%f3 z_^-1<+x}RY+h6q+6IUn62LAM4BR6&a!ixEwOD}%PTA>}CG&kTsYuEegHO5-|kL_CU zN&3nO>5c1F{E>Uzb}DSeMDygkfj{%tuxr&j^wvne?%ce#dDkZ0ZQQTwoj#uJ{p$2r zdxduW(W=G&%tc;HzHjb2Qto=R@sX^>KIy1s3xD_u+?V|-am8bKMSRGkkG27x4j)yz zzB{W*zVG+q%1W93W8R7#AL|zeu^v5j{JYcA_!kjP@k9RxDNDmTi$5Y7_pUw`e&FAhG{0Y-wO&ia|I&|(AJQE@e(90tt``%r zuD9W@=M(Wi`9tN$=LK$h9rFD4qFw5-e^_2@`5_Xb*Cw^oq|Rs$`_bD)e?oqoUf{Ou zxPSY6M$@9oKR!RS7wq7FoPPVaKv%VXo!*}uje9d6KR#k8n+4?{iol@n_}zWlJ=vG}ZKY(gW+5O!ABv(vKf9(3>Xn>9LW9|p@ z+od9f_Ot(ET`^Jo@%MxKS&jyq?&Gj)kkULV-%`(-m6G`<@keTa^6AI@hxT)sev0~2 z_~ZIQx3DAgTk4s+^0WVB{@A{tLb~6c`#+yZ{)3OtAKY(!wAOkb%fDKUds`msA6nn^ z=&jX1qd)BddjgMpe~@?nC?*@v^`BED|J=u?AF>x#%sL+5{9mTa{K*fl9|B$5AN`p9 zA>Qd@P5*x0{c>H;D{55#To16B`}qCA{FXMO_VMb6*$XRH9kXxx&)Bs* zy@vOXe}IkZRJDb zUpaCABkzYvHyGZlm>rT{F)`wi^$&|H9!eV}?Kn**dHrE{@6;QjUe~m~QEH{{AD;Uh zSxfXja@Pc}n3&di|G{kM-Yp(Et@)g$m$W{z*JQ7lI9I6t(Dueho>P8E@3Xz)(cY3Q zb5pYGuW_UM+$+u>RlHOlSUYYsR}1`uLJ z=DuLq&wu5_0vGomwF}+Y)GvLITrn|ck@25@0X8p%VjoH`aBEZBby%Lkv?yVb`X7T8 z6CZZQeNbL-W2SKJ1OBF@biX%j^&BGm?SyI{9(U;N@%_>)&u(gDw^991Vt}%{%D1NZ z45mdXNeX`g1C)h@e;<(NJ(@S?hPWO3(Y!elJoPeHPAqW|t1}Wg|LBOok9z0cITIwf z>XojXm~y1?gSunyoH-JF^;}m@tn8flVYy@PoQW13|9nCLbp7RIb8M1 zS5DkH^76yy1#Wp>b2#gbMfMj8r60b}Wm**dDCWoQg>LUW=J4CgXFWN0B;?2L1#W+i zxPEY5F>$xB_+kA9smK{SME=QXe0%P~_^(dm+w&tOKiC)Cm@hp2uszGse{*JV{^z)I zBDpj2L%(yc&BPhJ|5dJ>2=27};P2dPGkJ&DzsMC6k9NL(IKNq{(ymbXkC4W7K;Cw9iW`A+Vvsdxp&Xx z2!{PaSx@dBvHkGgv3Jk>9sK{8HR`lg#SX4-llp1!QQ?n!fU>;0Tw6S|=_k)efj|5g zx?NL~YyZ!a_2l!B$sgh!dRsb|KRg}qW^ZTu!|To)zpKq_{x8+F*L)*Oow7)E{v+2P z?-$&t7S=zU-H&zMI*(_lw6rw)?_e->*Ii z`w*vJ_Cs2s%H?{owv#Ij{!)n_YXmk z0oOjTJ8pcfcKd)l)6w4rn`HlFfF#*}6oMrCKD0ab%FOdQEYAp%H2yO&U=P3g?nC}9 zk7_M$%KnqkD0`6N|3gN^x?q#|pF)sB?LJIic%yOh?t}lOyJRhHivM!~sj>etdBKgw z$<>GEGnp1e73u%D3{u4W@O(=WyWczJdNUF0f};2z#URn66= zj8|XVey*-qLrbw=8AUc){f-~=X4=U7tl5C3O5YBz09wcgh_&*y+RJ2a} z$_e?Cw;yhI{Kz+R4*!2~5$lLodKK(lvO1wH{f@mV!Q2mm1C;Y#$^FpMxF;R_{or+n zkN0LovE1kAiq-zAP$Mg{JM2~BkF`V4F z*b9Jsy3JbR%83(KtbPOrD6=o!*JLk|^<=^owja(5E82Z>TjZIK=1u!`?p<2Io3xc@ z%gmb}$r^oS{==eCw&99@8GCaQyZ7Imasv=oAIeRGaKm;tJAUl8`^x@@GvLo6|G%8} ztX=V6R_=f3-}Y#);nO1@?{OT}{}saXk4K|yZ3xr991z9zF9t-3{`nd3CTgYBkCg#$ zLRPwc5O>}fymZ!qc&?+nlU8Z|Ne$Sey=>Ou^9_$;4X+B-sfoPrT6yim<^>huK3f~- z^MVw~{*lqRCmJmKV0|k{k>I~7jk?pzFMTLp_(OO8E1r5`k^N7DV;|->KKg5LRrX(* z#y$RE+lSAcHwrJSI(VP;=wfmEC-*|^fBatH_Rjw; z=YEc?CyiI)KJYtzteYXl@t;GaIwwp1$8nJ2x7`0#KwN`Amjm8xT&eSCGl)|BaNcp_ z@nvm?^c$1y(oUgrJylbzCDI=)bn7zEO>AyhNU*l4fKT;ZX{mc7WrRInGjvwDmx00+g7O75q6#~jL z#=*-$d1l^BD`8NcIdkRahy4z{f2LW9|Ehjf6SB?eZf+8 z;h*~fe;$?Tw@Phq@Z#yZf9qYz4;7L8+ILSs=z%DoA6Xjre%*=uur*-M*PWXmN;_|? z-&OqJ^@1Drce5YPcHCIM>-ypCElK}N@>}wGk4De8=HJH)(s=g6+XZg7c5gpa-XL}J z=3d!-%2z!0TFcwjpdZW&-P(4Z ze%S8Z+fxwVEYEp#_QKsv{}eRt@!U0k$lv(r?1ftCIunuVmAi%NWI%??{YebiBe_fd zfIK5et<*mcjk^Bb@(1O4kH)=P*LdFX_K8+M`$`Y9t6!Vy;;*~QP5XbqUMKp2{M6hJ z{iotToIj!GTkTkF{#N!+=MXg?+Yq5Tx!5ArAbKgge~e_%f?{-OP} z`wy?5F#BQpN&Js`(yXsd$7X+>=zp~Jf5@tb*S(T|Yz<=nKXXgNf1jv>^?JDv?WceH z5bt68NBk0}-ITl!3%@kzd*}by^oHyI(l?C%mwsuFS7&~3{p7t5uT$-Re4W(z-%IMj z{z=Ra_D>W15Pw?Z2XB$aA2vzm|GhG7|9fQ^_XnyS%Ab<_VE@#|5B5(z`QiS_&JXub zdVZMw#N>x>5!;_MOZK|WbJ+jyjp6ve*QfdY)0n$^#J|jXR=Z?-F>_6Rx?WBE^SU4V z&M|+ew&*|b{-F)q{rCSDy^US)*kT>?#Vi38hoB~pfGfw9G`*(yXc>7jJ_w(r+RWhL zq{Pv|+*OpLduK)_L+&}B{$=SLhc?|;);u*oCr;$}N2{BUYdatBu|4U%XQQxs*uBl0 zf8K~Y{&S72b*0}mPnqNAs>g44gX4&=VqXUMC*&+uc?ci#s6%6irho4(&? zjQjSF?ZN4L_Ze$${;qCVUsayJU;f{{&9(b?JbTOhW7cA%s7*WSNtWw0at!@`4eZ}a86dHurLX1h|C$>e zUwivYu6@~U`+L`_fB(DPfA8L&zwYs0&#!;AJGtWcjlSt+Id?2~e6B9D+hu(3=eD`; zZ~XMOw%_vZhZY_9rx~i`PZw<_SRqb-ui)pmQIFRVWHe&(*{Z@>RJU@O1p`Q`65f9L(H-e2=sDfqwR{b&36yx-r-pMA9NYlYbNY3Cp5M}7b5ap%|X zSM@WF{^hM*e80oG;6A(T{l5#(rxhLw+}19$!+y`SqkoSa-(<1pqD8Oug9CGapVWEB zD}Q?0+t>Ho_uDJ~N?7(%Jmc`k_ea!b#F};TJNwqV@N~=o;%?O|61-?-}u{V$9{(I^AFZC->GN(9)Iw!dBJ^_@6#Xr zo&15n$~)?XtdIT|*?q*m zS@@pb!^YQ)+xcSjcYJ+d*6^D7I)9$>4&Mi6&AS=z^gduaaF->Id&k-bYzK3h%Z+!u zeUQgkuD#>-fxCR~LLa%uVD9qyPSFEJ9Zzq`}VHpw}##9clJJr0{-gX zN3w1A?0RhXaYgz53fUcj{OQYnAD!`C%JAJ=ap4DkP1daMwv;>gG*$E5dHmp9!)&H< zu{&GLRniXFGQN}9A+#g1;Q8Lfk19L3AIxL=UR7|P`yKCtdmQgF3;r|Rk=bG1`1#=3 zX6_P_k(E%W7)Pp zl4Xm0yP-ntPV~XOym$Vyy{rG;*P;DjUDIy1ca{a$_a+-`mTi`ND{&^}_z~;9j~~T8 z*vEfoKg;*O5B~8N*fYFiEwJZ!clSZviR|w04Zjl$-hcfk+k1Qaw-~vD_t&4ezy8#H z-`79N9scp1x@7(|Pr&UX>=byW~(hvSG4SaR? z&EJ~$-jB?y=8MjMTkCjd)4$C3->i?8-_8oiw`d2GIkYoLBv4i`;sRv30=bNh8cYJU7z471u zPj+1U=d*ri7kIz=Z~TXScmKEFd)8b3>g~NBTfWcgjsMVh@coZt>#NtZi!=N=bL@NP z_QvY#$MP%fS>G*wP*?i+xWat-&;O+A@^5}=s^FNjKXdc<>IeI_yiC65J$v2v`{jqf z{@a~jbL;n)-ua*E-X9Y`Vt;?f&E3Tbo6GfgG)ph5&SJi7tNmb}{Ew#ZGaLOY<7Fyt z{XTWzvh97jiupel&o-;pzxzdJO^W{a`mOIH1MhxXIPdC@W zzxQ#)dr;v~zQ_L$P~UU*-n_Z9_db4b z?p=-l``zVr3%*abu3z_E{z3Wkb@8ujFR#=8@-Ke3-G$$?cmG@Sz0Lann(r^>%D<>( z-m(2|%M1R^7M0{?ojm_tEcuDr|X}_TKrs z&-&x<>wnJs`g;34?zjB!40c?8uvF?YOD2oY=6`W-dX?F_TKNSdwspq5AS=txBUHXpARQ%>v#Qg{{Bbv>D$c>|JVQC z#>C!~`0vBY1z%Gx^c-GcC$;{{>Hd&s&)VcF9BgbP``NkccHf$n>9%%-Oz81di2?bl zjcsxQlRvg@i0hn|+~CYyw?kx0+Ts;f(q;xP5)aq}&6_RF|JdznyyWU%hAmYId>4;@ zEauQ%w@_jcXqa?}5rcy<1Iwi#Cx z%Y%-WnDxEPne#Q9ae8sw!pk2gWw6ZQ{&On1FyuH#OGA|HO`fKiD{fx0ICm?gMDxKS z-kqnPx$r+<(B2kuD&`57s_m4Tykqe^X@|p1Ph2pLFH3H}D=%lZ&rmMROLzZGtJm>d z;(xGIkr(dZo^ZL=0CI4ir&5U$%Q<@$AFmPoOg@S{$(FRK@vlzo#D zl6TxpR(X4rW3g(lo%oU76>{w{PuopWH{HwFuBPW$@AfBA`Pj{b$l7I=ug?eT_3y}j zwn8xX)P9+3hqhlx=c!R%F+V>{IK_&$^QdFPfg3>q`#6~Ov*z+fg)Du0Od!><^z6kl zZK?igudkk1pV5@X>Q%lah%-lMdb&v4v~^L+QarCe9Tj=!6S6O3%cRX;-szdVdFQ-p z%HhMS6fDlXb`0g;oS5!&?9``|NzC?9Ic$cdjfda8mn~I)=C*sI^YO_(ua{ZI=l^)x zZLmn|@Ra9!%)D3JEVP+4C1Vj^t(mD(o7)}H*Dn0tCg0{y^zom;6?JxljIs06G;^k@ zw+z4dG5g--ZhK%9_9f}^dX|?Oj{~J=WL`>in?HfA(0%QzxCcORHsDYdxC>apy#oizig3*&l82(dW9mH1E~cxtzO;e;!EuzQZQx zY@hnV$j3{KyV9*6&j{==v{-gJvHVP;@~amTrVWi3Kd+M6#(8#Dn19Iavn_LEMc=s@ z?JM4QZ%f*3!SpE;L(Vp|EPM4-V4|1z#iB=(ldCj2qJ$?!%9f=+?GXG|a^lSC1B~mf zCBt}gtQgJ9Ud)iLz4JqgL$c_Ek(l*-y;CXLD}0&cR~}-x__%q+@;}#tF4$b;TRrvU zFQ+9RwF38VGLl|-tKiw8xm(%$cCh~zv<;OBWNu&=?)leRP{_9F@TI;Ku36GME*B@a z&wcSwW{Y+2M3v?3lh!!7%f_zpMF zheN!+O*yyW_iQ(ogr&)WYoBSqJS3awa(u&&35JgS5}DJc-O^of?Q+G@ZG1cJi*D$+ zhb#_seSA{(Plxc^V|=ovm+a!#&(v;Myox>gsz>2@R@1Ai+;ul*FOxKB&U#RsEh%`u zwcA_w?7p@Ax0DR;PpGyBH|xe&M0JG8pj{!njX6_C6#=ef?J-FKXi zfB9jv%*)_fo>^i+)U1|DQH9eXcWcje%B5|YBQg7IN4jQtMEN1*<3T#PKPF66`^>g= z*Mn)6Z+u>KSpR(N_oXn_`}md~v(C>|cbBt1G!%Q4Ab4bw?$3qx!K*!XdOcQrZ?Iwk z_k~wcqKALRmdnXoyn7~pd~($S)2b@dqzj3&vaipWoT2k=o)|}(S=ecrtZ!09b+(|O z3T6rv=h9jJFR@(Ft%u{l>MKPDuer@=^q6D8STlpW(qppQX^rUi&xxivYp2}mbz>gQ?@Pk6XmNm5(z(&J#TW6cGPHK2qbtwN)7BlPR5@Vlh3-(>Q`Z_#E z=BnFlnv`yH}Q*jL1^=Pm0M0p1eI}AK(6He)jd(np{T5gwCiu zUKrnNBofoUQ`2qkS+m=P+S0GK$QP^5^zadwuD5c{;hdKTmIcmGO4%g~0e8}csdnKbG@6*PR*sj(~K^K9|Ar)q6_9*JaWt@?4bZ8S#s3GdO!EIMU(WU??Czv@awp!&sfNlPP1J5}^IWj& z&H5vkzusIiG1p+_dLMNbC&L=s-e)T>-JQDG)BT4-URJ7dvET)C3>yM z#8s*;iI@5o-?(8>qLGxC_bD?XAR*L|KO?pIrK-^t*R%Oc?Q2$DwByv?QfACBaog2% zCI^Ee)}EMqASY7Q-7{Eavc2pBuj6uxJ0hfXZ*^U{dewEsAzR*GVd98Y8v?DX&?8)-;O;74Qr#;>hzdl6tY|yme*uxeY+mA^wt!O>xFqoS@UD`Kds>880qdHs#Xqr7J7RV^2`Og5adf3ji7 z6$z`(h0ev!mb1m2y*}DcS^h&l=+@1JGJjuB2)fNvy4bT&b`}2tDg8NJq$2cdN`rFy;?(c7O&;fyDL&g(c!T-Q56XFeF3x$te}?y|igU$06@Gc&1kP!dSvGmUE))w@=>2&R zAlaSOo7J$HRlAj;R!mFer%A(P;jd-9%f!DG#vTe-k#Oc>>Wjx+OkYErUPh{M+1oHD z3Tb@xy}nwz$SGClD-REsPLk%T3xC8+8Xcbb>2NI+KYR7T<|XeP{->cbBKa4i9+o98VPWVcJU9;@7M)Nbw z`7?fh-temU@S~3jtrBCu>TZ)BnwL}@S$Oa0Gx@-^7LzV_DX$WB-<5e(FkHK@;An3_Z|@2zX;1O`Bas&- zp8G7cmW@yJ%+(P6_B)G&FS+q~KIZx$W3^<}lK{V|GC`q5D`sn1K3O%%IYzbpQfR@7 z(}(2B&d#`UVMD-*R$bQT9W##T@riTVhiJF=Mp>@OdRpMOR_0xdWP9$(-A)pg{Uwnf zlx5isw|M^eIPnN8viY3eWV)7#4;hK$*VFX^>>Efw*E3h79;M-T#B)~1eYoNwz^d-*)OW+ zyTV?kxNBa>qvY7N(kuU3ir$*C=$7TQDECBX`C!vBo#n^+O4n^ne)lxKRm1XXna;y+ z$1g>{>Uq7*s{i?`V-srbXxm79J_{X|TFXVy!LYaY*?q&d~M&Ww&(;Nv>A%(TKq z+2?Q-g52^H8GsT!fI^SGSly&YsKC+C#@*@1uG9C_1tai%9<>+kzb)r?uQ zpKRN8LHbQhR)i2^&sxom8-=w^O;>$VU+&83rp~h@lku?Vvt=8DPM%>?wTrFls++&a zWxmkGLre@k)wU1g^b6OEPcP^>b9Unw5mWs>r(=8AdjjKbLr@C7Dq8&?xugtsgWlsJBt}k=;`|RuD;t>{PS6R?jKj*ma zq<3@G0^-;2c256r!}{fJf3~xgzw{WVf8giPS~YP}X>d)0TV6!iYMFVKNB77dzQ5A! zU#c_rM5B!Y%L-dJoY87oxmQ>-m}{chA_2e8oEK;2cK4iY+0d)na@oge39pJvRGC=j zVvdPs?E-B}lx5Te4(0w)$l1)ExY6aIL8*YIGJ9acJ%ya!Wd*ZLI;I#lZ#XOAa;?EJ z#aGK7&wdg>IV~I(S0PC%Yhhmdj534w;+-5vv=-l1o+Ej2u ziKAV#$>1%2%i&KBPj1L?9G~Q7@rI}6@F9ni4Y~r`Zm8*0GfkXS)T+tZSrfbIg!omL zjVbzbjx6ZE3oWh!-*N(9a|>n5RYAuhx(P)isKnALGo6oNcM{J4^xH)x3!TVR-+4k`%WuIEB=PJFqTRrh23&-_! zO$BRATB@hpU4FfGE&IfqGsUmX+v6a*tl~zc)rW~)Dk(Y_OjUEkeORiW%LS;k`GrL= z%}v?=#p}L=(e+hFGWm6FqN z4=pxLJMqM9mdd9t?G&!rmTyv*ub5!9H$;QGyf4CfyUpgxyjo7@dM);|Dm_B^JEl!( zKhBlOH|s5%N6@TE_q-mrnF%KTsn~Go!^)+tzZo2Z_VBcxx^a$kzG@18+3e8tgr#Z+ zM2&iV)E&JY=`z!Xe9ytaKdUlpWep*efi-&MjN3?^mHZ@ej0A?UG*@w*RqpsB6SZAb6Z z6S%JZ`1zu!E$@MYNf*b0z@Xlel%1bazNtRkkkRW^v!y}i#C}tC3{i7RBIVMf3XO(1m&}`EK*P2sR;}*Z^PVHRk#@DT`n8SJ}Feky!Gr4$? zUgU5X}goqw#=D{b;sO3bDUq0s=oP;3|rLpH-1+ZMZAm>u}xH4@gT@!f6BAMeR99K z8SCb(aV^pJ{&RpQ_v>7aAMBIUl6j^Yzuc^Ay5{Q@rVUb^$KD@Ma{6Upcv>NJX{Peb z*k8WN4WG6xDy!raGYj0hD)7WN2_E6x#WP}?(&ofWsF~CE;$*4rH81A%st>;|*Hh(M zvqIQbd`k0&Nr4Y|9H-klFPx^}d41}n=0%f=CiFbMd2&Ije(9rGo)hh^Yd+{Xv*g3J z4O6)0s$P)eJmX-{?0sy?k3%kNUkBApmvWq`>#6mqM)pYWv`?*_zr+)l{uJ$1sNm}Y3i?qq%WtEt{F!@SFBYQXZ>S#LMobGnjrS+*fp zRrck^$}q;AaUW-|)BjbtM`ou+@@YMl+@}jp-JH06h1}7+Nm5GR(wda#n`nPdoBR5) zDEqgP)mJB6f6n?&z~tyIPm8dCq=Mk(b8dVzRAFM(d?#nzp@r+2FKmSvI4Rik7pQ|8Ra|GshFIT>F#v2gu$)8K=%6bdd+3Oo8Yp?pSh z&hGbWQs(VDm=%K0E%rTDXq~YuGhlxHvTn1YO)fI=Z|7SuFN_H&5Arjc`{JhRgtJ8% zJ8rv*ajd)e;@Ib!bEU@8Rp_PBMb#Bv}=K+7zHdvbH+GJhLY+j;~^+qkJ)%ESP*&4djGs=ag zYx>^$c=DPJ5105oixZRHp8i_2HI}ohX@%tZz=xmI*5#^AtM}7IG_5{um znQ;H{1y>8{of{75dU-Rxn||4CRkEFuV8$QQWH~bK{ZnczWZ;SMOH_L;2s`}zR6D}=Lw{P&#vS*kV z7+IjF_ekc_&S}h+jH`Lm@9z|0JMA}X(rM2gg^&ChJ6TWgFSzvZ^&)GwWY@sD9Vx6$ zQX9fnzv4N%YrjUBkiY4zNwAZcO zyA7tVkl%ITm0KRWzsq5L_w|$55+b=~Hd*da@sr(PQ`qIKSF%!c$Aw#8?5xkaoc*AC zKrCj<%@dt=kI%F7nRNBCJiBo7lv4YO5Pi!Of%w&VT+?zkN^T1~$1**pm+Kv~8)UO_0)@-?Ts=Eu@E19zyRuMbioaS9@!oHL732Tqu z%ITBKzGp}L^FJ17s($3=3ZV}Ir#T(GTuRlf)X!KxP_`72H@|Xt`;!Tc=F{(rq_)1A zrPP?Z%k#0L&#@Z6M>$i1Ev&SrzRlX={CXMV`H#1!UT{1(JuE8muxo(=@8u}=z*#T7 zfBU%C?~pLNP*-}-bBXcE^xLL3Yv-un-Sl@|x1#APZR1b@&*?=@b29XGERsKU6$)AK z=yk?8rv3d{`9YM`v-H$St7q3mCx|Xy5?UT`{6f+F#_3rCaSb1hPOJV}xap|s#yyrr zwcJN1DH$58GjzD=ec8D{##DRSn>SoXwy!SZFgth6W|jTM%C*^<9d333kM)#R2KfI< zRTq4^-{zKZ?gQS9#a26>9P-~<_$P!pO-5n1v$AE=Np0O2<;m0Q7|)pTSTQ}XId;B)eC1|D0t+^lCj{(^F_W_^ji=7ySVLvr#zd!$xLMtu0QWu^w-ac z$ox@Qvu>`uQv0#s|C|xbu~Vi!?Q_^9UCLovD9I&}r1&SReBloDC+(rXLL`>0>)Y_i z<-CdK*@@1!kzd7SUtC6E7HW7uTS0vPVC$J?HSY6NA@$^C3%q_+}<<+}c7$TA^ zK3p!@bxrXe8~3{P`mK5>lOEg^zPCI4x8tn)r2|?M$9shtEvXl)ZiW zDVJ}cE`!}9=`5~e|C!>u-5JNO_z2 z{K%(659e)OT>o$xuW@xb!vhV|J(eocn;$yN`#fEiIac;)kx@ofMVly(Uf-ibr=GKJ zy1TB2d$L!-&5N252WL4?{btkWCwFdf=#MV%9tO7uN^=^SEIErhi#K)7JuUgjC8RJR zQLdom{(`60oXKm`u6imwd$WY0zT{CaZ_ng9-8EKC50d!vw-f~|+VOPRgUS57=_2;$ z77DCisB51dx?sgaiQ{_~$SuG4kjJr|KelDEoyWnAs|!Cqsku=UFfZe|K*QV%X=^5X zH07}Qif1p7YSF)((Bb#}s@9^I%j#BXhpH+w7wP483r=7$%W!h}HFv_1Mb{2YG|ipE znY`#t`>~!7k+#bo7lm2m&u#6w^JK4znciQgNrel&n;tLrnrWc6N~hl2aZ+X7#fv9) zyA)i@UG*(EI^tOQ9SyUt{;)LP4^I-k*&BNr3Xh&Swx8wWM%&Y3{&M#>7kyBt{@z3y!}_xOCoj9H>n)c8faY(Gt!b*!dk-_A{Jnu{;B^cSzN*^_W7&MPr; zo_Ca65p!rn&vmz2AHO{zDqERPFTG^!G6&H5FY?wzac@VX(h z>qu4MHufj440%{~cKNuR+;!7=3(t(_=67arX)Q?%|FPv+?4wxmLe>UK_Dn^^k7U-^-Vl0mcIN(B}PU$=i@r`Cr}4bXfNF4d|zH704o z$>Zt5`mt*#&q(>iYuz^g#VM`HD{n1-yeTqGDEwFO_Ux074Nj@F78WORHQHWry3i`g z^J&uD#5?zrI)2>FS+dx;p*+=4LjGcGe_mlT{?oa7r`(2%>v#`LH5&xyH?t0aQC zR<9E*hiJ(l!4sk1z8iBc&QUao46>+w{2~ z%|4+sJ9eM=SvTDqagX!jYwc(Ct+K5+5qdC{)n}7$-KX5tuczlVeQ06X5*qq+}W$wXAe`7AK)RK_DJ2}DkU(kgkFJ?4L|C_YO*P|+%%_mTJ za!Oy;5ARQx6h*H#MA~)tc69dho!_N1?We@r$w7x^&ziD4Q&n~CEY2k79nqVO{2h_X-4_aqp=*qh&8&>K!P|;=`8l-1P&~znMMrm&{GQx?*CM zKg)(`oEP?Pm2+R!dC_S0>?sOK>6cXISkC%1<%wwQ%7^(k+LrHV@XUNUBeJ;g@r^yL z*KP*4J@zy+U3O@7=(h{DieE0O?07j{Dn@u~&H>&#FPoOFS?C(ECfFrg+N+CUU%HFr zveVseTc)palUh=otHIxGoVmDEuS!fd#_s_uYr$552ycg-$AYH4%c`CFu%Dp~Y) zYHU#C)zxt;|Nioci3mJZDJ^drE!OzF?h${?Z7C!1HEq57wq}@qZ2WViQ{eqqwUCpQ z(Xv~UVz1WTT{C@Gr2dnYAH+*EjNU$f=OQ3^*w`c4W%mEi44!-L)J_bXct`u$tG4#4 zO;)lB`3FPn#Ij5r8(F8n)r`DtWx3!MVP#u%y?oPI+_PS)U$>7{{_dl)UeEbvwsHLpC>6aZW+MUb)IE zj{NdZ=W9#L*?sp_;C#>G_@eU9+$G*iPwcBXb-bH#<>$zMH@*af7tLAhalc}=fI*v0 zuw$c0O#iDaS+(<_CtPQI^1OSx=!U_nNqg6n8){y1kF9i7b7k1fTFI%Icr5YBr(eSRZT_8G6Dn(T`) zLpd+APjVOLd$3Z-a4nzs>1ZyF&hpIy4lYh zqwW=`9Xe|DFG8OqT6ycz6BcH^tG)@RFU&Pg)8^^>$s4lZQcFqK)Rm8Xb_gUyKB*Eq z-f}{uf5S@Sn=P|@J^Un{BkrA6?Z3Wa_0B2NO~Y3jTiCFsZHT%*nQP{;mD@tQ#8qEx zR^Mh5w0Mc2FRR4#GfUphNZhCJ@J7Sr?4&o*Ni)J-v@D!o1-(cqEO(fS{9V#iy|MTF#MGo`!s_ z@jgbza$!#nKWMD{>DCl-{lZe`$Q@P&bHi3-clAeW>gI<&e0w=;jq;YjJx9#X$DAzP z*ZL`uwP(M=fydMI*K~x&%wn8+#i4a>zP{d}grn6(8|E8E@qd`sl`-!|&|(!wmg#@A zoVS$wPh0AYC1P~AsA&en zM%nx$-Ucg}nQv}gnfKA$LrST3{zR=%iKQr2R z8S&Pz9} zF)eG^Jn_i4pAnjyYdM#*sN7KxIjElOs!}$CQ+s2{)PTF`{A=to$|lG8vFX3&J?Ssn zdfo3Mo2BE)t0CXchGZ?e()c1u>vf;j&Yhj&qMzR|O)~P=;}Fm`>pNy-Zzjk%%kR~O znU6Pk$@nBzuD{B&$VT;bT;6B_^fu_W|y^o{(Z01v`U%NYYtA` zaO|b2(1(u^hbRAvGq`&2$<+im^(PgefUGOswu$PQuffHlZkUY zm&W=pb@r;6z4pYjMB^(F%dc&5(t7{pP*Y5%>0#EL7o0i@UM<+XYoe}S#`CD2qw$kY zrvG)Fc0`clL;sZ8Cz|Q1|1{Q@o;8u0-rc&Y=Szfggh-B)-{eIapZUK&{P3g@+TS)~mgm`ol@XS#>*$hHt~Cph#)O>4J49zcDqI8BdW~ z_NA6F=;jp1)oVpwUzFUtJSkZ-xMF65iH(CtmSe{HnTDNWM;tbZsYstXq`7tGRIci& zw{)(k8ZLgZdgj_0V%PSqzj@|hjnxg4`^_`F&K~&qWiDs(q9s=6muy-ubZo0Zn`ubo zbZ*nnPOq+PI{)KAQAgeBy5>g9JzlW~v^Z1)R_=7@wp_VeVZt?+z&lp5t^$s4w`TJ2 zbS>+z4qMbzpP@AAy4{B-i*25DJM3}0yswgV!nwQsk_U8UE2VcHd%3$kc%g^;yk5>w z2am7YdY1*ASM~8;_|l8(l##RI{_vKV#zw;v#&LcJyZtJIS=U=nZJ#$SY<9t<69Fgq z*=94n_k`H4*RAW zx9YQppv0rtr9T&Fl}{0Pl;Bu)5z*2 zYTs47404X2JnhY?zWuFtOH72<{5flvXTENKS5q3vXL<4yi(qnQZgrxjf`C-%vGvIj z5wiW~+%0sklsdlT)DE1s|Lg*<==~+-?F*XU@vJ)Lm-p?0Z{C7cRyub-Ej;q>=&Csz zKXmb1MhbS^V%~SCeoK_9=-iI%FVo!&oitwbT+=?HdSG@{&nJhaTG7m+`b@s39v-h~ z?A{%=TFqLNiT7vMM45G4+?Ca3+fIL)zN}mA@`vf=hhAz4?&LpL;QH@Ubb-;F%FP{@ z{-|_3O^{nZ*F9k7cZHmY?;1ikKS`LpZ4b3j_5E$c;kY#<(QnNp8}6X22iIBV*G-TU zn?8$SV_T!1`NS&Lwv`hXS{GhcN_f}4YWs4Ib(#!Dw^cl+S1$^g@cZhlD?Q2~`3L1q zN;CGdx^Pe1r7-zY2xCK$bjpEQDQ7EUyHd`uocnw}#U?h0e?bwa&-s)dEB6;0nJUcA z=#`%I2rge!(0?W&^O&h#^ux^SE;_1=HxC7#n`hza*)q?TcTQCP?xwl^>~mJ9InC7A zsZ-9fX@XJw3PztdhP`K&a{Ngwf5CIlL%KaE@0VuMC*E=$_1^uajdu*+N9!roYM5J(Zg+_} ze(>VSUplpUPKM|d%eDhPM$J=CFW}iX=impH-20L$%U_60YAac6^RzwSUI5c1`OB?N zU7DMhuVoN3%+_jP`PdlOw&a!MSu<0$o4u;mGS$Y@0*^7OyWMb~Gs&T5*-5VCMJrCe zXj0D8XUp|FYA&%)Wh`OX=imZ@d-E7(?<$H=aqT7BEY`1?`Wl&#M54`CaR!y1c_03IpXU2&I9~(N1 zUimy)eS2GkQjlEauHdT~^UOBJPF?a%ct(X;#IbDiMXlEu@67NCeChq{ZR{UQ?#1EK zKaO3hoS*+Mz-!8;z9qKLUQE!~zb31GrW}j%@3zT-n?+81?VNJ=>?Ia%uHsdaTcuA% zxfPi6&lEmsD_fHqq9lInt4jB)Hbb$G-yk4C5SHEQ|80D@6z$r>R)RPA4%Q9 zxMMm)$$L{TlQBnP8 z@swRIr%L(X!rL4f4pQ05+qU?v{;C=_OU--k#J=h85|#)kHcU}u*?ER>a)wNc$&(s2 ztscwU*V?%Ac6}BSE#16`ZBc1xoUsFkfNxaWbQ9k;`$*@>;oma(Ug_J*tr4gQ{I_c5 z?z^i3I#M1@ld#Oa{e|VA(Znk@3_FD`{;q5C+x76}K_es8MBC$@5@#(>h)3@WuFKZU zP^%MLm=P?tH~FpBv;g(VF}cT+{2%42FG%flm3XYA_9^+-9mOBoDd*Ry=N{U4k*#r4 z`s23lBMWXSGk!Xn!ui?LLsb3ahuE?|5>xfK`Z!)#e4VD(8zNR1bZcIS`vGB>Co{7( zJHofJy!!n63HL|;%j;VvUUIy!w%&{P;Jn};w+fk)<{n;nre9t??ta6{?s@quw?E3B?rC@p0h)R?Yx<+bXRryco`jxn1o3zTxMG8jsGGHg;?SozOVkcIc}qEgu^ zaXF*8yprk%r~T>GZ!3$inWMW~|8AkiZ-c|SKX;3SSYGIqN>N#{QbNn*cW*WSQpL69UPAPzOee1Uuej(tfhdp9MYBoxV(7dwX(V#KYi!M;b+>ijx*wx}W;~L3!=Yos};aeoT$? z%Dh$Q(X&a)(e~y`4|nhQFilZc$rRc8OR|ogZt6}-+Q}X-kBV~7ZOQZc)@|P7dCz-+ z;Wr7x^Y*XaG4JP#iJjILwwO!#{aJZ4)KKaJV& zQYgdJckhGNJ*yj?sskRfJuU7KI8ZUQ-%nJdDR9M+w%BX2V)ip_-ID_<13Rr;On5{? zS#N-QBp*H^(oY4t9D3IQ?u_@x7wMDFbuiH5Tee)OP zMiX6m=Xu0Mo0xJG=WqL4$fWmrb>owN-)1jfcIS?p$NMmK>8odQYFiNa>%>(7O~R}z)XuW1x&BHiKN}ad z+GcWA*Ci@2?Ni|=ZznapT--JrIR`*lq2>+sud zt&{aX^KFn+^FFbUA*Zc8z@kZ%%~sdW$xJl(-%q=QRpOjpcR#3hPJOU)+5HHv(;MT8 z+WsZkHnnOlh)V5yx<`9P^`6O2mn8R^N*=!C#B^$&dYh%uv|SGS8NGk5+`zS&J9dG{ z>9s0*iX-w=1v?)1FLdQq?P_mHQGWK*{l1k!to+)r!bz&hL0*dOK_wqO*jpoJtvMH- zQMHC)=M}?sfnnTo!bgR;KbYQ8eCAQJ-N?9rt?=97yPOhoqMft2e@@>i7{5#BdhVsi zmkn1L*VS%Z>#R22!250YH>2N6vS+CFnCpATc_qy3S8bakzx5Dz@YT-Q`wd##bf*Rs zg>JreIV8>_wW#fD4%;;I_)Xy!r`L+JH=2byiMlv>Uo^@W+!X)p$gbOwPmjBqUE+{6 z6+OvuPQm+kiKJtXmU|_)^0_;!B4&2a@8wmM&j0W(hef?{--8{dQBn6SIbKS9U&c=#iOb2G~24;*#$S*70= z^(DMN^zpopDMx0V=uE%$i07aVJvp0FjL%k}aXjp_*z(k&|tr^nRj9iP)UVN;INRk=kg zqR*e5yNpG0_k`l7JjC1Xf9Tz{8Io(`L^k;Xb@PS3PvfHO0vOSy= zdFfgOYx*;}+K0PR@^4Asz9;hEP-B$^8<%V3;p~-XdG{>5-qiD;ZF1{z(N~NS+qSN* zyR7p0+vY;aJ$G8o40Wp2Ls(ZA&z<}@WbKZx!XY9X+aArn$Jiz7mc7P!UT@kl|5Mpd z6BpVSf1C1Y!L2`kb{d~LEq&KbPSt0Xp=PB*{)LK5z7sgE=9ot*O!w9dWSz0*q3`)N z%|%Ko>Y*ZR*VpGTuQxE6r_(d>LXNQ1jb&QD%b(^i`!hpso7yb*SL>O)FKnyy6!nxg zZVh<8ZOZ*S3xX}O#iN(ETz5IOJ6Po0-p1A1YI~=z}?zDDutNG?0%$|n;mz1)U-S$nDO zQa95aRn=Cx`KMMH6=r&}EqM1dU`7<1u%xonD|?>Fp~s?gn5-O5f4j^(QD)MY=d+Su zZkG}{ze%vjE@*}7&uXu@A1BI#q&QXlIdI8qkiPC`l!h&Lz zUu}~1Q#wzIYhU@tbokXX6_arFzY`j*W%cwnCh=@7c1bq96Crv{fT>;i?w4cyE*(40 z?!Wo<2jj}>&>)_Jt>r1p{BB2yS#XIj`NJz4_P*od-6gm7aUGp$k`}4BBv4EA$d?t$ z5}$nfour=|1c_8i9G1274%p+dVWH=on79M(-RUm{w>}7&hS>|W}VeiQzWu4b-g+JV*i=|KCdw5 zw4((RHBL2&cGU*`zLlk&%ig#=?cC|om5V;|7d}rhYZ5v)+phVHyg!r1{yk@Wjn2PG z)-PJE-aY-#y4FRyXMRpnS9yQHgLQ8shcAC&-aFZv{Pit2=VV0wsxav|expLo^104m z3sdg`vq=o03i11oo8Aa3oEXTl(r4=1dc`$iQ|+u?vWZQL%DO3d&h60}6<5aOuR1UO z97{P9b!$OUQmRdsqFmMXu!xuH1zXN(9sF=lwuoV8qPxP>i8@IwCK{9MW)!NJ92fg_ zM()KyncP*U=P&=V)cldWnc4C7XbU;J6^F$-I2Kg$)Jw|eKG>Do@$cFKwOd<_GfWQm zdIYRdycN!E64X?5F-<^7UVp0IY?HUqkLIu9TQUDupqA~+%eQm4>}5+jE7S30LtDB; zm?jT9mqMVI&y@%LLAuKCQ(Ds=f=g5O2cy&PxF!o6-y_E;-)F~r`Y|6|4@?;Vvgo-;)F zU(Ha>mfym^Z%T#NvgLCZEPZ-2!ZhUM$K75wOcFfFoDy6yaVKXKud%6JmgcDl5U@jPJbPQIp?r{rs}&Pwa#Cf8L}&5kIA*4h5Vv4iP!?LCLhTqiaRmb(@vP zC9GB~@5l<44*zvb&b;z?&DO%ads!;mf2$zhC-tXi+8pC0 z%Y~AzYVQozGn#s1hlRnQMV{#5SAOLmFwOQGuOB1v030>3+- zciH&r@PXu`J$IgjUOf|W?~iY?@icwe6FT)b?mxWk^mhFW3%PxJCMB~vmu8$^UZ5)~5xPI9NPUB- z>1zdMp`NZRri$qfbL$jCl(XjK3zT&6Cto`1_oKTzpw&R+#i4+?r=!nss<7^wbdj^q zH{xH=PAQ+m_q(TG+0~#eT=(;j#|E9!dSx?J~>UY{o*JIlD?Y_1QY!Z1GvLr$AHq)FIE+<;`Al0&gnc z1)qQT@yhaA6Ge&jPd~aOC?)*mum32WV!{%n6s}~y==fKShnsAI`>*%>()L=vChU;c zo+!coi>Y-schmxMobTrx*bZ>u?V))B3#;b*%N6P9$HUZ&2mPO&YS zId7_}f%q{uCtvNU%lw$`%TL*6!f?i2=x@b=h(D?4-17N9P0>%3TJYzKLcb5^>a!N2 zZhM_(tjQE@jaLleR%X#YrI*s`dm!qpXz9ttQ=SLE7xt>O>y=%)>2Y$)nW`tVThCNZ zY1jC4)@hjre}C1cxM_#yC7wJc)by?ATKEMCxm%U2Gm4X2x9UAsd^`E)S<#(S6BN>v z4=cpjcOo}Xf7pxV3>uh{yn#e@A$1L$1?NsMyPwCcf^PKefx>TjAQlix5PaECj zuAFKX`5Cd;q|!U#@jks)x3fo$g{BE_tXiga<)vi4jh1Hk@2gSaar@Ts^*nT%Bi=Ww zsd`HHSCeVacXUQEKR%YhY;-ro?w{{By{WBhFG&fjfT3 zmb9E|=zVxU&rtK2<(sL`-8n@&X3c2N(Eha9uI9?}`++~YIa?j_gTu8l?;FsP5@yXK2^#xbDZ)w_0sUgyGVT`+K=- zk{Pa-dNqCw^$E_o&%5ze*qXboneUbfCCoCsaG|hOH(+O$M745Tr$Cf{=(hCEtR;-1 z6$1Z4S0)+e=B%0_<(PB$(+yLVy!FAsY)O2VTvzxiCMj-9JCwI3ATP?vCc1gcMj!Sg zvsb?S7QEJ!AzDm)<>QbQX0NW~dED1O-EwwsyiV}+Rl!o-My+4Ii>>%QMRRN08?W`E z_jVO3UUTeJ{}z4UVE^8(D{{8{CRfcv=IRCPGnnhPs=GLiS{;t_=x1Dy|!|<5O z^DHVCr^Kd5svnuNM9ckkUSXqKz4x3Y6HcT$-|XSGl5RXw#K`=@YZb#PuMI!$#L8cZ zeb;d2QnTl>cN>;-=KZs(b$wI*JSF6L@}U#0FRE8pX!qSbn>DG~uWCR4*^3H&N0RNB zGWP4dultcT^@sYg?`nqIyC<gW`^N8Hs}Ju&K5pO?f3o4O{=7z;#Js)NpVgm~ zJ?!F~s{HHSyi;RE zci!a??OR190@r9b~P4yHFWO}fRi)qY9V)4=5S$!|0~8=hxa zJvQn+y?%A4Phr2IrjZG^v-7<2S@)}ZGG=INPLwl0z0PIAq$eRAGgUHox!N-CFLL9O zd=zJV_jA#k-b*GjPTd9i!7pzcS@*XXW*uC1CR6QMz@*JHRQ6Xbm-wEV9se}jt1CbB zgs1Cu#r7v+hlKot_GJmJ|6zLN;f%RO_hx8CDrX&GfVb|Xznk)DdhiRXW+6g8FgNvzupgLYwH1+!QF7lP<4u`mt z)1GyPtHmy^Sspi2ABSFWS+ zhdzZ=)>+LGuQr@)Jx^46N$~wT3I78uYG+P zYsCf5&W^bIy(q{sMuh#h{P_}I&D3_2^%cv*zQ4Uw(q{Gbm`~5ftKVPvNPQPOdSRB@ z@m;%DSG3k%x}dUllfRT9_viKQZ?rzIe=NFepGx@e)xNREZ^w&pmA3@&2L{jidGTtk zs_^~|^@;1x9EnK%U$pGv!k!n^mZ?5R_wO(MpU-*i>#mYRt2<&(aL<0$v&$+ds}+)Zb@AnnpBaHW9I~9xZnf;Qz1F34wK}OZ{+-g%Loyr99txdZ zx8A33mq+2I+d>cfN_rnXU-G4G>-DhXTeyoer+u1w?&+#adQ)VlEZgDpsl2zuVfA#` zq99EfZ^O4X3+k%2CZFuM>8KaA$SQ;L-o>Q7PhUM%O4nlF-K+dmqkUS|R!xys_g?jX zY2T;JQc+wyEoG}vS$L+{hd+gu)(Wy=>sV{5eNOLkUD&g?)%NE?KMzaq9?_}1uN6G| zOO@_aPd3e1TCi;1nI#H-rN0)%D({Tfo#3T5ccsYH_Ivr7653ikuXte}bYO>euW%**@wHD|d3*K=*2lhzXZ?#Q37S-ar8U)09SvsjIvgm|qIW|euk$C>NR zo#;#P5z+Z4mj%UWMOTTimX`X>xD;>xbmQf??8-|kJDNM3%Spe-T~xd(IFIX?J$HKee{Pl|*t$++(%G>zj_5?)%bqF1I9Xoqd3M!fS?z z%hPXHvBo?JxvnYx^{dOQ432xM0m*9@T{kJcn&)4xmszf9c{*ys>EP8TQ;%1s$J{7e zExbtS%g^S%&whb#ww|$W-Ki;|+4+uV=L^=xZx2o#TiD^P^*2t-&9UBncIY-=#q5bp zerKocmD%;VE2qorPFrDamWOEA&Et<`#9sv`yY6`=)B3ztX>OT&++p=_q3+GXXR@ul z9xU%PpL*imK@$v_1yb%8CzG)uHR8R zuY_2aU9nNQztY>=)o)>-h4!r}jFO~}L z{&r5rLce#b*FV>nqA!_uxRh0Fb39&pgf;7Hw~|;*$>cY>f3Lp$)g4?sZL7ni^Y2(n zPUIfHHfPCXp*8!DiJHHE;*)XvM&6|jTm8@UMt`$-d7^vr&VcnTedW)7?+aLN?UQv; z!#|Ae-Hvl&nkP=KoIZE5;if+agFk)KO3$@C>AiNd&(vouHC1ZM_Fb$z`%UGmhn;Wy zvdK0_t9P$CZsx3EdCWR)+U6rRCl!4sotkp@>6!z=>vyQn**3lP*3Rv-XWWYmUy*uo ziqUMo@EQG=1@gF3R$hJXeDuu}e%W^!fmzQLu6UN~eJkmE-YeE>>1h1U_15<6OIoKt zPW`*u^PqJ^%rl=KhyKi+QoCw{zsNKFxlYUfq#nBek}F>9)tb5HFBhfz=WVD7Ts$@5 zjo$HxTbDdJ7at_|e&M29GnbUyICNv8a{B+X$G*PPKG!VxX@k}3j9VAxEVSZZVsm_& zg6c+}jW6#!{g{`$l>cXUa1Gn_dHb*2)V?gVL+5wuiuByqE^8mBoYJ21sV=qHO4r+v zPqFsk^UFr+Y-M7tVpeM>C7fRQ?ov^!-=$fTo<0;i^09iSf^K+5;qFC#9Hn6{L24qY zJy}!z8(K>InTlU6d*Cg_F;QpJu3#(Cb9W`@ zvfY0#D877y`m{g7;SXd!%{fx=)=9FzobU0pZ$}Q!db9E5&&6z4r%Ek6qgm>|Ke+Y$ z%ZJsMU#i;t*kqaXZTj3Fb3)$x2bCT_Y}>>(ckf5OYrMVhbb9Nr&DdrVBXrW#_TH0M zhh~3cez|euwkdmp;%uJT)U=Dw7nh$tDY9sncKXs!FHU=3)-IQq57+5#2-Ur-q8q)s zSZ;az&HM_-?=OA3tXi{9?NNC-%WBW*;}c(?A#>FH*LGSGv{vGdwtJ+ z70a8M{pE%Aa;g`7Gj^Z*JNK~K zEA3md?L^qa#pB=PIQ;p$D9eMfZSJ3gIlsl)_IIz$)%`gQhI93r6X}KS?|8mnshtw+@Y9ywjim= ztF`+MuYMl!YQeFUDSH+juy);by+h-zWcHHjFYbj;3%esGw%+B`J>k{`O*^VoE(&RXvWUsC!!_4t)n_TJK- z?jOUbwmsMK^WL_=3wN*YF)x{4q*UwAl{)phO60_1OTC=fY2^!VZ>iJ^*_E*`vpn*{ zz9%e^9^t%_TYt|>k18tj+4_3lMuk->)_PCB_6BX&Tsc{Gjjq<4o&EdvnCxC}tjfPa zFf!w*-LInH*xcBUn$lMfe=6b7*FSspTIe^oJ>iSiZCY72fBmwf@s;U+jXY=StH)Qa ztcrc#z9CKbtooI=Q|@k$ev`L-<<;Z*E2clr_Fem1s`qo$uGf(lrs%7CY?kQQwd{FM z|2oUqbvsyOsB17X1wX1$K&dD-CMjzeDOQ>fakT5_q&ZBdP)he*;w{g zWxbl+x`~r6yb_Btb&^^6UWcncd#_ID)Qz5-ldooWUhuVvF;!VOC9l|X`q`UGvJL#P7)rIM=MebYAXmOAYyuD$6ah>w!|0#9K`mCR|KUcBN%vfBEr`;_G8PbAGpP_V$lu^SkGW zygPl~^c=_YmR(;jF6Do3mFKrpC|mZ-#7)KSr*H3>;`?@a)WPQ`I(C-6^gC=lOMKr# zXRH02mlxZd7v3pUD#Uf#p1HK}(%-qDYG(F1?%e%yUuPtETV0#czJ#;z_QLhHw(svf znr5N@Lbv(ORj;D`Z!9-i`##s3U%xzg)4uk+w6k+V-&oxH>-xAe+;)Yi#zFghlgjHU zz3;c>q`m!G>GSpj=R_NyBlp*P-#hsJ`4nB5Wu?;v_)EKv&eBT1b6nje_8q4g@47Eb z0@mM5k!SBZ!epy+s zJ8{4Br|%Q~*!JuEd3wd4l}G&E)2?K;%G~{k z?~S0-QIFMj#T_oTc=G+^+JAebtDRKVbKWe`kJ|nA#jSnc_ZxlvlDp}^)V%X{H;-zo z7q0$os9%_G{+_$b`trhgQ;cV9S#u-VKEW*WP0+{Ygdgidt$G(t_c@aGc+OYfmFw?T zH&w)i-paW0Qo4JKc=nAgIZrQtj<8>IRLt7*A?nCpvKUXluaZ~0O4p6OD<#A(Zav@VLY+-x0G>9N(_ z_jdWtwYOyp-OtEu*s8n#_o|#QtF4DLqZ}V{v;62adph4TwEM}TKlw$~s?**}Y?^yL zd`(T6n!B&N z_9t%68Siu1u1DV=wfwYkS^4u6Ij*d2FYa2p>s|ZNH22K$5cBsrGhfRcm7QDp^3~fd zi>`cny)@^nxtV!f?B0^eL3OvaX2;t(J_S{JN6+dP2aD`g+A+(heDb7lsijks7CGPX zy<@a;eOH~_p3A4>s#JgYe9zqHl;6=SHdiw2b7|2ri~87yevWsQW-pnL@kb_8bY6m< zmv-gdt-Fgl7C!ltzWw_ob;BI%{O_@)o-ZmV&Y4pB-e*a$-?NbPAJKO+XRBvlemO%u z?d_dv>+Y;Ww^!@Lluur(J@3Lj->MZxy~=AZ?p(jSV7F(za&`5y5RZp1y_5IftgYX7 zIPGCsar`}=_is%#mxcb|Onm1wyNu`E`l@mj#VekVo*b#4Wv2YKY0YbMr?eo?lAL>U zBWG1IPbpuWd2-g973!&P3YLAg`|Yx-Ha>Nd(Ym!=PHNQ>D_BeB7WyvTcKl5Fxs^9| zfB4oPxneu}QO6(UY)h6IK1fbqFx~fX$2`%byUi2U|CzETI%At<#kp;3?%lk->>QtD zwc&Q7KKG4{_BS%yRV^8NXF2?M|84$`uQzY+|6Duy|10Om`~T+W|C;(<^mQ5c`tt41 zzpih$kKV3qv7xTK-`v2V!}C{l9rGXAJw;RN?{zm;<=wEWcp7}~+re$yzrK3@>)_|( z4!<&0-rm?zTd*|!!>RRrZPMHL+2sDl*uMGt;k<+WU!J(?SxoDA3N~ch`*p~^{;iN4|N3>b z`HwT#jBWQa8F94AMd(+tv9VpSzHong-s_ob)7jF^zU97X{I76ho86BY{96q!Y%X4~ zzy05rLz6NRPK%v)KBdRFvR=IITJ9${vxG+Wstxzb?rh8LzP@;+#|_o0U**nRueZg0 zzQ%1>k^7f-(f0I&*IT98*XQ27w7>56wdFg1ZSVYA`5Rr0DmryGgIN-roK- zSE@!f?CXQVA3V>}Ka{%MuT)NLw`1LR&sU(S_=aE6j>crCg};BVNbUQcBVcRG9R0-K z-t6_Y?C*}IJl8(lPh;G=eg6ObiQU`trr+4){lMO5|FzxGJZ%vxuiNod-l%%YT+3fE zk6rOvzLHFko!1BVYDT_=w-&H}aoieLX?`uB{y$rf!^&LSy<77yU%TwW{KMp$orvVF zsP}9yd}|{Xe&CLL-&mq3aHXt%enSZRdcM0?wkLkL)!iI!$5dMR^zH=pH4_iNZZ+Rf z%<$<7^L&W~N9;CnCKrS+c~d)Q)AvG+0{)|S7`|xl_sBJfux|3b|INT+n~#6}|8Hx< z>nuO2GyHoQXm1`h(M;_^p5w>uos8D9E8H^*n9Ms$?;Yrql~%N$b4TIJLb=`CcR7wc z+5EcY#mzh0<@VpafB*7*=hXRkHblRX+4HHhPOg6bi~Y6TUPm_z-F}*T!-a9d)9rzJ z2C^D;=gl@Q%|G0rCGxk`?Z7#!ty}YLuWfaV?7y4dVE;?-=f(an33uauo)DAra!Yu_ zXu$XT_ciA^^9~Al8C>AD&~Vdde<{zia6)sq-TlQoxXeyJXJ7wEt+z@2n*9Su`8T&+ z_EtCSGiO-1K;sAV{MP;E-@XRuGIRX@p7~9su-4{M^|h~+w(DO-FW(XNt6aFQ+3}Iw z{*F73Pw9XAa^d~;YPN(271rAv=D(4Qd3E!8`Qryur%yPyw1MHphJf&W+^wzi>zn2u zOkZJKCu>yt^!9`MKC+K@2RyyK$4+ue;eQtkp4zuB?IfkEyO00*uA1{kyWZ3G=V|F} z`FnQ>SIrb)$$1?3BlS&bbNIxiId5JsUBhp;ne!O8(*e5%-|t@zueinHd*lB7{i0o^ zZ;M41w*OyuJnz=wHBVN#%c>`&T{mWET%XtSKh+~+_UhLYQ)BLOF#PeC{4MnKvG?|` zcNy->?D-V`pkC(Am*)CkJKfmlH!hQSA-tFQ!vFGspX;vv`jye*@V+JLp4xTKivCrv4Y14Y)KYmU3JwJ4_?DzN}{af>LbGYR}^Prh(r8Da$ zZLs$&=zbt}a5Kw!p_-Ye@A|Je-D0(OVt_UK`nL*iG7s4;-B&tug1_LTXC^?Iy|Qzp+6VqxZ@={Z(EpuuqR?$MuHayg%5O?;SFD_Tbl9E%qn7eShXT z+~@oB)|zy!#Xj4Dl>!BuTN=820l6yBW_+5-?{yd^wo*?y)^%K z1kU&_{h{C3$M>h-%_;mV)_rAQ{aMH7H1n6^x+9D?_sP6(x4d^%|5Qczeva&BMgb8^ z=J1Z%IQ47Qb0glDCY`)q|Lv-Y($`s9{BjE}uG}mATf{~9)$`8axLV$=f0?BdxmV$QN_|S*%Ojz_jw^|EMBCfdiR$*-dShHU~9b|DPsp_UP;W=AE%uH9GbS9lo0~ z{l#-GM@xUVWiNkJX6<_Z+mYvZ-k!zv?);uttrIS8EoMLY+xpt#5BL2SW}d3wSDt=f z?OBE0f1jWob48?E;yowtpRDln?H#qeC6m5+`>ibg_;79Q4_CE=32aiO%f#6OCn+rq zJNk0JZF5lIx17lBeL^>%zTI@)dAH5a+r_t+m6jE08F_?Uue193hxdrjy4nubyoikN z$@2nK{@eJ-DoEGGrT<%O^5TAr^M}f3=N~-2$HB1e{%3RbJx_n$=9zJ`#Kyya9)GG)DEcbfU|0ZJXqZJcB-CQU3GxM3}tg5&Ib;k0* zvfP3LjN&l?4vg$61qZp~3c9&DZ?^_)$|>Ldd`|WI>ij1YC#kiTCA!c0{OO+56r?1)bRA+7KIkScDPb(KyxXqig*f(zd ztAkdS4@5RgyIN(>GfVoso%FsDleV+ykzEc&--WB z2UheRGS@uw^758>>bjQxbyI(4Z{1;cKK^-B*SffR=a26%E-emz9KG1>*~jdZv>-eE zLgy(5w9g+F=|Q;tTkccdSx&J-YZSv373{-9rWIp`03)*w47NguH0W+0{x$gZ~M4$ zi8kM#SgC+6p(0^L^TH<`4t*yYmkX4({ho8${^|7j7o9BMtH1YIG0nuP?F6Txf6I4I z`w!onZiGla6y4g<74@WUr_1g&t!7QJGAqLszIH7W4j2Em^5Ea-P*D~Bl0*D9^PY96 zvv^NfwYcwxBgfo53M*94FV14PF7}S^62~PjhKTU!E4n-OEwtwncRou zwjURCZ+g7rV{>DJEYCG<(Y_A~JB^#AvVPBR@y?&DeZT$Oj7zs4e)?^)Ao~f2&RW)k zca&9nYOLtf0f)d||c#N7sBq3Co9bboaW~UAk0lGWnkB@~!=M5R&&0E6jL$Ao|dsnc_Z1_aAE{<$r$k-dXy-;=x8o zmyZvbTX-6j@;~#QUGJb_GKEKX(W^KC6W`lh;V1Gn?jHL8>G&?Gf{ZX_$*{jStY0a9 z>nrE&jdFX&|7ZKkBnxLVd2I`y7(2y)kixaC@2;6|`sLPo`t0o&N_uN6Riug*S7?7) zBC_DZF2yJJt}7InFLDixI(+o|(rV`HhaRgAta|#+>4&=OXT^ijEcN%)!jmeKGdD-< zjhU3n^xe-TVB&4_Wfw#X6_@KT4Xb2P58+dqNVpA&U^o< z-r@4WW0SVt&kS=e`~9wpV?OhlZM#dvL+ARwo;SI0y|a-M0+Qk8OV?6|ys%NAy-9@P$6 zr44hL9^O=bD7>}kY5$d5l3UI4JT?R_$Y+mI^x_aK(y+1Sa5{8&&S%Awm1mr5dXuCc zW<0#9ctre}t?I|5SvqYRp{pc0=NAadRf>quxny$mXQ_4E;m!FBms=BU)}Bo9eRP#m zNM@>Vq=;rWQ?;Ru^(%qMDK28F6J6Um7KLTL-q^KG?(tQfP9yK8dqEXu??N`Ktd5*? zRmbwGLY9lG?w%)=6HbNvaAAEFGF41fJ8H_Brip70oKSLm$}(rG3{Ov}SdnPYX;F#ks}o|@ z9@yb!^?upr>KS_y6YG&_#GB3Y4)GcvclE@D0ttJiMlMWr_zqp6HaPKCi zw0~U}IJ6(`lP7d?-Jv^5);D>7U%}}xVb!A7WqaD5zq@U#rNDA; zqW>JXJUeyVB+PkPf4hvh?jf!Hr`Hy}6J2=Q{qq*nIsHOU%KP`E2u``@F!RC*4~?xK zmWXM|F8|vvs5e%U^v0{t^mkugZ}l=<-Zk4NEoODXoZgbNiTD3(-Qe4CN3&O_ z#z|DMWX~T1kJglV(m&gJdlaSlmET=kYazOR$K~+3UqZ`&`Kte2W?g&MGroBF{jy8> zyDz`Dcv*huW%=AMyYJXs&I(~I>2PQ6U05~y;+(a`a~C?MH>rzkJ0dHe&A!1RhqH(~ zPH&Ca^yJfOef#*|aR$0h(=uodI-u*2b;wgmM>$c#w_V)i(dr%Nj|jWI%-n6V=xxw; zr_6nakH@Z(`Pr(#>!x~DxZ+o94dbF#NAtA{y4|_IE{G_-@!I=L)%OGXIg^?F6)iuA z6bfe+Ra^`Sv`d=azvHy~3pW<4z^I=k%e1xLwu;@+y1?fX>>45}HOEXhFm9dyl-HA= zR(W_Jl?VG&!HRf=6ASkR=d`J`lSE= z=kfnvHh%lpf2{t4xw!oItkwBu|K2sn{{N->e&2D4&+phTY`M7jGk<7((Y@~FI(xa8 z_?x6yX1w^y_~G;7N3(2XUw=*R>vC`o=vHV*;BHcAvSLwWi59$~oZ%qgcA+Cdy6G*4 zoYMz`CN-9Rg&$l^?t(4?CdxM&9~iP!=v?`2(WEY5)4724U@*tNt_Rr+BFi54Pk;FM z*&mCXOLaZ@UNZaJ;>6-V9An&h?Eah2KWa_?6&!i5Ub*(8InSZ(@{20g2o-%hSneUp z?xOf7d_pbDI?ew3%+oEZ?yYlJz`IX()&Gr;_B+Z5*DEUR7rNe`{rB6;VEcK0KXN-W zFMXETzn^oxEaU##CU?=}fk#E9Cx7{&?D3nK*@Ay_5;$qYMU=9CXrC^CY0v~RFXEEH@@<6ER>Dq`JCGSF7|A>CSBJkXZDKhn? z-m!Hjk4?RI<579ukA!QyEX53`#0|GdecAnvKjBnY?6-ZgyVBdcI*Ou2`BDnEPUtn} zNLVtqq|1OwDJ$5OpivB;E_XFrx#18PIwxdsd4wn4VjHE zW!UaJ70i2-ZcxE{u(T`w=mV{$*^I|yHQKE^zTP`{r=MZ>!Y`U^f>Q!(r@R&vIA_#k z$1>e8+`WLMxP8Z(Duai-EXOAVRB|<2w4};h`jnaDJu@msP0Km@@6>g2M|LggGCnvf zUS=n&=EaA%yLMg|ytCr#>Ec-uu@f(r2h^NeZPTSL9a?zBMKt~IhU6FAI_nc(6oy(P zH2mQ7v1o~u&;4lq{3uIfz}k2#`>em0?kaxT(s2J<^^J_nWf__WULVU*u$Nx=&Yfvb z7Ejl)g+I=|6ZYlmba`_>XSK(Y6WgNZF_$KUxZC+%|Fv}Wfpf7(VsspR#q1c~+*dc_ zI=A@Jq`BUKQ-0mlXsUDhXWACP;I-Vag)33)X`z^E@;2WWj8fb0CvkOo{tV{X8eo4u z@j~~5S>0>rS?&Lw659N~F*u}dXY{JiyUkt7sxI=Cc1Ev1yFlacWhJJzCY|=r7u@>1 zQqmn9g$@&%UN<-(!u$3Fjc?VC;YWKldJb4!?a_&} z2zp+AU+M4+y-m3yrJlpNS>jgv^DODU59~I57dShr zUwmi3cqL>n+ZxRP?meAyD`wv>JJgiR5w&m8@0M45;`iHir*t$t`?Wysy{kz6&71N+ zKBy>vJ0pB;`-$D96|1DQ_bz(X#J@|4|If7t&XN@Zwl<-wyDP;uIY$MEo4c6W6zfb@ zJmc>c|B#<&%BvR~lD=l|G#>P^@45QPWdGamCB5fn6*$a#p?5U6M7bqCq4t@(Ys=09 z?~R1=mtH=Y-0n2XBEz?N@{@ASYD-CPGl3~P^i`tdn!a)@x)H$9`i4)@Z*H8jlEm#* z)v0S{9%t3cQaKd1GyRoG1EHFr|3vtg3uJlU49fOlnV*W3Pe3RZ6) zZE$l*IMFrdyeoSy=cZSsl_}YrCF^B+FRAwZ;ru4LcAjp^%HmjQft-2@A#~b3k&S+j#ZReVw(eQ4%`^#s6J5M*yX_Q@T zV|;&2BAdrm_lm4J>ohbS*BDBO?A>{Q^Kzr>!RlELN@v82>utaB^Jzr@m)5wy*ExC@e5-fqm(QD^^X6x!C40c4)c!>#OH>};e(EW{%i2QXRucb(Ssu}g z)w{Y}H4B}NP3dB8Xen~*@+jsgo4VBhRSIW^=y~fY;ZA)LYYun?rFS3ns<7H}Rkk@M zbouhKFHuvNd@iosw0WCNQ|b$`1CNZjWEaIKRm^^1bZ|9GzR(_rf~gO9o4i@p3-0mp zUp{5o5dq(YubR&$#fI3t*wFm&T44ANbu$lS7!Zf)J3IYDk4>sM9 zwvdn2thjGvb2mp`%2utNw<*Tt{V&N_8AbiQfyWOYno{m|OFK1u^W_7trhhuceJbU^ zx{lI|GBX#SES%`y*Ii?9>i3ZaTRw@&KAfJs%_dW^+V4WvMHwO1+cBlvS>8_UYq#mE zX!YKIH%r@O!-~Y2+ftX?FjaY!O|?JoeyY)!@B8PPD96~N#TF4kg>MqB%oerl4vX2d z`#snF;?|v~wEo`8ER5V7-d9jLdvW98r^^~TT%6=?F5q60;WX#e-zdw~%im5=y~%2n zBy#ic3Z2=#wPq>nUWqO(5fNFQM~k!l@)I4of4**9XdTfoan`|n zS-JKdT5nbfq)vJK<7iJ&%p0GND;GW!&?$BNacv@tP7!Cs68BY;V$3FsSo*(Ku4h{= zvd}}g|ALbw$BVj}O@5b;DE0*UWr}#X|M)a>Dc|K==cmVVU1G96Zusm+iH-WQ$Cjt6 zyPxlMo%q?NXrA&s!H)D5ma;8{y~#0)Pn62-Ja=(@&@C(zbiN0-D3yHp-YW7~1G zwg2Fim-jffpD=jlF1;#3Y2V$4hb!8(C*~E#WVLM0WQkl;5%Qg2MIB zj_a0tOmJ^Cgyi#i_zKZU2L{3 zPBX5wEnrQO^V+{?+b5~4=%uYaFBAB;Z&Kq}_1(Cd@T}BW z-a7S}W@xy-fk(w@mfsw4%hX=6^b4GuAW^_C+P<^7GsOPPw6Iyae-3f-WO6zCn-g*7=o;MeLeqAUzb0(_Orz%Bjy5-bx27gz5^J>3D-?#4ky)tK>ocVh*=XQ3Q z9)HI9xoRt$=1I&yDf{2CST@P`Lw*} z%aWPdm-*F=ceYHt7H_!eX3Fe&=Y1kP9_;R66?yjB{5bdI9#MVGH9sCRx4Ib3^YDMQ zF-C3v^@U8?N|U``rd{fZ-02e~Z~iGQrhoR&$6;!#nGf!%(@OMxd4(xwOWu;lzw~UK z_Zm++DcSKxUT)Lp+g~THWC<`!I^OFU+@E@B+C-1%rP-&heCOwV5$0x|WN3Uoc%FxJ z*rO#sTP`yk$V^|u_d_bTe_Q#NZSIn<10&jd-o7z7UjF`VpDVAj)xC?iCA;0K7gZE zEj4c4Q#a|nvFvi;sTUkIbT1!}zuM}#)lcJAV%EDi)fcxsuu6#tE|aZZ*k{&So2&fC zD$~iE)}H@9Ti8u8lkxi+ADziI zGkj)bo_1aE`n1rCf16ku7P5YPoK24qVMI zR%H2vM{8S)sj<=IQs3=&W%*Z`wjW=aqn0jfQXH0~BxtNtzB6y#46{HZ{h48Ug2jfJ z<>#NhsWptY$dL+DOmF(MmFwN4YO|HRZjT!T=bP}SalQL^|L*Qe?$y&6Gv5c@FqZbX zvpVyE{HkmT-sJ)6J%2ZIy}lQ5*jMcm^R$^&0XbH?_g7pzJLL?6PV$Z|D#wI9Gd>k4 zb~9IMjZ~jdTvTUa_?g&hJu4C%2mE(TZZO@!#UImObUWvch zEDR?nm*yEo|L&=%dDFldHuvXRr$beBH90xwBfeDrQ7mrVnj7=vtBa8)cS%XzJfV)> zo@GMSm7RI5uGgm@5S8gUcF^V4lh49Dr)F&SdbiSUjp)*ZiprJOdr}V0jNE%w`;EWE z$ulY(zeAo~@iy3$&@OkvXSenrrltELVh!BOwBD@dpTe|s%jWkCJ}YLN{*{iC^56#Z&+9@87xJPRO=?yjns;ZyFYmNn4jt92x*s^0eG`)S6cn<1b#m{M z9?5e&F0Wqwiiw!tALjp+uV77GgmKYKNv9S*o3$IJ@t&A@&4G)p)4+Vg`J6KgWqMXf zmUHD8%qeS}=%Z#iN#XY{>tB**B|IZMgQNCdZ43I+lh4fG;B+#@;&plW{FyTH*Q*}2 zdRHzybYsThB!}-Z&1E&diT*h)N4NTak2|t@+rNGDJdP&{Nn}0{oAH9Zc!S+cn~Q>n z-{}W#TfS>;#rYi{wKjE1 z+)A(Xd!M3|m-cCoRfOTEJN5=CX`9pD85C4yRj~E6TnX63kjA4gr0n_Zp_7?kVvgUr zmWQ34JvO3`r>YB24i;Oll=r0X^s&h=&qo;VT;XIF<@~x)df7y0?n?2WHFAZ|*@Dw- z0zKX;HSzB*W^&LW4=v2@zJsSTRtQ);5OR3-G5Mdy_5v|N56qcZoH=>GK^ z!n=!Ov@V>P;gkN!pz+fs(L-17Z7`i|a{Ei~#W{7~YVPIrxm&C6Qvc>tQgUSXVz=c7 z)vd}(gCBo?FlAy}=dN>4j#_TAwi7eHq~2>YUqV>pUGm&QySJ4*X4#X~)NEI6XxEx_ zEWl=R0$b7dyD8fY#7-|c5zF3uW_h5O$LWZ34Ozv>*F=0|=S;E|`NmOh*q3-vB(Ri2ctuwr`aUVSDp8VL8ukw>!Uf zvF)i4T#-^dQ|BH3S(`J<7qZ=1eM2MSnZMJrZu_R6+{^|)m*4T2a=d^2|LgV!PnRmr z(KG&F`#VWi~0Y!FIoI~qv5mk{egz(?(IvnYu^N9)udf{%OQ96dD7z7AqO+k{#Y-5QZMg2 zTkOpKuN-f0{;-g?+f-j(&M#d0|E<33-3$AdUy+~ta);rEe-4j(qwmXAUe2tSI&8K2 zm*ux*yXPlw$oj56Ib+x65IZ*S9XI9t)imFi`!n`_&H15RCz9nOd}i9$mlk{%wO;

ECY||eW&2B~I{vd#Z{o4|#1{Px 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%0Axohz2PHW5x>7N?mjjb(J7VS&9qbAtD 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�%FnzUcF-UyzewH>zLu?LqN`o3m5Csm`qRh|m|g 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 literal 0 HcmV?d00001 diff --git a/artifacts/ElectronNET.Core.API.0.0.18.snupkg b/artifacts/ElectronNET.Core.API.0.0.18.snupkg new file mode 100644 index 0000000000000000000000000000000000000000..44772417efcc630987caa587a8d67d40061817cc GIT binary patch literal 110964 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 dGEzT>2Y9oxfvjL-U}Lz&$iUFDo{@op0RV>$b literal 0 HcmV?d00001 diff --git a/artifacts/ElectronNET.Core.AspNet.0.0.18.nupkg b/artifacts/ElectronNET.Core.AspNet.0.0.18.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..f6cde1d4adfc4f9f2db276d3bd0ab37a75bc0688 GIT binary patch literal 58530 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 literal 0 HcmV?d00001 From 96063bbe7dc6b97d5dc2ff47540bb5ed57ef0db2 Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 14:28:47 +0200 Subject: [PATCH 41/66] ElectronNET.Core: Update solution file --- src/ElectronNET.sln | 62 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 53 insertions(+), 9 deletions(-) diff --git a/src/ElectronNET.sln b/src/ElectronNET.sln index d32cab9..641424c 100644 --- a/src/ElectronNET.sln +++ b/src/ElectronNET.sln @@ -1,14 +1,11 @@ - Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.27130.2027 +# Visual Studio Version 17 +VisualStudioVersion = 17.12.35707.178 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ElectronNET.WebApp", "ElectronNET.WebApp\ElectronNET.WebApp.csproj", "{7C048379-401C-4345-B5E7-BE232DEA8157}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ElectronNET.API", "ElectronNET.API\ElectronNET.API.csproj", "{A78157BA-B754-45F1-969F-D6A513CA0E72}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ElectronNET.CLI", "ElectronNET.CLI\ElectronNET.CLI.csproj", "{CE3EB0F2-DA39-427A-85D2-E00D660EBFDE}" -EndProject Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "ElectronNET.Host", "ElectronNET.Host\", "{B33E9B82-B6B4-4DB0-B6EE-61CC34641518}" ProjectSection(WebsiteProperties) = preProject TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.8" @@ -30,6 +27,32 @@ Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "ElectronNET.Host", "Electro SlnRelativePath = "ElectronNET.Host\" EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElectronNET.Build", "ElectronNET.Build\ElectronNET.Build.csproj", "{829FC339-4785-4229-ABA5-53ADB544DA00}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElectronNET", "ElectronNET\ElectronNET.csproj", "{8860606D-6847-F22A-5AED-DF4E0984DD24}" + ProjectSection(ProjectDependencies) = postProject + {829FC339-4785-4229-ABA5-53ADB544DA00} = {829FC339-4785-4229-ABA5-53ADB544DA00} + {B33E9B82-B6B4-4DB0-B6EE-61CC34641518} = {B33E9B82-B6B4-4DB0-B6EE-61CC34641518} + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Config", "Config", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}" + ProjectSection(SolutionItems) = preProject + ..\Changelog.md = ..\Changelog.md + common.props = common.props + global.json = global.json + ..\NuGet.config = ..\NuGet.config + ..\publish.cmd = ..\publish.cmd + ..\README.md = ..\README.md + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElectronNET.AspNet", "ElectronNET.AspNet\ElectronNET.AspNet.csproj", "{DD10D21A-D131-1D9C-33F9-406046E0C5B0}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElectronNET.ConsoleApp", "ElectronNET.ConsoleApp\ElectronNET.ConsoleApp.csproj", "{EE38A326-5DE8-AF09-9EB9-DF0878938783}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{1BB6F634-2831-4496-83A6-BC6761DCEC8D}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Test Apps", "Test Apps", "{EDCBFC49-2AEE-4BAF-9368-4409298C52FC}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -44,18 +67,39 @@ Global {A78157BA-B754-45F1-969F-D6A513CA0E72}.Debug|Any CPU.Build.0 = Debug|Any CPU {A78157BA-B754-45F1-969F-D6A513CA0E72}.Release|Any CPU.ActiveCfg = Release|Any CPU {A78157BA-B754-45F1-969F-D6A513CA0E72}.Release|Any CPU.Build.0 = Release|Any CPU - {CE3EB0F2-DA39-427A-85D2-E00D660EBFDE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CE3EB0F2-DA39-427A-85D2-E00D660EBFDE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CE3EB0F2-DA39-427A-85D2-E00D660EBFDE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CE3EB0F2-DA39-427A-85D2-E00D660EBFDE}.Release|Any CPU.Build.0 = Release|Any CPU {B33E9B82-B6B4-4DB0-B6EE-61CC34641518}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B33E9B82-B6B4-4DB0-B6EE-61CC34641518}.Debug|Any CPU.Build.0 = Debug|Any CPU {B33E9B82-B6B4-4DB0-B6EE-61CC34641518}.Release|Any CPU.ActiveCfg = Debug|Any CPU {B33E9B82-B6B4-4DB0-B6EE-61CC34641518}.Release|Any CPU.Build.0 = Debug|Any CPU + {829FC339-4785-4229-ABA5-53ADB544DA00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {829FC339-4785-4229-ABA5-53ADB544DA00}.Debug|Any CPU.Build.0 = Debug|Any CPU + {829FC339-4785-4229-ABA5-53ADB544DA00}.Release|Any CPU.ActiveCfg = Release|Any CPU + {829FC339-4785-4229-ABA5-53ADB544DA00}.Release|Any CPU.Build.0 = Release|Any CPU + {8860606D-6847-F22A-5AED-DF4E0984DD24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8860606D-6847-F22A-5AED-DF4E0984DD24}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8860606D-6847-F22A-5AED-DF4E0984DD24}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8860606D-6847-F22A-5AED-DF4E0984DD24}.Release|Any CPU.Build.0 = Release|Any CPU + {DD10D21A-D131-1D9C-33F9-406046E0C5B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DD10D21A-D131-1D9C-33F9-406046E0C5B0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DD10D21A-D131-1D9C-33F9-406046E0C5B0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DD10D21A-D131-1D9C-33F9-406046E0C5B0}.Release|Any CPU.Build.0 = Release|Any CPU + {EE38A326-5DE8-AF09-9EB9-DF0878938783}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EE38A326-5DE8-AF09-9EB9-DF0878938783}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EE38A326-5DE8-AF09-9EB9-DF0878938783}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EE38A326-5DE8-AF09-9EB9-DF0878938783}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {7C048379-401C-4345-B5E7-BE232DEA8157} = {EDCBFC49-2AEE-4BAF-9368-4409298C52FC} + {A78157BA-B754-45F1-969F-D6A513CA0E72} = {1BB6F634-2831-4496-83A6-BC6761DCEC8D} + {B33E9B82-B6B4-4DB0-B6EE-61CC34641518} = {1BB6F634-2831-4496-83A6-BC6761DCEC8D} + {829FC339-4785-4229-ABA5-53ADB544DA00} = {1BB6F634-2831-4496-83A6-BC6761DCEC8D} + {8860606D-6847-F22A-5AED-DF4E0984DD24} = {1BB6F634-2831-4496-83A6-BC6761DCEC8D} + {DD10D21A-D131-1D9C-33F9-406046E0C5B0} = {1BB6F634-2831-4496-83A6-BC6761DCEC8D} + {EE38A326-5DE8-AF09-9EB9-DF0878938783} = {EDCBFC49-2AEE-4BAF-9368-4409298C52FC} + EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {81A62E71-9E04-4EFE-AD5C-23165375F8EF} EndGlobalSection From 2e051762dd67731ec0da49579a01164746a33099 Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 15:23:59 +0200 Subject: [PATCH 42/66] Fix typos --- .../Runtime/Services/LifetimeServiceBase.cs | 2 +- .../Runtime/Services/AspNetLifetimeAdapter.cs | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/ElectronNET.API/Runtime/Services/LifetimeServiceBase.cs b/src/ElectronNET.API/Runtime/Services/LifetimeServiceBase.cs index c2bfc6f..15c5823 100644 --- a/src/ElectronNET.API/Runtime/Services/LifetimeServiceBase.cs +++ b/src/ElectronNET.API/Runtime/Services/LifetimeServiceBase.cs @@ -83,7 +83,7 @@ if (newState < this.state) { - throw new Exception($"Invalid state transision from {this.state} to {newState}: " + this.GetType().Name); + throw new Exception($"Invalid state transition from {this.state} to {newState}: " + this.GetType().Name); } var oldState = this.state; diff --git a/src/ElectronNET.AspNet/Runtime/Services/AspNetLifetimeAdapter.cs b/src/ElectronNET.AspNet/Runtime/Services/AspNetLifetimeAdapter.cs index 9c108a0..9971ed5 100644 --- a/src/ElectronNET.AspNet/Runtime/Services/AspNetLifetimeAdapter.cs +++ b/src/ElectronNET.AspNet/Runtime/Services/AspNetLifetimeAdapter.cs @@ -7,20 +7,20 @@ internal class AspNetLifetimeAdapter : LifetimeServiceBase { - private readonly IHostApplicationLifetime lifetimeSercice; + private readonly IHostApplicationLifetime lifetimeService; - public AspNetLifetimeAdapter(IHostApplicationLifetime lifetimeSercice) + public AspNetLifetimeAdapter(IHostApplicationLifetime lifetimeService) { - this.lifetimeSercice = lifetimeSercice; + this.lifetimeService = lifetimeService; - this.lifetimeSercice.ApplicationStarted.Register(() => this.TransitionState(LifetimeState.Ready)); - this.lifetimeSercice.ApplicationStopping.Register(() => this.TransitionState(LifetimeState.Stopping)); - this.lifetimeSercice.ApplicationStopped.Register(() => this.TransitionState(LifetimeState.Stopped)); + this.lifetimeService.ApplicationStarted.Register(() => this.TransitionState(LifetimeState.Ready)); + this.lifetimeService.ApplicationStopping.Register(() => this.TransitionState(LifetimeState.Stopping)); + this.lifetimeService.ApplicationStopped.Register(() => this.TransitionState(LifetimeState.Stopped)); } protected override Task StopCore() { - this.lifetimeSercice.StopApplication(); + this.lifetimeService.StopApplication(); return Task.CompletedTask; } } From 2d626ab319ce4d5a3efea936b1ca042b2b228108 Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 20:14:18 +0200 Subject: [PATCH 43/66] Reduce pinned dotnet version to 8.0.305 and rollForward to 'feature' --- src/global.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/global.json b/src/global.json index 2523da8..ceda25e 100644 --- a/src/global.json +++ b/src/global.json @@ -1,7 +1,7 @@ { "sdk": { - "version": "8.0.316", - "rollForward": "patch", + "version": "8.0.305", + "rollForward": "feature", "allowPrerelease": false } } From 5d5e0b848c21434fda01a2323161910790f7ce59 Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 21:00:38 +0200 Subject: [PATCH 44/66] Reset changelog --- Changelog.md | 392 +-------------------------------------------------- 1 file changed, 5 insertions(+), 387 deletions(-) diff --git a/Changelog.md b/Changelog.md index d8ffd28..0180038 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,393 +1,11 @@ -# 30.0.3 +# 0.0.18 -(none) -# 23.6.2 +## Major overhaul: ElectronNET.Core -## ElectronNET.API +- New features +- New package names +- Restart of versioning -* Fixed escaping of URL (#735) @cosmo0 -* Fixed huge memory waste in IpcMain.Once (#833) @Yuvix25 -* Fixed enabling of accessibility support (#798) @dlanorok -* Updated `Display` to current spec (#828) @Yuvix25 -* Changed `ZoomFactor` type from `int` to `double` (#754) @Yuvix25 -* Added splash screen size config (#822) @NickRimmer -* Added OSX ARM architecture detection (#821) @sajmonr -* Added support for `did-navigate` event (#819) @NickRimmer -* Added support for `will-redirect` event (#819) @NickRimmer -* Added support for `did-fail-load` event (#819) @NickRimmer -* Added support for `did-start-navigation` event (#819) @NickRimmer -* Added support for `did-redirect-navigation` event (#819) @NickRimmer -* Added support for `dom-ready` event (#813) @softworkz -## ElectronNET.CLI -* (none) - -## Infrastructure - -* Changed build system to NUKE (#757) @FlorianRappl -* Updated target framework for host project (#753) @r-pankevicius -* Fixed typo in README (#800) @franpersanchez - -# 23.6.1 - -## ElectronNET.CLI - -* New Feature: Upgrade to .NET 6 support - -## ElectronNET.API - -* New Feature: Native Electron 23.2.0 support, but not all new API features included (we search contributors) -* New Feature: Upgrade to .NET 6 support -* New Feature: Changed Web-Socket .NET Library to [SocketIOClient](https://github.com/doghappy/socket.io-client-csharp) -* Breaking Changes: We removed deprecated API events/methods from ElectronNET.API [(More Details)](https://www.electronjs.org/docs/latest/breaking-changes) - -# 13.5.1 - -ElectronNET.CLI: - -* New Feature: Using exit code instead of seek for the term 'error' (thanks [TSrgy](https://github.com/TSrgy)) [\#562](https://github.com/ElectronNET/Electron.NET/pull/562) -* Fixed bug: Allow for property overrides to be passed in (thanks [danatcofo](https://github.com/danatcofo)) [\#531](https://github.com/ElectronNET/Electron.NET/pull/531) -Use `/p:propertyName=value` or `/property:propertyName=value` to pass in property overrides. This is equivalent to the `-p:` option documented here: [https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-publish](https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-publish) -* Fixed bug: Add ability to pass an argument for "Version" for both the "dotnet publish" and "electron-builder" commands (thanks [tub5](https://github.com/tub5)) [\#546](https://github.com/ElectronNET/Electron.NET/pull/546) -* Fixed bug: Version flag not persisting with the referenced executable (thanks [tub5](https://github.com/tub5)) [\#585](https://github.com/ElectronNET/Electron.NET/pull/585) -* Fixed bug: Changes PublishSingleFile default to false for NET5 compatibility (thanks [cristiangiagante](https://github.com/cristiangiagante)) [\#570](https://github.com/ElectronNET/Electron.NET/pull/570) - -ElectronNET.API: - -* New Feature: Native Electron 13.1.5 support, but not all new features (we search contributors) -* Breaking API Changes (from native Electron 13.1.5): - - `Shell.MoveItemToTrashAsync` renamed with `Shell.TrashItemAsync` - - The deprecated extension APIs have been removed: `BrowserWindow.GetAllExtensionsAsync()`, `BrowserWindow.RemoveExtension()`, `BrowserWindow.AddExtensionAsync()`. Use the session APIs instead: `Session.GetAllExtensionsAsync()`, `Session.RemoveExtension()`, `Session.LoadExtensionAsync()`. -* New Feature: singleInstance handle command line arguments [\#520](https://github.com/ElectronNET/Electron.NET/issues/520) -* New Feature: Add WebContents [insertCSS](https://www.electronjs.org/docs/api/web-contents#contentsinsertcsscss-options) functionality (thanks [nfichter](https://github.com/nfichter)) [\#559](https://github.com/ElectronNET/Electron.NET/pull/559) -* New Feature: Allow IpcMain to send IPC messages to BrowserViews (thanks [nfichter](https://github.com/nfichter)) [\#560](https://github.com/ElectronNET/Electron.NET/pull/560) -* New Feature: Add support for proxies that require basic username/password authentication (thanks [nfichter](https://github.com/nfichter)) [\#561](https://github.com/ElectronNET/Electron.NET/pull/561) -* New Feature: Add PostData to LoadURLOptions to allow http-posts in LoadURL calls (thanks [Funkrusha](https://github.com/Funkrusha)) [\#547](https://github.com/ElectronNET/Electron.NET/pull/547) -* Fixed bug: Fix splash screen interaction causing crashes, ghost dragging, and resizable behavior #540 (thanks [MiniguyBrendan](https://github.com/MiniguyBrendan)) [\#540](https://github.com/ElectronNET/Electron.NET/pull/540) -* Fixed bug: Vibrancy serialization fix (thanks [tantumalice](https://github.com/tantumalice)) [\#573](https://github.com/ElectronNET/Electron.NET/pull/573) - -# 11.5.1 - -ElectronNET.CLI: - -* New Feature: Added new build and start commandline options for single exe (thanks [nathanwienand](https://github.com/nathanwienand)) [\#506](https://github.com/ElectronNET/Electron.NET/pull/506) -* New Feature: Set a description of the app in `electron.manifest.json` (thanks [BurtsevC](https://github.com/BurtsevC)) [\#433](https://github.com/ElectronNET/Electron.NET/pull/433) -* New Feature: Set a target for the start command (thanks [gabecook](https://github.com/gabecook)) [\#463](https://github.com/ElectronNET/Electron.NET/pull/463) -* New Feature: `electronize init` support for F# projects (thanks [kojo12228](https://github.com/kojo12228)) [\#457](https://github.com/ElectronNET/Electron.NET/pull/457) -* New Feature: Linux support for the buildAll.sh (thanks [duncanawoods](https://github.com/duncanawoods)) [\#465](https://github.com/ElectronNET/Electron.NET/pull/465) -* Fixed bug: ERR_UNKNOWN_URL_SCHEME by intercepting file:// protocol (thanks [duncanawoods](https://github.com/duncanawoods)) [\#467](https://github.com/ElectronNET/Electron.NET/pull/467) - -ElectronNET.API: - -* New Feature: Native Electron 11.1.1 support, but not all new features (we search contributors) -* Breaking API Changes (from native Electron 11.0): - Removed: BrowserView.{destroy, fromId, fromWebContents, getAllViews} and id property of BrowserView -* New Feature: Upgrade to .NET 5 (thanks [scottkuhl](https://github.com/scottkuhl)) [\#509](https://github.com/ElectronNET/Electron.NET/pull/509) -* New Feature: Extension Method for adding the Electron static class members to the standard MS DI Containers, this is a QOL issue only. `services.AddElectron()` (thanks [danatcofo](https://github.com/danatcofo )) [\#528](https://github.com/ElectronNET/Electron.NET/pull/528) -* New Feature: SetMenu completed for the Dock (MacOS) (thanks [danatcofo](https://github.com/danatcofo )) [\#528](https://github.com/ElectronNET/Electron.NET/pull/528) - -Example for the Dock Menu - -`Electron.Dock.SetMenu(new [] { - new MenuItem { - Label = "Dock Menu Item", - Click = () => { - // do something - } - }, -});` - -Example for consuming the activate event (MacOs only) - -`Electron.App.On("activate", obj => { - var hasWindows = (bool)obj; - // do something -});` - -* New Feature: On and Once implementations for the App and Tray to cover the plethora of events that are not mapped explicitly in those two modules. (thanks [danatcofo](https://github.com/danatcofo )) [\#528](https://github.com/ElectronNET/Electron.NET/pull/528) -* New Feature: Adding the `EnableRemoteModule` property to the WebPreferences object. As of Electron 10, this property defaulted to false and without it exposed you can't use the remote module within a window. (thanks [danatcofo](https://github.com/danatcofo )) [\#528](https://github.com/ElectronNET/Electron.NET/pull/528) -* New Feature: Adding a configurable default electron port. (thanks [aarong-av](https://github.com/aarong-av)) [\#505](https://github.com/ElectronNET/Electron.NET/pull/505) -* New Feature: Added support for launching the application with a file on MacOS (thanks [dlitty](https://github.com/dlitty)) [\#478](https://github.com/ElectronNET/Electron.NET/pull/478) -* Improved: Avoid Blocking Calls in App and AutoUpdater (thanks [freosc](https://github.com/freosc)) [\#474](https://github.com/ElectronNET/Electron.NET/pull/474) -* Fixed bug: Maintain references between socket.io connection events (thanks [danatcofo](https://github.com/danatcofo )) [\#468](https://github.com/ElectronNET/Electron.NET/pull/486) -* Fixed bug: Set default WebPreferences.DefaultFontSize (thanks [duncanawoods](https://github.com/duncanawoods)) [\#468](https://github.com/ElectronNET/Electron.NET/pull/468) - -# 9.31.2 - -* Electron-Builder fixed for Windows builds. - -# 9.31.1 - -ElectronNET.CLI: - -* New Feature: Added config parameter (thanks [konstantingross](https://github.com/konstantingross)) [\#409](https://github.com/ElectronNET/Electron.NET/pull/409) -* New Feature: Set the configuration environment with the electron.manifest.json file. -* Fixed bug: Custom user path removed and replaced by the correct directory with VS macro (When ElectronNET.CLI is the Startup Project, press F5 (Debug) and the ElectronNET.WebApp starts correctly without error!) (thanks [konstantingross](https://github.com/konstantingross)) [\#409](https://github.com/ElectronNET/Electron.NET/pull/409) - -ElectronNET.API: - -* New Feature: Native Electron 9.0.3 support, but not all new features (we search contributors) -* New Feature: PowerMonitor API Support (thanks [gustavo-lara-molina](https://github.com/gustavo-lara-molina)) [\#399](https://github.com/ElectronNET/Electron.NET/pull/399) [\#423](https://github.com/ElectronNET/Electron.NET/pull/423) -* New Feature: NativeTheme API Support (thanks [konstantingross](https://github.com/konstantingross)) [\#402](https://github.com/ElectronNET/Electron.NET/pull/402) -* New Feature: Cookie API Support (thanks [freosc](https://github.com/freosc)) [\#413](https://github.com/ElectronNET/Electron.NET/pull/413) -* Changed Feature: Removed dock methods from App API and moved to Dock API (thanks [konstantingross](https://github.com/konstantingross)) [\#422](https://github.com/ElectronNET/Electron.NET/pull/422) -* App-Api Enhancement: MenuItems with Submenus need an submenu type workaround [\#412](https://github.com/ElectronNET/Electron.NET/issues/412) -* App-Api Enhancement: Added UserAgentFallback (thanks [Mandrakia](https://github.com/Mandrakia)) [\#406](https://github.com/ElectronNET/Electron.NET/pull/406) -* App-Api Enhancement: Summaries rewritten, new App.IsReady / App.HasSingleInstanceLock property, App.Ready event, App.Focus with force parameter method, many parameters changes (thanks [konstantingross](https://github.com/konstantingross)) [\#415](https://github.com/ElectronNET/Electron.NET/pull/415) [\#422](https://github.com/ElectronNET/Electron.NET/pull/422) -* App-Api Enhancement: New App.IsReady property and App.Ready event (thanks [konstantingross](https://github.com/konstantingross)) [\#415](https://github.com/ElectronNET/Electron.NET/pull/415) -* Shell-Api Enhancement: API fixes for Electron 9.0.0 / Added missing parameters / Summaries rewritten (thanks [konstantingross](https://github.com/konstantingross)) [\#417](https://github.com/ElectronNET/Electron.NET/pull/417) [\#418](https://github.com/ElectronNET/Electron.NET/pull/418) -* Notification-Api Enhancement: Added missing properties in Notifications (thanks [konstantingross](https://github.com/konstantingross)) [\#410](https://github.com/ElectronNET/Electron.NET/pull/410) -* BrowserWindows-Api Enhancement: Add missing API call for SetProgressBar options (thanks [konstantingross](https://github.com/konstantingross)) [\#416](https://github.com/ElectronNET/Electron.NET/pull/416) -* BrowserWindow Enhancement: Add BrowserWindow.GetNativeWindowHandle() (thanks [kdlslyv](https://github.com/kdlslyv)) [\#429](https://github.com/ElectronNET/Electron.NET/pull/429) -* HostHook-Api Enhancement: HostHook.CallAsync should use TaskCompletionSource.SetException instead of throwing exception (thanks [Fre V](https://github.com/freosc)) [\#430](https://github.com/ElectronNET/Electron.NET/pull/430) -* MacOS Enhancement: Application exit logic (thanks [dafergu2](https://github.com/dafergu2)) [\#405](https://github.com/ElectronNET/Electron.NET/pull/405) -* Fixed bug: ElectronNET.API.Entities.WebPreferences.ContextIsolation [DefaultValue(true)] [\#411](https://github.com/ElectronNET/Electron.NET/issues/411) - -ElectronNET.WebApp (internal use): -* Improvement debugging and testing new API calls (without install ElectronNET.CLI) (thanks [konstantingross](https://github.com/konstantingross)) [\#425](https://github.com/ElectronNET/Electron.NET/pull/425) -* Fixed bug: Cannot find modules in ElectronHostHook (thanks [konstantingross](https://github.com/konstantingross)) [\#425](https://github.com/ElectronNET/Electron.NET/pull/425) - -Thank you for donation [Phil Seeman](https://github.com/mpnow) ❤ - -# 8.31.2 - -ElectronNET.CLI: -* New Feature: Deactivate PublishReadyToRun for build or start [\#395](https://github.com/ElectronNET/Electron.NET/issues/395) - - `electronize build /target win /PublishReadyToRun false` - `electronize start /PublishReadyToRun false` -* Fixed bug: Application window doesn't open after packaging [\#387](https://github.com/ElectronNET/Electron.NET/issues/387) - -ElectronNET.API: - -* New Feature: NativeImage Support (thanks [ThrDev](https://github.com/ThrDev)) [\#394](https://github.com/ElectronNET/Electron.NET/pull/394) -* New Feature: Update menu items for context menu and system tray on-the-fly. [\#270](https://github.com/ElectronNET/Electron.NET/pull/270) - - -# 8.31.1 - -ElectronNET.CLI: -* New Feature: Set a name and author of the app in `electron.manifest.json` [\#348](https://github.com/ElectronNET/Electron.NET/issues/348#issuecomment-615977950) [\#310](https://github.com/ElectronNET/Electron.NET/issues/310#issuecomment-617361086) -* New Feature: Live reload (thanks [syedadeel2](https://github.com/syedadeel2)) [\#390](https://github.com/ElectronNET/Electron.NET/pull/390) -`electronize start /watch` -* New Feature: Every new window will created with an clear cache [\#273](https://github.com/ElectronNET/Electron.NET/issues/273) -`electronize start /clear-cache` - -ElectronNET.API: - -* New Feature: Native Electron 8.2.3 support, but not all new features (we search contributors) -* New Feature: We incease the startup time for ~25-36% [\#356](https://github.com/ElectronNET/Electron.NET/issues/356) -* New Feature: Added print capability (thanks [x-xx-o](https://github.com/x-xx-o)) [\#355](https://github.com/ElectronNET/Electron.NET/pull/355) -* New Feature: BrowserView API [\#371](https://github.com/ElectronNET/Electron.NET/issues/371) -* Changed App.GetNameAsync and App.SetNameAsync to the App.Name Property [\#350](https://github.com/ElectronNET/Electron.NET/issues/350) -* Fixed bug: Splash Screen disappearing on click [\#357](https://github.com/ElectronNET/Electron.NET/issues/357) -* Fixed bug: Start MenuRole enum at 1 (thanks [jjuback](https://github.com/jjuback)) [\#369](https://github.com/ElectronNET/Electron.NET/pull/369) -* Fixed bug: BridgeConnector not connected (spam console) [\#347](https://github.com/ElectronNET/Electron.NET/issues/347) -* Fixed bug: BrowserWindowOptions is not setting Width and Height properly [\#373](https://github.com/ElectronNET/Electron.NET/issues/373) -* Fixed bug: IpcMain.Once(string) is not one time use, is not removing listener [\#366](https://github.com/ElectronNET/Electron.NET/issues/366) -* Fixed bug: IpcMain.RemoveAllListeners(string) is not removing the listeners [\#365](https://github.com/ElectronNET/Electron.NET/issues/365) -* Fixed bug: GetLoginItemSettingsAsync does not work [\#352](https://github.com/ElectronNET/Electron.NET/issues/352) -* Fixed bug: Using OnReadyToShow to display the main window in Blazor does not seem to work with Show set to false [\#361](https://github.com/ElectronNET/Electron.NET/issues/361) -* Fixed bug: Unable to disable WebSecurity along with NodeIntegration enabled [\#389](https://github.com/ElectronNET/Electron.NET/issues/389) - -# 7.30.2 - -ElectronNET.CLI: - -* New Feature: Different manifest file support [\#340](https://github.com/ElectronNET/Electron.NET/issues/340) - * Create a additional manifest file: `electronize init /manifest test` - * Start the app with your additional manifest file: `electronize start /manifest electron.manifest.test.json` - * Build the app with your additional manifest file: `electronize build /target win /manifest electron.manifest.test.json`. - -* New Feature: Command Line support [\#337](https://github.com/ElectronNET/Electron.NET/issues/337) - * You can start the app with: `electronize start /args --dog=woof --test=true` - * Or as binary: `myapp.exe /args --dog=woof --test=true` -* Fixed bug: Start process with listen port 8000 error. [\#308](https://github.com/ElectronNET/Electron.NET/issues/308) (thanks [thecodejedi](https://github.com/thecodejedi)) -* Fixed bug: `electronize build` with no arguments would throw a `KeyNotFoundException`. (thanks [jamiebrynes7](https://github.com/jamiebrynes7)) - -ElectronNET.API: - -* New Feature: Electron 7.1.2 support, but not all new features (we search contributors) [\#341](https://github.com/ElectronNET/Electron.NET/issues/341) -* New Feature: Electron.App.CommandLine API [\#337](https://github.com/ElectronNET/Electron.NET/issues/337) -* New Feature: Support of BrowserWindow.AddExtension, BrowserWindow.RemoveExtension, BrowserWindow.GetExtensions (thanks [Daddoon](https://github.com/Daddoon)) - -Thank you for donation [robertmclaws](https://github.com/robertmclaws) ❤ - -# 5.30.1 - -ElectronNET.CLI: - -* Move to .NET Core 3.0 -* Use npm npx instead of global installations (thanks [jimbuck](https://github.com/jimbuck)) - -ElectronNET.API: - -* Move to .NET Core 3.0 -* New Feature: Add BrowserWindow.RemoveMenu() (thanks [hack2root](https://github.com/hack2root)) - -Thanks to [MaherJendoubi](https://github.com/MaherJendoubi), [kant2002](https://github.com/kant2002), [raz-canva](https://github.com/raz-canva) and [Daddoon](https://github.com/Daddoon) to give .NET Core 3.0 feedback! -# 5.22.14 - -ElectronNET.CLI: - -* Fixed bug: Build fails with latest electron-builder version [\#288](https://github.com/ElectronNET/Electron.NET/issues/288) - -ElectronNET.API: - -* New Feature: Full support for Auto Updater [(Based on electron-updater - Version 4.0.6)](https://www.electron.build/auto-update) -* New Feature: Support for set a custom static Port to ASP.NET Backend [\#155](https://github.com/ElectronNET/Electron.NET/issues/155) -* Fixed bug: Electron tray icon TypeError ([Electron original issue](https://github.com/electron/electron/issues/7657)) (thanks [Tum4ik](https://github.com/Tum4ik)) -* Fixed bug: Wrong tray icon path in the application built via `electronize build` command (thanks [Tum4ik](https://github.com/Tum4ik)) -* Fixed bug: fix async issue where same port is considered open [\#261](https://github.com/ElectronNET/Electron.NET/issues/261) (thanks [netpoetica](https://github.com/netpoetica)) - -ElectronNET.WebApp: - -* Fixed usage of the `Electron.Tray.Show` according fixed bugs in the ElectronNET.CLI (thanks [Tum4ik](https://github.com/Tum4ik)) - -# 5.22.13 - -ElectronNET.API: - -* Fixed bug: Menu Item visibility [\#257](https://github.com/ElectronNET/Electron.NET/issues/257) -* Fixed bug: electron.manifest.json - singleInstance not working [\#258](https://github.com/ElectronNET/Electron.NET/issues/258) -* Fixed security issue: ASP.NET Core process is now bound to 127.0.0.1 instead of the broader localhost [\#258](https://github.com/ElectronNET/Electron.NET/pull/266) - -# 5.22.12 - -ElectronNET.CLI: - -* New Feature: Changed from **electron packager** to [**electron builder**](https://www.electron.build/) -* New Feature: 'add hosthook' command for add a ElectronHostHook-Directory -* Fixed bug: 'Unexpected firewall warnings' [\#181](https://github.com/ElectronNET/Electron.NET/issues/181) -* Fixed bug: 'found 8 vulnerabilities (1 low, 5 moderate, 2 high)' [\#199](https://github.com/ElectronNET/Electron.NET/pull/199) -* Merged pull request: Call electronize from the Path instead of via dotnet in launchSettings.json [\#243](https://github.com/ElectronNET/Electron.NET/pull/243) (thanks [grbd](https://github.com/grbd)) - -ElectronNET.API: - -* New Feature: Electron 5.0.1 support, but not all new features -* New Feature: Auto Updater [(Based on electron-updater)](https://www.electron.build/auto-update) -* New Feature: Splashscreen-Support -* New Feature: HostHook-API for execute own TypeScript/JavaScript code on native Electron Main-Process -* New Feature: Session-API functions -* Fixed bug: Node process running after stopping app [\#96](https://github.com/ElectronNET/Electron.NET/issues/96) -* Fixed bug: 'X and Y options to not work on Windows 10' [\#193](https://github.com/ElectronNET/Electron.NET/issues/193) -* Fixed bug: Unable to clear cache [\#66](https://github.com/ElectronNET/Electron.NET/issues/66) -* Merged pull request: Fix BrowserWindow::SetMenu [\#231](https://github.com/ElectronNET/Electron.NET/pull/231) thanks (thanks [CodeKenpachi](https://github.com/CodeKenpachi)) -* Merged pull request: FIX application hangs after socket reconnect [\#233](https://github.com/ElectronNET/Electron.NET/pull/233) (thanks [pedromrpinto](https://github.com/pedromrpinto)) -* Merged pull request: Reduce chance of detecting false positives when scanning subprocesses for errors. [\#236](https://github.com/ElectronNET/Electron.NET/pull/236) (thanks [BorisTheBrave](https://github.com/BorisTheBrave)) -* Merged pull request: Updates the C# API to accept floating point as in JS. [\#240](https://github.com/ElectronNET/Electron.NET/pull/240) (thanks [BorisTheBrave](https://github.com/BorisTheBrave)) -* Merged pull request: buildReleaseNuGetPackages should leave you in the same directory you … [\#241](https://github.com/ElectronNET/Electron.NET/pull/241) (thanks [BorisTheBrave](https://github.com/BorisTheBrave)) - -ElectronNET.WebApp: - -* Implemented a sample for the new HostHook-API -* Fixed bug: 'Electron.NET API Demo: unable to copy code?' [\#247](https://github.com/ElectronNET/Electron.NET/issues/247) - -# 0.0.11 - -ElectronNET.CLI: - -* Invoke 'npm install' without --prod flag to install needed devDependencies as well. -* Enable SourceLink -* NuGet Package License Information updated (deprecation of licenseUrl) - -ElectronNET.API: - -* Documentation added for WebContents.GetUrl() -* Enable SourceLink -* NuGet Package License Information updated (deprecation of licenseUrl) - -# 0.0.10 - -ElectronNET.API: - -* manifestJsonFilePath fixed (thanks @smack0007) -* Use Electron release 3.0.0 and updated packages (thanks @deinok) -* fixes for Socket interaction (thanks @mojinxun) -* Fixing SingleInstances (thanks @yaofeng) -* Enhance WebContent.GetUrl (thanks @ru-sh) - -ElectronNET.CLI: - -* Show Resultcode for better debugging when using Build/Start Command -* ElectronNET.CLI is now a global dotnet tool - -# 0.0.9 - -ElectronNET.API: - -* Better Async handling - thanks @danielmarbach - -ElectronNET.CLI: - -* More options on the 'build' command, e.g. for a 32bit debug build with electron prune: build /target custom win7-x86;win32 /dotnet-configuration Debug /electron-arch ia32 /electron-params "--prune=true " -* .NET Core project is now built with Release configuration but can be adjusted with the new params. -* Be aware: "Breaking" (but because of the alpha status of this project, we won't use SemVer) - -# 0.0.8 - -This version was skipped because we unfortunately released a pre-version of this on NuGet. - -# 0.0.7 - -ElectronNET.CLI: - -* Fixed electronize start for macos/linux - thanks @yamachu -* Skip NPM install on start when node_modules directory already exists - -# 0.0.6 - -ElectronNET.CLI: - -* nuget packages are now release bits and have the correct assembly version -* Version command -* better devCleanup.cmd -* Better Platform Support Issue - thanks to @Petermarcu -* Start Command should now work on OSX/Linux - thanks to @r105m - -ElectronNET.API: - -* Thread-Safe methods - thanks to @yeskunall - -# 0.0.5 - -ElectronNET.API: - -* The last nuget package didn't contain the actual webpreferences settings with defaults - hopefully now. - -# 0.0.4 - -ElectronNET.CLI: - -* dotnet electronize start fixed - -ElectronNET.API: - -* WebPreferences settings with default values - -# 0.0.3 - -ElectronNET.CLI: -* Init with Debug profile -* Build for all platforms (well... for newest OSX/Linux/Windows) - -ElectronNET.API: -* Moar XML documentation -* Hybrid support (e.g. running as normal website and electron app) -* Event bugfixing - -# 0.0.2 - -ElectronNET.CLI: -* Added Init to Help page -* Added XML documentation to NuGet output -* Maybe fixed for https://github.com/GregorBiswanger/Electron.NET/issues/2 - -ElectronNET.API: -* Add XML documentation to NuGet output -* Implemented Notification-, Dialog- & Tray-API - -# 0.0.1 - -* init everything and basic functionality From 1ea4c1343d7c36d58a9dd3527565521380a8234a Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 23:54:56 +0200 Subject: [PATCH 45/66] Add nuke project to solution --- src/ElectronNET.sln | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/ElectronNET.sln b/src/ElectronNET.sln index 641424c..09b8490 100644 --- a/src/ElectronNET.sln +++ b/src/ElectronNET.sln @@ -35,7 +35,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElectronNET", "ElectronNET\ {B33E9B82-B6B4-4DB0-B6EE-61CC34641518} = {B33E9B82-B6B4-4DB0-B6EE-61CC34641518} EndProjectSection EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Config", "Config", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "!Config", "!Config", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}" ProjectSection(SolutionItems) = preProject ..\Changelog.md = ..\Changelog.md common.props = common.props @@ -53,6 +53,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{1BB6F634-2 EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Test Apps", "Test Apps", "{EDCBFC49-2AEE-4BAF-9368-4409298C52FC}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{985D39A7-5216-4945-8167-2FD0CB387BD8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "_build", "..\nuke\_build.csproj", "{015CB06B-6CAE-209F-E050-21C3ACA5FE9F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -87,6 +91,8 @@ Global {EE38A326-5DE8-AF09-9EB9-DF0878938783}.Debug|Any CPU.Build.0 = Debug|Any CPU {EE38A326-5DE8-AF09-9EB9-DF0878938783}.Release|Any CPU.ActiveCfg = Release|Any CPU {EE38A326-5DE8-AF09-9EB9-DF0878938783}.Release|Any CPU.Build.0 = Release|Any CPU + {015CB06B-6CAE-209F-E050-21C3ACA5FE9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {015CB06B-6CAE-209F-E050-21C3ACA5FE9F}.Release|Any CPU.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -99,6 +105,7 @@ Global {8860606D-6847-F22A-5AED-DF4E0984DD24} = {1BB6F634-2831-4496-83A6-BC6761DCEC8D} {DD10D21A-D131-1D9C-33F9-406046E0C5B0} = {1BB6F634-2831-4496-83A6-BC6761DCEC8D} {EE38A326-5DE8-AF09-9EB9-DF0878938783} = {EDCBFC49-2AEE-4BAF-9368-4409298C52FC} + {015CB06B-6CAE-209F-E050-21C3ACA5FE9F} = {985D39A7-5216-4945-8167-2FD0CB387BD8} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {81A62E71-9E04-4EFE-AD5C-23165375F8EF} From 0b05b2f5a48dbb2217903fabae95ef49dd7ece32 Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 23:55:46 +0200 Subject: [PATCH 46/66] Add solution ElectronNET.Lean for building core projects/packages only --- src/ElectronNET.Lean.sln | 61 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 src/ElectronNET.Lean.sln diff --git a/src/ElectronNET.Lean.sln b/src/ElectronNET.Lean.sln new file mode 100644 index 0000000..87a55e9 --- /dev/null +++ b/src/ElectronNET.Lean.sln @@ -0,0 +1,61 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.12.35707.178 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ElectronNET.API", "ElectronNET.API\ElectronNET.API.csproj", "{A78157BA-B754-45F1-969F-D6A513CA0E72}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElectronNET.Build", "ElectronNET.Build\ElectronNET.Build.csproj", "{829FC339-4785-4229-ABA5-53ADB544DA00}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElectronNET", "ElectronNET\ElectronNET.csproj", "{8860606D-6847-F22A-5AED-DF4E0984DD24}" + ProjectSection(ProjectDependencies) = postProject + {829FC339-4785-4229-ABA5-53ADB544DA00} = {829FC339-4785-4229-ABA5-53ADB544DA00} + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "!Config", "!Config", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}" + ProjectSection(SolutionItems) = preProject + ..\Changelog.md = ..\Changelog.md + common.props = common.props + global.json = global.json + ..\NuGet.config = ..\NuGet.config + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElectronNET.AspNet", "ElectronNET.AspNet\ElectronNET.AspNet.csproj", "{DD10D21A-D131-1D9C-33F9-406046E0C5B0}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{1BB6F634-2831-4496-83A6-BC6761DCEC8D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A78157BA-B754-45F1-969F-D6A513CA0E72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A78157BA-B754-45F1-969F-D6A513CA0E72}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A78157BA-B754-45F1-969F-D6A513CA0E72}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A78157BA-B754-45F1-969F-D6A513CA0E72}.Release|Any CPU.Build.0 = Release|Any CPU + {829FC339-4785-4229-ABA5-53ADB544DA00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {829FC339-4785-4229-ABA5-53ADB544DA00}.Debug|Any CPU.Build.0 = Debug|Any CPU + {829FC339-4785-4229-ABA5-53ADB544DA00}.Release|Any CPU.ActiveCfg = Release|Any CPU + {829FC339-4785-4229-ABA5-53ADB544DA00}.Release|Any CPU.Build.0 = Release|Any CPU + {8860606D-6847-F22A-5AED-DF4E0984DD24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8860606D-6847-F22A-5AED-DF4E0984DD24}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8860606D-6847-F22A-5AED-DF4E0984DD24}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8860606D-6847-F22A-5AED-DF4E0984DD24}.Release|Any CPU.Build.0 = Release|Any CPU + {DD10D21A-D131-1D9C-33F9-406046E0C5B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DD10D21A-D131-1D9C-33F9-406046E0C5B0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DD10D21A-D131-1D9C-33F9-406046E0C5B0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DD10D21A-D131-1D9C-33F9-406046E0C5B0}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {A78157BA-B754-45F1-969F-D6A513CA0E72} = {1BB6F634-2831-4496-83A6-BC6761DCEC8D} + {829FC339-4785-4229-ABA5-53ADB544DA00} = {1BB6F634-2831-4496-83A6-BC6761DCEC8D} + {8860606D-6847-F22A-5AED-DF4E0984DD24} = {1BB6F634-2831-4496-83A6-BC6761DCEC8D} + {DD10D21A-D131-1D9C-33F9-406046E0C5B0} = {1BB6F634-2831-4496-83A6-BC6761DCEC8D} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {81A62E71-9E04-4EFE-AD5C-23165375F8EF} + EndGlobalSection +EndGlobal From cf879042102fb4f83bd7e01307e2fdf3ff6ec39d Mon Sep 17 00:00:00 2001 From: softworkz Date: Mon, 13 Oct 2025 23:56:14 +0200 Subject: [PATCH 47/66] Mark ElectronNET.Build as non-packable --- src/ElectronNET.Build/ElectronNET.Build.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ElectronNET.Build/ElectronNET.Build.csproj b/src/ElectronNET.Build/ElectronNET.Build.csproj index 5b6931a..1bcb426 100644 --- a/src/ElectronNET.Build/ElectronNET.Build.csproj +++ b/src/ElectronNET.Build/ElectronNET.Build.csproj @@ -4,6 +4,7 @@ netstandard2.0 + False From 50b49068d8e01e030e064d3db0225418a66bf81d Mon Sep 17 00:00:00 2001 From: softworkz Date: Tue, 14 Oct 2025 00:12:05 +0200 Subject: [PATCH 48/66] Add VersionPostFix to common.props --- src/common.props | 1 + 1 file changed, 1 insertion(+) diff --git a/src/common.props b/src/common.props index a4bb353..1cab6f2 100644 --- a/src/common.props +++ b/src/common.props @@ -25,6 +25,7 @@ $(Version) $(Version) + $(Version)$(VersionPostFix) $(Version) From bef7a42fbb717033c9eabd22d79d593f4ee33b55 Mon Sep 17 00:00:00 2001 From: softworkz Date: Tue, 14 Oct 2025 00:17:05 +0200 Subject: [PATCH 49/66] Update nuke build with the following changes: - Remove obsolete sample targets - Restore and build solution (.Lean) instead of projects - Read version from common.props, compare with latest changelog version and fail if not equal - Keep PostFix separate from version (AssemblyVersion may not have a postfix), so the postfix will go into the package version and file name as well as the informational version (visible in file properties dialog on Windows) - Add "ElectronNET.Core " as prefix to GitHub release names (to disambiguate with earlier versions) --- .nuke/build.schema.json | 22 ++--- .nuke/parameters.json | 2 +- nuke/Build.cs | 171 ++++++++------------------------------ nuke/CommonPropsParser.cs | 33 ++++++++ 4 files changed, 77 insertions(+), 151 deletions(-) create mode 100644 nuke/CommonPropsParser.cs diff --git a/.nuke/build.schema.json b/.nuke/build.schema.json index daa29e2..466bf0f 100644 --- a/.nuke/build.schema.json +++ b/.nuke/build.schema.json @@ -1,11 +1,15 @@ { "$schema": "http://json-schema.org/draft-04/schema#", - "title": "Build Schema", "$ref": "#/definitions/build", + "title": "Build Schema", "definitions": { "build": { "type": "object", "properties": { + "CommonPropsFilePath": { + "type": "string", + "description": "common.props file path - to determine the configured version" + }, "Configuration": { "type": "string", "description": "Configuration to build - Default is 'Debug' (local) or 'Release' (server)", @@ -64,7 +68,7 @@ }, "ReleaseNotesFilePath": { "type": "string", - "description": "ReleaseNotesFilePath - To determine the SemanticVersion" + "description": "ReleaseNotesFilePath - To determine the lates changelog version" }, "Root": { "type": "string", @@ -78,14 +82,8 @@ "enum": [ "Clean", "Compile", - "CompileSample", "CreatePackages", "Default", - "ElectronizeCustomWin7TargetSample", - "ElectronizeGenericTargetSample", - "ElectronizeLinuxTargetSample", - "ElectronizeMacOsTargetSample", - "ElectronizeWindowsTargetSample", "Package", "PrePublish", "Publish", @@ -109,14 +107,8 @@ "enum": [ "Clean", "Compile", - "CompileSample", "CreatePackages", "Default", - "ElectronizeCustomWin7TargetSample", - "ElectronizeGenericTargetSample", - "ElectronizeLinuxTargetSample", - "ElectronizeMacOsTargetSample", - "ElectronizeWindowsTargetSample", "Package", "PrePublish", "Publish", @@ -141,4 +133,4 @@ } } } -} \ No newline at end of file +} diff --git a/.nuke/parameters.json b/.nuke/parameters.json index abd31df..39ee7a3 100644 --- a/.nuke/parameters.json +++ b/.nuke/parameters.json @@ -1,4 +1,4 @@ { "$schema": "./build.schema.json", - "Solution": "src/ElectronNET.sln" + "Solution": "src/ElectronNET.Lean.sln" } \ No newline at end of file diff --git a/nuke/Build.cs b/nuke/Build.cs index 77bbe7b..f7fdb39 100644 --- a/nuke/Build.cs +++ b/nuke/Build.cs @@ -18,6 +18,7 @@ using System.Linq; using static Nuke.Common.IO.FileSystemTasks; using static Nuke.Common.IO.PathConstruction; using static Nuke.Common.Tools.DotNet.DotNetTasks; +// ReSharper disable ArrangeThisQualifier class Build : NukeBuild { @@ -27,25 +28,20 @@ class Build : NukeBuild /// - Microsoft VisualStudio https://nuke.build/visualstudio /// - Microsoft VSCode https://nuke.build/vscode - public static int Main () => Execute(x => x.RunUnitTests); + public static int Main() => Execute(x => x.RunUnitTests); [Nuke.Common.Parameter("Configuration to build - Default is 'Debug' (local) or 'Release' (server)")] readonly Configuration Configuration = IsLocalBuild ? Configuration.Debug : Configuration.Release; - [Nuke.Common.Parameter("ReleaseNotesFilePath - To determine the SemanticVersion")] + [Nuke.Common.Parameter("ReleaseNotesFilePath - To determine the lates changelog version")] readonly AbsolutePath ReleaseNotesFilePath = RootDirectory / "Changelog.md"; + [Nuke.Common.Parameter("common.props file path - to determine the configured version")] + readonly AbsolutePath CommonPropsFilePath = RootDirectory / "src" / "common.props"; + [Solution] readonly Solution Solution; - string TargetProjectName => "ElectronNET"; - - string ApiTargetLibName => $"{TargetProjectName}.API"; - - string CliTargetLibName => $"{TargetProjectName}.CLI"; - - string DemoTargetLibName => $"{TargetProjectName}.WebApp"; - AbsolutePath SourceDirectory => RootDirectory / "src"; AbsolutePath ResultDirectory => RootDirectory / "artifacts"; @@ -60,18 +56,7 @@ class Build : NukeBuild string Version { get; set; } - AbsolutePath[] Projects - { - get - { - var api = SourceDirectory / ApiTargetLibName / $"{ApiTargetLibName}.csproj"; - var cli = SourceDirectory / CliTargetLibName / $"{CliTargetLibName}.csproj"; - var projects = new[] { api, cli }; - return projects; - } - } - - string Framework => Solution.GetProject(DemoTargetLibName).GetProperty("TargetFramework"); + string VersionPostFix { get; set; } protected override void OnBuildInitialized() { @@ -84,9 +69,19 @@ class Build : NukeBuild LatestReleaseNotes = ChangeLog.First(); LatestReleaseNotes.NotNull("LatestVersion could not be read!"); - Log.Debug("Using LastestVersion from ChangeLog: {LatestVersion}", LatestReleaseNotes.Version); + var propsParser = new CommonPropsParser(); + + var propsVersion = propsParser.Parse(CommonPropsFilePath); + + propsVersion.NotNull("Version from common.props could not be read!"); + + Assert.True(propsVersion == LatestReleaseNotes.Version, + $"The version in common.props ({propsVersion}) does not " + + $"equal the latest version in the changelog ({LatestReleaseNotes.Version})"); + + Log.Debug("Using version: {LatestVersion}", propsVersion); SemVersion = LatestReleaseNotes.SemVersion; - Version = LatestReleaseNotes.Version.ToString(); + Version = propsVersion.ToString(); if (GitHubActions != null) { @@ -96,13 +91,17 @@ class Build : NukeBuild if (ScheduledTargets.Contains(Default)) { - Version = $"{Version}-ci.{buildNumber}"; + VersionPostFix = $"-ci.{buildNumber}"; } else if (ScheduledTargets.Contains(PrePublish)) { - Version = $"{Version}-alpha.{buildNumber}"; + VersionPostFix = $"-pre.{buildNumber}"; } } + else if (ScheduledTargets.Contains(PrePublish)) + { + VersionPostFix = $"-pre"; + } Log.Information("Building version: {Version}", Version); } @@ -117,130 +116,32 @@ class Build : NukeBuild Target Restore => _ => _ .Executes(() => { - Projects.ForEach(project => - { - DotNetRestore(s => s - .SetProjectFile(project)); - }); + DotNetRestore(s => s.SetProjectFile(Solution.Path)); }); Target Compile => _ => _ .DependsOn(Restore) .Executes(() => { - Projects.ForEach(project => - { - DotNetBuild(s => s - .SetProjectFile(project) - .SetVersion(Version) - .SetConfiguration(Configuration) - .EnableNoRestore()); - }); + DotNetBuild(s => s + .SetProjectFile(Solution.Path) + .SetConfiguration(Configuration) + .SetProperty("GeneratePackageOnBuild", "True") + .SetProperty("VersionPostFix", VersionPostFix ?? string.Empty)); }); Target RunUnitTests => _ => _ .DependsOn(Compile) .Executes(() => { - Projects.ForEach(project => - { - DotNetTest(s => s - .SetProjectFile(project) - .SetConfiguration(Configuration) - .EnableNoRestore() - .EnableNoBuild()); - }); + // There aren't any yet }); Target CreatePackages => _ => _ .DependsOn(Compile) .Executes(() => { - Projects.ForEach(project => - { - DotNetPack(s => s - .SetProject(project) - .SetVersion(Version) - .SetConfiguration(Configuration) - .SetOutputDirectory(ResultDirectory) - .SetIncludeSymbols(true) - .SetSymbolPackageFormat("snupkg") - .EnableNoRestore() - ); - }); - }); - - Target CompileSample => _ => _ - .DependsOn(Compile) - .Executes(() => - { - var sample = SourceDirectory / DemoTargetLibName / $"{DemoTargetLibName}.csproj"; - DotNetBuild(s => s.SetProjectFile(sample).SetConfiguration(Configuration)); - }); - - Target ElectronizeGenericTargetSample => _ => _ - .DependsOn(CompileSample) - .Executes(() => - { - var sample = SourceDirectory / DemoTargetLibName; - var cli = SourceDirectory / CliTargetLibName / $"{CliTargetLibName}.csproj"; - var args = "build /target custom win7-x86;win /dotnet-configuration Debug /electron-arch ia32 /electron-params \"--publish never\""; - - var cmd = $"run --project {cli} --framework {Framework} -- {args}"; - Log.Debug(cmd); - DotNet(cmd, sample); - }); - - Target ElectronizeWindowsTargetSample => _ => _ - .DependsOn(CompileSample) - .Executes(() => - { - var sample = SourceDirectory / DemoTargetLibName; - var cli = SourceDirectory / CliTargetLibName / $"{CliTargetLibName}.csproj"; - var args = "build /target win /electron-params \"--publish never\""; - - var cmd =$"run --project {cli} --framework {Framework} -- {args}"; - Log.Debug(cmd); - DotNet(cmd, sample); - }); - - Target ElectronizeCustomWin7TargetSample => _ => _ - .DependsOn(CompileSample) - .Executes(() => - { - var sample = SourceDirectory / DemoTargetLibName; - var cli = SourceDirectory / CliTargetLibName / $"{CliTargetLibName}.csproj"; - var args = "build /target custom win7-x86;win /electron-params \"--publish never\""; - - var cmd =$"run --project {cli} --framework {Framework} -- {args}"; - Log.Debug(cmd); - DotNet(cmd, sample); - }); - - Target ElectronizeMacOsTargetSample => _ => _ - .DependsOn(CompileSample) - .Executes(() => - { - var sample = SourceDirectory / DemoTargetLibName; - var cli = SourceDirectory / CliTargetLibName / $"{CliTargetLibName}.csproj"; - var args = "build /target osx /electron-params \"--publish never\""; - - var cmd =$"run --project {cli} --framework {Framework} -- {args}"; - Log.Debug(cmd); - DotNet(cmd, sample); - }); - - Target ElectronizeLinuxTargetSample => _ => _ - .DependsOn(CompileSample) - .Executes(() => - { - var sample = SourceDirectory / DemoTargetLibName; - var cli = SourceDirectory / CliTargetLibName / $"{CliTargetLibName}.csproj"; - var args = "build /target linux /electron-params \"--publish never\""; - - var cmd =$"run --project {cli} --framework {Framework} -- {args}"; - Log.Debug(cmd); - DotNet(cmd, sample); + // Packages are created on build }); Target PublishPackages => _ => _ @@ -292,9 +193,9 @@ class Build : NukeBuild new InMemoryCredentialStore(credentials)); GitHubTasks.GitHubClient.Repository.Release - .Create("ElectronNET", "Electron.NET", new NewRelease(Version) + .Create("ElectronNET", "Electron.NET", new NewRelease(Version + VersionPostFix) { - Name = Version, + Name = "ElectronNET.Core " + Version + VersionPostFix, Body = String.Join(Environment.NewLine, LatestReleaseNotes.Notes), Prerelease = true, TargetCommitish = "develop", @@ -330,7 +231,7 @@ class Build : NukeBuild GitHubTasks.GitHubClient.Repository.Release .Create("ElectronNET", "Electron.NET", new NewRelease(Version) { - Name = Version, + Name = "ElectronNET.Core " + Version, Body = String.Join(Environment.NewLine, LatestReleaseNotes.Notes), Prerelease = false, TargetCommitish = "main", diff --git a/nuke/CommonPropsParser.cs b/nuke/CommonPropsParser.cs new file mode 100644 index 0000000..ac780bd --- /dev/null +++ b/nuke/CommonPropsParser.cs @@ -0,0 +1,33 @@ +using System; +using System.Linq; +using System.Xml.Linq; + +///

+/// Parses a version from an MSBuild .props file (XML). +/// +public sealed class CommonPropsParser +{ + /// + /// Initializes a new instance of the class. + /// + public CommonPropsParser() + { + } + + public Version Parse(string propsPath) + { + var doc = XDocument.Load(propsPath); + + var versionElement = doc + .Descendants() + .FirstOrDefault(e => e.Name.LocalName == "Version"); + + if (Version.TryParse(versionElement?.Value.Trim(), out var version)) + { + version = new Version(version.Major, version.Minor, version.Build); + return version; + } + + return null; + } +} \ No newline at end of file From 868451408c4440e414692da5e15cbe880d3b0ad3 Mon Sep 17 00:00:00 2001 From: softworkz Date: Tue, 14 Oct 2025 03:48:03 +0200 Subject: [PATCH 50/66] Move global.json to repo root --- src/global.json => global.json | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/global.json => global.json (100%) diff --git a/src/global.json b/global.json similarity index 100% rename from src/global.json rename to global.json From 6060e355bdd1d1cda601f895d434f27200020d06 Mon Sep 17 00:00:00 2001 From: softworkz Date: Tue, 14 Oct 2025 03:48:22 +0200 Subject: [PATCH 51/66] Fix warnings --- src/ElectronNET.API/Bridge/Events.cs | 6 ++---- src/ElectronNET.API/Runtime/StartupManager.cs | 2 -- src/ElectronNET.WebApp/Controllers/WindowsController.cs | 2 +- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/ElectronNET.API/Bridge/Events.cs b/src/ElectronNET.API/Bridge/Events.cs index 732819a..8bcff02 100644 --- a/src/ElectronNET.API/Bridge/Events.cs +++ b/src/ElectronNET.API/Bridge/Events.cs @@ -68,12 +68,10 @@ namespace ElectronNET.API await BridgeConnector.Socket.Emit(subscriber, eventName, listener).ConfigureAwait(false); } - /// - /// Subscribe to an unmapped electron event. - /// + /// Subscribe to an unmapped electron event. /// The name of the module, e.g. app, dock, etc... /// The name of the event - /// The event handler + /// The action. public async Task Once(string moduleName, string eventName, Action action) { var listener = $"{moduleName}{_textInfo.ToTitleCase(eventName)}Completed"; diff --git a/src/ElectronNET.API/Runtime/StartupManager.cs b/src/ElectronNET.API/Runtime/StartupManager.cs index c0e98ab..147c452 100644 --- a/src/ElectronNET.API/Runtime/StartupManager.cs +++ b/src/ElectronNET.API/Runtime/StartupManager.cs @@ -48,8 +48,6 @@ default: throw new ArgumentOutOfRangeException(); } - - return null; } private StartupMethod DetectAppTypeAndStartup() diff --git a/src/ElectronNET.WebApp/Controllers/WindowsController.cs b/src/ElectronNET.WebApp/Controllers/WindowsController.cs index bdf7472..eb037af 100644 --- a/src/ElectronNET.WebApp/Controllers/WindowsController.cs +++ b/src/ElectronNET.WebApp/Controllers/WindowsController.cs @@ -34,7 +34,7 @@ namespace ElectronNET.WebApp.Controllers browserWindow.OnFocus += () => Electron.IpcMain.Send(mainBrowserWindow, "listen-to-window-focus"); browserWindow.OnBlur += () => Electron.IpcMain.Send(mainBrowserWindow, "listen-to-window-blur"); - Electron.IpcMain.On("listen-to-window-set-focus", (x) => browserWindow.Focus()); + _ = Electron.IpcMain.On("listen-to-window-set-focus", (x) => browserWindow.Focus()); }); Electron.IpcMain.On("frameless-window", async (args) => From bf3e149d43e72104cb0635eb9feb61425bad3781 Mon Sep 17 00:00:00 2001 From: softworkz Date: Tue, 14 Oct 2025 03:52:47 +0200 Subject: [PATCH 52/66] Add changelog entries (AI authored) --- Changelog.md | 54 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 50 insertions(+), 4 deletions(-) diff --git a/Changelog.md b/Changelog.md index 0180038..bd13258 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,11 +1,57 @@ # 0.0.18 +## ElectronNET.Core -## Major overhaul: ElectronNET.Core +### Highlights +- **Complete MSBuild Integration**: Eliminated CLI tool dependency, moved all build processes to MSBuild with deep Visual Studio integration +- **Modernized Architecture**: Restructured process lifecycle with .NET launching first and running Electron as child process for better control and reliability +- **Cross-Platform Development**: Build and debug Linux applications directly from Windows Visual Studio via WSL integration +- **Flexible Electron Versioning**: Removed version lock-in, users can now select any Electron version with build-time validation +- **Enhanced Debugging Experience**: ASP.NET-first debugging with Hot Reload support and improved process termination handling +- **Console App Support**: No longer requires ASP.NET - now works with simple console applications for file system or remote server HTML/JS -- New features -- New package names -- Restart of versioning +### Build System & Project Structure +- Eliminated electron.manifest.json configuration file, replaced with MSBuild project properties +- Introduced new package structure: ElectronNET.Core (main package), ElectronNET.Core.Api (API definitions), ElectronNET.Core.AspNet (ASP.NET integration) +- Added Runtime Identifier (RID) selection as part of project configuration +- Restructured build folder layout to use standard .NET format (bin\net8.0\win-x64) instead of bin\Desktop +- Implemented incremental build support for Electron assets to improve build performance +- Added custom MSBuild tasks for Electron-specific build operations +### Development Experience +- Implemented unpackaged run-mode for development using regular .NET builds with unpackaged Electron configuration +- Added support for building Linux packages on Windows via WSL integration +- Enabled running and debugging Linux application outputs on Windows through WSL +- Integrated TypeScript compilation with ASP.NET tooling for consistent builds +- Added process orchestration supporting 8 different launch scenarios (packaged/unpackaged console/ASP.NET dotnet-first/electron-first) +### Debugging & Runtime +- Dramatically improved debugging experience with ASP.NET-first launch mode +- Added Hot Reload support for ASP.NET code during development +- Implemented proper process termination handling for all exit scenarios +- Minimized startup times through optimized build and launch procedures + +### Technical Improvements +- Enhanced splash screen handling with automatic path resolution +- Improved ElectronHostHook integration as proper npm package dependency +- Updated to latest TypeScript version with ESLint configuration +- Added support for custom main.js files in projects +- Implemented version management through common.props file +- Added build-time Electron version compatibility validation + +### Package & Distribution +- Integrated MSBuild publishing mechanisms for creating Electron packages +- Added folder publishing support with improved parameter handling +- Implemented automated package.json generation from MSBuild properties +- Added GitHub release automation with proper versioning +- Reduced package sizes by eliminating unnecessary TypeScript dependencies + +### Migration & Compatibility +- Maintained backward compatibility for existing ElectronHostHook implementations +- Removed ASP.NET requirement: Now works with simple console applications for file system or remote server HTML/JS scenarios +- Added support for both console and ASP.NET Core application types +- Preserved all existing Electron API functionality while modernizing architecture +- Added migration path for existing projects through updated package structure + +This represents a comprehensive modernization of Electron.NET, addressing the major pain points around debugging, build complexity, and platform limitations while maintaining full API compatibility. From c914bb8f142dda637281de218f1b2f332d7688bf Mon Sep 17 00:00:00 2001 From: softworkz Date: Tue, 14 Oct 2025 06:22:42 +0200 Subject: [PATCH 53/66] Draft for a ReadMe update --- README.md | 258 ++++++++++++------------------------------------------ 1 file changed, 55 insertions(+), 203 deletions(-) diff --git a/README.md b/README.md index c145a0d..d60b56d 100644 --- a/README.md +++ b/README.md @@ -2,47 +2,56 @@ [![donate](https://img.shields.io/badge/Donate-Donorbox-green.svg)](https://donorbox.org/electron-net) [![Gitter](https://badges.gitter.im/ElectronNET/community.svg)](https://gitter.im/ElectronNET/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) [![Build status](https://github.com/ElectronNET/Electron.NET/actions/workflows/ci.yml/badge.svg)](https://github.com/ElectronNET/Electron.NET/actions/workflows/ci.yml) -Build cross platform desktop apps with .NET 8 and Blazor, ASP.NET Core (Razor Pages, MVC). +# Electron.Net Core is here! -Electron.NET is a __wrapper__ around a native Electron application with an embedded ASP.NET Core application. Via our Electron.NET IPC bridge we can invoke Electron APIs from .NET. +## A Complete Transformation -The CLI extensions hosts our toolset to build and start Electron.NET applications. +ElectronNET.Core represents a fundamental modernization of Electron.NET, addressing years of accumulated pain points while preserving full API compatibility. This isn't just an update—it's a complete rethinking of how .NET developers build and debug cross-platform desktop applications with Electron. -## Wait - you host a .NET Core app inside Electron? Why? +Read more: [**What's New in ElectronNET.Core**](WHATS_NEW.md) -Well... there are lots of different approaches how to get a X-plat desktop app running. We thought it would be nice for .NET devs to use the ASP.NET Core environment and just embed it inside a pretty robust X-plat enviroment called Electron. Porting Electron to .NET is not a goal of this project, at least we don't have any clue how to do it. We just combine ASP.NET Core & Electron. + +Build cross platform desktop applications with .NET 6/8 - from console apps to ASP.Net Core (Razor Pages, MVC) to Blazor + + +## Wait - how does that work exactly? + +Well... there are lots of different approaches how to get a X-plat desktop app running. Electron.NET provides a range of ways to build .NET based solutions using Electron at the side of presentation. While the classic Electron.Net setup, using an ASP.Net host ran by the Electron side is still the primary way, there's more flexibility now: both, dotnet and Electron are now able to launch the other for better lifetime management, and when you don't need a local web server - like when running content from files or remote servers, you can drop the ASP.Net stack altogether and got with a lightweight console app instead. ## 📦 NuGet -[![NuGet](https://img.shields.io/nuget/v/ElectronNET.API.svg?style=flat-square) ElectronNET.API ](https://www.nuget.org/packages/ElectronNET.API/) | [![NuGet](https://img.shields.io/nuget/v/ElectronNET.CLI.svg?style=flat-square) ElectronNET.CLI](https://www.nuget.org/packages/ElectronNET.CLI/) +[![NuGet](https://img.shields.io/nuget/v/ElectronNET.Core.svg?style=flat-square) ElectronNET.Core ](https://www.nuget.org/packages/ElectronNET.Core.API/) | [![NuGet](https://img.shields.io/nuget/v/ElectronNET.Core.API.svg?style=flat-square) ElectronNET.Core.API ](https://www.nuget.org/packages/ElectronNET.Core.API/) | [![NuGet](https://img.shields.io/nuget/v/ElectronNET.Core.AspNet.svg?style=flat-square) ElectronNET.Core.AspNet ](https://www.nuget.org/packages/ElectronNET.Core.AspNet/) + ## 🛠 Requirements to Run -The current Electron.NET CLI builds Windows/macOS/Linux binaries. Our API uses .NET 8, so our minimum base OS is the same as [.NET 8](https://github.com/dotnet/core/blob/main/release-notes/8.0/supported-os.md). + Our API uses .NET 6/8, so our Also you should have installed: -* npm [contained in nodejs (at least Version 16.17.1)](https://nodejs.org) +* .NET 6/8 or later +* OS + minimum base OS is the same as [.NET 6](https://github.com/dotnet/core/blob/main/release-notes/6.0/supported-os.md) / [.NET 8](https://github.com/dotnet/core/blob/main/release-notes/8.0/supported-os.md). +* NodeJS (at least [Version 22.x](https://nodejs.org)) -## 💬 Community -[![Gitter](https://badges.gitter.im/ElectronNET/community.svg)](https://gitter.im/ElectronNET/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) +## 👩‍🏫 Usage with ASP.Net -Besides the chat on Gitter and the issues [discussed here](https://github.com/ElectronNET/Electron.NET/issues) you can also use [StackOverflow](https://stackoverflow.com/questions/tagged/electron.net) with the tag `electron.net`. - -If you want to sponsor the further maintenance and development of this project [see the donate section](#🙏-donate). - -## 👩‍🏫 Usage - -To activate and communicate with the "native" (sort of native...) Electron API include the [ElectronNET.API NuGet package](https://www.nuget.org/packages/ElectronNET.API/) in your ASP.NET Core app. +- Create a new ASP.Net Core project +- Install the following two nuget packages: ```ps1 -PM> Install-Package ElectronNET.API +PM> Install-Package ElectronNET.Core + +PM> Install-Package ElectronNET.Core.AspNet ``` -## Setup Using Minimal-API +### Enable Electron.NET on Startup -You start Electron.NET up with an `UseElectron` WebHostBuilder-Extension and open the Electron Window: +To do so, use the `UseElectron` extension method on a `WebApplicationBuilder`, an `IWebHostBuilder` or any descendants. + +> [!NOTE] +> New in Electron.NET Core is that you provide a callback method as an argument to `UseElectron()`, which ensures that you get to know the right moment to set up your application UI. ### Program.cs @@ -50,93 +59,29 @@ You start Electron.NET up with an `UseElectron` WebHostBuilder-Extension and ope using ElectronNET.API; using ElectronNET.API.Entities; -var builder = WebApplication.CreateBuilder(args); -builder.WebHost.UseElectron(args); + public static void Main(string[] args) + { + WebHost.CreateDefaultBuilder(args) + .UseElectron(args, ElectronAppReady) + .UseStartup() + .Build() + .Run(); + } -// Is optional, but you can use the Electron.NET API-Classes directly with DI (relevant if you want more encoupled code) -builder.Services.AddElectron(); + public static async Task ElectronAppReady() + { + var browserWindow = await Electron.WindowManager.CreateWindowAsync( + new BrowserWindowOptions { Show = false }); -var app = builder.Build(); - -... - -await app.StartAsync(); - -// Open the Electron-Window here -await Electron.WindowManager.CreateWindowAsync(); - -app.WaitForShutdown(); + browserWindow.OnReadyToShow += () => browserWindow.Show(); + } ``` -## Setup using Normal-API -### Program.cs +## 🚀 Starting and Debugging the Application -You start Electron.NET up with an `UseElectron` WebHostBuilder-Extension. +Just press F5 in Visual Studio or use dotnet for debugging. -```csharp -public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseElectron(args); - webBuilder.UseStartup(); - }); -``` - -### Startup.cs - -Open the Electron Window in the *Startup.cs* file: - -```csharp -public void Configure(IApplicationBuilder app, IWebHostEnvironment env) -{ - //... - - Electron.WindowManager.CreateWindowAsync(); -} -``` - -## 🚀 Starting the Application - -To start the application make sure you have installed the "[ElectronNET.CLI](https://www.nuget.org/packages/ElectronNET.CLI/)" packages as global tool: - -```sh -dotnet tool install ElectronNET.CLI -g -``` - -At the first time, you need an Electron.NET project initialization. Type the following command in your ASP.NET Core folder: - -```sh -electronize init -``` - -* Now a electronnet.manifest.json should appear in your ASP.NET Core project -* Now run the following: - -```sh -electronize start -``` - -### Note - -> Only the first `electronize start` is slow. The next will go on faster. - -## 🔭 Develop Electron.NET apps using a file watcher - -The file watcher is included with version 8.31.1 of Electron.NET. For example, a file change can trigger compilation, test execution, or deployment. The Electron.NET window will automatically refresh and new code changes will be visible more quickly. The following Electron.NET CLI command is required: - -```sh -electronize start /watch -``` - -### Note - -> Only the first `electronize start` is slow. The next will go on faster. - -## 🐞 Debugging the Application - -Start your Electron.NET application with the Electron.NET CLI command. In Visual Studio attach to your running application instance. Go in the __Debug__ Menu and click on __Attach to Process...__. Sort by your projectname on the right and select it on the list. ## 📔 Usage of the Electron API @@ -145,48 +90,17 @@ A complete documentation will follow. Until then take a look in the source code In this YouTube video, we show you how you can create a new project, use the Electron.NET API, debug a application and build an executable desktop app for Windows: [Electron.NET - Getting Started](https://www.youtube.com/watch?v=nuM6AojRFHk) -## ⛏ Building Release Artifacts - -Here you need the Electron.NET CLI as well. Type the following command in your ASP.NET Core folder: - -```sh -electronize build /target win -``` - -There are additional platforms available: - -```sh -electronize build /target win -electronize build /target osx -electronize build /target linux -``` - -Those three "default" targets will produce x64 packages for those platforms. - -For certain NuGet packages or certain scenarios you may want to build a pure x86 application. To support those things you can define the desired [.NET Core runtime](https://docs.microsoft.com/en-us/dotnet/core/rid-catalog), the [electron platform](https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#platform) and [electron architecture](https://github.com/electron-userland/electron-packager/blob/master/docs/api.md#arch) like this: - -```sh -electronize build /target custom "win7-x86;win32" /electron-arch ia32 -``` - -The end result should be an electron app under your __/bin/desktop__ folder. ### Note > macOS builds can't be created on Windows machines because they require symlinks that aren't supported on Windows (per [this Electron issue](https://github.com/electron-userland/electron-packager/issues/71)). macOS builds can be produced on either Linux or macOS machines. - -## 🔄 Update -After an update to the latest Electron.API package, an update to the latest Electron.CLI is always required. In addition, always update the CLI via NuGet: - -```sh -dotnet tool update ElectronNET.CLI -g -``` ## 👨‍💻 Authors * **[Gregor Biswanger](https://github.com/GregorBiswanger)** - (Microsoft MVP, Intel Black Belt and Intel Software Innovator) is a freelance lecturer, consultant, trainer, author and speaker. He is a consultant for large and medium-sized companies, organizations and agencies for software architecture, web- and cross-platform development. You can find Gregor often on the road attending or speaking at international conferences. - [Cross-Platform-Blog](http://www.cross-platform-blog.com) - Twitter [@BFreakout](https://www.twitter.com/BFreakout) * **[Dr. Florian Rappl](https://github.com/FlorianRappl)** - Software Developer - from Munich, Germany. Microsoft MVP & Web Geek. - [The Art of Micro Frontends](https://microfrontends.art) - [Homepage](https://florian-rappl.de) - Twitter [@florianrappl](https://twitter.com/florianrappl) +* [**softworkz**](https://github.com/softworkz) - full range developer - likes to start where others gave up - MS MVP alumni and Munich citizen as well * **[Robert Muehsig](https://github.com/robertmuehsig)** - Software Developer - from Dresden, Germany, now living & working in Switzerland. Microsoft MVP & Web Geek. - [codeinside Blog](https://blog.codeinside.eu) - Twitter [@robert0muehsig](https://twitter.com/robert0muehsig) See also the list of [contributors](https://github.com/ElectronNET/Electron.NET/graphs/contributors) who participated in this project. @@ -225,78 +139,7 @@ MIT-licensed. See [LICENSE](./LICENSE) for details. **Enjoy!** -## 📝 Important notes -### ElectronNET.API & ElectronNET.CLI Version 9.31.2 - -Make sure you also have the new Electron.NET API & CLI 9.31.2 version. - -```sh -dotnet tool update ElectronNET.CLI -g -``` - -This now uses [electron-builder](https://www.electron.build/configuration/configuration) and the necessary configuration to build is made in the **electron.manifest.json** file (on the build part). In addition, own Electron.NET configurations are stored (on the root). - -Please make sure that your **electron.manifest.json** file has the following new structure: - -```json -{ - "executable": "{{executable}}", - "splashscreen": { - "imageFile": "" - }, - "name": "{{executable}}", - "author": "", - "singleInstance": false, - "build": { - "appId": "com.{{executable}}.app", - "productName": "{{executable}}", - "copyright": "Copyright © 2020", - "buildVersion": "1.0.0", - "compression": "maximum", - "directories": { - "output": "../../../bin/Desktop" - }, - "extraResources": [ - { - "from": "./bin", - "to": "bin", - "filter": ["**/*"] - } - ], - "files": [ - { - "from": "./ElectronHostHook/node_modules", - "to": "ElectronHostHook/node_modules", - "filter": ["**/*"] - }, - "**/*" - ] - } -} -``` - -### ElectronNET.CLI Version 0.0.9 - -In the Version 0.0.9 the CLI was not a global tool and needed to be registered like this in the *.csproj*: - -```xml - - - -``` - -After you edited the *.csproj* file, you need to restore your NuGet packages within your Project. Run the following command in your ASP.NET Core folder: - -```sh -dotnet restore -``` - -If you still use this version you will need to invoke it like this: - -```sh -electronize ... -``` ### Node.js Integration @@ -324,3 +167,12 @@ public void ConfigureServices(IServiceCollection services) services.AddElectron(); } ``` + +## 💬 Community + +[![Gitter](https://badges.gitter.im/ElectronNET/community.svg)](https://gitter.im/ElectronNET/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + +Besides the chat on Gitter and the issues [discussed here](https://github.com/ElectronNET/Electron.NET/issues) you can also use [StackOverflow](https://stackoverflow.com/questions/tagged/electron.net) with the tag `electron.net`. + +If you want to sponsor the further maintenance and development of this project [see the donate section](#🙏-donate). + From fcb589d58e8a94bb691b6fd4b345a65346c4d634 Mon Sep 17 00:00:00 2001 From: softworkz Date: Tue, 14 Oct 2025 06:23:45 +0200 Subject: [PATCH 54/66] What's new doc page (AI writen) --- WHATS_NEW.md | 127 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 WHATS_NEW.md diff --git a/WHATS_NEW.md b/WHATS_NEW.md new file mode 100644 index 0000000..2f658fb --- /dev/null +++ b/WHATS_NEW.md @@ -0,0 +1,127 @@ +# What's New in ElectronNET.Core + +## A Complete Transformation + +ElectronNET.Core represents a fundamental modernization of Electron.NET, addressing years of accumulated pain points while preserving full API compatibility. This isn't just an update—it's a complete rethinking of how .NET developers build and debug cross-platform desktop applications with Electron. + +## Complete Build System Overhaul + +### From CLI Complexity to MSBuild Simplicity + +The most visible change is the complete elimination of the CLI tool dependency. Where developers once needed to manage complex command-line operations and JSON configuration files, everything now flows through Visual Studio's native project system. + +The old `electron.manifest.json` file is gone, replaced by clean MSBuild project properties that integrate seamlessly with Visual Studio's project designer. This provides not just a better development experience, but also eliminates entire categories of configuration errors that plagued earlier versions. + +### Intelligent Package Structure + +The new package architecture reflects a clearer separation of concerns: + +- **ElectronNET.Core** - The main package containing build logic and project system integration +- **ElectronNET.Core.Api** - Pure API definitions for Electron integration +- **ElectronNET.Core.AspNet** - ASP.NET-specific runtime components + +This modular approach allows projects to include only what they need while maintaining the flexibility to scale from simple console applications to complex web applications. + +## Beyond ASP.NET: Console Application Support + +### A Fundamental Shift in Accessibility + +One of the most significant breakthroughs in ElectronNET.Core is the removal of the ASP.NET requirement. Developers can now build Electron applications using simple console applications, dramatically expanding the use cases and removing a major barrier to adoption. + +### Flexible Content Sources + +Console applications with ElectronNET.Core support multiple content scenarios: + +- **File System HTML/JS**: Serve static web content directly from the file system +- **Remote Server Integration**: Connect to existing web servers or APIs +- **Lightweight Architecture**: Avoid the overhead of ASP.NET when it's not needed +- **Simplified Deployment**: Package and distribute with minimal dependencies + +This capability transforms ElectronNET from a web-focused framework into a versatile platform that can integrate with any HTML/JS content source, making it accessible to a much broader range of development scenarios and team structures. + +## Revolutionary Development Experience + +### Debugging Reimagined + +The debugging experience has been completely transformed. The new ASP.NET-first launch mode means developers can now debug their .NET code directly, with full access to familiar debugging tools and Hot Reload capabilities. No more attaching to processes or working around limited debugging scenarios—the development workflow now matches standard ASP.NET development patterns. + +### Cross-Platform Development Without Compromises + +One of the most significant breakthroughs is the ability to build and debug Linux applications directly from Windows Visual Studio through WSL integration. Developers can now: + +- Build Linux packages while working on Windows +- Debug Linux application behavior in real-time +- Test cross-platform functionality without context switching +- Deploy to Linux targets with confidence + +This capability eliminates the traditional barriers between Windows development environments and Linux deployment targets. + +### Flexible Runtime Identifier Support + +Runtime Identifier (RID) selection is now a first-class part of the project configuration, allowing developers to explicitly target specific platforms and architectures. The build system automatically structures output folders using standard .NET conventions (`bin\net8.0\win-x64`) instead of the ambiguous `bin\Desktop` layout, making multi-target builds clean and predictable. + +## Modernized Architecture + +### Process Lifecycle Revolution + +The underlying process architecture has been fundamentally redesigned. Instead of Electron launching first and managing the .NET process, ElectronNET.Core puts .NET in control. The .NET application launches first and runs Electron as a child process, providing: + +- Better process lifecycle management +- More reliable application termination +- Enhanced error handling and recovery +- Cleaner separation between web and native concerns + +This architecture supports eight different launch scenarios, covering every combination of packaged/unpackaged deployment, console/ASP.NET hosting, and dotnet-first/electron-first initialization. + +### Unpackaged Development Mode + +The new unpackaged run-mode transforms development workflows by using regular .NET builds with unpackaged Electron configurations. This approach leverages .NET's incremental build capabilities for both managed and native code, dramatically reducing rebuild times and improving the development feedback loop. + +## Enhanced Technical Foundation + +### TypeScript Integration + +TypeScript compilation is now fully integrated with ASP.NET tooling, providing consistent builds across different development environments. The updated toolchain uses modern TypeScript versions with ESLint configuration, eliminating the compatibility issues that previously affected custom ElectronHostHook implementations. + +### API Enhancements + +The improved splash screen handling with automatic path resolution eliminates common configuration pitfalls, while maintaining full backward compatibility with existing ElectronHostHook code. + +### Performance Optimizations + +Package sizes have been reduced by eliminating unnecessary dependencies, while build performance has improved through intelligent incremental compilation. The new architecture also minimizes startup times through optimized build and launch procedures. + +## Seamless Migration Path + +### Backward Compatibility Focus + +Despite the extensive changes, ElectronNET.Core maintains complete API compatibility with existing applications. The modular package structure allows for incremental adoption, and existing ElectronHostHook implementations continue to work without modification. + +### Clear Upgrade Journey + +The migration path is designed to be straightforward: +1. Update package references to the new structure +2. Remove the old manifest file +3. Configure project properties through Visual Studio +4. Adopt new debugging workflows at your own pace + +## Future Horizons + +### Unlocked Possibilities + +This modernization removes the technical debt that was limiting Electron.NET's evolution. The flexible Electron versioning, integrated build system, and cross-platform capabilities create a foundation for: + +- More frequent updates and feature additions +- Enhanced community contributions +- Better tooling and IDE integration +- Expanded platform support + +### Version Independence + +The removal of rigid Electron version coupling means developers can now choose the Electron version that best fits their needs, with build-time validation ensuring compatibility. This approach encourages community feedback and enables faster adoption of new Electron features. + +## Conclusion + +ElectronNET.Core represents more than just new features—it's a complete reimagining of what .NET + Electron development can be. By eliminating friction points, removing the ASP.NET requirement to support console applications, improving debugging experiences, and enabling true cross-platform development, it transforms Electron.NET from a challenging framework to work with into a modern, efficient platform for building cross-platform desktop applications. + +The changes address the core issues that were driving developers away from Electron.NET while opening new possibilities for the future. This foundation will enable more rapid innovation and better support for the growing demands of cross-platform .NET development. From 7b812bfae78312a415e2ba3eb9e27850f612ef6b Mon Sep 17 00:00:00 2001 From: softworkz Date: Tue, 14 Oct 2025 08:51:22 +0200 Subject: [PATCH 55/66] Remove whatsnew from root --- WHATS_NEW.md | 127 --------------------------------------------------- 1 file changed, 127 deletions(-) delete mode 100644 WHATS_NEW.md diff --git a/WHATS_NEW.md b/WHATS_NEW.md deleted file mode 100644 index 2f658fb..0000000 --- a/WHATS_NEW.md +++ /dev/null @@ -1,127 +0,0 @@ -# What's New in ElectronNET.Core - -## A Complete Transformation - -ElectronNET.Core represents a fundamental modernization of Electron.NET, addressing years of accumulated pain points while preserving full API compatibility. This isn't just an update—it's a complete rethinking of how .NET developers build and debug cross-platform desktop applications with Electron. - -## Complete Build System Overhaul - -### From CLI Complexity to MSBuild Simplicity - -The most visible change is the complete elimination of the CLI tool dependency. Where developers once needed to manage complex command-line operations and JSON configuration files, everything now flows through Visual Studio's native project system. - -The old `electron.manifest.json` file is gone, replaced by clean MSBuild project properties that integrate seamlessly with Visual Studio's project designer. This provides not just a better development experience, but also eliminates entire categories of configuration errors that plagued earlier versions. - -### Intelligent Package Structure - -The new package architecture reflects a clearer separation of concerns: - -- **ElectronNET.Core** - The main package containing build logic and project system integration -- **ElectronNET.Core.Api** - Pure API definitions for Electron integration -- **ElectronNET.Core.AspNet** - ASP.NET-specific runtime components - -This modular approach allows projects to include only what they need while maintaining the flexibility to scale from simple console applications to complex web applications. - -## Beyond ASP.NET: Console Application Support - -### A Fundamental Shift in Accessibility - -One of the most significant breakthroughs in ElectronNET.Core is the removal of the ASP.NET requirement. Developers can now build Electron applications using simple console applications, dramatically expanding the use cases and removing a major barrier to adoption. - -### Flexible Content Sources - -Console applications with ElectronNET.Core support multiple content scenarios: - -- **File System HTML/JS**: Serve static web content directly from the file system -- **Remote Server Integration**: Connect to existing web servers or APIs -- **Lightweight Architecture**: Avoid the overhead of ASP.NET when it's not needed -- **Simplified Deployment**: Package and distribute with minimal dependencies - -This capability transforms ElectronNET from a web-focused framework into a versatile platform that can integrate with any HTML/JS content source, making it accessible to a much broader range of development scenarios and team structures. - -## Revolutionary Development Experience - -### Debugging Reimagined - -The debugging experience has been completely transformed. The new ASP.NET-first launch mode means developers can now debug their .NET code directly, with full access to familiar debugging tools and Hot Reload capabilities. No more attaching to processes or working around limited debugging scenarios—the development workflow now matches standard ASP.NET development patterns. - -### Cross-Platform Development Without Compromises - -One of the most significant breakthroughs is the ability to build and debug Linux applications directly from Windows Visual Studio through WSL integration. Developers can now: - -- Build Linux packages while working on Windows -- Debug Linux application behavior in real-time -- Test cross-platform functionality without context switching -- Deploy to Linux targets with confidence - -This capability eliminates the traditional barriers between Windows development environments and Linux deployment targets. - -### Flexible Runtime Identifier Support - -Runtime Identifier (RID) selection is now a first-class part of the project configuration, allowing developers to explicitly target specific platforms and architectures. The build system automatically structures output folders using standard .NET conventions (`bin\net8.0\win-x64`) instead of the ambiguous `bin\Desktop` layout, making multi-target builds clean and predictable. - -## Modernized Architecture - -### Process Lifecycle Revolution - -The underlying process architecture has been fundamentally redesigned. Instead of Electron launching first and managing the .NET process, ElectronNET.Core puts .NET in control. The .NET application launches first and runs Electron as a child process, providing: - -- Better process lifecycle management -- More reliable application termination -- Enhanced error handling and recovery -- Cleaner separation between web and native concerns - -This architecture supports eight different launch scenarios, covering every combination of packaged/unpackaged deployment, console/ASP.NET hosting, and dotnet-first/electron-first initialization. - -### Unpackaged Development Mode - -The new unpackaged run-mode transforms development workflows by using regular .NET builds with unpackaged Electron configurations. This approach leverages .NET's incremental build capabilities for both managed and native code, dramatically reducing rebuild times and improving the development feedback loop. - -## Enhanced Technical Foundation - -### TypeScript Integration - -TypeScript compilation is now fully integrated with ASP.NET tooling, providing consistent builds across different development environments. The updated toolchain uses modern TypeScript versions with ESLint configuration, eliminating the compatibility issues that previously affected custom ElectronHostHook implementations. - -### API Enhancements - -The improved splash screen handling with automatic path resolution eliminates common configuration pitfalls, while maintaining full backward compatibility with existing ElectronHostHook code. - -### Performance Optimizations - -Package sizes have been reduced by eliminating unnecessary dependencies, while build performance has improved through intelligent incremental compilation. The new architecture also minimizes startup times through optimized build and launch procedures. - -## Seamless Migration Path - -### Backward Compatibility Focus - -Despite the extensive changes, ElectronNET.Core maintains complete API compatibility with existing applications. The modular package structure allows for incremental adoption, and existing ElectronHostHook implementations continue to work without modification. - -### Clear Upgrade Journey - -The migration path is designed to be straightforward: -1. Update package references to the new structure -2. Remove the old manifest file -3. Configure project properties through Visual Studio -4. Adopt new debugging workflows at your own pace - -## Future Horizons - -### Unlocked Possibilities - -This modernization removes the technical debt that was limiting Electron.NET's evolution. The flexible Electron versioning, integrated build system, and cross-platform capabilities create a foundation for: - -- More frequent updates and feature additions -- Enhanced community contributions -- Better tooling and IDE integration -- Expanded platform support - -### Version Independence - -The removal of rigid Electron version coupling means developers can now choose the Electron version that best fits their needs, with build-time validation ensuring compatibility. This approach encourages community feedback and enables faster adoption of new Electron features. - -## Conclusion - -ElectronNET.Core represents more than just new features—it's a complete reimagining of what .NET + Electron development can be. By eliminating friction points, removing the ASP.NET requirement to support console applications, improving debugging experiences, and enabling true cross-platform development, it transforms Electron.NET from a challenging framework to work with into a modern, efficient platform for building cross-platform desktop applications. - -The changes address the core issues that were driving developers away from Electron.NET while opening new possibilities for the future. This foundation will enable more rapid innovation and better support for the growing demands of cross-platform .NET development. From 0a0e26a9ddfff774564a1d2279294d17cc59bc98 Mon Sep 17 00:00:00 2001 From: softworkz Date: Wed, 15 Oct 2025 12:50:31 +0200 Subject: [PATCH 56/66] Add docs --- docs/.docproj/DocProj.props | 27 + docs/.docproj/DocProj.targets | 23 + docs/Core/Advanced-Migration-Topics.md | 63 + docs/Core/Migration-Guide.md | 70 + docs/Core/What's-New.md | 127 + docs/Docs.shproj | 25 + docs/GettingStarted/ASP.Net.md | 57 + docs/GettingStarted/Console-App.md | 52 + docs/GettingStarted/Debugging.md | 43 + docs/GettingStarted/Package-Building.md | 88 + docs/GettingStarted/Startup-Methods.md | 17 + docs/Home.md | 4 + docs/_Footer.md | 2 + docs/_Sidebar.md | 27 + docs/images/startup_modes.png | Bin 0 -> 26847 bytes docs/md-styles.css | 7870 +++++++++++++++++++++++ 16 files changed, 8495 insertions(+) create mode 100644 docs/.docproj/DocProj.props create mode 100644 docs/.docproj/DocProj.targets create mode 100644 docs/Core/Advanced-Migration-Topics.md create mode 100644 docs/Core/Migration-Guide.md create mode 100644 docs/Core/What's-New.md create mode 100644 docs/Docs.shproj create mode 100644 docs/GettingStarted/ASP.Net.md create mode 100644 docs/GettingStarted/Console-App.md create mode 100644 docs/GettingStarted/Debugging.md create mode 100644 docs/GettingStarted/Package-Building.md create mode 100644 docs/GettingStarted/Startup-Methods.md create mode 100644 docs/Home.md create mode 100644 docs/_Footer.md create mode 100644 docs/_Sidebar.md create mode 100644 docs/images/startup_modes.png create mode 100644 docs/md-styles.css diff --git a/docs/.docproj/DocProj.props b/docs/.docproj/DocProj.props new file mode 100644 index 0000000..88e67e5 --- /dev/null +++ b/docs/.docproj/DocProj.props @@ -0,0 +1,27 @@ + + + + + 8.1 + true + true + + + + **/*.md;**/*.markdown + **/*.png;**/*.bmp;**/*.jpg;**/*.gif;**/*.mp4 + **/*.css;**/*.js;**/*.json + + + + + + + + + + + + + + diff --git a/docs/.docproj/DocProj.targets b/docs/.docproj/DocProj.targets new file mode 100644 index 0000000..6d7ee06 --- /dev/null +++ b/docs/.docproj/DocProj.targets @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/Core/Advanced-Migration-Topics.md b/docs/Core/Advanced-Migration-Topics.md new file mode 100644 index 0000000..4888ce1 --- /dev/null +++ b/docs/Core/Advanced-Migration-Topics.md @@ -0,0 +1,63 @@ +# Advanced Migration Topics + +// 1. WebPort +// specifying the WebPort in the manifest is no longer supported +// from commit message: +//- Removed the 'electronWebPort' handling +// When ASP.Net is launched first, then the information which port it +// should use would be coming too late; anyway, there's no need for +// letting the port number round-trip all the way through the manifest +// file, loaded by main.js and then sent to dotnet. +// + +if the asp web port needs to be specified manually, this can be by setting it via MSBuild like this: + + + + + + +// 2. ElectronHostHook + + +Users who have a custom ElectronHostHook in their project, need to do the following: + + +In their ElectronHostHook\package.json, they need to set typescript to 5.9.3 or later. If @types/node is presnt, it must be 22.x + + "devDependencies": { + "eslint": "^9.37.0", + "@types/node": "^22.18", + "typescript": "^5.9.3" + }, + "dependencies": { + "archiver-utils": "^2.1.0", + "socket.io": "^4.8.1", + "exceljs": "^1.10.0" + } +} + +Next step is to edit the project file and add a reference like this + + + +then the following propertygroup: + + + commonjs + true + ElectronHostHook/tsconfig.json + + + +and this itemgroup: + + + + + + + + + + diff --git a/docs/Core/Migration-Guide.md b/docs/Core/Migration-Guide.md new file mode 100644 index 0000000..d8d9c57 --- /dev/null +++ b/docs/Core/Migration-Guide.md @@ -0,0 +1,70 @@ +# Migration Guide + +// Explain migration steps: + +Uninstall existing package ElectronNET.API + +// Install new packages: + + +```ps1 +PM> Install-Package ElectronNET.Core + +PM> Install-Package ElectronNET.Core.AspNet +``` + +// add link to package type description: [text](../Releases/Package-Description.md) +// the API package is a dependency of .Core, so it's auto-incldued + + +// Edit Properties\electron-builder.json +// it's auto-created: In VS after nuget restore, otherwise on first build - even when that fails + +// Now look at the electron-manifest.json file +// 1. Manually merge everything under the 'build' property into the +// electron-builder file (omitting the build node, only its content is to be merged) +// 2. Open the project designer in VS and enter the values from the manifest file into the fields +// 3. Delete the manifest file +// + +// Check ASP.Net core startup (program.cs or statup.cs, typically) +// Find the UseElectron() extension method call +// it will have an error. it needs a 3rd parameter now: the onAppReady callback. +// set this to a callback function. this gets called just in the right moment for you +// to start things going (like accessing ElectronNET classes) + +### Program.cs + +```csharp +using ElectronNET.API; +using ElectronNET.API.Entities; + + public static void Main(string[] args) + { + WebHost.CreateDefaultBuilder(args) + .UseElectron(args, ElectronAppReady) + .UseStartup() + .Build() + .Run(); + } + + public static async Task ElectronAppReady() + { + var browserWindow = await Electron.WindowManager.CreateWindowAsync( + new BrowserWindowOptions { Show = false }); + + browserWindow.OnReadyToShow += () => browserWindow.Show(); + } +``` + + +// Also show an example for the other case with IWebHostBuilder and Startup class + + + +// Next, explain that the 'watch' feature is no longer supported, now that proper debugging with hot reload is possible. + + +// Nodejs needs to be updated to 22.x +// Important. Explain how to (for win and linux) + diff --git a/docs/Core/What's-New.md b/docs/Core/What's-New.md new file mode 100644 index 0000000..2f658fb --- /dev/null +++ b/docs/Core/What's-New.md @@ -0,0 +1,127 @@ +# What's New in ElectronNET.Core + +## A Complete Transformation + +ElectronNET.Core represents a fundamental modernization of Electron.NET, addressing years of accumulated pain points while preserving full API compatibility. This isn't just an update—it's a complete rethinking of how .NET developers build and debug cross-platform desktop applications with Electron. + +## Complete Build System Overhaul + +### From CLI Complexity to MSBuild Simplicity + +The most visible change is the complete elimination of the CLI tool dependency. Where developers once needed to manage complex command-line operations and JSON configuration files, everything now flows through Visual Studio's native project system. + +The old `electron.manifest.json` file is gone, replaced by clean MSBuild project properties that integrate seamlessly with Visual Studio's project designer. This provides not just a better development experience, but also eliminates entire categories of configuration errors that plagued earlier versions. + +### Intelligent Package Structure + +The new package architecture reflects a clearer separation of concerns: + +- **ElectronNET.Core** - The main package containing build logic and project system integration +- **ElectronNET.Core.Api** - Pure API definitions for Electron integration +- **ElectronNET.Core.AspNet** - ASP.NET-specific runtime components + +This modular approach allows projects to include only what they need while maintaining the flexibility to scale from simple console applications to complex web applications. + +## Beyond ASP.NET: Console Application Support + +### A Fundamental Shift in Accessibility + +One of the most significant breakthroughs in ElectronNET.Core is the removal of the ASP.NET requirement. Developers can now build Electron applications using simple console applications, dramatically expanding the use cases and removing a major barrier to adoption. + +### Flexible Content Sources + +Console applications with ElectronNET.Core support multiple content scenarios: + +- **File System HTML/JS**: Serve static web content directly from the file system +- **Remote Server Integration**: Connect to existing web servers or APIs +- **Lightweight Architecture**: Avoid the overhead of ASP.NET when it's not needed +- **Simplified Deployment**: Package and distribute with minimal dependencies + +This capability transforms ElectronNET from a web-focused framework into a versatile platform that can integrate with any HTML/JS content source, making it accessible to a much broader range of development scenarios and team structures. + +## Revolutionary Development Experience + +### Debugging Reimagined + +The debugging experience has been completely transformed. The new ASP.NET-first launch mode means developers can now debug their .NET code directly, with full access to familiar debugging tools and Hot Reload capabilities. No more attaching to processes or working around limited debugging scenarios—the development workflow now matches standard ASP.NET development patterns. + +### Cross-Platform Development Without Compromises + +One of the most significant breakthroughs is the ability to build and debug Linux applications directly from Windows Visual Studio through WSL integration. Developers can now: + +- Build Linux packages while working on Windows +- Debug Linux application behavior in real-time +- Test cross-platform functionality without context switching +- Deploy to Linux targets with confidence + +This capability eliminates the traditional barriers between Windows development environments and Linux deployment targets. + +### Flexible Runtime Identifier Support + +Runtime Identifier (RID) selection is now a first-class part of the project configuration, allowing developers to explicitly target specific platforms and architectures. The build system automatically structures output folders using standard .NET conventions (`bin\net8.0\win-x64`) instead of the ambiguous `bin\Desktop` layout, making multi-target builds clean and predictable. + +## Modernized Architecture + +### Process Lifecycle Revolution + +The underlying process architecture has been fundamentally redesigned. Instead of Electron launching first and managing the .NET process, ElectronNET.Core puts .NET in control. The .NET application launches first and runs Electron as a child process, providing: + +- Better process lifecycle management +- More reliable application termination +- Enhanced error handling and recovery +- Cleaner separation between web and native concerns + +This architecture supports eight different launch scenarios, covering every combination of packaged/unpackaged deployment, console/ASP.NET hosting, and dotnet-first/electron-first initialization. + +### Unpackaged Development Mode + +The new unpackaged run-mode transforms development workflows by using regular .NET builds with unpackaged Electron configurations. This approach leverages .NET's incremental build capabilities for both managed and native code, dramatically reducing rebuild times and improving the development feedback loop. + +## Enhanced Technical Foundation + +### TypeScript Integration + +TypeScript compilation is now fully integrated with ASP.NET tooling, providing consistent builds across different development environments. The updated toolchain uses modern TypeScript versions with ESLint configuration, eliminating the compatibility issues that previously affected custom ElectronHostHook implementations. + +### API Enhancements + +The improved splash screen handling with automatic path resolution eliminates common configuration pitfalls, while maintaining full backward compatibility with existing ElectronHostHook code. + +### Performance Optimizations + +Package sizes have been reduced by eliminating unnecessary dependencies, while build performance has improved through intelligent incremental compilation. The new architecture also minimizes startup times through optimized build and launch procedures. + +## Seamless Migration Path + +### Backward Compatibility Focus + +Despite the extensive changes, ElectronNET.Core maintains complete API compatibility with existing applications. The modular package structure allows for incremental adoption, and existing ElectronHostHook implementations continue to work without modification. + +### Clear Upgrade Journey + +The migration path is designed to be straightforward: +1. Update package references to the new structure +2. Remove the old manifest file +3. Configure project properties through Visual Studio +4. Adopt new debugging workflows at your own pace + +## Future Horizons + +### Unlocked Possibilities + +This modernization removes the technical debt that was limiting Electron.NET's evolution. The flexible Electron versioning, integrated build system, and cross-platform capabilities create a foundation for: + +- More frequent updates and feature additions +- Enhanced community contributions +- Better tooling and IDE integration +- Expanded platform support + +### Version Independence + +The removal of rigid Electron version coupling means developers can now choose the Electron version that best fits their needs, with build-time validation ensuring compatibility. This approach encourages community feedback and enables faster adoption of new Electron features. + +## Conclusion + +ElectronNET.Core represents more than just new features—it's a complete reimagining of what .NET + Electron development can be. By eliminating friction points, removing the ASP.NET requirement to support console applications, improving debugging experiences, and enabling true cross-platform development, it transforms Electron.NET from a challenging framework to work with into a modern, efficient platform for building cross-platform desktop applications. + +The changes address the core issues that were driving developers away from Electron.NET while opening new possibilities for the future. This foundation will enable more rapid innovation and better support for the growing demands of cross-platform .NET development. diff --git a/docs/Docs.shproj b/docs/Docs.shproj new file mode 100644 index 0000000..0da6e25 --- /dev/null +++ b/docs/Docs.shproj @@ -0,0 +1,25 @@ + + + 06caadc7-de5b-47b4-ab2a-e9501459a2d1 + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/GettingStarted/ASP.Net.md b/docs/GettingStarted/ASP.Net.md new file mode 100644 index 0000000..718b0ed --- /dev/null +++ b/docs/GettingStarted/ASP.Net.md @@ -0,0 +1,57 @@ + + +## 🛠 Requirements to Run + + Our API uses .NET 6/8, so our + +Also you should have installed: + +* .NET 6/8 or later +* OS + minimum base OS is the same as [.NET 6](https://github.com/dotnet/core/blob/main/release-notes/6.0/supported-os.md) / [.NET 8](https://github.com/dotnet/core/blob/main/release-notes/8.0/supported-os.md). +* NodeJS (at least [Version 22.x](https://nodejs.org)) + + +## 👩‍🏫 Usage with ASP.Net + +- Create a new ASP.Net Core project +- Install the following two nuget packages: + +```ps1 +PM> Install-Package ElectronNET.Core + +PM> Install-Package ElectronNET.Core.AspNet +``` + +### Enable Electron.NET on Startup + +To do so, use the `UseElectron` extension method on a `WebApplicationBuilder`, an `IWebHostBuilder` or any descendants. + +> [!NOTE] +> New in Electron.NET Core is that you provide a callback method as an argument to `UseElectron()`, which ensures that you get to know the right moment to set up your application UI. + +### Program.cs + +```csharp +using ElectronNET.API; +using ElectronNET.API.Entities; + + public static void Main(string[] args) + { + WebHost.CreateDefaultBuilder(args) + .UseElectron(args, ElectronAppReady) + .UseStartup() + .Build() + .Run(); + } + + public static async Task ElectronAppReady() + { + var browserWindow = await Electron.WindowManager.CreateWindowAsync( + new BrowserWindowOptions { Show = false }); + + browserWindow.OnReadyToShow += () => browserWindow.Show(); + } +``` + + diff --git a/docs/GettingStarted/Console-App.md b/docs/GettingStarted/Console-App.md new file mode 100644 index 0000000..f42e266 --- /dev/null +++ b/docs/GettingStarted/Console-App.md @@ -0,0 +1,52 @@ + + +// Understand this code so you can explain how to set it up with console project + +namespace ElectronNET.WebApp +{ + using System; + using System.Threading.Tasks; + using ElectronNET.API.Entities; + + public class Program + { + public static async Task Main(string[] args) + { + var runtimeController = ElectronNetRuntime.RuntimeController; + + try + { + await runtimeController.Start(); + + await runtimeController.WaitReadyTask; + + await ElectronBootstrap(); + + await runtimeController.WaitStoppedTask; + } + catch (Exception ex) + { + Console.WriteLine(ex); + await runtimeController.Stop().ConfigureAwait(false); + + await runtimeController.WaitStoppedTask.WaitAsync(TimeSpan.FromSeconds(2)).ConfigureAwait(false); + } + } + + public static async Task ElectronBootstrap() + { + //AddDevelopmentTests(); + + var browserWindow = await Electron.WindowManager.CreateWindowAsync(new BrowserWindowOptions + { + Width = 1152, + Height = 940, + Show = false, + }, "https://github.com/ElectronNET/Electron.NET"); + + await browserWindow.WebContents.Session.ClearCacheAsync(); + + browserWindow.OnReadyToShow += () => browserWindow.Show(); + } + } +} diff --git a/docs/GettingStarted/Debugging.md b/docs/GettingStarted/Debugging.md new file mode 100644 index 0000000..66d1a79 --- /dev/null +++ b/docs/GettingStarted/Debugging.md @@ -0,0 +1,43 @@ +# Debugging + + +explain the ease of debugging and everything from what you've already read. + + +This config enables all three possible ways for unpackaged debugging: + + +The first and last are working by default (newly created prject). The 2nd one needs to the added manually, if desired. + +{ + "profiles": { + "ASP.Net (unpackaged)": { + "commandName": "Project", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "http://localhost:8001/" + }, + "Electron (unpackaged)": { + "commandName": "Executable", + "executablePath": "node", + "commandLineArgs": "node_modules/electron/cli.js main.js -unpackedelectron", + "workingDirectory": "$(TargetDir).electron", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "WSL": { + "commandName": "WSL2", + "launchUrl": "http://localhost:8001/", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "ASPNETCORE_URLS": "http://localhost:8001/" + }, + "distributionName": "" + } + } +} + +Important: The runtime identifier needs to be changed in the project when switching between Windows and WSL. + diff --git a/docs/GettingStarted/Package-Building.md b/docs/GettingStarted/Package-Building.md new file mode 100644 index 0000000..653f37a --- /dev/null +++ b/docs/GettingStarted/Package-Building.md @@ -0,0 +1,88 @@ +# Package Building + + +explain how to use VS publish to create package with electron-builder. + +The folder publishing is not the same between ASP.Net and console ap. + +## For ASP.Net, these are working publishing profiles: + + + + + + true + false + true + Release + FileSystem + publish\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\ + FileSystem + <_TargetId>Folder + + net8.0 + linux-x64 + 6ea447d9-343f-46b8-b456-66557bddbb9f + true + Any CPU + + + + + + + + true + false + true + Release + FileSystem + publish\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\ + FileSystem + <_TargetId>Folder + + net8.0 + win-x64 + 6ea447d9-343f-46b8-b456-66557bddbb9f + true + Any CPU + + + + + +## For a console app, these ones are working: + + + + + + Release + Any CPU + publish\Release\net8.0\linux-x64 + FileSystem + <_TargetId>Folder + net8.0 + linux-x64 + false + false + + + + + + + + Release + Any CPU + publish\Release\net8.0\win-x64 + FileSystem + <_TargetId>Folder + net8.0 + win-x64 + false + false + false + + + diff --git a/docs/GettingStarted/Startup-Methods.md b/docs/GettingStarted/Startup-Methods.md new file mode 100644 index 0000000..3276d82 --- /dev/null +++ b/docs/GettingStarted/Startup-Methods.md @@ -0,0 +1,17 @@ +# Startup Methods + +// Explain the different startup modes + +- Support new commandline flags: + - unpackedelectron + running in debug mode, electron first, so must launch dotnet + - unpackeddotnet + running in debug mode, dotnet first, do not launch dotnet + - dotnetpacked + running from electron-builder output, dotnet first, do not launch + - {none of the above flags} + running from electron-builder output, electron first, launch dotnet + + +![Startup Modes](../images/startup_modes.png) + diff --git a/docs/Home.md b/docs/Home.md new file mode 100644 index 0000000..fdf85a9 --- /dev/null +++ b/docs/Home.md @@ -0,0 +1,4 @@ + + +### Electron.NET Wiki Home + diff --git a/docs/_Footer.md b/docs/_Footer.md new file mode 100644 index 0000000..1cde9a4 --- /dev/null +++ b/docs/_Footer.md @@ -0,0 +1,2 @@ + +Want to contribute to this documentation? Please fork and create a PR! The Wiki is autogenerated from the /docs content in the repository. \ No newline at end of file diff --git a/docs/_Sidebar.md b/docs/_Sidebar.md new file mode 100644 index 0000000..444595b --- /dev/null +++ b/docs/_Sidebar.md @@ -0,0 +1,27 @@ + + +# Wiki + +- [Home](Home.md) + +# Electron.NET Core + +- [What's new?](Core/What's-New.md) +- [Migration Guiide](Core/Migration-Guide.md) +- [Advcanced Migration](Core/Advanced-Migration-Topics.md) + +# Getting Started + +- [With ASP.Net](GettingStarted/ASP.Net.md) +- [With a Console App](GettingStarted/Console-App.md) +- [Startup-Method](GettingStarted/Startup-Methods.md) +- [Debugging](GettingStarted/Debugging.md) +- [Package Building](GettingStarted/Package-Building.md) + + + +# Release Information + +- [Package Description](RelInfo/Package-Description.md) +- [Changelog](RelInfo/Changelog.md) + diff --git a/docs/images/startup_modes.png b/docs/images/startup_modes.png new file mode 100644 index 0000000000000000000000000000000000000000..e05fdf9a1b85ac6b7aa9193193b13e21aa48c854 GIT binary patch literal 26847 zcmeAS@N?(olHy`uVBq!ia0y~yU(v#0)u%3g#k`-dVr>@IwIxFkt%ie*AR6I>X< ztPPDSpm1PdXy8=|1dA}_D0DJ`SqaRZB47rCw8tU{<)AsC|zD!+HNCSn-1;usEY?%ett(C8w{syj=Cum7z-S^P!`q%nS+a zf7uxnWG=q2m!O_=3HkiNmbD?w>*lXvES?vgDZF=eJt=>x!vKQXYc(!S*6#Z9q-*)tXT|=nKkq%i>Q&wK>3M?~=BnzuwdT6iV)Yw9K}>c5d(a?>SeFDAn#O zUwtp;gRHSg^lh)Hp%IJkO0E34dfwIN)$^~-e)li)z4WU1sp~hsT6(v?)b;+AHEq4o zTk;+|${IKuUcB4SKhcGeVS)9VD~~LLr(4JS&&5-$E${N&oU(2u z_q=P*R~M;xzMkiGCH~~2_j?%^DaW$@&tLeu|Fl=G*L%d$SoJl?yZ>i(TG-_O6R%vl{0*zA1j%ynkr zvkTZ)?>qU*@<-*{Isf;&ynZqvWO2;(on?2-ue>)?v?)uEY&h-^%c_hC1ZB)(Qn$VrE≶efAQV>)w89+Q@%#@E{P7^^(rxR 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 E0CFPUga7~l literal 0 HcmV?d00001 diff --git a/docs/md-styles.css b/docs/md-styles.css new file mode 100644 index 0000000..798d353 --- /dev/null +++ b/docs/md-styles.css @@ -0,0 +1,7870 @@ +/*! + * Bootstrap v3.4.1 (https://getbootstrap.com/) + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100% +} + +article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { + display: block +} + +audio, canvas, progress, video { + display: inline-block; + vertical-align: baseline +} + + audio:not([controls]) { + display: none; + height: 0 + } + +[hidden], template { + display: none +} + +a:active, a:hover { + outline: 0 +} + +abbr[title] { + border-bottom: none; + text-decoration: underline; + -webkit-text-decoration: underline dotted; + -moz-text-decoration: underline dotted; + text-decoration: underline dotted +} + +b, optgroup, strong { + font-weight: 700 +} + +dfn { + font-style: italic +} + +h1 { + margin: .67em 0 +} + +mark { + background: #ff0; + color: #000 +} + +sub, sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline +} + +sup { + top: -.5em +} + +sub { + bottom: -.25em +} + +img { + border: 0; + vertical-align: middle +} + +svg:not(:root) { + overflow: hidden +} + +hr { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0 +} + +code, kbd, pre, samp { + font-size: 1em +} + +button, input, optgroup, select, textarea { + color: inherit; + font: inherit; + margin: 0 +} + +button { + overflow: visible +} + +button, select { + text-transform: none +} + +button, html input[type=button], input[type=reset], input[type=submit] { + -webkit-appearance: button; + cursor: pointer +} + + button[disabled], html input[disabled] { + cursor: default + } + + button::-moz-focus-inner, input::-moz-focus-inner { + border: 0; + padding: 0 + } + +input { + line-height: normal +} + + input[type=checkbox], input[type=radio] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0 + } + + input[type=number]::-webkit-inner-spin-button, input[type=number]::-webkit-outer-spin-button { + height: auto + } + + input[type=search] { + -webkit-appearance: textfield; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box + } + + input[type=search]::-webkit-search-cancel-button, input[type=search]::-webkit-search-decoration { + -webkit-appearance: none + } + +textarea { + overflow: auto +} + +td, th { + padding: 0 +} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, :after, :before { + color: #000 !important; + text-shadow: none !important; + background: 0 0 !important; + -webkit-box-shadow: none !important; + box-shadow: none !important + } + + a, a:visited { + text-decoration: underline + } + + a[href]:after { + content: " (" attr(href) ")" + } + + abbr[title]:after { + content: " (" attr(title) ")" + } + + a[href^="#"]:after, a[href^="javascript:"]:after { + content: "" + } + + blockquote, pre { + border: 1px solid #999; + page-break-inside: avoid + } + + thead { + display: table-header-group + } + + img, tr { + page-break-inside: avoid + } + + img { + max-width: 100% !important + } + + h2, h3, p { + orphans: 3; + widows: 3 + } + + h2, h3 { + page-break-after: avoid + } + + .navbar { + display: none + } + + .btn > .caret, .dropup > .btn > .caret { + border-top-color: #000 !important + } + + .label { + border: 1px solid #000 + } + + .table { + border-collapse: collapse !important + } + + .table td, .table th { + background-color: #fff !important + } + + .table-bordered td, .table-bordered th { + border: 1px solid #ddd !important + } +} + +@font-face { + font-family: "Glyphicons Halflings"; + src: url("../fonts/glyphicons-halflings-regular.eot"); + src: url("../fonts/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"),url("../fonts/glyphicons-halflings-regular.woff2") format("woff2"),url("../fonts/glyphicons-halflings-regular.woff") format("woff"),url("../fonts/glyphicons-halflings-regular.ttf") format("truetype"),url("../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg") +} + +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: "Glyphicons Halflings"; + font-style: normal; + font-weight: 400; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale +} + +.glyphicon-asterisk:before { + content: "\002a" +} + +.glyphicon-plus:before { + content: "\002b" +} + +.glyphicon-eur:before, .glyphicon-euro:before { + content: "\20ac" +} + +.glyphicon-minus:before { + content: "\2212" +} + +.glyphicon-cloud:before { + content: "\2601" +} + +.glyphicon-envelope:before { + content: "\2709" +} + +.glyphicon-pencil:before { + content: "\270f" +} + +.glyphicon-glass:before { + content: "\e001" +} + +.glyphicon-music:before { + content: "\e002" +} + +.glyphicon-search:before { + content: "\e003" +} + +.glyphicon-heart:before { + content: "\e005" +} + +.glyphicon-star:before { + content: "\e006" +} + +.glyphicon-star-empty:before { + content: "\e007" +} + +.glyphicon-user:before { + content: "\e008" +} + +.glyphicon-film:before { + content: "\e009" +} + +.glyphicon-th-large:before { + content: "\e010" +} + +.glyphicon-th:before { + content: "\e011" +} + +.glyphicon-th-list:before { + content: "\e012" +} + +.glyphicon-ok:before { + content: "\e013" +} + +.glyphicon-remove:before { + content: "\e014" +} + +.glyphicon-zoom-in:before { + content: "\e015" +} + +.glyphicon-zoom-out:before { + content: "\e016" +} + +.glyphicon-off:before { + content: "\e017" +} + +.glyphicon-signal:before { + content: "\e018" +} + +.glyphicon-cog:before { + content: "\e019" +} + +.glyphicon-trash:before { + content: "\e020" +} + +.glyphicon-home:before { + content: "\e021" +} + +.glyphicon-file:before { + content: "\e022" +} + +.glyphicon-time:before { + content: "\e023" +} + +.glyphicon-road:before { + content: "\e024" +} + +.glyphicon-download-alt:before { + content: "\e025" +} + +.glyphicon-download:before { + content: "\e026" +} + +.glyphicon-upload:before { + content: "\e027" +} + +.glyphicon-inbox:before { + content: "\e028" +} + +.glyphicon-play-circle:before { + content: "\e029" +} + +.glyphicon-repeat:before { + content: "\e030" +} + +.glyphicon-refresh:before { + content: "\e031" +} + +.glyphicon-list-alt:before { + content: "\e032" +} + +.glyphicon-lock:before { + content: "\e033" +} + +.glyphicon-flag:before { + content: "\e034" +} + +.glyphicon-headphones:before { + content: "\e035" +} + +.glyphicon-volume-off:before { + content: "\e036" +} + +.glyphicon-volume-down:before { + content: "\e037" +} + +.glyphicon-volume-up:before { + content: "\e038" +} + +.glyphicon-qrcode:before { + content: "\e039" +} + +.glyphicon-barcode:before { + content: "\e040" +} + +.glyphicon-tag:before { + content: "\e041" +} + +.glyphicon-tags:before { + content: "\e042" +} + +.glyphicon-book:before { + content: "\e043" +} + +.glyphicon-bookmark:before { + content: "\e044" +} + +.glyphicon-print:before { + content: "\e045" +} + +.glyphicon-camera:before { + content: "\e046" +} + +.glyphicon-font:before { + content: "\e047" +} + +.glyphicon-bold:before { + content: "\e048" +} + +.glyphicon-italic:before { + content: "\e049" +} + +.glyphicon-text-height:before { + content: "\e050" +} + +.glyphicon-text-width:before { + content: "\e051" +} + +.glyphicon-align-left:before { + content: "\e052" +} + +.glyphicon-align-center:before { + content: "\e053" +} + +.glyphicon-align-right:before { + content: "\e054" +} + +.glyphicon-align-justify:before { + content: "\e055" +} + +.glyphicon-list:before { + content: "\e056" +} + +.glyphicon-indent-left:before { + content: "\e057" +} + +.glyphicon-indent-right:before { + content: "\e058" +} + +.glyphicon-facetime-video:before { + content: "\e059" +} + +.glyphicon-picture:before { + content: "\e060" +} + +.glyphicon-map-marker:before { + content: "\e062" +} + +.glyphicon-adjust:before { + content: "\e063" +} + +.glyphicon-tint:before { + content: "\e064" +} + +.glyphicon-edit:before { + content: "\e065" +} + +.glyphicon-share:before { + content: "\e066" +} + +.glyphicon-check:before { + content: "\e067" +} + +.glyphicon-move:before { + content: "\e068" +} + +.glyphicon-step-backward:before { + content: "\e069" +} + +.glyphicon-fast-backward:before { + content: "\e070" +} + +.glyphicon-backward:before { + content: "\e071" +} + +.glyphicon-play:before { + content: "\e072" +} + +.glyphicon-pause:before { + content: "\e073" +} + +.glyphicon-stop:before { + content: "\e074" +} + +.glyphicon-forward:before { + content: "\e075" +} + +.glyphicon-fast-forward:before { + content: "\e076" +} + +.glyphicon-step-forward:before { + content: "\e077" +} + +.glyphicon-eject:before { + content: "\e078" +} + +.glyphicon-chevron-left:before { + content: "\e079" +} + +.glyphicon-chevron-right:before { + content: "\e080" +} + +.glyphicon-plus-sign:before { + content: "\e081" +} + +.glyphicon-minus-sign:before { + content: "\e082" +} + +.glyphicon-remove-sign:before { + content: "\e083" +} + +.glyphicon-ok-sign:before { + content: "\e084" +} + +.glyphicon-question-sign:before { + content: "\e085" +} + +.glyphicon-info-sign:before { + content: "\e086" +} + +.glyphicon-screenshot:before { + content: "\e087" +} + +.glyphicon-remove-circle:before { + content: "\e088" +} + +.glyphicon-ok-circle:before { + content: "\e089" +} + +.glyphicon-ban-circle:before { + content: "\e090" +} + +.glyphicon-arrow-left:before { + content: "\e091" +} + +.glyphicon-arrow-right:before { + content: "\e092" +} + +.glyphicon-arrow-up:before { + content: "\e093" +} + +.glyphicon-arrow-down:before { + content: "\e094" +} + +.glyphicon-share-alt:before { + content: "\e095" +} + +.glyphicon-resize-full:before { + content: "\e096" +} + +.glyphicon-resize-small:before { + content: "\e097" +} + +.glyphicon-exclamation-sign:before { + content: "\e101" +} + +.glyphicon-gift:before { + content: "\e102" +} + +.glyphicon-leaf:before { + content: "\e103" +} + +.glyphicon-fire:before { + content: "\e104" +} + +.glyphicon-eye-open:before { + content: "\e105" +} + +.glyphicon-eye-close:before { + content: "\e106" +} + +.glyphicon-warning-sign:before { + content: "\e107" +} + +.glyphicon-plane:before { + content: "\e108" +} + +.glyphicon-calendar:before { + content: "\e109" +} + +.glyphicon-random:before { + content: "\e110" +} + +.glyphicon-comment:before { + content: "\e111" +} + +.glyphicon-magnet:before { + content: "\e112" +} + +.glyphicon-chevron-up:before { + content: "\e113" +} + +.glyphicon-chevron-down:before { + content: "\e114" +} + +.glyphicon-retweet:before { + content: "\e115" +} + +.glyphicon-shopping-cart:before { + content: "\e116" +} + +.glyphicon-folder-close:before { + content: "\e117" +} + +.glyphicon-folder-open:before { + content: "\e118" +} + +.glyphicon-resize-vertical:before { + content: "\e119" +} + +.glyphicon-resize-horizontal:before { + content: "\e120" +} + +.glyphicon-hdd:before { + content: "\e121" +} + +.glyphicon-bullhorn:before { + content: "\e122" +} + +.glyphicon-bell:before { + content: "\e123" +} + +.glyphicon-certificate:before { + content: "\e124" +} + +.glyphicon-thumbs-up:before { + content: "\e125" +} + +.glyphicon-thumbs-down:before { + content: "\e126" +} + +.glyphicon-hand-right:before { + content: "\e127" +} + +.glyphicon-hand-left:before { + content: "\e128" +} + +.glyphicon-hand-up:before { + content: "\e129" +} + +.glyphicon-hand-down:before { + content: "\e130" +} + +.glyphicon-circle-arrow-right:before { + content: "\e131" +} + +.glyphicon-circle-arrow-left:before { + content: "\e132" +} + +.glyphicon-circle-arrow-up:before { + content: "\e133" +} + +.glyphicon-circle-arrow-down:before { + content: "\e134" +} + +.glyphicon-globe:before { + content: "\e135" +} + +.glyphicon-wrench:before { + content: "\e136" +} + +.glyphicon-tasks:before { + content: "\e137" +} + +.glyphicon-filter:before { + content: "\e138" +} + +.glyphicon-briefcase:before { + content: "\e139" +} + +.glyphicon-fullscreen:before { + content: "\e140" +} + +.glyphicon-dashboard:before { + content: "\e141" +} + +.glyphicon-paperclip:before { + content: "\e142" +} + +.glyphicon-heart-empty:before { + content: "\e143" +} + +.glyphicon-link:before { + content: "\e144" +} + +.glyphicon-phone:before { + content: "\e145" +} + +.glyphicon-pushpin:before { + content: "\e146" +} + +.glyphicon-usd:before { + content: "\e148" +} + +.glyphicon-gbp:before { + content: "\e149" +} + +.glyphicon-sort:before { + content: "\e150" +} + +.glyphicon-sort-by-alphabet:before { + content: "\e151" +} + +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152" +} + +.glyphicon-sort-by-order:before { + content: "\e153" +} + +.glyphicon-sort-by-order-alt:before { + content: "\e154" +} + +.glyphicon-sort-by-attributes:before { + content: "\e155" +} + +.glyphicon-sort-by-attributes-alt:before { + content: "\e156" +} + +.glyphicon-unchecked:before { + content: "\e157" +} + +.glyphicon-expand:before { + content: "\e158" +} + +.glyphicon-collapse-down:before { + content: "\e159" +} + +.glyphicon-collapse-up:before { + content: "\e160" +} + +.glyphicon-log-in:before { + content: "\e161" +} + +.glyphicon-flash:before { + content: "\e162" +} + +.glyphicon-log-out:before { + content: "\e163" +} + +.glyphicon-new-window:before { + content: "\e164" +} + +.glyphicon-record:before { + content: "\e165" +} + +.glyphicon-save:before { + content: "\e166" +} + +.glyphicon-open:before { + content: "\e167" +} + +.glyphicon-saved:before { + content: "\e168" +} + +.glyphicon-import:before { + content: "\e169" +} + +.glyphicon-export:before { + content: "\e170" +} + +.glyphicon-send:before { + content: "\e171" +} + +.glyphicon-floppy-disk:before { + content: "\e172" +} + +.glyphicon-floppy-saved:before { + content: "\e173" +} + +.glyphicon-floppy-remove:before { + content: "\e174" +} + +.glyphicon-floppy-save:before { + content: "\e175" +} + +.glyphicon-floppy-open:before { + content: "\e176" +} + +.glyphicon-credit-card:before { + content: "\e177" +} + +.glyphicon-transfer:before { + content: "\e178" +} + +.glyphicon-cutlery:before { + content: "\e179" +} + +.glyphicon-header:before { + content: "\e180" +} + +.glyphicon-compressed:before { + content: "\e181" +} + +.glyphicon-earphone:before { + content: "\e182" +} + +.glyphicon-phone-alt:before { + content: "\e183" +} + +.glyphicon-tower:before { + content: "\e184" +} + +.glyphicon-stats:before { + content: "\e185" +} + +.glyphicon-sd-video:before { + content: "\e186" +} + +.glyphicon-hd-video:before { + content: "\e187" +} + +.glyphicon-subtitles:before { + content: "\e188" +} + +.glyphicon-sound-stereo:before { + content: "\e189" +} + +.glyphicon-sound-dolby:before { + content: "\e190" +} + +.glyphicon-sound-5-1:before { + content: "\e191" +} + +.glyphicon-sound-6-1:before { + content: "\e192" +} + +.glyphicon-sound-7-1:before { + content: "\e193" +} + +.glyphicon-copyright-mark:before { + content: "\e194" +} + +.glyphicon-registration-mark:before { + content: "\e195" +} + +.glyphicon-cloud-download:before { + content: "\e197" +} + +.glyphicon-cloud-upload:before { + content: "\e198" +} + +.glyphicon-tree-conifer:before { + content: "\e199" +} + +.glyphicon-tree-deciduous:before { + content: "\e200" +} + +.glyphicon-cd:before { + content: "\e201" +} + +.glyphicon-save-file:before { + content: "\e202" +} + +.glyphicon-open-file:before { + content: "\e203" +} + +.glyphicon-level-up:before { + content: "\e204" +} + +.glyphicon-copy:before { + content: "\e205" +} + +.glyphicon-paste:before { + content: "\e206" +} + +.glyphicon-alert:before { + content: "\e209" +} + +.glyphicon-equalizer:before { + content: "\e210" +} + +.glyphicon-king:before { + content: "\e211" +} + +.glyphicon-queen:before { + content: "\e212" +} + +.glyphicon-pawn:before { + content: "\e213" +} + +.glyphicon-bishop:before { + content: "\e214" +} + +.glyphicon-knight:before { + content: "\e215" +} + +.glyphicon-baby-formula:before { + content: "\e216" +} + +.glyphicon-tent:before { + content: "\26fa" +} + +.glyphicon-blackboard:before { + content: "\e218" +} + +.glyphicon-bed:before { + content: "\e219" +} + +.glyphicon-apple:before { + content: "\f8ff" +} + +.glyphicon-erase:before { + content: "\e221" +} + +.glyphicon-hourglass:before { + content: "\231b" +} + +.glyphicon-lamp:before { + content: "\e223" +} + +.glyphicon-duplicate:before { + content: "\e224" +} + +.glyphicon-piggy-bank:before { + content: "\e225" +} + +.glyphicon-scissors:before { + content: "\e226" +} + +.glyphicon-bitcoin:before, .glyphicon-btc:before, .glyphicon-xbt:before { + content: "\e227" +} + +.glyphicon-jpy:before, .glyphicon-yen:before { + content: "\00a5" +} + +.glyphicon-rub:before, .glyphicon-ruble:before { + content: "\20bd" +} + +.glyphicon-scale:before { + content: "\e230" +} + +.glyphicon-ice-lolly:before { + content: "\e231" +} + +.glyphicon-ice-lolly-tasted:before { + content: "\e232" +} + +.glyphicon-education:before { + content: "\e233" +} + +.glyphicon-option-horizontal:before { + content: "\e234" +} + +.glyphicon-option-vertical:before { + content: "\e235" +} + +.glyphicon-menu-hamburger:before { + content: "\e236" +} + +.glyphicon-modal-window:before { + content: "\e237" +} + +.glyphicon-oil:before { + content: "\e238" +} + +.glyphicon-grain:before { + content: "\e239" +} + +.glyphicon-sunglasses:before { + content: "\e240" +} + +.glyphicon-text-size:before { + content: "\e241" +} + +.glyphicon-text-color:before { + content: "\e242" +} + +.glyphicon-text-background:before { + content: "\e243" +} + +.glyphicon-object-align-top:before { + content: "\e244" +} + +.glyphicon-object-align-bottom:before { + content: "\e245" +} + +.glyphicon-object-align-horizontal:before { + content: "\e246" +} + +.glyphicon-object-align-left:before { + content: "\e247" +} + +.glyphicon-object-align-vertical:before { + content: "\e248" +} + +.glyphicon-object-align-right:before { + content: "\e249" +} + +.glyphicon-triangle-right:before { + content: "\e250" +} + +.glyphicon-triangle-left:before { + content: "\e251" +} + +.glyphicon-triangle-bottom:before { + content: "\e252" +} + +.glyphicon-triangle-top:before { + content: "\e253" +} + +.glyphicon-console:before { + content: "\e254" +} + +.glyphicon-superscript:before { + content: "\e255" +} + +.glyphicon-subscript:before { + content: "\e256" +} + +.glyphicon-menu-left:before { + content: "\e257" +} + +.glyphicon-menu-right:before { + content: "\e258" +} + +.glyphicon-menu-down:before { + content: "\e259" +} + +.glyphicon-menu-up:before { + content: "\e260" +} + +*, :after, :before { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box +} + +html { + font-size: 10px; + -webkit-tap-highlight-color: transparent +} + + +button, input, select, textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit +} + +a { + background-color: transparent; + color: #337ab7; + text-decoration: none +} + + a:focus, a:hover { + color: #23527c; + text-decoration: underline + } + + a:focus { + outline: -webkit-focus-ring-color auto 5px; + outline-offset: -2px + } + +figure { + margin: 0 +} + +.carousel-inner > .item > a > img, .carousel-inner > .item > img, .img-responsive, .thumbnail a > img, .thumbnail > img { + display: block; + max-width: 100%; + height: auto +} + +.img-rounded { + border-radius: 6px +} + +.img-thumbnail { + padding: 4px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: .2s ease-in-out; + -o-transition: .2s ease-in-out; + transition: .2s ease-in-out; + display: inline-block; + max-width: 100%; + height: auto +} + +.img-circle { + border-radius: 50% +} + +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0,0,0,0); + border: 0 +} + +.sr-only-focusable:active, .sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto +} + +[role=button] { + cursor: pointer +} + +.h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit +} + + .h1 .small, .h1 small, .h2 .small, .h2 small, .h3 .small, .h3 small, .h4 .small, .h4 small, .h5 .small, .h5 small, .h6 .small, .h6 small, h1 .small, h1 small, h2 .small, h2 small, h3 .small, h3 small, h4 .small, h4 small, h5 .small, h5 small, h6 .small, h6 small { + font-weight: 400; + line-height: 1; + color: #777 + } + +.h1, .h2, .h3, h1, h2, h3 { + margin-top: 20px; + margin-bottom: 10px +} + + .h1 .small, .h1 small, .h2 .small, .h2 small, .h3 .small, .h3 small, h1 .small, h1 small, h2 .small, h2 small, h3 .small, h3 small { + font-size: 65% + } + +.h4, .h5, .h6, h4, h5, h6 { + margin-top: 10px; + margin-bottom: 10px +} + + .h4 .small, .h4 small, .h5 .small, .h5 small, .h6 .small, .h6 small, h4 .small, h4 small, h5 .small, h5 small, h6 .small, h6 small { + font-size: 75% + } + +.h1, h1 { + font-size: 36px +} + +.h2, h2 { + font-size: 30px +} + +.h3, h3 { + font-size: 24px +} + +.h4, h4 { + font-size: 18px +} + +.h5, h5 { + font-size: 14px +} + +.h6, h6 { + font-size: 12px +} + +p { + margin: 0 0 10px +} + +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4 +} + +@media (min-width:768px) { + .lead { + font-size: 21px + } + + .dl-horizontal dt { + float: left; + width: 160px; + clear: left; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap + } + + .dl-horizontal dd { + margin-left: 180px + } +} + +.small, small { + font-size: 85% +} + +.mark, mark { + padding: .2em; + background-color: #fcf8e3 +} + +.text-left { + text-align: left +} + +.text-right { + text-align: right +} + +.text-center { + text-align: center +} + +.text-justify { + text-align: justify +} + +.text-nowrap { + white-space: nowrap +} + +.text-lowercase { + text-transform: lowercase +} + +.text-uppercase { + text-transform: uppercase +} + +.text-capitalize { + text-transform: capitalize +} + +.text-muted { + color: #777 +} + +.text-primary { + color: #337ab7 +} + +a.text-primary:focus, a.text-primary:hover { + color: #286090 +} + +.text-success { + color: #3c763d +} + +a.text-success:focus, a.text-success:hover { + color: #2b542c +} + +.text-info { + color: #31708f +} + +a.text-info:focus, a.text-info:hover { + color: #245269 +} + +.text-warning { + color: #8a6d3b +} + +a.text-warning:focus, a.text-warning:hover { + color: #66512c +} + +.text-danger { + color: #a94442 +} + +a.text-danger:focus, a.text-danger:hover { + color: #843534 +} + +.bg-primary { + color: #fff; + background-color: #337ab7 +} + +a.bg-primary:focus, a.bg-primary:hover { + background-color: #286090 +} + +.bg-success { + background-color: #dff0d8 +} + +a.bg-success:focus, a.bg-success:hover { + background-color: #c1e2b3 +} + +.bg-info { + background-color: #d9edf7 +} + +a.bg-info:focus, a.bg-info:hover { + background-color: #afd9ee +} + +.bg-warning { + background-color: #fcf8e3 +} + +a.bg-warning:focus, a.bg-warning:hover { + background-color: #f7ecb5 +} + +.bg-danger { + background-color: #f2dede +} + +a.bg-danger:focus, a.bg-danger:hover { + background-color: #e4b9b9 +} + +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eee +} + +ol, ul { + margin-top: 0; + margin-bottom: 10px +} + + ol ol, ol ul, ul ol, ul ul { + margin-bottom: 0 + } + +.list-unstyled { + padding-left: 0; + list-style: none +} + +.list-inline { + padding-left: 0; + list-style: none; + margin-left: -5px +} + + .list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px + } + +dl { + margin-top: 0; + margin-bottom: 20px +} + +dd, dt { + line-height: 1.42857143 +} + +dt { + font-weight: 700 +} + +dd { + margin-left: 0 +} + +abbr[data-original-title], abbr[title] { + cursor: help +} + +.initialism { + font-size: 90%; + text-transform: uppercase +} + +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eee +} + + blockquote ol:last-child, blockquote p:last-child, blockquote ul:last-child { + margin-bottom: 0 + } + + blockquote .small, blockquote footer, blockquote small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #777 + } + + blockquote .small:before, blockquote footer:before, blockquote small:before { + content: "\2014 \00A0" + } + + .blockquote-reverse, blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + text-align: right; + border-right: 5px solid #eee; + border-left: 0 + } + + .blockquote-reverse .small:before, .blockquote-reverse footer:before, .blockquote-reverse small:before, blockquote.pull-right .small:before, blockquote.pull-right footer:before, blockquote.pull-right small:before { + content: "" + } + + .blockquote-reverse .small:after, .blockquote-reverse footer:after, .blockquote-reverse small:after, blockquote.pull-right .small:after, blockquote.pull-right footer:after, blockquote.pull-right small:after { + content: "\00A0 \2014" + } + +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143 +} + +code, kbd, pre, samp { + font-family: Menlo,Monaco,Consolas,"Courier New",monospace +} + +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px +} + +kbd { + padding: 2px 4px; + font-size: 90%; + color: #fff; + background-color: #333; + border-radius: 3px; + -webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,.25); + box-shadow: inset 0 -1px 0 rgba(0,0,0,.25) +} + + kbd kbd { + padding: 0; + font-size: 100%; + font-weight: 700; + -webkit-box-shadow: none; + box-shadow: none + } + +pre { + overflow: auto; + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px +} + + pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0 + } + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll +} + +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto +} + +@media (min-width:768px) { + .container { + width: 750px + } +} + +@media (min-width:992px) { + .container { + width: 970px + } +} + +@media (min-width:1200px) { + .container { + width: 1170px + } +} + +.container-fluid { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto +} + +.row { + margin-right: -15px; + margin-left: -15px +} + +.row-no-gutters { + margin-right: 0; + margin-left: 0 +} + + .row-no-gutters [class*=col-] { + padding-right: 0; + padding-left: 0 + } + +.col-lg-1, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-md-1, .col-md-10, .col-md-11, .col-md-12, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-sm-1, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-xs-1, .col-xs-10, .col-xs-11, .col-xs-12, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px +} + +.col-xs-1, .col-xs-10, .col-xs-11, .col-xs-12, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9 { + float: left +} + +.col-xs-12 { + width: 100% +} + +.col-xs-11 { + width: 91.66666667% +} + +.col-xs-10 { + width: 83.33333333% +} + +.col-xs-9 { + width: 75% +} + +.col-xs-8 { + width: 66.66666667% +} + +.col-xs-7 { + width: 58.33333333% +} + +.col-xs-6 { + width: 50% +} + +.col-xs-5 { + width: 41.66666667% +} + +.col-xs-4 { + width: 33.33333333% +} + +.col-xs-3 { + width: 25% +} + +.col-xs-2 { + width: 16.66666667% +} + +.col-xs-1 { + width: 8.33333333% +} + +.col-xs-pull-12 { + right: 100% +} + +.col-xs-pull-11 { + right: 91.66666667% +} + +.col-xs-pull-10 { + right: 83.33333333% +} + +.col-xs-pull-9 { + right: 75% +} + +.col-xs-pull-8 { + right: 66.66666667% +} + +.col-xs-pull-7 { + right: 58.33333333% +} + +.col-xs-pull-6 { + right: 50% +} + +.col-xs-pull-5 { + right: 41.66666667% +} + +.col-xs-pull-4 { + right: 33.33333333% +} + +.col-xs-pull-3 { + right: 25% +} + +.col-xs-pull-2 { + right: 16.66666667% +} + +.col-xs-pull-1 { + right: 8.33333333% +} + +.col-xs-pull-0 { + right: auto +} + +.col-xs-push-12 { + left: 100% +} + +.col-xs-push-11 { + left: 91.66666667% +} + +.col-xs-push-10 { + left: 83.33333333% +} + +.col-xs-push-9 { + left: 75% +} + +.col-xs-push-8 { + left: 66.66666667% +} + +.col-xs-push-7 { + left: 58.33333333% +} + +.col-xs-push-6 { + left: 50% +} + +.col-xs-push-5 { + left: 41.66666667% +} + +.col-xs-push-4 { + left: 33.33333333% +} + +.col-xs-push-3 { + left: 25% +} + +.col-xs-push-2 { + left: 16.66666667% +} + +.col-xs-push-1 { + left: 8.33333333% +} + +.col-xs-push-0 { + left: auto +} + +.col-xs-offset-12 { + margin-left: 100% +} + +.col-xs-offset-11 { + margin-left: 91.66666667% +} + +.col-xs-offset-10 { + margin-left: 83.33333333% +} + +.col-xs-offset-9 { + margin-left: 75% +} + +.col-xs-offset-8 { + margin-left: 66.66666667% +} + +.col-xs-offset-7 { + margin-left: 58.33333333% +} + +.col-xs-offset-6 { + margin-left: 50% +} + +.col-xs-offset-5 { + margin-left: 41.66666667% +} + +.col-xs-offset-4 { + margin-left: 33.33333333% +} + +.col-xs-offset-3 { + margin-left: 25% +} + +.col-xs-offset-2 { + margin-left: 16.66666667% +} + +.col-xs-offset-1 { + margin-left: 8.33333333% +} + +.col-xs-offset-0 { + margin-left: 0 +} + +@media (min-width:768px) { + .col-sm-1, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9 { + float: left + } + + .col-sm-12 { + width: 100% + } + + .col-sm-11 { + width: 91.66666667% + } + + .col-sm-10 { + width: 83.33333333% + } + + .col-sm-9 { + width: 75% + } + + .col-sm-8 { + width: 66.66666667% + } + + .col-sm-7 { + width: 58.33333333% + } + + .col-sm-6 { + width: 50% + } + + .col-sm-5 { + width: 41.66666667% + } + + .col-sm-4 { + width: 33.33333333% + } + + .col-sm-3 { + width: 25% + } + + .col-sm-2 { + width: 16.66666667% + } + + .col-sm-1 { + width: 8.33333333% + } + + .col-sm-pull-12 { + right: 100% + } + + .col-sm-pull-11 { + right: 91.66666667% + } + + .col-sm-pull-10 { + right: 83.33333333% + } + + .col-sm-pull-9 { + right: 75% + } + + .col-sm-pull-8 { + right: 66.66666667% + } + + .col-sm-pull-7 { + right: 58.33333333% + } + + .col-sm-pull-6 { + right: 50% + } + + .col-sm-pull-5 { + right: 41.66666667% + } + + .col-sm-pull-4 { + right: 33.33333333% + } + + .col-sm-pull-3 { + right: 25% + } + + .col-sm-pull-2 { + right: 16.66666667% + } + + .col-sm-pull-1 { + right: 8.33333333% + } + + .col-sm-pull-0 { + right: auto + } + + .col-sm-push-12 { + left: 100% + } + + .col-sm-push-11 { + left: 91.66666667% + } + + .col-sm-push-10 { + left: 83.33333333% + } + + .col-sm-push-9 { + left: 75% + } + + .col-sm-push-8 { + left: 66.66666667% + } + + .col-sm-push-7 { + left: 58.33333333% + } + + .col-sm-push-6 { + left: 50% + } + + .col-sm-push-5 { + left: 41.66666667% + } + + .col-sm-push-4 { + left: 33.33333333% + } + + .col-sm-push-3 { + left: 25% + } + + .col-sm-push-2 { + left: 16.66666667% + } + + .col-sm-push-1 { + left: 8.33333333% + } + + .col-sm-push-0 { + left: auto + } + + .col-sm-offset-12 { + margin-left: 100% + } + + .col-sm-offset-11 { + margin-left: 91.66666667% + } + + .col-sm-offset-10 { + margin-left: 83.33333333% + } + + .col-sm-offset-9 { + margin-left: 75% + } + + .col-sm-offset-8 { + margin-left: 66.66666667% + } + + .col-sm-offset-7 { + margin-left: 58.33333333% + } + + .col-sm-offset-6 { + margin-left: 50% + } + + .col-sm-offset-5 { + margin-left: 41.66666667% + } + + .col-sm-offset-4 { + margin-left: 33.33333333% + } + + .col-sm-offset-3 { + margin-left: 25% + } + + .col-sm-offset-2 { + margin-left: 16.66666667% + } + + .col-sm-offset-1 { + margin-left: 8.33333333% + } + + .col-sm-offset-0 { + margin-left: 0 + } +} + +@media (min-width:992px) { + .col-md-1, .col-md-10, .col-md-11, .col-md-12, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9 { + float: left + } + + .col-md-12 { + width: 100% + } + + .col-md-11 { + width: 91.66666667% + } + + .col-md-10 { + width: 83.33333333% + } + + .col-md-9 { + width: 75% + } + + .col-md-8 { + width: 66.66666667% + } + + .col-md-7 { + width: 58.33333333% + } + + .col-md-6 { + width: 50% + } + + .col-md-5 { + width: 41.66666667% + } + + .col-md-4 { + width: 33.33333333% + } + + .col-md-3 { + width: 25% + } + + .col-md-2 { + width: 16.66666667% + } + + .col-md-1 { + width: 8.33333333% + } + + .col-md-pull-12 { + right: 100% + } + + .col-md-pull-11 { + right: 91.66666667% + } + + .col-md-pull-10 { + right: 83.33333333% + } + + .col-md-pull-9 { + right: 75% + } + + .col-md-pull-8 { + right: 66.66666667% + } + + .col-md-pull-7 { + right: 58.33333333% + } + + .col-md-pull-6 { + right: 50% + } + + .col-md-pull-5 { + right: 41.66666667% + } + + .col-md-pull-4 { + right: 33.33333333% + } + + .col-md-pull-3 { + right: 25% + } + + .col-md-pull-2 { + right: 16.66666667% + } + + .col-md-pull-1 { + right: 8.33333333% + } + + .col-md-pull-0 { + right: auto + } + + .col-md-push-12 { + left: 100% + } + + .col-md-push-11 { + left: 91.66666667% + } + + .col-md-push-10 { + left: 83.33333333% + } + + .col-md-push-9 { + left: 75% + } + + .col-md-push-8 { + left: 66.66666667% + } + + .col-md-push-7 { + left: 58.33333333% + } + + .col-md-push-6 { + left: 50% + } + + .col-md-push-5 { + left: 41.66666667% + } + + .col-md-push-4 { + left: 33.33333333% + } + + .col-md-push-3 { + left: 25% + } + + .col-md-push-2 { + left: 16.66666667% + } + + .col-md-push-1 { + left: 8.33333333% + } + + .col-md-push-0 { + left: auto + } + + .col-md-offset-12 { + margin-left: 100% + } + + .col-md-offset-11 { + margin-left: 91.66666667% + } + + .col-md-offset-10 { + margin-left: 83.33333333% + } + + .col-md-offset-9 { + margin-left: 75% + } + + .col-md-offset-8 { + margin-left: 66.66666667% + } + + .col-md-offset-7 { + margin-left: 58.33333333% + } + + .col-md-offset-6 { + margin-left: 50% + } + + .col-md-offset-5 { + margin-left: 41.66666667% + } + + .col-md-offset-4 { + margin-left: 33.33333333% + } + + .col-md-offset-3 { + margin-left: 25% + } + + .col-md-offset-2 { + margin-left: 16.66666667% + } + + .col-md-offset-1 { + margin-left: 8.33333333% + } + + .col-md-offset-0 { + margin-left: 0 + } +} + +@media (min-width:1200px) { + .col-lg-1, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9 { + float: left + } + + .col-lg-12 { + width: 100% + } + + .col-lg-11 { + width: 91.66666667% + } + + .col-lg-10 { + width: 83.33333333% + } + + .col-lg-9 { + width: 75% + } + + .col-lg-8 { + width: 66.66666667% + } + + .col-lg-7 { + width: 58.33333333% + } + + .col-lg-6 { + width: 50% + } + + .col-lg-5 { + width: 41.66666667% + } + + .col-lg-4 { + width: 33.33333333% + } + + .col-lg-3 { + width: 25% + } + + .col-lg-2 { + width: 16.66666667% + } + + .col-lg-1 { + width: 8.33333333% + } + + .col-lg-pull-12 { + right: 100% + } + + .col-lg-pull-11 { + right: 91.66666667% + } + + .col-lg-pull-10 { + right: 83.33333333% + } + + .col-lg-pull-9 { + right: 75% + } + + .col-lg-pull-8 { + right: 66.66666667% + } + + .col-lg-pull-7 { + right: 58.33333333% + } + + .col-lg-pull-6 { + right: 50% + } + + .col-lg-pull-5 { + right: 41.66666667% + } + + .col-lg-pull-4 { + right: 33.33333333% + } + + .col-lg-pull-3 { + right: 25% + } + + .col-lg-pull-2 { + right: 16.66666667% + } + + .col-lg-pull-1 { + right: 8.33333333% + } + + .col-lg-pull-0 { + right: auto + } + + .col-lg-push-12 { + left: 100% + } + + .col-lg-push-11 { + left: 91.66666667% + } + + .col-lg-push-10 { + left: 83.33333333% + } + + .col-lg-push-9 { + left: 75% + } + + .col-lg-push-8 { + left: 66.66666667% + } + + .col-lg-push-7 { + left: 58.33333333% + } + + .col-lg-push-6 { + left: 50% + } + + .col-lg-push-5 { + left: 41.66666667% + } + + .col-lg-push-4 { + left: 33.33333333% + } + + .col-lg-push-3 { + left: 25% + } + + .col-lg-push-2 { + left: 16.66666667% + } + + .col-lg-push-1 { + left: 8.33333333% + } + + .col-lg-push-0 { + left: auto + } + + .col-lg-offset-12 { + margin-left: 100% + } + + .col-lg-offset-11 { + margin-left: 91.66666667% + } + + .col-lg-offset-10 { + margin-left: 83.33333333% + } + + .col-lg-offset-9 { + margin-left: 75% + } + + .col-lg-offset-8 { + margin-left: 66.66666667% + } + + .col-lg-offset-7 { + margin-left: 58.33333333% + } + + .col-lg-offset-6 { + margin-left: 50% + } + + .col-lg-offset-5 { + margin-left: 41.66666667% + } + + .col-lg-offset-4 { + margin-left: 33.33333333% + } + + .col-lg-offset-3 { + margin-left: 25% + } + + .col-lg-offset-2 { + margin-left: 16.66666667% + } + + .col-lg-offset-1 { + margin-left: 8.33333333% + } + + .col-lg-offset-0 { + margin-left: 0 + } +} + +table { + border-collapse: collapse; + border-spacing: 0; + background-color: transparent +} + + table col[class*=col-] { + position: static; + display: table-column; + float: none + } + + table td[class*=col-], table th[class*=col-] { + position: static; + display: table-cell; + float: none + } + +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #777; + text-align: left +} + +th { + text-align: left +} + +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px +} + + .table > tbody > tr > td, .table > tbody > tr > th, .table > tfoot > tr > td, .table > tfoot > tr > th, .table > thead > tr > td, .table > thead > tr > th { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd + } + + .table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd + } + + .table > caption + thead > tr:first-child > td, .table > caption + thead > tr:first-child > th, .table > colgroup + thead > tr:first-child > td, .table > colgroup + thead > tr:first-child > th, .table > thead:first-child > tr:first-child > td, .table > thead:first-child > tr:first-child > th { + border-top: 0 + } + + .table > tbody + tbody { + border-top: 2px solid #ddd + } + + .table .table { + background-color: #fff + } + +.table-condensed > tbody > tr > td, .table-condensed > tbody > tr > th, .table-condensed > tfoot > tr > td, .table-condensed > tfoot > tr > th, .table-condensed > thead > tr > td, .table-condensed > thead > tr > th { + padding: 5px +} + +.table-bordered, .table-bordered > tbody > tr > td, .table-bordered > tbody > tr > th, .table-bordered > tfoot > tr > td, .table-bordered > tfoot > tr > th, .table-bordered > thead > tr > td, .table-bordered > thead > tr > th { + border: 1px solid #ddd +} + + .table-bordered > thead > tr > td, .table-bordered > thead > tr > th { + border-bottom-width: 2px + } + +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: #f9f9f9 +} + +.table-hover > tbody > tr:hover, .table > tbody > tr.active > td, .table > tbody > tr.active > th, .table > tbody > tr > td.active, .table > tbody > tr > th.active, .table > tfoot > tr.active > td, .table > tfoot > tr.active > th, .table > tfoot > tr > td.active, .table > tfoot > tr > th.active, .table > thead > tr.active > td, .table > thead > tr.active > th, .table > thead > tr > td.active, .table > thead > tr > th.active { + background-color: #f5f5f5 +} + + .table-hover > tbody > tr.active:hover > td, .table-hover > tbody > tr.active:hover > th, .table-hover > tbody > tr:hover > .active, .table-hover > tbody > tr > td.active:hover, .table-hover > tbody > tr > th.active:hover { + background-color: #e8e8e8 + } + +.table > tbody > tr.success > td, .table > tbody > tr.success > th, .table > tbody > tr > td.success, .table > tbody > tr > th.success, .table > tfoot > tr.success > td, .table > tfoot > tr.success > th, .table > tfoot > tr > td.success, .table > tfoot > tr > th.success, .table > thead > tr.success > td, .table > thead > tr.success > th, .table > thead > tr > td.success, .table > thead > tr > th.success { + background-color: #dff0d8 +} + +.table-hover > tbody > tr.success:hover > td, .table-hover > tbody > tr.success:hover > th, .table-hover > tbody > tr:hover > .success, .table-hover > tbody > tr > td.success:hover, .table-hover > tbody > tr > th.success:hover { + background-color: #d0e9c6 +} + +.table > tbody > tr.info > td, .table > tbody > tr.info > th, .table > tbody > tr > td.info, .table > tbody > tr > th.info, .table > tfoot > tr.info > td, .table > tfoot > tr.info > th, .table > tfoot > tr > td.info, .table > tfoot > tr > th.info, .table > thead > tr.info > td, .table > thead > tr.info > th, .table > thead > tr > td.info, .table > thead > tr > th.info { + background-color: #d9edf7 +} + +.table-hover > tbody > tr.info:hover > td, .table-hover > tbody > tr.info:hover > th, .table-hover > tbody > tr:hover > .info, .table-hover > tbody > tr > td.info:hover, .table-hover > tbody > tr > th.info:hover { + background-color: #c4e3f3 +} + +.table > tbody > tr.warning > td, .table > tbody > tr.warning > th, .table > tbody > tr > td.warning, .table > tbody > tr > th.warning, .table > tfoot > tr.warning > td, .table > tfoot > tr.warning > th, .table > tfoot > tr > td.warning, .table > tfoot > tr > th.warning, .table > thead > tr.warning > td, .table > thead > tr.warning > th, .table > thead > tr > td.warning, .table > thead > tr > th.warning { + background-color: #fcf8e3 +} + +.table-hover > tbody > tr.warning:hover > td, .table-hover > tbody > tr.warning:hover > th, .table-hover > tbody > tr:hover > .warning, .table-hover > tbody > tr > td.warning:hover, .table-hover > tbody > tr > th.warning:hover { + background-color: #faf2cc +} + +.table > tbody > tr.danger > td, .table > tbody > tr.danger > th, .table > tbody > tr > td.danger, .table > tbody > tr > th.danger, .table > tfoot > tr.danger > td, .table > tfoot > tr.danger > th, .table > tfoot > tr > td.danger, .table > tfoot > tr > th.danger, .table > thead > tr.danger > td, .table > thead > tr.danger > th, .table > thead > tr > td.danger, .table > thead > tr > th.danger { + background-color: #f2dede +} + +.table-hover > tbody > tr.danger:hover > td, .table-hover > tbody > tr.danger:hover > th, .table-hover > tbody > tr:hover > .danger, .table-hover > tbody > tr > td.danger:hover, .table-hover > tbody > tr > th.danger:hover { + background-color: #ebcccc +} + +.table-responsive { + min-height: .01%; + overflow-x: auto +} + +@media screen and (max-width:767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #ddd + } + + .table-responsive > .table { + margin-bottom: 0 + } + + .table-responsive > .table > tbody > tr > td, .table-responsive > .table > tbody > tr > th, .table-responsive > .table > tfoot > tr > td, .table-responsive > .table > tfoot > tr > th, .table-responsive > .table > thead > tr > td, .table-responsive > .table > thead > tr > th { + white-space: nowrap + } + + .table-responsive > .table-bordered { + border: 0 + } + + .table-responsive > .table-bordered > tbody > tr > td:first-child, .table-responsive > .table-bordered > tbody > tr > th:first-child, .table-responsive > .table-bordered > tfoot > tr > td:first-child, .table-responsive > .table-bordered > tfoot > tr > th:first-child, .table-responsive > .table-bordered > thead > tr > td:first-child, .table-responsive > .table-bordered > thead > tr > th:first-child { + border-left: 0 + } + + .table-responsive > .table-bordered > tbody > tr > td:last-child, .table-responsive > .table-bordered > tbody > tr > th:last-child, .table-responsive > .table-bordered > tfoot > tr > td:last-child, .table-responsive > .table-bordered > tfoot > tr > th:last-child, .table-responsive > .table-bordered > thead > tr > td:last-child, .table-responsive > .table-bordered > thead > tr > th:last-child { + border-right: 0 + } + + .table-responsive > .table-bordered > tbody > tr:last-child > td, .table-responsive > .table-bordered > tbody > tr:last-child > th, .table-responsive > .table-bordered > tfoot > tr:last-child > td, .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0 + } +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0 +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333; + border: 0; + border-bottom: 1px solid #e5e5e5 +} + +label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: 700 +} + +input[type=search] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none +} + +input[type=checkbox], input[type=radio] { + margin: 4px 0 0; + line-height: normal +} + + fieldset[disabled] input[type=checkbox], fieldset[disabled] input[type=radio], input[type=checkbox].disabled, input[type=checkbox][disabled], input[type=radio].disabled, input[type=radio][disabled] { + cursor: not-allowed + } + +input[type=file] { + display: block +} + +input[type=range] { + display: block; + width: 100% +} + +select[multiple], select[size] { + height: auto +} + +input[type=checkbox]:focus, input[type=file]:focus, input[type=radio]:focus { + outline: -webkit-focus-ring-color auto 5px; + outline-offset: -2px +} + +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857143; + color: #555 +} + +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + -webkit-transition: border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out; + -o-transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out; + transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out +} + + .form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6) + } + + .form-control::-moz-placeholder { + color: #999; + opacity: 1 + } + + .form-control:-ms-input-placeholder { + color: #999 + } + + .form-control::-webkit-input-placeholder { + color: #999 + } + + .form-control::-ms-expand { + background-color: transparent; + border: 0 + } + + .form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control { + background-color: #eee; + opacity: 1 + } + + .form-control[disabled], fieldset[disabled] .form-control { + cursor: not-allowed + } + +textarea.form-control { + height: auto +} + +@media screen and (-webkit-min-device-pixel-ratio:0) { + input[type=date].form-control, input[type=datetime-local].form-control, input[type=month].form-control, input[type=time].form-control { + line-height: 34px + } + + .input-group-sm input[type=date], .input-group-sm input[type=datetime-local], .input-group-sm input[type=month], .input-group-sm input[type=time], input[type=date].input-sm, input[type=datetime-local].input-sm, input[type=month].input-sm, input[type=time].input-sm { + line-height: 30px + } + + .input-group-lg input[type=date], .input-group-lg input[type=datetime-local], .input-group-lg input[type=month], .input-group-lg input[type=time], input[type=date].input-lg, input[type=datetime-local].input-lg, input[type=month].input-lg, input[type=time].input-lg { + line-height: 46px + } +} + +.form-group { + margin-bottom: 15px +} + +.checkbox, .radio { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px +} + + .checkbox.disabled label, .radio.disabled label, fieldset[disabled] .checkbox label, fieldset[disabled] .radio label { + cursor: not-allowed + } + + .checkbox label, .radio label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: 400; + cursor: pointer + } + + .checkbox input[type=checkbox], .checkbox-inline input[type=checkbox], .radio input[type=radio], .radio-inline input[type=radio] { + position: absolute; + margin-left: -20px + } + + .checkbox + .checkbox, .radio + .radio { + margin-top: -5px + } + +.checkbox-inline, .radio-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: 400; + vertical-align: middle; + cursor: pointer +} + + .checkbox-inline.disabled, .radio-inline.disabled, fieldset[disabled] .checkbox-inline, fieldset[disabled] .radio-inline { + cursor: not-allowed + } + + .checkbox-inline + .checkbox-inline, .radio-inline + .radio-inline { + margin-top: 0; + margin-left: 10px + } + +.form-control-static { + min-height: 34px; + padding-top: 7px; + padding-bottom: 7px; + margin-bottom: 0 +} + + .form-control-static.input-lg, .form-control-static.input-sm { + padding-right: 0; + padding-left: 0 + } + +.input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px +} + +select.input-sm { + height: 30px; + line-height: 30px +} + +select[multiple].input-sm, textarea.input-sm { + height: auto +} + +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px +} + +.form-group-sm select.form-control { + height: 30px; + line-height: 30px +} + +.form-group-sm select[multiple].form-control, .form-group-sm textarea.form-control { + height: auto +} + +.form-group-sm .form-control-static { + height: 30px; + min-height: 32px; + padding: 6px 10px; + font-size: 12px; + line-height: 1.5 +} + +.input-lg { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px +} + +select.input-lg { + height: 46px; + line-height: 46px +} + +select[multiple].input-lg, textarea.input-lg { + height: auto +} + +.form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px +} + +.form-group-lg select.form-control { + height: 46px; + line-height: 46px +} + +.form-group-lg select[multiple].form-control, .form-group-lg textarea.form-control { + height: auto +} + +.form-group-lg .form-control-static { + height: 46px; + min-height: 38px; + padding: 11px 16px; + font-size: 18px; + line-height: 1.3333333 +} + +.has-feedback { + position: relative +} + + .has-feedback .form-control { + padding-right: 42.5px + } + +.form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; + pointer-events: none +} + +.form-group-lg .form-control + .form-control-feedback, .input-group-lg + .form-control-feedback, .input-lg + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px +} + +.form-group-sm .form-control + .form-control-feedback, .input-group-sm + .form-control-feedback, .input-sm + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px +} + +.has-success .checkbox, .has-success .checkbox-inline, .has-success .control-label, .has-success .help-block, .has-success .radio, .has-success .radio-inline, .has-success.checkbox label, .has-success.checkbox-inline label, .has-success.radio label, .has-success.radio-inline label { + color: #3c763d +} + +.has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075) +} + + .has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168 + } + +.has-success .input-group-addon { + color: #3c763d; + background-color: #dff0d8; + border-color: #3c763d +} + +.has-success .form-control-feedback { + color: #3c763d +} + +.has-warning .checkbox, .has-warning .checkbox-inline, .has-warning .control-label, .has-warning .help-block, .has-warning .radio, .has-warning .radio-inline, .has-warning.checkbox label, .has-warning.checkbox-inline label, .has-warning.radio label, .has-warning.radio-inline label { + color: #8a6d3b +} + +.has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075) +} + + .has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b + } + +.has-warning .input-group-addon { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #8a6d3b +} + +.has-warning .form-control-feedback { + color: #8a6d3b +} + +.has-error .checkbox, .has-error .checkbox-inline, .has-error .control-label, .has-error .help-block, .has-error .radio, .has-error .radio-inline, .has-error.checkbox label, .has-error.checkbox-inline label, .has-error.radio label, .has-error.radio-inline label { + color: #a94442 +} + +.has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075) +} + + .has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483 + } + +.has-error .input-group-addon { + color: #a94442; + background-color: #f2dede; + border-color: #a94442 +} + +.has-error .form-control-feedback { + color: #a94442 +} + +.has-feedback label ~ .form-control-feedback { + top: 25px +} + +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0 +} + +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373 +} + +.form-horizontal .checkbox, .form-horizontal .checkbox-inline, .form-horizontal .radio, .form-horizontal .radio-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0 +} + +.form-horizontal .checkbox, .form-horizontal .radio { + min-height: 27px +} + +.form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px +} + +.form-horizontal .has-feedback .form-control-feedback { + right: 15px +} + +@media (min-width:768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle + } + + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle + } + + .form-inline .form-control-static { + display: inline-block + } + + .form-inline .input-group { + display: inline-table; + vertical-align: middle + } + + .form-inline .input-group .form-control, .form-inline .input-group .input-group-addon, .form-inline .input-group .input-group-btn { + width: auto + } + + .form-inline .input-group > .form-control { + width: 100% + } + + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle + } + + .form-inline .checkbox, .form-inline .radio { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle + } + + .form-inline .checkbox label, .form-inline .radio label { + padding-left: 0 + } + + .form-inline .checkbox input[type=checkbox], .form-inline .radio input[type=radio] { + position: relative; + margin-left: 0 + } + + .form-inline .has-feedback .form-control-feedback { + top: 0 + } + + .form-horizontal .control-label { + padding-top: 7px; + margin-bottom: 0; + text-align: right + } + + .form-horizontal .form-group-lg .control-label { + padding-top: 11px; + font-size: 18px + } + + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + font-size: 12px + } +} + +.btn { + display: inline-block; + margin-bottom: 0; + font-weight: 400; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + border-radius: 4px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + + .btn.active.focus, .btn.active:focus, .btn.focus, .btn:active.focus, .btn:active:focus, .btn:focus { + outline: -webkit-focus-ring-color auto 5px; + outline-offset: -2px + } + + .btn.focus, .btn:focus, .btn:hover { + color: #333; + text-decoration: none + } + + .btn.active, .btn:active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0,0,0,.125); + box-shadow: inset 0 3px 5px rgba(0,0,0,.125) + } + + .btn.disabled, .btn[disabled], fieldset[disabled] .btn { + cursor: not-allowed; + opacity: .65; + -webkit-box-shadow: none; + box-shadow: none + } + +a.btn.disabled, fieldset[disabled] a.btn { + pointer-events: none +} + +.btn-default { + color: #333; + background-color: #fff; + border-color: #ccc +} + + .btn-default.focus, .btn-default:focus { + color: #333; + background-color: #e6e6e6; + border-color: #8c8c8c + } + + .btn-default:hover { + color: #333; + background-color: #e6e6e6; + border-color: #adadad + } + + .btn-default.active, .btn-default:active, .open > .dropdown-toggle.btn-default { + color: #333; + background-color: #e6e6e6; + background-image: none; + border-color: #adadad + } + + .btn-default.active.focus, .btn-default.active:focus, .btn-default.active:hover, .btn-default:active.focus, .btn-default:active:focus, .btn-default:active:hover, .open > .dropdown-toggle.btn-default.focus, .open > .dropdown-toggle.btn-default:focus, .open > .dropdown-toggle.btn-default:hover { + color: #333; + background-color: #d4d4d4; + border-color: #8c8c8c + } + + .btn-default.disabled.focus, .btn-default.disabled:focus, .btn-default.disabled:hover, .btn-default[disabled].focus, .btn-default[disabled]:focus, .btn-default[disabled]:hover, fieldset[disabled] .btn-default.focus, fieldset[disabled] .btn-default:focus, fieldset[disabled] .btn-default:hover { + background-color: #fff; + border-color: #ccc + } + + .btn-default .badge { + color: #fff; + background-color: #333 + } + +.btn-primary { + color: #fff; + background-color: #337ab7; + border-color: #2e6da4 +} + + .btn-primary.focus, .btn-primary:focus { + color: #fff; + background-color: #286090; + border-color: #122b40 + } + + .btn-primary:hover { + color: #fff; + background-color: #286090; + border-color: #204d74 + } + + .btn-primary.active, .btn-primary:active, .open > .dropdown-toggle.btn-primary { + color: #fff; + background-color: #286090; + background-image: none; + border-color: #204d74 + } + + .btn-primary.active.focus, .btn-primary.active:focus, .btn-primary.active:hover, .btn-primary:active.focus, .btn-primary:active:focus, .btn-primary:active:hover, .open > .dropdown-toggle.btn-primary.focus, .open > .dropdown-toggle.btn-primary:focus, .open > .dropdown-toggle.btn-primary:hover { + color: #fff; + background-color: #204d74; + border-color: #122b40 + } + + .btn-primary.disabled.focus, .btn-primary.disabled:focus, .btn-primary.disabled:hover, .btn-primary[disabled].focus, .btn-primary[disabled]:focus, .btn-primary[disabled]:hover, fieldset[disabled] .btn-primary.focus, fieldset[disabled] .btn-primary:focus, fieldset[disabled] .btn-primary:hover { + background-color: #337ab7; + border-color: #2e6da4 + } + + .btn-primary .badge { + color: #337ab7; + background-color: #fff + } + +.btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c +} + + .btn-success.focus, .btn-success:focus { + color: #fff; + background-color: #449d44; + border-color: #255625 + } + + .btn-success:hover { + color: #fff; + background-color: #449d44; + border-color: #398439 + } + + .btn-success.active, .btn-success:active, .open > .dropdown-toggle.btn-success { + color: #fff; + background-color: #449d44; + background-image: none; + border-color: #398439 + } + + .btn-success.active.focus, .btn-success.active:focus, .btn-success.active:hover, .btn-success:active.focus, .btn-success:active:focus, .btn-success:active:hover, .open > .dropdown-toggle.btn-success.focus, .open > .dropdown-toggle.btn-success:focus, .open > .dropdown-toggle.btn-success:hover { + color: #fff; + background-color: #398439; + border-color: #255625 + } + + .btn-success.disabled.focus, .btn-success.disabled:focus, .btn-success.disabled:hover, .btn-success[disabled].focus, .btn-success[disabled]:focus, .btn-success[disabled]:hover, fieldset[disabled] .btn-success.focus, fieldset[disabled] .btn-success:focus, fieldset[disabled] .btn-success:hover { + background-color: #5cb85c; + border-color: #4cae4c + } + + .btn-success .badge { + color: #5cb85c; + background-color: #fff + } + +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da +} + + .btn-info.focus, .btn-info:focus { + color: #fff; + background-color: #31b0d5; + border-color: #1b6d85 + } + + .btn-info:hover { + color: #fff; + background-color: #31b0d5; + border-color: #269abc + } + + .btn-info.active, .btn-info:active, .open > .dropdown-toggle.btn-info { + color: #fff; + background-color: #31b0d5; + background-image: none; + border-color: #269abc + } + + .btn-info.active.focus, .btn-info.active:focus, .btn-info.active:hover, .btn-info:active.focus, .btn-info:active:focus, .btn-info:active:hover, .open > .dropdown-toggle.btn-info.focus, .open > .dropdown-toggle.btn-info:focus, .open > .dropdown-toggle.btn-info:hover { + color: #fff; + background-color: #269abc; + border-color: #1b6d85 + } + + .btn-info.disabled.focus, .btn-info.disabled:focus, .btn-info.disabled:hover, .btn-info[disabled].focus, .btn-info[disabled]:focus, .btn-info[disabled]:hover, fieldset[disabled] .btn-info.focus, fieldset[disabled] .btn-info:focus, fieldset[disabled] .btn-info:hover { + background-color: #5bc0de; + border-color: #46b8da + } + + .btn-info .badge { + color: #5bc0de; + background-color: #fff + } + +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236 +} + + .btn-warning.focus, .btn-warning:focus { + color: #fff; + background-color: #ec971f; + border-color: #985f0d + } + + .btn-warning:hover { + color: #fff; + background-color: #ec971f; + border-color: #d58512 + } + + .btn-warning.active, .btn-warning:active, .open > .dropdown-toggle.btn-warning { + color: #fff; + background-color: #ec971f; + background-image: none; + border-color: #d58512 + } + + .btn-warning.active.focus, .btn-warning.active:focus, .btn-warning.active:hover, .btn-warning:active.focus, .btn-warning:active:focus, .btn-warning:active:hover, .open > .dropdown-toggle.btn-warning.focus, .open > .dropdown-toggle.btn-warning:focus, .open > .dropdown-toggle.btn-warning:hover { + color: #fff; + background-color: #d58512; + border-color: #985f0d + } + + .btn-warning.disabled.focus, .btn-warning.disabled:focus, .btn-warning.disabled:hover, .btn-warning[disabled].focus, .btn-warning[disabled]:focus, .btn-warning[disabled]:hover, fieldset[disabled] .btn-warning.focus, fieldset[disabled] .btn-warning:focus, fieldset[disabled] .btn-warning:hover { + background-color: #f0ad4e; + border-color: #eea236 + } + + .btn-warning .badge { + color: #f0ad4e; + background-color: #fff + } + +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a +} + + .btn-danger.focus, .btn-danger:focus { + color: #fff; + background-color: #c9302c; + border-color: #761c19 + } + + .btn-danger:hover { + color: #fff; + background-color: #c9302c; + border-color: #ac2925 + } + + .btn-danger.active, .btn-danger:active, .open > .dropdown-toggle.btn-danger { + color: #fff; + background-color: #c9302c; + background-image: none; + border-color: #ac2925 + } + + .btn-danger.active.focus, .btn-danger.active:focus, .btn-danger.active:hover, .btn-danger:active.focus, .btn-danger:active:focus, .btn-danger:active:hover, .open > .dropdown-toggle.btn-danger.focus, .open > .dropdown-toggle.btn-danger:focus, .open > .dropdown-toggle.btn-danger:hover { + color: #fff; + background-color: #ac2925; + border-color: #761c19 + } + + .btn-danger.disabled.focus, .btn-danger.disabled:focus, .btn-danger.disabled:hover, .btn-danger[disabled].focus, .btn-danger[disabled]:focus, .btn-danger[disabled]:hover, fieldset[disabled] .btn-danger.focus, fieldset[disabled] .btn-danger:focus, fieldset[disabled] .btn-danger:hover { + background-color: #d9534f; + border-color: #d43f3a + } + + .btn-danger .badge { + color: #d9534f; + background-color: #fff + } + +.btn-link { + font-weight: 400; + color: #337ab7; + border-radius: 0 +} + + .btn-link, .btn-link.active, .btn-link:active, .btn-link[disabled], fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none + } + + .btn-link, .btn-link:active, .btn-link:focus, .btn-link:hover { + border-color: transparent + } + + .btn-link:focus, .btn-link:hover { + color: #23527c; + text-decoration: underline; + background-color: transparent + } + + .btn-link[disabled]:focus, .btn-link[disabled]:hover, fieldset[disabled] .btn-link:focus, fieldset[disabled] .btn-link:hover { + color: #777; + text-decoration: none + } + +.btn-group-lg > .btn, .btn-lg { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px +} + +.btn-group-sm > .btn, .btn-sm { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px +} + +.btn-group-xs > .btn, .btn-xs { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px +} + +.btn-block { + display: block; + width: 100% +} + + .btn-block + .btn-block { + margin-top: 5px + } + +input[type=button].btn-block, input[type=reset].btn-block, input[type=submit].btn-block { + width: 100% +} + +.fade { + opacity: 0; + -webkit-transition: opacity .15s linear; + -o-transition: opacity .15s linear; + transition: opacity .15s linear +} + + .fade.in { + opacity: 1 + } + +.collapse { + display: none +} + + .collapse.in { + display: block + } + +tr.collapse.in { + display: table-row +} + +tbody.collapse.in { + display: table-row-group +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-property: height,visibility; + -o-transition-property: height,visibility; + transition-property: height,visibility; + -webkit-transition-duration: .35s; + -o-transition-duration: .35s; + transition-duration: .35s; + -webkit-transition-timing-function: ease; + -o-transition-timing-function: ease; + transition-timing-function: ease +} + +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-right: 4px solid transparent; + border-left: 4px solid transparent +} + +.dropdown, .dropup { + position: relative +} + +.dropdown-toggle:focus { + outline: 0 +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + text-align: left; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0,0,0,.15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0,0,0,.175); + box-shadow: 0 6px 12px rgba(0,0,0,.175) +} + + .dropdown-menu.pull-right { + right: 0; + left: auto + } + + .dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5 + } + + .dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: 400; + line-height: 1.42857143; + color: #333; + white-space: nowrap + } + + .dropdown-menu > li > a:focus, .dropdown-menu > li > a:hover { + color: #262626; + text-decoration: none; + background-color: #f5f5f5 + } + + .dropdown-menu > .active > a, .dropdown-menu > .active > a:focus, .dropdown-menu > .active > a:hover { + color: #fff; + text-decoration: none; + background-color: #337ab7; + outline: 0 + } + + .dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:focus, .dropdown-menu > .disabled > a:hover { + color: #777 + } + + .dropdown-menu > .disabled > a:focus, .dropdown-menu > .disabled > a:hover { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none + } + +.open > .dropdown-menu { + display: block +} + +.open > a { + outline: 0 +} + +.dropdown-menu-right { + right: 0; + left: auto +} + +.dropdown-menu-left { + right: auto; + left: 0 +} + +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #777; + white-space: nowrap +} + +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990 +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto +} + +.dropup .caret, .navbar-fixed-bottom .dropdown .caret { + content: ""; + border-top: 0; + border-bottom: 4px dashed +} + +.dropup .dropdown-menu, .navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px +} + +.btn-group, .btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle +} + + .btn-group-vertical > .btn, .btn-group > .btn { + position: relative; + float: left + } + + .btn-group-vertical > .btn.active, .btn-group-vertical > .btn:active, .btn-group-vertical > .btn:focus, .btn-group-vertical > .btn:hover, .btn-group > .btn.active, .btn-group > .btn:active, .btn-group > .btn:focus, .btn-group > .btn:hover { + z-index: 2 + } + + .btn-group .btn + .btn, .btn-group .btn + .btn-group, .btn-group .btn-group + .btn, .btn-group .btn-group + .btn-group { + margin-left: -1px + } + +.btn-toolbar { + margin-left: -5px +} + + .btn-toolbar .btn, .btn-toolbar .btn-group, .btn-toolbar .input-group { + float: left + } + + .btn-toolbar > .btn, .btn-toolbar > .btn-group, .btn-toolbar > .input-group { + margin-left: 5px + } + +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0 +} + +.btn-group > .btn:first-child { + margin-left: 0 +} + + .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0 + } + +.btn-group > .btn:last-child:not(:first-child), .btn-group > .dropdown-toggle:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.btn-group > .btn-group { + float: left +} + + .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0 + } + + .btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, .btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0 + } + + .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0 + } + +.btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle { + outline: 0 +} + +.btn-group > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px +} + +.btn-group > .btn-lg + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px +} + +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0,0,0,.125); + box-shadow: inset 0 3px 5px rgba(0,0,0,.125) +} + + .btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none + } + +.btn .caret { + margin-left: 0 +} + +.btn-lg .caret { + border-width: 5px 5px 0 +} + +.dropup .btn-lg .caret { + border-width: 0 5px 5px +} + +.btn-group-vertical > .btn, .btn-group-vertical > .btn-group, .btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100% +} + + .btn-group-vertical > .btn-group > .btn { + float: none + } + + .btn-group-vertical > .btn + .btn, .btn-group-vertical > .btn + .btn-group, .btn-group-vertical > .btn-group + .btn, .btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0 + } + + .btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0 + } + + .btn-group-vertical > .btn:first-child:not(:last-child) { + border-radius: 4px 4px 0 0 + } + + .btn-group-vertical > .btn:last-child:not(:first-child) { + border-radius: 0 0 4px 4px + } + + .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0 + } + + .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0 + } + + .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0 + } + +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate +} + + .btn-group-justified > .btn, .btn-group-justified > .btn-group { + display: table-cell; + float: none; + width: 1% + } + + .btn-group-justified > .btn-group .btn { + width: 100% + } + + .btn-group-justified > .btn-group .dropdown-menu { + left: auto + } + +[data-toggle=buttons] > .btn input[type=checkbox], [data-toggle=buttons] > .btn input[type=radio], [data-toggle=buttons] > .btn-group > .btn input[type=checkbox], [data-toggle=buttons] > .btn-group > .btn input[type=radio] { + position: absolute; + clip: rect(0,0,0,0); + pointer-events: none +} + +.input-group { + position: relative; + display: table; + border-collapse: separate +} + + .input-group[class*=col-] { + float: none; + padding-right: 0; + padding-left: 0 + } + + .input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0 + } + + .input-group .form-control:focus { + z-index: 3 + } + +.input-group-lg > .form-control, .input-group-lg > .input-group-addon, .input-group-lg > .input-group-btn > .btn { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px +} + +select.input-group-lg > .form-control, select.input-group-lg > .input-group-addon, select.input-group-lg > .input-group-btn > .btn { + height: 46px; + line-height: 46px +} + +select[multiple].input-group-lg > .form-control, select[multiple].input-group-lg > .input-group-addon, select[multiple].input-group-lg > .input-group-btn > .btn, textarea.input-group-lg > .form-control, textarea.input-group-lg > .input-group-addon, textarea.input-group-lg > .input-group-btn > .btn { + height: auto +} + +.input-group-sm > .form-control, .input-group-sm > .input-group-addon, .input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px +} + +select.input-group-sm > .form-control, select.input-group-sm > .input-group-addon, select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px +} + +select[multiple].input-group-sm > .form-control, select[multiple].input-group-sm > .input-group-addon, select[multiple].input-group-sm > .input-group-btn > .btn, textarea.input-group-sm > .form-control, textarea.input-group-sm > .input-group-addon, textarea.input-group-sm > .input-group-btn > .btn { + height: auto +} + +.input-group .form-control, .input-group-addon, .input-group-btn { + display: table-cell +} + + .input-group .form-control:not(:first-child):not(:last-child), .input-group-addon:not(:first-child):not(:last-child), .input-group-btn:not(:first-child):not(:last-child) { + border-radius: 0 + } + +.input-group-addon, .input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle +} + +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: 400; + line-height: 1; + color: #555; + text-align: center; + background-color: #eee; + border: 1px solid #ccc; + border-radius: 4px +} + + .input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px + } + + .input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px + } + + .input-group-addon input[type=checkbox], .input-group-addon input[type=radio] { + margin-top: 0 + } + + .input-group .form-control:first-child, .input-group-addon:first-child, .input-group-btn:first-child > .btn, .input-group-btn:first-child > .btn-group > .btn, .input-group-btn:first-child > .dropdown-toggle, .input-group-btn:last-child > .btn-group:not(:last-child) > .btn, .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0 + } + + .input-group-addon:first-child { + border-right: 0 + } + + .input-group .form-control:last-child, .input-group-addon:last-child, .input-group-btn:first-child > .btn-group:not(:first-child) > .btn, .input-group-btn:first-child > .btn:not(:first-child), .input-group-btn:last-child > .btn, .input-group-btn:last-child > .btn-group > .btn, .input-group-btn:last-child > .dropdown-toggle { + border-top-left-radius: 0; + border-bottom-left-radius: 0 + } + + .input-group-addon:last-child { + border-left: 0 + } + +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap +} + + .input-group-btn > .btn { + position: relative + } + + .input-group-btn > .btn + .btn { + margin-left: -1px + } + + .input-group-btn > .btn:active, .input-group-btn > .btn:focus, .input-group-btn > .btn:hover { + z-index: 2 + } + + .input-group-btn:first-child > .btn, .input-group-btn:first-child > .btn-group { + margin-right: -1px + } + + .input-group-btn:last-child > .btn, .input-group-btn:last-child > .btn-group { + z-index: 2; + margin-left: -1px + } + +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none +} + + .nav > li { + position: relative; + display: block + } + + .nav > li > a { + position: relative; + display: block; + padding: 10px 15px + } + + .nav > li > a:focus, .nav > li > a:hover { + text-decoration: none; + background-color: #eee + } + + .nav > li.disabled > a { + color: #777 + } + + .nav > li.disabled > a:focus, .nav > li.disabled > a:hover { + color: #777; + text-decoration: none; + cursor: not-allowed; + background-color: transparent + } + + .nav .open > a, .nav .open > a:focus, .nav .open > a:hover { + background-color: #eee; + border-color: #337ab7 + } + + .nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5 + } + + .nav > li > a > img { + max-width: none + } + +.nav-tabs { + border-bottom: 1px solid #ddd +} + + .nav-tabs > li { + float: left; + margin-bottom: -1px + } + + .nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 4px 4px 0 0 + } + + .nav-tabs > li > a:hover { + border-color: #eee #eee #ddd + } + + .nav-tabs > li.active > a, .nav-tabs > li.active > a:focus, .nav-tabs > li.active > a:hover { + color: #555; + cursor: default; + background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: transparent + } + + .nav-tabs.nav-justified { + width: 100%; + border-bottom: 0 + } + + .nav-tabs.nav-justified > li { + float: none + } + + .nav-tabs.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; + margin-right: 0; + border-radius: 4px + } + + .nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto + } + + .nav-tabs.nav-justified > .active > a, .nav-tabs.nav-justified > .active > a:focus, .nav-tabs.nav-justified > .active > a:hover { + border: 1px solid #ddd + } + +.nav-pills > li { + float: left +} + + .nav-pills > li > a { + border-radius: 4px + } + + .nav-pills > li + li { + margin-left: 2px + } + + .nav-pills > li.active > a, .nav-pills > li.active > a:focus, .nav-pills > li.active > a:hover { + color: #fff; + background-color: #337ab7 + } + +.nav-stacked > li { + float: none +} + + .nav-stacked > li + li { + margin-top: 2px; + margin-left: 0 + } + +.nav-justified { + width: 100% +} + + .nav-justified > li { + float: none + } + + .nav-justified > li > a { + margin-bottom: 5px; + text-align: center + } + + .nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto + } + +@media (min-width:768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto + } + + .navbar-right .dropdown-menu-left { + right: auto; + left: 0 + } + + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1% + } + + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0 + } + + .nav-tabs.nav-justified > .active > a, .nav-tabs.nav-justified > .active > a:focus, .nav-tabs.nav-justified > .active > a:hover { + border-bottom-color: #fff + } + + .nav-justified > li { + display: table-cell; + width: 1% + } + + .nav-justified > li > a { + margin-bottom: 0 + } +} + +.nav-tabs-justified { + border-bottom: 0 +} + + .nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 4px + } + + .nav-tabs-justified > .active > a, .nav-tabs-justified > .active > a:focus, .nav-tabs-justified > .active > a:hover { + border: 1px solid #ddd + } + +@media (min-width:768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0 + } + + .nav-tabs-justified > .active > a, .nav-tabs-justified > .active > a:focus, .nav-tabs-justified > .active > a:hover { + border-bottom-color: #fff + } +} + +.tab-content > .tab-pane { + display: none +} + +.tab-content > .active { + display: block +} + +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0 +} + +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent +} + +.navbar-collapse { + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + border-top: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1); + box-shadow: inset 0 1px 0 rgba(255,255,255,.1); + -webkit-overflow-scrolling: touch +} + + .navbar-collapse.in { + overflow-y: auto + } + +.navbar-fixed-bottom, .navbar-fixed-top { + position: fixed; + right: 0; + left: 0; + z-index: 1030 +} + + .navbar-fixed-bottom .navbar-collapse, .navbar-fixed-top .navbar-collapse { + max-height: 340px + } + +@media (max-device-width:480px) and (orientation:landscape) { + .navbar-fixed-bottom .navbar-collapse, .navbar-fixed-top .navbar-collapse { + max-height: 200px + } +} + +@media (min-width:768px) { + .navbar { + border-radius: 4px + } + + .navbar-header { + float: left + } + + .navbar-collapse { + width: auto; + border-top: 0; + -webkit-box-shadow: none; + box-shadow: none + } + + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important + } + + .navbar-collapse.in { + overflow-y: visible + } + + .navbar-fixed-bottom .navbar-collapse, .navbar-fixed-top .navbar-collapse, .navbar-static-top .navbar-collapse { + padding-right: 0; + padding-left: 0 + } + + .navbar-fixed-bottom, .navbar-fixed-top { + border-radius: 0 + } +} + +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px +} + +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0 +} + +.container-fluid > .navbar-collapse, .container-fluid > .navbar-header, .container > .navbar-collapse, .container > .navbar-header { + margin-right: -15px; + margin-left: -15px +} + +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px +} + +.navbar-brand { + float: left; + height: 50px; + padding: 15px; + font-size: 18px; + line-height: 20px +} + + .navbar-brand:focus, .navbar-brand:hover { + text-decoration: none + } + + .navbar-brand > img { + display: block + } + +@media (min-width:768px) { + .container-fluid > .navbar-collapse, .container-fluid > .navbar-header, .container > .navbar-collapse, .container > .navbar-header { + margin-right: 0; + margin-left: 0 + } + + .navbar-static-top { + border-radius: 0 + } + + .navbar > .container .navbar-brand, .navbar > .container-fluid .navbar-brand { + margin-left: -15px + } + + .navbar-toggle { + display: none + } +} + +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-right: 15px; + margin-top: 8px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px +} + + .navbar-toggle:focus { + outline: 0 + } + + .navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px + } + + .navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px + } + +.navbar-nav { + margin: 7.5px -15px +} + + .navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px + } + +@media (max-width:767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none + } + + .navbar-nav .open .dropdown-menu .dropdown-header, .navbar-nav .open .dropdown-menu > li > a { + padding: 5px 15px 5px 25px + } + + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px + } + + .navbar-nav .open .dropdown-menu > li > a:focus, .navbar-nav .open .dropdown-menu > li > a:hover { + background-image: none + } +} + +@media (min-width:768px) { + .navbar-nav { + float: left; + margin: 0 + } + + .navbar-nav > li { + float: left + } + + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px + } + + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle + } + + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle + } + + .navbar-form .form-control-static { + display: inline-block + } + + .navbar-form .input-group { + display: inline-table; + vertical-align: middle + } + + .navbar-form .input-group .form-control, .navbar-form .input-group .input-group-addon, .navbar-form .input-group .input-group-btn { + width: auto + } + + .navbar-form .input-group > .form-control { + width: 100% + } + + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle + } + + .navbar-form .checkbox, .navbar-form .radio { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle + } + + .navbar-form .checkbox label, .navbar-form .radio label { + padding-left: 0 + } + + .navbar-form .checkbox input[type=checkbox], .navbar-form .radio input[type=radio] { + position: relative; + margin-left: 0 + } + + .navbar-form .has-feedback .form-control-feedback { + top: 0 + } +} + +.navbar-form { + padding: 10px 15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1); + box-shadow: inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1); + margin: 8px -15px +} + +@media (max-width:767px) { + .navbar-form .form-group { + margin-bottom: 5px + } + + .navbar-form .form-group:last-child { + margin-bottom: 0 + } + + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777 + } + + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus, .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover { + color: #333; + background-color: transparent + } + + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover { + color: #555; + background-color: #e7e7e7 + } + + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus, .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover { + color: #ccc; + background-color: transparent + } +} + +@media (min-width:768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none + } + + .navbar-text { + float: left; + margin-right: 15px; + margin-left: 15px + } +} + +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0 +} + +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + margin-bottom: 0; + border-radius: 4px 4px 0 0 +} + +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px +} + + .navbar-btn.btn-sm { + margin-top: 10px; + margin-bottom: 10px + } + + .navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px + } + +.navbar-text { + margin-top: 15px; + margin-bottom: 15px +} + +@media (min-width:768px) { + .navbar-left { + float: left !important + } + + .navbar-right { + float: right !important; + margin-right: -15px + } + + .navbar-right ~ .navbar-right { + margin-right: 0 + } +} + +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7 +} + + .navbar-default .navbar-brand { + color: #777 + } + + .navbar-default .navbar-brand:focus, .navbar-default .navbar-brand:hover { + color: #5e5e5e; + background-color: transparent + } + + .navbar-default .navbar-nav > li > a, .navbar-default .navbar-text { + color: #777 + } + + .navbar-default .navbar-nav > li > a:focus, .navbar-default .navbar-nav > li > a:hover { + color: #333; + background-color: transparent + } + + .navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:focus, .navbar-default .navbar-nav > .active > a:hover { + color: #555; + background-color: #e7e7e7 + } + + .navbar-default .navbar-nav > .disabled > a, .navbar-default .navbar-nav > .disabled > a:focus, .navbar-default .navbar-nav > .disabled > a:hover { + color: #ccc; + background-color: transparent + } + + .navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:focus, .navbar-default .navbar-nav > .open > a:hover { + color: #555; + background-color: #e7e7e7 + } + + .navbar-default .navbar-toggle { + border-color: #ddd + } + + .navbar-default .navbar-toggle:focus, .navbar-default .navbar-toggle:hover { + background-color: #ddd + } + + .navbar-default .navbar-toggle .icon-bar { + background-color: #888 + } + + .navbar-default .navbar-collapse, .navbar-default .navbar-form { + border-color: #e7e7e7 + } + + .navbar-default .navbar-link { + color: #777 + } + + .navbar-default .navbar-link:hover { + color: #333 + } + + .navbar-default .btn-link { + color: #777 + } + + .navbar-default .btn-link:focus, .navbar-default .btn-link:hover { + color: #333 + } + + .navbar-default .btn-link[disabled]:focus, .navbar-default .btn-link[disabled]:hover, fieldset[disabled] .navbar-default .btn-link:focus, fieldset[disabled] .navbar-default .btn-link:hover { + color: #ccc + } + +.navbar-inverse { + background-color: #222; + border-color: #080808 +} + + .navbar-inverse .navbar-brand { + color: #9d9d9d + } + + .navbar-inverse .navbar-brand:focus, .navbar-inverse .navbar-brand:hover { + color: #fff; + background-color: transparent + } + + .navbar-inverse .navbar-nav > li > a, .navbar-inverse .navbar-text { + color: #9d9d9d + } + + .navbar-inverse .navbar-nav > li > a:focus, .navbar-inverse .navbar-nav > li > a:hover { + color: #fff; + background-color: transparent + } + + .navbar-inverse .navbar-nav > .active > a, .navbar-inverse .navbar-nav > .active > a:focus, .navbar-inverse .navbar-nav > .active > a:hover { + color: #fff; + background-color: #080808 + } + + .navbar-inverse .navbar-nav > .disabled > a, .navbar-inverse .navbar-nav > .disabled > a:focus, .navbar-inverse .navbar-nav > .disabled > a:hover { + color: #444; + background-color: transparent + } + + .navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:focus, .navbar-inverse .navbar-nav > .open > a:hover { + color: #fff; + background-color: #080808 + } + +@media (max-width:767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808 + } + + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #080808 + } + + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #9d9d9d + } + + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus, .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover { + color: #fff; + background-color: transparent + } + + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus, .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover { + color: #fff; + background-color: #080808 + } + + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus, .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover { + color: #444; + background-color: transparent + } +} + +.navbar-inverse .navbar-toggle { + border-color: #333 +} + + .navbar-inverse .navbar-toggle:focus, .navbar-inverse .navbar-toggle:hover { + background-color: #333 + } + + .navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff + } + +.navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form { + border-color: #101010 +} + +.navbar-inverse .navbar-link { + color: #9d9d9d +} + + .navbar-inverse .navbar-link:hover { + color: #fff + } + +.navbar-inverse .btn-link { + color: #9d9d9d +} + + .navbar-inverse .btn-link:focus, .navbar-inverse .btn-link:hover { + color: #fff + } + + .navbar-inverse .btn-link[disabled]:focus, .navbar-inverse .btn-link[disabled]:hover, fieldset[disabled] .navbar-inverse .btn-link:focus, fieldset[disabled] .navbar-inverse .btn-link:hover { + color: #444 + } + +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px +} + + .breadcrumb > li { + display: inline-block + } + + .breadcrumb > li + li:before { + padding: 0 5px; + color: #ccc; + content: "/\00a0" + } + + .breadcrumb > .active { + color: #777 + } + +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px +} + + .pagination > li { + display: inline + } + + .pagination > li > a, .pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.42857143; + color: #337ab7; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd + } + + .pagination > li > a:focus, .pagination > li > a:hover, .pagination > li > span:focus, .pagination > li > span:hover { + z-index: 2; + color: #23527c; + background-color: #eee; + border-color: #ddd + } + + .pagination > li:first-child > a, .pagination > li:first-child > span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px + } + + .pagination > li:last-child > a, .pagination > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px + } + + .pagination > .active > a, .pagination > .active > a:focus, .pagination > .active > a:hover, .pagination > .active > span, .pagination > .active > span:focus, .pagination > .active > span:hover { + z-index: 3; + color: #fff; + cursor: default; + background-color: #337ab7; + border-color: #337ab7 + } + + .pagination > .disabled > a, .pagination > .disabled > a:focus, .pagination > .disabled > a:hover, .pagination > .disabled > span, .pagination > .disabled > span:focus, .pagination > .disabled > span:hover { + color: #777; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd + } + +.pagination-lg > li > a, .pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333 +} + +.pagination-lg > li:first-child > a, .pagination-lg > li:first-child > span { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px +} + +.pagination-lg > li:last-child > a, .pagination-lg > li:last-child > span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px +} + +.pagination-sm > li > a, .pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5 +} + +.pagination-sm > li:first-child > a, .pagination-sm > li:first-child > span { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px +} + +.pagination-sm > li:last-child > a, .pagination-sm > li:last-child > span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px +} + +.pager { + padding-left: 0; + margin: 20px 0; + text-align: center; + list-style: none +} + + .pager li { + display: inline + } + + .pager li > a, .pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 15px + } + + .pager li > a:focus, .pager li > a:hover { + text-decoration: none; + background-color: #eee + } + + .pager .next > a, .pager .next > span { + float: right + } + + .pager .previous > a, .pager .previous > span { + float: left + } + + .pager .disabled > a, .pager .disabled > a:focus, .pager .disabled > a:hover, .pager .disabled > span { + color: #777; + cursor: not-allowed; + background-color: #fff + } + +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: 700; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em +} + +a.label:focus, a.label:hover { + color: #fff; + text-decoration: none; + cursor: pointer +} + +.label:empty { + display: none +} + +.btn .label { + position: relative; + top: -1px +} + +.label-default { + background-color: #777 +} + + .label-default[href]:focus, .label-default[href]:hover { + background-color: #5e5e5e + } + +.label-primary { + background-color: #337ab7 +} + + .label-primary[href]:focus, .label-primary[href]:hover { + background-color: #286090 + } + +.label-success { + background-color: #5cb85c +} + + .label-success[href]:focus, .label-success[href]:hover { + background-color: #449d44 + } + +.label-info { + background-color: #5bc0de +} + + .label-info[href]:focus, .label-info[href]:hover { + background-color: #31b0d5 + } + +.label-warning { + background-color: #f0ad4e +} + + .label-warning[href]:focus, .label-warning[href]:hover { + background-color: #ec971f + } + +.label-danger { + background-color: #d9534f +} + + .label-danger[href]:focus, .label-danger[href]:hover { + background-color: #c9302c + } + +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: 700; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: middle; + background-color: #777; + border-radius: 10px +} + + .badge:empty { + display: none + } + +.btn .badge { + position: relative; + top: -1px +} + +.btn-group-xs > .btn .badge, .btn-xs .badge { + top: 0; + padding: 1px 5px +} + +a.badge:focus, a.badge:hover { + color: #fff; + text-decoration: none; + cursor: pointer +} + +.list-group-item.active > .badge, .nav-pills > .active > a > .badge { + color: #337ab7; + background-color: #fff +} + +.list-group-item > .badge { + float: right +} + + .list-group-item > .badge + .badge { + margin-right: 5px + } + +.nav-pills > li > a > .badge { + margin-left: 3px +} + +.jumbotron { + padding-top: 30px; + padding-bottom: 30px; + margin-bottom: 30px; + color: inherit; + background-color: #eee +} + + .jumbotron .h1, .jumbotron h1 { + color: inherit + } + + .jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200 + } + + .jumbotron > hr { + border-top-color: #d5d5d5 + } + +.container .jumbotron, .container-fluid .jumbotron { + padding-right: 15px; + padding-left: 15px; + border-radius: 6px +} + +.jumbotron .container { + max-width: 100% +} + +@media screen and (min-width:768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px + } + + .container .jumbotron, .container-fluid .jumbotron { + padding-right: 60px; + padding-left: 60px + } + + .jumbotron .h1, .jumbotron h1 { + font-size: 63px + } +} + +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: border .2s ease-in-out; + -o-transition: border .2s ease-in-out; + transition: border .2s ease-in-out +} + + .thumbnail a > img, .thumbnail > img { + margin-right: auto; + margin-left: auto + } + +a.thumbnail.active, a.thumbnail:focus, a.thumbnail:hover { + border-color: #337ab7 +} + +.thumbnail .caption { + padding: 9px; + color: #333 +} + +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px +} + + .alert h4 { + margin-top: 0; + color: inherit + } + + .alert .alert-link { + font-weight: 700 + } + + .alert > p, .alert > ul { + margin-bottom: 0 + } + + .alert > p + p { + margin-top: 5px + } + +.alert-dismissable, .alert-dismissible { + padding-right: 35px +} + + .alert-dismissable .close, .alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit + } + +.alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6 +} + + .alert-success hr { + border-top-color: #c9e2b3 + } + + .alert-success .alert-link { + color: #2b542c + } + +.alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1 +} + + .alert-info hr { + border-top-color: #a6e1ec + } + + .alert-info .alert-link { + color: #245269 + } + +.alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc +} + + .alert-warning hr { + border-top-color: #f7e1b5 + } + + .alert-warning .alert-link { + color: #66512c + } + +.alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1 +} + + .alert-danger hr { + border-top-color: #e4b9c0 + } + + .alert-danger .alert-link { + color: #843534 + } + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0 + } + + to { + background-position: 0 0 + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 40px 0 + } + + to { + background-position: 0 0 + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0 + } + + to { + background-position: 0 0 + } +} + +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1); + box-shadow: inset 0 1px 2px rgba(0,0,0,.1) +} + +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #fff; + text-align: center; + background-color: #337ab7; + -webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,.15); + box-shadow: inset 0 -1px 0 rgba(0,0,0,.15); + -webkit-transition: width .6s; + -o-transition: width .6s; + transition: width .6s +} + +.progress-bar-striped, .progress-striped .progress-bar { + background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); + background-image: -o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); + background-image: linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); + -webkit-background-size: 40px 40px; + background-size: 40px 40px +} + +.progress-bar.active, .progress.active .progress-bar { + -webkit-animation: 2s linear infinite progress-bar-stripes; + -o-animation: 2s linear infinite progress-bar-stripes; + animation: 2s linear infinite progress-bar-stripes +} + +.progress-bar-success { + background-color: #5cb85c +} + +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); + background-image: -o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); + background-image: linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent) +} + +.progress-bar-info { + background-color: #5bc0de +} + +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); + background-image: -o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); + background-image: linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent) +} + +.progress-bar-warning { + background-color: #f0ad4e +} + +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); + background-image: -o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); + background-image: linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent) +} + +.progress-bar-danger { + background-color: #d9534f +} + +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); + background-image: -o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent); + background-image: linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent) +} + +.media { + margin-top: 15px +} + + .media:first-child { + margin-top: 0 + } + +.media, .media-body { + overflow: hidden; + zoom: 1 +} + +.media-body { + width: 10000px +} + +.media-object { + display: block +} + + .media-object.img-thumbnail { + max-width: none + } + +.media-right, .media > .pull-right { + padding-left: 10px +} + +.media-left, .media > .pull-left { + padding-right: 10px +} + +.media-body, .media-left, .media-right { + display: table-cell; + vertical-align: top +} + +.media-middle { + vertical-align: middle +} + +.media-bottom { + vertical-align: bottom +} + +.media-heading { + margin-top: 0; + margin-bottom: 5px +} + +.media-list { + padding-left: 0; + list-style: none +} + +.list-group { + padding-left: 0; + margin-bottom: 20px +} + +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd +} + + .list-group-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px + } + + .list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px + } + + .list-group-item.disabled, .list-group-item.disabled:focus, .list-group-item.disabled:hover { + color: #777; + cursor: not-allowed; + background-color: #eee + } + + .list-group-item.disabled .list-group-item-heading, .list-group-item.disabled:focus .list-group-item-heading, .list-group-item.disabled:hover .list-group-item-heading { + color: inherit + } + + .list-group-item.disabled .list-group-item-text, .list-group-item.disabled:focus .list-group-item-text, .list-group-item.disabled:hover .list-group-item-text { + color: #777 + } + + .list-group-item.active, .list-group-item.active:focus, .list-group-item.active:hover { + z-index: 2; + color: #fff; + background-color: #337ab7; + border-color: #337ab7 + } + + .list-group-item.active .list-group-item-heading, .list-group-item.active .list-group-item-heading > .small, .list-group-item.active .list-group-item-heading > small, .list-group-item.active:focus .list-group-item-heading, .list-group-item.active:focus .list-group-item-heading > .small, .list-group-item.active:focus .list-group-item-heading > small, .list-group-item.active:hover .list-group-item-heading, .list-group-item.active:hover .list-group-item-heading > .small, .list-group-item.active:hover .list-group-item-heading > small { + color: inherit + } + + .list-group-item.active .list-group-item-text, .list-group-item.active:focus .list-group-item-text, .list-group-item.active:hover .list-group-item-text { + color: #c7ddef + } + +a.list-group-item, button.list-group-item { + color: #555 +} + + a.list-group-item .list-group-item-heading, button.list-group-item .list-group-item-heading { + color: #333 + } + + a.list-group-item:focus, a.list-group-item:hover, button.list-group-item:focus, button.list-group-item:hover { + color: #555; + text-decoration: none; + background-color: #f5f5f5 + } + +button.list-group-item { + width: 100%; + text-align: left +} + +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8 +} + +a.list-group-item-success, button.list-group-item-success { + color: #3c763d +} + + a.list-group-item-success .list-group-item-heading, button.list-group-item-success .list-group-item-heading { + color: inherit + } + + a.list-group-item-success:focus, a.list-group-item-success:hover, button.list-group-item-success:focus, button.list-group-item-success:hover { + color: #3c763d; + background-color: #d0e9c6 + } + + a.list-group-item-success.active, a.list-group-item-success.active:focus, a.list-group-item-success.active:hover, button.list-group-item-success.active, button.list-group-item-success.active:focus, button.list-group-item-success.active:hover { + color: #fff; + background-color: #3c763d; + border-color: #3c763d + } + +.list-group-item-info { + color: #31708f; + background-color: #d9edf7 +} + +a.list-group-item-info, button.list-group-item-info { + color: #31708f +} + + a.list-group-item-info .list-group-item-heading, button.list-group-item-info .list-group-item-heading { + color: inherit + } + + a.list-group-item-info:focus, a.list-group-item-info:hover, button.list-group-item-info:focus, button.list-group-item-info:hover { + color: #31708f; + background-color: #c4e3f3 + } + + a.list-group-item-info.active, a.list-group-item-info.active:focus, a.list-group-item-info.active:hover, button.list-group-item-info.active, button.list-group-item-info.active:focus, button.list-group-item-info.active:hover { + color: #fff; + background-color: #31708f; + border-color: #31708f + } + +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3 +} + +a.list-group-item-warning, button.list-group-item-warning { + color: #8a6d3b +} + + a.list-group-item-warning .list-group-item-heading, button.list-group-item-warning .list-group-item-heading { + color: inherit + } + + a.list-group-item-warning:focus, a.list-group-item-warning:hover, button.list-group-item-warning:focus, button.list-group-item-warning:hover { + color: #8a6d3b; + background-color: #faf2cc + } + + a.list-group-item-warning.active, a.list-group-item-warning.active:focus, a.list-group-item-warning.active:hover, button.list-group-item-warning.active, button.list-group-item-warning.active:focus, button.list-group-item-warning.active:hover { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b + } + +.list-group-item-danger { + color: #a94442; + background-color: #f2dede +} + +a.list-group-item-danger, button.list-group-item-danger { + color: #a94442 +} + + a.list-group-item-danger .list-group-item-heading, button.list-group-item-danger .list-group-item-heading { + color: inherit + } + + a.list-group-item-danger:focus, a.list-group-item-danger:hover, button.list-group-item-danger:focus, button.list-group-item-danger:hover { + color: #a94442; + background-color: #ebcccc + } + + a.list-group-item-danger.active, a.list-group-item-danger.active:focus, a.list-group-item-danger.active:hover, button.list-group-item-danger.active, button.list-group-item-danger.active:focus, button.list-group-item-danger.active:hover { + color: #fff; + background-color: #a94442; + border-color: #a94442 + } + +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px +} + +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3 +} + +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05); + box-shadow: 0 1px 1px rgba(0,0,0,.05) +} + +.panel-body { + padding: 15px +} + +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px +} + + .panel-heading > .dropdown .dropdown-toggle { + color: inherit + } + +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit +} + + .panel-title > .small, .panel-title > .small > a, .panel-title > a, .panel-title > small, .panel-title > small > a { + color: inherit + } + +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px +} + +.panel > .list-group, .panel > .panel-collapse > .list-group { + margin-bottom: 0 +} + + .panel > .list-group .list-group-item, .panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0 + } + + .panel > .list-group:first-child .list-group-item:first-child, .panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px + } + + .panel > .list-group:last-child .list-group-item:last-child, .panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px + } + +.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0 +} + +.list-group + .panel-footer, .panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0 +} + +.panel > .panel-collapse > .table, .panel > .table, .panel > .table-responsive > .table { + margin-bottom: 0 +} + + .panel > .panel-collapse > .table caption, .panel > .table caption, .panel > .table-responsive > .table caption { + padding-right: 15px; + padding-left: 15px + } + + .panel > .table-responsive:first-child > .table:first-child, .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child, .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, .panel > .table:first-child, .panel > .table:first-child > tbody:first-child > tr:first-child, .panel > .table:first-child > thead:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px + } + + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child, .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, .panel > .table:first-child > thead:first-child > tr:first-child td:first-child, .panel > .table:first-child > thead:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px + } + + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child, .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, .panel > .table:first-child > thead:first-child > tr:first-child td:last-child, .panel > .table:first-child > thead:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px + } + + .panel > .table-responsive:last-child > .table:last-child, .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child, .panel > .table:last-child, .panel > .table:last-child > tbody:last-child > tr:last-child, .panel > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px + } + + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child, .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px + } + + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child, .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px + } + + .panel > .panel-body + .table, .panel > .panel-body + .table-responsive, .panel > .table + .panel-body, .panel > .table-responsive + .panel-body { + border-top: 1px solid #ddd + } + + .panel > .table > tbody:first-child > tr:first-child td, .panel > .table > tbody:first-child > tr:first-child th { + border-top: 0 + } + +.panel > .table-bordered, .panel > .table-responsive > .table-bordered { + border: 0 +} + + .panel > .table-bordered > tbody > tr > td:first-child, .panel > .table-bordered > tbody > tr > th:first-child, .panel > .table-bordered > tfoot > tr > td:first-child, .panel > .table-bordered > tfoot > tr > th:first-child, .panel > .table-bordered > thead > tr > td:first-child, .panel > .table-bordered > thead > tr > th:first-child, .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child, .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, .panel > .table-responsive > .table-bordered > thead > tr > td:first-child, .panel > .table-responsive > .table-bordered > thead > tr > th:first-child { + border-left: 0 + } + + .panel > .table-bordered > tbody > tr > td:last-child, .panel > .table-bordered > tbody > tr > th:last-child, .panel > .table-bordered > tfoot > tr > td:last-child, .panel > .table-bordered > tfoot > tr > th:last-child, .panel > .table-bordered > thead > tr > td:last-child, .panel > .table-bordered > thead > tr > th:last-child, .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child, .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, .panel > .table-responsive > .table-bordered > thead > tr > td:last-child, .panel > .table-responsive > .table-bordered > thead > tr > th:last-child { + border-right: 0 + } + + .panel > .table-bordered > tbody > tr:first-child > td, .panel > .table-bordered > tbody > tr:first-child > th, .panel > .table-bordered > tbody > tr:last-child > td, .panel > .table-bordered > tbody > tr:last-child > th, .panel > .table-bordered > tfoot > tr:last-child > td, .panel > .table-bordered > tfoot > tr:last-child > th, .panel > .table-bordered > thead > tr:first-child > td, .panel > .table-bordered > thead > tr:first-child > th, .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th, .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th, .panel > .table-responsive > .table-bordered > thead > tr:first-child > td, .panel > .table-responsive > .table-bordered > thead > tr:first-child > th { + border-bottom: 0 + } + +.panel > .table-responsive { + margin-bottom: 0; + border: 0 +} + +.panel-group { + margin-bottom: 20px +} + + .panel-group .panel { + margin-bottom: 0; + border-radius: 4px + } + + .panel-group .panel + .panel { + margin-top: 5px + } + + .panel-group .panel-heading { + border-bottom: 0 + } + + .panel-group .panel-heading + .panel-collapse > .list-group, .panel-group .panel-heading + .panel-collapse > .panel-body { + border-top: 1px solid #ddd + } + + .panel-group .panel-footer { + border-top: 0 + } + + .panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #ddd + } + +.panel-default { + border-color: #ddd +} + + .panel-default > .panel-heading { + color: #333; + background-color: #f5f5f5; + border-color: #ddd + } + + .panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ddd + } + + .panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333 + } + + .panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ddd + } + +.panel-primary { + border-color: #337ab7 +} + + .panel-primary > .panel-heading { + color: #fff; + background-color: #337ab7; + border-color: #337ab7 + } + + .panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #337ab7 + } + + .panel-primary > .panel-heading .badge { + color: #337ab7; + background-color: #fff + } + + .panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #337ab7 + } + +.panel-success { + border-color: #d6e9c6 +} + + .panel-success > .panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6 + } + + .panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #d6e9c6 + } + + .panel-success > .panel-heading .badge { + color: #dff0d8; + background-color: #3c763d + } + + .panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #d6e9c6 + } + +.panel-info { + border-color: #bce8f1 +} + + .panel-info > .panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1 + } + + .panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bce8f1 + } + + .panel-info > .panel-heading .badge { + color: #d9edf7; + background-color: #31708f + } + + .panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bce8f1 + } + +.panel-warning { + border-color: #faebcc +} + + .panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc + } + + .panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #faebcc + } + + .panel-warning > .panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b + } + + .panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #faebcc + } + +.panel-danger { + border-color: #ebccd1 +} + + .panel-danger > .panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1 + } + + .panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ebccd1 + } + + .panel-danger > .panel-heading .badge { + color: #f2dede; + background-color: #a94442 + } + + .panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ebccd1 + } + +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden +} + + .embed-responsive .embed-responsive-item, .embed-responsive embed, .embed-responsive iframe, .embed-responsive object, .embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0 + } + +.embed-responsive-16by9 { + padding-bottom: 56.25% +} + +.embed-responsive-4by3 { + padding-bottom: 75% +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.05); + box-shadow: inset 0 1px 1px rgba(0,0,0,.05) +} + + .well blockquote { + border-color: rgba(0,0,0,.15) + } + +.well-lg { + padding: 24px; + border-radius: 6px +} + +.well-sm { + padding: 9px; + border-radius: 3px +} + +.close { + float: right; + font-size: 21px; + font-weight: 700; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + opacity: .2 +} + + .close:focus, .close:hover { + color: #000; + text-decoration: none; + cursor: pointer; + opacity: .5 + } + +button.close { + padding: 0; + cursor: pointer; + background: 0 0; + border: 0; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none +} + +.modal-open { + overflow: hidden +} + +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + overflow: hidden; + -webkit-overflow-scrolling: touch; + outline: 0 +} + + .modal.fade .modal-dialog { + -webkit-transform: translate(0,-25%); + -ms-transform: translate(0,-25%); + -o-transform: translate(0,-25%); + transform: translate(0,-25%); + -webkit-transition: -webkit-transform .3s ease-out; + -o-transition: -o-transform .3s ease-out; + transition: transform .3s ease-out; + transition: transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .3s ease-out + } + + .modal.in .modal-dialog { + -webkit-transform: translate(0,0); + -ms-transform: translate(0,0); + -o-transform: translate(0,0); + transform: translate(0,0) + } + +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto +} + +.modal-dialog { + position: relative; + width: auto; + margin: 10px +} + +.modal-content { + position: relative; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0,0,0,.2); + border-radius: 6px; + -webkit-box-shadow: 0 3px 9px rgba(0,0,0,.5); + box-shadow: 0 3px 9px rgba(0,0,0,.5); + outline: 0 +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000 +} + + .modal-backdrop.fade { + opacity: 0 + } + + .modal-backdrop.in { + opacity: .5 + } + +.modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5 +} + + .modal-header .close { + margin-top: -2px + } + +.modal-title { + margin: 0; + line-height: 1.42857143 +} + +.modal-body { + position: relative; + padding: 15px +} + +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5 +} + + .modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px + } + + .modal-footer .btn-group .btn + .btn { + margin-left: -1px + } + + .modal-footer .btn-block + .btn-block { + margin-left: 0 + } + +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll +} + +@media (min-width:768px) { + .modal-dialog { + width: 600px; + margin: 30px auto + } + + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0,0,0,.5); + box-shadow: 0 5px 15px rgba(0,0,0,.5) + } + + .modal-sm { + width: 300px + } +} + +@media (min-width:992px) { + .modal-lg { + width: 900px + } +} + +.tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; + font-style: normal; + font-weight: 400; + line-height: 1.42857143; + line-break: auto; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + white-space: normal; + font-size: 12px; + opacity: 0 +} + + .tooltip.in { + opacity: .9 + } + + .tooltip.top { + padding: 5px 0; + margin-top: -3px + } + + .tooltip.right { + padding: 0 5px; + margin-left: 3px + } + + .tooltip.bottom { + padding: 5px 0; + margin-top: 3px + } + + .tooltip.left { + padding: 0 5px; + margin-left: -3px + } + + .tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000 + } + + .tooltip.top-left .tooltip-arrow { + right: 5px; + bottom: 0; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000 + } + + .tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000 + } + + .tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000 + } + + .tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000 + } + + .tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000 + } + + .tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000 + } + + .tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000 + } + +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 4px +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; + font-style: normal; + font-weight: 400; + line-height: 1.42857143; + line-break: auto; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + white-space: normal; + font-size: 14px; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0,0,0,.2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2); + box-shadow: 0 5px 10px rgba(0,0,0,.2) +} + + .popover.top { + margin-top: -10px + } + + .popover.right { + margin-left: 10px + } + + .popover.bottom { + margin-top: 10px + } + + .popover.left { + margin-left: -10px + } + + .popover > .arrow { + border-width: 11px + } + + .popover > .arrow, .popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid + } + + .popover > .arrow:after { + content: ""; + border-width: 10px + } + + .popover.top > .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: rgba(0,0,0,.25); + border-bottom-width: 0 + } + + .popover.top > .arrow:after { + bottom: 1px; + margin-left: -10px; + content: " "; + border-top-color: #fff; + border-bottom-width: 0 + } + + .popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: rgba(0,0,0,.25); + border-left-width: 0 + } + + .popover.right > .arrow:after { + bottom: -10px; + left: 1px; + content: " "; + border-right-color: #fff; + border-left-width: 0 + } + + .popover.bottom > .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: rgba(0,0,0,.25) + } + + .popover.bottom > .arrow:after { + top: 1px; + margin-left: -10px; + content: " "; + border-top-width: 0; + border-bottom-color: #fff + } + + .popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: rgba(0,0,0,.25) + } + + .popover.left > .arrow:after { + right: 1px; + bottom: -10px; + content: " "; + border-right-width: 0; + border-left-color: #fff + } + +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0 +} + +.popover-content { + padding: 9px 14px +} + +.carousel { + position: relative +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden +} + + .carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: left .6s ease-in-out; + -o-transition: left .6s ease-in-out; + transition: left .6s ease-in-out + } + + .carousel-inner > .item > a > img, .carousel-inner > .item > img { + line-height: 1 + } + +@media all and (transform-3d),(-webkit-transform-3d) { + .carousel-inner > .item { + -webkit-transition: -webkit-transform .6s ease-in-out; + -o-transition: -o-transform .6s ease-in-out; + transition: transform .6s ease-in-out; + transition: transform .6s ease-in-out,-webkit-transform .6s ease-in-out,-o-transform .6s ease-in-out; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000px; + perspective: 1000px + } + + .carousel-inner > .item.active.right, .carousel-inner > .item.next { + -webkit-transform: translate3d(100%,0,0); + transform: translate3d(100%,0,0); + left: 0 + } + + .carousel-inner > .item.active.left, .carousel-inner > .item.prev { + -webkit-transform: translate3d(-100%,0,0); + transform: translate3d(-100%,0,0); + left: 0 + } + + .carousel-inner > .item.active, .carousel-inner > .item.next.left, .carousel-inner > .item.prev.right { + -webkit-transform: translate3d(0,0,0); + transform: translate3d(0,0,0); + left: 0 + } +} + +.carousel-inner > .active, .carousel-inner > .next, .carousel-inner > .prev { + display: block +} + +.carousel-inner > .active { + left: 0 +} + +.carousel-inner > .next, .carousel-inner > .prev { + position: absolute; + top: 0; + width: 100% +} + +.carousel-inner > .next { + left: 100% +} + +.carousel-inner > .prev { + left: -100% +} + + .carousel-inner > .next.left, .carousel-inner > .prev.right { + left: 0 + } + +.carousel-inner > .active.left { + left: -100% +} + +.carousel-inner > .active.right { + left: 100% +} + +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 15%; + font-size: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0,0,0,.6); + background-color: rgba(0,0,0,0); + opacity: .5 +} + + .carousel-control.left { + background-image: -webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%); + background-image: -o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%); + background-image: -webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001))); + background-image: linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%); + background-repeat: repeat-x + } + + .carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%); + background-image: -o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%); + background-image: -webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5))); + background-image: linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%); + background-repeat: repeat-x + } + + .carousel-control:focus, .carousel-control:hover { + color: #fff; + text-decoration: none; + outline: 0; + opacity: .9 + } + + .carousel-control .glyphicon-chevron-left, .carousel-control .glyphicon-chevron-right, .carousel-control .icon-next, .carousel-control .icon-prev { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + margin-top: -10px + } + + .carousel-control .glyphicon-chevron-left, .carousel-control .icon-prev { + left: 50%; + margin-left: -10px + } + + .carousel-control .glyphicon-chevron-right, .carousel-control .icon-next { + right: 50%; + margin-right: -10px + } + + .carousel-control .icon-next, .carousel-control .icon-prev { + width: 20px; + height: 20px; + font-family: serif; + line-height: 1 + } + + .carousel-control .icon-prev:before { + content: "\2039" + } + + .carousel-control .icon-next:before { + content: "\203a" + } + +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none +} + + .carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + background-color: rgba(0,0,0,0); + border: 1px solid #fff; + border-radius: 10px + } + + .carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #fff + } + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0,0,0,.6) +} + + .carousel-caption .btn { + text-shadow: none + } + +@media screen and (min-width:768px) { + .carousel-control .glyphicon-chevron-left, .carousel-control .glyphicon-chevron-right, .carousel-control .icon-next, .carousel-control .icon-prev { + width: 30px; + height: 30px; + margin-top: -10px; + font-size: 30px + } + + .carousel-control .glyphicon-chevron-left, .carousel-control .icon-prev { + margin-left: -10px + } + + .carousel-control .glyphicon-chevron-right, .carousel-control .icon-next { + margin-right: -10px + } + + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px + } + + .carousel-indicators { + bottom: 20px + } +} + +.btn-group-vertical > .btn-group:after, .btn-group-vertical > .btn-group:before, .btn-toolbar:after, .btn-toolbar:before, .clearfix:after, .clearfix:before, .container-fluid:after, .container-fluid:before, .container:after, .container:before, .dl-horizontal dd:after, .dl-horizontal dd:before, .form-horizontal .form-group:after, .form-horizontal .form-group:before, .modal-footer:after, .modal-footer:before, .modal-header:after, .modal-header:before, .nav:after, .nav:before, .navbar-collapse:after, .navbar-collapse:before, .navbar-header:after, .navbar-header:before, .navbar:after, .navbar:before, .pager:after, .pager:before, .panel-body:after, .panel-body:before, .row:after, .row:before { + display: table; + content: " " +} + +.btn-group-vertical > .btn-group:after, .btn-toolbar:after, .clearfix:after, .container-fluid:after, .container:after, .dl-horizontal dd:after, .form-horizontal .form-group:after, .modal-footer:after, .modal-header:after, .nav:after, .navbar-collapse:after, .navbar-header:after, .navbar:after, .pager:after, .panel-body:after, .row:after { + clear: both +} + +.center-block { + display: block; + margin-right: auto; + margin-left: auto +} + +.pull-right { + float: right !important +} + +.pull-left { + float: left !important +} + +.hide { + display: none !important +} + +.show { + display: block !important +} + +.invisible { + visibility: hidden +} + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0 +} + +.hidden { + display: none !important +} + +.affix { + position: fixed +} + +@-ms-viewport { + width: device-width +} + +.visible-lg, .visible-lg-block, .visible-lg-inline, .visible-lg-inline-block, .visible-md, .visible-md-block, .visible-md-inline, .visible-md-inline-block, .visible-sm, .visible-sm-block, .visible-sm-inline, .visible-sm-inline-block, .visible-xs, .visible-xs-block, .visible-xs-inline, .visible-xs-inline-block { + display: none !important +} + +@media (max-width:767px) { + .visible-xs { + display: block !important + } + + table.visible-xs { + display: table !important + } + + tr.visible-xs { + display: table-row !important + } + + td.visible-xs, th.visible-xs { + display: table-cell !important + } + + .visible-xs-block { + display: block !important + } + + .visible-xs-inline { + display: inline !important + } + + .visible-xs-inline-block { + display: inline-block !important + } +} + +@media (min-width:768px) and (max-width:991px) { + .visible-sm { + display: block !important + } + + table.visible-sm { + display: table !important + } + + tr.visible-sm { + display: table-row !important + } + + td.visible-sm, th.visible-sm { + display: table-cell !important + } + + .visible-sm-block { + display: block !important + } + + .visible-sm-inline { + display: inline !important + } + + .visible-sm-inline-block { + display: inline-block !important + } +} + +@media (min-width:992px) and (max-width:1199px) { + .visible-md { + display: block !important + } + + table.visible-md { + display: table !important + } + + tr.visible-md { + display: table-row !important + } + + td.visible-md, th.visible-md { + display: table-cell !important + } + + .visible-md-block { + display: block !important + } + + .visible-md-inline { + display: inline !important + } + + .visible-md-inline-block { + display: inline-block !important + } +} + +@media (min-width:1200px) { + .visible-lg { + display: block !important + } + + table.visible-lg { + display: table !important + } + + tr.visible-lg { + display: table-row !important + } + + td.visible-lg, th.visible-lg { + display: table-cell !important + } + + .visible-lg-block { + display: block !important + } + + .visible-lg-inline { + display: inline !important + } + + .visible-lg-inline-block { + display: inline-block !important + } + + .hidden-lg { + display: none !important + } +} + +@media (max-width:767px) { + .hidden-xs { + display: none !important + } +} + +@media (min-width:768px) and (max-width:991px) { + .hidden-sm { + display: none !important + } +} + +@media (min-width:992px) and (max-width:1199px) { + .hidden-md { + display: none !important + } +} + +.visible-print { + display: none !important +} + +@media print { + .visible-print { + display: block !important + } + + table.visible-print { + display: table !important + } + + tr.visible-print { + display: table-row !important + } + + td.visible-print, th.visible-print { + display: table-cell !important + } +} + +.visible-print-block { + display: none !important +} + +@media print { + .visible-print-block { + display: block !important + } +} + +.visible-print-inline { + display: none !important +} + +@media print { + .visible-print-inline { + display: inline !important + } +} + +.visible-print-inline-block { + display: none !important +} + +@media print { + .visible-print-inline-block { + display: inline-block !important + } + + .hidden-print { + display: none !important + } +} + +.hljs { + display: block; + background: #fff; + padding: .5em; + color: #333; + overflow-x: auto +} + +.hljs-comment, .hljs-meta { + color: #969896 +} + +.hljs-emphasis, .hljs-quote, .hljs-string, .hljs-strong, .hljs-template-variable, .hljs-variable { + color: #df5000 +} + +.hljs-keyword, .hljs-selector-tag, .hljs-type { + color: #a71d5d +} + +.hljs-attribute, .hljs-bullet, .hljs-literal, .hljs-symbol { + color: #0086b3 +} + +.hljs-name, .hljs-section { + color: #63a35c +} + +.hljs-tag { + color: #333 +} + +.hljs-attr, .hljs-selector-attr, .hljs-selector-class, .hljs-selector-id, .hljs-selector-pseudo, .hljs-title { + color: #795da3 +} + +.hljs-addition { + color: #55a532; + background-color: #eaffea +} + +.hljs-deletion { + color: #bd2c00; + background-color: #ffecec +} + +.hljs-link { + text-decoration: underline +} + +/* COLOR VARIABLES*/ +:root { + --header-bg-color: #212121; + --header-ft-color: #fefefe; + --highlight-light: rgb(9, 105, 218); + --highlight-dark: rgb(9, 105, 218); + --accent-dim: #e0e0e0; + --accent-super-dim: #f3f3f3; + --font-color: rgb(31, 35, 40); + --toc-font-color: #222222; + --tab-hover-color: #444444; + --card-box-shadow: 0 1px 2px 0 rgba(61, 65, 68, 0.06), 0 1px 3px 1px rgba(61, 65, 68, 0.16); + --search-box-shadow: 0 1px 2px 0 rgba(41, 45, 48, 0.36), 0 1px 3px 1px rgba(41, 45, 48, 0.46); + --transition: 350ms; +} + + + +body { + background: white; + color: var(--font-color); + font-family: "Roboto", sans-serif; + line-height: 1.5; + font-size: 15px !important; + /* -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%;*/ + word-wrap: break-word; +} + +body div, body p, body ul { + color: var(--font-color); + font-family: "Roboto", sans-serif !important; + line-height: 1.5 !important; + font-size: 15px !important; + /* -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%;*/ + word-wrap: break-word; +} + +body, p, blockquote, ul, ol, dl, table, pre, code, tr { + color: var(--font-color); +} + +/* HIGHLIGHT COLOR */ +p { + margin: 0 0 12px; + /*text-align: justify;*/ +} + +button, +a { + color: var(--highlight-dark); + cursor: pointer; +} + + button:hover, + button:focus, + a:hover, + a:focus { + color: var(--highlight-light); + text-decoration: none; + } + +.toc .nav > li.active > a { + color: var(--highlight-dark); +} + + .toc .nav > li.active > a:hover, + .toc .nav > li.active > a:focus { + color: var(--highlight-light); + } + +/*.pagination > .active > a { + background-color: var(--header-bg-color); + border-color: var(--header-bg-color); +} + +.pagination > .active > a, +.pagination > .active > a:focus, +.pagination > .active > a:hover, +.pagination > .active > span, +.pagination > .active > span:focus, +.pagination > .active > span:hover { + background-color: var(--highlight-light); + border-color: var(--highlight-light); +} +*/ +/* HEADINGS */ + +h1 { + font-weight: 300; + font-size: 34px; + color: #000000b0; +} + +h2 { + font-weight: 500; + font-size: 22px; + line-height: 1.8; +} + +h3 { + font-weight: 400; + font-size: 18px; + line-height: 1.8; +} + +h4 { + font-weight: 500; +} + +h5 { + font-size: 14px; + font-weight: 500; + padding: 10px 0px; +} + +.h6, h6 { + font-size: 13px; +} + +article h1 { + margin-top: 45px; + margin-bottom: 20px; +} + +article > h1:first-child { + margin-top: 10px; +} + +article h2, +article h3, +article h4 { + margin-top: 25px; + margin-bottom: 10px; +} + +article h2 { + margin-top: 35px; +} + +article h3 { + margin-top: 30px; +} + +article h4 { + padding-bottom: 6px; + border-bottom: 1px solid #ddd; + font-weight: 500; + font-size: 17px; +} + +th { + font-weight: 500; +} + +h1 + h2, h2 + h3, h3 + h4 { + margin-top: 0; +} + +article ul { + margin-bottom: 12px; +} + +article li { + margin-bottom: 4px; +} + +#fields, #properties, #methods, #events { + font-weight: 500; + margin-top: 2em; +} + + +/* NAVBAR */ + +.navbar-brand > img { + color: var(--header-ft-color); +} + +b, optgroup, strong { + font-weight: 500; +} + +.article img { + margin: 0.6rem 0; +} + +/* SIDEBAR */ + +.toc .nav > li > a { + color: var(--toc-font-color); +} + +.sidefilter { + background-color: #fff; + border-left: none; + border-right: none; +} + +.sidefilter { + background-color: #fff; + border-left: none; + border-right: none; +} + +.toc-filter { + padding: 5px; + margin: 0; + box-shadow: var(--card-box-shadow); + transition: var(--transition); + opacity: 0.5; +} + + .toc-filter:hover, .toc-filter:focus, .toc-filter:focus-within { + opacity: 1; + } + + .toc-filter > input { + border: none; + background-color: inherit; + transition: inherit; + } + + .toc-filter > .filter-icon { + display: none; + } + +.sidetoc > .toc { + background-color: #fff; + overflow-x: unset; +} + +.sidetoc { + background-color: #fff; + border: none; +} + +.toc { + margin: 0; + padding: 0; + font-size: 14px; +} + + .toc .nav > li { + position: relative; + display: block; + margin-bottom: 8px; + text-transform: capitalize; + } + + .toc ul { + margin-top: 8px; + margin-left: 10px; + font-size: 14px; + } + + .toc:first-child > ul { + margin-top: 0; + } + + .toc:first-child > ul:first-child > li { + margin-top: 0; + } + +.sidetoc { + overflow-x: auto; + overflow-wrap: normal; + width: 260px; +} + +.toc .level1 > li { + font-weight: 400; + margin-top: 8px; + position: relative; + font-size: 14px; +} + +.toc .level2 { + font-weight: normal; + font-size: 14px; +} + +.toc UL.level2 { + margin: 8px 0 0 15px; + font-size: 14px; +} + +.expand-stub { + left: -10px; + font-family: "WebComponentsIcons"; +} + +.toc .nav > li.active > .expand-stub::before, +.toc .nav > li.in > .expand-stub::before, +.toc .nav > li.in.active > .expand-stub::before, +.toc .nav > li.filtered > .expand-stub::before { + content: "\e015"; +} + +.toc .nav > li > .expand-stub::before, +.toc .nav > li.active > .expand-stub::before { + content: "\e014"; +} + + +/* ALERTS */ + +.alert { + padding: 0px 0px 5px 0px; + margin-top: 20px; + color: inherit; + background-color: inherit; + border: none; + box-shadow: var(--card-box-shadow); +} + + .alert > p { + margin-bottom: 0; + padding: 5px 10px; + } + + .alert > ul { + margin-bottom: 0; + padding: 5px 40px; + } + + .alert > h5 { + padding: 10px 15px; + margin-top: 0; + text-transform: uppercase; + font-weight: 500; + border-radius: 4px 4px 0 0; + } + +.alert-info > h5 { + color: #1976d2; + border-bottom: 4px solid #1976d2; + background-color: #e3f2fd; +} + +.alert-warning > h5 { + color: #f57f17; + border-bottom: 4px solid #f57f17; + background-color: #fff3e0; +} + +.alert-danger > h5 { + color: #d32f2f; + border-bottom: 4px solid #d32f2f; + background-color: #ffebee; +} + +/* CODE HIGHLIGHT */ +pre { + padding: 9.5px; + margin: 20px 0; + font-size: 15px; + word-break: break-all; + word-wrap: break-word; + background-color: #f8f8f7; + border-radius: 4px; + border: none; + box-shadow: var(--card-box-shadow); +} + +/* STYLE FOR IMAGES */ + +.article .small-image { + margin-top: 15px; + box-shadow: var(--card-box-shadow); + max-width: 350px; +} + +.article .medium-image { + margin-top: 15px; + box-shadow: var(--card-box-shadow); + max-width: 550px; +} + +.article .large-image { + margin-top: 15px; + box-shadow: var(--card-box-shadow); + max-width: 700px; +} + +*, :after, :before { + box-sizing: border-box; +} + +header { + background-color: var(--header-bg-color); +} + +.article { + margin-top: 200px; + margin-bottom: 115px; +} + +.sidefilter { + top: 200px; + margin: 0; + padding: 0; + width: 260px; +} + +.toc-filter { + border-radius: 5px; + background: unset; + color: unset; + padding: 0; + position: relative; + margin: 0; +} + +#toc_filter_input { + width: 100%; + height: 26px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + border: 1px solid #ccc; +} + + +.sidetoc { + top: 240px; +} + +.navbar-brand { + height: unset; +} + +.hidden-sm.col-md-2 { + padding-left: 0; +} + +.sideaffix { + top: 150px; + font-size: 13px; + max-width: calc(12% - 5px); + margin-left: 5px; +} + +.affix { + text-transform: capitalize; +} + + .affix ul > li > a { + text-transform: capitalize; + } + + .affix ul > li > a { + padding-top: 3px; + padding-right: 12px; + padding-bottom: 3px; + padding-left: 14px; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + } + + .affix h5 { + font-weight: 500; + } + + .affix ul ul > li > a:before { + top: unset; + } + + + + +.article.grid-right { + margin-left: 280px; +} + +@media only screen and (max-width: 768px) { + .article.grid-right { + margin-left: 0; + } +} + + + +.sdkversion { + color: var(--highlight-dark); + font-weight: 500; +} + + +#search .form-control { + width: 100%; + height: 26px; + /* padding: 6px 12px; */ + font-size: 14px; + line-height: 1.42857143; + border: 1px solid #ccc; +} + +.container #breadcrumb { + float: left; +} + +.breadcrumb li { + font-size: 14px; + text-transform: capitalize; +} + +.opspan { + text-transform: uppercase; + padding: 3px 10px; + color: white; + font-weight: bold; + border-radius: 5px; +} + + .opspan.opspan-post { + background: #49cc90; + } + + .opspan.opspan-put { + background: #fca130; + } + + .opspan.opspan-delete { + background: #f93e3e; + } + + .opspan.opspan-get { + background: #61affe; + } + + .opspan.opspan-patch { + background: #50e3c2; + } + + .opspan.opspan-head { + background: #9012fe; + } + + .opspan.opspan-options { + background: #0d5aa7; + } + +.grad-bottom { + background: linear-gradient(rgb(0 0 0 / 0%), rgb(0 0 0 / 8%)); + height: 5px; +} + +.footer { + border-top: 1px solid #ededed; + background-color: #111; + padding: 15px 0; + color: #757575; +} + + .footer a.lnk { + color: #9e9e9e; + } + +.refdoc pre { + margin: 0; +} + +.refdoc h4 { + margin-top: 40px; +} + +.refdoc h4 { + margin-top: 50px; + padding-bottom: 3px; +} + +.refdoc h5 { + padding-bottom: 3px; + margin-top: 16px; +} + +.hljs-keyword { + color: rgb(86,156,214); +} + +.hljs-string, .hljs-meta-string { + color: rgb(214, 157, 133); +} + +.card.fw-horizontal { + text-align: left; + padding: 1.4rem; + flex-direction: row; + border-radius: 0.75rem; + box-shadow: 3px 3px 13px 0px rgb(255 255 255 / 42%); + /* height: 100%; */ + align-items: flex-start; + gap: 1rem; + margin: 1rem 1rem; + max-height: 12rem; +} + +@media (min-width: 768px) { + .card.fw-horizontal:first-child { + width: calc(66.66666667% + 2rem); + } +} + +@media (min-width: 990px) { + .card.fw-horizontal:first-child { + margin: 1rem; + width: 25%; + } +} + +.card { + padding: 1rem 2rem; + margin-bottom: 1rem; +} + +.card { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + flex-direction: column; + min-width: 0; + word-wrap: break-word; + /* background-color: var(--fw-card-bg); */ + /* background-clip: border-box; */ + border: 1px solid var(--fw-card-border-color); + border-radius: 0.5rem; + background: linear-gradient(12deg, #e3e3e3, white); + align-items: center; + margin: 1rem; + box-shadow: 3px 3px 10px 0px rgb(99 113 119 / 17%); +} + + .card .category-icon { + height: 4.5rem; + margin: 0 0.2em 0.6rem 0; + } + + .card.fw-horizontal .fw-category-icon { + width: 4.5rem; + margin: 0.2rem 0 0 0; + } + +.card-body { + color: var(--fw-card-fg); +} + +.card.fw-horizontal .card-title { + margin-bottom: 0.3rem; + padding-bottom: 0; +} + +.cardRow { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: center; + align-content: inherit; + align-items: stretch; + /* gap: 2rem; */ + margin-bottom: 70px; +} + +.card.fw-horizontal .card-body { + width: 75%; + overflow: hidden; + max-height: 100%; +} + +.card-text { + color: var(--font-color); + font-size: 15px; + overflow: hidden; +} + +H4.card-title { + margin-top: 0; + line-height: 1.3; + border: none; +} + +H2.card-title { + margin-top: 0; + line-height: 1.2; + margin-bottom: 0.4rem; +} + +.landingBackground { + background-image: url(../images/books_background.jpg); + position: absolute; + top: -50px; + left: 0; + right: 0; + height: 350px; + background-position: center center; + -webkit-background-size: cover; + background-size: cover; + z-index: -1; +} + + + .landingBackground.searchResults { + height: 220px; + } + +.landing-search { + margin-top: 180px; + margin-bottom: 20px; +} + +@media only screen and (max-width: 990px) { + .landingBackground { + top: 0px; + height: 410px; + } + + .landingBackground.searchResults { + height: 180px; + } + + .landing-search { + margin-top: 140px; + } +} + +@media only screen and (max-width: 950px) { + .landing-search { + margin-top: 120px; + margin-bottom: 0; + } + + .landingBackground { + top: -30px; + height: 420px; + } +} + +@media only screen and (max-width: 900px) { + .landing-search { + margin-top: 80px; + margin-bottom: 0; + } + + .landingBackground { + height: 440px; + } +} + + +@media only screen and (max-width: 768px) { + .landing-search { + margin-top: 20px; + margin-bottom: 40px; + } + + .landingBackground.searchResults { + height: 250px; + } + + .landingBackground { + height: 250px; + } +} + +.search-form { + margin: auto; + width: 32rem; + display: flex !important; + flex-direction: column; + align-items: center; +} + +#search.search-form .form-control { + width: unset; + font-size: 24px; + height: 42px; + width: 36rem; +} + +.search-heading h2 { + color: white; + font-size: 29px; + white-space: nowrap; + font-weight: 300; + margin-bottom: 0.1rem; +} + +.landingPage H1 { + text-align: center; +} + +.landingPage #search-results { + margin-top: 60px; +} + +.card.fw-horizontal .card-text { + -webkit-line-clamp: 2; + line-clamp: 2; + display: -webkit-inline-box; + -webkit-box-orient: vertical; +} + +.landingPage ARTICLE H1:first-child { + display: none; +} + +body { +padding: 20px !important; +} + +body > div:first-child > hr + p { + display: none; +} + +body > div:first-child hr { + display: none; +} + +body > div:first-child { + margin-top: 20px; +} From 0dd263e2b8492afc60f22485f15562c179e94993 Mon Sep 17 00:00:00 2001 From: softworkz Date: Tue, 14 Oct 2025 09:52:44 +0200 Subject: [PATCH 57/66] Docs: add automatic Wiki publishing --- .github/WikiLinks.exe | Bin 0 -> 1921379 bytes .github/workflows/publish-wiki.yml | 59 +++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 .github/WikiLinks.exe create mode 100644 .github/workflows/publish-wiki.yml diff --git a/.github/WikiLinks.exe b/.github/WikiLinks.exe new file mode 100644 index 0000000000000000000000000000000000000000..19fdab4dcd329b5b238b9ad797a0256a82ac2b08 GIT binary patch literal 1921379 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%0DMujs@XfzDiiJUY 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

{G&{twA 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 z zKn1nrK-;LnElfE``xZQ2$IRfyz`(E%G+qbpfI(a0;LA*)1tXZv#Rj=oPn-$TmMxA2 zolOC5hk=`|&_*oSOcsU*ObiSrpg9&D8Cyd#*(}Gw9 zs@b6JAy8WgG+qTd#1?dvIB0y>oPmMCj)8$;CL;s*{*a4|;4|eJ^qCkKI6>_p8&G=) zVl⁢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

^LX|vP<}2m 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®z_(f&*$0BeGAHmoIkXK`!|$d3_dS@#C*v4 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 z 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 NRNU{^C$FJ)q2$;y8R z76ApUjyOaSQ#FVO3B&xSVCe-+3@kd1Ow}MdKLp&ilM-Uo2n99nAeuOk)C)0cgn{}- zcOlD%65#8WAWE64!N~y}I{DAQ=7R+C!@(&7;#~MV7aya#DI@4mbOt3Rad3oz;tAAO z1g-f3-%|?B4IoGBa6%m4m#GD@B|iexw}jXWPF-11T#%aq*fc~K8MrdFtf0Ax8Jx`E zTuA63xXVC+r3D&W0j*g;*vl-Ir7utCj%R(m!rj`0b_EBAxnVnP+kn{ha&r%9pZ0fUyB>_Lc%~SKN67w znDV1Q!3+s}P*aVIiA@ZW7Q{3hI2qW~nAo7%3>+z-@DnrChlb!CP)l41!hskLjdt{C z1ScV_Hb~eqGv%)VT^_}hznYnWE3-J7je)E23Il^Q=n5|Ix#ZOh3=GwvJO=d>JcsKt zi)gcg^EhVCVuLt4UkZ_V?t$FLT{ICC6X4q$AXZ+1^p2U>(R>Qd2>I_p6Hr=Cpi+#f z1{4(<2B6j}D6G@qeM?Y@i`r9U5z`kaa?55YC<@7jMLa7=tOF!A1un+I3hM3|au*!~ z34yykAglOTyujhj#mB8vb!UkIH4RwGK$N|uHBn z1X(m<*+7%BLadw+H5#mp4BFsJo%k6ASv2C=7`Ox&g_w{+fe8`{P_x7gCTL6WGa`ot z!U&?mBaeZBA%X#P$C|vHB;=l9hN7@s*af}}Od7(Vg)eO234@{}WC;VTPg- zBnfaCP}BnwVTWj&1Y&~^A!Yy{LJS?(0o^E4hZGm!Bqt8KAQD@W0~a{D&PY+l4T*jB zXdVtosDtYQBMv4uSn327a2(*Y2UQx&JV#p%!iEG|Una78Pz?i-WuC*t22D=jtN=+( zhCI;NhNLJnCTMQ90Ow{{-BAzs6SEgYpD~lD7Q{YX6((jca9ZJpxS1W1QrN-iWFnU~ z7epDe>jTSMAB-1iyf}IcXXcn^}2NN^I ztI&9v$iTqRfbat}GL*qZOwk9p6`+wZw5pB;Jnsx@Ux6A|pqqZQWtlU%v^AJBA+|+u zY0H4vpbQzor7cjTlLsnZ^B4*ssIzT3XNBdaBjJR1?BOuXW$Wt^ekD)-MI00OUK~hu@6AL&#Sh-Ze zQNaz41s>4ADJc1{gOg8RCPyS2IOp;*L*orB&cO*8(cp~a0*%m%@vw;*9M@uo#2*V} zxI@c{3EZ&MNMvK+63hC>tYrtO{dL%wH0p{N-l0nTm3Ng&^X>l#)D(0Sxdps)frfB0A;#SB0Tmcc;*DbDyH!ND!Y z!wLyCK9)#`&$Z*AUI&L0*#CW*kVG5F30A^|p#UPy%)t@?E!^26csSW2d4(8}3N=PZ zp~fj@FponE%~oh$;A3HCftUcv3!tOzo8kUI^~NMn+aK-=enyRCaDxbx=HOn*#&9W- zUIC{9ZP0m7{EQqLsi3*JG&Tk<4*dR_$f1SJ9Z=7)APi;J0GS5yBfMRJR53HNMKiO- z78`?l8K8E-Wd;U@7SPyj7PMfz0UB{mK;npH83uy;63j?~kVYM}N1?#az*aOrpP_)C zQ3Ev8UGzAgp#VuSyiE(b>mG7|JS2hZ1VK}JU#4LIL<2L#pL|gs?(0oQZD4xL0S7xJ!kor0p)X4=naIhA1lmD=P&l0~==q zz5s?fpOcY6TT9x2kpZ+92Xu!6bAA~pYk>|`2VK=5&UKFgH2nx(j|oZ=e0&V7*BKZX zVg1BTkY6ky;ZVB-90DM+ZY5~POA$B@R)N;U^RoS8vjl~N2WUqF+dnodI47)bB`ms= z!O;!kB1g9ovql=|w$pM@KtRh=(3+htP&ovNEiN`hxFOaR7X1bl$(l@{g|$ria~K%7 zGy<3zxY#r**ciAF%D{r+y|oMsjH+Vni!``Efnvn0!Oh5^onHm96qM&deU@%U2Bh`= zMc{*xK^7n_;b+R92(l>#v^Rj0jY*>#G^`-R1{L;WX5fN|Avpjf2y+12A`Kpp13+W? zYz!wE7#Mm$VeASCV`zF=1rBKtiSRcAGuVsV2y+q6<3SRXEMO?m0J)i$JwFN*HyrF5 zkt_^sI-DHr;GocE=U~^UVPoLpWX^8^c?A?`!YpjnAp697XMn>=kY$mEKQjZD1T@?@ z7O9GJF4Euyg;_1Qb$w4zjqM+s8z`PZiBXvK9)ln&DDQ&Cf*2T77$$CI5CqLNfaVfF zYfO4U<*5cABZIc8E{htdds+v|B=;26itEA280z^3aAIzRC1!9Eg_y~}AS%kB2r^UH zfSmzUAN4`f2q=T1q!IXz1w5q^yJIHz|ar!GdRH@CCDOKSQK%yvuWglhN?802qxKlME+o60EOoS zkl*v0L4!)n?D^54sAgf}(pF-IM7t0(INEi&n3%!Q&ZQ07g%9!#7pRP6Wyoe=U?3vB zGlQM40S*^VHfFF(wT0NA!XWb?Vu&QD0TM(@?~sh9#KhbPiW)6Y_<(LzpGY8l5Qc(B zguv;VhYjLE4mPj{bvU7csLjsK22R%y_waIXf&&K}z``tbt3ZR0(DP~_GK=y9nL+(T z5kXc?K^Bb`HbioV#wI+ugVHs~&7h-qC*dq3Kq*th1$6lfJb`f|5*ReZ2nHlObABr< zTWYi-If`wOsyI6&iRFW`4!B>z%FxZgz<}ze{5CcQE=0;lPI|O-m;k77Xa^OjMj9cY zRGl9Hs?lMbKoBSE!d%$#Kt#IIk=(#ap4t36>~mlUAry^ zb3SOnyABVtMklD&h+tsg(t@@b*ud@Z$)J2us=>g(sLNhtTL4~M1dn4{P0IP>VZ%3Rokk zW`Gzk$X+)UAp|m>y>1%J9c&l4Vey%NhJk^r1jL23F}WCFeh>st-9Y?+#T|&C(g0Uj zX6$v-L4CUX8K6QDR9=8H6;l4ual`boF;eItOhnd%87LHlz)XzBs0f`QxVw=5g7A%G!l{{SUY}BaK zh6f5b!ol8P!;&o6MDpjbF>oQp`~^PLhzD`CU=2?pNHqu^M*to6J`Lnwa9UOcdyb0@ zM^a|POv-HNNtvx~F4zp&5XE&f>;K=mHPK15_w7#{G*W`oon`A0ylQ}#MgWNWiR!w)G`=7U2H6n@Ad1d2f< zCxf`KdT%}h0|TCNRR(Xdid1@%SFDP#bJVQ?&0wMyq);)Wq7#<i!G$b{ ztHt(@%>&f>26wrj{U)O0sTNVy!K*(K;wg`jff1ZkP^v#rJgvnNPY^Mrc=`peCE+FL zq6Sb5OTcPRgt)3Wq7k^L0c4a`7@~X!Hv+&r)3rcz)Sxv>GeCO~*E2D&aEWoV2{CGv zGB9w}f%r@sU7!|24GRO8sxG@4lSU6{sJ)$mfr|&cu8mEjnt_4q4tO7?0BE%o2ZNRo zY`q$|Jy6sR3O3M^MXhUMV5c^0U}9h?nq0t8P`nsa$%F38=4t@h2DY+jaREa?{!%su zu7-7>g#@7e)maP-3^PG)1c^X01j1bL{AHj{5u1!S#Qgl_pp>x!B{eXyY4m~yeDZ4; z7`Q+SeRjOnM0$G6X|r$J;!oa}AoSzDcgte@oejF_u>5252BqFLpsrs7NCq^otgRsmYDBID zhe7^2P@@N8!UcGWgY4fIK&pu>K&>T+GH^wpD*)wWFfedgwlFX-TwsQ!*P_b>3bLYFrQ6dBI+{0n|y(-v|mvP;J5vZXjKNYbyE(N)7FxH3OhF6Qmi% z0d7A*ie65HUTtpnx=kR1K#eyfw==OZ=WhlFAA_&~2LtHRkvX8c5*&O*pcp8sVqz%B zf6BnX#RYL4H&YQPr?P2)(jmKe{uc0J0k0r&N3DTE>8t+1qKE^K7NLOV(`6dTHq+v5&^ddnZWBE!RPjXPf_4v(-DWBwqnc& zJ%0sa2on=j<06=avTzFpQ7r_o@)p-}W73$z$-t(|&ZMyu6yoAqTKo*mkh|SMZFClJ zeQ3hKAjr?a3^j{661>+4w7VI}#h^Y3XxtpCmIa#{H6~_hjeZvJ!9AdI4s4XrP0g6z@^K?q{Ytw)&mqF=rC|v=iE1`4~l&%5MMjHKW zphI3NL56|bF-#1g{Vb5RLYu(-U(hC|hAbmNHpr~00S8+qcl9t2Z}ltFO6NGxqk*Gd0u%gjgz1wr`be}RrwjjpjyD` znwte~L_`QPJ6Jn7BG|yvJfH<6;t>%cpcP}_OfJuBtOzxLO+3O-l%Ii3JOUbtT*hoH zETG9|W)7%9Ah(u4-O7q^D+{VyS>bMF*0>A~11t_@h3k(9VZn4LE2|e9GdSl&M1-)w z?DxXR?4YuMnZX&lW(T$pgbnH?eF3;fH7r2wgGX#SpiMeZX(LW3Lz|He9K2dg5c7f< z7#KkLN{ma4TbqSVJc0{uA|KpDRc>bEC+y6|+>kH>MUNIi)swF>9QLM7SOoKZ6(~E@5uPt{xihSk!~gJi={0vS*mU?$LyXEvkE9=7Rzl z8c*;LgtXbPyXy>z{B*Ljw!1`Qj1ac!d}Z z%Kt>T8ycv1&BftvW(H6{2(qse)Bw<71D7pYO!9gfFy}HcX))EQGcvG%w;5}QF*0a# zv#}e1Yg}070Hr}D22ec-iaSVS0*hICoS^Is&bknLK>Ao1K>eHri25Jq2Jqp=)v6$y zLHSYCScwTDq=pb;7Sk3(2x@ad*dRSzY`QRm*fjQlrd5R)g_tysgSsSI^I!=Is)SjG zg}G0cgGpTDENJYRiCJ9Z9EbsOALQ(6P#B?Uf|h3Dkz8Wj%;I`VV%*v+phYO`Pzg|R z$POvop~WGyjtW#xJQBQzE|QCl-3XK!kd?h)VrSDh53wG+?|LBv1H(c{yW<=a0~ah{ z5k`q|vxw`NiE(Rd@H0SdZf=uCH7G#|)$YT5&%+=#y69>6p{|vf&LFX5M(g9j{ zu`ox9BZ_uoCMGR-6!9}KLyK8ECRqDY<02>sK=R8-JipSYUfWOD;eybQV26(1vhO zQIrqrNq`QfM6`B`w!1SFfO}V<(|o{fMU7LSgMmQlhKT{xSAm2B3piIZBUEs)iR!Vi zutjKzB6OYw>4fz$u;>HHBk8kZf|w@-X-caxF+*8s5-_ebxTOqQ0t#p8Kgw4$H1TmE^x)c2?^RCL<(Eb83mGt2B7}Iel`X!cZK&1 z3=GB!{0!n65dLluUx1%M0?Oad05eh&yv!9;cEjAe3e>;e!osR2rZPe;)568Xn=6tpbi7-&2XMM|$Yn4f{IVJAqNR~?9A0-w5L<^x8 zrd;?7SEBKrnSreY#OJC58ORMLi%+mIaIx^Ja_rR=49h@cO)SNnTnubnb-S4uSlEOZ^G|`@#SU{9vxYzD80WiD-e=W-&3OFfcHz1iR}ZXcut_BZD;DUHVXW zag?euFi7)q>IiXaNHH>K3$w5ZvgBU^O{ep)aez+*1oNQoK6y_B;%-peONU*M73OqE z9V5(O?Z*H*0-6Dqdh|3dgVNj;P|0P+R047Xv&K~r58_79+1RTYxCu0~x`Qe;qWi&BmF313bwj3YsOvQQt{0sM#UvyJ?_E2MwgN!Qv79 zC|HHMo1h_HU2(O#Ti^v;w?QT49gtW9NCx?2z%8)k0Z!XG3Uzlu$`D%bA+&;IwCe7o z%0EEJgJeK!M8K;|<(R6Ez%n720X}yN)E8O}3Zv?y(DfxkjQ>Qd7#XD5wYl;ig3NjZ znr{$d(0B|g`9K#rJpnP8*tFm(wQj-kaqWK443}8#0T5MJz{tQ-dl1ab2Qd$UnAIR9 z8q?Vs*tEjxo`T)Zqo(l;#ApC0kxZ6 zfwu1;u1g1n$~#b5 zUkxJrbcMmTLV~COTsmtjpb4@4V|x!W`aEbER3`(2cHIY%B?yZ@!emt&Kr$L2H5y%@ zONTyzX39We46&dDbmCSLNa8antA7D4cj3{H25krW3d*FKV4Lf{p&I`kWc(s#1}@bG zkPJA05Mcpcq@pX05Xk2QRnosfodyOb1}<$zF^wNEXK2ZZfI~z}3LMQ^QX1G#;XV$E z5ILp>Fs;R;afFM34Rr7*xD1E1ZNT>oK+dBCjn0G5;AYce()bBFdla-v2HbvR1mE`p zQVZ)>p(y?ZR}4Ffdk(07;>D!H%M7*@e%Lnh>D))TkWS}@pTcbdN@k#R!_2TAdJZV0 z)uTh}(oaKsA+y9w_A_9h(h45S5!*Lz+l%)KSk7hfnY0^Q#SY{0cG# z>R0e#*2R}W3jiRl0(%>L6g9-}hOl$6(PJHQ4mMaT7sRt{kho`q=r&@~m;owgz_|(A zDb=Q23~a@JaGp|)Dvf+fH9`h_N;N2KnZW0DuY;UZ$N@Sh;1B2+O9rOezhGLl_8*w8 zfe35JfcFc6dGK?pSs0EoFfgnKr+YTY6&y^ZTnr4-Tx>c_Y+6jE5)2H|-0V7@U^!tH z_Iz{jNw?Z^f~@&_Kuk7479lps6&P%YD=-9E^TExEoA-DGSrJVfK^840a9fFoLx-J1 zLkpC(m`cMTO*k`%9qeMl9NMyi?3{ue`L@gqTp-#GbTts@Y7IdS@d#lKK@QG*du9eM zqnm>4T1*-nK|wAHYQMqvz3VY(M>6n$lAatBXhcL?%MCnw2;t-hgDzDoWA4-8g@`ie zhk!&N9EfZjn8VKi?jmbMfo>ZC>p~U(51Pyei-XRFwqamk*Z>MkaGnR>KL9C1JV9v~ zn%2Cy7}#`pnKWjBTrJPYpsmdYO*N^YaSPD6@FfNYhK(R|z$Y~qB^NRj=2X3=)w6l9qt%*viG$;7}VX2`={q{YTi069>Xy{NE|p+Jx|KOMA9BbkAL zOOQ36ft`UXpOKw`OAU5NFK1t-(N3oP8=wUYAVoYvY?9E;s%&iFbsOMS2#`gvY~XW# zHNY!o**IWgMa-~;v25(%bADkGiE3~O@QPV2B_&xX)tVqn+=PQT2x+gTY{ zm_Ym0*_bpy-5PFo9SL^u3N{@9Ncp470ZxvLpdJoeHAua#gb+h96FUPJST{tBDW930 zfs3gW)W+xGuml~u%>nL4@LJ4eU|`?`_as0|7%cl37#IXuz(EXZi06au0M^MAWCh;< zjJN?7QZ@w&vTAg(GO!7=39=O#GB6b6Phw>Nwemd}7}$guH2grZ${{Yyem9blfkBY1 z$P%9#Q;-@K6m3e3Ajg3+ja9_||Nrj_fcW6v4Jf_qunTfPdI{_rg)9tg!kl8lTow;O zKHwDOnkCFF$equ^&cM}YbsUuF1-Zq*d!vMT1bIX>;z133W)W>pK^`U%@Lj9Iyn?*C ztaoRF^z))P10-~}8Pwk30}o&b@yp9XQv-idBWMHy9QXX}NQr_Ud_fB&QSb|LqsZjI zlLo&aU;YyY(4s5wwvYVTpk^I-hciDoZHV`RssmLqLB2)#a_kIj_ZS4Z#3O{c1i1t` z`!elC{{R0krX>hE#tM4pV;aLI2}W=~iGd-I(Rm7E^AqTvCD7hj&={*2mo^u3{sRUE zF7Uh~lhG$o`Od=dh>?L|GpK!=0b0W+#x2If2F_WvJ6IW5#CR>%fll@21Ru5yN-6SI zrV4^A@=DfsK;gwAuVXC;jz4)TYd=N?1`E&;CxR^Uv8IB8Eb`HMG9b2Innf5yQMDeo zAd7shUZ{mDBLf3lHOLM@mVAHEQP~_;_HZ%C!PxBL5vts5)jPp!q$JeX*#5C)f)+@z zvNLe03bWUOBm~(te7G3cEI`}sIdsh-M#8j5g0$~K(w>E^9V7wO4$%g4iN!VsbjOJa zvvLZvX|oHmiv430W))-;GZbVJ1RWzT%mxk{`53*&f~>mr9Af_%d9*7~4dl>GhX_C& z##X%>$x+$Jjsi(Q9i?pq(FAiAhpr+-09@`s$~A31h!9K-cp?OP)VSNf|NkMf;BrXo z6*IV?V9IA>2kj9Q*MjlEg#?5HE|7FULoi^q`Rt(5QA|sYSp!^+gU-zcw{hi|!Ie9_ zpQ#0DDxX=&w?bjZ z@;_%`fF8^L3!(*!%oTEDT&)P>u%347dk>K{~s2r$CpOg08U; z%g<(JV9V!ZXW#-0GUs!Fn5UT-SXi?1xnXRvd>)X`AY&6Q3=9lgKy_I$8xsRp9Z0PP zFFR-%TQMIy0~cF9KRW{#_dO-hQFV|Kj;CmQAwvNNq<{deZsRBxU}xZ}V%LJ4B`Cro~fz~PUG9d5c;{shn!3Dd@3D)sh3F`RdAsXOd zS25)avNLc&7L=MXfrXgCLRt)${d{3| z(AoQ3MgDa?u}(&VAuv4!-BX}6cqd@R)Ad!y@V(q9gKvY1dY1xh5vFQjF<*G3haDpc+ z!HGf(!iMKsP~C07%&?P@0fYsa>SWj%xHM!T9_$5suucw1=qN}CT>XJp=H!9~__K`I zi;k**_e}jRg0(0488kqWIo#}^^(de;#$dwCo(kn&5K4B8=HbZVIcvQ2~~bK~u6K<}VJ-ByJ#9PczAjsLn3tC<*&(6RFYP853;k3VB2e5x7che3REwzy z6n8KoP@HOsWpRmRaf@Z~2r>T?^PEbP)q>fW;mJkn29S^r4SVBBhqxT12n4xX2>yBUw{dK z8Hm}OEYJiEi$)Hp;z6Cw0ZlV8X@E$LX`pEbA?EySkYWuG2^PXWo3j(!Yz|m34`j(D zh?&rt8<6qfc^TNu4ajh)9Eb^)OVk3@0iZjrc7x^}FN5Yq5ql!Uc(i%yKw=ysi@^H^ zz?{BJqgUV=aOiFbSQ*U0paL!1VWFj`u!@y|0eq7NXr*x}c$|z~jR}1G19%RFnW2|~ zfng68yG40Kz`a;+u$|zZtRSn7xgcwPG3Zb-BVA4%9?m{cmkh)=0*yJ8@U(MfF=4ejaG4p8F7F)93qQ2h1rq)1MNpZ_jgn@K9Z*u|Np<9i;Y>IiJ6O4myJoI95fKB0rM*4^m1-iQ1du|gNjLs~J!-)8b6y-OGwm>NLo z0A7)>!PCutP~2U|l5Rj^@N@&>keqJnK#AIoNuwT~ZvHbcFhau&lx_}Su^W+YKz71{ z3Y2cj(b5fw4^B6gh;#$dgC*U7B;e@=#341^90bQN?sU@#PB$>GvVrf!z)UwFRjBFa z5ZGK$x&gTgXSxAN!U6-7ZYq$|4Jahw=?26>q#KYvaJm68KNEGz|yp&#<#;C@?Z;gH`CUGihjnHGtmg1 zT6FBp#@-LIxLTW?fs2O&tW8G?LPMo$KvJM86J$Im2f}z`CJrr73yz(wFVko{__kCo ztuiLC8^H$YaxgL1f*c20ys8WG47lEgjLjZJafd3@GO#-!n)#qY%(Wl~AZ)s-1zK_h zp0@fmn9M)PxkR#=oszF?> zV-Onb8XaY(YLFyTHCP*1LB0`4Qw>P%KT%NNXw`vkQ#590;3_s@XW$a~$7Tv*n}G;( zkjY?qMMehgVoQj;5{PXLlDC1&D}%)BAo408wgX7s5iYL^5_5*gtAW_AAbB^qygEqC z10t^hVtaw)z2WkjATeKvycUS<50Vc6$;&ZmtN@icp#I`I5JQehLmM=93=+@*G31y) zjRtKkkboXkKp#Yd1Pnk7IVKH55DgMA0x{&6G>kzsNWcWdkYmyagxY2b<(olib0}>A zr7b};sIS7p09*6LR2L5Ffq-T@BiKPl|3reE9|aO?0Lj!vgO~{E7?5-kL3!z5UIvtx3Fc*icQbAAO#!77LXkXM-VE8)su zuCIcaRSi-qRaXO{Y9Uk|h=S&A(7p{&|EKOOcn4z#XfUguoqzMY z{$a{*W@q36XKiCX7N-0bb_T9S(8>*QEvEcdc5w4w_X^8DQIHtuIuP)hPSCl)$3W$l zh=_(YXgN4Lvk;R;8>q?6$-)8FFQ&!JQV7z-Ufj;kz{ShN$qrV^{*O`YA0ro=?qP96 z;jhsF3RD)2P7uYa(FF=d&^0q48q~t>1~EX_%z$W+Ko5ukx@HDMg9Lg(jHKcoeg-yG zrrLAhAnyf*4GU+P7J>+Os|y*1FmBp1HJl|a_pf%sf?AOpFt-VS0DD33ETs6*E#*S!SY5oOEBpsgmv0NDt^rU9ClSJRjTa-qg#5UCYb zJOz|2K#Gf}f>hh|I{9~I9k_3mX8+bt# zcruMk10)O@S7%~K0A&i$UJTHh6DEx}oD6IN3}6#IgqS#`F0)!}J)&Mlz zR}4OS80vkKdet3jd6fhON;9w}w z=m)QW)tC#)dvcJeZY`<0_aNP7%q-wV5s;+|p!?;@L6??+7~rvFP&#J@@7)8fe_+v3 zVF5dui%o}`z&x{OQI;v1kEQli^uhawTMzBC>jd`Hbj!D}HVt_W(0A-e`3o)o#G(F5L;BC6#K^9#Oh{v^AizM9{3SjPI0k5?=3EFd5@`izdk&Bs41Uyuc zKOZ!1ab6eBn+ zU>zE)pw$E55I181Eh}MW(Rcz1QgC_4%pe6iuN8DZB+JrCAPa;TiY|i+vIU@tUsP?+ zK-#>RS(d7RR^t8TW?+MODGFpRGt1IO&?>)waA8Qig3Lb+8cSwb>HszWI>`KmaPuMR zK>H&=>Y!%fPz$xHWIf0#FGdC~hzs1HxKGUp&Vb@qmr;vlsSqOr zBUfDxGXo1~YMWK#H!A}hH(L)#Sn2=&`g$-6JQ}1cju8Hj5Y~}p7Gfwm$HY*;4q8YD zPFJAr2{fRXg&2^;7oo%fD+B19va@ivfQBcrxCJDv3?A72|GpkFh6x(5(v@Zdb6`^c z!91{2vARhO9(ky4x(`~q0ZwK`DJPJe1)X@HZ$Yf&9nJpv%C(Z~-(o6wS`SCax#Svh)xG z10(1-=Ov)h0F=wL*&wAK7pOSA3(*R0dx6>p7eQ`=v z;LQ30q)QK6^XG%w5TMyg&|*O?sF*#dQz6H!aSWu+47BW=n}JPZ7HGAb6C~8xnKfcT zyWp9%5CV%p^2}OX%pl{yvVQ!G$eZfHVscQOpqtY{8bB9bX^3+(uz_|Dv1mwuSg@@| zEE;?uZW2Euix*_;nSAv>MpYf?ZfJ0yof&-RJ7~Wabkh@yh5$DM8)(5IVmB6epXX}^ z28K(Z@bTi}hg{>!&CkdNF_(u!UP;e}L%v!s*aEbt0bwIZ##jlo`Wf(1u-IdQOwh4;S@7CfMO;;BeDvJvGP{NFHjVL&&~oZasaJoU}j{?Kuh^y+bgIyP*rNO|?z^3CX#2_ySJ>Q9;=sqYPfER)=$m?k6gD>DM`idl23lr4m zhphmDoK9c-9CXPaINn*nXBI--1dUFRqYz;%ucIe`#G{MD*gzvMpmIV6+D?b3Nl?1R zk|ygJ85l03rb!krc4KZK=21>_lkRfGI zN(M0_g;~I90krlBWRgCsAd8s6K9qEd+qh_BkQosmZ^wd}BpaurC&D3Ls|U@XFz?(! zu^(K1sxmMzTww&=xA0H&7y|C z3mfmfx(g@Z{fA!AF+r+gur8&kJ!}itCQyS1bV#T;q)Q3n=VyXWWCA;Z8%%;7!X(V1 zD#*eHT6)3719l7tJJ>Po##h*Q?+FOAf){EDvVwP+{gdK^%+-LJ%#Do<0-!cEX#NLu z|Fk5iU8u{b#lWng#>>E_%XH6=8C->Ov7xOy*5zOWFKyQ55&6fq9Mtb);ALQ|1FaS2 zhAy>c&S&IhU}FcbslCUhq0Y;|2D$_avWJD0At;=I4de!+x(}d^cYY426?Y2Up-=-0 z?CPL+lfsA_u$YJ!3G zID+mM0@({T7%aP7<*YM=y#yv!VA3uK`MJR`^ zhtbgDW?(~IUk*OMkO|y|mImwN0?mnl+zDC-4Yuzp3j-GyTmCU-1}+U}(D)tlQXY0l z*}%jg$-t)$nfn9nlh$EiV2}az=|I5;bvM`?Ca6Ki+zf2os0KmOA!02SY&{joPEgtg zt%nBn0YQ6En7|!&9Z>BF->KR(QOhKv#iU`z4cc%58qNW& z-7*EWB*FJx)i5wH$btM{3i7%RClh$378jcqBI-3RgARljbqH&#pK^wd<8leSpc(xcPY#}PsqWoe8*eWpa)Hr)zrqKo_4JOc%G0& z$Q{i2N}$r8iCK#&A7n9T+Q|}ftRCpdJ6=wZwJMwlTbUr1339+JV}@9Un8!KD%%mX< zx=;Wd=d28%`bH8|-+Y7SOYm?Pq`twKFAD=;^$joVAX;dB1LEhO1ErNZkb&G_5Z_wS;X#R zjbQNZHpq5bom3hN8}e2%(BXoRV}rp`+Kl30i#CGX4)Tx|dp=|zw#Fuq zqc=k)y0*Zj5te8iVrF2|6+sfX!N8zxxf(P`yO@Q63)HQ#03|KRJ_12j@GxxAR8YDJ z2Q3>f5o86Qb&pmA>c&9DAxACxL3yCf>rjWsfpnX(iD*m*t$tw^WCiU$XklRBLJJyD zqY@f89D;1zf~-8+0+8mXAPZ>Sck=)L|2d$ha6*mKW)wpY5U3Ga92(PE8Q2=Of>&E& z38ZcCKw?9vWCMFqV>?n{?trT^Vk+7U3XYwi^kT$RbQ;dNcHs<;3Xxd@Ja6z5E)8kq zf%sZxb)fiyWeFu_CJk3mDF~{|WEmJ3z-1t4G#}&z=6ulh0xpOSHgJOrk_VU>B%x~S zaH*@(&;T`g!F$#q?E!GIhFR{Ht61yYoIa>R43)TvNCXSY4fq= zyRkBGaWk=N>;^4hh3xHlgOy^zrNL0%t{Kd|IKn5}Y58aAMzIT#g-sNSm_JFtz)F!NAU|_g` zuuqqX4Jm7aD?gMP3qFMg?px^yG9gtt$3bZa=3-%pi@~nrVdFq{)l*bg!NSa+K|T-S zE=WW%X@r4#d?!Gr!bA|s2;_EK1_p+k;P_$^(JJ1F9AGf(-5D9QLDug=1PX@r&^Qxf zkT-^fU?(q(Eif~kWBtXP=gW? zU>EXXEdz)t5}+kFpx7)v4BFyxiGe}8_y}m%20{ycA_S67PB6$nhlB^LjSt%M!lVms z-hHJ=Rrj&NFij(9%Pc1l*Vh&5CwF~9wZ5>m)OH7x+iRlU`F@eHRwE-lf6$RD=9jLepk_3k%ET@3Zywv~+L)*8Y`yE01WWZw& z@Hu<1y}3x~3%dCp6usc|4VlD;9xV(yDu+qq8h9BVv?}6d(@5e5o#zUkuqQOv4+?W?&IB zlw&Spg-!m#)F4E_XUvs@3<7N%I|O2Uf@ACG&g`WgX%s5W(LssE@n1LBwapbf|v;k6Vr>kV>ZHfV<|IKqn1 zLY0|iDPkfVizH%B9E&7kdK`-+Vx}C6Bx2GWizH(H9E&7k;v9=4VxD~!rawUw?7Hkl zim~9`NY~O}2@4btpmlgUm|+N=c1O&o6EV#$0h?yWGQ$p@en%Gv*DP^XTAJJK)3*n@9)Q3%W0vym@p)X#omz)G2kOLIP`1G8LLvNuOs2djRTp z;^*1HWrH4~($|8ry+B=dIcALnkbC5q!F3&I-n@z#e9XPB2ovhW`CO1X5iKuf@aQIJ z(YOX!h#5S83p<-lTNHGXDflpPjf30_Y&!hR;t>LjutQUg9zxHL1Rog3&%mq-l7-In z)I zr6GbW-24p8Py;}7-w7f74D8Ha;QM>I*dxUubMZVvOyK(!bfL%ib7(0s zi)pL?1u%%Q62t(LG9)uGFx*GVb7I_LJm4L*ycX(A3=I4X91tH1 zvoPzZ39_&lE3$Lw332i>uye3O9GGta>PCPk8MrMzLk^CJad^haz<@&~H&`v3&2dH) z^95PtlfcJNB6CkFg>BS1N$md16ax*Y6STZm$gfJqoH3C=+C(*da!-BN@fPDae6lly)?SL{^0%q+8u@FnU zwt~2zb`WUq7HIvEwm4!L2()AaFB}PB@q!kEM)xq+C{;t(C}CL#wjDDQg6sn=ka+;g zZ;(Y`T*TPR;>C?{9B4@xXi7w8ypPAz5@jfEg@p{Ui-6XyW?M;E#V zg+-7BT({liXJlvbf<_k7>DxO&MnL*$ptDkm4;ygd$KnND2L)U01t~q`LCd`mp}!ku z2Q$Mp1_p+Qj0}Rrg#$Dypmsp(cC2fyxY%@bAQ6aZaymo;DQ2}pU`xdq;Y-CBk(P=v z!j_6LA}tkTl!q=AV=O`}6=MYLYvF<{6=TzyhH1GVhUHpa+M=)}Y~ZNU5rCLe}VEdj0Z0v}SrDIZITB|3UCobt7L;+&9RM04F0WY>Y_4Z-6K;QAVJ zI=(KmAe$CaXo1QKQ2*#LbWPYL@R~3X*}%lizyd1><(1~Dip$5$Z2+}iv{o_6E9faR z$#WX9GRgBAN-`-d03D|;$fVE;qB)rqxD^-}{xNEaYk}Ggrx_U-o`Bkzx;#u^_kf3u zv^0|08Q4_wWk3hSzAX!^8m&1#J$P4){E?{k(tw|HA@a%ZW)|!HAPdzV08B82An~P&|Xi%btST#o(Ki zKnpzVnApKF!ovY|2xv(sD~Egx_&9GJX%2ZCP#t5Z$Il_JrpLu0Zwsnzz_O4n#YX$Y zK=nBbc&`lT9sx-%ZFwen{&;R?HgzOT z+y+nzMHNh%+W<p?3KGyvlme)H0L?go8Q?SF;u#nio`dQK@GT)s z%o=w{po44}LVI^*mGXs&)S=sZhi@m|nuysB8y z4GV^XMPm6cK{m0A&EjEW7oVl^hMR${_73Q@Rj}P0Ld^MXpj$Qti*idD3OK-Lib0#+ zY}Fuj`Hw(4ZnHA5a6;S(x;U8aAKMbp9IXdvooN90&I3Uf@G8r?Ti|mZ#ntL=f~Rs9 zfs{e+_XWv-@AnmEg&O^Yn}JP`Rf89F7Vdp+P(NOfg;S6Xd`PL51`ES`7 zxHvRG=Q#4Rv2!j0SHR3*3us4MG3X*9ji(?!E0}M`#K5KT9HhLANdpuZ z`7xk_d=0?MUqO7a{FR`YelLhDGnfZCml8b2$;xnnfq~%_DBWR;buPBPObI<^5pB@D zDBNspeVO8svv|PgEc0^6+vh)IX5a!1)r#t+aex{_;8Vfm)x`3Rm>9T(*~Em|wXFr& z1lecF+d{=agCkT4&`GZhg5btA7h66P2Ll`EQb)FY77$CApFzW$6?F41=vq6C4mJihEoSKL zv4=rJAh7icO$-czkR}vlO>!CogEVN-!Y5FP_yJVDxiJ-i_FO_{T(&YXaA`>!urR!5 zVqka;3TyBvz7BVt4=V!~@7-HW3=B*~YfIr*XY(-??S=DngqSqgc^KHlG~RPFu<_nq z!^FS<@c^X7R&*LviDoh|a2e||K`i_TIzx_yEuRhKD=tA6ag9J$NJPO5Ne5f`8Pu`` z?Re&9*L8rJ_8o4T9>f4$UL;esp&WS!jZf?hTrlG#m>3w?b(zJq8O3?n^1rY%uz?~^ z0@BR@tq6o+(2ZJ5keZi4+kr`lRf7$*;o3})RU?lLiK>g+(A84fz35bPyoCJnH?TtZwhd%2+Y&H@d&GppTWV1OoRT@D={4hcOLc?WG) zc?E4oF<~BP5@#3Wkrzl1=3x>M2y;WCTaX(p4~^k_mTFM@ zd4+f(_HzmGLhQdM`%g-kPvb49GbI3~m<0Lqzk-6~9us&!kt68hP6h@BQzi!RUD2UT z3=E(i9jK-T)w_{Q4B&H@wlFb(@89|a8hQjtfc9%LF)&kZ1v3LZy-~%6eAiw~+tCfi%f`NhIEodJv zs3Xq>4P$OdH0Ux*Xfuj~mcxGIW?%zNNP$w4E*EGR5tPh0wb&)}m^ieAn7|<{%p$}B zzI+T48O7idM%aLpVFeQd!#hxUq9X+HLJ>T@=yMBkK+`OT7P24Yn8YAz#UsJNBfy}M z!_L5_%gn6JC@#RrBp(7PU_nK{xG^V_yaMT#)6BA=D z{>je3rLDvc6@#mR>OrW11O}*@a+nM%BgALPYePIB3_dkd!kAT5m|a_(O?;NTE~*5x zxG+2T#7RA75p5PhPVrg7T!Nfpv*fLy>cFQ*N;-6dPVMFvnUjlu#bybyKxKGACr<_m@`}%rlsCx#1uByH1o^}y!J!WJxiG6BA2?Vf4YdUM zB*AG&m|u`z<3BS47c?+c90d8nYH~C_FfedM3$qFF;0ieoPC*tyR%Q)Q*a@;h4Pao< z;}+r(WYhQ!asiJZyH1)Qmrjx(7pgZUjKx5QWP;tr1M(r5#j7nV$R#F$a59e|mju|I z5NRPEL3WO)9F0FA*ihdT6b;)O0(ell}m`B2wd=j%0G>N zpsLf12`nO_0j@T|`fA{T42*1Ac&bfyCJi>w0Xg0yRNd6+a9co^7<89_b(9WVr1_XKL_YNUf)4C=o@?h``Q1F`{K z4@fODLoFi%!v}bI$fUu^1FFH<@?Wttuz{OHy2AVnP%a`d@H1#IaWHU!W|%=|2a9F> zW7Ls?)N;B){0xxt4xwC#QG=O-flF6Jh!K3&u!4X(14CABa-mXgLiuDX1F& zZS6_unLt@Ol1$)4$t%PRZazR7Q{Y6&&rq}$lnxM9@iP=%MHd0L9wqeDVdn8bqYWJM z{0v3RR3Qg%~Z4&Nr)9J1RW%dG3JCG_bb4_B(DiNH-d|cP0UCR(pm+#yx71ES1=P&y=XHs zaYN*xDO8Xh90Cdrpe;mfAoJM~8I*@Z%#f3v16;yrvx0Bk4DW^so8v`5YglVw; zVh#=lE@5^dc0pDRPLNU1Faymbe*%RWzR-a96zqMBkiZiRpr*7Ib%KEd>PanZAs`5q zgol6@!t;Wx8r7fjAZAFuXM}VTcsV5^U0Fb_UC@O|3=9lL z3=9mQ19Y`BnfMtY=MKSh9C)%r3nUJ1=a{hxD$P7Lr ziCct+pAnpW#q|s!j?)!{is*8H6A_QLUY!GIASU0Rm4OR#s#7Z)0~?RF7*qovTRsP< z$Hi78S;0`i1F4(9wlJ}SPyON0VQ1oi2o$MSKxZ$&XVo%+XEtI%;RL#(hl{P4oeg}3 zfCgxREaXIQ9^~x}kTd)RKxg>#G6=}R*3+{vfF_x~g3JLO3?*SK0SYki0Z!n6;o*QC zk;Koa!OOwGRTl#~)f#lVyRI-)2;nttMiJ2LB_9U^7pRfS&%wZ@QO3r=#*OJUHXU{* z$ZfvZ-C19WhvFb4xy zu?VOb0PQ0HT>$hA)b9}GVBi9c$%}D-kBs}rCJs_30aAD2Hf(SncBv^7=q^+Es4Dbu z!0HNyf;vf1fWBsCV7qXVkpZ&rG5-t$16K)%%T))mg&Ry3OMxr|9}p-Fii~=Y6bHLT z5O~=88XK|$4i(FAFmN@1RKQ$t0kk#&JZ=hd%5Rth7d3z!0A9xrSx@{OGzKUO%Ia*) zwQ?XU!IPtG|JdX~{sZj;&`w+)z z($)esYG5nfs*T-?!8?$|xa*WaHV851-{)aq<6&dw03Xf=KE)2as|POsnumc+jU77Y zWORZpUm4^Eura()QOJe#?ochP`7e1uV}YE^f^66gWz7c}sv{=ID#&6izzLf31;vmc zJJ@EBsL^Ilh&_55!Hf*r4IsyAB^9fHJjzt73QiqrpilvAodAa+D?jP zjH=EAp$;Si>Q6H>9AIEz_ytNsrXZIhhUB@~!B^+%N*B$qU?^Y*Ur1848dMmAjtMNb z0gcVFUvPl=8L|Zov^ClcWD6+SX|bbi4c1YpGe>oi1x&4K14u@TJ%2T5XB%4`$jco0 zS9uuNYArb!xY(*eq>dyThlUj>qg#W-{;}D>v}=iIZDYcfpurcBYJtucumzQ*KR}C| zjG*UOf*h*_Egl9o zRahots{>22>F_XV*n`}16XX^qji;a^we&O`KvC=nazs;|6D**d!BOl2@+m0Qsy2XR zw4~~w>ReIPxgpenWWZ^hi6McNf#Emk{%lZw0hcKnR~bM@MnG=8wp`A{z<`K(4Il9C zb;(Fq&>{m?1_lORMh5Uc3{X`MIx7}5G!)6ez>vnkz);M| zXbB-`IbfYTs`ETR&I6?l)drA^mdHOgPnZyhcUawBM|Z+8LhfVRQV``JV*v|OB!jFKbP^+qt&ON! zn-E$-GFl>9NyW_|B}}y~;6l3l9aN81gUAb3 zpz~NEIS^d@LW*V`1#tDt237;9gRi63!4Rnnx8eQ-9W0{5%l41017tm@u+@U9xr3>u z6QPDZA98d?Z5PNQ>qWH8AXPH6#zasJ2tL~lvOvjp{%48=&DW zke4(jfkKd(O(PVvDF?1~GFU5EFKCh6Ur;-@ZVD()K&_>z;8>Xkvs1MJB%?7MYEl@; zBnI%P@@gpu4ZQY$2JRQf<`z@4-_2){X{mk7d!A z12TY_O@kk_AsT#+5ojOMe^45j3zA}Et(}K3n}zKk+kCj;3&5TM^T`NNr6QO%cA^1W(KYc&tU4HZB!7S z3v4Vmm@Hljj#(DA{AC;rT=gLPIM_8Jz>U)z2>ZZ&2^I#>I%km6Gz=LSv>QMvrg%B1 z4Fl392|XVIwI2gI8V{VO7O6^HKtL$}*(Jy}3!Djs**QQn^Mb744$>m93XqdQ{USAXPW!6=|Nlb{qhkBVwh83_&7g!3 z$;hD10Y2ACOAiuNAiruQ6>otA_f~LlZv&|Z2R8%gto4_m^{1fl*$xUHHm2GgV6TJ7 z3yoOIDofCHN8r&@wrY^F{3y_Q3miI399j^83;GCspaX&gF1&*!M~$7Jh(RcTXn-7r z0E*0AAjg3t6IvdEEdX7TSY!(dK181cq7!i_1EfI%>X__?n*mkR1MA=+)a-$)xd4}i zsD`-3@xptUlZ&cB7K5&6=H-NCGl)`1UgJfiZ%z$$W(KZOPC zgVT|0vv-unb4PiVMr0bN}PaXV;C23(gQrD$+?gBSF0V{>~s z+_j+aCeH27U_G4R?y4{=m?Ovn;jys`u_8rh{4>KeRz(yceErN?VZgx<@W(JqMC7?2c2kuP{ShC`^m;_n@4@*2Cp9-^p z4FkCc98GLckAMU~!&Sm;uu?aQU62J_gbK3@vU2L{LiMrcKj&d!;{aVJ2|hNPp8>Y( zP~#Y=w_d`)z@;s~A;``S9iqwyi9j_ofJdj)*f{OeL8q5#f$DA08Z{138G0O)L)chq zPk=HVYwbxymCyE%?G!8vvi)N_4P$G>K$;fdHbX2E0|O^&_%TD;hq}DbVEV|&Ag#?= zd=@kj!Y0VZRR`MakiUWlbo6{FCj*1DjyAiF2BMRH0kk6mToXeJKX#`4r92F5B_M-f zI~h)cW(lM(u)>a}LBtbSlQyFmPyShgYIvC-aV^ZkB*+3S9@t>7+3_^!I23*5K@?n!}16sWpIF_RFFfE zRo{u9K@hqpQ@+~RM39r2g%upipo`QkpMn<*4&%wZD z0WuV9jt-JJ(Z+IYf?OIoOblFtoDfGKbbt~ln;;jb4jV|H5kD(biN)ZjbOKtX*aW#ytV0+JHH!t3TtSNu?CU`nXhZra zoD8L)IX(u^USa6ymzZHXR1X8VZKN9kK6|+6fdxZ>B)AQvDkfhIzI$VlsyH*`EErw( zqJx$U1=?)P;Ktb^RS70BsCn{6MlAA1+OV-V5E%#5R=y0&Eo}eTuE5wDSHT4jDF1=Be{wT{&W2_Yo5dnNOXC`7 z_T)OqFd@eL8=yus4?7bxD<4b#O^_y}%6%=U8GQ@XdIB}0Ss<%V zeNb3aL^4RskZxDwtsHB!o@Sh6yths7>+= zr2HS-bC5g1jXiJ}v4XcQ^Mc&@0_09MmfDvfg{-x&5Xphbuo`~2R4tbo-w7z$uV?+P*f69wgTXqx7=*Z?YX zKtTkmZNP;XD>ytrTyP-<=Yb0_HbK^+v!M1PXoIiDLQV!Y9RU_-tpYB`xV3`?S&JmI z7z!XA7l;y8m=ciPJlY0=tQ!8HwHRPi;u#sVb!CgLRx%Wz)Y#yqGQ}S_7`Uq7j)1h5 zIPE?E|Nqa44^e?+3+#|t^w35qG`?t^*KQKo*xv?pFoko##;Ls6wiDt zwO6N4a&#t)D|bw5GI2r=gWLeBBOLCP=u zgk|X>$ts3|x<6<+{x3`#n&UxyZm@YgV6ylxD3^1xvFHB-^_M{wadK!RfOGo|Xl@5v z!~mLC0Nn#5$iyHBJ|}>SiCc_ETZ^4z7BA#VXfZ<`wjx&s*nQP(oZ#^u$TipCz2cyw zh%Z3qUO{s=EDWe+2PpLw{|A*FAZJiec7Or_+u6nf<)Ok8Mr|1V`Z2J%D%uUDdM@yp3h3OcEhu)lIT^S#K;`iTCMM|ID>Pm}e6Bi>HQZpbmTgfeo|*3dDz+^$r4zib-p_+k# zK@@DS04D<%e5wdGj-<;5-anuvq6Mb8pf-Y%j#Hf=CumBW2|RPk3+6#v@GNYCEZ`u__h8?&>CfMqz?jdmeiB?NL6XsiV^uOo)nO~N3hB3i{D8re;{ zaJxX=IbJsKc?q2PB^(TF`68TXPEq4vH#(27UKC^|cV@l1vPO(1w(b5_5h7Xs|?_Ie$6mB;{z(h4YYcVo-O4MNFGf zj0@TuU`v4a2TCCQ0noHPXtM`5qCddHUaAM~4{+#cTmaqZ2<`=7^anVg{Q;0cTJYIU zVOAklaBmmfCk3~`b)?yJnb@_MVW*n2FVa{6S`Pu%h}7W#EgT111@1fOuxl8zGq7nh zit$4BtAd;I(9{iHi(DrS3M?UZNDH1_kj+LAeC~-LJM?ITY6k{T&jF?kT(5#w_=CF4 zx}xkXg2;;#F0q07ZtS2<0idEqkTV}7f@X(!gsL#CU23$W4sO|vO z%Q_OE9;mSpx?{CP1bK7>&_zLN?Zf{6|BojYpvxgZA*H3KAqz^@a-bB~R3{HAb3kL` z3Y?&&Gm4-T32Gs#Hh^Tbr0SsRlu*?vBh-OpAbkfm1}#Pg1}RW_R{^DWq_}^F+OTAY zbY68-z=L@Rb>IrGD834MUL$0Y0YVyaMk*u;fd=(JQ~Ka~2zln_Ev&Hf^|5M6~oYbU?A83yBRqSSag*W5WQX5E2_887-+gs5(Pbbw&tv zAQ?#61KJ-b4T=k6w75`$`2^C)#~&B{IOBo?GmNpu1rMyICO$4qK;cvkB6SqlL^#;M zOh^!#f~5YjnSp!^j!jSynuCJS0uqFlu%NL52cb1cAtVSvGFnn~P<1w_>TD6}Kr-NQ zI97%LMg|5MCI&%7dVqIe7Q#Xik_2>+w(DNt$Mmut$b7Ja5oTQwz*J`sSEu0s@(@Bb z+~&u4Y!<{c(GhMU!mJBInChJ1>NK1|HiHN95nA$-7#Xy=*mOV(qd>(LxFo-z2XhNJ za#0S4W<{x|bl5apK&EQAf=Jj6Y z{912N;sa;cS|1SeADb^c&|qEy1veHi`GK4ZQv(WWEMD>lsR6eEKz@<~`6+-xKfNUA zr$CTLAbtu0G5@gz!~J9?@{cV9!~i~-7~0wQYL_} zodNAVj%H(@1>O$L1KKKU?7<;6ix-haIKfxXfTxjk#UY#vh_X14g@H{+tS%N@YQ=#Z z$ivIP)({VJ0eIswXjAQcM1Dlfuxo&|3X1$=OF-3TR0q<{l+O#k2NQHgI%vLD5!LOW z+0Bx2(4CV^B{ED5()o#;3|!pWeC+v2pnek@NB#{q_!082kXJK9*OfCdC^AS{L)J3G zf-0#v8I(AfYE!`8Nd>tJoQ6RCK?7!n*$fN}N}zO+21*x9)%%$kSh(3WK7;NpVG_|| zs!IoT^k#vVm}=CsGqADeyRtB_)nco>&du+{?|L4;nGI z1SJt@qjow2=%_yELRwya^g~#LSwM$1#R;;=*BVDKiPYtRf(_Ih%LfNs0n9n74Ir7i zLR9G@gfvJ-BN?7m0a2HE}0phAPJPd3wli9!w}mxILE|i-(i9rk5SO@DGZY}EZNZIgWOsr3!ORR_85kJUKx0(k zy&r7(pFn3?>9VMaXtOcpmw^fgb{!_rpa^*T9LQBdOd91N``9^pK#Ldg?eF7(Y>V#! zU4sqT?IK|u%mj`Tc|Jo=CV4K%9^MdRTj(}F4ps&>T@~m-M>5cZjF2aG7?fhy=sR#u7BqWC$Ch#+2$^TvuSso^4A;_>AXdgFHWFzNzRcJmJh2$=@e6A&;wW)YA z4+EPj3;3p~+C*js7F8w|jegLg_IMD7nMGp)h?4+1^a3>Q25K*9gX%>a0R}cMHs)Ga zHU<_pCbnu24K@W_=hV7^gdu_x85p>r)l#%Z4>XC2X>(}Qg3AAYOggSey3yuub!Cv{ z_~0En_zFT>0R}d3fuhA$4YCtfR^4M@V9)`jIdIL*oDXt@2Kb&PQ3wYz>nCrL|A>Ww zOMsC%e+uYkFfOL*156Aopaz);7gVeYyn|Plz35Uk_^|hP)eHp?-5Sq9H?l$+2O8g* z8Q6Hlc(tuKIA?*zv-0aeC60z53+O6OE@p7pfcqdiB7!X7DMxkwtQbuaSUcN=X-+K$6(Rd%D}({i$1V@kXV4l z;Ust*UV^w55(d}B%ha?DKeV*i*yW5nj5Ih|>+e8J2BI&4H2lrI=G zz}dmr2tF1q%pu4jZ=la6$RTfOAPr(i3Ue~+a0+r>>H%FBpe4xJ13JPVGNsSOmVcR@ zfen1@tHu=2;s7QgW{sts3~W3cmY|b|IXN{NKv}wxlYz_fDrj?l{#DS)AY6i6QeX`_ z+MEjiLCgN@Kzq=dKtUq_^&f16fN!q1s~Y8 z==ODiG=XkR0NLjN(P6=<_#Xo5i@V`El{ghaQ^KH~6%bLFUzI>NXMyfj0Qr>xbf^s2 zuNs`9S;akY?dTTwf-DAIxS++^l6WHLzrv6KYK8*nG6E)W24)t6oQ4TqFTe)jL5?+e$;`k7p3wx2bulwc03Ff^n&)Sf zSA^bI&RBG@26hWMBa?K?%um?|FO$K$r>OoQ*>>6p%sVi{3&&I&Y$iQF#FN0Mz z3P6XiX_SEH?fZ1u*!w`mEL&eDdtYWmFQ~re5#wd+(+SY_V1pK+$qWo!;8kj6ETD~d zf^0fMf@~T~K$n_=j^hF`gjqQ_1zDLv>vsA;ORuMJGH@*c83ry;L0!^K?0q^>pfjWV z*ag{Vfl4EA@%O%LABP7TLGnXqLY%V7UryzTTASW}EAcw|86r%;9$4G%@ zJ6Chmd9X3CsDipg?raP!|JWQrRnk;YKd1pDqmd4pYSq#!o(>uV1cel+j*>QDW2k3k zU@!!?UzowQ6gSdcLrgr-i3VP65g{fvXb%H?`vM1>cmx+4r_l?zxO}yq2s=uPPh&a{ z16vhHA#9xhJ4?PN3j-UZkOk!z(D`d@!mJ{~Y|QzRTnucWld=R^Kqrc@Y0LmMlt3%c zey}sJiR-ZovP**Yl!*&-Xp6&b1s{fMxrK#+0b~ywr_oc3XMlmScC{ z1$pBwxj^T~a|^L*Br-5?No(}8FmPFZ1Fdj?=@;bDm!qManfgVd%1H`Ty>BW+uDK_SQp2~=@mEkgk=#R7st zkPep+c%>lda9|x<(9%56y}Y`hu-DcTWCI^xCoC)|%nqrLr3Hn-q0j>!Etm=F)QJd+ z=&%Ti2rz>sV8H`AYg^62h?#*wkWH5Z62Zc3tb*Kv92#99ZG3{fI=n(W(9XSlydJZN zwjkIDu-Sq<8la{v=x`WF5n<^B3ROOx7(ssU-64WJ;4x2OQReEyObjeKau8aOO^6#Q zbOc57XMz%ps32c8sG%sxCMXKN{}6XRCs9E@usAGm#UX);D{#djfh&#( zTyb#V-hB`12LF>1mJnpghX;ZIC=gV2In)ICszJ?p6!)SyR!{;ZJT&pBgcv0#fgC98 zb)*G~3&fY;(GMYz(mjiSZ7Mr*pHwU;_hL*uB&;Sr-wRp_Tz)+V0DloZ)xIqP`0O%N2 z&{_~-Hc$>ik&^(GhU|juA{zQ^3|ycgFD@M(A$C~V3Odh?Ly*Ig4U}5h>Qh0d4kMMV zpwtF8PLN%L17sQx2c&4_ffTL0g1qpel^0gD@?sXP>_~+NQqgL|F35{nwBk_AFUSii zT6w`mD=(*x6+0*RzH?m`5ngRw$f2OZe1d%NQk4(v{+?r?QG0Ny$}h;T!y?Epzzj=M z){~eZwV6dHXg#woG(vb;1wpG-z(p#jAcqdG5Ib6t3W@`;!Gi3NB9%)J+UK?W37Vqk z)bRydF3c^&Ey$(81Ug?7vLsko0Fp6uWFa)C5F1kH2nv9+gRp=gC%9`jMj0_CIf*goqK!sC~3&kKIjIU8$Tq-B zLQYH2eJX;S;1bXB2RJOiKCuL?xQB{ES4RsAL4p8BPzXVSLI@rdLg1jd3p#34?Vpse zFp~fEIR&}Er64Dy6hw9_st<*U4+>%Apg<}Akd4O?6uJ<?}y1KVa3@l4QX}tlI zIEzlCF%)R*VrJlK0Of40q+&+_1~yfuT2FAB)d|#QMa+LNf$uCf295JLgU5N8G!}t| z5WK*nIv`R+V-;x04``yp1*8`|(IEor>p;dM;{@o<1Ao_IO? zGR2K0ImKpyC!5eN2nJoD&cvYwpH4b10zYjUH2%f}UT13pa@TC|bO&ge3s>!2(4<*4 zh}4l}W75cAWYDgi4-)&wwg5B%0rnU~98_k5);WUqJ(z;bS%_rLB9NYH5D7LX6J*X3 zkk~)Ar66;_o@CMhiEEiL{bS1ljb?)l2hYV^WM*J61DUxTY$jqH8+??3sxG%0La25H zs4u({)X`F?TLtPYfI1MX!E-8WV0NiCfMm4TszHkLGhhL}7A6msK?_42p}KV-1OKt# z2K8FNj)oY4Hn;}9tbRShFo+@z2VMrY+6^FYSA$6KM%|4FRS?J2gB-)Au?aMY%BHay zw02|*SPO^*YuSpXMZ=GUfz9$SXx{?Zhzsx~Dv;?xHjQmy!yuCIZD9~e9;n;Ed+;D^ z^yx*IlI;jnVDsk}(3V2zDnN{Y%cCz?VAI%vFa@y^9L+6AO3-FW*)(<`BsF$}8pkYx zEIQ1BELxC73-B3~{A|#kH1K={B5@#QWFZ}b5F{zYq6P41rX`XTXde=IS_V>yN@J7K z0F9h#vxtK-8Z5-Xfr_LUzGMQ^9Jmz397b^+K5$ThuK&;h&E!D>Ha`lKJba7yfPBs- z$fmIultA`zGH?m9Rf8xUK0&sBZ2RF!M37D607%I}h!PN`6Ae;w2(F~~Fvu`=L3WKJ zAeBc!D%q<+ln$RD`#-j0aFv4W8plCOPC%4^D2S4ia3vb2K-up!Xz&8M`xBJKG#2tO zu<>&0FmZy;Qh?7@LCOqf20sP{2GD(X8fQ4cmn(xv&>4oHHMnfxi7z!cR|LGT8i_9g z-ieJOa1LYuynKVsn}D*emKUUuf$Rtdcfqvg)#ZWi>E$Zk&C0;l0Ahm$5Yd)@oRxt~ zO{)ql47$V_qy|a)Jd(7IC|DJetUW6OmzJ2;yt;fOTR?2E0FpwOEg(6NEg%|68fFVf zSVt6HGt?IF96JjG=&pna1_r^pY-R=)@d(uh5Uo+m&cJ5CB(7DrlZk;vh(X>2I$Xw3 z6kEqopkVSmXy&6zmr^~>=fO zkh&dYmIY``4_c=&sWEXu4m{yzmyVR@Hf0jmV!HsEWCfQ*;0X^%STQk#gB--bz<@|D z7eMV3ghCxQaH~ZNNdc&{g`xnoX%I;PII4?PKu0|>fcy&Dm#WXeAjquCsKpFU3>xP_ zSsip>5Eq+tq$>w#Q$2Xe0|NsnKtYGdnK3XhfHppWF0BCFF{quv#Jm(V)SvGN$`(w_ zNY@%OF)sy;QJ3|csjfm$vK{=p-?tB+02cZYF{-utQfx!|K zzTobY4yVQ>(B?%ZaV?Dr@R>6&tr{l#2nN2fvWYW073_5pGOqfku z2ehkqR;dsJ10(3*bR97^L3VJMfI}_c4RpFJlem^3n|K6hXiAW^FVpCZMi)B+8#lX- z4Lj6GW2XEX&^Rmy$VfRs4nekA!kp}aoHz^t&0*cr=wk;>*y#8`XZZ}BIr1-p%5N@h z1tBhtOCTmUQ$8m%1D7B-eK^8$?h&`<0!aVn+VV2xO zw?s@!kVlJwfl&r@2I5TyT{cG05mO9I46cl7*${RelZGKL1DmcGWEP<4B&hrW9pwv2 zhgzV0LIu#Y4q2JS1inW_^@0Ly#bMnQNDFNgy>;}s2oD{ z2trg6A$k%aD$k1$K7}OAhY&uEB+QQxK7%AIV64ur0}rSja2Z(8ZHJ36UqCzM3a)D> zk{YxFgWzg*A*n$-@(QkIH%N%RPRpGDIB2EINR z)G|h>*@mR14>V!~-p~S8!^`xK?FKA!YQe07XJswWI*EM@3=GzwzTizzUl6H61KoiG z&c)!W5n&%fy9hU%#w}3$^)|Re1tN7+itm8R2e#U~Ac{#N2h=sa5AH2KfVqTQ;~}V4 z0Bt$Q1$9h8MF%%K=(ui>YHl`-#~?$WfDHwaI`YL&L8h_QJ_Awgwa>xky?~p?uI0s2 z0`fc9i_G~}91Lt)dPQ*!3Q$(F0}29A7yKINAi^I7knZAEH_u zq8fYynlT3hTQMjF*Zu@Y$S*AZM_QWmB2RXk+Y?j7vG`}FauV95V>Q{qu z;2&)6gV4@bVA5-x1Vyw*|FJt3k~SW+8_B4A3k*6Pp$@qR|2#eg``U-gePq zz5s8xXn@NCc;OFkzG#VP6@gO#vqmsG0~<>Ts1=m|pOb+re*61Dh5X zla?A2vzP`WVr?a8e=x{iCPdo}QgAEOrNXBDQ@}&0pqns@L4$#+4ImjUCX8?q`N!tS z%fJR!q{W03F3>V44b{LD(6}nZK#&ZI4sb}aGifXUg^vhmK~^j)1DnP=R?u1Mp!&xF zJ23vee=(pZs6gNuuSi&-O&kwIJ3Scn(^y3kPAm;Q%^%3ppG>{92F}wrUWmYf>x%4F_Me zZ~*aZMWNv!2J#1J%onVe=x_j80S*Uon11ZxAXO&;$~{tbk|3(CNV}1tKqDV?k~K&i z!Yu%C!SYgdQXpkgbw z00RSPTnThn*m=-7VbCz;OYVGzXv55(5@YRupy8nvkc@TAtsEdXV)=;ggh*!S(t=aG_*lRfpQEu zE?`pkG@)^VMGdaxz>1n2lpvO|f-Hf%7i%HV!Nisi zx>~s&Bmuu!`3CfSDpt_FRt#YG=#uB2hXmXMGM2jzM54I|B!tgBdgQt1I|28AjODHa zk!bD#3E^{(K6&opZGv4f4T>Ldy^RuIAY-}fKqQ)bKtlN3V?dsJbP2czWGr_bh(vP_ zNC=;M49Rm(Fah^~jODHak!bD#38A?Mbg%X%1_lNfa2?1b9}O;>nM*)@CNXXi9&nY% ztDVmYsqI+Ubc6+2bo>Qb!1Wmiq<#Pm46C9F=|Z_Ybw*sEQx-s7RW5CD#4I_A1d|XW zxU6Gi5@Z3FFOXtIxAUF|C!`7im5}U$tgzB07VJ#WSTguN9Vv$DsSF~ZvIBH48fc#@ zhz%+FLH2`(h#NrJ8Nvc(BnS(Xgdr?Y;(@S0(FS3G0!(XGu`w3|mn!%&j{H*4;E)Ly z=(G$|P-_mpW_PTyx>j)XTA(O1KU3-xW7Q>ItzeeOO!#^iGdH) zp#^yr>>r;4<0+_gxSZX#WJrj9$O#$i4su1_qFQaG!HA=TpxvK?WULh+S4p%q%7OAkP*<_rEhU_%bjsc!K;2&yOtm zQA{9zN(eD(M1%G~GYc_*3nEa4+{(kiCd8-_&&0r`d;cDv5aU0w0tVQv?98xy2~EFD z41x@*W{~^Y!FC@49UWH+wi{Fy*g(qyW+b~^p?OFOVJiy<_}cP(kloPK^9XL084I}8 z%96hyG%^86OCWQ-ko?3_0=kojON^VXFB7z5PK+5^v@$WXan1sp3*NlJVe|}cF7%!u zH!cP)4R=r**#ne5r0T#FI3F-EbTTq9c!S2FL5Uk&C3CSMtulg*5rRis#EPn$7z)_H z6Nun#e2|lT*w7E~QK<6-6|A6J2MVRU1GuT5K1ph^cINhf0J4ung?Mn;j21A?60rGRLW zLJskQpC$wz?gAZx#Q|B>Bgvtm$IHN`Bgm=4&Y=+miUtmiU=YQr%g&(@0%CD!gn}ri z`d6SWc;2ABf?*JWmmmR8xB$4^1TEkMm9F60t0A0=feXHxA{w-sB6e;=1WMlpQA2|r zrz0%#k1Z1B$A&0SF(j`M&Bef_%O~=WEe0l|&8iU#N;)6~8gZb$KIlk_c$joU0*WP& zz3o;a|JYDfXjFivD3A`^(SVGriu_|sgc}920yLJWkpvoZ)bi3u23f}mwpHvOqm~$C zO#}=0TEalky?QAi1x#X){W)B9pip39%YV+!zy=-!h4qGE67Sd(6_g+Ev zT!YMI)?wEm!)VCT31nlX>cD;i9kG%M^Cs9XX7Cx0!k{}a@ayj72LeG0V8B^a12ht^E5>#q1(t3hch!NoS|Z@NG*BA_Y(Cg% z5sf$43`~IM3YdYZs0M<#kTES`0|ACL%nS@ZC}o8Pc)VN%kq;p8DvTrmnw-)F#nECG z1}-kpCA(bUGK{@1lb3@tqBo6+LAoIw)RyFo&=s!(Ez{8zK+=B*bk8mlKLgy+MiKxi z01xI^#DF%of>v6viwg4yvV(UI3-b!{YJdi+bqoc0A(>G_kQY3muPa~21v;{UHy^ab zN=LAc8^IF;ZKx3w<`Wa<7i8DS1lcJd$f}bAIi-$GSWr;V@;PYyM-aU64ZLic9lW?h zm_rarj6>r$Xtx|Es@Ok}7?&Wg1{;XMEhw0u1+sxhP%uB6i-Ak*AEPk8wky;wRmidp z@J>5b6pJ7{m=$0t4h^W;>>BJ~v+F=XE666uE65?pEyyXzCCDSlCkXP?Lk0$IaLy3q z1&{qe!%0v;kOdk*#W`FITuVR^1Y7OGVL#{J|NmmbLKf+uF&aUkS;E4i!V-eQ;QiCW zl7f=puojjQl+rO2l!S%1BuaQoqJ%eu2Mup&F<}`&VMut(3bN`H3JPn0w;Rd{%2|T0 z_7IdqgtssxyhV`3L?GcUiYf*U6EQ(ya9)Gx5*L(%1iFNv96Zovw7sAfVg@?QHb|hu z>;VV52qe(aEP#Z(5J!Zdq@akPxS*(@n4pB9v>?cXWsI<}mxP49l%T92iy$PNkb+%E zJVIDVP>9oh;=lj@!3Ngl!Yaxif%U{ zt~Uj*_i_SN9H4D~pu$_19h~QMG+?8okg}SCNuv-{8E`N$L&{_L@E)pxpm`I0&|Pxi z^}4Gtq*5DP z^yx?;<$us7L|sm}skqO+6aWvEiWzdiM$%wD7UQl%2?OxH{4z)pV8z48z#t~fF34704yxz$p$twTHV%ynP(Ps( zRA_JtacW!wElT4T;?%gz$iQWJg@J)V9IUU3i-C(XUyqf6OPE8DT~}9#O^|~_qne9> z%Mx@42uHpM2Ll@@sf%gz2(nezfSgsy$e?XC5j0|}DjvZN4lT%fMsQid1h;%64`^H( zGTe+i%-J9#jSPYupc~%Hn4u~0p0OZXbuDO=1UkZfPYI71(D6<|R`CeXnrT56`&Iw` z|A!?=+!`?=96qjapHYdCNePqOGA1nu_8|*6LxS@JS3S7pwTG2~OP3A0bd(v~ z0YsL7tRjW9O+cq+F);Xn(ldDX85f&`9vhpa9;Y@R6S!p3Vgi>Hpc|PX?R-ln1_pm{ zpAno&EOkJ;|3RsVn+2Sjc)-GanY?1cEEepboAf~WT95^jm{e_VSPAe zL2hs*!LHE=%4X%v3|!1buJ+KhE6AhE%UlFc%An(0!DD6`(%cMe%z`}N1R}^K9s!y# z66Ea5w9oke|G%~eGZXl_X}BdqtPt-&M3KyALp7gYkQJO&Ko{tOMg{~~#3Mj^(K+ou z{{8XvPB&UV}XbqF6Ag8V<=$d)ZaZj9r?BE5u zkew7@jc7Yoq`0=8?TpT(AOoAL@8rxVH zAopHtX9{xa3PQt;NstX3CE6hx2RRtnK(SKH3Mvx0p$Y`Kp(+Hq^RKWla0zm0%mt+> z9zmWuP#-G42~^JVFbVR2qv{@yAeRoiAQxoF5*{0Unf8l8lVj{+;25~0#lYYQo+Dvk zPzKFKGB7ZtFfuUkfC?Q@l7`Yvj0_AQ44y23_Q^r>U4fwSMICj8qjO~%K}+35psUZ> z5)~#hGB8GQfvO>P$T?U>kJ&)WF&r5fxU}M!s+&RU6~Ki@{&hC!WE5OJiK)5;F3++Q zG*Ok`3aX9uil>53CR_nJvG?(VvB1iGcd3*fz^nC+1&YUpvqHQUx-Pg9WqZ`yhIdP9qi0PkL4t&Wocs>U*MrF%j zQwbTnNrNsbX0Gi4RXZBJTnt>beISp6&hubqFlS_72nL0DHAtR|O^1_B+E(PdIHFhi6C}0h}1aB47!k=y>=2vNUU};7Xz2YQcz?wRfC19K_ati zr+}oZAtcBo@qBS+1}+{Zj@qdp8L`@Fpx(GMQ#F`d4dTt>Wnu#B-~>l(@pO>QGeD}v z!HyG$yOIg4UOWP92!sPMs4vrKEt3eu3K57Kn7|Gaj{v(A!hyK7FVo%wbm^Q3#4Ai- z@8xe`VBk^}W~l}F6?7aPs06oS{Qv*In3fzlnCfSCo{@c>t5kg)<-3Uy;aAEe)ei-AqckE!|qGXo2AejWn@mpEiOlo?b^ zV=l<;R?HBth(-Y@3;8is9|WBp1JR~o1X@g0$E?c_H8c`beu9p(f@snZ2g%=K)@5SW zf~Y{>!N|_6!3MgH5+V!U;H}E6!Op;-t){iB=x-B4LGe7$NX|KC29_exW`=^|`5^9j z5LXq>y#Vq%xEx|;0F^_bpnTm3-p|ThyP1uF1)7i8{;@TI)><66h8)1B(t1GgCE)k7`X27b3?f7`T2|tT=y8X;C4$(Gw>tZUBpzqii?4ZIe#^5 z8U<4Jt^s*G4kjtX!oZa;3nJEn#El^0`RhO&m@go1Ghkp~hyc6o9@uT`xfr-gVi_11 zxtOZ&gB`d5=0FgaJ--IxKv>u)C_vl?YCAk)U|@&@oArR1frX1rr%WS+iGi)Cf{me| zxSNrIi>dk%Xd_n-BWO)oelH^fS5XHGLjfc-`xqIxIGCy*g9`eMpdLgO_`FgfR*g-d zdXq(nMPoCloVH^UQ{}1!*}x>oQu_py^lKh6Gq4D;FlkgXGHBmRWU2;<3bQcPfargs z6-*4$OrlUtLM$3vLA3*C{!&H;E?s6$ZAKC9dy>LzO!EIArh-iqWYgFN^0)}9FuTTf zP#D6}20O#rEew*N_%UMwYh%{f0g(sIWe71cFhqgF<0&LO?3t>cGc&N1CNMBC@^I(~ za^yFIdR&|w`K^o$T(WxXBHVXD?No?3I2w4FIP=>W8Mta+Ff)L1vKLb|h^3*+#K5Mp zoP~i+qXrgCJ7K}J3lU5pi$THk5*$p=putoN3Z^QiYLF->m_YPD(JELlfiwxRXzT$^ zKisom6Vn%lSgOMfp&>06NQi;dGKqj)$5aC{AGF~V6mZg@fWwew*VqRMAIKgbFNTtR z3=*I`23o0e{u+YCCHsFgP0Vqj!qV2B2X7nzM;pJAk^(+rSCy4Lo5n zF;%|>rJ?PhQ2Pw>w@B?55G7Xo6%vMZP!&5E8Mt^kn5sdFIGL*7ffQB02bE)8YzzfO z6Sx=(n5sX3ML&YcPoPqIB`D;PX9(1RKLAPspi3?ef|7tElej8ZEyz?RL5|uVAj2T8;b79J2e}5+d1tBy zNeFW=)qv=Kq6G{LjNr@y(kH~BaR}5ns0IZfcpICzAbTk&j#PD-1=*`K4ud*2N5D!z zfh)`<$R%#f$y5z;IrlwtCTP%$K)fPS3kvFc3c}o=!~wE^2_nPw(+Dpfm#-f7-#o!0-!nPZ_9*1wJzdl#&=2_AxRr9A#u+0NoJ{a<3W03Z(proTh%F zrKz3ZH1!)fP5ptVDJB*M7ABEeW)LM-%fbTAmvv0lU=^@51yaPxRQ(qe=+*zw($s&j zCd;jDNTX&!P6ATS^{Yb z6u9s-1#&qgO@VYWiPVAwm_%wp&V{8ZkOfd7Ca}9u(iDa)#c2u@5zsV+=oxT;LIvC) zt>t22V9^4#M?m$g256q98YIibCjTc=+>C`y+*p=@P5zG_8=JTu(>+0kdwfh97kL@j z?l5Uw08v_ya#EgwNfEX_PMASd1HuNaiw3QyjRBX7Aal9db-3BZ^-{&S?)HHC3!=3k zQ6{EpZWacX{F#glT=}y=#Ud}rh4O!4vLG(FMiB=e{V862l$n96mJh7x4_J}56ca}+ zCrCgX%opdnr^h4@kz=X`smwnLYJu_SUKitncmd*rd+baa=RiIIo%JNZz`(-5z%XkT z#Qk|pQ1?}X9000aKs2~^(JEqsIS*_)ND^!dX!RhdmjH4Ltd}6iR1M~W);NRu2eI(* zfb%yg z2B>AH2#UNKaTZ7exCvAQdxE_Kk^nXCKr~W?0MZ9*12a`Cz+J(aKb;XY%0GjVflG}O zTvkBcavancZw9q8*@f6OPJo&ipq9@`L=yvKCX*mrtrEg5Y)l$0Ah+xVCEIF{gfJUZ z4T%0HS_5lng7gWoX`BMLA3*-rXau!rTS0b#nlqC*OoCUXNC55>_%@43a;D8h4(l`fdvVz z?}%H222Gi&)j(+r(i>6-F)@>w1}FtUl9?tbA(?P6Rf8DC3qZ*SlESn=5~wK*B!ry8 zwBd0JOJO>Y6s8L@pKuBTIUbb4^uZym3Qb|{pjf>Nj#ZEZD20J&q!b3yhe%<1a93bW zVPLo5OJR24Ml8roPzp0ZxP^^LqXQc2AW=~A0?|mx3#18}yg)rX4p6Lv#F%P8o)P5G zxCD=NgfP3tWl&5a$9X#=14ADp1A`;IDy2u87OK&MGJ@lF3XGi5fN_=l0}VpkPvdjTfl=H7V(yl zh_?b+LO9|I-__E zs5R#e>4Jo^iCZ^=Go}kDu&P}_JqtvE3hJbS3slfZ3b;UpR3sobgJRnkq^ZUp8r$8V z*amf=n5sb%px6e{NM$NWpAZYUOyyzX5aZ~}EM5z8jStv0;?`%uP66@qK{a5J4#@lK z7#X-!nX27D9$OD#yMx#pKnZ*!I1u1En5sR%p5{?wss<_2;ALiDLr&))e=}8s)I&^! zD9hgjHpUa=9dIl#fkPr6k?uih4LqgX>SBW%cV0{k41r7x4C;vT50p%x{T@*H$HnlEfq@|zoCo~D zdB76XkY%b4WMN>@%N=g200;AZ6eMYq0zg1d4*{U@!@i zWCxEC7Qx45L`0aXLqO>p-gD*^Vg?V!@CY$M#tCh}V=*AtFmcp|f=sFj03~iFCXHTD z@e#yS4HD&HssT|*(FxKb!~~8`wR@7nETG^8i7|oo3$kcj2bCVesKOdIAawz#T?`t5 zICT*|E(o%fS>q;1-ik>BG%(D>T$={!OTdO={UGyVOx3rzK<8W1R+qvA+CwY{$}OCrwyj?AC(xL77P4vJb)BGdT*z}zk;OifVy%GAQ_E5&}kM9ptW;K{EQlVK@$!j#y${3ulPI2@?vDm zqaZ78!1H}Y_RS0h;Ddj(nxNOzib1cbwF0fGhp(g60#E#ufy_~2Vy*=0_ff-@ZskW{zN#x4rF+~2Z9f>BHtIzXVaJjF$d%*P_d+~12G58 zp8{7`2XaupErJhnR=xwAuQ8LEfeqB90L5 zJ8V^}##?lOcOU`y?6_VrD<1<}LoFx)!V)sUETC8X9+cxhfC>tjCL_o(gc{Qs8ML*s zn5vst7+6^HKY}|<%`6No%q;nzK7kTj&YfvoLdX1K+`z>o?q zquW8nGNTq#bt?-43(|^i&`hl5N(Kf77SJHCG#8r=9~(rGh8PP2n*bAp!va2R!U}X? z80eOIb|EH>QU=iUP6rDE?0Pe0Cdd}BT96nMQ#F_Z+ozGtz`$19$-=;LkBdWxja{P} zbif!y1;k_>0j6q@JWIX@1ISiwNr+hx+rj!_QcTq#zc90ak0XY!%L-ty?uP91fCZ#p zu`nn`x{zZ8rK~!bj8s-7gD%0!V}y$6@Gygq&+W?;2QMFwV$S~x8u#u4sY-{JaVWy4 z;lg^w-$2p&9TZJ4*MN%9A0Pp};-4VNUm!M266!3(G6C>Hdo8`<-yo%bkdWI8367uwF4Y$UYuq`;eSNkO_;+I;Lt~ZU)drWuWNhXVl>1 zX5fNskFo*P@-TH>Ox0^Z9Xmb<&8z`hKB>#aq9M-0z=paIp^K?{EmSFp#;0^0a%CKB z%TRzgZzSJ_36x>if!a_gD{%Z1u zs89s2GXtM^15e*wOx0W9g_Eujga1Qc9sTHwAmXdD^TRs~%v1Hz!70rAsd#)3WfPYmQhaK{KV0RVCV z(x5Sz3vKIx<^a;+;SCu#2E`*{+!!3p;5mR`KF|gkrs|!babr-hgU5}d_!!ub(!)Mb zXn=Ls9>AI&Knl>(Lp;cX*wOc`-T!54oz+7lraAsg&$b^SA zBrSmA5FDG}IRvn&;It3}O$&!WX#o@nY)sWhKx|OJgVRMaYPvW93Ky_RwWqMA3y=b| zbddq_EVgvP%mBJL50WlG`jFB^00RTVT1Yto9(fh51u0-+sy+=a(jI}5gb=7uI16%+ z{9mxNwkA_Gh@UUa4OtX;5+o@OmJ{c?I|Z5~z$QTyf=*@u6$&6HGKtiJG(+uxmPO}4 zCWzIZho%ECw;IF)rvtG05>WHO=>Tjt6Ig|K1Xvq{!&D8@3QY$fCL|rCfr18Up77f@ zNEr&6Cj=V>b|z?u1mrY$NdU4JDfYo!a9;>i4rGDj9;6!*_n>$J#~3*7LE@14qf}_z zp8>@;C|JSqor4!GeLw3c?1hv0`UrV8{mh z31k;i8UY=Ky&sZBo`RxQv=*d*iK$wG8~GF`NRHN+!N{Nu-d9~K3G$QtU$AOWk^%9d zo4Pq_r9hJ6U^#KFyP$RPplMmK!PQ`eup|TW2$KlJFo=~JGtsR012#rmjR~R?v~L_# zdVsBv0LzJU-O~k4KBAj{mPrE?JW%r?X+;_oUPx)>-#>KPat$-3gvH#wRDo zR1Ijr#&7U&#&P~CXJ7k*StFX+fV zRWas8;G?iKRx>lO)!l@R>VQo6$5zM3z*fAN88qkvlF^vO$e=BfpUA?%RRS6pgfGmt zZGm=qw8D_OAE_)1Yz+z!=Qo0!bqCp5Qs8@owe*5FDEvWUnnt_2!Ok)jb91Rx1PE6JBz|B`BZU!!}3!r+On5sWumGEO`s{RBrZ3g(B z-*{xxf|#n6xf!@1TQ^u(^Ho3*2(v1Ssrm~@pBM+|v_a4fw&2Z_AWQX%=Y!(-D{>qQ zG52MH&cSD8*vrVkkPFTS-y!3?8zJ*t*5G-rpP+FC?jltOhJs?~aPKdOkTH_bZ-`JX zk`PE^pDuTiJxI(3bfP?ySXS*{76ujz@WO{`kRGOLkTNl*>VKemsQM4c1FGB%T={CC z8cv8wLmkwrwFi&;f?UVMQTrdHvgQYL+;<*mC?7OZ%~TDN;9;r(QU64j!PdNibO|wO zXo8A8rfQJ&5X-V6z;0ox2Kff=43KO3GMOL_(c)&{(wGmLxdu(NXmdl4@zMb~2{MNX zG8{C~!obSF!US;>3zNnI&{%XXQ#D8wG|K{_|A{UDwZ%b8RzaGCSTuAY4SQ8#wpx(q z1=+-GUx4!Al_dNy3AU#MKlL*8`V3P$|G|WJu0A5gtA?)E(W$cyr3iiQoZcWe!-E$b9+sf3o=nyJtl;?`!iKA8+q_>6-8jy=Y z0h!HI4HD&HssT~|M3=w<5~M|lNyCYoflCcylg50|)wuWMz<~&oW)i6dy8vt=av)+z z!UGYOj!s^Hha1Q_Na4oJ@R@;up%5HyBH(b-QDv$YV`X3w*XJ(c2Niy+m_f5-5J5=V zl7yr!Kc;GNkQb{#e5Ps%P>?jkmdk+h8fbDCH2Vdf+lAyckR41MwNfB`HKNddAQB@GEHSEg!NNNPe(U~&*40$*v0j{ z#klU}Gl|xMgqW&TA#vT22XA0N#EP9kZEbasW90vW)q+>7DuV>X!F+M9dm5n53&b3d zO7Id$Rp^RUkh4JJQtLp@L+V#lRU!Hn2(6%~02=}BSI99{gDise9bjB=I}_9gEe5Ay zkZwr70TfW+AOrUsK;n=-=vrtWRE?E^r55BvrVwn%xBF%I!;+_PXsIf4_X`sjgI}sFFcc7kTx@W>9QVSBkrwu98K=v_-Kr8_} zQ^O0?-l)-HWnd9x(eMV>1V)`e#f{8(zLkr@14PTJ=xu8+T zps}2hK^rRL4~i2An_VM-n}JK*SO~@q9T@~fK{szR1ONOFa`#Oa=4#Fjo2WYNSUfZAte9LmoSBpbI4g#%nVP#NaW?-lQ+hGK*lO)X|n5s=!8Cdf7Ff(xJ zau>~XVJIlR2(HAdO+g8^+KiQfB~m;qf}5%CDQMpP5~!tP36f&3wE|IK{Y+qWV)>Vu z8MxFeQbFm3%@s5>t09^|CiG=y*>;1n0n`YPm>3gSfx`d)|Le0f zL>L*kGMTE)K`umeQ9w(;KwT72vjN;gfmCuJFEMe}+JGEYV+^X~n3*(IfHJBc6KLNO zNP?HC21FrsQ9!zcn895X9_@NaXfRbnodTjjeI&vT0Ik3R8HL>eYr#GT*^J)-OdPe= zAm>+uNL|*unqYkvU?GrO#F)S`&=3Lj9yLIH6=Bd)Fi>Yj7}R?M_f{Oi%ZhiBJGjQEg5C-=v!A=sX1%)5PMS|>*MNm?p@(@E7wiXK1&H$BfDGcDVNfKs zkN)? zdyr|&Od6{|5f0kl%2W-K;AN@-QAqI((j~+Uj_Zcr@pZeb|MmttpNgSa#w z)TZNsxDmW!lBt@In{2?#pFyT$b<@2-A{=y2QkWGKQD9SQKwc7Lg~T6t5gS4n8ga<$ zUyT_V7_3mo20#Wt;|DgJYLGk^n+|Aql&Ki#XabM`6H~P}D`@isn;LjNyO@oMfveV+m4QWDoQb{G z6J(}%El4H!Gy@QWsTw2=Y4CCD-U2T-1F1u5vVpmvvvimkKy9`vaC!sjg|yi~&I3CX z+-3ubL)vVoq4lc|sD1@G3*2VA2x_yz1BaO2Ph&M`ggpvs9=Z^c>OfWo7G@1E(Cs2H)#yTc#nGT~=@^hbsAH|goFC5(y3_$8pPv90 zgm9Ru6Tw;VBOUB8gkR9@0LjDc0CAYAGe9k+>P!$>lLaEHvq8oD z8qnym5ffMf+-ZY{A}F0PGsuGu*kWW5WDWoy#=*r@9mB%FCB(pzp969O8#wp_wep~C ze`fJwJ{AV9+Bi@GXQ_<`WtcvuY7mz>|2wGl!6c#uH%vsBbSwoPGfeq|AEjdULp`}+`1k&&oS%Vv5vVmE{n2mu=%Zs_X z7!(H8B_PL?f|8|P@o&($bUMh}Fq=T@s1AZM3W#wC#z0-A%EgQn?BFl}9Rv;<`)8`o z1tkt4hWs*6e}zdzi%mInV{6Fk8%+SxPuSM_k&0M4{P2gCA7Ni7|u12RskR z!tjNGfuROmZWKc5sahtn+A>gVRTr}|u#_$WZ~M3E0M+8+ND|q(z8XqZ-s#<6x?WIIsj{Ky@jojNZh?zy=yp2G1z9y}Kz$(akTOD; zU85EhJFu~@{m0qpgLucS-03={RPGsV!tpkNiO(iH`nV2*-fC9FVsTw58!&C#JklFwsEzn`= zdjgP=GqBsiqqDFlflVihsk#y5o$4kq*$gIIz+@{*kbr^$6eQe2j2cKm0y2q- zy|xXcqox5AB#cZN8$m&m$W#pyr4@ecf>;Z8I zmpvexm^f=Ef^4bj0i_3KCXFqiu*hMm28r@A)qp6ZvInFEsqBHcqYq?2bw8*e*vx@c z_J9;Kfel6}dl167%N~$xkjfrr2GB@TJvc2)0)-D#^%PbH7H&438g{0dsUVvZLH9Sc zaWJs)FjY^3g%~fV4nL<5lg0$lQ92J88Mw3yAhH}x)zd*)MhjFd39^GOeHLQX=!VVu z^?(u#2lD|P(gqUFd24@nG5K|3EJFK7tcUlm_$o^($m@yyjZ;&3SzaKG4 zi)Cr_fm)+FOyZKgVhjw7s$$GNpv!p|sfx3x>awYUmoY3-m0;}w-H5PAqaT#H_8~MX zGf7C`(Fjq`AZ)y*zgQ$ssWP} z0e>J&h3Evk%?;!*P~{2_5Gy8WDN>w=96Wwd$8a&pFte~~Oauj45F*Gpm}HqXCV>Q_ z5Q1Dxa?DvQ8k0f7-w?uvO!Axv4}qfqJz~&3bPH;`E|WYLLMtZ|1L&3~ek`hzn5vh98pW`C8(9|R zgG^C_yRwX_dM4bJ_*BgztSX7AdKF&FjF_rdgS-v)sa~-cD0tT(2d5llsf`vJ6l!Ut zfo=$3Vy@D%gD}~di=TtmlW2uO_`J+48n>AlxS*o2&@rl0W(1wO7Yy3!W(MJ~uuo);0v#|uF@lGUokN~0 z`qCT_mqVT_7GyyrH@lerRW`ASI-E>wV7F+Cu|eG;1~H*8Q)3}0a3S{Fffk*EvSvi> zK~R1JkClLy3^#%I7HacBG_g(8%6qTU(e7YA5?dd4q_HbHO1FGt1}^Q#Htsy6kMlcR=GM5U!ZM6ofBt z01-$n76LW)To@U+v>+mEeVIl|MRu(W1u!*ieVLJ9We}|z{h$JvO^gjR0|K%mviK+H zwo(H&h5|N(AjCAV6hwy{Q}tm`s2ed=9|Ex zJri^B643N8NDpX>#8IdjN07|`bHHXC0v)P~Yz9a@%nXn+ExqEUpps@8$a+}mCC8k< z9K=^*X31XxVwBab1M!a(cxFK=wGJ z+T#dPhU6MI4F@z4BW8`ooD6I|peuQ_+`z*V%=x(-3~W6@j0}u$k$jK{FS1A$NW_bQ zfl(_7)v2Gj8Q6N9K@#xwC!jsi{EQk|pk3VRP=>gk5VOWQZU#0kAqFvxG8P6dPi-E4 zMi`S(tOrzhf`)LnfZPY_D52Z*6J*mQkWFY#VBle3>rnwolwrC};~;1U zM55cp1d4)2xLuHN>_l-lC|-+?L(F3MCwiR`6fPhV-K<|AcOPMdxtkHx-eKrMm?eoL zk|E&@ifOhU5D5-H(7Aagi1q7gLESZY z|0Ip6dLF^Dq6Jh|Z0CfPO^{LmmcPxInX21C3MPUqgYzbXcrZ16%uLn&9H5naeH;v2 z)m;c?4@l<%WVLBb)hD?Lm0l}B+IHh|5mWUVaKW(-*<3$F`Mi+>w36^2BdFFt1uBo^ zn5s{M=zUDgwIBf|mRb;>iAm!OXr|{p8v~cTDwD=p7$+*R_8dq(xXb{>Q8y@lmwsVn zkmiEu5n=#q1#h_35r$|LVgQ=}7K5DO0X75{NNG&f=dpV{jj8$qb{QnS7qLfU8dLQp z>@qODaZJ@)LBY8b9A=mmDJV*JfD{}B1!o;IQ}sb`{Otvk`@!S^ko;AUJj~QIrs~hw z?M-8<{(@ZwrZT7_`Xzu~l-i z1LbQ4Wb@qW z$c>*Qrs_bjf*{-qBESkF(G=(v-vT){7TK{`h^8rQ@P>Jj#tKkVFp7z}_BJTiS!(Zq zDAwA$pm0oMW~v4YSA#{XL4q1{Ku6ACm6->U(JQ_OvN<2wW=NeU#lXM-YLC>VgB^Q| z2iyWdYS)49HDqEStPU1{aZJ@IoD5tVr$GiHMFLFTh^aaQ6n~ze`C6DD1L#a%Jq8Ab zUeFx@xuD~pnW|mc7+AnpyET9Wn5x~_KqEq+ZUXl`b~do!9d^(jP4J!4Yz*?MkhQ^j z#r6UWYz^*g3@q?!D2$&`qY9MdnZT5^#urf65@vlIQ?(}>1B=E&9_+o5ZLlVR5>vGo z8v_e0s!+1nqWoe|w25fx72gMi_5)CC!EA7=TL%u0S)2@P8V`|Wx|pgTfugtiF{rH! z&ZppEr~D_NrWfcU7q}<7n5v(Gl|BP21%(7IrA18D&$$`6Ahzb;p>=fg}^p~?w5Iqsvey5;a0~nRlmX}4_bes3Qa>y)vr;Na0xLWr6h<&umFi;s(yp2 z8e$>1|H2G9%M+X~nX2ESs={WbUhz9nfWJo$R?XLCFtvnvGT%Y+R$3fro*MiKUj2 zhk;A$6f@}hPbOw#CUGt1YOoBL1mD%7Bg9+{QpE%&!9rSMTE~#JfH!(x2!J2q1Ul>E_%XCkasTy=mJToLp@3Cp9gN|0#0?prn*8WOLGO&Tv>lHKe zFmN@1?mvc`XI2NgikX>3qX-lqa9#k0+q`w44_rU zAp4k@YeBaPGO^TxB$@cwYS}??z{g$-y3dV?kE0fJ?;8_q5oipH1w33;3%c)*iI1fg zWH=KaYc0rhCO*zu(4AmRd|b8Q3;OuDYe5&qG4b)#f^I2f;^VCaT}Q~o$5+b%aR#{U z313^L!^Z@^S&kVTnc9rvI<`#JAeFk>OyIlcbU9e^uY(8s#k3GtvgwL5>u@kZE}!EO z(_+cL%MJ=|F)eW|y<$#KP=fBega@S@b2Z3+aJ~^!HRy7hd@hia^oqGb8didG4lL_R zY3u|I$m^1BSDA^Pfu6B} zu_5Tv8U|K|90mpkAAM#9lqkwdqJk0Z)9M| zSOa1)H^5lW;j9DoFtNLE);YNBg*uq*s#+N9Z!OF%e;OGWJQsjWzV#l)@~MNc_!xFH zFfiO$4U%pC4iRHxc&!X$S(m_At|}0g5JQG41A`qiBLf?Q7F0}(p-7d1;kOY3gBZhJ zIS7l5AubuBgN@<3G>p};1?E0Ud6-zEBuqz?3XIjU9432yBaC%im=PL6vD;v#6vE9D z+zu04APY046Rz%(?2W?02|7{Gk3VW-tYv zyAF=ksr8VUW@C7-4s)qa4UBd64~&&L9maYf4RhbzJeZil8VE~@q5Kfcyi0o-7_M?M zGRQGpmt$ZM-wAT5nj=IV8$)LUjK#YU#xl=@u`(nfEG33DYZ(~&3>g@d7}kWrSX{Fq zEH#FL9}EoU9~c;<7__Ar!6}xF;mk~kUN(kju`pKNL0D>928~NGhE8})Z-?5(#^Blu zaWfl(GE_{C;rKy_>*W|g$HRd9A;(ah0232}vVJr8fhIo~7#Oq|o~&VD5ODzc*HW5+ zLHP-Yb!0vR!(Iah20eyvY>W)NKR~Qca8^|X15~UG$}(b*ii3#BF-+SCu}zPmdObvp zjp2D6%txjx7#K==K>Gwsm>I$0EXS}F%3@EW3B#z7&zPw>zh!FbF$=Sh%6h!&qFX4=PwA0k3k7q)@d>Dt%ap9)q0358^e5ft}TX^8%_+J zP@g+7xWZY@P!=1*4MSL&v-m%Zm2?#1Up9sVM_{aP@RETo4Wdqr;hhvLBsW4+HX8#I zylm=+mx&AHVD9sQrwx%5NNCJwLZqRK@HDgzUjCWDbB~=Q14I5*P(E7!3C7ZW2xBG1 z!dT2HFx&dzY0X*+BJ0MG#K#B?=N}Vc>Lm8USibOd8u${H?mITXWHS%J#P)MQ%2+-I zGiZFUFLCXj>h8Cz^Hiq0Lh&na~ zxl|bICY%*n2JtT&L-a!kD~aJ@GNepoWB9%crsJe0jCG3@lK%V{5-z|}$O9+G#oVPbpXEJ?VI zRdAQOKz*6UaN;>k$I~~E5=4w)AGAc*V|eokQa8#mER2NImvRhMZx|TXy$02d)^JuY zv~HARSP5sP!)4Q2U^eUyIqDBI)Up`TtY9%CvH>PLe?5#915Ym-*F(yyJce3m z_^~l${D*{J5yQ_kNX==+(AooGSutqmz;cB$)RZ!Yjuc25a$;zQvz+%r#Ml@zUqZ~Q zVmQBzfkAg4149)<^FtV`WFLg(#Ne|J5?fUaN1?K844J7gH}8^Q1hthGEh92-MtJ*1bF#IOk3reR~ay$oUp8^dvE z%%m|?&V;CIVpzWb#=5!+!s22`{10KVF*q!M>CIUQVWly2YBDf9}bfGcG#!zkm zk!52DhNq_E&~m(uVcJzlS=`3J5(iA08<3AH!|=l3w#?RQ{eZ=vNg8$%UT zjE#ZmB}A5uVcr%PD+?+c#~=VL`Pmrc??Pm)7*r=gQfC(f%SlMt*~K6YWw9}YAA`8X zjlsJNR>mHSgX9!BhARgkkr7Pf zI#gtC7EI(e!!fX3yzr2J1X9Bwz%W?|X8R+ClT3}EQ8lskg6)sGB6z#Rb@tZu$o0s z5gA53#&)pC2B?S#qaI@y*e-Uszl<2?fbE)a0%n&Lqdp7B_WLq05nD!c7EtV@!%GQ! zMr#&O8MUArrpBJp9&~^P!#8NT5y{}l=)eLBF%Mx#XhbqNF*92w4y363q=mHkG z3@@Xc89l(d^x-aaX7mAze0v7b70KYvSPd3g4j1uc+z1vq4;P7GbY%tk;ugGoj$rfw z9nQlrSq^4S9HTEQ$c3ljA)mnL4;I-9w>^O|8f?zQ4=`N`jEP`1_hn%s^^EDPpp+1K z1}4(Pn86AfojnLuQ^MHBn9B+(>ohOH)U-1efX&%?04CDISO+$z1#V6cV>8&Cb5L_y z82cI9!RAz7hv}NY*abG{6WpAsjMKqxPJ-w6sf@G1Y77lwx@IsgVFkrt+Byb?95zOV zNQN1V%fM=OJY!&}c?PP{<}$7Zi|{;UU^vVPQZtuv9oU6;x4=XeGHwTpn1I?kU^R;w zcY}2uc@9&voN+%ZDE-u&f{1W3E@%7>*45Yu5%FYL$@m@YW`iDxNF>85#$RA_#H3*& z+ZnmoK;gV)4@_hyqX6jOYKANsgor3ujq6F6$Ua6THc(1PlZA;KVzdUU$v6QMImH;r z21*H^pCLp-*+AjbeH0-Q4px(kBoYUlfl`=hLya@JJEH}jD zNQO6z*TA;_{{&GJ$-u!R%nmA_9icvDVBlmD1&jRN4N(IUkpPPrLVW=ek!J^m*o|(8 znn(stCKb?O$PC=@xDaKU!48U3-SrSPoQ#T0`@te+2Vo*AP?6xS#yAVdJ!5vkqoI!_F!{@;Ueiw(O{8KX!t}j zq%*~HfZS7l3}OyQB$We{yMy*3MAE^!wy45HvX~}tfKoyfJSF5XP2m8AAwv;F4JTtR z(|)kY>=Ljzt!CN})^%+^L`@_^Ez>cuNb!7#NGH=QCSgvH?f>CvemRpHC&;ctP>~#_ z6-*&uk-Kn_l}t%sk>7BU)l6lapwRd(1+#q}QwJv~oafg;?DAyT$TWcy6snU_AR-J5 z8<{3@f*{<7)3uA~KUie` z2ZRU%7s&6QIvzJ*~i2SI-HYXtqMX!hznG1tbpg8{Y>IqpiuoM1ygg3 zNg6C-1W#kfnY6(s*T6+iG5Lc1gr6btGUWl4K`<{G)&D+ zre-csZmN=lh`eRE!_>nCisgIHAR>_r_n8)QfzpQ2Q<%sDrY&HRaJb3On0A0e%ua=Y z;em4{XlWCosEMnGb?RzQJ86#e5oUJ7{DC;xAd|OJIL7!u=)3d>O1} z>KO(Gk3%58D=^;%i~QUQ6H#J*05FrHPu<~aT$v?!Kyk5E8m7ygSrM#@O9m$5!K?-mk%EbMGaG{KVw8u8 z_%NG+)wIdNL;{&z!D?*bwudqMfkj@cz|=%CM}TcNg}Wz;IU4LjUbvcQ<^-@vCR`+j zIh6;LyWhj@ie;|g0gWQ`!qvnwSA*@+gu6M8xgPAomrr1}$1`_<%}GCl5a|Kyy7?R? zlEgd(tZQW#LS#BvWY;E`NHX&ru*fNHMriD$Fwf%wrRQe2U1`hLwAU4}H~ zB|M-q{1-G%85q)-SMY$^Bmp%DHE+NoC!oFn>G}W`*-(X0^93wYg{12T*slLbYW{#l zn2^*k@PgcP8A%NbSmZg92nSe13`rLcSi}iQjR06=8LQOqd=be|z^nz<#Rrem7G`6xuBGrWY-6_N1%*#5-1atRXRw;N*I?$f zF}s6J){;bsc=CeM{3m6YNEfpY*c?;1oBNpk!REY&r`0~@U|vve`mYYtHGw${EW!m> zGm$wGY}XZds++-_2sX#;6HM1k<|44|8t@c8leq#cVg%PUo4Fe7p1;u1utBH~ zi~7 z!)_xP)-umR)3uX%5m?PXaL*BB&Ti(VU=c0Q@)oc;dzhD_>DtS@60BxFsDlMov!8hl zZxf>c!|gXP_Z(v00u})u69iUs94f;438v;E^H#7L(0T%pSR?~TgqcBrAyfilbR@$K z=B;S9-(=nnw!I6qKnHB{E#}=|k(r<)_P`>ynfHQ4PQgR$F7tk{2tPc0?lB(*izMoT z>}Fti%kY5tC|KmL22A8B^Kr0<9dtq4TZUK6C&3~nnlLp#nNNd7enSKpA{jVX&Vohi zp(aN%@UvV8i=@F#7Grq`7C8YIQDJ!u7V(6O7_vMCi#&yk*s(kZi#*bXSoW5|pXDVu z4A(-}4n;DAvAhP0Sb^?g2Zu&H%WGaxs2(qe=!#@W1BoySFl39tMABK_poMb=%R4lY zES8VF&5QyJqHtY#EZ@L(tp;7f0=BDwx?1&dh0OGpjYZD5fEc*$nOdKfJ78X7xq8SGe(f<+RTVWH~6 zdK@g02oDW6){|fnKd3p83?8hf!6G4W+x=KCgGFw@(~m#vHL%DgxS9agn_!WbaFYXB z?|{Sb5!}r|toOlcHp4|iSRa8!7~!cmjP(gvBn+OvB3Pe+MG&^fvcBX4m5}#SVg8C^ zeGOJ42-lUs`W7s*2QHGx`X1~aL^@1j{fH)##`+CSB%Spa*c>-_ZI#Q)$PX&(5a#5u zGV_CS_hop<7qW7IMSj6c{t8wuu!tlyoZm9kv+{sNY@s>jEkipiA6Vo9=>kC2rR-2sd5?KGR$NZ;b&qLV1U)szRdGk#rT;R85md(LBi)Q!va=iu*gm5 zN<5H=I#@&qNsTsG;;%@Cb*w&M5oRQj5HwxuSYyycHnApx?J9uAMI^&E z)-o9TzH7J7)|5| zYdJV}{6JUpfm6#d)@pDJ=0e+JcNvbeR)gLA3~E;-!*SMneo(8x7jzK<*sfEo&0vu@ zxX5YN7O+SWT;vREE7%-Fnm^0h2KLunc-eA}wFfMMC;`s1_Mz#zz&Zg<_z?Gac6 zVGbAD6R-%v9B#H}V39xYb^;IE3$UA$Y9Qfrmw}h<6*wK96@p}gw+y^&@4&ip;pMyl z+h?%IDR^86v3&!JAmUVn?I&0SVV5Y|Z?Ii+;Nc_1_7AK^8)6khB!d(ilK`mfMVKSQ z#tIfem?O)^4i=dMcaI_)rvRvgw1fLXnT-dm24Rjen*dlOQwZYINCs6lVXz1y#MIbC z1yJh(bvALZ8bmp!#U_oWMwd+%O^pGYBAOZ_Hf6AyzwmfBW77bOAi~gsO$#g{23KRn zrh{gV4V#_-FQWj%G4Qx6s0CunW{9T7fz1SL4#Ho~Y!+YV3;l$X1P}rk<@%K$ww%!4ukg zf6LIw)(94{hPO9hB7G2J7!Ydyg0?z>>m869(0Br9Jq1WvB-k8~2n)1sie%_vYZL&9 zfOZN%)J%YiaMyzP3=EMBQ=uXek6|Lq*c#D%x|yvJoO9y}A!;}ox3D#XMSg68iEL+U zM)T<|43XVzZD?xtuyqQkG59`YV0bK`#?ao)z;JY_F~fql3=Aih8Z%6N$G~u7sWHRd zhYSoamKrkb+|I!8eW@UW#VrN~mSu(v4oM6QyvqU`^d2xUl&P~Z7-ldq_%g9EEMCCC zAhwK+!G8;cj$h2cz^=!}khPeB!B~%tp%lso?Z=tQ%EkcN?K0nnjRCa(<+=?U1885( zVH-vUJ2wV~sjQ3)5m5TNHv@yzGDU`}6$}i@%M2M##4s>`?yXUdVPNRgVq{S9WMI%) z#>nt47(yGkL+CpJAexQM*bwB-um-Ix1_r}rVGW?T1JR%u1JR&30MVe>0ny>JLFyP8 zPPu{n#mHdf%)nr}jFBPI3&Q{F1fj*8A@pT01_rBTj0}Ig85qn=85yM985rV?7#Ws? zGB7MjWMokBfT$~TfzbZW3=H#f!E{4+O zP`U<6H$v$)DBTUECqU_`%M2N&yk=mSwJfZmnU9gdmnp1aQ!L2dum)ax2p!uEq3>8g z=(+uu{$2AASkJ%2P=dXg$b3Q?6U4Do<L~f$;xT zLg@P|Aav+u2;KVzLWewo&@52?E~t4=pz1rLAo6uk`Q29`{C^1$S}+kp>p<;m;ept{ z>=#6Q9aP=^wGh4;)cy0I;>*87#G4HvG+z~jmV}zO3#zY46(U|^0HGZYL1;N>cuj?d zcRkdc9;o;-sQ=kGA@17p529}mSYC|b-fISi#mmeXcHd%Pcxo2buAtXdQ4mU}Ru}=7*YK zkT@g5T4+8#-~-`r4}#Do9w7S|874S0FuXKlWGL}sU|7A3k>Q351H*=8j0}$g85p)M zQ)CbU=RZXTPj`?$MTWzkpnR^#Am+`$uy2_d1H|8g4B;LO49AuUGE{{!Fq~c{$dE3< z$Z&O;Aj5@V28LT8abE_8C(8sG0(}`6J}*O*OV#lV3{13*v*yTM!K@k3sah z;}H3b3lRGC3J5*pGl)iY56|+jhMOB17(n#@+aMYuU#1?`(EWmeL2!9k!|U4+I_?sL zzIOpa8{L4=?@K{6Bf~pzyfQ-LnUP_?D=1tblB#64FP&x-19um-U z`u9hWydc9@9|i{b<%SH8t}-xuiZ^5kJITP1FKozgVIc!UgRmk)?_>rBo#l}F(sVf+ zgV9U|2CL<449z?sSm3Y~USx_RHBAv^Fy^xGZO5U@nKy z9ETYgJeRXED3*h0F@}h}3=DqD1sRsU2bDKr4cEZwCamEHm^NexNn~IMUT(;c2BrfW zV!ndR7i4&_oq-{Fxgf*2?F5*ZlkmK!q6N@8GWUoOb7FNuL+(sE;PeLrux zAj9HB1_relL52$<3=Aul8#0_&$iQGD5A!b@18Cierz0DK>0$qfol->rW0~^$Tfz%r^1oJ`U9iX%Zloo>0OL!sjd%@vr$iM&1V}qbCshKf=>K_oTG!vpv zXeLDczZno36z}hrn=#aV2eq%l8Umt0@h`^E3U-$ngPs5*!&5Ue273WUhHuNw7`g=+ z8N`;GF?b3xGJJ|RWAGDTWcan*jNvUmBg10>Glo1tMh4d;Gloh0j0^#+W(@xX7#aR8 zH)9YIWMr^UGGkaI$jA`8%#0yljFF*7%Z!0joRNWLg&D(14n_u^6=n=f9E=Q~w9FWU zI2aiuR+up?=3r!yUtz{j!NJI&w!(}7w9ZX;g&D(jc18x16=n==9E=RsE6f-+vNJL` ztuSM78pk%8HRfgyN>8906AXb3W-Y-eByUm?bDwiwbr2bGgkS=AU8ZD(Le zTEWOr70AHwZ@D7FLT?6!`55Lw%y|zrCufBjhB*a07#PY|Ffz;uWMHsQGGs`7!obkD z!jQrDHH5aj0ipvNn$LscC9vTu4j3PAo+WT@;0mE(#GE%zB1rmaw9P~XYGz_J2S zzuZY?V3@apk>Qvxh!$ixvz38i@d`nPZxcZIMUde;l+K0Hd0;xQ!5d5qGU!2ReK2jv z;PMERzXTZsptK;A-UyZ#WY`3ye+PoxCCH$#15|Gag4-vbw1gRy-!U*KYYQ{D?_glC z))r>yeapZQpe@W`xPyTqNgL5Fx#-Touwn(GoajnqVCeBQWY`KVCsr2L9uq^dZRLy9}g0tf6ujC_WJGx%`%aVWNRB zgT*TbhPeiY47o=@`obFiP6D-?3>luAgX&R3hK<$``VW{d$dI^~fnog$Lxy?Upnj<# z!%Q%Z2zTpR28Jyw!WyQnfY5JuLug?ZMzHvPDF4!bhJ3;6~D8D8M!r$)=pDhQvxxya+P9m;y=9^ACZ-A*^8y7b8QbmLbEsmkbR1RtPd!dN42?ULnlDvV?)* z#0p`CEv+D0j3MF{h!$jc=L~Ac3o`74((V2b{tQ0|E#t<(aB+nogP$MB9l{J=V12?2 zhgm@RS&V^YE2v#A#$W@c1sNFJ85oMq1Q~jkFfeqQ2{Kqh>C;OX7$%tsGQ=-rU{FvK zWcak0fnlDGAVd2S2t8vVM4o*q1H&CfF^006p!|kNSFgV_Fx*-Z)}Z(wL?guee=#uJ zUlG=@JOx6p5P;B{B8*^h>kJ6rTMa@_&4kcW7eO?_oabK{7@n*MYj6eA2ysw-RBRU3 z5Ks>CS6D+il%87#;xjTFvIT{UBEz%)3=A(<2r?L3F)+MaA;@qshJoS73SkDZKOlKQ zhL9LgJTWrxgo5~t3@HH+`l>60<^ab#Bf}kk28O>Y7#TJ|>1|MTlcDr4a6B+Fh=bD$ zBSV}IM1LAMeKIn*Lg^H!c^57~?ESW!fq`iyBg1rPziR0>i1;%oeba}5fqx|&EWHmBu#kblVr5_h z!$pw2kaEm=B_f_d<4%89gf%G50fm29185gFh_BrQ;e+--gZQAG(jXeNKO01Yc0_|{ z(0*tT4cZM2qCsbyfN0PzY7h7$_#{%2^qdIycaN#JsikwMmufgxfgBf~u_2>lDn&xX>Q zZ6V?_9U%0osSFIUD;XKu1sK8lG^`mIl2$S@gt9R*q^}HYSUweGpCQ9RK~TF(kwNAO z14GVAMFw3*(72r<1KR;mcqlSV1os;l85X?($ulw>ssZU^WSFrZRE{e$FnfaHm672o zxcp{h@Sg_qFCzozdJqkX|B{uE_^pJ}bt?@Ss>2x=4%;!`79842($(3A`wPP3=dcfnSh77sO7#JonDlpLFnL+Hgf-mj z1BFvyLjZWZ#|(VB!kLw3;IkDjLfv(3Wnjb0CWt!zW)RKDu+`+O90rElD+3!ggVQN?`G+e58;*eG85s-~Ffh1@C^Fk~MXJptN0@BY29{=I-WMpXaWMB~Rg!H@qt`uaLmdL=szDkh62;84! zWVo9IYF9zxCtsM6VUaHbgU~8NhK{Wa46nQ)?O^2o8l<0wXs5yYaggv9WWe4|Bh)T~ z*dx9Q-F=D-(q0SQLGi+|CPY2!hi6(0)Fs z{{Jo#h=Jjg79&GqAgG-k)=&j5@535)LFpw>+8jELItj|} zGytXZu!f#X5Sr^JgwBAD*J?ufuc70bE1}~)*P!$UD1DcYkwH-`tRWbx-V;m*HoQCo z3Qt1@S8#tPu;CF7aTr;4ISY87uc`}ObavU zXE8ANtP*5!Ok`lN@iSy#D+A?A*f;@1oX;P|hm0dMz{g8q;t+Lj0|XiNd_>j{lMif| z3U#L_n1-lN4@S2SySnNSm^x$Vcnw6qRwzsyW)H%BpnL>!CxjLQmwSQXFm=of*FdL( z2{SW1l44{q)?;Q+D*=_0f(-AI7#IRqLDVHf>5Nr|450Q+E|i}yEX;5XTrLPRTx$lE zpTZ0~j39I`xE(Fb@EcrT2s1QtL(*MzKFEAw2E%8d_J%NnBbW|rI1X+%g*9vhr~j~q zdEowOSVKCL=7Wm=1;12{sHbkhBfd^ z1f@qa1`TljHe=WbO&@o5fyzZghS?7p7=A5>ghRft8bjGF(0Ec{Lt_L;UtmLbB#4HD zH>jUzzZ5inX2<}MH)Oyi4;gP0WYBoVz`z{`Gap6^GN?QQ*(1oH45dNpK;u|HpF+fW zq2fGX+K_=|F{nQYaR*|23uYcnT$my6Edzsxo*_ftR)~7d51@Qv%s4@pfuVGjF=L(< zgih6AV5nMU%-EpEz)-)+m{HpRRPGsrmo>DkVq-`-2C6^V7;c_nVED;s#;`%3fuVDi z7{hBW28O;>VhqB}pneP+18*THzS$Uf!Q%*w3~y>c;mXKh$jrzPlElcc!~(*H$g?qU zK-H~M1nFaB$We#Tb{e31nUNt`3!?sv4rn}ukwHQiRBkac80dk-A?}#DN{k_zoq=KA zDmI35xgh;88X~`Pl^8?3AgKS2aNi%Wy)bt|=0ic{HfWq4M1#iVK{RNb9z=uYu|f1y z=sZgxJ7oN~ITw^3!Wzz1K28JE0 z!Ws@i=fQHrAo^kEAA_1x3U053HJpK}D+Q}lWY9Upz;Iv{#DAw&u`$eg1DdB{V~AvD zWH`TyjbZXd28Jt8+KU@i{N5@yXuPm7DC}ckc(IC&A$T6hel~{a6$}iYRxvUti!m^K zM^neRnvEf!j}bi2`$Z8l4ggZexf-{58@4bo2(D&h*qsA0KL$LG&Bk!zClstMgwLqYP$AiLZs{F z%M1*}N1rKLfxTA)r|7u2t7wQZQk!azXM8H0M3v%s4^%p38;qw=0eFZuG z!j?WWcQP>KAo&Xxez0_zH4hYTuyo1B5S0c=zmuT!Eogd%g)1Z-GcqJ8F)$RaW@MPF z&cILxO|OxwA?X!8KUJ@0V}O~*$j%6M530Se_z7&d{sLrwa6=Gy9zM810X!}l+#q-Z zBCZal%c1HRr$fY_mxAc91|4X5RsRB1ZiY30&RGD>6Gq*J@ZVj4(2_SGv_6yu%@3BT zD}&DmX;{t1AO^VKIg*R?zq-gx|VajA6Mj14GwpF@^#~28J1{#Te#rGB7M# zEygfYfPrDtYB2^GF$RXCtHT-|g41tUgNZK0eS+Y5HHbOaR*Ny1ure^DN{BI}GlA+A zMuxB8`D|f^d3zWb#8(M3Fdk)K&|D?VaAFSw!{3#{42?$_80IY(W_WOdfgyR7FhlT3 z28Il1`FMM^7{e7tkU0?Z^Tfm$HZgkUmzjI@PGrs-zXu*5W&Y#(;~yd4Yj}XAK*}cWCN8yW-9!-e2R8k=>X7iSmltFB#s+G~LHJ5* z#28ux85q>ph%u~WVqh>_W5!^$jDcal0z}?s4J4iHR}f=(z|O$X=_tk!&k3QIF@nY; z#TeWK85kVbh%ro6U|{fGBgT-c#=sD|MvURSCIdtK8Zm~SS_}-CYs46gnIZbvgdp@D zaD0m~JW+t~7qUUzA*2pT4?l!Jd^QG{f849-0iLVeOa`ilBBZBSRvnJXVL4 zr=4pc<#8XHdDGUg!RI%8l^7TntbwRsil%PW8a9R%;BgX!y)gSsltANX5PjRR=tFle zOdqm+N6_?v>U(1BL$9|%`f%CDiR8Z{Yf$qUa(f0c-^0dm8anTzt^{hwpvJ?QHEayk zVGIlx*Ff6&ApJGq{vaYbs9PB+o~3#u1aLhIlCVW9Y9V_3_|$Y5s525q0RF+2pz zGcxQ`goJmsI!GNO10S@%0BV=^LE{-c{y^q~+_PW}8v}ZJ0qFy&Pd);wm)ID#ax*YI zT*JnI%EujErr`A^Yz&LQ>pU14K;iXj4I6mfrh*!TR$d07r$G5r)FA1cQyo&DPGE$z z-$Ctm(0Wf8KUE!~?>)%f7a15}{0Mb628Z(u47uuT48GGr^*0;CTrNh2N_94dJzWe8 zwHk^H8Q}Ep|$>Ys46~fc8tQ6=Nu8W?ih)69Eks{|ff$1z z8v{eLp%}w4Pr04el-i2dm-{W zvQXVciGPY7GcZ`MWMcsND|Z#l9#r?ZUEK44&o zTg%1}Zv>h*faFh5egf4iAi6*av_2X&9x&sHk)iYhD83mP6u|MU$nYbEfgx?JB10{B zJ_nu8%+TBh8vlm4bAvmiUAxd7(%ubofs8ZTqtO{25cSz>5$PE@e3CuI7(n@@R~Vws z#|uIq@q*OzxjNYOUG+lMSFl!$p+XoG&TI@R(EbV2HU@^$wQLL(#taOanBp5yKw1;>AQ|YAG$kW{sE<%Cn1P*0}+RWn_(Dw z{IfB@!Uv=-ER2m|7Px-|QD00@Jw)AR40U1*j*O7-nbgF<5Eu>#Z%}-p^UIeZ%R|gN z5U$9uxf?WZr^w(2ZWk*ubiZR@c$ou{kBoq%dr&$Bl}8|RA?n$n>e(1z<=&2Epzwz1 zt6B@uSC5ph-<@Y*=!ceb0nre7ka?hW7cZkA?gph3WIjk97SB1*cz*+p*I!WjU^vA8 zsCBQuZ=t;|J%s3F@V;Afb0XU1F4E(W3UB}6SFaZ(rauC8$+%!sQYo& z%nU2R@y^Tux)BA`z5umfY~&&4ZH(7)Km>NO#zA{5TxLi|axCvgTtIRM1ylz&RfoT~7LvErncs-|$yfOo88))26nc-;% z1A}j(GQ&b628OUiWd`nrAafw@xRD^nAjZYOa3UeFVLN#KD6Ao<6x1#XYj_XcZy|jK z!momgi-OyOVGWK@@l>cdBUD@$Dt-{W{+^Jz2zl5zGHm>K33z-otl=(r{1~C`9N52M z4XIG~t%L3-k%qcsJycxvG{oHxq3X+_;s>DWQ=#L?rciw+pz{Br`u;%mO@xX+1?$7@ zjw2F~ad2|oV+@`@4{PWHuQy?1us8(TH-K0-k}{itVdmPf2CYO8jSyE)WMG)LHmt!X z9z;Xpb!#?+J_n_rX9s}KYG{)|{X z2ADsM!QvPL!@9MM49}qaMZF9RyVo)?Fe-xfq)lT0@eizJVvvFIcb#EiII)(6Aq&c1 z^n-yxnTwTS3Y0&mmw};#iIrgml<#$nf#K>}c7_K~{+Tlj4ENS@GDs*v%y-!6 zH-kG8|HE2dh5#h~_qBWsQ=t4mB8&|G*9tJWfp^4CW4ODSfq{LUAVUC@4>HdoR+u3M zi7&cNlwkts3TuXG46#uR46^Ga7$U%X0H-k&gZWYn3ThDd+{tBNaEO&*umPWTFpc5; zW(EfJb#e>~p#1Ke3=Def6c{wLAnN~3VPLRWr^sLm(m)`A@Rf3X)xRX^CvU( ztYct^U8lvM1m5{LnZZPeks)oJ4ucJtKarv4H3LK5Iz0vz@R>l<7(n({uQOm+0_Fd` z&%jW<&WJ$;yial(gLypzL+d&dh9ywGVoe#qbDE}xMBSQ(3AH!EDU*;|Y!`F2I3>?Og@IUy1 zfq`p%AcKevh(A%{>UmIl3}FZX^C9^~czp=Nek8uk`f%_ncm@WDyz2T$hSx~)dh4SZ zSZqP&wJ~fu#=u~{K9(T^%4a&xz+kgJmf>j$`=@44F)^49}qa%lQlp zY7DUq?_vA`kbE4&cPRf}0Z2ZMfx!-JA4k!41_sCV@eCYLe%E#e2JiLp3?dLd1N&qK z2I2Jy3>Nla_2BpmTc6C30p)|@FKm4p!we`N6yMBDnGENl{GBxn49rZ~40n+DaqDwI zhA}Wh!{aJ5WQ!^@!!bsmWCn(vjNl9M7(je?&X)=&ysyL*nBqGw2RH2C#h~{mh`MlL5j9>7Ts58LA#)|NQms zP(Dn52b2$SKQmJooDb0tIS>kF|NQk6pz<*N6QO*F{wLa#;e3$(W$UNH`5^btUk^F{ z0^$EzaCwmXTQ%mu`5^t9*Uy9VLHZA@Uj*gD>|X-qL+pQ(xeU$+=|8!C1)LAke|`NL zh7w1R&@=`iaCy6qLB$!u-%!KA@NoSGhCNXJHvvY5kLx!vJb>~+cgFl*znOv81$6D; zG=@MaMh5l`TNxyg_>vp8F{pz0(Db3SVLO8@nE#BCs}fWn?O^Z$^BbZ0VF$x}Fn=1y z_h<%&-8wrMRzvx`F$@d`wRSM<0P`C;!e%fqXl~faZ~)3rpTWSOzhNiCNhqKDKS+KT z!$l}x>_13;7sD+mKdcrcznkF^l%G@!lHbkn8p@A*43gi&@EOX_cnp%?!|(^ppT@Ci zIs=2*hP@0NuHf+EIPnj{2kjDMV3@|iUJKzXK;=UoL-;xnK7(lt1B1klk+gUO&IB(d`a0bfvvt(fK z+_0YkwECBUp^d|7HAw#fhPzPtfYl5Pq6`NZolyzh+ogZz{7EvK>*6nUC+QE&3%|b63U;ogMlHO`3Qp|l)qvJ z149t=5e6+N-=LC#;j`#b1|ulnvXX&ehVM}ZYbgJk1S5kh!!ZVDDF2lNBZIN-F$Nzf zKdBq!{^JZGP<~c7$o#FBv_ zdc#SEdMF=M@1$=y#n2ArYZ@^y6l^%fFagYOfu`Tn3^Ty|V;qq9JIyd3%x~jZ2sZyT z!*VEp6WILI3>%>QzO@VtRU6JQ?11v;u4Q0o*l>p7Ae28PjDewj!&!!tQ2v5228P}Z zXBjR*`JZPoFihESj^P%R&o-NZVg81543D9FvviRE&ojJ+^1aeQ{y)#~1;U5A{{q7w zFdydr3k=NekoX1Jzk0(325u-HWdFtu7a2sLd{Fv#Ww^v31La@-$G~8$dx=36%1`{k zz_4S(Wd>a+Kj#Mn!@dod8O)&kpB#(~oXl4k?4W!mPDTb%hARy2Q2uMs9aYR%8T_IA zFRY9VtPEEfA|QOI`>!#8c1tiYOk=QPWn?(I;Tl5)SbiGAMGFRoa~rNRbVK=vEkXPn z3@f4hqHYlXCc_CRU;PgQ!_^J9K%Qq{U^vFxodv3Y@4)!1a~6Q=Hw0g%l7ZpDhP!b2 z?fnc4&o|tM@p+3|85mp{9>DmlbF3H`-fTed(~Lm;M{xP*c_981I6sn`k>SmTXK?<} zD3JUMIKPVrB>xJ|Uo#0L4?XUZ;TY@N6(IgQxcoh^`VVlv;1&jkPaB{|UosqH4G06N z{{oj^xD&+x2Iu#H`9I+NyT3s4zuqry z$mI#Pj}a2SY>Wy}J|uiO7|o!3NceIw`at=R@a16yoxZ@p@Qe`>ete8IP|JX@bFhhcO7shlIZ# zV+NED34a5|Iw&6!{zi;5pnOR9n=o#I@*&}G#&{0OhlIZc;~OX+68=_<{61j!GD5=N zhEWyDhlIZ!qcxNd34aI1Kqwy){!WZpP(CF5T^O68d`S4aF-`*WVd3x2I19{&g}*!F zGB6(&{_c#MKzwNUGi`KdJPPK+!rz1O0f-L|e@{jZUx@o5;qT3;0^vi$--l5L!iR>x z52F*54+(!i#t0}M68-^e-`69Fdr8F*^Jx3d|3ErGadr-Vd0<6cn-vehClnpY{rLRJ}mrm82^Cy@bJ%N zRPl%S2NM4Ij1CY!H2ez~Js^B&_!lt7LHUsIFJdf#@*&}0!q^4nL&Cp|aRHPM3I7Vl zZBRZW{Hqu*K>3jHuVH)zrS`7z^b?!oQ8N z7|Mr)e+OeHln)92F2+SrJ|z5m7%!oQ#K5||GQ|9-}MU_LDT`x#$> z_|WiQ#n#XG7tDu+{{%*fK!|@J<^M!R2PhvB{*xJFAbe=}Phm`f@S)*9g%PwH8B~5l z!hag$1gJbD{AVyOgYqHaKZ|h>ln)92IgFQ}d`S4uV|)YUL&ARnBU=!}eUR{9#Ha-2 zL&ARvqXU!=3IAn`$xuEd{8unmLiv#JU&YuDknrEYcpb`z zg#RYSXJ9@o{5Lbc1M^|wznSqDm=6p8&5Ufpp#B@A{^i-YnNbqVhlT$ZMiUSpp8mHo z#z6Uy@ZZi@0pUZ#e+Od&gbxk>9gNeUd`S53Vq62|L&AR#;~^*?68`%bZ$SBw@ISx^ zI?V|be~|D$#K;i>32#XFA7NC2@*&}WjL`wghlKwL#snxI68@(co1uJ2_@7~%3FSk= z{~Y6bC?6937Z{I1`H=9x#CQ+NhlKwX#_v!*B>b;2vW0@&2Mhn}jC^1|Ec~xCN`d*X z@W0Ne2I520zu?B}jFwaCds(|^h@c+%I1LniR|2Lxrm=6p8-;6FGJ~aHrHvVP|2lHX!|A(;v#D|Cf zU&a|wJ|z7AGj4(Kq2bTKv=_pMhCc%nXjTxEej(w{#Pkv>4+(!3rvFerB>dT!L?a;n zfrLK?lQxtON&j3-u24QC{CSw-p?paA^D)&z`H=7zV44HvL&9H(X+M+?34al$t57~9 z{Kc4FL-~;KmtbOygt!M1{!&cRP(CF5WtdE%d`S4qF}Z;Gu<(~>@&WT<;V;h=0p`QP zU!Exi#D|8z^hSB6axfnj{t8SJKzw-kD>ChY@*&}`%=8Gthlalj(>n+s8vZIwEKv~m zL&9H;Neaq`gue!p0hA93e=R0AC?693I!rN8J|z70n987hNcbBtO@Q(t;cvvW2Fizo zzX{U`C?693W=yZ4d`S3PFnx#eA>nVu#2gKAFC_eJnE0W5Nch_^NkjRN@ONNRhw>re z@5E#b=EK6@naLW=hlRg0lRKCX3x8*(U=SY~{t6qNnbN>~SopgzHGuf=@ONce1LZ@) z-<|0agbxjW52i;DJ~aG2n0`R{kns0n;){X!4-)=9Oe#=5B>erDte|{I_y;frK>3jH z4`RxK@*&|L!qfugL&86d3AF1Ol;0rXAHlQ(Dh~<&D5l#`J|z5On4UxVknoRV`V8em z!asrOKa>v%|0E{vScv-};h(}J4&_6_KaEKl%!h@4I+He-4-5ZvCUY&LBQC z{8cxmGlhZqu<*}dDgg1};h)Jg2g-+pe>T%z2p<~$IZP)Zd}#RRFg=FyA>p6L^cTv9 zgnt2(cpSt(knk^JGKBIW;a|e!4dp|^zlZcb&OrH) z@ULTf59LF`zk%sDln)92CMNcHhn4@l%6|vuZ)b9Y z@-b`#yw04U_LDV_AxPlPr#qdu(^+c zA#>wCCLb^#CVzm51+;96VH(3e2L^_t{0EqHq5K^V3=9|e4>CnS`5G%37_RakVp;*_ z!}K3!It%7cV`%vV(tnugK9nDB1mYiIdI9Fc)E{L^%K*8zjl+!8By$lSexlS=1hVrF)85j&1Pcxl?^1oU$ zFcfS&!*m787qnquxWada=`NK2bu|M+<;Js2PoaGFH4F^(8_zPmgYx$#Ffg=jJje76 z%0HgKz|gbt9MgX&|JZ8=hRGYxGqGnv!t2s&28OvC&oc=?_zbTPf!uq6Ng2vlFlJzo zVz|f@0Ofz<28HKkrerApYXSqqij7y8ilBU%Js|bhnA#wG=y>oArkP;=5zfr7pz+%q zOiRIhNckYeaD!<#gwG+71`5AhOoyTTV@(kLX$YU;({~1j%^PnqJpl8MF@VZnPUbsI zI$0q99ARvK&A_mG;~l0nFn=1yNl8YALmTfh6+!uX!TkG7ZD9T}h99vE44%vnnT|pE zxlb4vrm{R_x&q-dg7{}PK4Q|%2AO{hbR8B$<;KTMreHo~zM+2OW2R6rALhR&Oo?DV z#D6O`K4B_{@Hv_mfaYJGG1Wu)FE%qUxbi<^YKQQ_{=2;K8PftVALhRoOmDz^nEzfd z`R0J!1M%O3jW3xZp?r}49&CKglnds={P&h=EtC)P&s3JTOnV@Fu>W3de8(gTo!e{t6pMl}W#*a)% zNPLD(UztF=OhM&6NSe>5_>#;#r4aw9tN`()m@T0Em#0B|Y339tzwa{xL-i&Z=1oZa&P}q+dyx3k zH_0)7f%3UNGcYXOB+o2U1~LDVAR~j#21VuuD8JL3fnoh7CFUbgesUNC!@f-_%q-v~ z1JfAVjTsn@Zc=4-f$|sKWMH_sNsT!K!sn2dU}U(vNu4na8Y?#-Iabx{8EISdSfn>Cqxq5K^t3=Arpb(rTu z`6s~g2Fz=q{C=>!G4mcMUvw@=zd7@1DE}*1-irA)l)oKxO37wB=C@FOr3nK=@Mb4w zM(~n|X$^EmIUx)J9%s}?%F@J{gLGtWdikXEfA@K#0m)=s& zYz*ahg7w!h`$G8>O+oq_m@}b#t9c;vTbY}o{ARHEoy_y0{Cu$g`j|IE`MF^KO<_I> zgHw4I^ZQE(-=VVuQsn{j)n5yf!()}xg5%u1lzxr z8MJy6R6c;@*|+Rs-h?DCy=5OW=ng`V{4}us!_04?@{7U#JI>4rUXn76!5!?sGtA0R z{#3B}7ntp#d_S=Nt}+Kh`A%T}-Db{&^6Tb;;_nf21C-xr3W~qy%#fQPrZIrzuWo+J zdxGlVCdc2!IA{!FEU|ZSiH4| zr2@*|G?#(l;MR#ObD;c_rVI?Xw@zm{0OcP7%gs`z z6p;85+cvSRfbzGPGBB8J+r@GQi66P`5KBlCME|W%3=H+#PP6QQ@|RUGFm!J_!@>ey z5;cuspD_c&q;2O|0-$_QdAo4iMV2X0KB&B1vF#Ge4JaQ}-fr1;ndJqP@14rPaA4aN z7J(LseIWk*ZFgBDS|R)e#taOM+n=*IAn`S}e`L7><%84*ZU4gpI;9bm-$3ePxBqA9 zZiDCtl`rgDm|0gr`JnQIeG5D5NhlwbKiRi%v%Y}xLHUt=3qLCdc!}3E2IaX747uBd zSu>z~4pRn(_U)3a51@QQu)G4R19%D8GzMv~yc+8^C?C|mT)ADB6?Ezp$bE);7#KEf zH(*un1iO!;;y44tuIxT82ESCvaSFxL7T?#V>1JT{0@6oi(ZiZ zu>Ob>^wyeVyxei1_9cS%;l>E&8iLMFYE%f_q|z7pnORC+lSQ#%2!MS$@{RnLiwQe0uDQTS$(1WDOn5*ZaaKg z!=QZ7`kZiPKh`)XAGAIvh}n-d9m@Ba46@&!H6O|koeVPHpS1$YHxp-M_$(U0+5qJ{ ziZe3I@C{(?gz%yLi9ptgU_LCo16e`+P|$iWwm+ctYJse~Ao3hSe?aTi0$C4%`O_Fc z>q(Tkf>=*M`HmF~3?TkD2%keOfq{WvEQs|lm_L!jApsPAL9878;P_>T0?P-pwn6!~ z${84ZcLcLe0rO$;5yH9xyaaI~L!A&KL&%O$)|HbW`g4Uq?a?sS6HtDb5F^6{{&3bK z;3bNaIl{Mq?2lk&054IT$e>xlz!1G7g7pKG&kW{Avc8xGGH)7#G}!%7tRJ9!tvd`1 zNjsugIi^G8&&4w^WbBAyRYl_G?}%lMf%3PMGBDKaNMfyk@?XX?Ff{K-W^I@O(a(B^ zfuV0l8mkU?iR3hfi9(DF(L2&vFF^TIri0vK>6j<85j=kC}F)bA7bAuLk5OZJIYvP7C`tPS1>SK-BHP^gT#Nh zql$F~l^GcpwH>|zD&UILX5Ab!ivURKbq7!V)ipXodMSzQ(*{I_K11lB81K4d&) zGHVEU3Fa!HApX1t528PW$r?Un_`7e($FdW=Doizr+ zXAlzwrPmp(SC)g-Gn~r-nKzSF3Vd@aEdR}7RRi-Ox0p2_iOeyOy&~LE`i5TERLG%!k>xigg8;53_F#>joq~E5jProk)DyU29nn zf%((G{TJO`>sU{N`7r$(ST7^-Ss6C4-a+D9?%K%u6wHU{_uRFK^&ONiG=+iT8|N0* zKT!URDWLe+#<~N1cj7dLG%$ZVt2+30#c2#6^;h|Ku!458fYOf=Sbit#af#82OKfHe$> zpSSBEYYvFdIFTW{lYyah*CEy&AU?x1hOlWM_a9;Xfy95$d5qQZ2*f^+ysOFy)(R+J z<1xs-Q>-VBLgX_aF)-BZI?eh6%%99qv4er3dDj`%gkvCiSb99iT8_q_0_IQS0QH-s z#m=#Ah4N=DXJB|He2#SwgwN1!#K16p*E!ZRNc=ptrrF#i}MPZ0w{9@7I> z?=v9tjxnAEr3>MQtdUT@5*H%_ugW9VL@3|!69Ypf*JIX9D8Cxaf5KV__@_cKB5f#<9}Nc_{gUa(Gu@>^~&FkIU8igg>5 zpK=q#f5UnM$~W#|V7R&K9c#^5i2Dz&WMKHa>kI1%C|_+p0|U$MudH{V{L>W-47|I) zv5K67s0WSri0%H)Dg)(%_5-Qx{=w=2<%9B*5XVneZzz9-Fe8KZ?%%9_P(G-AYP90_$Gcb7XW@h^Xl%G<@z!0^Ylg%B<2kmD{+|9-21?BViGcdd{;bsd*;$IWx zVM~MZdG0YVFmds-6+`*Edl(qfcMGspL-|{U85#0+3$o3C^6d*47|M1FvmJr*b@~_> zYIlpUU4!z4!F*A+Cs6*p3kSK+03B)&`bt~?%fh>_E3IF1OvmA z-I8ohP<~w`1H;_iQf#hJz7|+sn#}{s7X!=7uz5rIeqec7Ha{pIG!H&^w;Wp_l>d&6 zkzv_xdA1fPzkMD9!w(*1wjL;-5j1|uqrx@~$_KSKw(eGCn+N5C+8bMUtFbME@?T1V zcH^nDt$^~cL;0(qeAllG410E~v#o{lm3A{Q9Nw+LwgHKMX16BWW+B!B9$eSz{J>0OV_^b#okrZIrZiwC<6*gU}eV+@e=XTa70~xKaqiREd#@| z-4<+L!2D?pqO6Pz%3PLgKfwHB43O}%WV?9gAGUoH{6P=0bQ1H(jiTQ)r?zapD~;qPucHZvqX>mGYHJ1F039Z0oNla z?;b}sKPdm|2N2(hEey){xxm06y2qI<8OlHLj)6gTj|*Eih|f5g;lecr2CY4=Y^6~C z+3O&_8(Tey&oGVQh%h6A@g8@!b`YO&8u;`v>pdQ96QO+2snl9~JlSSL`3{#D7_9er zv2BF%KVAg!z1hw|`Pr`-7+m)Fu-$<2!@+!CwntEYWHIi28Oyl(QH$0Lej%z zFh7Rv1ZYbF<1~g)8wQ59J+W*8w;|?%_`Q4L*&>kmQ}-mYEkNSW-IL7r0?H5A4oWYn zY?k0H4AU6?Mlvug-IK=V1m$a80mXL)n-_@BIE`UHIQ}x(LO^_mX$;+WK z%&=03kzxIwEVc(={xpV|I}8ll_GGh3fVV_I_y_jnvPD4oYIO_@XZGZ??Sb<7?lLf3 z-&4r;0g3-)PZ68KJ&6B7@*nmTv*kef$L=sN{M%E?wi3!`k!ECI+grxA2g(P@3+*ju z`wiuTrDiS|z zZxdTS5cH<%C6 ze`W7Pw#QIDNdL~glh{5(`9_Tl40rcVW>a|x2|p13>E0=9hDiK(d#AG5A@RTOoyO(^ z<(q=bm+5SUQ2t3H(0=C`Y;{mRD1S2So5?m4%5UAmz`(F?4%<2?e|b0q1JAzsY{#K| zdq)Nav3-l!El<>!HJH{G|MO$Wqh zoW{TiE}u5CS%UZs(-=IWK>2ACn-i1|^3T#eTiCpz{7ZQZ47U5Wv4ueS5As3o*})bI zQvx_Yi%4b;!a?ftITo9je8bkR*5PuI_6O?~<0f@hsZ6=ie_7Vew%f5YVpj!w) z{ikm)LHzw}t3mP%(-=%&fy(0pY@4BcmUSTg2ibN*`BvE={vo!*P(IsR5dSdSX%L@r z8pF9X(Ejx!Y)qh=YoUDKeMi|eq5Oqa3=ARrj59pa7T=h zVe`JrY&uB%z5A}PZFmWhZ|nk@e~s-Kl%ECWUuXLP<)_|eU^u_;2AcqQ3)M6R5dZeR z+iWpVzAae(KHCB)|F{?fId*yg;3m=D>1|AcJ|lrQywf#J`-r)&?P{N@J?46OT~ zv&De7WKClTc)-9Qvi~Jp2b6DppMgPX|7$jZw-EDevltj8H@s#01KzSVk>NS$^!@$s z*nHlDzeB{49V?SIc^0p7wjjY01_1B3nk4{Q!#{zL|@7Yqz;`#-WB0rRIZM15mm z_^|df+gB+6Knw#z@cu7sJRc$EG0$RPNZJ35?F5)VjR7QIzW*oN12BIg14zDO|8KS) z@D{OY3?To{-v5tn379{TVaYlMhPC_uv$cE%nKzALr5Gc_*8L3Z3|}Gq_hO6;2lq3w z*FgFAMHv~+?q_E2K;l2z&%(|F-eNY5p&^-p;qQJnb`2yx=K*&16W>AR!P-k)?9$*Z zXb8R;m_Lm}LYR?3{s0%dEtGE{%*dd6fQ#J&%%9Bga}fi>PhD>IFJS&O2FY&>46gD# z>^wg~=1*qW6akXwW0wK*r!lPSXJF7dz|Rgkjo*V|8iN8WsC_5E9u1WT-KNJZA;6vj z=EK}0z+U>W_PhbSY1tGp09NEWgGTLj97?B6y%AO`2VCo?eE9FT)etGs>Fdrdb0p?F*0Nv&obU>bc&R>uVVCt2i=0nt9 zWrpz~?ukC20+m0;2y##I0aZ93wQ>||i5IAF9wfPDv)FMo@HVbOtL_8(CG_DBYXl?OuDJwR8wgWAK93=A6>Bje z@}rVK@?q@Ntc(nx^?(~=7#MaO2xo5x@foHuNboQ++}#__z5D4#ivfno1~7WDuUpk3_;nIO* z_6tzHFt|QXX0PFf$VYx{p=tdFBiZHV2E?pCIvl4wkT6@Imy0>4cX3=D4$_Ol;{@+XQgGH4#0 z%zhP#Z**`f`$Hr?!=dTyZ;<%hhi0++2!hO?$Z(d8k%9ZrJoX!4{xpV((V+3oMeI64 zAo*zwFEbe!#1AcIUku_iPGjIQVPH@^w3K}l65sgH3ie}AKFEEJhgP#+h4Mk_0}icY ze*@w(Ok;?;%fO&`a3i~xFvNVP$qWp!hc>ZWAn`f4HnV#}`CaoF7*Y;xVUL9JLG$rB zhqkh3An}V2ZDW4{MxdeGilm(tqgCLH099{Bws6u^Wg% z)U%i~Fx)+Kgxvv&|K`wf_Q^tOip5ntcV7KY22U|Azeyls^s3 zf6Hzu2hsm;GD!bBb{8n$^f8G4fqe;-&&I>Z@SgJ%`yVJj^)3Sg2iF(&V0noC^1BQS zpZLGBCm`_y4}W9NL*j=Y{?1;5#E(7vgS`idpM3Zy`#C7TZ~@4@zt}%O`IF*7_WfoT zRDjqA;^!Rt!|nj(H^hVN|I5Aw%%8|m40g{y_BUYuG=@4>MuyD8|Jg+pA^Ji5Z=8%A z4p4qKSe}_92Z{fUla*r*lwSpwXXiMA#Q(<0$?*Zo2h~%Vhq*aqlpyAV_}@5rIeege zMNUSB{KNblGm!W(qJkVRp!~aRAbDX96J>~g5I;s#l%oa8HwCXJ7w0$vSiAC~8M0p&m2#K2H?Sb@Vp6=FV!uX8|&BLK>uzX{ZSRpuy!^6ze9U}!n4!cht3 zzg!M7PnDw)%C837ug1}X#4kIn&T$3G&jPzglj9DQzhoK%gR6=b$5SYO=3fwBhvOX* zfBIoPjvq+;H7bT2jA{_~g4AzPG3MY#;_p;3;}C=LZ-8#6VzS~;h4PPr`8FITP(EmW z=qkS*M-G$^njbpKZ_iNz<%8yjj`BNj)Ij;5`JoH^jvTE}{!<-c11N^hAQU!nY|e;63{9M0kp z*MYbPwC?sQe-4Kplnm!v@N~4lWP#IC7!jerp)e{`#Bbu*3FU*%yAlt z|KxBB#~mntIe5Ojje|uG;-1wH85rIjZs!Pw@@=IU8LskoawI_c3&H(^E{;+t|0{Sr zsGFk;$_K4$*V)*^u@B0>o(k$;^m1H)@^}3OxxbI&J(R!YF9URgU1P(DbW@yI-mcToP$nG6h( zstY*&L-|ksg7^zLBn%+#2g$P^S;S!k<=?srN*_x&Y@mEkBM^TX#|bF^>tqmr1&4(Z zME?!YEt!W`aVQu=_~H*i_3;{xBq$#=j?KZfj-v$1{|~P3)^oH#`2t*w41z~CaCn$N z^cOu~V30Yoi9^5?!Uwhgb&hP|P=NB)x)>PDj%?-7gYviE1f{3#96nIK7r4E#gX1EU z|6n$#yx+xf6UqmzZ)!Qbo8t+T|CEQ3!RE*w4r?=zeG?gy+ZY&}kL=?pfbgN`As*l; zF$c*{V~Bpwz~Fi00LK|5e(I4U94ZzNdEYY(45dd-aMU32CmlJ%aS6(g-@w4I?8pU< z`$+sPM=o-_LE_Kbaf!pg5@a5%{dSq76OF$Q%!iCGFfv@`I0oV~PGflbhk@a-+GUP& zP`>m`5dR9tH6;GtBUd?ILHUvI85m92%k zsNLXjf$|MjFfd#?a)YA>iT~!vEsiTtzJ&<`!~Y|9I4Z0``X@5Pt!7}5IC_tR!3M;i z#?ZBcf#HbyV-5}^{z>&G90E{2cNi!>pK^F0^TVHU%z^U%g@WXtbG(7_!!I!~*d2Yr z;b03fAH?@L`jVpn%7=_sz2c|<^I_rnn&YG$Nc}_xNcg2UF7#J#!e&FZ;^I_(H;D~VmyN99V3$(GMIA zU_Qh?Muv|Z9bi6Wzh=wPj~oo3e96Et>*yB_7cl=Aqk$s>LyFW_j%p}>>M;g}MMuAJ zOhDqVI{KYs7nJ|>7z4wGqdzzSgw=poV9b@J^0_8*Ei<$Ebln;q7X3i^MKFod0oE^>}_fG?dH_tI< z&NW~@#C%2u7S1hTJ|upGkFjv-xPa6{;z#-zE2j^H4~-u-&JZvk7C&s9v0#212kR>a zh82SBoT*@b3y1701_q^L?3@K)ej7uo6eGhzK@QFpP(CPrw2pCd?m^^<_U7{^#Iv7jlrf9l-~t8PeJ)nV7?INbtvBr%opbT0p?F+VA##T zkaA3fbG;`>|3rq+6wvx%G0sC!emH1+|Cl)EH7K7KtX`7y4U`{#gMlIIm^7z_7i2sR zw7#wAm@H=;l;17F$iTi%o-+r;XMn_~D1##B9tfXfHhBM}66X;pAGEJlltGE}ER??o zeEy&^=T#{GEcpCEWzKtG{xpV^1q=*L$5c4qK>4#+85x?6sdCzQgZwj%Avz2suf{n6 z$_K4S(hybWRPcew^F}i;OgyH+IRVNC$xlC~!MO*@e|43CK|@rF^9Pg2tmU^C97* z#$dqt55nhA*~Y-I<(MHSn;*zNn0`Y}5ioxmgW)y?hF!-DIeox<$a$!03`U$B{vh>j z41bzH=M5TjdO-Q|l?)7W944G4AU@+X22gwV&@ofa1}MKQnt|caF*D9xP<}F)Z_arZ z%D)xEz;Nc61?K}Oe^WFle62Vw0zmdnV>q*mf#J?EYtDHfKI1foYs*09*>Y|K@j>%< z%NQ8m9JAv*3gRf;T>QMfb6b1&9;~tz=P`+>z1B2ahPflMb->Zp%!Q;3WX9ARe zM4N#j=(sm$F_gbpn}H$bxDRI=l&_$`z>s#_mvbhR|6iVgq2Rb5=Nc$~qb37G)p38$ z{ZRe{O$LUR;{lwPpnQHu28O=lft)Wudg?~#w+d| z3*)Rn;?FuB!MOp-2aQ+UITpqF0Es{AcnqgNFvL92_{5!KahwiF{8`5nI4hw16PXMQ ztBxmenuI{q=dm&}>^+{!c?8M_jb~gtp2?{a3Xuo#-yhHAoB-v6#xJfNFXa4y#D9Oh zlrt&}52`^B8xAepU&ZSU(o<0LZ zlQaf*Rq>4~MBcOZQ5{*k38mT|rY z^I`daIp-fRe;UV(tqcqroXa_RBEj}^Y}(4eu;#>aP7x^o*aXo2j1`=^Q2xCMpz?hM zr#qB?pdTc^k~0CyztInpU&+}9=1=DM0G40HIUmaB2kT$OxdqIh#sOLvvH8Sm&a+_t zM2>$C85nk)Sk3te!e>x;#K5rm#2QYaD3JRmG8jGrt^ZlWDF^0H<7fuEZw;q8ls^k> z{u<6e2%iBmKeLvzAHwHwe*@YtvzBujlpp>Ev|nZ|=R7F?+ja(qeJ9p&E`{>BcQ7!_ z(OSoO0?HS9!@%&1c|B)(G{`;EpyqGjEP?XZ++<)V4Bx=%8v~Iyxdh^G@@>JvGz93VkrO8YX$~>?QNXZU_LB9 zw{y0D`LOw@?VK&~AoC_OsJsEWe>)Q=EMARfb$%f58F?Ffb%Mp57|$Dfb%Yl-@(9e_ryWYCs00XCj-ON69+lp zfcdcb^Fy3-QbG1jW{_XVz%W?2sB>4;|OO0ln?2T9Oc{sYcGU*WgAU@N{Q=B1C{^WTK3|uGAa4tdO3!gm8`3B0b-NV2jbMidr zA1L3bA2i-{fm0&`VjhSe&3uuw2Fi!b_h06m0_C%QV_=A8zRI}*%%98vI)C=V+UuMK znIQcTeofL1&N-Qk42b#vTb$p(^3xciPBAd3p1j5R7m06l@;0YI7DzuV{O@vFfcdcW za+fm>%%8@w=^6vWO5MAhsSrN+HWy}zdz?97{zUM41rWb52V~wvhV9_>3->tdp!|u; zKVLC?B$Z;T2~Km=AOR8&0Ds`rl58_b`^5Ss%^{~tIbpnRKd5dR}*29)0-1Jx7gT&W5rN;FD$_MG!I;GCV+z2s`6SS`Vlm?e55}*B)CYJ^h z-|&81hcpa7nj9_@Mn2VW(`l+@XA@N(P4bQ+8aTQ2wh75Z|6F z1~gX&evsFff#!a^{K# z^CA5wMh0iDWH5gk18Dz%GM6(~0hoUb+@GmF<;*o1%D=pffuZ%33)g-qAJm_jc*>3I zB$N;8ugpK?!F2_RzxtFX*AFNk)Zf{0%9~5P9pwLG450qZkyE~0rcgep|8wq?A6E#J z59;6CIu*cG1m%PJH&0Fla#cb3p#IIfQ$bu!P(G-C^W#)7R~M8I>fbP(4&j;v<%9Y+ z#a5wQv!HxX|Ayyu7}p{szS!w-uI*4hsK29pI+ANYln?6f=$?+^Iu7PfW;nQ!fx-NA zG}k>OzTN2w^s$dIy`fnnO|EUpD$ z{xR@+jAf_uxwatjcbqQb;^+sdKgIys4|nQxDVGb3Z^FQE?Q{j#3^0EpSpNCxYA%rp z5cSoX3=CgR*K=t=`R$qv4F69za3w(bd%_qPIL|b4ZP<{vtBSW!O z3)c)NAJkuvIMd2?2g(Qa7u3(Raj8s%*awndYSqq_1LcF{!>u~GwnF)!`T8%XySYw4 z`JnlHvok$hZ=w8|^BEW%&h&Eqf%5mxV_@(()5oPU31t36hMx`$3?XMGaD_~T@Kc)@ z7?RFR;@SY=L&x{0a6LfdFP{cdKbb-A8w0}^;VE2upnNAVe=3*IbddZs22gr6G@iyK z4dsK3oVt9T}e53_F;R|k|2v2Qll zJurV711LW@8PDN*4&{T=e~R&3t`AT?D808C&*S<7=1*n-rRSB#^SNASgUmn1aT>J0 z%ya>lFPIOhPb_p7a20_0#~48AQIug3m&6>fdNBXI{9>*-Q2wjQp#6hOxDJ5%F!wLv zs+b2-Kbc|nKTv;Y30K>E5Pup+I=H{JgsT_IuLSqUmT*ml@8FuR|<(dQKEAlfk z9MoFMwFJtSHw5*MmT|3y@-+=X{i9`Eo1y&Id?5YHxpqPM-}pfKmvbG0@;7`2>0iNh z63XBA8Ki#&*F`AbbUR3XCD#oo-(fpQekIofDF2lKNPZR9b146d0Z4uo*Lx`cv;#-el^!WDF0|1NPZ0$>jFr4Tx|o%ui@f_@=t-yU&|!|=1=6f0ycjwmkgLc zjpJk#NdG!6Whno46iEL%E^R2ET@WO{p34Zz7Z(J{ujjIY@|AT#@*B7up?p1Eko*QN zPbeR>ZELsAMy>!T|2YFlej`@|l)rZdNdG3TcqsqE43PXLu5>6rvjil+nJW*{rSp?ob3ko*>|Rw&>71xS7?R}Yv!kt6;ENPa8V6fl1p$Iag$`E6XY z!TgCFuYQB%w{a~7^QUoKHUi0S=UN5kPvm%R1d`v*wF%6h#xXYzB)@}eCzQV?4kW*W z>kO1%{0}ro%1C`aMYhF0MyVKGz43{#{(JAbf_PN(Kf)j@?{e zAbgH3Q$XhJ=1N`!iSKh$K<4e{$^r8yG6e4gnYV{)2ZYbD_c(;luo$F%B1hLDC?9l7 zEyF|wHcJMEj5B+B!1XAW_(EdkY65c8&-Im{&h;xkNR(B8zruh1a+B*M693Sdn_L$md=AKYD7Uz7K==$*Squy(&)njA0OcoS zF)*AzbBn8Q3&_4{95X@tr_bEsnhNEw>S18Gf94L?TnHb0{>`&9ceyqo@!y}h$Hlf2 zqCeydDEQjGtDt<) zzOjQ^jNI)|{?06rJQMd)DF1R6C_gZ9Z-Vk&!1e~zq+t0Fa z|Az8G`||dlW#Q)71#$nATOfH>ZZ#;M`8ET?-m|RS#!$ZGRnYhw8+Ra-Z+;atKF7u# z2jwri4{{$ncMX)k`##8h?A)DDz8hGcgL^rY9|M->;NAk|gZ7Q?*5Ty71m$~O1L^1F zz7OSZeF`$4i~BE>fA%Rzo{O7nH^lu$2SD=N+!|26=K+vBH@7L2ud)>+&%+%I2UBfaH0(>!5rFuskn!HU|6h zH_r-kr$PB$`xqD=pB3aThVok$Gcde6E5tn!%AdKIf#LgEA?|rlzS2Pk2F7#3+L6WMB|EC&K*&%AZ=!z>sSu$}O}P;@(B&3=BptvH6hc~h4PR80O^P<}dCUWdB@%I~)U$?I@;K>5wLK>BsL`=R{#w?Oi`+|!|a(<>l(J??o> ze*6`XydL*5DF06m14Gt1eeShTzF;l`L&-UP?yXS%5^($&aPNWg_g@Buw*mJN2p>A1 zV94EY2ozou!TkDjhTQwW{K*V+elRf9pEKgV0_AVa1M!Wyl@5c|L+eiyZVNDfGBkgg zaA$z|(>Ngc*@QbE%7^4<6Yg>-AC#Y4&zW*}K>48j+;`5Ddl!@s%FnIm%(%}$`JnvV zcg~FaAC%wH3QAAr+#*Ln?wQ6hrxoNsb8asvf8AmRhLvU(+<{R3zQqg-o{ARSy-@zo zJdl1%?!{2PU_MB{CHG}0pJ53|-irG@lrOvlWS$lGHz;3i3CKJvZlj|R`xh@^V7M1$ z&20(gZ(qW|Fyovxw;PmixsZXOFvf=47s~fp$iT4VoDFvrlz(n914FQYEq5Z6|6nl# zL#%);cOH}Mt;TQDEizIEgN3Fc4cm>2^p|J}Gn zPJrAujX~}Ygs%(bL)v?8+@?tULucH$i=q7AzZn<~opI-`1M^|y$sXL(zxk&DA zC?C{bdwedEdkT~fYOlRJ7sWjX$_KUAew>TqUJB)d+H1_`qq)~Y`Jnb1&-rNXZBRa_ zy(V@(hI=2B4{EQ;oR8r?4&{T|Ys%+ixz9uSp!S;P`B?57P`=Q51_p!kaoi7}d{Fzz z?0g*eODG>y{x>_ubAN>LLFK>g`FQSMP(G;q*I`KDW<3oFFHrd}z>vT#3FU*ze;tNI zZWSmWRQ?MvByt-=`Jnch4nq>RHIxr(p9wG|al1hIp!SsxLo&Ayln-iO2{0scheG+F z_L&Yt3U@4&4{DzYFr;v&LHVHemkvWJcOH}vYJUkZq;i)-`Jncf4nrDuJ(Le>e+e+8 zad$xZp!SgtLpt{aC?C{55@1N@o(biH+Cw@F8Qcq@d{BExfFXl>6_gKZ4|y_Ya&Ln2 zLG2+{hD`3=P(G-A=5juZ`!JLbYM*(X&*DA<<%8Nwf#HpU2I91`>au_EXLI zJZ=FfAJqQTVaVr}fbv1@PXUH}Zbc{`)c(|ADB#wF@KvDPVpZ zL$N3$L;8jm?h|1CGzQRmH;D@^+!vtyh5U>RN6xo$-vIO57(nioztG101Ilmy&cL8{ zp`Bae63F~E25Vc8dpfvHpnQ!m5WkZ<0L-7pklqZM5AWhW0p?F+c(@xhzuLnccNwA| zw@{P`g{tv9heUrPnp8)3gtt_ zQ>JkHLiu08>pP}$hd}v|^&L~WV<3D6(D+fy;c47GQ2tf${;=uXd!T&Kc#_P?8QdqK ze2{!_;7smEP(Db%`nuWNzo2}OdglvsxjC+a{5K7Hp2B=?hHD7E&xHltF;G5eJnG$v zMcfwGA@U%8@P#GZ9Z)`KeaMd!%eez?K;%LE*b6JUr-1nr8RU*KFr;5t!~F-$pT+=L zKeC=%uZ|XuQtvYPrVA~L*`Sj!TFH+ z)EjU=Y!;zTK$LfLGs~Nj6AUN4>G^W4Ch1UH(B6($owWNoDZ4bWaGI6PJgiV z_#8a9z8~&{@bJij`LOi_JUp6UK5RV!504>~56KU_JXTOXB>nUA_(J)h z^uPL)AWuA$4@vLBJVj7GBz=qWv_knH_47}O^Gt{GA^AaqXC;&mN&k{OyPl_td`IGoomSuxcnAugV+@e= zuf!t-k)MEP?VN>0ga!3zQE@|LQznkoe`NHF-21LF|L1 ze{G%?B!0_jJ)RRt{2iwad1M|#)I-w02~Px!4^IE)JZr#w*m?jf9*rju^^p8v$72ZP zL-KN;+X*DgVMYD8E2k5P(Db0sg(=QD<~f%A8zHw!|)Vh zA0$6`@W?>P0C78z=iJ!(F z%;SN?|9l~gC-XT-e;dc0cF=tUQ9OlEerqa(UkT;^+sDA5!w|*O0_EH9hwyu#{Ll`F z`YBMpS3BrFt045U*Z3fB5@l1g7cWwsB$MMXB@{b8HGUzbG^DKn&9|W+IUW3#(Gw?rQVBou$&U54qg#X(Xv_2w} z=NgoM!wSNG0p(w^gYbVr`AXId3{n>}d3fJK^aq0Fvv}m8{25^LvUm)k{8|T){wyA6 zD1XXSP<&+ZghBc91VHE4X7gk~`TlH-42l=CdFsLZHgNjayqM3^j>Ol$n9nl-iEnYS zfM+HW-~M7D&tfFL=fz^4wMhKHi={j}koYkdD|j9u@iQ*g@O(ky7hbIAad`*wFT_3d z7h8COkofHvTX|BD_>(Sn@*F_oFS^*na|(&S?qV;`9SEP}nk@sv?u-3ABJaWGb36z0 zC-C?{`RlDf@)LPlp!`E%{v@6~P=2KyNPaTU7bt%Mm_LO_=L5t%Eiiv7PYRT81LjZT znFHnLgYBEna|Oz80`q6^@O*^m4+57Jo85j;-oXxWZ%5MPk z=kUCN@>2yE8FpWs%cJrMVqOE7KaVE{%71Icz;N>7e4Z&#KASa&zkufql&{0a$Z+A} zLLQdS5dAh_{vsYrFu$3j$%28wdBb8JcPKxp8+88hVxCYa|I2;`hU*s>^CUz0-=;(4 zv!VRMP<}C(-^g)gI%s}>F;5Mc-v;g<-o3blrx%I;RYl8g+V%sYA7p?pP2Mg~@fojlW^e4DAD@^BZ=QYioEItYIYlz(X* zC_nDv5%>-^pF_wBRDSK|k%sao%z*IKp!_^eQ2Di+M-$3#t%b;&K==$t_k+r>-8_$> z{6qU07|fJ+^KkqCo6qn~fRVvOX%A07ln>hfAgi>8X91Ys#_++CfkEZcejcHp5cME= zy-SCARKR?Qyv3y>JRV>^Wc^n>?=hYUzaZ*C?GGdVlROK4L->&U9#8Se{DJU6_bRPi zdy3~Fl<(LCs-I5td;s&?7;Kvu7+fx$=JELpQU4rVUY+6D0_9Ji!N71&`7BT1KZrc2 zKmUX0JWmRk-v&Mp%*xN4ENWA z;`=hs1du#KBLk}y14Hno%RCVbObiTAe$1uoJT{C>3=E8o41T{D7}77@x}Db?gpY9>mYPbQjKNI?ljg zbnG4qzxvXBI3J{b(a{Ge{EkZx;e3$(4M!iL@TXpS4CgC%GcYW=^aRcaoiD4h`zf6N z?>qxT^nqtQYry`2^&g(|YytCO{(H`I0L+K9|JPr7&T|dShqeEo^V|dTk1;^}|D5Lu zln-*h*0C2n3e2GJI|kmLop%RxvQVx%7v}1k~o=3NZsL&A%NcLS6U2`^UOy48XUUZa)*M}b>58`)R;^o}~<%9HZILgOcAOMnw*e`gQpI2HC#D|540Ivp= z4+#%JUJEE65*|XlB~U&jJcM~Agh2WyGw??-FbG~2;XMrI!@@_Dmq{2TKaIir6axcW zkSMPN5J)r!i<&F)-*}mgD^e z^|;%$QRA?lTRCxG~j(-@lD7#JKctMHxy^CyG(SHo3#86`mFGh{#aObaz$Ehrzf ze|x5dIvX$+wA zM0&&wd3_`y_JPLhW?C5WDoa7a12lfI*ut3C5X5JMtmm)2Y|3j7<%7m6x-Xma`a=1j z@rvn}EqSA%e9(Bs;>*^&8A$x~mu+~XWqaNUP(En)}0lMWi9&1KNLm;j$O+ z0Vp4||N8M|UtR|pNO*$w*MGkp$QuIXgZ9_=hz0X50r43i`|BI*LwK2FA?m~aGcbI= z9L6h(#Am+}!K(n`L-(6E*hljQAn_%x#PT*k`Jnyg4fgT88<6-CR}y(&K>1ayj0_F- z$-EMB5ch-l5?4}rJ)nHhe)9(VblwUizQmPG-VIPbX#cpzm26%Pd5C@x-|Udqi{D};k4uQg_f%ga!Kl@4(Z;28}{X~X0y$lTOS6X?ufcT7%{oLO#ckmto z@uB;>*{^i*N+^TWPh$Y>?@qkj%bNq@gYHx4VqmDfGJ&@SiQjQ$67Mo7AGBY+_R3V= zElB*1E7N)JLHR~o7#OBpnZ^4SiJyCU4)1p;AG9BR%9VM%Y$}lW2JLU3a%BOpC=!4E zl|{TNP(EmX`}`|Qd5w|yQ?9Jwb%OFi=b7bRUd8JJ<%7=0%e}mYHw?-LosXA$c^z*8 zln)v&TYF^#Z$6X{I{)qa<;}beAU?x11`wb9%2wWsAU@+X2GID|{wq6p??d^Z@w#6B zUA%8Ve1>TZpz*A8S9bIMgz`b-S$D7O;bl{Wgm3v>28Le$y}ZIuK4?7a&6Rz;3Lrk? zG={J2j11qd?B{I&@foHufX=t#yn29l3zQE!U$RH+5bqr%zR1qPBjgu=`O_F;V;C6zuRYDX1VTWhDLb@P% zn0e25rNI1Vjy}-&dkoKbm7x5&g`ocSGhQ7iAGF>h^XhZnG6)|WK57ildDnvZ6FH`K zGce4Mf5Ceg%%29{51ym_g7-X>fAAUu!(_)7ymz4d=@%Io5)xkWzJT%#HLp6D4-20+yn0~% zWa#~+Z+LCN{AnD%lNcCEuD;>*gz^(7F)%E4e8U?7=1&CQKR84FE$=#gu>IimlgeCg zdAEW2lNlb@fc*QGcQ2R^v+phM5ilP%fBlyCG?WjSzkbVm8On#uU%%tM1?5BLuix=L zg76tY^PxH$-}8Qe@VEr&nw${0Z01DdbyKKzl_9m)sIkIJ0<#2W(TgVd|9`^=jT z<%84*2Y%&kfbv1=oiBXnodD&p1K$tulh?-(Vm^rPbKw{794H?&zxwXPAKn-vh&+fN zeBmGO5-1-ufBoYGBVU9uL>|PCy}-;j70P$X0_ATuzC}Uh`JD81rmSaRbjpfP`>IHka;3}H=ulw`O~h7@@+GN*vEX8fgy06 z7~cUfex1n+yyqu1fM*fceuH-h$6(mgZBl2FXumkm6uq*l<;b zFA>a#&7aHiWg_w2Ps;HXLHVHg@H?r%R|V$7@~x# zLFw(?31hwuP(CPqF`YE!`vc~~@}D`MiakWV@k9oO{a4NT1RX$pn13wzWWfAs42`Qn z`@Jpro;ZT!r!f?+2JHv80OrH`>kfP!VE#1lc;lU`4t!IP_<@HV_*OvqSN1V51Ri$e3vq>* zx8)ZD!^5jid~2Y5t2qn|udllC`M81PVd3e{7X{|S>~rT!0`n&`>}Lh-*L3Gg0rO$* z^WfV7=EKx`@Erj2A@2Kh)r0R0694;E555ObKFEFFuX^(JxP$DU#sG5P->Y7HPoR8| z``EAf@wIq>q$90KWZTek1t)1_y>9zB6Ec8@N9W;){5K z%xh#Q=V4?3@vFi7HU?08sf#IyZw{E>$dJdw$k4?U%y%EmZ)4c=m4QL>S_t10Fu#$( zsEUEXST~GM$_r#3#63G*!ujkVe2y7k85kTGqWIjveAs&CD833XA97#qFSjVZ8AyCy z_h`NyNPJEA7`_`wd{_5az8^^ZME5v832%`75cBHYAK=~er z85kzIB=UJe`5^gwF3Eg>P(DbW*ENMN3d#q`d%33ZB|-Th`AXMxzHBHTB)`oyldl-c z2gyHm&El(p@yWZyOTd)xDH&9}+*&y^QY|62IQPobLh>U-4Q6pP~;W{C4aF zg;yn?0TTb7OBJ6T65q?Un$HJ`zsxNc<=e-D!oQwx5fcBY zYa`zYBtEZeGv7NTex++GpNKESeIWgzZtZ-gNc=-?oqP#UKIont<7?e~=}`WzKMV{Y zejb$HDay!TcdeVR0?dcyr*6IP4XQd1mr)_(R-pu#|z}OyDd&6)67o|M&irKFXJnQ@@uv-FqBbLN1 zf%17WLF%{hF^53puVjGuJNQJP`~yEh{9SxjQ2qoke-EDrl%KsEB)^X@8p?ME^AGTq zK>3o6Ao)XlbD;d^4j}#!zGG1S#k(N>F}}M{zQ-;Q{{-KAC?7Qc)**k2k1-VDKDj24 z{24xBDF3`Rh<}bx70O=^=3n45hw`-*K=POPJfVDUF#if)G?YI_6C{6)FBi(+1Loi0 ztB3Ms=YZsI@lAp9HNS%RclZ>-AntjP0^;A}+XCgUnF-=Q;QIpQUtR#>KjJe9hp6`# zVPxo#f5O)SKB`d56+5fJ^L{Bzdq4Ie)ezwO!^K5-}? zl%GO8-|{IV@%yg5<mhIS|9zM&kKn^?b-*vXej@} zM3DSPzBnj2RkCM5o}YhU@gp!}$228Q+5zVS^#;%~e5 zgKr*`zit-;!|`js_|_uv&t3b&cLK^k0J?wl+CRPzNc?Tr82DdALc(YEd60f4evT*v z|J*eeejO|8ppMOpYNFEkn2K-x~e8_o%M*PRYd`Nqik->!jJeUs)Zxj9>X#D6@h~V!sh$V_b}%1y9-tTh5hx#W9-ue> z6(}Ea9-t4uKsLzyX$&pk^8kJMy`g-_d4PWWv0y$dKK%JJzO^A^dN^e8_ou2ed=@V{#zwft>Fd#{UJ%hqx!4 zpDh<64>{j6f?op4hn(*j$zKBHgVwK1@rvSa$%CkeobMUUzYffY*&oBd4a}bmZNJ6v zpNH}x?YCI|7f?Q^J~$H?$6uC@T%N@9&&mgx4@;l%{2S2t+rj*443P39p8pAy52}Bp z#p3xT3qbm(F@Vf}CLGUi0Odp4Z}I#tNc=Ct3H&d>{5Fn%%NQ8mUQ6Wv0Oh~t0j)<$ zW%7?VKviVm+ z`H=QnF8?zqAJSgS=l=ucL)v47{2E1I|1v__Z^isJP(Gx6R?0se%7?Vi%K0}y`H=Qm zCI1yDAJRUn=KlcYL)vGx{3^u|^C9iCdj0??AJRT+qf{>4x}qX-?X$`J zv!Q%Qdu%HI4k#beUYpK;70QRS&t~#7ltS!>w9jVqH$eH2_Ssy1mNJMuq2zH4jvCqwy=_SRbdX;40>y|wh(I{vLld|s9H{3pQt zX$+}57#J9@Z{QcH0J&!}14up3^-cWTm7w{@XN-{c*cN^fB>uE(Tlp2Bd`Nq68@~&b z4`~l>=g&dnPrJ5*e!VTU??B?8yLOfT z0+bJFZ(isBfyCc-?I!=^dWiXu_U3K=B}n{p*Y5Ivhw>rq&HMZu4G{Gp{<&)p`Cmc# zp!Vj&YmfN_8X@u^{;g|I`AwjFNPF`+e+&|T+qIYcD$OAEu=4vgeq>4eBb+Q)zRCw3y&XMg#R zfaPKK{pEiG=ELgCzx;2&d{}$=FF#8c$UIp6_Ln~a%7?Va{_>YY`5^aXUH{A90Olji z=jev$hn$D|m)`@*hqRyn^M^zEPZlvSyf9}Jr~>mFIo7{nU?{lGB+vxq?|;LNH zQ=kFNZ{rYs$-t1lflHtR%x~mSe96F2uz^cpBA5?x@4V~W0t=D&ORw_^T!8R7K=&kb zG7AX2gYX&T+ZY(OUKbEx=>z!(vVV5ZbwPm#5I%v&0v{lJ z2CotZhDX77~WhL6^MiKy)zgXTu+G!6hQgw!F+Ln9g{%nCo*__U|{%h zT|$6iGKBy545<8(5{Lowr!kbz0+}Z*Z~%$Vctb{@WEx2QG={1^(0R6U0yClfe_-?F z1y(@$Yko2?yb)CpaF`BJU-FZILEwg>Ko*p*1JL zB7-q#ecCB~ffO)*8bd=R1B1y81A(5o5cLzm=K~uFT!Heh{A6ITyJ0MlF%KgD{wD*2 z#|=|~4PZVjznKXL&4QDb0W&#FKKB)eD=W8x-6U>LHw-Df208yXE&&UvW!$QCT ziNC_nN7#Jqr2om^$#NQDRCeX76WIoKl zQ3ChD{Ap14MhX0Y@xktm7O-3kQa_F1Oe*O7{}=%eBz|yUoPg6hkUY%11OY!VA7);H zKn9EtHZM^ib^}QLGzQ`C3=9$%k_2*~{9oS~7`hK93utUa$UhED5x5HFpA=7Az4w8rP*@CMCE`a$k|JDl_?10Ea;=5kJ2gV2c zw?W_wl&^M*f#KSXMgg0h5cMGb@8DK}lwBY`%>GV+J7E4ahJA$~`@02Hc7x<0e74{T z0(-#xi43QN7#T`JrV8-v0m;MMGff}|%%8@4&**vA`NIe;PwSJ0kC?AqPR|-@>_|W{hQeY0056Pb^1uh*%HUA!%k1+2)ln*nH?FdLcqq5Sft zAp157bVK>~pz>>={6MID;7N%7X3+khn;Qj^p?u333=IA^Hwl!2`H=PzBg1Ba1~4BM zzMBQ~PC@kFVr68w8opV;2Fll6%fN6oe2c&WFdwFWtH25{e=@jyi@Ld0;0TN#$-uBP zdYeGbX^43*3qb3aw+rk!1L5lxf$l@wA#etX|J-Y*z>TvId6^;xhPsGd0tx3J{HJZ8 z^UQV&B%X)xe}VaX1PYM&UxfDx90KzvGl1lCg7yh8T>z^34MR z86ZC6M23bl3=CB_4-1?D@foHufZR9X=23w=Nc@>Mj|;572r>^cKfnCuNr5|H{$z&f zQ49>*Zk`cnxdf7*$gnbsf#J~2a{_snL41h%vo|jYECBN-GGvA`FxP&|4-3z$ z0(ZguX$)o;85o}5yejY%%HO;j6n@tQz98{G-n=1j>l(=X$qaU<85sWDyd@xV9m40_ z$iTpQ>yE$%C_nTa1B1}52Lc>7Ao4ly7#LJ;Jra<-3F5=T=ZSy@m_M1}eE|c5`K>1c zckUs}zYzEU=ELM)2y{F~mVYC#0?dciPj3W{!1& z$+ulY@Imr@*X-cxA>(oOa6V{!jaS71g}?NgBb*NzZ*xN7PrK#}=R?NZT;O~L@O-H& z3V+%)H#i?Me&vqB-*(Lt&WDU&d86>pUGs(WA>&v6DEw{L0^xkf_*F0p|J=1uI3F?| z6^_Dxcr6mnhm21}qwu#~i-q$+<6XzE#iQ`gT}uS>5#>)Zln*I?5^tr#`JnPA=T-)s z4=R7=ug`_@A?4Xs<~%4LqQCZ50h|xg-*>AR&WGr)fbwDbE1`Ud{to$SI3J{c>8)Bg zAELhz%7^K1g7P8yH{WW3^FjIrxe0f$l3Y-tpKY#rUC?BSOCX^4+FUK((&Ijp#aBB{n57OVT zem;~B)4u@9hv=W;w+PM$=?}cM7|w_2Uk2sF^e>0@bLr#!{^<{1skFK_fY-YqdT1yDZQE0Fz@84^!I)N6qFjFTDED?#hGj|MHA>$y${t_JZL zVCTP{5Znpo!`yp9@C_P2;x)+pX$(`07#NgppAeh?<%7nbkMf@sJPGE*?l(Incn8Wq z8v!~$`;4H(8;E|{6ATQRx6caJK=~ODLF*OH3fjDd$gAao)Snl8@(#j(oC8{aaY2yf zJ%|qr-;06`5IzHFJXucuq9Ds>usnEuMuhw&!E;bP=)AxV`AdQi!Td&sr}m)rJXZui zK=~^cF)&2PUlY9Y9isozA_fLI`D=paKOlV2eZn2`*9Ajpkkwu!8t7_i_uBqw(i~`O_HovxEG{Ewl#8U%<}DU>(mZ^cTvn%mbOnFT}$JGH)6~ zOdbP+b-bWZB9vbY)-Nnn0OcpLGcu^hiweDf@;$)%#f5%A`C54l4C?WcLcZ(}^N#R? z?3Wgbhw^*C>ScurkobDB@72N85p{BHH8j9`EPPTd~G2ePKf>k6B!tiZtDu!An|i=8wjm{^4EjqjfHj~@oR3I z2{CX%^n=>lNw+P91fYCb0Y-+T+crWGU_LDT?S=Bd{AnC{wG0f*681tB5I(p(0r7cx zK;}*4u(f7j*sWtPBnRdDK=}p`K6HP)y$}yCNc}Vhqobhsu@@2p^CvPW6@v6T3h6-k zZutxh5{ZsNEl_^;RtAP|@lHZF!F-r|T!bEg`LOjxE;z)L&`HohDaeFFu$4MCLiej^hlu;Fdrr#C6oi^H#1oC zGcYhSMG3Wn`LOtl5t<0*!_>zJ%>?tC8NPBcF!bDx5n2f4%QA!R--#944Cces#|iBL z^P3s6`4|``-;NVXkp{UJBG1YYFH{HSKV-aH0XlCbL8t-B-vvG&Cqd}23`qS$&SpkN zhMBh$gib^FjO9Nd>Mud~oNUaD46Y0bLJuH(#*niN3|UDDLdqbAF+5}xKF`3A%#bLg z4d%oAmn38k=0n`W$dDvt59T*B6tgohEW4c~6bk0UvCG-u-57!3qvxT_iK;hZU@J|QC&k@ps z^2PK({9K_VFdydLJfSIIKID9*wYT$x&Vc!C44?loFzmdYFLWQwhpEpOdJX2o+@CM> z8O(2HDCTBh*nc};h(jJ?Kc@&pe*&0~P@e(jH#5xQV_-OXJ71_1%!kPr2u%U=n;9N+ zGce3wUm$b`%!kPr3Oxbyn;F*gF)##k7YZ>dK;ao!B2)wBKV$@@M@EKHp&CVyc@G&`vOuQ_l?wGh`4IUsp%Y5T@?}CdpnQmY zxsZ%1vV6Ia4wMg(uMjFwN0zS;ssr;O?qg-B6q*6%!}3d&&<7|Vq+f@jN@#-yNPi>4 zWO-2js1iB@<-b>j@Lz)Y4>=i`7#TR3tAsv6_|W`RCG-Qrhvug$AqGv5c@G)=&oMBZ zxm_*f4CO=eQ;m=}m=AMbjZg-d4|89w&;ckP;=Wp;8ZD4{F!$98&4BVD?yD8r3g*My zS1Ys^!iT!APUr}P4|QLi&>09H>b`m*er=HXu>9U2Bmw1v>}OVBFnc3Edui) z`RnTKR-uhxJ|sLD8QO$)g89u1u>zp-rcLN9m=DWu?Ls%fe3<%np@(38GeaLM1A`n# zyU=GaAEv%T=s%bbQ{N%PVFq$fGs9I*28KJgJA~q({IkLg3{P)&3Z+B&(-avPKHTmS zDgg6g=5-6zfcY@)J8^>G`Q2Of?Is)Y{ z7hz-&W#|<;3*m#;J2Eo#30(#AVfOV2NtlD&JDI`w9RtJf+kHX@pnO|!f2~jG1DFq) z&zY;&C&XX@QJ;5=f#JvQexW~5zT1BW28KKRLQR$+d6@hAg}T6en0@_1)4+U${5&wf znE`aHZXQ#=(0(uKq}CI~$M^V=9^STQiL-kB)$8^VYB zce0R-71%utS*@V@c(Ra)HJA^TpDKjf-iPra{guN^)1mT^@oC;WGvRztd%t1*Tp<~- zc`*0R6Vd?lVeXwLWB}$jGk~@cOl6rT>`%!jF8EVLiYhpAsIbR5iYW{?A? zr^Q0|z>%|^ zg*3o?nEGWxCSX3y{AEHmV16?LKPO22G9h;`AEth}P%xMeQ@>m&8q9BIh~omOUoKPx z=EKyl5UK<7Vd_^1wSoD~4Eo$4^(%xXg84A@D~0BQ`7re>g_eT(%?zMxcBite6xsvk z!_==5IsxXx)UOh{0OmI{fVQ1aWmzS38_b8PUoG?;%!jF8E%YADZ)VVE0l8{1XZw`L#kOQ2qin5PzMJH<%AIf4xvRm=805y-+-u-^|bqj<5AX zSy28hA&~wJLZwi?l_H40QK$jR{{l9DlTbI94>NDG&}1;bnc=-C14EMZW}(esK1_a# z&~7llnc)gQ1B1q$EkgIee3<+;p=V%zGs8Qu{5By@JCJ{2@;ihC!Te?h(8=CYS#}87 zg84A{okFf)K1_b6P$8HPliwv&3FgD(cL^;8^I`J4h1P=kF!|j=H^F?E{2rl)V16^h zCmsd{y*qn^euDWh`MpAn_8|8*GaTRt$?p{s0rO$<`-Eh`{APxwVEKJQ_Fz6lo|R$0 zPz;z4tG^EjO@Z=3^_LFA0ig>HAoF4M_W_|-VE#kSBTS(7_W_|#5I(fNJ|OfH!iUz^ z2ZUH0LHZvuou+TpUAL^dNLafdp^$(%$IV>aq;X~bXSSTLKhq&j6P&$|obI(zs7BC;? zo?}9LpnQmXjtSjx0hteT&oQAdU_Q(}$Atbs_)zy86JmA+sfW4em=F(y4|UHmA%7?z z;-2F|;b1<@Jtu@pzMQpg6(f5_Rz1lmt~ zQpg3uhq~{ikT--64X=|z5fDD(lfF=oMsOaJ_R* z$Op`a=|3-&gvQSU^I_(l7b*kun;BklFfh0>oENHv@!3J`tMfvgP<|#Sh<`z7DwMy0 zk%1v`_eG&aP=0_Q1B1_+XX5(e?_2sK0bGU}l6^RCcbFdr5k_k@;$`OOR|BB1cNC$t01N5~%l^P3sA zh=T0DCv*|ahsoa;x(VhtGt2_Z-xqoX=ELM42z>(cn;Ba8LHZvEv3Y^q50if=#0Ta# zGbHdbFuYKFD5MPL!{na`X@mLA406gK|2z?L1M^|={ZuFj%!jFeDij6gH#6*HXJBYG zc`B3u=EM4L&xAaDK=#A>Z_k7xpnOn%VPtqN7Pz9I|>rcHEYJl*e`TMO1sLF66G85q7Yd={Dx z;d45J`=g(Q=0o_5jDHyzO746XS_|cid}d(aX8a)7%J=@uz@WhR zQ|Jzq9|ub%0%U_Puo;1hNS^I`h=g#E$%W`_5y3=CcDe8MqcK1`lpI0ejaX7B=!7x4=p z2J>O^0>Wp&e29FLx`41+JhJ-)g$=;`W(LqrJx%I@!c(DqMG*#uPIV#SMPNS6JYnHA zV16@0JU;_NtA?=fbub?yFU24#{29V$=oVpQ;8hV97EeI7PeND$%x`8$<^hejN(e`S z`4Ih#43ff$V16@0fCxxlQn&=nhlP)na08eRQ!gdl0p>R|q=L#z9Vy`nP`{67ER?xffR7XbI1O@4X!wlGHugb$I|5&i?^L&_r^VV+cEd0pWbP(DOnSNI2%57DnD%#jXJ50TdsmVojh z^7_Ie8OZYb!YWWcMBYG{ClguTKv)XQZ(~TcV_@jNV<;R9<*&76V3={oM7RaY|53rf zu;7lF@KY#%vI7Id>O0oL3RxiY+88zoFfwepV<%h$YKZqGLs=~m)%mA_f>77KlJVbvAln>LN3gtueD_%^8^Fj81 zxRVX%L-ZF4_khC#qJJr8k?1M?yB!iE*XHefzXf2FVsm=AFeGgGB-ESL|IuNF=P^C9w2w5x@i!F-r}t#CJ( z50kGIUJ2&IL%(ne z694qB3BpBCKE(b>!YxRAQHIIF6Os6*cTEwV59Y({pC-H<%!h^7G~vx)K0aWZc=7aKE6+r!yS;9(SK1}~yVJ$GfnE`au!g|5E!VX|QOn#oQ2bkZ? z(8&jyf0-v74dvU4Lil-5{$nKwzXi;P)gSYO6Y@dsfz==LgbToY$b3N%^L*hm5I%zg zKj^-a1;XA1Aoa}*Jii$jSQ!=y$3Xdt;QLS(3I74}VfSe+5z|g9*L3lfu z50l?0ydTVm`Ddf>bub?$ze)H$m=E*MCgD$DKFq$&!vDa0nEK7aY$cHJgZO8&umqS7 zQ@=%61OO@9#itIXS=d`S9C z^xFaFgVHD8-Cb}#D1A1p-zS_4HV>kokzv1Z1(*-nEYYk-(Wt(d^wK8!osDX@PUQL5n*{SAEy3@ zusWCzn=d>fYzgHr_z69l0DuVcD zgr7k9F6touS>bO`{zpv^|D3Qu8OZ<54AR;l{(0eGD1W^Uh<`yi0m{Fn3*uiCu7vWn z^g;Yf!jquitq&}e-}7Dt_m}hL+o2E50bwoYyjn}s)6{|g%hCs z9t{xxhVTR^f2S6Re^Yo3lwS>Y?=9g!P`)$ReYb@rDj?=3>4DVW5%z%c>%s23E1Ux5 zZw0&Wp6~)F|0URc_o3+%5+7HYA3*t#^ehzk2+jwkXT`fu;e1GXekFVdY#uCrUkkqg z^C9LjGQ1Z40OmI{%;EsK@3rt>FdruWMwqn{;{K^TAo(}K@?btp{;jY&nBUAG&I3vh zZ-wo_e3<+@VRtaUnL!7v|DA9sly3;mFYkqu!F-td55n1CeltV463D&}!u?=AO#Y+r zbTGe}A(Rg!|511&m=BZxB)k*Mhq>pI@I^2mCjVLZCYTR%&u8K1U_MO#i|~6eznP(h zhk>Cr@C!6NA@Wz5ze4$t@Shg^9nJ@ZzuDd2a6Tmb8AX_@K;hTOVImJYf1XK%8_Mrh zh46*Je2Dq+!Av49U_R`8U>1=EDE|led|+0Q4lp00o{@o7WCEDq%+L%@FRUV~p!}QQ z{LLnE1k8u2XBRmG<~K8(2FC}x$TKK^5jZ|LL>Q_;?uDu66yX5#Vd2Rsq5$T@` z_JNj&1(bh6gn{90h_*-pm=Cd!kwH(S0?cn_m%!jEr74ZY}Vdk5PB!l@d^UXx^!F-r{Gm&yI zA7;LpNGFsJG2dKdHk9wp2r92EMAm}&F#VPyTfzKhhDqS?w-h-C=ELNzM6QAP%?#_o z@>U}6!F-s!wa9lcznOs<93Ivp0(HpYVIv{~=EKz6h^T=1%?zMzwL2MYMC`$Qh`e@$ ztw@Ng2D2IfQbGcq`dECBPH8H!m!`kh2h zK>6)LAilH6J1`%n-bLgam=DV@E+TyOAos)MT}8yed{};Q6;THBVe)PwI$(Y?gEu&T zx`|YP`7rmni?o3GF!k;tJz#z_!!=e02EV)RB8$L$n7pURDli}B9#4@&U_MOVOXL)o z4|9)~$PX|dW}mkR3uqt`x<8bW!CQm}%x`8`01gjt5jij)W}c6T8ki4jkNJprg849c zUy(pCAC?|{MM}VYn7p4z4Vd4|zzi-Q{6uC#`A5L{(_dr_l)oO_{s|B{0_MZ?2a22l z^P3r@!0n4bkta~T1-N|?BqG{~93R0VvS5BQ!+mi3C|JY-%Kr{-e}sr+g88uU2o)&> z^I`UdiqwMn%?!;Ppz+dBk!~n|f-s05E;19$hpCSgS%}783FbF5+~ozSj}*BC=EKxS zi`)Y9n;AZdfaIe^{)722`B)M5CXj!c8P+R-BqnV}Kf z9*q}qhVpHNK>0ZVTE0TmUu8~&@*(B%-rQt3A5`B2-U7{{Lds`QdCYbYr%Y&e749|Fdx<) z&lWiW=0oJ;gL6dgLHOYN15V`Ti3m1>!VA_u$QN;e@*(Ym0+9(|K14qwLxIQ)Fds61 z(IHR9_127+^zDVQ+nBUAG1)lFO68Q$@Yk|{4i3m#z$o^*VdiS)%G7$?f zAEJL^Lb=ER2%q7Q6eB}vVylRJD@Z-ezIG99Fdw3xk)d707|d^GFyLZfc%0BKVh!fQ z%hw1Bt`U^rcF)Yu6$V1%6 z1Pw>b@Pz1RVhB!#sE7F*;!Z{e{CsAHbGg{`A;guT;RtazGXunZj0~vaj11LVK;|$( z#hIc0Wr3?lm1ku5cpIV~H5?G((pe0V_Xmd?Gg^2d)L{=F^l)Nk5NQFK$H-uo0iv0p z>4_N{KCpO$xgWuYxEsNr4E84@++VQpfYC7XopyulVP;4J)9CSl2w&9r!6lBaADz$4 zu&WYe9}B~3FwMx&^&P}#V%Qf2q8S-3#vs#73@f4G3Q@<%FzGKu9>S+wU(^qfc}xtj ze1OVlhT6{pbtfVFnc(3K@du1QaOPA)^DE3f5I&}RVDk9G7v>*WJi+*c%|kDr8lmNF z%2QDIGcq)qRk z2NVvt^TTNPjD`=WBqg`J98Eu?>1Q~F!wV<7He9x?qgh<_wJu=@?785z*|u=Ln|03!cuCWJ<|A7nm=4>BJz4#>zrsrfK> z2G0Z8$Hc%69)D(LI5mrbK|p|oK`S04&d5M5`S0NI4up9T&~Ybh=7aJnwZviRDUuyD zKEucWqivw!4CBM-d_IUeYSUAAkj-Uc$cTf4FS0$L^cD@BhiJYGkw>Rt@dl$o;RMom z;wUKIm>G5+h3La34vJTp`Pk%P;f`(|HTA`?GBOAVFf%~h%YxxvZ1MsEtPJSx{wN4B zC$t#kZx#lKK31r?Y#8Peqh3IO9m5`WBar#bQ1e-!=Cfj$k58R|02^J*1+~9CH$&Wu zEqrmwqlYg@oix;pi-f=_X8<%^q$)lSCO4r1s1LS-_jQY`Z zgDBUrr3+Yi;!0QO@dQ$bEnOg+gH0ZrIoQ$#vN_n~(ajl6H<0oUy&MC@(_kuZK=A~r z2Pm&!2Aesc`B_lC2`P_Q7$Ef?E3{r>gVsyz@OnuKbmkKS6S(~b(g)Gc!T{0F3f0dB z)z1#q&jHsDYac-LF+=s?w^u-b176QjV!wa@C)^yEJE#>O5dSkn{ZG4g1HJ4aC4NBV z9wqSt(hrLdQtTZ~7m)f9R6dQS3s8FyQclq-U4VK(5DW=-2pdE~_@H=z^(WB#S1^9& zPLO&ghAeRZn3-Wx8i>!ra4QGoenhzo$p`EVVqqY04rn>b2`@)s`3+(oGt@j5uz8?% z2E;r>ISet6gCQynWF9BfJTAC-5OYx71?rzc%)xXQ#2i$22?%h(%U5c;Pe6bhZZ0-= zg31p@a6cT={jm4|l`o)n1v%|VkonZozX7~{i_Lc6FNK&h zaSn)Pf~J3FhFNbwd`1SCc~0QTp5 z4Iz9+1_;f>U=3cci{R%&#|6)T$9I?*)=vYKgUk%A;Pq9obcmoK>q8l#>j#;@4=E|w!Rz|Z>TgAg9voJIb{7M$Zim3WB~PR zLGj-=8Ny!z9?wUFABYdiFR=LzP`QW9k1mJkgVB${?FZPpO~iZ@%ssI33r54j2}Xm= z2f0TPTrMy&uzv-a&%^*5R|lyBwQKw~gTxsb(D|Tp9wdMBJ0w5Va)QRwSQui#G%Lft ze;{!-hIi0>3aO_V8F10C_3DuHfJi5N;CN(YNJ6PsFzW-DzhU(Tv3y84GBMmshxilb z4oE&{WH@mTA`YRM80PVU@)e>S1+6y}5MX4;gqAxK!Is}FU*J71EWFZFvwgO4KrU3ye^xO0Y*dA zGr|22QwO8b;|V?7aD@ZRzc6!PG%UVgd_pwLoq|wz6H*V8-v~|bFd8OK9?is%0?mgI z{Rlp6T{A=+kq%()hS4zh!)R%!e_(V5v|NMH5c6Q|FIapb_z-gte26&+K14r6A1K}A zfy-Hh`;g^9=>)=OVtD-yl8#{eFVOinq3IbS58I~!qnQ}KL(4_t!?GB97og)Fb#1f1vvlArDKxuy}!l8zTcGJR#u)3J;h(vU#9zg!vCy9Hbt`hq#ZC z0pf00xFFmEvmc@!mX4UA`&D4-AmX6$H&{CblFpdG`z%1>$4UUO5&OensO#2U_O ziQk6>*{{WfVK2lSSokwB#6tJ;p^78qU%vo_FM=PijubvZ--T>cedzq#HzD$0!STt2 zR(`_FAw)AV?1tKt0j8N4PNJEsU;wg*nIQ*EGcv&JLl=jY)39)Xv^NRakB}!-J=+aP z{)X9yPJ_x}P<}wCVfEY=@c1MXgE?Be5z-!HWax$VPa!lD!-@`2IKaf27|!oU@ImDW zY#a_*J*b{S7YFIX6i1j#TYH!oCZqWa!e_?tA50wNUQjr~{DmwI8b3w%pSl$yTtMY5 zx_$_snE|^xW`=rjzk>xXzY-cxOTgjH%n*$x59*hI+z0EoJi80A9}nS08ba`|>LOslU2u-Xw zB%ZPP0~UV}_prdnonhvK^m$7r`#h!eFTZG7q6|<}_4(E0m8OUZC+Qkh@_t%zU>SsQMx0C^G|0 z+#Wm*&&2QqJkH9@!1@KE9wyFo5X5JO%Co@bzs?4U!`z9WuRzDkVCk1Unh9Fo!`h)R zJ~M+q)c+83i5G{p1JuCn6()uvFwMvSsVA5iVBrce7hx~#+zV83MutXcIRYye(B&a~ zCI;9#dJ;wkT;j0!y9RB?qw<**!>V94&fu(U$AgPr(x<)X~a1psNyj9pv$B4Vd`Ks_2gmk5rdLG znHXSvNPa@_*Ox=vkv%mtTgj0~z^ zb&L!fq2te};SCFSMuzTBAoCD3B)uTc$AFEeEd`&i!_4p%OtUZucSH0+`mu<71LMQY zfzhyh3hQs+;={xt_QKA2!A(QP6`2@N-N(oPa|bN{!uT-vz-X9#uznFPKExix_#HZ* zBN`GO=(Hqsze?gPRC!+T_%Rc_JVfUwf$J|O2AFxUaST{G0Ob=YUxCC)<%9AWNFOcefo_L_!V?r8koi4W{}GnoA@wj512e-^ zXg>tfE@EUrb~i{~kCTxBG~W1<4b)$uy*wm7AnrrN3obsaABAYIKslz1>lP8{L zVh{qi17YP5f{uc&Ok(mrXQC$q`YHh*m@EY&M zen$8@Fv$2RY<(Y$W@31;3gQlkJUSny4ncnck9#8O0g!#5^pFT`XB&dYznB>6q2pa3 zd1QA|n-2>=$oMrQ12c3StHA=|FKXLIZ}Wn{>%f>8)GZH}HdWVq# zLSxoH!O(MJ(bvOGfzDH)i^KZ!xb#8NGa^63+6$=RhiHdbf!D<{GJt4MIoJwauLM&M z5ocuZ5Cg5ZV`7lK4;trSW_X(gqFES@-UiXE3`$^{jo}Jdo}HlxOmi^gT?5H;GCX|> zqPZA+wt{GG1`#mL!{Bif#OG!B3!X>hV{keM;`1|X2h#!!4(maDK?boaAX}e1! z%y8iXh!$Zu_XR|YGR!^#qQw|y?gP={3<(E7v;@Pdl^|M@A=m;$OEIW}X=#SrKR|pL z2BCNmEz5BCB8Zk__yJzmCeQFo9OPdGhR~}ZaYY6OX!{TrE~7LgU!aEr>^xs|aTwna zy#4`^K4IeI(pRA7LFUb2?N;iUPsm-c_7$w13mM;LWY`X_XPBVl-H`kRDvv?=37IBj z{-`|mbOs9-Sa^cg5rNtzkaggU49I*?I{`MYfGiG*2XsDczUt(AkiCfY*UHdyhRc_M z#2FbNd`9TGBQP4#?tz&DqhaHKFdF7g7!6BDFn@v0p8>fKR-VJmfu$>mdc=4&x;V@n zTr{j+fS8YPH$*+6o`R@D@FDWB{Dm%#s8=BBVDij3`@QJuAngi-`8`WO;f>G_lZUw* z7at}LTmKDH597mVbn&(dkbSUngoy#hht%J=>v4!VFn2RDK*9~dhxrp0Z!q&BL* zZhE!fLHh$i_My^D4As_<^apbfh(=Ej=zK!)kEtF#U6RYk-H!yh8{|K98ehDF)FaE2 z65k+uu&F0D9qfaS1L5lT4OBV-`3n>-u>DT3^a-Ic_lNv$2c;h-h8?LOnwg;mx?T>u zI1588cs&>C@h=IrXCiby4#G#616wx$S!c$?08=Le9uGqBg`nft5dSbT>;4 zj#sck$151&>k?t+K-8g+Yry;ib3Zd&A4EOOpGn8!q)MM9Q-==s@FFd=exbA%`RAoH|&zLulAIBVzv*c5xPl z`_Oq%h&(L*nb5>B&4Y~pAo2~&9GJU6jihaTbPmDDGo| z^C9LlGR%SQ|Ads6xaXT;^UuW2ljEAlg_(nkrnUKm?41H0pJQTx+|Pqp2LL)J0Tdq| z&~Z{+?!@J9*uETG_QS++nG4g8E{|>>OdZVq=rlWc|1%TAVeoo7Mkvh$-KT=dhtz+J z48+o~^b6}3!}zE)tp0+fe|&qm#-$&1 zyahJygc!$x*#l9BkcWvwXmoLEk7vQsEy7)}_8i1ti1|I3I4oXZ`wd|CDa^C?UWCD8TQkn>v*=3?g~%!P#udU(Oy1Mw#!-XP(J2v=_Cx(L|%fd19U?G1!K zAo~fJ;QI&A^9d`oUk#&S?d~<;^Bb5MbfNpB_JR4Z{s1GxHSqmpj0`Y+FdC-c5L~|? z^gDz32>oRepoJ5R3=o=$Aq{#z8N{Ek{Tqx7j^OjW5bHc)@}=N;Z6<~d;CV-8h9K}h z1V#pkIJqUAF@9KVd#(-T~$=Cg^!Wh;z|l z=cDg{?qdMuM^JkRlD-)kjKTZ+5a*u5#6jvn^&f=K%wPuHHv-`!(l?9`$w!EM4CBM( zQE5azMHh$FbEx8s;CWh5I}&CtjE1O3)W7uNYe3ii!0dyq?}70-pz#Rf!`3&!`0dbj zMY#Ab(DlbKd31gew0wrid!wnZLzAyX4WhhG@^cm@nQ8cq@F?4w=i*tIS6q`I}Ely99I4?LHF-5GGJe)3R8zj zj}ZG|;)wEu(E3rBzaj2Lm`5rfWzZLSOdLkT?197=EL;&ZOdgd+AIBLj_Xk_KuZ~uZqt^pNvD^o(SA*<7 zgY{c5(;;d)#ccmT)>R<%5zCL+1?e}y)I<2p49?*5Tv(vzw!zMmfYD4)c^Dr?ql?4% z%nT5785w?p*LT9)KYZ#fNczK8SVi!DQN+1Juya|^)uZ!+!RG=pG3)`a_hn>2xuAADOkFqh z{52R2lZVl;{xyt->4VYf(0!sXJ~|CEXFl{iM;Hwghs6Vo52In?uy#9)hQ%k0hJ+Ur zLmS$DAs8Q~4n{-NW2PsVI7}UkhKMsU%z~a%L>ZqMV_y@*T-@T2_67@1edzKqcf;t7 z&~ZYDyBQhK`7m`b8m5jonhAa$8ALrMA9AiKGs7bAdOH>d*TsfhfADP^AYObBty~#E_yR`eF}_z1??xH(-8L|%*D=UV)z8D_q)O8 zQ!+vKdowd=LdP>v#TgmGpzDBP_M!7(>oy_oV`hNO|H8y!e26>~hCD=^nE^H*4B<1u z`PaecConPeK*IsmUrY=o(0lzL>6wWE=1#~uRVIcHeW37VW-tcNE3hzRLdP3n>LKoA zWPsTV<3r40f{HUUxIy!AEjZj5q4waGhnSD(cfj~v&~>v5Fn`0$fzhz~ z0wzx{KBePOuzD5dUUWWs{{x*r(Bn|(<4(h&KLTnW!O{_a8qwZ`s2e_f^!y1+pBdo! zL}rE=;Pu>y@fK8Z+~-c>G8b|VKc=~;;-s4ki5G-BA$(@&xtJ^%=ToA)57#-C=;|Ql z5EJzLe^_}3;}dTmES#~AUlDK4Dd>1EgvMQ-qWc39KCtqbczrqFK=lhF1B51CAH<)C z`3O`#@&1L(lQKc;H)d#k&caXy?%%M&&($GL9UC-#uw$f;FVOSTVBrKwAF%L3N@vjh z-;i{H5Z?oh7nnFY4U2!6`RII@dR*c#eGqksaa0JOk--JJUl?-E3SwUqx#^%c0ut{q z8r>Y2J0a)UGBd1&wjY9^{Q&&(tk8I1!-xmadB>oBEo`3}syT@8CS)&U{tnY!kbV{H zyaK{B%>Ey1AmIVyL&`;jdm!Z*@q9}4=cCOVDG5U6onh_+-ERV_?@;;744c98l`IUM zS5WFlo|IPNu=zK1^U=c-Qr^Jg14bj}wdaD*UxJnA z2zgjOgZYyXA5!k1>qnf|4Qr>v_Q65UQ9^_lx_%fRwqIMD9}=%N;B)zz7&5>#BLhqv zM!(mG#OIqD5RHyu>X{fUpyeD)AB>KIo=YtPonIuCwt$|)1{(+b1MP>w>_ewv@*>dv z%(!S={=qH|^EV>{F7wdEVfQP+!U0wfK*F1mfe*Uw8b-s^!TbYDAFy&5CJr+Pa&8zC zLn8D%RY?3I%5U^?6($c`H-yT^U2nqNg^RX;p6`Q8o?hZGcc89=z}%lnu6wYj3q}TN ziBAHbW5Wc`f3Wz5xfjNV(J*mRY1sW4H=ySs!T4d&aRPL4T;{{lPd9kn8gWk!Oh2qV zLC+V2`1r#Umj4j>(H(jY25jFTjNS%b-^Il65nOIDL(f@eVStQ_FhcnVnvi;QcSF`| z!_J?=oep5}MJ^2se_Z-4!Rz^9_cJjuoP_Rgft*AF&tb^v-_2+VvK4XYm@ z``HoU43j5BL-HRZ!zJi>Rj_mos|V2aqlYW8d~NW4FvR{T*ghdtaYhDIJ~IOsw4LG! zo>yaKI1CF1H1i?sA0Pa^yS+aIR~ zt|yonR)A^PJ}DNcKQQlKfb=gg?@>Un4`Aj)XyW@{u>E=vns|ML_V?kJ$K9^)0>=kz z-xI7o!pHzgZ;0{~!iR~&XeNeRO`tSRIzIt?PZ%QuuJc&PJ;#OG=Aq{|bUvOwjmZWPr7A&}m3{gos~sc^Dt&PFQ;p-93j2$=_D!8s3zDv!JTu>;p5ObpYZ^$4tgi0(dId`P-Nj0e%n-MHKX3vYCJ zT<#)nz7Kc2!|Z{C1FRp(OmsfO)4DdWB8^c!ceW~mWufhEx4hE)1 zQ2T(Bfg3yy$;Ds`9*5*+fSfDD!|)WmAB2}-A$a_RkAZt3NIfG%HFzA234Fd9XuJ&M zUlE3r3^EKk46+P43~~%P4Dt*)3IXLVG9ET(^iHohJ6et8ICcWVZOw0 zhFO%6i$RoeCxa*>8-pn0Q3g@QlMJei8yVFYH!`X-Ze-M8+{mcOsKlVjxRXJXQI0{A z@hF2P<4FcBMkNL<#+?jWjB*TGj7J%?7*8^2Gj3$mVcf{5%eawIk8vZTKI2BlFh(ne zFvgt>VT@)BVT?x^!Wd67gfm((gfs4B2xl~72xmOX5YBj#A%fA0A%bxyLjbd zh6u)!43UgZ43UgG86p|&7$O;uGDI?-WJqP)$e6~skujZdBVz{RM#fCWjf`208yT}1 zl^C)acQRx%$}wa!9%aa8Jjsy5=*E!4=*5u3c#tWF(T^dAaW7L2<3`3@#*K`5j2jsX z8I>3c8Fw-iGRiR&G9G0pWIV~x%(#)Ug>fTeE8|ASHpY#N?Ti~4I~X@Ib~0{coXyC> zG>4IeX%XW_MoxzF=Rt8L2&P#XB*8QzgCdybVlV{L0t}X5T9m;NN_#@-Kqwsvr4yla zCX_CO(v?uU5ll-lbb@I{hJ|2Sfng<>W@N}@1i43zVIm_}CCFW!jJr4)8FUzU7*v@V z85|fo85jM4h=cg93?d9h=NT9x844LebTY$Auzp4cP9~5!j0~L2AX<$fkr`wTBSRuH zOBMq|BZCdpJQt{bMHY}cMg~tPy%J1|f>I{f-V&&~8mPV&C|{Blq)&~Zhr#hI1H(gx zDGb%-3=Cfxra;xrVW|Ggz`)8lhoSE?0|PhX9EL6S3=Beym8>9f1;$ENhdnbbVj0_9GG%LeK2IEdpxOlQd)CEH6NHERF zkO`$B{z_q-2o3LzQ2Gs=PC3TFFoE$PgFz|-!z{*|?ABEb42u}wFx=#0VA#p{g+XQk z1H)OyKTw(l8s037H_tFI{A6TdwB~1EU}oZBgsA(%aAhaRT|A5s`VW*Z0_Q&!Vq{QY z`oa(?1&Ze{3~{Xt48}}6j1WE#BZR+@HC~F5!Ixt0Dlh5)9G48cVV44F(H8Cvpukl~~xBSQ(345Lpn149?nK?ab%5++7QkoZofhwLEn z!%QlS|CTW@Tx2@P;B}dS;XjilqeL1511B>h{D*--gn1{+ znnIBHK?a6}Ao~`w+Dv6&@MK=dTK$TF!I$|b`}Tg2enoJ&1TiZzzIn{R5YD`j0U|EQ zBwxwE5Y5cV;he+3ki>kD;q3bx9!S1bQt^|i4Gm{|4pQ8*63zKe~2(L z@UR?Yh!6yY^Fao)Y>@jy!1AmNj^J>yX7L2mt}LF6FN#6_bYz^F4WeV9_DgbXjA3BN zW{CmoD`bg*+N;PRp2)yZ$Fh+j_Xz{TRF)L5{8eTV#vUsMhLtP_8Qy@ybs?+B7Y2qM zEID9#Mg~j9@O+T@o{U0PAot`z>eztp)Kt8P%c~816&Oeaqs>2#QCL`yNMv#2pzO zXMxl?GG?`c(w!zFTLLKjEg4I|?k<7aQv)s^A{km3LFI-6LkZ&yD^R*9Vf-e*$e_+D z$TZ_V1A{edB4c7J1A{Z`L58}oAag^Y{tkh<>mY;7I*@xI;o!k~km1>F28ICENN~7? zvL0l(08W>QjG%BTWK9IStBUm?gLE{=ydK8jXABGqOa~bPazW-y0lSZtVG1Kh0RzKS z)<&?qROop!^sp ze+|^1a~PR~K;`Bf#$!zk47b>Hpy99uD!&9OzXU3OkbyOdf#D6?K?a%kAom`G=Cdyh zpmK$gfd_04Bf}pk-vr8sqz6U@5h$OLabXn$!#B1)Q2rih_#FZBuQH#3(tE(}NnpPM zc26n$9jH5wfb&5YyCFw;J_Ex<_A_Aq4E8I~`rrvz{}J{#Q2Gm${sRubE~Y<>knsD% z2nxTq?1_w^^5ZMJBL~PIq6`ng<}ot71nU!J&}6(B4N5m38LwnAFtBoHGFok9VBq0c z$m$Wzz#zoo$#nZa1A_#IC(~I=kUCE$)ddU;avYu<+jcN8=yFIhsqio|7;9JhEF!L&XPBZDtTBFBnJ3=F;;fgJ2x7#M;% zI62~)7#JcrPO^jaCvu#GmM0MX8BqNh94Fa9>hm}_Ic{k)FcfnXg6*r}C`7TZ8LGaS zqY!Li2VSa)>K1FdX4%1gk&G(TJk{3RL|Sjz+NhTO6Dm$2A!k?sG7L)xY3iL{a}9 zs{TC(BUt@c4o;30nhXrTI6A@VnK?UA)N^q{!k3G)6RcisuF`R)+-rE@%k~ssJPOW8N$lwfQid+Ms>qQvB{68xo{E44H zG{hYlPMvoDg%qaV})tdkADM4-=%^f~Y^j-pC}O&%p49vyo}>Jq89QE>4cSy$lQ-Tq0m| zx|l@3<}xyT1m`ahy(bKmuRbz@Xc?}B98xnF7?imne044vrkp_ECx_!!v zJA`RH9|J=$cM4eiDsv7~{xk-LBJL0-KT(i)2-6oO5FGMiKu?mnqB~W`x zpz<|LwymJ@yoRay4+Db(Lk$zCJ^<06^015PClhxZ1H&V3M&`^428JKpFTwnO+>Fdi zJ~1%x@jPTIoyWi+!qdV8Y7eUOv@k7aWn?hqX@Q#G!vtziIWX*mmahxJ?n&WU$aL&A z149naNe)oDlVZ3CmM`L2$dtj%$WX>^{gC7LItGSxUP)$9_~h}< zWCn$AC+|#VNchfV2Bnj!ygNC#IT;yN@ES79SurrI;}ztDv{QF-n1IEPFhSbMXCUFj zev)JAeFlbKyjP&&cc9`c!SP|jw~!T-PptS9!S0e`ILN`ihJnF}j}golWjM%TeVBp4 zlkXr$_&)}Q0KO+o%~l|Hzk!&;bdbZ1m64&3?+X*8U2h51_XV2&b-?l8#pDPUU&MEi z<9GrC!zR9i95cQ%Fzn>>1dEF@{DG=xVTPnn7G_AgWC4d;7t=uwK^q2!D|`nzSbG^5 z?(qde_3?ni3sla4`hB1HM3_PO+JQj?+|Sct*vawlI|IWC-Zx-(TxGTdn28LXINV(j=pUD|*#lWzDKa*3njDcYpeCW+pQ*T;)FqP7iPRIXTYsGBAANU&zU$ z!@%%^e?WY&Ajz_3YRBe)+b%5W0wo+|<; zndNdA814$3WQL@}lgxVH_WMb2{BbgGWS;Vgf#I>hM&?WZA@m&s2>k*|ABWQSp!7p1 zT?M8OGTXmpV0bTJ!we}`E`t53Ea<`vitk7UA834kWQ6p;o zPoV9=Cybo!pmz5YXnP;heq?0mfy#$K{TspzI`z(%=^(>3DMp5cf(IFXTxVcdAsE6O zE5N|8UhpHhAGl3$CpaBSF&t!xKFq*yO7I|y(R&7l%Yp}4VhkA=?hBsee7%x^;f>%y zmYKB-44(uKvc%73VE8R~lJmhH1_o}Si=0~Gj0}Q83t3YZfa=$Utb2YlFc=8Mfc=-i zo&xq?DSHkx6S)1J0}j_)Y$?$6{gb^cnt`D~Xdx@dKZyRI5(b7|p%QR-b+IpG-Fh4( z9s=!8hd|rwJ}5LR1BCyC6GHD3g3yI55c(99e@_UapOpbZKjDPX`=H{5ED-)FDF2>N z4AdS7&B_3wkFcje#UV5+1B5=p{*e*Ve}=TTe+eyQodvo*O<0f<(r+|mew_~T&qCJd zFa`!5VMsl!B3uKFw;FJ`ed22YhnoXK4Kt+uU&GA(g@J*Up$1xBv_QiT($29I?tzBa z6lTzFm3-kT%R(x;3;dPbyBm2bf3=AhkKC*-Qzpq6Wvf2tVGW-|$0uIMW zhCk47{K`0V7SSY`VUkO@vuPZ3mz6oeWA#B>=FY*spw564^Bn~R)&jAHcrqu?Jc5=Z) z28L^*2N|@W;~=2=x01_}3)Ek@Cu+&X{)>U(jp#&{gbW6T&!Q&K`cRUo_bUSfibH2_PL>BVLG64U7NJT825B)J z7D&2u#kt=EnxV~Yi6lP@57YpR7*~-9RD#pm^GX)fnhTw4* zTd_#4uFDJz?qZ2td$%z#1d2i27cOSPvWXd#PfS=q`6N%wgk=viD4*D{t85o!)4l>++$H1T@0V#JiB@Qz9USeP{ zmN>{z^O}LdSpt&&d?hxrD2FpJgiH9ah_Es+q)PaJ?ah_&VUc46jX#C3IIw}lL%`y7 z5+N*JY#{L%mi6o)@ffgpzeEhnDRz)}3d;iyka!AMe1Sv?3qL1FJclKO3nZQc7T+k5 z!xF~@5-(v<&x|GEQNEwBP2iOj84?n*&y-COL;?ff`8N9F~0w5b+ZV5dH%}2>+EJgs;j1 z;p?-2_)}Ow>GUk)5|&qB^Ok_kGnZV#@&#<(5*7nRkoqMoR*E3?OIR)lLHM_XApA;j z_$^^+28Wv^wGBkt7O}0SYzXvM51#15umWv4t3`f}4K;_p! z#gBm1U1i?G;x?OsVYTEQa60H>`pEt%kAY#EBdUxAj6wb1_nQ=jVz$?sR$@PMd~2K zg*=eI4>C*#k4HkrgA1h&GBB(Iwf_$?FueuQ5PcO;{moJz*_VRHh3`Q9caT9Xn}K1g z)E%(>g)DcV{(Zs%X}7##fwWV+ z&cF}_6;GChw4d^2KQiZ~GBDK19%Rw_$G|X8_8?0aFC)WJ*%+uj6SZ?vNG^vJ;@=WhP`$Wc?jg%-@c8UQaJaiNSc1oG&&f@J zhC3wQ7#UQ+<}flq{KLr50_FEW=@zIvrhvo60V-d}(gO8&59_7~1_n9#IjoR!Z3*j% zg$xWf@=I7D?TjU?9-@p4uJUVG^J+om-Wt|-6B!s><$G9vE@EJakl(`kjSZxJ3pn2E z<+rfvvNJGr$iHL(^;<+4_OL##VPKdczlL?zbq0oc@<+h#y2^Zp)wqX&VHZ^0dHE|) z@jI-Larh%(_r8$70~TjwILPogmVx1u{1d2uo`A&*S)M@s@dhgX1+1@&{S8$94OIRQ ztJN|FhW!c$8J?svFq~9y0r!tU?P^f}h>?K>+`j_R+nd1c1h(}}pz#M6M(#ug1|~%o zHc0%qK-=X!VD(p-McDQ&W?=ACl!5Y9pnM%D-vr9Hf%09Td><%31j>(r@>8Jv95A1e zA%_h#n|?4Osjta|@K732i??!h?|k;%`OaLIMyB07o99CM%#V*Roa9imlld3rb!waRE90$c28NMoQ zWr(}h zDW7BljlcikSp)Uo8mRx)K>c?R>c1^)npL25agu5J3-6$DhpW|zA`Ylsw@QiFIZ(E>r)X%hDeo#%-_B+ zFl4Df#&KgfA>)+=DhpWy!Q-P4T19vv>qCfoa6f}V_y`-Q9PMI)n7asS{u(H~2}4WH^vR+Y)1@yr@#h`%BJlvj-ekDIBh zGJc zyP1c5*B=IkOKKwE@p4865q5~U2ssp>ZD4(Ayda@B3v zL95-%)NR=3axpSgs@t$%=4N1MQnz7O6k%ZKRCfXEzsl^x4hqjAZWb2EcytJOK70nd zAhTK)1H(S`ldPcecn!5o&aNE{3`f)<^hxy?uzp4cNWYtvAqC85WypcjB~ZEsN<;E3 zD+6R6mX)CgTtBcfv_Rz{^#v<~3_GMBxddFEq$~HZZxdu>(9)O!RoBD*n1hkQOk)n1 z&&bfj?gZ*LYb=5Cm$09RVPMG7SOev+Vc*lmz)-8PhCQC2fuU7n3p=EpvxObf?%4yS z9l`UxI~n(Y^%b)0fvW?R*H1Vh;*1PO!15p(WY2qzGf;JBpyphG(;$6?ELY(2ApR51 zD^UFx!TE@h;UX)j99zY95!_#%%F+m)*L7yq0mnlZbe@utK?S-FVhOlkAEK$km>$Ex z5C^3*HSa*py~7ULEisk#4tp{WX#ImBBWQiZD$RwgpmDD^Tu-3xdjeKp$npg0J_w(Y z;U+7nAI-`91}x9W@CGXX2CB~oI*z0Q9dDb-0V-FOwPtdF=9iqIbePsm4p4atqe0@J z@ytA}nH->b7!aNNgn=PXYY7u%-NhI7-+>GaomyYmLAO8mX#HVVdBeakM~j66LVsZo zf5X6VQ0osnXx)!87Y_%xJZ5L%cofLM@JWk>10v4Cap^S!1HZNicwC>6frUf)9Rq{1 zwhWm6gp-BCeFp=BwYCbF50dYF%fJwztpnzRumSt`iM9y`q&?2U0cvl&)@I=_=3!*`sqF%G zKO=(++?`uQ85x3fd^n=n85nYPd^kYmPmPWbM=Co5L#s{*Sp8LI7Y@j}5g!g)VFreI zIzAlk!VC<{bz-3M5ceHn|HAJ6hJj(Xjt@tKA_K#I9UqP)MNs|4163yiU8f+z0V!8i zpnMf5KLzUV9I!te7*fFc3RzO1;a9@p_YKtUg|uspbzg$>hlTD-7Ra~;r2S!`Tf(vN zD+5Eg?nibFPDTb1<`ND_ySj!0)E@5At>N(CVPu%0TLU$(h9jN_)V^+khEoeve+x$- z47Wr*OD- zgWNrZWBVcohM&4qIHH$<+Urv|3UVOg`;Rd&u~IJY@|y{_OSEa42wr##5$ntXv2ZpTYs^CooG) z;gDYl8rNCFn)jB0!9#Bi$4_Afh7i3i;Bdamya!z0hwDz^5L(Ee2k#B*@Yc6D9SgHq!j~_foI3VfZ4Ak5!Q2Gv3{0Wr*2Fm{ePREf9 zf1v4j4Krx{%5?oT%;)YgFf7!E%p)^0uyBIPM@9x7PEfj!WDwzmqu>uwe+?U66EZ!zswdz|d@H!zsBne*E;AkYt1XsSs$@D0UfuRh_ zPchGE!umw3>n8wvi%Z$t8&T zE1w~>=Uvb^aw5lyQw$6bjU<^s^SZhGlHhe6yeg7R29=<3SV^WiGZ+}28A&qT{mj7d z#z>NB{Z5d6Nv18+Ahg$G28Pc@6T$VVD8o-KmVO2XU#6d2%lkm|L~y(Nml33$&Tb58 zhYJ})+UN4dQ#gg27#IwV=Wu#8F)%n8FX23*&A7&W)N33^R<6a8A%E~YIgtVs{nI^L^GRP`5GRePYU??(ywD;naPclK)`$E=V z)SAdZ&4H+IHECo@WdZf$RKV@WIORK>5PM~qLH)~ZCQqRJB~U)Zop($cnLy+2Z%i1$ z{ueQQ!}&gzfx*!94X0rX1B03A8_uXU2<`L@G*9ye8V+Be>b`*GgH6A1Lgc?d!}TR} zyyzv%=^h4#bW=zBt=+~S5HT9W(OMg|6c zF-7h=@VI*+IDd*V%;a=i$-vNKs>vO)l7V58sUi22Q=oKY$UP5CYl7QznM|6@jlUTf z7MbQSf#{W{onZbJ(?6Ub{$bM^uz8FOEX0FIz6_MF0_Cef z`8rU(4wPR5F5eWGAod(#uYs072O0QN85n}h7IJ7_U|@(aGvS(A&cKjsX2Qkb&cIM? zX2P|ooPnXqtcDZP9x~xNaTT=w$Ak-X>usl*376#(1_ls)dI z1vL|{Pm4kA6cetWmJspwB@jMjp4)^AGS6+oHDe(}|Lr9V40Fs(xY(C6Fx*iz;SyfL zz_8NHh6_{J@yKsT((Fpk%Nd3$1!&SYAf#IxK2p6PXIS1OlG~rTP0veAp z;eyPgn{bugWMFt|X2NB&m4V@Jsc1^1j?TS<)?6g+Sv{aDO?x8 z<6$Y#{$CC>d~=}TodXu{V)_DZ4_#$0;ezys&Vbi3ed4PD_a7Y?TA==^;eyn6Aq=2; zGs?V&3shg^nNNYLn*x^yi6^kn0gIQi&w+}cfzHb=;R2P9;kpp|i|`t*CyN*uUYJAD z_j~h?;B?Pwu?0M?q|UR4OJN@agPO%2F3{=c`WAb*K)cz?)VFX!^8FSrNWPDOntO!H zs2|kM4B>*b`ylHr+bkgC7(Et0!RlsO{Nw_SKPI@gio<6HHT%dl@Y%56l zwbbei7pQ#R3Y9--bp@*K3RK+{s60gcpp^`C9(o}w$UHet$T%M>17sZLjTK~FpcKO$ zaQb3oxC5OJxWjdE2Lpq+wITUEsQepndWvND0!}v$42(?5jtmUJ z)@QhE!0X>3;gn>(k>zD314F&_Mix*$uebgKwuhAg;*N9HkaAvt0kU5Fp|vNsb|(YF zFJ?ooT=4o4K~_*bAi(ekY~Lq77H&v;kcAtPzW;DR=Dq(w-SvkH(hd@26_Et3mtF!M z7m8C3gw}g9(E1Is{!`Qj!dJ0@gohu$BDg>0VG{{ee}@y|ABg%in>(DK@GrBu!wIQp z{&0c9r;CXPte%m9hZ}Ti<$N0+?vH#748n#YVDYQWGGLmKL5ABQih<#_1S)O<)n~}KausO&)rK21FXF%enMe6;1DP*j zw{?MwKb2x+Ft9zy!phIcU@z+f6%T>ZF;MekxTU9q+!X^g{~(J%7z4w6+k-6KS)g_4 z5c7}Q9%Pxlf`MVF>_G+#@VrSt9o%Rz?OryF_l#IvJQcXS+mhMt+F6 z#1D}AMDBkEAR1z>uU#VdCk}|bmKaDpk$a;Ei2sl+dNu?9~jQoorxpt}_2*+Y-*e@XwBs9isjrTh2@d z244F_?#LA&dslLIg2OeDd&+DO|0mnrSOx}B`=4wfjtmTX_CMJ+OEEH7+3)235Xr#c zX}^=(I0{66WOSbjTGuj@1GElkrUj%Or(!dc12ldO8g~J$lWDLo;RcoWkqkA^d?W)N zuL#kEl;fxDKeC+P%fQfP(ZUU?7abTRnLNSk3?!Lk!0Xv>g4dyZwzmO~%Uxye;f9QB z^nm?W$kM|N8t*vEI0Y&`1u8xTDh^S{$N&*%WZ1|6THou*JcoPI8U}`DhdJCE!TU*; za6|Id8t$xR3=D@I)^O)81MNdv16Fs=VGC5<5wJVE*!MuypW%j#v!3Aw_3tDd&u|}P z1&y;F0lVWW^BL|sA&@y|xEBe5#LsXGDMI+tiXi?Suz3y)SHSAKn67X`+DlisA?>9- ztf1YLo{oE1LGvgxn?FP-e?O|2_1FGkrfb}slyx|U3V_+z7d;@kzmE#-kSTzQQ zX2&~V`K!!Nxc^=QwHKanKji_fBYVTGBgnwe>G+1*Oc2E1!+P)<1H)v;J*KvHgX+0(T?qX}_z!p9 zchL9)3lF4TX5oR<%Pc&QdKt35K8ABAbbjk2qs12n245#09#B7lk%5N?Qto>)27vcH zJp{M6uQK!S1cUdj@bFyO0h*@~;epiSn(Q}v7#QX`X|jJ=1zrck-u@r74#kjNaS{W= zQYXlI!EH_#!Qr6BaFZJ}j&sOqA-G@U#}DD3bg~5RGrQ|_lN;17cX90F2|4C2n29DgMt^mYRV265+y+|eHx7-XCk8A1I|Q2!6qf7@lG$O!6( zZZ(3;;}|+a+7+SBkbY2#b0E`--wX`d&WeoxA2To%InU(Wz{1FI(^&=_E>E3hcuFN0 z89qA8@Z>#ZU|@35;eq5A86JZL3=D1}GCbuxpnWzfJfL}L5FeDT9T;SI@^}~-x|mFO zO6D*y*t^((^>wkE@I3em(r3aGc$k49%*6#PewNXMXW1DBhGG{Vu)SBAO?W&GGcZha z34!us!1PWRh`M_&DPTTK9j|K+lwSg-Vd}hGYruS%x=Pm;D8C0x!_;kaodV{=)ID{b z1LZFP(=c^PZfn4Nn7UB6El~a*Fbz{T-R%gN4^wx@?F^KE1x)XBiQxg|t6y#0Dy^>-#v{u8MDM@C3HPMBOlNq6@PhLBRpuBl z{nR-HOkZW*0^T^?4`@z6)%_9e_{)I;lFP9J~ zUFYzE`Y}H}a(H!TGcf%3$l=``0!r68yq@k13_PAWyiJ}A3<91dypVdM1gyW1rGyt! zZ`ANY`deSPLA12k7w$7lLF*=K!0H$oAnF+zYIs57A)b3UjKJ$MTX-v2K;xh-yr6WD z?AgM5jRiD53K{SGBHY7!H;I9v$MX+2WSkhXFJroAB6vTQ9_K_B(7HQb6-MZ|4rD)2 z3@0ZWL|l-qZ8>OsXbLzSKR%5w-3AyZVfMF+;$BwsK3c9v4$5qZp#Z9M_$7V8Ao2j3mHdV!wVTlUc(C+ zM_$7V8Ao2j3mHdV!wVTlUc>tkJdXU51+;#gkzoxlXgt|fehn{Vymt*RbR3x%GVZ&E z7c%aJA2mNFNh$d#Z~` z65QWhZNhs`*0J{pFhf$$j_Lcro68g$!9 zuW$%owg3ae6u%h0Jbp%o6@DpvdEoV_F?^79SyRC4q19P)p!#z7K&MeoWz7M*OOB%i z>>fV<8mN0(!0vHir~#`lWT}DL58*R1^gzw+0sHfra1S3SeKiPA;RCf>dxfX)fyyr* z|0#UXb>)1Z`VAz$loM2*%>kPWGKWWik)hCk3g1F5(7N;~e5<%X{+PoD@>hfK60rI2 zeCP0iP919TpTnml3X)IZgRHad;k(Dr$k6Mb!grFLkzt1a8nF6j!fW^->)f~SLCVuD zVE1hE-@-Q^T%K;>OXmQUvs?HII6&^%0(M`6@D{!uoFMb3K*vSrKEqs-V5WclKgzusb;lI#?@IPuo_(IwczO*)k zzf1?hU#|nRue#Jtt=5c8$gAbeFd2){`K!tc?5@YicW_&c>A z{6eUItD*k2g!<1J>c0p*i25Wwi272f|LURs1050x^50gd|L#Nm_Y&;CGtl&Q2Ab~A z@QL$);{6I#{0db33ZD)S$owmOh9VFebQ<(j);G}feueLHILIAep!&Y>HOMnC$Oe4j z%K`6m|H4>pgId5JXnuUdm$a6F!6AT!AC&GIgjx7O`6DiXg?|tUeaB_i) zyYNHAUHBp4^!w)HMLindY0+nAO{4G2T46T7NVEL=eDPWqBAq8qq z3e@}@sCW)kyoNtDl7Zn&U=BYd9%}eciZU`>39R84{?5SgI53C*1=#!=sC_y7j1i!C z$>Dzkj-MQUkwVb==p3j!Yxp7iS|H~eum#odn~O3sxCTM?vE&4`K<#hg2i;cGE8M~l zx~&LAH-pnp3;#`Uxl_ZxM3j-CCnyG7&oMGg;fK_VJVY+2b%iWz zp!Pucj0}6g;vgClFMFWjc?2qcg#S7?oX$YQ=?FBOjzGid2sE6IK*Q+@RNob7I9!2- z!xesUeo#8R!XF0?hcor9Sj(0LUhkp8bILk>86&NAMCns)~p9(SPO zafg3BI6Us~w}Hds4FA4DP2r+z~Uepl7GJNSMq|~{fB?rQU-?0Az%1G_3@LCFZ?G&7#QA$un2(i+g0X2VEeQ} zc?2N&MMMCSUqs;Yka*w$^9xyc1R(ilCI@JrTaVZuen@@vhaXb!{(*+~AO2|^j0`QI zkac8?3^~wsF@N|W^%cZCMg|$MxgZ+iZW#eRaJo|w=x1kSxD=`)0LfQ60-$|YIYA}@ zp!UTxVG{vJy=x-?spo72Hs~`j7>3yhK)-(-|1Phvf)(faWp6a|A-6;^p9eSdKs-n4Tj5**8=JcHa^9B~X3~l)nZ{ zGcv3ZnAF6;5E#A&?Cu8PH3E~s>8b}Te}sJsl->fS85y=f)o+2S-y*OctRB*CDGVa^5je>NIydEx z0BBq>F#L{y?pg+htKm-sAmgKN1R(ADFJOI)3||C5w>)_|ei49_>wlo)d!YLS{|JCi z$=k2+M*vd3vj~Fnhjs*u;Hpiae8eKSo12kgir*e)NWXHQ( zkUAbg(D)=syj=*ye**2_?_riHVqmC?*vJAJzv_$-5d`J4E_O!ny4)oZkn%WOcMtQ^ zHqbgA89_+DeJ1!kic1kPf{^|@4-=%^b!03M0iFBf2;Q$@%@W9@P{qI?9T^B--=Gp1 z$h3SG0|SVj2&F;eVS15}aWPXUZ3Cs9p|n>dWWB&sLx{RSC_ji9BK`_09uX;qfca+`b-?sh=0rvwHb#a&kq~u^ z43P2J%%~dh`s{F#CCs4x%qyZy!0H(pYy|TbGBDhWG7$vL2fvKE!=MD7*EJCY<{Xh!R_80sQ4Q`NPS-d<)4Ap|20s)50u{mb!QJ$yhZRA*t`}&DR4WoM-Z|f zuto4-I4FO$2wH&KlT)Dj=0NpLf$Ezgcpu!Jo&(i41*&g~;CFDlbBQ2iKgu3vko$H< zr$E)Mfzn$9A?33m6XZM}AMp7*UF`?(_ss!wd>?|{?8vY0!9%^VX8MMw&MhLRMh()L`8Dzc+)I1(=e(7S@5!%lVT9>FJ zR1BpLfYs>;Rf654Bjf?4LGIIw)e$CeUpLGojX5U4)y6)q97UkYl^)#nJwnj(M+nl6fQU0PED@3yWn^fGTLKkdBLqsfkqldepy^f! zQr_+nf|SE7LMqQd>6ArC8A^lfRf}N}`uP+h&I=XifzlBBj)2|4$Z$jmwEo{l{)iB0 z{d$M|86g&Me4i0YWM^bhkDtO0Dc7e!_cNRkipgVOu#R8C4H3U01Q~xiBczqbz@Q#~ zMyP?Gks&btj1VL~6B$>{0Ie@NBgCXZs0>bt=5dswGmWMD{0kP(Kgvy~CP+QGn3m>?rOGlGGkC1EDZ>V2T_oXPSRe9n%E zFeu+nOt29a<6>YqkzgYX3ZEMZHo^v63=EGGT)^^InPr6C@);N;5@m!1t}`&mCz^0Q z>}FtaPc#u$1Mgck5eA*M>YJz{45|N3gh8jSh9#N^^Jg$Hq$TQr#b>aa2s44!S0a|7|PU3gja#~8?%-O^A>>moh8CK>JZvagMq<5sYEzg3!?6f4gt+B z$YlDRfuSa;1uQSh&;zBXfa$BubHMcKq&Z;sJ21=yuM^yvG!aZQGE8K$dIFl)oCrNH z03r`MXNh+{1HaBL&UcTgZ9^aOWGm~*;jOtX?q0&19x%> zRNqhTX~ql;Cdqq*BaSdIgd`skhU_2O!?e<#fgwHlh%o4!PzQ!R(DR)3K=timf}CS| z2CDB0R9_2J-xa977O1`!sJ<4czD{P4eXo-nq5G8@nL+k2GBEOZmoYH>N@nEg<6&fA zWcbK>Iuo?+WDV5Zn;Zwt7#PY^?m+E*0=4%E)V?=R@h?#EFHrF{Px?>I09b2I0 zZh^{gfy!@z%HQNrGhtxxNu9|I36Gh~pzxIDp2-XfUq*(R(DPjX2#bY*()%26f0~hj zMFf=pt}@#QLe}Tm2twBT*$AFn3_1^Ii6Cg*e~vbf2&5k55rNc$JR*>KkVgbkKJkb^ z$|oKXNV&-)0;vZ@L?GiEG9sXQ)+kK{O6!O~#-~g~AnhF&5lDUM1EoX2?qXyJ5doD4 zd15-?_DvU440J!O4tTvEBSQ?7zR9u&d`@HxR9_5OpS^U72sHme#dE;oxe_H%ehHXg zCs70C*MRx`5-m`E3z)w^q6fK+20VB9Qv@3RL`#2&DYD zBLXQm?ubm52hE$_5qYl)p&{+>J0juopnY$5L_p<%o5&rJyA=?5Q2etp+!2B7|Gy(L z`5Xg7B*PYHxIPhq>|6fG9zL6afrrHfdS1{Q5y-yaFCw7wHe3XKF61l;UrTn=)92hKO&%f6_U&%3Q@-*3d&aw3{%)3>2?YmDBX53O<{xN zU&ub$7wML)AblUx9iis0ftv3KHGd6M{~DK=r9W^{GJBL-yPJ;OPXfciEfqk#&PHXg{wGRJ{pQeJ3l#|0Ym0+DY4o0qEI z0@fFy-XaRwciAEe*>~9@3fXtr1J?H@a|+ZwQ^4|5S?7pC_UTO#4G;nC)AIrEn_*;F z1ErUUf^NC_<=nT}nD^T-}h$@RQFzm=WA_`eYbVn3o{uQYC zccAfn2O7_JL?PxovVqd$|ExwfNcwMN1EqgPhM8=-HVh2v*)!QVSQr@$vmtyP1_<8* zD((QK-Lhwb*CQ}8JQ0Pgk9-5A1$o|mWnjo=`63Egclk#Yvc8f<46>f_40xRpXgwAv zJux!yh(Y|xBL?v&j~K*XJYo=kB{K4W_t87D?`#953rBYUAE5K39l`62jCEziAm+%3 zfzs0kcNysV5gF*Z4i&KY)@&6q(D;%AgARC|$yH_@G06H06R`ZbY!j%w4OH9(EdD&( z1uXs{+XrmVRpt;d{nR-ItS-Z&1w4Pv$gl-UpMla>pmYjYJtISk80eOkUf~omP`_%5 zUkP}A?@Ztn===+0{_hiijuHWEigU6_Wil|BE@xn{&nW?$*Tqx=rCXqM z50u^m*4M?v0v$h|A_f^xS;9Zh5!8-b!hZ%zo5+LKkuKryRfW(`<3R1VIbx7`gE?Z5 zd4nZT{t_sE4cHz=hBZ+CtPz_A9v`uRj=yaIyI&|U1j;Xg(pR7~iy&m&jzthMKF1;m zy2avU4iB^+zXxjm9&q>vL?02Gv50|zH}{MfWSr;>)IV3i_H?n|fr{S&i#G^A5rfn_ zPsAYOH&4VM<1}x?Amb}<#317-U!eRiQ2rmNy??;=E{kCi2leA^2I5eL;Be^ zV19$J3z)w@)(33P-rN?UmBpa=Y7v?XI`@XPMF_Mn_eAa+X#dkh_@*%Eymb>{&@B+y(bX!E3x`{C8)`w0l8*uxXkwJwSWWNK03e=w_P}&7bhlqpn(GyM%1{H?4 zxf~2N44-m27#bM9=W;N#fJHhO{^W8n^e`~yaWG6^V9VoUP+;WF<6}@^)XU>z&|r+t z<73caY|G^ z$56niSir|n!l+lk$56rOTfoOq!kD-I{bO9ej596HzK86X5 z9}D;xrZE00;A5D<$XLk7Fo#i~kdI*jqhui;!xBc5LOzBSjG={m3~LyB3i%i|Fdi-B zW7xv@uaJ*n2cvxvAHyETsvzh6qfRj&!v#k7Vm^i| zj7i0O3^y2ai}@JtFg6wQF+5=GE#_l*!nmrKkKqO5$znc+H;ng+`4~PhzAolt_`=9j z!pHD~QL==O;SZx)2_FLklXnRp0}E482_FLo)8rC91|FtWC43A5OzTVd7(|%%mGCi0 zFg+~cV~}C`P{PNc!1TR@k3ofrt(1>JgNeVCk3ok?qLh!pfJwKMkHLm1pp=in0Zh6u zg_iO$crc}u@-c)k<(Bd>L@w!wn`-O1Q(cvy_A30n@%x4u&U8hf6saUNC{u#v7&+ zr5p?&n9i1RFnnRURLa5dgXwxH2g4txJEa^949pKpIT%=&+449TIGCT6axm~Pzb@rq z5McgL%EchT{I!&eL5BHXDHnqRGkX~qg9@`i85e^Fvt$_;gAQ2MfLW=Gi@}6hyNrv$ zg4v{ui@}E3wv3Cxf!VE$i@}B2zl@8)gE^v%i@}FEv5bo$fH|v-iy?%$xQvS-g1M%Q ziy;AQP72tZ3})>z4u%3|kWWjPK|ZZu2Klsx8RXLjW{^)?n0J=)F)UziE#qTY!kk;d z$FPDqw2F^m5A)Y5K86F#BGr5hCzxfc`54YH+f?&0TwwOE=3}_R+)&NOaD#bbH6Ozr z<_*<+3=fzOR`W4DVSZH2$MAw#xQ3764YOJeAHxS`*BU;CFU(;zd<;LB(`)z`{xH|n z@G&s3%&y^MU|~5?!^gnE^1OzRfro{omXASz#j=)8GmXAS#Wp^zfgAB{RT0RB^ z7S%dF1{D^UIz9#smf|`-1|60;b$kp4EQjm(7))56)bTM`uzauMW3XZ2spn&GU{SB< zV{l;!s^??yU@5QXWAI^FQP0N^z;eHyk0FGGsez9nfv!xYx5jm!)QY&RM?7*g0kA)mqaJ(rK6gza`CGeZU2n???X1#F*k z`55-Fy$6}V{-u$bL4*B9BNu}WyI>OsLkv4eR{}dIzEaph@s+_2imx1YP<$1zgHmP* zJ1AvVu!B-&4Lc}hPGOg7;$WD;F5kq&Aj6^3#KF+P0WznD17yw=Fnb1=J%nYo4oWab7AkeNHc>i2-v9|5yZfZ1ojdM|Kn0i_vEwI)7>C7hK_oD3^C zA2e|=tl@mx#KEwG6J+lmPLM4JI6>wg;RLzx1Scp*oZ-CC$iZ-d^HmcE!xhf=O&kn2 zI6*GI!}+C&gW&Mtc%^VCa+!LBP7(BSAHghlpaL;PyUXG&3`}@H}o7V(8@o#r_PQXU%*Jb9lZt^D!*o;c4MxSi)o6!pE?JC#gk< zVI^428lKrLLJVuc>=ZUmEC!DSDS+V~i*@V;*pVz>&{dxN*SO^D$pSj`>YhBjt~2fWQ~%nVO>Z#4@sJOzut z;Jw={#PAZ#e#5(^S%~2+Snmg3P-^_b+t$X%@Pqe8qY%SSu=pRay??>s!@<|xCd9zW z2Z|S7Fe%6fiX92Q32l4~GJLb!gcxMO;)-BW7fc$0NmDRs3nm@Gx?K4{aq0;c@dcBi zU@{Uc8w-|A1dF7C$xJX=2$n4c%T|I#YQbbHSiBP~-U}9)2qve3$+=+Jg<#pGV3Czz zawAxLD_DFdSY$7lJP0Pwg2{_u@-CQs2qvF`$&X<2E0|>D2ZaeMKPWUf_>X}?3C!l< zzu(5kAi&So&c`6auiq}jAPN?j;16jRVvq#0W%&Es`4|-Vm$maTsPJ!X7h+Hai)-+o zYZqeB1haMc@3#vv=z`e>{0tp@3?}?+r9uprV0&%B;x7Ec9efNP{AwLS44z;SAO8M! zAqHPCJAmJ`Lx>>|%nspq>fmFD;P>nhVu%Eb#PCOS2r|U_!L9obCFnJa% zei1Bw6)bWSOx^{PFTvznF!>Wq{soha0-#vn1(SkcQWi`qf=N{YQ0(XmfP7~N7BK~j z*n&kI!6L3;(i1Em2o?_oi$sD&62T&=V3ABPnF|&ddLMQXt!tzeN(ut+bMoCp@5 zDNtQ1#4r~uvJfn?6s&S3SY$0&WG7h7Ua-hPu*gxcnv-CWvtW^{U^O?vB6qU=yZ*-8>ac&IFTl z!L}?F1jW=!u*h1l$VRYFw}M4>f<+Dp{-4Ija72)2Iv>MPK~PWOgrMkjA%>G+HD|$U zE`oJk1&iDSi#!CI{1hzm5-jo-tmY$FzyuSVR&` z%7VpJ!Qz@=5nZr|DOki3EMf~L9l@k0nDhm!2?VPN1&c(2$wV-j3YN_T%jSYb3c+M4 zn5+epjbJscU^Sg!kzO!46->?q%gzPME(D7#1(Pem;v2#K+6org2^QH4R(TLCauh6b z5v=AaSmY*H8 zVNggaf<;upq$Zej1j{B0gVJiMFepwlh1V_>V#o!{7J|uEu$oS=nqIJ)iC{HT!Ll>K zk~R%f1AYZ^0y|2*^jGU{VrH zs)9*PFlh=VEy1KKnDi6@`8`quE!6{!z1_!u;#3}^B&=tvdK< z3<*-R=kPJ4NWGZD$B-fAI+u?jM{2=bK86CR-*fpGN~EIZ@iA0LZJ#H^Pzg4%#>QP zl#gMK)RTpL3=5?67x6JHk*Zk4$FM@`;37VTHBwxQ`4~1xB`@Y<*dn!SF(1PYDZwRt z411(<=Yq+VU~(&%JP0Nw}l_n+zPGyj5d6joBWnz#7vt_|- zO)y(m`M^>p21_v8R{6kEA%;d3Pz=7*U|nNDK2qts2K_Zo4vKCA>g2`4e z*$F0l!Q@0RITcLK1e0^Y{m> z$OLisLMXkMiGe|hVaX#9EyS>R?LnycVI~HK#|+}3!(G@s5({_kiNxhL8tA5%yWhEJy{qSq!@C)hCunLP`ZHy;{H}Be*u)g5X@il z2tRKfhkYaOBboY_GBSn>!&gUkofAoE?J>Jp*q8lm(;D7}~sl1>jo z`G=wWhis5|2hkw=7}+7=uLz|bp|mqQBz_X0{6r|73>9yH@|&Uj1yKG0DE$CRGjKr6 zcjkbY*U15~pP3WF=i~&1%aTW$oDg-LP#UyL9^_wTE{Hm3DDBAw(qHj48OqOu@|&Uj z$55J?8=_AcN*{*O&O8wD1yK4hlzsrEA46#dUWhtpDBaA%K>5u45WWLHD1PTXY5>zq9xXtkLGg0{$_LRP{$Z%T2mBCw z83Z6S==5n&c?F_D>Kp_><}P^zqCxxwsJdhUh`pHt3=FFo+rBnH#X+avfYcp;@*hBH z20^I#P}%`XCqU_BL5O(`P=2!@1H)#<>~9MMA@+l4u(?qF0jN6AZ6F|V1|g{VP}%`X zCqU^2D7`=kY95q-0Lll^AafoILDD;eFhre#FvMI3D4hVM8=!O}lwJU(7eeU+Q2HR0 zegLIGr!#=;VGx0s%Lt{JML_AI^qT^d4?49PRIY+(ka`EGxFeKKgwl;rdI6MPC<4g` zAR44^u?Qqw4?yJ)Lg@!k8Z>JTQpX?)bq|zQfYORk+5t*Cih|5vyfy*KPlWP8G{~F= zsCXlkZWe{uzW~Z#2v$Gu(E%v`Ae4S63dxTk8e|Tm7=#a^L3{-%OT# z#gnBV>Q736)OUY>38puFSC)o|r$~dsVcsK08A!M#Lg_{*y%0(tgwhY8bfPRoeX=aX zoP|*SVkloz0b-vgnBMfASqY+E8A>}t>0~I~45d4jK>EIYUkv3RhSHCrG_x|)94PG! zrIVFG{#d-W8A>mP(g&gPhoSt(P?}i#5o zZido}q4Z%WeNqDwzK@}NW=*I$P}&(vCqwCGD7_d;ABNJ8p)|7=R6mqZn?GwVS0L1||woeZU$q4Z)XeHcnV zhSJQsQ2kIEwEG%lPcoF>45b%C>BCU^F_dQ3gX)LU&QLlTN;gC4#ZY>)9w>dzdvqAe ze+;FW^`YiKX=fBCU^F_dODfa-(Nj!@beN+&|;WGLMTrJJGjLMXi$N*{*O zkD)ZPA;f$|D6I^ooedcn4l`c=mI&oHLg|H2`XH2MHiGC^hSH8u+8IhGL+M5+-3+A{ zL+Qg%`Z1JdHinu9rJbR4B9v}~(u<+=VJQ6=N;8{4^+Rb#DD4cT51TMBJZ3cg&TI-% zrwFAJO&J&#Gk(u)hVmCe`HP|a!%+G$lx8%8sAo2Vn4=7(ouPChR6ZHXZ-&wfq2i07 z{KHWCA(Un|hnS}brIn$yGn7t-(#=qMF_b9Atr4K{t$55Kt5@KE=lum}y%}{zVls*ilnXMq|m7%mVlum}yi=p&kDE$~p zGh0LTL1||woeZU$q4Z)XeHcnVhSJP75dF?jIvGkgL+Qm(`Y@D!45gWEA^Mb|v@?`W zhSH5tx*19@hSCRYA@$=yDE}~&eh8%>Lup1ki22M=S`kVsLup4S?F^+8p>#5oZiLd! zP#8pUI3*RLTS)yQ&2iP2<0D!(hs2YLnzJQ0CgvnR)EqDP}&hnCqU^$D4py8Dt{NR zZGiHdq5K6<{$eQq0F-|i%6|amKZf!d93l2ILumy^NP7)LgWRtO6?cG&gJ_U=0+gQ& zm2ZIZo1y##Q2s(Fe=(Fk2&ErD+yaDnJ|fYJ?6dI6L^ z-~zE9M1#zE0Of;d5TC&nqF=!kq7FoZ#2uh~5DnrdK-D!s=>=f<#cM${Nd5qn528W* z2T(qU2DP&p+(70pUJIf@d<7^UM1%MaP(FwT@e`nY5DnrtK=~jV#9sjAgJ=-{0F)1+ zLHq|$K8ObK8QdZEDNd6&Ip1}*^K1L|50Hqb7v;&lOgwhF6IuS}YLg@uw5dSWO@()1y z2ci52Q2s+GpTQfVp3xg(zXFu62<1CK`HoP20+gQ!{mh07@T#(hs0CgCA5sly-p92~fHLN-u!Y2cYx=D9zvx)eof|pmYM1PV|TPzX8f$ z0HqH==?74nApmL)ly-p92~fHLN-u!Y2cY!90Eqbyp!|nWK0_eHJjOtXyaJT32<1CK z`HoP20+gQ!A4Xqz5uFjA(Vdr%0CF@KY;QdLir3qPM0Ocn_`3+EhBb2`Y%3lcO9|!`u)8jFS2D$SfRQv%{-9sp!AsFh8V5mEw zd_^eV0m@H+(hX300hB%fr5`|Ph7gdw4Ua)I$X}`O` zH$wRfp!@?NpmFohk3lp@{R5~tLny>t1t{$h3bI%635W)%OMr?ufW-F2&EaKAm%YbX$2?^+WiEwHv!6T zfYJ}3G($8*UjmeFfYJwJAmR_9G-E7;-w+G&*8(Vg07@T(%0Gbe8R8)75}u7i{t_t7k^>QU$$_X#fznH$;tz8m<;N4KIAbn^&yovKuL$KkLg_>( z-3X;ypz0Pv`AeYugHZlMD9w@wF;4|bFM-lWptMRpMBW8TAA!o;*JKWcng%j0LniAr5`})hhX`YU!Q>K+^-Df z5PMk4A?7GR`3_Jz0ZKPO=@zKE1yKGHDE|PI{{TuefKH)c_@2vB0W}xOSAp^!p!@_R zTA8uySp$?0qCxSt0Loti)prC+KY)reR6^XZ0HswbA@(^y`7Tg?0+inXr58Zy15o;4 zB`AItuRQ`)|DY1oZdvyXM1#`XL$LVDuTQ{q?pKB?h`o$eAp2H+1)X*_o8iqf5DilA z0F`$E%jbSgfbvtIe9-Pmkh%p>@dHr$NEOH(^Bz5b@}EHY4Al_(6ske)(s~Y}LHZS| zLFyN;RjCHKBloKVRGlN3zw)aKn9lv002NP!s&9bu8=?FbFg@?l0;u>xFn{sdC185q zqXSU!gJAyRwGW{Dhfw|#s67ld5O=cFK-{AMj34u)I!{y0Ocn_D;dlP6e*|jI1E}~zFn{IOCty1FD?b1hKu1yFGit<1>% zav@aT0jT&vDE|SJ{{*U!p%LOvmPU{}bH6G;`3^|5GNbX!1SmhT5#r7UD8CWPZ-MGx z2<0z<@()1O9fXQMfbtodAoemgLCj-mg4z!iSAp^!pnONDx&$ac5z23X@*AQ21yDZd zv{2Bxp(Rjr4nW0^K=}`$>KU4$?r4U%LjlTHgz{CIA?|X3iaSEZU7+F#Q1L{lcmtH* z2<0yXt6TZ?Ae4Uu%+LM$1WGfufXrX{Rj~zPze5YeJ&sVm3s^q)Ya*1N0_8VA)h&dI zAAs@?LirD&^b;^W?-4^Q#9YQ!h&?P|dfp=isJJ4Szj&JNg&SAKm6`&4m0uOxA@-?&`MFouxFMx_Kgo+=4@()7!51{-f zVE(*E3|$a&Sh_&=&wHc*QUG2Pi)QN;g31mTri<7eM(-p!@?+{sSoe1ZoaL z57eF>s69}=OAo}H6ezs}Dt`n@KY*%Z=!NK4fYJ_7+NBq&A4)es#TP*7CA|>)4nX-w zpnQftsCiJ@0ZO~{LCu5G4N&m~P_tu9f68JfQmEpL(PZMD*X_1U7&OV zRJ@@d)E)|Y38F#mp_YD#`3w3P7`z!j@pCP4WqP<{iHzW_=vf$Bd16%=1jUx8>)IIBR#9iZwGpmYP2UI11v^BP2h)GwI|aqj`BJcw3iOniL= zD*gbhzV0=M2B~M62DNt@#2qS7z5|q>0HqtC^a3coWE#{SDE|nQ{{YHom<}ewRZ;8UMSxI zN+&?+1}MD%N-voKvF8Ake-NyH<<}!n@dr?GhM7?FXF|<~@>QVx1Sr1&O1I2}n7aVV zKLDi+?m<`nrr5&Jj0+ddf z4RLn^l-~m7FM#q7K0O{3B5Q11O(i zF4SBo?Es}+=0eO*fbtul^a3b-07@U33o-uzl>Y?EXP5^y7fL%o=>#a<0Hqf|=_T_Z z_8oxoA3$k_`A~D9w90&leGX8*3zVM#MkVF|>12PmBYr5m7h%Myq= z3!wZZQ2qfZ{{fU{0NuLA@I6-nN;^Plm!%N>2~d6tl-~g5FM!eqp!5SM&9DsOE|z7G z^rryjD=q_>x8+?SP9h! zr5&Jj0+eQ01(k==4p2G)N-u!Y2cYx=D4nnxqOSo;FM!eqpftl8h`a-oR#*#Z2RcCM z1Ss7Ar5)Bmr4Ou!nD+omGi-qH6`-^Oly2AnF=qjkJ^-Z~HbTXr^Z_XS z07h?un8&agLMuRN2PoaJ1++e8-lGLzddZ^)TOj5!Y=zJYP}%`XCv1h7(*UIxK}2~fHLN-u!Y2cYx=D9x}7Y7UfkfYL6z7#O4(zvm`E`6*C- z1C+l2N*{pI51=%|Zm4-s+5t)@Kr4K;q z2T+<}FH}F2R@n;;7brggN;g311yK3`lzsrE8TLWVfzl38Isr;IKJq{ZJZo>MN)`On~wmp!5SM&2Ry#9!fhv=>#a<0Hqf|=>t&u0hDIA2-Odz9iVgq zlx~313t;qBP(MNL%>ytU_eS9wh(GmB;x$M(AGrw$ABNk|aD&ngP&xrhH$dqHQ2GFr zegLHz?m+cJX$L5s0HqtC^a3b-07^fA(hPT@`k}M~lum%s4N!Ukls*8ZA3$k_drr4K;q2T$~lJ3#3KDBS?17eMI) zQ2GIsX7~fu52YQTbOMxafYJ+~^Z_W%@)zPyhrba0E>L~~lz#w9KY-Ftpz;j=AnFyM zw8}rIIZ%EAlum()H$eFdp!5MK{Qycc{D+zcr5&Jj0+eQ8U<98Npa7*EpmYM1Zh+DY zp!5MK{QyccFhcc1X$L5s0HqtC^a3b-07^fA(hN*c{ZQHgN+&?+1}MD%N*{pI51=#y zGgLp6c7W0eP`Uw1FM!evER5ju3>2WW1C&mH(hX300hB%fr5`})6jnxXyJiWLW?_Ty z9XKHFNPyBQ91!s%P`ZJOk>NGN&o?Rj5OL5g0HF5K0a1{+^IHZn5MA}w0Zeavt0E3j z_dpzCE`tPwR*;0y4p6!QN-u!Y4N?&K1yK3`lzsrE8Kfcd3Q*bsN+&?+1}MD%N*{pI z51_P)EYw}{5OWw5AhZIMc7W0eP`Uw1FM!eqp!5SM&7cU?52YQTbOMxafYJ+~^Z_XS z07^3`LG?pv2Pl02NEK<7oUs4#-hT{xi1$e_&l?yZ9{BwZvx=>{mh z07@S~qLmqK-#vix8B8Gh6ri*Nlum%s4N!Ukls*8ZA3$jaQ>cC@?Es|{pmYP2UI3*J zK#a<0Hqf|=>t&u0hDGihw6vY4p2G)iB@I|e%AoygJ=+c0hE6L zNHxHptJ*&PJq%4PW9(}P};?s5xh@70m@H-@*AN11yFhkRQv#x{{Tue z*g(yN(hg8M0ZKPO=><^w0F-_Jr5S9Y`k}M~lum%s4N!Uklvc2Zq<04>{lFfgzrg__ zz5q%efYJ|Ov=c<0!5KmyaD~thptOPqsGLf9=imV`F9Aw7KIsr;IKNGt_goMSTCckx3S!QI6bStQN;9NF_zF-uAs3<#M1%A- zK=~jV#6JM#gJ=-{K`umpLIuQM3DppO1C(Z{f$$Zev;&k*fYJ?6dI6L^0Hq&5=>@eA z{Rg1*gIb6^3XKrjVIqWXm;|90KNJO_uK?1y#PudfYJ}3 zG{Y8%It3_wU zr4K;q2T+<}4@8{=;T!X5E(g{$y0ZK1`(g&b4 z!*z&y1t{$Rr4yiZ1C(9>r4K;q2T+>f22?+kc7W0iQ2GFrPPhqC*8rstK@( zap$`SU^?_Y!($Nt<9h`#-TT1-Oly8j0Mkc5Hh}5GPYb~G-%kg?^vur>z_jTXh9@BX z7r!ic3$^bZBppA1(g*%R$|(>HE{CA}2Y(^zS{Rui?QJ0l&EmtvAjJ^yUB!n9+>TT6 z1My?OyFlp_DDC18l3%S%RVFMnKf5M1b@yd6WX>w?O$vp!_FL zzDguSy-OrS{gD_5{RB$0#6tKgP}&7br$Ff?u@L=7pnR4%sQNgF_!2Pf`uzx4eBPs! zc#yd3_m+5&x_OVDfaxWVSQ0?|C68JXK=QHQmq7VPp!_FL+9eSpp8}*p)eKIAS>} zI3{zf<2cFjgyTPl6sH?!7-tjb1kS0Pb2&G19_PHkDaIAURmZi3>l)X8E*t`I9oE zijazqij9hoO1w&iN}WoxO1sKImGde$RGz5(Q4v=yR;^TRQ$48qSoN1Gx0;7qz1m#0 zHELSw4(e{|OVux^-&dE^@Yk5CF|kpG`DKL&}7o$ z)iTyf(ORc)t< z^>*kT(Yv6hs2`=jT0g;{(qNgv8iRcXl7{aMxr}^`f{mJtRvBG1+HCyGnAt?k#N5Q$ z#NQ;$B-5nZWU|RZlY=IYO+J}?H&HgVG<7fyGmSNEHJxF4(e$pVxmmnfh1nf5K652= zPxCJGh33o6*O;F)ziIy4oX5h>!qXzyBHAL!BFm!EVv@yD%V(CKEdN<5S?O6>S=Cxy zvU+Uw+ltv*)mq0o(z@7sqV;0yt=3npKU#mcX0g$?F}1O=akTNX3AbsqX}9UMS#7h? z=84TG8!cN`+f>^o+v&EeZ8zKAwEb=?V;5?dZC7pAXSdSslHFZ9dHVqSX!`{F0{aQ} zGwmD=Tz)p@q_O6N_^N1abQi?~R;XuE9kkoL^+oaed3bFJrQ&t0AeJx_UF_Ppi!(esxl zrx(9hs8_yMv)5v;PhNk$1iZz(WxdV4!@QHdv%FiqyS=A+&-Q-r&ETW#cE zEZQ)}DyAn!E;cE4a_p^G@3?7kkK=yFnZ|p>$H$k)x5W3yFN_yW&`hjNY))LCcq8#w zqES*p(&VIrNvD#Sl0}jmlD8yFr6{DRrRb!bND)a*NnMl5oYt83H%&NQGF>sZo)v`t1?6W$>CLtf@tF<~deu}0 z1`{?0hIRo)us#iI1_lE*28K{JMg|KuE(S&hQ3e(UaRy!n2?l8fNd`p*X$Ex$83s)T zSq5zeIR;$@c?Nw31qMR~MFwLAB?eOlWd?Hw6$VQNRR(JYH3nM-9R_;_T?S7EJq8~J zeFlF91BMU=LxxZWONKB8D~1>bTZVWBXNCj@SB4}8PljZMNQM-KXod`iScV*ic!oTN zM213!REA=P42DvM9ELK6T!wOnJce3^0)_^LLWV|$B8Fy$a)uU$N`_X3T81`;I)-+J zW`>0fEeux~IvJiabTK?*=wT3MoWLN$IE_J!aR!4p<4gt###s!SjB^;w80RvWGtOhM zU|h*y$+(KansFV24dX@zJH|~64vd=_+!%KuT?U5i84L`ycNrL@{zK@r zS_qx<7(#EG&cM)omw|x=G}e2Ufq}ag!jE_iq1$5_7&`AVFccR<=&617;?Wt!ox5F zqOZ9PLc_!tFM!0O{}u)YwtEZ=KYJJ$`0p_=*hnxkh~8sh`23H7LE#<)!}Q|}4BGb? z7(jEX*7q0~V&fRV;jOm`VxB%U-eLBD!rl8GB;G;kq+>EfovSz_IK7Ddfu!Hq1O|q{ zdkhTP+adJZqYMn8_ZS%DD;XG)?=djUTh73cd5?jiZVdxN{yhc;6JbV%(t8XHo0c;$ zRNrG@I0~h6#2Fb{?lCYlLg~US3=F;Z7#L<8V_=wkkAdOEF$RVi_ZS$MyBQef-b195 zr!N^87TsfD5Zunduo8=UkUv2APw^E4!}@y+47buC{de7ncM;M&W;@aG-_Lv26AUR8cZaQUEX2r>T` zAB2DCGlcK59YX&wfY5gxAoR^P2z>)8em@GrmllN3M!FFCH3NjcG6O7%AT%tU?CW7*V7kx1u>T80ouU}T zKmYGR)LqYl(4aXzP`S9|HUk64eFg@0C~bWe67Ku&L)AfPziSZw#itP3_W*pzb(7w;W zu>2qcgW-J!hGpdp4CeP47))!J**^vM85ltR0nyuA zA@Vj$7#J$=GcbteL-;Hp{#^zJEf9U5fnoO&28QPQ3=9Da85sKRGcY_^%)l`HJ_AG9 z5(w=BQU|Ix7DCj?E`^x$bqNE*!ut#in#_z0>+Ul!fNo6Pa-V?#lrDCG{CAIm0Yrn+ z1&9Wv3lI%T7yF>;0z`w-14tY+hYzAb=>bH8(gTPFr3VlVN)I3!lpa7dC_R8^P zpVP$|8IC~HCx{P9A0Qf(K0q`meVm1+kL%F%@erCmUP05xhx-f+pmgvJnoj;e(+S8P zP`H9Jds)u7(nYoK;?bf0|th;OAHLT4;UEO-$B9`q#jg0 zRZL=FD8UjRRq_lBpmimyR3UWpcLs*G2Mi3%!i-=V)DGx=z`$TQn}K1%0|tggCm9&# zJYZlz&j&BRLBa{vE`Y_i)CvZMMGqJlX7ED7jgbDsZx|R>KVV>33#~V`q4cJY3=A6{ zFfcT}gtQNj{D;`5y^Mij#{ z;ALQBC}iMe;9%h91}27y42BGh43iiP8JHL*GZ-^4GE8AGW?*8N%3#XC z$S{q;l!1w127@^R6T?gfO9n=USqzp8OboLbtQi;?<}g?@Ffq(!uw`Imn8#qtz{D`0 z!JdJUVF80Z0~5nS21f=)hD8jH3``757@QfH7?v`)GB7eMV{m0)Vpz`L&cMj9g2A1E ziD4y!Cj%qHDh5vmCWh4v-VBTkYZ$y4m>AYF_%bjutYh$HU}D(H;LpIsu#+K>fr;T1 zLofpq!+C~K1}26_4B-q+49^)N8JHM;F+?*kG5lwUWnf|uVvJ{CVi0FcWME>@VoYXW zV$f$yWnf}(VoYaXVsK~7WME>5V$5b>Vu)wV1;s35J}7n=3mKRgx)_T=p~P6qz{IeK zu^i-D#!3bzhFy%+3``9B8EYAs7``*sGcYpzV610gV))6}$iT?(i?NY`iQzY6GXo>T zAI4?|CWgO^tqhC|{}@|Au3~HljifNOGcYkQGIcUAGB7c9GB7bPGj%gCGO#dpGcYl* zGW9YrGO#iAGB7c)GxaktGH@{UGcYl5GEHP)WZ+_&$iT!P$TXROi9wiYDgzUP2-9>1 zCI)$?nG8$}icGT^m>86p<}xrb=rYY`U}Vr^n$N(*5WuvMfsrAQX(0m>LlDzq21bTp zro{|Q4BMGN`F97?Qc$QeEoWe4*u}J*fr;S&(@F*=hJ#G28JHMOGOcA`WH`mNmVt@k zG}C$pMusy?>lv6B&N6LeU}QMQv=I~wOq&@P87?qwW?*8t$h4J#k>L{4Rt6@9%S_uD z7#XfGZD(L&xX!ebfsx?`(@q8^hTBZL85kMvFzsewVtCB7mw}0ai+Mi-BLg?{eg-B6 zOXh03``6utfv{67*bi!GB7cuv7TpO zV#s8@$iT#q#d?{6i6NWyDk#6RUI)b~>rGH@WxWZ?p{%z-Ih6G_0~13F>s?R|V!hA6 z#L&k2kb#MzhxIW7BSSCiV+JOMKGvrUj12v(PeJj{`W%!>S)YSaDeFs6DrJ2M3NhB# zpftex7L*29--6J==o%JIq-dR6_;+^#~DBjsVgW{d-D=6OCzJlVN?K>#m z*}j9~n(ZejuGxNqLWAu$C^Xo9GcYmmu>ECVWZ(spd~E+2m>5La7#SHE#Ml@anHZGV zm>C%vl-ZaWnHW^qSQ!}^RM}V=nHa3u*cq7^64*Ey85t7UI2oB3`q{V{nHVmz@iH#?Q#aaEnclk&)pxn;;_-!yPtZMn;CaY{HC84ENYX85tSwvxzb?F+5-s zXJlk}$R^In#PEnsl97?&F`FbK6T=fWX+}ndr)<)UObpN1WEmM5p0mj^GBLbhlV@aP zc*!Qu$i(o9O_7n2;We8gBNM|LHf2UehPQ0Wj7$vg*i;!A8Q!z0GBPoIU{hygWcbLY z&d9{@iA|G{k>N9&CL(Gcq!;vRgAUF|f1SGBPr7u-h^+F>tZlGcqx7vpX^}F=((mGcqw~ zv%4}fGU%|oGBPpfv%51gG8nMCGcqw4vU@TzG8nOYGBPn3vwJf#GMKP?GcqxlvimYJ zGMKUZGBPokv->kLGFY(tGcqw)vIjCUGFY((g5rohn30jehCP^(iNTgVl#!9ajy;r- ziNT&doRN{ifjyj&iNTRQl97?Yi9M2$iNTpYnvs#gg*}>)iNTdUmXVRcjXjo;iNT#c zo{^EkgFT*+iNTXSk&%(Xi#?H%iNTvanURsfhdr5*iNTjWm64Ibk3E%o{^CuoxPrsi6Mi%k&%%hlf99Vi6M) zr!q1!)Ui)xWMZgipU%k0(7-;Ok%^&+eI{tdDEmxCCWaRF*^G<~t?aWInHbvH=Q1)f zw6V`+WMb%GpU=q1(8)fZk%^&;eIX+wLpS?EMka)7`* zGBK=YKgh_)uz~#`BNM|$_QQ-!44c@GGBPr3WCPoHM4t^#k1}+XkCPoHs4nZa+1|AM!CPoHc4q+xH20ji^CPoH+4pAm11_2In zCPoH94sj+X1|befCPoHf4oM~^1`!TvCPoHP4rwMP1~CpP(CbnjGp(ObiYjnoNug zjvSgyObkvO+DwcL&K%lIObk;vbeWhK_H*bnF)|$B&}U*|ILTqi#Kdrl!tIINkN7|wIpGBGh+;IL<6Vz|iR$i&2OiNl$RiQzJbD-#pL z6%KbMMuw{#?o3P!*El?x7#Xf}crr0D+~DwLVr00<;myRvaErs2iIL$phc6Qo!yOKP zCPs$49R5s94EHz!nHU-Fa|ALmF$i-8gTjF`l!=K!lrtO@4xEupObp_j(M*gC5}eUY zObp7Lu}q8%Dx9%QObn`=@k~q%YMhBoj120WiJ%bROlD$Y(Bw>IVq(zZOlM+Z(B{l! zVq&o6%w}R@2;t0SVq!?*%x7X^DB~<-Vq*BtSj0}og?MzGzN?e^xj104jpu^S6#K@q_)yu@hpvTqE z#K@q})z8GlkjXWXiIE|TYa$a9LpIlBCPs!FuE|VH482@anV1;%aZP7pWZ2I&or#Iz z0M|?=Muvl2Gntqe4sp$9Vq`eXH5(K!TysJ3!ZjBZFI@APm>8~eEd<32*J6+xxR-+5 zz`Ya{Zrsa3DTjMG$S&@cOiTo!z1pUOpFYVxpy)#F+Abk&BVy?lzTT5 z6T>s^y-bV@&$;(9F)_U2-p|Cu@Rs`^6C=Yr?t`H43fH7@3(ElK7aJnHVzpSecm^viaDVnHY-sIGLFkO8K~%nHV7pD0Krzc@1!LkYhmNIkzaGZRBOzbrEoLj}J) zGZRB4zalde!#jRuW+sOB{Hn}73}FKK46_&ULw8J(m}8B`g&q-_~g8GEGd8Ppj2q-`107$->EGpI98lD1_~ zXPhE!&!E9LP1=@0gK>tmJ!sBUT9ZMOah|j`gC^q=X-5W4#%0p_44RB9qzxG~8COX= zGiWldkv3(}V%#9D$)Lr!Nm`phi*bjvBZC&>E@^!REyg|4h74Ma`=p&2v=|Ran=)uK z9+I|Y&}KX$ZO@>?cud-sL5J~#v^|3^<0)xd23^K8()J8`jOV0n8T1%0NZT{$GhULm zWzc85B5ltQ#<)U8lOc?8m5eq+7~?t_Z-y|&4Kn%+VT_w(3>m^0x5)T1gfVWDF=Ys6 z+$E#Q5YD(qMw=m=@qmmsLpb9h8GVLu#v?L@4B?E&WPBOI8BfTVGDI+*kwl08vi1y_j6t%t44I4}vi1yFjA6323|Wj3vi1zwj4`sB4B3ov zvf2#Uj7hSN4B3n+vic0!jA^ol4B3nsvd#?Ij9Id#3^|N>vbGF4j0Ljx3^|NNvY`w) zj3u(+3^|NtvXKlqj1{uc3^|Ndvat*~j5V_H3^|N-vWW~ij198M3^|NVvZ)L?j4iV1 z47rSLvbGGlj2*J}40()QvbGF)j6JgU426s{WHlKI8E46AGZZq;k#%G!WSl3f&rry? zK-Q3{TZR@!F*$pNRz?XqTZUFfDLH$F zHbxmaTZT49IXQcVc18s`TZVQ;*VSbJIbvK?hR%XXjbADaTZDSHlkBl}+V^X%8z@3VJs-sR-u(&KXD3gt@U z%H^8L#ldaC?Zh3&oy9$adp)-TPY};+o;5tjcwX_a@@nut=KaVk%csp3&DX{^lkW)M zS-zKifB5A1ZTP(erV2<2S_?W0&J>IgN)*Z#S|g+*Y$O~doG#odd`kGD@J-=2!s;Sk zBKacqBFjYfiU^5HiaLtsh|U+?DSAj$SS(GfMeLV&tVEeayTlBMl@hxoPD|X8V3p*T zl#|q#OqR@-Y?WLrc~#O#YOU0BsjpJZ(qhsY(jn4$(nd1YGOjYdGLvMU$_UEZ$exv* zEVou}o7_>k8*-22IOTQZP2_#$%jGA?FPGmWe?|VDe7HiJLchXxgQ2?qsuF5} zYCURu)lRA1R{Nm#Urj{aOg%t-vidyrP3rH|f2#jiXVu`=5Y$l8(ATijNYNU zrfz0nmTI=yY`57FvnysF&3>9OnTwd4ncJJEnOB)NnO`)2U@m4MXHjU;Zgt1%vz4{A zv$ePNaqE}X(`}a6?6x^!bKd5T%_|!@+gRH?+bY}Fwr}h<+3&NzZ!hfN?NIHo(P5{< zH-~=?Y>xbn=8g`I362?#yB!ZZ-f?Vjn&x!Z`Ij?~i@A%3OR7tw%L11TE?-?#U2R}ZrJCBEmhoXn3hna_qM}S9! zM}kM0N0UdN#~cq+PjAm?&lb-Yo+@4@UN&AXUg=)dUVFUGdfoHd?S0hymiJF@9Ul`P z8=vz&VZQf#pZRk8dHY5Bb@|QnyYBbIkIi4wU)kTn-^oASzs7%=|2qFu{+Ipl_<#5R z@6Q&%8z35B9uO9g9#9i7CtyRsp8&2v!$9Xi@4(u?p1|3GTLbq79tms+x*ha1=wDEH zaCLBB@ZR8y!8e272YZHehD-}N9CAA3dx&MId+5H<6QQDEvSI3BK4I};nPGilGs5PF ztqeO7b}Q^d7+bhZxMsL}czSqm`1J7k;oHJbhrbQ~8vZw2Izl-jFk)`RiHIeUZzIn{ zU5ol3WfScd9UYw-of};q-5A{+JvDl6^z!J9(TAeXM$5-|#stSS#mtG>7_%j2Z_I(1 zlQ9=#ZpS>05s6iawTN|(EsJfA?T%d@yFPY%?1|V5vCMJOaawU%aV2rv;*Q2$iQ|qJ zjhBy)j-MXCI{rZX$@mNLH{&0~zli@A&z6v$urJ|5!rjE@i60Xsk`$A)l01`|lX{Y7 zCM`<3lk_aC-YL~-OQ(%|1#OK__8FkoU?qg7GBu6brFDEc3F{e1EJ7;mu_MF2xH*+55 z{LW#`70s2;)yOrl`k3vBA2n=hKyDWMvPVr#*EesCXCJuri?BO zW{fTj=8Uck7L2Y8mW=KUR*dcp){O29HjM5Jwu~MOc8nej_KY434vZcQj*K1*PK+K5 z&Ws)mE{q-wu8bZGZj2rb?u;G`9*iCgo{Sz0UW^_L-i#g$K8zj=zKk9WevBRr{)`?B z0gN6Dfs7suL5v;@!HgaZA&edjp^P33VT>LO;fx*(5sV%Tk&GS;QH)*;(Tsi!F^qu> zv5bKXag2cs@r;2C355M@P8H_=oHa|la zV-Q0&V-Q0QV-Q0wV-Q0gV-Q0=V=zMjV=zM@V=zMzV+cbrV+cbDV+cbjV+cbTV>m-O zV>m+vV>m-4V>m+&}EV>&|}V*x`wV-Z6GV<|%;V<|%uV>v@JVoX0SWaX!Or#?=gS7*{jQ zW!%6pk8u;je8x=-3m7*uEM(lwu!wOp!(ztm3`-byF)U@=!?28TFT--iy$mZD_cN?y zJixGu@c_eW#sds%7!NS4WjxHVj`1+Vdd4FR8yHV9Y-Bvgu!-?J!)C_w3|km4Fl=SK z&ajQ~I>UCxTMRoGZ!zp-yv4AK@ixP5#ybpq81FLdWxUI@&9Av!D zaES3f!(qnz3`ZF6GaO~S&v1z{Lk=;@jt_B#{Ud&82>Z8W&F?Zj`2UkdqyV44~$HV9~qe#KQS^f zer9B1{KCl0_?3~B@f#y6<99|@#vhEVj6WG!8GkWyGX7@dVf@3$$M~0#pYb0fKjVK! z0Y(NU0Y*k90Y)Y!0Y+vfSwbSSw=P{Sw?mySw;>fc}7mAE=De7W?+zo zv*h3`c{ocE&QgN2l;JE@xE-Eg7RW80U>AVQ_J)gj!^M2zV!m)Of4G=GTr3%GM;pWK z;~>)*7^c9*X2Dr&;H)ih)($x90GxFa&N>ZeorSZ`!&!IWtOsz`6FBP~lqJFN4bJ)j zWic?YFv7x=1I|)`v*O^a1jd>LkoZVoe6kthw-mT+CY+T8Ww9_+!C5tMRtw`_K}OKb zC_@Y5{w9bi9Z*>YhAud30-QAk&YA&d&4IHPz*%eHtSyYNu-^t21I6z)xY!OjYZqL0 z7hG%)SPbN@eQ>b@aMmF>>j<2649+?M)(f)j1YGPCT;hN} z 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,mK3NRDRI(T`00FvP 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

Title

Some bold text

"; +Electron.Clipboard.WriteHTML(htmlContent); + +// Read RTF content +var rtf = await Electron.Clipboard.ReadRTFAsync(); +Console.WriteLine($"RTF content: {rtf}"); +``` + +### Image Operations + +```csharp +// Read image from clipboard +var image = await Electron.Clipboard.ReadImageAsync(); +if (image != null) +{ + Console.WriteLine($"Image size: {image.Size.Width}x{image.Size.Height}"); +} + +// Write image to clipboard +var nativeImage = NativeImage.CreateFromPath("screenshot.png"); +Electron.Clipboard.WriteImage(nativeImage); +``` + +### Bookmark Management + +```csharp +// Read bookmark from clipboard +var bookmark = await Electron.Clipboard.ReadBookmarkAsync(); +if (!string.IsNullOrEmpty(bookmark.Title)) +{ + Console.WriteLine($"Bookmark: {bookmark.Title} -> {bookmark.Url}"); +} + +// Write bookmark to clipboard +Electron.Clipboard.WriteBookmark("Electron.NET", "https://github.com/ElectronNET/Electron.NET"); +``` + +### Advanced Clipboard Operations + +```csharp +// Check available formats +var formats = await Electron.Clipboard.AvailableFormatsAsync(); +Console.WriteLine($"Available formats: {string.Join(", ", formats)}"); + +// Clear clipboard +Electron.Clipboard.Clear(); + +// Write custom data +var data = new Data +{ + Text = "Custom data", + Html = "

Custom HTML

", + Image = nativeImage +}; +Electron.Clipboard.Write(data); +``` + +### macOS Find Pasteboard + +```csharp +// macOS specific find pasteboard operations +if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) +{ + // Read find text + var findText = await Electron.Clipboard.ReadFindTextAsync(); + Console.WriteLine($"Find text: {findText}"); + + // Write find text + Electron.Clipboard.WriteFindText("search term"); +} +``` + +## Related APIs + +- [Electron.Shell](Shell.md) - Work with file paths from clipboard +- [Electron.Notification](Notification.md) - Show clipboard operation results + +## Additional Resources + +- [Electron Clipboard Documentation](https://electronjs.org/docs/api/clipboard) - Official Electron clipboard API diff --git a/docs/API/Dialog.md b/docs/API/Dialog.md new file mode 100644 index 0000000..f24898f --- /dev/null +++ b/docs/API/Dialog.md @@ -0,0 +1,160 @@ +# Electron.Dialog + +Display native system dialogs for opening and saving files, alerting, etc. + +## Overview + +The `Electron.Dialog` API provides access to native system dialogs for file operations, message boxes, and certificate trust dialogs. These dialogs are modal and provide a consistent user experience across different platforms. + +## Methods + +#### 🧊 `Task ShowMessageBoxAsync(BrowserWindow browserWindow, MessageBoxOptions messageBoxOptions)` +Shows a message box, it will block the process until the message box is closed. It returns the index of the clicked button. If a callback is passed, the dialog will not block the process. + +**Parameters:** +- `browserWindow` - The browserWindow argument allows the dialog to attach itself to a parent window, making it modal. +- `messageBoxOptions` - Message content and configuration + +**Returns:** + +The API call will be asynchronous and the result will be passed via MessageBoxResult. + +#### 🧊 `Task ShowMessageBoxAsync(BrowserWindow browserWindow, string message)` +Shows a message box, it will block the process until the message box is closed. It returns the index of the clicked button. If a callback is passed, the dialog will not block the process. + +**Parameters:** +- `browserWindow` - The browserWindow argument allows the dialog to attach itself to a parent window, making it modal. +- `message` - Message content + +**Returns:** + +The API call will be asynchronous and the result will be passed via MessageBoxResult. + +#### 🧊 `Task ShowMessageBoxAsync(MessageBoxOptions messageBoxOptions)` +Shows a message box, it will block the process until the message box is closed. It returns the index of the clicked button. If a callback is passed, the dialog will not block the process. + +**Parameters:** +- `messageBoxOptions` - Message content and configuration + +**Returns:** + +The API call will be asynchronous and the result will be passed via MessageBoxResult. + +#### 🧊 `Task ShowMessageBoxAsync(string message)` +Shows a message box, it will block the process until the message box is closed. It returns the index of the clicked button. If a callback is passed, the dialog will not block the process. + +**Parameters:** +- `message` - Message content + +**Returns:** + +The API call will be asynchronous and the result will be passed via MessageBoxResult. + +#### 🧊 `Task ShowOpenDialogAsync(BrowserWindow browserWindow, OpenDialogOptions options)` +Note: On Windows and Linux an open dialog can not be both a file selector and a directory selector, so if you set properties to ['openFile', 'openDirectory'] on these platforms, a directory selector will be shown. + +**Parameters:** +- `browserWindow` - The browserWindow argument allows the dialog to attach itself to a parent window, making it modal. +- `options` - Dialog configuration options + +**Returns:** + +An array of file paths chosen by the user + +#### 🧊 `Task ShowSaveDialogAsync(BrowserWindow browserWindow, SaveDialogOptions options)` +Dialog for save files. + +**Parameters:** +- `browserWindow` - The browserWindow argument allows the dialog to attach itself to a parent window, making it modal. +- `options` - Dialog configuration options + +**Returns:** + +Returns String, the path of the file chosen by the user, if a callback is provided it returns an empty string. + +#### 🧊 `void ShowErrorBox(string title, string content)` +Displays a modal dialog that shows an error message. + +This API can be called safely before the ready event the app module emits, it is usually used to report errors in early stage of startup.If called before the app readyevent on Linux, the message will be emitted to stderr, and no GUI dialog will appear. + +**Parameters:** +- `title` - The title to display in the error box. +- `content` - The text content to display in the error box. + +#### 🧊 `Task ShowCertificateTrustDialogAsync(BrowserWindow browserWindow, CertificateTrustDialogOptions options)` +On macOS, this displays a modal dialog that shows a message and certificate information, and gives the user the option of trusting/importing the certificate. If you provide a browserWindow argument the dialog will be attached to the parent window, making it modal. + +**Parameters:** +- `browserWindow` - Parent window for modal behavior +- `options` - Certificate trust dialog options + +#### 🧊 `Task ShowCertificateTrustDialogAsync(CertificateTrustDialogOptions options)` +On macOS, this displays a modal dialog that shows a message and certificate information, and gives the user the option of trusting/importing the certificate. If you provide a browserWindow argument the dialog will be attached to the parent window, making it modal. + +**Parameters:** +- `options` - Certificate trust dialog options + +## Usage Examples + +### File Operations + +```csharp +// Open multiple files +var files = await Electron.Dialog.ShowOpenDialogAsync(window, new OpenDialogOptions +{ + Properties = new[] { OpenDialogProperty.OpenFile, OpenDialogProperty.MultiSelections } +}); + +// Save with custom extension +var path = await Electron.Dialog.ShowSaveDialogAsync(window, new SaveDialogOptions +{ + DefaultPath = "backup.json", + Filters = new[] { new FileFilter { Name = "JSON", Extensions = new[] { "json" } } } +}); +``` + +### User Confirmation + +```csharp +// Confirmation dialog +var result = await Electron.Dialog.ShowMessageBoxAsync(window, new MessageBoxOptions +{ + Type = MessageBoxType.Question, + Title = "Confirm Delete", + Message = $"Delete {filename}?", + Buttons = new[] { "Cancel", "Delete" }, + DefaultId = 0, + CancelId = 0 +}); + +if (result.Response == 1) +{ + // Delete file +} +``` + +### Error Handling + +```csharp +// Error dialog +Electron.Dialog.ShowErrorBox("Save Failed", "Could not save file. Please check permissions and try again."); + +// Warning dialog +await Electron.Dialog.ShowMessageBoxAsync(new MessageBoxOptions +{ + Type = MessageBoxType.Warning, + Title = "Warning", + Message = "This operation may take several minutes.", + Buttons = new[] { "Continue", "Cancel" } +}); +``` + +## Related APIs + +- [Electron.WindowManager](WindowManager.md) - Parent windows for modal dialogs +- [Electron.App](App.md) - Application lifecycle events +- [Electron.Shell](Shell.md) - File operations with selected paths + +## Additional Resources + +- [Electron Dialog Documentation](https://electronjs.org/docs/api/dialog) - Official Electron dialog API diff --git a/docs/API/Dock.md b/docs/API/Dock.md new file mode 100644 index 0000000..8231cff --- /dev/null +++ b/docs/API/Dock.md @@ -0,0 +1,209 @@ +# Electron.Dock + +Control your app in the macOS dock. + +## Overview + +The `Electron.Dock` API provides control over your application's appearance and behavior in the macOS dock. This includes bouncing the dock icon, setting badges, managing menus, and controlling visibility. + +## Properties + +#### 📋 `IReadOnlyCollection MenuItems` +Gets a read-only collection of all current dock menu items. + +## Methods + +#### 🧊 `Task BounceAsync(DockBounceType type, CancellationToken cancellationToken = default)` +When `DockBounceType.Critical` is passed, the dock icon will bounce until either the application becomes active or the request is canceled. When `DockBounceType.Informational` is passed, the dock icon will bounce for one second. However, the request remains active until either the application becomes active or the request is canceled. + +Note: This method can only be used while the app is not focused; when the app is focused it will return -1. + +**Parameters:** +- `type` - Can be critical or informational. The default is informational. +- `cancellationToken` - The cancellation token + +**Returns:** + +An ID representing the request. + +#### 🧊 `void CancelBounce(int id)` +Cancel the bounce of id. + +**Parameters:** +- `id` - Id of the request + +#### 🧊 `void DownloadFinished(string filePath)` +Bounces the Downloads stack if the filePath is inside the Downloads folder. + +**Parameters:** +- `filePath` - Path to the downloaded file + +#### 🧊 `Task GetBadgeAsync(CancellationToken cancellationToken = default)` +Gets the string to be displayed in the dock's badging area. + +**Returns:** + +The badge string of the dock. + +#### 🧊 `Task GetMenu(CancellationToken cancellationToken = default)` +Gets the application's dock menu. + +**Returns:** + +The application's dock menu. + +#### 🧊 `void Hide()` +Hides the dock icon. + +#### 🧊 `Task IsVisibleAsync(CancellationToken cancellationToken = default)` +Whether the dock icon is visible. The app.dock.show() call is asynchronous so this method might not return true immediately after that call. + +**Returns:** + +Whether the dock icon is visible. + +#### 🧊 `void SetBadge(string text)` +Sets the string to be displayed in the dock's badging area. + +**Parameters:** +- `text` - Badge text to display + +#### 🧊 `void SetIcon(string image)` +Sets the image associated with this dock icon. + +**Parameters:** +- `image` - Icon image path + +#### 🧊 `void SetMenu(MenuItem[] menuItems)` +Sets the application's dock menu. + +**Parameters:** +- `menuItems` - Array of menu items for the dock menu + +#### 🧊 `void Show()` +Shows the dock icon. + +## Usage Examples + +### Basic Dock Operations + +```csharp +// Hide/Show dock icon +Electron.Dock.Hide(); +await Task.Delay(2000); +Electron.Dock.Show(); + +// Check visibility +var isVisible = await Electron.Dock.IsVisibleAsync(); +Console.WriteLine($"Dock visible: {isVisible}"); +``` + +### Badge Notifications + +```csharp +// Set badge count +Electron.Dock.SetBadge("5"); + +// Get current badge +var badge = await Electron.Dock.GetBadgeAsync(); +Console.WriteLine($"Current badge: {badge}"); + +// Clear badge +Electron.Dock.SetBadge(""); +``` + +### Dock Icon Animation + +```csharp +// Bounce for attention +var bounceId = await Electron.Dock.BounceAsync(DockBounceType.Critical); +Console.WriteLine($"Bounce ID: {bounceId}"); + +// Cancel bounce after 3 seconds +await Task.Delay(3000); +Electron.Dock.CancelBounce(bounceId); + +// Informational bounce +await Electron.Dock.BounceAsync(DockBounceType.Informational); +``` + +### Dock Menu + +```csharp +// Create dock menu +var dockMenuItems = new[] +{ + new MenuItem { Label = "Show Window", Click = () => ShowMainWindow() }, + new MenuItem { Label = "Settings", Click = () => OpenSettings() }, + new MenuItem { Type = MenuType.Separator }, + new MenuItem { Label = "Exit", Click = () => Electron.App.Quit() } +}; + +// Set dock menu +Electron.Dock.SetMenu(dockMenuItems); + +// Get current menu +var currentMenu = await Electron.Dock.GetMenu(); +Console.WriteLine($"Menu items: {Electron.Dock.MenuItems.Count}"); +``` + +### Download Notifications + +```csharp +// Notify about completed download +var downloadPath = "/Users/username/Downloads/document.pdf"; +Electron.Dock.DownloadFinished(downloadPath); +``` + +### Custom Dock Icon + +```csharp +// Set custom dock icon +Electron.Dock.SetIcon("assets/custom-dock-icon.png"); + +// Set icon based on status +if (isConnected) +{ + Electron.Dock.SetIcon("assets/connected-icon.png"); +} +else +{ + Electron.Dock.SetIcon("assets/disconnected-icon.png"); +} +``` + +### Application Integration + +```csharp +// Update dock badge based on unread count +UpdateDockBadge(unreadMessageCount); + +void UpdateDockBadge(int count) +{ + if (count > 0) + { + Electron.Dock.SetBadge(count.ToString()); + } + else + { + Electron.Dock.SetBadge(""); + } +} + +// Animate dock when receiving message +private async void OnMessageReceived() +{ + await Electron.Dock.BounceAsync(DockBounceType.Informational); + Electron.Dock.SetBadge((unreadCount + 1).ToString()); +} +``` + +## Related APIs + +- [Electron.App](App.md) - Application lifecycle events +- [Electron.Notification](Notification.md) - Desktop notifications +- [Electron.Menu](Menu.md) - Menu items for dock menu + +## Additional Resources + +- [Electron Dock Documentation](https://electronjs.org/docs/api/dock) - Official Electron dock API diff --git a/docs/API/GlobalShortcut.md b/docs/API/GlobalShortcut.md new file mode 100644 index 0000000..34ca008 --- /dev/null +++ b/docs/API/GlobalShortcut.md @@ -0,0 +1,189 @@ +# Electron.GlobalShortcut + +Register global keyboard shortcuts that work even when the application is not focused. + +## Overview + +The `Electron.GlobalShortcut` API provides the ability to register global keyboard shortcuts that can be triggered even when the application does not have keyboard focus. This is useful for creating system-wide hotkeys and shortcuts. + +## Methods + +#### 🧊 `Task IsRegisteredAsync(string accelerator)` +Check if the accelerator is registered. + +**Parameters:** +- `accelerator` - Keyboard shortcut to check + +**Returns:** + +Whether this application has registered the accelerator. + +#### 🧊 `void Register(string accelerator, Action function)` +Registers a global shortcut of accelerator. The callback is called when the registered shortcut is pressed by the user. + +**Parameters:** +- `accelerator` - Keyboard shortcut combination +- `function` - Callback function to execute when shortcut is pressed + +#### 🧊 `void Unregister(string accelerator)` +Unregisters the global shortcut of accelerator. + +**Parameters:** +- `accelerator` - Keyboard shortcut to unregister + +#### 🧊 `void UnregisterAll()` +Unregisters all of the global shortcuts. + +## Usage Examples + +### Basic Global Shortcuts + +```csharp +// Register global shortcuts +Electron.GlobalShortcut.Register("CommandOrControl+N", () => +{ + CreateNewDocument(); +}); + +Electron.GlobalShortcut.Register("CommandOrControl+O", () => +{ + OpenDocument(); +}); + +Electron.GlobalShortcut.Register("CommandOrControl+S", () => +{ + SaveDocument(); +}); +``` + +### Media Control Shortcuts + +```csharp +// Media playback shortcuts +Electron.GlobalShortcut.Register("MediaPlayPause", () => +{ + TogglePlayback(); +}); + +Electron.GlobalShortcut.Register("MediaNextTrack", () => +{ + NextTrack(); +}); + +Electron.GlobalShortcut.Register("MediaPreviousTrack", () => +{ + PreviousTrack(); +}); +``` + +### Application Control Shortcuts + +```csharp +// Application control shortcuts +Electron.GlobalShortcut.Register("CommandOrControl+Shift+Q", async () => +{ + var result = await Electron.Dialog.ShowMessageBoxAsync("Quit Application?", "Are you sure you want to quit?"); + if (result.Response == 1) // Yes + { + Electron.App.Quit(); + } +}); + +Electron.GlobalShortcut.Register("CommandOrControl+Shift+H", () => +{ + ToggleMainWindow(); +}); +``` + +### Dynamic Shortcut Management + +```csharp +// Register shortcuts based on user preferences +public void RegisterUserShortcuts(Dictionary shortcuts) +{ + foreach (var shortcut in shortcuts) + { + Electron.GlobalShortcut.Register(shortcut.Key, shortcut.Value); + } +} + +// Check if shortcut is available +public async Task IsShortcutAvailable(string accelerator) +{ + return await Electron.GlobalShortcut.IsRegisteredAsync(accelerator); +} + +// Unregister specific shortcut +public void UnregisterShortcut(string accelerator) +{ + Electron.GlobalShortcut.Unregister(accelerator); +} +``` + +### Platform-Specific Shortcuts + +```csharp +// macOS specific shortcuts +if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) +{ + Electron.GlobalShortcut.Register("Command+Comma", () => + { + OpenPreferences(); + }); + + Electron.GlobalShortcut.Register("Command+H", () => + { + Electron.App.Hide(); + }); +} + +// Windows/Linux shortcuts +else +{ + Electron.GlobalShortcut.Register("Ctrl+Shift+P", () => + { + OpenPreferences(); + }); + + Electron.GlobalShortcut.Register("Alt+F4", () => + { + Electron.App.Quit(); + }); +} +``` + +### Shortcut Validation + +```csharp +// Validate shortcuts before registration +public async Task TryRegisterShortcut(string accelerator, Action callback) +{ + if (await Electron.GlobalShortcut.IsRegisteredAsync(accelerator)) + { + Console.WriteLine($"Shortcut {accelerator} is already registered"); + return false; + } + + try + { + Electron.GlobalShortcut.Register(accelerator, callback); + Console.WriteLine($"Successfully registered shortcut: {accelerator}"); + return true; + } + catch (Exception ex) + { + Console.WriteLine($"Failed to register shortcut {accelerator}: {ex.Message}"); + return false; + } +} +``` + +## Related APIs + +- [Electron.App](App.md) - Application lifecycle events +- [Electron.Menu](Menu.md) - Menu-based shortcuts +- [Electron.WindowManager](WindowManager.md) - Window focus management + +## Additional Resources + +- [Electron GlobalShortcut Documentation](https://electronjs.org/docs/api/global-shortcut) - Official Electron global shortcut API diff --git a/docs/API/HostHook.md b/docs/API/HostHook.md new file mode 100644 index 0000000..e0d5807 --- /dev/null +++ b/docs/API/HostHook.md @@ -0,0 +1,152 @@ +# Electron.HostHook + +Execute native JavaScript/TypeScript code from the host process. + +## Overview + +The `Electron.HostHook` API allows you to execute native JavaScript/TypeScript code from the host process. This enables advanced integration scenarios where you need to run custom JavaScript code or access Node.js APIs directly. + +## Methods + +#### 🧊 `void Call(string socketEventName, params dynamic[] arguments)` +Execute native JavaScript/TypeScript code synchronously. + +**Parameters:** +- `socketEventName` - Socket name registered on the host +- `arguments` - Optional parameters + +#### 🧊 `Task CallAsync(string socketEventName, params dynamic[] arguments)` +Execute native JavaScript/TypeScript code asynchronously with type-safe return values. + +**Parameters:** +- `T` - Expected return type +- `socketEventName` - Socket name registered on the host +- `arguments` - Optional parameters + +**Returns:** + +Task with the result from the executed host code. + +## Usage Examples + +### Basic Host Hook Execution + +```csharp +// Execute simple JavaScript function +Electron.HostHook.Call("myFunction", "parameter1", 42); + +// Execute with callback-style result +var result = await Electron.HostHook.CallAsync("getUserName", userId); +Console.WriteLine($"User name: {result}"); +``` + +### Advanced Integration + +```csharp +// Call custom Electron API +var fileContent = await Electron.HostHook.CallAsync("readFile", "config.json"); +Console.WriteLine($"Config: {fileContent}"); + +// Execute with multiple parameters +var processedData = await Electron.HostHook.CallAsync("processData", rawData, options); + +// Call with complex objects +var settings = new { theme = "dark", language = "en" }; +var updatedSettings = await Electron.HostHook.CallAsync("updateSettings", settings); +``` + +### Error Handling + +```csharp +try +{ + // Execute host function with error handling + var result = await Electron.HostHook.CallAsync("riskyOperation", inputData); + Console.WriteLine($"Success: {result}"); +} +catch (Exception ex) +{ + // Handle execution errors + Console.WriteLine($"Host hook error: {ex.Message}"); + Electron.Dialog.ShowErrorBox("Operation Failed", "Could not execute host function."); +} +``` + +### Type-Safe Operations + +```csharp +// Strongly typed return values +var userInfo = await Electron.HostHook.CallAsync("getUserInfo", userId); +Console.WriteLine($"User: {userInfo.Name}, Email: {userInfo.Email}"); + +// Array results +var fileList = await Electron.HostHook.CallAsync("listFiles", directoryPath); +foreach (var file in fileList) +{ + Console.WriteLine($"File: {file}"); +} + +// Complex object results +var systemStats = await Electron.HostHook.CallAsync("getSystemStats"); +Console.WriteLine($"CPU: {systemStats.CpuUsage}%, Memory: {systemStats.MemoryUsage}%"); +``` + +### Custom ElectronHostHook Setup + +```csharp +// In your ElectronHostHook/index.ts +import { app } from 'electron'; + +export function getAppVersion(): string { + return app.getVersion(); +} + +export async function readConfigFile(): Promise { + const fs = require('fs').promises; + return await fs.readFile('config.json', 'utf8'); +} + +export function customNotification(message: string): void { + // Custom notification logic + console.log(`Custom notification: ${message}`); +} +``` + +### Integration with .NET Code + +```csharp +// Use host hook in your application logic +public async Task GetApplicationVersion() +{ + return await Electron.HostHook.CallAsync("getAppVersion"); +} + +public async Task LoadConfiguration() +{ + try + { + var config = await Electron.HostHook.CallAsync("readConfigFile"); + ApplyConfiguration(config); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to load config: {ex.Message}"); + UseDefaultConfiguration(); + } +} + +public void ShowCustomNotification(string message) +{ + Electron.HostHook.Call("customNotification", message); +} +``` + +## Related APIs + +- [Electron.IpcMain](IpcMain.md) - Inter-process communication +- [Electron.App](App.md) - Application lifecycle events +- [Electron.WebContents](WebContents.md) - Web content integration + +## Additional Resources + +- [Host Hook Documentation](../Core/Advanced-Migration-Topics.md) - Setting up custom host hooks diff --git a/docs/API/IpcMain.md b/docs/API/IpcMain.md new file mode 100644 index 0000000..af1cc56 --- /dev/null +++ b/docs/API/IpcMain.md @@ -0,0 +1,167 @@ +# Electron.IpcMain + +Communicate asynchronously from the main process to renderer processes. + +## Overview + +The `Electron.IpcMain` API provides inter-process communication between the main process and renderer processes. It allows you to send messages, listen for events, and handle communication between different parts of your Electron application. + +## Methods + +#### 🧊 `Task On(string channel, Action listener)` +Listens to channel, when a new message arrives listener would be called with listener(event, args...). + +**Parameters:** +- `channel` - Channel name to listen on +- `listener` - Callback method to handle incoming messages + +#### 🧊 `void OnSync(string channel, Func listener)` +Send a message to the renderer process synchronously via channel. Note: Sending a synchronous message will block the whole renderer process. + +**Parameters:** +- `channel` - Channel name to listen on +- `listener` - Synchronous callback method + +#### 🧊 `void Once(string channel, Action listener)` +Adds a one time listener method for the event. This listener is invoked only the next time a message is sent to channel, after which it is removed. + +**Parameters:** +- `channel` - Channel name to listen on +- `listener` - Callback method to handle the message once + +#### 🧊 `void RemoveAllListeners(string channel)` +Removes all listeners of the specified channel. + +**Parameters:** +- `channel` - Channel name to remove listeners from + +#### 🧊 `void Send(BrowserView browserView, string channel, params object[] data)` +Send a message to the BrowserView renderer process asynchronously via channel. + +**Parameters:** +- `browserView` - Target browser view +- `channel` - Channel name to send on +- `data` - Arguments to send + +#### 🧊 `void Send(BrowserWindow browserWindow, string channel, params object[] data)` +Send a message to the renderer process asynchronously via channel. + +**Parameters:** +- `browserWindow` - Target browser window +- `channel` - Channel name to send on +- `data` - Arguments to send + +## Usage Examples + +### Basic Message Handling + +```csharp +// Listen for messages from renderer +await Electron.IpcMain.On("request-data", (args) => +{ + Console.WriteLine($"Received request: {args}"); + // Process the request and send response +}); + +// Send response back to renderer +Electron.IpcMain.Send(mainWindow, "data-response", processedData); +``` + +### Synchronous Communication + +```csharp +// Handle synchronous requests +Electron.IpcMain.OnSync("get-user-info", (request) => +{ + var userId = request.ToString(); + var userInfo = GetUserInfo(userId); + return userInfo; +}); +``` + +### One-time Event Handling + +```csharp +// Handle initialization request once +Electron.IpcMain.Once("app-initialized", (args) => +{ + Console.WriteLine("App initialized, setting up..."); + InitializeApplication(); +}); +``` + +### Complex Data Exchange + +```csharp +// Send complex data to renderer +var appData = new +{ + Version = "1.0.0", + Features = new[] { "feature1", "feature2" }, + Settings = new { Theme = "dark", Language = "en" } +}; + +Electron.IpcMain.Send(mainWindow, "app-config", appData); + +// Listen for settings updates +await Electron.IpcMain.On("update-settings", (settings) => +{ + var config = JsonConvert.DeserializeObject(settings.ToString()); + ApplySettings(config); +}); +``` + +### Multi-Window Communication + +```csharp +// Send message to specific window +var settingsWindow = await Electron.WindowManager.CreateWindowAsync(); +Electron.IpcMain.Send(settingsWindow, "show-settings", currentSettings); + +// Broadcast to all windows +foreach (var window in Electron.WindowManager.BrowserWindows) +{ + Electron.IpcMain.Send(window, "notification", message); +} +``` + +### Error Handling + +```csharp +// Handle IPC errors gracefully +await Electron.IpcMain.On("risky-operation", async (args) => +{ + try + { + var result = await PerformRiskyOperation(args); + Electron.IpcMain.Send(mainWindow, "operation-success", result); + } + catch (Exception ex) + { + Electron.IpcMain.Send(mainWindow, "operation-error", ex.Message); + } +}); +``` + +### Integration with Host Hooks + +```csharp +// Use with custom host functionality +await Electron.IpcMain.On("execute-host-function", async (args) => +{ + var functionName = args.ToString(); + var result = await Electron.HostHook.CallAsync(functionName); + + Electron.IpcMain.Send(mainWindow, "function-result", result); +}); +``` + +## Related APIs + +- [Electron.HostHook](HostHook.md) - Execute custom JavaScript functions +- [Electron.WindowManager](WindowManager.md) - Target specific windows for communication +- [Electron.WebContents](WebContents.md) - Send messages to web content + +## Additional Resources + +- [Electron IPC Documentation](https://electronjs.org/docs/api/ipc-main) - Official Electron IPC API diff --git a/docs/API/Menu.md b/docs/API/Menu.md new file mode 100644 index 0000000..525922c --- /dev/null +++ b/docs/API/Menu.md @@ -0,0 +1,210 @@ +# Electron.Menu + +Create application menus, context menus, and menu items with full keyboard shortcut support. + +## Overview + +The `Electron.Menu` API provides comprehensive control over application menus and context menus. It supports native platform menus with custom menu items, submenus, keyboard shortcuts, and role-based menu items. + +## Properties + +#### 📋 `IReadOnlyDictionary> ContextMenuItems` +Gets a read-only dictionary of all current context menu items, keyed by browser window ID. + +#### 📋 `IReadOnlyCollection MenuItems` +Gets a read-only collection of all current application menu items. + +## Methods + +#### 🧊 `void ContextMenuPopup(BrowserWindow browserWindow)` +Shows the context menu for the specified browser window. + +**Parameters:** +- `browserWindow` - The browser window to show the context menu for + +#### 🧊 `void SetApplicationMenu(MenuItem[] menuItems)` +Sets the application menu for the entire application. + +**Parameters:** +- `menuItems` - Array of MenuItem objects defining the application menu + +#### 🧊 `void SetContextMenu(BrowserWindow browserWindow, MenuItem[] menuItems)` +Sets a context menu for a specific browser window. + +**Parameters:** +- `browserWindow` - The browser window to attach the context menu to +- `menuItems` - Array of MenuItem objects defining the context menu + +## Usage Examples + +### Application Menu + +```csharp +// Create application menu +var menuItems = new[] +{ + new MenuItem + { + Label = "File", + Submenu = new[] + { + new MenuItem { Label = "New", Click = () => CreateNewDocument() }, + new MenuItem { Label = "Open", Click = () => OpenDocument() }, + new MenuItem { Type = MenuType.Separator }, + new MenuItem { Label = "Exit", Click = () => Electron.App.Quit() } + } + }, + new MenuItem + { + Label = "Edit", + Submenu = new[] + { + new MenuItem { Role = MenuRole.Undo }, + new MenuItem { Role = MenuRole.Redo }, + new MenuItem { Type = MenuType.Separator }, + new MenuItem { Role = MenuRole.Cut }, + new MenuItem { Role = MenuRole.Copy }, + new MenuItem { Role = MenuRole.Paste } + } + }, + new MenuItem + { + Label = "View", + Submenu = new[] + { + new MenuItem { Role = MenuRole.Reload }, + new MenuItem { Role = MenuRole.ForceReload }, + new MenuItem { Role = MenuRole.ToggleDevTools }, + new MenuItem { Type = MenuType.Separator }, + new MenuItem { Role = MenuRole.ResetZoom }, + new MenuItem { Role = MenuRole.ZoomIn }, + new MenuItem { Role = MenuRole.ZoomOut } + } + }, + new MenuItem + { + Label = "Window", + Submenu = new[] + { + new MenuItem { Role = MenuRole.Minimize }, + new MenuItem { Role = MenuRole.Close } + } + } +}; + +// Set application menu +Electron.Menu.SetApplicationMenu(menuItems); +``` + +### Context Menu + +```csharp +// Create context menu for specific window +var contextMenuItems = new[] +{ + new MenuItem { Label = "Copy", Click = () => CopySelectedText() }, + new MenuItem { Label = "Paste", Click = () => PasteText() }, + new MenuItem { Type = MenuType.Separator }, + new MenuItem { Label = "Inspect Element", Click = () => InspectElement() } +}; + +// Set context menu for window +Electron.Menu.SetContextMenu(mainWindow, contextMenuItems); + +// Show context menu programmatically +Electron.Menu.ContextMenuPopup(mainWindow); +``` + +### Menu with Keyboard Shortcuts + +```csharp +// Create menu with keyboard shortcuts +var menuItems = new[] +{ + new MenuItem + { + Label = "File", + Submenu = new[] + { + new MenuItem + { + Label = "New", + Accelerator = "CmdOrCtrl+N", + Click = () => CreateNewDocument() + }, + new MenuItem + { + Label = "Open", + Accelerator = "CmdOrCtrl+O", + Click = () => OpenDocument() + }, + new MenuItem + { + Label = "Save", + Accelerator = "CmdOrCtrl+S", + Click = () => SaveDocument() + } + } + } +}; + +Electron.Menu.SetApplicationMenu(menuItems); +``` + +### Dynamic Menu Updates + +```csharp +// Update menu items dynamically +var fileMenu = Electron.Menu.MenuItems.FirstOrDefault(m => m.Label == "File"); +if (fileMenu?.Submenu != null) +{ + var saveItem = fileMenu.Submenu.FirstOrDefault(m => m.Label == "Save"); + if (saveItem != null) + { + saveItem.Enabled = HasUnsavedChanges; + } +} +``` + +### Platform-Specific Menus + +```csharp +// macOS specific menu items +if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) +{ + var macMenuItems = new[] + { + new MenuItem + { + Label = "MyApp", + Submenu = new[] + { + new MenuItem { Role = MenuRole.About }, + new MenuItem { Type = MenuType.Separator }, + new MenuItem { Role = MenuRole.Services }, + new MenuItem { Type = MenuType.Separator }, + new MenuItem { Role = MenuRole.Hide }, + new MenuItem { Role = MenuRole.HideOthers }, + new MenuItem { Role = MenuRole.Unhide }, + new MenuItem { Type = MenuType.Separator }, + new MenuItem { Role = MenuRole.Quit } + } + } + }; + + // Insert before File menu + var allMenus = new List(macMenuItems); + allMenus.AddRange(menuItems); + Electron.Menu.SetApplicationMenu(allMenus.ToArray()); +} +``` + +## Related APIs + +- [Electron.WindowManager](WindowManager.md) - Windows for context menus +- [Electron.App](App.md) - Application lifecycle events +- [Electron.GlobalShortcut](GlobalShortcut.md) - Global keyboard shortcuts + +## Additional Resources + +- [Electron Menu Documentation](https://electronjs.org/docs/api/menu) - Official Electron menu API diff --git a/docs/API/NativeTheme.md b/docs/API/NativeTheme.md new file mode 100644 index 0000000..e00f704 --- /dev/null +++ b/docs/API/NativeTheme.md @@ -0,0 +1,189 @@ +# Electron.NativeTheme + +Detect and respond to changes in Chromium's native color theme. + +## Overview + +The `Electron.NativeTheme` API provides access to Chromium's native color theme information and allows you to detect and respond to changes in the system's dark/light mode settings. This enables your application to automatically adapt to the user's theme preferences. + +## Methods + +#### 🧊 `Task GetThemeSourceAsync()` +Get the current theme source setting. + +**Returns:** + +A `ThemeSourceMode` property that can be `ThemeSourceMode.System`, `ThemeSourceMode.Light` or `ThemeSourceMode.Dark`. + +#### 🧊 `void SetThemeSource(ThemeSourceMode themeSourceMode)` +Setting this property to `ThemeSourceMode.System` will remove the override and everything will be reset to the OS default. By default 'ThemeSource' is `ThemeSourceMode.System`. + +**Parameters:** +- `themeSourceMode` - The new ThemeSource + +#### 🧊 `Task ShouldUseDarkColorsAsync()` +Check if the system is currently using dark colors. + +**Returns:** + +A bool for if the OS / Chromium currently has a dark mode enabled or is being instructed to show a dark-style UI. + +#### 🧊 `Task ShouldUseHighContrastColorsAsync()` +Check if the system is currently using high contrast colors. + +**Returns:** + +A bool for if the OS / Chromium currently has high-contrast mode enabled or is being instructed to show a high-contrast UI. + +#### 🧊 `Task ShouldUseInvertedColorSchemeAsync()` +Check if the system is currently using an inverted color scheme. + +**Returns:** + +A bool for if the OS / Chromium currently has an inverted color scheme or is being instructed to use an inverted color scheme. + +## Events + +#### ⚡ `Updated` +Emitted when something in the underlying NativeTheme has changed. This normally means that either the value of ShouldUseDarkColorsAsync, ShouldUseHighContrastColorsAsync or ShouldUseInvertedColorSchemeAsync has changed. + +## Usage Examples + +### Basic Theme Detection + +```csharp +// Check current theme +var isDarkMode = await Electron.NativeTheme.ShouldUseDarkColorsAsync(); +Console.WriteLine($"Dark mode: {isDarkMode}"); + +// Get current theme source +var themeSource = await Electron.NativeTheme.GetThemeSourceAsync(); +Console.WriteLine($"Theme source: {themeSource}"); +``` + +### Theme Change Monitoring + +```csharp +// Monitor theme changes +Electron.NativeTheme.Updated += () => +{ + Console.WriteLine("Theme updated"); + UpdateApplicationTheme(); +}; + +async void UpdateApplicationTheme() +{ + var isDarkMode = await Electron.NativeTheme.ShouldUseDarkColorsAsync(); + var isHighContrast = await Electron.NativeTheme.ShouldUseHighContrastColorsAsync(); + + // Update application appearance + ApplyTheme(isDarkMode, isHighContrast); +} +``` + +### Manual Theme Control + +```csharp +// Force dark theme +Electron.NativeTheme.SetThemeSource(ThemeSourceMode.Dark); + +// Force light theme +Electron.NativeTheme.SetThemeSource(ThemeSourceMode.Light); + +// Follow system theme +Electron.NativeTheme.SetThemeSource(ThemeSourceMode.System); +``` + +### Application Theme Integration + +```csharp +public async Task InitializeThemeSupport() +{ + // Set initial theme based on system preference + var isDarkMode = await Electron.NativeTheme.ShouldUseDarkColorsAsync(); + ApplyTheme(isDarkMode); + + // Monitor theme changes + Electron.NativeTheme.Updated += async () => + { + var darkMode = await Electron.NativeTheme.ShouldUseDarkColorsAsync(); + ApplyTheme(darkMode); + }; +} + +private void ApplyTheme(bool isDarkMode) +{ + if (isDarkMode) + { + // Apply dark theme + SetDarkThemeColors(); + UpdateWindowTheme("dark"); + } + else + { + // Apply light theme + SetLightThemeColors(); + UpdateWindowTheme("light"); + } +} +``` + +### Advanced Theme Management + +```csharp +// Check all theme properties +var isDarkMode = await Electron.NativeTheme.ShouldUseDarkColorsAsync(); +var isHighContrast = await Electron.NativeTheme.ShouldUseHighContrastColorsAsync(); +var isInverted = await Electron.NativeTheme.ShouldUseInvertedColorSchemeAsync(); + +Console.WriteLine($"Dark mode: {isDarkMode}"); +Console.WriteLine($"High contrast: {isHighContrast}"); +Console.WriteLine($"Inverted: {isInverted}"); + +// Apply appropriate theme +if (isHighContrast) +{ + ApplyHighContrastTheme(); +} +else if (isDarkMode) +{ + ApplyDarkTheme(); +} +else +{ + ApplyLightTheme(); +} +``` + +### Theme-Aware Window Creation + +```csharp +// Create window with theme-appropriate settings +var isDarkMode = await Electron.NativeTheme.ShouldUseDarkColorsAsync(); + +var windowOptions = new BrowserWindowOptions +{ + Width = 1200, + Height = 800, + Title = "My Application", + BackgroundColor = isDarkMode ? "#1a1a1a" : "#ffffff", + WebPreferences = new WebPreferences + { + // Additional web preferences based on theme + } +}; + +var window = await Electron.WindowManager.CreateWindowAsync(windowOptions); +``` + +## Related APIs + +- [Electron.WindowManager](WindowManager.md) - Apply theme to windows +- [Electron.Screen](Screen.md) - Screen-related theme considerations +- [Electron.App](App.md) - Application-level theme events + +## Additional Resources + +- [Electron NativeTheme Documentation](https://electronjs.org/docs/api/native-theme) - Official Electron native theme API +- [Theme Support](../Core/What's-New.md) - Understanding theme functionality +- [User Experience](../Using/Configuration.md) - Design theme-aware applications diff --git a/docs/API/Notification.md b/docs/API/Notification.md new file mode 100644 index 0000000..4d4ead7 --- /dev/null +++ b/docs/API/Notification.md @@ -0,0 +1,164 @@ +# Electron.Notification + +Show native desktop notifications with custom content and actions. + +## Overview + +The `Electron.Notification` API provides the ability to show native desktop notifications with custom titles, bodies, icons, and actions. Notifications work across Windows, macOS, and Linux with platform-specific behavior. + +## Methods + +#### 🧊 `Task IsSupportedAsync()` +Check if desktop notifications are supported on the current platform. + +**Returns:** + +Whether or not desktop notifications are supported on the current system. + +#### 🧊 `void Show(NotificationOptions notificationOptions)` +Create OS desktop notifications with the specified options. + +**Parameters:** +- `notificationOptions` - Notification configuration options + +## Usage Examples + +### Basic Notification + +```csharp +// Simple notification +Electron.Notification.Show(new NotificationOptions +{ + Title = "My Application", + Body = "This is a notification message", + Icon = "assets/notification-icon.png" +}); +``` + +### Notification with Actions + +```csharp +// Notification with reply action +Electron.Notification.Show(new NotificationOptions +{ + Title = "New Message", + Body = "You have a new message from John", + Icon = "assets/message-icon.png", + Actions = new[] + { + new NotificationAction { Text = "Reply", Type = NotificationActionType.Button }, + new NotificationAction { Text = "View", Type = NotificationActionType.Button } + }, + OnClick = () => OpenMessageWindow(), + OnAction = (action) => + { + if (action == "Reply") + { + ShowReplyDialog(); + } + else if (action == "View") + { + OpenMessageWindow(); + } + } +}); +``` + +### Rich Notifications + +```csharp +// Rich notification with all options +Electron.Notification.Show(new NotificationOptions +{ + Title = "Download Complete", + Subtitle = "Your file has finished downloading", + Body = "document.pdf has been downloaded to your Downloads folder.", + Icon = "assets/download-icon.png", + ImageUrl = "file://" + Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "assets/preview.png"), + Sound = NotificationSound.Default, + Urgency = NotificationUrgency.Normal, + Category = "transfer.complete", + Tag = "download-123", + Actions = new[] + { + new NotificationAction { Text = "Open", Type = NotificationActionType.Button }, + new NotificationAction { Text = "Show in Folder", Type = NotificationActionType.Button } + }, + OnShow = () => Console.WriteLine("Notification shown"), + OnClick = () => OpenDownloadedFile(), + OnClose = () => Console.WriteLine("Notification closed"), + OnAction = (action) => + { + if (action == "Open") + { + OpenDownloadedFile(); + } + else if (action == "Show in Folder") + { + ShowInFolder(); + } + } +}); +``` + +### Platform-Specific Notifications + +```csharp +// Windows toast notification +if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) +{ + Electron.Notification.Show(new NotificationOptions + { + Title = "Background Task", + Body = "Your backup is complete", + Icon = "assets/app-icon.ico", + Tag = "backup-complete", + RequireInteraction = true + }); +} + +// macOS notification with sound +else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) +{ + Electron.Notification.Show(new NotificationOptions + { + Title = "Alert", + Body = "Something needs your attention", + Sound = NotificationSound.Default, + Actions = new[] + { + new NotificationAction { Text = "View", Type = NotificationActionType.Button } + } + }); +} +``` + +### Notification Management + +```csharp +// Check notification support +var isSupported = await Electron.Notification.IsSupportedAsync(); +Console.WriteLine($"Notifications supported: {isSupported}"); + +// Create notification with events +var notification = new NotificationOptions +{ + Title = "Task Complete", + Body = "Your long-running task has finished", + OnShow = () => Console.WriteLine("Notification displayed"), + OnClick = () => OpenTaskResults(), + OnClose = () => Console.WriteLine("Notification dismissed") +}; + +Electron.Notification.Show(notification); +``` + +## Related APIs + +- [Electron.App](App.md) - Application lifecycle events +- [Electron.Tray](Tray.md) - System tray integration with notifications +- [Electron.Screen](Screen.md) - Position notifications based on screen layout + +## Additional Resources + +- [Electron Notification Documentation](https://electronjs.org/docs/api/notification) - Official Electron notification API diff --git a/docs/API/Overview.md b/docs/API/Overview.md new file mode 100644 index 0000000..01ce106 --- /dev/null +++ b/docs/API/Overview.md @@ -0,0 +1,62 @@ +# API Reference Overview + +The ElectronNET.Core API provides comprehensive access to Electron's native desktop functionality through a .NET interface. This section documents all the available API classes and their methods, events, and usage patterns. + +## API Classes + +### Core Application Management +- **[Electron.App](App.md)** - Control your application's event lifecycle, manage app metadata, and handle system-level operations +- **[Electron.WindowManager](WindowManager.md)** - Create and manage browser windows, control window behavior and appearance +- **[Electron.Menu](Menu.md)** - Create application menus, context menus, and menu items with full keyboard shortcut support + +### User Interface & Interaction +- **[Electron.Dialog](Dialog.md)** - Display native system dialogs for opening/saving files, showing messages and alerts +- **[Electron.Notification](Notification.md)** - Show native desktop notifications with custom content and actions +- **[Electron.Tray](Tray.md)** - Create system tray icons with context menus and tooltip support +- **[Electron.Dock](Dock.md)** - macOS dock integration for bounce effects and badge counts + +### System Integration +- **[Electron.Shell](Shell.md)** - Desktop integration for opening files, URLs, and accessing system paths +- **[Electron.Clipboard](Clipboard.md)** - Read from and write to the system clipboard with multiple data formats +- **[Electron.Screen](Screen.md)** - Access display and screen information for responsive layouts +- **[Electron.NativeTheme](NativeTheme.md)** - Detect and respond to system theme changes (light/dark mode) + +### Communication & Automation +- **[Electron.IpcMain](IpcMain.md)** - Inter-process communication between main process and renderer processes +- **[Electron.HostHook](HostHook.md)** - Custom host hook functionality for advanced integration scenarios +- **[Electron.GlobalShortcut](GlobalShortcut.md)** - Register global keyboard shortcuts that work even when app is not focused +- **[Electron.AutoUpdater](AutoUpdater.md)** - Handle application updates and installation processes + +### System Monitoring +- **[Electron.PowerMonitor](PowerMonitor.md)** - Monitor system power events like sleep, wake, and battery status + + +## API Relationships + +### Window and Dialog Integration +- Use `BrowserWindow` instances as parent windows for dialogs +- Dialogs automatically become modal when parent window is provided +- Window events coordinate with application lifecycle events + +### IPC Communication +- `IpcMain` handles communication from renderer processes +- Use with `Electron.WindowManager` for window-specific messaging +- Coordinate with `Electron.App` events for application-wide communication + +### System Integration +- `Shell` operations work with file paths from `Dialog` operations +- `Screen` information helps create properly sized windows +- `Notification` and `Tray` provide complementary user interaction methods + +## 🚀 Next Steps + +- **[Electron.App](App.md)** - Start with application lifecycle management +- **[Electron.WindowManager](WindowManager.md)** - Learn window creation and management +- **[Electron.Dialog](Dialog.md)** - Add file operations and user interactions +- **[Electron.Menu](Menu.md)** - Implement application menus and shortcuts + +## 📚 Additional Resources + +- **[Electron Documentation](https://electronjs.org/docs)** - Official Electron API reference +- **[Getting Started](../GettingStarted/ASP.Net.md)** - Development setup guides +- **[Migration Guide](../Core/Migration-Guide.md)** - Moving from previous versions diff --git a/docs/API/PowerMonitor.md b/docs/API/PowerMonitor.md new file mode 100644 index 0000000..14a0dd7 --- /dev/null +++ b/docs/API/PowerMonitor.md @@ -0,0 +1,188 @@ +# Electron.PowerMonitor + +Monitor system power events like sleep, wake, and battery status. + +## Overview + +The `Electron.PowerMonitor` API provides access to system power events and state changes. This includes monitoring when the system is going to sleep, waking up, or changing power sources. + +## Events + +#### ⚡ `OnAC` +Emitted when the system changes to AC power. + +#### ⚡ `OnBattery` +Emitted when system changes to battery power. + +#### ⚡ `OnLockScreen` +Emitted when the system is about to lock the screen. + +#### ⚡ `OnResume` +Emitted when system is resuming. + +#### ⚡ `OnShutdown` +Emitted when the system is about to reboot or shut down. + +#### ⚡ `OnSuspend` +Emitted when the system is suspending. + +#### ⚡ `OnUnLockScreen` +Emitted when the system is about to unlock the screen. + +## Usage Examples + +### Basic Power Event Monitoring + +```csharp +// Monitor system sleep/wake +Electron.PowerMonitor.OnSuspend += () => +{ + Console.WriteLine("System going to sleep"); + // Save application state + SaveApplicationState(); +}; + +Electron.PowerMonitor.OnResume += () => +{ + Console.WriteLine("System waking up"); + // Restore application state + RestoreApplicationState(); +}; +``` + +### Screen Lock/Unlock Monitoring + +```csharp +// Handle screen lock events +Electron.PowerMonitor.OnLockScreen += () => +{ + Console.WriteLine("Screen locking"); + // Pause real-time operations + PauseRealTimeOperations(); +}; + +Electron.PowerMonitor.OnUnLockScreen += () => +{ + Console.WriteLine("Screen unlocking"); + // Resume real-time operations + ResumeRealTimeOperations(); +}; +``` + +### Power Source Changes + +```csharp +// Monitor power source changes +Electron.PowerMonitor.OnAC += () => +{ + Console.WriteLine("Switched to AC power"); + // Adjust power-intensive operations + EnablePowerIntensiveFeatures(); +}; + +Electron.PowerMonitor.OnBattery += () => +{ + Console.WriteLine("Switched to battery power"); + // Reduce power consumption + EnablePowerSavingMode(); +}; +``` + +### System Shutdown Handling + +```csharp +// Handle system shutdown +Electron.PowerMonitor.OnShutdown += () => +{ + Console.WriteLine("System shutting down"); + // Save critical data and exit gracefully + SaveAndExit(); +}; +``` + +### Application State Management + +```csharp +private bool isSuspended = false; + +public void InitializePowerMonitoring() +{ + // Track suspension state + Electron.PowerMonitor.OnSuspend += () => + { + isSuspended = true; + OnSystemSleep(); + }; + + Electron.PowerMonitor.OnResume += () => + { + isSuspended = false; + OnSystemWake(); + }; + + // Handle screen lock for security + Electron.PowerMonitor.OnLockScreen += () => + { + OnScreenLocked(); + }; +} + +private void OnSystemSleep() +{ + // Pause network operations + PauseNetworkOperations(); + + // Save unsaved work + AutoSaveDocuments(); + + // Reduce resource usage + MinimizeResourceUsage(); +} + +private void OnSystemWake() +{ + // Resume network operations + ResumeNetworkOperations(); + + // Check for updates + CheckForUpdates(); + + // Restore full functionality + RestoreFullFunctionality(); +} + +private void OnScreenLocked() +{ + // Hide sensitive information + HideSensitiveData(); + + // Pause real-time features + PauseRealTimeFeatures(); +} +``` + +### Battery Status Monitoring + +```csharp +// Monitor battery status changes +Electron.PowerMonitor.OnAC += () => +{ + Console.WriteLine("Plugged in - full performance mode"); + EnableFullPerformanceMode(); +}; + +Electron.PowerMonitor.OnBattery += () => +{ + Console.WriteLine("On battery - power saving mode"); + EnablePowerSavingMode(); +}; +``` + +## Related APIs + +- [Electron.App](App.md) - Application lifecycle events +- [Electron.Notification](Notification.md) - Notify users about power events + +## Additional Resources + +- [Electron PowerMonitor Documentation](https://electronjs.org/docs/api/power-monitor) - Official Electron power monitor API diff --git a/docs/API/Screen.md b/docs/API/Screen.md new file mode 100644 index 0000000..767050e --- /dev/null +++ b/docs/API/Screen.md @@ -0,0 +1,174 @@ +# Electron.Screen + +Access display and screen information for responsive layouts. + +## Overview + +The `Electron.Screen` API provides access to screen and display information, including screen size, display metrics, cursor position, and multi-monitor configurations. This is essential for creating responsive applications that adapt to different screen configurations. + +## Methods + +#### 🧊 `Task GetAllDisplaysAsync()` +Gets information about all available displays. + +**Returns:** + +An array of displays that are currently available. + +#### 🧊 `Task GetCursorScreenPointAsync()` +Gets the current position of the mouse cursor on screen. + +**Returns:** + +The current absolute position of the mouse pointer. + +#### 🧊 `Task GetDisplayMatchingAsync(Rectangle rectangle)` +Gets the display that most closely intersects the provided bounds. + +**Parameters:** +- `rectangle` - The rectangle to find the matching display for + +**Returns:** + +The display that most closely intersects the provided bounds. + +#### 🧊 `Task GetDisplayNearestPointAsync(Point point)` +Gets the display that is closest to the specified point. + +**Parameters:** +- `point` - The point to find the nearest display for + +**Returns:** + +The display nearest the specified point. + +#### 🧊 `Task GetMenuBarHeightAsync()` +macOS: The height of the menu bar in pixels. + +**Returns:** + +The height of the menu bar in pixels. + +#### 🧊 `Task GetPrimaryDisplayAsync()` +Gets information about the primary display (main screen). + +**Returns:** + +The primary display. + +## Events + +#### ⚡ `OnDisplayAdded` +Emitted when a new Display has been added. + +#### ⚡ `OnDisplayMetricsChanged` +Emitted when one or more metrics change in a display. The changedMetrics is an array of strings that describe the changes. Possible changes are bounds, workArea, scaleFactor and rotation. + +#### ⚡ `OnDisplayRemoved` +Emitted when oldDisplay has been removed. + +## Usage Examples + +### Display Information + +```csharp +// Get primary display +var primaryDisplay = await Electron.Screen.GetPrimaryDisplayAsync(); +Console.WriteLine($"Primary display: {primaryDisplay.Size.Width}x{primaryDisplay.Size.Height}"); + +// Get all displays +var displays = await Electron.Screen.GetAllDisplaysAsync(); +Console.WriteLine($"Available displays: {displays.Length}"); + +// Get display near cursor +var cursorPoint = await Electron.Screen.GetCursorScreenPointAsync(); +var nearestDisplay = await Electron.Screen.GetDisplayNearestPointAsync(cursorPoint); +Console.WriteLine($"Nearest display scale factor: {nearestDisplay.ScaleFactor}"); +``` + +### Multi-Monitor Setup + +```csharp +// Get all displays for multi-monitor setup +var displays = await Electron.Screen.GetAllDisplaysAsync(); + +foreach (var display in displays) +{ + Console.WriteLine($"Display {display.Id}:"); + Console.WriteLine($" Size: {display.Size.Width}x{display.Size.Height}"); + Console.WriteLine($" Position: {display.Bounds.X},{display.Bounds.Y}"); + Console.WriteLine($" Scale Factor: {display.ScaleFactor}"); + Console.WriteLine($" Work Area: {display.WorkArea.Width}x{display.WorkArea.Height}"); +} +``` + +### Responsive Window Placement + +```csharp +// Create window on appropriate display +var displays = await Electron.Screen.GetAllDisplaysAsync(); +var targetDisplay = displays.FirstOrDefault(d => d.Bounds.X > 0) ?? displays.First(); + +var windowOptions = new BrowserWindowOptions +{ + Width = Math.Min(1200, targetDisplay.WorkArea.Width), + Height = Math.Min(800, targetDisplay.WorkArea.Height), + X = targetDisplay.WorkArea.X + (targetDisplay.WorkArea.Width - 1200) / 2, + Y = targetDisplay.WorkArea.Y + (targetDisplay.WorkArea.Height - 800) / 2 +}; + +var window = await Electron.WindowManager.CreateWindowAsync(windowOptions); +``` + +### Display Change Monitoring + +```csharp +// Monitor display changes +Electron.Screen.OnDisplayAdded += (display) => +{ + Console.WriteLine($"Display added: {display.Id}"); + UpdateWindowPositions(); +}; + +Electron.Screen.OnDisplayRemoved += (display) => +{ + Console.WriteLine($"Display removed: {display.Id}"); + UpdateWindowPositions(); +}; + +Electron.Screen.OnDisplayMetricsChanged += (display, metrics) => +{ + Console.WriteLine($"Display {display.Id} metrics changed: {string.Join(", ", metrics)}"); + UpdateWindowPositions(); +}; + +void UpdateWindowPositions() +{ + // Recalculate window positions based on current displays +} +``` + +### macOS Menu Bar Height + +```csharp +// Account for menu bar height on macOS +if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) +{ + var menuBarHeight = await Electron.Screen.GetMenuBarHeightAsync(); + + var windowOptions = new BrowserWindowOptions + { + Y = menuBarHeight, // Position below menu bar + TitleBarStyle = TitleBarStyle.Hidden // Hide title bar for custom look + }; +} +``` + +## Related APIs + +- [Electron.WindowManager](WindowManager.md) - Position windows based on screen information +- [Electron.App](App.md) - Handle display-related application events + +## Additional Resources + +- [Electron Screen Documentation](https://electronjs.org/docs/api/screen) - Official Electron screen API diff --git a/docs/API/Shell.md b/docs/API/Shell.md new file mode 100644 index 0000000..1f2b2e3 --- /dev/null +++ b/docs/API/Shell.md @@ -0,0 +1,175 @@ +# Electron.Shell + +Desktop integration for opening files, URLs, and accessing system paths. + +## Overview + +The `Electron.Shell` API provides system integration functionality for opening files and URLs with their default applications, managing trash/recycle bin, and creating/reading shortcut links. + +## Methods + +#### 🧊 `void Beep()` +Play the beep sound. + +#### 🧊 `Task OpenExternalAsync(string url)` +Open the given external protocol URL in the desktop's default manner (e.g., mailto: URLs in the user's default mail agent). + +**Parameters:** +- `url` - Max 2081 characters on windows + +**Returns:** + +The error message corresponding to the failure if a failure occurred, otherwise empty string. + +#### 🧊 `Task OpenExternalAsync(string url, OpenExternalOptions options)` +Open the given external protocol URL with additional options. + +**Parameters:** +- `url` - Max 2081 characters on windows +- `options` - Controls the behavior of OpenExternal + +**Returns:** + +The error message corresponding to the failure if a failure occurred, otherwise empty string. + +#### 🧊 `Task OpenPathAsync(string path)` +Open the given file in the desktop's default manner. + +**Parameters:** +- `path` - The path to the directory or file + +**Returns:** + +The error message corresponding to the failure if a failure occurred, otherwise empty string. + +#### 🧊 `Task ReadShortcutLinkAsync(string shortcutPath)` +Resolves the shortcut link at shortcutPath. An exception will be thrown when any error happens. + +**Parameters:** +- `shortcutPath` - The path to the shortcut + +**Returns:** + +ShortcutDetails of the shortcut. + +#### 🧊 `Task ShowItemInFolderAsync(string fullPath)` +Show the given file in a file manager. If possible, select the file. + +**Parameters:** +- `fullPath` - The full path to the directory or file + +#### 🧊 `Task TrashItemAsync(string fullPath)` +Move the given file to trash and returns a bool status for the operation. + +**Parameters:** +- `fullPath` - The full path to the directory or file + +**Returns:** + +Whether the item was successfully moved to the trash. + +#### 🧊 `Task WriteShortcutLinkAsync(string shortcutPath, ShortcutLinkOperation operation, ShortcutDetails options)` +Creates or updates a shortcut link at shortcutPath. + +**Parameters:** +- `shortcutPath` - The path to the shortcut +- `operation` - Default is ShortcutLinkOperation.Create +- `options` - Structure of a shortcut + +**Returns:** + +Whether the shortcut was created successfully. + +## Usage Examples + +### File Operations + +```csharp +// Open file with default application +var error = await Electron.Shell.OpenPathAsync(filePath); +if (string.IsNullOrEmpty(error)) +{ + Console.WriteLine("File opened successfully"); +} +else +{ + Console.WriteLine($"Failed to open file: {error}"); +} + +// Show file in file manager +await Electron.Shell.ShowItemInFolderAsync(filePath); + +// Move file to trash +var trashed = await Electron.Shell.TrashItemAsync(filePath); +Console.WriteLine($"File trashed: {trashed}"); +``` + +### URL Operations + +```csharp +// Open URL in default browser +var error = await Electron.Shell.OpenExternalAsync("https://electron.net"); +if (!string.IsNullOrEmpty(error)) +{ + Console.WriteLine($"Failed to open URL: {error}"); +} + +// Open email client +await Electron.Shell.OpenExternalAsync("mailto:user@example.com"); + +// Open with options +var error = await Electron.Shell.OpenExternalAsync("https://example.com", new OpenExternalOptions +{ + Activate = true +}); +``` + +### System Integration + +```csharp +// Play system beep +Electron.Shell.Beep(); + +// Create desktop shortcut +var success = await Electron.Shell.WriteShortcutLinkAsync( + @"C:\Users\Public\Desktop\MyApp.lnk", + ShortcutLinkOperation.Create, + new ShortcutDetails + { + Target = "C:\\Program Files\\MyApp\\MyApp.exe", + Description = "My Application", + WorkingDirectory = "C:\\Program Files\\MyApp" + } +); + +// Read shortcut information +var details = await Electron.Shell.ReadShortcutLinkAsync(@"C:\Users\Public\Desktop\MyApp.lnk"); +Console.WriteLine($"Target: {details.Target}"); +``` + +### Integration with Dialog API + +```csharp +// Use with file dialog results +var files = await Electron.Dialog.ShowOpenDialogAsync(window, options); +if (files.Length > 0) +{ + var selectedFile = files[0]; + + // Open the selected file + await Electron.Shell.OpenPathAsync(selectedFile); + + // Show in file manager + await Electron.Shell.ShowItemInFolderAsync(selectedFile); +} +``` + +## Related APIs + +- [Electron.Dialog](Dialog.md) - Select files to open with Shell +- [Electron.App](App.md) - Application lifecycle events +- [Electron.Clipboard](Clipboard.md) - Copy file paths for Shell operations + +## Additional Resources + +- [Electron Shell Documentation](https://electronjs.org/docs/api/shell) - Official Electron shell API diff --git a/docs/API/Tray.md b/docs/API/Tray.md new file mode 100644 index 0000000..5aaad88 --- /dev/null +++ b/docs/API/Tray.md @@ -0,0 +1,232 @@ +# Electron.Tray + +Add icons and context menus to the system's notification area. + +## Overview + +The `Electron.Tray` API provides the ability to add icons and context menus to the system's notification area (system tray). This allows applications to provide quick access to common functions and maintain a presence in the system even when windows are closed. + +## Properties + +#### 📋 `IReadOnlyCollection MenuItems` +Gets a read-only collection of all current tray menu items. + +## Methods + +#### 🧊 `void Destroy()` +Destroys the tray icon immediately. + +#### 🧊 `void DisplayBalloon(DisplayBalloonOptions options)` +Windows: Displays a tray balloon notification. + +**Parameters:** +- `options` - Balloon notification options + +#### 🧊 `Task IsDestroyedAsync()` +Check if the tray icon has been destroyed. + +**Returns:** + +Whether the tray icon is destroyed. + +#### 🧊 `void SetImage(string image)` +Sets the image associated with this tray icon. + +**Parameters:** +- `image` - New image for the tray icon + +#### 🧊 `void SetPressedImage(string image)` +Sets the image associated with this tray icon when pressed on macOS. + +**Parameters:** +- `image` - Image for pressed state + +#### 🧊 `void SetTitle(string title)` +macOS: Sets the title displayed aside of the tray icon in the status bar. + +**Parameters:** +- `title` - Title text + +#### 🧊 `void SetToolTip(string toolTip)` +Sets the hover text for this tray icon. + +**Parameters:** +- `toolTip` - Tooltip text + +#### 🧊 `void Show(string image)` +Shows the tray icon without a context menu. + +**Parameters:** +- `image` - The image to use for the tray icon + +#### 🧊 `void Show(string image, MenuItem menuItem)` +Shows the tray icon with a single menu item. + +**Parameters:** +- `image` - The image to use for the tray icon +- `menuItem` - Single menu item for the tray context menu + +#### 🧊 `void Show(string image, MenuItem[] menuItems)` +Shows the tray icon with multiple menu items. + +**Parameters:** +- `image` - The image to use for the tray icon +- `menuItems` - Array of menu items for the tray context menu + +## Events + +#### ⚡ `OnBalloonClick` +Windows: Emitted when the tray balloon is clicked. + +#### ⚡ `OnBalloonClosed` +Windows: Emitted when the tray balloon is closed because of timeout or user manually closes it. + +#### ⚡ `OnBalloonShow` +Windows: Emitted when the tray balloon shows. + +#### ⚡ `OnClick` +Emitted when the tray icon is clicked. + +#### ⚡ `OnDoubleClick` +macOS, Windows: Emitted when the tray icon is double clicked. + +#### ⚡ `OnRightClick` +macOS, Windows: Emitted when the tray icon is right clicked. + +## Usage Examples + +### Basic Tray Icon + +```csharp +// Simple tray icon +await Electron.Tray.Show("assets/tray-icon.png"); + +// Tray icon with single menu item +await Electron.Tray.Show("assets/tray-icon.png", new MenuItem +{ + Label = "Show Window", + Click = () => ShowMainWindow() +}); +``` + +### Tray with Context Menu + +```csharp +// Tray with multiple menu items +var trayMenuItems = new[] +{ + new MenuItem { Label = "Show Window", Click = () => ShowMainWindow() }, + new MenuItem { Label = "Settings", Click = () => OpenSettings() }, + new MenuItem { Type = MenuType.Separator }, + new MenuItem { Label = "Exit", Click = () => Electron.App.Quit() } +}; + +await Electron.Tray.Show("assets/tray-icon.png", trayMenuItems); +``` + +### Dynamic Tray Updates + +```csharp +// Update tray tooltip based on status +await Electron.Tray.SetToolTip("MyApp - Connected"); + +// Change tray icon based on state +if (isConnected) +{ + await Electron.Tray.SetImage("assets/connected.png"); +} +else +{ + await Electron.Tray.SetImage("assets/disconnected.png"); +} +``` + +### Tray Event Handling + +```csharp +// Handle tray clicks +Electron.Tray.OnClick += (clickArgs, bounds) => +{ + if (clickArgs.AltKey || clickArgs.ShiftKey) + { + // Alt+Click or Shift+Click - show context menu + Electron.Menu.ContextMenuPopup(Electron.WindowManager.BrowserWindows.First()); + } + else + { + // Regular click - toggle main window + ToggleMainWindow(); + } +}; + +Electron.Tray.OnRightClick += (clickArgs, bounds) => +{ + // Show context menu on right click + Electron.Menu.ContextMenuPopup(Electron.WindowManager.BrowserWindows.First()); +}; +``` + +### Windows Balloon Notifications + +```csharp +// Show Windows balloon notification +await Electron.Tray.DisplayBalloon(new DisplayBalloonOptions +{ + Title = "Background Task Complete", + Content = "Your file has been processed successfully.", + Icon = "assets/notification-icon.ico" +}); + +// Handle balloon events +Electron.Tray.OnBalloonClick += () => +{ + ShowMainWindow(); + Electron.WindowManager.BrowserWindows.First().Focus(); +}; +``` + +### macOS Tray Features + +```csharp +// macOS specific tray features +if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) +{ + await Electron.Tray.SetTitle("MyApp"); + + // Use template image for dark mode support + await Electron.Tray.SetImage("assets/tray-template.png"); + await Electron.Tray.SetPressedImage("assets/tray-pressed-template.png"); +} +``` + +### Application Integration + +```csharp +// Integrate with application lifecycle +Electron.App.WindowAllClosed += () => +{ + // Keep app running in tray when windows are closed + if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) + { + Electron.App.Hide(); + } +}; + +// Handle tray double-click +Electron.Tray.OnDoubleClick += (clickArgs, bounds) => +{ + ShowMainWindow(); + Electron.WindowManager.BrowserWindows.First().Focus(); +}; +``` + +## Related APIs + +- [Electron.Menu](Menu.md) - Context menus for tray icons +- [Electron.Notification](Notification.md) - Desktop notifications +- [Electron.App](App.md) - Application lifecycle events +- [Electron.WindowManager](WindowManager.md) - Windows to show/hide from tray + +## Additional Resources + +- [Electron Tray Documentation](https://electronjs.org/docs/api/tray) - Official Electron tray API diff --git a/docs/API/WebContents.md b/docs/API/WebContents.md new file mode 100644 index 0000000..67b3f79 --- /dev/null +++ b/docs/API/WebContents.md @@ -0,0 +1,292 @@ +# Electron.WebContents + +Render and control web pages. + +## Overview + +The `Electron.WebContents` API provides control over web page content within Electron windows. It handles page loading, navigation, JavaScript execution, and web page lifecycle events. + +## Properties + +#### 📋 `int Id` +Gets the unique identifier for this web contents. + +#### 📋 `Session Session` +Manage browser sessions, cookies, cache, proxy settings, etc. + +## Methods + +#### 🧊 `void ExecuteJavaScriptAsync(string code, bool userGesture = false)` +Evaluates script code in page. + +In the browser window some HTML APIs like `requestFullScreen` can only be invoked by a gesture from the user. Setting `userGesture` to `true` will remove this limitation. + +Code execution will be suspended until web page stop loading. + +**Parameters:** +- `code` - The code to execute +- `userGesture` - if set to `true` simulate a user gesture + +**Returns:** + +The result of the executed code. + +#### 🧊 `Task GetPrintersAsync()` +Get system printers. + +**Returns:** + +Array of available printers. + +#### 🧊 `Task GetUrl()` +Get the URL of the loaded page. + +It's usefull if a web-server redirects you and you need to know where it redirects. For instance, It's useful in case of Implicit Authorization. + +**Returns:** + +URL of the loaded page. + +#### 🧊 `void InsertCSS(bool isBrowserWindow, string path)` +Inserts CSS into the web page. + +See: https://www.electronjs.org/docs/api/web-contents#contentsinsertcsscss-options + +Works for both BrowserWindows and BrowserViews. + +**Parameters:** +- `isBrowserWindow` - Whether the webContents belong to a BrowserWindow or not (the other option is a BrowserView) +- `path` - Absolute path to the CSS file location + +#### 🧊 `Task LoadURLAsync(string url)` +Loads the url in the window. The url must contain the protocol prefix. + +The async method will resolve when the page has finished loading, and rejects if the page fails to load. + +A noop rejection handler is already attached, which avoids unhandled rejection errors. + +Loads the `url` in the window. The `url` must contain the protocol prefix, e.g. the `http://` or `file://`. If the load should bypass http cache then use the `pragma` header to achieve it. + +**Parameters:** +- `url` - URL to load + +#### 🧊 `Task LoadURLAsync(string url, LoadURLOptions options)` +Loads the url with additional options. + +The async method will resolve when the page has finished loading, and rejects if the page fails to load. + +A noop rejection handler is already attached, which avoids unhandled rejection errors. + +Loads the `url` in the window. The `url` must contain the protocol prefix, e.g. the `http://` or `file://`. If the load should bypass http cache then use the `pragma` header to achieve it. + +**Parameters:** +- `url` - URL to load +- `options` - Loading options + +#### 🧊 `void OpenDevTools()` +Opens the devtools. + +#### 🧊 `void OpenDevTools(OpenDevToolsOptions openDevToolsOptions)` +Opens the devtools with options. + +**Parameters:** +- `openDevToolsOptions` - Developer tools options + +#### 🧊 `Task PrintAsync(PrintOptions options = null)` +Prints window's web page. + +**Parameters:** +- `options` - Print options + +**Returns:** + +Whether the print operation succeeded. + +#### 🧊 `Task PrintToPDFAsync(string path, PrintToPDFOptions options = null)` +Prints window's web page as PDF with Chromium's preview printing custom settings.The landscape will be ignored if @page CSS at-rule is used in the web page. By default, an empty options will be regarded as: Use page-break-before: always; CSS style to force to print to a new page. + +**Parameters:** +- `path` - Output file path +- `options` - PDF generation options + +**Returns:** + +Whether the PDF generation succeeded. + +## Events + +#### ⚡ `InputEvent` +Emitted when an input event is sent to the WebContents. + +#### ⚡ `OnCrashed` +Emitted when the renderer process crashes or is killed. + +#### ⚡ `OnDidFailLoad` +Emitted when the load failed. + +#### ⚡ `OnDidFinishLoad` +Emitted when the navigation is done, i.e. the spinner of the tab has stopped spinning, and the onload event was dispatched. + +#### ⚡ `OnDidNavigate` +Emitted when a main frame navigation is done. + +#### ⚡ `OnDidRedirectNavigation` +Emitted after a server side redirect occurs during navigation. + +#### ⚡ `OnDidStartNavigation` +Emitted when any frame (including main) starts navigating. + +#### ⚡ `OnDomReady` +Emitted when the document in the top-level frame is loaded. + +#### ⚡ `OnWillRedirect` +Emitted when a server side redirect occurs during navigation. + +## Usage Examples + +### Page Loading + +```csharp +// Load URL with options +await webContents.LoadURLAsync("https://example.com", new LoadURLOptions +{ + UserAgent = "MyApp/1.0", + ExtraHeaders = "Authorization: Bearer token123" +}); + +// Load local file +await webContents.LoadURLAsync("file://" + Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "app/index.html")); + +// Get current URL +var currentUrl = await webContents.GetUrl(); +Console.WriteLine($"Current URL: {currentUrl}"); +``` + +### JavaScript Execution + +```csharp +// Execute simple JavaScript +var result = await webContents.ExecuteJavaScriptAsync("document.title"); +Console.WriteLine($"Page title: {result}"); + +// Execute with user gesture simulation +await webContents.ExecuteJavaScriptAsync("document.requestFullscreen()", true); + +// Execute complex code +var userAgent = await webContents.ExecuteJavaScriptAsync("navigator.userAgent"); +Console.WriteLine($"User agent: {userAgent}"); +``` + +### Developer Tools + +```csharp +// Open dev tools +webContents.OpenDevTools(); + +// Open with specific options +webContents.OpenDevTools(new OpenDevToolsOptions +{ + Mode = DevToolsMode.Detached, + Activate = true +}); +``` + +### CSS Injection + +```csharp +// Inject CSS file +webContents.InsertCSS(true, "styles/custom-theme.css"); + +// Inject CSS for BrowserView +webContents.InsertCSS(false, "styles/browser-view.css"); +``` + +### Printing Operations + +```csharp +// Print web page +var printSuccess = await webContents.PrintAsync(new PrintOptions +{ + Silent = false, + PrintBackground = true, + DeviceName = "My Printer" +}); + +if (printSuccess) +{ + Console.WriteLine("Print job sent successfully"); +} +``` + +### PDF Generation + +```csharp +// Generate PDF +var pdfSuccess = await webContents.PrintToPDFAsync("document.pdf", new PrintToPDFOptions +{ + MarginsType = PrintToPDFMarginsType.None, + PageSize = PrintToPDFPageSize.A4, + PrintBackground = true, + Landscape = false +}); + +if (pdfSuccess) +{ + Console.WriteLine("PDF generated successfully"); +} +``` + +### Navigation Monitoring + +```csharp +// Monitor navigation events +webContents.OnDidStartNavigation += (url) => +{ + Console.WriteLine($"Starting navigation to: {url}"); +}; + +webContents.OnDidNavigate += (navInfo) => +{ + Console.WriteLine($"Navigated to: {navInfo.Url}"); +}; + +webContents.OnDidFinishLoad += () => +{ + Console.WriteLine("Page finished loading"); +}; + +webContents.OnDidFailLoad += (failInfo) => +{ + Console.WriteLine($"Page failed to load: {failInfo.ErrorCode} - {failInfo.ErrorDescription}"); +}; +``` + +### Content Interaction + +```csharp +// Wait for DOM ready +webContents.OnDomReady += () => +{ + Console.WriteLine("DOM is ready"); + // Safe to execute DOM-related JavaScript now +}; + +// Handle page crashes +webContents.OnCrashed += (killed) => +{ + Console.WriteLine($"Renderer crashed, killed: {killed}"); + // Optionally reload the page +}; +``` + +## Related APIs + +- [Electron.WindowManager](WindowManager.md) - Windows containing web contents +- [Electron.Session](Session.md) - Session management for web contents +- [Electron.IpcMain](IpcMain.md) - Communication with web contents + +## Additional Resources + +- [Electron WebContents Documentation](https://electronjs.org/docs/api/web-contents) - Official Electron web contents API +- [Web Content Management](../Core/What's-New.md) - Understanding web content handling +- [Security Considerations](../Using/Configuration.md) - Secure web content integration diff --git a/docs/API/WindowManager.md b/docs/API/WindowManager.md new file mode 100644 index 0000000..134e452 --- /dev/null +++ b/docs/API/WindowManager.md @@ -0,0 +1,208 @@ +# Electron.WindowManager + +Create and manage browser windows, control window behavior and appearance. + +## Overview + +The `Electron.WindowManager` API provides comprehensive control over browser windows in your Electron application. It handles window creation, management, and coordination with the application lifecycle. + +## Properties + +#### 📋 `IReadOnlyCollection BrowserViews` +Gets a read-only collection of all currently open browser views. + +#### 📋 `IReadOnlyCollection BrowserWindows` +Gets a read-only collection of all currently open browser windows. + +#### 📋 `bool IsQuitOnWindowAllClosed` +Controls whether the application quits when all windows are closed. Default is true. + +## Methods + +#### 🧊 `Task CreateBrowserViewAsync()` +Creates a new browser view with default options. + +**Returns:** + +The created BrowserView instance. + +#### 🧊 `Task CreateBrowserViewAsync(BrowserViewConstructorOptions options)` +Creates a new browser view with custom options. + +**Parameters:** +- `options` - Browser view configuration options + +**Returns:** + +The created BrowserView instance. + +#### 🧊 `Task CreateWindowAsync(string loadUrl = "http://localhost")` +Creates a new browser window with default options. + +**Parameters:** +- `loadUrl` - URL to load in the window. Defaults to "http://localhost" + +**Returns:** + +The created BrowserWindow instance. + +#### 🧊 `Task CreateWindowAsync(BrowserWindowOptions options, string loadUrl = "http://localhost")` +Creates a new browser window with custom options. + +**Parameters:** +- `options` - Window configuration options +- `loadUrl` - URL to load in the window. Defaults to "http://localhost" + +**Returns:** + +The created BrowserWindow instance. + +## Usage Examples + +### Basic Window Creation + +```csharp +// Create window with default options +var mainWindow = await Electron.WindowManager.CreateWindowAsync(); + +// Create window with custom options +var settingsWindow = await Electron.WindowManager.CreateWindowAsync(new BrowserWindowOptions +{ + Width = 800, + Height = 600, + Show = false, + Title = "Settings", + WebPreferences = new WebPreferences + { + NodeIntegration = false, + ContextIsolation = true + } +}, "https://localhost:5001/settings"); +``` + +### Window Management + +```csharp +// Get all windows +var windows = Electron.WindowManager.BrowserWindows; +Console.WriteLine($"Open windows: {windows.Count}"); + +// Configure quit behavior +Electron.WindowManager.IsQuitOnWindowAllClosed = false; // Keep app running when windows close + +// Handle window lifecycle +Electron.App.WindowAllClosed += () => +{ + Console.WriteLine("All windows closed"); + if (Electron.WindowManager.IsQuitOnWindowAllClosed) + { + Electron.App.Quit(); + } +}; +``` + +### Browser View Integration + +```csharp +// Create browser view +var browserView = await Electron.WindowManager.CreateBrowserViewAsync(new BrowserViewConstructorOptions +{ + WebPreferences = new WebPreferences + { + NodeIntegration = false, + ContextIsolation = true + } +}); + +// Add to window +await mainWindow.SetBrowserViewAsync(browserView); +await browserView.WebContents.LoadURLAsync("https://example.com"); + +// Set view bounds +await mainWindow.SetBoundsAsync(browserView, new Rectangle +{ + X = 0, + Y = 100, + Width = 800, + Height = 400 +}); +``` + +### Window Options Configuration + +```csharp +// Comprehensive window options +var options = new BrowserWindowOptions +{ + Width = 1200, + Height = 800, + MinWidth = 600, + MinHeight = 400, + MaxWidth = 1920, + MaxHeight = 1080, + X = 100, + Y = 100, + Center = true, + Frame = true, + Title = "My Application", + Icon = "assets/app-icon.png", + Show = false, + AlwaysOnTop = false, + SkipTaskbar = false, + Kiosk = false, + TitleBarStyle = TitleBarStyle.Default, + BackgroundColor = "#FFFFFF", + DarkTheme = false, + Transparent = false, + WebPreferences = new WebPreferences + { + NodeIntegration = false, + ContextIsolation = true, + EnableWebSQL = false, + Partition = "persist:electron", + ZoomFactor = 1.0f, + DevTools = true + } +}; +``` + +### Multi-Window Applications + +```csharp +// Create main window +var mainWindow = await Electron.WindowManager.CreateWindowAsync(new BrowserWindowOptions +{ + Width = 1200, + Height = 800, + Show = false +}); + +// Create secondary window +var secondaryWindow = await Electron.WindowManager.CreateWindowAsync(new BrowserWindowOptions +{ + Width = 600, + Height = 400, + Parent = mainWindow, + Modal = true, + Show = false +}); + +// Load different content +await mainWindow.WebContents.LoadURLAsync("https://localhost:5001"); +await secondaryWindow.WebContents.LoadURLAsync("https://localhost:5001/settings"); + +// Show windows when ready +mainWindow.OnReadyToShow += () => mainWindow.Show(); +secondaryWindow.OnReadyToShow += () => secondaryWindow.Show(); +``` + +## Related APIs + +- [Electron.App](App.md) - Application lifecycle and window events +- [Electron.Dialog](Dialog.md) - Parent windows for modal dialogs +- [Electron.Menu](Menu.md) - Window-specific menus +- [Electron.WebContents](WebContents.md) - Window content management + +## Additional Resources + +- [Electron Window Management Documentation](https://electronjs.org/docs/api/browser-window) - Official Electron window API diff --git a/docs/_Sidebar.md b/docs/_Sidebar.md index 5e2b12b..85f054f 100644 --- a/docs/_Sidebar.md +++ b/docs/_Sidebar.md @@ -23,9 +23,27 @@ - [Debugging](Using/Debugging.md) - [Package Building](Using/Package-Building.md) +# API Reference + +- [API Overview](API/Overview.md) +- [Electron.App](API/App.md) +- [Electron.Dialog](API/Dialog.md) +- [Electron.Menu](API/Menu.md) +- [Electron.WindowManager](API/WindowManager.md) +- [Electron.Shell](API/Shell.md) +- [Electron.Screen](API/Screen.md) +- [Electron.Notification](API/Notification.md) +- [Electron.Tray](API/Tray.md) +- [Electron.Clipboard](API/Clipboard.md) +- [Electron.Dock](API/Dock.md) +- [Electron.HostHook](API/HostHook.md) +- [Electron.IpcMain](API/IpcMain.md) +- [Electron.GlobalShortcut](API/GlobalShortcut.md) +- [Electron.AutoUpdater](API/AutoUpdater.md) +- [Electron.NativeTheme](API/NativeTheme.md) +- [Electron.PowerMonitor](API/PowerMonitor.md) # Release Information - [Package Description](RelInfo/Package-Description.md) - [Changelog](RelInfo/Changelog.md) - From 771b1109f7083a4d1299646ee9fa5865e5ca52df Mon Sep 17 00:00:00 2001 From: softworkz Date: Wed, 15 Oct 2025 21:57:21 +0200 Subject: [PATCH 63/66] Add About page --- docs/About.md | 56 ++++++++++++++++++++++++++++++++++++++++++++++++ docs/_Sidebar.md | 1 + 2 files changed, 57 insertions(+) create mode 100644 docs/About.md diff --git a/docs/About.md b/docs/About.md new file mode 100644 index 0000000..23e468f --- /dev/null +++ b/docs/About.md @@ -0,0 +1,56 @@ + + +# About this Project + +Electron.NET has been developed by a small number of people in the hope that it may be useful for others. + +Support for this project in all forms is very welcome, no matter whether in form of code contributions or donations. + + +## 🙋‍♀️🙋‍♂ Contributing + +Feel free to submit a pull request if you find any bugs (to see a list of active issues, visit the [Issues section](https://github.com/ElectronNET/Electron.NET/issues). +Please make sure all commits are properly documented. + + +## 🙏 Donate + +We do this open source work in our free time. If you'd like us to invest more time on it, please [donate](https://donorbox.org/electron-net). Donation can be used to increase some issue priority. Thank you! + +[![donate](https://img.shields.io/badge/Donate-Donorbox-green.svg)](https://donorbox.org/electron-net) + +Alternatively, consider using a GitHub sponsorship for the core maintainers: + +- [Gregor Biswanger](https://github.com/sponsors/GregorBiswanger) +- [Florian Rappl](https://github.com/sponsors/FlorianRappl) + +Any support appreciated! 🍻 + + +## 👨‍💻 Authors + +* **[Gregor Biswanger](https://github.com/GregorBiswanger)** - (Microsoft MVP, Intel Black Belt and Intel Software Innovator) is a freelance lecturer, consultant, trainer, author and speaker. He is a consultant for large and medium-sized companies, organizations and agencies for software architecture, web- and cross-platform development. You can find Gregor often on the road attending or speaking at international conferences. - [Cross-Platform-Blog](http://www.cross-platform-blog.com) - Twitter [@BFreakout](https://www.twitter.com/BFreakout) +   +* **[Dr. Florian Rappl](https://github.com/FlorianRappl)** - Software Developer - from Munich, Germany. Microsoft MVP & Web Geek. - [The Art of Micro Frontends](https://microfrontends.art) - [Homepage](https://florian-rappl.de) - Twitter [@florianrappl](https://twitter.com/florianrappl) +   +* [**softworkz**](https://github.com/softworkz) - full range developer - likes to start where others gave up - MS MVP alumni and Munich citizen as well. Has not been involved in the evolution of Electron.NET but rather dropped off the update and overhaul for ElectronNET.Core in a kind-of drive-by action. +   +* **[Robert Muehsig](https://github.com/robertmuehsig)** - Software Developer - from Dresden, Germany, now living & working in Switzerland. Microsoft MVP & Web Geek. - [codeinside Blog](https://blog.codeinside.eu) - Twitter [@robert0muehsig](https://twitter.com/robert0muehsig) + +See also the list of [contributors](https://github.com/ElectronNET/Electron.NET/graphs/contributors) who participated in this project. + + +## 🧪 Working with this Repo + +This video provides an introduction to development for Electron.NET: [Electron.NET - Contributing Getting Started](https://youtu.be/Po-saU_Z6Ws) + +This repository consists of the main parts (API & CLI) and it's own "playground" ASP.NET Core application. Both main parts produce local NuGet packages, that are versioned with 99.0.0. The first thing you will need is to run one of the build scripts (.cmd or .ps1 for Windows, the .sh for macOS/Linux). + +If you look for pure __[demo projects](https://github.com/ElectronNET)__ checkout the other repositories. + +The problem working with this repository is, that NuGet has a pretty aggressive cache, see [here for further information](https://github.com/ElectronNET/Electron.NET/wiki). + + +## 🎉 License + +MIT-licensed. See [LICENSE](./LICENSE) for details. diff --git a/docs/_Sidebar.md b/docs/_Sidebar.md index 85f054f..1b34c26 100644 --- a/docs/_Sidebar.md +++ b/docs/_Sidebar.md @@ -3,6 +3,7 @@ # Wiki - [Home](Home.md) +- [About this Project](About.md) # Electron.NET Core From 2bc2b4bb7073cc713cf205fa8e104c746508c1e6 Mon Sep 17 00:00:00 2001 From: softworkz Date: Wed, 15 Oct 2025 22:12:29 +0200 Subject: [PATCH 64/66] Move some parts from ReadMe to Wiki --- README.md | 54 +++------------------------------- docs/About.md | 19 +++++------- docs/GettingStarted/ASP.Net.md | 20 +++++++++++-- docs/Using/Configuration.md | 15 ++++++++++ docs/Using/Package-Building.md | 6 ++++ 5 files changed, 49 insertions(+), 65 deletions(-) diff --git a/README.md b/README.md index d60b56d..f47b46b 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ ElectronNET.Core represents a fundamental modernization of Electron.NET, addressing years of accumulated pain points while preserving full API compatibility. This isn't just an update—it's a complete rethinking of how .NET developers build and debug cross-platform desktop applications with Electron. -Read more: [**What's New in ElectronNET.Core**](WHATS_NEW.md) +Read more: [**What's New in ElectronNET.Core**](wiki/What's-New) Build cross platform desktop applications with .NET 6/8 - from console apps to ASP.Net Core (Razor Pages, MVC) to Blazor @@ -85,15 +85,13 @@ Just press F5 in Visual Studio or use dotnet for debugging. ## 📔 Usage of the Electron API -A complete documentation will follow. Until then take a look in the source code of the sample application: -[Electron.NET API Demos](https://github.com/ElectronNET/electron.net-api-demos) +A complete documentation is available on the Wiki. In this YouTube video, we show you how you can create a new project, use the Electron.NET API, debug a application and build an executable desktop app for Windows: [Electron.NET - Getting Started](https://www.youtube.com/watch?v=nuM6AojRFHk) + > [!NOTE] + > The video hasn't been updated for the changes in ElectronNET.Core, so it is partially outdated. -### Note - -> macOS builds can't be created on Windows machines because they require symlinks that aren't supported on Windows (per [this Electron issue](https://github.com/electron-userland/electron-packager/issues/71)). macOS builds can be produced on either Linux or macOS machines. ## 👨‍💻 Authors @@ -110,15 +108,6 @@ See also the list of [contributors](https://github.com/ElectronNET/Electron.NET/ Feel free to submit a pull request if you find any bugs (to see a list of active issues, visit the [Issues section](https://github.com/ElectronNET/Electron.NET/issues). Please make sure all commits are properly documented. -## 🧪 Working with this Repo - -This video provides an introduction to development for Electron.NET: [Electron.NET - Contributing Getting Started](https://youtu.be/Po-saU_Z6Ws) - -This repository consists of the main parts (API & CLI) and it's own "playground" ASP.NET Core application. Both main parts produce local NuGet packages, that are versioned with 99.0.0. The first thing you will need is to run one of the build scripts (.cmd or .ps1 for Windows, the .sh for macOS/Linux). - -If you look for pure __[demo projects](https://github.com/ElectronNET)__ checkout the other repositories. - -The problem working with this repository is, that NuGet has a pretty aggressive cache, see [here for further information](https://github.com/ElectronNET/Electron.NET/wiki). ## 🙏 Donate @@ -141,38 +130,3 @@ MIT-licensed. See [LICENSE](./LICENSE) for details. -### Node.js Integration - -Electron.NET requires Node.js integration to be enabled for IPC to function. If you are not using the IPC functionality you can disable Node.js integration like so: - -```csharp -WebPreferences wp = new WebPreferences(); -wp.NodeIntegration = false; -BrowserWindowOptions browserWindowOptions = new BrowserWindowOptions -{ - WebPreferences = wp -}; - -``` - -### Dependency Injection - -ElectronNET.API can be added to your DI container within the `Startup` class. All of the modules available in Electron will be added as Singletons. - -```csharp -using ElectronNET.API; - -public void ConfigureServices(IServiceCollection services) -{ - services.AddElectron(); -} -``` - -## 💬 Community - -[![Gitter](https://badges.gitter.im/ElectronNET/community.svg)](https://gitter.im/ElectronNET/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) - -Besides the chat on Gitter and the issues [discussed here](https://github.com/ElectronNET/Electron.NET/issues) you can also use [StackOverflow](https://stackoverflow.com/questions/tagged/electron.net) with the tag `electron.net`. - -If you want to sponsor the further maintenance and development of this project [see the donate section](#🙏-donate). - diff --git a/docs/About.md b/docs/About.md index 23e468f..6c18fb2 100644 --- a/docs/About.md +++ b/docs/About.md @@ -6,6 +6,12 @@ Electron.NET has been developed by a small number of people in the hope that it Support for this project in all forms is very welcome, no matter whether in form of code contributions or donations. +## 💬 Community + +[![Gitter](https://badges.gitter.im/ElectronNET/community.svg)](https://gitter.im/ElectronNET/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + +Besides the chat on Gitter and the issues [discussed here](https://github.com/ElectronNET/Electron.NET/issues) you can also use [StackOverflow](https://stackoverflow.com/questions/tagged/electron.net) with the tag `electron.net`. + ## 🙋‍♀️🙋‍♂ Contributing @@ -40,17 +46,6 @@ Any support appreciated! 🍻 See also the list of [contributors](https://github.com/ElectronNET/Electron.NET/graphs/contributors) who participated in this project. -## 🧪 Working with this Repo - -This video provides an introduction to development for Electron.NET: [Electron.NET - Contributing Getting Started](https://youtu.be/Po-saU_Z6Ws) - -This repository consists of the main parts (API & CLI) and it's own "playground" ASP.NET Core application. Both main parts produce local NuGet packages, that are versioned with 99.0.0. The first thing you will need is to run one of the build scripts (.cmd or .ps1 for Windows, the .sh for macOS/Linux). - -If you look for pure __[demo projects](https://github.com/ElectronNET)__ checkout the other repositories. - -The problem working with this repository is, that NuGet has a pretty aggressive cache, see [here for further information](https://github.com/ElectronNET/Electron.NET/wiki). - - ## 🎉 License -MIT-licensed. See [LICENSE](./LICENSE) for details. +MIT-licensed. See [LICENSE](https://github.com/ElectronNET/Electron.NET?tab=MIT-1-ov-file#readme) for details. diff --git a/docs/GettingStarted/ASP.Net.md b/docs/GettingStarted/ASP.Net.md index 61add70..6fe239b 100644 --- a/docs/GettingStarted/ASP.Net.md +++ b/docs/GettingStarted/ASP.Net.md @@ -90,11 +90,25 @@ If you want to launch a specific URL, you can retrieve the actual ASP.NET port f For projects using the traditional `Startup.cs` pattern, please see "Traditional ASP.NET Core" in the [Migration Guide](../Core/Migration-Guide.md). +### 5. Dependency Injection + +ElectronNET.API can be added to your DI container within the `Startup` class. All of the modules available in Electron will be added as Singletons. + +```csharp +using ElectronNET.API; + +public void ConfigureServices(IServiceCollection services) +{ + services.AddElectron(); +} +``` + + ## 🚀 Next Steps -- **[Debugging](Debugging.md)** - Learn about ASP.NET debugging features -- **[Package Building](Package-Building.md)** - Create distributable packages -- **[Startup Methods](Startup-Methods.md)** - Understanding launch scenarios +- **[Debugging](../Using/Debugging.md)** - Learn about ASP.NET debugging features +- **[Package Building](../Using/Package-Building.md)** - Create distributable packages +- **[Startup Methods](../Using/Startup-Methods.md)** - Understanding launch scenarios ## 💡 Benefits of ASP.NET + Electron diff --git a/docs/Using/Configuration.md b/docs/Using/Configuration.md index df300fb..8685a15 100644 --- a/docs/Using/Configuration.md +++ b/docs/Using/Configuration.md @@ -70,6 +70,21 @@ Since electron builder still expects a `package.json` file to exist, ElectronNET } ``` +### Node.js Integration + +Electron.NET requires Node.js integration to be enabled for IPC to function. If you are not using the IPC functionality you can disable Node.js integration like so: + +```csharp +WebPreferences wp = new WebPreferences(); +wp.NodeIntegration = false; +BrowserWindowOptions browserWindowOptions = new BrowserWindowOptions +{ + WebPreferences = wp +}; + +``` + + ## 🚀 Next Steps diff --git a/docs/Using/Package-Building.md b/docs/Using/Package-Building.md index 40f6ac1..fc21f75 100644 --- a/docs/Using/Package-Building.md +++ b/docs/Using/Package-Building.md @@ -131,6 +131,12 @@ The publish process will: `publish\Release\netx.0\xxx-xxx\` +## MacOS + +> [!NOTE] +> macOS builds can't be created on Windows machines because they require symlinks that aren't supported on Windows (per [this Electron issue](https://github.com/electron-userland/electron-packager/issues/71)). macOS builds can be produced on either Linux or macOS machines. + + ## 🚀 Next Steps - **[Startup Methods](Startup-Methods.md)** - Understanding different launch modes for packaged apps From 5bdabd94ba8d6631a67386b122eca2c79c87c0e6 Mon Sep 17 00:00:00 2001 From: softworkz <4985349+softworkz@users.noreply.github.com> Date: Wed, 15 Oct 2025 22:28:35 +0200 Subject: [PATCH 65/66] Fix typos --- docs/API/WebContents.md | 2 +- docs/Core/Advanced-Migration-Topics.md | 2 +- docs/Core/What's-New.md | 2 +- docs/_Sidebar.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/API/WebContents.md b/docs/API/WebContents.md index 67b3f79..e878e58 100644 --- a/docs/API/WebContents.md +++ b/docs/API/WebContents.md @@ -41,7 +41,7 @@ Array of available printers. #### 🧊 `Task GetUrl()` Get the URL of the loaded page. -It's usefull if a web-server redirects you and you need to know where it redirects. For instance, It's useful in case of Implicit Authorization. +It's useful if a web-server redirects you and you need to know where it redirects. For instance, It's useful in case of Implicit Authorization. **Returns:** diff --git a/docs/Core/Advanced-Migration-Topics.md b/docs/Core/Advanced-Migration-Topics.md index e532097..2881030 100644 --- a/docs/Core/Advanced-Migration-Topics.md +++ b/docs/Core/Advanced-Migration-Topics.md @@ -29,7 +29,7 @@ Configure custom ASP.NET ports through MSBuild metadata: **Update package.json:** -This shows the delevant changes only: All shown versions are the new required minimum versions. +This shows the relevant changes only: All shown versions are the new required minimum versions. ```json { diff --git a/docs/Core/What's-New.md b/docs/Core/What's-New.md index ce5ad45..7b06e1d 100644 --- a/docs/Core/What's-New.md +++ b/docs/Core/What's-New.md @@ -21,7 +21,7 @@ The new package architecture reflects a clearer separation of concerns: - **ElectronNET.Core.AspNet** - ASP.NET-specific runtime components This modular approach allows projects to include only what they need while maintaining the flexibility to scale from simple console applications to complex web applications. -More about the avaílable nuget packages: [Package Description](../RelInfo/Package-Description.md). +More about the available nuget packages: [Package Description](../RelInfo/Package-Description.md). ## Beyond ASP.NET: Console Application Support diff --git a/docs/_Sidebar.md b/docs/_Sidebar.md index 1b34c26..4f1db54 100644 --- a/docs/_Sidebar.md +++ b/docs/_Sidebar.md @@ -8,7 +8,7 @@ # Electron.NET Core - [What's new?](Core/What's-New.md) -- [Migration Guiide](Core/Migration-Guide.md) +- [Migration Guide](Core/Migration-Guide.md) - [Advanced Migration](Core/Advanced-Migration-Topics.md) # Getting Started From 18528026670057153e9ac89eb31a2cad215782a7 Mon Sep 17 00:00:00 2001 From: softworkz Date: Wed, 15 Oct 2025 23:04:37 +0200 Subject: [PATCH 66/66] Some more polishing --- README.md | 4 ++-- docs/Core/Migration-Guide.md | 6 +++--- docs/GettingStarted/ASP.Net.md | 20 ++++++++++++++----- docs/GettingStarted/Console-App.md | 8 ++++++-- docs/Home.md | 20 +++++++++---------- docs/Using/Debugging.md | 10 ++++++++-- docs/Using/Package-Building.md | 9 +-------- .../Views/About/Index.cshtml | 2 +- 8 files changed, 45 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index f47b46b..812cddb 100644 --- a/README.md +++ b/README.md @@ -41,9 +41,9 @@ Also you should have installed: - Install the following two nuget packages: ```ps1 -PM> Install-Package ElectronNET.Core +dotnet add package ElectronNET.Core -PM> Install-Package ElectronNET.Core.AspNet +dotnet add package ElectronNET.Core.AspNet ``` ### Enable Electron.NET on Startup diff --git a/docs/Core/Migration-Guide.md b/docs/Core/Migration-Guide.md index 3602f08..39ca173 100644 --- a/docs/Core/Migration-Guide.md +++ b/docs/Core/Migration-Guide.md @@ -16,13 +16,13 @@ Before starting the migration: **Uninstall old packages:** ```powershell -PM> Uninstall-Package ElectronNET.API +dotnet remove package ElectronNET.API ``` **Install new packages:** ```powershell -PM> Install-Package ElectronNET.Core -PM> Install-Package ElectronNET.Core.AspNet # For ASP.NET projects +dotnet add package ElectronNET.Core +dotnet add package ElectronNET.Core.AspNet # For ASP.NET projects ``` > **Note**: The API package is automatically included as a dependency of `ElectronNET.Core`. See [Package Description](../RelInfo/Package-Description.md) for details about the package structure. diff --git a/docs/GettingStarted/ASP.Net.md b/docs/GettingStarted/ASP.Net.md index 6fe239b..953a641 100644 --- a/docs/GettingStarted/ASP.Net.md +++ b/docs/GettingStarted/ASP.Net.md @@ -12,7 +12,11 @@ See [System Requirements](../GettingStarted/System-Requirements.md). ### 1. Create ASP.NET Core Project -Create a new ASP.NET Core Web App in Visual Studio: +#### Visual Studio + +Create a new ASP.NET Core Web App in Visual Studio by selecting **New Project** and choosing one of the ASP.NET Core project templates. + +#### From the command line ```bash dotnet new webapp -n MyElectronWebApp @@ -21,14 +25,20 @@ cd MyElectronWebApp ### 2. Install NuGet Packages +#### Visual Studio + +Right-click the solution and select **Manage Nuget Packages**. +Finr and install `ElectronNET.Core` as well as `ElectronNET.Core.AspNet`. + +#### From the command line + ```powershell -PM> Install-Package ElectronNET.Core -PM> Install-Package ElectronNET.Core.AspNet +dotnet add package ElectronNET.Core +dotnet add package ElectronNET.Core.AspNet ``` - > [!Note] -> `ElectronNET.Core.AspNet` provides ASP.NET-specific runtime components and should be used alongside `ElectronNET.Core`. +> The API package is automatically included as a dependency of `ElectronNET.Core`. ### 3. Configure Program.cs diff --git a/docs/GettingStarted/Console-App.md b/docs/GettingStarted/Console-App.md index 2fcad0e..f9efe16 100644 --- a/docs/GettingStarted/Console-App.md +++ b/docs/GettingStarted/Console-App.md @@ -22,7 +22,11 @@ See [System Requirements](../GettingStarted/System-Requirements.md). ### 1. Create Console Application -Create a new Console Application project in Visual Studio: +#### Visual Studio + +Create a new console application in Visual Studio by selecting **New Project** and choosing one of the project templates for console apps. + +#### From the command line ```bash dotnet new console -n MyElectronApp @@ -32,7 +36,7 @@ cd MyElectronApp ### 2. Install NuGet Packages ```powershell -PM> Install-Package ElectronNET.Core +dotnet add package ElectronNET.Core ``` > [!Note] diff --git a/docs/Home.md b/docs/Home.md index c46852f..a338d81 100644 --- a/docs/Home.md +++ b/docs/Home.md @@ -34,19 +34,16 @@ Electron.NET Core is a complete modernization of Electron.NET that eliminates th ## 🛠 System Requirements -- **.NET 8.0** or later -- **Node.js 22.x** or later -- **Visual Studio 2022** (recommended) or other .NET IDE -- **WSL2** (for Linux development on Windows) +See [System Requirements](GettingStarted/System-Requirements.md). ## 💡 Key Benefits -✅ **No CLI Tools Required** - Everything works through Visual Studio -✅ **Console App Support** - Use any HTML/JS source, not just ASP.NET -✅ **True Cross-Platform** - Build Linux apps from Windows -✅ **Modern Debugging** - Hot Reload and ASP.NET-first debugging -✅ **Flexible Packaging** - Choose any Electron version -✅ **MSBuild Integration** - Leverages .NET's build system +✅ **No CLI Tools Required** - Everything works through Visual Studio +✅ **Console App Support** - Use any HTML/JS source, not just ASP.NET +✅ **True Cross-Platform** - Build Linux apps from Windows +✅ **Modern Debugging** - Hot Reload and ASP.NET-first debugging +✅ **Flexible Packaging** - Choose any Electron version +✅ **MSBuild Integration** - Leverages .NET's build system ## 🚦 Getting Started @@ -58,4 +55,5 @@ New to ElectronNET.Core? Start here: ## 🤝 Contributing -Found an issue or want to improve the documentation? Contributions are welcome! The wiki is auto-generated from the `/docs` folder in the [GitHub repository](https://github.com/ElectronNET/Electron.NET). +Found an issue or want to improve the documentation? Contributions are welcome! +The wiki is auto-generated from the `/docs` folder in the [GitHub repository](https://github.com/ElectronNET/Electron.NET). diff --git a/docs/Using/Debugging.md b/docs/Using/Debugging.md index 1672206..3c7f5c4 100644 --- a/docs/Using/Debugging.md +++ b/docs/Using/Debugging.md @@ -123,8 +123,14 @@ Add the debugging profiles to `Properties/launchSettings.json`: When switching between Windows and WSL debugging: 1. **Right-click your project** in Solution Explorer -2. **Select "Edit Project File"** -3. **Update the RuntimeIdentifier**: +2. Select **Properties** +3. Adjust the Runtime Identifier + + +Without Visual Studio: + +1. **Edit** the .csproj file +2. **Update the RuntimeIdentifier**: ```xml diff --git a/docs/Using/Package-Building.md b/docs/Using/Package-Building.md index fc21f75..110c850 100644 --- a/docs/Using/Package-Building.md +++ b/docs/Using/Package-Building.md @@ -9,13 +9,6 @@ The publishing process differs slightly between ASP.NET and console applications - **ASP.NET Apps** - Use folder publishing with SelfContained=true - **Console Apps** - Use folder publishing with SelfContained=false -## 📋 Prerequisites - -Before publishing, ensure you have: - -- **Node.js 22.x** installed -- **RuntimeIdentifier** set correctly for your target platform -- **Project configured** for Release builds ## 🚀 Publishing Process @@ -126,7 +119,7 @@ The publish process will: > [!NOTE] > When running publish for a Linux configuration on Windows, Electron.NET will automatically use WSL for the platform-specific steps. -**After publishing**, build the final package, the final results will be in +**After publishing**, the final results will be in `publish\Release\netx.0\xxx-xxx\` diff --git a/src/ElectronNET.WebApp/Views/About/Index.cshtml b/src/ElectronNET.WebApp/Views/About/Index.cshtml index 5d63504..e0175e3 100644 --- a/src/ElectronNET.WebApp/Views/About/Index.cshtml +++ b/src/ElectronNET.WebApp/Views/About/Index.cshtml @@ -10,7 +10,7 @@

Use the demo snippets in an Electron app of your own. The Electron Quick Start(opens in new window) app is a bare-bones setup that pairs with these demos. Follow the instructions here to get it going. To activate Electron.NET include the ElectronNET.API NuGet package in your ASP.NET Core app.

- PM> Install-Package ElectronNET.API + dotnet add package ElectronNET.API

Then include the UseElectron WebHostBuilder-Extension into the Program.cs-file of your ASP.NET Core project.

B4?v#XrHs2+Y7%=1A!ogpDo9wMV0os?LN71|LLw$*EFbey!UUgHv8efI}>*F3GrON=r;Xs%ZA4?hrKvnH&4*m5uVGMll}7qXIUW`a%Wao?E3H_0{F3RX*>YbkF?R7a`c*39 zTb4fi%?UHh$@iE1o#J`8;)3(OEjPHTeRZdO^V+sRFd{c}X^#Z^X%@r2{(Fywo|;7E znlh@c6O@^E_h7*tiEm9NSt<7(zODRWa@WOa+LtpNGH;{{BG0lQ^{Pc;cx&_vB*D zIn24+Y*;UKv#3v>-FK}aIONsp)N8luQ@-x{TCns_zHZ-gmaA*|l&|{+8k}#OUU|&= zVw-ULwmBJ*rH_R5dv@{Ku$gLh>;CyLRah$Vul3KGbp6#6qGw&Wzwqb=f8*e+$n!D9 zFR%FJZ*MxZS(>T3o0YZDza*96LP$gOiFJafU2fn0XTEEv@RJ(DD-*b{$Q5txXq(d4 z8T>4Zr+S0KomF?1r$=qo3s7TLTfg>}_TuzAYD=xwN2gvnE~a0Fmht!Ls%3)FpVr)F>U;J+qU}dR!sR2)adCcIKXPqYF*A;VnC9iy; z^@8I;|NSmoFns4U>2;iUEN!M+LgUR7d% zH=eFL{kCn@d3RktvjCM@M>Wl^e=B496WoxQvrg*O3dKT6UDIp<%bV=S9@WmuYLD*T zuq*!bmd3@$!}k`Ix}Gj!mcR9BjqUFolizEc=S_Y5W)=5kpJ~ZIWiA_YDhMm~_%1y2 zxzJ|z6%__I#UHK9ELJ}dN^I$TTq77WwNjheDCD>P;jlU$YyR!;N~$@2-_Y3njca~g zl#^=U)ap{lNjjC&E*a0wTOYJ}ZCK}lPO&-Ok9FSNI<&i6+WhVGJ9bhZJ-Mqk2P``z zBq#j*UPu}13Xc=P%$JTXF4__xv-e9k(+sAWE|WL#ee*cj-0~@WWopy3ldD7K%RQbt z@zQnMd2#;R1oWTI=GYtb;lUh6{|}B^C)r%q2|V>8xqkD;3wNJ=6V8&`YLfWu*Snqv zjEajJJx@iiy=)=UDyI8;^7Vx!LX3y^#C)k|Gx^rX;9e>5ByHmT3li@b5gZV}a>xo!}-8X=`0AEw2q>Tx*ZG+-%^U+I(Ve%k16i zrA_w>d9t@kUKMQ8s{Z|qkbc5j-S<0|g7>N%gSuan^W*y^a?RR>=#=(2hywr^X3ll%s*x#@Qpqk>bn zuU{!=vExDM<<7TH^d*^ByEZ$&_cGw0`Cz^|$FErhjyB9m#r73^&lM(rTfXnf^chta zPZ#m}1m}C^IL@s4+!s8bXT6IEx2$0* zNWK+*I-`7k;QCp+&%W4pr|Og17VG6NZ(Wa0e{o^+{>7)Z`vfwqTi>uZjz@Hw!|yB4 zEvD$FMBdsR@3*75X990{q|EC*GnSrcS=eG!Yv8l$g-2eLvMJ+BYtFCRgmff6e(?VM zbKZ)Dhc-@~Vtu5P_nCT&d>aHW5U -ifA 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

>%2>RGWBNejT(Q1!*3pll?@!^fH*#sr!a4Hjb7 z2nThhL9=#C!7Ug_5(OP4+<8D!IjdwfD{|HKZ#ZGs%iP<#(G+{wzq$C94{QpTvo z$I8r7oD8bYQ$d46kdld?fq_k!Ly*H&7}|dX9ZC+upz{mJ!7#nrZeY99m>9V3K4oBF zke3#RG&#A1xQc28U=2tvK@QMKq}oDUMH3N%kmhSTDB-a{MyixpMG&W@B3Q+oj0~VE z8)OZn2+1L&?Z2EhwPuwF4U zIN~6qatch$EQr8Bus}03o}iq=R1L~o%t8!8jQN{DBYv7pY!CyO^Vc#kutAPd0(*~z zU2GP+_$;{A3!riy+~bC5fY`_bDwp|KK<8v>gG(AdmV9rJP0&30gn@w}6f|zZ3<<7m z(4aWP#h|mqiw=X*Zw@H8GK1S;B_Mz0=Yn#kMI!?P1AD$Q0|VF6BMc1EJVHzwd7zBS zrpqbBtdY;ez@;tD1UkBz1bjp2#RJoCP5ZKRu(>1J~nV+dTUM5a9u+u@Q4D3jD@d$267f$!;JrNFwvseUK;I-`?7G~D`5|FE4XXffL=*J@5 zCCtbG+Vd>P&-_mew15LV;&j0TRPckwS0Fh+5Sm=T)e-1mJvJ6*#Aq8*^2!HCD>wqV zn5scF0VIvEfmaBC`?uWM(d^)!Cl3c3=qyJzUKS2c*8EaX6gV<*fKSwckVrPb$9u#f zNfMM8K^YFJo)Zxs;8@a~dyk7lc00Kj75Lp zg(D+dHQY4NTs!ETL~cP?dCCYWI>GB)m>?=afu;e@qi#&#ErsBHxS$-u20FYSi3iTZ ztf0YBhDcBvF0KT1;V(>wrIO+*P(4%)7My`ia3(gvS(t*gGeJQIc8ux;IatYd!2-t0 z2W`qwy-)(deH7JZB(?dcG`3<0~uFM9R z7s_u0&3G|t3p0V;!YsrHk!NNXU}Russs`By$rVkYM%F!9-lBhk@FPsX-U1zA!dcu5 zY7}sQ=OaO*ZX&S^vY@$XFD67XW!5MIwQ#+dF2EBhLI|Ej5kl|;3KatN-$6IBMuX}x zT}J5eJQou)n?^Yk0~@y(k2XI$$1D~R@KlT%hj;`J2YX+p(Q9xYnHf~hg6rNj{J5|6A?6q3QAJY7P*fQe5iXaD9+57szEe!eg~*BaKo73W7C2_Xn7S6nHms; zl;0QNxkuwOxEBa*8d0#Ckvz8z4#0RECxksIArmn##}u9g+s( zG4z0@GqmbDLGw|d=?pEg9?*1(mJs7VQP4yNdk=`z646p(5eZ}k1rTh|5Y*oU&HaOn zVF^Hl2V^!>hq;uIk%38vj|EXY1&V7im;Ppeh{6k?KyfWGq@V-eX8`K^gUfYrKbBdS zyC?>pc$o9S1(bFX8{JDMNFk)#hP>W@iMe(jC^bXtW@(1HnUJ~}ls6^7_Zu?^GF5}r zumlJ(;n*?21Q-Nr+iq z0b0{C7v%}T>QZKiPRPkk%t!|`F+<8$@DdtCD5EY6TL%x?+WBCgfYL8BgFXWTs9zw+ ztfK`n9kez9bgHth6jL=wAw*P&A-@~hOAMfNVaLG0kO=mZB}5fyY!s|l6T#1AWnhCW zK@ijE0T(mSJj}|%4h|hyO7pq^8UO>=TPy*fh7K1zy?9*!4Le|!0REF0u|P6WpqLg*ejlh6lL0FDRGC@X#5IPstz8XTm!%N^+B0LZ2sEh-S>VmW%#=R?R7-G_YC{I-s`*%S zT#BpN8Q4HWP;9kp!7FhES*k&dYLGE}tW4l>u>6UjQRy{I3@n_2EdSVQKqc)YQ2l$C zfq_li0b@B8s}L))7{V9>S<{Qv(yJUmfT z2GYRC0&vOzrPr$r3=Am@41(g^EQn?gxOC)&^-l{p!DX=6EFREdG9axi`5PD**aG=j z0!l%x6D~HZHqdoT7vQZUumOK=$1ZQPgJH*(B_7uOM!8bH=_KwJ)9(F3*vkuc;z2?H^txe%NJKxG3fsLjog25NU#gG6;a zm|5~Cg9-tAJ{EA1#U;eR#{w?1xP=&nnB=9PWfoIWu`sO6Vq(z<0xc4SHvhmy6zIgt zDWKK>w9eOJWMD`K#X|!)9{5;mH$fs|Gl*i<2xef=uHC}Kz+&+Yv|yl-oq>&;ovn5| z69Wr79}6opI6`W-LAfjt?p6@D8bpFKB@cTwNCBA5%c&E|p)1bG{*SE*C4?=efy{4# z#v^;}PH;Sm)$V{rNGpnR4p5G5LlM#rhuEVlP_$B*p`hryFzkGI4qYuK_G*xut3kel zC}RgZ5GoAvp~iA11~zRW4)%X+%_s)53bAU0fHLymfB*l3`hFVAKvP(drNT%#co97Q z*ci@28XE;ijdL^BJvDu;cMsyNR43f89W zffyrVf#g>MM1DnTT7k1Js>R?@7%pvS)@5P`W#0T1Obl$$yvxb}YAj`f%6!DI5Tr@M zi?D-BTayK?X~)CC0vTF>8qEPM!nhDUI#_AM1}TlWK`D$KoTdW7m+gVZr6KJ{MFs|j zECvQaPyxd%!~kBdt0Tz7rm>ERflY^lS%VW)_h~`rRhSq+V=>vF`V!m#DEbe|B$c2G z446PorvD5KOk8X_QEd65Yz%DT#(`}4l57lYx}I$LB5a@(U!*I-P@n-`&t=SBqz~t) zu@@P`Ig;!}wr~y)dyzYgqlMZ41GQTsL5(_4V-?)~g0|n0($Zp3cM&q8jx^4`1SHB@ zyA(w6vD7XD(~u!_q;<~Aq3IAb2DOTjfguOvZy^TI9TwWU(7ixD#QvdkRYlwz?0J8a)_b09hBAC1lgEs_kglG8&fsNckCh%rA*Zz zPv+lZU|_4=1(vS{QM%lan7z9bbZ;E9ARAZ|JVORfCZGjw;Bp2uj;*60$i~MKP`ewX zpF@!CA6o}XzSh=Zss@D>XiXfFIp7uAoKU0rSONq&!G|s1^AzU7=08EM{28Di0(%Rz zc$*uWD#$`@ZpcDyW+5I(fwKPJ|Nn^K-pT;UWS}+J3=9()HoGt?$1pH3g4yYe&^6c- z88&AzDuepD>zJU4r*;)6AwW_KQaV@-5@oGj14<5{xyAL23=Fx@v=9y&R>G1N*g+R> zvFQl$v9LqZK4dXwptu%0c#Rnk2htid&@wU51{Zu7)X@uMU|;}UXu6w$f#DVd1H*LC z8Z%HUhmVB`VvEKWCI+@Z3()EgJ{BepsNhzx;4g3`4-sOj2Kgo*yiaE)s7D3rYXw?d z$Dw2vNC~L_6=<;qhmzSKC7^y;pv6QaC4m;86Y}_2Al5?G_JaFuf!et+QSg#O1<*~m z8goFVfckNP+I~o*@Q`9r9a@@*Fja#hN(WTvvT5u9c}`maW>}!MC@3F-;tXOZ3wWzQ zpg5?!V+QYg%mc+;QJ@Gzfw;z8P-B2aoJ(7Sxu_ILM2t&YtZ23fXtn!hQ1JsAC@G!? z8Yf|ctc?Ya>#;B_W@G@Bk(DJGb4mz4{nNgI4FV z$a7hP+Pi`*@&bCo+I8&U=>S0%jRl~29aimJh=2k!69WTs8d?aE_G94yuLhU563br% z5@G}SK}?ukTSt&p-X<#wv^p8Q1Q@*03S1lHF9r?DEMa2ciV$W+UR-N*hEqpRkQG!z zfeQHsV_rB@m_wUGEK88J^%kgnV%FFOnxo*nCndm5`!H<V&3Azo*n-x=h%tcoX@IY322Bxa`!lt{-O~(r zPYc{VtxyN)F*QLQq{7q=b&wQO2h>3VObGXY9R_pHab^aF0#F;b6WqpSs@(_bWPq!B z2|XcZFhf$06T*--W@iRhXEkWfQsMz8V(*UJnP)Afg#8gC(Mcz*@S&&6O#JUxv1XOGZvdHJ@*$T4A zm*}Nh90O%0Bt34{pgpOAEb?i3#TF|;l8Cm46=>D21!%c02T~iP+yayuIFK45sT_!g zh;D>-8V7iHBBU+jtsTx$^d3}BfSWcp97R9j9DQwT4)AtHh*EWJ9gZSqQCKTTf}@BZ z&f(S;5Yd9Jy%&QNGi=}hE0PAOS<1w~W!VB6?f%Es1*(CULB_gwGBL1O=`b-cu>E7} zMi&=>i1(n2|6v5H??o4X0uk>+7e50M2Rnw_;sBgoWQp#uesqnKL5lyeO+Xi~hKNr@ z7f*(WPeK>>hKNr_7dHlpLmj3LXBUOT9kvbQuA+W1ERC4oX;T|JY`siRa$`EjU$OP(}a0QBU-Q!SW z76}yNx(7ZV0W?~`i|C|jfOqf~OAc7kEKwUzJJX`(>(8`Jy(EI>sh-*1~hzqAH)`46B8vAi$ zU|=W$y8$G`0vhILgSFY2sv%;{Obl$0K^{I9wm_ID$WdVDfE0n91M0AW+I{Vyo;9fa zTMKeB8*A-BQ27TLOVdt+oRpvj8%X132e+SjICSib*ReCO@p7`&9tQQnIjccbHApWX z3-SQkAtnYE4$gmU>p=+vF@DC&23E@s8}ncR4~FSXz|(IFP{ISPe)w7Sv}H15KTPx|2+hZoH}( zeClKa$Q7V)b6{X#CAjo3+cNXGF5|gLIwv) zK(gHIY}Fv8ENuVSHiI1U2(*s%0RwC-72-w2(9$N5#h|(wblycd=w3X;s4m0~d8TTR zBB&i8SuQr_{8wNTK||>f6JcYta?Ie(Y+8E7$C((|8a9KBhshZ+7lHD-#vjlwI=$jk zAO%}c6@WG8uLO-l=@p*^DcFjvfQwm6ulNE;7<559eCSk;S>rdv%*!CT?Z{e;n87VG zn5EZ13U+`Lpk_I1L^SUN$yza0gJ@>Rl3^_b7rOWsCJSB$jF1H{8$@uyD}51M@M1wb zCT5MBpfZ7_b{EJd(6&6#9rGICLrs*J#q+B{3l2bI0c#l<7%D(*d-42s&^jFPe9%>9 z%=u-YI0Y?0;$qVkUb)|!EpFiV2H zU~vwl5@x`0(1uyC`$3xym@$PxZpUT{s0{>Hei~+qb_r6DXs1Ji3ltvc%e_S4n$N&B zn+q|?OT))Z5o^$x*da^Mn2?sBLB~(QOVB{e$!~*Zl%1F*^7|MV*gyhzU;a4d)c7avlRP4X($Y`;0m-{34B(&#xsyTK@d?fK2{__JBT13tC+@fkRme(UrggA zh<6B)ICq1rhYTShO;dp#1vU=sOh_MeIuiqE98FN13mVvpKv#W3^g#ND;Ka*R4T=gK zQ6}d6CeQ%b2hfNjyCj!I4I`-Y2#P)~ivo~|b)dVxA^KroAppMlC>R{Xmt0MuD&>1DzEFRdElL*GTjcXu}`)Ze$iNi+N!Epo_{; z+?$WcaP`>ZnPA?7#0GNSV}|EFW~B9>%+TeZ%t(0;I=u?cd(6=CF~0@0Sc;vQ4P3~8 zG9V;JGBIns2bH+YEEhME9cLkS+>wq#{wU=U(dkYxldC<1Nb5@IY07K2U8FhbRX zw1QU*LpF0U7Byoi0U3#+WHv%c(QX7Amx;3Ca7&9+k=W~y*zOW=HOR)?0o|hs-kil) z)QVjRXb~sO?XwX|AQR#(pfe@3<}v55W@6w1FP;YXBXyX>wV0|wrJ1TOvznL|v&I@w zD?aw1E}aLl8|C3XaJRdT3#&7`IVrX#X)C}fKTGmI>f@9UkfT{^6SAQD2FnG z69jX98(5?Rq(K^f1=}Pv4c%Zxy&y#_a79Ke#lK-YRkYA`Oa$wg4AP;CtV0FPfwg=t z!3JbO3&u4-d$DQ{gNj#{+9M!}wP>#lLxDyFXdMq|16=J`c`lr|2?^X){WSixnfn2|OQ&d2gZ)GqX0McL7Pclfs3gcq@Sr8 zWCxqZMkdheevk?cMrH;!$YL2#K4xbCtyiiA`yXTx7gIGzm4qIr5QD}h&;nt0AqI`j zpa2kJgqR5p8IZvmpu?AVkV1xosT$-PEFrUtp8+&H%_U*X!z^yh!4ENA3o0sZ%)=}J z76n@Du@oIdO$=wDftG}t7#5)<29P4AYOs0LAagXf zf(D*JTEOeg*g^#aeU{^kZRDlCoG>ffWreM3XT(ydT5-0G->PtB~zq;VrQxb zxduzc26MT7G(69edU3IkBP6Ea0qyc^Vryae)KHHc&ePweOK0gbMUae)`mX>+r| z4oGAIt6_&ovxpjsu(22l6rGh}C@6X@!%$ERzFm-2)KCthFn=!-0~aeyg{~}21)G@u zQYNU9eIWZUgM!kFsTxFsihmI;js2j~zl#Yb2Hta{aR8WdR(l2H zFP7S?Ad0p28i?X!sl5)eP1=B!!GV#1p%K*A-U9Axv(z33jeiI+YD6PVf-zNtw6pzV z+Y0JV9|Vo<$AH#aa%jXNse%lafM+>**{VV22(vIVRfDap23c4v$qd@Uc27Z=O^6w) z8oW@5U5LG?P?n)UkPR{i$iR_*7&Ozsp)D`Sk$;4VflH7zUxt~1O^{WHGhc<7flY@^ zkW-jNn^O?F*#8FVc^>x^gt;)SSPrs+3t|P-K&EO?_<+x@66V&H666M-UIp5@#L5Rf zpNdsnnCG6XAU9+s{oQ*!g4{ang4~cP2uROgkVlIVG9~3!}O=CCh+AC%=t$_5nTr1A&$ggW+_$&U6u!yEy9p3)`3fU zF%=&JC5s!N*aatQ(EZvsL2(Q^!Vk;<&uuX?fcmga@U+jGe;l;jT0596{{%Rf2{CG% z1g-J{ud=o+x-ZL6ATI%5Y7LczEu#J|3u_%QF+;^5?Hh0&fG$^Din?4;Lyeh%jfti9 z7RafrwYNcT1dT^BG4L|P=fKu3vViCGnn86T(?2#%W(GFUPzje1gAk(zA82KQ3VSJN zT>=k>jucZh$Pf;2bt%LQ>K1V6u(EIlife(_S9vj2gY1ILSAd&Yps=|EvKJIKUFATY;GYw9g8(cbhps2Xs~@bR)SAcaf$XLqYL%2GDh>)%QThhJh92p9Kw8 z3o{`JG3TEHnTINL9wY=BxAkRUU}y!UIfxD+hWra46PVbv_?h^bg&5^!p@R*K;Iqgy z(!h7JGeb`CV}zVc1`&fKFYqaTR#3}Wz=mm=F;(9OyYM2&RtE4oUeFrSHn6=QseEVf zd1O3n`A!U=E4|B@;YWDAK~AHHbH^l9AnCD;srV8odx3(0srWL82{I5;#DY@O15ku{ zL3i?lI8Z6n@wIwTXhQacJ_Kn1kAci%Vqj=zU=XzE0MEXHB*2R|h1mqzO22@Y-ssi~ zvXy>gU|`~Aw*pmNf^4PV!CSJeKwVTpw$fh=3`|x>KvTVJ;04aSoK~R8GC?+Q9sy0T zS%C(d1ldX%7#WzX?lOXoYyvNk22I^s-GcC$L2{s(B0;uN77+U>BLjoQYfyKts9%nu zApZ(ziy9mFY{s753=B;9SD6^NEKY$H%!Mgn&%evcz-F}tEV>*fYOw^&-w5M#H~}JhKX9#f%!+_{5&xKJdDr8%&B3=%)n+51{S}G5Eow#sM7|2|gK8OqdhA z3__4YkP|%LFU%##B^L>v_vBz;03TWkTJjD$q!ENciBXVCK1R<>+mX45Q63tg+BVEZ z>~M}ga}h6`qr_Y!4Cjb47fHf79L$1T`PV?zBByu+=rBq_4)7ua`~3g^|7%+_7sM<8-!Z=LKf~??h(w1N@GKPt2b2As&!Z^(N*O@?l3UE3E9UN_y@%R6KaQm4Fv=)+~ z1JqUnAC3uHRILL#T3Uv=$Q`bq1uTb1A1wKxMdk3t+gi*;zDR0ea-hZ7kn~j)43h>; z4YYs?L}ra#W(GDby`pe=hJs@7Xop_WaU^z_0!$oKo-r|ij&$k-m64^(z!^wKm5B{} z2Ca?^lLn}W13QlmT$q8G;LY@qeE>Hg#RqsDIcPsSs9Y?1sQ^0c7Niq=_$)Z_gZ4gy z*KBEljwRd%IhOD==vYE7&{Fs6N1!YYs$swkc%MPT6XX}f8Q1;H3~UfFklUF-do~!l zKxG!V8ZR~h70ApQaiFE$+Nz+PHKi~OOd1}{3~XR8>Tnmm1%&~4Tmf`IXFTW-(~E5R z#-Q*6tJCE!vQ>nY=2}L@huIm}nDY05&SN>nqQl0d;meGAhdWpobFmqykx>qk6GL3% zuBF7xly3p@h!MmU`86Pp98>jUkgw&Ks-J*pknh2aET-a{pi&bg%cKE`R2Gd;kRH(4 z(!C4}4Bepk0yn(5nAlh}N0%V%O^VABX@W?&QJ){bOm(Exd#2TJooY~$d}zs1DB zbx&ECg(JTJ+`trK<;X7ru|NyZTNN1!1X&=BK6VapaOrY$f@zU|p#FOTH)t_BXbr2* zTy`CH7N&e7ki($$F9U-<1HT=EawY=Pa^bKKBo7eYusmI-~z{&jsu%6 zTk!)>P_jYAK_~Wt&Zg%^^{ zFT~2grps1Tpu|w1g|ZToy=avZLqR_1@C`L2ck*Z_aDW4emp%VA69booArCwF)H8@m zBweuFmR}9ZmmqTx>YzD|8A)yf+%`yt)185m+lmnK%=yBspu?>|b+a%F7!POOG7XuA3hsO;AcXU~5ND&;sJr|o%gh#{S}r)$Z1`UOk?%#dTMehCu*Gvt`6U%>>x4A5E$(Aq>$+lUFWqfR3q z)IZLO+iiti$YFR6JmxGd*DOgArmj4V}_s! z0u(l&BVwj7FbFEVU}j(_7GPyy<6>e1Cuq(Ss z%C7@8A(KJ7pBRgR5E78iHMqOamfrz38PXMU z2(q(`34Ek{Ehxc5nV_T&?Z=BTv;1S!l4H&XmCc}%0kmWZ)bala$`^Uex|~enwI4uB z6WE!=zzinlTCkiPQ}rj18cUu*&z^h;+@;`yLn^-`FY(*FfphBupA<)(vsE`m;2)=1YhaKt@=-vac zFPI=M(dY&_SPtR=q~2L4NLa6Eg9@w{1{&9&!N9;U6BK{o#sMflfi~cBGgX6vNk^AS zqYKn#FjisG0Hrh?AqWj#AORkv)8PWIo8S`X*47e&>`2y8gecOLgzDDgfG~79U}~XR zlMSK}G$jWPC5SS1YYyz(J zLA$9yc^`D{<7{Mq{}ThXKENpl;wo@`ttH0<$zo0rLAX=Fy~#_E3i=MXW|jaSJ_4?S zz$pf`3X)^0{tQZBa!l1Ebn{u9Fvr)!=>-xUd4XbwK?j zNZ$oKmWFU4tnVTW>7Q^zY-I=A3T+({>L-~&^e}_zF#xI%@Pp)^87 zR?yy6hPj}yhg2kxga#pD8HGt>4yZ8=pHqjL0vf{P*5+jg4`D)^&Cr(LYvg*Lxfn44 z4;x1|XOIklv;jbA-wKovz+u76P|v`?Fc0LOQb_r(L#W*hiZQT{*uaSo%!Id_#kjRq zAc&I3-K~P#LGNv9N_H3 z1@-hxWKXj}f)JczA*$G5W4U|`(wY#zgWA8hAld5?sDfp#eF)BFl3JiKV`c`>I=cm+ zu)x>;RZvB=f5Bk^awLzo76&+9aI}9pk=nFs(3b2u)RwFo++2b!S;+lY#tdee5PyN% zvDN*scB}@dIt32|fNHC?ptuGV8{k3&Tm*o4h<2OUEX4*k0W=Vn25K}u23?CQ zuCWtjjujJgaSRIs8;iy+5SIbe=K-xNUkr-#Vhh-^6^KiqUgCv#iJ2we4>4f!8nv5h z4ATkfOACO`wi9QNG=RhnD8HG5Y%@YK78EgiK!T8CW>85`T4Z7X4H<*omA?_xQG$do z55zG{`ThvE5SYIRW6lQ+73%OnXr}y1ki7^yKyxI_`S2ver464W0V#wQyaen3mFuAU z(ZJ&Z`Jk2+bj(W;wdW799NO`RaG(}kM-EW%xkXG2JPfeAU!s_p^Y?*T;>`IcAk==4 zCqTjnApDaM>L5tij)^({5QKji#0M!m0^y&6P)A|H#~}RE5b8Kc7`7ThiHSM?21o$J zxCvr_&w3wOb(A19Qw>NEbZ8Jrl${N<@J<`7 zLXVvZv^0u~3p5r2T4NQ>z`(E+Y!1jKE-`LxXEyeJkk!>p%%Ice!P<1RIKVVisswnth`Od1)W>lj2d zSeY5PbOefYR2d42R;a?d!XR^*LGzKI^Ed^W^4XXfxboSV8MwstxIq2~oruV(#gxy% z%)rIPR$9csz{t(6Bh8-A$;`kd&xNdrJ)aArs2Fk#vOY&XH#2D76=bGZJ`XbkigJ#8 zUSNI&oZWJ5S`BtG91igUJ8n)d;yTG5mZ(X#E~i% zVrJl~BAH5p7*g_yfkB#?1!B4|Ap>DHi+~iOdf^?y3!)%dtPXNxss>5si!n2B6^r9k zhE;D8L@y*DSe7z_hLj};86n4{Aqi5W#>6BZ84tSl!HlU|ikX3nIbRwi4#|fV3=9k_ zK`d~J|` z6~t6#mVB^LMobzy%nV!_x*)k}&=ROvkC}n17Nm)ZxmX{>2Kj=Cxz+%r%8H4Z1?(6N zLlAcs#5#UP4I^d-E`CN0V~{&dz@7&g!3-KM;?jzPD9bm4OXQn_w8KIaH1wejax2Ix zW^h=6_Sb+-V9B=xDRqN5J>QC%fve{q1B0|y8^ll+)_f%USXjZX%eMyU0hcYz-~--P zg5t;q8b`LEIAE@|1G@%fC0jL!4YpUu9%2#OKQ?>xI0CtcJ>LOcnAIvI<-Vht!x!QBofW>rWH$fH(duMQhguk{9{2|1=}Fzv>q;RDJW;KF_f z$OB$TBFyC!2g4%v^D>8K89+xXiFLU}cjx zh}2?}cQfE%lXr}i=Zer`lTQTGT1@f^%%BwrTv}>OVo;VAlRPJs3A(7y50qayn3y&E zL5VKQ(H=r>+G=D)*D+B1dyrNi;NHQoXgGCyc85vkWBgkwZ8Z>AJX2>yBv%>_y3^}H14wwL#0b58S zt`Q7M%OpJF!RjFfGs9Ga%!jB3yFp9?stJ_O zL178j12$6!G;0i+%mmwotlEr;xlWsrfkh($tnmN;|9Xu$5LXYhVNXmW9>fN_ zg_8kv%nk!+u^0H-T?Gaf1_m)Pk>V8~--C?+t7B#WEt3PQ15M9y)e18*urL*egQ^h` zFf#(g6a_OgSsB=B#lTEn4hFVbMKF^O#8d(^`9Vx&5ED{pvE!b6LWqfsPU2xlHdU)3Q(UL zv=4h7D9)-u?q|-AVrJmd)?@{5spG{AUUA98p~KF^p^*v-b$0L+s2ErwJ9sS|Xh{obE<{&`sT!0dbUE1bx!4%k zbabTcyp!$#1U6?ok<7gIGT9kSJa0qv9r zuLZOMt@MUW&LW-YW(!d$R{Is~H;^W=+HY{Sc9Y8K-b z<6$f6RA(rV%1;DE6dzmBL^w}}MVwolhpjjPbdz=xC~1fbvv7*%Co?l}3A2iUFB=sT z<`5I+6cgqW6Xq5Z<`EO-6%*zY6Xq8a7GPr2NQ2}bVL>rrAu(ZLabXdQbkNFH5uH%Z zqM7Op1!DOrpgxH#$RbX8b+P27#JM>^2PA=v)Irjw4AsUG5Ah(XWrBjbJe*?rX`s+x78e%e6w6Ns zIgwdhSb$S3KLf-z6BN;578hpY%+Ca6lQ>oe7&8%cieID=v$!yaAfFDKxG=Z4FuyoB zP_%tuMp;3$v*XjwDaZ@5f=7@aL-EEms1Q94WRhQVrJmt%+Ch7m=h^_ zL?B|8ec(geK*>rRN3udr8RE5|WCc1qDnXDVL69>+kSjq)0+z}U$r6&X1UYngU~*u6 z+&U^SKDt_%I4B7V@(2nh5UErc)e49)f&$>|A}D~{ZR`krAg3U?6p^6>g=&9+auEY) z%_Hc#(M{m82UL`Uc78H2RfEcTa3K#~iOtQlBq89+Otxfu)`7+C8V7#NF~OSdsFFzO01mu?5qT+F3A7#J8q zTZcf)e!yekpaa4-gWUrv`}i3(KudC=B_OB{1g)Op;?fRe%g+b(te^_m^Y^kcutD;( zjww?$NH2T-9#F-JC_GWrg3BiGd1AGoA{BlC`f{w}h;j_E)sS&SP4t;Xfb3ylVAu+dLkUI(7BK@MNU+H1aY7g}#*A9b`BzvO*y^}I3P1}bxwx3~uYz{e z$T1a(YA_UN%mLL}MY0+U1#BANODI7C+6fR7UcQtgU?CoH*{*z%vSGO%gnvM{jmu;`jFRVy$uu;}Wr znw3GF^#Dp?}9xIQL7Wf1Yv08fkFnXKmQ~v0~@ax zH&aop215Zt7ijx)QKkk%0cUtV@16+A(i-T_VnI(>_hfO>}m`#vPkhL$<=podb zcA%?;#JG_(3PCh-K&$bU2vAA^f6dP~rh+ z5(aSj$i#4kLE#Gns6olV#E{PDx(2cj4>YC(I&*eAXv_@M>gQtCWn$A}&MyHKb)f0? zd}anNF*a}*Kxdv&rrW{c1sN&sB())B+9GCf`T!>Z zabrFx50nZd4Y`ZX!(Fdc$HJ7K1Ina)%(_BFoSL8k5mpAaDi)^vGEna|im4jZk&y;1 zs^wy078BDb1Qi#cG81$#*$xH6s57N4&!kZVGKGm*qZmpzLg^+DEyO5q2VY-is|jD$#SHEgXk>xcUV#QWxr)JY zki?|X42pS(Tk|VGIUka1LGA?29fJBDOw1Z3AXN~x8Z98UIHa&)(kKP-FiH*#13}{% zZj1~JJ3(bY322`n7i0w!H>8HD2Gvcv0#FX98WI5)20R=((ro!+pu>%Y+499fG- z3K7)RfeM1!3A*x74yf4zR}N}4=rBuaGfHqnr9rKHjY?4KPzY)Y2U9gDUUirxxH&-A zR)amkB*D!tVGMH+$V^=(Np5y2Jr;IpW0+N-mXwYFx-lT{fLd|vwZFkl7I2>fv`%do zC@q0I8`U5gE;eyQ5|Ra-+X$^#QyCZ-v`d+g91L-x*gr;%GEnltE>(_Ossdd~qY^`; z3M2xp5g}s~7a15Bc7xpvsxNdonB)~SW`lYPT%i7l1*o0C3^}irms6t}RP5NZ=oqr; z>M>P=>zQg$58hCLLp*{R+;q_wW#$l%0B`t`R{$+Q1C>D9>`a_sQ^mQoJvfC}G-^Nw zDYNVHa>{cVb1*?`Kqf&Ja81Yrsq4hKwWZnNg&4#DCNXd|D8?nm4L;ZvVyS)P|NsA) z#A-oafT{r1b)dbKpaXxv{sUjT0V^Ou`o(xGK$q&leJ8JA?8KsD!lrA8;x%Os9TI#O zLW=Ly;lAUPS2u=*5j3cv{s6fY*{8lBpMw1&2CHMS`uiOd1H&FrycS7oA!=5TX%_21 zM=P;|qlkw?qYe}m;v7QE;7HNs<&am>Jfn8H+4)8#)^)Ap(7qE~usP$$6I;e<4K|_Io!5VamH-~~IhzT;<;xMQ+DsKRG zuSF*4xFz{S2qy;2NrG_v!JHBZ#|g~IgK$76^)ShoK{y&*dkK`|J^4$pyZ%)JJKrB*J3CrP6O4WO!B1=1B6(LHo?`y-66)M9myfD zVC>DJW6P#%g_3=A*u@Mr5N?x&G*{s6kXJAkWP&C#ZP1_)sO%Bv(&l910NW@A9>`*c zW^=c{|Nk?A6Ex1m56bg185kJ$g6=@!Vk+8&l=_*NHKu@SNLXkxDXqpOt=jafkc764nkU^7PPxn8X*8vkF!AM z(hg(O;e{jtPOx@vHeF**c?DxVgqxKSZdT9}LrF{=5Uud)1RlJ|CFB#(MH^B~@(TYL zwcatw^O}MtJoFTqVNJmkeMOTEW=$95l0nASj$1@dyu8D?= zVRR%|botP#lP{Y7|FjpJ+%QGZUMVDvgVu0>LWM;~fT@TJ$)(y_ z(EN=(kilx<83-KY@|`D3DF^3GW(FUqUm!hirfSeQ9B3067lbLM zFU-UYI*p5ssTwr*2_C1@V$tDXss_zv>IySK)Inq;Akv`u#c;@>rQo&x;3-AWlpwdZ zrVt}|N|1*Qw0}avSds%gtH#TzBLTVp2Hf=(X1ON~+9wE_i8yzUPl)lK7-Gs#47|}6 zGUvy~VCI6D^YdV2U^on_3lP(i;`)ebO3;icc>IE!9Xd7w8Xp0j90FSS_J@Ii0n}o* z_zr6PBA4F%ph;{C&?)oK9xrH!KnG+lx+++43@W-cCa^HDMZiQre^h_F{iVn1Y0#>u9X&Eu=KpTXRgEg{2m!HcqY2<)t$lCKn1_sc4ydZQ!7&JvJffN^@)Bswk z1)9~>(GX$)CkpTiQ5`8E2JmFBjv!3fmw`bVe4c|CH)Ks0A~CRo+M|%PAj4o92ull) zdiE%&PD9K(a4qFkQHbVh7yABr0j8iZ%Lk7`V!Hsw( zrfN_L#>Wy59wvaE%aX*v0N%?4$!202k)RdQ5S2O#kgAH!Kpe_2=4Jw00V)Mq#Iza3 zb%bE!6WZ|65vW?D_t4G*bi_id2(;1<6w44tq4vyYK@7%pJF2o>*nK$*v{D1q>q8so zSXajh8n>+b3)-y%+79~%ydF;ov>uO#iGfSC0VI>(0BTm`K_<+Y!Dr(zK|CQI0iH0> zYJ$mujxmDDL1G80U=y=Em$5KJ6;m~6Pcv^td50MVfJ zKwyR(Q?({YK#r+e3q6JDTC`zD7qT!*L>UMaJphS*fs697i0KOy1?eyp6jkWJ zlrk|xoXY}nDr+ssn@oHx5I6F%YAgY@R{7X!LB3<+V+XBaMEFN*9W#>#Xc-NY2512d zlLlz%43h?E(F~IYXt@lN256NGc#)6RIwlR!>KkSf)FK0>! zx-FodhY=IFT7fM3gx33@J3l}P2a=eW#S8?Bc7Wpd20VV5HF!aNWPu_JU4{a%WbrM~ znp7s{UeL14+9uG_VP=Ww+GZG|1%HUZe(V8eB}i~4k7>uw?TFja%x zvlwbDh>b87#Df_d2{BgKfD?4r1;a5=T>-Jtkh^FL!cYx}lR@r+NHa6lfX%4^IZ}uL zbPK5vvqlGK?SzgP#0~6FiX(zkqZ969HWrv?K^{W!7b^p3F6TJ7?E(obE{J7p#`$a# zQQ!dQhWHG0(Ylx+Kg0$xb}1~bOi4ubg045Ob%XN6BWpcC#d;7^wGU|Sh>NM(8#FQh zk5Nkuw5;0`G*uVDR1H!TuXT(WB5lORq;Zjjfep&l7iX#l8(58^d@{%gs1leCaDBi6 zy6=nO1UMamZ3T@cfZWH$R1J15)HE+f1{SvbUeFXMyDn%_6{J{;jXjc!iK!YS$sSP) zqL?7AVvnc=xt&eSU@I`HL>yxB@Ce!KYg=6tNn@ra>8)G_E2^h$2f|Mo56?N44@m zI{>)Vz(-K@oMvEPS_&dGZh{KtLrfYV_56%r%2*y^AwMJ7USk1>HT;ZV+ra4t6ei3J zrm!|4SR1Gr-3KaUz`77TkP~4%4NyG*CUCju4#+*=G8S^i9ykqwP2?70gt|zhAGGF_ zO;-%!Fo*=m8mNSpm6*6Vc+qi#FDM2<=bC}Wfw1olI0mVDn2IGqOKk%|*+#531Vk}a zgLwH0An{<30CQ~+$ha6h;RF$f;=Yx)Y2A`tLBg6#dfzHX{6=E(@HDo9# z4g^hEKsU{zFPnm{F)(C^?Srf_0PT4MrG-Fo5s2NZRs2MCMW-u{;_9>hOxdWmdGBK|s$Oc}* zT9gdRBA~1GKu2kS*E4A_Ffg0}l~b(XLq|1UfjZfckYi@cmjVSHI2u{N!3f%ez{~(z zM{pKo2NzT!SdN)nTNe_Pka0skh$JNZ#kC+2z{AAGq4A7`flZBrn_c$;#Jpw(28MH> zbs;7kpu0esYB`x1SlEgUK7P zUmnA70g0cM^8CCCL3b7UmfcL%;fxF{;>MgzA{y^O z^YdB|cjsGiFtF(gLO4tsA3-AwVAn!K@+~pcg(VGcYiK1_q277#M6A7{HSRz6=Zup$rV*Re>oC;LD*IiWwLfsu>s zayS|T=x`g*{+tyI3=A7UGrORPO(u=cpnzc#*Z2aa#h|ptcQ9Au7nl+k)A$Kth(j4- za1o8)U>Pwet?>uU71#I+rp2JN#y>DuT;o5O7K73n44}x8GP>RMNpV(yawe!w$gXtGRBC0yOD!giPoU%_Q45M3_I#)w_I#+yVoNsAhA>b%-^Iwl za0z55Br$(xU|`bWF4_t*2{L61aSOAqxHd1;REP*$>0<^4Cf(O;y4*!oMz9%Pw$e8s z6GS1&Oainb666F)V`gyyMrIuiwo;G{x(aNipdCEA5^SYUK&A+=mA(bh9Bg1ybvW2c zAArm;1E+XUasCxlUNBXIvVnB|G*A^Q1NNK}L7gNI(E++W9AdOE=#g(kmljgDPgLP0yTQ&IKW2p3Ndqlg9>y*dXbn3%s(6`YviCj$Qn7U zIwRmZnK)F1S!+Rd2(ogEb6J4y^n^MA6v?2)k2==Of^6XR%K6hl%c&FuA)(7F1QG|O zO0a9@z|8~+gO=Qhb7`kR%>pG9ofN2N)F3pnn>~?*Kn@o-G(*-Z1(DYkViK1qt_Ky# zr$FncLGBjk(&mOln#F;C|Nk?C*BNSj11&EFO=f@!T=0AvQ#FXm43>f30Sc<~LF>7h z!HXEVw8fzdx0%?%D+zVknb^T=2chkVhiJ>Mq3sBE24yW+JAxT}X3`Z*IH3%plLKD$(Q1K$fpz#A-vcZZ< z22lT76j9taB`z+;R0wJ;LrAe=DR2n_N_(6PcUc%1t|Hv~6jC87K%!Wf zQ-~9qF}Q@d*z)ItLLS_-f;bhN{qBGw9-RHS*-P(&4_(*M$8bGIeh(`H8zdP+(s1zw zRt7dm%xOW2IbN{Cg;~H(7iJX^W)l%+7h(aAo$IKumx3n5g}DW}btDA2h1mqT^E+7? z*g&hQK{?YR2Xtu`s|IM>kmXzk1_t)h_n@;Oc?5YZK@&}aJi_dPJo!67wKI5Gpnwpo zAW!~I5Wk3(flWIRl0u+rAZcAkh!s_ICTM>NXgxnnYd+|jE3ke=K^|}>1qGTQ4I=63i9eG3i2ZK@gnpsgX@C?t1zD+pN^s+A3`x7LNS*a%o6re zP#g;L3-aq!2(s'{)JLBmj2Q;fw!Ww?K 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 Z0#/dev/null || true + - name: Copy images to wiki/wiki folder + shell: bash + run: | + mkdir docs/wiki + cp docs/*.svg docs/wiki/ 2>/dev/null || true + cp docs/*.png docs/wiki/ 2>/dev/null || true + cp docs/*.jpg docs/wiki/ 2>/dev/null || true + cp docs/*.gif docs/wiki/ 2>/dev/null || true + cp docs/*.mp4 docs/wiki/ 2>/dev/null || true + - name: Commit and push changes + run: | + git config --global user.name "GitHub Action" + git config --global user.email "action@github.com" + git add -A + git commit -m "Automatically update Markdown files" || echo "No changes to commit" + - uses: Andrew-Chen-Wang/github-wiki-action@v4.4.0 + with: + path: docs/ + ignore: | + '**/*.xlsm' + '**/*.pptx' + '**/*.shproj' From bb5779a9415c13b025532ad5f7720c24fcac2a85 Mon Sep 17 00:00:00 2001 From: softworkz Date: Wed, 15 Oct 2025 16:05:13 +0200 Subject: [PATCH 58/66] Add docs project to solution --- docs/md-styles.css | 49 +++++++++++++++++---------------------------- src/ElectronNET.sln | 13 ++++++++++++ 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/docs/md-styles.css b/docs/md-styles.css index 798d353..a819f2f 100644 --- a/docs/md-styles.css +++ b/docs/md-styles.css @@ -7073,15 +7073,15 @@ body { word-wrap: break-word; } -body div, body p, body ul { - color: var(--font-color); - font-family: "Roboto", sans-serif !important; - line-height: 1.5 !important; - font-size: 15px !important; - /* -ms-text-size-adjust: 100%; + body div, body p, body ul { + color: var(--font-color); + font-family: "Roboto", sans-serif !important; + line-height: 1.5 !important; + font-size: 15px !important; + /* -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;*/ - word-wrap: break-word; -} + word-wrap: break-word; + } body, p, blockquote, ul, ol, dl, table, pre, code, tr { color: var(--font-color); @@ -7218,19 +7218,6 @@ article li { } -/* NAVBAR */ - -.navbar-brand > img { - color: var(--header-ft-color); -} - -b, optgroup, strong { - font-weight: 500; -} - -.article img { - margin: 0.6rem 0; -} /* SIDEBAR */ @@ -7854,17 +7841,17 @@ H2.card-title { } body { -padding: 20px !important; + padding: 20px !important; } -body > div:first-child > hr + p { - display: none; -} + body > div:first-child > hr + p { + display: none; + } -body > div:first-child hr { - display: none; -} + body > div:first-child hr { + display: none; + } -body > div:first-child { - margin-top: 20px; -} + body > div:first-child { + margin-top: 20px; + } diff --git a/src/ElectronNET.sln b/src/ElectronNET.sln index 09b8490..55de11a 100644 --- a/src/ElectronNET.sln +++ b/src/ElectronNET.sln @@ -54,9 +54,19 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Test Apps", "Test Apps", "{EDCBFC49-2AEE-4BAF-9368-4409298C52FC}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{985D39A7-5216-4945-8167-2FD0CB387BD8}" + ProjectSection(SolutionItems) = preProject + ..\.github\workflows\ci.yml = ..\.github\workflows\ci.yml + EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "_build", "..\nuke\_build.csproj", "{015CB06B-6CAE-209F-E050-21C3ACA5FE9F}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "!Docs", "!Docs", "{D36CDFFD-3438-42E4-A7FF-88BA19AC4964}" + ProjectSection(SolutionItems) = preProject + ..\.github\workflows\publish-wiki.yml = ..\.github\workflows\publish-wiki.yml + EndProjectSection +EndProject +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Docs", "..\docs\Docs.shproj", "{06CAADC7-DE5B-47B4-AB2A-E9501459A2D1}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -93,6 +103,8 @@ Global {EE38A326-5DE8-AF09-9EB9-DF0878938783}.Release|Any CPU.Build.0 = Release|Any CPU {015CB06B-6CAE-209F-E050-21C3ACA5FE9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {015CB06B-6CAE-209F-E050-21C3ACA5FE9F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {06CAADC7-DE5B-47B4-AB2A-E9501459A2D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {06CAADC7-DE5B-47B4-AB2A-E9501459A2D1}.Release|Any CPU.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -106,6 +118,7 @@ Global {DD10D21A-D131-1D9C-33F9-406046E0C5B0} = {1BB6F634-2831-4496-83A6-BC6761DCEC8D} {EE38A326-5DE8-AF09-9EB9-DF0878938783} = {EDCBFC49-2AEE-4BAF-9368-4409298C52FC} {015CB06B-6CAE-209F-E050-21C3ACA5FE9F} = {985D39A7-5216-4945-8167-2FD0CB387BD8} + {06CAADC7-DE5B-47B4-AB2A-E9501459A2D1} = {D36CDFFD-3438-42E4-A7FF-88BA19AC4964} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {81A62E71-9E04-4EFE-AD5C-23165375F8EF} From 0c5cc3ba9d01cf4448fa667b4751e93f783b30a8 Mon Sep 17 00:00:00 2001 From: softworkz Date: Tue, 14 Oct 2025 09:52:44 +0200 Subject: [PATCH 59/66] AI-written docs --- docs/Core/Advanced-Migration-Topics.md | 122 ++++++--- docs/Core/Migration-Guide.md | 196 ++++++++++--- docs/GettingStarted/ASP.Net.md | 199 +++++++++++--- docs/GettingStarted/Console-App.md | 209 ++++++++++++-- docs/GettingStarted/Debugging.md | 209 +++++++++++++- docs/GettingStarted/Package-Building.md | 347 ++++++++++++++++++++---- docs/GettingStarted/Startup-Methods.md | 248 ++++++++++++++++- docs/Home.md | 59 +++- docs/RelInfo/Package-Description.md | 102 +++++++ 9 files changed, 1482 insertions(+), 209 deletions(-) create mode 100644 docs/RelInfo/Package-Description.md diff --git a/docs/Core/Advanced-Migration-Topics.md b/docs/Core/Advanced-Migration-Topics.md index 4888ce1..a1b5a70 100644 --- a/docs/Core/Advanced-Migration-Topics.md +++ b/docs/Core/Advanced-Migration-Topics.md @@ -1,63 +1,113 @@ # Advanced Migration Topics -// 1. WebPort -// specifying the WebPort in the manifest is no longer supported -// from commit message: -//- Removed the 'electronWebPort' handling -// When ASP.Net is launched first, then the information which port it -// should use would be coming too late; anyway, there's no need for -// letting the port number round-trip all the way through the manifest -// file, loaded by main.js and then sent to dotnet. -// +This guide covers advanced scenarios and edge cases that may require additional configuration when migrating to ElectronNET.Core. -if the asp web port needs to be specified manually, this can be by setting it via MSBuild like this: +## Custom ASP.NET Port Configuration - - - +### Port Configuration Changes +**Previous Approach:** +Specifying the WebPort in `electron.manifest.json` is no longer supported because the ASP.NET-first launch mode makes this timing-dependent. -// 2. ElectronHostHook +**New Approach:** +Configure custom ASP.NET ports through MSBuild metadata: +```xml + + + + +``` -Users who have a custom ElectronHostHook in their project, need to do the following: +**Usage in Code:** +```csharp +// Access configured ports at runtime +var port = int.Parse(Electron.App.GetEnvironmentVariable("AspNetHttpPort") ?? "5000"); +``` +## Custom ElectronHostHook Configuration -In their ElectronHostHook\package.json, they need to set typescript to 5.9.3 or later. If @types/node is presnt, it must be 22.x +### TypeScript and Node.js Updates +**Update package.json:** +```json +{ "devDependencies": { "eslint": "^9.37.0", - "@types/node": "^22.18", - "typescript": "^5.9.3" + "@types/node": "^22.18", + "typescript": "^5.9.3" }, - "dependencies": { + "dependencies": { "archiver-utils": "^2.1.0", "socket.io": "^4.8.1", "exceljs": "^1.10.0" - } + } } +``` -Next step is to edit the project file and add a reference like this +**Update Project File:** +```xml + - + + commonjs + true + ElectronHostHook/tsconfig.json + -then the following propertygroup: + + + + + + + +``` - - commonjs - true - ElectronHostHook/tsconfig.json - +### Integration Benefits +- **Modern TypeScript** - Latest language features and better type checking +- **Updated Node.js Types** - Compatibility with Node.js 22.x APIs +- **ESLint Integration** - Better code quality and consistency +- **MSBuild Compilation** - Integrated with Visual Studio build process -and this itemgroup: +## Troubleshooting Advanced Scenarios - - - - - - - +### Multi-Project Solutions +When using ElectronNET.Core in multi-project solutions: +1. **Install ElectronNET.Core.Api** in class library projects +2. **Install ElectronNET.Core** only in the startup project +3. **Share configuration** through project references or shared files + +### Custom Build Processes + +For advanced build customization: + +```xml + + custom\output\path + custom\node_modules + +``` + +### Environment-Specific Configuration + +Handle different environments with conditional configuration: + +```xml + + Development + + + + Production + +``` + +## Next Steps + +- **[Migration Guide](Migration-Guide.md)** - Complete migration process +- **[What's New?](What's-New.md)** - Overview of all ElectronNET.Core features +- **[Getting Started](../GettingStarted/ASP.Net.md)** - Development workflows diff --git a/docs/Core/Migration-Guide.md b/docs/Core/Migration-Guide.md index d8d9c57..08c0e24 100644 --- a/docs/Core/Migration-Guide.md +++ b/docs/Core/Migration-Guide.md @@ -1,70 +1,184 @@ # Migration Guide -// Explain migration steps: +Migrating from previous versions of Electron.NET to ElectronNET.Core is straightforward but requires several important changes. This guide walks you through the process step by step. -Uninstall existing package ElectronNET.API +## 📋 Prerequisites -// Install new packages: +Before starting the migration: +- **Backup your project** - Ensure you have a working backup +- **Update development tools** - Install Node.js 22.x and .NET 8.0+ +- **Review current setup** - Note your current Electron and ASP.NET versions -```ps1 -PM> Install-Package ElectronNET.Core +## 🚀 Migration Steps -PM> Install-Package ElectronNET.Core.AspNet +### Step 1: Update NuGet Packages + +**Uninstall old packages:** +```powershell +PM> Uninstall-Package ElectronNET.API ``` -// add link to package type description: [text](../Releases/Package-Description.md) -// the API package is a dependency of .Core, so it's auto-incldued +**Install new packages:** +```powershell +PM> Install-Package ElectronNET.Core +PM> Install-Package ElectronNET.Core.AspNet # For ASP.NET projects +``` + +> **Note**: The API package is automatically included as a dependency of `ElectronNET.Core`. See [Package Description](../Releases/Package-Description.md) for details about the package structure. -// Edit Properties\electron-builder.json -// it's auto-created: In VS after nuget restore, otherwise on first build - even when that fails +### Step 2: Configure Project Settings -// Now look at the electron-manifest.json file -// 1. Manually merge everything under the 'build' property into the -// electron-builder file (omitting the build node, only its content is to be merged) -// 2. Open the project designer in VS and enter the values from the manifest file into the fields -// 3. Delete the manifest file -// +**Auto-generated Configuration:** +ElectronNET.Core automatically creates `electron-builder.json` during the first build or NuGet restore. No manual configuration is needed for basic setups. -// Check ASP.Net core startup (program.cs or statup.cs, typically) -// Find the UseElectron() extension method call -// it will have an error. it needs a 3rd parameter now: the onAppReady callback. -// set this to a callback function. this gets called just in the right moment for you -// to start things going (like accessing ElectronNET classes) +**Migrate Existing Configuration:** +If you have an existing `electron.manifest.json` file: -### Program.cs +1. **Open the generated `electron-builder.json`** file in your project +2. **Locate the 'build' section** in your old `electron.manifest.json` +3. **Copy the contents** of the build section (not the "build" key itself) into the new `electron-builder.json` +4. **Use Visual Studio Project Designer** to configure Electron settings through the UI +5. **Delete the old `electron.manifest.json`** file -```csharp +**Alternative: Manual Configuration** +You can also manually edit `electron-builder.json`: + +```json +{ + "productName": "My Electron App", + "appId": "com.mycompany.myapp", + "directories": { + "output": "release" + }, + "win": { + "target": "nsis", + "icon": "assets/app.ico" + } +} +``` + +## 🎯 Testing Migration + +After completing the migration steps: + +1. **Build your project** to ensure no compilation errors +2. **Test debugging** using the new ASP.NET-first approach +3. **Verify packaging** works with the new configuration +4. **Check cross-platform builds** if targeting multiple platforms + +## 🚨 Common Migration Issues + +### Build Errors +- **Missing RuntimeIdentifier**: Ensure `win-x64` is set +- **Node.js version**: Verify Node.js 22.x is installed and in PATH +- **Package conflicts**: Clean NuGet cache if needed + +### Runtime Errors +- **Port conflicts**: Update URLs in startup code to match your configuration +- **Missing electron-builder.json**: Trigger rebuild or manual NuGet restore +- **Process termination**: Use .NET-first startup mode for better cleanup + +## 🚀 Next Steps + +- **[What's New?](What's-New.md)** - Complete overview of ElectronNET.Core features +- **[Advanced Migration Topics](Advanced-Migration-Topics.md)** - Handle complex scenarios +- **[Getting Started](GettingStarted/ASP.Net.md)** - Learn about new development workflows + +## 💡 Migration Benefits + +✅ **Simplified Configuration** - No more CLI tools or JSON files +✅ **Better Debugging** - Native Visual Studio experience with Hot Reload +✅ **Modern Architecture** - .NET-first process lifecycle +✅ **Cross-Platform Ready** - Build Linux apps from Windows +✅ **Future-Proof** - Flexible Electron version selection + +### Step 3: Update Startup Code + +**Update UseElectron() calls** to include the new callback parameter. This callback executes at the right moment to initialize your Electron UI. + +#### Modern ASP.NET Core (WebApplication) + +```csharp using ElectronNET.API; using ElectronNET.API.Entities; - public static void Main(string[] args) - { - WebHost.CreateDefaultBuilder(args) - .UseElectron(args, ElectronAppReady) - .UseStartup() - .Build() - .Run(); - } +var builder = WebApplication.CreateBuilder(args); - public static async Task ElectronAppReady() - { - var browserWindow = await Electron.WindowManager.CreateWindowAsync( - new BrowserWindowOptions { Show = false }); +// Enable Electron.NET with callback +builder.WebHost.UseElectron(args, async () => +{ + var browserWindow = await Electron.WindowManager.CreateWindowAsync( + new BrowserWindowOptions { Show = false }); - browserWindow.OnReadyToShow += () => browserWindow.Show(); - } + await browserWindow.WebContents.LoadURLAsync("https://localhost:7001"); + browserWindow.OnReadyToShow += () => browserWindow.Show(); +}); + +var app = builder.Build(); +app.Run(); +``` + +#### Traditional ASP.NET Core (IWebHostBuilder) + +```csharp +using ElectronNET.API; +using ElectronNET.API.Entities; + +public static void Main(string[] args) +{ + CreateWebHostBuilder(args).Build().Run(); +} + +public static IWebHostBuilder CreateWebHostBuilder(string[] args) => + WebHost.CreateDefaultBuilder(args) + .UseElectron(args, ElectronAppReady) + .UseStartup(); + +// Electron callback +async Task ElectronAppReady() +{ + var browserWindow = await Electron.WindowManager.CreateWindowAsync( + new BrowserWindowOptions { Show = false }); + + await browserWindow.WebContents.LoadURLAsync("https://localhost:5001"); + browserWindow.OnReadyToShow += () => browserWindow.Show(); +} ``` -// Also show an example for the other case with IWebHostBuilder and Startup class +### Step 4: Update Development Tools +**Node.js Upgrade:** +ElectronNET.Core requires Node.js 22.x. Update your installation: +**Windows:** +1. Download from [nodejs.org](https://nodejs.org) +2. Run the installer +3. Verify: `node --version` should show v22.x.x -// Next, explain that the 'watch' feature is no longer supported, now that proper debugging with hot reload is possible. +**Linux:** +```bash +# Using Node Version Manager (recommended) +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash +source ~/.bashrc +nvm install 22 +nvm use 22 +# Or using package manager +sudo apt update +sudo apt install nodejs=22.* +``` -// Nodejs needs to be updated to 22.x -// Important. Explain how to (for win and linux) +### Step 5: Update Debugging Setup +**Watch Feature Removal:** +The old 'watch' feature is no longer supported. Instead, use the new ASP.NET-first debugging with Hot Reload: + +- **Old approach**: Manual process attachment and slow refresh +- **New approach**: Native Visual Studio debugging with Hot Reload +- **Benefits**: Faster development cycle, better debugging experience + +**Update Launch Settings:** +Replace old watch configurations with new debugging profiles. See [Debugging](GettingStarted/Debugging.md) for detailed setup instructions. diff --git a/docs/GettingStarted/ASP.Net.md b/docs/GettingStarted/ASP.Net.md index 718b0ed..679ce32 100644 --- a/docs/GettingStarted/ASP.Net.md +++ b/docs/GettingStarted/ASP.Net.md @@ -1,57 +1,190 @@ -## 🛠 Requirements to Run +# ASP.NET Core Setup - Our API uses .NET 6/8, so our +ASP.NET Core remains the recommended approach for complex web applications with ElectronNET.Core, providing all the benefits of the ASP.NET ecosystem along with enhanced Electron integration. -Also you should have installed: +## 🛠 System Requirements -* .NET 6/8 or later -* OS - minimum base OS is the same as [.NET 6](https://github.com/dotnet/core/blob/main/release-notes/6.0/supported-os.md) / [.NET 8](https://github.com/dotnet/core/blob/main/release-notes/8.0/supported-os.md). -* NodeJS (at least [Version 22.x](https://nodejs.org)) +### Required Software +- **.NET 8.0** or later +- **Node.js 22.x** or later ([Download here](https://nodejs.org)) +- **Visual Studio 2022** (recommended) or other .NET IDE +### Supported Operating Systems +- **Windows 10/11** (x64, ARM64) +- **macOS 11+** (Intel, Apple Silicon) +- **Linux** (most distributions with glibc 2.31+) -## 👩‍🏫 Usage with ASP.Net +> **Note**: For Linux development on Windows, install [WSL2](https://docs.microsoft.com/windows/wsl/install) to build and debug Linux packages. -- Create a new ASP.Net Core project -- Install the following two nuget packages: +## 🚀 Quick Start -```ps1 +### 1. Create ASP.NET Core Project + +Create a new ASP.NET Core Web App in Visual Studio: + +```bash +dotnet new webapp -n MyElectronWebApp +cd MyElectronWebApp +``` + +### 2. Install NuGet Packages + +```powershell PM> Install-Package ElectronNET.Core - PM> Install-Package ElectronNET.Core.AspNet ``` -### Enable Electron.NET on Startup +> **Note**: `ElectronNET.Core.AspNet` provides ASP.NET-specific runtime components and should be used alongside `ElectronNET.Core`. -To do so, use the `UseElectron` extension method on a `WebApplicationBuilder`, an `IWebHostBuilder` or any descendants. +### 3. Configure Program.cs -> [!NOTE] -> New in Electron.NET Core is that you provide a callback method as an argument to `UseElectron()`, which ensures that you get to know the right moment to set up your application UI. +Update your `Program.cs` to enable Electron.NET: -### Program.cs - -```csharp +```csharp using ElectronNET.API; using ElectronNET.API.Entities; - public static void Main(string[] args) - { - WebHost.CreateDefaultBuilder(args) - .UseElectron(args, ElectronAppReady) - .UseStartup() - .Build() - .Run(); - } +var builder = WebApplication.CreateBuilder(args); - public static async Task ElectronAppReady() - { - var browserWindow = await Electron.WindowManager.CreateWindowAsync( - new BrowserWindowOptions { Show = false }); +// Enable Electron.NET with callback for UI setup +builder.WebHost.UseElectron(args, ElectronAppReady); - browserWindow.OnReadyToShow += () => browserWindow.Show(); - } +// Add services to the container +builder.Services.AddControllersWithViews(); + +var app = builder.Build(); + +// Configure the HTTP request pipeline +if (!app.Environment.IsDevelopment()) +{ + app.UseExceptionHandler("/Home/Error"); + app.UseHsts(); +} + +app.UseHttpsRedirection(); +app.UseStaticFiles(); +app.UseRouting(); +app.UseAuthorization(); + +app.MapControllerRoute( + name: "default", + pattern: "{controller=Home}/{action=Index}/{id?}"); + +app.Run(); + +// Electron initialization callback +async Task ElectronAppReady() +{ + var browserWindow = await Electron.WindowManager.CreateWindowAsync( + new BrowserWindowOptions + { + Width = 1200, + Height = 800, + Show = false, + WebPreferences = new WebPreferences + { + NodeIntegration = false, + ContextIsolation = true + } + }); + + // Load your ASP.NET application + await browserWindow.WebContents.LoadURLAsync("https://localhost:7001"); + + browserWindow.OnReadyToShow += () => browserWindow.Show(); +} +``` + +### 4. Alternative: IWebHostBuilder Setup + +For projects using the traditional `Startup.cs` pattern: + +```csharp +public static void Main(string[] args) +{ + CreateWebHostBuilder(args).Build().Run(); +} + +public static IWebHostBuilder CreateWebHostBuilder(string[] args) => + WebHost.CreateDefaultBuilder(args) + .UseElectron(args, ElectronAppReady) + .UseStartup(); + +// Electron callback (same as above) +async Task ElectronAppReady() +{ + var browserWindow = await Electron.WindowManager.CreateWindowAsync( + new BrowserWindowOptions { Show = false }); + + await browserWindow.WebContents.LoadURLAsync("https://localhost:5001"); + browserWindow.OnReadyToShow += () => browserWindow.Show(); +} +``` + +## 🔧 Configuration + +### Project File Settings + +Configure Electron.NET through MSBuild properties in your `.csproj`: + +```xml + + net8.0 + win-x64 + My ASP.NET Electron App + MyApp + ``` + +## 🎨 Customization + +### Window Configuration + +Customize the main window appearance: + +```csharp +var options = new BrowserWindowOptions +{ + Width = 1400, + Height = 900, + MinWidth = 800, + MinHeight = 600, + Frame = true, + TitleBarStyle = TitleBarStyle.Default, + Icon = "wwwroot/favicon.ico" +}; +``` + +### Multiple Windows + +Create additional windows for different parts of your application: + +```csharp +var settingsWindow = await Electron.WindowManager.CreateWindowAsync( + new BrowserWindowOptions + { + Width = 600, + Height = 400, + Parent = browserWindow, + Modal = true + }, + "https://localhost:7001/settings"); +``` + +## 🚀 Next Steps + +- **[Debugging](Debugging.md)** - Learn about ASP.NET debugging features +- **[Package Building](Package-Building.md)** - Create distributable packages +- **[Startup Methods](Startup-Methods.md)** - Understanding launch scenarios + +## 💡 Benefits of ASP.NET + Electron + +✅ **Full Web Stack** - Use MVC, Razor Pages, Blazor, and all ASP.NET features +✅ **Hot Reload** - Edit ASP.NET code and see changes instantly +✅ **Rich Ecosystem** - Access to thousands of ASP.NET packages +✅ **Modern Development** - Latest C# features and ASP.NET patterns +✅ **Scalable Architecture** - Build complex, maintainable applications diff --git a/docs/GettingStarted/Console-App.md b/docs/GettingStarted/Console-App.md index f42e266..c11d787 100644 --- a/docs/GettingStarted/Console-App.md +++ b/docs/GettingStarted/Console-App.md @@ -1,13 +1,72 @@ -// Understand this code so you can explain how to set it up with console project +# Console Application Setup -namespace ElectronNET.WebApp +One of the most significant breakthroughs in ElectronNET.Core is the ability to build Electron applications using simple console applications instead of requiring ASP.NET Core. This removes a major barrier and enables many more use cases. + +## 🎯 What You Can Build + +Console applications with ElectronNET.Core support multiple content scenarios: + +- **File System HTML/JS** - Serve static web content directly from the file system +- **Remote Server Integration** - Connect to existing web servers or APIs +- **Lightweight Architecture** - Avoid ASP.NET overhead when not needed +- **Simplified Deployment** - Package and distribute with minimal dependencies + +## 📋 Prerequisites + +Before starting, ensure you have: + +- **.NET 8.0** or later +- **Node.js 22.x** or later +- **Visual Studio 2022** (recommended) or Visual Studio Code + +## 🚀 Quick Start + +### 1. Create Console Application + +Create a new Console Application project in Visual Studio: + +```bash +dotnet new console -n MyElectronApp +cd MyElectronApp +``` + +### 2. Install NuGet Packages + +```powershell +PM> Install-Package ElectronNET.Core +``` + +> **Note**: The API package is automatically included as a dependency of `ElectronNET.Core`. + +### 3. Configure Project File + +Add the Electron.NET configuration to your `.csproj` file: + +```xml + + Exe + net8.0 + win-x64 + + + + + +``` + +### 4. Implement Basic Structure + +Here's a complete console application example: + +```csharp +using System; +using System.Threading.Tasks; +using ElectronNET.API.Entities; + +namespace MyElectronApp { - using System; - using System.Threading.Tasks; - using ElectronNET.API.Entities; - public class Program { public static async Task Main(string[] args) @@ -16,37 +75,143 @@ namespace ElectronNET.WebApp try { + // Start Electron runtime await runtimeController.Start(); - await runtimeController.WaitReadyTask; - await ElectronBootstrap(); + // Initialize your Electron app + await InitializeApp(); + // Wait for shutdown await runtimeController.WaitStoppedTask; } catch (Exception ex) { - Console.WriteLine(ex); - await runtimeController.Stop().ConfigureAwait(false); - - await runtimeController.WaitStoppedTask.WaitAsync(TimeSpan.FromSeconds(2)).ConfigureAwait(false); + Console.WriteLine($"Error: {ex.Message}"); + await runtimeController.Stop(); + await runtimeController.WaitStoppedTask.WaitAsync(TimeSpan.FromSeconds(2)); } } - public static async Task ElectronBootstrap() + private static async Task InitializeApp() { - //AddDevelopmentTests(); + // Create main window + var browserWindow = await Electron.WindowManager.CreateWindowAsync( + new BrowserWindowOptions + { + Width = 1200, + Height = 800, + Show = false, + WebPreferences = new WebPreferences + { + NodeIntegration = false, + ContextIsolation = true + } + }); - var browserWindow = await Electron.WindowManager.CreateWindowAsync(new BrowserWindowOptions - { - Width = 1152, - Height = 940, - Show = false, - }, "https://github.com/ElectronNET/Electron.NET"); - - await browserWindow.WebContents.Session.ClearCacheAsync(); + // Load your content (file system, remote URL, etc.) + await browserWindow.WebContents.LoadURLAsync("https://example.com"); + // Show window when ready browserWindow.OnReadyToShow += () => browserWindow.Show(); } } } +``` + +## 📁 Content Sources + +### File System Content + +Serve HTML/JS files from your project: + +```csharp +// In your project root, create wwwroot/index.html +await browserWindow.WebContents.LoadFileAsync("wwwroot/index.html"); +``` + +### Remote Content + +Load content from any web server: + +```csharp +await browserWindow.WebContents.LoadURLAsync("https://your-server.com/app"); +``` + +### Development Server + +For development, you can run a simple HTTP server: + +```csharp +// Add this for development +if (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Development") +{ + await browserWindow.WebContents.LoadURLAsync("http://localhost:3000"); +} +``` + +## 🔧 Configuration Options + +### Project Configuration + +Configure Electron settings through MSBuild properties in your `.csproj`: + +```xml + + My Electron App + MyApp + Your Name + +``` + +### Runtime Configuration + +Access configuration at runtime: + +```csharp +var app = await Electron.App.GetAppAsync(); +Console.WriteLine($"App Name: {app.Name}"); +``` + +## 🎨 Customization + +### Window Options + +Customize your main window: + +```csharp +var options = new BrowserWindowOptions +{ + Width = 1400, + Height = 900, + MinWidth = 800, + MinHeight = 600, + Frame = true, + Title = "My Custom App", + Icon = "assets/app-icon.png" +}; +``` + +### Multiple Windows + +Create additional windows as needed: + +```csharp +var settingsWindow = await Electron.WindowManager.CreateWindowAsync( + new BrowserWindowOptions { Width = 600, Height = 400, Modal = true }, + "app://settings.html"); +``` + +## 🚀 Next Steps + +- **[Debugging](Debugging.md)** - Learn about debugging console applications +- **[Package Building](Package-Building.md)** - Create distributable packages +- **[Migration Guide](../Core/Migration-Guide.md)** - Moving from ASP.NET projects + +## 💡 Benefits of Console Apps + +✅ **Simpler Architecture** - No ASP.NET complexity when not needed +✅ **Flexible Content** - Use any HTML/JS source +✅ **Faster Development** - Less overhead for simple applications +✅ **Easy Deployment** - Minimal dependencies +✅ **Better Performance** - Lighter weight than full web applications diff --git a/docs/GettingStarted/Debugging.md b/docs/GettingStarted/Debugging.md index 66d1a79..b4a073e 100644 --- a/docs/GettingStarted/Debugging.md +++ b/docs/GettingStarted/Debugging.md @@ -1,14 +1,16 @@ # Debugging +ElectronNET.Core transforms the debugging experience by providing native Visual Studio integration with multiple debugging modes. No more complex setup or manual process attachment—debugging now works as expected for .NET developers. -explain the ease of debugging and everything from what you've already read. +## 🎯 Debugging Modes +ElectronNET.Core supports three main debugging approaches, all configured through Visual Studio's launch profiles: -This config enables all three possible ways for unpackaged debugging: +### 1. ASP.NET-First Debugging (Recommended) +Debug your .NET code directly with full Hot Reload support: -The first and last are working by default (newly created prject). The 2nd one needs to the added manually, if desired. - +```json { "profiles": { "ASP.Net (unpackaged)": { @@ -16,7 +18,83 @@ The first and last are working by default (newly created prject). The 2nd one ne "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }, - "applicationUrl": "http://localhost:8001/" + "applicationUrl": "https://localhost:7001/" + } + } +} +``` + +**Benefits:** +- ✅ Full C# debugging with breakpoints +- ✅ Hot Reload for ASP.NET code +- ✅ Edit-and-continue functionality +- ✅ Native Visual Studio debugging experience + +### 2. Electron-First Debugging + +Debug the Electron process when you need to inspect native Electron APIs: + +```json +{ + "profiles": { + "Electron (unpackaged)": { + "commandName": "Executable", + "executablePath": "node", + "commandLineArgs": "node_modules/electron/cli.js main.js -unpackedelectron", + "workingDirectory": "$(TargetDir).electron", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} +``` + +**Benefits:** +- ✅ Debug Electron main process +- ✅ Inspect native Electron APIs +- ✅ Node.js debugging capabilities + +### 3. Cross-Platform WSL Debugging + +Debug Linux builds directly from Windows Visual Studio: + +```json +{ + "profiles": { + "WSL": { + "commandName": "WSL2", + "launchUrl": "http://localhost:7001/", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "ASPNETCORE_URLS": "http://localhost:7001/" + }, + "distributionName": "" + } + } +} +``` + +**Benefits:** +- ✅ Debug Linux applications from Windows +- ✅ Test Linux-specific behavior +- ✅ Validate cross-platform compatibility + +## 🔧 Setup Instructions + +### 1. Configure Launch Settings + +Add the debugging profiles to `Properties/launchSettings.json`: + +```json +{ + "profiles": { + "ASP.Net (unpackaged)": { + "commandName": "Project", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:7001/" }, "Electron (unpackaged)": { "commandName": "Executable", @@ -29,15 +107,130 @@ The first and last are working by default (newly created prject). The 2nd one ne }, "WSL": { "commandName": "WSL2", - "launchUrl": "http://localhost:8001/", + "launchUrl": "http://localhost:7001/", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development", - "ASPNETCORE_URLS": "http://localhost:8001/" + "ASPNETCORE_URLS": "http://localhost:7001/" }, "distributionName": "" } } } +``` -Important: The runtime identifier needs to be changed in the project when switching between Windows and WSL. +### 2. Switch Runtime Identifiers +When switching between Windows and WSL debugging: + +1. **Right-click your project** in Solution Explorer +2. **Select "Edit Project File"** +3. **Update the RuntimeIdentifier**: + +```xml + +win-x64 + + +linux-x64 +``` + +### 3. Enable WSL Debugging + +For WSL debugging, ensure: + +- **WSL2 is installed** and configured +- **Linux distribution** is set in the launch profile +- **Project targets Linux RID** for WSL debugging + +## 🚀 Debugging Workflow + +### ASP.NET-First Debugging (Default) + +1. **Select "ASP.Net (unpackaged)"** profile in Visual Studio +2. **Press F5** to start debugging +3. **Set breakpoints** in your C# code +4. **Use Hot Reload** to edit ASP.NET code during runtime +5. **Stop debugging** when finished + +### Electron Process Debugging + +1. **Select "Electron (unpackaged)"** profile +2. **Press F5** to start debugging +3. **Attach to Electron process** if needed +4. **Debug Node.js and Electron APIs** + +### Cross-Platform Debugging + +1. **Set RuntimeIdentifier** to `linux-x64` +2. **Select "WSL"** profile +3. **Press F5** to debug in WSL +4. **Test Linux-specific behavior** + +## 🔍 Debugging Tips + +### Hot Reload + +- **Works with ASP.NET-first debugging** +- **Edit Razor views, controllers, and pages** +- **See changes instantly** without restart +- **Preserves application state** + +### Breakpoint Debugging + +```csharp +// Set breakpoints here +public async Task Index() +{ + var data = await GetData(); // ← Breakpoint + return View(data); +} +``` + +### Process Management + +- **ASP.NET-first mode** automatically manages Electron process lifecycle +- **Proper cleanup** on debugging session end +- **No manual process killing** required + +## 🛠 Troubleshooting + +### Common Issues + +**"Electron process not found"** +- Ensure Node.js 22.x is installed +- Check that packages are restored (`dotnet restore`) +- Verify RuntimeIdentifier matches your target platform + +**"WSL debugging fails"** +- Install and configure WSL2 +- Ensure Linux distribution is properly set up +- Check that project targets correct RID + +**"Hot Reload not working"** +- Use ASP.NET-first debugging profile +- Ensure ASPNETCORE_ENVIRONMENT=Development +- Check for compilation errors + +## 🎨 Visual Debugging + +*Placeholder for image showing Visual Studio debugging interface with Electron.NET* + +The debugging interface provides familiar Visual Studio tools: +- **Locals and Watch windows** for variable inspection +- **Call Stack** for method call tracing +- **Immediate Window** for runtime evaluation +- **Hot Reload** indicator for edit-and-continue + +## 🚀 Next Steps + +- **[Startup Methods](Startup-Methods.md)** - Understanding different launch scenarios +- **[Package Building](Package-Building.md)** - Debug packaged applications +- **[Migration Guide](../Core/Migration-Guide.md)** - Moving from old debugging workflows + +## 💡 Benefits + +✅ **Native Visual Studio Experience** - No complex setup or manual attachment +✅ **Hot Reload Support** - Edit ASP.NET code during debugging +✅ **Cross-Platform Debugging** - Debug Linux apps from Windows +✅ **Multiple Debugging Modes** - Choose the right approach for your needs +✅ **Process Lifecycle Management** - Automatic cleanup and proper termination diff --git a/docs/GettingStarted/Package-Building.md b/docs/GettingStarted/Package-Building.md index 653f37a..db2a577 100644 --- a/docs/GettingStarted/Package-Building.md +++ b/docs/GettingStarted/Package-Building.md @@ -1,83 +1,85 @@ # Package Building +ElectronNET.Core integrates with Visual Studio's publishing system to create distributable Electron packages using electron-builder. The process leverages .NET's build system while automatically generating the necessary Electron configuration files. -explain how to use VS publish to create package with electron-builder. +## 🎯 Publishing Overview -The folder publishing is not the same between ASP.Net and console ap. +The publishing process differs slightly between ASP.NET and console applications: -## For ASP.Net, these are working publishing profiles: +- **ASP.NET Apps** - Use folder publishing with SelfContained=true +- **Console Apps** - Use folder publishing with SelfContained=false +## 📋 Prerequisites + +Before publishing, ensure you have: + +- **Node.js 22.x** installed +- **RuntimeIdentifier** set correctly for your target platform +- **Project configured** for Release builds + +## 🚀 Publishing Process + +### Step 1: Configure Runtime Identifier + +Set the target platform in your `.csproj` file: + +```xml + + net8.0 + win-x64 + +``` + +### Step 2: Create Publish Profile + +Add publish profiles to `Properties/PublishProfiles/`: + +#### ASP.NET Application Profile (Windows) + +```xml - - - - true - false - true - Release - FileSystem - publish\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\ - FileSystem - <_TargetId>Folder - - net8.0 - linux-x64 - 6ea447d9-343f-46b8-b456-66557bddbb9f - true - Any CPU - - - - - - - - true - false - true - Release - FileSystem - publish\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\ - FileSystem - <_TargetId>Folder - - net8.0 - win-x64 - 6ea447d9-343f-46b8-b456-66557bddbb9f - true - Any CPU - - - - - -## For a console app, these ones are working: - - - Release Any CPU - publish\Release\net8.0\linux-x64 + publish\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\ FileSystem - <_TargetId>Folder net8.0 - linux-x64 - false + win-x64 + true false +``` +#### ASP.NET Application Profile (Linux) + +```xml - Release Any CPU - publish\Release\net8.0\win-x64 + publish\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\ + FileSystem + net8.0 + linux-x64 + true + false + + +``` + +#### Console Application Profile (Windows) + +```xml + + + + Release + Any CPU + publish\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\ FileSystem - <_TargetId>Folder net8.0 win-x64 false @@ -85,4 +87,235 @@ The folder publishing is not the same between ASP.Net and console ap. false +``` +#### Console Application Profile (Linux) + +```xml + + + + Release + Any CPU + publish\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\ + FileSystem + net8.0 + linux-x64 + false + false + + +``` + +### Step 3: Configure Electron Builder + +ElectronNET.Core automatically generates `electron-builder.json` based on your project configuration. Key settings include: + +```json +{ + "productName": "My Electron App", + "appId": "com.mycompany.myapp", + "directories": { + "output": "release" + }, + "files": [ + "**/*", + "!**/*.pdb" + ], + "win": { + "target": "nsis", + "icon": "assets/app.ico" + }, + "linux": { + "target": "AppImage", + "icon": "assets/app.png" + } +} +``` + +### Step 4: Publish from Visual Studio + +1. **Right-click your project** in Solution Explorer +2. **Select "Publish"** +3. **Choose "Folder"** as the publish target +4. **Select your publish profile** (Windows/Linux) +5. **Click "Publish"** + +The publish process will: +- Build your .NET application +- Generate Electron configuration files +- Copy Electron runtime files +- Install npm dependencies +- Create electron-builder configuration + +### Step 5: Build Final Package + +After publishing, build the final package: + +```bash +# Navigate to publish directory +cd publish\Release\net8.0\win-x64\ + +# Install dependencies and build +npm install +npx electron-builder + +# Find your package in the 'release' folder +``` + +## 📁 Output Structure + +After publishing, your folder structure will look like: + +``` +publish\Release\net8.0\win-x64\ +├── MyElectronApp.exe # Your .NET application +├── .electron\ # Electron runtime files +│ ├── main.js +│ ├── package.json +│ └── node_modules\ +├── wwwroot\ # (ASP.NET only) Web assets +├── electron-builder.json # Build configuration +└── release\ # Final packages (after electron-builder) + ├── MyElectronApp-1.0.0.exe + └── MyElectronApp-1.0.0-setup.exe +``` + +## 🔧 Configuration Options + +### Project Configuration + +Configure Electron settings in your `.csproj`: + +```xml + + My Electron Application + MyApp + Your Company + 1.0.0 + +``` + +### Electron Builder Configuration + +Customize `electron-builder.json` for your needs: + +```json +{ + "productName": "MyApp", + "appId": "com.mycompany.myapp", + "copyright": "Copyright © 2024 My Company", + "win": { + "target": "nsis", + "icon": "assets/icon.ico", + "publisherName": "My Company" + }, + "linux": { + "target": "AppImage", + "icon": "assets/icon.png", + "category": "Office" + } +} +``` + +## 🎯 Platform-Specific Settings + +### Windows Configuration + +```json +{ + "win": { + "target": "nsis", + "icon": "assets/app.ico", + "verifyUpdateCodeSignature": false + } +} +``` + +### Linux Configuration + +```json +{ + "linux": { + "target": "AppImage", + "icon": "assets/app.png", + "category": "Development" + } +} +``` + +### macOS Configuration + +```json +{ + "mac": { + "target": "dmg", + "icon": "assets/app.icns", + "category": "public.app-category.developer-tools" + } +} +``` + +## 🚀 Advanced Publishing + +### Cross-Platform Building + +Build for multiple platforms from Windows using WSL: + +1. **Set RuntimeIdentifier** to `linux-x64` +2. **Publish to folder** using Linux profile +3. **Copy to WSL** or build directly in WSL + +### CI/CD Integration + +For automated builds: + +```bash +# Restore packages +dotnet restore + +# Publish for specific platform +dotnet publish -c Release -r win-x64 --self-contained + +# Build Electron package +cd publish\Release\net8.0\win-x64 +npm install +npx electron-builder --publish=never +``` + +## 🛠 Troubleshooting + +### Common Issues + +**"electron-builder.json not found"** +- Ensure project is published first +- Check that RuntimeIdentifier is set +- Verify .NET build succeeded + +**"npm install fails"** +- Ensure Node.js 22.x is installed +- Check internet connection for npm packages +- Verify no conflicting package versions + +**"WSL publishing fails"** +- Ensure WSL2 is properly configured +- Check that Linux RID is set correctly +- Verify WSL can access Windows files + +## 🎨 Publishing Workflow + +*Placeholder for image showing Visual Studio publish dialog and electron-builder output* + +## 🚀 Next Steps + +- **[Startup Methods](Startup-Methods.md)** - Understanding different launch modes for packaged apps +- **[Debugging](Debugging.md)** - Debug packaged applications +- **[Migration Guide](../Core/Migration-Guide.md)** - Update existing projects for new publishing + +## 💡 Benefits + +✅ **Native VS Integration** - Use familiar publish workflows +✅ **Cross-Platform Building** - Build Linux packages from Windows +✅ **Automatic Configuration** - No manual electron-builder setup +✅ **Multiple Package Types** - NSIS, AppImage, DMG, etc. +✅ **CI/CD Ready** - Easy integration with build pipelines diff --git a/docs/GettingStarted/Startup-Methods.md b/docs/GettingStarted/Startup-Methods.md index 3276d82..c35e5d8 100644 --- a/docs/GettingStarted/Startup-Methods.md +++ b/docs/GettingStarted/Startup-Methods.md @@ -1,17 +1,243 @@ # Startup Methods -// Explain the different startup modes +ElectronNET.Core supports multiple startup methods to handle different development and deployment scenarios. The framework automatically detects the appropriate mode based on command-line flags and environment. -- Support new commandline flags: - - unpackedelectron - running in debug mode, electron first, so must launch dotnet - - unpackeddotnet - running in debug mode, dotnet first, do not launch dotnet - - dotnetpacked - running from electron-builder output, dotnet first, do not launch - - {none of the above flags} - running from electron-builder output, electron first, launch dotnet +## 🎯 Startup Scenarios +The framework supports **8 different launch scenarios** covering every combination of: -![Startup Modes](../images/startup_modes.png) +- **Packaged vs Unpackaged** deployment +- **Console vs ASP.NET** application types +- **Dotnet-first vs Electron-first** initialization +## 🚀 Command-Line Flags + +### Unpackaged Debugging Modes + +**`-unpackedelectron`** - Electron-first debugging +```bash +# Launch Electron first, which then starts .NET +node node_modules/electron/cli.js main.js -unpackedelectron +``` + +**`-unpackeddotnet`** - .NET-first debugging +```bash +# Launch .NET first, which then starts Electron +dotnet run -unpackeddotnet +``` + +### Packaged Deployment Modes + +**`-dotnetpacked`** - .NET-first packaged execution +```bash +# Run packaged app with .NET starting first +MyApp.exe -dotnetpacked +``` + +**No flags** - Electron-first packaged execution (default) +```bash +# Run packaged app with Electron starting first +MyApp.exe +``` + +## 📋 Startup Method Details + +### 1. Unpackaged + Electron-First (Development) +- **Use Case**: Debug Electron main process and Node.js code +- **Command**: `-unpackedelectron` flag +- **Process Flow**: + 1. Electron starts first + 2. Electron launches .NET process + 3. .NET connects back to Electron + 4. Application runs with Electron in control + +### 2. Unpackaged + .NET-First (Development) +- **Use Case**: Debug ASP.NET/C# code with Hot Reload +- **Command**: `-unpackeddotnet` flag +- **Process Flow**: + 1. .NET application starts first + 2. .NET launches Electron process + 3. Electron connects back to .NET + 4. Application runs with .NET in control + +### 3. Packaged + .NET-First (Production) +- **Use Case**: Deployed application with .NET controlling lifecycle +- **Command**: `-dotnetpacked` flag +- **Process Flow**: + 1. .NET executable starts first + 2. .NET launches Electron from packaged files + 3. Electron loads from app.asar or extracted files + 4. .NET maintains process control + +### 4. Packaged + Electron-First (Production) +- **Use Case**: Traditional Electron app behavior +- **Command**: No special flags +- **Process Flow**: + 1. Electron executable starts first + 2. Electron launches .NET from packaged files + 3. .NET runs from Electron's process context + 4. Electron maintains UI control + +## 🔧 Configuration Examples + +### ASP.NET Application Startup + +```csharp +// Program.cs +var builder = WebApplication.CreateBuilder(args); + +// Configure for different startup modes +builder.WebHost.UseElectron(args, async () => +{ + var browserWindow = await Electron.WindowManager.CreateWindowAsync( + new BrowserWindowOptions { Show = false }); + + await browserWindow.WebContents.LoadURLAsync("https://localhost:7001"); + browserWindow.OnReadyToShow += () => browserWindow.Show(); +}); + +var app = builder.Build(); +app.Run(); +``` + +### Console Application Startup + +```csharp +// Program.cs +public static async Task Main(string[] args) +{ + var runtimeController = ElectronNetRuntime.RuntimeController; + + await runtimeController.Start(); + await runtimeController.WaitReadyTask; + + await InitializeApplication(); + + await runtimeController.WaitStoppedTask; +} +``` + +## 🎨 Visual Process Flow + +*Placeholder for image showing the 8 different startup mode flows* + +The image above illustrates how each combination of deployment type, application type, and initialization order affects the process lifecycle. + +## 🚀 Development Workflows + +### Debugging Workflow + +**ASP.NET-First Debugging** (Recommended) +```json +// launchSettings.json +{ + "ASP.Net (unpackaged)": { + "commandName": "Project", + "commandLineArgs": "-unpackeddotnet" + } +} +``` + +**Electron-First Debugging** +```json +// launchSettings.json +{ + "Electron (unpackaged)": { + "commandName": "Executable", + "executablePath": "node", + "commandLineArgs": "node_modules/electron/cli.js main.js -unpackedelectron" + } +} +``` + +### Production Deployment + +**Dotnet-First Deployment** +```bash +# Build and package +dotnet publish -c Release -r win-x64 +cd publish\Release\net8.0\win-x64 +npm install +npx electron-builder + +# Run with dotnet-first +MyApp.exe -dotnetpacked +``` + +**Electron-First Deployment** (Default) +```bash +# Run packaged application (no special flags needed) +MyApp.exe +``` + +## 🔍 Process Lifecycle Management + +### Automatic Cleanup + +ElectronNET.Core automatically manages process lifecycle: + +- **Graceful shutdown** when main window is closed +- **Proper cleanup** of child processes +- **Error handling** for process failures +- **Cross-platform compatibility** for process management + +### Manual Control + +Access runtime controller for advanced scenarios: + +```csharp +var runtime = ElectronNetRuntime.RuntimeController; + +// Wait for Electron to be ready +await runtime.WaitReadyTask; + +// Stop Electron runtime +await runtime.Stop(); +await runtime.WaitStoppedTask; +``` + +## 🛠 Troubleshooting + +### Common Startup Issues + +**"Electron process not found"** +- Ensure Node.js 22.x is installed +- Check that .NET build succeeded +- Verify RuntimeIdentifier is set correctly + +**"Port conflicts"** +- Use different ports for different startup modes +- Check that no other instances are running +- Verify firewall settings + +**"Process won't terminate"** +- Use dotnet-first mode for better cleanup +- Check for unhandled exceptions +- Verify all windows are properly closed + +## 💡 Best Practices + +### Choose the Right Mode + +- **Development**: Use .NET-first for C# debugging, Electron-first for Node.js debugging +- **Production**: Use .NET-first for better process control, Electron-first for traditional behavior +- **Cross-platform**: Use .NET-first for consistent behavior across platforms + +### Environment Configuration + +```xml + + + Production + +``` + +## 🚀 Next Steps + +- **[Debugging](Debugging.md)** - Debug different startup modes +- **[Package Building](Package-Building.md)** - Package for different deployment scenarios +- **[Migration Guide](../Core/Migration-Guide.md)** - Update existing apps for new startup methods + +## 🎯 Summary + +The flexible startup system ensures ElectronNET.Core works optimally in every scenario while providing the control and debugging experience .NET developers expect. Choose the appropriate mode based on your development workflow and deployment requirements. diff --git a/docs/Home.md b/docs/Home.md index fdf85a9..a25c563 100644 --- a/docs/Home.md +++ b/docs/Home.md @@ -1,4 +1,61 @@ -### Electron.NET Wiki Home +# Electron.NET Wiki Home +Welcome to the **Electron.NET Core** documentation! This wiki covers everything you need to know about building cross-platform desktop applications with ASP.NET Core and Electron.NET. + +## 🚀 What is Electron.NET Core? + +Electron.NET Core is a complete modernization of Electron.NET that eliminates the CLI tool dependency and integrates deeply with Visual Studio's MSBuild system. It transforms the development experience by providing: + +- **Native Visual Studio Integration** - No more CLI tools or JSON configuration files +- **Console Application Support** - Build Electron apps with simple console applications, not just ASP.NET +- **Cross-Platform Development** - Build and debug Linux applications from Windows via WSL +- **Enhanced Debugging** - ASP.NET-first debugging with Hot Reload support +- **Flexible Architecture** - Choose any Electron version and target multiple platforms + +## 📚 Documentation Sections + +### [Core Documentation](Core/What's-New.md) +- **[What's New?](Core/What's-New.md)** - Complete overview of ElectronNET.Core features and improvements +- **[Migration Guide](Core/Migration-Guide.md)** - Step-by-step migration from previous versions +- **[Advanced Migration Topics](Core/Advanced-Migration-Topics.md)** - Technical details for complex scenarios + +### [Getting Started](GettingStarted/ASP.Net.md) +- **[ASP.NET Applications](GettingStarted/ASP.Net.md)** - Build Electron apps with ASP.NET Core +- **[Console Applications](GettingStarted/Console-App.md)** - Use console apps for file system or remote content +- **[Startup Methods](GettingStarted/Startup-Methods.md)** - Understanding different launch scenarios +- **[Debugging](GettingStarted/Debugging.md)** - Debug Electron apps effectively in Visual Studio +- **[Package Building](GettingStarted/Package-Building.md)** - Create distributable packages + +### [Release Information](Releases/Package-Description.md) +- **[Package Description](Releases/Package-Description.md)** - Understanding the three NuGet packages +- **[Changelog](../Changelog.md)** - Complete list of changes and improvements + +## 🛠 System Requirements + +- **.NET 8.0** or later +- **Node.js 22.x** or later +- **Visual Studio 2022** (recommended) or other .NET IDE +- **WSL2** (for Linux development on Windows) + +## 💡 Key Benefits + +✅ **No CLI Tools Required** - Everything works through Visual Studio +✅ **Console App Support** - Use any HTML/JS source, not just ASP.NET +✅ **True Cross-Platform** - Build Linux apps from Windows +✅ **Modern Debugging** - Hot Reload and ASP.NET-first debugging +✅ **Flexible Packaging** - Choose any Electron version +✅ **MSBuild Integration** - Leverages .NET's build system + +## 🚦 Getting Started + +New to ElectronNET.Core? Start here: + +1. **[ASP.NET Setup](GettingStarted/ASP.Net.md)** - Traditional web application approach +2. **[Console App Setup](GettingStarted/Console-App.md)** - Lightweight console application approach +3. **[Migration Guide](Core/Migration-Guide.md)** - Moving from previous versions + +## 🤝 Contributing + +Found an issue or want to improve the documentation? Contributions are welcome! The wiki is auto-generated from the `/docs` folder in the [GitHub repository](https://github.com/ElectronNET/Electron.NET). diff --git a/docs/RelInfo/Package-Description.md b/docs/RelInfo/Package-Description.md new file mode 100644 index 0000000..d6653ed --- /dev/null +++ b/docs/RelInfo/Package-Description.md @@ -0,0 +1,102 @@ +# Package Description + +ElectronNET.Core consists of three specialized NuGet packages designed for different development scenarios and project architectures. + +## 📦 Package Overview + +### ElectronNET.Core (Main Package) +**Primary package for Electron.NET applications** + +- **Build system integration** - MSBuild targets and tasks for Electron +- **Project system extensions** - Visual Studio designer integration +- **Runtime orchestration** - Process lifecycle management +- **Automatic configuration** - Generates electron-builder.json and package.json +- **Includes ElectronNET.Core.Api** as a dependency + +**When to use:** +- Main application projects (startup projects) +- Projects that need full Electron.NET functionality +- Applications requiring build-time Electron configuration + +### ElectronNET.Core.Api (API Package) +**Pure API definitions without build integration** + +- **Electron API wrappers** - Complete Electron API surface +- **Type definitions** - Full TypeScript-style IntelliSense +- **No build dependencies** - Clean API-only package +- **Multi-platform support** - Windows, macOS, Linux + +**When to use:** +- Class library projects that interact with Electron APIs +- Projects that only need API access without build integration +- Multi-project solutions where only the startup project needs build integration + +### ElectronNET.Core.AspNet (ASP.NET Integration) +**ASP.NET-specific runtime components** + +- **ASP.NET middleware** - UseElectron() extension methods +- **WebHost integration** - Seamless ASP.NET + Electron hosting +- **Hot Reload support** - Enhanced debugging experience +- **Web-specific optimizations** - ASP.NET tailored performance + +**When to use:** +- ASP.NET Core projects building Electron applications +- Applications requiring web server functionality +- Projects using MVC, Razor Pages, or Blazor + +## 🏗 Architecture Benefits + +### Separation of Concerns +- **Build logic separate from API** - Cleaner dependency management +- **Optional ASP.NET integration** - Use only what you need +- **Multi-project friendly** - Share APIs across projects without build conflicts + +### Project Scenarios + +**Single Project (ASP.NET):** +```xml + + + + +``` + +**Single Project (Console):** +```xml + + + +``` + +**Multi-Project Solution:** +```xml + + + + + + + + + + +``` + +## 🔗 Dependency Chain + +``` +ElectronNET.Core.AspNet + ↓ +ElectronNET.Core → ElectronNET.Core.Api +``` + +- **ElectronNET.Core.AspNet** depends on ElectronNET.Core +- **ElectronNET.Core** depends on ElectronNET.Core.Api +- **ElectronNET.Core.Api** has no dependencies + +## 💡 Recommendations + +✅ **Start with ElectronNET.Core** for new projects +✅ **Add ElectronNET.Core.AspNet** only for ASP.NET applications +✅ **Use ElectronNET.Core.Api** for class libraries and API-only scenarios +✅ **Multi-project solutions** benefit from the modular architecture From 341ebe2bb158bc7ff3d9cdfd35411155bc4ed01b Mon Sep 17 00:00:00 2001 From: softworkz Date: Wed, 15 Oct 2025 16:05:28 +0200 Subject: [PATCH 60/66] Add .gitkeep file --- src/ElectronNET/.electron/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/ElectronNET/.electron/.gitkeep diff --git a/src/ElectronNET/.electron/.gitkeep b/src/ElectronNET/.electron/.gitkeep new file mode 100644 index 0000000..e69de29 From 88766adaf6a8d9ef0b44b870135f79c396ac325a Mon Sep 17 00:00:00 2001 From: softworkz Date: Wed, 15 Oct 2025 16:06:09 +0200 Subject: [PATCH 61/66] Update docs after manual review --- docs/Core/Advanced-Migration-Topics.md | 53 +-- docs/Core/Migration-Guide.md | 120 +++---- docs/Core/What's-New.md | 16 +- docs/GettingStarted/ASP.Net.md | 177 +++------- docs/GettingStarted/Console-App.md | 177 ++++------ docs/GettingStarted/Package-Building.md | 321 ------------------ docs/GettingStarted/System-Requirements.md | 53 +++ docs/Home.md | 4 +- docs/RelInfo/Package-Description.md | 32 +- docs/Using/Configuration.md | 79 +++++ docs/{GettingStarted => Using}/Debugging.md | 22 +- docs/Using/Package-Building.md | 146 ++++++++ .../Startup-Methods.md | 15 +- docs/_Sidebar.md | 12 +- docs/images/app_designer1.png | Bin 0 -> 29752 bytes docs/images/app_designer2.png | Bin 0 -> 23617 bytes 16 files changed, 516 insertions(+), 711 deletions(-) delete mode 100644 docs/GettingStarted/Package-Building.md create mode 100644 docs/GettingStarted/System-Requirements.md create mode 100644 docs/Using/Configuration.md rename docs/{GettingStarted => Using}/Debugging.md (93%) create mode 100644 docs/Using/Package-Building.md rename docs/{GettingStarted => Using}/Startup-Methods.md (94%) create mode 100644 docs/images/app_designer1.png create mode 100644 docs/images/app_designer2.png diff --git a/docs/Core/Advanced-Migration-Topics.md b/docs/Core/Advanced-Migration-Topics.md index a1b5a70..e532097 100644 --- a/docs/Core/Advanced-Migration-Topics.md +++ b/docs/Core/Advanced-Migration-Topics.md @@ -6,46 +6,47 @@ This guide covers advanced scenarios and edge cases that may require additional ### Port Configuration Changes -**Previous Approach:** +**Previous Approach:** Specifying the WebPort in `electron.manifest.json` is no longer supported because the ASP.NET-first launch mode makes this timing-dependent. -**New Approach:** +**New Approach:** Configure custom ASP.NET ports through MSBuild metadata: ```xml - ``` -**Usage in Code:** -```csharp -// Access configured ports at runtime -var port = int.Parse(Electron.App.GetEnvironmentVariable("AspNetHttpPort") ?? "5000"); -``` - ## Custom ElectronHostHook Configuration +> [!NOTE] +> These changes are only required in case you are using a custom ElectronHostHook implementation! +> If you have an ElectronHostHook folder in your project but you did not customize that code and aren't using its demo features (Excel and ZIP), you can also just remove that folder from your project. + + ### TypeScript and Node.js Updates **Update package.json:** + +This shows the delevant changes only: All shown versions are the new required minimum versions. + ```json { "devDependencies": { - "eslint": "^9.37.0", "@types/node": "^22.18", "typescript": "^5.9.3" }, "dependencies": { - "archiver-utils": "^2.1.0", "socket.io": "^4.8.1", - "exceljs": "^1.10.0" } } ``` -**Update Project File:** +**Update Project File:** + +The below modifications will allow you to use the latest TypeScript compiler in your ASP.Net project. + ```xml @@ -78,33 +79,9 @@ var port = int.Parse(Electron.App.GetEnvironmentVariable("AspNetHttpPort") ?? "5 When using ElectronNET.Core in multi-project solutions: 1. **Install ElectronNET.Core.Api** in class library projects -2. **Install ElectronNET.Core** only in the startup project +2. **Install ElectronNET.Core and ElectronNET.Core.AspNet** only in the startup project 3. **Share configuration** through project references or shared files -### Custom Build Processes - -For advanced build customization: - -```xml - - custom\output\path - custom\node_modules - -``` - -### Environment-Specific Configuration - -Handle different environments with conditional configuration: - -```xml - - Development - - - - Production - -``` ## Next Steps diff --git a/docs/Core/Migration-Guide.md b/docs/Core/Migration-Guide.md index 08c0e24..3602f08 100644 --- a/docs/Core/Migration-Guide.md +++ b/docs/Core/Migration-Guide.md @@ -25,15 +25,15 @@ PM> Install-Package ElectronNET.Core PM> Install-Package ElectronNET.Core.AspNet # For ASP.NET projects ``` -> **Note**: The API package is automatically included as a dependency of `ElectronNET.Core`. See [Package Description](../Releases/Package-Description.md) for details about the package structure. +> **Note**: The API package is automatically included as a dependency of `ElectronNET.Core`. See [Package Description](../RelInfo/Package-Description.md) for details about the package structure. ### Step 2: Configure Project Settings -**Auto-generated Configuration:** +**Auto-generated Configuration:** ElectronNET.Core automatically creates `electron-builder.json` during the first build or NuGet restore. No manual configuration is needed for basic setups. -**Migrate Existing Configuration:** +**Migrate Existing Configuration:** If you have an existing `electron.manifest.json` file: 1. **Open the generated `electron-builder.json`** file in your project @@ -47,14 +47,18 @@ You can also manually edit `electron-builder.json`: ```json { - "productName": "My Electron App", - "appId": "com.mycompany.myapp", - "directories": { - "output": "release" + "linux": { + "target": [ + "tar.xz" + ] }, "win": { - "target": "nsis", - "icon": "assets/app.ico" + "target": [ + { + "target": "portable", + "arch": "x64" + } + ] } } ``` @@ -71,12 +75,10 @@ After completing the migration steps: ## 🚨 Common Migration Issues ### Build Errors -- **Missing RuntimeIdentifier**: Ensure `win-x64` is set - **Node.js version**: Verify Node.js 22.x is installed and in PATH - **Package conflicts**: Clean NuGet cache if needed ### Runtime Errors -- **Port conflicts**: Update URLs in startup code to match your configuration - **Missing electron-builder.json**: Trigger rebuild or manual NuGet restore - **Process termination**: Use .NET-first startup mode for better cleanup @@ -84,15 +86,15 @@ After completing the migration steps: - **[What's New?](What's-New.md)** - Complete overview of ElectronNET.Core features - **[Advanced Migration Topics](Advanced-Migration-Topics.md)** - Handle complex scenarios -- **[Getting Started](GettingStarted/ASP.Net.md)** - Learn about new development workflows +- **[Getting Started](../GettingStarted/ASP.Net.md)** - Learn about new development workflows ## 💡 Migration Benefits -✅ **Simplified Configuration** - No more CLI tools or JSON files -✅ **Better Debugging** - Native Visual Studio experience with Hot Reload -✅ **Modern Architecture** - .NET-first process lifecycle -✅ **Cross-Platform Ready** - Build Linux apps from Windows -✅ **Future-Proof** - Flexible Electron version selection +✅ **Simplified Configuration** - No more CLI tools or JSON files +✅ **Better Debugging** - Native Visual Studio experience with Hot Reload +✅ **Modern Architecture** - .NET-first process lifecycle +✅ **Cross-Platform Ready** - Build Linux apps from Windows +✅ **Future-Proof** - Flexible Electron version selection ### Step 3: Update Startup Code @@ -104,76 +106,58 @@ After completing the migration steps: using ElectronNET.API; using ElectronNET.API.Entities; -var builder = WebApplication.CreateBuilder(args); + public static void Main(string[] args) + { + var builder = WebApplication.CreateBuilder(args); -// Enable Electron.NET with callback -builder.WebHost.UseElectron(args, async () => -{ - var browserWindow = await Electron.WindowManager.CreateWindowAsync( - new BrowserWindowOptions { Show = false }); + builder.UseElectron(args, ElectronAppReady); - await browserWindow.WebContents.LoadURLAsync("https://localhost:7001"); - browserWindow.OnReadyToShow += () => browserWindow.Show(); -}); + var app = builder.Build(); + app.Run(); + } -var app = builder.Build(); -app.Run(); + public static async Task ElectronAppReady() + { + var browserWindow = await Electron.WindowManager.CreateWindowAsync( + new BrowserWindowOptions { Show = false }); + + browserWindow.OnReadyToShow += () => browserWindow.Show(); + } ``` #### Traditional ASP.NET Core (IWebHostBuilder) -```csharp +```csharp using ElectronNET.API; using ElectronNET.API.Entities; -public static void Main(string[] args) -{ - CreateWebHostBuilder(args).Build().Run(); -} + public static void Main(string[] args) + { + WebHost.CreateDefaultBuilder(args) + .UseElectron(args, ElectronAppReady) + .UseStartup() + .Build() + .Run(); + } -public static IWebHostBuilder CreateWebHostBuilder(string[] args) => - WebHost.CreateDefaultBuilder(args) - .UseElectron(args, ElectronAppReady) - .UseStartup(); + public static async Task ElectronAppReady() + { + var browserWindow = await Electron.WindowManager.CreateWindowAsync( + new BrowserWindowOptions { Show = false }); -// Electron callback -async Task ElectronAppReady() -{ - var browserWindow = await Electron.WindowManager.CreateWindowAsync( - new BrowserWindowOptions { Show = false }); - - await browserWindow.WebContents.LoadURLAsync("https://localhost:5001"); - browserWindow.OnReadyToShow += () => browserWindow.Show(); -} + browserWindow.OnReadyToShow += () => browserWindow.Show(); + } ``` ### Step 4: Update Development Tools -**Node.js Upgrade:** -ElectronNET.Core requires Node.js 22.x. Update your installation: - -**Windows:** -1. Download from [nodejs.org](https://nodejs.org) -2. Run the installer -3. Verify: `node --version` should show v22.x.x - -**Linux:** -```bash -# Using Node Version Manager (recommended) -curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash -source ~/.bashrc -nvm install 22 -nvm use 22 - -# Or using package manager -sudo apt update -sudo apt install nodejs=22.* -``` +See [System Requirements](../GettingStarted/System-Requirements.md). ### Step 5: Update Debugging Setup **Watch Feature Removal:** + The old 'watch' feature is no longer supported. Instead, use the new ASP.NET-first debugging with Hot Reload: - **Old approach**: Manual process attachment and slow refresh @@ -181,4 +165,6 @@ The old 'watch' feature is no longer supported. Instead, use the new ASP.NET-fir - **Benefits**: Faster development cycle, better debugging experience **Update Launch Settings:** -Replace old watch configurations with new debugging profiles. See [Debugging](GettingStarted/Debugging.md) for detailed setup instructions. + +Replace old watch configurations with new debugging profiles. See [Debugging](../GettingStarted/Debugging.md) for detailed setup instructions. + diff --git a/docs/Core/What's-New.md b/docs/Core/What's-New.md index 2f658fb..ce5ad45 100644 --- a/docs/Core/What's-New.md +++ b/docs/Core/What's-New.md @@ -20,13 +20,14 @@ The new package architecture reflects a clearer separation of concerns: - **ElectronNET.Core.Api** - Pure API definitions for Electron integration - **ElectronNET.Core.AspNet** - ASP.NET-specific runtime components -This modular approach allows projects to include only what they need while maintaining the flexibility to scale from simple console applications to complex web applications. +This modular approach allows projects to include only what they need while maintaining the flexibility to scale from simple console applications to complex web applications. +More about the avaílable nuget packages: [Package Description](../RelInfo/Package-Description.md). ## Beyond ASP.NET: Console Application Support -### A Fundamental Shift in Accessibility +### A Shift in Accessibility -One of the most significant breakthroughs in ElectronNET.Core is the removal of the ASP.NET requirement. Developers can now build Electron applications using simple console applications, dramatically expanding the use cases and removing a major barrier to adoption. +A major new opportunity in ElectronNET.Core is the removal of the ASP.NET requirement. Developers can now build Electron solutions using simple DotNet console applications, expanding the use cases and removing a major barrier to adoption for a number of use cases. ### Flexible Content Sources @@ -43,7 +44,7 @@ This capability transforms ElectronNET from a web-focused framework into a versa ### Debugging Reimagined -The debugging experience has been completely transformed. The new ASP.NET-first launch mode means developers can now debug their .NET code directly, with full access to familiar debugging tools and Hot Reload capabilities. No more attaching to processes or working around limited debugging scenarios—the development workflow now matches standard ASP.NET development patterns. +The debugging experience has been completely transformed. The new DotNet-first launch mode means developers can now debug their .NET code directly, with full access to familiar debugging tools and Hot Reload capabilities. No more attaching to processes or working around limited debugging scenarios — the development workflow now matches standard .NET development patterns. ### Cross-Platform Development Without Compromises @@ -71,7 +72,8 @@ The underlying process architecture has been fundamentally redesigned. Instead o - Enhanced error handling and recovery - Cleaner separation between web and native concerns -This architecture supports eight different launch scenarios, covering every combination of packaged/unpackaged deployment, console/ASP.NET hosting, and dotnet-first/electron-first initialization. +This architecture supports eight different launch scenarios, covering every combination of packaged/unpackaged deployment, console/ASP.NET hosting, and dotnet-first/electron-first initialization. The Electron-first launch method is still available or course. +For more details, see: [Startup Methods](../GettingStarted/Startup-Methods.md). ### Unpackaged Development Mode @@ -103,7 +105,9 @@ The migration path is designed to be straightforward: 1. Update package references to the new structure 2. Remove the old manifest file 3. Configure project properties through Visual Studio -4. Adopt new debugging workflows at your own pace +4. Adopt new debugging workflows at your own pace + +Further reading: [Migration Guide](Migration-Guide.md). ## Future Horizons diff --git a/docs/GettingStarted/ASP.Net.md b/docs/GettingStarted/ASP.Net.md index 679ce32..61add70 100644 --- a/docs/GettingStarted/ASP.Net.md +++ b/docs/GettingStarted/ASP.Net.md @@ -1,22 +1,12 @@ - # ASP.NET Core Setup ASP.NET Core remains the recommended approach for complex web applications with ElectronNET.Core, providing all the benefits of the ASP.NET ecosystem along with enhanced Electron integration. ## 🛠 System Requirements -### Required Software -- **.NET 8.0** or later -- **Node.js 22.x** or later ([Download here](https://nodejs.org)) -- **Visual Studio 2022** (recommended) or other .NET IDE +See [System Requirements](../GettingStarted/System-Requirements.md). -### Supported Operating Systems -- **Windows 10/11** (x64, ARM64) -- **macOS 11+** (Intel, Apple Silicon) -- **Linux** (most distributions with glibc 2.31+) - -> **Note**: For Linux development on Windows, install [WSL2](https://docs.microsoft.com/windows/wsl/install) to build and debug Linux packages. ## 🚀 Quick Start @@ -35,8 +25,11 @@ cd MyElectronWebApp PM> Install-Package ElectronNET.Core PM> Install-Package ElectronNET.Core.AspNet ``` + + +> [!Note] +> `ElectronNET.Core.AspNet` provides ASP.NET-specific runtime components and should be used alongside `ElectronNET.Core`. -> **Note**: `ElectronNET.Core.AspNet` provides ASP.NET-specific runtime components and should be used alongside `ElectronNET.Core`. ### 3. Configure Program.cs @@ -46,134 +39,56 @@ Update your `Program.cs` to enable Electron.NET: using ElectronNET.API; using ElectronNET.API.Entities; -var builder = WebApplication.CreateBuilder(args); - -// Enable Electron.NET with callback for UI setup -builder.WebHost.UseElectron(args, ElectronAppReady); - -// Add services to the container -builder.Services.AddControllersWithViews(); - -var app = builder.Build(); - -// Configure the HTTP request pipeline -if (!app.Environment.IsDevelopment()) +public class Program { - app.UseExceptionHandler("/Home/Error"); - app.UseHsts(); -} + public static void Main(string[] args) + { + var builder = WebApplication.CreateBuilder(args); -app.UseHttpsRedirection(); -app.UseStaticFiles(); -app.UseRouting(); -app.UseAuthorization(); + builder.Services.AddRazorPages(); -app.MapControllerRoute( - name: "default", - pattern: "{controller=Home}/{action=Index}/{id?}"); + // Add this line to enable Electron.NET: + builder.UseElectron(args, ElectronAppReady); -app.Run(); + var app = builder.Build(); -// Electron initialization callback -async Task ElectronAppReady() -{ - var browserWindow = await Electron.WindowManager.CreateWindowAsync( - new BrowserWindowOptions + if (!app.Environment.IsDevelopment()) { - Width = 1200, - Height = 800, - Show = false, - WebPreferences = new WebPreferences - { - NodeIntegration = false, - ContextIsolation = true - } - }); + app.UseExceptionHandler("/Error"); + } + app.UseStaticFiles(); - // Load your ASP.NET application - await browserWindow.WebContents.LoadURLAsync("https://localhost:7001"); + app.UseRouting(); - browserWindow.OnReadyToShow += () => browserWindow.Show(); + app.UseAuthorization(); + + app.MapRazorPages(); + + app.Run(); + } + + public static async Task ElectronAppReady() + { + var browserWindow = await Electron.WindowManager.CreateWindowAsync(new BrowserWindowOptions { Show = false }); + + browserWindow.OnReadyToShow += () => browserWindow.Show(); + } } ``` +#### ASP.NET Port + +If you want to launch a specific URL, you can retrieve the actual ASP.NET port from the new `ElectronNetRuntime` static class, for example: + +```csharp + await browserWindow.WebContents + .LoadURLAsync($"http://localhost:{ElectronNetRuntime.AspNetWebPort}/mypage.html"); +``` + ### 4. Alternative: IWebHostBuilder Setup -For projects using the traditional `Startup.cs` pattern: +For projects using the traditional `Startup.cs` pattern, please see "Traditional ASP.NET Core" in the [Migration Guide](../Core/Migration-Guide.md). -```csharp -public static void Main(string[] args) -{ - CreateWebHostBuilder(args).Build().Run(); -} - -public static IWebHostBuilder CreateWebHostBuilder(string[] args) => - WebHost.CreateDefaultBuilder(args) - .UseElectron(args, ElectronAppReady) - .UseStartup(); - -// Electron callback (same as above) -async Task ElectronAppReady() -{ - var browserWindow = await Electron.WindowManager.CreateWindowAsync( - new BrowserWindowOptions { Show = false }); - - await browserWindow.WebContents.LoadURLAsync("https://localhost:5001"); - browserWindow.OnReadyToShow += () => browserWindow.Show(); -} -``` - -## 🔧 Configuration - -### Project File Settings - -Configure Electron.NET through MSBuild properties in your `.csproj`: - -```xml - - net8.0 - win-x64 - My ASP.NET Electron App - MyApp - -``` - - - -## 🎨 Customization - -### Window Configuration - -Customize the main window appearance: - -```csharp -var options = new BrowserWindowOptions -{ - Width = 1400, - Height = 900, - MinWidth = 800, - MinHeight = 600, - Frame = true, - TitleBarStyle = TitleBarStyle.Default, - Icon = "wwwroot/favicon.ico" -}; -``` - -### Multiple Windows - -Create additional windows for different parts of your application: - -```csharp -var settingsWindow = await Electron.WindowManager.CreateWindowAsync( - new BrowserWindowOptions - { - Width = 600, - Height = 400, - Parent = browserWindow, - Modal = true - }, - "https://localhost:7001/settings"); -``` ## 🚀 Next Steps @@ -183,8 +98,8 @@ var settingsWindow = await Electron.WindowManager.CreateWindowAsync( ## 💡 Benefits of ASP.NET + Electron -✅ **Full Web Stack** - Use MVC, Razor Pages, Blazor, and all ASP.NET features -✅ **Hot Reload** - Edit ASP.NET code and see changes instantly -✅ **Rich Ecosystem** - Access to thousands of ASP.NET packages -✅ **Modern Development** - Latest C# features and ASP.NET patterns -✅ **Scalable Architecture** - Build complex, maintainable applications +✅ **Full Web Stack** - Use MVC, Razor Pages, Blazor, and all ASP.NET features +✅ **Hot Reload** - Edit ASP.NET code and see changes instantly +✅ **Rich Ecosystem** - Access to thousands of ASP.NET packages +✅ **Modern Development** - Latest C# features and ASP.NET patterns +✅ **Scalable Architecture** - Build complex, maintainable applications diff --git a/docs/GettingStarted/Console-App.md b/docs/GettingStarted/Console-App.md index c11d787..2fcad0e 100644 --- a/docs/GettingStarted/Console-App.md +++ b/docs/GettingStarted/Console-App.md @@ -2,7 +2,7 @@ # Console Application Setup -One of the most significant breakthroughs in ElectronNET.Core is the ability to build Electron applications using simple console applications instead of requiring ASP.NET Core. This removes a major barrier and enables many more use cases. +A major benefit in ElectronNET.Core is the ability to build Electron applications using simple console applications instead of requiring ASP.NET Core. This removes a significant barrier and enables many more use cases. ## 🎯 What You Can Build @@ -15,11 +15,8 @@ Console applications with ElectronNET.Core support multiple content scenarios: ## 📋 Prerequisites -Before starting, ensure you have: +See [System Requirements](../GettingStarted/System-Requirements.md). -- **.NET 8.0** or later -- **Node.js 22.x** or later -- **Visual Studio 2022** (recommended) or Visual Studio Code ## 🚀 Quick Start @@ -38,7 +35,8 @@ cd MyElectronApp PM> Install-Package ElectronNET.Core ``` -> **Note**: The API package is automatically included as a dependency of `ElectronNET.Core`. +> [!Note] +> The API package is automatically included as a dependency of `ElectronNET.Core`. ### 3. Configure Project File @@ -56,6 +54,11 @@ Add the Electron.NET configuration to your `.csproj` file: ``` +> [!WARNING] +> Specifying `OutputType` property is crucial in order to get the ability of WSL debugging. Especially it is not included in ASP.NET projects. +> When you migrate from ASP.NET to a console application, be sure to add this to the project file. + + ### 4. Implement Basic Structure Here's a complete console application example: @@ -66,55 +69,56 @@ using System.Threading.Tasks; using ElectronNET.API.Entities; namespace MyElectronApp + +public class Program { - public class Program + public static async Task Main(string[] args) { - public static async Task Main(string[] args) + var runtimeController = ElectronNetRuntime.RuntimeController; + + try { - var runtimeController = ElectronNetRuntime.RuntimeController; + // Start Electron runtime + await runtimeController.Start(); + await runtimeController.WaitReadyTask; - try - { - // Start Electron runtime - await runtimeController.Start(); - await runtimeController.WaitReadyTask; + // Initialize your Electron app + await InitializeApp(); - // Initialize your Electron app - await InitializeApp(); - - // Wait for shutdown - await runtimeController.WaitStoppedTask; - } - catch (Exception ex) - { - Console.WriteLine($"Error: {ex.Message}"); - await runtimeController.Stop(); - await runtimeController.WaitStoppedTask.WaitAsync(TimeSpan.FromSeconds(2)); - } + // Wait for shutdown + await runtimeController.WaitStoppedTask.ConfigureAwait(false); } - - private static async Task InitializeApp() + catch (Exception ex) { - // Create main window - var browserWindow = await Electron.WindowManager.CreateWindowAsync( - new BrowserWindowOptions + Console.WriteLine($"Error: {ex.Message}"); + await runtimeController.Stop().ConfigureAwait(false); + await runtimeController.WaitStoppedTask.WaitAsync(TimeSpan.FromSeconds(2)).ConfigureAwait(false); + } + } + + private static async Task InitializeApp() + { + // Create main window + var browserWindow = await Electron.WindowManager.CreateWindowAsync( + new BrowserWindowOptions + { + Show = false, + WebPreferences = new WebPreferences { - Width = 1200, - Height = 800, - Show = false, - WebPreferences = new WebPreferences - { - NodeIntegration = false, - ContextIsolation = true - } - }); + // Add these two when using file:// URLs + WebSecurity = false, + AllowRunningInsecureContent = true, - // Load your content (file system, remote URL, etc.) - await browserWindow.WebContents.LoadURLAsync("https://example.com"); + NodeIntegration = false, + ContextIsolation = true + } + }); - // Show window when ready - browserWindow.OnReadyToShow += () => browserWindow.Show(); - } + // Load your content (file system, remote URL, etc.) + await browserWindow.WebContents.LoadURLAsync("https://example.com"); + + // Show window when ready + browserWindow.OnReadyToShow += () => browserWindow.Show(); } } ``` @@ -127,7 +131,11 @@ Serve HTML/JS files from your project: ```csharp // In your project root, create wwwroot/index.html -await browserWindow.WebContents.LoadFileAsync("wwwroot/index.html"); +var fileInfo = new FileInfo(Environment.ProcessPath); +var exeFolder = fileInfo.DirectoryName; +var htmlPath = Path.Combine(exeFolder, "wwwroot/index.html"); +var url = new Uri(htmlPath, UriKind.Absolute); +await browserWindow.WebContents.LoadFileAsync(url.ToString()); ``` ### Remote Content @@ -138,80 +146,17 @@ Load content from any web server: await browserWindow.WebContents.LoadURLAsync("https://your-server.com/app"); ``` -### Development Server - -For development, you can run a simple HTTP server: - -```csharp -// Add this for development -if (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Development") -{ - await browserWindow.WebContents.LoadURLAsync("http://localhost:3000"); -} -``` - -## 🔧 Configuration Options - -### Project Configuration - -Configure Electron settings through MSBuild properties in your `.csproj`: - -```xml - - My Electron App - MyApp - Your Name - -``` - -### Runtime Configuration - -Access configuration at runtime: - -```csharp -var app = await Electron.App.GetAppAsync(); -Console.WriteLine($"App Name: {app.Name}"); -``` - -## 🎨 Customization - -### Window Options - -Customize your main window: - -```csharp -var options = new BrowserWindowOptions -{ - Width = 1400, - Height = 900, - MinWidth = 800, - MinHeight = 600, - Frame = true, - Title = "My Custom App", - Icon = "assets/app-icon.png" -}; -``` - -### Multiple Windows - -Create additional windows as needed: - -```csharp -var settingsWindow = await Electron.WindowManager.CreateWindowAsync( - new BrowserWindowOptions { Width = 600, Height = 400, Modal = true }, - "app://settings.html"); -``` ## 🚀 Next Steps -- **[Debugging](Debugging.md)** - Learn about debugging console applications -- **[Package Building](Package-Building.md)** - Create distributable packages +- **[Debugging](../Using/Debugging.md)** - Learn about debugging console applications +- **[Package Building](../Using/Package-Building.md)** - Create distributable packages - **[Migration Guide](../Core/Migration-Guide.md)** - Moving from ASP.NET projects ## 💡 Benefits of Console Apps -✅ **Simpler Architecture** - No ASP.NET complexity when not needed -✅ **Flexible Content** - Use any HTML/JS source -✅ **Faster Development** - Less overhead for simple applications -✅ **Easy Deployment** - Minimal dependencies -✅ **Better Performance** - Lighter weight than full web applications +✅ **Simpler Architecture** - No ASP.NET complexity when not needed +✅ **Flexible Content** - Use any HTML/JS source +✅ **Faster Development** - Less overhead for simple applications +✅ **Easy Deployment** - Minimal dependencies +✅ **Better Performance** - Lighter weight than full web applications diff --git a/docs/GettingStarted/Package-Building.md b/docs/GettingStarted/Package-Building.md deleted file mode 100644 index db2a577..0000000 --- a/docs/GettingStarted/Package-Building.md +++ /dev/null @@ -1,321 +0,0 @@ -# Package Building - -ElectronNET.Core integrates with Visual Studio's publishing system to create distributable Electron packages using electron-builder. The process leverages .NET's build system while automatically generating the necessary Electron configuration files. - -## 🎯 Publishing Overview - -The publishing process differs slightly between ASP.NET and console applications: - -- **ASP.NET Apps** - Use folder publishing with SelfContained=true -- **Console Apps** - Use folder publishing with SelfContained=false - -## 📋 Prerequisites - -Before publishing, ensure you have: - -- **Node.js 22.x** installed -- **RuntimeIdentifier** set correctly for your target platform -- **Project configured** for Release builds - -## 🚀 Publishing Process - -### Step 1: Configure Runtime Identifier - -Set the target platform in your `.csproj` file: - -```xml - - net8.0 - win-x64 - -``` - -### Step 2: Create Publish Profile - -Add publish profiles to `Properties/PublishProfiles/`: - -#### ASP.NET Application Profile (Windows) - -```xml - - - - Release - Any CPU - publish\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\ - FileSystem - net8.0 - win-x64 - true - false - - -``` - -#### ASP.NET Application Profile (Linux) - -```xml - - - - Release - Any CPU - publish\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\ - FileSystem - net8.0 - linux-x64 - true - false - - -``` - -#### Console Application Profile (Windows) - -```xml - - - - Release - Any CPU - publish\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\ - FileSystem - net8.0 - win-x64 - false - false - false - - -``` - -#### Console Application Profile (Linux) - -```xml - - - - Release - Any CPU - publish\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\ - FileSystem - net8.0 - linux-x64 - false - false - - -``` - -### Step 3: Configure Electron Builder - -ElectronNET.Core automatically generates `electron-builder.json` based on your project configuration. Key settings include: - -```json -{ - "productName": "My Electron App", - "appId": "com.mycompany.myapp", - "directories": { - "output": "release" - }, - "files": [ - "**/*", - "!**/*.pdb" - ], - "win": { - "target": "nsis", - "icon": "assets/app.ico" - }, - "linux": { - "target": "AppImage", - "icon": "assets/app.png" - } -} -``` - -### Step 4: Publish from Visual Studio - -1. **Right-click your project** in Solution Explorer -2. **Select "Publish"** -3. **Choose "Folder"** as the publish target -4. **Select your publish profile** (Windows/Linux) -5. **Click "Publish"** - -The publish process will: -- Build your .NET application -- Generate Electron configuration files -- Copy Electron runtime files -- Install npm dependencies -- Create electron-builder configuration - -### Step 5: Build Final Package - -After publishing, build the final package: - -```bash -# Navigate to publish directory -cd publish\Release\net8.0\win-x64\ - -# Install dependencies and build -npm install -npx electron-builder - -# Find your package in the 'release' folder -``` - -## 📁 Output Structure - -After publishing, your folder structure will look like: - -``` -publish\Release\net8.0\win-x64\ -├── MyElectronApp.exe # Your .NET application -├── .electron\ # Electron runtime files -│ ├── main.js -│ ├── package.json -│ └── node_modules\ -├── wwwroot\ # (ASP.NET only) Web assets -├── electron-builder.json # Build configuration -└── release\ # Final packages (after electron-builder) - ├── MyElectronApp-1.0.0.exe - └── MyElectronApp-1.0.0-setup.exe -``` - -## 🔧 Configuration Options - -### Project Configuration - -Configure Electron settings in your `.csproj`: - -```xml - - My Electron Application - MyApp - Your Company - 1.0.0 - -``` - -### Electron Builder Configuration - -Customize `electron-builder.json` for your needs: - -```json -{ - "productName": "MyApp", - "appId": "com.mycompany.myapp", - "copyright": "Copyright © 2024 My Company", - "win": { - "target": "nsis", - "icon": "assets/icon.ico", - "publisherName": "My Company" - }, - "linux": { - "target": "AppImage", - "icon": "assets/icon.png", - "category": "Office" - } -} -``` - -## 🎯 Platform-Specific Settings - -### Windows Configuration - -```json -{ - "win": { - "target": "nsis", - "icon": "assets/app.ico", - "verifyUpdateCodeSignature": false - } -} -``` - -### Linux Configuration - -```json -{ - "linux": { - "target": "AppImage", - "icon": "assets/app.png", - "category": "Development" - } -} -``` - -### macOS Configuration - -```json -{ - "mac": { - "target": "dmg", - "icon": "assets/app.icns", - "category": "public.app-category.developer-tools" - } -} -``` - -## 🚀 Advanced Publishing - -### Cross-Platform Building - -Build for multiple platforms from Windows using WSL: - -1. **Set RuntimeIdentifier** to `linux-x64` -2. **Publish to folder** using Linux profile -3. **Copy to WSL** or build directly in WSL - -### CI/CD Integration - -For automated builds: - -```bash -# Restore packages -dotnet restore - -# Publish for specific platform -dotnet publish -c Release -r win-x64 --self-contained - -# Build Electron package -cd publish\Release\net8.0\win-x64 -npm install -npx electron-builder --publish=never -``` - -## 🛠 Troubleshooting - -### Common Issues - -**"electron-builder.json not found"** -- Ensure project is published first -- Check that RuntimeIdentifier is set -- Verify .NET build succeeded - -**"npm install fails"** -- Ensure Node.js 22.x is installed -- Check internet connection for npm packages -- Verify no conflicting package versions - -**"WSL publishing fails"** -- Ensure WSL2 is properly configured -- Check that Linux RID is set correctly -- Verify WSL can access Windows files - -## 🎨 Publishing Workflow - -*Placeholder for image showing Visual Studio publish dialog and electron-builder output* - -## 🚀 Next Steps - -- **[Startup Methods](Startup-Methods.md)** - Understanding different launch modes for packaged apps -- **[Debugging](Debugging.md)** - Debug packaged applications -- **[Migration Guide](../Core/Migration-Guide.md)** - Update existing projects for new publishing - -## 💡 Benefits - -✅ **Native VS Integration** - Use familiar publish workflows -✅ **Cross-Platform Building** - Build Linux packages from Windows -✅ **Automatic Configuration** - No manual electron-builder setup -✅ **Multiple Package Types** - NSIS, AppImage, DMG, etc. -✅ **CI/CD Ready** - Easy integration with build pipelines diff --git a/docs/GettingStarted/System-Requirements.md b/docs/GettingStarted/System-Requirements.md new file mode 100644 index 0000000..000b9b4 --- /dev/null +++ b/docs/GettingStarted/System-Requirements.md @@ -0,0 +1,53 @@ + +## 🛠 System Requirements + +### Required Software + +- **.NET 8.0** or later +- **Node.js 22.x** or later (see below) +- **Visual Studio 2022** (recommended) or other .NET IDE + +### Supported Operating Systems + +- **Windows 10/11** (x64, ARM64) +- **macOS 11+** (Intel, Apple Silicon) +- **Linux** (most distributions with glibc 2.31+) + +> [!Note] +> For Linux development on Windows, install [WSL2](https://docs.microsoft.com/windows/wsl/install) to build and debug Linux packages. +> Do not forget to install NodeJS 22.x (LTS) on WSL. +> Visual Studio will automatically install .NET when debugging on WSL. In all other cases you will need to install a matching .NET SDK on WSL as well. + + +### NodeJS Installation + + +ElectronNET.Core requires Node.js 22.x. Update your installation: + +**Windows:** + +1. Download from [nodejs.org](https://nodejs.org) +2. Run the installer +3. Verify: `node --version` should show v22.x.x + +**Linux:** + +```bash +# Using Node Version Manager (recommended) +curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash +source ~/.bashrc +nvm install 22 +nvm use 22 + +# Or using package manager +sudo apt update +sudo apt install nodejs=22.* +``` + + +## 🚀 Next Steps + +- **[Debugging](../Using/Debugging.md)** - Learn about ASP.NET debugging features +- **[Package Building](../Using/Package-Building.md)** - Create distributable packages +- **[Startup Methods](../Using/Startup-Methods.md)** - Understanding launch scenarios + diff --git a/docs/Home.md b/docs/Home.md index a25c563..c46852f 100644 --- a/docs/Home.md +++ b/docs/Home.md @@ -28,8 +28,8 @@ Electron.NET Core is a complete modernization of Electron.NET that eliminates th - **[Debugging](GettingStarted/Debugging.md)** - Debug Electron apps effectively in Visual Studio - **[Package Building](GettingStarted/Package-Building.md)** - Create distributable packages -### [Release Information](Releases/Package-Description.md) -- **[Package Description](Releases/Package-Description.md)** - Understanding the three NuGet packages +### [Release Information](RelInfo/Package-Description.md) +- **[Package Description](RelInfo/Package-Description.md)** - Understanding the three NuGet packages - **[Changelog](../Changelog.md)** - Complete list of changes and improvements ## 🛠 System Requirements diff --git a/docs/RelInfo/Package-Description.md b/docs/RelInfo/Package-Description.md index d6653ed..eaf049e 100644 --- a/docs/RelInfo/Package-Description.md +++ b/docs/RelInfo/Package-Description.md @@ -47,7 +47,7 @@ ElectronNET.Core consists of three specialized NuGet packages designed for diffe ## 🏗 Architecture Benefits ### Separation of Concerns -- **Build logic separate from API** - Cleaner dependency management +- **Build logic separate from API** - Clean dependency management - **Optional ASP.NET integration** - Use only what you need - **Multi-project friendly** - Share APIs across projects without build conflicts @@ -68,7 +68,7 @@ ElectronNET.Core consists of three specialized NuGet packages designed for diffe ``` -**Multi-Project Solution:** +**Multi-Project Solution (ASP.NET):** ```xml @@ -82,21 +82,35 @@ ElectronNET.Core consists of three specialized NuGet packages designed for diffe ``` +**Multi-Project Solution (Console):** +```xml + + + + + + + + + +``` + ## 🔗 Dependency Chain ``` -ElectronNET.Core.AspNet - ↓ +ElectronNET.Core.AspNet → ElectronNET.Core.Api + ElectronNET.Core → ElectronNET.Core.Api ``` -- **ElectronNET.Core.AspNet** depends on ElectronNET.Core +- **ElectronNET.Core.AspNet** depends on ElectronNET.Core.Api - **ElectronNET.Core** depends on ElectronNET.Core.Api - **ElectronNET.Core.Api** has no dependencies ## 💡 Recommendations -✅ **Start with ElectronNET.Core** for new projects -✅ **Add ElectronNET.Core.AspNet** only for ASP.NET applications -✅ **Use ElectronNET.Core.Api** for class libraries and API-only scenarios -✅ **Multi-project solutions** benefit from the modular architecture +✅ **Start with ElectronNET.Core** for new projects +✅ **Add ElectronNET.Core.AspNet** only for ASP.NET applications +✅ **Use ElectronNET.Core.Api** for class libraries and API-only scenarios +✅ **Multi-project solutions** benefit from the modular architecture + diff --git a/docs/Using/Configuration.md b/docs/Using/Configuration.md new file mode 100644 index 0000000..df300fb --- /dev/null +++ b/docs/Using/Configuration.md @@ -0,0 +1,79 @@ + +# Project Configuration + + +## 🔧 Visual Studio App Designer + +Electron.NET provides close integration via the Visual Studio Project System and MSBuild. After adding the ElectronNET.Core package, you will see this in the project configuration page after double-click on the 'Properties' folder or right-click on the project and choosing 'Properties': + + +![App Designer1](../images/app_designer1.png) + +![App Designer2](../images/app_designer2.png) + + +## Project File Settings + +The same settings can be configured manually by editing the MSBuild properties in your `.csproj` file. +These are the current default values when you don't make any changes: + +```xml + + 30.4.0 + 26.0 + win-x64 + true + + + $(MSBuildProjectName.Replace(".", "-").ToLower()) + electron-builder.json + $(MSBuildProjectName) + +``` + +### Relation to package.json + +ElectronNET.Core does not work with an `electron-manifest.json` file anymore. +Since electron builder still expects a `package.json` file to exist, ElectronNET.Core is creating this under the hood automatically during build. For reference, here's the package.json template file that is being used, so you can see how the MSBuild properties are being mapped to `package.json` data: + +```json +{ + "name": "$(PackageId)", + "productName": "$(ElectronTitle)", + "build": { + "appId": "$(PackageId)", + "linux": { + "desktop": { + "entry": { "Name": "$(Title)" } + }, + "executableName": "$(PackageId)" + }, + "deb": { + "desktop": { + "entry": { "Name": "$(Title)" } + } + } + }, + "description": "$(Description)", + "version": "$(Version)", + "main": "main.js", + "author": { + "name": "$(Company)" + }, + "license": "$(License)", + "executable": "$(TargetName)", + "singleInstance": "$(ElectronSingleInstance)", + "homepage": "$(ProjectUrl)", + "splashscreen": { + "imageFile": "$(ElectronSplashScreen)" + } +} +``` + + +## 🚀 Next Steps + +- **[Startup Methods](Startup-Methods.md)** - Understanding launch scenarios +- **[Debugging](../Using/Debugging.md)** - Learn about ASP.NET debugging features +- **[Package Building](Package-Building.md)** - Create distributable packages + diff --git a/docs/GettingStarted/Debugging.md b/docs/Using/Debugging.md similarity index 93% rename from docs/GettingStarted/Debugging.md rename to docs/Using/Debugging.md index b4a073e..1672206 100644 --- a/docs/GettingStarted/Debugging.md +++ b/docs/Using/Debugging.md @@ -18,7 +18,7 @@ Debug your .NET code directly with full Hot Reload support: "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }, - "applicationUrl": "https://localhost:7001/" + "applicationUrl": "http://localhost:8001/" } } } @@ -64,10 +64,10 @@ Debug Linux builds directly from Windows Visual Studio: "profiles": { "WSL": { "commandName": "WSL2", - "launchUrl": "http://localhost:7001/", + "launchUrl": "http://localhost:8001/", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development", - "ASPNETCORE_URLS": "http://localhost:7001/" + "ASPNETCORE_URLS": "http://localhost:8001/" }, "distributionName": "" } @@ -94,7 +94,7 @@ Add the debugging profiles to `Properties/launchSettings.json`: "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }, - "applicationUrl": "https://localhost:7001/" + "applicationUrl": "http://localhost:8001/" }, "Electron (unpackaged)": { "commandName": "Executable", @@ -107,10 +107,10 @@ Add the debugging profiles to `Properties/launchSettings.json`: }, "WSL": { "commandName": "WSL2", - "launchUrl": "http://localhost:7001/", + "launchUrl": "http://localhost:8001/", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development", - "ASPNETCORE_URLS": "http://localhost:7001/" + "ASPNETCORE_URLS": "http://localhost:8001/" }, "distributionName": "" } @@ -229,8 +229,8 @@ The debugging interface provides familiar Visual Studio tools: ## 💡 Benefits -✅ **Native Visual Studio Experience** - No complex setup or manual attachment -✅ **Hot Reload Support** - Edit ASP.NET code during debugging -✅ **Cross-Platform Debugging** - Debug Linux apps from Windows -✅ **Multiple Debugging Modes** - Choose the right approach for your needs -✅ **Process Lifecycle Management** - Automatic cleanup and proper termination +✅ **Native Visual Studio Experience** - No complex setup or manual attachment +✅ **Hot Reload Support** - Edit ASP.NET code during debugging +✅ **Cross-Platform Debugging** - Debug Linux apps from Windows +✅ **Multiple Debugging Modes** - Choose the right approach for your needs +✅ **Process Lifecycle Management** - Automatic cleanup and proper termination diff --git a/docs/Using/Package-Building.md b/docs/Using/Package-Building.md new file mode 100644 index 0000000..40f6ac1 --- /dev/null +++ b/docs/Using/Package-Building.md @@ -0,0 +1,146 @@ +# Package Building + +ElectronNET.Core integrates with Visual Studio's publishing system to create distributable Electron packages using electron-builder. The process leverages .NET's build system while automatically generating the necessary Electron configuration files. + +## 🎯 Publishing Overview + +The publishing process differs slightly between ASP.NET and console applications: + +- **ASP.NET Apps** - Use folder publishing with SelfContained=true +- **Console Apps** - Use folder publishing with SelfContained=false + +## 📋 Prerequisites + +Before publishing, ensure you have: + +- **Node.js 22.x** installed +- **RuntimeIdentifier** set correctly for your target platform +- **Project configured** for Release builds + +## 🚀 Publishing Process + +### Step 1: Create Publish Profiles + +Add publish profiles to `Properties/PublishProfiles/`: + +#### ASP.NET Application Profile (Windows) + +**win-x64.pubxml:** + +```xml + + + + Release + Any CPU + publish\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\ + FileSystem + net8.0 + win-x64 + true + false + + +``` + +#### ASP.NET Application Profile (Linux) + +**linux-x64.pubxml:** + +```xml + + + + Release + Any CPU + publish\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\ + FileSystem + net8.0 + linux-x64 + true + false + + +``` + +#### Console Application Profile (Windows) + +**win-x64.pubxml:** + +```xml + + + + Release + Any CPU + publish\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\ + FileSystem + net8.0 + win-x64 + false + false + false + + +``` + +#### Console Application Profile (Linux) + +**linux-x64.pubxml:** + +```xml + + + + Release + Any CPU + publish\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\ + FileSystem + net8.0 + linux-x64 + false + false + + +``` + +### Step 2: Configure Electron Builder + +ElectronNET.Core automatically adds a default `electron-builder.json` file under `Properties\electron-builder.json`. +Please see here for details of the available configuration options: https://www.electron.build/. + + +### Step 3: Publish from Visual Studio + +1. **Right-click your project** in Solution Explorer +2. **Select "Publish"** +4. **Select your publish profile** (Windows/Linux) +5. **Click "Publish"** + +The publish process will: +- Build your .NET application +- Copy all files as needed +- Install npm dependencies +- Run electron-builder + +> [!NOTE] +> When running publish for a Linux configuration on Windows, Electron.NET will automatically use WSL for the platform-specific steps. + +**After publishing**, build the final package, the final results will be in + +`publish\Release\netx.0\xxx-xxx\` + + +## 🚀 Next Steps + +- **[Startup Methods](Startup-Methods.md)** - Understanding different launch modes for packaged apps +- **[Debugging](Debugging.md)** - Debug packaged applications +- **[Migration Guide](../Core/Migration-Guide.md)** - Update existing projects for new publishing + +## 💡 Benefits + +✅ **Native VS Integration** - Use familiar publish workflows +✅ **Cross-Platform Building** - Build Linux packages from Windows +✅ **Automatic Configuration** - No manual electron-builder setup +✅ **Multiple Package Types** - NSIS, AppImage, DMG, etc. +✅ **CI/CD Ready** - Easy integration with build pipelines diff --git a/docs/GettingStarted/Startup-Methods.md b/docs/Using/Startup-Methods.md similarity index 94% rename from docs/GettingStarted/Startup-Methods.md rename to docs/Using/Startup-Methods.md index c35e5d8..1c68483 100644 --- a/docs/GettingStarted/Startup-Methods.md +++ b/docs/Using/Startup-Methods.md @@ -14,13 +14,13 @@ The framework supports **8 different launch scenarios** covering every combinati ### Unpackaged Debugging Modes -**`-unpackedelectron`** - Electron-first debugging +#### **`-unpackedelectron`** - Electron-first debugging ```bash # Launch Electron first, which then starts .NET node node_modules/electron/cli.js main.js -unpackedelectron ``` -**`-unpackeddotnet`** - .NET-first debugging +#### **`-unpackeddotnet`** - .NET-first debugging ```bash # Launch .NET first, which then starts Electron dotnet run -unpackeddotnet @@ -28,13 +28,13 @@ dotnet run -unpackeddotnet ### Packaged Deployment Modes -**`-dotnetpacked`** - .NET-first packaged execution +#### **`-dotnetpacked`** - .NET-first packaged execution ```bash # Run packaged app with .NET starting first MyApp.exe -dotnetpacked ``` -**No flags** - Electron-first packaged execution (default) +#### **No flags** - Electron-first packaged execution (default) ```bash # Run packaged app with Electron starting first MyApp.exe @@ -92,7 +92,7 @@ builder.WebHost.UseElectron(args, async () => var browserWindow = await Electron.WindowManager.CreateWindowAsync( new BrowserWindowOptions { Show = false }); - await browserWindow.WebContents.LoadURLAsync("https://localhost:7001"); + await browserWindow.WebContents.LoadURLAsync("http://localhost:8001"); browserWindow.OnReadyToShow += () => browserWindow.Show(); }); @@ -119,7 +119,8 @@ public static async Task Main(string[] args) ## 🎨 Visual Process Flow -*Placeholder for image showing the 8 different startup mode flows* + +![Startup Modes](../images/startup_modes.png) The image above illustrates how each combination of deployment type, application type, and initialization order affects the process lifecycle. @@ -153,6 +154,7 @@ The image above illustrates how each combination of deployment type, application ### Production Deployment **Dotnet-First Deployment** + ```bash # Build and package dotnet publish -c Release -r win-x64 @@ -165,6 +167,7 @@ MyApp.exe -dotnetpacked ``` **Electron-First Deployment** (Default) + ```bash # Run packaged application (no special flags needed) MyApp.exe diff --git a/docs/_Sidebar.md b/docs/_Sidebar.md index 444595b..5e2b12b 100644 --- a/docs/_Sidebar.md +++ b/docs/_Sidebar.md @@ -8,16 +8,20 @@ - [What's new?](Core/What's-New.md) - [Migration Guiide](Core/Migration-Guide.md) -- [Advcanced Migration](Core/Advanced-Migration-Topics.md) +- [Advanced Migration](Core/Advanced-Migration-Topics.md) # Getting Started +- [System Requirements](GettingStarted/System-Requirements.md) - [With ASP.Net](GettingStarted/ASP.Net.md) - [With a Console App](GettingStarted/Console-App.md) -- [Startup-Method](GettingStarted/Startup-Methods.md) -- [Debugging](GettingStarted/Debugging.md) -- [Package Building](GettingStarted/Package-Building.md) +# Using Electron.NET + +- [Configuration](Using/Configuration.md) +- [Startup-Methods](Using/Startup-Methods.md) +- [Debugging](Using/Debugging.md) +- [Package Building](Using/Package-Building.md) # Release Information diff --git a/docs/images/app_designer1.png b/docs/images/app_designer1.png new file mode 100644 index 0000000000000000000000000000000000000000..1df2c1db6b585c53cda730c8a7627e75401487e6 GIT binary patch literal 29752 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 D^4sm} literal 0 HcmV?d00001 diff --git a/docs/images/app_designer2.png b/docs/images/app_designer2.png new file mode 100644 index 0000000000000000000000000000000000000000..ed939451fed5700a7308c0b0a65c494fe4f688d0 GIT binary patch literal 23617 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 Date: Wed, 15 Oct 2025 21:55:58 +0200 Subject: [PATCH 62/66] Add API documentation (AI generated) --- docs/API/App.md | 489 +++++++++++++++++++++++++++++++++++++ docs/API/AutoUpdater.md | 243 ++++++++++++++++++ docs/API/Clipboard.md | 231 ++++++++++++++++++ docs/API/Dialog.md | 160 ++++++++++++ docs/API/Dock.md | 209 ++++++++++++++++ docs/API/GlobalShortcut.md | 189 ++++++++++++++ docs/API/HostHook.md | 152 ++++++++++++ docs/API/IpcMain.md | 167 +++++++++++++ docs/API/Menu.md | 210 ++++++++++++++++ docs/API/NativeTheme.md | 189 ++++++++++++++ docs/API/Notification.md | 164 +++++++++++++ docs/API/Overview.md | 62 +++++ docs/API/PowerMonitor.md | 188 ++++++++++++++ docs/API/Screen.md | 174 +++++++++++++ docs/API/Shell.md | 175 +++++++++++++ docs/API/Tray.md | 232 ++++++++++++++++++ docs/API/WebContents.md | 292 ++++++++++++++++++++++ docs/API/WindowManager.md | 208 ++++++++++++++++ docs/_Sidebar.md | 20 +- 19 files changed, 3753 insertions(+), 1 deletion(-) create mode 100644 docs/API/App.md create mode 100644 docs/API/AutoUpdater.md create mode 100644 docs/API/Clipboard.md create mode 100644 docs/API/Dialog.md create mode 100644 docs/API/Dock.md create mode 100644 docs/API/GlobalShortcut.md create mode 100644 docs/API/HostHook.md create mode 100644 docs/API/IpcMain.md create mode 100644 docs/API/Menu.md create mode 100644 docs/API/NativeTheme.md create mode 100644 docs/API/Notification.md create mode 100644 docs/API/Overview.md create mode 100644 docs/API/PowerMonitor.md create mode 100644 docs/API/Screen.md create mode 100644 docs/API/Shell.md create mode 100644 docs/API/Tray.md create mode 100644 docs/API/WebContents.md create mode 100644 docs/API/WindowManager.md diff --git a/docs/API/App.md b/docs/API/App.md new file mode 100644 index 0000000..3ea5d3b --- /dev/null +++ b/docs/API/App.md @@ -0,0 +1,489 @@ +# Electron.App + +Control your application's event lifecycle. + +## Overview + +The `Electron.App` API provides comprehensive control over your application's lifecycle, including startup, shutdown, window management, and system integration. It handles application-level events and provides methods for managing the overall application state. + +## Properties + +#### 📋 `CommandLine` +A `CommandLine` object that allows you to read and manipulate the command line arguments that Chromium uses. + +#### 📋 `IsReady` +Application host fully started. + +#### 📋 `Name` +A string property that indicates the current application's name, which is the name in the application's package.json file. + +Usually the name field of package.json is a short lowercase name, according to the npm modules spec. You should usually also specify a productName field, which is your application's full capitalized name, and which will be preferred over name by Electron. + +#### 📋 `NameAsync` +A `Task` property that indicates the current application's name, which is the name in the application's package.json file. + +Usually the name field of package.json is a short lowercase name, according to the npm modules spec. You should usually also specify a productName field, which is your application's full capitalized name, and which will be preferred over name by Electron. + +#### 📋 `UserAgentFallback` +A string which is the user agent string Electron will use as a global fallback. + +This is the user agent that will be used when no user agent is set at the webContents or session level. It is useful for ensuring that your entire app has the same user agent. Set to a custom value as early as possible in your app's initialization to ensure that your overridden value is used. + +#### 📋 `UserAgentFallbackAsync` +A `Task` which is the user agent string Electron will use as a global fallback. + +This is the user agent that will be used when no user agent is set at the webContents or session level. It is useful for ensuring that your entire app has the same user agent. Set to a custom value as early as possible in your app's initialization to ensure that your overridden value is used. + +## Methods + +#### 🧊 `void AddRecentDocument(string path)` +Adds path to the recent documents list. This list is managed by the OS. On Windows you can visit the list from the task bar, and on macOS you can visit it from dock menu. + +#### 🧊 `void ClearRecentDocuments()` +Clears the recent documents list. + +#### 🧊 `void Exit(int exitCode = 0)` +All windows will be closed immediately without asking user and the BeforeQuit and WillQuit events will not be emitted. + +**Parameters:** +- `exitCode` - Exits immediately with exitCode. exitCode defaults to 0. + +#### 🧊 `void Focus()` +On Linux, focuses on the first visible window. On macOS, makes the application the active app. On Windows, focuses on the application's first window. + +#### 🧊 `void Focus(FocusOptions focusOptions)` +On Linux, focuses on the first visible window. On macOS, makes the application the active app. On Windows, focuses on the application's first window. + +You should seek to use the `FocusOptions.Steal` option as sparingly as possible. + +**Parameters:** +- `focusOptions` - Focus options + +#### 🧊 `Task GetAppMetricsAsync(CancellationToken cancellationToken = default)` +Memory and cpu usage statistics of all the processes associated with the app. + +**Returns:** + +Array of ProcessMetric objects that correspond to memory and cpu usage statistics of all the processes associated with the app. + +#### 🧊 `Task GetAppPathAsync(CancellationToken cancellationToken = default)` +The current application directory. + +**Returns:** + +The current application directory. + +#### 🧊 `Task GetBadgeCountAsync(CancellationToken cancellationToken = default)` +The current value displayed in the counter badge. + +**Returns:** + +The current value displayed in the counter badge. + +#### 🧊 `Task GetCurrentActivityTypeAsync(CancellationToken cancellationToken = default)` +The type of the currently running activity. + +**Returns:** + +The type of the currently running activity. + +#### 🧊 `Task GetGpuFeatureStatusAsync(CancellationToken cancellationToken = default)` +The Graphics Feature Status from chrome://gpu/. + +Note: This information is only usable after the gpu-info-update event is emitted. + +**Returns:** + +The Graphics Feature Status from chrome://gpu/. + +#### 🧊 `Task GetJumpListSettingsAsync(CancellationToken cancellationToken = default)` +Jump List settings for the application. + +**Returns:** + +Jump List settings. + +#### 🧊 `Task GetLocaleAsync(CancellationToken cancellationToken = default)` +The current application locale. Possible return values are documented [here](https://www.electronjs.org/docs/api/locales). + +Note: When distributing your packaged app, you have to also ship the locales folder. + +Note: On Windows, you have to call it after the Ready events gets emitted. + +**Returns:** + +The current application locale. + +#### 🧊 `Task GetLoginItemSettingsAsync(CancellationToken cancellationToken = default)` +If you provided path and args options to SetLoginItemSettings then you need to pass the same arguments here for LoginItemSettings.OpenAtLogin to be set correctly. + +**Returns:** + +Login item settings. + +#### 🧊 `Task GetPathAsync(PathName pathName, CancellationToken cancellationToken = default)` +The path to a special directory. If GetPathAsync is called without called SetAppLogsPath being called first, a default directory will be created equivalent to calling SetAppLogsPath without a path parameter. + +**Parameters:** +- `pathName` - Special directory. + +**Returns:** + +A path to a special directory or file associated with name. + +#### 🧊 `Task GetVersionAsync(CancellationToken cancellationToken = default)` +The version of the loaded application. If no version is found in the application's package.json file, the version of the current bundle or executable is returned. + +**Returns:** + +The version of the loaded application. + +#### 🧊 `Task HasSingleInstanceLockAsync(CancellationToken cancellationToken = default)` +This method returns whether or not this instance of your app is currently holding the single instance lock. You can request the lock with RequestSingleInstanceLockAsync and release with ReleaseSingleInstanceLock. + +**Returns:** + +Whether this instance of your app is currently holding the single instance lock. + +#### 🧊 `void Hide()` +Hides all application windows without minimizing them. + +#### 🧊 `Task ImportCertificateAsync(ImportCertificateOptions options, CancellationToken cancellationToken = default)` +Imports the certificate in pkcs12 format into the platform certificate store. callback is called with the result of import operation, a value of 0 indicates success while any other value indicates failure according to chromium net_error_list. + +**Parameters:** +- `options` - Import certificate options +- `cancellationToken` - The cancellation token + +**Returns:** + +Result of import. Value of 0 indicates success. + +#### 🧊 `void InvalidateCurrentActivity()` +Invalidates the current Handoff user activity. + +#### 🧊 `Task IsAccessibilitySupportEnabledAsync(CancellationToken cancellationToken = default)` +true if Chrome's accessibility support is enabled, false otherwise. This API will return true if the use of assistive technologies, such as screen readers, has been detected. See Chromium's accessibility docs for more details. + +**Returns:** + +true if Chrome's accessibility support is enabled, false otherwise. + +#### 🧊 `Task IsDefaultProtocolClientAsync(string protocol, CancellationToken cancellationToken = default)` +This method checks if the current executable is the default handler for a protocol (aka URI scheme). + +Note: On macOS, you can use this method to check if the app has been registered as the default protocol handler for a protocol. You can also verify this by checking ~/Library/Preferences/com.apple.LaunchServices.plist on the macOS machine. Please refer to Apple's documentation for details. + +The API uses the Windows Registry and LSCopyDefaultHandlerForURLScheme internally. + +**Parameters:** +- `protocol` - The name of your protocol, without :// +- `cancellationToken` - The cancellation token + +**Returns:** + +Whether the current executable is the default handler for a protocol (aka URI scheme). + +#### 🧊 `Task IsUnityRunningAsync(CancellationToken cancellationToken = default)` +Whether the current desktop environment is Unity launcher. + +**Returns:** + +Whether the current desktop environment is Unity launcher. + +#### 🧊 `void Quit()` +Try to close all windows. The BeforeQuit event will be emitted first. If all windows are successfully closed, the WillQuit event will be emitted and by default the application will terminate. This method guarantees that all beforeunload and unload event handlers are correctly executed. It is possible that a window cancels the quitting by returning false in the beforeunload event handler. + +#### 🧊 `void ReleaseSingleInstanceLock()` +Releases all locks that were created by makeSingleInstance. This will allow multiple instances of the application to once again run side by side. + +#### 🧊 `void Relaunch()` +Relaunches the app when current instance exits. By default the new instance will use the same working directory and command line arguments with current instance. + +Note that this method does not quit the app when executed, you have to call Quit or Exit after calling Relaunch() to make the app restart. + +When Relaunch() is called for multiple times, multiple instances will be started after current instance exited. + +#### 🧊 `void Relaunch(RelaunchOptions relaunchOptions)` +Relaunches the app when current instance exits. By default the new instance will use the same working directory and command line arguments with current instance. When RelaunchOptions.Args is specified, the RelaunchOptions.Args will be passed as command line arguments instead. When RelaunchOptions.ExecPath is specified, the RelaunchOptions.ExecPath will be executed for relaunch instead of current app. + +Note that this method does not quit the app when executed, you have to call Quit or Exit after calling Relaunch() to make the app restart. + +When Relaunch() is called for multiple times, multiple instances will be started after current instance exited. + +**Parameters:** +- `relaunchOptions` - Options for the relaunch + +#### 🧊 `Task RemoveAsDefaultProtocolClientAsync(string protocol, CancellationToken cancellationToken = default)` +This method checks if the current executable as the default handler for a protocol (aka URI scheme). If so, it will remove the app as the default handler. + +**Parameters:** +- `protocol` - The name of your protocol, without :// +- `cancellationToken` - The cancellation token + +**Returns:** + +Whether the call succeeded. + +#### 🧊 `Task RequestSingleInstanceLockAsync(Action newInstanceOpened, CancellationToken cancellationToken = default)` +The return value of this method indicates whether or not this instance of your application successfully obtained the lock. If it failed to obtain the lock, you can assume that another instance of your application is already running with the lock and exit immediately. + +I.e.This method returns true if your process is the primary instance of your application and your app should continue loading. It returns false if your process should immediately quit as it has sent its parameters to another instance that has already acquired the lock. + +On macOS, the system enforces single instance automatically when users try to open a second instance of your app in Finder, and the open-file and open-url events will be emitted for that.However when users start your app in command line, the system's single instance mechanism will be bypassed, and you have to use this method to ensure single instance. + +**Parameters:** +- `newInstanceOpened` - Lambda with an array of the second instance's command line arguments. The second parameter is the working directory path. +- `cancellationToken` - The cancellation token + +**Returns:** + +This method returns false if your process is the primary instance of the application and your app should continue loading. And returns true if your process has sent its parameters to another instance, and you should immediately quit. + +#### 🧊 `void ResignCurrentActivity()` +Marks the current Handoff user activity as inactive without invalidating it. + +#### 🧊 `void SetAccessibilitySupportEnabled(bool enabled)` +Manually enables Chrome's accessibility support, allowing to expose accessibility switch to users in application settings. See Chromium's accessibility docs for more details. Disabled (false) by default. + +This API must be called after the Ready event is emitted. + +Note: Rendering accessibility tree can significantly affect the performance of your app. It should not be enabled by default. + +**Parameters:** +- `enabled` - Enable or disable accessibility tree rendering + +#### 🧊 `void SetAppLogsPath(string path)` +Sets or creates a directory your app's logs which can then be manipulated with GetPathAsync or SetPath. + +Calling SetAppLogsPath without a path parameter will result in this directory being set to ~/Library/Logs/YourAppName on macOS, and inside the userData directory on Linux and Windows. + +**Parameters:** +- `path` - A custom path for your logs. Must be absolute + +#### 🧊 `void SetAppUserModelId(string id)` +Changes the Application User Model ID to id. + +**Parameters:** +- `id` - Model Id + +#### 🧊 `Task SetAsDefaultProtocolClientAsync(string protocol, CancellationToken cancellationToken = default)` +Sets the current executable as the default handler for a protocol (aka URI scheme). It allows you to integrate your app deeper into the operating system. Once registered, all links with your-protocol:// will be opened with the current executable. The whole link, including protocol, will be passed to your application as a parameter. + +Note: On macOS, you can only register protocols that have been added to your app's info.plist, which cannot be modified at runtime. However, you can change the file during build time via Electron Forge, Electron Packager, or by editing info.plist with a text editor. Please refer to Apple's documentation for details. + +Note: In a Windows Store environment (when packaged as an appx) this API will return true for all calls but the registry key it sets won't be accessible by other applications. In order to register your Windows Store application as a default protocol handler you must declare the protocol in your manifest. + +The API uses the Windows Registry and LSSetDefaultHandlerForURLScheme internally. + +**Parameters:** +- `protocol` - The name of your protocol, without ://. For example, if you want your app to handle electron:// links, call this method with electron as the parameter. +- `cancellationToken` - The cancellation token + +**Returns:** + +Whether the call succeeded. + +#### 🧊 `Task SetBadgeCountAsync(int count, CancellationToken cancellationToken = default)` +Sets the counter badge for current app. Setting the count to 0 will hide the badge. On macOS it shows on the dock icon. On Linux it only works for Unity launcher. + +Note: Unity launcher requires the existence of a .desktop file to work, for more information please read Desktop Environment Integration. + +**Parameters:** +- `count` - Counter badge +- `cancellationToken` - The cancellation token + +**Returns:** + +Whether the call succeeded. + +#### 🧊 `void SetJumpList(JumpListCategory[] categories)` +Sets or removes a custom Jump List for the application. If categories is null the previously set custom Jump List (if any) will be replaced by the standard Jump List for the app (managed by Windows). + +Note: If a JumpListCategory object has neither the Type nor the Name property set then its Type is assumed to be tasks. If the Name property is set but the Type property is omitted then the Type is assumed to be custom. + +Note: Users can remove items from custom categories, and Windows will not allow a removed item to be added back into a custom category until after the next successful call to SetJumpList. Any attempt to re-add a removed item to a custom category earlier than that will result in the entire custom category being omitted from the Jump List. The list of removed items can be obtained using GetJumpListSettingsAsync. + +**Parameters:** +- `categories` - Array of JumpListCategory objects + +#### 🧊 `void SetLoginItemSettings(LoginSettings loginSettings)` +Set the app's login item settings. + +To work with Electron's autoUpdater on Windows, which uses Squirrel, you'll want to set the launch path to Update.exe, and pass arguments that specify your application name. + +**Parameters:** +- `loginSettings` - Login settings + +#### 🧊 `void SetPath(PathName name, string path)` +Overrides the path to a special directory or file associated with name. If the path specifies a directory that does not exist, an Error is thrown. In that case, the directory should be created with fs.mkdirSync or similar. + +You can only override paths of a name defined in GetPathAsync. + +By default, web pages' cookies and caches will be stored under the PathName.UserData directory. If you want to change this location, you have to override the PathName.UserData path before the Ready event of the App module is emitted. + +**Parameters:** +- `name` - Special directory name +- `path` - New path to a special directory + +#### 🧊 `void SetUserActivity(string type, object userInfo)` +Creates an NSUserActivity and sets it as the current activity. The activity is eligible for Handoff to another device afterward. + +**Parameters:** +- `type` - Uniquely identifies the activity. Maps to NSUserActivity.activityType. +- `userInfo` - App-specific state to store for use by another device + +#### 🧊 `Task SetUserTasksAsync(UserTask[] userTasks, CancellationToken cancellationToken = default)` +Adds tasks to the UserTask category of the JumpList on Windows. + +Note: If you'd like to customize the Jump List even more use SetJumpList instead. + +**Parameters:** +- `userTasks` - Array of UserTask objects +- `cancellationToken` - The cancellation token + +**Returns:** + +Whether the call succeeded. + +#### 🧊 `void Show()` +Shows application windows after they were hidden. Does not automatically focus them. + +#### 🧊 `void ShowAboutPanel()` +Show the app's about panel options. These options can be overridden with SetAboutPanelOptions. + +## Events + +#### ⚡ `AccessibilitySupportChanged` +Emitted when Chrome's accessibility support changes. This event fires when assistive technologies, such as screen readers, are enabled or disabled. See https://www.chromium.org/developers/design-documents/accessibility for more details. + +#### ⚡ `BrowserWindowBlur` +Emitted when a BrowserWindow blurred. + +#### ⚡ `BrowserWindowCreated` +Emitted when a new BrowserWindow is created. + +#### ⚡ `BrowserWindowFocus` +Emitted when a BrowserWindow gets focused. + +#### ⚡ `OpenFile` +Emitted when a macOS user wants to open a file with the application. The open-file event is usually emitted when the application is already open and the OS wants to reuse the application to open the file. open-file is also emitted when a file is dropped onto the dock and the application is not yet running. + +On Windows, you have to parse the arguments using App.CommandLine to get the filepath. + +#### ⚡ `OpenUrl` +Emitted when a macOS user wants to open a URL with the application. Your application's Info.plist file must define the URL scheme within the CFBundleURLTypes key, and set NSPrincipalClass to AtomApplication. + +#### ⚡ `Quitting` +Emitted when the application is quitting. + +Note: On Windows, this event will not be emitted if the app is closed due to a shutdown/restart of the system or a user logout. + +#### ⚡ `Ready` +Emitted when the application has finished basic startup. + +#### ⚡ `WebContentsCreated` +Emitted when a new WebContents is created. + +#### ⚡ `WillQuit` +Emitted when all windows have been closed and the application will quit. + +See the description of the WindowAllClosed event for the differences between the WillQuit and WindowAllClosed events. + +Note: On Windows, this event will not be emitted if the app is closed due to a shutdown/restart of the system or a user logout. + +#### ⚡ `WindowAllClosed` +Emitted when all windows have been closed. + +If you do not subscribe to this event and all windows are closed, the default behavior is to quit the app; however, if you subscribe, you control whether the app quits or not.If the user pressed Cmd + Q, or the developer called Quit, Electron will first try to close all the windows and then emit the WillQuit event, and in this case the WindowAllClosed event would not be emitted. + +## Usage Examples + +### Application Lifecycle + +```csharp +// Handle app startup +Electron.App.Ready += () => +{ + Console.WriteLine("App is ready!"); +}; + +// Handle window management +Electron.App.WindowAllClosed += () => +{ + if (!RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) + { + Electron.App.Quit(); + } +}; + +// Prevent quit +Electron.App.BeforeQuit += async (args) => +{ + var result = await Electron.Dialog.ShowMessageBoxAsync("Do you want to quit?"); + if (result.Response == 1) // Cancel + { + args.PreventDefault = true; + } +}; +``` + +### Protocol Handling + +```csharp +// Register custom protocol +var success = await Electron.App.SetAsDefaultProtocolClientAsync("myapp"); + +// Check if registered +var isDefault = await Electron.App.IsDefaultProtocolClientAsync("myapp"); +``` + +### Jump List (Windows) + +```csharp +// Set user tasks +await Electron.App.SetUserTasksAsync(new[] +{ + new UserTask + { + Program = "myapp.exe", + Arguments = "--new-document", + Title = "New Document", + Description = "Create a new document" + } +}); +``` + +### Application Information + +```csharp +// Get app information +var appPath = await Electron.App.GetAppPathAsync(); +var version = await Electron.App.GetVersionAsync(); +var locale = await Electron.App.GetLocaleAsync(); + +// Set app name +await Electron.App.NameAsync; // Get current name +Electron.App.Name = "My Custom App Name"; +``` + +### Badge Count (macOS/Linux) + +```csharp +// Set badge count +await Electron.App.SetBadgeCountAsync(5); + +// Get current badge count +var count = await Electron.App.GetBadgeCountAsync(); +``` + +## Related APIs + +- [Electron.WindowManager](WindowManager.md) - Window creation and management +- [Electron.Dialog](Dialog.md) - User interaction dialogs +- [Electron.Menu](Menu.md) - Application menus + +## Additional Resources + +- [Electron App Documentation](https://electronjs.org/docs/api/app) - Official Electron app API +- [Startup Methods](../Using/Startup-Methods.md) - Different application startup modes diff --git a/docs/API/AutoUpdater.md b/docs/API/AutoUpdater.md new file mode 100644 index 0000000..98414b1 --- /dev/null +++ b/docs/API/AutoUpdater.md @@ -0,0 +1,243 @@ +# Electron.AutoUpdater + +Handle application updates and installation processes. + +## Overview + +The `Electron.AutoUpdater` API provides comprehensive functionality for handling application updates, including checking for updates, downloading, and installation. It supports multiple update providers and platforms with automatic update capabilities. + +## Properties + +#### 📋 `bool AllowDowngrade` +Whether to allow version downgrade. Default is false. + +#### 📋 `bool AllowPrerelease` +GitHub provider only. Whether to allow update to pre-release versions. Defaults to true if application version contains prerelease components. + +#### 📋 `bool AutoDownload` +Whether to automatically download an update when it is found. Default is true. + +#### 📋 `bool AutoInstallOnAppQuit` +Whether to automatically install a downloaded update on app quit. Applicable only on Windows and Linux. + +#### 📋 `string Channel` +Get the update channel. Not applicable for GitHub. Doesn't return channel from the update configuration, only if was previously set. + +#### 📋 `Task ChannelAsync` +Get the update channel. Not applicable for GitHub. Doesn't return channel from the update configuration, only if was previously set. + +#### 📋 `Task CurrentVersionAsync` +Get the current application version. + +#### 📋 `bool FullChangelog` +GitHub provider only. Get all release notes (from current version to latest), not just the latest. Default is false. + +#### 📋 `Dictionary RequestHeaders` +The request headers. + +#### 📋 `Task> RequestHeadersAsync` +Get the current request headers. + +#### 📋 `string UpdateConfigPath` +For test only. Configuration path for updates. + +## Methods + +#### 🧊 `Task CheckForUpdatesAndNotifyAsync()` +Asks the server whether there is an update and notifies the user if an update is available. + +#### 🧊 `Task CheckForUpdatesAsync()` +Asks the server whether there is an update. + +#### 🧊 `Task DownloadUpdateAsync()` +Start downloading update manually. Use this method if AutoDownload option is set to false. + +**Returns:** + +Path to downloaded file. + +#### 🧊 `Task GetFeedURLAsync()` +Get the current feed URL. + +**Returns:** + +Feed URL. + +#### 🧊 `void QuitAndInstall(bool isSilent = false, bool isForceRunAfter = false)` +Restarts the app and installs the update after it has been downloaded. Should only be called after update-downloaded has been emitted. + +Note: QuitAndInstall() will close all application windows first and only emit before-quit event on app after that. This is different from the normal quit event sequence. + +**Parameters:** +- `isSilent` - Windows-only: Runs the installer in silent mode. Defaults to false +- `isForceRunAfter` - Run the app after finish even on silent install. Not applicable for macOS + +## Events + +#### ⚡ `OnCheckingForUpdate` +Emitted when checking if an update has started. + +#### ⚡ `OnDownloadProgress` +Emitted on download progress. + +#### ⚡ `OnError` +Emitted when there is an error while updating. + +#### ⚡ `OnUpdateAvailable` +Emitted when there is an available update. The update is downloaded automatically if AutoDownload is true. + +#### ⚡ `OnUpdateDownloaded` +Emitted on download complete. + +#### ⚡ `OnUpdateNotAvailable` +Emitted when there is no available update. + +## Usage Examples + +### Basic Auto-Update Setup + +```csharp +// Configure auto-updater +Electron.AutoUpdater.AutoDownload = true; +Electron.AutoUpdater.AutoInstallOnAppQuit = true; + +// Check for updates +var updateCheck = await Electron.AutoUpdater.CheckForUpdatesAsync(); +if (updateCheck.UpdateInfo != null) +{ + Console.WriteLine($"Update available: {updateCheck.UpdateInfo.Version}"); +} +``` + +### Manual Update Management + +```csharp +// Disable auto-download for manual control +Electron.AutoUpdater.AutoDownload = false; + +// Check for updates +var result = await Electron.AutoUpdater.CheckForUpdatesAsync(); +if (result.UpdateInfo != null) +{ + Console.WriteLine($"Update found: {result.UpdateInfo.Version}"); + + // Ask user confirmation + var confirmResult = await Electron.Dialog.ShowMessageBoxAsync( + "Update Available", + $"Version {result.UpdateInfo.Version} is available. Download now?"); + + if (confirmResult.Response == 1) // Yes + { + // Download update manually + var downloadPath = await Electron.AutoUpdater.DownloadUpdateAsync(); + Console.WriteLine($"Downloaded to: {downloadPath}"); + + // Install update + Electron.AutoUpdater.QuitAndInstall(); + } +} +``` + +### Update Event Handling + +```csharp +// Handle update events +Electron.AutoUpdater.OnCheckingForUpdate += () => +{ + Console.WriteLine("Checking for updates..."); +}; + +Electron.AutoUpdater.OnUpdateAvailable += (updateInfo) => +{ + Console.WriteLine($"Update available: {updateInfo.Version}"); +}; + +Electron.AutoUpdater.OnUpdateNotAvailable += (updateInfo) => +{ + Console.WriteLine("No updates available"); +}; + +Electron.AutoUpdater.OnDownloadProgress += (progressInfo) => +{ + Console.WriteLine($"Download progress: {progressInfo.Percent}%"); +}; + +Electron.AutoUpdater.OnUpdateDownloaded += (updateInfo) => +{ + Console.WriteLine($"Update downloaded: {updateInfo.Version}"); + + // Show notification to user + Electron.Notification.Show(new NotificationOptions + { + Title = "Update Downloaded", + Body = $"Version {updateInfo.Version} is ready to install.", + Actions = new[] + { + new NotificationAction { Text = "Install Now", Type = NotificationActionType.Button }, + new NotificationAction { Text = "Later", Type = NotificationActionType.Button } + } + }); +}; + +Electron.AutoUpdater.OnError += (error) => +{ + Console.WriteLine($"Update error: {error}"); + Electron.Dialog.ShowErrorBox("Update Error", $"Failed to update: {error}"); +}; +``` + +### GitHub Provider Configuration + +```csharp +// Configure for GitHub releases +Electron.AutoUpdater.AllowPrerelease = true; // Allow pre-release versions +Electron.AutoUpdater.FullChangelog = true; // Get full changelog +Electron.AutoUpdater.AllowDowngrade = false; // Prevent downgrades + +// Set request headers if needed +Electron.AutoUpdater.RequestHeaders = new Dictionary +{ + ["Authorization"] = "token your-github-token", + ["User-Agent"] = "MyApp-Updater" +}; +``` + +### Update Installation + +```csharp +// Install update immediately +if (updateDownloaded) +{ + Electron.AutoUpdater.QuitAndInstall(); +} + +// Silent install (Windows only) +Electron.AutoUpdater.QuitAndInstall(isSilent: true, isForceRunAfter: true); +``` + +### Version Management + +```csharp +// Get current version +var currentVersion = await Electron.AutoUpdater.CurrentVersionAsync; +Console.WriteLine($"Current version: {currentVersion}"); + +// Get update channel +var channel = await Electron.AutoUpdater.ChannelAsync; +Console.WriteLine($"Update channel: {channel}"); + +// Set custom feed URL +// Note: This would typically be configured in electron-builder.json +var feedUrl = await Electron.AutoUpdater.GetFeedURLAsync(); +Console.WriteLine($"Feed URL: {feedUrl}"); +``` + +## Related APIs + +- [Electron.App](App.md) - Application lifecycle events during updates +- [Electron.Notification](Notification.md) - Notify users about update status +- [Electron.Dialog](Dialog.md) - Show update confirmation dialogs + +## Additional Resources + +- [Electron AutoUpdater Documentation](https://electronjs.org/docs/api/auto-updater) - Official Electron auto-updater API diff --git a/docs/API/Clipboard.md b/docs/API/Clipboard.md new file mode 100644 index 0000000..a835453 --- /dev/null +++ b/docs/API/Clipboard.md @@ -0,0 +1,231 @@ +# Electron.Clipboard + +Perform copy and paste operations on the system clipboard. + +## Overview + +The `Electron.Clipboard` API provides comprehensive access to the system clipboard, supporting multiple data formats including text, HTML, RTF, images, and custom data. It enables reading from and writing to the clipboard with platform-specific behavior. + +## Methods + +#### 🧊 `Task AvailableFormatsAsync(string type = "")` +Get an array of supported formats for the clipboard type. + +**Parameters:** +- `type` - Clipboard type + +**Returns:** + +An array of supported formats for the clipboard type. + +#### 🧊 `void Clear(string type = "")` +Clears the clipboard content. + +**Parameters:** +- `type` - Clipboard type + +#### 🧊 `Task ReadBookmarkAsync()` +Returns an Object containing title and url keys representing the bookmark in the clipboard. The title and url values will be empty strings when the bookmark is unavailable. + +**Returns:** + +Object containing title and url keys representing the bookmark in the clipboard. + +#### 🧊 `Task ReadFindTextAsync()` +macOS: The text on the find pasteboard. This method uses synchronous IPC when called from the renderer process. The cached value is reread from the find pasteboard whenever the application is activated. + +**Returns:** + +The text on the find pasteboard. + +#### 🧊 `Task ReadHTMLAsync(string type = "")` +Read the content in the clipboard as HTML markup. + +**Parameters:** +- `type` - Clipboard type + +**Returns:** + +The content in the clipboard as markup. + +#### 🧊 `Task ReadImageAsync(string type = "")` +Read an image from the clipboard. + +**Parameters:** +- `type` - Clipboard type + +**Returns:** + +An image from the clipboard. + +#### 🧊 `Task ReadRTFAsync(string type = "")` +Read the content in the clipboard as RTF. + +**Parameters:** +- `type` - Clipboard type + +**Returns:** + +The content in the clipboard as RTF. + +#### 🧊 `Task ReadTextAsync(string type = "")` +Read the content in the clipboard as plain text. + +**Parameters:** +- `type` - Clipboard type + +**Returns:** + +The content in the clipboard as plain text. + +#### 🧊 `void Write(Data data, string type = "")` +Writes data to the clipboard. + +**Parameters:** +- `data` - Data object to write +- `type` - Clipboard type + +#### 🧊 `void WriteBookmark(string title, string url, string type = "")` +Writes the title and url into the clipboard as a bookmark. + +Note: Most apps on Windows don't support pasting bookmarks into them so you can use clipboard.write to write both a bookmark and fallback text to the clipboard. + +**Parameters:** +- `title` - Bookmark title +- `url` - Bookmark URL +- `type` - Clipboard type + +#### 🧊 `void WriteFindText(string text)` +macOS: Writes the text into the find pasteboard as plain text. This method uses synchronous IPC when called from the renderer process. + +**Parameters:** +- `text` - Text to write to find pasteboard + +#### 🧊 `void WriteHTML(string markup, string type = "")` +Writes markup to the clipboard. + +**Parameters:** +- `markup` - HTML markup to write +- `type` - Clipboard type + +#### 🧊 `void WriteImage(NativeImage image, string type = "")` +Writes an image to the clipboard. + +**Parameters:** +- `image` - Image to write to clipboard +- `type` - Clipboard type + +#### 🧊 `void WriteRTF(string text, string type = "")` +Writes the text into the clipboard in RTF. + +**Parameters:** +- `text` - RTF content to write +- `type` - Clipboard type + +#### 🧊 `void WriteText(string text, string type = "")` +Writes the text into the clipboard as plain text. + +**Parameters:** +- `text` - Text content to write +- `type` - Clipboard type + +## Usage Examples + +### Basic Text Operations + +```csharp +// Read text from clipboard +var text = await Electron.Clipboard.ReadTextAsync(); +Console.WriteLine($"Clipboard text: {text}"); + +// Write text to clipboard +Electron.Clipboard.WriteText("Hello, Electron.NET!"); + +// Read with specific type +var html = await Electron.Clipboard.ReadHTMLAsync("public.main"); +``` + +### Rich Content Handling + +```csharp +// Copy formatted text +var htmlContent = "

@rZX%$A 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�T>H04t0|Pe` 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