From c8227bc0cf95d18406e5c6f3340033efe22dfe91 Mon Sep 17 00:00:00 2001 From: James Carpenter <49618376+kilngod@users.noreply.github.com> Date: Thu, 21 Apr 2022 00:52:59 -0600 Subject: [PATCH] Added new Blazor Sample App to Samples (#779). --- Samples/BlazorSampleApp/App.razor | 12 + .../BlazorSampleApp/BlazorSampleApp.csproj | 18 + .../Components/BasicCanvas.razor | 3 + .../Components/BasicCanvas.razor.cs | 246 ++++++++ .../Components/BasicCanvas.razor.css | 3 + .../Components/BasicCanvasEnums.cs | 27 + .../Components/BasicCanvasExtensions.cs | 175 ++++++ .../BlazorSampleApp/Components/Tooltip.razor | 61 ++ .../ILGPUWebHost/ComputeHost.cs | 252 ++++++++ .../ILGPUWebHost/ComputeHostExtension.cs | 46 ++ .../ILGPUWebHost/ComputeSession.cs | 223 +++++++ .../ILGPUWebHost/IComputeHost.cs | 63 ++ .../MandelbrotExplorer/IMandelbrotBasic.cs | 39 ++ .../MandelbrotExplorer/IMandelbrotClient.cs | 36 ++ .../MandelbrotExplorer/MandelbrotBasic.cs | 241 ++++++++ .../MandelbrotExplorer/MandelbrotClient.cs | 150 +++++ .../MandelbrotExtensions.cs | 195 +++++++ .../MandelbrotPageBasic.razor | 44 ++ .../MandelbrotPageBasic.razor.cs | 297 ++++++++++ .../MandelbrotPageCPU.razor | 39 ++ .../MandelbrotPageCPU.razor.cs | 401 +++++++++++++ .../MandelbrotPageStream.razor | 38 ++ .../MandelbrotPageStream.razor.cs | 217 +++++++ Samples/BlazorSampleApp/Pages/Error.cshtml | 42 ++ Samples/BlazorSampleApp/Pages/Error.cshtml.cs | 27 + Samples/BlazorSampleApp/Pages/Index.razor | 40 ++ Samples/BlazorSampleApp/Pages/_Host.cshtml | 8 + Samples/BlazorSampleApp/Pages/_Layout.cshtml | 32 ++ Samples/BlazorSampleApp/Program.cs | 55 ++ .../Properties/launchSettings.json | 28 + .../BlazorSampleApp/Shared/MainLayout.razor | 19 + .../Shared/MainLayout.razor.css | 70 +++ Samples/BlazorSampleApp/Shared/NavMenu.razor | 42 ++ .../BlazorSampleApp/Shared/NavMenu.razor.css | 62 ++ .../BlazorSampleApp/Shared/SurveyPrompt.razor | 16 + Samples/BlazorSampleApp/_Imports.razor | 11 + .../appsettings.Development.json | 9 + Samples/BlazorSampleApp/appsettings.json | 9 + .../wwwroot/Images/Mandelbrot.png | Bin 0 -> 139405 bytes .../wwwroot/Scripts/BasicCanvas.js | 433 ++++++++++++++ .../wwwroot/css/bootstrap/bootstrap.min.css | 7 + .../css/bootstrap/bootstrap.min.css.map | 1 + .../wwwroot/css/open-iconic/FONT-LICENSE | 86 +++ .../wwwroot/css/open-iconic/ICON-LICENSE | 21 + .../wwwroot/css/open-iconic/README.md | 114 ++++ .../font/css/open-iconic-bootstrap.min.css | 1 + .../open-iconic/font/fonts/open-iconic.eot | Bin 0 -> 28196 bytes .../open-iconic/font/fonts/open-iconic.otf | Bin 0 -> 20996 bytes .../open-iconic/font/fonts/open-iconic.svg | 543 ++++++++++++++++++ .../open-iconic/font/fonts/open-iconic.ttf | Bin 0 -> 28028 bytes .../open-iconic/font/fonts/open-iconic.woff | Bin 0 -> 14984 bytes Samples/BlazorSampleApp/wwwroot/css/site.css | 64 +++ Samples/BlazorSampleApp/wwwroot/favicon.ico | Bin 0 -> 5430 bytes Samples/ILGPU.Samples.sln | 15 +- 54 files changed, 4576 insertions(+), 5 deletions(-) create mode 100644 Samples/BlazorSampleApp/App.razor create mode 100644 Samples/BlazorSampleApp/BlazorSampleApp.csproj create mode 100644 Samples/BlazorSampleApp/Components/BasicCanvas.razor create mode 100644 Samples/BlazorSampleApp/Components/BasicCanvas.razor.cs create mode 100644 Samples/BlazorSampleApp/Components/BasicCanvas.razor.css create mode 100644 Samples/BlazorSampleApp/Components/BasicCanvasEnums.cs create mode 100644 Samples/BlazorSampleApp/Components/BasicCanvasExtensions.cs create mode 100644 Samples/BlazorSampleApp/Components/Tooltip.razor create mode 100644 Samples/BlazorSampleApp/ILGPUWebHost/ComputeHost.cs create mode 100644 Samples/BlazorSampleApp/ILGPUWebHost/ComputeHostExtension.cs create mode 100644 Samples/BlazorSampleApp/ILGPUWebHost/ComputeSession.cs create mode 100644 Samples/BlazorSampleApp/ILGPUWebHost/IComputeHost.cs create mode 100644 Samples/BlazorSampleApp/MandelbrotExplorer/IMandelbrotBasic.cs create mode 100644 Samples/BlazorSampleApp/MandelbrotExplorer/IMandelbrotClient.cs create mode 100644 Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotBasic.cs create mode 100644 Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotClient.cs create mode 100644 Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotExtensions.cs create mode 100644 Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotPageBasic.razor create mode 100644 Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotPageBasic.razor.cs create mode 100644 Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotPageCPU.razor create mode 100644 Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotPageCPU.razor.cs create mode 100644 Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotPageStream.razor create mode 100644 Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotPageStream.razor.cs create mode 100644 Samples/BlazorSampleApp/Pages/Error.cshtml create mode 100644 Samples/BlazorSampleApp/Pages/Error.cshtml.cs create mode 100644 Samples/BlazorSampleApp/Pages/Index.razor create mode 100644 Samples/BlazorSampleApp/Pages/_Host.cshtml create mode 100644 Samples/BlazorSampleApp/Pages/_Layout.cshtml create mode 100644 Samples/BlazorSampleApp/Program.cs create mode 100644 Samples/BlazorSampleApp/Properties/launchSettings.json create mode 100644 Samples/BlazorSampleApp/Shared/MainLayout.razor create mode 100644 Samples/BlazorSampleApp/Shared/MainLayout.razor.css create mode 100644 Samples/BlazorSampleApp/Shared/NavMenu.razor create mode 100644 Samples/BlazorSampleApp/Shared/NavMenu.razor.css create mode 100644 Samples/BlazorSampleApp/Shared/SurveyPrompt.razor create mode 100644 Samples/BlazorSampleApp/_Imports.razor create mode 100644 Samples/BlazorSampleApp/appsettings.Development.json create mode 100644 Samples/BlazorSampleApp/appsettings.json create mode 100644 Samples/BlazorSampleApp/wwwroot/Images/Mandelbrot.png create mode 100644 Samples/BlazorSampleApp/wwwroot/Scripts/BasicCanvas.js create mode 100644 Samples/BlazorSampleApp/wwwroot/css/bootstrap/bootstrap.min.css create mode 100644 Samples/BlazorSampleApp/wwwroot/css/bootstrap/bootstrap.min.css.map create mode 100644 Samples/BlazorSampleApp/wwwroot/css/open-iconic/FONT-LICENSE create mode 100644 Samples/BlazorSampleApp/wwwroot/css/open-iconic/ICON-LICENSE create mode 100644 Samples/BlazorSampleApp/wwwroot/css/open-iconic/README.md create mode 100644 Samples/BlazorSampleApp/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css create mode 100644 Samples/BlazorSampleApp/wwwroot/css/open-iconic/font/fonts/open-iconic.eot create mode 100644 Samples/BlazorSampleApp/wwwroot/css/open-iconic/font/fonts/open-iconic.otf create mode 100644 Samples/BlazorSampleApp/wwwroot/css/open-iconic/font/fonts/open-iconic.svg create mode 100644 Samples/BlazorSampleApp/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf create mode 100644 Samples/BlazorSampleApp/wwwroot/css/open-iconic/font/fonts/open-iconic.woff create mode 100644 Samples/BlazorSampleApp/wwwroot/css/site.css create mode 100644 Samples/BlazorSampleApp/wwwroot/favicon.ico diff --git a/Samples/BlazorSampleApp/App.razor b/Samples/BlazorSampleApp/App.razor new file mode 100644 index 000000000..6fd3ed1b5 --- /dev/null +++ b/Samples/BlazorSampleApp/App.razor @@ -0,0 +1,12 @@ + + + + + + + Not found + +

Sorry, there's nothing at this address.

+
+
+
diff --git a/Samples/BlazorSampleApp/BlazorSampleApp.csproj b/Samples/BlazorSampleApp/BlazorSampleApp.csproj new file mode 100644 index 000000000..04c515bfd --- /dev/null +++ b/Samples/BlazorSampleApp/BlazorSampleApp.csproj @@ -0,0 +1,18 @@ + + + + net6.0 + enable + enable + + + + + + + + + + + + diff --git a/Samples/BlazorSampleApp/Components/BasicCanvas.razor b/Samples/BlazorSampleApp/Components/BasicCanvas.razor new file mode 100644 index 000000000..03e7b46f8 --- /dev/null +++ b/Samples/BlazorSampleApp/Components/BasicCanvas.razor @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/Samples/BlazorSampleApp/Components/BasicCanvas.razor.cs b/Samples/BlazorSampleApp/Components/BasicCanvas.razor.cs new file mode 100644 index 000000000..5777beded --- /dev/null +++ b/Samples/BlazorSampleApp/Components/BasicCanvas.razor.cs @@ -0,0 +1,246 @@ + +// --------------------------------------------------------------------------------------- +// ILGPU Samples +// Copyright (c) 2021 ILGPU Project +// www.ilgpu.net +// +// File: BasicCanvas.razor.cs +// +// This file is part of ILGPU and is distributed under the University of Illinois Open +// Source License. See LICENSE.txt for details. +// --------------------------------------------------------------------------------------- + +using Microsoft.AspNetCore.Components; +using Microsoft.JSInterop; + +namespace BlazorSampleApp.Components +{ + +#nullable disable + public partial class BasicCanvas : ComponentBase, IAsyncDisposable + { + + private IJSObjectReference asyncModule = null; + + private IJSInProcessObjectReference module = null; + + protected IJSRuntime _jsRuntime; + + protected IJSInProcessRuntime _jsInProcessRuntime = null; + + public event Action CanvasInitComplete = null; + + + + + [Parameter] + public bool IsTransparent { get; set; } = false; + + [Parameter] + public bool IsDesyncronized { get; set; } = false; + + [Parameter] + public int Height { get; set; } = 600; + + [Parameter] + public int Width { get; set; } = 800; + + [Parameter] + public bool IsFullScreen { get; set; } = false; + + + [Parameter] + public string CanvasId { get; set; } = Guid.NewGuid().ToString(); + + protected ElementReference _canvasRef; + + public ElementReference CanvasReference => this._canvasRef; + + public bool IsWebAssembley { get { return (_jsRuntime is IJSInProcessRuntime); } } + + private bool IsDisposing = false; + + [Inject] + public IJSRuntime JS_Runtime + { + get + { + return _jsRuntime; + } + set + { + _jsRuntime = value; + + if (IsWebAssembley) + { + _jsInProcessRuntime = (IJSInProcessRuntime)value; + + } + } + } + + + + + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + await base.OnAfterRenderAsync(firstRender); + if (firstRender) + { + + try + { + if (IsWebAssembley) + { + + module = await _jsInProcessRuntime.InvokeAsync("import", "./Scripts/BasicCanvas.js"); + + module.InvokeVoid("initializeBasicCanvas", CanvasId, IsWebAssembley, IsTransparent, IsDesyncronized); + } + else + { + asyncModule = await JS_Runtime.InvokeAsync("import", "./Scripts/BasicCanvas.js"); + + await asyncModule.InvokeVoidAsync("initializeBasicCanvas", CanvasId, IsWebAssembley, IsTransparent, IsDesyncronized); + + } + + if (CanvasInitComplete != null) + CanvasInitComplete(this); + + } + catch (Exception ex) + { + var crap = ex.Message; + } + + } + + } + + public async ValueTask DisposeAsync() + { + IsDisposing = true; + + if (asyncModule != null) + { + await asyncModule.DisposeAsync(); + } + module?.Dispose(); + } + + public async ValueTask InjectScript(string scriptText) + { + if (IsDisposing) return; + + if (module != null) + { + module.InvokeVoid("InjectScript", scriptText); + } + else + { + await asyncModule.InvokeVoidAsync("InjectScript", scriptText); + } + } + +#nullable enable + public async ValueTask SetValueBasicContext(string ValueName, params object?[]? args) + { +#nullable disable + if (IsDisposing) return; + + if (module != null) + { + module.InvokeVoid("setValueBasicContext", CanvasReference, ValueName, args); + } + else + { + await asyncModule.InvokeVoidAsync("setValueBasicContext", CanvasReference, ValueName, args); + } + } + + +#nullable enable + public async ValueTask GetValueBasicContext(string ValueName, params object?[]? args) + { +#nullable disable + if (IsDisposing) return default(T); + + if (module != null) + { + return module.Invoke("getValueBasicContext", CanvasReference, ValueName, args); + } + else + { + return await asyncModule.InvokeAsync("getValueBasicContext", CanvasReference, ValueName, args); + } + } + + +#nullable enable + public async ValueTask SetFunctionBasicContext(string FunctionName, params object?[]? args) + { +#nullable disable + if (IsDisposing) return; + + if (module != null) + { + module.InvokeVoid("setFunctionBasicContext", CanvasReference, FunctionName, args); + } + else + { + await asyncModule.InvokeVoidAsync("setFunctionBasicContext", CanvasReference, FunctionName, args); + } + } + +#nullable enable + public async ValueTask GetFunctionBasicContext(string FunctionName, params object?[]? args) + { +#nullable disable + if (IsDisposing) return default(T); + + if (module != null) + { + return module.Invoke("getFunctionBasicContext", CanvasReference, FunctionName, args); + } + else + { + return await asyncModule.InvokeAsync("getFunctionBasicContext", CanvasReference, FunctionName, args); + } + } + +#nullable enable + public async ValueTask SetFunctionDrawingBasis(string FunctionName, params object?[]? args) + { +#nullable disable + if (IsDisposing) return; + + if (module != null) + { + module.InvokeVoid("setFunctionDrawingBasis", CanvasReference, FunctionName, args); + } + else + { + await asyncModule.InvokeVoidAsync("setFunctionDrawingBasis", CanvasReference, FunctionName, args); + } + } + +#nullable enable + public async ValueTask GetFunctionDrawingBasis(string FunctionName, params object?[]? args) + { +#nullable disable + if (IsDisposing) return default(T); + + if (module != null) + { + return module.Invoke("getFunctionDrawingBasis", CanvasReference, FunctionName, args); + } + else + { + return await asyncModule.InvokeAsync("getFunctionDrawingBasis", CanvasReference, FunctionName, args); + } + } + + } +} diff --git a/Samples/BlazorSampleApp/Components/BasicCanvas.razor.css b/Samples/BlazorSampleApp/Components/BasicCanvas.razor.css new file mode 100644 index 000000000..eb5a1f9c7 --- /dev/null +++ b/Samples/BlazorSampleApp/Components/BasicCanvas.razor.css @@ -0,0 +1,3 @@ +canvas { + border: 5px dotted blue; +} diff --git a/Samples/BlazorSampleApp/Components/BasicCanvasEnums.cs b/Samples/BlazorSampleApp/Components/BasicCanvasEnums.cs new file mode 100644 index 000000000..af76994da --- /dev/null +++ b/Samples/BlazorSampleApp/Components/BasicCanvasEnums.cs @@ -0,0 +1,27 @@ +// --------------------------------------------------------------------------------------- +// ILGPU Samples +// Copyright (c) 2021 ILGPU Project +// www.ilgpu.net +// +// File: BasicCanvasEnums.cs +// +// This file is part of ILGPU and is distributed under the University of Illinois Open +// Source License. See LICENSE.txt for details. +// --------------------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BlazorSampleApp.Components +{ + public enum CanvasLineCap { butt, round, square }; + public enum CanvasLineJoin { round, bevel, miter }; + public enum CanvasTextAlign { start, end, left, right, center }; + public enum CanvasTextBaseline { top, hanging, middle, alphabetic, ideographic, bottom }; + public enum CanvasDirection { ltr, rtl, inherit }; + + +} diff --git a/Samples/BlazorSampleApp/Components/BasicCanvasExtensions.cs b/Samples/BlazorSampleApp/Components/BasicCanvasExtensions.cs new file mode 100644 index 000000000..ff7302cc0 --- /dev/null +++ b/Samples/BlazorSampleApp/Components/BasicCanvasExtensions.cs @@ -0,0 +1,175 @@ +// --------------------------------------------------------------------------------------- +// ILGPU Samples +// Copyright (c) 2021 ILGPU Project +// www.ilgpu.net +// +// File: BasicCanvasExtensions.cs +// +// This file is part of ILGPU and is distributed under the University of Illinois Open +// Source License. See LICENSE.txt for details. +// --------------------------------------------------------------------------------------- + +using System.Text.Json.Nodes; + + +namespace BlazorSampleApp.Components; + +/// +/// All webgl context methods are setup as extension methods to the BasicCanvas +/// +/// This approach is taken for clarity of inter-operation with JavaScript. +/// +/// Documentation about 2d webgl rendering methods can be Googled, though Mozilla +/// documentation is fairly easy to read. +/// https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D +/// + +#nullable enable + +public static class BasicCanvasExtensions +{ + + public async static ValueTask GetContextAttributes(this BasicCanvas basicCanvas) => await basicCanvas.GetFunctionBasicContext("getContextAttributes"); + + + // basic values + public async static ValueTask GlobalAlpha(this BasicCanvas basicCanvas, float alpha) => await basicCanvas.SetValueBasicContext("globalAlpha", alpha); + + public async static ValueTask GlobalAlpha(this BasicCanvas basicCanvas) => await basicCanvas.GetValueBasicContext("globalAlpha"); + + public async static ValueTask Filter(this BasicCanvas basicCanvas, string filter) => await basicCanvas.SetValueBasicContext("filter", filter); // not supported by safari + public async static ValueTask Filter(this BasicCanvas basicCanvas) => await basicCanvas.GetValueBasicContext("filter"); + + + + + // transformations + + public async static ValueTask SetTransform(this BasicCanvas basicCanvas, float a, float b, float c, float d, float e, float f) => await basicCanvas.SetFunctionBasicContext("setTransform", a, b, c, d, e, f); + + public async static ValueTask SetTransform(this BasicCanvas basicCanvas, double a, double b, double c, double d, double e, double f) => await basicCanvas.SetFunctionBasicContext("setTransform", a, b, c, d, e, f); + + + public async static ValueTask GetTransform(this BasicCanvas basicCanvas) => await basicCanvas.GetFunctionBasicContext("getTransform"); + public async static ValueTask Transform(this BasicCanvas basicCanvas, float a, float b, float c, float d, float e, float f) => await basicCanvas.SetFunctionBasicContext("transform", a, b, c, d, e, f); + public async static ValueTask Transform(this BasicCanvas basicCanvas, double a, double b, double c, double d, double e, double f) => await basicCanvas.SetFunctionBasicContext("transform", a, b, c, d, e, f); + + public async static ValueTask ResetTransform(this BasicCanvas basicCanvas) => await basicCanvas.SetFunctionBasicContext("resetTransform"); + public async static ValueTask Translate(this BasicCanvas basicCanvas, float x, float y) => await basicCanvas.SetFunctionBasicContext("translate", x, y); + + public async static ValueTask Rotate(this BasicCanvas basicCanvas, float angle) => await basicCanvas.SetFunctionBasicContext("rotate", angle); + + public async static ValueTask Scale(this BasicCanvas basicCanvas, float x, float y) => await basicCanvas.SetFunctionBasicContext("scale", x, y); + + + // path methods + public async static ValueTask BeginPath(this BasicCanvas basicCanvas) => await basicCanvas.SetFunctionBasicContext("beginPath"); + public async static ValueTask ClosePath(this BasicCanvas basicCanvas) => await basicCanvas.SetFunctionBasicContext("closePath"); + public async static ValueTask Clip(this BasicCanvas basicCanvas) => await basicCanvas.SetFunctionBasicContext("clip"); + + public async static ValueTask MoveTo(this BasicCanvas basicCanvas, float x, float y) => await basicCanvas.SetFunctionBasicContext("moveTo", x, y); + public async static ValueTask LineTo(this BasicCanvas basicCanvas, float x, float y) => await basicCanvas.SetFunctionBasicContext("lineTo", x, y); + + public async static ValueTask Arc(this BasicCanvas basicCanvas, int x, int y, float radius, float startAngle, float endAngle, bool counterclockwise = false) => await basicCanvas.SetFunctionBasicContext("arc", x, y, radius, startAngle, endAngle, counterclockwise); + + public async static ValueTask ArcTo(this BasicCanvas basicCanvas, int x1, int y1, int x2, int y2, float radius) => await basicCanvas.SetFunctionBasicContext("arcTo", x1, y1, x2, y2, radius); + + public async static ValueTask BezierCurveTo(this BasicCanvas basicCanvas, int cp1x, int cp1y, int cp2x, int cp2y, int x, int y) => await basicCanvas.SetFunctionBasicContext("bezierCurveTo", cp1x, cp1y, cp2x, cp2y, x, y); + + public async static ValueTask Ellipse(this BasicCanvas basicCanvas, int x, int y, int radiusX, int radiusY, int rotation, float startAngle, float endAngle, bool counterclockwise = false) => await basicCanvas.SetFunctionBasicContext("ellipse", x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise); + + public async static ValueTask LineWidth(this BasicCanvas basicCanvas, float pixels) => await basicCanvas.SetValueBasicContext("lineWidth", pixels); + + public async static ValueTask LineWidth(this BasicCanvas basicCanvas) => await basicCanvas.GetValueBasicContext("lineWidth"); + + public async static ValueTask MiterLimit(this BasicCanvas basicCanvas, float limit) => await basicCanvas.SetValueBasicContext("miterLimit", limit); + + public async static ValueTask MiterLimit(this BasicCanvas basicCanvas) => await basicCanvas.GetValueBasicContext("miterLimit"); + + public async static ValueTask LineCap(this BasicCanvas basicCanvas, CanvasLineCap value) => await basicCanvas.SetValueBasicContext("lineCap", value.ToString()); + + public async static ValueTask LineCap(this BasicCanvas basicCanvas) => await basicCanvas.GetValueBasicContext("lineCap"); + + + public async static ValueTask LineJoin(this BasicCanvas basicCanvas, CanvasLineJoin joinType) => await basicCanvas.SetValueBasicContext("lineJoin", joinType.ToString()); + + public async static ValueTask LineDashOffset(this BasicCanvas basicCanvas, int lineDashOffset) => await basicCanvas.SetValueBasicContext("lineDashOffset", lineDashOffset); + + public async static ValueTask Stroke(this BasicCanvas basicCanvas) => await basicCanvas.SetFunctionBasicContext("stroke"); + + public async static ValueTask StrokeStyle(this BasicCanvas basicCanvas, string strokeStyle) => await basicCanvas.SetValueBasicContext("strokeStyle", strokeStyle); + + // draw methods + + public async static ValueTask GlobalCompositeOperation(this BasicCanvas basicCanvas, string operation) => await basicCanvas.SetValueBasicContext("globalCompositeOperation", operation); + + public async static ValueTask GlobalCompositeOperation(this BasicCanvas basicCanvas) => await basicCanvas.GetValueBasicContext("globalCompositeOperation"); + + + public async static ValueTask Fill(this BasicCanvas basicCanvas) => await basicCanvas.SetFunctionBasicContext("fill"); + public async static ValueTask FillStyle(this BasicCanvas basicCanvas, string style) => await basicCanvas.SetValueBasicContext("fillStyle", style); + public async static ValueTask FillStyle(this BasicCanvas basicCanvas) => await basicCanvas.GetValueBasicContext("fillStyle"); + + + public async static ValueTask ShadowColor(this BasicCanvas basicCanvas, string color) => await basicCanvas.SetValueBasicContext("shadowColor", color); + public async static ValueTask ShadowColor(this BasicCanvas basicCanvas) => await basicCanvas.GetValueBasicContext("shadowColor"); + + public async static ValueTask ShadowBlur(this BasicCanvas basicCanvas, float blur) => await basicCanvas.SetValueBasicContext("shadowBlur", blur); + public async static ValueTask ShadowBlur(this BasicCanvas basicCanvas) => await basicCanvas.GetValueBasicContext("shadowBlur"); + + + public async static ValueTask ShadowOffsetX(this BasicCanvas basicCanvas, int offset) => await basicCanvas.SetValueBasicContext("shadowOffsetX", offset); + public async static ValueTask ShadowOffsetX(this BasicCanvas basicCanvas) => await basicCanvas.GetValueBasicContext("shadowOffsetX"); + + public async static ValueTask ShadowOffsetY(this BasicCanvas basicCanvas, int offset) => await basicCanvas.SetValueBasicContext("shadowOffsetY", offset); + public async static ValueTask ShadowOffsetY(this BasicCanvas basicCanvas) => await basicCanvas.GetValueBasicContext("shadowOffsetY"); + + + public async static ValueTask Save(this BasicCanvas basicCanvas) => await basicCanvas.SetFunctionBasicContext("save"); + public async static ValueTask Restore(this BasicCanvas basicCanvas) => await basicCanvas.SetFunctionBasicContext("restore"); + + + + // rectangle methods + public async static ValueTask ClearRect(this BasicCanvas basicCanvas, int x, int y, int width, int height) => await basicCanvas.SetFunctionBasicContext("clearRect", x, y, width, height); + public async static ValueTask FillRect(this BasicCanvas basicCanvas, int x, int y, int width, int height) => await basicCanvas.SetFunctionBasicContext("fillRect", x, y, width, height); + public async static ValueTask StrokeRect(this BasicCanvas basicCanvas, int x, int y, int width, int height) => await basicCanvas.SetFunctionBasicContext("strokeRect", x, y, width, height); + + // text methods + public async static ValueTask Font(this BasicCanvas basicCanvas, string fontName) => await basicCanvas.SetValueBasicContext("font", fontName); + public async static ValueTask Font(this BasicCanvas basicCanvas) => await basicCanvas.GetValueBasicContext("font"); + public async static ValueTask TextAlign(this BasicCanvas basicCanvas, CanvasTextAlign align) => await basicCanvas.SetValueBasicContext("textAlign", align.ToString()); + public async static ValueTask TextAlign(this BasicCanvas basicCanvas) => await basicCanvas.GetValueBasicContext("textAlign"); + public async static ValueTask TextBaseline(this BasicCanvas basicCanvas, CanvasTextBaseline baseline) => await basicCanvas.SetValueBasicContext("textBaseline", baseline.ToString()); + public async static ValueTask TextBaseline(this BasicCanvas basicCanvas) => await basicCanvas.GetValueBasicContext("textBaseline"); + public async static ValueTask Direction(this BasicCanvas basicCanvas, CanvasDirection direction) => await basicCanvas.SetValueBasicContext("direction", direction.ToString()); + public async static ValueTask Direction(this BasicCanvas basicCanvas) => await basicCanvas.GetValueBasicContext("direction"); + + + public async static ValueTask FillText(this BasicCanvas basicCanvas, string text, int x, int y) => await basicCanvas.SetFunctionBasicContext("fillText", text, x, y); + public async static ValueTask FillText(this BasicCanvas basicCanvas, string text, int x, int y, int maxWidth) => await basicCanvas.SetFunctionBasicContext("fillText", text, x, y, maxWidth); + public async static ValueTask StrokeText(this BasicCanvas basicCanvas, string text, int x, int y) => await basicCanvas.SetFunctionBasicContext("StrokeText", text, x, y); + public async static ValueTask StrokeText(this BasicCanvas basicCanvas, string text, int x, int y, int maxWidth) => await basicCanvas.SetFunctionBasicContext("StrokeText", text, x, y, maxWidth); + + public async static ValueTask MeasureText(this BasicCanvas basicCanvas, string text) => await basicCanvas.GetFunctionDrawingBasis("measureText", text);// is this a dictionary? + + + // image methods + public async static ValueTask ImageSmoothingEnabled(this BasicCanvas basicCanvas, bool smoothingEnabled) => await basicCanvas.SetValueBasicContext("imageSmoothingEnabled", smoothingEnabled); + public async static ValueTask ImageSmoothingEnabled(this BasicCanvas basicCanvas) => await basicCanvas.GetValueBasicContext("imageSmoothingEnabled"); + public async static ValueTask ImageSmoothingQuality(this BasicCanvas basicCanvas, string quality) => await basicCanvas.SetValueBasicContext("imageSmoothingQuality", quality); /// not supported by firefox + public async static ValueTask ImageSmoothingQuality(this BasicCanvas basicCanvas) => await basicCanvas.GetValueBasicContext("imageSmoothingQuality"); + + // image pixel manipulation + public async static ValueTask CreateImageData(this BasicCanvas basicCanvas, string nameImageStorage, int width, int height, params object?[]? args) => await basicCanvas.SetFunctionDrawingBasis("createImageData", nameImageStorage, width, height, args); + public async static ValueTask CreateImageDataCopyByteArray(this BasicCanvas basicCanvas, string nameImageStorage, int width, int height, params object?[]? args) => await basicCanvas.SetFunctionDrawingBasis("createImageDataCopyByteArray", nameImageStorage, width, height, args); + public async static ValueTask GetImageData(this BasicCanvas basicCanvas, string nameImageStorage, int x, int y, int width, int height) => await basicCanvas.SetFunctionDrawingBasis("getImageData", nameImageStorage, x, y, width, height); + public async static ValueTask PutImageData(this BasicCanvas basicCanvas, string nameImageStorage, int x, int y) => await basicCanvas.SetFunctionDrawingBasis("putImageData", nameImageStorage, x, y); + public async static ValueTask PutImageData(this BasicCanvas basicCanvas, string nameImageStorage, int x, int y, int dx, int dy, int dWidth, int dHeight) => await basicCanvas.SetFunctionDrawingBasis("putImageDataPartial", nameImageStorage, x, y, dx, dy, dWidth, dHeight); + + // image support + public async static ValueTask CreateImage(this BasicCanvas basicCanvas, string nameImageStorage, string source, string alt) => await basicCanvas.SetFunctionDrawingBasis("createImage", nameImageStorage, source, alt); + public async static ValueTask DrawImage(this BasicCanvas basicCanvas, string nameImageStorage, int x, int y) => await basicCanvas.SetFunctionDrawingBasis("drawImage", nameImageStorage, x, y); + + +} diff --git a/Samples/BlazorSampleApp/Components/Tooltip.razor b/Samples/BlazorSampleApp/Components/Tooltip.razor new file mode 100644 index 000000000..0947c1f89 --- /dev/null +++ b/Samples/BlazorSampleApp/Components/Tooltip.razor @@ -0,0 +1,61 @@ + + +
+ + @((MarkupString)Text) + + @ChildContent + +
+ +@code { + /// + /// This is a simple way to show hints over buttons Blazor style. + /// +#nullable disable + [Parameter] public RenderFragment ChildContent { get; set; } + [Parameter] public string Text { get; set; } + + //similar to from https://bladeprogramming.blogspot.com/2021/03/blazor-tutorial-tooltip-component.html?m=1 by Blade Programming +} + diff --git a/Samples/BlazorSampleApp/ILGPUWebHost/ComputeHost.cs b/Samples/BlazorSampleApp/ILGPUWebHost/ComputeHost.cs new file mode 100644 index 000000000..839fb958e --- /dev/null +++ b/Samples/BlazorSampleApp/ILGPUWebHost/ComputeHost.cs @@ -0,0 +1,252 @@ +// --------------------------------------------------------------------------------------- +// ILGPU Samples +// Copyright (c) 2021 ILGPU Project +// www.ilgpu.net +// +// File: ComputeHost.cs +// +// This file is part of ILGPU and is distributed under the University of Illinois Open +// Source License. See LICENSE.txt for details. +// --------------------------------------------------------------------------------------- + + + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using ILGPU; +using ILGPU.Runtime; + +namespace BlazorSampleApp.ILGPUWebHost +{ + + /// + /// This is a singleton object for sharing all accelerators on a host server. + /// + ///
+ /// We assume a server can have multiple GPUs, this object's job would be to manage the load + /// across all GPUs on this server. Imagine a farm with 1000 server each with 4 GPUs, + /// how do we manage a GPU farm? At a single "blazor" server, sharing GPU's is not too hard to + /// imagine how we spread the load across the 4 GPUs but at a farm level; networking, routing and + /// bandwidth become important very important. + /// + /// + /// We could in theory re-establish streams between GPUs and clients to balance + /// the computational load. It is a trivial task counting accelerator streams per GPU + /// should we want to balance similar compute tasks. + /// + /// We will note the Mandelbrot set computed here uses approximately 100 MB of memory per session + /// therefor we should secure buffer allocation as part of the session. + ///
+ +#nullable disable + public class ComputeHost : IComputeHost, IDisposable + { + // the context for session and accelerator instantiation + private Context _context; + + private bool _disposing; + + // all current sessions + private List _computeSessions; + + // all compliant accelerators + private List _accelerators; + + // has this host been configured? + public bool HostConfigured { get { return !_disposing && _accelerators.Count>0; } } + + // current active session list + public int SessionCount { get { return _computeSessions?.Count ?? 0; } } + + + /// + /// This is used to establish the host as a singleton object on the web server + /// + public ComputeHost() + { + _disposing = false; + + _context = Context.Create(builder => builder.Default()); + + _computeSessions = new List(); + + _accelerators = new List(); + } + + + /// + /// Each application must specify what are the requirements for accelerators on the host server + /// + /// + /// + /// + public bool ConfigureAcceleration(AcceleratorType[] allowedAcceleratorTypes, long minimumMemory, int multiProcessors) + { + bool result = false; + + if (!HostConfigured) + { + + List types = allowedAcceleratorTypes.ToList(); + + foreach (var device in _context) + { + + if (types.Exists(x => x == device.AcceleratorType)) + { + + var accelerator = device.CreateAccelerator(_context); + + if (accelerator.MemorySize >= minimumMemory && accelerator.NumMultiprocessors >= multiProcessors) + { + + result = true; + + _accelerators.Add(accelerator); + } + else + { + accelerator.Dispose(); + } + } + } + + if (_accelerators.Count > 1) + { + var ordered = from acc in _accelerators orderby acc.AcceleratorRank() descending + select acc; + + _accelerators = ordered.ToList(); + } + } + return result; + } + + /// + /// Here we assume only one accelerator on the system. If there were multiple accelerators we could do a + /// check of how many sessions were on each accelerator and return a new compute session on the leased + /// used accelerator. + /// + /// + /// + public ComputeSession NewComputeStream (string sessionID) + { + if (!_disposing) + { + ComputeSession computeSession = new ComputeSession(sessionID, _accelerators[0], this); // preform load balancing magic here is supporting multiple accelerators + _computeSessions.Add(computeSession); + return computeSession; + } + return null; + } + + + /// + /// If for some reason a blazor compute session end without notice, we can attempt to + /// connect back the our original session provided we stored the session ID in the + /// client browser. Note if we have a server farm, we may need to keep a server session map. + /// + /// + /// + public ComputeSession FindComputeSession(string sessionID) + { + + ComputeSession result = null; + + if (!_disposing) + { + result = _computeSessions?.Find(x => x.SessionID == sessionID); + } + + return null; + } + + /// + /// We are tracking all compute sessions on the host for GPU resource allocation. Sessions must be removed + /// from the host otherwise when disposed otherwise we will take the GPU down on all sessions by overallocation + /// or resources. + /// + /// + + public void ReturnSession(ComputeSession session) + { + if (session != null) + { + session.InActivate(); + + _computeSessions.Remove(session); + + if (!session.IsDisposing) + { + session.Dispose(); + } + } + } + + + /// + /// "gracefully clean up sessions" If the host is disposing we need to clean up outstanding sessions + /// + public void CleanUpSessions() + { + foreach(var session in _computeSessions) + { + // stop all new compute + session.InActivate(); + } + + foreach (var session in _computeSessions) + { + while(session.IsComputing) + { + // this does not work if the current session is in the host thread. + Thread.Sleep(10); + } + if (!session.IsDisposing) + { + session?.Dispose(); + } + } + _computeSessions.Clear(); + } + + /// + /// clean up accelerators. + /// + /// + private void CleanUpAcceleratorHosts() + { + foreach (var accelerator in _accelerators) + { + // we assume and accelerator could be active + accelerator?.Synchronize(); + + } + foreach (var accelerator in _accelerators) + { + accelerator?.Dispose(); + } + _accelerators.Clear(); + } + + + /// + /// clear up resources should the host be disposed. + /// + + public void Dispose() + { + _disposing = true; + + CleanUpSessions(); + + CleanUpAcceleratorHosts(); + + _context?.Dispose(); + + } + } +} diff --git a/Samples/BlazorSampleApp/ILGPUWebHost/ComputeHostExtension.cs b/Samples/BlazorSampleApp/ILGPUWebHost/ComputeHostExtension.cs new file mode 100644 index 000000000..8bff1ddfe --- /dev/null +++ b/Samples/BlazorSampleApp/ILGPUWebHost/ComputeHostExtension.cs @@ -0,0 +1,46 @@ +// --------------------------------------------------------------------------------------- +// ILGPU Samples +// Copyright (c) 2022 ILGPU Project +// www.ilgpu.net +// +// File: ComputeHostExtension.cs +// +// This file is part of ILGPU and is distributed under the University of Illinois Open +// Source License. See LICENSE.txt for details. +// --------------------------------------------------------------------------------------- + + + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using ILGPU; +using ILGPU.Runtime; + +namespace BlazorSampleApp.ILGPUWebHost +{ + + public static class ComputeHostExtension + { + /// + /// We rank accelerators by their maximum throughput. + /// + /// Rank is approximated by clock rate * threads per processor * multiprocessors, for an integrated GPU + /// we assume the clock rate is 2GHz to avoid operating specific calls + /// + /// + /// + public static long AcceleratorRank(this Accelerator accelerator) + { + long clockRate = Convert.ToInt64(int.MaxValue); // assume 2 GHz for a CPU. + + clockRate = (accelerator as ILGPU.Runtime.OpenCL.CLAccelerator)?.ClockRate ?? clockRate; + + clockRate = (accelerator as ILGPU.Runtime.Cuda.CudaAccelerator)?.ClockRate ?? clockRate; + + return accelerator.NumMultiprocessors * accelerator.MaxNumThreadsPerMultiprocessor * clockRate; + } + } +} diff --git a/Samples/BlazorSampleApp/ILGPUWebHost/ComputeSession.cs b/Samples/BlazorSampleApp/ILGPUWebHost/ComputeSession.cs new file mode 100644 index 000000000..3d9ddab9b --- /dev/null +++ b/Samples/BlazorSampleApp/ILGPUWebHost/ComputeSession.cs @@ -0,0 +1,223 @@ +// --------------------------------------------------------------------------------------- +// ILGPU Samples +// Copyright (c) 2022 ILGPU Project +// www.ilgpu.net +// +// File: ComputeSession.cs +// +// This file is part of ILGPU and is distributed under the University of Illinois Open +// Source License. See LICENSE.txt for details. +// --------------------------------------------------------------------------------------- + + + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using ILGPU; +using ILGPU.Runtime; +using BlazorSampleApp.MandelbrotExplorer; + + + +namespace BlazorSampleApp.ILGPUWebHost +{ + /// + /// An individual compute session represents all compute resources for a single accelerator stream. + /// + /// This object must implement IDisposable as it allocates dedicated non-movable GPU accessible buffers. + /// +#nullable disable + public class ComputeSession : IDisposable + { + + // one or more kernels can be hosted in each compute session depending on the complexity of our calculation + private System.Action, ArrayView1D, int, ArrayView> mandelbrot_kernel; + + + // SessionID allows individual Blazor sessions to "find" their compute session + + public string SessionID { get; set; } + + public bool _isActive = true; + public bool IsActive { get { return _isActive; } } + + + // do we have an active process? If so we wait until the process is finished to avoid blowing up GPU + private bool _computing = false; + public bool IsComputing { get { return _computing; } } + + private bool _disposing = false; + public bool IsDisposing { get { return _disposing; } } + + private bool _kernelIsCompiled = false; + public bool KernelIsCompiled { get { return _kernelIsCompiled; } } + + + + private AcceleratorStream _stream = null; + + + private ComputeHost _host; + + public AcceleratorStream Stream + { + get + { + if (IsActive) + { + return _stream; + } + else + { + return null; + } + } + } + + public ComputeSession(string sessionID, Accelerator accelerator, ComputeHost host) + { + SessionID = sessionID; + + _stream = accelerator.CreateStream(); + _host = host; + + } + + public void CompileKernel() + { + + if (IsActive && !_kernelIsCompiled) + { + _computing = true; + mandelbrot_kernel = _stream.Accelerator.LoadAutoGroupedKernel, ArrayView1D, int, ArrayView>(MandelbrotExtensions.MandelbrotKernel); + _kernelIsCompiled = true; + _computing = false; + } + + + } + + + /// + /// We're going to allow up to 10 seconds for any compute to complete + /// + /// + private async Task ComputeFinished() + { + int iCount = 0; + while ((iCount < 1000) && _computing) + { + await Task.Delay(10); + iCount += 1; + } + return (iCount < 1000); + } + + public void InActivate() + { + _isActive = false; + } + + /// + /// Clean up all compute resources + /// + public async void Dispose() + { + _disposing = true; + _isActive = false; // do not allow any new computation. + + // the host will dispose of this stream + _host?.ReturnSession(this); + _host = null; + + bool computeFinished = await ComputeFinished(); + + _stream?.Dispose(); + _stream = null; + _display?.Dispose(); + _display = null; + + _area?.Dispose(); + _area = null; + _output?.Dispose(); + _output = null; + mandelbrot_kernel = null; + } + + + int _buffersize; + int _iterations; + MemoryBuffer1D _display = null; + MemoryBuffer1D _area = null; + MemoryBuffer1D _output = null; + + public void InitGPU(ref int[] buffer, int[] displayPort, float[] viewArea, int max_iterations) + { + if (IsActive && !_disposing) + { + // release current buffers if they exist + _display?.Dispose(); + _area?.Dispose(); + _output?.Dispose(); + + _buffersize = buffer.Length; + + _iterations = max_iterations; + + _area = _stream.Accelerator.Allocate1D(viewArea); + + _display = _stream.Accelerator.Allocate1D(displayPort); + + _output = _stream.Accelerator.Allocate1D(_buffersize); + + } + } + + + /// + /// calculate a new result set based on the viewArea of interest + /// + /// + /// + /// + public async Task CalcGPU(int[] buffer, float[] viewArea) + { + bool result = false; + if (buffer.Length != _buffersize) + { + return false; + } + + // copy parameters to GPU inbound buffer + ArrayViewExtensions.CopyFromCPU(_area, viewArea); + + if (IsActive && !_computing && !_disposing) + { + // Launch kernel + _computing = true; + + mandelbrot_kernel(_stream, _buffersize, _display, _area, _iterations, _output.View); + await _stream.SynchronizeAsync(); // wait for the stream to synchronize + result = IsActive; + _computing = false; + } + + + // Reads data from the GPU buffer into a CPU array. + // that the kernel and memory copy are completed first. + if (IsActive && !_disposing) + { + _computing = true; + _output.CopyToCPU(buffer); + result = IsActive; + _computing = false; + } + + return result && !_disposing; + } + + } +} diff --git a/Samples/BlazorSampleApp/ILGPUWebHost/IComputeHost.cs b/Samples/BlazorSampleApp/ILGPUWebHost/IComputeHost.cs new file mode 100644 index 000000000..7a5559487 --- /dev/null +++ b/Samples/BlazorSampleApp/ILGPUWebHost/IComputeHost.cs @@ -0,0 +1,63 @@ +// --------------------------------------------------------------------------------------- +// ILGPU Samples +// Copyright (c) 2022 ILGPU Project +// www.ilgpu.net +// +// File: IComputeHost.cs +// +// This file is part of ILGPU and is distributed under the University of Illinois Open +// Source License. See LICENSE.txt for details. +// --------------------------------------------------------------------------------------- + + + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using ILGPU; +using ILGPU.Runtime; + +namespace BlazorSampleApp.ILGPUWebHost +{ + /// + /// represents the type of a host + /// + public interface IComputeHost + { + /// + /// host this host been configured? + /// + bool HostConfigured { get; } + + /// + /// number of active compute sessions + /// + int SessionCount { get; } + + /// + /// determine the minium specifications for an accelerator + /// + /// + /// + /// + /// + bool ConfigureAcceleration(AcceleratorType[] allowedAcceleratorTypes, long minimumMemory,int multiProcessors); + + /// + /// request a new compute session + /// + /// + /// + ComputeSession NewComputeStream(string sessionID); + + + /// + /// return a compute session + /// + /// + void ReturnSession(ComputeSession session); + + } +} diff --git a/Samples/BlazorSampleApp/MandelbrotExplorer/IMandelbrotBasic.cs b/Samples/BlazorSampleApp/MandelbrotExplorer/IMandelbrotBasic.cs new file mode 100644 index 000000000..464dc6860 --- /dev/null +++ b/Samples/BlazorSampleApp/MandelbrotExplorer/IMandelbrotBasic.cs @@ -0,0 +1,39 @@ +// --------------------------------------------------------------------------------------- +// ILGPU Samples +// Copyright (c) 2022 ILGPU Project +// www.ilgpu.net +// +// File: IMandelbrotBasic.cs +// +// This file is part of ILGPU and is distributed under the University of Illinois Open +// Source License. See LICENSE.txt for details. +// --------------------------------------------------------------------------------------- + +using System.Collections.Generic; +using ILGPU; +using ILGPU.Runtime; + +namespace BlazorSampleApp.MandelbrotExplorer +{ + + /// + /// For Blazor scoped dependency injection of the full ILGPU client into a razor page. + /// + public interface IMandelbrotBasic + { + bool IsDisposing { get; } + + Context ContextInstance { get; } + + Accelerator AcceleratorInstance { get; } + + void CompileKernel(Device device); + + void CalcGPU(ref int[] buffer, int[] dispayPort, float[] viewArea, int maxIterations); + + void InitGPURepeat(ref int[] buffer, int[] displayPort, float[] viewArea, int max_iterations); + void CalcGPURepeat(ref int[] buffer, int[] dispayPort, float[] viewArea, int max_iterations); + + void CleanupGPURepeat(); + } +} diff --git a/Samples/BlazorSampleApp/MandelbrotExplorer/IMandelbrotClient.cs b/Samples/BlazorSampleApp/MandelbrotExplorer/IMandelbrotClient.cs new file mode 100644 index 000000000..3b4dde99a --- /dev/null +++ b/Samples/BlazorSampleApp/MandelbrotExplorer/IMandelbrotClient.cs @@ -0,0 +1,36 @@ +// --------------------------------------------------------------------------------------- +// ILGPU Samples +// Copyright (c) 2022 ILGPU Project +// www.ilgpu.net +// +// File: IMandelbrotClient.cs +// +// This file is part of ILGPU and is distributed under the University of Illinois Open +// Source License. See LICENSE.txt for details. +// --------------------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using ILGPU; +using ILGPU.Runtime; + +namespace BlazorSampleApp.MandelbrotExplorer +{ + /// + /// This interface is to allow Blazor's dependency injection to generate scoped access to a server hosted singleton compute session. + /// + public interface IMandelbrotClient + { + string AcceleratorName(); + + public bool IsActive { get; } + + void SetDisplay(int width, int height); + + Task CalculateMandelbrot(float left, float right, float top, float bottom); + + } +} diff --git a/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotBasic.cs b/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotBasic.cs new file mode 100644 index 000000000..de466d3f7 --- /dev/null +++ b/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotBasic.cs @@ -0,0 +1,241 @@ +// --------------------------------------------------------------------------------------- +// ILGPU Samples +// Copyright (c) 2022 ILGPU Project +// www.ilgpu.net +// +// File: MandelbrotBasic.cs +// +// This file is part of ILGPU and is distributed under the University of Illinois Open +// Source License. See LICENSE.txt for details. +// --------------------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using ILGPU; +using ILGPU.Runtime; +using ILGPU.Runtime.CPU; +using ILGPU.Runtime.Cuda; + + +namespace BlazorSampleApp.MandelbrotExplorer +{ + /// + /// This loads the scoped dependency injected instance of ILGPU per razor page which is similar coding to a command line application. + /// + /// Blazor has difference levels of dependency injection, this should be scoped + /// "services.AddScoped();" + /// in the Blazor server startup file. + /// + +#nullable disable + public class MandelbrotBasic : IMandelbrotBasic, IDisposable + { + private Context _context = null; + private Accelerator _accelerator = null; + private System.Action, ArrayView1D, int, ArrayView> mandelbrot_kernel; + + + // If we are disposing do not start new processes + private bool _disposing = false; + + // Are we actively computing? If so we wait until the active compute process is finished to avoid blowing + // up the GPU and all shared ILGPU sessions on the GPU by disposing a buffer while a kernel is active. + private bool _computing = true; + + + public bool IsDisposing { get { return _disposing; } } + + public Context ContextInstance { + get + { + return _context; + } + } + + + public Accelerator AcceleratorInstance + { + get + { + return _accelerator; + } + } + + public MandelbrotBasic() + { + _context = Context.CreateDefault(); + _accelerator = null; + } + + + /// + /// Compile the Mandelbrot kernel based on the device selected. + /// + /// + public void CompileKernel(Device device) + { + _accelerator?.Dispose(); + _accelerator = device.CreateAccelerator(_context); + + mandelbrot_kernel = _accelerator.LoadAutoGroupedStreamKernel< + Index1D, ArrayView1D, ArrayView1D, int, ArrayView>(MandelbrotExtensions.MandelbrotKernel); + } + + /// + /// We're going to allow up to 10 seconds for any compute to complete. This should be an appsettings parameter, or passed as a compute timeout. + /// + /// + private async Task ComputeFinished() + { + int iCount = 0; + while ((iCount < 1000) && _computing) + { + await Task.Delay(10); + iCount += 1; + } + return (iCount < 1000); + } + + + /// + /// Dispose accelerator and main ILGPU context, not to be called except when this component is disposed by dependency injection. + /// + public async void Dispose() + { + + _disposing = true; + + bool computeFinished = await ComputeFinished(); + + CleanupGPURepeat(); + mandelbrot_kernel = null; + _accelerator?.Dispose(); + _context?.Dispose(); + + } + + /// + /// Calculate the Mandelbrot set a single time on the GPU. + /// + /// + /// + /// + /// + public void CalcGPU(ref int[] buffer, int[] dispayPort, float[] viewArea, int max_iterations) + { + _computing = true; + int num_values = buffer.Length; + var dev_out = _accelerator.Allocate1D(num_values); + var displayParams = _accelerator.Allocate1D(dispayPort); + var viewAreaParams = _accelerator.Allocate1D(viewArea); + + + if (!_disposing) + { + // Launch kernel + mandelbrot_kernel(num_values, displayParams, viewAreaParams, max_iterations, dev_out.View); + } + + // Reads data from the GPU buffer into a new CPU array. + // Implicitly calls accelerator.DefaultStream.Synchronize() to ensure + // the kernel computation is complete. + + displayParams.Dispose(); + viewAreaParams.Dispose(); + if (!_disposing) + { + dev_out.CopyToCPU(buffer); + } + dev_out.Dispose(); + _computing = false; + + return; + } + + int _buffersize; + MemoryBuffer1D _display = null; + MemoryBuffer1D _area = null; + MemoryBuffer1D _output = null; + + /// + /// Initialize resources for repetitive computing + /// + /// + /// + /// + /// + public void InitGPURepeat(ref int[] buffer, int[] displayPort, float[] viewArea, int max_iterations) + { + if (!_disposing) + { + _computing = true; + _buffersize = buffer.Length; + _area = _accelerator.Allocate1D(viewArea); + _output = _accelerator.Allocate1D(_buffersize); + _display = _accelerator.Allocate1D(displayPort); + _computing = false; + } + + } + + + /// + /// Calculate a new Mandelbrot set. + /// + /// + /// + /// + /// + public void CalcGPURepeat(ref int[] buffer, int[] dispayPort, float[] viewArea, int max_iterations) + { + _computing = true; + + if (!_disposing) + { + ArrayViewExtensions.CopyFromCPU(_area, viewArea); + } + + + if (!_disposing) + { + // Launch kernel + mandelbrot_kernel(_buffersize, _display, _area, max_iterations, _output.View); + } + + + // Reads data from the GPU buffer into a new CPU array. + // Implicitly calls accelerator.DefaultStream.Synchronize() to ensure + // that the kernel and memory copy are completed first. + if (!_disposing) + { + _output.CopyToCPU(buffer); + } + + _computing = false; + + return; + } + + /// + /// Clean up compute resources. + /// + public void CleanupGPURepeat() + { + _display?.Dispose(); + _display = null; + _area?.Dispose(); + _area = null; + _output?.Dispose(); + _output = null; + + } + + + + } + + +} diff --git a/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotClient.cs b/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotClient.cs new file mode 100644 index 000000000..d7a2ab752 --- /dev/null +++ b/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotClient.cs @@ -0,0 +1,150 @@ +// --------------------------------------------------------------------------------------- +// ILGPU Samples +// Copyright (c) 2022 ILGPU Project +// www.ilgpu.net +// +// File: MandelbrotClient.cs +// +// This file is part of ILGPU and is distributed under the University of Illinois Open +// Source License. See LICENSE.txt for details. +// --------------------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using ILGPU; +using ILGPU.Runtime; +using BlazorSampleApp.ILGPUWebHost; + +namespace BlazorSampleApp.MandelbrotExplorer +{ + /// + /// This object's job is to provide access/state/parameters to a compute session, this object is loaded via + /// Blazor "scoped" dependency injected in a razor page. + /// + /// IDisposable is implemented to notify the a "hosted" compute session is no longer needed a user's razor page. + /// + /// +#nullable disable + public class MandelbrotClient : IMandelbrotClient, IDisposable + { + + private ComputeSession _session; + + public bool IsActive { get { return _session?.IsActive ?? false; } } + + // In Blazor server app or any web a + private string SessionId = Guid.NewGuid().ToString(); + + private bool _disposing = false; + + public int ViewWidth { get; private set; } + + public int ViewHeight { get; private set; } + + public float Left { get; private set; } = -2.0f; + public float Right { get; private set; } = 1.0f; + public float Top { get; private set; } = 1.0f; + + public float Bottom { get; private set; } = -1.0f; + + public int MaxIterations { get; set; } = 1000; + + private int[] _buffer = null; + + /// + /// set display size and compile the GPU kernel + /// + /// + /// + public void SetDisplay(int width, int height) + { + ViewWidth = width; + ViewHeight = height; + + if (_disposing) + { + return; + } + + if ((_buffer?.Length ?? 0) != ViewWidth * ViewHeight) + { + _buffer = new int[ViewWidth * ViewHeight]; + } + + if (!_session.KernelIsCompiled && _session.IsActive) + { + _session.InitGPU(ref _buffer, new int[2] { ViewWidth, ViewHeight }, new float[4] { Left, Right, Bottom, Top }, MaxIterations); + _session.CompileKernel(); + } + } + + + + /// + /// Generate a Mandelbrot set + /// + /// + /// + /// + /// + /// + public async Task CalculateMandelbrot(float left, float right, float bottom, float top) + { + Left = left; + Right = right; + Top = top; + Bottom = bottom; + + + + if (_session.IsActive && !_session.IsComputing && !_disposing) + { + if (await _session.CalcGPU(_buffer, new float[] { Left, Right, Bottom, Top })) + { + return _buffer; + } + + } + + return null; + } + + public MandelbrotClient(IComputeHost computeHost) + { + // method for dependency injection otherwise this blows up on a web server. + + if (!computeHost.HostConfigured) + { + computeHost.ConfigureAcceleration(new AcceleratorType[2] { AcceleratorType.OpenCL, AcceleratorType.Cuda }, int.MaxValue, 20); + } + + _session = computeHost.NewComputeStream(SessionId); + + } + + public string AcceleratorName() + { + return _session?.Stream?.Accelerator?.Name ?? "n/a"; + } + + + public void Dispose() + { + _disposing = true; + + + if (!_session?.IsDisposing ?? false) + { + _session.Dispose(); + } + + _session = null; + + } + + + } +} diff --git a/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotExtensions.cs b/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotExtensions.cs new file mode 100644 index 000000000..fcf07ad68 --- /dev/null +++ b/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotExtensions.cs @@ -0,0 +1,195 @@ +// --------------------------------------------------------------------------------------- +// ILGPU Samples +// Copyright (c) 2022 ILGPU Project +// www.ilgpu.net +// +// File: MandelbrotExtensions.cs +// +// This file is part of ILGPU and is distributed under the University of Illinois Open +// Source License. See LICENSE.txt for details. +// --------------------------------------------------------------------------------------- + +using System; +using System.Drawing; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using BlazorSampleApp.Components; +using ILGPU; +using ILGPU.Runtime; + + +namespace BlazorSampleApp.MandelbrotExplorer +{ + public static class MandelbrotExtensions + { + + /// + /// This "kernel" function will compile to IL code which ILGPU will ingest and convert to GPU compute shader code. + /// + /// + /// + /// displayPort int[] {width, height } + /// displayView float[] {h_a, h_b, v_a, v_b} + /// + /// + public static void MandelbrotKernel( + Index1D index, + ArrayView1D displayParams, ArrayView1D viewAreaParams, int maxIterations, + ArrayView output) + { + + if (index >= output.Length) + return; + + int img_x = index % displayParams[0]; + int img_y = index / displayParams[0]; + + float x0 = viewAreaParams[0] + img_x * (viewAreaParams[1] - viewAreaParams[0]) / displayParams[0]; + float y0 = viewAreaParams[2] + img_y * (viewAreaParams[3] - viewAreaParams[2]) / displayParams[1]; + float x = 0.0f; + float y = 0.0f; + int iteration = 0; + while ((x * x + y * y < 2 * 2) && (iteration < maxIterations)) + { + float xtemp = x * x - y * y + x0; + y = 2 * x * y + y0; + x = xtemp; + iteration += 1; + } + output[index] = iteration; + } + + + /// + /// Calculate the Mandelbrot set single threaded on the CPU. + /// + /// + /// + /// + /// + public static void CalcCPUSingle(int[] buffer, int[] display, float[] view, int max_iterations) + { + + for (int i=0; i < display[0]; i++ ) + { + for (int j = 0; j < display[1]; j++) + { + int index = i + j * display[0]; // ILGPU-like index + int img_x = index % display[0]; + int img_y = index / display[0]; + + float x0 = view[0] + img_x * (view[1] - view[0]) / display[0]; + float y0 = view[2] + img_y * (view[3] - view[2]) / display[1]; + float x = 0.0f; + float y = 0.0f; + int iteration = 0; + while ((x * x + y * y < 2 * 2) && (iteration < max_iterations)) + { + float xtemp = x * x - y * y + x0; + y = 2 * x * y + y0; + x = xtemp; + iteration += 1; + } + buffer[index] = iteration; + } + } + } + + + /// + /// Calculate the Mandelbrot set using multiple parallel threads on the CPU. + /// + /// + /// + /// + /// + public static void CalcCPUParallel(int[] buffer, int[] display, float[] view, int max_iterations) + { + int icnt = display[0]; + + Parallel.For( 0, icnt, i => + { + for (int j = 0; j < display[1]; j++) + { + int index = i + j * display[0]; // ILGPU-like index + int img_x = index % display[0]; + int img_y = index / display[0]; + + float x0 = view[0] + img_x * (view[1] - view[0]) / display[0]; + float y0 = view[2] + img_y * (view[3] - view[2]) / display[1]; + float x = 0.0f; + float y = 0.0f; + int iteration = 0; + while ((x * x + y * y < 2 * 2) && (iteration < max_iterations)) + { + float xtemp = x * x - y * y + x0; + y = 2 * x * y + y0; + x = xtemp; + iteration += 1; + } + buffer[index] = iteration; + } + }); + } + + + /// + /// This creates and passes an array to webgl for rendering to the canvas using "2D" webgl interface + /// + /// There are two possibilities for showing our result: + /// + /// First is the "direct" draw approach where we pass a color map and create an ImageData object + /// in JavaScript, copying each pixels color to the image data object. + /// + /// Second is we generate a compressed PNG image in memory and tell the webgl context + /// to download the compressed PNG image as a file like any other web page process. + /// + /// While not implemented this approach would reduce the server bandwidth consumed + /// per render by 80% or more as the resulting color map is large when uncompressed. + /// + /// + /// + /// + /// + /// + /// + /// + public static async Task Draw(BasicCanvas basicCanvas, int[] data, int width, int height, int iterations, Color color) + { + + byte[] result = new byte[width * height * 4]; + + for (int i = 0; i < width * height; i++) + { + Color fillColor = color; + + + if (data[i] >= iterations) + { + fillColor = color; + } + else + { + + int red = data[i] * 30 % 256; + int green = data[i] * 20 % 256; + int blue = data[i] * 50 % 256; + + fillColor = Color.FromArgb(255, red, green, blue); + + } + + + result[i * 4] = fillColor.R; + result[i * 4 + 1] = fillColor.G; + result[i * 4 + 2] = fillColor.B; + result[i * 4 + 3] = fillColor.A; + + } + + await basicCanvas.CreateImageDataCopyByteArray("Mandelbrot", width, height, result); + await basicCanvas.PutImageData("Mandelbrot", 0, 0); + } + } +} diff --git a/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotPageBasic.razor b/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotPageBasic.razor new file mode 100644 index 000000000..d82e0877b --- /dev/null +++ b/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotPageBasic.razor @@ -0,0 +1,44 @@ +@page "/mandelbrotPageBasic" + +

Basic Mandelbrot ILGPU Example

+ + +

Blazor Demo of Mandelbrot set with ILGPU objects injected in current scope.

+

+ + + + + + +
  
@ExecutionsDetails1
@ExecutionsDetails2
@ExecutionsDetails3
 
+

+

+ In this example we inject ILGPU objects scoped to a razor page session. Individual ILGPU compute sessions
+ are unaware of other ILGPU compute sessions hosted in a Blazor server application. Every kernel will have to
+ be recompiled in every session resulting in lower productivity. +
+ This demonstrates ILGPU objects work in complex multi-threaded environments. + +
+ + + + + + + + + + + + + + + +

\ No newline at end of file diff --git a/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotPageBasic.razor.cs b/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotPageBasic.razor.cs new file mode 100644 index 000000000..15c6e8854 --- /dev/null +++ b/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotPageBasic.razor.cs @@ -0,0 +1,297 @@ +// --------------------------------------------------------------------------------------- +// ILGPU Samples +// Copyright (c) 2022 ILGPU Project +// www.ilgpu.net +// +// File: MandelbrotPageBasic.razor.cs +// +// This file is part of ILGPU and is distributed under the University of Illinois Open +// Source License. See LICENSE.txt for details. +// --------------------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using System.Diagnostics; +using System.IO; +using System.Drawing; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Routing; +using Microsoft.JSInterop; +using ILGPU; +using ILGPU.Runtime; +using BlazorSampleApp.Components; + + +namespace BlazorSampleApp.MandelbrotExplorer +{ +#nullable disable + public partial class MandelbrotPageBasic : IDisposable + { + public BasicCanvas Canvas2D { get; set; } + + public bool DisabledButtons { get; set; } = true; + + + [Inject] + IJSRuntime JSRuntime { get; set; } + + [Inject] + IMandelbrotBasic MandelbrotInstance { get; set; } + + [Inject] + NavigationManager NavManager { get; set; } + + + public string ExecutionsDetails1 { get; set; } + + + public string ExecutionsDetails2 { get; set; } + + public string ExecutionsDetails3 { get; set; } + + private bool _disposing = false; + + protected override void OnInitialized() + { + NavManager.LocationChanged += LocationChanged; + base.OnInitialized(); + } + + void LocationChanged(object sender, LocationChangedEventArgs e) + { + // assume we're leaving this page + _disposing = true; + } + + protected override void OnAfterRender(bool firstRender) + { + if (firstRender) + { + // we can't call any webgl functions until the page is fully rendered and the canvas is complete. + Canvas2D.CanvasInitComplete += CanvasInitComplete; + _stopWatch = new Stopwatch(); + GetAvailableDevices(); + } + base.OnAfterRender(firstRender); + } + + private async void CanvasInitComplete(BasicCanvas supercanvas) + { + + + displayPort[0] = Canvas2D.Width; + displayPort[1] = Canvas2D.Height; + areaView[0] = -2.0f; + areaView[1] = 1.0f; + areaView[2] = -1.0f; + areaView[3] = 1.0f; + maxIterations = 1000; + + int[] data = Crunch(); + await MandelbrotExtensions.Draw(Canvas2D, data, displayPort[0], displayPort[1], maxIterations, Color.Blue); + + + // we could start the rendering process here rather than having a button click to start rendering. + DisabledButtons = false; + + StateHasChanged(); + } + + + private Device _lastDevice = null; + + + + List SystemDevices = new List(); + + /// + /// Create a non-CPU accelerator device list + /// + private void GetAvailableDevices() + { + int icnt = 0; + foreach (Device device in MandelbrotInstance.ContextInstance.Devices) + { + if (device.AcceleratorType != AcceleratorType.CPU) + { + + if (icnt == 0) + { + DeviceName = device.Name; + } + icnt += 1; + SystemDevices.Add(device.Name); + } + } + + + } + + private static Stopwatch _stopWatch; + + private void RestartWatch() + { + _stopWatch.Reset(); + _stopWatch.Start(); + } + + private string ElapsedTime(string title = "Elapsed Time") + { + _stopWatch.Stop(); + return title + " " + $"{_stopWatch.Elapsed.Minutes:00}:{_stopWatch.Elapsed.Seconds:00}.{_stopWatch.Elapsed.Milliseconds:000} "; + } + + + + + public string DeviceName { get; set; } = "CPUOnly"; + + protected async void UpdateSelected(ChangeEventArgs e) + { + DeviceName = e.Value.ToString(); + await RenderDevice(DeviceName); + } + + public async Task RenderDevice(string deviceName) + { + + areaView[0] = -2.0f; + areaView[1] = 1.0f; + areaView[2] = -1.0f; + areaView[3] = 1.0f; + maxIterations = 1000; + + int[] data = Crunch(); + await MandelbrotExtensions.Draw(Canvas2D, data, displayPort[0], displayPort[1], maxIterations, Color.Blue); + StateHasChanged(); + } + + + + float[] areaView = new float[4]; + int[] displayPort = new int[2]; + int maxIterations = 1000; + + /// + /// Generate a Mandelbrot set. + /// + /// + protected int[] Crunch() + { + int[] data = new int[displayPort[0] * displayPort[1]]; + + if (DeviceName == "CPUOnly") + { + RestartWatch(); + //page resource + MandelbrotExtensions.CalcCPUParallel(data, displayPort, areaView, maxIterations); // Single thread CPU + ExecutionsDetails1 = ElapsedTime("CPU Only Mandelbrot"); + + + } + else + { + Device device = MandelbrotInstance.ContextInstance.Devices.First(x => x.Name == DeviceName); + + if (_lastDevice != device) + { + RestartWatch(); + MandelbrotInstance.CompileKernel(device); + ExecutionsDetails2 = ElapsedTime("IL Compile - " + device.Name); + _lastDevice = device; + } + + + RestartWatch(); + + MandelbrotInstance.CalcGPU(ref data, displayPort, areaView, maxIterations); // ILGPU-CPU-Mode + ExecutionsDetails3 = ElapsedTime("IL Run - " + DeviceName); + + + } + + + return data; + } + + + /// + /// Animate 500 frames while narrowing view to small subsection of the Mandelbrot set. + /// + public async void AnimateMandelbrot() + { + int[] data = new int[displayPort[0] * displayPort[1]]; + + Device device = MandelbrotInstance.ContextInstance.Devices.First(x => x.Name == DeviceName); + + if (_lastDevice != device) + { + RestartWatch(); + MandelbrotInstance.CompileKernel(device); + ExecutionsDetails2 = ElapsedTime("IL Compile - " + device.Name); + _lastDevice = device; + + } + + + MandelbrotInstance.InitGPURepeat(ref data, displayPort, areaView, maxIterations); + StateHasChanged(); + float offsetX = -0.02f; + float offsetY = 0.00562f; + + for (int i = 0; i < 500; i++) + { + // here we are in a long running loop, a user can navigate away or close a window which will + // eventually result in an exception as this loop will continue to run + + + if (_disposing || MandelbrotInstance.IsDisposing) + { + + break; + } + RestartWatch(); + MandelbrotInstance.CalcGPURepeat(ref data, displayPort, areaView, maxIterations); // ILGPU-CPU-Mode + ExecutionsDetails2 = ElapsedTime($"IL Run - {DeviceName}"); + + areaView[0] = areaView[0] * 0.98f + offsetX; + areaView[1] = areaView[1] * 0.98f + offsetX; + areaView[2] = areaView[2] * 0.98f + offsetY; + areaView[3] = areaView[3] * 0.98f + offsetY; + + + if (_disposing || MandelbrotInstance.IsDisposing) + { + break; + } + RestartWatch(); + await MandelbrotExtensions.Draw(Canvas2D, data, displayPort[0], displayPort[1], maxIterations, Color.Blue); + ExecutionsDetails3 = ElapsedTime("Web Server Render"); + StateHasChanged(); + + + + } + + MandelbrotInstance.CleanupGPURepeat(); + + + } + + + + public void Dispose() + { + _disposing = true; + NavManager.LocationChanged -= LocationChanged; + + + } + + + } + +} diff --git a/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotPageCPU.razor b/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotPageCPU.razor new file mode 100644 index 000000000..201a8815f --- /dev/null +++ b/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotPageCPU.razor @@ -0,0 +1,39 @@ +@page "/mandelbrotPageCPU" + +

Mandelbrot CPU Demo

+ + +

Example of Mandelbrot set using Blazor and CPU resources.

+

+ + + + + + + +
  
@ExecutionsDetails1
@ExecutionsDetails2
@ExecutionsDetails3
@ExecutionsDetails4
 
+

+ +

+ Currently the CPU accelerator is intended for GPU kernel development/debugging rather than CPU kernel performance.
+ Optimized CPU kernel performance will likely be added back in an upcoming release of ILGPU.
+ +
+ + + + + + + + + + + +

diff --git a/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotPageCPU.razor.cs b/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotPageCPU.razor.cs new file mode 100644 index 000000000..7d65da1a5 --- /dev/null +++ b/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotPageCPU.razor.cs @@ -0,0 +1,401 @@ +// --------------------------------------------------------------------------------------- +// ILGPU Samples +// Copyright (c) 2022 ILGPU Project +// www.ilgpu.net +// +// File: MandelbrotPageCPU.razor.cs +// +// This file is part of ILGPU and is distributed under the University of Illinois Open +// Source License. See LICENSE.txt for details. +// --------------------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Diagnostics; +using System.IO; +using System.Drawing; +using BlazorSampleApp.Components; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Routing; +using Microsoft.JSInterop; +using ILGPU; +using ILGPU.Runtime; + + + +namespace BlazorSampleApp.MandelbrotExplorer +{ +#nullable disable + public partial class MandelbrotPageCPU : IDisposable + { + public BasicCanvas Canvas2D { get; set; } + + public bool DisabledButtons { get; set; } = true; + + + [Inject] + IJSRuntime JSRuntime { get; set; } + + [Inject] + IMandelbrotBasic MandelbrotInstance { get; set; } + + + [Inject] + NavigationManager NavManager { get; set; } + + public string ExecutionsDetails1 { get; set; } + + + public string ExecutionsDetails2 { get; set; } + + public string ExecutionsDetails3 { get; set; } + + public string ExecutionsDetails4 { get; set; } + + public bool _disposing = false; + + public bool _computing = false; + + private Device _lastDevice = null; + + private Device _CPUDevice = null; + + /// + /// Ready Blazor page once component loading is complete + /// + /// + protected override void OnAfterRender(bool firstRender) + { + if (firstRender) + { + // we can't call any webgl functions until the page is fully rendered and the canvas is complete. + Canvas2D.CanvasInitComplete += CanvasInitComplete; + _stopWatch = new Stopwatch(); + + + } + base.OnAfterRender(firstRender); + } + + /// + /// Initialize Mandelbrot view and render a Mandelbrot set + /// + /// + private async void CanvasInitComplete(BasicCanvas basicCanvas) + { + // we could start the rendering process here rather than having a button click to start rendering. + DisabledButtons = false; + GetAvailableDevices(); + + displayPort[0] = Canvas2D.Width; + displayPort[1] = Canvas2D.Height; + areaView[0] = -2.0f; + areaView[1] = 1.0f; + areaView[2] = -1.0f; + areaView[3] = 1.0f; + maxIterations = 1000; + + int[] data = Crunch(DeviceName); + await MandelbrotExtensions.Draw(Canvas2D, data, displayPort[0], displayPort[1], maxIterations, Color.Blue); + + StateHasChanged(); + } + + + // Initialize navigation tracking razor page + protected override void OnInitialized() + { + _stopWatch = new Stopwatch(); + + NavManager.LocationChanged += LocationChanged; + + base.OnInitialized(); + } + + + /// + /// We're going to allow up to 30 seconds for any compute to complete + /// + /// + private async Task ComputeFinished() + { + int iCount = 0; + while ((iCount < 3000) && _computing) + { + await Task.Delay(10); + iCount += 1; + } + return (iCount < 1000); + } + + // Remove navigation detection if this page is ending. + public async void Dispose() + { + _disposing = true; + NavManager.LocationChanged -= LocationChanged; + bool computeFinished = await ComputeFinished(); + } + + + // This only gets called when the user has navigated elsewhere. + void LocationChanged(object sender, LocationChangedEventArgs e) + { + // assume we're leaving this page for good, preempt new computation + _disposing = true; + } + + /// + /// Create a CPU accelerator device list + /// + private void GetAvailableDevices() + { + SystemDevices.Add("Single Thread"); + SystemDevices.Add("Parallel CPU"); + + + foreach (Device device in MandelbrotInstance.ContextInstance.Devices) + { + if (device.AcceleratorType == AcceleratorType.CPU) + { + _CPUDevice = device; + } + } + + SystemDevices.Add(_CPUDevice.Name); + + } + + + List SystemDevices = new List(); + + + + // Measure performance + private static Stopwatch _stopWatch; + + private void RestartWatch() + { + _stopWatch.Reset(); + _stopWatch.Start(); + } + + private string ElapsedTime(string title = "Elapsed Time") + { + _stopWatch.Stop(); + return title + " " + $"{_stopWatch.Elapsed.Minutes:00}:{_stopWatch.Elapsed.Seconds:00}.{_stopWatch.Elapsed.Milliseconds:000} "; + } + + + public string DeviceName { get; set; } = "Single Thread"; + + protected async void UpdateSelected(ChangeEventArgs e) + { + + DeviceName = e.Value.ToString(); + + areaView[0] = -2.0f; + areaView[1] = 1.0f; + areaView[2] = -1.0f; + areaView[3] = 1.0f; + maxIterations = 1000; + _computing = true; + int[] data = Crunch(DeviceName); + await MandelbrotExtensions.Draw(Canvas2D, data, displayPort[0], displayPort[1], maxIterations, Color.Blue); + _computing = false; + StateHasChanged(); + } + + + + float[] areaView = new float[4]; + int[] displayPort = new int[2]; + int maxIterations = 1000; + + + + + /// + /// + /// + /// + /// + protected int[] Crunch(string device) + { + int[] data = new int[displayPort[0] * displayPort[1]]; + + if (DeviceName == "Single Thread") + { + RestartWatch(); + MandelbrotExtensions.CalcCPUSingle(data, displayPort, areaView, maxIterations); // Single thread CPU + ExecutionsDetails1 = ElapsedTime("Single Thread"); + + + } else if (DeviceName == "Parallel CPU") + { + RestartWatch(); + MandelbrotExtensions.CalcCPUParallel(data, displayPort, areaView, maxIterations); // Single thread CPU + ExecutionsDetails2 = ElapsedTime("Parallel CPU"); + + + } + else + { + _computing = true; + if (_lastDevice != _CPUDevice) + { + RestartWatch(); + MandelbrotInstance.CompileKernel(_CPUDevice); + ExecutionsDetails3 = ElapsedTime("IL Compile - " + _CPUDevice.Name); + _lastDevice = _CPUDevice; + } + + + RestartWatch(); + + MandelbrotInstance.CalcGPU(ref data, displayPort, areaView, maxIterations); // ILGPU-CPU-Mode + _computing = false; + ExecutionsDetails4 = ElapsedTime("IL Run - " + _CPUDevice.Name); + + + + } + return data; + } + + + + + + /// + /// Animate 500 frames while narrowing view to small subsection of the Mandelbrot set. + /// + + public async void AnimateMandelbrot() + { + int[] data = new int[displayPort[0] * displayPort[1]]; + + + float offsetX = -0.02f; + float offsetY = 0.00562f; + + switch (DeviceName) + { + case "Single Thread": + + for (int i = 0; i < 500; i++) + { + if (_disposing) + break; + RestartWatch(); + + MandelbrotExtensions.CalcCPUSingle(data, displayPort, areaView, maxIterations); // ILGPU-CPU-Mode + ExecutionsDetails3 = ElapsedTime($"Single Thread"); + + areaView[0] = areaView[0] * 0.98f + offsetX; + areaView[1] = areaView[1] * 0.98f + offsetX; + areaView[2] = areaView[2] * 0.98f + offsetY; + areaView[3] = areaView[3] * 0.98f + offsetY; + + if (_disposing) + break; + RestartWatch(); + + await MandelbrotExtensions.Draw(Canvas2D, data, displayPort[0], displayPort[1], maxIterations, Color.Blue); + + StateHasChanged(); + + ExecutionsDetails4 = ElapsedTime("Render Time"); + + } + + + + break; + + + case "Parallel CPU": + + + for (int i = 0; i < 500; i++) + { + if (_disposing) + break; + + RestartWatch(); + MandelbrotExtensions.CalcCPUParallel(data, displayPort, areaView, maxIterations); // ILGPU-CPU-Mode + ExecutionsDetails3 = ElapsedTime($"CPU Parallel"); + + areaView[0] = areaView[0] * 0.98f + offsetX; + areaView[1] = areaView[1] * 0.98f + offsetX; + areaView[2] = areaView[2] * 0.98f + offsetY; + areaView[3] = areaView[3] * 0.98f + offsetY; + + if (_disposing) + break; + + RestartWatch(); + await MandelbrotExtensions.Draw(Canvas2D, data, displayPort[0], displayPort[1], maxIterations, Color.Blue); + + StateHasChanged(); + + ExecutionsDetails4 = ElapsedTime("Render Time"); + + } + + + break; + + + default: + _computing = true; + + if (_lastDevice != _CPUDevice) + { + RestartWatch(); + MandelbrotInstance.CompileKernel(_CPUDevice); + ExecutionsDetails2 = ElapsedTime("IL Compile - " + _CPUDevice.Name); + _lastDevice = _CPUDevice; + + } + + MandelbrotInstance.InitGPURepeat(ref data, displayPort, areaView, maxIterations); + + for (int i = 0; i < 500; i++) + { + if (_disposing) + break; + + RestartWatch(); + + MandelbrotInstance.CalcGPURepeat(ref data, displayPort, areaView, maxIterations); // ILGPU-CPU-Mode + ExecutionsDetails3 = ElapsedTime($"IL Run - {DeviceName}"); + + areaView[0] = areaView[0] * 0.98f + offsetX; + areaView[1] = areaView[1] * 0.98f + offsetX; + areaView[2] = areaView[2] * 0.98f + offsetY; + areaView[3] = areaView[3] * 0.98f + offsetY; + + if (_disposing) + break; + RestartWatch(); + + await MandelbrotExtensions.Draw(Canvas2D, data, displayPort[0], displayPort[1], maxIterations, Color.Blue); + + StateHasChanged(); + + ExecutionsDetails4 = ElapsedTime("Render Time"); + + } + MandelbrotInstance.CleanupGPURepeat(); + _computing = false; + break; + } + + + } + + } + +} diff --git a/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotPageStream.razor b/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotPageStream.razor new file mode 100644 index 000000000..e3c0148ac --- /dev/null +++ b/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotPageStream.razor @@ -0,0 +1,38 @@ +@page "/mandelbrotPageStream" + +

Mandelbrot ILGPU Stream Demo

+ + +

Example of Mandelbrot set on Blazor server using ILGPU accelerator streams.

+

+ + + + + + +
  
@ExecutionsDetails1
@ExecutionsDetails2
@ExecutionsDetails3
 
+

+ +

+ ILGPU Accelerator Streams are great in multi-threading environments. We dependency inject a singleton
+ compute host in Blazor server and share ILGPU resources via accelerator streams. Kernels are compiled once
+ per singleton, improving user response times.

+ In this case we track individual accelerator streams within a host singleton thus providing a
+ starting point for GPU resource management.
+ +
+ + + + + + + + + + + + + +

diff --git a/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotPageStream.razor.cs b/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotPageStream.razor.cs new file mode 100644 index 000000000..9e3b9617c --- /dev/null +++ b/Samples/BlazorSampleApp/MandelbrotExplorer/MandelbrotPageStream.razor.cs @@ -0,0 +1,217 @@ +// --------------------------------------------------------------------------------------- +// ILGPU Samples +// Copyright (c) 2022 ILGPU Project +// www.ilgpu.net +// +// File: MandelbrotPageStream.razor.cs +// +// This file is part of ILGPU and is distributed under the University of Illinois Open +// Source License. See LICENSE.txt for details. +// --------------------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Diagnostics; +using System.Drawing; +using BlazorSampleApp.Components; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Routing; +using Microsoft.JSInterop; + +namespace BlazorSampleApp.MandelbrotExplorer +{ +#nullable disable + + /// + /// An example razor page calling a streamed accelerator via an injected IMandelbrotClient. + /// + public partial class MandelbrotPageStream: IDisposable + { + public BasicCanvas Canvas2D { get; set; } + + [Inject] + IJSRuntime JSRuntime { get; set; } + + [Inject] + IMandelbrotClient MandelbrotInstance { get; set; } + + [Inject] + NavigationManager NavManager { get; set; } + + // current details + public string ExecutionsDetails1 { get; set; } + + public string ExecutionsDetails2 { get; set; } + + public string ExecutionsDetails3 { get; set; } + + public bool DisabledButtons { get; set; } = true; + + string DeviceName { get; set; } = "n/a"; + + // Mandelbrot parameters + float[] areaView = new float[4]; + + // Mandelbrot render depth + int maxIterations = 1000; + + + // Canvas size + int[] displayPort = new int[2]; + + + private bool _disposing = false; + + private Stopwatch _stopWatch; + + + private void RestartWatch() + { + _stopWatch.Reset(); + _stopWatch.Start(); + } + + private string ElapsedTime(string title = "Elapsed Time") + { + _stopWatch.Stop(); + return title + " " + $"{_stopWatch.Elapsed.Minutes:00}:{_stopWatch.Elapsed.Seconds:00}.{_stopWatch.Elapsed.Milliseconds:000} "; + } + + + // Initialize razor page + protected override void OnInitialized() + { + _stopWatch = new Stopwatch(); + + NavManager.LocationChanged += LocationChanged; + + base.OnInitialized(); + } + + + // Remove navigation detection if this page is ending. + public void Dispose() + { + _disposing = true; + NavManager.LocationChanged -= LocationChanged; + } + + + // This only gets called when the user has navigated elsewhere, this prempts the. + void LocationChanged(object sender, LocationChangedEventArgs e) + { + // assume we're leaving this page for good, preempt new computation + _disposing = true; + + } + + + // Once the razor page/component is render complete we can interact with the browser + protected override void OnAfterRender(bool firstRender) + { + if (firstRender) + { + // We can't call any webgl functions until the page is fully rendered and the HTML canvas and JavaScript are fully loaded. + Canvas2D.CanvasInitComplete += CanvasInitComplete; + + } + base.OnAfterRender(firstRender); + } + + + /// + /// Render an initial Mandelbrot graph once this razor page/component loads + /// + /// + private async void CanvasInitComplete(BasicCanvas basicCanvas) + { + + DeviceName = MandelbrotInstance.AcceleratorName(); + + displayPort[0] = Canvas2D.Width; + displayPort[1] = Canvas2D.Height; + areaView[0] = -2.0f; + areaView[1] = 1.0f; + areaView[2] = -1.0f; + areaView[3] = 1.0f; + maxIterations = 1000; + + if (_disposing || !MandelbrotInstance.IsActive) + { + return; + } + RestartWatch(); + MandelbrotInstance.SetDisplay(Canvas2D.Width, Canvas2D.Height); + ExecutionsDetails1 = ElapsedTime($"IL Compile - {DeviceName}"); + + if (_disposing || !MandelbrotInstance.IsActive) + { + return; + } + RestartWatch(); + int[] data = await MandelbrotInstance.CalculateMandelbrot(areaView[0], areaView[1], areaView[2], areaView[3]); // ILGPU-CPU-Mode + ExecutionsDetails2 = ElapsedTime($"IL Run - {DeviceName}"); + + if (data == null || _disposing) + { + return; + } + + await MandelbrotExtensions.Draw(Canvas2D, data, displayPort[0], displayPort[1], maxIterations, Color.Blue); + + DisabledButtons = false; + StateHasChanged(); // note StateHasChanged will force an update of controls on our razor page. + } + + + + + /// + /// Animate 500 frames while narrowing view to small subsection of the Mandelbrot set. + /// + public async void AnimateMandelbrot() + { + + // Target information + float offsetX = -0.02f; + float offsetY = 0.00562f; + + for (int i = 0; i < 500; i++) + { + if (_disposing || !MandelbrotInstance.IsActive) + { + break; + } + + // Set the next areaView size + areaView[0] = areaView[0] * 0.98f + offsetX; + areaView[1] = areaView[1] * 0.98f + offsetX; + areaView[2] = areaView[2] * 0.98f + offsetY; + areaView[3] = areaView[3] * 0.98f + offsetY; + + // Generate the next frame of this animation. + RestartWatch(); + int[] data = await MandelbrotInstance.CalculateMandelbrot(areaView[0], areaView[1], areaView[2], areaView[3]); // ILGPU-CPU-Mode + if (data==null || _disposing) + { + break; + } + ExecutionsDetails2 = ElapsedTime($"IL Run - {DeviceName}"); + + + + + // Render the generated frame to the canvas. + RestartWatch(); + await MandelbrotExtensions.Draw(Canvas2D, data, displayPort[0], displayPort[1], maxIterations, Color.Blue); + StateHasChanged(); + + ExecutionsDetails3 = ElapsedTime("Web Server Render"); + + } + } + } + +} diff --git a/Samples/BlazorSampleApp/Pages/Error.cshtml b/Samples/BlazorSampleApp/Pages/Error.cshtml new file mode 100644 index 000000000..24b825f82 --- /dev/null +++ b/Samples/BlazorSampleApp/Pages/Error.cshtml @@ -0,0 +1,42 @@ +@page +@model BlazorSampleApp.Pages.ErrorModel + + + + + + + + Error + + + + + +
+
+

Error.

+

An error occurred while processing your request.

+ + @if (Model.ShowRequestId) + { +

+ Request ID: @Model.RequestId +

+ } + +

Development Mode

+

+ Swapping to the Development environment displays detailed information about the error that occurred. +

+

+ The Development environment shouldn't be enabled for deployed applications. + It can result in displaying sensitive information from exceptions to end users. + For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development + and restarting the app. +

+
+
+ + + diff --git a/Samples/BlazorSampleApp/Pages/Error.cshtml.cs b/Samples/BlazorSampleApp/Pages/Error.cshtml.cs new file mode 100644 index 000000000..9255384b9 --- /dev/null +++ b/Samples/BlazorSampleApp/Pages/Error.cshtml.cs @@ -0,0 +1,27 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using System.Diagnostics; + +namespace BlazorSampleApp.Pages +{ + [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] + [IgnoreAntiforgeryToken] + public class ErrorModel : PageModel + { + public string? RequestId { get; set; } + + public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); + + private readonly ILogger _logger; + + public ErrorModel(ILogger logger) + { + _logger = logger; + } + + public void OnGet() + { + RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier; + } + } +} \ No newline at end of file diff --git a/Samples/BlazorSampleApp/Pages/Index.razor b/Samples/BlazorSampleApp/Pages/Index.razor new file mode 100644 index 000000000..329ec04b5 --- /dev/null +++ b/Samples/BlazorSampleApp/Pages/Index.razor @@ -0,0 +1,40 @@ +@page "/" + +

Welcome to ILGPU samples with Blazor

+ + + +

+
+ This sample demonstrates ILGPU GPU compute in a Blazor server application. +

+

Sharing a GPU resources across Blazor server sessions is a demonstration of ILGPU multi-threaded prowess.
+ Two approaches can be taken; one is instantiating an accelerator context in each Blazor page session,
+ second is to instantiate ILGPU as a singleton in Blazor server and share accelerator streams. +

+

+

Example Applications Ideas

+
    +
  • Intelligent Machine Control

    One could use low cost tablets to operate a machine tool with a centralized Blazor server.

  • +
  • Compute Studio Service

    Proprietary code is sometimes best as a service. For example thermal or electrodynamic analysis as a service.

  • +
  • Shared Rendering Studio

    Loading workstations with cutting edge GPUs may not be the optimal use of capital.

  • +
+ +

+

+
+

Notes

+
    +
  • OpenCL or Cuda compatible accelerator required.
  • +
  • This sample includes two custom Blazor component; these give flavor to Blazor coding as compare to traditional
    + ASP.Net coding. First is a Blazor wrapper around HTML canvas WebGL 2D context with JavaScript inter-operation.
    + Second is a simple "tool tip" flyover component.
  • +
  • This animation pushes the limits with 32 bit floats while displaying progressively smaller subsections of the
    + Mandelbrot set. Pushing the animation button a second time will block up the display as the limit of 32 bit floating
    + point is reached.
  • + +
  • No attempt is made to operate in WebAssembly as shader compute support is experimental or not supported in all browsers.
  • +
+ +

+ diff --git a/Samples/BlazorSampleApp/Pages/_Host.cshtml b/Samples/BlazorSampleApp/Pages/_Host.cshtml new file mode 100644 index 000000000..dc1959f5e --- /dev/null +++ b/Samples/BlazorSampleApp/Pages/_Host.cshtml @@ -0,0 +1,8 @@ +@page "/" +@namespace BlazorSampleApp.Pages +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@{ + Layout = "_Layout"; +} + + diff --git a/Samples/BlazorSampleApp/Pages/_Layout.cshtml b/Samples/BlazorSampleApp/Pages/_Layout.cshtml new file mode 100644 index 000000000..906f8d6b6 --- /dev/null +++ b/Samples/BlazorSampleApp/Pages/_Layout.cshtml @@ -0,0 +1,32 @@ +@using Microsoft.AspNetCore.Components.Web +@namespace BlazorSampleApp.Pages +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers + + + + + + + + + + + + + + @RenderBody() + +
+ + An error has occurred. This application may no longer respond until reloaded. + + + An unhandled exception has occurred. See browser dev tools for details. + + Reload + 🗙 +
+ + + + diff --git a/Samples/BlazorSampleApp/Program.cs b/Samples/BlazorSampleApp/Program.cs new file mode 100644 index 000000000..7ecbe9619 --- /dev/null +++ b/Samples/BlazorSampleApp/Program.cs @@ -0,0 +1,55 @@ +// --------------------------------------------------------------------------------------- +// ILGPU Samples +// Copyright (c) 2022 ILGPU Project +// www.ilgpu.net +// +// File: Program.cs +// +// This file is part of ILGPU and is distributed under the University of Illinois Open +// Source License. See LICENSE.txt for details. +// --------------------------------------------------------------------------------------- + +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Web; + + +var builder = WebApplication.CreateBuilder(args); + + +// In process host without streams, note this will get loaded by each web "session" without awareness of other users +builder.Services.AddScoped(); + +// Out of process host singleton instance of ILGPU Host +builder.Services.AddSingleton(); + +// In process compute session access for multiple accelerator streams +builder.Services.AddScoped(); + + + +// Add services to the container. +builder.Services.AddRazorPages(); +builder.Services.AddServerSideBlazor(); + + +var app = builder.Build(); + +// Configure the HTTP request pipeline. +if (!app.Environment.IsDevelopment()) +{ + app.UseExceptionHandler("/Error"); + // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. + app.UseHsts(); +} + +// to enable https: support uncomment the following line. +//app.UseHttpsRedirection(); + +app.UseStaticFiles(); + +app.UseRouting(); + +app.MapBlazorHub(); +app.MapFallbackToPage("/_Host"); + +app.Run(); diff --git a/Samples/BlazorSampleApp/Properties/launchSettings.json b/Samples/BlazorSampleApp/Properties/launchSettings.json new file mode 100644 index 000000000..804faa6f8 --- /dev/null +++ b/Samples/BlazorSampleApp/Properties/launchSettings.json @@ -0,0 +1,28 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:8413", + "sslPort": 44311 + } + }, + "profiles": { + "BlazorSampleApp": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:5034", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/Samples/BlazorSampleApp/Shared/MainLayout.razor b/Samples/BlazorSampleApp/Shared/MainLayout.razor new file mode 100644 index 000000000..56f1d8b91 --- /dev/null +++ b/Samples/BlazorSampleApp/Shared/MainLayout.razor @@ -0,0 +1,19 @@ +@inherits LayoutComponentBase + +BlazorSampleApp + +
+ + +
+
+ About +
+ +
+ @Body +
+
+
diff --git a/Samples/BlazorSampleApp/Shared/MainLayout.razor.css b/Samples/BlazorSampleApp/Shared/MainLayout.razor.css new file mode 100644 index 000000000..551e4b276 --- /dev/null +++ b/Samples/BlazorSampleApp/Shared/MainLayout.razor.css @@ -0,0 +1,70 @@ +.page { + position: relative; + display: flex; + flex-direction: column; +} + +main { + flex: 1; +} + +.sidebar { + background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%); +} + +.top-row { + background-color: #f7f7f7; + border-bottom: 1px solid #d6d5d5; + justify-content: flex-end; + height: 3.5rem; + display: flex; + align-items: center; +} + + .top-row ::deep a, .top-row .btn-link { + white-space: nowrap; + margin-left: 1.5rem; + } + + .top-row a:first-child { + overflow: hidden; + text-overflow: ellipsis; + } + +@media (max-width: 640.98px) { + .top-row:not(.auth) { + display: none; + } + + .top-row.auth { + justify-content: space-between; + } + + .top-row a, .top-row .btn-link { + margin-left: 0; + } +} + +@media (min-width: 641px) { + .page { + flex-direction: row; + } + + .sidebar { + width: 250px; + height: 100vh; + position: sticky; + top: 0; + } + + .top-row { + position: sticky; + top: 0; + z-index: 1; + } + + .top-row, article { + padding-left: 2rem !important; + padding-right: 1.5rem !important; + } +} diff --git a/Samples/BlazorSampleApp/Shared/NavMenu.razor b/Samples/BlazorSampleApp/Shared/NavMenu.razor new file mode 100644 index 000000000..09e2f3fa7 --- /dev/null +++ b/Samples/BlazorSampleApp/Shared/NavMenu.razor @@ -0,0 +1,42 @@ + + +
+ +
+ +@code { + private bool collapseNavMenu = true; + + private string? NavMenuCssClass => collapseNavMenu ? "collapse" : null; + + private void ToggleNavMenu() + { + collapseNavMenu = !collapseNavMenu; + } +} diff --git a/Samples/BlazorSampleApp/Shared/NavMenu.razor.css b/Samples/BlazorSampleApp/Shared/NavMenu.razor.css new file mode 100644 index 000000000..acc5f9f81 --- /dev/null +++ b/Samples/BlazorSampleApp/Shared/NavMenu.razor.css @@ -0,0 +1,62 @@ +.navbar-toggler { + background-color: rgba(255, 255, 255, 0.1); +} + +.top-row { + height: 3.5rem; + background-color: rgba(0,0,0,0.4); +} + +.navbar-brand { + font-size: 1.1rem; +} + +.oi { + width: 2rem; + font-size: 1.1rem; + vertical-align: text-top; + top: -2px; +} + +.nav-item { + font-size: 0.9rem; + padding-bottom: 0.5rem; +} + + .nav-item:first-of-type { + padding-top: 1rem; + } + + .nav-item:last-of-type { + padding-bottom: 1rem; + } + + .nav-item ::deep a { + color: #d7d7d7; + border-radius: 4px; + height: 3rem; + display: flex; + align-items: center; + line-height: 3rem; + } + +.nav-item ::deep a.active { + background-color: rgba(255,255,255,0.25); + color: white; +} + +.nav-item ::deep a:hover { + background-color: rgba(255,255,255,0.1); + color: white; +} + +@media (min-width: 641px) { + .navbar-toggler { + display: none; + } + + .collapse { + /* Never collapse the sidebar for wide screens */ + display: block; + } +} diff --git a/Samples/BlazorSampleApp/Shared/SurveyPrompt.razor b/Samples/BlazorSampleApp/Shared/SurveyPrompt.razor new file mode 100644 index 000000000..e3e6429c1 --- /dev/null +++ b/Samples/BlazorSampleApp/Shared/SurveyPrompt.razor @@ -0,0 +1,16 @@ +
+ + @Title + + + Please take our + brief survey + + and tell us what you think. +
+ +@code { + // Demonstrates how a parent component can supply parameters + [Parameter] + public string? Title { get; set; } +} diff --git a/Samples/BlazorSampleApp/_Imports.razor b/Samples/BlazorSampleApp/_Imports.razor new file mode 100644 index 000000000..e3c417369 --- /dev/null +++ b/Samples/BlazorSampleApp/_Imports.razor @@ -0,0 +1,11 @@ +@using System.Net.Http +@using Microsoft.AspNetCore.Authorization +@using Microsoft.AspNetCore.Components.Authorization +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.JSInterop +@using BlazorSampleApp +@using BlazorSampleApp.Components +@using BlazorSampleApp.Shared diff --git a/Samples/BlazorSampleApp/appsettings.Development.json b/Samples/BlazorSampleApp/appsettings.Development.json new file mode 100644 index 000000000..770d3e931 --- /dev/null +++ b/Samples/BlazorSampleApp/appsettings.Development.json @@ -0,0 +1,9 @@ +{ + "DetailedErrors": true, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/Samples/BlazorSampleApp/appsettings.json b/Samples/BlazorSampleApp/appsettings.json new file mode 100644 index 000000000..10f68b8c8 --- /dev/null +++ b/Samples/BlazorSampleApp/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/Samples/BlazorSampleApp/wwwroot/Images/Mandelbrot.png b/Samples/BlazorSampleApp/wwwroot/Images/Mandelbrot.png new file mode 100644 index 0000000000000000000000000000000000000000..1c560ac2018370ac22d9dc1d79628bf24df4ee02 GIT binary patch literal 139405 zcmV)mK%T#eP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf|D{PpK~#8N%@O{&P=QsF-9_q*PR7WK>wBXqZ&!mz0W(6b%)N43i8Km6VK(j1r3y4ULQn6BU!p z3XKw#6pa*Cvtc%S>H+)DbUi=k}K# zc+J{g$Dgov&fe#(9enEf&7NL+`XSBsY#%uKu(bnDKC4~d@3O0#Eq?sChpqknQTJNA z{-!st-E!qplLSPK`}lKjYJTbXh9eJL zd(VxpTYJu4&t2PR@BP-Ebo1lZ_TTr*){Z{(^tGQp;qQm*KfQMDiT^T`fAS!=pItla z`1h`zaq$XNZ>-h9gkhIT%*_NGJrx!r%p ztxq4y{QBD6_WAramR~*P)7Rc{*p7DZn6v+M?c@&~zjpq<7Y{ss`7rJuT)XbvlLtM1 z+1hc3Kd48`L)!N0Ue(s>_E1OJU&`Iat+RA0fyXv^ z-0Oe`w`=sohUv)o)cb>Le}3)Q8xC!H|M`7hvi6Yc@45Cxr~FLQ)%qpBG05!^t<8VB z;3u1(oN@6%t!;X^?3%M%y#cq^t~&IVW;671}@%9%Q+Hlb8GC@!?~> zzRB#O{V#9)(1|w4pNtV6joCieoEyW9=bzE^mGQ5){|8D1blzphtiAa1hc_i^9J!bK z*@x6!g_K{l&Sq&d{p>FOmThxS$)*yW_Wf2p&*>gTUfFUjlsb%*@iW9rt~#v&G-Kvy zhg@}YJLg24PFco(#hDLWyWr%#8c?2b@s|t%oNE7l4_>?GhD#gB#5sGO`z=(@ z^$XnDx?`Y&Cu2D6mQxxqaWs9o&*Aa?uyfwG_V}Y-(Rc#@K+5$G-uyR>PtIx_+5vw5 zbis25@cm#L`*(lfTU&t9kMW#v(^0#e*xsfeZHFJh!7)BLGGGAgPrK;u122EI_SIK^ zyd8h_)jQX2`p};>o-e%O#OBLLU_(#3`MU>@dSpBP{tG^>$yxt`$D0oMmv;Sb`+UIw zSdVPrjh9c|>rU;u;PJwfKGu!_8eWY3)C=$0c)9ezcdh--L4Vm~d(7GI9)i{N!|^*? z8)pvxkbCMNV=!jd><_u>BQ3Fb_>K1;+WCtHlt|!XJIatJd60#`2eirEJ;6t^0pya5 z=p&?VzvX&Qxvw8K`JNkp?-R;r!wb?UJzstHacvBAt#2|o@yH9C9UpV{wQU@+6*|^7 zyZ`|Y|KP052`t1P<+{lyWVz4k-L{6R}3Vv9C% zWfOu8-X#ecNBn{;>DIA2qin}uq+G_nD}aO)R!L!l

7q+9J}}s2cP<)7I2Qb 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

o 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 z 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�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 +/// DrawingBasis is a wrapper class to simplify use of the CanvasRenderingContext2D +/// +/// Remember everything in Javascript is executing in the client browser therefore +/// all resources have to be "pushed" to the browser to be accessible to the +/// webgl context and rendering javascript. +/// + + + +export class DrawingBasis { + "use strict"; + constructor(canvasContext, isWebAssemblyClient, canvas) { + // reference for GLContext + this.context = canvasContext; + // reference for .NetCalls + + this.canvas = canvas; + + // is the rest of the Blazor page "in process" with the WebGL canvas? + this.isWebAssemblyClient = isWebAssemblyClient; + + this.imageStorage = []; + + // we need to store information where the webgl methods can access the information + this.pixelImageStorage = []; + this.gradientStorage = []; + this.patternStorage = []; + this.transformStorage = []; + } + + // oddly enough most methods will call directly on the context, however we will want to manage resources by name + + measureText(text) { + const textMetrics = this.context.measureText(text); + // convert to json object + const result = { + "width": textMetrics.width, + "actualBoundingBoxAscent": textMetrics.actualBoundingBoxAscent, + "actualBoundingBoxDescent": textMetrics.actualBoundingBoxDescent, + "actualBoundingBoxLeft": textMetrics.actualBoundingBoxLeft, + "actualBoundingBoxRight": textMetrics.actualBoundingBoxRight, + "fontBoundingBoxAscent": textMetrics.fontBoundingBoxAscent, + "fontBoundingBoxDescent": textMetrics.fontBoundingBoxDescent + }; + + + return result; + } + + + // image processing + createImageData(name, width, height) { + this.pixelImageStorage[name] = this.context.createImageData(width, height); + } + + + // create an image and copy an large array of data, less than optimal + createImageDataCopyByteArray(name, width, height, values) // r,g,b,a array + { + values = values[0]; + + delete this.pixelImageStorage[name]; + + // create a blank image, image data is always initially blank + const imageData = this.context.createImageData(width, height); + this.pixelImageStorage[name] = imageData; + const length = imageData.data.length; + + // Different runtimes will return either a based64 encoded string or the actual Uint8Array + if (values instanceof Uint8Array) { + // Copy contents from the source. + for (let i = 0; i < length; i += 1) { + imageData.data[i] = values[i]; + } + } + else // Otherwise we have a base 64 encoded string + { + // Likely there are better ways to decode and copy in JavaScript + var binary_string = window.atob(values); + for (let i = 0; i < length; i += 1) { + imageData.data[i] = binary_string.charCodeAt(i)[i]; + } + } + } + + loadImage(name, src) { + const img = new Image(); + img.src = src; + img.name = name; + img.loadComplete = false; + img.onload = function () { + img.loadComplete = true; + }; + + this.imageStorage[name] = img; + } + + loadPaintImage(name, src, x, y) { + const img = new Image(); + img.src = src; + img.name = name; + img.loadComplete = false; + this.imageStorage[name] = img; + img.onload = function () { + img.loadComplete = true; + this.context.drawImage(img, x, y); + }; + + this.imageStorage[name] = img; + } + + // grab an image from the current displayed canvas + getImageData(name, x, y, width, height) { + const image = this.context.getImageData(x, y, width, height); + this.pixelImageStorage[name] = image; + } + + + // paint a whole image to the canvas + putImageData(name, x, y) { + this.context.putImageData(this.pixelImageStorage[name], x, y); + } + + + // paint part of the source image to the destination canvas + putImageDataPartial(name, x, y, dx, dy, dWidth, dHeight) { + this.context.putImageData(this.pixelImageStorage[name], x, y, dx, dy, dWidth, dHeight); + } + + + + + + // webgl supports an assortment of functions for loading image files + + setTransform(name) { + this.context.setTransform(this.transformStorage[name]); + } + + // patterns + createPattern(name, imageName, repetition) { + this.patternStorage[name] = this.context.createPattern(this.imageStorage[name], repetition); + } + + setPatternFillStyle(name) { + this.context.fillStyle = this.patternStorage[name]; + } + + //Gradients + createLinearGradient(name, x0, y0, x1, y1) { + this.gradientStorage[name] = this.context.createLinearGradient(x0, y0, x1, y1); + } + + createRadialGradient(name, x0, y0, r0, x1, y1, r1) { + this.gradientStorage[name] = this.context.createRadialGradient(x0, y0, r0, x1, y1, r1); + } + + addColorStop(name, stop, color) { + this.gradientStorage[name].addColorStop(stop, color); + } + + setGradientFillStyle(name) { + this.context.fillStyle = this.gradientStorage[name]; + } +} + diff --git a/Samples/BlazorSampleApp/wwwroot/css/bootstrap/bootstrap.min.css b/Samples/BlazorSampleApp/wwwroot/css/bootstrap/bootstrap.min.css new file mode 100644 index 000000000..02ae65b5f --- /dev/null +++ b/Samples/BlazorSampleApp/wwwroot/css/bootstrap/bootstrap.min.css @@ -0,0 +1,7 @@ +@charset "UTF-8";/*! + * Bootstrap v5.1.0 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-rgb:33,37,41;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-right:var(--bs-gutter-x,.75rem);padding-left:var(--bs-gutter-x,.75rem);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-bg:transparent;--bs-table-accent-bg:transparent;--bs-table-striped-color:#212529;--bs-table-striped-bg:rgba(0, 0, 0, 0.05);--bs-table-active-color:#212529;--bs-table-active-bg:rgba(0, 0, 0, 0.1);--bs-table-hover-color:#212529;--bs-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg:#cfe2ff;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:#000;border-color:#bacbe6}.table-secondary{--bs-table-bg:#e2e3e5;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:#000;border-color:#cbccce}.table-success{--bs-table-bg:#d1e7dd;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:#000;border-color:#bcd0c7}.table-info{--bs-table-bg:#cff4fc;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:#000;border-color:#badce3}.table-warning{--bs-table-bg:#fff3cd;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:#000;border-color:#e6dbb9}.table-danger{--bs-table-bg:#f8d7da;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:#000;border-color:#dfc2c4}.table-light{--bs-table-bg:#f8f9fa;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:#000;border-color:#dfe0e1}.table-dark{--bs-table-bg:#212529;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:#fff;border-color:#373b3e}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(25,135,84,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group .form-control.is-valid,.input-group .form-select.is-valid,.was-validated .input-group .form-control:valid,.was-validated .input-group .form-select:valid{z-index:1}.input-group .form-control.is-valid:focus,.input-group .form-select.is-valid:focus,.was-validated .input-group .form-control:valid:focus,.was-validated .input-group .form-select:valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group .form-control.is-invalid,.input-group .form-select.is-invalid,.was-validated .input-group .form-control:invalid,.was-validated .input-group .form-select:invalid{z-index:2}.input-group .form-control.is-invalid:focus,.input-group .form-select.is-invalid:focus,.was-validated .input-group .form-control:invalid:focus,.was-validated .input-group .form-select:invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-primary{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-primary:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-check:active+.btn-primary,.btn-check:checked+.btn-primary,.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:active+.btn-primary:focus,.btn-check:checked+.btn-primary:focus,.btn-primary.active:focus,.btn-primary:active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-check:active+.btn-secondary,.btn-check:checked+.btn-secondary,.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:active+.btn-secondary:focus,.btn-check:checked+.btn-secondary:focus,.btn-secondary.active:focus,.btn-secondary:active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#198754;border-color:#198754}.btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-check:active+.btn-success,.btn-check:checked+.btn-success,.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:active+.btn-success:focus,.btn-check:checked+.btn-success:focus,.btn-success.active:focus,.btn-success:active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-info{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-info:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-info,.btn-info:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-check:active+.btn-info,.btn-check:checked+.btn-info,.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:active+.btn-info:focus,.btn-check:checked+.btn-info:focus,.btn-info.active:focus,.btn-info:active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-info.disabled,.btn-info:disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-check:active+.btn-warning,.btn-check:checked+.btn-warning,.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:active+.btn-warning:focus,.btn-check:checked+.btn-warning:focus,.btn-warning.active:focus,.btn-warning:active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-check:active+.btn-danger,.btn-check:checked+.btn-danger,.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:active+.btn-danger:focus,.btn-check:checked+.btn-danger:focus,.btn-danger.active:focus,.btn-danger:active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-check:active+.btn-light,.btn-check:checked+.btn-light,.btn-light.active,.btn-light:active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:active+.btn-light:focus,.btn-check:checked+.btn-light:focus,.btn-light.active:focus,.btn-light:active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-light.disabled,.btn-light:disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-dark{color:#fff;background-color:#212529;border-color:#212529}.btn-dark:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-check:active+.btn-dark,.btn-check:checked+.btn-dark,.btn-dark.active,.btn-dark:active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:active+.btn-dark:focus,.btn-check:checked+.btn-dark:focus,.btn-dark.active:focus,.btn-dark:active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#212529;border-color:#212529}.btn-outline-primary{color:#0d6efd;border-color:#0d6efd}.btn-outline-primary:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-check:active+.btn-outline-primary,.btn-check:checked+.btn-outline-primary,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show,.btn-outline-primary:active{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:active+.btn-outline-primary:focus,.btn-check:checked+.btn-outline-primary:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus,.btn-outline-primary:active:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#0d6efd;background-color:transparent}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-check:active+.btn-outline-secondary,.btn-check:checked+.btn-outline-secondary,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show,.btn-outline-secondary:active{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:active+.btn-outline-secondary:focus,.btn-check:checked+.btn-outline-secondary:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus,.btn-outline-secondary:active:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-success{color:#198754;border-color:#198754}.btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-check:active+.btn-outline-success,.btn-check:checked+.btn-outline-success,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show,.btn-outline-success:active{color:#fff;background-color:#198754;border-color:#198754}.btn-check:active+.btn-outline-success:focus,.btn-check:checked+.btn-outline-success:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus,.btn-outline-success:active:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#198754;background-color:transparent}.btn-outline-info{color:#0dcaf0;border-color:#0dcaf0}.btn-outline-info:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-check:active+.btn-outline-info,.btn-check:checked+.btn-outline-info,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show,.btn-outline-info:active{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:active+.btn-outline-info:focus,.btn-check:checked+.btn-outline-info:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus,.btn-outline-info:active:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#0dcaf0;background-color:transparent}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-check:active+.btn-outline-warning,.btn-check:checked+.btn-outline-warning,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show,.btn-outline-warning:active{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:active+.btn-outline-warning:focus,.btn-check:checked+.btn-outline-warning:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus,.btn-outline-warning:active:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-check:active+.btn-outline-danger,.btn-check:checked+.btn-outline-danger,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show,.btn-outline-danger:active{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:active+.btn-outline-danger:focus,.btn-check:checked+.btn-outline-danger:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus,.btn-outline-danger:active:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-check:active+.btn-outline-light,.btn-check:checked+.btn-outline-light,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show,.btn-outline-light:active{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:active+.btn-outline-light:focus,.btn-check:checked+.btn-outline-light:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus,.btn-outline-light:active:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-dark{color:#212529;border-color:#212529}.btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-check:active+.btn-outline-dark,.btn-check:checked+.btn-outline-dark,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show,.btn-outline-dark:active{color:#fff;background-color:#212529;border-color:#212529}.btn-check:active+.btn-outline-dark:focus,.btn-check:checked+.btn-outline-dark:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus,.btn-outline-dark:active:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#212529;background-color:transparent}.btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}.btn-link:hover{color:#0a58ca}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropend,.dropstart,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1e2125;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:focus,.dropdown-menu-dark .dropdown-item:hover{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;color:#0d6efd;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:#0a58ca}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:0 0;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas-header{display:none}.navbar-expand-sm .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-sm .offcanvas-bottom,.navbar-expand-sm .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas-header{display:none}.navbar-expand-md .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-md .offcanvas-bottom,.navbar-expand-md .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas-header{display:none}.navbar-expand-lg .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-lg .offcanvas-bottom,.navbar-expand-lg .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas-header{display:none}.navbar-expand-xl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xl .offcanvas-bottom,.navbar-expand-xl .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xxl .offcanvas-bottom,.navbar-expand-xxl .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas-header{display:none}.navbar-expand .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand .offcanvas-bottom,.navbar-expand .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.55)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.55);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.55)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.55)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.55);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.55)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem 1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}.card-header-pills{margin-right:-.5rem;margin-left:-.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:#fff;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#0c63e4;background-color:#e7f1ff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.125)}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button::after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.accordion-header{margin-bottom:0}.accordion-item{background-color:#fff;border:1px solid rgba(0,0,0,.125)}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:0 0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#0d6efd;text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem 1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{color:#636464;background-color:#fefefe;border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@-webkit-keyframes progress-bar-stripes{0%{background-position-x:1rem}}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#0d6efd;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{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);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#212529;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);border-radius:.25rem}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1055;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .btn-close{padding:.5rem .5rem;margin:-.5rem -.5rem -.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[data-popper-placement^=right],.bs-tooltip-end{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[data-popper-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[data-popper-placement^=left],.bs-tooltip-start{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem 1rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@-webkit-keyframes spinner-border{to{transform:rotate(360deg)}}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.offcanvas{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;visibility:hidden;background-color:#fff;background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1rem}.offcanvas-header .btn-close{padding:.5rem .5rem;margin-top:-.5rem;margin-right:-.5rem;margin-bottom:-.5rem}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;padding:1rem 1rem;overflow-y:auto}.offcanvas-start{top:0;left:0;width:400px;border-right:1px solid rgba(0,0,0,.2);transform:translateX(-100%)}.offcanvas-end{top:0;right:0;width:400px;border-left:1px solid rgba(0,0,0,.2);transform:translateX(100%)}.offcanvas-top{top:0;right:0;left:0;height:30vh;max-height:100%;border-bottom:1px solid rgba(0,0,0,.2);transform:translateY(-100%)}.offcanvas-bottom{right:0;left:0;height:30vh;max-height:100%;border-top:1px solid rgba(0,0,0,.2);transform:translateY(100%)}.offcanvas.show{transform:none}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentColor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{-webkit-animation:placeholder-glow 2s ease-in-out infinite;animation:placeholder-glow 2s ease-in-out infinite}@-webkit-keyframes placeholder-glow{50%{opacity:.2}}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;-webkit-animation:placeholder-wave 2s linear infinite;animation:placeholder-wave 2s linear infinite}@-webkit-keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.link-primary{color:#0d6efd}.link-primary:focus,.link-primary:hover{color:#0a58ca}.link-secondary{color:#6c757d}.link-secondary:focus,.link-secondary:hover{color:#565e64}.link-success{color:#198754}.link-success:focus,.link-success:hover{color:#146c43}.link-info{color:#0dcaf0}.link-info:focus,.link-info:hover{color:#3dd5f3}.link-warning{color:#ffc107}.link-warning:focus,.link-warning:hover{color:#ffcd39}.link-danger{color:#dc3545}.link-danger:focus,.link-danger:hover{color:#b02a37}.link-light{color:#f8f9fa}.link-light:focus,.link-light:hover{color:#f9fafb}.link-dark{color:#212529}.link-dark:focus,.link-dark:hover{color:#1a1e21}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio:calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio:calc(9 / 21 * 100%)}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentColor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid #dee2e6!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid #dee2e6!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid #dee2e6!important}.border-start-0{border-left:0!important}.border-primary{border-color:#0d6efd!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#198754!important}.border-info{border-color:#0dcaf0!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#212529!important}.border-white{border-color:#fff!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#6c757d!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.25rem!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:.2rem!important}.rounded-2{border-radius:.25rem!important}.rounded-3{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-end{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-start{border-bottom-left-radius:.25rem!important;border-top-left-radius:.25rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/Samples/BlazorSampleApp/wwwroot/css/bootstrap/bootstrap.min.css.map b/Samples/BlazorSampleApp/wwwroot/css/bootstrap/bootstrap.min.css.map new file mode 100644 index 000000000..afcd9e33e --- /dev/null +++ b/Samples/BlazorSampleApp/wwwroot/css/bootstrap/bootstrap.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","../../scss/vendor/_rfs.scss","../../scss/mixins/_border-radius.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/_tables.scss","../../scss/mixins/_table-variants.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_form-select.scss","../../scss/forms/_form-check.scss","../../scss/forms/_form-range.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/_button-group.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_accordion.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/mixins/_backdrop.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/_offcanvas.scss","../../scss/_placeholders.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n// scss-docs-start import-stack\n// Configuration\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"utilities\";\n\n// Layout & components\n@import \"root\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"containers\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"accordion\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"alert\";\n@import \"progress\";\n@import \"list-group\";\n@import \"close\";\n@import \"toasts\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"spinners\";\n@import \"offcanvas\";\n@import \"placeholders\";\n\n// Helpers\n@import \"helpers\";\n\n// Utilities\n@import \"utilities/api\";\n// scss-docs-end import-stack\n",":root {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$variable-prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$variable-prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$variable-prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$variable-prefix}#{$color}-rgb: #{$value};\n }\n\n --#{$variable-prefix}white-rgb: #{to-rgb($white)};\n --#{$variable-prefix}black-rgb: #{to-rgb($black)};\n --#{$variable-prefix}body-rgb: #{to-rgb($body-color)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$variable-prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$variable-prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$variable-prefix}gradient: #{$gradient};\n\n // Root and body\n // stylelint-disable custom-property-empty-line-before\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$variable-prefix}root-font-size: #{$font-size-root};\n }\n --#{$variable-prefix}body-font-family: #{$font-family-base};\n --#{$variable-prefix}body-font-size: #{$font-size-base};\n --#{$variable-prefix}body-font-weight: #{$font-weight-base};\n --#{$variable-prefix}body-line-height: #{$line-height-base};\n --#{$variable-prefix}body-color: #{$body-color};\n @if $body-text-align != null {\n --#{$variable-prefix}body-text-align: #{$body-text-align};\n }\n --#{$variable-prefix}body-bg: #{$body-bg};\n // scss-docs-end root-body-variables\n // stylelint-enable custom-property-empty-line-before\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n @if $font-size-root != null {\n font-size: var(--#{$variable-prefix}-root-font-size);\n }\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n margin: 0; // 1\n font-family: var(--#{$variable-prefix}body-font-family);\n @include font-size(var(--#{$variable-prefix}body-font-size));\n font-weight: var(--#{$variable-prefix}body-font-weight);\n line-height: var(--#{$variable-prefix}body-line-height);\n color: var(--#{$variable-prefix}body-color);\n text-align: var(--#{$variable-prefix}body-text-align);\n background-color: var(--#{$variable-prefix}body-bg); // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n// 2. Set correct height and prevent the `size` attribute to make the `hr` look like an input field\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n background-color: currentColor;\n border: 0;\n opacity: $hr-opacity;\n}\n\nhr:not([size]) {\n height: $hr-height; // 2\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

`-`
` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-bs-original-title] { // 1\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n\n &:hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n direction: ltr #{\"/* rtl:ignore */\"};\n unicode-bidi: bidi-override;\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: $code-color;\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-`