diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml
index 0effab7547..e6dcbc78b0 100644
--- a/.github/workflows/build-and-test.yml
+++ b/.github/workflows/build-and-test.yml
@@ -1,5 +1,22 @@
name: "build and test"
on:
+ push:
+ branches:
+ - dev
+ paths:
+ - 'framework/**/*.cs'
+ - 'framework/**/*.cshtml'
+ - 'framework/**/*.csproj'
+ - 'framework/**/*.razor'
+ - 'modules/**/*.cs'
+ - 'modules/**/*.cshtml'
+ - 'modules/**/*.csproj'
+ - 'modules/**/*.razor'
+ - 'templates/**/*.cs'
+ - 'templates/**/*.cshtml'
+ - 'templates/**/*.csproj'
+ - 'templates/**/*.razor'
+
pull_request:
paths:
- 'framework/**/*.cs'
@@ -32,3 +49,6 @@ jobs:
run: .\test-all.ps1
working-directory: .\build
shell: powershell
+
+ - name: Codecov
+ uses: codecov/codecov-action@v2
diff --git a/.gitignore b/.gitignore
index c0347428f2..d3968773a0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -314,7 +314,7 @@ abp-build-config.json
tempkey.jwk
# ABP Analyzing files
-*.abppkg.analyze.json
+# [Disabled for now] *.abppkg.analyze.json
# appsettings.secrets.json
appsettings.secrets.json
\ No newline at end of file
diff --git a/Directory.Build.props b/Directory.Build.props
index 99443ae6fa..9d579e0d00 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -25,5 +25,15 @@
3.1.3
+ true
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers
+
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
index 21bc8ab85f..dbf8bce537 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,7 @@
# ABP Framework

+[](https://codecov.io/gh/abpframework/abp)
[](https://www.nuget.org/packages/Volo.Abp.Core)
[](https://www.nuget.org/packages/Volo.Abp.Core)
[](https://docs.abp.io/en/abp/latest/Nightly-Builds)
diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en-GB.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en-GB.json
index af20ee9ba7..5ab632d63e 100644
--- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en-GB.json
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en-GB.json
@@ -101,6 +101,7 @@
"WeWillSendYouADownloadLink": "We've sent the file to {0}.",
"InvalidFormInputs": "Please, type the valid information specified on the form.",
"DDDBookEmailBody": "Thank you.
To download your book, click here.",
- "FreeDDDEBook": "Free DDD E-Book"
+ "FreeDDDEBook": "Free DDD E-Book",
+ "CommercialNewsletterConfirmationMessage": "I agree to the Terms & Conditions and Privacy Policy."
}
}
\ No newline at end of file
diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json
index c8bfea1f13..3dabab5737 100644
--- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json
@@ -388,6 +388,7 @@
"PurchaseTrialLicenseMessage": "Your license expiration date is {0}.
If you want to continue using the projects you created during your free trial period, you need to change the license keys in your appsettings.secrets.json files. Here is your license key:",
"TrialLicenseExpireMessage": "You are using the trial license and your trial license will expire on {0}.",
"TryForFree": "Try For Free",
- "TrialLicenseExpiredInfo": "Your trial license period has expired!"
+ "TrialLicenseExpiredInfo": "Your trial license period has expired!",
+ "CommercialNewsletterConfirmationMessage": "I agree to the Terms & Conditions and Privacy Policy."
}
}
diff --git a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json
index c07678b890..edae77a046 100644
--- a/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json
+++ b/abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/tr.json
@@ -98,6 +98,7 @@
"WeWillSendYouADownloadLink": "{0} adresine email gönderilmiştir.",
"InvalidFormInputs": "Lütfen formda belirtilen geçerli bilgileri yazınız.",
"DDDBookEmailBody": "Teşekkürler.
Kitabı indirmek için, buraya tıklayınız.",
- "FreeDDDEBook": "Ücretsiz DDD E-Kitap"
+ "FreeDDDEBook": "Ücretsiz DDD E-Kitap",
+ "CommercialNewsletterConfirmationMessage": "Şartlar, Koşullar ve Gizlilik politikasını kabul ediyorum."
}
}
\ No newline at end of file
diff --git a/build/common.ps1 b/build/common.ps1
index 172e22ad6a..cdc0eaa1c0 100644
--- a/build/common.ps1
+++ b/build/common.ps1
@@ -7,6 +7,7 @@ $rootFolder = (Get-Item -Path "./" -Verbose).FullName
# List of solutions used only in development mode
$solutionPaths = @(
"../framework",
+ "../studio",
"../modules/basic-theme",
"../modules/users",
"../modules/permission-management",
@@ -19,7 +20,8 @@ $solutionPaths = @(
"../modules/background-jobs",
"../modules/account",
"../modules/cms-kit",
- "../modules/blob-storing-database"
+ "../modules/blob-storing-database",
+ "../studio"
)
if ($full -eq "-f")
diff --git a/build/test-all.ps1 b/build/test-all.ps1
index 9a94ec3760..3bd44527a7 100644
--- a/build/test-all.ps1
+++ b/build/test-all.ps1
@@ -7,7 +7,7 @@ $full = $args[0]
foreach ($solutionPath in $solutionPaths) {
$solutionAbsPath = (Join-Path $rootFolder $solutionPath)
Set-Location $solutionAbsPath
- dotnet test --no-build --no-restore
+ dotnet test --no-build --no-restore --collect:"XPlat Code Coverage"
if (-Not $?) {
Write-Host ("Test failed for the solution: " + $solutionPath)
Set-Location $rootFolder
diff --git a/codecov.yml b/codecov.yml
new file mode 100644
index 0000000000..7ad4672daf
--- /dev/null
+++ b/codecov.yml
@@ -0,0 +1,4 @@
+codecov:
+ branch: dev
+ require_ci_to_pass: yes
+ allow_coverage_offsets: true
diff --git a/common.props b/common.props
index 753259efb2..409b435273 100644
--- a/common.props
+++ b/common.props
@@ -1,7 +1,7 @@
latest
- 5.0.0-beta.1
+ 5.0.0-beta.2
$(NoWarn);CS1591;CS0436
https://abp.io/assets/abp_nupkg.png
https://abp.io/
diff --git a/docs/en/Background-Jobs-Hangfire.md b/docs/en/Background-Jobs-Hangfire.md
index 3bde5ea010..4ee58d84ef 100644
--- a/docs/en/Background-Jobs-Hangfire.md
+++ b/docs/en/Background-Jobs-Hangfire.md
@@ -95,12 +95,21 @@ app.UseHangfireDashboard("/hangfire", new DashboardOptions
});
```
+* `AbpHangfireAuthorizationFilter` is an implementation of an authorization filter.
+
+#### AbpHangfireAuthorizationFilter
+
+`AbpHangfireAuthorizationFilter` class has the following fields:
+
+* **`enableTenant` (`bool`, default: `false`):** Enables/disables accessing the Hangfire dashboard on tenant users.
+* **`requiredPermissionName` (`string`, default: `null`):** Hangfire dashboard is accessible only if the current user has the specified permission. In this case, if we specify a permission name, we don't need to set `enableTenant` `true` because the permission system already does it.
+
If you want to require an additional permission, you can pass it into the constructor as below:
```csharp
app.UseHangfireDashboard("/hangfire", new DashboardOptions
{
- AsyncAuthorization = new[] { new AbpHangfireAuthorizationFilter("MyHangFireDashboardPermissionName") }
+ AsyncAuthorization = new[] { new AbpHangfireAuthorizationFilter(requiredPermissionName: "MyHangFireDashboardPermissionName") }
});
```
diff --git a/docs/en/Background-Workers-Hangfire.md b/docs/en/Background-Workers-Hangfire.md
new file mode 100644
index 0000000000..e1e6fc71ad
--- /dev/null
+++ b/docs/en/Background-Workers-Hangfire.md
@@ -0,0 +1,99 @@
+# Hangfire Background Worker Manager
+
+[Hangfire](https://https://www.hangfire.io/) is an advanced background jobs and worker manager. You can integrate Hangfire with the ABP Framework to use it instead of the [default background worker manager](Background-Workers.md).
+
+The major advantage is that you can use the same server farm to manage your Background Jobs and Workers, as well as leverage the advanced scheduling that is available from Hangfire for [Recurring Jobs](https://docs.hangfire.io/en/latest/background-methods/performing-recurrent-tasks.html?highlight=recurring), aka Background Workers.
+
+## Installation
+
+It is suggested to use the [ABP CLI](CLI.md) to install this package.
+
+### Using the ABP CLI
+
+Open a command line window in the folder of the project (.csproj file) and type the following command:
+
+````bash
+abp add-package Volo.Abp.BackgroundWorkers.Hangfire
+````
+
+### Manual Installation
+
+If you want to manually install;
+
+1. Add the [Volo.Abp.BackgroundWorkers.Hangfire](https://www.nuget.org/packages/Volo.Abp.BackgroundWorkers.Hangfire) NuGet package to your project:
+
+ ````
+ Install-Package Volo.Abp.BackgroundWorkers.Hangfire
+ ````
+
+2. Add the `AbpBackgroundWorkersHangfireModule` to the dependency list of your module:
+
+````csharp
+[DependsOn(
+ //...other dependencies
+ typeof(AbpBackgroundWorkersHangfireModule) //Add the new module dependency
+ )]
+public class YourModule : AbpModule
+{
+}
+````
+
+> Hangfire background worker integration provides an adapter `HangfirePeriodicBackgroundWorkerAdapter` to automatically load any `PeriodicBackgroundWorkerBase` and `AsyncPeriodicBackgroundWorkerBase` derived classes as `IHangfireBackgroundWorker` instances. This allows you to still to easily switch over to use Hangfire as the background manager even you have existing background workers that are based on the [default background workers implementation](Background-Workers.md).
+
+## Create a Background Worker
+
+`HangfireBackgroundWorkerBase` is an easy way to create a background worker.
+
+```` csharp
+public class MyLogWorker : HangfireBackgroundWorkerBase
+{
+ public MyLogWorker()
+ {
+ RecurringJobId = nameof(MyLogWorker);
+ CronExpression = Cron.Daily();
+ }
+
+ public override Task DoWorkAsync()
+ {
+ Logger.LogInformation("Executed MyLogWorker..!");
+ return Task.CompletedTask;
+ }
+}
+````
+
+* **RecurringJobId** Is an optional parameter, see [Hangfire document](https://docs.hangfire.io/en/latest/background-methods/performing-recurrent-tasks.html)
+* **CronExpression** Is a CRON expression, see [CRON expression](https://en.wikipedia.org/wiki/Cron#CRON_expression)
+
+> You can directly implement the `IHangfireBackgroundWorker`, but `HangfireBackgroundWorkerBase` provides some useful properties like Logger.
+
+## Register BackgroundWorkerManager
+
+After creating a background worker class, you should add it to the `IBackgroundWorkerManager`. The most common place is the `OnApplicationInitialization` method of your module class:
+
+```` csharp
+[DependsOn(typeof(AbpBackgroundWorkersModule))]
+public class MyModule : AbpModule
+{
+ public override void OnApplicationInitialization(
+ ApplicationInitializationContext context)
+ {
+ context.AddBackgroundWorker();
+ }
+}
+````
+
+`context.AddBackgroundWorker(...)` is a shortcut extension method for the expression below:
+
+```` csharp
+context.ServiceProvider
+ .GetRequiredService()
+ .Add(
+ context
+ .ServiceProvider
+ .GetRequiredService()
+ );
+````
+
+So, it resolves the given background worker and adds to the `IBackgroundWorkerManager`.
+
+While we generally add workers in OnApplicationInitialization, there are no restrictions on that. You can inject IBackgroundWorkerManager anywhere and add workers at runtime. Background worker manager will stop and release all the registered workers when your application is being shut down.
\ No newline at end of file
diff --git a/docs/en/Background-Workers.md b/docs/en/Background-Workers.md
index b12f1881fb..0c9e26e409 100644
--- a/docs/en/Background-Workers.md
+++ b/docs/en/Background-Workers.md
@@ -131,10 +131,15 @@ If that's a problem for your workers, you have two options;
* Disable the background worker system using the `AbpBackgroundWorkerOptions` described above, for all the application instances, except one of them.
* Disable the background worker system for all the application instances and create another special application that runs on a single server and execute the workers.
-## Quartz Integration
+## Integrations
-ABP Framework's background worker system is good to implement periodic tasks. However, you may want to use an advanced task scheduler like [Quartz](https://www.quartz-scheduler.net/). See the community contributed [quartz integration](Background-Workers-Quartz.md) for the background workers.
+Background worker system is extensible and you can change the default background worker manager with your own implementation or on of the pre-built integrations.
+
+See pre-built worker manager alternatives:
+
+* [Quartz Background Worker Manager](Background-Workers-Quartz.md)
+* [Hangfire Background Worker Manager](Background-Workers-Hangfire.md)
## See Also
-* [Quartz Integration for the background workers](Background-Workers-Quartz.md)
+
* [Background Jobs](Background-Jobs.md)
diff --git a/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/POST.md b/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/POST.md
index 8a807efdd6..2fe9f6bad9 100644
--- a/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/POST.md
+++ b/docs/en/Blog-Posts/2021-10-05 v5_0_Beta1/POST.md
@@ -1,6 +1,6 @@
# ABP Platform 5.0 Beta 1 Has Been Released
-Today, we are excited to release the [ABP Framework](https://abp.io/) and the [ABP Commercial](https://commercial.abp.io/) version **5.0 Beta 1**. This blog post introduces the new features and important changes in this new version.
+Today, we are excited to release the [ABP Framework](https://abp.io/) and the [ABP Commercial](https://commercial.abp.io/) version **5.0 Beta**. This blog post introduces the new features and important changes in this new version.
> **The planned release date for the [5.0.0 Release Candidate](https://github.com/abpframework/abp/milestone/51) version is November, 2021**.
@@ -34,10 +34,13 @@ See the [ABP CLI documentation](https://docs.abp.io/en/abp/latest/CLI) for all t
### Visual Studio Upgrade
-As .NET 6 is a preview version you need to make changes on your current Visual Studio. If you want to run a .NET 6 project on Visual Studio 2019, you need to enable the `Use Previews of the .NET SDK` option from Visual Studio 2019 options. See the screenshot:
+As .NET 6 is a preview version you need to make changes on the Visual Studio 2019.
+If you want to run a .NET 6 project on Visual Studio 2019, you need to install the latest .NET SDK 6 from https://dotnet.microsoft.com/download/dotnet/6.0
+and also enable the `Use Previews of the .NET SDK` option from Visual Studio 2019 options. See the screenshot:

+
Alternatively you can download the latest Visual Studio 2022 preview to run/create the .NET 6 projects. We have tested the ABP solution with the Visual Studio 2022 `17.0.0 Preview 4.1`. Check out https://visualstudio.microsoft.com/vs/preview/ for more information.
### Migration Notes & Breaking Changes
diff --git a/docs/en/Distributed-Event-Bus.md b/docs/en/Distributed-Event-Bus.md
index 1e8549d8f0..d542ef5325 100644
--- a/docs/en/Distributed-Event-Bus.md
+++ b/docs/en/Distributed-Event-Bus.md
@@ -302,55 +302,4 @@ namespace AbpDemo
}
````
-This example uses the `AutoMap` attribute of the AutoMapper to configure the mapping. You could create a profile class instead. Please refer to the AutoMapper document for more options.
-
-## Exception Handling
-
-ABP provides exception handling and retries when an exception occurs, it will move to the dead letter queue after the retry fails.
-
-Enable exception handling:
-
-```csharp
-public override void PreConfigureServices(ServiceConfigurationContext context)
-{
- PreConfigure(options =>
- {
- options.EnabledErrorHandle = true;
- options.UseRetryStrategy();
- });
-}
-```
-
-* `EnabledErrorHandle` is used to enable exception handing.
-* `UseRetryStrategy` is used to enable retry.
-
-When an exception occurs, it will retry every three seconds up to the maximum number of retries(default is 3) and move to dead letter queue, you can change the number of retries, retry interval and dead letter queue name:
-
-```csharp
-PreConfigure(options =>
-{
- options.DeadLetterName = "dead_queue";
- options.UseRetryStrategy(retryStrategyOptions =>
- {
- retryStrategyOptions.IntervalMillisecond = 0;
- retryStrategyOptions.MaxRetryAttempts = 1;
- });
-});
-```
-
-### Error Handle Selector
-
-By default all event types will be exception handling, you can use `ErrorHandleSelector` of `AbpEventBusOptions` to change it:
-
-```csharp
-PreConfigure(options =>
-{
- options.ErrorHandleSelector = type => type == typeof(MyExceptionHandleEventData);
-});
-```
-
-`options.ErrorHandleSelector` actually a list of type predicate. You can write a lambda expression to define your filter.
-
-### Customize Exception Handling
-
-ABP defines the `IEventErrorHandler` interface and implemented by the provider, you can replace it via [dependency injection](Dependency-Injection.md)
\ No newline at end of file
+This example uses the `AutoMap` attribute of the AutoMapper to configure the mapping. You could create a profile class instead. Please refer to the AutoMapper document for more options.
\ No newline at end of file
diff --git a/docs/en/Local-Event-Bus.md b/docs/en/Local-Event-Bus.md
index 82c839a996..90e11c3baf 100644
--- a/docs/en/Local-Event-Bus.md
+++ b/docs/en/Local-Event-Bus.md
@@ -143,7 +143,7 @@ namespace AbpDemo
{
public async Task HandleEventAsync(StockCountChangedEvent eventData)
{
- //TODO: your code that does somthing on the event
+ //TODO: your code that does something on the event
}
}
}
@@ -158,52 +158,6 @@ If you perform **database operations** and use the [repositories](Repositories.m
> The handler class must be registered to the dependency injection (DI). The sample above uses the `ITransientDependency` to accomplish it. See the [DI document](Dependency-Injection.md) for more options.
-## Exception Handling
-
-ABP provides exception handling and retries when an exception occurs.
-
-Enable exception handling:
-
-```csharp
-public override void PreConfigureServices(ServiceConfigurationContext context)
-{
- PreConfigure(options =>
- {
- options.UseRetryStrategy();
- });
-}
-```
-
-When an exception occurs, it will retry every three seconds up to the maximum number of retries(default is 3) and throw the original exception, you can change the number of retries and the retry interval:
-
-```csharp
-PreConfigure(options =>
-{
- options.UseRetryStrategy(retryStrategyOptions =>
- {
- retryStrategyOptions.IntervalMillisecond = 0;
- retryStrategyOptions.MaxRetryAttempts = 1;
- });
-});
-```
-
-### Error Handle Selector
-
-By default all event types will be exception handling, you can use `ErrorHandleSelector` of `AbpEventBusOptions` to change it:
-
-```csharp
-PreConfigure(options =>
-{
- options.ErrorHandleSelector = type => type == typeof(MyExceptionHandleEventData);
-});
-```
-
-`options.ErrorHandleSelector` actually a list of type predicate. You can write a lambda expression to define your filter.
-
-### Customize Exception Handling
-
-ABP defines the `IEventErrorHandler` interface and implemented by `LocalEventErrorHandler`, you can replace it via [dependency injection](Dependency-Injection.md)
-
### Transaction & Exception Behavior
When an event published, subscribed event handlers are immediately executed. So;
@@ -272,4 +226,4 @@ The event types are;
Pre-build events are published when you save changes to the database;
* For EF Core, they are published on `DbContext.SaveChanges`.
-* For MongoDB, they are published when you call repository's `InsertAsync`, `UpdateAsync` or `DeleteAsync` methods (since MongoDB has not a change tracking system).
\ No newline at end of file
+* For MongoDB, they are published when you call repository's `InsertAsync`, `UpdateAsync` or `DeleteAsync` methods (since MongoDB has not a change tracking system).
diff --git a/docs/en/Module-Entity-Extensions.md b/docs/en/Module-Entity-Extensions.md
index f160f98b1a..7ee1d8840e 100644
--- a/docs/en/Module-Entity-Extensions.md
+++ b/docs/en/Module-Entity-Extensions.md
@@ -491,3 +491,6 @@ Here, a few things you can do:
* You can override a domain or application service to perform custom logics with your new property.
* You can low level control how to add/render a field in the data table on the UI.
+## See Also
+
+* [Angular UI Extensions](UI/Angular/Extensions-Overall.md)
diff --git a/docs/en/Testing.md b/docs/en/Testing.md
index e248ed51a6..29302f2e35 100644
--- a/docs/en/Testing.md
+++ b/docs/en/Testing.md
@@ -647,7 +647,7 @@ namespace MyProject.Issues
}
````
-It's that simple. This test method tests everything, including the application service, EF Core mapping, object to object mapping and the repository implementation. In this way, you can fully test the Application Later and the Domain Layer of your solution.
+It's that simple. This test method tests everything, including the application service, EF Core mapping, object to object mapping and the repository implementation. In this way, you can fully test the Application Layer and the Domain Layer of your solution.
## UI Tests
@@ -670,4 +670,4 @@ See the following documents to learn Non Visual UI Testing;
Visual Tests are used to interact with the application UI just like a real user does. It fully tests the application, including the visual appearance of the pages and components.
-Visual UI Testing is out of the scope for the ABP Framework. There are a lot of tooling in the industry (like [Selenium](https://www.selenium.dev/)) that you can use to test your application's UI.
\ No newline at end of file
+Visual UI Testing is out of the scope for the ABP Framework. There are a lot of tooling in the industry (like [Selenium](https://www.selenium.dev/)) that you can use to test your application's UI.
diff --git a/docs/en/UI/Angular/Config-State-Service.md b/docs/en/UI/Angular/Config-State-Service.md
index c810562623..3c1930d908 100644
--- a/docs/en/UI/Angular/Config-State-Service.md
+++ b/docs/en/UI/Angular/Config-State-Service.md
@@ -81,7 +81,7 @@ You can use the `getFeature` or `getFeature$` method of `ConfigStateService` to
```js
// this.config is instance of ConfigStateService
-const enableLdapLogin = this.configStateService.getFeature("Account.EnableLdapLogin");
+const enableLdapLogin = this.config.getFeature("Account.EnableLdapLogin");
// or
this.config.getFeature$("Account.EnableLdapLogin").subscribe(enableLdapLogin => {
@@ -98,7 +98,7 @@ You can use the `getSetting` or `getSetting$` method of `ConfigStateService` to
```js
// this.config is instance of ConfigStateService
-const twoFactorBehaviour = this.configStateService.getSetting("Abp.Identity.TwoFactor.Behaviour");
+const twoFactorBehaviour = this.config.getSetting("Abp.Identity.TwoFactor.Behaviour");
// or
this.config.getSetting$("Abp.Identity.TwoFactor.Behaviour").subscribe(twoFactorBehaviour => {
diff --git a/docs/en/UI/Angular/Extensions-Overall.md b/docs/en/UI/Angular/Extensions-Overall.md
new file mode 100644
index 0000000000..c36be79a91
--- /dev/null
+++ b/docs/en/UI/Angular/Extensions-Overall.md
@@ -0,0 +1,10 @@
+## Angular UI Extensions
+
+Angular UI extensions system allows you to add a new action to the actions menu, a new column to the data table, a new action to the toolbar of a page, and add a new field to the create and/or edit forms.
+
+See the documents below for the details:
+
+* [Entity Action Extensions](Entity-Action-Extensions.md)
+* [Data Table Column (or Entity Prop) Extensions](Data-Table-Column-Extensions.md)
+* [Page Toolbar Extension](Page-Toolbar-Extensions.md)
+* [Dynamic Form (or Form Prop) Extensions](Dynamic-Form-Extensions.md)
diff --git a/docs/en/docs-nav.json b/docs/en/docs-nav.json
index 6bffa3d5ec..943408d70a 100644
--- a/docs/en/docs-nav.json
+++ b/docs/en/docs-nav.json
@@ -235,6 +235,10 @@
{
"text": "Quartz Integration",
"path": "Background-Workers-Quartz.md"
+ },
+ {
+ "text": "Hangfire Integration",
+ "path": "Background-Workers-Hangfire.md"
}
]
},
@@ -1057,6 +1061,10 @@
{
"text": "Extensions",
"items": [
+ {
+ "text": "Overall",
+ "path": "UI/Angular/Extensions-Overall.md"
+ },
{
"text": "Entity Action Extensions",
"path": "UI/Angular/Entity-Action-Extensions.md"
diff --git a/docs/zh-Hans/Background-Workers-Hangfire.md b/docs/zh-Hans/Background-Workers-Hangfire.md
new file mode 100644
index 0000000000..bd63ff91e9
--- /dev/null
+++ b/docs/zh-Hans/Background-Workers-Hangfire.md
@@ -0,0 +1,100 @@
+# Hangfire Background Worker Manager
+
+[Hangfire](https://https://www.hangfire.io/)是一个高级的后台工作者管理. 你可以用ABP框架Hangfire集成代替[默认后台工作者管理](Background-Workers.md).
+
+主要优点是你可以使用相同的服务器群来管理你的后台作业和工作线程以及利用 Hangfire 提供的[Recurring Jobs](https://docs.hangfire.io/en/latest/background-methods/performing-recurrent-tasks.html?highlight=recurring)高级调度功能.
+
+## 安装
+
+建议使用[ABP CLI](CLI.md)安装包.
+
+
+### 使用ABP CLI
+
+在项目的文件夹(.csproj文件)中打开命令行窗口输入以下命令:
+
+````bash
+abp add-package Volo.Abp.BackgroundWorkers.Hangfire
+````
+
+### 手动安装
+
+如果你想手动安装;
+
+1. 添加 [Volo.Abp.BackgroundWorkers.Hangfire](https://www.nuget.org/packages/Volo.Abp.BackgroundWorkers.Hangfire) NuGet包添加到你的项目:
+
+ ````
+ Install-Package Volo.Abp.BackgroundWorkers.Hangfire
+ ````
+
+2. 添加 `AbpBackgroundWorkersHangfireModule` 到你的模块的依赖列表:
+
+````csharp
+[DependsOn(
+ //...other dependencies
+ typeof(AbpBackgroundWorkersHangfireModule) //Add the new module dependency
+ )]
+public class YourModule : AbpModule
+{
+}
+````
+
+> Hangfire后台工作者集成提供了 `HangfirePeriodicBackgroundWorkerAdapter` 来适配 `PeriodicBackgroundWorkerBase` 和 `AsyncPeriodicBackgroundWorkerBase` 派生类. 所以你依然可以按照[后台工作者文档](Background-Workers.md)来定义后台作业.
+
+## 创建后台工作者
+
+`HangfireBackgroundWorkerBase` 是创建一个后台工作者简单的方法.
+
+```` csharp
+public class MyLogWorker : HangfireBackgroundWorkerBase
+{
+ public MyLogWorker()
+ {
+ RecurringJobId = nameof(MyLogWorker);
+ CronExpression = Cron.Daily();
+ }
+
+ public override Task DoWorkAsync()
+ {
+ Logger.LogInformation("Executed MyLogWorker..!");
+ return Task.CompletedTask;
+ }
+}
+````
+
+* **RecurringJobId** 是一个可选参数, 参阅 [Hangfire文档](https://docs.hangfire.io/en/latest/background-methods/performing-recurrent-tasks.html)
+* **CronExpression** 是CRON表达式, 参阅 [CRON 表达式](https://en.wikipedia.org/wiki/Cron#CRON_expression)
+
+> 你可以直接实现 `IHangfireBackgroundWorker`, 但是 `HangfireBackgroundWorkerBase` 提供了一些有用的属性,例如 `Logger`.
+
+## 注册到后台工作者管理器
+
+创建一个后台工作者后, 你应该添加到 `IBackgroundWorkerManager`, 最常用的地方是在你模块类的 `OnApplicationInitialization` 方法中:
+
+```` csharp
+[DependsOn(typeof(AbpBackgroundWorkersModule))]
+public class MyModule : AbpModule
+{
+ public override void OnApplicationInitialization(
+ ApplicationInitializationContext context)
+ {
+ context.AddBackgroundWorker();
+ }
+}
+````
+
+`context.AddBackgroundWorker(...)` 是一个是以下代码快捷的扩展方法:
+
+```` csharp
+context.ServiceProvider
+ .GetRequiredService()
+ .Add(
+ context
+ .ServiceProvider
+ .GetRequiredService()
+ );
+````
+
+它解析给定的后台工作者并添加到 `IBackgroundWorkerManager`.
+
+虽然我们通常在 `OnApplicationInitialization` 中添加后台工作者, 但对此没有限制. 你可以在任何地方注入 `IBackgroundWorkerManager` 并在运行时添加后台工作者.
\ No newline at end of file
diff --git a/docs/zh-Hans/Background-Workers.md b/docs/zh-Hans/Background-Workers.md
index 26bafed2da..a7563349ab 100644
--- a/docs/zh-Hans/Background-Workers.md
+++ b/docs/zh-Hans/Background-Workers.md
@@ -128,11 +128,13 @@ context.ServiceProvider
* 使用上面提到的 `AbpBackgroundWorkerOptions` 禁用其他的后台工作者系统,只保留一个实例.
* 所有的应用程序都禁用后台工作者系统,创建一个特殊的应用程序在一个服务上运行执行工作者.
-## Quartz 集成
+## 集成
-ABP框架的后台工作者系统可以很好的执行周期任务. 但是你可能需要使用更高级的任务调度,像[Quartz](https://www.quartz-scheduler.net/). 参阅社区贡献的[Quartz集成](Background-Workers-Quartz.md)
+后台工作者系统是可扩展的,你可以更改默认的后台工作者管理器为你自己的实现,或者使用以下预构建的集成:
+
+* [Quartz 后台工作者管理器](Background-Workers-Quartz.md)
+* [Hangfire 后台工作者管理器](Background-Workers-Hangfire.md)
## 另请参阅
-* [后台工作者的Quartz集成](Background-Workers-Quartz.md)
* [后台作业](Background-Jobs.md)
\ No newline at end of file
diff --git a/docs/zh-Hans/Distributed-Event-Bus.md b/docs/zh-Hans/Distributed-Event-Bus.md
index bd086c3d83..720560b4be 100644
--- a/docs/zh-Hans/Distributed-Event-Bus.md
+++ b/docs/zh-Hans/Distributed-Event-Bus.md
@@ -299,55 +299,4 @@ namespace AbpDemo
}
````
-此示例使用AutoMapper的 `AutoMap` 属性配置的映射. 你可以创建一个配置文件类代替. 请参阅AutoMapper文档了解更多选项.
-
-## 异常处理
-
-ABP提供了异常处理, 它会进行重试并且重试失败后移动到死信队列.
-
-启用异常处理:
-
-```csharp
-public override void PreConfigureServices(ServiceConfigurationContext context)
-{
- PreConfigure(options =>
- {
- options.EnabledErrorHandle = true;
- options.UseRetryStrategy();
- });
-}
-```
-
-* `EnabledErrorHandle` 用于启用异常处理.
-* `UseRetryStrategy` 用于启用重试.
-
-当一个异常抛出,它会每3秒重试一次直到最大重试次数(默认是3)并且移动到错误队列, 你可以更改重试次数,重试间隔和死信队列名称:
-
-```csharp
-PreConfigure(options =>
-{
- options.DeadLetterName = "dead_queue";
- options.UseRetryStrategy(retryStrategyOptions =>
- {
- retryStrategyOptions.IntervalMillisecond = 0;
- retryStrategyOptions.MaxRetryAttempts = 1;
- });
-});
-```
-
-### 错误处理选择器
-
-默认所有的事件类型都会被处理, 你可以使用 `AbpEventBusOptions` 的 `ErrorHandleSelector` 来更改它:
-
-```csharp
-PreConfigure(options =>
-{
- options.ErrorHandleSelector = type => type == typeof(MyExceptionHandleEventData);
-});
-```
-
-`options.ErrorHandleSelector` 实际上是一个类型类型谓词列表. 你可以编写lambda来定义你的过滤.
-
-### 自定义异常处理
-
-ABP定义了 `IEventErrorHandler` 接口并且由提供程序实现, 你可以通过[依赖注入](Dependency-Injection.md)替换它.
\ No newline at end of file
+此示例使用AutoMapper的 `AutoMap` 属性配置的映射. 你可以创建一个配置文件类代替. 请参阅AutoMapper文档了解更多选项.
\ No newline at end of file
diff --git a/docs/zh-Hans/Local-Event-Bus.md b/docs/zh-Hans/Local-Event-Bus.md
index 3a2944d32b..9d7eb4b766 100644
--- a/docs/zh-Hans/Local-Event-Bus.md
+++ b/docs/zh-Hans/Local-Event-Bus.md
@@ -158,52 +158,6 @@ namespace AbpDemo
如果您执行**数据库操作**并在事件处理程序中使用[仓储](Repositories.md),那么您可能需要创建一个[工作单元](Unit-Of-Work.md),因为一些存储库方法需要在**活动的工作单元**中工作. 确保处理方法设置为 `virtual`,并为该方法添加一个 `[UnitOfWork]` attribute. 或者手动使用 `IUnitOfWorkManager` 创建一个工作单元范围.
-## 异常处理
-
-ABP提供了异常处理, 当异常发现时它会进行重试.
-
-启用异常处理:
-
-```csharp
-public override void PreConfigureServices(ServiceConfigurationContext context)
-{
- PreConfigure(options =>
- {
- options.UseRetryStrategy();
- });
-}
-```
-
-当一个异常抛出,它会每3秒重试一次直到最大重试次数(默认是3)并且移动抛出原始异常, 你可以更改重试次数和重试间隔和:
-
-```csharp
-PreConfigure(options =>
-{
- options.UseRetryStrategy(retryStrategyOptions =>
- {
- retryStrategyOptions.IntervalMillisecond = 0;
- retryStrategyOptions.MaxRetryAttempts = 1;
- });
-});
-```
-
-### 错误处理选择器
-
-默认所有的事件类型都会被处理, 你可以使用 `AbpEventBusOptions` 的 `ErrorHandleSelector` 来更改它:
-
-```csharp
-PreConfigure(options =>
-{
- options.ErrorHandleSelector = type => type == typeof(MyExceptionHandleEventData);
-});
-```
-
-`options.ErrorHandleSelector` 实际上是一个类型类型谓词列表. 你可以编写lambda来定义你的过滤.
-
-### 自定义异常处理
-
-ABP定义了 `IEventErrorHandler` 接口并且由 `LocalEventErrorHandler` 实现, 你可以通过[依赖注入](Dependency-Injection.md)替换它.
-
### 事务和异常行为
当一个事件发布,订阅的事件处理程序将立即执行.所以;
diff --git a/docs/zh-Hans/docs-nav.json b/docs/zh-Hans/docs-nav.json
index 15a770e023..37f57388c0 100644
--- a/docs/zh-Hans/docs-nav.json
+++ b/docs/zh-Hans/docs-nav.json
@@ -176,6 +176,10 @@
{
"text": "Quartz 集成",
"path": "Background-Workers-Quartz.md"
+ },
+ {
+ "text": "Hangfire 集成",
+ "path": "Background-Workers-Hangfire.md"
}
]
}
diff --git a/framework/Volo.Abp.sln b/framework/Volo.Abp.sln
index 309be85ea1..f3e495c814 100644
--- a/framework/Volo.Abp.sln
+++ b/framework/Volo.Abp.sln
@@ -372,6 +372,7 @@ EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AzureServiceBus", "src\Volo.Abp.AzureServiceBus\Volo.Abp.AzureServiceBus.csproj", "{808EC18E-C8CC-4F5C-82B6-984EADBBF85D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.EventBus.Azure", "src\Volo.Abp.EventBus.Azure\Volo.Abp.EventBus.Azure.csproj", "{FB27F78E-F10E-4810-9B8E-BCD67DCFC8A2}"
+EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Authorization.Abstractions", "src\Volo.Abp.Authorization.Abstractions\Volo.Abp.Authorization.Abstractions.csproj", "{87B0C2A8-FE95-4779-8B9C-2181AA52B3FA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.TextTemplating.Core", "src\Volo.Abp.TextTemplating.Core\Volo.Abp.TextTemplating.Core.csproj", "{184E859A-282D-44D7-B8E9-FEA874644013}"
@@ -390,13 +391,18 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.IdentityModel.Test
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Threading.Tests", "test\Volo.Abp.Threading.Tests\Volo.Abp.Threading.Tests.csproj", "{7B2FCAD6-86E6-49C8-ADBE-A61B4F4B101B}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.EventBus.Boxes", "src\Volo.Abp.EventBus.Boxes\Volo.Abp.EventBus.Boxes.csproj", "{6E289F31-7924-418B-9DAC-62A7CFADF916}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.DistributedLocking", "src\Volo.Abp.DistributedLocking\Volo.Abp.DistributedLocking.csproj", "{9A7EEA08-15BE-476D-8168-53039867038E}"
+EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Auditing.Contracts", "src\Volo.Abp.Auditing.Contracts\Volo.Abp.Auditing.Contracts.csproj", "{508B6355-AD28-4E60-8549-266D21DBF2CF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Http.Client.Web", "src\Volo.Abp.Http.Client.Web\Volo.Abp.Http.Client.Web.csproj", "{F7407459-8AFA-45E4-83E9-9BB01412CC08}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.DistributedLocking.Abstractions", "src\Volo.Abp.DistributedLocking.Abstractions\Volo.Abp.DistributedLocking.Abstractions.csproj", "{CA805B77-D50C-431F-B3CB-1111C9C6E807}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.DistributedLocking.Abstractions.Tests", "test\Volo.Abp.DistributedLocking.Abstractions.Tests\Volo.Abp.DistributedLocking.Abstractions.Tests.csproj", "{C4F54FB5-C828-414D-BA03-E8E7A10C784D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BackgroundWorkers.Hangfire", "src\Volo.Abp.BackgroundWorkers.Hangfire\Volo.Abp.BackgroundWorkers.Hangfire.csproj", "{E5FCE710-C5A3-4F94-B9C9-BD1E99252BFB}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -1171,10 +1177,6 @@ Global
{7B2FCAD6-86E6-49C8-ADBE-A61B4F4B101B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7B2FCAD6-86E6-49C8-ADBE-A61B4F4B101B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7B2FCAD6-86E6-49C8-ADBE-A61B4F4B101B}.Release|Any CPU.Build.0 = Release|Any CPU
- {6E289F31-7924-418B-9DAC-62A7CFADF916}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {6E289F31-7924-418B-9DAC-62A7CFADF916}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {6E289F31-7924-418B-9DAC-62A7CFADF916}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {6E289F31-7924-418B-9DAC-62A7CFADF916}.Release|Any CPU.Build.0 = Release|Any CPU
{9A7EEA08-15BE-476D-8168-53039867038E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9A7EEA08-15BE-476D-8168-53039867038E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9A7EEA08-15BE-476D-8168-53039867038E}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -1187,6 +1189,18 @@ Global
{F7407459-8AFA-45E4-83E9-9BB01412CC08}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F7407459-8AFA-45E4-83E9-9BB01412CC08}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F7407459-8AFA-45E4-83E9-9BB01412CC08}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CA805B77-D50C-431F-B3CB-1111C9C6E807}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CA805B77-D50C-431F-B3CB-1111C9C6E807}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CA805B77-D50C-431F-B3CB-1111C9C6E807}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CA805B77-D50C-431F-B3CB-1111C9C6E807}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C4F54FB5-C828-414D-BA03-E8E7A10C784D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C4F54FB5-C828-414D-BA03-E8E7A10C784D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C4F54FB5-C828-414D-BA03-E8E7A10C784D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C4F54FB5-C828-414D-BA03-E8E7A10C784D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E5FCE710-C5A3-4F94-B9C9-BD1E99252BFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E5FCE710-C5A3-4F94-B9C9-BD1E99252BFB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E5FCE710-C5A3-4F94-B9C9-BD1E99252BFB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E5FCE710-C5A3-4F94-B9C9-BD1E99252BFB}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -1384,10 +1398,12 @@ Global
{90B1866A-EF99-40B9-970E-B898E5AA523F} = {447C8A77-E5F0-4538-8687-7383196D04EA}
{40C6740E-BFCA-4D37-8344-3D84E2044BB2} = {447C8A77-E5F0-4538-8687-7383196D04EA}
{7B2FCAD6-86E6-49C8-ADBE-A61B4F4B101B} = {447C8A77-E5F0-4538-8687-7383196D04EA}
- {6E289F31-7924-418B-9DAC-62A7CFADF916} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
{9A7EEA08-15BE-476D-8168-53039867038E} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
{508B6355-AD28-4E60-8549-266D21DBF2CF} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
{F7407459-8AFA-45E4-83E9-9BB01412CC08} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
+ {CA805B77-D50C-431F-B3CB-1111C9C6E807} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
+ {C4F54FB5-C828-414D-BA03-E8E7A10C784D} = {447C8A77-E5F0-4538-8687-7383196D04EA}
+ {E5FCE710-C5A3-4F94-B9C9-BD1E99252BFB} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5}
diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/DependencyInjection/AbpWebAssemblyConventionalRegistrar.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/DependencyInjection/AbpWebAssemblyConventionalRegistrar.cs
index ae597eaac9..3929f6c4cc 100644
--- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/DependencyInjection/AbpWebAssemblyConventionalRegistrar.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/DependencyInjection/AbpWebAssemblyConventionalRegistrar.cs
@@ -5,39 +5,21 @@ using Volo.Abp.DependencyInjection;
namespace Volo.Abp.AspNetCore.Components.DependencyInjection
{
- public class AbpWebAssemblyConventionalRegistrar : ConventionalRegistrarBase
+ public class AbpWebAssemblyConventionalRegistrar : DefaultConventionalRegistrar
{
- public override void AddType(IServiceCollection services, Type type)
+ protected override bool IsConventionalRegistrationDisabled(Type type)
{
- if (IsConventionalRegistrationDisabled(type))
- {
- return;
- }
-
- if (!IsComponent(type))
- {
- return;
- }
-
- var serviceTypes = ExposedServiceExplorer.GetExposedServices(type);
-
- TriggerServiceExposing(services, type, serviceTypes);
-
- foreach (var serviceType in serviceTypes)
- {
- services.Add(
- ServiceDescriptor.Describe(
- serviceType,
- type,
- ServiceLifetime.Transient
- )
- );
- }
+ return !IsComponent(type) || base.IsConventionalRegistrationDisabled(type);
}
private static bool IsComponent(Type type)
{
return typeof(ComponentBase).IsAssignableFrom(type);
}
+
+ protected override ServiceLifetime? GetDefaultLifeTimeOrNull(Type type)
+ {
+ return ServiceLifetime.Transient;
+ }
}
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/AlertsDemo/AlertsDemoViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/AlertsDemo/AlertsDemoViewComponent.cs
index 4e1bdd133f..caab46111b 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/AlertsDemo/AlertsDemoViewComponent.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/AlertsDemo/AlertsDemoViewComponent.cs
@@ -12,7 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S
{
public const string ViewPath = "/Views/Components/Themes/Shared/Demos/AlertsDemo/Default.cshtml";
- public IViewComponentResult Invoke()
+ public virtual IViewComponentResult Invoke()
{
return View(ViewPath);
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/BadgesDemo/BadgesDemoViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/BadgesDemo/BadgesDemoViewComponent.cs
index 727b613926..d1fdc0bd45 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/BadgesDemo/BadgesDemoViewComponent.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/BadgesDemo/BadgesDemoViewComponent.cs
@@ -12,7 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S
{
public const string ViewPath = "/Views/Components/Themes/Shared/Demos/BadgesDemo/Default.cshtml";
- public IViewComponentResult Invoke()
+ public virtual IViewComponentResult Invoke()
{
return View(ViewPath);
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/BordersDemo/BordersDemoViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/BordersDemo/BordersDemoViewComponent.cs
index b288653010..cc87bfaa93 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/BordersDemo/BordersDemoViewComponent.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/BordersDemo/BordersDemoViewComponent.cs
@@ -12,7 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S
{
public const string ViewPath = "/Views/Components/Themes/Shared/Demos/BordersDemo/Default.cshtml";
- public IViewComponentResult Invoke()
+ public virtual IViewComponentResult Invoke()
{
return View(ViewPath);
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/BreadcrumbsDemo/BreadcrumbsDemoViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/BreadcrumbsDemo/BreadcrumbsDemoViewComponent.cs
index 0853f2b195..e7c5335558 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/BreadcrumbsDemo/BreadcrumbsDemoViewComponent.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/BreadcrumbsDemo/BreadcrumbsDemoViewComponent.cs
@@ -12,7 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S
{
public const string ViewPath = "/Views/Components/Themes/Shared/Demos/BreadcrumbsDemo/Default.cshtml";
- public IViewComponentResult Invoke()
+ public virtual IViewComponentResult Invoke()
{
return View(ViewPath);
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ButtonGroupsDemo/ButtonGroupsDemoViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ButtonGroupsDemo/ButtonGroupsDemoViewComponent.cs
index cb134673ac..dc37bd67a3 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ButtonGroupsDemo/ButtonGroupsDemoViewComponent.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ButtonGroupsDemo/ButtonGroupsDemoViewComponent.cs
@@ -12,7 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S
{
public const string ViewPath = "/Views/Components/Themes/Shared/Demos/ButtonGroupsDemo/Default.cshtml";
- public IViewComponentResult Invoke()
+ public virtual IViewComponentResult Invoke()
{
return View(ViewPath);
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ButtonsDemo/ButtonsDemoViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ButtonsDemo/ButtonsDemoViewComponent.cs
index 5cb6cf0779..8536a0a296 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ButtonsDemo/ButtonsDemoViewComponent.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ButtonsDemo/ButtonsDemoViewComponent.cs
@@ -12,7 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S
{
public const string ViewPath = "/Views/Components/Themes/Shared/Demos/ButtonsDemo/Default.cshtml";
- public IViewComponentResult Invoke()
+ public virtual IViewComponentResult Invoke()
{
return View(ViewPath);
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/CardsDemo/CardsDemoViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/CardsDemo/CardsDemoViewComponent.cs
index 0dafa65c70..ab47fe30b9 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/CardsDemo/CardsDemoViewComponent.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/CardsDemo/CardsDemoViewComponent.cs
@@ -12,7 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S
{
public const string ViewPath = "/Views/Components/Themes/Shared/Demos/CardsDemo/Default.cshtml";
- public IViewComponentResult Invoke()
+ public virtual IViewComponentResult Invoke()
{
return View(ViewPath);
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/CarouselDemo/CarouselDemoViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/CarouselDemo/CarouselDemoViewComponent.cs
index e57b840269..590e717838 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/CarouselDemo/CarouselDemoViewComponent.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/CarouselDemo/CarouselDemoViewComponent.cs
@@ -12,7 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S
{
public const string ViewPath = "/Views/Components/Themes/Shared/Demos/CarouselDemo/Default.cshtml";
- public IViewComponentResult Invoke()
+ public virtual IViewComponentResult Invoke()
{
return View(ViewPath);
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/CollapseDemo/CollapseDemoViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/CollapseDemo/CollapseDemoViewComponent.cs
index 44df03d3c4..678c1ad607 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/CollapseDemo/CollapseDemoViewComponent.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/CollapseDemo/CollapseDemoViewComponent.cs
@@ -12,7 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S
{
public const string ViewPath = "/Views/Components/Themes/Shared/Demos/CollapseDemo/Default.cshtml";
- public IViewComponentResult Invoke()
+ public virtual IViewComponentResult Invoke()
{
return View(ViewPath);
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/DropdownsDemo/DropdownsDemoViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/DropdownsDemo/DropdownsDemoViewComponent.cs
index 1eb9be8cf5..4ff21a4a33 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/DropdownsDemo/DropdownsDemoViewComponent.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/DropdownsDemo/DropdownsDemoViewComponent.cs
@@ -12,7 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S
{
public const string ViewPath = "/Views/Components/Themes/Shared/Demos/DropdownsDemo/Default.cshtml";
- public IViewComponentResult Invoke()
+ public virtual IViewComponentResult Invoke()
{
var Model = new DropDownDemoDemoModel();
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/DynamicFormsDemo/DynamicFormsDemoViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/DynamicFormsDemo/DynamicFormsDemoViewComponent.cs
index e768536a9f..5975e2ac36 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/DynamicFormsDemo/DynamicFormsDemoViewComponent.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/DynamicFormsDemo/DynamicFormsDemoViewComponent.cs
@@ -12,7 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S
{
public const string ViewPath = "/Views/Components/Themes/Shared/Demos/DynamicFormsDemo/Default.cshtml";
- public IViewComponentResult Invoke()
+ public virtual IViewComponentResult Invoke()
{
var model = new DynamicFormsDemoModel();
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/FormElementsDemo/FormElementsDemoViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/FormElementsDemo/FormElementsDemoViewComponent.cs
index 22bcde1e52..9b7cc1c1fa 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/FormElementsDemo/FormElementsDemoViewComponent.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/FormElementsDemo/FormElementsDemoViewComponent.cs
@@ -12,7 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S
{
public const string ViewPath = "/Views/Components/Themes/Shared/Demos/FormElementsDemo/Default.cshtml";
- public IViewComponentResult Invoke()
+ public virtual IViewComponentResult Invoke()
{
var model = new FormElementsDemoModel();
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/GridsDemo/GridsDemoViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/GridsDemo/GridsDemoViewComponent.cs
index e5e031afc0..2962a1c00d 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/GridsDemo/GridsDemoViewComponent.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/GridsDemo/GridsDemoViewComponent.cs
@@ -12,7 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S
{
public const string ViewPath = "/Views/Components/Themes/Shared/Demos/GridsDemo/Default.cshtml";
- public IViewComponentResult Invoke()
+ public virtual IViewComponentResult Invoke()
{
return View(ViewPath);
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ListGroupsDemo/ListGroupsDemoViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ListGroupsDemo/ListGroupsDemoViewComponent.cs
index 3c48462650..d52cb73bb0 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ListGroupsDemo/ListGroupsDemoViewComponent.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ListGroupsDemo/ListGroupsDemoViewComponent.cs
@@ -12,7 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S
{
public const string ViewPath = "/Views/Components/Themes/Shared/Demos/ListGroupsDemo/Default.cshtml";
- public IViewComponentResult Invoke()
+ public virtual IViewComponentResult Invoke()
{
return View(ViewPath);
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ModalsDemo/ModalsDemoViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ModalsDemo/ModalsDemoViewComponent.cs
index e4c2ce2c5e..4cd7e1f362 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ModalsDemo/ModalsDemoViewComponent.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ModalsDemo/ModalsDemoViewComponent.cs
@@ -12,7 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S
{
public const string ViewPath = "/Views/Components/Themes/Shared/Demos/ModalsDemo/Default.cshtml";
- public IViewComponentResult Invoke()
+ public virtual IViewComponentResult Invoke()
{
return View(ViewPath);
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/NavbarsDemo/NavbarsDemoViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/NavbarsDemo/NavbarsDemoViewComponent.cs
index 470857a845..bd7525ca0e 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/NavbarsDemo/NavbarsDemoViewComponent.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/NavbarsDemo/NavbarsDemoViewComponent.cs
@@ -12,7 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S
{
public const string ViewPath = "/Views/Components/Themes/Shared/Demos/NavbarsDemo/Default.cshtml";
- public IViewComponentResult Invoke()
+ public virtual IViewComponentResult Invoke()
{
return View(ViewPath);
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/NavsDemo/NavsDemoViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/NavsDemo/NavsDemoViewComponent.cs
index 7149894f46..42224598b0 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/NavsDemo/NavsDemoViewComponent.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/NavsDemo/NavsDemoViewComponent.cs
@@ -12,7 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S
{
public const string ViewPath = "/Views/Components/Themes/Shared/Demos/NavsDemo/Default.cshtml";
- public IViewComponentResult Invoke()
+ public virtual IViewComponentResult Invoke()
{
return View(ViewPath);
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/PopoversDemo/PopoversDemoViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/PopoversDemo/PopoversDemoViewComponent.cs
index 408676f63d..c9a3ee5fc5 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/PopoversDemo/PopoversDemoViewComponent.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/PopoversDemo/PopoversDemoViewComponent.cs
@@ -12,7 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S
{
public const string ViewPath = "/Views/Components/Themes/Shared/Demos/PopoversDemo/Default.cshtml";
- public IViewComponentResult Invoke()
+ public virtual IViewComponentResult Invoke()
{
return View(ViewPath);
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ProgressBarsDemo/ProgressBarsDemoViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ProgressBarsDemo/ProgressBarsDemoViewComponent.cs
index 33f1e09e15..e278aec9e4 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ProgressBarsDemo/ProgressBarsDemoViewComponent.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ProgressBarsDemo/ProgressBarsDemoViewComponent.cs
@@ -12,7 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S
{
public const string ViewPath = "/Views/Components/Themes/Shared/Demos/ProgressBarsDemo/Default.cshtml";
- public IViewComponentResult Invoke()
+ public virtual IViewComponentResult Invoke()
{
return View(ViewPath);
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/TablesDemo/TablesDemoViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/TablesDemo/TablesDemoViewComponent.cs
index 181a58f07f..2d0e092ac6 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/TablesDemo/TablesDemoViewComponent.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/TablesDemo/TablesDemoViewComponent.cs
@@ -12,7 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S
{
public const string ViewPath = "/Views/Components/Themes/Shared/Demos/TablesDemo/Default.cshtml";
- public IViewComponentResult Invoke()
+ public virtual IViewComponentResult Invoke()
{
return View(ViewPath);
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/TabsDemo/TabsDemoViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/TabsDemo/TabsDemoViewComponent.cs
index e001b5157d..adbed4dfe5 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/TabsDemo/TabsDemoViewComponent.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/TabsDemo/TabsDemoViewComponent.cs
@@ -12,7 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S
{
public const string ViewPath = "/Views/Components/Themes/Shared/Demos/TabsDemo/Default.cshtml";
- public IViewComponentResult Invoke()
+ public virtual IViewComponentResult Invoke()
{
return View(ViewPath);
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/TooltipsDemo/TooltipsDemoViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/TooltipsDemo/TooltipsDemoViewComponent.cs
index 7d30f09a79..75d989f9de 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/TooltipsDemo/TooltipsDemoViewComponent.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/TooltipsDemo/TooltipsDemoViewComponent.cs
@@ -12,7 +12,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S
{
public const string ViewPath = "/Views/Components/Themes/Shared/Demos/TooltipsDemo/Default.cshtml";
- public IViewComponentResult Invoke()
+ public virtual IViewComponentResult Invoke()
{
return View(ViewPath);
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Pages/Shared/Components/AbpApplicationPath/AbpApplicationPathViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Pages/Shared/Components/AbpApplicationPath/AbpApplicationPathViewComponent.cs
index 32a89cdcb8..464c99efdd 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Pages/Shared/Components/AbpApplicationPath/AbpApplicationPathViewComponent.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Pages/Shared/Components/AbpApplicationPath/AbpApplicationPathViewComponent.cs
@@ -5,7 +5,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Pages.Shared.Components.AbpApp
{
public class AbpApplicationPathViewComponent : AbpViewComponent
{
- public IViewComponentResult Invoke()
+ public virtual IViewComponentResult Invoke()
{
var applicationPath = ViewContext.HttpContext.Request.PathBase.Value;
var model = new AbpApplicationPathViewComponentModel
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Pages/Shared/Components/AbpPageSearchBox/AbpPageSearchBoxViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Pages/Shared/Components/AbpPageSearchBox/AbpPageSearchBoxViewComponent.cs
index a21a3c51cd..72b92cd6cc 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Pages/Shared/Components/AbpPageSearchBox/AbpPageSearchBoxViewComponent.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Pages/Shared/Components/AbpPageSearchBox/AbpPageSearchBoxViewComponent.cs
@@ -4,7 +4,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Pages.Shared.Components.AbpPag
{
public class AbpPageSearchBoxViewComponent : AbpViewComponent
{
- public IViewComponentResult Invoke()
+ public virtual IViewComponentResult Invoke()
{
return View("~/Pages/Shared/Components/AbpPageSearchBox/Default.cshtml");
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Pages/Shared/Components/AbpPageToolbar/AbpPageToolbarViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Pages/Shared/Components/AbpPageToolbar/AbpPageToolbarViewComponent.cs
index b07bc69abb..dbb9baa02c 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Pages/Shared/Components/AbpPageToolbar/AbpPageToolbarViewComponent.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Pages/Shared/Components/AbpPageToolbar/AbpPageToolbarViewComponent.cs
@@ -6,16 +6,16 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Pages.Shared.Components.AbpPag
{
public class AbpPageToolbarViewComponent : AbpViewComponent
{
- private readonly IPageToolbarManager _toolbarManager;
+ protected IPageToolbarManager ToolbarManager { get; }
public AbpPageToolbarViewComponent(IPageToolbarManager toolbarManager)
{
- _toolbarManager = toolbarManager;
+ ToolbarManager = toolbarManager;
}
- public async Task InvokeAsync(string pageName)
+ public virtual async Task InvokeAsync(string pageName)
{
- var items = await _toolbarManager.GetItemsAsync(pageName);
+ var items = await ToolbarManager.GetItemsAsync(pageName);
return View("~/Pages/Shared/Components/AbpPageToolbar/Default.cshtml", items);
}
}
diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DependencyInjection/AbpAspNetCoreMvcConventionalRegistrar.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DependencyInjection/AbpAspNetCoreMvcConventionalRegistrar.cs
index 2ef536db4d..794a71fecd 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DependencyInjection/AbpAspNetCoreMvcConventionalRegistrar.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/DependencyInjection/AbpAspNetCoreMvcConventionalRegistrar.cs
@@ -7,36 +7,11 @@ using Volo.Abp.DependencyInjection;
namespace Volo.Abp.AspNetCore.Mvc.DependencyInjection
{
- public class AbpAspNetCoreMvcConventionalRegistrar : ConventionalRegistrarBase
+ public class AbpAspNetCoreMvcConventionalRegistrar : DefaultConventionalRegistrar
{
- public override void AddType(IServiceCollection services, Type type)
+ protected override bool IsConventionalRegistrationDisabled(Type type)
{
- if (IsConventionalRegistrationDisabled(type))
- {
- return;
- }
-
- if (!IsMvcService(type))
- {
- return;
- }
-
- var lifeTime = GetMvcServiceLifetime(type);
-
- var serviceTypes = ExposedServiceExplorer.GetExposedServices(type);
-
- TriggerServiceExposing(services, type, serviceTypes);
-
- foreach (var serviceType in serviceTypes)
- {
- services.Add(
- ServiceDescriptor.Describe(
- serviceType,
- type,
- lifeTime
- )
- );
- }
+ return !IsMvcService(type) || base.IsConventionalRegistrationDisabled(type);
}
protected virtual bool IsMvcService(Type type)
@@ -46,11 +21,6 @@ namespace Volo.Abp.AspNetCore.Mvc.DependencyInjection
IsViewComponent(type);
}
- protected virtual ServiceLifetime GetMvcServiceLifetime(Type type)
- {
- return ServiceLifetime.Transient;
- }
-
private static bool IsPageModel(Type type)
{
return typeof(PageModel).IsAssignableFrom(type) || type.IsDefined(typeof(PageModelAttribute), true);
@@ -65,5 +35,10 @@ namespace Volo.Abp.AspNetCore.Mvc.DependencyInjection
{
return typeof(ViewComponent).IsAssignableFrom(type) || type.IsDefined(typeof(ViewComponentAttribute), true);
}
+
+ protected override ServiceLifetime? GetDefaultLifeTimeOrNull(Type type)
+ {
+ return ServiceLifetime.Transient;
+ }
}
}
diff --git a/framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/AbpSignalRConventionalRegistrar.cs b/framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/AbpSignalRConventionalRegistrar.cs
index 9dcb46d6bc..338a90a34a 100644
--- a/framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/AbpSignalRConventionalRegistrar.cs
+++ b/framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/AbpSignalRConventionalRegistrar.cs
@@ -5,39 +5,21 @@ using Volo.Abp.DependencyInjection;
namespace Volo.Abp.AspNetCore.SignalR
{
- public class AbpSignalRConventionalRegistrar : ConventionalRegistrarBase
+ public class AbpSignalRConventionalRegistrar : DefaultConventionalRegistrar
{
- public override void AddType(IServiceCollection services, Type type)
+ protected override bool IsConventionalRegistrationDisabled(Type type)
{
- if (IsConventionalRegistrationDisabled(type))
- {
- return;
- }
-
- if (!IsHub(type))
- {
- return;
- }
-
- var serviceTypes = ExposedServiceExplorer.GetExposedServices(type);
-
- TriggerServiceExposing(services, type, serviceTypes);
-
- foreach (var serviceType in serviceTypes)
- {
- services.Add(
- ServiceDescriptor.Describe(
- serviceType,
- type,
- ServiceLifetime.Transient
- )
- );
- }
+ return !IsHub(type) || base.IsConventionalRegistrationDisabled(type);
}
-
+
private static bool IsHub(Type type)
{
return typeof(Hub).IsAssignableFrom(type);
}
+
+ protected override ServiceLifetime? GetDefaultLifeTimeOrNull(Type type)
+ {
+ return ServiceLifetime.Transient;
+ }
}
}
diff --git a/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AbpAutoMapperConventionalRegistrar.cs b/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AbpAutoMapperConventionalRegistrar.cs
index 86fc494676..d5dbbde33a 100644
--- a/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AbpAutoMapperConventionalRegistrar.cs
+++ b/framework/src/Volo.Abp.AutoMapper/Volo/Abp/AutoMapper/AbpAutoMapperConventionalRegistrar.cs
@@ -3,12 +3,11 @@ using System.Linq;
using AutoMapper;
using AutoMapper.Internal;
using Microsoft.Extensions.DependencyInjection;
-using Microsoft.Extensions.DependencyInjection.Extensions;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.AutoMapper
{
- public class AbpAutoMapperConventionalRegistrar : ConventionalRegistrarBase
+ public class AbpAutoMapperConventionalRegistrar : DefaultConventionalRegistrar
{
protected readonly Type[] OpenTypes = {
typeof(IValueResolver<,,>),
@@ -18,17 +17,14 @@ namespace Volo.Abp.AutoMapper
typeof(IMappingAction<,>)
};
- public override void AddType(IServiceCollection services, Type type)
+ protected override bool IsConventionalRegistrationDisabled(Type type)
{
- if (IsConventionalRegistrationDisabled(type))
- {
- return;
- }
+ return !OpenTypes.Any(type.ImplementsGenericInterface) || base.IsConventionalRegistrationDisabled(type);
+ }
- if (type.IsClass && !type.IsAbstract && OpenTypes.Any(type.ImplementsGenericInterface))
- {
- services.TryAddTransient(type);
- }
+ protected override ServiceLifetime? GetDefaultLifeTimeOrNull(Type type)
+ {
+ return ServiceLifetime.Transient;
}
}
}
diff --git a/framework/src/Volo.Abp.BackgroundJobs/Volo.Abp.BackgroundJobs.csproj b/framework/src/Volo.Abp.BackgroundJobs/Volo.Abp.BackgroundJobs.csproj
index 858038e5df..7d4f2d9fa2 100644
--- a/framework/src/Volo.Abp.BackgroundJobs/Volo.Abp.BackgroundJobs.csproj
+++ b/framework/src/Volo.Abp.BackgroundJobs/Volo.Abp.BackgroundJobs.csproj
@@ -17,7 +17,7 @@
-
+
diff --git a/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/AbpBackgroundJobsModule.cs b/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/AbpBackgroundJobsModule.cs
index dccf2006dc..f5be42a2d6 100644
--- a/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/AbpBackgroundJobsModule.cs
+++ b/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/AbpBackgroundJobsModule.cs
@@ -1,6 +1,7 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Volo.Abp.BackgroundWorkers;
+using Volo.Abp.DistributedLocking;
using Volo.Abp.Guids;
using Volo.Abp.Modularity;
using Volo.Abp.Timing;
@@ -11,7 +12,8 @@ namespace Volo.Abp.BackgroundJobs
typeof(AbpBackgroundJobsAbstractionsModule),
typeof(AbpBackgroundWorkersModule),
typeof(AbpTimingModule),
- typeof(AbpGuidsModule)
+ typeof(AbpGuidsModule),
+ typeof(AbpDistributedLockingAbstractionsModule)
)]
public class AbpBackgroundJobsModule : AbpModule
{
diff --git a/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/BackgroundJobWorker.cs b/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/BackgroundJobWorker.cs
index 8eec35d816..2e7714b113 100644
--- a/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/BackgroundJobWorker.cs
+++ b/framework/src/Volo.Abp.BackgroundJobs/Volo/Abp/BackgroundJobs/BackgroundJobWorker.cs
@@ -5,6 +5,7 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Volo.Abp.BackgroundWorkers;
+using Volo.Abp.DistributedLocking;
using Volo.Abp.Threading;
using Volo.Abp.Timing;
@@ -12,19 +13,25 @@ namespace Volo.Abp.BackgroundJobs
{
public class BackgroundJobWorker : AsyncPeriodicBackgroundWorkerBase, IBackgroundJobWorker
{
+ protected const string DistributedLockName = "AbpBackgroundJobWorker";
+
protected AbpBackgroundJobOptions JobOptions { get; }
protected AbpBackgroundJobWorkerOptions WorkerOptions { get; }
+ protected IAbpDistributedLock DistributedLock { get; }
+
public BackgroundJobWorker(
AbpAsyncTimer timer,
IOptions jobOptions,
IOptions workerOptions,
- IServiceScopeFactory serviceScopeFactory)
+ IServiceScopeFactory serviceScopeFactory,
+ IAbpDistributedLock distributedLock)
: base(
timer,
serviceScopeFactory)
{
+ DistributedLock = distributedLock;
WorkerOptions = workerOptions.Value;
JobOptions = jobOptions.Value;
Timer.Period = WorkerOptions.JobPollPeriod;
@@ -32,57 +39,74 @@ namespace Volo.Abp.BackgroundJobs
protected override async Task DoWorkAsync(PeriodicBackgroundWorkerContext workerContext)
{
- var store = workerContext.ServiceProvider.GetRequiredService();
-
- var waitingJobs = await store.GetWaitingJobsAsync(WorkerOptions.MaxJobFetchCount);
-
- if (!waitingJobs.Any())
+ await using (var handler = await DistributedLock.TryAcquireAsync(DistributedLockName, cancellationToken: StoppingToken))
{
- return;
- }
-
- var jobExecuter = workerContext.ServiceProvider.GetRequiredService();
- var clock = workerContext.ServiceProvider.GetRequiredService();
- var serializer = workerContext.ServiceProvider.GetRequiredService();
-
- foreach (var jobInfo in waitingJobs)
- {
- jobInfo.TryCount++;
- jobInfo.LastTryTime = clock.Now;
-
- try
+ if (handler != null)
{
- var jobConfiguration = JobOptions.GetJob(jobInfo.JobName);
- var jobArgs = serializer.Deserialize(jobInfo.JobArgs, jobConfiguration.ArgsType);
- var context = new JobExecutionContext(workerContext.ServiceProvider, jobConfiguration.JobType, jobArgs);
+ var store = workerContext.ServiceProvider.GetRequiredService();
- try
- {
- await jobExecuter.ExecuteAsync(context);
+ var waitingJobs = await store.GetWaitingJobsAsync(WorkerOptions.MaxJobFetchCount);
- await store.DeleteAsync(jobInfo.Id);
+ if (!waitingJobs.Any())
+ {
+ return;
}
- catch (BackgroundJobExecutionException)
+
+ var jobExecuter = workerContext.ServiceProvider.GetRequiredService();
+ var clock = workerContext.ServiceProvider.GetRequiredService();
+ var serializer = workerContext.ServiceProvider.GetRequiredService();
+
+ foreach (var jobInfo in waitingJobs)
{
- var nextTryTime = CalculateNextTryTime(jobInfo, clock);
+ jobInfo.TryCount++;
+ jobInfo.LastTryTime = clock.Now;
- if (nextTryTime.HasValue)
+ try
{
- jobInfo.NextTryTime = nextTryTime.Value;
+ var jobConfiguration = JobOptions.GetJob(jobInfo.JobName);
+ var jobArgs = serializer.Deserialize(jobInfo.JobArgs, jobConfiguration.ArgsType);
+ var context = new JobExecutionContext(
+ workerContext.ServiceProvider,
+ jobConfiguration.JobType,
+ jobArgs);
+
+ try
+ {
+ await jobExecuter.ExecuteAsync(context);
+
+ await store.DeleteAsync(jobInfo.Id);
+ }
+ catch (BackgroundJobExecutionException)
+ {
+ var nextTryTime = CalculateNextTryTime(jobInfo, clock);
+
+ if (nextTryTime.HasValue)
+ {
+ jobInfo.NextTryTime = nextTryTime.Value;
+ }
+ else
+ {
+ jobInfo.IsAbandoned = true;
+ }
+
+ await TryUpdateAsync(store, jobInfo);
+ }
}
- else
+ catch (Exception ex)
{
+ Logger.LogException(ex);
jobInfo.IsAbandoned = true;
+ await TryUpdateAsync(store, jobInfo);
}
-
- await TryUpdateAsync(store, jobInfo);
}
}
- catch (Exception ex)
+ else
{
- Logger.LogException(ex);
- jobInfo.IsAbandoned = true;
- await TryUpdateAsync(store, jobInfo);
+ try
+ {
+ await Task.Delay(WorkerOptions.JobPollPeriod * 12, StoppingToken);
+ }
+ catch (TaskCanceledException) { }
}
}
}
@@ -101,7 +125,8 @@ namespace Volo.Abp.BackgroundJobs
protected virtual DateTime? CalculateNextTryTime(BackgroundJobInfo jobInfo, IClock clock)
{
- var nextWaitDuration = WorkerOptions.DefaultFirstWaitDuration * (Math.Pow(WorkerOptions.DefaultWaitFactor, jobInfo.TryCount - 1));
+ var nextWaitDuration = WorkerOptions.DefaultFirstWaitDuration *
+ (Math.Pow(WorkerOptions.DefaultWaitFactor, jobInfo.TryCount - 1));
var nextTryDate = jobInfo.LastTryTime?.AddSeconds(nextWaitDuration) ??
clock.Now.AddSeconds(nextWaitDuration);
@@ -113,4 +138,4 @@ namespace Volo.Abp.BackgroundJobs
return nextTryDate;
}
}
-}
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/FodyWeavers.xml b/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/FodyWeavers.xml
new file mode 100644
index 0000000000..bc5a74a236
--- /dev/null
+++ b/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
diff --git a/framework/src/Volo.Abp.EventBus.Boxes/FodyWeavers.xsd b/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/FodyWeavers.xsd
similarity index 96%
rename from framework/src/Volo.Abp.EventBus.Boxes/FodyWeavers.xsd
rename to framework/src/Volo.Abp.BackgroundWorkers.Hangfire/FodyWeavers.xsd
index ffa6fc4b78..3f3946e282 100644
--- a/framework/src/Volo.Abp.EventBus.Boxes/FodyWeavers.xsd
+++ b/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/FodyWeavers.xsd
@@ -1,4 +1,4 @@
-
+
diff --git a/framework/src/Volo.Abp.EventBus.Boxes/Volo.Abp.EventBus.Boxes.csproj b/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo.Abp.BackgroundWorkers.Hangfire.csproj
similarity index 71%
rename from framework/src/Volo.Abp.EventBus.Boxes/Volo.Abp.EventBus.Boxes.csproj
rename to framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo.Abp.BackgroundWorkers.Hangfire.csproj
index 6cbaf62aed..fe87db9cd1 100644
--- a/framework/src/Volo.Abp.EventBus.Boxes/Volo.Abp.EventBus.Boxes.csproj
+++ b/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo.Abp.BackgroundWorkers.Hangfire.csproj
@@ -5,8 +5,8 @@
netstandard2.0
- Volo.Abp.EventBus.Boxes
- Volo.Abp.EventBus.Boxes
+ Volo.Abp.BackgroundWorkers.Hangfire
+ Volo.Abp.BackgroundWorkers.Hangfire
$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;
false
false
@@ -16,8 +16,7 @@
-
-
+
diff --git a/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/AbpBackgroundWorkersHangfireModule.cs b/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/AbpBackgroundWorkersHangfireModule.cs
new file mode 100644
index 0000000000..4efbdcffb7
--- /dev/null
+++ b/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/AbpBackgroundWorkersHangfireModule.cs
@@ -0,0 +1,36 @@
+using System;
+using Hangfire;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Options;
+using Volo.Abp.Hangfire;
+using Volo.Abp.Modularity;
+
+namespace Volo.Abp.BackgroundWorkers.Hangfire
+{
+ [DependsOn(
+ typeof(AbpBackgroundWorkersModule),
+ typeof(AbpHangfireModule))]
+ public class AbpBackgroundWorkerHangfireModule : AbpModule
+ {
+ public override void OnPreApplicationInitialization(ApplicationInitializationContext context)
+ {
+ var options = context.ServiceProvider.GetRequiredService>().Value;
+ if (!options.IsEnabled)
+ {
+ var hangfireOptions = context.ServiceProvider.GetRequiredService>().Value;
+ hangfireOptions.BackgroundJobServerFactory = CreateOnlyEnqueueJobServer;
+ }
+ }
+
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ context.Services.AddSingleton(typeof(HangfirePeriodicBackgroundWorkerAdapter<>));
+ }
+
+ private BackgroundJobServer CreateOnlyEnqueueJobServer(IServiceProvider serviceProvider)
+ {
+ serviceProvider.GetRequiredService();
+ return null;
+ }
+ }
+}
diff --git a/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/HangfireBackgroundWorkerBase.cs b/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/HangfireBackgroundWorkerBase.cs
new file mode 100644
index 0000000000..230e9577a3
--- /dev/null
+++ b/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/HangfireBackgroundWorkerBase.cs
@@ -0,0 +1,13 @@
+using System.Threading.Tasks;
+
+namespace Volo.Abp.BackgroundWorkers.Hangfire
+{
+ public abstract class HangfireBackgroundWorkerBase : BackgroundWorkerBase, IHangfireBackgroundWorker
+ {
+ public string RecurringJobId { get; set; }
+
+ public string CronExpression { get; set; }
+
+ public abstract Task DoWorkAsync();
+ }
+}
diff --git a/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/HangfireBackgroundWorkerManager.cs b/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/HangfireBackgroundWorkerManager.cs
new file mode 100644
index 0000000000..bf613f6835
--- /dev/null
+++ b/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/HangfireBackgroundWorkerManager.cs
@@ -0,0 +1,91 @@
+using System;
+using System.Reflection;
+using System.Threading;
+using System.Threading.Tasks;
+using Hangfire;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Threading;
+
+namespace Volo.Abp.BackgroundWorkers.Hangfire
+{
+ [Dependency(ReplaceServices = true)]
+ public class HangfireBackgroundWorkerManager : IBackgroundWorkerManager, ISingletonDependency
+ {
+ public Task StartAsync(CancellationToken cancellationToken = default)
+ {
+ return Task.CompletedTask;
+ }
+
+ public Task StopAsync(CancellationToken cancellationToken = default)
+ {
+ return Task.CompletedTask;
+ }
+
+ public void Add(IBackgroundWorker worker)
+ {
+ if (worker is IHangfireBackgroundWorker hangfireBackgroundWorker)
+ {
+ if (hangfireBackgroundWorker.RecurringJobId.IsNullOrWhiteSpace())
+ {
+ RecurringJob.AddOrUpdate(() => hangfireBackgroundWorker.DoWorkAsync(),
+ hangfireBackgroundWorker.CronExpression);
+ }
+ else
+ {
+ RecurringJob.AddOrUpdate(hangfireBackgroundWorker.RecurringJobId,() => hangfireBackgroundWorker.DoWorkAsync(),
+ hangfireBackgroundWorker.CronExpression);
+ }
+ }
+ else
+ {
+ int? period;
+
+ if (worker is AsyncPeriodicBackgroundWorkerBase or PeriodicBackgroundWorkerBase)
+ {
+ var timer = (AbpTimer) worker.GetType()
+ .GetProperty("Timer", BindingFlags.Instance | BindingFlags.NonPublic)?.GetValue(worker);
+ period = timer?.Period;
+ }
+ else
+ {
+ return;
+ }
+
+ if (period == null)
+ {
+ return;
+ }
+
+ var adapterType = typeof(HangfirePeriodicBackgroundWorkerAdapter<>).MakeGenericType(worker.GetType());
+ var workerAdapter = Activator.CreateInstance(adapterType) as IHangfireBackgroundWorker;
+
+ RecurringJob.AddOrUpdate(() => workerAdapter.DoWorkAsync(), GetCron(period.Value));
+ }
+ }
+
+ protected virtual string GetCron(int period)
+ {
+ var time = TimeSpan.FromMilliseconds(period);
+ string cron;
+
+ if (time.TotalSeconds <= 59)
+ {
+ cron = $"*/{time.TotalSeconds} * * * * *";
+ }
+ else if (time.TotalMinutes <= 59)
+ {
+ cron = $"*/{time.TotalMinutes} * * * *";
+ }
+ else if (time.TotalHours <= 23)
+ {
+ cron = $"0 */{time.TotalHours} * * *";
+ }
+ else
+ {
+ cron = $"0 0 */{time.TotalDays} * *";
+ }
+
+ return cron;
+ }
+ }
+}
diff --git a/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/HangfirePeriodicBackgroundWorkerAdapter.cs b/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/HangfirePeriodicBackgroundWorkerAdapter.cs
new file mode 100644
index 0000000000..2f7dc02757
--- /dev/null
+++ b/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/HangfirePeriodicBackgroundWorkerAdapter.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+
+namespace Volo.Abp.BackgroundWorkers.Hangfire
+{
+ public class HangfirePeriodicBackgroundWorkerAdapter : HangfireBackgroundWorkerBase
+ where TWorker : IBackgroundWorker
+ {
+ private readonly MethodInfo _doWorkAsyncMethod;
+ private readonly MethodInfo _doWorkMethod;
+
+ public HangfirePeriodicBackgroundWorkerAdapter()
+ {
+ _doWorkAsyncMethod =
+ typeof(TWorker).GetMethod("DoWorkAsync", BindingFlags.Instance | BindingFlags.NonPublic);
+ _doWorkMethod = typeof(TWorker).GetMethod("DoWork", BindingFlags.Instance | BindingFlags.NonPublic);
+ }
+
+ public override async Task DoWorkAsync()
+ {
+ var workerContext = new PeriodicBackgroundWorkerContext(ServiceProvider);
+ var worker = ServiceProvider.GetRequiredService();
+
+ switch (worker)
+ {
+ case AsyncPeriodicBackgroundWorkerBase asyncPeriodicBackgroundWorker:
+ await (Task) _doWorkAsyncMethod.Invoke(asyncPeriodicBackgroundWorker, new object[] {workerContext});
+ break;
+ case PeriodicBackgroundWorkerBase periodicBackgroundWorker:
+ _doWorkMethod.Invoke(periodicBackgroundWorker, new object[] {workerContext});
+ break;
+ }
+ }
+ }
+}
diff --git a/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/IHangfireBackgroundWorker.cs b/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/IHangfireBackgroundWorker.cs
new file mode 100644
index 0000000000..84518a6158
--- /dev/null
+++ b/framework/src/Volo.Abp.BackgroundWorkers.Hangfire/Volo/Abp/BackgroundWorkers/Hangfire/IHangfireBackgroundWorker.cs
@@ -0,0 +1,15 @@
+using System.Threading.Tasks;
+
+namespace Volo.Abp.BackgroundWorkers.Hangfire
+{
+ public interface IHangfireBackgroundWorker : IBackgroundWorker
+ {
+ string RecurringJobId { get; set; }
+
+ string CronExpression { get; set; }
+
+ Task DoWorkAsync();
+ }
+}
+
+
diff --git a/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/AbpQuartzConventionalRegistrar.cs b/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/AbpQuartzConventionalRegistrar.cs
index 8d709c449c..c074633277 100644
--- a/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/AbpQuartzConventionalRegistrar.cs
+++ b/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/AbpQuartzConventionalRegistrar.cs
@@ -1,27 +1,22 @@
using System;
-using Microsoft.Extensions.DependencyInjection;
+using System.Collections.Generic;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.BackgroundWorkers.Quartz
{
public class AbpQuartzConventionalRegistrar : DefaultConventionalRegistrar
{
- public override void AddType(IServiceCollection services, Type type)
+ protected override bool IsConventionalRegistrationDisabled(Type type)
{
- if (!typeof(IQuartzBackgroundWorker).IsAssignableFrom(type))
- {
- return;
- }
-
- var dependencyAttribute = GetDependencyAttributeOrNull(type);
- var lifeTime = GetLifeTimeOrNull(type, dependencyAttribute);
+ return !typeof(IQuartzBackgroundWorker).IsAssignableFrom(type) || base.IsConventionalRegistrationDisabled(type);
+ }
- if (lifeTime == null)
+ protected override List GetExposedServiceTypes(Type type)
+ {
+ return new List()
{
- return;
- }
-
- services.Add(ServiceDescriptor.Describe(typeof(IQuartzBackgroundWorker), type, lifeTime.Value));
+ typeof(IQuartzBackgroundWorker)
+ };
}
}
}
diff --git a/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/BackgroundWorkerBase.cs b/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/BackgroundWorkerBase.cs
index 85523d7ee9..c497555be9 100644
--- a/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/BackgroundWorkerBase.cs
+++ b/framework/src/Volo.Abp.BackgroundWorkers/Volo/Abp/BackgroundWorkers/BackgroundWorkerBase.cs
@@ -21,6 +21,15 @@ namespace Volo.Abp.BackgroundWorkers
protected ILoggerFactory LoggerFactory => LazyServiceProvider.LazyGetRequiredService();
protected ILogger Logger => LazyServiceProvider.LazyGetService(provider => LoggerFactory?.CreateLogger(GetType().FullName) ?? NullLogger.Instance);
+
+ protected CancellationTokenSource StoppingTokenSource { get; }
+ protected CancellationToken StoppingToken { get; }
+
+ public BackgroundWorkerBase()
+ {
+ StoppingTokenSource = new CancellationTokenSource();
+ StoppingToken = StoppingTokenSource.Token;
+ }
public virtual Task StartAsync(CancellationToken cancellationToken = default)
{
@@ -31,6 +40,8 @@ namespace Volo.Abp.BackgroundWorkers
public virtual Task StopAsync(CancellationToken cancellationToken = default)
{
Logger.LogDebug("Stopped background worker: " + ToString());
+ StoppingTokenSource.Cancel();
+ StoppingTokenSource.Dispose();
return Task.CompletedTask;
}
diff --git a/framework/src/Volo.Abp.BlazoriseUI/AbpCrudPageBase.cs b/framework/src/Volo.Abp.BlazoriseUI/AbpCrudPageBase.cs
index ea7e2236ef..47d1b33d84 100644
--- a/framework/src/Volo.Abp.BlazoriseUI/AbpCrudPageBase.cs
+++ b/framework/src/Volo.Abp.BlazoriseUI/AbpCrudPageBase.cs
@@ -504,6 +504,7 @@ namespace Volo.Abp.BlazoriseUI
{
await GetEntitiesAsync();
await InvokeAsync(StateHasChanged);
+ await Notify.Success(L["SuccessfullyDeleted"]);
}
protected virtual string GetDeleteConfirmationMessage(TListViewModel entity)
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Auth/LoginInfo.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Auth/LoginInfo.cs
index 2ad31421e5..8fed6a9894 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Auth/LoginInfo.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Auth/LoginInfo.cs
@@ -12,5 +12,7 @@ namespace Volo.Abp.Cli.Auth
public string EmailAddress { get; set; }
public string Organization { get; set; }
+
+ public bool HasSourceCodeAccess { get; set; }
}
}
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultDotNetProjectBuilder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultDotNetProjectBuilder.cs
index dba7cebb86..72b1cd2e6d 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultDotNetProjectBuilder.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultDotNetProjectBuilder.cs
@@ -9,6 +9,13 @@ namespace Volo.Abp.Cli.Build
{
public class DefaultDotNetProjectBuilder : IDotNetProjectBuilder, ITransientDependency
{
+ public ICmdHelper CmdHelper { get; }
+
+ public DefaultDotNetProjectBuilder(ICmdHelper cmdHelper)
+ {
+ CmdHelper = cmdHelper;
+ }
+
public List BuildProjects(List projects, string arguments)
{
var builtProjects = new ConcurrentBag();
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs
index a418ceba52..f06fcb6d2d 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs
@@ -24,17 +24,20 @@ namespace Volo.Abp.Cli
protected ICommandSelector CommandSelector { get; }
protected IServiceScopeFactory ServiceScopeFactory { get; }
protected NuGetService NuGetService { get; }
+ public ICmdHelper CmdHelper { get; }
public CliService(
ICommandLineArgumentParser commandLineArgumentParser,
ICommandSelector commandSelector,
IServiceScopeFactory serviceScopeFactory,
- NuGetService nugetService)
+ NuGetService nugetService,
+ ICmdHelper cmdHelper)
{
CommandLineArgumentParser = commandLineArgumentParser;
CommandSelector = commandSelector;
ServiceScopeFactory = serviceScopeFactory;
NuGetService = nugetService;
+ CmdHelper = cmdHelper;
Logger = NullLogger.Instance;
}
@@ -42,7 +45,7 @@ namespace Volo.Abp.Cli
public async Task RunAsync(string[] args)
{
Logger.LogInformation("ABP CLI (https://abp.io)");
-
+
var commandLineArgs = CommandLineArgumentParser.Parse(args);
#if !DEBUG
@@ -147,7 +150,7 @@ namespace Volo.Abp.Cli
await RunInternalAsync(args);
}
}
-
+
private async Task RunInternalAsync(CommandLineArgs commandLineArgs)
{
var commandType = CommandSelector.Select(commandLineArgs);
@@ -203,7 +206,7 @@ namespace Volo.Abp.Cli
{
SemanticVersion currentCliVersion = default;
- var consoleOutput = new StringReader(CmdHelper.RunCmdAndGetOutput($"dotnet tool list -g"));
+ var consoleOutput = new StringReader(CmdHelper.RunCmdAndGetOutput($"dotnet tool list -g", out int exitCode));
string line;
while ((line = await consoleOutput.ReadLineAsync()) != null)
{
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliUrls.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliUrls.cs
index 15d03236ae..736d1a1ba3 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliUrls.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliUrls.cs
@@ -4,19 +4,18 @@ namespace Volo.Abp.Cli
{
public static class CliUrls
{
-#if DEBUG
+ /*
public const string WwwAbpIo = WwwAbpIoDevelopment;
public const string AccountAbpIo = AccountAbpIoDevelopment;
public const string NuGetRootPath = NuGetRootPathDevelopment;
-#else
+*/
public const string WwwAbpIo = WwwAbpIoProduction;
public const string AccountAbpIo = AccountAbpIoProduction;
public const string NuGetRootPath = NuGetRootPathProduction;
-#endif
public const string WwwAbpIoProduction = "https://abp.io/";
public const string AccountAbpIoProduction = "https://account.abp.io/";
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs
index 99ddba2de8..aa31060c48 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/AddModuleCommand.cs
@@ -18,7 +18,7 @@ namespace Volo.Abp.Cli.Commands
public ILogger Logger { get; set; }
protected SolutionModuleAdder SolutionModuleAdder { get; }
- public SolutionAbpVersionFinder SolutionAbpVersionFinder { get; }
+ public SolutionPackageVersionFinder SolutionPackageVersionFinder { get; }
public AddModuleInfoOutput LastAddedModuleInfo
{
@@ -33,10 +33,10 @@ namespace Volo.Abp.Cli.Commands
}
}
- public AddModuleCommand(SolutionModuleAdder solutionModuleAdder, SolutionAbpVersionFinder solutionAbpVersionFinder)
+ public AddModuleCommand(SolutionModuleAdder solutionModuleAdder, SolutionPackageVersionFinder solutionPackageVersionFinder)
{
SolutionModuleAdder = solutionModuleAdder;
- SolutionAbpVersionFinder = solutionAbpVersionFinder;
+ SolutionPackageVersionFinder = solutionPackageVersionFinder;
Logger = NullLogger.Instance;
}
@@ -62,7 +62,7 @@ namespace Volo.Abp.Cli.Commands
var version = commandLineArgs.Options.GetOrNull(Options.Version.Short, Options.Version.Long);
if (version == null)
{
- version = SolutionAbpVersionFinder.Find(solutionFile);
+ version = SolutionPackageVersionFinder.Find(solutionFile);
}
var moduleInfo = await SolutionModuleAdder.AddAsync(
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/CreateMigrationAndRunMigratorCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/CreateMigrationAndRunMigratorCommand.cs
index 7b9fbd35fe..89e9ea7904 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/CreateMigrationAndRunMigratorCommand.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/CreateMigrationAndRunMigratorCommand.cs
@@ -12,10 +12,12 @@ namespace Volo.Abp.Cli.Commands
{
public class CreateMigrationAndRunMigratorCommand : IConsoleCommand, ITransientDependency
{
+ public ICmdHelper CmdHelper { get; }
public ILogger Logger { get; set; }
- public CreateMigrationAndRunMigratorCommand()
+ public CreateMigrationAndRunMigratorCommand(ICmdHelper cmdHelper)
{
+ CmdHelper = cmdHelper;
Logger = NullLogger.Instance;
}
@@ -98,7 +100,7 @@ namespace Volo.Abp.Cli.Commands
return Path.GetFileName(dbContext).RemovePostFix(".cs");
}
- private static string AddMigrationAndGetOutput(string dbMigrationsFolder, string dbContext, string outputDirectory)
+ private string AddMigrationAndGetOutput(string dbMigrationsFolder, string dbContext, string outputDirectory)
{
var dbContextOption = string.IsNullOrWhiteSpace(dbContext)
? string.Empty
@@ -107,12 +109,12 @@ namespace Volo.Abp.Cli.Commands
var addMigrationCmd = $"cd \"{dbMigrationsFolder}\" && " +
$"dotnet ef migrations add Initial --output-dir {outputDirectory} {dbContextOption}";
- return CmdHelper.RunCmdAndGetOutput(addMigrationCmd);
+ return CmdHelper.RunCmdAndGetOutput(addMigrationCmd, out int exitCode);
}
- private static bool IsDotNetEfToolInstalled()
+ private bool IsDotNetEfToolInstalled()
{
- var output = CmdHelper.RunCmdAndGetOutput("dotnet tool list -g");
+ var output = CmdHelper.RunCmdAndGetOutput("dotnet tool list -g", out int exitCode);
return output.Contains("dotnet-ef");
}
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs
index 053b7cf346..d347e84418 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs
@@ -35,8 +35,9 @@ namespace Volo.Abp.Cli.Commands
public NewCommand(TemplateProjectBuilder templateProjectBuilder
, ITemplateInfoProvider templateInfoProvider,
- ConnectionStringProvider connectionStringProvider)
- : base(connectionStringProvider)
+ ConnectionStringProvider connectionStringProvider,
+ ICmdHelper cmdHelper)
+ : base(connectionStringProvider, cmdHelper)
{
TemplateProjectBuilder = templateProjectBuilder;
TemplateInfoProvider = templateInfoProvider;
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs
index 927019f566..6aa528a7b7 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs
@@ -18,11 +18,13 @@ namespace Volo.Abp.Cli.Commands
public abstract class ProjectCreationCommandBase
{
public ConnectionStringProvider ConnectionStringProvider { get; }
+ public ICmdHelper CmdHelper { get; }
public ILogger Logger { get; set; }
- public ProjectCreationCommandBase(ConnectionStringProvider connectionStringProvider)
+ public ProjectCreationCommandBase(ConnectionStringProvider connectionStringProvider, ICmdHelper cmdHelper)
{
ConnectionStringProvider = connectionStringProvider;
+ CmdHelper = cmdHelper;
Logger = NullLogger.Instance;
}
@@ -204,6 +206,10 @@ namespace Volo.Abp.Cli.Commands
bool isTiered,
CommandLineArgs commandLineArgs)
{
+
+#if DEBUG
+ return;
+#endif
if (AppTemplateBase.IsAppTemplate(template))
{
var isCommercial = template == AppProTemplate.TemplateName;
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs
index 34cde45265..d81d016ac8 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SuiteCommand.cs
@@ -15,13 +15,15 @@ namespace Volo.Abp.Cli.Commands
{
public class SuiteCommand : IConsoleCommand, ITransientDependency
{
+ public ICmdHelper CmdHelper { get; }
private readonly AbpNuGetIndexUrlService _nuGetIndexUrlService;
private readonly NuGetService _nuGetService;
private const string SuitePackageName = "Volo.Abp.Suite";
public ILogger Logger { get; set; }
- public SuiteCommand(AbpNuGetIndexUrlService nuGetIndexUrlService, NuGetService nuGetService)
+ public SuiteCommand(AbpNuGetIndexUrlService nuGetIndexUrlService, NuGetService nuGetService, ICmdHelper cmdHelper)
{
+ CmdHelper = cmdHelper;
_nuGetIndexUrlService = nuGetIndexUrlService;
_nuGetService = nuGetService;
Logger = NullLogger.Instance;
@@ -71,7 +73,7 @@ namespace Volo.Abp.Cli.Commands
private string GetCurrentSuiteVersion()
{
- var dotnetToolList = CmdHelper.RunCmdAndGetOutput("dotnet tool list -g");
+ var dotnetToolList = CmdHelper.RunCmdAndGetOutput("dotnet tool list -g", out int exitCode);
var suiteLine = dotnetToolList.Split(Environment.NewLine)
.FirstOrDefault(l => l.ToLower().StartsWith("volo.abp.suite "));
@@ -127,11 +129,11 @@ namespace Volo.Abp.Cli.Commands
versionOption = $" --version {version}";
}
- var result = CmdHelper.RunCmd(
- $"dotnet tool install {SuitePackageName}{versionOption} --add-source {nugetIndexUrl} -g"
+ CmdHelper.RunCmd(
+ $"dotnet tool install {SuitePackageName}{versionOption} --add-source {nugetIndexUrl} -g", out int exitCode
);
- if (result == 0)
+ if (exitCode == 0)
{
Logger.LogInformation("ABP Suite has been successfully installed.");
Logger.LogInformation("You can run it with the CLI command \"abp suite\"");
@@ -197,11 +199,11 @@ namespace Volo.Abp.Cli.Commands
versionOption = $" --version {version}";
}
- var result = CmdHelper.RunCmd(
- $"dotnet tool update {SuitePackageName}{versionOption} --add-source {nugetIndexUrl} -g"
+ CmdHelper.RunCmd(
+ $"dotnet tool update {SuitePackageName}{versionOption} --add-source {nugetIndexUrl} -g", out int exitCode
);
- if (result != 0)
+ if (exitCode != 0)
{
ShowSuiteManualUpdateCommand();
}
@@ -230,7 +232,7 @@ namespace Volo.Abp.Cli.Commands
Logger.LogError("dotnet tool update -g Volo.Abp.Suite --add-source https://nuget.abp.io//v3/index.json");
}
- private static void RemoveSuite()
+ private void RemoveSuite()
{
CmdHelper.RunCmd("dotnet tool uninstall " + SuitePackageName + " -g");
}
@@ -275,7 +277,7 @@ namespace Volo.Abp.Cli.Commands
sb.AppendLine(" abp suite");
sb.AppendLine(" abp suite install");
sb.AppendLine(" abp suite install --preview");
- sb.AppendLine(" abp suite install --version 4.2.2");
+ sb.AppendLine(" abp suite install --version 4.2.2");
sb.AppendLine(" abp suite update");
sb.AppendLine(" abp suite update --preview");
sb.AppendLine(" abp suite remove");
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/LIbs/InstallLibsService.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/LIbs/InstallLibsService.cs
index 5379c62aed..421cae3d3c 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/LIbs/InstallLibsService.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/LIbs/InstallLibsService.cs
@@ -16,14 +16,16 @@ namespace Volo.Abp.Cli.LIbs
{
public class InstallLibsService : IInstallLibsService, ITransientDependency
{
+ public ICmdHelper CmdHelper { get; }
public const string LibsDirectory = "./wwwroot/libs";
public ILogger Logger { get; set; }
private readonly IJsonSerializer _jsonSerializer;
- public InstallLibsService(IJsonSerializer jsonSerializer)
+ public InstallLibsService(IJsonSerializer jsonSerializer, ICmdHelper cmdHelper)
{
+ CmdHelper = cmdHelper;
_jsonSerializer = jsonSerializer;
Logger = NullLogger.Instance;
}
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/NuGetService.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/NuGetService.cs
index 7907baaa2d..ef85131ff8 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/NuGetService.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/NuGet/NuGetService.cs
@@ -1,3 +1,4 @@
+using System;
using Newtonsoft.Json;
using NuGet.Versioning;
using System.Collections.Generic;
@@ -5,7 +6,6 @@ using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
-using Volo.Abp.Cli.Auth;
using Volo.Abp.Cli.Http;
using Volo.Abp.Cli.Licensing;
using Volo.Abp.Cli.ProjectBuilding;
@@ -24,7 +24,6 @@ namespace Volo.Abp.Cli.NuGet
protected IRemoteServiceExceptionHandler RemoteServiceExceptionHandler { get; }
private readonly IApiKeyService _apiKeyService;
private readonly CliHttpClientFactory _cliHttpClientFactory;
- private List _proPackageList;
private DeveloperApiKeyResult _apiKeyResult;
public NuGetService(
@@ -42,10 +41,32 @@ namespace Volo.Abp.Cli.NuGet
Logger = NullLogger.Instance;
}
+ public async Task PackageExistAsync(string packageId, string version = null)
+ {
+ var versionList = await GetPackageVersionListAsync(packageId, false, true);
+
+ if (versionList == null)
+ {
+ return false;
+ }
+
+ if (version == null)
+ {
+ return versionList.Any();
+ }
+
+ return versionList.Contains(version);
+ }
+
public async Task GetLatestVersionOrNullAsync(string packageId, bool includeNightly = false, bool includeReleaseCandidates = false)
{
var versionList = await GetPackageVersionListAsync(packageId, includeNightly, includeReleaseCandidates);
+ if (versionList == null)
+ {
+ return null;
+ }
+
List versions;
if (!includeNightly && !includeReleaseCandidates)
@@ -77,76 +98,54 @@ namespace Volo.Abp.Cli.NuGet
public async Task> GetPackageVersionListAsync(string packageId, bool includeNightly = false,
bool includeReleaseCandidates = false)
{
- if (AuthService.IsLoggedIn())
- {
- _proPackageList ??= await GetProPackageListAsync();
- }
-
- string url;
if (includeNightly)
{
- url = $"https://www.myget.org/F/abp-nightly/api/v3/flatcontainer/{packageId.ToLowerInvariant()}/index.json";
- }
- else if (_proPackageList?.Contains(packageId) ?? false)
- {
- url = await GetNuGetUrlForCommercialPackage(packageId);
- }
- else
- {
- url = $"https://api.nuget.org/v3-flatcontainer/{packageId.ToLowerInvariant()}/index.json";
+ var includeNightlyUrl = $"https://www.myget.org/F/abp-nightly/api/v3/flatcontainer/{packageId.ToLowerInvariant()}/index.json";
+ return await GetPackageVersionListFromUrlAsync(includeNightlyUrl);
}
- var client = _cliHttpClientFactory.CreateClient(needsAuthentication: false);
+ var nugetUrl = $"https://api.nuget.org/v3-flatcontainer/{packageId.ToLowerInvariant()}/index.json";
+ var commercialUrl = await GetNuGetUrlForCommercialPackage(packageId);
- using (var responseMessage = await client.GetHttpResponseMessageWithRetryAsync(
- url,
- cancellationToken: CancellationTokenProvider.Token,
- logger: Logger
- ))
- {
- await RemoteServiceExceptionHandler.EnsureSuccessfulHttpResponseAsync(responseMessage);
- var responseContent = await responseMessage.Content.ReadAsStringAsync();
- return JsonSerializer.Deserialize(responseContent).Versions;
- }
+ return (await GetPackageVersionListFromUrlAsync(nugetUrl)) ?? (await GetPackageVersionListFromUrlAsync(commercialUrl));
}
- private async Task GetNuGetUrlForCommercialPackage(string packageId)
+ private async Task> GetPackageVersionListFromUrlAsync(string url)
{
- if (_apiKeyResult == null)
+ try
{
- _apiKeyResult = await _apiKeyService.GetApiKeyOrNullAsync();
- }
+ var client = _cliHttpClientFactory.CreateClient(needsAuthentication: false);
- return CliUrls.GetNuGetPackageInfoUrl(_apiKeyResult.ApiKey, packageId);
+ using (var responseMessage = await client.GetHttpResponseMessageWithRetryAsync(
+ url,
+ cancellationToken: CancellationTokenProvider.Token,
+ logger: Logger
+ ))
+ {
+ await RemoteServiceExceptionHandler.EnsureSuccessfulHttpResponseAsync(responseMessage);
+ var responseContent = await responseMessage.Content.ReadAsStringAsync();
+ return JsonSerializer.Deserialize(responseContent).Versions;
+ }
+ }
+ catch (Exception)
+ {
+ return null;
+ }
}
- private async Task> GetProPackageListAsync()
+ private async Task GetNuGetUrlForCommercialPackage(string packageId)
{
- var url = $"{CliUrls.WwwAbpIo}api/app/nugetPackage/proPackageNames";
- var client = _cliHttpClientFactory.CreateClient(needsAuthentication: true);
-
- using (var responseMessage = await client.GetHttpResponseMessageWithRetryAsync(
- url: url,
- cancellationToken: CancellationTokenProvider.Token,
- logger: Logger
- ))
+ if (_apiKeyResult == null)
{
- if (responseMessage.IsSuccessStatusCode)
- {
- return JsonSerializer.Deserialize>(await responseMessage.Content.ReadAsStringAsync());
- }
-
- var exceptionMessage = "Remote server returns '" + (int)responseMessage.StatusCode + "-" + responseMessage.ReasonPhrase + "'. ";
- var remoteServiceErrorMessage = await RemoteServiceExceptionHandler.GetAbpRemoteServiceErrorAsync(responseMessage);
+ _apiKeyResult = await _apiKeyService.GetApiKeyOrNullAsync();
- if (remoteServiceErrorMessage != null)
+ if (_apiKeyResult == null)
{
- exceptionMessage += remoteServiceErrorMessage;
+ return null;
}
-
- Logger.LogError(exceptionMessage);
- return null;
}
+
+ return CliUrls.GetNuGetPackageInfoUrl(_apiKeyResult.ApiKey, packageId);
}
public class NuGetVersionResultDto
@@ -155,4 +154,4 @@ namespace Volo.Abp.Cli.NuGet
public List Versions { get; set; }
}
}
-}
\ No newline at end of file
+}
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ProjectReferenceReplaceStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ProjectReferenceReplaceStep.cs
index dafdc28dc4..b377a8e053 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ProjectReferenceReplaceStep.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ProjectReferenceReplaceStep.cs
@@ -98,11 +98,12 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps
{
Check.NotNull(content, nameof(content));
- var doc = new XmlDocument() { PreserveWhitespace = true };
-
- doc.Load(StreamHelper.GenerateStreamFromString(content));
-
- return ProcessReferenceNodes(doc, content);
+ using (var stream = StreamHelper.GenerateStreamFromString(content))
+ {
+ var doc = new XmlDocument() { PreserveWhitespace = true };
+ doc.Load(stream);
+ return ProcessReferenceNodes(doc, content);
+ }
}
private string ProcessReferenceNodes(XmlDocument doc, string content)
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveProjectFromSolutionStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveProjectFromSolutionStep.cs
index b8c1f24b46..d2b2f7f95c 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveProjectFromSolutionStep.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveProjectFromSolutionStep.cs
@@ -1,6 +1,10 @@
using System;
using System.Collections.Generic;
+using System.IO;
using System.Linq;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using Volo.Abp.Cli.ProjectBuilding.Files;
namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps
{
@@ -35,6 +39,25 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps
var solutionFile = context.GetFile(_solutionFilePath);
solutionFile.NormalizeLineEndings();
solutionFile.SetLines(RemoveProject(solutionFile.GetLines().ToList()));
+
+ RemoveProjectFromAbpmdlFile(context);
+ }
+
+ private void RemoveProjectFromAbpmdlFile(ProjectBuildContext context)
+ {
+ var abpmdlFile = context.FindFile(_solutionFilePath.RemovePostFix(".sln") + ".abpmdl.json");
+
+ if (abpmdlFile == null)
+ {
+ return;
+ }
+
+ var jsonRoot = JObject.Parse(abpmdlFile.Content);
+ var packagesObj = (JObject) jsonRoot["packages"];
+
+ packagesObj?.Remove(_projectName);
+
+ abpmdlFile.SetContent(jsonRoot.ToString(Formatting.Indented));
}
private List RemoveProject(List solutionFileLines)
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ReplaceCommonPropsStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ReplaceCommonPropsStep.cs
index c615bcdfce..89147e8043 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ReplaceCommonPropsStep.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ReplaceCommonPropsStep.cs
@@ -40,11 +40,12 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps
{
Check.NotNull(content, nameof(content));
- var doc = new XmlDocument() { PreserveWhitespace = true };
-
- doc.Load(StreamHelper.GenerateStreamFromString(content));
-
- return ProcessReferenceNodes(doc, content);
+ using (var stream = StreamHelper.GenerateStreamFromString(content))
+ {
+ var doc = new XmlDocument() { PreserveWhitespace = true };
+ doc.Load(stream);
+ return ProcessReferenceNodes(doc, content);
+ }
}
private string ProcessReferenceNodes(XmlDocument doc, string content)
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ReplaceConfigureAwaitPropsStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ReplaceConfigureAwaitPropsStep.cs
index 1541284009..8801bf3c3c 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ReplaceConfigureAwaitPropsStep.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ReplaceConfigureAwaitPropsStep.cs
@@ -40,11 +40,12 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps
{
Check.NotNull(content, nameof(content));
- var doc = new XmlDocument() { PreserveWhitespace = true };
-
- doc.Load(StreamHelper.GenerateStreamFromString(content));
-
- return ProcessReferenceNodes(doc, content);
+ using (var stream = StreamHelper.GenerateStreamFromString(content))
+ {
+ var doc = new XmlDocument() { PreserveWhitespace = true };
+ doc.Load(stream);
+ return ProcessReferenceNodes(doc, content);
+ }
}
private string ProcessReferenceNodes(XmlDocument doc, string content)
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/EfCoreMigrationManager.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/EfCoreMigrationManager.cs
index 05996b90d7..8bc0c2d05e 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/EfCoreMigrationManager.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/EfCoreMigrationManager.cs
@@ -10,10 +10,12 @@ namespace Volo.Abp.Cli.ProjectModification
{
public class EfCoreMigrationManager : ITransientDependency
{
+ public ICmdHelper CmdHelper { get; }
public ILogger Logger { get; set; }
- public EfCoreMigrationManager()
+ public EfCoreMigrationManager(ICmdHelper cmdHelper)
{
+ CmdHelper = cmdHelper;
Logger = NullLogger.Instance;
}
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmGlobalPackagesChecker.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmGlobalPackagesChecker.cs
index 7c8ba63e29..7df511592b 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmGlobalPackagesChecker.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmGlobalPackagesChecker.cs
@@ -7,10 +7,12 @@ namespace Volo.Abp.Cli.ProjectModification
{
public class NpmGlobalPackagesChecker : ITransientDependency
{
+ public ICmdHelper CmdHelper { get; }
public ILogger Logger { get; set; }
- public NpmGlobalPackagesChecker()
+ public NpmGlobalPackagesChecker(ICmdHelper cmdHelper)
{
+ CmdHelper = cmdHelper;
Logger = NullLogger.Instance;
}
@@ -31,7 +33,7 @@ namespace Volo.Abp.Cli.ProjectModification
protected virtual string GetInstalledNpmPackages()
{
Logger.LogInformation("Checking installed npm global packages...");
- return CmdHelper.RunCmdAndGetOutput("npm list -g --depth 0 --silent");
+ return CmdHelper.RunCmdAndGetOutput("npm list -g --depth 0 --silent", out int exitCode);
}
protected virtual void InstallYarn()
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs
index bf23bc3786..4530b59142 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs
@@ -23,6 +23,7 @@ namespace Volo.Abp.Cli.ProjectModification
{
public ILogger Logger { get; set; }
protected ICancellationTokenProvider CancellationTokenProvider { get; }
+ public ICmdHelper CmdHelper { get; }
private readonly PackageJsonFileFinder _packageJsonFileFinder;
private readonly NpmGlobalPackagesChecker _npmGlobalPackagesChecker;
@@ -33,11 +34,13 @@ namespace Volo.Abp.Cli.ProjectModification
PackageJsonFileFinder packageJsonFileFinder,
NpmGlobalPackagesChecker npmGlobalPackagesChecker,
ICancellationTokenProvider cancellationTokenProvider,
- CliHttpClientFactory cliHttpClientFactory)
+ CliHttpClientFactory cliHttpClientFactory,
+ ICmdHelper cmdHelper)
{
_packageJsonFileFinder = packageJsonFileFinder;
_npmGlobalPackagesChecker = npmGlobalPackagesChecker;
CancellationTokenProvider = cancellationTokenProvider;
+ CmdHelper = cmdHelper;
_cliHttpClientFactory = cliHttpClientFactory;
Logger = NullLogger.Instance;
}
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NugetPackageToLocalReferenceConverter.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NugetPackageToLocalReferenceConverter.cs
index efecee8d79..d505453d59 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NugetPackageToLocalReferenceConverter.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NugetPackageToLocalReferenceConverter.cs
@@ -31,13 +31,13 @@ namespace Volo.Abp.Cli.ProjectModification
foreach (var projectFile in projectFiles)
{
var content = File.ReadAllText(projectFile);
- var doc = new XmlDocument() { PreserveWhitespace = true };
-
- doc.Load(StreamHelper.GenerateStreamFromString(content));
-
- var convertedProject = ProcessReferenceNodes(folder, doc, nugetPackageList, localPathPrefix, sourceFile, modulePrefix);
-
- File.WriteAllText(projectFile, convertedProject);
+ using (var stream = StreamHelper.GenerateStreamFromString(content))
+ {
+ var doc = new XmlDocument() { PreserveWhitespace = true };
+ doc.Load(stream);
+ var convertedProject = ProcessReferenceNodes(folder, doc, nugetPackageList, localPathPrefix, sourceFile, modulePrefix);
+ File.WriteAllText(projectFile, convertedProject);
+ }
}
}
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNpmPackageAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNpmPackageAdder.cs
index 3c283319ac..3baab9ed98 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNpmPackageAdder.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNpmPackageAdder.cs
@@ -26,6 +26,7 @@ namespace Volo.Abp.Cli.ProjectModification
public SourceCodeDownloadService SourceCodeDownloadService { get; }
public AngularSourceCodeAdder AngularSourceCodeAdder { get; }
public IRemoteServiceExceptionHandler RemoteServiceExceptionHandler { get; }
+ public ICmdHelper CmdHelper { get; }
private readonly CliHttpClientFactory _cliHttpClientFactory;
public ILogger Logger { get; set; }
@@ -33,12 +34,14 @@ namespace Volo.Abp.Cli.ProjectModification
IJsonSerializer jsonSerializer,
SourceCodeDownloadService sourceCodeDownloadService,
AngularSourceCodeAdder angularSourceCodeAdder,
- IRemoteServiceExceptionHandler remoteServiceExceptionHandler)
+ IRemoteServiceExceptionHandler remoteServiceExceptionHandler,
+ ICmdHelper cmdHelper)
{
JsonSerializer = jsonSerializer;
SourceCodeDownloadService = sourceCodeDownloadService;
AngularSourceCodeAdder = angularSourceCodeAdder;
RemoteServiceExceptionHandler = remoteServiceExceptionHandler;
+ CmdHelper = cmdHelper;
_cliHttpClientFactory = cliHttpClientFactory;
Logger = NullLogger.Instance;
}
@@ -202,4 +205,4 @@ namespace Volo.Abp.Cli.ProjectModification
}
}
}
-}
\ No newline at end of file
+}
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs
index 6d88ecb3ec..7f5ce3ef8a 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNugetPackageAdder.cs
@@ -25,6 +25,7 @@ namespace Volo.Abp.Cli.ProjectModification
public BundleCommand BundleCommand { get; }
public SourceCodeDownloadService SourceCodeDownloadService { get; }
public SolutionFileModifier SolutionFileModifier { get; }
+ public ICmdHelper CmdHelper { get; }
protected IJsonSerializer JsonSerializer { get; }
protected ProjectNpmPackageAdder NpmPackageAdder { get; }
@@ -43,7 +44,8 @@ namespace Volo.Abp.Cli.ProjectModification
BundleCommand bundleCommand,
CliHttpClientFactory cliHttpClientFactory,
SourceCodeDownloadService sourceCodeDownloadService,
- SolutionFileModifier solutionFileModifier)
+ SolutionFileModifier solutionFileModifier,
+ ICmdHelper cmdHelper)
{
JsonSerializer = jsonSerializer;
NpmPackageAdder = npmPackageAdder;
@@ -53,6 +55,7 @@ namespace Volo.Abp.Cli.ProjectModification
BundleCommand = bundleCommand;
SourceCodeDownloadService = sourceCodeDownloadService;
SolutionFileModifier = solutionFileModifier;
+ CmdHelper = cmdHelper;
_cliHttpClientFactory = cliHttpClientFactory;
Logger = NullLogger.Instance;
}
@@ -140,37 +143,38 @@ namespace Volo.Abp.Cli.ProjectModification
return projectFile;
}
- protected virtual async Task ConvertPackageReferenceToProjectReference(string projectFile,string solutionFile, NugetPackageInfo package)
+ protected virtual async Task ConvertPackageReferenceToProjectReference(string projectFile, string solutionFile, NugetPackageInfo package)
{
var content = File.ReadAllText(projectFile);
- var doc = new XmlDocument() {PreserveWhitespace = true};
+ var doc = new XmlDocument() { PreserveWhitespace = true };
- doc.Load(StreamHelper.GenerateStreamFromString(content));
-
- var nodes = doc.SelectNodes(
- $"/Project/ItemGroup/PackageReference[starts-with(@Include, '{package.Name}')]");
-
- if (nodes == null || nodes.Count < 1)
+ using (var stream = StreamHelper.GenerateStreamFromString(content))
{
- return;
- }
+ doc.Load(stream);
+ var nodes = doc.SelectNodes($"/Project/ItemGroup/PackageReference[starts-with(@Include, '{package.Name}')]");
+ if (nodes == null || nodes.Count < 1)
+ {
+ return;
+ }
- var downloadedProjectPath = FindRelativeFolderToDownloadPackage(projectFile, solutionFile, package);
- var oldNodeIncludeValue = nodes[0]?.Attributes?["Include"]?.Value;
+ var downloadedProjectPath = FindRelativeFolderToDownloadPackage(projectFile, solutionFile, package);
+ var oldNodeIncludeValue = nodes[0]?.Attributes?["Include"]?.Value;
- if (package.Name == oldNodeIncludeValue)
- {
- var referenceProjectPath = $"{downloadedProjectPath}\\{package.Name}.csproj";
+ if (package.Name == oldNodeIncludeValue)
+ {
+ var referenceProjectPath = $"{downloadedProjectPath}\\{package.Name}.csproj";
- var newNode = doc.CreateElement("ProjectReference");
- var includeAttr = doc.CreateAttribute("Include");
- includeAttr.Value = referenceProjectPath;
- newNode.Attributes.Append(includeAttr);
+ var newNode = doc.CreateElement("ProjectReference");
+ var includeAttr = doc.CreateAttribute("Include");
+ includeAttr.Value = referenceProjectPath;
+ newNode.Attributes.Append(includeAttr);
- nodes[0]?.ParentNode?.ReplaceChild(newNode, nodes[0]);
- }
+ nodes[0]?.ParentNode?.ReplaceChild(newNode, nodes[0]);
+ }
- File.WriteAllText(projectFile, doc.OuterXml);
+ File.WriteAllText(projectFile, doc.OuterXml);
+ await Task.CompletedTask;
+ }
}
protected virtual async Task AddSourceCode(string projectFile, string solutionFile, NugetPackageInfo package, string version = null)
@@ -192,7 +196,7 @@ namespace Volo.Abp.Cli.ProjectModification
protected virtual string FindRelativeFolderToDownloadPackage(string projectFile, string solutionFile, NugetPackageInfo package)
{
- var folder = Path.Combine(Path.GetDirectoryName(solutionFile), "packages", package.Name);
+ var folder = Path.Combine(Path.GetDirectoryName(solutionFile), "packages", package.Name);
return new Uri(projectFile).MakeRelativeUri(new Uri(folder)).ToString().Replace("/", "\\");
}
@@ -307,56 +311,52 @@ namespace Volo.Abp.Cli.ProjectModification
protected virtual Task AddToCsprojManuallyAsync(string projectFile, NugetPackageInfo package, string version = null)
{
var projectFileContent = File.ReadAllText(projectFile);
- var doc = new XmlDocument() {PreserveWhitespace = true};
- doc.Load(StreamHelper.GenerateStreamFromString(projectFileContent));
-
- var itemGroupNodes = doc.SelectNodes("/Project/ItemGroup");
- XmlNode itemGroupNode = null;
-
- if (itemGroupNodes == null || itemGroupNodes.Count < 1)
+ var doc = new XmlDocument() { PreserveWhitespace = true };
+ using (var stream = StreamHelper.GenerateStreamFromString(projectFileContent))
{
- var projectNodes = doc.SelectNodes("/Project");
- var projectNode = projectNodes[0];
+ doc.Load(stream);
- itemGroupNode = doc.CreateElement("ItemGroup");
- projectNode.AppendChild(itemGroupNode);
- }
- else
- {
- itemGroupNode = itemGroupNodes[0];
- }
+ var itemGroupNodes = doc.SelectNodes("/Project/ItemGroup");
+ XmlNode itemGroupNode = null;
- var packageReferenceNode = doc.CreateElement("PackageReference");
+ if (itemGroupNodes == null || itemGroupNodes.Count < 1)
+ {
+ var projectNodes = doc.SelectNodes("/Project");
+ var projectNode = projectNodes[0];
- var includeAttr = doc.CreateAttribute("Include");
- includeAttr.Value = package.Name;
- packageReferenceNode.Attributes.Append(includeAttr);
+ itemGroupNode = doc.CreateElement("ItemGroup");
+ projectNode.AppendChild(itemGroupNode);
+ }
+ else
+ {
+ itemGroupNode = itemGroupNodes[0];
+ }
- if (version != null)
- {
- var versionAttr = doc.CreateAttribute("Version");
- versionAttr.Value = version;
- packageReferenceNode.Attributes.Append(versionAttr);
- }
+ var packageReferenceNode = doc.CreateElement("PackageReference");
- itemGroupNode.AppendChild(packageReferenceNode);
+ var includeAttr = doc.CreateAttribute("Include");
+ includeAttr.Value = package.Name;
+ packageReferenceNode.Attributes.Append(includeAttr);
- File.WriteAllText(projectFile, doc.OuterXml);
+ if (version != null)
+ {
+ var versionAttr = doc.CreateAttribute("Version");
+ versionAttr.Value = version;
+ packageReferenceNode.Attributes.Append(versionAttr);
+ }
- return Task.CompletedTask;
+ itemGroupNode.AppendChild(packageReferenceNode);
+ File.WriteAllText(projectFile, doc.OuterXml);
+ return Task.CompletedTask;
+ }
}
protected virtual string GetAbpVersionOrNull(string projectFile)
{
var projectFileContent = File.ReadAllText(projectFile);
-
- var doc = new XmlDocument() {PreserveWhitespace = true};
-
- doc.Load(StreamHelper.GenerateStreamFromString(projectFileContent));
-
- var nodes = doc.SelectNodes("/Project/ItemGroup/PackageReference[starts-with(@Include, 'Volo.')]");
-
- return nodes?[0]?.Attributes?["Version"]?.Value;
+ return SolutionPackageVersionFinder.TryParseVersionFromCsprojFile(projectFileContent, out var version)
+ ? version
+ : null;
}
protected virtual async Task FindNugetPackageInfoAsync(string packageName)
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs
index 70900bfec7..cf1e9a3687 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs
@@ -30,6 +30,7 @@ namespace Volo.Abp.Cli.ProjectModification
public AngularSourceCodeAdder AngularSourceCodeAdder { get; }
public NewCommand NewCommand { get; }
public BundleCommand BundleCommand { get; }
+ public ICmdHelper CmdHelper { get; }
protected IJsonSerializer JsonSerializer { get; }
protected ProjectNugetPackageAdder ProjectNugetPackageAdder { get; }
@@ -58,7 +59,8 @@ namespace Volo.Abp.Cli.ProjectModification
AngularSourceCodeAdder angularSourceCodeAdder,
NewCommand newCommand,
BundleCommand bundleCommand,
- CliHttpClientFactory cliHttpClientFactory)
+ CliHttpClientFactory cliHttpClientFactory,
+ ICmdHelper cmdHelper)
{
JsonSerializer = jsonSerializer;
ProjectNugetPackageAdder = projectNugetPackageAdder;
@@ -74,6 +76,7 @@ namespace Volo.Abp.Cli.ProjectModification
AngularSourceCodeAdder = angularSourceCodeAdder;
NewCommand = newCommand;
BundleCommand = bundleCommand;
+ CmdHelper = cmdHelper;
_cliHttpClientFactory = cliHttpClientFactory;
Logger = NullLogger.Instance;
}
@@ -620,7 +623,7 @@ namespace Volo.Abp.Cli.ProjectModification
if (!string.IsNullOrEmpty(dbMigratorProject))
{
- CmdHelper.RunCmd("cd \"" + Path.GetDirectoryName(dbMigratorProject) + "\" && dotnet run");
+ CmdHelper.RunCmd("cd \"" + Path.GetDirectoryName(dbMigratorProject) + "\" && dotnet run", out int exitCode);
}
}
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionAbpVersionFinder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionPackageVersionFinder.cs
similarity index 82%
rename from framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionAbpVersionFinder.cs
rename to framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionPackageVersionFinder.cs
index 93dbeacc22..e3aa93bdf3 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionAbpVersionFinder.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionPackageVersionFinder.cs
@@ -7,15 +7,15 @@ using Volo.Abp.DependencyInjection;
namespace Volo.Abp.Cli.ProjectModification
{
- public class SolutionAbpVersionFinder : ITransientDependency
+ public class SolutionPackageVersionFinder : ITransientDependency
{
- public string Find(string solutionFile)
+ public string Find(string solutionFile, string packagePrefix = "Volo.Abp")
{
var projectFilesUnderSrc = GetProjectFilesOfSolution(solutionFile);
foreach (var projectFile in projectFilesUnderSrc)
{
var content = File.ReadAllText(projectFile);
- if (TryParseVersionFromCsprojViaXmlDocument(content, out var s))
+ if (TryParseVersionFromCsprojViaXmlDocument(content, out var s, packagePrefix))
{
return s;
}
@@ -24,13 +24,13 @@ namespace Volo.Abp.Cli.ProjectModification
return null;
}
- private static bool TryParseVersionFromCsprojViaXmlDocument(string content, out string version)
+ private static bool TryParseVersionFromCsprojViaXmlDocument(string content, out string version, string packagePrefix)
{
var doc = new XmlDocument() { PreserveWhitespace = true };
using (var stream = StreamHelper.GenerateStreamFromString(content))
{
doc.Load(stream);
- var nodes = doc.SelectNodes("/Project/ItemGroup/PackageReference[starts-with(@Include, 'Volo.Abp')]");
+ var nodes = doc.SelectNodes($"/Project/ItemGroup/PackageReference[starts-with(@Include, '{packagePrefix}')]");
var value = nodes?[0]?.Attributes?["Version"]?.Value;
if (value == null)
{
@@ -43,12 +43,12 @@ namespace Volo.Abp.Cli.ProjectModification
}
}
- public static bool TryParseVersionFromCsprojFile(string csprojContent, out string version)
+ public static bool TryParseVersionFromCsprojFile(string csprojContent, out string version, string packagePrefix = "Volo.Abp")
{
try
{
var matches = Regex.Matches(csprojContent,
- @"PackageReference\s*Include\s*=\s*\""Volo.Abp(.*?)\""\s*Version\s*=\s*\""(.*?)\""",
+ @"PackageReference\s*Include\s*=\s*\""" + packagePrefix + @"(.*?)\""\s*Version\s*=\s*\""(.*?)\""",
RegexOptions.IgnoreCase |
RegexOptions.IgnorePatternWhitespace |
RegexOptions.Singleline | RegexOptions.Multiline);
@@ -72,11 +72,11 @@ namespace Volo.Abp.Cli.ProjectModification
}
- public static bool TryParseSemanticVersionFromCsprojFile(string csprojContent, out SemanticVersion version)
+ public static bool TryParseSemanticVersionFromCsprojFile(string csprojContent, out SemanticVersion version, string packagePrefix = "Volo.Abp")
{
try
{
- if (TryParseVersionFromCsprojFile(csprojContent, out var versionText))
+ if (TryParseVersionFromCsprojFile(csprojContent, out var versionText, packagePrefix))
{
return SemanticVersion.TryParse(versionText, out version);
}
@@ -90,13 +90,13 @@ namespace Volo.Abp.Cli.ProjectModification
return false;
}
- public static bool TryFind(string solutionFile, out string version)
+ public static bool TryFind(string solutionFile, out string version, string packagePrefix = "Volo.Abp")
{
var projectFiles = GetProjectFilesOfSolution(solutionFile);
foreach (var projectFile in projectFiles)
{
var csprojContent = File.ReadAllText(projectFile);
- if (TryParseVersionFromCsprojFile(csprojContent, out var parsedVersion))
+ if (TryParseVersionFromCsprojFile(csprojContent, out var parsedVersion, packagePrefix))
{
version = parsedVersion;
return true;
@@ -107,13 +107,13 @@ namespace Volo.Abp.Cli.ProjectModification
return false;
}
- public static bool TryFindSemanticVersion(string solutionFile, out SemanticVersion version)
+ public static bool TryFindSemanticVersion(string solutionFile, out SemanticVersion version, string packagePrefix = "Volo.Abp")
{
var projectFiles = GetProjectFilesOfSolution(solutionFile);
foreach (var projectFile in projectFiles)
{
var csprojContent = File.ReadAllText(projectFile);
- if (TryParseSemanticVersionFromCsprojFile(csprojContent, out var parsedVersion))
+ if (TryParseSemanticVersionFromCsprojFile(csprojContent, out var parsedVersion, packagePrefix))
{
version = parsedVersion;
return true;
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ServiceProxying/Angular/AngularServiceProxyGenerator.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ServiceProxying/Angular/AngularServiceProxyGenerator.cs
index 2e20ec634a..bc5579ca1d 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ServiceProxying/Angular/AngularServiceProxyGenerator.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ServiceProxying/Angular/AngularServiceProxyGenerator.cs
@@ -17,13 +17,16 @@ namespace Volo.Abp.Cli.ServiceProxying.Angular
public const string Name = "NG";
private readonly CliService _cliService;
+ private readonly ICmdHelper _cmdhelper;
public AngularServiceProxyGenerator(
CliHttpClientFactory cliHttpClientFactory,
IJsonSerializer jsonSerializer,
+ ICmdHelper cmdhelper,
CliService cliService) :
base(cliHttpClientFactory, jsonSerializer)
{
+ _cmdhelper = cmdhelper;
_cliService = cliService;
}
@@ -63,7 +66,7 @@ namespace Volo.Abp.Cli.ServiceProxying.Angular
commandBuilder.Append($" --target {target}");
}
- CmdHelper.RunCmd(commandBuilder.ToString());
+ _cmdhelper.RunCmd(commandBuilder.ToString());
}
private async Task CheckNgSchematicsAsync()
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/CmdHelper.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/CmdHelper.cs
index 07b470225a..72b9ba1a90 100644
--- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/CmdHelper.cs
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/CmdHelper.cs
@@ -1,14 +1,15 @@
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
+using Volo.Abp.DependencyInjection;
namespace Volo.Abp.Cli.Utils
{
- public static class CmdHelper
+ public class CmdHelper : ICmdHelper, ITransientDependency
{
- public static int SuccessfulExitCode = 0;
+ private const int SuccessfulExitCode = 0;
- public static void OpenWebPage(string url)
+ public void OpenWebPage(string url)
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
@@ -25,45 +26,57 @@ namespace Volo.Abp.Cli.Utils
}
}
- public static void Run(string file, string arguments)
+
+ public void Run(string file, string arguments)
{
var procStartInfo = new ProcessStartInfo(file, arguments);
Process.Start(procStartInfo)?.WaitForExit();
}
- public static int RunCmd(string command)
+ public void RunCmd(string command, string workingDirectory = null)
+ {
+ RunCmd(command, out _, workingDirectory);
+ }
+
+ public void RunCmd(string command, out int exitCode, string workingDirectory = null)
{
var procStartInfo = new ProcessStartInfo(
GetFileName(),
GetArguments(command)
);
+ if (!string.IsNullOrEmpty(workingDirectory))
+ {
+ procStartInfo.WorkingDirectory = workingDirectory;
+ }
+
using (var process = Process.Start(procStartInfo))
{
process?.WaitForExit();
- return process?.ExitCode ?? 0;
+
+ exitCode = process.ExitCode;
}
}
- public static string RunCmdAndGetOutput(string command)
+ public string RunCmdAndGetOutput(string command, string workingDirectory = null)
{
- return RunCmdAndGetOutput(command, out int _);
+ return RunCmdAndGetOutput(command, out int _, workingDirectory);
}
- public static string RunCmdAndGetOutput(string command, out bool isExitCodeSuccessful)
+ public string RunCmdAndGetOutput(string command, out bool isExitCodeSuccessful, string workingDirectory = null)
{
- var output = RunCmdAndGetOutput(command, out int exitCode);
+ var output = RunCmdAndGetOutput(command, out int exitCode, workingDirectory);
isExitCodeSuccessful = exitCode == SuccessfulExitCode;
return output;
}
- public static string RunCmdAndGetOutput(string command, out int exitCode)
+ public string RunCmdAndGetOutput(string command, out int exitCode, string workingDirectory = null)
{
string output;
using (var process = new Process())
{
- process.StartInfo = new ProcessStartInfo(CmdHelper.GetFileName())
+ process.StartInfo = new ProcessStartInfo(GetFileName())
{
Arguments = GetArguments(command),
UseShellExecute = false,
@@ -72,6 +85,11 @@ namespace Volo.Abp.Cli.Utils
RedirectStandardError = true
};
+ if (!string.IsNullOrEmpty(workingDirectory))
+ {
+ process.StartInfo.WorkingDirectory = workingDirectory;
+ }
+
process.Start();
using (var standardOutput = process.StandardOutput)
@@ -91,7 +109,7 @@ namespace Volo.Abp.Cli.Utils
return output.Trim();
}
- public static string GetArguments(string command)
+ public string GetArguments(string command)
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX) || RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
@@ -102,7 +120,7 @@ namespace Volo.Abp.Cli.Utils
return "/C \"" + command + "\"";
}
- public static string GetFileName()
+ public string GetFileName()
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ICmdHelper.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ICmdHelper.cs
new file mode 100644
index 0000000000..15234c2c82
--- /dev/null
+++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ICmdHelper.cs
@@ -0,0 +1,24 @@
+namespace Volo.Abp.Cli.Utils
+{
+ public interface ICmdHelper
+ {
+ void OpenWebPage(string url);
+
+ void Run(string file, string arguments);
+
+ string GetArguments(string command);
+
+ string GetFileName();
+
+ void RunCmd(string command, string workingDirectory = null);
+
+ void RunCmd(string command, out int exitCode, string workingDirectory = null);
+
+ string RunCmdAndGetOutput(string command, string workingDirectory = null);
+
+
+ string RunCmdAndGetOutput(string command, out bool isExitCodeSuccessful, string workingDirectory = null);
+
+ string RunCmdAndGetOutput(string command, out int exitCode, string workingDirectory = null);
+ }
+}
diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/ConventionalRegistrarBase.cs b/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/ConventionalRegistrarBase.cs
index 8a47e7fa17..e79a914209 100644
--- a/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/ConventionalRegistrarBase.cs
+++ b/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/ConventionalRegistrarBase.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
+using JetBrains.Annotations;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Reflection;
@@ -50,5 +51,102 @@ namespace Volo.Abp.DependencyInjection
}
}
}
+
+ protected virtual DependencyAttribute GetDependencyAttributeOrNull(Type type)
+ {
+ return type.GetCustomAttribute(true);
+ }
+
+ protected virtual ServiceLifetime? GetLifeTimeOrNull(Type type, [CanBeNull] DependencyAttribute dependencyAttribute)
+ {
+ return dependencyAttribute?.Lifetime ?? GetServiceLifetimeFromClassHierarchy(type) ?? GetDefaultLifeTimeOrNull(type);
+ }
+
+ protected virtual ServiceLifetime? GetServiceLifetimeFromClassHierarchy(Type type)
+ {
+ if (typeof(ITransientDependency).GetTypeInfo().IsAssignableFrom(type))
+ {
+ return ServiceLifetime.Transient;
+ }
+
+ if (typeof(ISingletonDependency).GetTypeInfo().IsAssignableFrom(type))
+ {
+ return ServiceLifetime.Singleton;
+ }
+
+ if (typeof(IScopedDependency).GetTypeInfo().IsAssignableFrom(type))
+ {
+ return ServiceLifetime.Scoped;
+ }
+
+ return null;
+ }
+
+ protected virtual ServiceLifetime? GetDefaultLifeTimeOrNull(Type type)
+ {
+ return null;
+ }
+
+ protected virtual List GetExposedServiceTypes(Type type)
+ {
+ return ExposedServiceExplorer.GetExposedServices(type);
+ }
+
+ protected virtual ServiceDescriptor CreateServiceDescriptor(
+ Type implementationType,
+ Type exposingServiceType,
+ List allExposingServiceTypes,
+ ServiceLifetime lifeTime)
+ {
+ if (lifeTime.IsIn(ServiceLifetime.Singleton, ServiceLifetime.Scoped))
+ {
+ var redirectedType = GetRedirectedTypeOrNull(
+ implementationType,
+ exposingServiceType,
+ allExposingServiceTypes
+ );
+
+ if (redirectedType != null)
+ {
+ return ServiceDescriptor.Describe(
+ exposingServiceType,
+ provider => provider.GetService(redirectedType),
+ lifeTime
+ );
+ }
+ }
+
+ return ServiceDescriptor.Describe(
+ exposingServiceType,
+ implementationType,
+ lifeTime
+ );
+ }
+
+ protected virtual Type GetRedirectedTypeOrNull(
+ Type implementationType,
+ Type exposingServiceType,
+ List allExposingServiceTypes)
+ {
+ if (allExposingServiceTypes.Count < 2)
+ {
+ return null;
+ }
+
+ if (exposingServiceType == implementationType)
+ {
+ return null;
+ }
+
+ if (allExposingServiceTypes.Contains(implementationType))
+ {
+ return implementationType;
+ }
+
+ return allExposingServiceTypes.FirstOrDefault(
+ t => t != exposingServiceType && exposingServiceType.IsAssignableFrom(t)
+ );
+ }
+
}
-}
\ No newline at end of file
+}
diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/DefaultConventionalRegistrar.cs b/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/DefaultConventionalRegistrar.cs
index 476aaf3846..2bab4ac2b1 100644
--- a/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/DefaultConventionalRegistrar.cs
+++ b/framework/src/Volo.Abp.Core/Volo/Abp/DependencyInjection/DefaultConventionalRegistrar.cs
@@ -1,8 +1,4 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection;
-using JetBrains.Annotations;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
@@ -53,96 +49,5 @@ namespace Volo.Abp.DependencyInjection
}
}
}
-
- protected virtual List GetExposedServiceTypes(Type type)
- {
- return ExposedServiceExplorer.GetExposedServices(type);
- }
-
- protected virtual ServiceDescriptor CreateServiceDescriptor(
- Type implementationType,
- Type exposingServiceType,
- List allExposingServiceTypes,
- ServiceLifetime lifeTime)
- {
- if (lifeTime.IsIn(ServiceLifetime.Singleton, ServiceLifetime.Scoped))
- {
- var redirectedType = GetRedirectedTypeOrNull(
- implementationType,
- exposingServiceType,
- allExposingServiceTypes
- );
-
- if (redirectedType != null)
- {
- return ServiceDescriptor.Describe(
- exposingServiceType,
- provider => provider.GetService(redirectedType),
- lifeTime
- );
- }
- }
-
- return ServiceDescriptor.Describe(
- exposingServiceType,
- implementationType,
- lifeTime
- );
- }
-
- protected virtual Type GetRedirectedTypeOrNull(
- Type implementationType,
- Type exposingServiceType,
- List allExposingServiceTypes)
- {
- if (allExposingServiceTypes.Count < 2)
- {
- return null;
- }
-
- if (exposingServiceType == implementationType)
- {
- return null;
- }
-
- if (allExposingServiceTypes.Contains(implementationType))
- {
- return implementationType;
- }
-
- return allExposingServiceTypes.FirstOrDefault(
- t => t != exposingServiceType && exposingServiceType.IsAssignableFrom(t)
- );
- }
-
- protected virtual DependencyAttribute GetDependencyAttributeOrNull(Type type)
- {
- return type.GetCustomAttribute(true);
- }
-
- protected virtual ServiceLifetime? GetLifeTimeOrNull(Type type, [CanBeNull] DependencyAttribute dependencyAttribute)
- {
- return dependencyAttribute?.Lifetime ?? GetServiceLifetimeFromClassHierarchy(type);
- }
-
- protected virtual ServiceLifetime? GetServiceLifetimeFromClassHierarchy(Type type)
- {
- if (typeof(ITransientDependency).GetTypeInfo().IsAssignableFrom(type))
- {
- return ServiceLifetime.Transient;
- }
-
- if (typeof(ISingletonDependency).GetTypeInfo().IsAssignableFrom(type))
- {
- return ServiceLifetime.Singleton;
- }
-
- if (typeof(IScopedDependency).GetTypeInfo().IsAssignableFrom(type))
- {
- return ServiceLifetime.Scoped;
- }
-
- return null;
- }
}
}
diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo.Abp.Ddd.Domain.csproj b/framework/src/Volo.Abp.Ddd.Domain/Volo.Abp.Ddd.Domain.csproj
index 68c90489ff..87879334af 100644
--- a/framework/src/Volo.Abp.Ddd.Domain/Volo.Abp.Ddd.Domain.csproj
+++ b/framework/src/Volo.Abp.Ddd.Domain/Volo.Abp.Ddd.Domain.csproj
@@ -17,7 +17,7 @@
-
+
diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo.Abp.Ddd.Domain.csproj.DotSettings b/framework/src/Volo.Abp.Ddd.Domain/Volo.Abp.Ddd.Domain.csproj.DotSettings
deleted file mode 100644
index 58ad6c8854..0000000000
--- a/framework/src/Volo.Abp.Ddd.Domain/Volo.Abp.Ddd.Domain.csproj.DotSettings
+++ /dev/null
@@ -1,2 +0,0 @@
-
- CSharp71
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs
index 38e2d9fc84..523a6ee4f2 100644
--- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs
+++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/AbpDddDomainModule.cs
@@ -3,7 +3,6 @@ using Volo.Abp.Auditing;
using Volo.Abp.Data;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.EventBus;
-using Volo.Abp.EventBus.Boxes;
using Volo.Abp.ExceptionHandling;
using Volo.Abp.Guids;
using Volo.Abp.Modularity;
@@ -19,7 +18,7 @@ namespace Volo.Abp.Domain
[DependsOn(
typeof(AbpAuditingModule),
typeof(AbpDataModule),
- typeof(AbpEventBusBoxesModule),
+ typeof(AbpEventBusModule),
typeof(AbpGuidsModule),
typeof(AbpMultiTenancyModule),
typeof(AbpThreadingModule),
diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/AbpRepositoryConventionalRegistrar.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/AbpRepositoryConventionalRegistrar.cs
index f7b9527aa0..0b489bfcf3 100644
--- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/AbpRepositoryConventionalRegistrar.cs
+++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/AbpRepositoryConventionalRegistrar.cs
@@ -15,12 +15,7 @@ namespace Volo.Abp.Domain.Repositories
protected override bool IsConventionalRegistrationDisabled(Type type)
{
- if (!typeof(IRepository).IsAssignableFrom(type))
- {
- return true;
- }
-
- return base.IsConventionalRegistrationDisabled(type);
+ return !typeof(IRepository).IsAssignableFrom(type) || base.IsConventionalRegistrationDisabled(type);
}
protected override List GetExposedServiceTypes(Type type)
@@ -35,10 +30,9 @@ namespace Volo.Abp.Domain.Repositories
.ToList();
}
- protected override ServiceLifetime? GetServiceLifetimeFromClassHierarchy(Type type)
+ protected override ServiceLifetime? GetDefaultLifeTimeOrNull(Type type)
{
- return base.GetServiceLifetimeFromClassHierarchy(type) ??
- ServiceLifetime.Transient;
+ return ServiceLifetime.Transient;
}
}
}
diff --git a/framework/src/Volo.Abp.DistributedLocking.Abstractions/FodyWeavers.xml b/framework/src/Volo.Abp.DistributedLocking.Abstractions/FodyWeavers.xml
new file mode 100644
index 0000000000..be0de3a908
--- /dev/null
+++ b/framework/src/Volo.Abp.DistributedLocking.Abstractions/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.DistributedLocking.Abstractions/FodyWeavers.xsd b/framework/src/Volo.Abp.DistributedLocking.Abstractions/FodyWeavers.xsd
new file mode 100644
index 0000000000..3f3946e282
--- /dev/null
+++ b/framework/src/Volo.Abp.DistributedLocking.Abstractions/FodyWeavers.xsd
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.
+
+
+
+
+ A comma-separated list of error codes that can be safely ignored in assembly verification.
+
+
+
+
+ 'false' to turn off automatic generation of the XML Schema file.
+
+
+
+
+
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.DistributedLocking.Abstractions/Volo.Abp.DistributedLocking.Abstractions.csproj b/framework/src/Volo.Abp.DistributedLocking.Abstractions/Volo.Abp.DistributedLocking.Abstractions.csproj
new file mode 100644
index 0000000000..ab828ee9d3
--- /dev/null
+++ b/framework/src/Volo.Abp.DistributedLocking.Abstractions/Volo.Abp.DistributedLocking.Abstractions.csproj
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+ netstandard2.0
+ Volo.Abp.DistributedLocking.Abstractions
+ Volo.Abp.DistributedLocking.Abstractions
+ $(AssetTargetFallback);portable-net45+win8+wp8+wpa81;
+ false
+ false
+ false
+
+
+
+
+
+
+
+
diff --git a/framework/src/Volo.Abp.DistributedLocking.Abstractions/Volo/Abp/DistributedLocking/AbpDistributedLockingAbstractionsModule.cs b/framework/src/Volo.Abp.DistributedLocking.Abstractions/Volo/Abp/DistributedLocking/AbpDistributedLockingAbstractionsModule.cs
new file mode 100644
index 0000000000..9c3832e49b
--- /dev/null
+++ b/framework/src/Volo.Abp.DistributedLocking.Abstractions/Volo/Abp/DistributedLocking/AbpDistributedLockingAbstractionsModule.cs
@@ -0,0 +1,9 @@
+using Volo.Abp.Modularity;
+
+namespace Volo.Abp.DistributedLocking
+{
+ public class AbpDistributedLockingAbstractionsModule : AbpModule
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.DistributedLocking.Abstractions/Volo/Abp/DistributedLocking/IAbpDistributedLock.cs b/framework/src/Volo.Abp.DistributedLocking.Abstractions/Volo/Abp/DistributedLocking/IAbpDistributedLock.cs
new file mode 100644
index 0000000000..6619ea337c
--- /dev/null
+++ b/framework/src/Volo.Abp.DistributedLocking.Abstractions/Volo/Abp/DistributedLocking/IAbpDistributedLock.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+using JetBrains.Annotations;
+
+namespace Volo.Abp.DistributedLocking
+{
+ public interface IAbpDistributedLock
+ {
+ ///
+ /// Tries to acquire a named lock.
+ /// Returns a disposable object to release the lock.
+ /// It is suggested to use this method within a using block.
+ /// Returns null if the lock could not be handled.
+ ///
+ /// The name of the lock
+ /// Timeout value
+ /// Cancellation token
+ [ItemCanBeNull]
+ Task TryAcquireAsync(
+ [NotNull] string name,
+ TimeSpan timeout = default,
+ CancellationToken cancellationToken = default
+ );
+ }
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.DistributedLocking.Abstractions/Volo/Abp/DistributedLocking/IAbpDistributedLockHandle.cs b/framework/src/Volo.Abp.DistributedLocking.Abstractions/Volo/Abp/DistributedLocking/IAbpDistributedLockHandle.cs
new file mode 100644
index 0000000000..baac5296c7
--- /dev/null
+++ b/framework/src/Volo.Abp.DistributedLocking.Abstractions/Volo/Abp/DistributedLocking/IAbpDistributedLockHandle.cs
@@ -0,0 +1,9 @@
+using System;
+
+namespace Volo.Abp.DistributedLocking
+{
+ public interface IAbpDistributedLockHandle : IAsyncDisposable
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.DistributedLocking.Abstractions/Volo/Abp/DistributedLocking/LocalAbpDistributedLock.cs b/framework/src/Volo.Abp.DistributedLocking.Abstractions/Volo/Abp/DistributedLocking/LocalAbpDistributedLock.cs
new file mode 100644
index 0000000000..4b481d3549
--- /dev/null
+++ b/framework/src/Volo.Abp.DistributedLocking.Abstractions/Volo/Abp/DistributedLocking/LocalAbpDistributedLock.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Concurrent;
+using System.Threading;
+using System.Threading.Tasks;
+using Volo.Abp.DependencyInjection;
+
+namespace Volo.Abp.DistributedLocking
+{
+ public class LocalAbpDistributedLock : IAbpDistributedLock, ISingletonDependency
+ {
+ private readonly ConcurrentDictionary _localSyncObjects = new();
+
+ public async Task TryAcquireAsync(
+ string name,
+ TimeSpan timeout = default,
+ CancellationToken cancellationToken = default)
+ {
+ Check.NotNullOrWhiteSpace(name, nameof(name));
+
+ var semaphore = _localSyncObjects.GetOrAdd(name, _ => new SemaphoreSlim(1, 1));
+
+ if (!await semaphore.WaitAsync(timeout, cancellationToken))
+ {
+ return null;
+ }
+
+ return new LocalAbpDistributedLockHandle(semaphore);
+ }
+ }
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.DistributedLocking.Abstractions/Volo/Abp/DistributedLocking/LocalAbpDistributedLockHandle.cs b/framework/src/Volo.Abp.DistributedLocking.Abstractions/Volo/Abp/DistributedLocking/LocalAbpDistributedLockHandle.cs
new file mode 100644
index 0000000000..da12739311
--- /dev/null
+++ b/framework/src/Volo.Abp.DistributedLocking.Abstractions/Volo/Abp/DistributedLocking/LocalAbpDistributedLockHandle.cs
@@ -0,0 +1,21 @@
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace Volo.Abp.DistributedLocking
+{
+ public class LocalAbpDistributedLockHandle : IAbpDistributedLockHandle
+ {
+ private readonly SemaphoreSlim _semaphore;
+
+ public LocalAbpDistributedLockHandle(SemaphoreSlim semaphore)
+ {
+ _semaphore = semaphore;
+ }
+
+ public ValueTask DisposeAsync()
+ {
+ _semaphore.Release();
+ return default;
+ }
+ }
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.DistributedLocking/Volo.Abp.DistributedLocking.csproj b/framework/src/Volo.Abp.DistributedLocking/Volo.Abp.DistributedLocking.csproj
index c4b590412d..17ad2f02a4 100644
--- a/framework/src/Volo.Abp.DistributedLocking/Volo.Abp.DistributedLocking.csproj
+++ b/framework/src/Volo.Abp.DistributedLocking/Volo.Abp.DistributedLocking.csproj
@@ -15,7 +15,7 @@
-
+
diff --git a/framework/src/Volo.Abp.DistributedLocking/Volo/Abp/DistributedLocking/AbpDistributedLockHandleExtensions.cs b/framework/src/Volo.Abp.DistributedLocking/Volo/Abp/DistributedLocking/AbpDistributedLockHandleExtensions.cs
new file mode 100644
index 0000000000..f0b69116f5
--- /dev/null
+++ b/framework/src/Volo.Abp.DistributedLocking/Volo/Abp/DistributedLocking/AbpDistributedLockHandleExtensions.cs
@@ -0,0 +1,14 @@
+using System;
+using Medallion.Threading;
+
+namespace Volo.Abp.DistributedLocking
+{
+ public static class AbpDistributedLockHandleExtensions
+ {
+ public static IDistributedSynchronizationHandle ToDistributedSynchronizationHandle(
+ this IAbpDistributedLockHandle handle)
+ {
+ return handle.As().Handle;
+ }
+ }
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.DistributedLocking/Volo/Abp/DistributedLocking/AbpDistributedLockingModule.cs b/framework/src/Volo.Abp.DistributedLocking/Volo/Abp/DistributedLocking/AbpDistributedLockingModule.cs
index 877ac54244..3bfdbbf3f3 100644
--- a/framework/src/Volo.Abp.DistributedLocking/Volo/Abp/DistributedLocking/AbpDistributedLockingModule.cs
+++ b/framework/src/Volo.Abp.DistributedLocking/Volo/Abp/DistributedLocking/AbpDistributedLockingModule.cs
@@ -2,6 +2,9 @@
namespace Volo.Abp.DistributedLocking
{
+ [DependsOn(
+ typeof(AbpDistributedLockingAbstractionsModule)
+ )]
public class AbpDistributedLockingModule : AbpModule
{
diff --git a/framework/src/Volo.Abp.DistributedLocking/Volo/Abp/DistributedLocking/MedallionAbpDistributedLock.cs b/framework/src/Volo.Abp.DistributedLocking/Volo/Abp/DistributedLocking/MedallionAbpDistributedLock.cs
new file mode 100644
index 0000000000..4b46096da9
--- /dev/null
+++ b/framework/src/Volo.Abp.DistributedLocking/Volo/Abp/DistributedLocking/MedallionAbpDistributedLock.cs
@@ -0,0 +1,35 @@
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+using Medallion.Threading;
+using Volo.Abp.DependencyInjection;
+
+namespace Volo.Abp.DistributedLocking
+{
+ [Dependency(ReplaceServices = true)]
+ public class MedallionAbpDistributedLock : IAbpDistributedLock, ITransientDependency
+ {
+ protected IDistributedLockProvider DistributedLockProvider { get; }
+
+ public MedallionAbpDistributedLock(IDistributedLockProvider distributedLockProvider)
+ {
+ DistributedLockProvider = distributedLockProvider;
+ }
+
+ public async Task TryAcquireAsync(
+ string name,
+ TimeSpan timeout = default,
+ CancellationToken cancellationToken = default)
+ {
+ Check.NotNullOrWhiteSpace(name, nameof(name));
+
+ var handle = await DistributedLockProvider.TryAcquireLockAsync(name, timeout, cancellationToken);
+ if (handle == null)
+ {
+ return null;
+ }
+
+ return new MedallionAbpDistributedLockHandle(handle);
+ }
+ }
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.DistributedLocking/Volo/Abp/DistributedLocking/MedallionAbpDistributedLockHandle.cs b/framework/src/Volo.Abp.DistributedLocking/Volo/Abp/DistributedLocking/MedallionAbpDistributedLockHandle.cs
new file mode 100644
index 0000000000..d22371b862
--- /dev/null
+++ b/framework/src/Volo.Abp.DistributedLocking/Volo/Abp/DistributedLocking/MedallionAbpDistributedLockHandle.cs
@@ -0,0 +1,20 @@
+using System.Threading.Tasks;
+using Medallion.Threading;
+
+namespace Volo.Abp.DistributedLocking
+{
+ public class MedallionAbpDistributedLockHandle : IAbpDistributedLockHandle
+ {
+ public IDistributedSynchronizationHandle Handle { get; }
+
+ public MedallionAbpDistributedLockHandle(IDistributedSynchronizationHandle handle)
+ {
+ Handle = handle;
+ }
+
+ public ValueTask DisposeAsync()
+ {
+ return Handle.DisposeAsync();
+ }
+ }
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.EventBus.Boxes/FodyWeavers.xml b/framework/src/Volo.Abp.EventBus.Boxes/FodyWeavers.xml
deleted file mode 100644
index 1715698ccd..0000000000
--- a/framework/src/Volo.Abp.EventBus.Boxes/FodyWeavers.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.EventBus.Boxes/Volo/Abp/EventBus/Boxes/AbpEventBusBoxesModule.cs b/framework/src/Volo.Abp.EventBus.Boxes/Volo/Abp/EventBus/Boxes/AbpEventBusBoxesModule.cs
deleted file mode 100644
index 0c7a2c4247..0000000000
--- a/framework/src/Volo.Abp.EventBus.Boxes/Volo/Abp/EventBus/Boxes/AbpEventBusBoxesModule.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using Volo.Abp.BackgroundWorkers;
-using Volo.Abp.DistributedLocking;
-using Volo.Abp.Modularity;
-
-namespace Volo.Abp.EventBus.Boxes
-{
- [DependsOn(
- typeof(AbpEventBusModule),
- typeof(AbpBackgroundWorkersModule),
- typeof(AbpDistributedLockingModule)
- )]
- public class AbpEventBusBoxesModule : AbpModule
- {
- public override void OnApplicationInitialization(ApplicationInitializationContext context)
- {
- context.AddBackgroundWorker();
- context.AddBackgroundWorker();
- }
- }
-}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.EventBus.Boxes/Volo/Abp/EventBus/Boxes/TaskHelper.cs b/framework/src/Volo.Abp.EventBus.Boxes/Volo/Abp/EventBus/Boxes/TaskHelper.cs
deleted file mode 100644
index 87abe18da8..0000000000
--- a/framework/src/Volo.Abp.EventBus.Boxes/Volo/Abp/EventBus/Boxes/TaskHelper.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace Volo.Abp.EventBus.Boxes
-{
- internal static class TaskDelayHelper
- {
- public static async Task DelayAsync(int milliseconds, CancellationToken cancellationToken = default)
- {
- try
- {
- await Task.Delay(milliseconds, cancellationToken);
- }
- catch (TaskCanceledException)
- {
- return;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.EventBus/Volo.Abp.EventBus.csproj b/framework/src/Volo.Abp.EventBus/Volo.Abp.EventBus.csproj
index 5de5b0893f..bee75bf7ff 100644
--- a/framework/src/Volo.Abp.EventBus/Volo.Abp.EventBus.csproj
+++ b/framework/src/Volo.Abp.EventBus/Volo.Abp.EventBus.csproj
@@ -15,6 +15,8 @@
+
+
diff --git a/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/AbpEventBusModule.cs b/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/AbpEventBusModule.cs
index 3bbdf3d72b..58280c7066 100644
--- a/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/AbpEventBusModule.cs
+++ b/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/AbpEventBusModule.cs
@@ -1,7 +1,10 @@
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
+using Volo.Abp.BackgroundWorkers;
+using Volo.Abp.DistributedLocking;
using Volo.Abp.EventBus.Abstractions;
+using Volo.Abp.EventBus.Boxes;
using Volo.Abp.EventBus.Distributed;
using Volo.Abp.EventBus.Local;
using Volo.Abp.Guids;
@@ -16,7 +19,9 @@ namespace Volo.Abp.EventBus
typeof(AbpEventBusAbstractionsModule),
typeof(AbpMultiTenancyModule),
typeof(AbpJsonModule),
- typeof(AbpGuidsModule)
+ typeof(AbpGuidsModule),
+ typeof(AbpBackgroundWorkersModule),
+ typeof(AbpDistributedLockingAbstractionsModule)
)]
public class AbpEventBusModule : AbpModule
{
@@ -24,6 +29,12 @@ namespace Volo.Abp.EventBus
{
AddEventHandlers(context.Services);
}
+
+ public override void OnApplicationInitialization(ApplicationInitializationContext context)
+ {
+ context.AddBackgroundWorker();
+ context.AddBackgroundWorker();
+ }
private static void AddEventHandlers(IServiceCollection services)
{
diff --git a/framework/src/Volo.Abp.EventBus.Boxes/Volo/Abp/EventBus/Boxes/AbpDistributedEventBusExtensions.cs b/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/AbpDistributedEventBusExtensions.cs
similarity index 100%
rename from framework/src/Volo.Abp.EventBus.Boxes/Volo/Abp/EventBus/Boxes/AbpDistributedEventBusExtensions.cs
rename to framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/AbpDistributedEventBusExtensions.cs
diff --git a/framework/src/Volo.Abp.EventBus.Boxes/Volo/Abp/EventBus/Boxes/AbpEventBusBoxesOptions.cs b/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/AbpEventBusBoxesOptions.cs
similarity index 100%
rename from framework/src/Volo.Abp.EventBus.Boxes/Volo/Abp/EventBus/Boxes/AbpEventBusBoxesOptions.cs
rename to framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/AbpEventBusBoxesOptions.cs
diff --git a/framework/src/Volo.Abp.EventBus.Boxes/Volo/Abp/EventBus/Boxes/IInboxProcessor.cs b/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/IInboxProcessor.cs
similarity index 100%
rename from framework/src/Volo.Abp.EventBus.Boxes/Volo/Abp/EventBus/Boxes/IInboxProcessor.cs
rename to framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/IInboxProcessor.cs
diff --git a/framework/src/Volo.Abp.EventBus.Boxes/Volo/Abp/EventBus/Boxes/IOutboxSender.cs b/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/IOutboxSender.cs
similarity index 100%
rename from framework/src/Volo.Abp.EventBus.Boxes/Volo/Abp/EventBus/Boxes/IOutboxSender.cs
rename to framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/IOutboxSender.cs
diff --git a/framework/src/Volo.Abp.EventBus.Boxes/Volo/Abp/EventBus/Boxes/InboxProcessManager.cs b/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/InboxProcessManager.cs
similarity index 100%
rename from framework/src/Volo.Abp.EventBus.Boxes/Volo/Abp/EventBus/Boxes/InboxProcessManager.cs
rename to framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/InboxProcessManager.cs
diff --git a/framework/src/Volo.Abp.EventBus.Boxes/Volo/Abp/EventBus/Boxes/InboxProcessor.cs b/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/InboxProcessor.cs
similarity index 86%
rename from framework/src/Volo.Abp.EventBus.Boxes/Volo/Abp/EventBus/Boxes/InboxProcessor.cs
rename to framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/InboxProcessor.cs
index e3c71771ad..6a25804e74 100644
--- a/framework/src/Volo.Abp.EventBus.Boxes/Volo/Abp/EventBus/Boxes/InboxProcessor.cs
+++ b/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/InboxProcessor.cs
@@ -1,12 +1,12 @@
using System;
using System.Threading;
using System.Threading.Tasks;
-using Medallion.Threading;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options;
using Volo.Abp.DependencyInjection;
+using Volo.Abp.DistributedLocking;
using Volo.Abp.EventBus.Distributed;
using Volo.Abp.Threading;
using Volo.Abp.Timing;
@@ -19,7 +19,7 @@ namespace Volo.Abp.EventBus.Boxes
protected IServiceProvider ServiceProvider { get; }
protected AbpAsyncTimer Timer { get; }
protected IDistributedEventBus DistributedEventBus { get; }
- protected IDistributedLockProvider DistributedLockProvider { get; }
+ protected IAbpDistributedLock DistributedLock { get; }
protected IUnitOfWorkManager UnitOfWorkManager { get; }
protected IClock Clock { get; }
protected IEventInbox Inbox { get; private set; }
@@ -28,7 +28,7 @@ namespace Volo.Abp.EventBus.Boxes
protected DateTime? LastCleanTime { get; set; }
- protected string DistributedLockName => "Inbox_" + InboxConfig.Name;
+ protected string DistributedLockName => "AbpInbox_" + InboxConfig.Name;
public ILogger Logger { get; set; }
protected CancellationTokenSource StoppingTokenSource { get; }
protected CancellationToken StoppingToken { get; }
@@ -37,7 +37,7 @@ namespace Volo.Abp.EventBus.Boxes
IServiceProvider serviceProvider,
AbpAsyncTimer timer,
IDistributedEventBus distributedEventBus,
- IDistributedLockProvider distributedLockProvider,
+ IAbpDistributedLock distributedLock,
IUnitOfWorkManager unitOfWorkManager,
IClock clock,
IOptions eventBusBoxesOptions)
@@ -45,11 +45,11 @@ namespace Volo.Abp.EventBus.Boxes
ServiceProvider = serviceProvider;
Timer = timer;
DistributedEventBus = distributedEventBus;
- DistributedLockProvider = distributedLockProvider;
+ DistributedLock = distributedLock;
UnitOfWorkManager = unitOfWorkManager;
Clock = clock;
EventBusBoxesOptions = eventBusBoxesOptions.Value;
- Timer.Period = EventBusBoxesOptions.PeriodTimeSpan.Milliseconds;
+ Timer.Period = Convert.ToInt32(EventBusBoxesOptions.PeriodTimeSpan.TotalMilliseconds);
Timer.Elapsed += TimerOnElapsed;
Logger = NullLogger.Instance;
StoppingTokenSource = new CancellationTokenSource();
@@ -84,7 +84,7 @@ namespace Volo.Abp.EventBus.Boxes
return;
}
- await using (var handle = await DistributedLockProvider.TryAcquireLockAsync(DistributedLockName, cancellationToken: StoppingToken))
+ await using (var handle = await DistributedLock.TryAcquireAsync(DistributedLockName, cancellationToken: StoppingToken))
{
if (handle != null)
{
@@ -120,7 +120,11 @@ namespace Volo.Abp.EventBus.Boxes
else
{
Logger.LogDebug("Could not obtain the distributed lock: " + DistributedLockName);
- await TaskDelayHelper.DelayAsync(EventBusBoxesOptions.DistributedLockWaitDuration.Milliseconds, StoppingToken);
+ try
+ {
+ await Task.Delay(EventBusBoxesOptions.DistributedLockWaitDuration, StoppingToken);
+ }
+ catch (TaskCanceledException) { }
}
}
}
diff --git a/framework/src/Volo.Abp.EventBus.Boxes/Volo/Abp/EventBus/Boxes/OutboxSender.cs b/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/OutboxSender.cs
similarity index 83%
rename from framework/src/Volo.Abp.EventBus.Boxes/Volo/Abp/EventBus/Boxes/OutboxSender.cs
rename to framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/OutboxSender.cs
index 32545227c3..873878bca7 100644
--- a/framework/src/Volo.Abp.EventBus.Boxes/Volo/Abp/EventBus/Boxes/OutboxSender.cs
+++ b/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/OutboxSender.cs
@@ -1,12 +1,12 @@
using System;
using System.Threading;
using System.Threading.Tasks;
-using Medallion.Threading;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options;
using Volo.Abp.DependencyInjection;
+using Volo.Abp.DistributedLocking;
using Volo.Abp.EventBus.Distributed;
using Volo.Abp.Threading;
@@ -17,11 +17,11 @@ namespace Volo.Abp.EventBus.Boxes
protected IServiceProvider ServiceProvider { get; }
protected AbpAsyncTimer Timer { get; }
protected IDistributedEventBus DistributedEventBus { get; }
- protected IDistributedLockProvider DistributedLockProvider { get; }
+ protected IAbpDistributedLock DistributedLock { get; }
protected IEventOutbox Outbox { get; private set; }
protected OutboxConfig OutboxConfig { get; private set; }
protected AbpEventBusBoxesOptions EventBusBoxesOptions { get; }
- protected string DistributedLockName => "Outbox_" + OutboxConfig.Name;
+ protected string DistributedLockName => "AbpOutbox_" + OutboxConfig.Name;
public ILogger Logger { get; set; }
protected CancellationTokenSource StoppingTokenSource { get; }
@@ -31,15 +31,15 @@ namespace Volo.Abp.EventBus.Boxes
IServiceProvider serviceProvider,
AbpAsyncTimer timer,
IDistributedEventBus distributedEventBus,
- IDistributedLockProvider distributedLockProvider,
+ IAbpDistributedLock distributedLock,
IOptions eventBusBoxesOptions)
{
ServiceProvider = serviceProvider;
- Timer = timer;
DistributedEventBus = distributedEventBus;
- DistributedLockProvider = distributedLockProvider;
+ DistributedLock = distributedLock;
EventBusBoxesOptions = eventBusBoxesOptions.Value;
- Timer.Period = EventBusBoxesOptions.PeriodTimeSpan.Milliseconds;
+ Timer = timer;
+ Timer.Period = Convert.ToInt32(EventBusBoxesOptions.PeriodTimeSpan.TotalMilliseconds);
Timer.Elapsed += TimerOnElapsed;
Logger = NullLogger.Instance;
StoppingTokenSource = new CancellationTokenSource();
@@ -69,7 +69,7 @@ namespace Volo.Abp.EventBus.Boxes
protected virtual async Task RunAsync()
{
- await using (var handle = await DistributedLockProvider.TryAcquireLockAsync(DistributedLockName, cancellationToken: StoppingToken))
+ await using (var handle = await DistributedLock.TryAcquireAsync(DistributedLockName, cancellationToken: StoppingToken))
{
if (handle != null)
{
@@ -100,7 +100,11 @@ namespace Volo.Abp.EventBus.Boxes
else
{
Logger.LogDebug("Could not obtain the distributed lock: " + DistributedLockName);
- await TaskDelayHelper.DelayAsync(EventBusBoxesOptions.DistributedLockWaitDuration.Milliseconds, StoppingToken);
+ try
+ {
+ await Task.Delay(EventBusBoxesOptions.DistributedLockWaitDuration, StoppingToken);
+ }
+ catch (TaskCanceledException) { }
}
}
}
diff --git a/framework/src/Volo.Abp.EventBus.Boxes/Volo/Abp/EventBus/Boxes/OutboxSenderManager.cs b/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/OutboxSenderManager.cs
similarity index 100%
rename from framework/src/Volo.Abp.EventBus.Boxes/Volo/Abp/EventBus/Boxes/OutboxSenderManager.cs
rename to framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/OutboxSenderManager.cs
diff --git a/framework/src/Volo.Abp.FluentValidation/Volo/Abp/FluentValidation/AbpFluentValidationConventionalRegistrar.cs b/framework/src/Volo.Abp.FluentValidation/Volo/Abp/FluentValidation/AbpFluentValidationConventionalRegistrar.cs
index d51e4728ca..b4f56edc7d 100644
--- a/framework/src/Volo.Abp.FluentValidation/Volo/Abp/FluentValidation/AbpFluentValidationConventionalRegistrar.cs
+++ b/framework/src/Volo.Abp.FluentValidation/Volo/Abp/FluentValidation/AbpFluentValidationConventionalRegistrar.cs
@@ -1,39 +1,31 @@
using System;
using System.Collections.Generic;
+using System.Linq;
using FluentValidation;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.FluentValidation
{
- public class AbpFluentValidationConventionalRegistrar : ConventionalRegistrarBase
+ public class AbpFluentValidationConventionalRegistrar : DefaultConventionalRegistrar
{
- public override void AddType(IServiceCollection services, Type type)
+ protected override bool IsConventionalRegistrationDisabled(Type type)
{
- if (IsConventionalRegistrationDisabled(type))
- {
- return;
- }
+ return !type.GetInterfaces().Any(x => x.IsGenericType && x.GetGenericTypeDefinition() == typeof(IValidator<>)) ||
+ base.IsConventionalRegistrationDisabled(type);
+ }
- if (!typeof(IValidator).IsAssignableFrom(type))
- {
- return;
- }
+ protected override ServiceLifetime? GetDefaultLifeTimeOrNull(Type type)
+ {
+ return ServiceLifetime.Transient;
+ }
- var validatingType = GetFirstGenericArgumentOrNull(type, 1);
- if (validatingType == null)
+ protected override List GetExposedServiceTypes(Type type)
+ {
+ return new List()
{
- return;
- }
-
- var serviceType = typeof(IValidator<>).MakeGenericType(validatingType);
-
- TriggerServiceExposing(services, type, new List{ serviceType });
-
- services.AddTransient(
- serviceType,
- type
- );
+ typeof(IValidator<>).MakeGenericType(GetFirstGenericArgumentOrNull(type, 1))
+ };
}
private static Type GetFirstGenericArgumentOrNull(Type type, int depth)
diff --git a/framework/src/Volo.Abp.HangFire/Volo/Abp/Hangfire/AbpHangfireAuthorizationFilter.cs b/framework/src/Volo.Abp.HangFire/Volo/Abp/Hangfire/AbpHangfireAuthorizationFilter.cs
index 15fbb4f60c..e7c205a962 100644
--- a/framework/src/Volo.Abp.HangFire/Volo/Abp/Hangfire/AbpHangfireAuthorizationFilter.cs
+++ b/framework/src/Volo.Abp.HangFire/Volo/Abp/Hangfire/AbpHangfireAuthorizationFilter.cs
@@ -9,16 +9,18 @@ namespace Volo.Abp.Hangfire
{
public class AbpHangfireAuthorizationFilter : IDashboardAsyncAuthorizationFilter
{
+ private readonly bool _enableTenant;
private readonly string _requiredPermissionName;
- public AbpHangfireAuthorizationFilter(string requiredPermissionName = null)
+ public AbpHangfireAuthorizationFilter(bool enableTenant = false, string requiredPermissionName = null)
{
+ _enableTenant = requiredPermissionName.IsNullOrWhiteSpace() ? enableTenant : true;
_requiredPermissionName = requiredPermissionName;
}
public async Task AuthorizeAsync(DashboardContext context)
{
- if (!IsLoggedIn(context))
+ if (!IsLoggedIn(context, _enableTenant))
{
return false;
}
@@ -31,9 +33,15 @@ namespace Volo.Abp.Hangfire
return await IsPermissionGrantedAsync(context, _requiredPermissionName);
}
- private static bool IsLoggedIn(DashboardContext context)
+ private static bool IsLoggedIn(DashboardContext context, bool enableTenant)
{
var currentUser = context.GetHttpContext().RequestServices.GetRequiredService();
+
+ if (!enableTenant)
+ {
+ return currentUser.IsAuthenticated && !currentUser.TenantId.HasValue;
+ }
+
return currentUser.IsAuthenticated;
}
diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyBase.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyBase.cs
index 9b47208141..73e51080c6 100644
--- a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyBase.cs
+++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyBase.cs
@@ -16,6 +16,7 @@ using Volo.Abp.Http.Modeling;
using Volo.Abp.Http.ProxyScripting.Generators;
using Volo.Abp.Json;
using Volo.Abp.MultiTenancy;
+using Volo.Abp.Reflection;
using Volo.Abp.Threading;
using Volo.Abp.Tracing;
@@ -55,7 +56,7 @@ namespace Volo.Abp.Http.Client.ClientProxying
arguments = new ClientProxyRequestTypeValue();
}
- var methodUniqueName = $"{typeof(TService).FullName}.{methodName}.{string.Join("-", arguments.Values.Select(x => x.Key.FullName))}";
+ var methodUniqueName = $"{typeof(TService).FullName}.{methodName}.{string.Join("-", arguments.Values.Select(x => TypeHelper.GetFullNameHandlingNullableAndGenerics(x.Key)))}";
var action = ClientProxyApiDescriptionFinder.FindAction(methodUniqueName);
if (action == null)
{
diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/DependencyInjection/AbpMongoDbConventionalRegistrar.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/DependencyInjection/AbpMongoDbConventionalRegistrar.cs
index e0a6265f7c..4d10d7c030 100644
--- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/DependencyInjection/AbpMongoDbConventionalRegistrar.cs
+++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/MongoDB/DependencyInjection/AbpMongoDbConventionalRegistrar.cs
@@ -1,29 +1,28 @@
using System;
-using System.Reflection;
+using System.Collections.Generic;
using Microsoft.Extensions.DependencyInjection;
-using Microsoft.Extensions.DependencyInjection.Extensions;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.MongoDB.DependencyInjection
{
public class AbpMongoDbConventionalRegistrar : DefaultConventionalRegistrar
{
- public override void AddType(IServiceCollection services, Type type)
+ protected override bool IsConventionalRegistrationDisabled(Type type)
{
- if (!typeof(IAbpMongoDbContext).IsAssignableFrom(type) || type == typeof(AbpMongoDbContext))
- {
- return;
- }
-
- var dependencyAttribute = GetDependencyAttributeOrNull(type);
- var lifeTime = GetLifeTimeOrNull(type, dependencyAttribute);
+ return !typeof(IAbpMongoDbContext).IsAssignableFrom(type) || type == typeof(AbpMongoDbContext) || base.IsConventionalRegistrationDisabled(type);
+ }
- if (lifeTime == null)
+ protected override List GetExposedServiceTypes(Type type)
+ {
+ return new List()
{
- return;
- }
+ typeof(IAbpMongoDbContext)
+ };
+ }
- services.Add(ServiceDescriptor.Describe(typeof(IAbpMongoDbContext), type, ServiceLifetime.Transient));
+ protected override ServiceLifetime? GetDefaultLifeTimeOrNull(Type type)
+ {
+ return ServiceLifetime.Transient;
}
}
}
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ar.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ar.json
index 37b538ce89..1f3cfc4842 100644
--- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ar.json
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ar.json
@@ -13,6 +13,7 @@
"SavingWithThreeDot": "حفظ...",
"Actions": "أجراءات",
"Delete": "حذف",
+ "SuccessfullyDeleted": "تم الحذف بنجاح",
"Edit": "تعديل",
"Refresh": "تحديث",
"Language": "لغة",
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/cs.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/cs.json
index 85cf515095..fff10066f6 100644
--- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/cs.json
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/cs.json
@@ -12,6 +12,7 @@
"SavingWithThreeDot": "Ukládám...",
"Actions": "Akce",
"Delete": "Smazat",
+ "SuccessfullyDeleted": "Úspěšně smazáno",
"Edit": "Upravit",
"Refresh": "Obnovit",
"Language": "Jazyk",
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/de-DE.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/de-DE.json
index 2ab3dd90e9..071ac2eb3d 100644
--- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/de-DE.json
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/de-DE.json
@@ -13,6 +13,7 @@
"SavingWithThreeDot": "Speichern...",
"Actions": "Aktionen",
"Delete": "Löschen",
+ "SuccessfullyDeleted": "Erfolgreich gelöscht",
"Edit": "Bearbeiten",
"Refresh": "Aktualisieren",
"Language": "Sprache",
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/de.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/de.json
index 64bb0f99b5..bb15e170bb 100644
--- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/de.json
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/de.json
@@ -12,6 +12,7 @@
"SavingWithThreeDot": "Speichere...",
"Actions": "Aktionen",
"Delete": "Löschen",
+ "SuccessfullyDeleted": "Erfolgreich gelöscht",
"Edit": "Bearbeiten",
"Refresh": "Aktualisieren",
"Language": "Sprache",
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/en-GB.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/en-GB.json
index b0d0922089..a26c5ddf9e 100644
--- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/en-GB.json
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/en-GB.json
@@ -13,6 +13,7 @@
"SavingWithThreeDot": "Saving",
"Actions": "Actions",
"Delete": "Delete",
+ "SuccessfullyDeleted": "Successfully deleted",
"Edit": "Edit",
"Refresh": "Refresh",
"Language": "Language",
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/en.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/en.json
index 72c53e8adf..2a22849731 100644
--- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/en.json
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/en.json
@@ -13,6 +13,7 @@
"SavingWithThreeDot": "Saving...",
"Actions": "Actions",
"Delete": "Delete",
+ "SuccessfullyDeleted": "Successfully deleted",
"Edit": "Edit",
"Refresh": "Refresh",
"Language": "Language",
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/es.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/es.json
index a39984fdbf..f2b40a785b 100644
--- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/es.json
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/es.json
@@ -13,6 +13,7 @@
"SavingWithThreeDot": "Guardando...",
"Actions": "Opciones",
"Delete": "Borrar",
+ "SuccessfullyDeleted": "Eliminado con éxito",
"Edit": "Editar",
"Refresh": "Actualizar",
"Language": "Idioma",
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fi.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fi.json
index 77ff9247ce..1952de8822 100644
--- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fi.json
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fi.json
@@ -13,6 +13,7 @@
"SavingWithThreeDot": "Tallentaa...",
"Actions": "Toiminnot",
"Delete": "Poistaa",
+ "SuccessfullyDeleted": "Poistettu onnistuneesti",
"Edit": "Muokata",
"Refresh": "virkistää",
"Language": "Kieli",
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fr.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fr.json
index c27708ee09..7504de8acc 100644
--- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fr.json
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fr.json
@@ -13,6 +13,7 @@
"SavingWithThreeDot": "Enregistrement...",
"Actions": "Actions",
"Delete": "Supprimer",
+ "SuccessfullyDeleted": "Supprimé avec succès",
"Edit": "Modifier",
"Refresh": "Actualiser",
"Language": "Langue",
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/hi.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/hi.json
index 6ccee95a76..2c451bc797 100644
--- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/hi.json
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/hi.json
@@ -13,6 +13,7 @@
"SavingWithThreeDot": "सहेजा जा रहा है...",
"Actions": "कार्रवाई",
"Delete": "हटाएं",
+ "SuccessfullyDeleted": "सफलतापूर्वक हटा दिया गया",
"Edit": "संपादित करें",
"Refresh": "ताज़ा करना",
"Language": "भाषा: हिन्दी",
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/hu.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/hu.json
index ed63fb50d0..595e2f8b62 100644
--- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/hu.json
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/hu.json
@@ -13,6 +13,7 @@
"SavingWithThreeDot": "Mentés...",
"Actions": "Műveletek",
"Delete": "Törlés",
+ "SuccessfullyDeleted": "Sikeresen törölve",
"Edit": "Szerkesztés",
"Refresh": "Frissítés",
"Language": "Nyelv",
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/it.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/it.json
index d4b37bbbb1..3c4328619e 100644
--- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/it.json
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/it.json
@@ -13,12 +13,13 @@
"SavingWithThreeDot": "Salvataggio...",
"Actions": "Azioni",
"Delete": "Elimina",
+ "SuccessfullyDeleted": "Eliminato con successo",
"Edit": "Modifica",
"Refresh": "Ricarica",
"Language": "Lingua",
"LoadMore": "Carica altro",
- "ProcessingWithThreeDot": "In lavorazione...",
- "LoadingWithThreeDot": "Caricamento in corso...",
+ "ProcessingWithThreeDot": "Elaborazione...",
+ "LoadingWithThreeDot": "Caricamento...",
"Welcome": "Benvenuto",
"Login": "Accedi",
"Register": "Registrati",
@@ -28,16 +29,16 @@
"PagerSearch": "Ricerca",
"PagerNext": "Successivo",
"PagerPrevious": "Precedente",
- "PagerFirst": "Primo",
- "PagerLast": "Ultimo",
- "PagerInfo": "Visualizzazione da _START_ a _END_ di _TOTAL_ voci",
- "PagerInfo{0}{1}{2}": "Visualizzazione da {0} a {1} di {2} voci",
- "PagerInfoEmpty": "Mostra da 0 a 0 di 0 voci",
- "PagerInfoFiltered": "(filtrato da _MAX_ voci totali)",
+ "PagerFirst": "Inizio",
+ "PagerLast": "Fine",
+ "PagerInfo": "_START_ - _END_ di _TOTAL_",
+ "PagerInfo{0}{1}{2}": "{0} - {1} di {2}",
+ "PagerInfoEmpty": "Risultati da 0 a 0 di 0 elementi",
+ "PagerInfoFiltered": "(filtrati da _MAX_ elementi totali)",
"NoDataAvailableInDatatable": "Nessun dato disponibile",
"Total": "Totale",
"Selected": "Selezionato",
- "PagerShowMenuEntries": "Mostra voci _MENU_",
+ "PagerShowMenuEntries": "Righe per pagina _MENU_",
"DatatableActionDropdownDefaultText": "Azioni",
"ChangePassword": "Cambia la password",
"PersonalInfo": "Il mio profilo",
@@ -45,8 +46,8 @@
"GoHomePage": "Vai alla home page",
"GoBack": "Torna indietro",
"Search": "Ricerca",
- "ItemWillBeDeletedMessageWithFormat": "{0} verrà eliminato!",
+ "ItemWillBeDeletedMessageWithFormat": "{0} sarà eliminato!",
"ItemWillBeDeletedMessage": "Questo elemento sarà eliminato!",
"ManageYourAccount": "Gestisci il tuo account"
}
-}
\ No newline at end of file
+}
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/nl.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/nl.json
index a85e443bdf..d23d2356b4 100644
--- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/nl.json
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/nl.json
@@ -13,6 +13,7 @@
"SavingWithThreeDot": "Opslaan...",
"Actions": "Acties",
"Delete": "Verwijder",
+ "SuccessfullyDeleted": "Succesvol verwijderd",
"Edit": "Bewerk",
"Refresh": "Ververs",
"Language": "Taal",
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/pl-PL.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/pl-PL.json
index 7c6738e0bd..9e57e64ccc 100644
--- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/pl-PL.json
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/pl-PL.json
@@ -10,6 +10,7 @@
"SavingWithThreeDot": "Zapisywanie...",
"Actions": "Akcje",
"Delete": "Usuń",
+ "SuccessfullyDeleted": "Pomyślnie usunięto",
"Edit": "Edytuj",
"Refresh": "Odśwież",
"ProcessingWithThreeDot": "Procesowanie...",
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/pt-BR.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/pt-BR.json
index 0aa20797c9..189c2abf21 100644
--- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/pt-BR.json
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/pt-BR.json
@@ -10,6 +10,7 @@
"SavingWithThreeDot": "Salvando...",
"Actions": "Ações",
"Delete": "Excluir",
+ "SuccessfullyDeleted": "Excluído com sucesso",
"Edit": "Editar",
"Refresh": "Refrescar",
"ProcessingWithThreeDot": "Processando...",
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ro-RO.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ro-RO.json
index b7562858d6..94e56a66f3 100644
--- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ro-RO.json
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ro-RO.json
@@ -13,6 +13,7 @@
"SavingWithThreeDot": "Se salvează...",
"Actions": "Acţiuni",
"Delete": "Şterge",
+ "SuccessfullyDeleted": "Șters cu succes",
"Edit": "Editează",
"Refresh": "Reîncarcă",
"Language": "Limba",
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ru.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ru.json
index 7b4014ebef..165fc49dcc 100644
--- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ru.json
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/ru.json
@@ -12,6 +12,7 @@
"SavingWithThreeDot": "Сохранение...",
"Actions": "Действия",
"Delete": "Удалить",
+ "SuccessfullyDeleted": "Успешно удалено",
"Edit": "Редактировать",
"Refresh": "Обновить",
"Language": "Язык",
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/sk.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/sk.json
index e904e8c8cc..59b2628310 100644
--- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/sk.json
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/sk.json
@@ -13,6 +13,7 @@
"SavingWithThreeDot": "Úkladanie...",
"Actions": "Akcie",
"Delete": "Odstrániť",
+ "SuccessfullyDeleted": "Úspešne odstránené",
"Edit": "Upraviť",
"Refresh": "Obnoviť",
"Language": "Jazyk",
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/sl.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/sl.json
index 2b285d97e4..792171a969 100644
--- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/sl.json
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/sl.json
@@ -12,6 +12,7 @@
"SavingWithThreeDot": "Shranjujem...",
"Actions": "Dejanja",
"Delete": "Izbriši",
+ "SuccessfullyDeleted": "Uspešno izbrisano",
"Edit": "Uredi",
"Refresh": "Osveži",
"Language": "Jezik",
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/tr.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/tr.json
index 4b18037f92..67ae56793a 100644
--- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/tr.json
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/tr.json
@@ -13,6 +13,7 @@
"SavingWithThreeDot": "Kaydediliyor...",
"Actions": "İşlemler",
"Delete": "Sil",
+ "SuccessfullyDeleted": "Başarıyla silindi",
"Edit": "Düzenle",
"Refresh": "Yenile",
"Language": "Dil",
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/vi.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/vi.json
index 239622e438..fb68e9faf7 100644
--- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/vi.json
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/vi.json
@@ -10,6 +10,7 @@
"SavingWithThreeDot": "Đang lưu...",
"Actions": "Hành động",
"Delete": "Xóa",
+ "SuccessfullyDeleted": "Đã xóa thành công",
"Edit": "Sửa",
"Refresh": "Làm mới",
"ProcessingWithThreeDot": "Đang xử lý...",
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hans.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hans.json
index 96c49401ea..680da56e96 100644
--- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hans.json
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hans.json
@@ -13,6 +13,7 @@
"SavingWithThreeDot": "保存中...",
"Actions": "操作",
"Delete": "删除",
+ "SuccessfullyDeleted": "删除成功",
"Edit": "编辑",
"Refresh": "刷新",
"Language": "语言",
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hant.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hant.json
index ab529791be..5f73fa7ccd 100644
--- a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hant.json
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hant.json
@@ -13,6 +13,7 @@
"SavingWithThreeDot": "保存中...",
"Actions": "操作",
"Delete": "刪除",
+ "SuccessfullyDeleted": "刪除成功",
"Edit": "修改",
"Refresh": "更新",
"Language": "語言",
diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/NumericValueValidator.cs b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/NumericValueValidator.cs
index e1b1972258..b4b7c54fb1 100644
--- a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/NumericValueValidator.cs
+++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/NumericValueValidator.cs
@@ -20,7 +20,8 @@ namespace Volo.Abp.Validation.StringValues
public NumericValueValidator()
{
-
+ MinValue = int.MinValue;
+ MaxValue = int.MaxValue;
}
public NumericValueValidator(int minValue = int.MinValue, int maxValue = int.MaxValue)
diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/DependencyInjection/AbpAspNetCoreMvcConventionalRegistrar_Tests.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/DependencyInjection/AbpAspNetCoreMvcConventionalRegistrar_Tests.cs
index 46f2823b70..805b1550e1 100644
--- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/DependencyInjection/AbpAspNetCoreMvcConventionalRegistrar_Tests.cs
+++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/DependencyInjection/AbpAspNetCoreMvcConventionalRegistrar_Tests.cs
@@ -1,7 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
+using System.Linq;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.DependencyInjection;
@@ -26,15 +23,35 @@ namespace Volo.Abp.AspNetCore.Mvc.DependencyInjection
services.AddTypes(typeof(My_Test_PageModel), typeof(My_Test_Controller), typeof(My_Test_ViewComponent));
//Assert
- services.ShouldContainTransient(typeof(My_Test_PageModel));
- services.ShouldContainTransient(typeof(My_Test_Controller));
- services.ShouldContainTransient(typeof(My_Test_ViewComponent));
+ services.ShouldContainTransient(typeof(My_Test_PageModel));
+ services.ShouldContainTransient(typeof(My_Test_Controller));
+ services.ShouldContainTransient(typeof(My_Test_ViewComponent));
var serviceProvider = services.BuildServiceProvider();
serviceProvider.GetServices().Count().ShouldBe(1);
serviceProvider.GetServices().Count().ShouldBe(1);
serviceProvider.GetServices().Count().ShouldBe(1);
}
+
+ [Fact]
+ public void Should_Replace_Registered_Mvc_Service()
+ {
+ //Arrange
+ var services = new ServiceCollection();
+
+ //Act
+ services.AddConventionalRegistrar(new DefaultConventionalRegistrar());
+ services.AddConventionalRegistrar(new AbpAspNetCoreMvcConventionalRegistrar());
+
+ services.AddTypes(typeof(My_Second_Test_ViewComponent), typeof(My_Third_Test_ViewComponent));
+
+ //Assert
+ services.ShouldContainTransient(typeof(My_Second_Test_ViewComponent), typeof(My_Third_Test_ViewComponent));
+ services.ShouldNotContainService(typeof(My_Third_Test_ViewComponent));
+
+ var serviceProvider = services.BuildServiceProvider();
+ serviceProvider.GetServices().Count().ShouldBe(1);
+ }
}
public class My_Test_PageModel : PageModel
@@ -49,6 +66,15 @@ namespace Volo.Abp.AspNetCore.Mvc.DependencyInjection
public class My_Test_ViewComponent : ViewComponent
{
+ }
+ public class My_Second_Test_ViewComponent : ViewComponent
+ {
+ }
+
+ [Dependency(ReplaceServices = true)]
+ [ExposeServices(typeof(My_Second_Test_ViewComponent))]
+ public class My_Third_Test_ViewComponent : My_Second_Test_ViewComponent
+ {
}
}
diff --git a/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectNameValidation_Tests.cs b/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectNameValidation_Tests.cs
index a1557e68ce..d346ce6227 100644
--- a/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectNameValidation_Tests.cs
+++ b/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectNameValidation_Tests.cs
@@ -38,14 +38,6 @@ namespace Volo.Abp.Cli
}
}
- [Fact]
- public async Task Parent_Directory_Char_Contains_Test()
- {
-
- var args = new CommandLineArgs("new", "Test..Test");
- await _newCommand.ExecuteAsync(args).ShouldThrowAsync();
- }
-
[Fact]
public async Task Contains_Illegal_Keyword_Test()
{
diff --git a/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectVersionParse_Tests.cs b/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectVersionParse_Tests.cs
index eb4a9eda24..20e870dfe9 100644
--- a/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectVersionParse_Tests.cs
+++ b/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/ProjectVersionParse_Tests.cs
@@ -36,7 +36,7 @@ namespace Volo.Abp.Cli
"" +
"";
- var success = SolutionAbpVersionFinder.TryParseVersionFromCsprojFile(csprojContent, out var version);
+ var success = SolutionPackageVersionFinder.TryParseVersionFromCsprojFile(csprojContent, out var version);
success.ShouldBe(true);
version.ShouldBe("4.4.0-rc.1");
}
@@ -58,7 +58,7 @@ namespace Volo.Abp.Cli
"" +
"";
- var success = SolutionAbpVersionFinder.TryParseSemanticVersionFromCsprojFile(csprojContent, out var version);
+ var success = SolutionPackageVersionFinder.TryParseSemanticVersionFromCsprojFile(csprojContent, out var version);
success.ShouldBe(true);
version.Major.ShouldBe(12);
version.Minor.ShouldBe(8);
diff --git a/framework/test/Volo.Abp.DistributedLocking.Abstractions.Tests/Volo.Abp.DistributedLocking.Abstractions.Tests.csproj b/framework/test/Volo.Abp.DistributedLocking.Abstractions.Tests/Volo.Abp.DistributedLocking.Abstractions.Tests.csproj
new file mode 100644
index 0000000000..8194846f0c
--- /dev/null
+++ b/framework/test/Volo.Abp.DistributedLocking.Abstractions.Tests/Volo.Abp.DistributedLocking.Abstractions.Tests.csproj
@@ -0,0 +1,18 @@
+
+
+
+
+
+ net6.0
+ true
+
+
+
+
+
+
+
+
+
+
+
diff --git a/framework/test/Volo.Abp.DistributedLocking.Abstractions.Tests/Volo/Abp/DistributedLocking/AbpDistributedLockingAbstractionsTestBase.cs b/framework/test/Volo.Abp.DistributedLocking.Abstractions.Tests/Volo/Abp/DistributedLocking/AbpDistributedLockingAbstractionsTestBase.cs
new file mode 100644
index 0000000000..074bd342d2
--- /dev/null
+++ b/framework/test/Volo.Abp.DistributedLocking.Abstractions.Tests/Volo/Abp/DistributedLocking/AbpDistributedLockingAbstractionsTestBase.cs
@@ -0,0 +1,12 @@
+using Volo.Abp.Testing;
+
+namespace Volo.Abp.DistributedLocking
+{
+ public class AbpDistributedLockingAbstractionsTestBase : AbpIntegratedTest
+ {
+ protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options)
+ {
+ options.UseAutofac();
+ }
+ }
+}
diff --git a/framework/test/Volo.Abp.DistributedLocking.Abstractions.Tests/Volo/Abp/DistributedLocking/AbpDistributedLockingAbstractionsTestModule.cs b/framework/test/Volo.Abp.DistributedLocking.Abstractions.Tests/Volo/Abp/DistributedLocking/AbpDistributedLockingAbstractionsTestModule.cs
new file mode 100644
index 0000000000..cfc9278335
--- /dev/null
+++ b/framework/test/Volo.Abp.DistributedLocking.Abstractions.Tests/Volo/Abp/DistributedLocking/AbpDistributedLockingAbstractionsTestModule.cs
@@ -0,0 +1,15 @@
+using Volo.Abp.Autofac;
+using Volo.Abp.Modularity;
+
+namespace Volo.Abp.DistributedLocking
+{
+ [DependsOn(
+ typeof(AbpTestBaseModule),
+ typeof(AbpDistributedLockingAbstractionsModule),
+ typeof(AbpAutofacModule)
+ )]
+ public class AbpDistributedLockingAbstractionsTestModule : AbpModule
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/framework/test/Volo.Abp.DistributedLocking.Abstractions.Tests/Volo/Abp/DistributedLocking/LocalDistributedLock_Tests.cs b/framework/test/Volo.Abp.DistributedLocking.Abstractions.Tests/Volo/Abp/DistributedLocking/LocalDistributedLock_Tests.cs
new file mode 100644
index 0000000000..ce7fda009d
--- /dev/null
+++ b/framework/test/Volo.Abp.DistributedLocking.Abstractions.Tests/Volo/Abp/DistributedLocking/LocalDistributedLock_Tests.cs
@@ -0,0 +1,73 @@
+using System.Threading.Tasks;
+using Shouldly;
+using Xunit;
+
+namespace Volo.Abp.DistributedLocking
+{
+ public class LocalDistributedLock_Tests : AbpDistributedLockingAbstractionsTestBase
+ {
+ private readonly IAbpDistributedLock _distributedLock;
+
+ public LocalDistributedLock_Tests()
+ {
+ _distributedLock = GetRequiredService();
+ }
+
+ [Fact]
+ public void Should_Be_Instance_Of_LocalAbpDistributedLock()
+ {
+ _distributedLock.ShouldBeOfType();
+ }
+
+ [Fact]
+ public async Task Should_Lock_With_TryAcquire()
+ {
+ await using (var handle = await _distributedLock.TryAcquireAsync("lock1"))
+ {
+ handle.ShouldNotBeNull();
+ }
+ }
+
+ [Fact]
+ public async Task Should_Not_Acquire_If_Already_Locked()
+ {
+ await using (var handle = await _distributedLock.TryAcquireAsync("lock1"))
+ {
+ handle.ShouldNotBeNull();
+
+ await Task.Run(async () =>
+ {
+ await using (var handle2 = await _distributedLock.TryAcquireAsync("lock1"))
+ {
+ handle2.ShouldBeNull();
+ }
+ });
+ }
+
+ await Task.Run(async () =>
+ {
+ await using (var handle = await _distributedLock.TryAcquireAsync("lock1"))
+ {
+ handle.ShouldNotBeNull();
+ }
+ });
+ }
+
+ [Fact]
+ public async Task Should_Obtain_Multiple_Locks()
+ {
+ await using (var handle = await _distributedLock.TryAcquireAsync("lock1"))
+ {
+ handle.ShouldNotBeNull();
+
+ await Task.Run(async () =>
+ {
+ await using (var handle2 = await _distributedLock.TryAcquireAsync("lock2"))
+ {
+ handle2.ShouldNotBeNull();
+ }
+ });
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/AbpMongoDbConventionalRegistrar_Tests.cs b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/AbpMongoDbConventionalRegistrar_Tests.cs
new file mode 100644
index 0000000000..61adb0c8a5
--- /dev/null
+++ b/framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/AbpMongoDbConventionalRegistrar_Tests.cs
@@ -0,0 +1,24 @@
+using Microsoft.Extensions.DependencyInjection;
+using Shouldly;
+using Volo.Abp.MongoDB.TestApp.FourthContext;
+using Volo.Abp.MongoDB.TestApp.SecondContext;
+using Volo.Abp.MongoDB.TestApp.ThirdDbContext;
+using Volo.Abp.TestApp.MongoDB;
+using Xunit;
+
+namespace Volo.Abp.MongoDB
+{
+ [Collection(MongoTestCollection.Name)]
+ public class AbpMongoDbConventionalRegistrar_Tests : MongoDbTestBase
+ {
+ [Fact]
+ public void All_AbpMongoDbContext_Should_Exposed_IAbpMongoDbContext_Service()
+ {
+ var abpMongoDbContext = ServiceProvider.GetServices();
+ abpMongoDbContext.ShouldContain(x => x is TestAppMongoDbContext);
+ abpMongoDbContext.ShouldContain(x => x is SecondDbContext);
+ abpMongoDbContext.ShouldContain(x => x is ThirdDbContext);
+ abpMongoDbContext.ShouldContain(x => x is FourthDbContext);
+ }
+ }
+}
diff --git a/framework/test/Volo.Abp.Serialization.Tests/Volo/Abp/Serialization/Objects/CarSerializer.cs b/framework/test/Volo.Abp.Serialization.Tests/Volo/Abp/Serialization/Objects/CarSerializer.cs
index f99cc9e1f9..9d021eb47b 100644
--- a/framework/test/Volo.Abp.Serialization.Tests/Volo/Abp/Serialization/Objects/CarSerializer.cs
+++ b/framework/test/Volo.Abp.Serialization.Tests/Volo/Abp/Serialization/Objects/CarSerializer.cs
@@ -1,7 +1,6 @@
using System.Text.Json;
using Volo.Abp.DependencyInjection;
-
namespace Volo.Abp.Serialization.Objects
{
public class CarSerializer : IObjectSerializer, ITransientDependency
diff --git a/framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/HybridTemplateRendererProvider_Tests.cs b/framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/HybridTemplateRendererProvider_Tests.cs
index f6fffc89a7..2d00ee87d8 100644
--- a/framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/HybridTemplateRendererProvider_Tests.cs
+++ b/framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/HybridTemplateRendererProvider_Tests.cs
@@ -1,5 +1,6 @@
using System.Threading.Tasks;
using Shouldly;
+using Volo.Abp.Localization;
using Xunit;
namespace Volo.Abp.TextTemplating
@@ -16,25 +17,31 @@ namespace Volo.Abp.TextTemplating
[Fact]
public async Task Should_Render_By_Scriban()
{
- (await _templateRenderer.RenderAsync(
- TestTemplates.HybridTemplateScriban,
- model: new
- {
- name = "John"
- }
- )).ShouldBe("Hello John, how are you?");
+ using (CultureHelper.Use("en"))
+ {
+ (await _templateRenderer.RenderAsync(
+ TestTemplates.HybridTemplateScriban,
+ model: new
+ {
+ name = "John"
+ }
+ )).ShouldBe("Hello John, how are you?");
+ }
}
[Fact]
public async Task Should_Render_By_Razor()
{
- (await _templateRenderer.RenderAsync(
- TestTemplates.HybridTemplateRazor,
- model: new HybridModel
- {
- Name = "John"
- }
- )).ShouldBe("Hello John, how are you?");
+ using (CultureHelper.Use("en"))
+ {
+ (await _templateRenderer.RenderAsync(
+ TestTemplates.HybridTemplateRazor,
+ model: new HybridModel
+ {
+ Name = "John"
+ }
+ )).ShouldBe("Hello John, how are you?");
+ }
}
public class HybridModel
diff --git a/modules/account/Volo.Abp.Account.sln b/modules/account/Volo.Abp.Account.sln
index b96627aac9..019ed12315 100644
--- a/modules/account/Volo.Abp.Account.sln
+++ b/modules/account/Volo.Abp.Account.sln
@@ -23,6 +23,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Account.Applicatio
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Account.Blazor", "src\Volo.Abp.Account.Blazor\Volo.Abp.Account.Blazor.csproj", "{EE8858B3-A638-481B-8EB9-74F5E7D43D80}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Account.Installer", "src\Volo.Abp.Account.Installer\Volo.Abp.Account.Installer.csproj", "{EAAB416C-9113-486D-9B54-4DCF78FDC6AB}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -61,6 +63,10 @@ Global
{EE8858B3-A638-481B-8EB9-74F5E7D43D80}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EE8858B3-A638-481B-8EB9-74F5E7D43D80}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EE8858B3-A638-481B-8EB9-74F5E7D43D80}.Release|Any CPU.Build.0 = Release|Any CPU
+ {EAAB416C-9113-486D-9B54-4DCF78FDC6AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {EAAB416C-9113-486D-9B54-4DCF78FDC6AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EAAB416C-9113-486D-9B54-4DCF78FDC6AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {EAAB416C-9113-486D-9B54-4DCF78FDC6AB}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -74,6 +80,7 @@ Global
{7BCA5955-B3F6-41E8-9D5D-D115195C6098} = {B5881429-EFF7-4F30-8C0B-0AC41E36B74E}
{356EAC51-5D55-4852-A8A5-2F90EAC8DAE3} = {12FAE513-7575-4235-89DF-277BA1A3B098}
{EE8858B3-A638-481B-8EB9-74F5E7D43D80} = {B5881429-EFF7-4F30-8C0B-0AC41E36B74E}
+ {EAAB416C-9113-486D-9B54-4DCF78FDC6AB} = {B5881429-EFF7-4F30-8C0B-0AC41E36B74E}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {2B054393-D2B2-4EA8-8A15-D60CBCF3E7A9}
diff --git a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/it.json b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/it.json
index 71d40aabed..a6ed1f5f6c 100644
--- a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/it.json
+++ b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/it.json
@@ -3,16 +3,16 @@
"texts": {
"UserName": "Nome utente",
"EmailAddress": "Indirizzo e-mail",
- "UserNameOrEmailAddress": "Username o Indirizzo Email",
+ "UserNameOrEmailAddress": "Username o Indirizzo e-mail",
"Password": "Password",
- "RememberMe": "Ricordati di me",
+ "RememberMe": "Ricordami",
"UseAnotherServiceToLogin": "Usa un altro servizio per accedere",
- "UserLockedOutMessage": "L'account utente è stato bloccato a causa di tentativi di accesso non validi. Attendi qualche istante e riprova.",
+ "UserLockedOutMessage": "L'account utente è stato bloccato a causa di troppi tentativi di accesso non validi. Attendi qualche istante e riprova.",
"InvalidUserNameOrPassword": "Username o password non validi!",
- "LoginIsNotAllowed": "Non sei autorizzato ad accedere! Il tuo account non è attivo o deve confermare la tua email/numero di telefono.",
- "SelfRegistrationDisabledMessage": "L'auto-registrazione è disabilitata per questa applicazione. Contatta l'amministratore dell'applicazione per registrare un nuovo utente.",
+ "LoginIsNotAllowed": "Non sei autorizzato ad accedere! Il tuo account non è attivo o devi confermare la tua e-mail/numero di telefono.",
+ "SelfRegistrationDisabledMessage": "L'auto-registrazione è disabilitata per questa applicazione. Contatta l'amministratore dell'applicazione per richiedere la registrazione.",
"LocalLoginDisabledMessage": "L'accesso locale è disabilitato per questa applicazione.",
- "Login": "Login",
+ "Login": "Accedi",
"Cancel": "Annulla",
"Register": "Registrati",
"AreYouANewUser": "Sei un nuovo utente?",
@@ -23,7 +23,7 @@
"DisplayName:CurrentPassword": "Password attuale",
"DisplayName:NewPassword": "Nuova password",
"DisplayName:NewPasswordConfirm": "Conferma la nuova password",
- "PasswordChangedMessage": "La tua password è stata cambiata con successo.",
+ "PasswordChangedMessage": "La tua password è stata modificata con successo.",
"DisplayName:UserName": "Nome utente",
"DisplayName:Email": "E-mail",
"DisplayName:Name": "Nome",
@@ -36,18 +36,18 @@
"PasswordChanged": "Password cambiata",
"NewPasswordConfirmFailed": "Conferma la nuova password.",
"Manage": "Gestire",
- "MyAccount": "Il mio conto",
+ "MyAccount": "Il mio account",
"DisplayName:Abp.Account.IsSelfRegistrationEnabled": "L'auto-registrazione è abilitata",
- "Description:Abp.Account.IsSelfRegistrationEnabled": "Se un utente può registrare l'account da solo.",
- "DisplayName:Abp.Account.EnableLocalLogin": "Autentica con un account locale",
+ "Description:Abp.Account.IsSelfRegistrationEnabled": "Indica se un utente può effettuare la registrazione da solo.",
+ "DisplayName:Abp.Account.EnableLocalLogin": "Autenticazione con un account locale",
"Description:Abp.Account.EnableLocalLogin": "Indica se il server consentirà agli utenti di autenticarsi con un account locale.",
"LoggedOutTitle": "Disconnesso",
- "LoggedOutText": "Sei stato disconnesso e verrai reindirizzato presto.",
- "ReturnToText": "Fai clic qui per reindirizzare a {0}",
+ "LoggedOutText": "Sei stato disconnesso e verrai reindirizzato a momenti.",
+ "ReturnToText": "Fai clic qui per essere reindirizzato a {0}",
"OrLoginWith": "Oppure accedi con:",
- "ForgotPassword": "Ha dimenticato la password?",
- "SendPasswordResetLink_Information": "Un link per reimpostare la password verrà inviato alla tua e-mail per reimpostare la password. Se non ricevi un'email entro pochi minuti, riprova.",
- "PasswordResetMailSentMessage": "E-mail di recupero dell'account inviata al tuo indirizzo e-mail. Se non vedi questa email nella tua posta in arrivo entro 15 minuti, cercala nella cartella della posta indesiderata. Se lo trovi lì, contrassegnalo come -Non Junk-.",
+ "ForgotPassword": "Password dimenticata?",
+ "SendPasswordResetLink_Information": "Un link per reimpostare la password verrà inviato alla tua e-mail. Se non ricevi l'e-mail entro pochi minuti, riprova.",
+ "PasswordResetMailSentMessage": "E-mail di recupero dell'account inviata al tuo indirizzo e-mail. Se non vedi questa e-mail nella tua posta in arrivo entro 15 minuti, cercala tra la posta indesiderata e in tal caso, contrassegna il messaggio come -No SPAM-.",
"ResetPassword": "Resetta la password",
"ConfirmPassword": "Conferma (ripeti) la password",
"ResetPassword_Information": "Per favore inserisci la tua nuova password.",
@@ -57,11 +57,11 @@
"ProfileTab:Password": "Cambia la password",
"ProfileTab:PersonalInfo": "Informazioni personali",
"ReturnToApplication": "Torna all'applicazione",
- "Volo.Account:InvalidEmailAddress": "Impossibile trovare l'indirizzo email fornito: {0}",
+ "Volo.Account:InvalidEmailAddress": "Impossibile trovare l'indirizzo e-mail: {0}",
"PasswordReset": "Reimpostazione della password",
- "PasswordResetInfoInEmail": "Abbiamo ricevuto una richiesta di recupero dell'account! Se hai avviato questa richiesta, fai clic sul seguente collegamento per reimpostare la password.",
+ "PasswordResetInfoInEmail": "Abbiamo ricevuto una richiesta di recupero dell'account! Se hai fatto tu questa richiesta fai clic sul seguente collegamento per reimpostare la password.",
"ResetMyPassword": "Reimposta la mia password",
"AccessDenied": "Accesso negato!",
"AccessDeniedMessage": "Non hai accesso a questa risorsa."
}
-}
\ No newline at end of file
+}
diff --git a/modules/account/src/Volo.Abp.Account.Installer/FodyWeavers.xml b/modules/account/src/Volo.Abp.Account.Installer/FodyWeavers.xml
new file mode 100644
index 0000000000..00e1d9a1c1
--- /dev/null
+++ b/modules/account/src/Volo.Abp.Account.Installer/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/modules/account/src/Volo.Abp.Account.Installer/FodyWeavers.xsd b/modules/account/src/Volo.Abp.Account.Installer/FodyWeavers.xsd
new file mode 100644
index 0000000000..3f3946e282
--- /dev/null
+++ b/modules/account/src/Volo.Abp.Account.Installer/FodyWeavers.xsd
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.
+
+
+
+
+ A comma-separated list of error codes that can be safely ignored in assembly verification.
+
+
+
+
+ 'false' to turn off automatic generation of the XML Schema file.
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/account/src/Volo.Abp.Account.Installer/Volo.Abp.Account.Installer.csproj b/modules/account/src/Volo.Abp.Account.Installer/Volo.Abp.Account.Installer.csproj
new file mode 100644
index 0000000000..73df3c03d9
--- /dev/null
+++ b/modules/account/src/Volo.Abp.Account.Installer/Volo.Abp.Account.Installer.csproj
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+ net5.0
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/account/src/Volo.Abp.Account.Installer/Volo/Abp/Account/AbpAccountInstallerModule.cs b/modules/account/src/Volo.Abp.Account.Installer/Volo/Abp/Account/AbpAccountInstallerModule.cs
new file mode 100644
index 0000000000..b1569eac6a
--- /dev/null
+++ b/modules/account/src/Volo.Abp.Account.Installer/Volo/Abp/Account/AbpAccountInstallerModule.cs
@@ -0,0 +1,21 @@
+using Volo.Abp.Modularity;
+using Volo.Abp.Studio;
+using Volo.Abp.VirtualFileSystem;
+
+namespace Volo.Abp.Account
+{
+ [DependsOn(
+ typeof(AbpStudioModuleInstallerModule),
+ typeof(AbpVirtualFileSystemModule)
+ )]
+ public class AbpAccountInstallerModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ Configure(options =>
+ {
+ options.FileSets.AddEmbedded();
+ });
+ }
+ }
+}
diff --git a/modules/account/src/Volo.Abp.Account.Installer/Volo/Abp/Account/AccountInstallerPipelineBuilder.cs b/modules/account/src/Volo.Abp.Account.Installer/Volo/Abp/Account/AccountInstallerPipelineBuilder.cs
new file mode 100644
index 0000000000..29f7a147da
--- /dev/null
+++ b/modules/account/src/Volo.Abp.Account.Installer/Volo/Abp/Account/AccountInstallerPipelineBuilder.cs
@@ -0,0 +1,17 @@
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Studio.ModuleInstalling;
+
+namespace Volo.Abp.Account
+{
+ [Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
+ [ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
+ public class AccountInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
+ {
+ public async Task BuildAsync(ModuleInstallingContext context)
+ {
+ return GetBasePipeline(context);
+ }
+ }
+}
diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Password/AccountProfilePasswordManagementGroupViewComponent.cs b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Password/AccountProfilePasswordManagementGroupViewComponent.cs
index 8bacadfb4a..b2f85a15c9 100644
--- a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Password/AccountProfilePasswordManagementGroupViewComponent.cs
+++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Password/AccountProfilePasswordManagementGroupViewComponent.cs
@@ -11,17 +11,17 @@ namespace Volo.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.P
{
public class AccountProfilePasswordManagementGroupViewComponent : AbpViewComponent
{
- private readonly IProfileAppService _profileAppService;
+ protected IProfileAppService ProfileAppService { get; }
public AccountProfilePasswordManagementGroupViewComponent(
IProfileAppService profileAppService)
{
- _profileAppService = profileAppService;
+ ProfileAppService = profileAppService;
}
- public async Task InvokeAsync()
+ public virtual async Task InvokeAsync()
{
- var user = await _profileAppService.GetAsync();
+ var user = await ProfileAppService.GetAsync();
var model = new ChangePasswordInfoModel
{
diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/AccountProfilePersonalInfoManagementGroupViewComponent.cs b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/AccountProfilePersonalInfoManagementGroupViewComponent.cs
index c9fb2b660e..54b59f17c9 100644
--- a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/AccountProfilePersonalInfoManagementGroupViewComponent.cs
+++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/AccountProfilePersonalInfoManagementGroupViewComponent.cs
@@ -11,19 +11,19 @@ namespace Volo.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.P
{
public class AccountProfilePersonalInfoManagementGroupViewComponent : AbpViewComponent
{
- private readonly IProfileAppService _profileAppService;
+ protected IProfileAppService ProfileAppService { get; }
public AccountProfilePersonalInfoManagementGroupViewComponent(
IProfileAppService profileAppService)
{
- _profileAppService = profileAppService;
+ ProfileAppService = profileAppService;
ObjectMapperContext = typeof(AbpAccountWebModule);
}
- public async Task InvokeAsync()
+ public virtual async Task InvokeAsync()
{
- var user = await _profileAppService.GetAsync();
+ var user = await ProfileAppService.GetAsync();
var model = ObjectMapper.Map(user);
diff --git a/modules/audit-logging/Volo.Abp.AuditLogging.sln b/modules/audit-logging/Volo.Abp.AuditLogging.sln
index 747abf454a..02c68f1ee4 100644
--- a/modules/audit-logging/Volo.Abp.AuditLogging.sln
+++ b/modules/audit-logging/Volo.Abp.AuditLogging.sln
@@ -23,6 +23,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.AuditLogging.Entit
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AuditLogging.MongoDB.Tests", "test\Volo.Abp.AuditLogging.MongoDB.Tests\Volo.Abp.AuditLogging.MongoDB.Tests.csproj", "{9F04C908-F4B9-45B4-BB9A-26A1462D4D7F}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AuditLogging.Installer", "src\Volo.Abp.AuditLogging.Installer\Volo.Abp.AuditLogging.Installer.csproj", "{E5F8A2AD-7D8D-4F9E-B606-737784DC90BA}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -61,6 +63,10 @@ Global
{9F04C908-F4B9-45B4-BB9A-26A1462D4D7F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9F04C908-F4B9-45B4-BB9A-26A1462D4D7F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9F04C908-F4B9-45B4-BB9A-26A1462D4D7F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E5F8A2AD-7D8D-4F9E-B606-737784DC90BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E5F8A2AD-7D8D-4F9E-B606-737784DC90BA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E5F8A2AD-7D8D-4F9E-B606-737784DC90BA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E5F8A2AD-7D8D-4F9E-B606-737784DC90BA}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -74,6 +80,7 @@ Global
{6CDB588F-B5FD-4F2A-9599-49ACE2D7AF83} = {971E31E2-FC37-41D3-8B6E-96848105C446}
{CBED3E11-0A33-4B56-A75C-A57D25C98C38} = {971E31E2-FC37-41D3-8B6E-96848105C446}
{9F04C908-F4B9-45B4-BB9A-26A1462D4D7F} = {971E31E2-FC37-41D3-8B6E-96848105C446}
+ {E5F8A2AD-7D8D-4F9E-B606-737784DC90BA} = {CFAB155F-5255-4D99-94E2-3361D8EA4B15}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {9F36BAE5-A9CF-460C-8E7E-4580347F71F6}
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/FodyWeavers.xml b/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/FodyWeavers.xml
new file mode 100644
index 0000000000..00e1d9a1c1
--- /dev/null
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/FodyWeavers.xsd b/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/FodyWeavers.xsd
new file mode 100644
index 0000000000..3f3946e282
--- /dev/null
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/FodyWeavers.xsd
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.
+
+
+
+
+ A comma-separated list of error codes that can be safely ignored in assembly verification.
+
+
+
+
+ 'false' to turn off automatic generation of the XML Schema file.
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/Volo.Abp.AuditLogging.Installer.csproj b/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/Volo.Abp.AuditLogging.Installer.csproj
new file mode 100644
index 0000000000..27ab25e369
--- /dev/null
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/Volo.Abp.AuditLogging.Installer.csproj
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+ net5.0
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/Volo/Abp/AuditLogging/AbpAuditLoggingInstallerModule.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/Volo/Abp/AuditLogging/AbpAuditLoggingInstallerModule.cs
new file mode 100644
index 0000000000..d634e7aa60
--- /dev/null
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/Volo/Abp/AuditLogging/AbpAuditLoggingInstallerModule.cs
@@ -0,0 +1,21 @@
+using Volo.Abp.Modularity;
+using Volo.Abp.Studio;
+using Volo.Abp.VirtualFileSystem;
+
+namespace Volo.Abp.AuditLogging
+{
+ [DependsOn(
+ typeof(AbpStudioModuleInstallerModule),
+ typeof(AbpVirtualFileSystemModule)
+ )]
+ public class AbpAuditLoggingInstallerModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ Configure(options =>
+ {
+ options.FileSets.AddEmbedded();
+ });
+ }
+ }
+}
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/Volo/Abp/AuditLogging/AuditLoggingInstallerPipelineBuilder.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/Volo/Abp/AuditLogging/AuditLoggingInstallerPipelineBuilder.cs
new file mode 100644
index 0000000000..ad0128c639
--- /dev/null
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Installer/Volo/Abp/AuditLogging/AuditLoggingInstallerPipelineBuilder.cs
@@ -0,0 +1,24 @@
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Studio.ModuleInstalling;
+
+namespace Volo.Abp.AuditLogging
+{
+ [Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
+ [ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
+ public class AuditLoggingInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
+ {
+ public async Task BuildAsync(ModuleInstallingContext context)
+ {
+ context.AddEfCoreConfigurationMethodDeclaration(
+ new EfCoreConfigurationMethodDeclaration(
+ "Volo.Abp.AuditLogging.EntityFrameworkCore",
+ "ConfigureAuditLogging"
+ )
+ );
+
+ return GetBasePipeline(context);
+ }
+ }
+}
diff --git a/modules/background-jobs/Volo.Abp.BackgroundJobs.sln b/modules/background-jobs/Volo.Abp.BackgroundJobs.sln
index 771eb08b19..2b2d8620a6 100644
--- a/modules/background-jobs/Volo.Abp.BackgroundJobs.sln
+++ b/modules/background-jobs/Volo.Abp.BackgroundJobs.sln
@@ -35,6 +35,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.BackgroundJobs.Dem
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BackgroundJobs.DemoApp.Quartz", "app\Volo.Abp.BackgroundJobs.DemoApp.Quartz\Volo.Abp.BackgroundJobs.DemoApp.Quartz.csproj", "{0146891D-3FF8-4516-94D6-B9EFC37383CD}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BackgroundJobs.Installer", "src\Volo.Abp.BackgroundJobs.Installer\Volo.Abp.BackgroundJobs.Installer.csproj", "{FCD1EFC7-28D6-40F5-8C9A-7DE0328D6758}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -93,6 +95,10 @@ Global
{0146891D-3FF8-4516-94D6-B9EFC37383CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0146891D-3FF8-4516-94D6-B9EFC37383CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0146891D-3FF8-4516-94D6-B9EFC37383CD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FCD1EFC7-28D6-40F5-8C9A-7DE0328D6758}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FCD1EFC7-28D6-40F5-8C9A-7DE0328D6758}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FCD1EFC7-28D6-40F5-8C9A-7DE0328D6758}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FCD1EFC7-28D6-40F5-8C9A-7DE0328D6758}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -111,6 +117,7 @@ Global
{2060AC85-2598-4342-A87C-A684A2C71A37} = {E400416D-2895-4512-9D17-90681EEC7E0A}
{7C8D03F7-165E-478C-A6D6-DC8229EEABB9} = {E400416D-2895-4512-9D17-90681EEC7E0A}
{0146891D-3FF8-4516-94D6-B9EFC37383CD} = {E400416D-2895-4512-9D17-90681EEC7E0A}
+ {FCD1EFC7-28D6-40F5-8C9A-7DE0328D6758} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4324B3B4-B60B-4E3C-91D8-59576B4E26DD}
diff --git a/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp/DemoAppModule.cs b/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp/DemoAppModule.cs
index f64191ea3f..589892c901 100644
--- a/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp/DemoAppModule.cs
+++ b/modules/background-jobs/app/Volo.Abp.BackgroundJobs.DemoApp/DemoAppModule.cs
@@ -1,6 +1,4 @@
-using Microsoft.Extensions.DependencyInjection;
-using Microsoft.Extensions.Logging;
-using Volo.Abp.Autofac;
+using Volo.Abp.Autofac;
using Volo.Abp.BackgroundJobs.DemoApp.Shared;
using Volo.Abp.BackgroundJobs.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
diff --git a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/FodyWeavers.xml b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/FodyWeavers.xml
new file mode 100644
index 0000000000..00e1d9a1c1
--- /dev/null
+++ b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/FodyWeavers.xsd b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/FodyWeavers.xsd
new file mode 100644
index 0000000000..3f3946e282
--- /dev/null
+++ b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/FodyWeavers.xsd
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.
+
+
+
+
+ A comma-separated list of error codes that can be safely ignored in assembly verification.
+
+
+
+
+ 'false' to turn off automatic generation of the XML Schema file.
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/Volo.Abp.BackgroundJobs.Installer.csproj b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/Volo.Abp.BackgroundJobs.Installer.csproj
new file mode 100644
index 0000000000..59bd54205d
--- /dev/null
+++ b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/Volo.Abp.BackgroundJobs.Installer.csproj
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+ net5.0
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/Volo/Abp/BackgroundJobs/AbpBackgroundJobsInstallerModule.cs b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/Volo/Abp/BackgroundJobs/AbpBackgroundJobsInstallerModule.cs
new file mode 100644
index 0000000000..fb1bcf4014
--- /dev/null
+++ b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/Volo/Abp/BackgroundJobs/AbpBackgroundJobsInstallerModule.cs
@@ -0,0 +1,21 @@
+using Volo.Abp.Modularity;
+using Volo.Abp.Studio;
+using Volo.Abp.VirtualFileSystem;
+
+namespace Volo.Abp.BackgroundJobs
+{
+ [DependsOn(
+ typeof(AbpStudioModuleInstallerModule),
+ typeof(AbpVirtualFileSystemModule)
+ )]
+ public class AbpBackgroundJobsInstallerModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ Configure(options =>
+ {
+ options.FileSets.AddEmbedded();
+ });
+ }
+ }
+}
diff --git a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/Volo/Abp/BackgroundJobs/BackgroundJobsInstallerPipelineBuilder.cs b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/Volo/Abp/BackgroundJobs/BackgroundJobsInstallerPipelineBuilder.cs
new file mode 100644
index 0000000000..8011bd2272
--- /dev/null
+++ b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer/Volo/Abp/BackgroundJobs/BackgroundJobsInstallerPipelineBuilder.cs
@@ -0,0 +1,24 @@
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Studio.ModuleInstalling;
+
+namespace Volo.Abp.BackgroundJobs
+{
+ [Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
+ [ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
+ public class BackgroundJobsInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
+ {
+ public async Task BuildAsync(ModuleInstallingContext context)
+ {
+ context.AddEfCoreConfigurationMethodDeclaration(
+ new EfCoreConfigurationMethodDeclaration(
+ "Volo.Abp.BackgroundJobs.EntityFrameworkCore",
+ "ConfigureBackgroundJobs"
+ )
+ );
+
+ return GetBasePipeline(context);
+ }
+ }
+}
diff --git a/modules/basic-theme/Volo.Abp.BasicTheme.abpmdl.json b/modules/basic-theme/Volo.Abp.BasicTheme.abpmdl.json
new file mode 100644
index 0000000000..23dcc2e243
--- /dev/null
+++ b/modules/basic-theme/Volo.Abp.BasicTheme.abpmdl.json
@@ -0,0 +1,38 @@
+{
+ "folders": {
+ "items": {
+ "src": {},
+ "test": {}
+ }
+ },
+ "packages": {
+ "Volo.Abp.AspNetCore.Components.Server.BasicTheme": {
+ "path": "src/Volo.Abp.AspNetCore.Components.Server.BasicTheme/Volo.Abp.AspNetCore.Components.Server.BasicTheme.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.Abp.AspNetCore.Components.Web.BasicTheme": {
+ "path": "src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Volo.Abp.AspNetCore.Components.Web.BasicTheme.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme": {
+ "path": "src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic": {
+ "path": "src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo": {
+ "path": "test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.abppkg.json",
+ "folder": "test"
+ },
+ "Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo": {
+ "path": "test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.abppkg.json",
+ "folder": "test"
+ },
+ "Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests": {
+ "path": "test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests.abppkg.json",
+ "folder": "test"
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/basic-theme/Volo.Abp.BasicTheme.abpsln.json b/modules/basic-theme/Volo.Abp.BasicTheme.abpsln.json
new file mode 100644
index 0000000000..97199e5fa6
--- /dev/null
+++ b/modules/basic-theme/Volo.Abp.BasicTheme.abpsln.json
@@ -0,0 +1,7 @@
+{
+ "modules": {
+ "Volo.Abp.BasicTheme": {
+ "path": "Volo.Abp.BasicTheme.abpmdl.json"
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/basic-theme/Volo.Abp.BasicTheme.sln b/modules/basic-theme/Volo.Abp.BasicTheme.sln
index 3c5add1f6f..2e65f7a98d 100644
--- a/modules/basic-theme/Volo.Abp.BasicTheme.sln
+++ b/modules/basic-theme/Volo.Abp.BasicTheme.sln
@@ -18,6 +18,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Mvc.UI.
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests", "test\Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests\Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests.csproj", "{8C336CB8-F7A9-4203-AE55-D8F5FDB2A958}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BasicTheme.Installer", "src\Volo.Abp.BasicTheme.Installer\Volo.Abp.BasicTheme.Installer.csproj", "{3068A87F-3348-4981-8241-2630BC496117}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -52,6 +54,10 @@ Global
{8C336CB8-F7A9-4203-AE55-D8F5FDB2A958}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8C336CB8-F7A9-4203-AE55-D8F5FDB2A958}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8C336CB8-F7A9-4203-AE55-D8F5FDB2A958}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3068A87F-3348-4981-8241-2630BC496117}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3068A87F-3348-4981-8241-2630BC496117}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3068A87F-3348-4981-8241-2630BC496117}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3068A87F-3348-4981-8241-2630BC496117}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{C8068E7F-4A04-4755-8976-C2A4C0ADC708} = {ED6D078F-B0A2-48E8-A09D-3B7CDF6CE3D1}
@@ -61,5 +67,6 @@ Global
{7DFA95DB-F3A1-4883-AB03-9B02E540A134} = {0BC55E3B-4964-48E3-A390-2ADD37980149}
{51B491ED-F959-4974-A876-528B5F16BC92} = {0BC55E3B-4964-48E3-A390-2ADD37980149}
{8C336CB8-F7A9-4203-AE55-D8F5FDB2A958} = {0BC55E3B-4964-48E3-A390-2ADD37980149}
+ {3068A87F-3348-4981-8241-2630BC496117} = {ED6D078F-B0A2-48E8-A09D-3B7CDF6CE3D1}
EndGlobalSection
EndGlobal
diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme/Volo.Abp.AspNetCore.Components.Server.BasicTheme.abppkg.json b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme/Volo.Abp.AspNetCore.Components.Server.BasicTheme.abppkg.json
new file mode 100644
index 0000000000..9e26dfeeb6
--- /dev/null
+++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme/Volo.Abp.AspNetCore.Components.Server.BasicTheme.abppkg.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Volo.Abp.AspNetCore.Components.Web.BasicTheme.abppkg.json b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Volo.Abp.AspNetCore.Components.Web.BasicTheme.abppkg.json
new file mode 100644
index 0000000000..9e26dfeeb6
--- /dev/null
+++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Volo.Abp.AspNetCore.Components.Web.BasicTheme.abppkg.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.abppkg.json b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.abppkg.json
new file mode 100644
index 0000000000..9e26dfeeb6
--- /dev/null
+++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.abppkg.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Brand/MainNavbarBrandViewComponent.cs b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Brand/MainNavbarBrandViewComponent.cs
index 9698048412..564b4b70c2 100644
--- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Brand/MainNavbarBrandViewComponent.cs
+++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Brand/MainNavbarBrandViewComponent.cs
@@ -4,7 +4,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Themes.Basic.Components.Brand
{
public class MainNavbarBrandViewComponent : AbpViewComponent
{
- public IViewComponentResult Invoke()
+ public virtual IViewComponentResult Invoke()
{
return View("~/Themes/Basic/Components/Brand/Default.cshtml");
}
diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/MainNavbar/MainNavbarViewComponent.cs b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/MainNavbar/MainNavbarViewComponent.cs
index 96573c9c3b..64f097d24d 100644
--- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/MainNavbar/MainNavbarViewComponent.cs
+++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/MainNavbar/MainNavbarViewComponent.cs
@@ -4,7 +4,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Themes.Basic.Components.MainNav
{
public class MainNavbarViewComponent : AbpViewComponent
{
- public IViewComponentResult Invoke()
+ public virtual IViewComponentResult Invoke()
{
return View("~/Themes/Basic/Components/MainNavbar/Default.cshtml");
}
diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/MainNavbarMenuViewComponent.cs b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/MainNavbarMenuViewComponent.cs
index 72534ecd42..31aeafbc99 100644
--- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/MainNavbarMenuViewComponent.cs
+++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Menu/MainNavbarMenuViewComponent.cs
@@ -6,16 +6,16 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Themes.Basic.Components.Menu
{
public class MainNavbarMenuViewComponent : AbpViewComponent
{
- private readonly IMenuManager _menuManager;
+ protected IMenuManager MenuManager { get; }
public MainNavbarMenuViewComponent(IMenuManager menuManager)
{
- _menuManager = menuManager;
+ MenuManager = menuManager;
}
- public async Task InvokeAsync()
+ public virtual async Task InvokeAsync()
{
- var menu = await _menuManager.GetMainMenuAsync();
+ var menu = await MenuManager.GetMainMenuAsync();
return View("~/Themes/Basic/Components/Menu/Default.cshtml", menu);
}
}
diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/PageAlerts/PageAlertsViewComponent.cs b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/PageAlerts/PageAlertsViewComponent.cs
index c805f20e69..9c99930caf 100644
--- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/PageAlerts/PageAlertsViewComponent.cs
+++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/PageAlerts/PageAlertsViewComponent.cs
@@ -5,16 +5,16 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Themes.Basic.Components.PageAle
{
public class PageAlertsViewComponent : AbpViewComponent
{
- private readonly IAlertManager _alertManager;
+ protected IAlertManager AlertManager { get; }
public PageAlertsViewComponent(IAlertManager alertManager)
{
- _alertManager = alertManager;
+ AlertManager = alertManager;
}
public IViewComponentResult Invoke(string name)
{
- return View("~/Themes/Basic/Components/PageAlerts/Default.cshtml", _alertManager.Alerts);
+ return View("~/Themes/Basic/Components/PageAlerts/Default.cshtml", AlertManager.Alerts);
}
}
}
diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Toolbar/LanguageSwitch/LanguageSwitchViewComponent.cs b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Toolbar/LanguageSwitch/LanguageSwitchViewComponent.cs
index 3dd1ba2b9d..1a8591464d 100644
--- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Toolbar/LanguageSwitch/LanguageSwitchViewComponent.cs
+++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Toolbar/LanguageSwitch/LanguageSwitchViewComponent.cs
@@ -10,16 +10,16 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Themes.Basic.Components.Toolbar
{
public class LanguageSwitchViewComponent : AbpViewComponent
{
- private readonly ILanguageProvider _languageProvider;
+ protected ILanguageProvider LanguageProvider { get; }
public LanguageSwitchViewComponent(ILanguageProvider languageProvider)
{
- _languageProvider = languageProvider;
+ LanguageProvider = languageProvider;
}
- public async Task InvokeAsync()
+ public virtual async Task InvokeAsync()
{
- var languages = await _languageProvider.GetLanguagesAsync();
+ var languages = await LanguageProvider.GetLanguagesAsync();
var currentLanguage = languages.FindByCulture(
CultureInfo.CurrentCulture.Name,
CultureInfo.CurrentUICulture.Name
diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Toolbar/MainNavbarToolbarViewComponent.cs b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Toolbar/MainNavbarToolbarViewComponent.cs
index bfd02bbf4a..df93ec1b6d 100644
--- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Toolbar/MainNavbarToolbarViewComponent.cs
+++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Toolbar/MainNavbarToolbarViewComponent.cs
@@ -6,16 +6,16 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Themes.Basic.Components.Toolbar
{
public class MainNavbarToolbarViewComponent : AbpViewComponent
{
- private readonly IToolbarManager _toolbarManager;
+ protected IToolbarManager ToolbarManager { get; }
public MainNavbarToolbarViewComponent(IToolbarManager toolbarManager)
{
- _toolbarManager = toolbarManager;
+ ToolbarManager = toolbarManager;
}
- public async Task InvokeAsync()
+ public virtual async Task InvokeAsync()
{
- var toolbar = await _toolbarManager.GetAsync(StandardToolbars.Main);
+ var toolbar = await ToolbarManager.GetAsync(StandardToolbars.Main);
return View("~/Themes/Basic/Components/Toolbar/Default.cshtml", toolbar);
}
}
diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Toolbar/UserMenu/UserMenuViewComponent.cs b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Toolbar/UserMenu/UserMenuViewComponent.cs
index cde4208578..d84c48b30a 100644
--- a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Toolbar/UserMenu/UserMenuViewComponent.cs
+++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Components/Toolbar/UserMenu/UserMenuViewComponent.cs
@@ -6,16 +6,16 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Themes.Basic.Components.Toolbar
{
public class UserMenuViewComponent : AbpViewComponent
{
- private readonly IMenuManager _menuManager;
+ protected IMenuManager MenuManager { get; }
public UserMenuViewComponent(IMenuManager menuManager)
{
- _menuManager = menuManager;
+ MenuManager = menuManager;
}
- public async Task InvokeAsync()
+ public virtual async Task InvokeAsync()
{
- var menu = await _menuManager.GetAsync(StandardMenus.User);
+ var menu = await MenuManager.GetAsync(StandardMenus.User);
return View("~/Themes/Basic/Components/Toolbar/UserMenu/Default.cshtml", menu);
}
}
diff --git a/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.abppkg.json b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.abppkg.json
new file mode 100644
index 0000000000..9e26dfeeb6
--- /dev/null
+++ b/modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.abppkg.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/FodyWeavers.xml b/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/FodyWeavers.xml
new file mode 100644
index 0000000000..00e1d9a1c1
--- /dev/null
+++ b/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/FodyWeavers.xsd b/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/FodyWeavers.xsd
new file mode 100644
index 0000000000..3f3946e282
--- /dev/null
+++ b/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/FodyWeavers.xsd
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.
+
+
+
+
+ A comma-separated list of error codes that can be safely ignored in assembly verification.
+
+
+
+
+ 'false' to turn off automatic generation of the XML Schema file.
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/Volo.Abp.BasicTheme.Installer.csproj b/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/Volo.Abp.BasicTheme.Installer.csproj
new file mode 100644
index 0000000000..8a4b219092
--- /dev/null
+++ b/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/Volo.Abp.BasicTheme.Installer.csproj
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+ net5.0
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/Volo/Abp/BasicTheme/AbpBasicThemeInstallerModule.cs b/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/Volo/Abp/BasicTheme/AbpBasicThemeInstallerModule.cs
new file mode 100644
index 0000000000..6339bb05be
--- /dev/null
+++ b/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/Volo/Abp/BasicTheme/AbpBasicThemeInstallerModule.cs
@@ -0,0 +1,21 @@
+using Volo.Abp.Modularity;
+using Volo.Abp.Studio;
+using Volo.Abp.VirtualFileSystem;
+
+namespace Volo.Abp.BasicTheme
+{
+ [DependsOn(
+ typeof(AbpStudioModuleInstallerModule),
+ typeof(AbpVirtualFileSystemModule)
+ )]
+ public class AbpBasicThemeInstallerModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ Configure(options =>
+ {
+ options.FileSets.AddEmbedded();
+ });
+ }
+ }
+}
diff --git a/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/Volo/Abp/BasicTheme/BasicThemeInstallerPipelineBuilder.cs b/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/Volo/Abp/BasicTheme/BasicThemeInstallerPipelineBuilder.cs
new file mode 100644
index 0000000000..e90238130b
--- /dev/null
+++ b/modules/basic-theme/src/Volo.Abp.BasicTheme.Installer/Volo/Abp/BasicTheme/BasicThemeInstallerPipelineBuilder.cs
@@ -0,0 +1,17 @@
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Studio.ModuleInstalling;
+
+namespace Volo.Abp.BasicTheme
+{
+ [Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
+ [ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
+ public class BasicThemeInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
+ {
+ public async Task BuildAsync(ModuleInstallingContext context)
+ {
+ return GetBasePipeline(context);
+ }
+ }
+}
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests.abppkg.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests.abppkg.json
new file mode 100644
index 0000000000..a686451fbc
--- /dev/null
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.Tests.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.test"
+}
\ No newline at end of file
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.abppkg.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.abppkg.json
new file mode 100644
index 0000000000..9e26dfeeb6
--- /dev/null
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo.abppkg.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json
index ca739c8c9a..0c2981215c 100644
--- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json
@@ -3,7 +3,7 @@
"name": "asp.net",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.shared": "^5.0.0-beta.1",
+ "@abp/aspnetcore.mvc.ui.theme.shared": "^5.0.0-beta.2",
"highlight.js": "^9.13.1"
},
"devDependencies": {}
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
index 1fee6e798d..d7b5d2d9c4 100644
--- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
@@ -1,4 +1,6 @@
/*
https://select2.org/troubleshooting/common-problems
*/
-$.fn.modal.Constructor.prototype._enforceFocus = function () { };
\ No newline at end of file
+if ($.fn.modal) {
+ $.fn.modal.Constructor.prototype._enforceFocus = function () { };
+}
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock
index 09b85c69ce..f33c36ec71 100644
--- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock
@@ -2,30 +2,30 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.shared@^5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.1.tgz#25596652bb3f7b6bac5bbd966a731144cd9646c6"
- integrity sha512-N4SHu6rn8alK4jdve00IscngrfvqJNEjrwQclXNmP9c4NtPuVM9emZdxBzKF8jFb6Hz8HiwM9H3xV/SjKCS/7A==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.1"
- "@abp/bootstrap" "~5.0.0-beta.1"
- "@abp/bootstrap-datepicker" "~5.0.0-beta.1"
- "@abp/datatables.net-bs4" "~5.0.0-beta.1"
- "@abp/font-awesome" "~5.0.0-beta.1"
- "@abp/jquery-form" "~5.0.0-beta.1"
- "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.1"
- "@abp/lodash" "~5.0.0-beta.1"
- "@abp/luxon" "~5.0.0-beta.1"
- "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.1"
- "@abp/select2" "~5.0.0-beta.1"
- "@abp/sweetalert2" "~5.0.0-beta.1"
- "@abp/timeago" "~5.0.0-beta.1"
- "@abp/toastr" "~5.0.0-beta.1"
-
-"@abp/aspnetcore.mvc.ui@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.1.tgz#30c14386899596bf91e8871810dbaa1a0e51e996"
- integrity sha512-pabiGHghC62eg95RfAncEt0+yGdBxdMmyqCXV+Be4JjaMz/hGZIDOPIYnaqCayZtyMmIRqG6IAwi99DqBjkQAQ==
+"@abp/aspnetcore.mvc.ui.theme.shared@^5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.2.tgz#8c58d252f1a39f91c2c287b91691e5bd772f4918"
+ integrity sha512-l4suGM7PjGTw/MEg2f2BdbRXYzALhZQUSijzKIQTy5dwcA/JQPsLbezPzGy45fD3lXsYxBwS4QaOmofTosKkug==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.2"
+ "@abp/bootstrap" "~5.0.0-beta.2"
+ "@abp/bootstrap-datepicker" "~5.0.0-beta.2"
+ "@abp/datatables.net-bs4" "~5.0.0-beta.2"
+ "@abp/font-awesome" "~5.0.0-beta.2"
+ "@abp/jquery-form" "~5.0.0-beta.2"
+ "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.2"
+ "@abp/lodash" "~5.0.0-beta.2"
+ "@abp/luxon" "~5.0.0-beta.2"
+ "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.2"
+ "@abp/select2" "~5.0.0-beta.2"
+ "@abp/sweetalert2" "~5.0.0-beta.2"
+ "@abp/timeago" "~5.0.0-beta.2"
+ "@abp/toastr" "~5.0.0-beta.2"
+
+"@abp/aspnetcore.mvc.ui@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.2.tgz#c30d9905e133451208e379f7173ed9c44dd5f487"
+ integrity sha512-8Dzfg5SzeVoXz/nY11o2u3y7ZQdUW/zVSYVTgbsCMC1HCe2yzptpr2XI0Goz8jQKgz0G+zg3iwfeur7vNoaoMw==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@@ -34,145 +34,145 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
-"@abp/bootstrap-datepicker@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.1.tgz#727e0f7305a94c95ece152ffff011bcff621f46d"
- integrity sha512-txhdlJqyO2D9MkGLYgrsiDaC58cb2eCpk2uxoqqQeVWvuRPo/L+9rCBk+bu6J37FGJtU8aabtHJyR5xnYbv0TQ==
+"@abp/bootstrap-datepicker@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.2.tgz#dbf92485225a424f0e53e55c3ef8c993943682f0"
+ integrity sha512-jJWVKrkKcUMEqwBrEqhGD1zDFD8b0b3j0WdlzKuzlw26AaQkfE4LQ9Gjfjs+RnTW1LxPn8rGP8QCgdVeWMNjQQ==
dependencies:
bootstrap-datepicker "^1.9.0"
-"@abp/bootstrap@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.1.tgz#075a15459ff8e3896b6553786e6c8f091c6ffcad"
- integrity sha512-W8z6qSAsRoXmG0++xH6Bk1oRc90hFqVcjKI+5XgBQhUUCn2qBruBYOKFxPg2GeT2f1k9K5TrCEnnVrh0sOP9/A==
+"@abp/bootstrap@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.2.tgz#0faaa85871fd23076dd597dce83dc3020b1ff950"
+ integrity sha512-zy0DUcAJuX+Oeu4csw7XbyLGq/YdfonMLJt/Mkpq8CjAssD7n7aJK6PwG+akaI4giSQd7Sc1JvvnKRMRzyxy1Q==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
bootstrap "^4.6.0"
bootstrap-v4-rtl "4.6.0-1"
-"@abp/core@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.1.tgz#6cff06b13529ab9d7a6ddc4e89dc40616e6b7739"
- integrity sha512-TK1CnurJIK/SXfsNTk6HSpxdaJgVxwvqNd4F3fxCC0Uj8s5viD3TAGk39Hkp4909WGfNrRq8BEUNvTYM/rP6gg==
+"@abp/core@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.2.tgz#f9643d21b19128be3ad58b23083e1fc9620f2102"
+ integrity sha512-AHlJQF5NC+yNsj5xILHk1CF++Z93aQDNp0zdJciDqIexH9lEJ+AQCX2EKLn0yjWt4Ga00pOOmQM5vJVJjuJCEw==
dependencies:
- "@abp/utils" "^5.0.0-beta.1"
+ "@abp/utils" "^5.0.0-beta.2"
-"@abp/datatables.net-bs4@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.1.tgz#110d7d8cf1c15db7432d8f0649f4317ba8de10dd"
- integrity sha512-CPodZP9pqLdwnFZ77/mcSfuhyK1WMi/c+9VWpGXFQSGaABNKPP2UIdAChwUcBRdGkZRa/IhXx3CCr1ZMLpJsMQ==
+"@abp/datatables.net-bs4@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.2.tgz#3afb32918f59b55c68d3d37b2c1f0bf49bb06fc8"
+ integrity sha512-t6YserKkBId7KnT46uYaGw6HJrf8tcLp4bJmGyUSnCwVlgJcha/P6fr3pKWqFz9QPGk5riCZF3hK6x1BH9u71g==
dependencies:
- "@abp/datatables.net" "~5.0.0-beta.1"
+ "@abp/datatables.net" "~5.0.0-beta.2"
datatables.net-bs4 "^1.10.21"
-"@abp/datatables.net@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.1.tgz#8e784a011d33de154554f3239c448fcfd8adb713"
- integrity sha512-mRMYqTCoYLmDLvL+CvmwUS4JqCqdkn6mxHd7zgkaR04xlGLEmNae5aGbs1wURJ86MOWrHbfkx66lQjkul3zbQw==
+"@abp/datatables.net@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.2.tgz#fc87be76ebec94b16c6734c2249ea8a0a04a83b8"
+ integrity sha512-aEAlej1wNtxsxpwlw2GFOV0tFSZ7MWA+Wpfi5QZ4VIbYHSIkhEnz0apiNMBsoB8i7VJLJKZuKvynlJWYABNk0Q==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
datatables.net "^1.10.21"
-"@abp/font-awesome@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.1.tgz#3ae721c447a009601226c381a20dc4adabe154e1"
- integrity sha512-fsMqwApogZ1rAogStQxBX/Nh8akXPW/Alm8UayfK6TXIkPPjBz5RQSHfdlosG7M/U3mwUNGcLlaDvQXsE/nqow==
+"@abp/font-awesome@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.2.tgz#10a920fb20294f7ccd404ea2b302fb11f68f0705"
+ integrity sha512-Mmhfm7g5HdflvqbZOZDKk335IlY8ipwtKsCQ1qRaobsMpWi2AFh6/P/XX7y4H5p0wH5cluUsSzS1QB37QXp36w==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
"@fortawesome/fontawesome-free" "^5.13.0"
-"@abp/jquery-form@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.1.tgz#d13f4cffce48125547b9da57cfc407f9a35a89e6"
- integrity sha512-RYE90XIDxWkvxO5ukuZ2PHk6aA/o7NQKLcR9WsN1G2xTU/frrNPgtruGRTIj7Nx3BPUeMp7EAN2rYZwglcnO5g==
+"@abp/jquery-form@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.2.tgz#4b685858d54eafac123995ebfea759c769e49cab"
+ integrity sha512-ekytRAvAUNKJAPiR5i7kxASh5j3D5jabO1GHbPwq6UzapGLMzG5r8s6/1b4eX+4Zorfy+TmERNeUsWvQwf3P1A==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
jquery-form "^4.3.0"
-"@abp/jquery-validation-unobtrusive@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.1.tgz#93ff6ee92bccdde77816bfb434e967fd142f6b83"
- integrity sha512-LZE1KIALGBCINdWrHzoGczekUFtKwbXbLIgb4ZgiipO5Xja7py/iVvts10QWqUzhnBk+kmbHbj+KnjdqP4Z8pQ==
+"@abp/jquery-validation-unobtrusive@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.2.tgz#392ab72716baea26e6f560e2369d09f8c5488d3b"
+ integrity sha512-PyiWj0hj5jkjcZ1oJeLXYuoVCIAg51X4y6iLbcb1SpAbqYQP23gilDJK8xkURbysGPMiDq+7tOiKAnGiHSBnWA==
dependencies:
- "@abp/jquery-validation" "~5.0.0-beta.1"
+ "@abp/jquery-validation" "~5.0.0-beta.2"
jquery-validation-unobtrusive "^3.2.11"
-"@abp/jquery-validation@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.1.tgz#2964ca1266b087e4c4c0e768bfc4bfe0284e4ff5"
- integrity sha512-ZDNdkPy2ZNu0EYDNH20Oh9R3bICCYv9CbEj4zZ8Qavixo9VTkybY3BW0nYjcu1yb1P92gZPp80W8vyfxSo//kw==
+"@abp/jquery-validation@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.2.tgz#233eda5998ae566daeb945d8508999da2ef75a51"
+ integrity sha512-jKY0yfRgM5RGlJeQCGKkkczx5qptpPkhqWr4x+ffTUzR+ywF9FHUB5zcbELpEyWuOJ9cilap2hga2lvPZ8c+Pg==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
jquery-validation "^1.19.2"
-"@abp/jquery@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.1.tgz#360e7a164b6b4ce615a5ad91a1c78ef6893648f3"
- integrity sha512-v2t+76L45tlbpGeVR39GurZl60Rj1pR/TdUidpP6zwnpx1Y3I+CvlJNDwTESeE/ixTOT3PyFbXoMEi6hI+v39A==
+"@abp/jquery@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.2.tgz#62fa64fcc0bd5dca4b5e7534b24205a3f0461f08"
+ integrity sha512-tMzjo9qQAgJDYPvLk67YNlnOOUSTUfPWodlqfl5vvo6/NHSsB9eJhXH28txEtygX0o/Mepi9Ag87dL9VLh0DEw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
jquery "~3.6.0"
-"@abp/lodash@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.1.tgz#618797bde42b17f91d7f99fdd5f24cb5e8a361b3"
- integrity sha512-WsUjzHRZ6RkSMd5PTw0oWijDbbq/Wgonv8++ufUZi1WK5spZi9ohjcYM4io3Ms3fG+g4pWznaicYraMpV5tcsQ==
+"@abp/lodash@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.2.tgz#c821eb502de3211f94ca2f7ba8a5c0b0677c5c9b"
+ integrity sha512-lW8lz1JG8kweVOWVCB7jC6xxLUE0G6MJfwv4g0+eKwFLgsAO5dK6Yk4xZi+UXgST73OgGt5LIQJcS4+aCo/zmg==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
lodash "^4.17.15"
-"@abp/luxon@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.1.tgz#fc81fcbfb592d3baf7b9856b3cecf5b86df4bfdf"
- integrity sha512-t4lhJ/wr1rAVH1/bnzmc8niZYvolTuXUB0h6A6UYaw205QyNtimzusYkTwkc+Z3xHFUrkLCoG7J2SVoCJuioaA==
+"@abp/luxon@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.2.tgz#64c68c3091415153c8c470fb3e5650bbc00500d1"
+ integrity sha512-0mSVsycWEo5hamEuR7Mqw00JnVRlhQvpy8Bks58d7bRksIQzK8iPx9advTbP2ICF3iz9zHT9MJrMXYfvUT6oIQ==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
luxon "^1.24.1"
-"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.1.tgz#7af43d30af9b1f741fd9d9559d100aa4a5c52ae9"
- integrity sha512-B195PC4/75W0EXjGEQUd/ZARb/eGWj8DX7hq3K+J+lUWzWu46dZy8s5bBij78HqxS91/q6nbxU35Z+E9xl6ICg==
+"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.2.tgz#6c030cfe1e123be0a81f769dedd6a6b22aed9077"
+ integrity sha512-ZEkCMMDKe26b/sCArQjDOGEm8+lQB9Uis17FNyHDt/vA+FdtaPJjeLOqmfzMeLQYppvefH+JCpGzfaWwCNZmcw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/select2@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.1.tgz#15988165fcfed2ebc2b8d097965e2dc1984af35e"
- integrity sha512-SF+NkWDJNz1EeEimW5luaCMPTNN1oPzEWs47usPJo8m7HfijEvF3rymJ8jL5zWIOo05Tx3HUurLSVz0qu4vZsw==
+"@abp/select2@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.2.tgz#f5e74d56ccdabde61825453044f31fa183573b58"
+ integrity sha512-ApL7ioC4p5GguQM2KfnqtGrJ9TqBRiQh1v+y1J2Z3Lh18SJU+tsA3f9Va9ZyZNIFrpV3Bsmim2cIu7bjm7IBRw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
select2 "^4.0.13"
-"@abp/sweetalert2@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.1.tgz#c6a1185f39d3207f67753e7c486eddcefc7fd0da"
- integrity sha512-ADotpiMkIzHLy/ufK0q49V9hgF8oKE0rLRzVZV2dHBpmFR7YRcPdbb5AN9CiXDk6ol8nsocEEAwRmgD3eJG63w==
+"@abp/sweetalert2@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.2.tgz#164c1df63c2859fa5277673906f85cc8e7e2d1ef"
+ integrity sha512-UdENhKcfywOorjTf4+CxDO8UUet9lYAIDH2r+Kd1qjFKIDDu6w3TfJ7Gz108VG84+RsUevfVLgZ8qeYsA+drKQ==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
sweetalert2 "^11.0.18"
-"@abp/timeago@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.1.tgz#0f7bb8cd85b7e90d7d5c0a0940b9102e3f4f1e42"
- integrity sha512-QwYZyeDRW+X8BGecBcK1SgsClVWNYfPgvct+WkQhTIRxzbP/c1c+1irj69sNdN3df2WLnmjfu3sBw2hzz5ykbg==
+"@abp/timeago@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.2.tgz#7a6242e6cc403addf172ebf18ffb3513d4b30f21"
+ integrity sha512-wdXaKd0dBJP0mawzHqE04YWUgpUYzq8vJHGH3QGf9RpB+XpMztt1KNHR6d32VylDAEoPEtB7GH4rVvlimKa48g==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
timeago "^1.6.7"
-"@abp/toastr@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.1.tgz#d420fc5db6b15f6d623d3928bb6913996511937f"
- integrity sha512-82LfDrZQagtv4QLb643VTra4pxleOq5xYwhpOK1Ifop2K5CRgElxKfWvY2EtxdGkpCO2arvkOzjRNbxnecHB2w==
+"@abp/toastr@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.2.tgz#924f5315d3ade6ee41869d8809b625116c5b02f1"
+ integrity sha512-iqmgO/8AwORzYKf/43+Fx/478la0w+g+mrDahzokPlZFv6WUvFL3QSD/fs1mjc2yUOxEuvgprEiEfWoZcrwtNA==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
toastr "^2.1.4"
-"@abp/utils@^5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.1.tgz#e1bf9240738276081c89a67073d9d85205fdf14c"
- integrity sha512-suzKxHUautizxt5XdlJ8ONIaVMcAHrb2dp1kEnXnFRW1ip+7ZQ9/nxJj+GtY1MhHX2yPmlUQP2K8f2upJh9aoA==
+"@abp/utils@^5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.2.tgz#4d120c0f930b943071b4ba27dafedf6c8b730182"
+ integrity sha512-EZV1P+eafVBEHO6B+Ws6iX4xyeg8B6nCPLvpaFC6mStk7SGidh2rAYYWyydyh68Ky8YdbLYQE3oPaIewOhDWTg==
dependencies:
just-compare "^1.3.0"
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.abppkg.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.abppkg.json
new file mode 100644
index 0000000000..9e26dfeeb6
--- /dev/null
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.abppkg.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json
index f67052ed21..9371ef895f 100644
--- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json
@@ -3,8 +3,8 @@
"name": "asp.net",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.1",
- "@abp/prismjs": "^5.0.0-beta.1"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.2",
+ "@abp/prismjs": "^5.0.0-beta.2"
},
"devDependencies": {}
}
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
index 1fee6e798d..d7b5d2d9c4 100644
--- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
@@ -1,4 +1,6 @@
/*
https://select2.org/troubleshooting/common-problems
*/
-$.fn.modal.Constructor.prototype._enforceFocus = function () { };
\ No newline at end of file
+if ($.fn.modal) {
+ $.fn.modal.Constructor.prototype._enforceFocus = function () { };
+}
diff --git a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock
index adea4202c3..f8dea02e55 100644
--- a/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock
+++ b/modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock
@@ -2,37 +2,37 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@^5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.0-beta.1.tgz#2c78c2bd977a67f6c2ed77cfcd404cf9533eaaae"
- integrity sha512-b8Boztxd5NbaDlXQvgHXHtw8ZNgM4tEgo14kw/bN3mcLx05fWLGd8Lzfdi7i+Ju6U3rKbgi+0MSbga93A0KSmg==
- dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.1"
-
-"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.1.tgz#25596652bb3f7b6bac5bbd966a731144cd9646c6"
- integrity sha512-N4SHu6rn8alK4jdve00IscngrfvqJNEjrwQclXNmP9c4NtPuVM9emZdxBzKF8jFb6Hz8HiwM9H3xV/SjKCS/7A==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.1"
- "@abp/bootstrap" "~5.0.0-beta.1"
- "@abp/bootstrap-datepicker" "~5.0.0-beta.1"
- "@abp/datatables.net-bs4" "~5.0.0-beta.1"
- "@abp/font-awesome" "~5.0.0-beta.1"
- "@abp/jquery-form" "~5.0.0-beta.1"
- "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.1"
- "@abp/lodash" "~5.0.0-beta.1"
- "@abp/luxon" "~5.0.0-beta.1"
- "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.1"
- "@abp/select2" "~5.0.0-beta.1"
- "@abp/sweetalert2" "~5.0.0-beta.1"
- "@abp/timeago" "~5.0.0-beta.1"
- "@abp/toastr" "~5.0.0-beta.1"
-
-"@abp/aspnetcore.mvc.ui@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.1.tgz#30c14386899596bf91e8871810dbaa1a0e51e996"
- integrity sha512-pabiGHghC62eg95RfAncEt0+yGdBxdMmyqCXV+Be4JjaMz/hGZIDOPIYnaqCayZtyMmIRqG6IAwi99DqBjkQAQ==
+"@abp/aspnetcore.mvc.ui.theme.basic@^5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.0-beta.2.tgz#077d1edd88f2f1ccb5c8227180a75e3121eece19"
+ integrity sha512-b7f05Fza18NYHudrHosYuCX/UJ/Y3KYJrJMHqdvAsZYu0t3dc7EMWKYTDA/+rDEO8iV/83twRYfHLf0tmVyc1Q==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.2"
+
+"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.2.tgz#8c58d252f1a39f91c2c287b91691e5bd772f4918"
+ integrity sha512-l4suGM7PjGTw/MEg2f2BdbRXYzALhZQUSijzKIQTy5dwcA/JQPsLbezPzGy45fD3lXsYxBwS4QaOmofTosKkug==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.2"
+ "@abp/bootstrap" "~5.0.0-beta.2"
+ "@abp/bootstrap-datepicker" "~5.0.0-beta.2"
+ "@abp/datatables.net-bs4" "~5.0.0-beta.2"
+ "@abp/font-awesome" "~5.0.0-beta.2"
+ "@abp/jquery-form" "~5.0.0-beta.2"
+ "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.2"
+ "@abp/lodash" "~5.0.0-beta.2"
+ "@abp/luxon" "~5.0.0-beta.2"
+ "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.2"
+ "@abp/select2" "~5.0.0-beta.2"
+ "@abp/sweetalert2" "~5.0.0-beta.2"
+ "@abp/timeago" "~5.0.0-beta.2"
+ "@abp/toastr" "~5.0.0-beta.2"
+
+"@abp/aspnetcore.mvc.ui@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.2.tgz#c30d9905e133451208e379f7173ed9c44dd5f487"
+ integrity sha512-8Dzfg5SzeVoXz/nY11o2u3y7ZQdUW/zVSYVTgbsCMC1HCe2yzptpr2XI0Goz8jQKgz0G+zg3iwfeur7vNoaoMw==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@@ -41,162 +41,162 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
-"@abp/bootstrap-datepicker@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.1.tgz#727e0f7305a94c95ece152ffff011bcff621f46d"
- integrity sha512-txhdlJqyO2D9MkGLYgrsiDaC58cb2eCpk2uxoqqQeVWvuRPo/L+9rCBk+bu6J37FGJtU8aabtHJyR5xnYbv0TQ==
+"@abp/bootstrap-datepicker@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.2.tgz#dbf92485225a424f0e53e55c3ef8c993943682f0"
+ integrity sha512-jJWVKrkKcUMEqwBrEqhGD1zDFD8b0b3j0WdlzKuzlw26AaQkfE4LQ9Gjfjs+RnTW1LxPn8rGP8QCgdVeWMNjQQ==
dependencies:
bootstrap-datepicker "^1.9.0"
-"@abp/bootstrap@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.1.tgz#075a15459ff8e3896b6553786e6c8f091c6ffcad"
- integrity sha512-W8z6qSAsRoXmG0++xH6Bk1oRc90hFqVcjKI+5XgBQhUUCn2qBruBYOKFxPg2GeT2f1k9K5TrCEnnVrh0sOP9/A==
+"@abp/bootstrap@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.2.tgz#0faaa85871fd23076dd597dce83dc3020b1ff950"
+ integrity sha512-zy0DUcAJuX+Oeu4csw7XbyLGq/YdfonMLJt/Mkpq8CjAssD7n7aJK6PwG+akaI4giSQd7Sc1JvvnKRMRzyxy1Q==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
bootstrap "^4.6.0"
bootstrap-v4-rtl "4.6.0-1"
-"@abp/clipboard@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-5.0.0-beta.1.tgz#7c46ffe185116b1d3e43ef389df9dae2b98dd0c9"
- integrity sha512-Gsr8qZNhxoH7uH+Kd0Q7qrQdGAjU20r65zjBI7iUgtpP/18obm87SUZLPDobZLAf+UB/Wl9VnxvedyLYDnuQGQ==
+"@abp/clipboard@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-5.0.0-beta.2.tgz#a7c7cbb090a5fad8744d6de48b9aa0deeda60d0f"
+ integrity sha512-rhJkXD3/6z5lXmN39uhXavMSSue+/D9h2SXs3HaBMzgAIJUI/qHPrHOAOMUdXT/jKiO+EQtLzLH8V/5nJtvIZQ==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
clipboard "^2.0.6"
-"@abp/core@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.1.tgz#6cff06b13529ab9d7a6ddc4e89dc40616e6b7739"
- integrity sha512-TK1CnurJIK/SXfsNTk6HSpxdaJgVxwvqNd4F3fxCC0Uj8s5viD3TAGk39Hkp4909WGfNrRq8BEUNvTYM/rP6gg==
+"@abp/core@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.2.tgz#f9643d21b19128be3ad58b23083e1fc9620f2102"
+ integrity sha512-AHlJQF5NC+yNsj5xILHk1CF++Z93aQDNp0zdJciDqIexH9lEJ+AQCX2EKLn0yjWt4Ga00pOOmQM5vJVJjuJCEw==
dependencies:
- "@abp/utils" "^5.0.0-beta.1"
+ "@abp/utils" "^5.0.0-beta.2"
-"@abp/datatables.net-bs4@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.1.tgz#110d7d8cf1c15db7432d8f0649f4317ba8de10dd"
- integrity sha512-CPodZP9pqLdwnFZ77/mcSfuhyK1WMi/c+9VWpGXFQSGaABNKPP2UIdAChwUcBRdGkZRa/IhXx3CCr1ZMLpJsMQ==
+"@abp/datatables.net-bs4@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.2.tgz#3afb32918f59b55c68d3d37b2c1f0bf49bb06fc8"
+ integrity sha512-t6YserKkBId7KnT46uYaGw6HJrf8tcLp4bJmGyUSnCwVlgJcha/P6fr3pKWqFz9QPGk5riCZF3hK6x1BH9u71g==
dependencies:
- "@abp/datatables.net" "~5.0.0-beta.1"
+ "@abp/datatables.net" "~5.0.0-beta.2"
datatables.net-bs4 "^1.10.21"
-"@abp/datatables.net@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.1.tgz#8e784a011d33de154554f3239c448fcfd8adb713"
- integrity sha512-mRMYqTCoYLmDLvL+CvmwUS4JqCqdkn6mxHd7zgkaR04xlGLEmNae5aGbs1wURJ86MOWrHbfkx66lQjkul3zbQw==
+"@abp/datatables.net@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.2.tgz#fc87be76ebec94b16c6734c2249ea8a0a04a83b8"
+ integrity sha512-aEAlej1wNtxsxpwlw2GFOV0tFSZ7MWA+Wpfi5QZ4VIbYHSIkhEnz0apiNMBsoB8i7VJLJKZuKvynlJWYABNk0Q==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
datatables.net "^1.10.21"
-"@abp/font-awesome@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.1.tgz#3ae721c447a009601226c381a20dc4adabe154e1"
- integrity sha512-fsMqwApogZ1rAogStQxBX/Nh8akXPW/Alm8UayfK6TXIkPPjBz5RQSHfdlosG7M/U3mwUNGcLlaDvQXsE/nqow==
+"@abp/font-awesome@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.2.tgz#10a920fb20294f7ccd404ea2b302fb11f68f0705"
+ integrity sha512-Mmhfm7g5HdflvqbZOZDKk335IlY8ipwtKsCQ1qRaobsMpWi2AFh6/P/XX7y4H5p0wH5cluUsSzS1QB37QXp36w==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
"@fortawesome/fontawesome-free" "^5.13.0"
-"@abp/jquery-form@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.1.tgz#d13f4cffce48125547b9da57cfc407f9a35a89e6"
- integrity sha512-RYE90XIDxWkvxO5ukuZ2PHk6aA/o7NQKLcR9WsN1G2xTU/frrNPgtruGRTIj7Nx3BPUeMp7EAN2rYZwglcnO5g==
+"@abp/jquery-form@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.2.tgz#4b685858d54eafac123995ebfea759c769e49cab"
+ integrity sha512-ekytRAvAUNKJAPiR5i7kxASh5j3D5jabO1GHbPwq6UzapGLMzG5r8s6/1b4eX+4Zorfy+TmERNeUsWvQwf3P1A==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
jquery-form "^4.3.0"
-"@abp/jquery-validation-unobtrusive@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.1.tgz#93ff6ee92bccdde77816bfb434e967fd142f6b83"
- integrity sha512-LZE1KIALGBCINdWrHzoGczekUFtKwbXbLIgb4ZgiipO5Xja7py/iVvts10QWqUzhnBk+kmbHbj+KnjdqP4Z8pQ==
+"@abp/jquery-validation-unobtrusive@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.2.tgz#392ab72716baea26e6f560e2369d09f8c5488d3b"
+ integrity sha512-PyiWj0hj5jkjcZ1oJeLXYuoVCIAg51X4y6iLbcb1SpAbqYQP23gilDJK8xkURbysGPMiDq+7tOiKAnGiHSBnWA==
dependencies:
- "@abp/jquery-validation" "~5.0.0-beta.1"
+ "@abp/jquery-validation" "~5.0.0-beta.2"
jquery-validation-unobtrusive "^3.2.11"
-"@abp/jquery-validation@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.1.tgz#2964ca1266b087e4c4c0e768bfc4bfe0284e4ff5"
- integrity sha512-ZDNdkPy2ZNu0EYDNH20Oh9R3bICCYv9CbEj4zZ8Qavixo9VTkybY3BW0nYjcu1yb1P92gZPp80W8vyfxSo//kw==
+"@abp/jquery-validation@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.2.tgz#233eda5998ae566daeb945d8508999da2ef75a51"
+ integrity sha512-jKY0yfRgM5RGlJeQCGKkkczx5qptpPkhqWr4x+ffTUzR+ywF9FHUB5zcbELpEyWuOJ9cilap2hga2lvPZ8c+Pg==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
jquery-validation "^1.19.2"
-"@abp/jquery@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.1.tgz#360e7a164b6b4ce615a5ad91a1c78ef6893648f3"
- integrity sha512-v2t+76L45tlbpGeVR39GurZl60Rj1pR/TdUidpP6zwnpx1Y3I+CvlJNDwTESeE/ixTOT3PyFbXoMEi6hI+v39A==
+"@abp/jquery@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.2.tgz#62fa64fcc0bd5dca4b5e7534b24205a3f0461f08"
+ integrity sha512-tMzjo9qQAgJDYPvLk67YNlnOOUSTUfPWodlqfl5vvo6/NHSsB9eJhXH28txEtygX0o/Mepi9Ag87dL9VLh0DEw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
jquery "~3.6.0"
-"@abp/lodash@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.1.tgz#618797bde42b17f91d7f99fdd5f24cb5e8a361b3"
- integrity sha512-WsUjzHRZ6RkSMd5PTw0oWijDbbq/Wgonv8++ufUZi1WK5spZi9ohjcYM4io3Ms3fG+g4pWznaicYraMpV5tcsQ==
+"@abp/lodash@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.2.tgz#c821eb502de3211f94ca2f7ba8a5c0b0677c5c9b"
+ integrity sha512-lW8lz1JG8kweVOWVCB7jC6xxLUE0G6MJfwv4g0+eKwFLgsAO5dK6Yk4xZi+UXgST73OgGt5LIQJcS4+aCo/zmg==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
lodash "^4.17.15"
-"@abp/luxon@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.1.tgz#fc81fcbfb592d3baf7b9856b3cecf5b86df4bfdf"
- integrity sha512-t4lhJ/wr1rAVH1/bnzmc8niZYvolTuXUB0h6A6UYaw205QyNtimzusYkTwkc+Z3xHFUrkLCoG7J2SVoCJuioaA==
+"@abp/luxon@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.2.tgz#64c68c3091415153c8c470fb3e5650bbc00500d1"
+ integrity sha512-0mSVsycWEo5hamEuR7Mqw00JnVRlhQvpy8Bks58d7bRksIQzK8iPx9advTbP2ICF3iz9zHT9MJrMXYfvUT6oIQ==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
luxon "^1.24.1"
-"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.1.tgz#7af43d30af9b1f741fd9d9559d100aa4a5c52ae9"
- integrity sha512-B195PC4/75W0EXjGEQUd/ZARb/eGWj8DX7hq3K+J+lUWzWu46dZy8s5bBij78HqxS91/q6nbxU35Z+E9xl6ICg==
+"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.2.tgz#6c030cfe1e123be0a81f769dedd6a6b22aed9077"
+ integrity sha512-ZEkCMMDKe26b/sCArQjDOGEm8+lQB9Uis17FNyHDt/vA+FdtaPJjeLOqmfzMeLQYppvefH+JCpGzfaWwCNZmcw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/prismjs@^5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-5.0.0-beta.1.tgz#a41883c46e2ce67b2b9dcbe1ce85de9b183cfd29"
- integrity sha512-Ps3X6gckZYUnWcmBPnXCa1LIh8HnQYxDD0WPppbEsp1VFN49T3yNO4G5jFVRxomFi5km8AluJW2zYk3Kh/4OSw==
+"@abp/prismjs@^5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-5.0.0-beta.2.tgz#d00876d3d0768305a3c7d3c178488352ce88df5d"
+ integrity sha512-PFSrnoPrl+4w9XyCwe4F3N+Qg/ekXWeUkX0Zwh+0oR8pxQlbJC6aiCRDhCsmui+dEU/0vYpkKHXq46iDHQnjxQ==
dependencies:
- "@abp/clipboard" "~5.0.0-beta.1"
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/clipboard" "~5.0.0-beta.2"
+ "@abp/core" "~5.0.0-beta.2"
prismjs "^1.20.0"
-"@abp/select2@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.1.tgz#15988165fcfed2ebc2b8d097965e2dc1984af35e"
- integrity sha512-SF+NkWDJNz1EeEimW5luaCMPTNN1oPzEWs47usPJo8m7HfijEvF3rymJ8jL5zWIOo05Tx3HUurLSVz0qu4vZsw==
+"@abp/select2@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.2.tgz#f5e74d56ccdabde61825453044f31fa183573b58"
+ integrity sha512-ApL7ioC4p5GguQM2KfnqtGrJ9TqBRiQh1v+y1J2Z3Lh18SJU+tsA3f9Va9ZyZNIFrpV3Bsmim2cIu7bjm7IBRw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
select2 "^4.0.13"
-"@abp/sweetalert2@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.1.tgz#c6a1185f39d3207f67753e7c486eddcefc7fd0da"
- integrity sha512-ADotpiMkIzHLy/ufK0q49V9hgF8oKE0rLRzVZV2dHBpmFR7YRcPdbb5AN9CiXDk6ol8nsocEEAwRmgD3eJG63w==
+"@abp/sweetalert2@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.2.tgz#164c1df63c2859fa5277673906f85cc8e7e2d1ef"
+ integrity sha512-UdENhKcfywOorjTf4+CxDO8UUet9lYAIDH2r+Kd1qjFKIDDu6w3TfJ7Gz108VG84+RsUevfVLgZ8qeYsA+drKQ==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
sweetalert2 "^11.0.18"
-"@abp/timeago@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.1.tgz#0f7bb8cd85b7e90d7d5c0a0940b9102e3f4f1e42"
- integrity sha512-QwYZyeDRW+X8BGecBcK1SgsClVWNYfPgvct+WkQhTIRxzbP/c1c+1irj69sNdN3df2WLnmjfu3sBw2hzz5ykbg==
+"@abp/timeago@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.2.tgz#7a6242e6cc403addf172ebf18ffb3513d4b30f21"
+ integrity sha512-wdXaKd0dBJP0mawzHqE04YWUgpUYzq8vJHGH3QGf9RpB+XpMztt1KNHR6d32VylDAEoPEtB7GH4rVvlimKa48g==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
timeago "^1.6.7"
-"@abp/toastr@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.1.tgz#d420fc5db6b15f6d623d3928bb6913996511937f"
- integrity sha512-82LfDrZQagtv4QLb643VTra4pxleOq5xYwhpOK1Ifop2K5CRgElxKfWvY2EtxdGkpCO2arvkOzjRNbxnecHB2w==
+"@abp/toastr@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.2.tgz#924f5315d3ade6ee41869d8809b625116c5b02f1"
+ integrity sha512-iqmgO/8AwORzYKf/43+Fx/478la0w+g+mrDahzokPlZFv6WUvFL3QSD/fs1mjc2yUOxEuvgprEiEfWoZcrwtNA==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
toastr "^2.1.4"
-"@abp/utils@^5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.1.tgz#e1bf9240738276081c89a67073d9d85205fdf14c"
- integrity sha512-suzKxHUautizxt5XdlJ8ONIaVMcAHrb2dp1kEnXnFRW1ip+7ZQ9/nxJj+GtY1MhHX2yPmlUQP2K8f2upJh9aoA==
+"@abp/utils@^5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.2.tgz#4d120c0f930b943071b4ba27dafedf6c8b730182"
+ integrity sha512-EZV1P+eafVBEHO6B+Ws6iX4xyeg8B6nCPLvpaFC6mStk7SGidh2rAYYWyydyh68Ky8YdbLYQE3oPaIewOhDWTg==
dependencies:
just-compare "^1.3.0"
diff --git a/modules/blob-storing-database/Volo.Abp.BlobStoring.Database.sln b/modules/blob-storing-database/Volo.Abp.BlobStoring.Database.sln
index e33e90fa86..e0644dd332 100644
--- a/modules/blob-storing-database/Volo.Abp.BlobStoring.Database.sln
+++ b/modules/blob-storing-database/Volo.Abp.BlobStoring.Database.sln
@@ -27,6 +27,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "host", "host", "{9E416AD3-1
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlobStoring.Database.Host.ConsoleApp.ConsoleApp", "host\BlobStoring.Database.Host.ConsoleApp\src\BlobStoring.Database.Host.ConsoleApp.ConsoleApp\BlobStoring.Database.Host.ConsoleApp.ConsoleApp.csproj", "{C3C4CB94-4F73-4D04-9076-8D98D5C6B475}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.BlobStoring.Database.Installer", "src\Volo.Abp.BlobStoring.Database.Installer\Volo.Abp.BlobStoring.Database.Installer.csproj", "{6181012D-3CBA-4825-B8A5-FD8926AE5661}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -69,6 +71,10 @@ Global
{C3C4CB94-4F73-4D04-9076-8D98D5C6B475}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C3C4CB94-4F73-4D04-9076-8D98D5C6B475}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C3C4CB94-4F73-4D04-9076-8D98D5C6B475}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6181012D-3CBA-4825-B8A5-FD8926AE5661}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6181012D-3CBA-4825-B8A5-FD8926AE5661}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6181012D-3CBA-4825-B8A5-FD8926AE5661}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6181012D-3CBA-4825-B8A5-FD8926AE5661}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -83,6 +89,7 @@ Global
{D0AD9179-125C-40B2-A8EE-CD4C1EE24BB6} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D}
{E60895E5-79C4-447D-88B7-85CB5BA336A4} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D}
{C3C4CB94-4F73-4D04-9076-8D98D5C6B475} = {9E416AD3-1EC8-439A-9CFD-AAFFA89E2AEB}
+ {6181012D-3CBA-4825-B8A5-FD8926AE5661} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4324B3B4-B60B-4E3C-91D8-59576B4E26DD}
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/FodyWeavers.xml b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/FodyWeavers.xml
new file mode 100644
index 0000000000..00e1d9a1c1
--- /dev/null
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/FodyWeavers.xsd b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/FodyWeavers.xsd
new file mode 100644
index 0000000000..3f3946e282
--- /dev/null
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/FodyWeavers.xsd
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.
+
+
+
+
+ A comma-separated list of error codes that can be safely ignored in assembly verification.
+
+
+
+
+ 'false' to turn off automatic generation of the XML Schema file.
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/Volo.Abp.BlobStoring.Database.Installer.csproj b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/Volo.Abp.BlobStoring.Database.Installer.csproj
new file mode 100644
index 0000000000..a2054f574c
--- /dev/null
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/Volo.Abp.BlobStoring.Database.Installer.csproj
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+ net5.0
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/Volo/Abp/BlobStoring/Database/AbpBlobStoringDatabaseInstallerModule.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/Volo/Abp/BlobStoring/Database/AbpBlobStoringDatabaseInstallerModule.cs
new file mode 100644
index 0000000000..9ee224e4f4
--- /dev/null
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/Volo/Abp/BlobStoring/Database/AbpBlobStoringDatabaseInstallerModule.cs
@@ -0,0 +1,21 @@
+using Volo.Abp.Modularity;
+using Volo.Abp.Studio;
+using Volo.Abp.VirtualFileSystem;
+
+namespace Volo.Abp.BlobStoring.Database
+{
+ [DependsOn(
+ typeof(AbpStudioModuleInstallerModule),
+ typeof(AbpVirtualFileSystemModule)
+ )]
+ public class AbpBlobStoringDatabaseInstallerModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ Configure(options =>
+ {
+ options.FileSets.AddEmbedded();
+ });
+ }
+ }
+}
diff --git a/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/Volo/Abp/BlobStoring/Database/BlobStoringDatabaseInstallerPipelineBuilder.cs b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/Volo/Abp/BlobStoring/Database/BlobStoringDatabaseInstallerPipelineBuilder.cs
new file mode 100644
index 0000000000..ea82db0c8c
--- /dev/null
+++ b/modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer/Volo/Abp/BlobStoring/Database/BlobStoringDatabaseInstallerPipelineBuilder.cs
@@ -0,0 +1,24 @@
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Studio.ModuleInstalling;
+
+namespace Volo.Abp.BlobStoring.Database
+{
+ [Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
+ [ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
+ public class BlobStoringDatabaseInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
+ {
+ public async Task BuildAsync(ModuleInstallingContext context)
+ {
+ context.AddEfCoreConfigurationMethodDeclaration(
+ new EfCoreConfigurationMethodDeclaration(
+ "Volo.Abp.BlobStoring.Database.EntityFrameworkCore",
+ "ConfigureBlobStoring"
+ )
+ );
+
+ return GetBasePipeline(context);
+ }
+ }
+}
diff --git a/modules/blogging/app/Volo.BloggingTestApp/package.json b/modules/blogging/app/Volo.BloggingTestApp/package.json
index 023cd7cfcd..29760af4ab 100644
--- a/modules/blogging/app/Volo.BloggingTestApp/package.json
+++ b/modules/blogging/app/Volo.BloggingTestApp/package.json
@@ -3,7 +3,7 @@
"name": "volo.blogtestapp",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.1",
- "@abp/blogging": "^5.0.0-beta.1"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.2",
+ "@abp/blogging": "^5.0.0-beta.2"
}
}
\ No newline at end of file
diff --git a/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js b/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
index 1fee6e798d..d7b5d2d9c4 100644
--- a/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
+++ b/modules/blogging/app/Volo.BloggingTestApp/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
@@ -1,4 +1,6 @@
/*
https://select2.org/troubleshooting/common-problems
*/
-$.fn.modal.Constructor.prototype._enforceFocus = function () { };
\ No newline at end of file
+if ($.fn.modal) {
+ $.fn.modal.Constructor.prototype._enforceFocus = function () { };
+}
diff --git a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock
index 4d068f4656..4f15a3340b 100644
--- a/modules/blogging/app/Volo.BloggingTestApp/yarn.lock
+++ b/modules/blogging/app/Volo.BloggingTestApp/yarn.lock
@@ -2,37 +2,37 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@^5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.0-beta.1.tgz#2c78c2bd977a67f6c2ed77cfcd404cf9533eaaae"
- integrity sha512-b8Boztxd5NbaDlXQvgHXHtw8ZNgM4tEgo14kw/bN3mcLx05fWLGd8Lzfdi7i+Ju6U3rKbgi+0MSbga93A0KSmg==
- dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.1"
-
-"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.1.tgz#25596652bb3f7b6bac5bbd966a731144cd9646c6"
- integrity sha512-N4SHu6rn8alK4jdve00IscngrfvqJNEjrwQclXNmP9c4NtPuVM9emZdxBzKF8jFb6Hz8HiwM9H3xV/SjKCS/7A==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.1"
- "@abp/bootstrap" "~5.0.0-beta.1"
- "@abp/bootstrap-datepicker" "~5.0.0-beta.1"
- "@abp/datatables.net-bs4" "~5.0.0-beta.1"
- "@abp/font-awesome" "~5.0.0-beta.1"
- "@abp/jquery-form" "~5.0.0-beta.1"
- "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.1"
- "@abp/lodash" "~5.0.0-beta.1"
- "@abp/luxon" "~5.0.0-beta.1"
- "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.1"
- "@abp/select2" "~5.0.0-beta.1"
- "@abp/sweetalert2" "~5.0.0-beta.1"
- "@abp/timeago" "~5.0.0-beta.1"
- "@abp/toastr" "~5.0.0-beta.1"
-
-"@abp/aspnetcore.mvc.ui@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.1.tgz#30c14386899596bf91e8871810dbaa1a0e51e996"
- integrity sha512-pabiGHghC62eg95RfAncEt0+yGdBxdMmyqCXV+Be4JjaMz/hGZIDOPIYnaqCayZtyMmIRqG6IAwi99DqBjkQAQ==
+"@abp/aspnetcore.mvc.ui.theme.basic@^5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.0-beta.2.tgz#077d1edd88f2f1ccb5c8227180a75e3121eece19"
+ integrity sha512-b7f05Fza18NYHudrHosYuCX/UJ/Y3KYJrJMHqdvAsZYu0t3dc7EMWKYTDA/+rDEO8iV/83twRYfHLf0tmVyc1Q==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.2"
+
+"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.2.tgz#8c58d252f1a39f91c2c287b91691e5bd772f4918"
+ integrity sha512-l4suGM7PjGTw/MEg2f2BdbRXYzALhZQUSijzKIQTy5dwcA/JQPsLbezPzGy45fD3lXsYxBwS4QaOmofTosKkug==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.2"
+ "@abp/bootstrap" "~5.0.0-beta.2"
+ "@abp/bootstrap-datepicker" "~5.0.0-beta.2"
+ "@abp/datatables.net-bs4" "~5.0.0-beta.2"
+ "@abp/font-awesome" "~5.0.0-beta.2"
+ "@abp/jquery-form" "~5.0.0-beta.2"
+ "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.2"
+ "@abp/lodash" "~5.0.0-beta.2"
+ "@abp/luxon" "~5.0.0-beta.2"
+ "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.2"
+ "@abp/select2" "~5.0.0-beta.2"
+ "@abp/sweetalert2" "~5.0.0-beta.2"
+ "@abp/timeago" "~5.0.0-beta.2"
+ "@abp/toastr" "~5.0.0-beta.2"
+
+"@abp/aspnetcore.mvc.ui@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.2.tgz#c30d9905e133451208e379f7173ed9c44dd5f487"
+ integrity sha512-8Dzfg5SzeVoXz/nY11o2u3y7ZQdUW/zVSYVTgbsCMC1HCe2yzptpr2XI0Goz8jQKgz0G+zg3iwfeur7vNoaoMw==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@@ -41,214 +41,214 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
-"@abp/blogging@^5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-5.0.0-beta.1.tgz#bfc5b5205dd1784d736fa6d51651728dc8e23478"
- integrity sha512-kYxG9I1lBOWoUk/Tl9YqT7VbQiYwcBtxXOIwQV7u+cUGlSF/Ml1Wk222hgJ3OKt5Mx/X2z4uqS6zFraVyVyZQQ==
+"@abp/blogging@^5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-5.0.0-beta.2.tgz#7b17678c4ef35e56743235ccb961963ce998e51d"
+ integrity sha512-yBW15UTWuVHwaV6M7bObngAImzOKpyPIrIAvFXtyC8XvXWAKQC2qtQa3O2f5PnMy+/dqQS6cfFXyab6IZ7MxQw==
dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.1"
- "@abp/owl.carousel" "~5.0.0-beta.1"
- "@abp/prismjs" "~5.0.0-beta.1"
- "@abp/tui-editor" "~5.0.0-beta.1"
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.2"
+ "@abp/owl.carousel" "~5.0.0-beta.2"
+ "@abp/prismjs" "~5.0.0-beta.2"
+ "@abp/tui-editor" "~5.0.0-beta.2"
-"@abp/bootstrap-datepicker@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.1.tgz#727e0f7305a94c95ece152ffff011bcff621f46d"
- integrity sha512-txhdlJqyO2D9MkGLYgrsiDaC58cb2eCpk2uxoqqQeVWvuRPo/L+9rCBk+bu6J37FGJtU8aabtHJyR5xnYbv0TQ==
+"@abp/bootstrap-datepicker@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.2.tgz#dbf92485225a424f0e53e55c3ef8c993943682f0"
+ integrity sha512-jJWVKrkKcUMEqwBrEqhGD1zDFD8b0b3j0WdlzKuzlw26AaQkfE4LQ9Gjfjs+RnTW1LxPn8rGP8QCgdVeWMNjQQ==
dependencies:
bootstrap-datepicker "^1.9.0"
-"@abp/bootstrap@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.1.tgz#075a15459ff8e3896b6553786e6c8f091c6ffcad"
- integrity sha512-W8z6qSAsRoXmG0++xH6Bk1oRc90hFqVcjKI+5XgBQhUUCn2qBruBYOKFxPg2GeT2f1k9K5TrCEnnVrh0sOP9/A==
+"@abp/bootstrap@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.2.tgz#0faaa85871fd23076dd597dce83dc3020b1ff950"
+ integrity sha512-zy0DUcAJuX+Oeu4csw7XbyLGq/YdfonMLJt/Mkpq8CjAssD7n7aJK6PwG+akaI4giSQd7Sc1JvvnKRMRzyxy1Q==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
bootstrap "^4.6.0"
bootstrap-v4-rtl "4.6.0-1"
-"@abp/clipboard@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-5.0.0-beta.1.tgz#7c46ffe185116b1d3e43ef389df9dae2b98dd0c9"
- integrity sha512-Gsr8qZNhxoH7uH+Kd0Q7qrQdGAjU20r65zjBI7iUgtpP/18obm87SUZLPDobZLAf+UB/Wl9VnxvedyLYDnuQGQ==
+"@abp/clipboard@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-5.0.0-beta.2.tgz#a7c7cbb090a5fad8744d6de48b9aa0deeda60d0f"
+ integrity sha512-rhJkXD3/6z5lXmN39uhXavMSSue+/D9h2SXs3HaBMzgAIJUI/qHPrHOAOMUdXT/jKiO+EQtLzLH8V/5nJtvIZQ==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
clipboard "^2.0.6"
-"@abp/codemirror@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-5.0.0-beta.1.tgz#3b2f6175454d23bed01cddc62a709e52c76e2162"
- integrity sha512-0IAW0k6lk4yrC04kIW75Ez3nIx/RUsSTb5Wqf6K7TM0N5hIVdBTdIhc3ZqVPmAlXhFuwqLRIshjMNiVfgImSBg==
+"@abp/codemirror@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-5.0.0-beta.2.tgz#830c764cbe37e9e1ea79040fd1196659cc15f0cc"
+ integrity sha512-PREr4mrvaKpoJlG1y0rl9aK30Frwb1LGAYOBPRLxMVHeLZZ11OMc67d7+HxofsvTdJ+vKafp2LDhafPIX+Fn6w==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
codemirror "^5.54.0"
-"@abp/core@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.1.tgz#6cff06b13529ab9d7a6ddc4e89dc40616e6b7739"
- integrity sha512-TK1CnurJIK/SXfsNTk6HSpxdaJgVxwvqNd4F3fxCC0Uj8s5viD3TAGk39Hkp4909WGfNrRq8BEUNvTYM/rP6gg==
+"@abp/core@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.2.tgz#f9643d21b19128be3ad58b23083e1fc9620f2102"
+ integrity sha512-AHlJQF5NC+yNsj5xILHk1CF++Z93aQDNp0zdJciDqIexH9lEJ+AQCX2EKLn0yjWt4Ga00pOOmQM5vJVJjuJCEw==
dependencies:
- "@abp/utils" "^5.0.0-beta.1"
+ "@abp/utils" "^5.0.0-beta.2"
-"@abp/datatables.net-bs4@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.1.tgz#110d7d8cf1c15db7432d8f0649f4317ba8de10dd"
- integrity sha512-CPodZP9pqLdwnFZ77/mcSfuhyK1WMi/c+9VWpGXFQSGaABNKPP2UIdAChwUcBRdGkZRa/IhXx3CCr1ZMLpJsMQ==
+"@abp/datatables.net-bs4@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.2.tgz#3afb32918f59b55c68d3d37b2c1f0bf49bb06fc8"
+ integrity sha512-t6YserKkBId7KnT46uYaGw6HJrf8tcLp4bJmGyUSnCwVlgJcha/P6fr3pKWqFz9QPGk5riCZF3hK6x1BH9u71g==
dependencies:
- "@abp/datatables.net" "~5.0.0-beta.1"
+ "@abp/datatables.net" "~5.0.0-beta.2"
datatables.net-bs4 "^1.10.21"
-"@abp/datatables.net@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.1.tgz#8e784a011d33de154554f3239c448fcfd8adb713"
- integrity sha512-mRMYqTCoYLmDLvL+CvmwUS4JqCqdkn6mxHd7zgkaR04xlGLEmNae5aGbs1wURJ86MOWrHbfkx66lQjkul3zbQw==
+"@abp/datatables.net@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.2.tgz#fc87be76ebec94b16c6734c2249ea8a0a04a83b8"
+ integrity sha512-aEAlej1wNtxsxpwlw2GFOV0tFSZ7MWA+Wpfi5QZ4VIbYHSIkhEnz0apiNMBsoB8i7VJLJKZuKvynlJWYABNk0Q==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
datatables.net "^1.10.21"
-"@abp/font-awesome@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.1.tgz#3ae721c447a009601226c381a20dc4adabe154e1"
- integrity sha512-fsMqwApogZ1rAogStQxBX/Nh8akXPW/Alm8UayfK6TXIkPPjBz5RQSHfdlosG7M/U3mwUNGcLlaDvQXsE/nqow==
+"@abp/font-awesome@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.2.tgz#10a920fb20294f7ccd404ea2b302fb11f68f0705"
+ integrity sha512-Mmhfm7g5HdflvqbZOZDKk335IlY8ipwtKsCQ1qRaobsMpWi2AFh6/P/XX7y4H5p0wH5cluUsSzS1QB37QXp36w==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
"@fortawesome/fontawesome-free" "^5.13.0"
-"@abp/highlight.js@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-5.0.0-beta.1.tgz#342512534f11160f5ccb273c31197fd440d8ce81"
- integrity sha512-50eVFUwot4CpT/09H3zyHi3Qe7+d9Krg9hIf/OsE8PqvzNKZgwjaKGNOaNNoBvbdpS+LMpF4IcwCTZltsE+ZLA==
+"@abp/highlight.js@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-5.0.0-beta.2.tgz#ea61c770e1928e16deab685049bf2b09cd97edd1"
+ integrity sha512-QZH4IQ4EM4s3uH2WAumSqw9gQOXg4DaJladiq12J/53dAqz40gUFWgq8JHmycpt0tKfpQL9Cw43zfkeMa+7SMg==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
-"@abp/jquery-form@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.1.tgz#d13f4cffce48125547b9da57cfc407f9a35a89e6"
- integrity sha512-RYE90XIDxWkvxO5ukuZ2PHk6aA/o7NQKLcR9WsN1G2xTU/frrNPgtruGRTIj7Nx3BPUeMp7EAN2rYZwglcnO5g==
+"@abp/jquery-form@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.2.tgz#4b685858d54eafac123995ebfea759c769e49cab"
+ integrity sha512-ekytRAvAUNKJAPiR5i7kxASh5j3D5jabO1GHbPwq6UzapGLMzG5r8s6/1b4eX+4Zorfy+TmERNeUsWvQwf3P1A==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
jquery-form "^4.3.0"
-"@abp/jquery-validation-unobtrusive@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.1.tgz#93ff6ee92bccdde77816bfb434e967fd142f6b83"
- integrity sha512-LZE1KIALGBCINdWrHzoGczekUFtKwbXbLIgb4ZgiipO5Xja7py/iVvts10QWqUzhnBk+kmbHbj+KnjdqP4Z8pQ==
+"@abp/jquery-validation-unobtrusive@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.2.tgz#392ab72716baea26e6f560e2369d09f8c5488d3b"
+ integrity sha512-PyiWj0hj5jkjcZ1oJeLXYuoVCIAg51X4y6iLbcb1SpAbqYQP23gilDJK8xkURbysGPMiDq+7tOiKAnGiHSBnWA==
dependencies:
- "@abp/jquery-validation" "~5.0.0-beta.1"
+ "@abp/jquery-validation" "~5.0.0-beta.2"
jquery-validation-unobtrusive "^3.2.11"
-"@abp/jquery-validation@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.1.tgz#2964ca1266b087e4c4c0e768bfc4bfe0284e4ff5"
- integrity sha512-ZDNdkPy2ZNu0EYDNH20Oh9R3bICCYv9CbEj4zZ8Qavixo9VTkybY3BW0nYjcu1yb1P92gZPp80W8vyfxSo//kw==
+"@abp/jquery-validation@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.2.tgz#233eda5998ae566daeb945d8508999da2ef75a51"
+ integrity sha512-jKY0yfRgM5RGlJeQCGKkkczx5qptpPkhqWr4x+ffTUzR+ywF9FHUB5zcbELpEyWuOJ9cilap2hga2lvPZ8c+Pg==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
jquery-validation "^1.19.2"
-"@abp/jquery@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.1.tgz#360e7a164b6b4ce615a5ad91a1c78ef6893648f3"
- integrity sha512-v2t+76L45tlbpGeVR39GurZl60Rj1pR/TdUidpP6zwnpx1Y3I+CvlJNDwTESeE/ixTOT3PyFbXoMEi6hI+v39A==
+"@abp/jquery@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.2.tgz#62fa64fcc0bd5dca4b5e7534b24205a3f0461f08"
+ integrity sha512-tMzjo9qQAgJDYPvLk67YNlnOOUSTUfPWodlqfl5vvo6/NHSsB9eJhXH28txEtygX0o/Mepi9Ag87dL9VLh0DEw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
jquery "~3.6.0"
-"@abp/lodash@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.1.tgz#618797bde42b17f91d7f99fdd5f24cb5e8a361b3"
- integrity sha512-WsUjzHRZ6RkSMd5PTw0oWijDbbq/Wgonv8++ufUZi1WK5spZi9ohjcYM4io3Ms3fG+g4pWznaicYraMpV5tcsQ==
+"@abp/lodash@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.2.tgz#c821eb502de3211f94ca2f7ba8a5c0b0677c5c9b"
+ integrity sha512-lW8lz1JG8kweVOWVCB7jC6xxLUE0G6MJfwv4g0+eKwFLgsAO5dK6Yk4xZi+UXgST73OgGt5LIQJcS4+aCo/zmg==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
lodash "^4.17.15"
-"@abp/luxon@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.1.tgz#fc81fcbfb592d3baf7b9856b3cecf5b86df4bfdf"
- integrity sha512-t4lhJ/wr1rAVH1/bnzmc8niZYvolTuXUB0h6A6UYaw205QyNtimzusYkTwkc+Z3xHFUrkLCoG7J2SVoCJuioaA==
+"@abp/luxon@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.2.tgz#64c68c3091415153c8c470fb3e5650bbc00500d1"
+ integrity sha512-0mSVsycWEo5hamEuR7Mqw00JnVRlhQvpy8Bks58d7bRksIQzK8iPx9advTbP2ICF3iz9zHT9MJrMXYfvUT6oIQ==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
luxon "^1.24.1"
-"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.1.tgz#7af43d30af9b1f741fd9d9559d100aa4a5c52ae9"
- integrity sha512-B195PC4/75W0EXjGEQUd/ZARb/eGWj8DX7hq3K+J+lUWzWu46dZy8s5bBij78HqxS91/q6nbxU35Z+E9xl6ICg==
+"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.2.tgz#6c030cfe1e123be0a81f769dedd6a6b22aed9077"
+ integrity sha512-ZEkCMMDKe26b/sCArQjDOGEm8+lQB9Uis17FNyHDt/vA+FdtaPJjeLOqmfzMeLQYppvefH+JCpGzfaWwCNZmcw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/markdown-it@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-5.0.0-beta.1.tgz#eed2f8af8008d5ac641860cbe4fb4c08b96796a3"
- integrity sha512-n515ThJw9WdUyfYrLxGH4fh43VGeleCpd0Yg7GZyte3yclhiKmTGe2M1aAMnD7lZeoPKtJf3eHJPPtqaH0omIQ==
+"@abp/markdown-it@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-5.0.0-beta.2.tgz#4bbb862b54b145ecfc6c9f8c1a19b3e01263d82f"
+ integrity sha512-g5aYHg7xnpqNdJWvUHhTYhstGdhLYTkZX1cb8xi3tFnUL5pWFKDtaioIowO+6/Tohd7J9JlPisLP/ys57xLCPg==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
markdown-it "^11.0.0"
-"@abp/owl.carousel@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-5.0.0-beta.1.tgz#a8f8f92e842a57a6881254e6350bd02f1bd6fb7a"
- integrity sha512-q7dMmpypEvDvj4P9QMbgIiUmtj1/PAL3F2BWp/YyXDvOGNEdSD3usfdazHPWxhJ8bvINOntTmTjiE42/8LYbGw==
+"@abp/owl.carousel@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-5.0.0-beta.2.tgz#e50e1349fd91e65e52cf10d776650efd9c1b8745"
+ integrity sha512-PLHVSCxUEdtmkdV/GK50iYZ2aXan2/cejBomtFUWdl3SqcRom4OsW6xc7ANdktATvnrSV73Zwh7xEUF9AnVxHw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
owl.carousel "^2.3.4"
-"@abp/prismjs@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-5.0.0-beta.1.tgz#a41883c46e2ce67b2b9dcbe1ce85de9b183cfd29"
- integrity sha512-Ps3X6gckZYUnWcmBPnXCa1LIh8HnQYxDD0WPppbEsp1VFN49T3yNO4G5jFVRxomFi5km8AluJW2zYk3Kh/4OSw==
+"@abp/prismjs@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-5.0.0-beta.2.tgz#d00876d3d0768305a3c7d3c178488352ce88df5d"
+ integrity sha512-PFSrnoPrl+4w9XyCwe4F3N+Qg/ekXWeUkX0Zwh+0oR8pxQlbJC6aiCRDhCsmui+dEU/0vYpkKHXq46iDHQnjxQ==
dependencies:
- "@abp/clipboard" "~5.0.0-beta.1"
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/clipboard" "~5.0.0-beta.2"
+ "@abp/core" "~5.0.0-beta.2"
prismjs "^1.20.0"
-"@abp/select2@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.1.tgz#15988165fcfed2ebc2b8d097965e2dc1984af35e"
- integrity sha512-SF+NkWDJNz1EeEimW5luaCMPTNN1oPzEWs47usPJo8m7HfijEvF3rymJ8jL5zWIOo05Tx3HUurLSVz0qu4vZsw==
+"@abp/select2@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.2.tgz#f5e74d56ccdabde61825453044f31fa183573b58"
+ integrity sha512-ApL7ioC4p5GguQM2KfnqtGrJ9TqBRiQh1v+y1J2Z3Lh18SJU+tsA3f9Va9ZyZNIFrpV3Bsmim2cIu7bjm7IBRw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
select2 "^4.0.13"
-"@abp/sweetalert2@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.1.tgz#c6a1185f39d3207f67753e7c486eddcefc7fd0da"
- integrity sha512-ADotpiMkIzHLy/ufK0q49V9hgF8oKE0rLRzVZV2dHBpmFR7YRcPdbb5AN9CiXDk6ol8nsocEEAwRmgD3eJG63w==
+"@abp/sweetalert2@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.2.tgz#164c1df63c2859fa5277673906f85cc8e7e2d1ef"
+ integrity sha512-UdENhKcfywOorjTf4+CxDO8UUet9lYAIDH2r+Kd1qjFKIDDu6w3TfJ7Gz108VG84+RsUevfVLgZ8qeYsA+drKQ==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
sweetalert2 "^11.0.18"
-"@abp/timeago@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.1.tgz#0f7bb8cd85b7e90d7d5c0a0940b9102e3f4f1e42"
- integrity sha512-QwYZyeDRW+X8BGecBcK1SgsClVWNYfPgvct+WkQhTIRxzbP/c1c+1irj69sNdN3df2WLnmjfu3sBw2hzz5ykbg==
+"@abp/timeago@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.2.tgz#7a6242e6cc403addf172ebf18ffb3513d4b30f21"
+ integrity sha512-wdXaKd0dBJP0mawzHqE04YWUgpUYzq8vJHGH3QGf9RpB+XpMztt1KNHR6d32VylDAEoPEtB7GH4rVvlimKa48g==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
timeago "^1.6.7"
-"@abp/toastr@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.1.tgz#d420fc5db6b15f6d623d3928bb6913996511937f"
- integrity sha512-82LfDrZQagtv4QLb643VTra4pxleOq5xYwhpOK1Ifop2K5CRgElxKfWvY2EtxdGkpCO2arvkOzjRNbxnecHB2w==
+"@abp/toastr@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.2.tgz#924f5315d3ade6ee41869d8809b625116c5b02f1"
+ integrity sha512-iqmgO/8AwORzYKf/43+Fx/478la0w+g+mrDahzokPlZFv6WUvFL3QSD/fs1mjc2yUOxEuvgprEiEfWoZcrwtNA==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
toastr "^2.1.4"
-"@abp/tui-editor@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-5.0.0-beta.1.tgz#be51a8adfe181e148b45c5fb9d2a4e2933e4e1ab"
- integrity sha512-4ka2ABHdnuoub2sZtjaSQCJpK+ZCkXNiHsQEzKYLUVQdUW+w3fRNsYI+P7F+SJi9f1ZtYsOM0uwM3oWKqt1plA==
+"@abp/tui-editor@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-5.0.0-beta.2.tgz#60548e594b4a06c9075b5501641a9a8e155729bf"
+ integrity sha512-ZYvRXXFLpzpoJLUjobGN+zC4UtuszX/yIF03rgu2mzXfKwA9JDvWWmpL4MftEpCeEFcRt5amt1DsGVKta3COJw==
dependencies:
- "@abp/codemirror" "~5.0.0-beta.1"
- "@abp/highlight.js" "~5.0.0-beta.1"
- "@abp/jquery" "~5.0.0-beta.1"
- "@abp/markdown-it" "~5.0.0-beta.1"
+ "@abp/codemirror" "~5.0.0-beta.2"
+ "@abp/highlight.js" "~5.0.0-beta.2"
+ "@abp/jquery" "~5.0.0-beta.2"
+ "@abp/markdown-it" "~5.0.0-beta.2"
"@toast-ui/editor" "^2.5.1"
-"@abp/utils@^5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.1.tgz#e1bf9240738276081c89a67073d9d85205fdf14c"
- integrity sha512-suzKxHUautizxt5XdlJ8ONIaVMcAHrb2dp1kEnXnFRW1ip+7ZQ9/nxJj+GtY1MhHX2yPmlUQP2K8f2upJh9aoA==
+"@abp/utils@^5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.2.tgz#4d120c0f930b943071b4ba27dafedf6c8b730182"
+ integrity sha512-EZV1P+eafVBEHO6B+Ws6iX4xyeg8B6nCPLvpaFC6mStk7SGidh2rAYYWyydyh68Ky8YdbLYQE3oPaIewOhDWTg==
dependencies:
just-compare "^1.3.0"
diff --git a/modules/blogging/src/Volo.Blogging.Admin.Web/Pages/Blogging/Admin/Blogs/index.js b/modules/blogging/src/Volo.Blogging.Admin.Web/Pages/Blogging/Admin/Blogs/index.js
index ec636b2487..5c75af8dd0 100644
--- a/modules/blogging/src/Volo.Blogging.Admin.Web/Pages/Blogging/Admin/Blogs/index.js
+++ b/modules/blogging/src/Volo.Blogging.Admin.Web/Pages/Blogging/Admin/Blogs/index.js
@@ -49,13 +49,14 @@ $(function () {
.delete(data.record.id)
.then(function () {
_dataTable.ajax.reload();
+ abp.notify.success(l('SuccessfullyDeleted'));
});
},
},
{
text: l("ClearCache"),
visible: abp.auth.isGranted(
- 'Blogging.Blog.ClearCache'
+ 'Blogging.Blog.ClearCache'
),
confirmMessage: function (data) {
return l("ClearCacheConfirmationMessage");
diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json
index d8002eb4f4..d82df27599 100644
--- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json
+++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json
@@ -3,6 +3,6 @@
"name": "client-simulation-web",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.1"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.2"
}
}
\ No newline at end of file
diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
index 1fee6e798d..d7b5d2d9c4 100644
--- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
+++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
@@ -1,4 +1,6 @@
/*
https://select2.org/troubleshooting/common-problems
*/
-$.fn.modal.Constructor.prototype._enforceFocus = function () { };
\ No newline at end of file
+if ($.fn.modal) {
+ $.fn.modal.Constructor.prototype._enforceFocus = function () { };
+}
diff --git a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock
index 0a5c5ab1a9..ff3c852640 100644
--- a/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock
+++ b/modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock
@@ -2,37 +2,37 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@^5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.0-beta.1.tgz#2c78c2bd977a67f6c2ed77cfcd404cf9533eaaae"
- integrity sha512-b8Boztxd5NbaDlXQvgHXHtw8ZNgM4tEgo14kw/bN3mcLx05fWLGd8Lzfdi7i+Ju6U3rKbgi+0MSbga93A0KSmg==
- dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.1"
-
-"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.1.tgz#25596652bb3f7b6bac5bbd966a731144cd9646c6"
- integrity sha512-N4SHu6rn8alK4jdve00IscngrfvqJNEjrwQclXNmP9c4NtPuVM9emZdxBzKF8jFb6Hz8HiwM9H3xV/SjKCS/7A==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.1"
- "@abp/bootstrap" "~5.0.0-beta.1"
- "@abp/bootstrap-datepicker" "~5.0.0-beta.1"
- "@abp/datatables.net-bs4" "~5.0.0-beta.1"
- "@abp/font-awesome" "~5.0.0-beta.1"
- "@abp/jquery-form" "~5.0.0-beta.1"
- "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.1"
- "@abp/lodash" "~5.0.0-beta.1"
- "@abp/luxon" "~5.0.0-beta.1"
- "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.1"
- "@abp/select2" "~5.0.0-beta.1"
- "@abp/sweetalert2" "~5.0.0-beta.1"
- "@abp/timeago" "~5.0.0-beta.1"
- "@abp/toastr" "~5.0.0-beta.1"
-
-"@abp/aspnetcore.mvc.ui@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.1.tgz#30c14386899596bf91e8871810dbaa1a0e51e996"
- integrity sha512-pabiGHghC62eg95RfAncEt0+yGdBxdMmyqCXV+Be4JjaMz/hGZIDOPIYnaqCayZtyMmIRqG6IAwi99DqBjkQAQ==
+"@abp/aspnetcore.mvc.ui.theme.basic@^5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.0-beta.2.tgz#077d1edd88f2f1ccb5c8227180a75e3121eece19"
+ integrity sha512-b7f05Fza18NYHudrHosYuCX/UJ/Y3KYJrJMHqdvAsZYu0t3dc7EMWKYTDA/+rDEO8iV/83twRYfHLf0tmVyc1Q==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.2"
+
+"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.2.tgz#8c58d252f1a39f91c2c287b91691e5bd772f4918"
+ integrity sha512-l4suGM7PjGTw/MEg2f2BdbRXYzALhZQUSijzKIQTy5dwcA/JQPsLbezPzGy45fD3lXsYxBwS4QaOmofTosKkug==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.2"
+ "@abp/bootstrap" "~5.0.0-beta.2"
+ "@abp/bootstrap-datepicker" "~5.0.0-beta.2"
+ "@abp/datatables.net-bs4" "~5.0.0-beta.2"
+ "@abp/font-awesome" "~5.0.0-beta.2"
+ "@abp/jquery-form" "~5.0.0-beta.2"
+ "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.2"
+ "@abp/lodash" "~5.0.0-beta.2"
+ "@abp/luxon" "~5.0.0-beta.2"
+ "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.2"
+ "@abp/select2" "~5.0.0-beta.2"
+ "@abp/sweetalert2" "~5.0.0-beta.2"
+ "@abp/timeago" "~5.0.0-beta.2"
+ "@abp/toastr" "~5.0.0-beta.2"
+
+"@abp/aspnetcore.mvc.ui@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.2.tgz#c30d9905e133451208e379f7173ed9c44dd5f487"
+ integrity sha512-8Dzfg5SzeVoXz/nY11o2u3y7ZQdUW/zVSYVTgbsCMC1HCe2yzptpr2XI0Goz8jQKgz0G+zg3iwfeur7vNoaoMw==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@@ -41,145 +41,145 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
-"@abp/bootstrap-datepicker@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.1.tgz#727e0f7305a94c95ece152ffff011bcff621f46d"
- integrity sha512-txhdlJqyO2D9MkGLYgrsiDaC58cb2eCpk2uxoqqQeVWvuRPo/L+9rCBk+bu6J37FGJtU8aabtHJyR5xnYbv0TQ==
+"@abp/bootstrap-datepicker@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.2.tgz#dbf92485225a424f0e53e55c3ef8c993943682f0"
+ integrity sha512-jJWVKrkKcUMEqwBrEqhGD1zDFD8b0b3j0WdlzKuzlw26AaQkfE4LQ9Gjfjs+RnTW1LxPn8rGP8QCgdVeWMNjQQ==
dependencies:
bootstrap-datepicker "^1.9.0"
-"@abp/bootstrap@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.1.tgz#075a15459ff8e3896b6553786e6c8f091c6ffcad"
- integrity sha512-W8z6qSAsRoXmG0++xH6Bk1oRc90hFqVcjKI+5XgBQhUUCn2qBruBYOKFxPg2GeT2f1k9K5TrCEnnVrh0sOP9/A==
+"@abp/bootstrap@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.2.tgz#0faaa85871fd23076dd597dce83dc3020b1ff950"
+ integrity sha512-zy0DUcAJuX+Oeu4csw7XbyLGq/YdfonMLJt/Mkpq8CjAssD7n7aJK6PwG+akaI4giSQd7Sc1JvvnKRMRzyxy1Q==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
bootstrap "^4.6.0"
bootstrap-v4-rtl "4.6.0-1"
-"@abp/core@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.1.tgz#6cff06b13529ab9d7a6ddc4e89dc40616e6b7739"
- integrity sha512-TK1CnurJIK/SXfsNTk6HSpxdaJgVxwvqNd4F3fxCC0Uj8s5viD3TAGk39Hkp4909WGfNrRq8BEUNvTYM/rP6gg==
+"@abp/core@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.2.tgz#f9643d21b19128be3ad58b23083e1fc9620f2102"
+ integrity sha512-AHlJQF5NC+yNsj5xILHk1CF++Z93aQDNp0zdJciDqIexH9lEJ+AQCX2EKLn0yjWt4Ga00pOOmQM5vJVJjuJCEw==
dependencies:
- "@abp/utils" "^5.0.0-beta.1"
+ "@abp/utils" "^5.0.0-beta.2"
-"@abp/datatables.net-bs4@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.1.tgz#110d7d8cf1c15db7432d8f0649f4317ba8de10dd"
- integrity sha512-CPodZP9pqLdwnFZ77/mcSfuhyK1WMi/c+9VWpGXFQSGaABNKPP2UIdAChwUcBRdGkZRa/IhXx3CCr1ZMLpJsMQ==
+"@abp/datatables.net-bs4@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.2.tgz#3afb32918f59b55c68d3d37b2c1f0bf49bb06fc8"
+ integrity sha512-t6YserKkBId7KnT46uYaGw6HJrf8tcLp4bJmGyUSnCwVlgJcha/P6fr3pKWqFz9QPGk5riCZF3hK6x1BH9u71g==
dependencies:
- "@abp/datatables.net" "~5.0.0-beta.1"
+ "@abp/datatables.net" "~5.0.0-beta.2"
datatables.net-bs4 "^1.10.21"
-"@abp/datatables.net@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.1.tgz#8e784a011d33de154554f3239c448fcfd8adb713"
- integrity sha512-mRMYqTCoYLmDLvL+CvmwUS4JqCqdkn6mxHd7zgkaR04xlGLEmNae5aGbs1wURJ86MOWrHbfkx66lQjkul3zbQw==
+"@abp/datatables.net@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.2.tgz#fc87be76ebec94b16c6734c2249ea8a0a04a83b8"
+ integrity sha512-aEAlej1wNtxsxpwlw2GFOV0tFSZ7MWA+Wpfi5QZ4VIbYHSIkhEnz0apiNMBsoB8i7VJLJKZuKvynlJWYABNk0Q==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
datatables.net "^1.10.21"
-"@abp/font-awesome@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.1.tgz#3ae721c447a009601226c381a20dc4adabe154e1"
- integrity sha512-fsMqwApogZ1rAogStQxBX/Nh8akXPW/Alm8UayfK6TXIkPPjBz5RQSHfdlosG7M/U3mwUNGcLlaDvQXsE/nqow==
+"@abp/font-awesome@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.2.tgz#10a920fb20294f7ccd404ea2b302fb11f68f0705"
+ integrity sha512-Mmhfm7g5HdflvqbZOZDKk335IlY8ipwtKsCQ1qRaobsMpWi2AFh6/P/XX7y4H5p0wH5cluUsSzS1QB37QXp36w==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
"@fortawesome/fontawesome-free" "^5.13.0"
-"@abp/jquery-form@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.1.tgz#d13f4cffce48125547b9da57cfc407f9a35a89e6"
- integrity sha512-RYE90XIDxWkvxO5ukuZ2PHk6aA/o7NQKLcR9WsN1G2xTU/frrNPgtruGRTIj7Nx3BPUeMp7EAN2rYZwglcnO5g==
+"@abp/jquery-form@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.2.tgz#4b685858d54eafac123995ebfea759c769e49cab"
+ integrity sha512-ekytRAvAUNKJAPiR5i7kxASh5j3D5jabO1GHbPwq6UzapGLMzG5r8s6/1b4eX+4Zorfy+TmERNeUsWvQwf3P1A==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
jquery-form "^4.3.0"
-"@abp/jquery-validation-unobtrusive@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.1.tgz#93ff6ee92bccdde77816bfb434e967fd142f6b83"
- integrity sha512-LZE1KIALGBCINdWrHzoGczekUFtKwbXbLIgb4ZgiipO5Xja7py/iVvts10QWqUzhnBk+kmbHbj+KnjdqP4Z8pQ==
+"@abp/jquery-validation-unobtrusive@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.2.tgz#392ab72716baea26e6f560e2369d09f8c5488d3b"
+ integrity sha512-PyiWj0hj5jkjcZ1oJeLXYuoVCIAg51X4y6iLbcb1SpAbqYQP23gilDJK8xkURbysGPMiDq+7tOiKAnGiHSBnWA==
dependencies:
- "@abp/jquery-validation" "~5.0.0-beta.1"
+ "@abp/jquery-validation" "~5.0.0-beta.2"
jquery-validation-unobtrusive "^3.2.11"
-"@abp/jquery-validation@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.1.tgz#2964ca1266b087e4c4c0e768bfc4bfe0284e4ff5"
- integrity sha512-ZDNdkPy2ZNu0EYDNH20Oh9R3bICCYv9CbEj4zZ8Qavixo9VTkybY3BW0nYjcu1yb1P92gZPp80W8vyfxSo//kw==
+"@abp/jquery-validation@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.2.tgz#233eda5998ae566daeb945d8508999da2ef75a51"
+ integrity sha512-jKY0yfRgM5RGlJeQCGKkkczx5qptpPkhqWr4x+ffTUzR+ywF9FHUB5zcbELpEyWuOJ9cilap2hga2lvPZ8c+Pg==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
jquery-validation "^1.19.2"
-"@abp/jquery@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.1.tgz#360e7a164b6b4ce615a5ad91a1c78ef6893648f3"
- integrity sha512-v2t+76L45tlbpGeVR39GurZl60Rj1pR/TdUidpP6zwnpx1Y3I+CvlJNDwTESeE/ixTOT3PyFbXoMEi6hI+v39A==
+"@abp/jquery@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.2.tgz#62fa64fcc0bd5dca4b5e7534b24205a3f0461f08"
+ integrity sha512-tMzjo9qQAgJDYPvLk67YNlnOOUSTUfPWodlqfl5vvo6/NHSsB9eJhXH28txEtygX0o/Mepi9Ag87dL9VLh0DEw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
jquery "~3.6.0"
-"@abp/lodash@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.1.tgz#618797bde42b17f91d7f99fdd5f24cb5e8a361b3"
- integrity sha512-WsUjzHRZ6RkSMd5PTw0oWijDbbq/Wgonv8++ufUZi1WK5spZi9ohjcYM4io3Ms3fG+g4pWznaicYraMpV5tcsQ==
+"@abp/lodash@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.2.tgz#c821eb502de3211f94ca2f7ba8a5c0b0677c5c9b"
+ integrity sha512-lW8lz1JG8kweVOWVCB7jC6xxLUE0G6MJfwv4g0+eKwFLgsAO5dK6Yk4xZi+UXgST73OgGt5LIQJcS4+aCo/zmg==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
lodash "^4.17.15"
-"@abp/luxon@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.1.tgz#fc81fcbfb592d3baf7b9856b3cecf5b86df4bfdf"
- integrity sha512-t4lhJ/wr1rAVH1/bnzmc8niZYvolTuXUB0h6A6UYaw205QyNtimzusYkTwkc+Z3xHFUrkLCoG7J2SVoCJuioaA==
+"@abp/luxon@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.2.tgz#64c68c3091415153c8c470fb3e5650bbc00500d1"
+ integrity sha512-0mSVsycWEo5hamEuR7Mqw00JnVRlhQvpy8Bks58d7bRksIQzK8iPx9advTbP2ICF3iz9zHT9MJrMXYfvUT6oIQ==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
luxon "^1.24.1"
-"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.1.tgz#7af43d30af9b1f741fd9d9559d100aa4a5c52ae9"
- integrity sha512-B195PC4/75W0EXjGEQUd/ZARb/eGWj8DX7hq3K+J+lUWzWu46dZy8s5bBij78HqxS91/q6nbxU35Z+E9xl6ICg==
+"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.2.tgz#6c030cfe1e123be0a81f769dedd6a6b22aed9077"
+ integrity sha512-ZEkCMMDKe26b/sCArQjDOGEm8+lQB9Uis17FNyHDt/vA+FdtaPJjeLOqmfzMeLQYppvefH+JCpGzfaWwCNZmcw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/select2@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.1.tgz#15988165fcfed2ebc2b8d097965e2dc1984af35e"
- integrity sha512-SF+NkWDJNz1EeEimW5luaCMPTNN1oPzEWs47usPJo8m7HfijEvF3rymJ8jL5zWIOo05Tx3HUurLSVz0qu4vZsw==
+"@abp/select2@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.2.tgz#f5e74d56ccdabde61825453044f31fa183573b58"
+ integrity sha512-ApL7ioC4p5GguQM2KfnqtGrJ9TqBRiQh1v+y1J2Z3Lh18SJU+tsA3f9Va9ZyZNIFrpV3Bsmim2cIu7bjm7IBRw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
select2 "^4.0.13"
-"@abp/sweetalert2@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.1.tgz#c6a1185f39d3207f67753e7c486eddcefc7fd0da"
- integrity sha512-ADotpiMkIzHLy/ufK0q49V9hgF8oKE0rLRzVZV2dHBpmFR7YRcPdbb5AN9CiXDk6ol8nsocEEAwRmgD3eJG63w==
+"@abp/sweetalert2@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.2.tgz#164c1df63c2859fa5277673906f85cc8e7e2d1ef"
+ integrity sha512-UdENhKcfywOorjTf4+CxDO8UUet9lYAIDH2r+Kd1qjFKIDDu6w3TfJ7Gz108VG84+RsUevfVLgZ8qeYsA+drKQ==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
sweetalert2 "^11.0.18"
-"@abp/timeago@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.1.tgz#0f7bb8cd85b7e90d7d5c0a0940b9102e3f4f1e42"
- integrity sha512-QwYZyeDRW+X8BGecBcK1SgsClVWNYfPgvct+WkQhTIRxzbP/c1c+1irj69sNdN3df2WLnmjfu3sBw2hzz5ykbg==
+"@abp/timeago@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.2.tgz#7a6242e6cc403addf172ebf18ffb3513d4b30f21"
+ integrity sha512-wdXaKd0dBJP0mawzHqE04YWUgpUYzq8vJHGH3QGf9RpB+XpMztt1KNHR6d32VylDAEoPEtB7GH4rVvlimKa48g==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
timeago "^1.6.7"
-"@abp/toastr@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.1.tgz#d420fc5db6b15f6d623d3928bb6913996511937f"
- integrity sha512-82LfDrZQagtv4QLb643VTra4pxleOq5xYwhpOK1Ifop2K5CRgElxKfWvY2EtxdGkpCO2arvkOzjRNbxnecHB2w==
+"@abp/toastr@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.2.tgz#924f5315d3ade6ee41869d8809b625116c5b02f1"
+ integrity sha512-iqmgO/8AwORzYKf/43+Fx/478la0w+g+mrDahzokPlZFv6WUvFL3QSD/fs1mjc2yUOxEuvgprEiEfWoZcrwtNA==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
toastr "^2.1.4"
-"@abp/utils@^5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.1.tgz#e1bf9240738276081c89a67073d9d85205fdf14c"
- integrity sha512-suzKxHUautizxt5XdlJ8ONIaVMcAHrb2dp1kEnXnFRW1ip+7ZQ9/nxJj+GtY1MhHX2yPmlUQP2K8f2upJh9aoA==
+"@abp/utils@^5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.2.tgz#4d120c0f930b943071b4ba27dafedf6c8b730182"
+ integrity sha512-EZV1P+eafVBEHO6B+Ws6iX4xyeg8B6nCPLvpaFC6mStk7SGidh2rAYYWyydyh68Ky8YdbLYQE3oPaIewOhDWTg==
dependencies:
just-compare "^1.3.0"
diff --git a/modules/cms-kit/Volo.CmsKit.abpmdl.json b/modules/cms-kit/Volo.CmsKit.abpmdl.json
new file mode 100644
index 0000000000..0c9b971493
--- /dev/null
+++ b/modules/cms-kit/Volo.CmsKit.abpmdl.json
@@ -0,0 +1,155 @@
+{
+ "folders": {
+ "items": {
+ "src": {},
+ "test": {},
+ "host": {}
+ }
+ },
+ "packages": {
+ "Volo.CmsKit.Domain.Shared": {
+ "path": "src/Volo.CmsKit.Domain.Shared/Volo.CmsKit.Domain.Shared.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.CmsKit.Domain": {
+ "path": "src/Volo.CmsKit.Domain/Volo.CmsKit.Domain.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.CmsKit.Application.Contracts": {
+ "path": "src/Volo.CmsKit.Application.Contracts/Volo.CmsKit.Application.Contracts.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.CmsKit.Application": {
+ "path": "src/Volo.CmsKit.Application/Volo.CmsKit.Application.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.CmsKit.EntityFrameworkCore": {
+ "path": "src/Volo.CmsKit.EntityFrameworkCore/Volo.CmsKit.EntityFrameworkCore.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.CmsKit.MongoDB": {
+ "path": "src/Volo.CmsKit.MongoDB/Volo.CmsKit.MongoDB.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.CmsKit.HttpApi": {
+ "path": "src/Volo.CmsKit.HttpApi/Volo.CmsKit.HttpApi.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.CmsKit.HttpApi.Client": {
+ "path": "src/Volo.CmsKit.HttpApi.Client/Volo.CmsKit.HttpApi.Client.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.CmsKit.TestBase": {
+ "path": "test/Volo.CmsKit.TestBase/Volo.CmsKit.TestBase.abppkg.json",
+ "folder": "test"
+ },
+ "Volo.CmsKit.EntityFrameworkCore.Tests": {
+ "path": "test/Volo.CmsKit.EntityFrameworkCore.Tests/Volo.CmsKit.EntityFrameworkCore.Tests.abppkg.json",
+ "folder": "test"
+ },
+ "Volo.CmsKit.MongoDB.Tests": {
+ "path": "test/Volo.CmsKit.MongoDB.Tests/Volo.CmsKit.MongoDB.Tests.abppkg.json",
+ "folder": "test"
+ },
+ "Volo.CmsKit.Domain.Tests": {
+ "path": "test/Volo.CmsKit.Domain.Tests/Volo.CmsKit.Domain.Tests.abppkg.json",
+ "folder": "test"
+ },
+ "Volo.CmsKit.Application.Tests": {
+ "path": "test/Volo.CmsKit.Application.Tests/Volo.CmsKit.Application.Tests.abppkg.json",
+ "folder": "test"
+ },
+ "Volo.CmsKit.HttpApi.Host": {
+ "path": "host/Volo.CmsKit.HttpApi.Host/Volo.CmsKit.HttpApi.Host.abppkg.json",
+ "folder": "host"
+ },
+ "Volo.CmsKit.Web": {
+ "path": "src/Volo.CmsKit.Web/Volo.CmsKit.Web.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.CmsKit.HttpApi.Client.ConsoleTestApp": {
+ "path": "test/Volo.CmsKit.HttpApi.Client.ConsoleTestApp/Volo.CmsKit.HttpApi.Client.ConsoleTestApp.abppkg.json",
+ "folder": "test"
+ },
+ "Volo.CmsKit.Web.Host": {
+ "path": "host/Volo.CmsKit.Web.Host/Volo.CmsKit.Web.Host.abppkg.json",
+ "folder": "host"
+ },
+ "Volo.CmsKit.IdentityServer": {
+ "path": "host/Volo.CmsKit.IdentityServer/Volo.CmsKit.IdentityServer.abppkg.json",
+ "folder": "host"
+ },
+ "Volo.CmsKit.Host.Shared": {
+ "path": "host/Volo.CmsKit.Host.Shared/Volo.CmsKit.Host.Shared.abppkg.json",
+ "folder": "host"
+ },
+ "Volo.CmsKit.Web.Unified": {
+ "path": "host/Volo.CmsKit.Web.Unified/Volo.CmsKit.Web.Unified.abppkg.json",
+ "folder": "host"
+ },
+ "Volo.CmsKit.Admin.Application": {
+ "path": "src/Volo.CmsKit.Admin.Application/Volo.CmsKit.Admin.Application.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.CmsKit.Admin.Application.Contracts": {
+ "path": "src/Volo.CmsKit.Admin.Application.Contracts/Volo.CmsKit.Admin.Application.Contracts.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.CmsKit.Admin.HttpApi": {
+ "path": "src/Volo.CmsKit.Admin.HttpApi/Volo.CmsKit.Admin.HttpApi.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.CmsKit.Admin.HttpApi.Client": {
+ "path": "src/Volo.CmsKit.Admin.HttpApi.Client/Volo.CmsKit.Admin.HttpApi.Client.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.CmsKit.Admin.Web": {
+ "path": "src/Volo.CmsKit.Admin.Web/Volo.CmsKit.Admin.Web.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.CmsKit.Public.Application": {
+ "path": "src/Volo.CmsKit.Public.Application/Volo.CmsKit.Public.Application.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.CmsKit.Public.Application.Contracts": {
+ "path": "src/Volo.CmsKit.Public.Application.Contracts/Volo.CmsKit.Public.Application.Contracts.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.CmsKit.Public.HttpApi": {
+ "path": "src/Volo.CmsKit.Public.HttpApi/Volo.CmsKit.Public.HttpApi.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.CmsKit.Public.HttpApi.Client": {
+ "path": "src/Volo.CmsKit.Public.HttpApi.Client/Volo.CmsKit.Public.HttpApi.Client.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.CmsKit.Public.Web": {
+ "path": "src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.CmsKit.Common.Web": {
+ "path": "src/Volo.CmsKit.Common.Web/Volo.CmsKit.Common.Web.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.CmsKit.Common.Application.Contracts": {
+ "path": "src/Volo.CmsKit.Common.Application.Contracts/Volo.CmsKit.Common.Application.Contracts.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.CmsKit.Common.Application": {
+ "path": "src/Volo.CmsKit.Common.Application/Volo.CmsKit.Common.Application.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.CmsKit.Common.HttpApi": {
+ "path": "src/Volo.CmsKit.Common.HttpApi/Volo.CmsKit.Common.HttpApi.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.CmsKit.Common.HttpApi.Client": {
+ "path": "src/Volo.CmsKit.Common.HttpApi.Client/Volo.CmsKit.Common.HttpApi.Client.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.Abp.BlobStoring.Database.Installer": {
+ "path": "src/Volo.Abp.BlobStoring.Database.Installer/Volo.Abp.BlobStoring.Database.Installer.abppkg.json",
+ "folder": "src"
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/cms-kit/Volo.CmsKit.abpsln.json b/modules/cms-kit/Volo.CmsKit.abpsln.json
new file mode 100644
index 0000000000..1768ec8faf
--- /dev/null
+++ b/modules/cms-kit/Volo.CmsKit.abpsln.json
@@ -0,0 +1,7 @@
+{
+ "modules": {
+ "Volo.CmsKit": {
+ "path": "Volo.CmsKit.abpmdl.json"
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/cms-kit/Volo.CmsKit.sln b/modules/cms-kit/Volo.CmsKit.sln
index ddc1dd2000..080ccbcf7f 100644
--- a/modules/cms-kit/Volo.CmsKit.sln
+++ b/modules/cms-kit/Volo.CmsKit.sln
@@ -87,6 +87,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Common.HttpApi"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Common.HttpApi.Client", "src\Volo.CmsKit.Common.HttpApi.Client\Volo.CmsKit.Common.HttpApi.Client.csproj", "{EC98F006-2002-4CE2-AA62-5EBB589ACD79}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Installer", "src\Volo.CmsKit.Installer\Volo.CmsKit.Installer.csproj", "{908C157E-2352-4373-BF5D-E5DA19913390}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -233,6 +235,10 @@ Global
{EC98F006-2002-4CE2-AA62-5EBB589ACD79}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EC98F006-2002-4CE2-AA62-5EBB589ACD79}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EC98F006-2002-4CE2-AA62-5EBB589ACD79}.Release|Any CPU.Build.0 = Release|Any CPU
+ {908C157E-2352-4373-BF5D-E5DA19913390}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {908C157E-2352-4373-BF5D-E5DA19913390}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {908C157E-2352-4373-BF5D-E5DA19913390}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {908C157E-2352-4373-BF5D-E5DA19913390}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -277,6 +283,7 @@ Global
{5D9BD65D-353E-4618-BE49-E1DF4CFF2393} = {DDE20914-DD1B-4C7B-86FF-F21E6B5DF1D1}
{E8CC280A-D049-4564-9C71-2F5657C17937} = {DDE20914-DD1B-4C7B-86FF-F21E6B5DF1D1}
{EC98F006-2002-4CE2-AA62-5EBB589ACD79} = {DDE20914-DD1B-4C7B-86FF-F21E6B5DF1D1}
+ {908C157E-2352-4373-BF5D-E5DA19913390} = {DDE20914-DD1B-4C7B-86FF-F21E6B5DF1D1}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4324B3B4-B60B-4E3C-91D8-59576B4E26DD}
diff --git a/modules/cms-kit/angular/package.json b/modules/cms-kit/angular/package.json
index eea45c95c4..8e05a8e120 100644
--- a/modules/cms-kit/angular/package.json
+++ b/modules/cms-kit/angular/package.json
@@ -1,58 +1,58 @@
{
- "name": "cms-kit",
- "version": "0.0.0",
- "scripts": {
- "ng": "ng",
- "start": "ng serve dev-app --open",
- "build": "ng build cms-kit --prod",
- "build:app": "npm run symlink:copy -- --no-watch && ng build dev-app --prod",
- "symlink:copy": "symlink copy --angular --packages @my-company-name/cms-kit --prod",
- "test": "ng test",
- "lint": "ng lint",
- "e2e": "ng e2e",
- "compile:ivy": "yarn ngcc --properties es2015 browser module main --first-only --create-ivy-entry-points --tsconfig './tsconfig.prod.json' --source node_modules --async false",
- "postinstall": "npm run compile:ivy"
- },
- "private": true,
- "dependencies": {
- "@abp/ng.account": "~5.0.0-beta.1",
- "@abp/ng.identity": "~5.0.0-beta.1",
- "@abp/ng.setting-management": "~5.0.0-beta.1",
- "@abp/ng.tenant-management": "~5.0.0-beta.1",
- "@abp/ng.theme.basic": "~5.0.0-beta.1",
- "@angular/animations": "~10.0.0",
- "@angular/common": "~10.0.0",
- "@angular/compiler": "~10.0.0",
- "@angular/core": "~10.0.0",
- "@angular/forms": "~10.0.0",
- "@angular/platform-browser": "~10.0.0",
- "@angular/platform-browser-dynamic": "~10.0.0",
- "@angular/router": "~10.0.0",
- "rxjs": "~6.5.4",
- "tslib": "^2.0.0",
- "zone.js": "~0.10.2"
- },
- "devDependencies": {
- "@angular-devkit/build-angular": "~0.1000.0",
- "@angular-devkit/build-ng-packagr": "~0.1000.0",
- "@angular/cli": "~10.0.0",
- "@angular/compiler-cli": "~10.0.0",
- "@types/jasmine": "~3.5.0",
- "@types/jasminewd2": "~2.0.3",
- "@types/node": "^12.11.1",
- "codelyzer": "^5.1.2",
- "jasmine-core": "~3.5.0",
- "jasmine-spec-reporter": "~5.0.0",
- "karma": "~5.0.0",
- "karma-chrome-launcher": "~3.1.0",
- "karma-coverage-istanbul-reporter": "~3.0.2",
- "karma-jasmine": "~3.3.0",
- "karma-jasmine-html-reporter": "^1.5.0",
- "ng-packagr": "^10.0.0",
- "protractor": "~7.0.0",
- "symlink-manager": "^1.5.0",
- "ts-node": "~8.3.0",
- "tslint": "~6.1.0",
- "typescript": "~3.9.5"
- }
-}
\ No newline at end of file
+ "name": "cms-kit",
+ "version": "0.0.0",
+ "scripts": {
+ "ng": "ng",
+ "start": "ng serve dev-app --open",
+ "build": "ng build cms-kit --prod",
+ "build:app": "npm run symlink:copy -- --no-watch && ng build dev-app --prod",
+ "symlink:copy": "symlink copy --angular --packages @my-company-name/cms-kit --prod",
+ "test": "ng test",
+ "lint": "ng lint",
+ "e2e": "ng e2e",
+ "compile:ivy": "yarn ngcc --properties es2015 browser module main --first-only --create-ivy-entry-points --tsconfig './tsconfig.prod.json' --source node_modules --async false",
+ "postinstall": "npm run compile:ivy"
+ },
+ "private": true,
+ "dependencies": {
+ "@abp/ng.account": "~5.0.0-beta.2",
+ "@abp/ng.identity": "~5.0.0-beta.2",
+ "@abp/ng.setting-management": "~5.0.0-beta.2",
+ "@abp/ng.tenant-management": "~5.0.0-beta.2",
+ "@abp/ng.theme.basic": "~5.0.0-beta.2",
+ "@angular/animations": "~10.0.0",
+ "@angular/common": "~10.0.0",
+ "@angular/compiler": "~10.0.0",
+ "@angular/core": "~10.0.0",
+ "@angular/forms": "~10.0.0",
+ "@angular/platform-browser": "~10.0.0",
+ "@angular/platform-browser-dynamic": "~10.0.0",
+ "@angular/router": "~10.0.0",
+ "rxjs": "~6.5.4",
+ "tslib": "^2.0.0",
+ "zone.js": "~0.10.2"
+ },
+ "devDependencies": {
+ "@angular-devkit/build-angular": "~0.1000.0",
+ "@angular-devkit/build-ng-packagr": "~0.1000.0",
+ "@angular/cli": "~10.0.0",
+ "@angular/compiler-cli": "~10.0.0",
+ "@types/jasmine": "~3.5.0",
+ "@types/jasminewd2": "~2.0.3",
+ "@types/node": "^12.11.1",
+ "codelyzer": "^5.1.2",
+ "jasmine-core": "~3.5.0",
+ "jasmine-spec-reporter": "~5.0.0",
+ "karma": "~5.0.0",
+ "karma-chrome-launcher": "~3.1.0",
+ "karma-coverage-istanbul-reporter": "~3.0.2",
+ "karma-jasmine": "~3.3.0",
+ "karma-jasmine-html-reporter": "^1.5.0",
+ "ng-packagr": "^10.0.0",
+ "protractor": "~7.0.0",
+ "symlink-manager": "^1.5.0",
+ "ts-node": "~8.3.0",
+ "tslint": "~6.1.0",
+ "typescript": "~3.9.5"
+ }
+}
diff --git a/modules/cms-kit/angular/projects/cms-kit/package.json b/modules/cms-kit/angular/projects/cms-kit/package.json
index 2a03e8cb26..6e1eafa1e9 100644
--- a/modules/cms-kit/angular/projects/cms-kit/package.json
+++ b/modules/cms-kit/angular/projects/cms-kit/package.json
@@ -4,8 +4,8 @@
"peerDependencies": {
"@angular/common": "^9.1.11",
"@angular/core": "^9.1.11",
- "@abp/ng.core": ">=5.0.0-beta.1",
- "@abp/ng.theme.shared": ">=5.0.0-beta.1"
+ "@abp/ng.core": ">=5.0.0-beta.1-1",
+ "@abp/ng.theme.shared": ">=5.0.0-beta.1-1"
},
"dependencies": {
"tslib": "^2.0.0"
diff --git a/modules/cms-kit/host/Volo.CmsKit.Host.Shared/Volo.CmsKit.Host.Shared.abppkg.json b/modules/cms-kit/host/Volo.CmsKit.Host.Shared/Volo.CmsKit.Host.Shared.abppkg.json
new file mode 100644
index 0000000000..9e26dfeeb6
--- /dev/null
+++ b/modules/cms-kit/host/Volo.CmsKit.Host.Shared/Volo.CmsKit.Host.Shared.abppkg.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/modules/cms-kit/host/Volo.CmsKit.HttpApi.Host/Volo.CmsKit.HttpApi.Host.abppkg.json b/modules/cms-kit/host/Volo.CmsKit.HttpApi.Host/Volo.CmsKit.HttpApi.Host.abppkg.json
new file mode 100644
index 0000000000..35f3cbe53c
--- /dev/null
+++ b/modules/cms-kit/host/Volo.CmsKit.HttpApi.Host/Volo.CmsKit.HttpApi.Host.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "host.http-api"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/Volo.CmsKit.IdentityServer.abppkg.json b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/Volo.CmsKit.IdentityServer.abppkg.json
new file mode 100644
index 0000000000..9e26dfeeb6
--- /dev/null
+++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/Volo.CmsKit.IdentityServer.abppkg.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json
index 480eda973b..a46121a17c 100644
--- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json
+++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json
@@ -3,6 +3,6 @@
"name": "my-app-identityserver",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.1"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.2"
}
}
\ No newline at end of file
diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
index 1fee6e798d..d7b5d2d9c4 100644
--- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
+++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
@@ -1,4 +1,6 @@
/*
https://select2.org/troubleshooting/common-problems
*/
-$.fn.modal.Constructor.prototype._enforceFocus = function () { };
\ No newline at end of file
+if ($.fn.modal) {
+ $.fn.modal.Constructor.prototype._enforceFocus = function () { };
+}
diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock
index 9988de7c5b..589b57dc82 100644
--- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock
+++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock
@@ -2,37 +2,37 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@^5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.0-beta.1.tgz#2c78c2bd977a67f6c2ed77cfcd404cf9533eaaae"
- integrity sha512-b8Boztxd5NbaDlXQvgHXHtw8ZNgM4tEgo14kw/bN3mcLx05fWLGd8Lzfdi7i+Ju6U3rKbgi+0MSbga93A0KSmg==
- dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.1"
-
-"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.1.tgz#25596652bb3f7b6bac5bbd966a731144cd9646c6"
- integrity sha512-N4SHu6rn8alK4jdve00IscngrfvqJNEjrwQclXNmP9c4NtPuVM9emZdxBzKF8jFb6Hz8HiwM9H3xV/SjKCS/7A==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.1"
- "@abp/bootstrap" "~5.0.0-beta.1"
- "@abp/bootstrap-datepicker" "~5.0.0-beta.1"
- "@abp/datatables.net-bs4" "~5.0.0-beta.1"
- "@abp/font-awesome" "~5.0.0-beta.1"
- "@abp/jquery-form" "~5.0.0-beta.1"
- "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.1"
- "@abp/lodash" "~5.0.0-beta.1"
- "@abp/luxon" "~5.0.0-beta.1"
- "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.1"
- "@abp/select2" "~5.0.0-beta.1"
- "@abp/sweetalert2" "~5.0.0-beta.1"
- "@abp/timeago" "~5.0.0-beta.1"
- "@abp/toastr" "~5.0.0-beta.1"
-
-"@abp/aspnetcore.mvc.ui@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.1.tgz#30c14386899596bf91e8871810dbaa1a0e51e996"
- integrity sha512-pabiGHghC62eg95RfAncEt0+yGdBxdMmyqCXV+Be4JjaMz/hGZIDOPIYnaqCayZtyMmIRqG6IAwi99DqBjkQAQ==
+"@abp/aspnetcore.mvc.ui.theme.basic@^5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.0-beta.2.tgz#077d1edd88f2f1ccb5c8227180a75e3121eece19"
+ integrity sha512-b7f05Fza18NYHudrHosYuCX/UJ/Y3KYJrJMHqdvAsZYu0t3dc7EMWKYTDA/+rDEO8iV/83twRYfHLf0tmVyc1Q==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.2"
+
+"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.2.tgz#8c58d252f1a39f91c2c287b91691e5bd772f4918"
+ integrity sha512-l4suGM7PjGTw/MEg2f2BdbRXYzALhZQUSijzKIQTy5dwcA/JQPsLbezPzGy45fD3lXsYxBwS4QaOmofTosKkug==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.2"
+ "@abp/bootstrap" "~5.0.0-beta.2"
+ "@abp/bootstrap-datepicker" "~5.0.0-beta.2"
+ "@abp/datatables.net-bs4" "~5.0.0-beta.2"
+ "@abp/font-awesome" "~5.0.0-beta.2"
+ "@abp/jquery-form" "~5.0.0-beta.2"
+ "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.2"
+ "@abp/lodash" "~5.0.0-beta.2"
+ "@abp/luxon" "~5.0.0-beta.2"
+ "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.2"
+ "@abp/select2" "~5.0.0-beta.2"
+ "@abp/sweetalert2" "~5.0.0-beta.2"
+ "@abp/timeago" "~5.0.0-beta.2"
+ "@abp/toastr" "~5.0.0-beta.2"
+
+"@abp/aspnetcore.mvc.ui@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.2.tgz#c30d9905e133451208e379f7173ed9c44dd5f487"
+ integrity sha512-8Dzfg5SzeVoXz/nY11o2u3y7ZQdUW/zVSYVTgbsCMC1HCe2yzptpr2XI0Goz8jQKgz0G+zg3iwfeur7vNoaoMw==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@@ -41,145 +41,145 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
-"@abp/bootstrap-datepicker@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.1.tgz#727e0f7305a94c95ece152ffff011bcff621f46d"
- integrity sha512-txhdlJqyO2D9MkGLYgrsiDaC58cb2eCpk2uxoqqQeVWvuRPo/L+9rCBk+bu6J37FGJtU8aabtHJyR5xnYbv0TQ==
+"@abp/bootstrap-datepicker@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.2.tgz#dbf92485225a424f0e53e55c3ef8c993943682f0"
+ integrity sha512-jJWVKrkKcUMEqwBrEqhGD1zDFD8b0b3j0WdlzKuzlw26AaQkfE4LQ9Gjfjs+RnTW1LxPn8rGP8QCgdVeWMNjQQ==
dependencies:
bootstrap-datepicker "^1.9.0"
-"@abp/bootstrap@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.1.tgz#075a15459ff8e3896b6553786e6c8f091c6ffcad"
- integrity sha512-W8z6qSAsRoXmG0++xH6Bk1oRc90hFqVcjKI+5XgBQhUUCn2qBruBYOKFxPg2GeT2f1k9K5TrCEnnVrh0sOP9/A==
+"@abp/bootstrap@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.2.tgz#0faaa85871fd23076dd597dce83dc3020b1ff950"
+ integrity sha512-zy0DUcAJuX+Oeu4csw7XbyLGq/YdfonMLJt/Mkpq8CjAssD7n7aJK6PwG+akaI4giSQd7Sc1JvvnKRMRzyxy1Q==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
bootstrap "^4.6.0"
bootstrap-v4-rtl "4.6.0-1"
-"@abp/core@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.1.tgz#6cff06b13529ab9d7a6ddc4e89dc40616e6b7739"
- integrity sha512-TK1CnurJIK/SXfsNTk6HSpxdaJgVxwvqNd4F3fxCC0Uj8s5viD3TAGk39Hkp4909WGfNrRq8BEUNvTYM/rP6gg==
+"@abp/core@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.2.tgz#f9643d21b19128be3ad58b23083e1fc9620f2102"
+ integrity sha512-AHlJQF5NC+yNsj5xILHk1CF++Z93aQDNp0zdJciDqIexH9lEJ+AQCX2EKLn0yjWt4Ga00pOOmQM5vJVJjuJCEw==
dependencies:
- "@abp/utils" "^5.0.0-beta.1"
+ "@abp/utils" "^5.0.0-beta.2"
-"@abp/datatables.net-bs4@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.1.tgz#110d7d8cf1c15db7432d8f0649f4317ba8de10dd"
- integrity sha512-CPodZP9pqLdwnFZ77/mcSfuhyK1WMi/c+9VWpGXFQSGaABNKPP2UIdAChwUcBRdGkZRa/IhXx3CCr1ZMLpJsMQ==
+"@abp/datatables.net-bs4@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.2.tgz#3afb32918f59b55c68d3d37b2c1f0bf49bb06fc8"
+ integrity sha512-t6YserKkBId7KnT46uYaGw6HJrf8tcLp4bJmGyUSnCwVlgJcha/P6fr3pKWqFz9QPGk5riCZF3hK6x1BH9u71g==
dependencies:
- "@abp/datatables.net" "~5.0.0-beta.1"
+ "@abp/datatables.net" "~5.0.0-beta.2"
datatables.net-bs4 "^1.10.21"
-"@abp/datatables.net@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.1.tgz#8e784a011d33de154554f3239c448fcfd8adb713"
- integrity sha512-mRMYqTCoYLmDLvL+CvmwUS4JqCqdkn6mxHd7zgkaR04xlGLEmNae5aGbs1wURJ86MOWrHbfkx66lQjkul3zbQw==
+"@abp/datatables.net@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.2.tgz#fc87be76ebec94b16c6734c2249ea8a0a04a83b8"
+ integrity sha512-aEAlej1wNtxsxpwlw2GFOV0tFSZ7MWA+Wpfi5QZ4VIbYHSIkhEnz0apiNMBsoB8i7VJLJKZuKvynlJWYABNk0Q==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
datatables.net "^1.10.21"
-"@abp/font-awesome@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.1.tgz#3ae721c447a009601226c381a20dc4adabe154e1"
- integrity sha512-fsMqwApogZ1rAogStQxBX/Nh8akXPW/Alm8UayfK6TXIkPPjBz5RQSHfdlosG7M/U3mwUNGcLlaDvQXsE/nqow==
+"@abp/font-awesome@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.2.tgz#10a920fb20294f7ccd404ea2b302fb11f68f0705"
+ integrity sha512-Mmhfm7g5HdflvqbZOZDKk335IlY8ipwtKsCQ1qRaobsMpWi2AFh6/P/XX7y4H5p0wH5cluUsSzS1QB37QXp36w==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
"@fortawesome/fontawesome-free" "^5.13.0"
-"@abp/jquery-form@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.1.tgz#d13f4cffce48125547b9da57cfc407f9a35a89e6"
- integrity sha512-RYE90XIDxWkvxO5ukuZ2PHk6aA/o7NQKLcR9WsN1G2xTU/frrNPgtruGRTIj7Nx3BPUeMp7EAN2rYZwglcnO5g==
+"@abp/jquery-form@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.2.tgz#4b685858d54eafac123995ebfea759c769e49cab"
+ integrity sha512-ekytRAvAUNKJAPiR5i7kxASh5j3D5jabO1GHbPwq6UzapGLMzG5r8s6/1b4eX+4Zorfy+TmERNeUsWvQwf3P1A==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
jquery-form "^4.3.0"
-"@abp/jquery-validation-unobtrusive@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.1.tgz#93ff6ee92bccdde77816bfb434e967fd142f6b83"
- integrity sha512-LZE1KIALGBCINdWrHzoGczekUFtKwbXbLIgb4ZgiipO5Xja7py/iVvts10QWqUzhnBk+kmbHbj+KnjdqP4Z8pQ==
+"@abp/jquery-validation-unobtrusive@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.2.tgz#392ab72716baea26e6f560e2369d09f8c5488d3b"
+ integrity sha512-PyiWj0hj5jkjcZ1oJeLXYuoVCIAg51X4y6iLbcb1SpAbqYQP23gilDJK8xkURbysGPMiDq+7tOiKAnGiHSBnWA==
dependencies:
- "@abp/jquery-validation" "~5.0.0-beta.1"
+ "@abp/jquery-validation" "~5.0.0-beta.2"
jquery-validation-unobtrusive "^3.2.11"
-"@abp/jquery-validation@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.1.tgz#2964ca1266b087e4c4c0e768bfc4bfe0284e4ff5"
- integrity sha512-ZDNdkPy2ZNu0EYDNH20Oh9R3bICCYv9CbEj4zZ8Qavixo9VTkybY3BW0nYjcu1yb1P92gZPp80W8vyfxSo//kw==
+"@abp/jquery-validation@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.2.tgz#233eda5998ae566daeb945d8508999da2ef75a51"
+ integrity sha512-jKY0yfRgM5RGlJeQCGKkkczx5qptpPkhqWr4x+ffTUzR+ywF9FHUB5zcbELpEyWuOJ9cilap2hga2lvPZ8c+Pg==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
jquery-validation "^1.19.2"
-"@abp/jquery@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.1.tgz#360e7a164b6b4ce615a5ad91a1c78ef6893648f3"
- integrity sha512-v2t+76L45tlbpGeVR39GurZl60Rj1pR/TdUidpP6zwnpx1Y3I+CvlJNDwTESeE/ixTOT3PyFbXoMEi6hI+v39A==
+"@abp/jquery@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.2.tgz#62fa64fcc0bd5dca4b5e7534b24205a3f0461f08"
+ integrity sha512-tMzjo9qQAgJDYPvLk67YNlnOOUSTUfPWodlqfl5vvo6/NHSsB9eJhXH28txEtygX0o/Mepi9Ag87dL9VLh0DEw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
jquery "~3.6.0"
-"@abp/lodash@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.1.tgz#618797bde42b17f91d7f99fdd5f24cb5e8a361b3"
- integrity sha512-WsUjzHRZ6RkSMd5PTw0oWijDbbq/Wgonv8++ufUZi1WK5spZi9ohjcYM4io3Ms3fG+g4pWznaicYraMpV5tcsQ==
+"@abp/lodash@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.2.tgz#c821eb502de3211f94ca2f7ba8a5c0b0677c5c9b"
+ integrity sha512-lW8lz1JG8kweVOWVCB7jC6xxLUE0G6MJfwv4g0+eKwFLgsAO5dK6Yk4xZi+UXgST73OgGt5LIQJcS4+aCo/zmg==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
lodash "^4.17.15"
-"@abp/luxon@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.1.tgz#fc81fcbfb592d3baf7b9856b3cecf5b86df4bfdf"
- integrity sha512-t4lhJ/wr1rAVH1/bnzmc8niZYvolTuXUB0h6A6UYaw205QyNtimzusYkTwkc+Z3xHFUrkLCoG7J2SVoCJuioaA==
+"@abp/luxon@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.2.tgz#64c68c3091415153c8c470fb3e5650bbc00500d1"
+ integrity sha512-0mSVsycWEo5hamEuR7Mqw00JnVRlhQvpy8Bks58d7bRksIQzK8iPx9advTbP2ICF3iz9zHT9MJrMXYfvUT6oIQ==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
luxon "^1.24.1"
-"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.1.tgz#7af43d30af9b1f741fd9d9559d100aa4a5c52ae9"
- integrity sha512-B195PC4/75W0EXjGEQUd/ZARb/eGWj8DX7hq3K+J+lUWzWu46dZy8s5bBij78HqxS91/q6nbxU35Z+E9xl6ICg==
+"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.2.tgz#6c030cfe1e123be0a81f769dedd6a6b22aed9077"
+ integrity sha512-ZEkCMMDKe26b/sCArQjDOGEm8+lQB9Uis17FNyHDt/vA+FdtaPJjeLOqmfzMeLQYppvefH+JCpGzfaWwCNZmcw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/select2@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.1.tgz#15988165fcfed2ebc2b8d097965e2dc1984af35e"
- integrity sha512-SF+NkWDJNz1EeEimW5luaCMPTNN1oPzEWs47usPJo8m7HfijEvF3rymJ8jL5zWIOo05Tx3HUurLSVz0qu4vZsw==
+"@abp/select2@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.2.tgz#f5e74d56ccdabde61825453044f31fa183573b58"
+ integrity sha512-ApL7ioC4p5GguQM2KfnqtGrJ9TqBRiQh1v+y1J2Z3Lh18SJU+tsA3f9Va9ZyZNIFrpV3Bsmim2cIu7bjm7IBRw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
select2 "^4.0.13"
-"@abp/sweetalert2@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.1.tgz#c6a1185f39d3207f67753e7c486eddcefc7fd0da"
- integrity sha512-ADotpiMkIzHLy/ufK0q49V9hgF8oKE0rLRzVZV2dHBpmFR7YRcPdbb5AN9CiXDk6ol8nsocEEAwRmgD3eJG63w==
+"@abp/sweetalert2@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.2.tgz#164c1df63c2859fa5277673906f85cc8e7e2d1ef"
+ integrity sha512-UdENhKcfywOorjTf4+CxDO8UUet9lYAIDH2r+Kd1qjFKIDDu6w3TfJ7Gz108VG84+RsUevfVLgZ8qeYsA+drKQ==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
sweetalert2 "^11.0.18"
-"@abp/timeago@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.1.tgz#0f7bb8cd85b7e90d7d5c0a0940b9102e3f4f1e42"
- integrity sha512-QwYZyeDRW+X8BGecBcK1SgsClVWNYfPgvct+WkQhTIRxzbP/c1c+1irj69sNdN3df2WLnmjfu3sBw2hzz5ykbg==
+"@abp/timeago@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.2.tgz#7a6242e6cc403addf172ebf18ffb3513d4b30f21"
+ integrity sha512-wdXaKd0dBJP0mawzHqE04YWUgpUYzq8vJHGH3QGf9RpB+XpMztt1KNHR6d32VylDAEoPEtB7GH4rVvlimKa48g==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
timeago "^1.6.7"
-"@abp/toastr@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.1.tgz#d420fc5db6b15f6d623d3928bb6913996511937f"
- integrity sha512-82LfDrZQagtv4QLb643VTra4pxleOq5xYwhpOK1Ifop2K5CRgElxKfWvY2EtxdGkpCO2arvkOzjRNbxnecHB2w==
+"@abp/toastr@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.2.tgz#924f5315d3ade6ee41869d8809b625116c5b02f1"
+ integrity sha512-iqmgO/8AwORzYKf/43+Fx/478la0w+g+mrDahzokPlZFv6WUvFL3QSD/fs1mjc2yUOxEuvgprEiEfWoZcrwtNA==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
toastr "^2.1.4"
-"@abp/utils@^5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.1.tgz#e1bf9240738276081c89a67073d9d85205fdf14c"
- integrity sha512-suzKxHUautizxt5XdlJ8ONIaVMcAHrb2dp1kEnXnFRW1ip+7ZQ9/nxJj+GtY1MhHX2yPmlUQP2K8f2upJh9aoA==
+"@abp/utils@^5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.2.tgz#4d120c0f930b943071b4ba27dafedf6c8b730182"
+ integrity sha512-EZV1P+eafVBEHO6B+Ws6iX4xyeg8B6nCPLvpaFC6mStk7SGidh2rAYYWyydyh68Ky8YdbLYQE3oPaIewOhDWTg==
dependencies:
just-compare "^1.3.0"
diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/Volo.CmsKit.Web.Host.abppkg.json b/modules/cms-kit/host/Volo.CmsKit.Web.Host/Volo.CmsKit.Web.Host.abppkg.json
new file mode 100644
index 0000000000..48875c29cf
--- /dev/null
+++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/Volo.CmsKit.Web.Host.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "host.mvc"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json
index c0cac3c1ac..0b39047afd 100644
--- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json
+++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json
@@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.1"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.2"
}
}
\ No newline at end of file
diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js b/modules/cms-kit/host/Volo.CmsKit.Web.Host/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
index 1fee6e798d..d7b5d2d9c4 100644
--- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
+++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
@@ -1,4 +1,6 @@
/*
https://select2.org/troubleshooting/common-problems
*/
-$.fn.modal.Constructor.prototype._enforceFocus = function () { };
\ No newline at end of file
+if ($.fn.modal) {
+ $.fn.modal.Constructor.prototype._enforceFocus = function () { };
+}
diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock
index 5afc162e3e..4718d29670 100644
--- a/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock
+++ b/modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock
@@ -2,37 +2,37 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@^5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.0-beta.1.tgz#2c78c2bd977a67f6c2ed77cfcd404cf9533eaaae"
- integrity sha512-b8Boztxd5NbaDlXQvgHXHtw8ZNgM4tEgo14kw/bN3mcLx05fWLGd8Lzfdi7i+Ju6U3rKbgi+0MSbga93A0KSmg==
- dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.1"
-
-"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.1.tgz#25596652bb3f7b6bac5bbd966a731144cd9646c6"
- integrity sha512-N4SHu6rn8alK4jdve00IscngrfvqJNEjrwQclXNmP9c4NtPuVM9emZdxBzKF8jFb6Hz8HiwM9H3xV/SjKCS/7A==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.1"
- "@abp/bootstrap" "~5.0.0-beta.1"
- "@abp/bootstrap-datepicker" "~5.0.0-beta.1"
- "@abp/datatables.net-bs4" "~5.0.0-beta.1"
- "@abp/font-awesome" "~5.0.0-beta.1"
- "@abp/jquery-form" "~5.0.0-beta.1"
- "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.1"
- "@abp/lodash" "~5.0.0-beta.1"
- "@abp/luxon" "~5.0.0-beta.1"
- "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.1"
- "@abp/select2" "~5.0.0-beta.1"
- "@abp/sweetalert2" "~5.0.0-beta.1"
- "@abp/timeago" "~5.0.0-beta.1"
- "@abp/toastr" "~5.0.0-beta.1"
-
-"@abp/aspnetcore.mvc.ui@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.1.tgz#30c14386899596bf91e8871810dbaa1a0e51e996"
- integrity sha512-pabiGHghC62eg95RfAncEt0+yGdBxdMmyqCXV+Be4JjaMz/hGZIDOPIYnaqCayZtyMmIRqG6IAwi99DqBjkQAQ==
+"@abp/aspnetcore.mvc.ui.theme.basic@^5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.0-beta.2.tgz#077d1edd88f2f1ccb5c8227180a75e3121eece19"
+ integrity sha512-b7f05Fza18NYHudrHosYuCX/UJ/Y3KYJrJMHqdvAsZYu0t3dc7EMWKYTDA/+rDEO8iV/83twRYfHLf0tmVyc1Q==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.2"
+
+"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.2.tgz#8c58d252f1a39f91c2c287b91691e5bd772f4918"
+ integrity sha512-l4suGM7PjGTw/MEg2f2BdbRXYzALhZQUSijzKIQTy5dwcA/JQPsLbezPzGy45fD3lXsYxBwS4QaOmofTosKkug==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.2"
+ "@abp/bootstrap" "~5.0.0-beta.2"
+ "@abp/bootstrap-datepicker" "~5.0.0-beta.2"
+ "@abp/datatables.net-bs4" "~5.0.0-beta.2"
+ "@abp/font-awesome" "~5.0.0-beta.2"
+ "@abp/jquery-form" "~5.0.0-beta.2"
+ "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.2"
+ "@abp/lodash" "~5.0.0-beta.2"
+ "@abp/luxon" "~5.0.0-beta.2"
+ "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.2"
+ "@abp/select2" "~5.0.0-beta.2"
+ "@abp/sweetalert2" "~5.0.0-beta.2"
+ "@abp/timeago" "~5.0.0-beta.2"
+ "@abp/toastr" "~5.0.0-beta.2"
+
+"@abp/aspnetcore.mvc.ui@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.2.tgz#c30d9905e133451208e379f7173ed9c44dd5f487"
+ integrity sha512-8Dzfg5SzeVoXz/nY11o2u3y7ZQdUW/zVSYVTgbsCMC1HCe2yzptpr2XI0Goz8jQKgz0G+zg3iwfeur7vNoaoMw==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@@ -41,145 +41,145 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
-"@abp/bootstrap-datepicker@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.1.tgz#727e0f7305a94c95ece152ffff011bcff621f46d"
- integrity sha512-txhdlJqyO2D9MkGLYgrsiDaC58cb2eCpk2uxoqqQeVWvuRPo/L+9rCBk+bu6J37FGJtU8aabtHJyR5xnYbv0TQ==
+"@abp/bootstrap-datepicker@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.2.tgz#dbf92485225a424f0e53e55c3ef8c993943682f0"
+ integrity sha512-jJWVKrkKcUMEqwBrEqhGD1zDFD8b0b3j0WdlzKuzlw26AaQkfE4LQ9Gjfjs+RnTW1LxPn8rGP8QCgdVeWMNjQQ==
dependencies:
bootstrap-datepicker "^1.9.0"
-"@abp/bootstrap@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.1.tgz#075a15459ff8e3896b6553786e6c8f091c6ffcad"
- integrity sha512-W8z6qSAsRoXmG0++xH6Bk1oRc90hFqVcjKI+5XgBQhUUCn2qBruBYOKFxPg2GeT2f1k9K5TrCEnnVrh0sOP9/A==
+"@abp/bootstrap@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.2.tgz#0faaa85871fd23076dd597dce83dc3020b1ff950"
+ integrity sha512-zy0DUcAJuX+Oeu4csw7XbyLGq/YdfonMLJt/Mkpq8CjAssD7n7aJK6PwG+akaI4giSQd7Sc1JvvnKRMRzyxy1Q==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
bootstrap "^4.6.0"
bootstrap-v4-rtl "4.6.0-1"
-"@abp/core@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.1.tgz#6cff06b13529ab9d7a6ddc4e89dc40616e6b7739"
- integrity sha512-TK1CnurJIK/SXfsNTk6HSpxdaJgVxwvqNd4F3fxCC0Uj8s5viD3TAGk39Hkp4909WGfNrRq8BEUNvTYM/rP6gg==
+"@abp/core@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.2.tgz#f9643d21b19128be3ad58b23083e1fc9620f2102"
+ integrity sha512-AHlJQF5NC+yNsj5xILHk1CF++Z93aQDNp0zdJciDqIexH9lEJ+AQCX2EKLn0yjWt4Ga00pOOmQM5vJVJjuJCEw==
dependencies:
- "@abp/utils" "^5.0.0-beta.1"
+ "@abp/utils" "^5.0.0-beta.2"
-"@abp/datatables.net-bs4@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.1.tgz#110d7d8cf1c15db7432d8f0649f4317ba8de10dd"
- integrity sha512-CPodZP9pqLdwnFZ77/mcSfuhyK1WMi/c+9VWpGXFQSGaABNKPP2UIdAChwUcBRdGkZRa/IhXx3CCr1ZMLpJsMQ==
+"@abp/datatables.net-bs4@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.2.tgz#3afb32918f59b55c68d3d37b2c1f0bf49bb06fc8"
+ integrity sha512-t6YserKkBId7KnT46uYaGw6HJrf8tcLp4bJmGyUSnCwVlgJcha/P6fr3pKWqFz9QPGk5riCZF3hK6x1BH9u71g==
dependencies:
- "@abp/datatables.net" "~5.0.0-beta.1"
+ "@abp/datatables.net" "~5.0.0-beta.2"
datatables.net-bs4 "^1.10.21"
-"@abp/datatables.net@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.1.tgz#8e784a011d33de154554f3239c448fcfd8adb713"
- integrity sha512-mRMYqTCoYLmDLvL+CvmwUS4JqCqdkn6mxHd7zgkaR04xlGLEmNae5aGbs1wURJ86MOWrHbfkx66lQjkul3zbQw==
+"@abp/datatables.net@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.2.tgz#fc87be76ebec94b16c6734c2249ea8a0a04a83b8"
+ integrity sha512-aEAlej1wNtxsxpwlw2GFOV0tFSZ7MWA+Wpfi5QZ4VIbYHSIkhEnz0apiNMBsoB8i7VJLJKZuKvynlJWYABNk0Q==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
datatables.net "^1.10.21"
-"@abp/font-awesome@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.1.tgz#3ae721c447a009601226c381a20dc4adabe154e1"
- integrity sha512-fsMqwApogZ1rAogStQxBX/Nh8akXPW/Alm8UayfK6TXIkPPjBz5RQSHfdlosG7M/U3mwUNGcLlaDvQXsE/nqow==
+"@abp/font-awesome@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.2.tgz#10a920fb20294f7ccd404ea2b302fb11f68f0705"
+ integrity sha512-Mmhfm7g5HdflvqbZOZDKk335IlY8ipwtKsCQ1qRaobsMpWi2AFh6/P/XX7y4H5p0wH5cluUsSzS1QB37QXp36w==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
"@fortawesome/fontawesome-free" "^5.13.0"
-"@abp/jquery-form@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.1.tgz#d13f4cffce48125547b9da57cfc407f9a35a89e6"
- integrity sha512-RYE90XIDxWkvxO5ukuZ2PHk6aA/o7NQKLcR9WsN1G2xTU/frrNPgtruGRTIj7Nx3BPUeMp7EAN2rYZwglcnO5g==
+"@abp/jquery-form@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.2.tgz#4b685858d54eafac123995ebfea759c769e49cab"
+ integrity sha512-ekytRAvAUNKJAPiR5i7kxASh5j3D5jabO1GHbPwq6UzapGLMzG5r8s6/1b4eX+4Zorfy+TmERNeUsWvQwf3P1A==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
jquery-form "^4.3.0"
-"@abp/jquery-validation-unobtrusive@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.1.tgz#93ff6ee92bccdde77816bfb434e967fd142f6b83"
- integrity sha512-LZE1KIALGBCINdWrHzoGczekUFtKwbXbLIgb4ZgiipO5Xja7py/iVvts10QWqUzhnBk+kmbHbj+KnjdqP4Z8pQ==
+"@abp/jquery-validation-unobtrusive@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.2.tgz#392ab72716baea26e6f560e2369d09f8c5488d3b"
+ integrity sha512-PyiWj0hj5jkjcZ1oJeLXYuoVCIAg51X4y6iLbcb1SpAbqYQP23gilDJK8xkURbysGPMiDq+7tOiKAnGiHSBnWA==
dependencies:
- "@abp/jquery-validation" "~5.0.0-beta.1"
+ "@abp/jquery-validation" "~5.0.0-beta.2"
jquery-validation-unobtrusive "^3.2.11"
-"@abp/jquery-validation@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.1.tgz#2964ca1266b087e4c4c0e768bfc4bfe0284e4ff5"
- integrity sha512-ZDNdkPy2ZNu0EYDNH20Oh9R3bICCYv9CbEj4zZ8Qavixo9VTkybY3BW0nYjcu1yb1P92gZPp80W8vyfxSo//kw==
+"@abp/jquery-validation@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.2.tgz#233eda5998ae566daeb945d8508999da2ef75a51"
+ integrity sha512-jKY0yfRgM5RGlJeQCGKkkczx5qptpPkhqWr4x+ffTUzR+ywF9FHUB5zcbELpEyWuOJ9cilap2hga2lvPZ8c+Pg==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
jquery-validation "^1.19.2"
-"@abp/jquery@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.1.tgz#360e7a164b6b4ce615a5ad91a1c78ef6893648f3"
- integrity sha512-v2t+76L45tlbpGeVR39GurZl60Rj1pR/TdUidpP6zwnpx1Y3I+CvlJNDwTESeE/ixTOT3PyFbXoMEi6hI+v39A==
+"@abp/jquery@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.2.tgz#62fa64fcc0bd5dca4b5e7534b24205a3f0461f08"
+ integrity sha512-tMzjo9qQAgJDYPvLk67YNlnOOUSTUfPWodlqfl5vvo6/NHSsB9eJhXH28txEtygX0o/Mepi9Ag87dL9VLh0DEw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
jquery "~3.6.0"
-"@abp/lodash@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.1.tgz#618797bde42b17f91d7f99fdd5f24cb5e8a361b3"
- integrity sha512-WsUjzHRZ6RkSMd5PTw0oWijDbbq/Wgonv8++ufUZi1WK5spZi9ohjcYM4io3Ms3fG+g4pWznaicYraMpV5tcsQ==
+"@abp/lodash@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.2.tgz#c821eb502de3211f94ca2f7ba8a5c0b0677c5c9b"
+ integrity sha512-lW8lz1JG8kweVOWVCB7jC6xxLUE0G6MJfwv4g0+eKwFLgsAO5dK6Yk4xZi+UXgST73OgGt5LIQJcS4+aCo/zmg==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
lodash "^4.17.15"
-"@abp/luxon@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.1.tgz#fc81fcbfb592d3baf7b9856b3cecf5b86df4bfdf"
- integrity sha512-t4lhJ/wr1rAVH1/bnzmc8niZYvolTuXUB0h6A6UYaw205QyNtimzusYkTwkc+Z3xHFUrkLCoG7J2SVoCJuioaA==
+"@abp/luxon@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.2.tgz#64c68c3091415153c8c470fb3e5650bbc00500d1"
+ integrity sha512-0mSVsycWEo5hamEuR7Mqw00JnVRlhQvpy8Bks58d7bRksIQzK8iPx9advTbP2ICF3iz9zHT9MJrMXYfvUT6oIQ==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
luxon "^1.24.1"
-"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.1.tgz#7af43d30af9b1f741fd9d9559d100aa4a5c52ae9"
- integrity sha512-B195PC4/75W0EXjGEQUd/ZARb/eGWj8DX7hq3K+J+lUWzWu46dZy8s5bBij78HqxS91/q6nbxU35Z+E9xl6ICg==
+"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.2.tgz#6c030cfe1e123be0a81f769dedd6a6b22aed9077"
+ integrity sha512-ZEkCMMDKe26b/sCArQjDOGEm8+lQB9Uis17FNyHDt/vA+FdtaPJjeLOqmfzMeLQYppvefH+JCpGzfaWwCNZmcw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/select2@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.1.tgz#15988165fcfed2ebc2b8d097965e2dc1984af35e"
- integrity sha512-SF+NkWDJNz1EeEimW5luaCMPTNN1oPzEWs47usPJo8m7HfijEvF3rymJ8jL5zWIOo05Tx3HUurLSVz0qu4vZsw==
+"@abp/select2@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.2.tgz#f5e74d56ccdabde61825453044f31fa183573b58"
+ integrity sha512-ApL7ioC4p5GguQM2KfnqtGrJ9TqBRiQh1v+y1J2Z3Lh18SJU+tsA3f9Va9ZyZNIFrpV3Bsmim2cIu7bjm7IBRw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
select2 "^4.0.13"
-"@abp/sweetalert2@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.1.tgz#c6a1185f39d3207f67753e7c486eddcefc7fd0da"
- integrity sha512-ADotpiMkIzHLy/ufK0q49V9hgF8oKE0rLRzVZV2dHBpmFR7YRcPdbb5AN9CiXDk6ol8nsocEEAwRmgD3eJG63w==
+"@abp/sweetalert2@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.2.tgz#164c1df63c2859fa5277673906f85cc8e7e2d1ef"
+ integrity sha512-UdENhKcfywOorjTf4+CxDO8UUet9lYAIDH2r+Kd1qjFKIDDu6w3TfJ7Gz108VG84+RsUevfVLgZ8qeYsA+drKQ==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
sweetalert2 "^11.0.18"
-"@abp/timeago@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.1.tgz#0f7bb8cd85b7e90d7d5c0a0940b9102e3f4f1e42"
- integrity sha512-QwYZyeDRW+X8BGecBcK1SgsClVWNYfPgvct+WkQhTIRxzbP/c1c+1irj69sNdN3df2WLnmjfu3sBw2hzz5ykbg==
+"@abp/timeago@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.2.tgz#7a6242e6cc403addf172ebf18ffb3513d4b30f21"
+ integrity sha512-wdXaKd0dBJP0mawzHqE04YWUgpUYzq8vJHGH3QGf9RpB+XpMztt1KNHR6d32VylDAEoPEtB7GH4rVvlimKa48g==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
timeago "^1.6.7"
-"@abp/toastr@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.1.tgz#d420fc5db6b15f6d623d3928bb6913996511937f"
- integrity sha512-82LfDrZQagtv4QLb643VTra4pxleOq5xYwhpOK1Ifop2K5CRgElxKfWvY2EtxdGkpCO2arvkOzjRNbxnecHB2w==
+"@abp/toastr@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.2.tgz#924f5315d3ade6ee41869d8809b625116c5b02f1"
+ integrity sha512-iqmgO/8AwORzYKf/43+Fx/478la0w+g+mrDahzokPlZFv6WUvFL3QSD/fs1mjc2yUOxEuvgprEiEfWoZcrwtNA==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
toastr "^2.1.4"
-"@abp/utils@^5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.1.tgz#e1bf9240738276081c89a67073d9d85205fdf14c"
- integrity sha512-suzKxHUautizxt5XdlJ8ONIaVMcAHrb2dp1kEnXnFRW1ip+7ZQ9/nxJj+GtY1MhHX2yPmlUQP2K8f2upJh9aoA==
+"@abp/utils@^5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.2.tgz#4d120c0f930b943071b4ba27dafedf6c8b730182"
+ integrity sha512-EZV1P+eafVBEHO6B+Ws6iX4xyeg8B6nCPLvpaFC6mStk7SGidh2rAYYWyydyh68Ky8YdbLYQE3oPaIewOhDWTg==
dependencies:
just-compare "^1.3.0"
diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Volo.CmsKit.Web.Unified.abppkg.json b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Volo.CmsKit.Web.Unified.abppkg.json
new file mode 100644
index 0000000000..9e26dfeeb6
--- /dev/null
+++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Volo.CmsKit.Web.Unified.abppkg.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json
index 22c81d159e..883e7e539d 100644
--- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json
+++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json
@@ -3,12 +3,12 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.1",
- "@abp/cms-kit": "5.0.0-beta.1",
- "@abp/tui-editor": "^5.0.0-beta.1",
+ "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.2",
+ "@abp/cms-kit": "5.0.0-beta.2",
+ "@abp/tui-editor": "^5.0.0-beta.2",
"tui-code-snippet": "1.5.2",
- "@abp/uppy": "^5.0.0-beta.1",
+ "@abp/uppy": "^5.0.0-beta.2",
"slugify": "1.4.6",
- "@abp/jstree": "5.0.0-beta.1"
+ "@abp/jstree": "5.0.0-beta.2"
}
}
\ No newline at end of file
diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
index 1fee6e798d..d7b5d2d9c4 100644
--- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
+++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
@@ -1,4 +1,6 @@
/*
https://select2.org/troubleshooting/common-problems
*/
-$.fn.modal.Constructor.prototype._enforceFocus = function () { };
\ No newline at end of file
+if ($.fn.modal) {
+ $.fn.modal.Constructor.prototype._enforceFocus = function () { };
+}
diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock
index 5fced15453..ed8d58c95c 100644
--- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock
+++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock
@@ -2,37 +2,37 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@^5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.0-beta.1.tgz#2c78c2bd977a67f6c2ed77cfcd404cf9533eaaae"
- integrity sha512-b8Boztxd5NbaDlXQvgHXHtw8ZNgM4tEgo14kw/bN3mcLx05fWLGd8Lzfdi7i+Ju6U3rKbgi+0MSbga93A0KSmg==
- dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.1"
-
-"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.1.tgz#25596652bb3f7b6bac5bbd966a731144cd9646c6"
- integrity sha512-N4SHu6rn8alK4jdve00IscngrfvqJNEjrwQclXNmP9c4NtPuVM9emZdxBzKF8jFb6Hz8HiwM9H3xV/SjKCS/7A==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.1"
- "@abp/bootstrap" "~5.0.0-beta.1"
- "@abp/bootstrap-datepicker" "~5.0.0-beta.1"
- "@abp/datatables.net-bs4" "~5.0.0-beta.1"
- "@abp/font-awesome" "~5.0.0-beta.1"
- "@abp/jquery-form" "~5.0.0-beta.1"
- "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.1"
- "@abp/lodash" "~5.0.0-beta.1"
- "@abp/luxon" "~5.0.0-beta.1"
- "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.1"
- "@abp/select2" "~5.0.0-beta.1"
- "@abp/sweetalert2" "~5.0.0-beta.1"
- "@abp/timeago" "~5.0.0-beta.1"
- "@abp/toastr" "~5.0.0-beta.1"
-
-"@abp/aspnetcore.mvc.ui@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.1.tgz#30c14386899596bf91e8871810dbaa1a0e51e996"
- integrity sha512-pabiGHghC62eg95RfAncEt0+yGdBxdMmyqCXV+Be4JjaMz/hGZIDOPIYnaqCayZtyMmIRqG6IAwi99DqBjkQAQ==
+"@abp/aspnetcore.mvc.ui.theme.basic@^5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.0-beta.2.tgz#077d1edd88f2f1ccb5c8227180a75e3121eece19"
+ integrity sha512-b7f05Fza18NYHudrHosYuCX/UJ/Y3KYJrJMHqdvAsZYu0t3dc7EMWKYTDA/+rDEO8iV/83twRYfHLf0tmVyc1Q==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.2"
+
+"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.2.tgz#8c58d252f1a39f91c2c287b91691e5bd772f4918"
+ integrity sha512-l4suGM7PjGTw/MEg2f2BdbRXYzALhZQUSijzKIQTy5dwcA/JQPsLbezPzGy45fD3lXsYxBwS4QaOmofTosKkug==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.2"
+ "@abp/bootstrap" "~5.0.0-beta.2"
+ "@abp/bootstrap-datepicker" "~5.0.0-beta.2"
+ "@abp/datatables.net-bs4" "~5.0.0-beta.2"
+ "@abp/font-awesome" "~5.0.0-beta.2"
+ "@abp/jquery-form" "~5.0.0-beta.2"
+ "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.2"
+ "@abp/lodash" "~5.0.0-beta.2"
+ "@abp/luxon" "~5.0.0-beta.2"
+ "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.2"
+ "@abp/select2" "~5.0.0-beta.2"
+ "@abp/sweetalert2" "~5.0.0-beta.2"
+ "@abp/timeago" "~5.0.0-beta.2"
+ "@abp/toastr" "~5.0.0-beta.2"
+
+"@abp/aspnetcore.mvc.ui@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.2.tgz#c30d9905e133451208e379f7173ed9c44dd5f487"
+ integrity sha512-8Dzfg5SzeVoXz/nY11o2u3y7ZQdUW/zVSYVTgbsCMC1HCe2yzptpr2XI0Goz8jQKgz0G+zg3iwfeur7vNoaoMw==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@@ -41,236 +41,236 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
-"@abp/bootstrap-datepicker@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.1.tgz#727e0f7305a94c95ece152ffff011bcff621f46d"
- integrity sha512-txhdlJqyO2D9MkGLYgrsiDaC58cb2eCpk2uxoqqQeVWvuRPo/L+9rCBk+bu6J37FGJtU8aabtHJyR5xnYbv0TQ==
+"@abp/bootstrap-datepicker@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.2.tgz#dbf92485225a424f0e53e55c3ef8c993943682f0"
+ integrity sha512-jJWVKrkKcUMEqwBrEqhGD1zDFD8b0b3j0WdlzKuzlw26AaQkfE4LQ9Gjfjs+RnTW1LxPn8rGP8QCgdVeWMNjQQ==
dependencies:
bootstrap-datepicker "^1.9.0"
-"@abp/bootstrap@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.1.tgz#075a15459ff8e3896b6553786e6c8f091c6ffcad"
- integrity sha512-W8z6qSAsRoXmG0++xH6Bk1oRc90hFqVcjKI+5XgBQhUUCn2qBruBYOKFxPg2GeT2f1k9K5TrCEnnVrh0sOP9/A==
+"@abp/bootstrap@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.2.tgz#0faaa85871fd23076dd597dce83dc3020b1ff950"
+ integrity sha512-zy0DUcAJuX+Oeu4csw7XbyLGq/YdfonMLJt/Mkpq8CjAssD7n7aJK6PwG+akaI4giSQd7Sc1JvvnKRMRzyxy1Q==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
bootstrap "^4.6.0"
bootstrap-v4-rtl "4.6.0-1"
-"@abp/cms-kit.admin@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-5.0.0-beta.1.tgz#db5c8be13e70614c1ab7151992d772b65ffd336c"
- integrity sha512-m/gdJOODJDzijvxTFkHrT1XSFxIP/Q5m2MNVCbtE7MZp0c2CrxJ8PZBHMhP8I5tSNjq8jGNa31cUyq51RR1cGQ==
+"@abp/cms-kit.admin@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-5.0.0-beta.2.tgz#a357890635c77fe57347a423c1cc14cac0966355"
+ integrity sha512-us2d53xBXFq4o5TjStuExw7Tn307BRYJdFOneH8V55z29MkED2bBRvoCnH9IjuWXOgnUnb1ceOxHOey61NJo/g==
dependencies:
- "@abp/jstree" "~5.0.0-beta.1"
- "@abp/slugify" "~5.0.0-beta.1"
- "@abp/tui-editor" "~5.0.0-beta.1"
- "@abp/uppy" "~5.0.0-beta.1"
+ "@abp/jstree" "~5.0.0-beta.2"
+ "@abp/slugify" "~5.0.0-beta.2"
+ "@abp/tui-editor" "~5.0.0-beta.2"
+ "@abp/uppy" "~5.0.0-beta.2"
-"@abp/cms-kit.public@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-5.0.0-beta.1.tgz#1d6a7d88baedb99d00e4f1e7f0659065c4107cd9"
- integrity sha512-23Gsuv6+VgD5XLG1+cfUNcbckDCo08GLW8kfF8mPdYg3bXvO0uFPKuE7Y0AHWT/GIdFM5ya70V+qCDj4vUwjjA==
+"@abp/cms-kit.public@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-5.0.0-beta.2.tgz#7d7d82f1dd617552ff44078ec45294e9abd453d7"
+ integrity sha512-4/K5XICVw4c4Z7kDT8Ag3yX93mada2eiXPVAFz/eBpW2uLnikKbiVo+G00XIJkV7kfoUHC2h8Qkm/8QP0wT8cw==
dependencies:
- "@abp/highlight.js" "~5.0.0-beta.1"
- "@abp/star-rating-svg" "~5.0.0-beta.1"
+ "@abp/highlight.js" "~5.0.0-beta.2"
+ "@abp/star-rating-svg" "~5.0.0-beta.2"
-"@abp/cms-kit@5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-5.0.0-beta.1.tgz#a193a4c631c2e98e454cd601cd6ba3552a250ddb"
- integrity sha512-K9qUiXXE8EjD9Wg54a3wjzb0C+gTumRu3Hq/DCwMR3Q+2osusPF2slaDy5PxweLHcjA5Gt77SXr5erO4PJTGfg==
+"@abp/cms-kit@5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-5.0.0-beta.2.tgz#38447886a4ce4f46154fea81836570468e6a7508"
+ integrity sha512-2UDABQxTpNYdJH08CxCnYNtku5BA2yrI9UIFo6i7M6tqcLmElUW+nFDPEca1k2d7ufPOwMRIMrMe35FGqjdGaA==
dependencies:
- "@abp/cms-kit.admin" "~5.0.0-beta.1"
- "@abp/cms-kit.public" "~5.0.0-beta.1"
+ "@abp/cms-kit.admin" "~5.0.0-beta.2"
+ "@abp/cms-kit.public" "~5.0.0-beta.2"
-"@abp/codemirror@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-5.0.0-beta.1.tgz#3b2f6175454d23bed01cddc62a709e52c76e2162"
- integrity sha512-0IAW0k6lk4yrC04kIW75Ez3nIx/RUsSTb5Wqf6K7TM0N5hIVdBTdIhc3ZqVPmAlXhFuwqLRIshjMNiVfgImSBg==
+"@abp/codemirror@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-5.0.0-beta.2.tgz#830c764cbe37e9e1ea79040fd1196659cc15f0cc"
+ integrity sha512-PREr4mrvaKpoJlG1y0rl9aK30Frwb1LGAYOBPRLxMVHeLZZ11OMc67d7+HxofsvTdJ+vKafp2LDhafPIX+Fn6w==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
codemirror "^5.54.0"
-"@abp/core@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.1.tgz#6cff06b13529ab9d7a6ddc4e89dc40616e6b7739"
- integrity sha512-TK1CnurJIK/SXfsNTk6HSpxdaJgVxwvqNd4F3fxCC0Uj8s5viD3TAGk39Hkp4909WGfNrRq8BEUNvTYM/rP6gg==
+"@abp/core@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.2.tgz#f9643d21b19128be3ad58b23083e1fc9620f2102"
+ integrity sha512-AHlJQF5NC+yNsj5xILHk1CF++Z93aQDNp0zdJciDqIexH9lEJ+AQCX2EKLn0yjWt4Ga00pOOmQM5vJVJjuJCEw==
dependencies:
- "@abp/utils" "^5.0.0-beta.1"
+ "@abp/utils" "^5.0.0-beta.2"
-"@abp/datatables.net-bs4@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.1.tgz#110d7d8cf1c15db7432d8f0649f4317ba8de10dd"
- integrity sha512-CPodZP9pqLdwnFZ77/mcSfuhyK1WMi/c+9VWpGXFQSGaABNKPP2UIdAChwUcBRdGkZRa/IhXx3CCr1ZMLpJsMQ==
+"@abp/datatables.net-bs4@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.2.tgz#3afb32918f59b55c68d3d37b2c1f0bf49bb06fc8"
+ integrity sha512-t6YserKkBId7KnT46uYaGw6HJrf8tcLp4bJmGyUSnCwVlgJcha/P6fr3pKWqFz9QPGk5riCZF3hK6x1BH9u71g==
dependencies:
- "@abp/datatables.net" "~5.0.0-beta.1"
+ "@abp/datatables.net" "~5.0.0-beta.2"
datatables.net-bs4 "^1.10.21"
-"@abp/datatables.net@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.1.tgz#8e784a011d33de154554f3239c448fcfd8adb713"
- integrity sha512-mRMYqTCoYLmDLvL+CvmwUS4JqCqdkn6mxHd7zgkaR04xlGLEmNae5aGbs1wURJ86MOWrHbfkx66lQjkul3zbQw==
+"@abp/datatables.net@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.2.tgz#fc87be76ebec94b16c6734c2249ea8a0a04a83b8"
+ integrity sha512-aEAlej1wNtxsxpwlw2GFOV0tFSZ7MWA+Wpfi5QZ4VIbYHSIkhEnz0apiNMBsoB8i7VJLJKZuKvynlJWYABNk0Q==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
datatables.net "^1.10.21"
-"@abp/font-awesome@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.1.tgz#3ae721c447a009601226c381a20dc4adabe154e1"
- integrity sha512-fsMqwApogZ1rAogStQxBX/Nh8akXPW/Alm8UayfK6TXIkPPjBz5RQSHfdlosG7M/U3mwUNGcLlaDvQXsE/nqow==
+"@abp/font-awesome@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.2.tgz#10a920fb20294f7ccd404ea2b302fb11f68f0705"
+ integrity sha512-Mmhfm7g5HdflvqbZOZDKk335IlY8ipwtKsCQ1qRaobsMpWi2AFh6/P/XX7y4H5p0wH5cluUsSzS1QB37QXp36w==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
"@fortawesome/fontawesome-free" "^5.13.0"
-"@abp/highlight.js@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-5.0.0-beta.1.tgz#342512534f11160f5ccb273c31197fd440d8ce81"
- integrity sha512-50eVFUwot4CpT/09H3zyHi3Qe7+d9Krg9hIf/OsE8PqvzNKZgwjaKGNOaNNoBvbdpS+LMpF4IcwCTZltsE+ZLA==
+"@abp/highlight.js@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-5.0.0-beta.2.tgz#ea61c770e1928e16deab685049bf2b09cd97edd1"
+ integrity sha512-QZH4IQ4EM4s3uH2WAumSqw9gQOXg4DaJladiq12J/53dAqz40gUFWgq8JHmycpt0tKfpQL9Cw43zfkeMa+7SMg==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
-"@abp/jquery-form@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.1.tgz#d13f4cffce48125547b9da57cfc407f9a35a89e6"
- integrity sha512-RYE90XIDxWkvxO5ukuZ2PHk6aA/o7NQKLcR9WsN1G2xTU/frrNPgtruGRTIj7Nx3BPUeMp7EAN2rYZwglcnO5g==
+"@abp/jquery-form@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.2.tgz#4b685858d54eafac123995ebfea759c769e49cab"
+ integrity sha512-ekytRAvAUNKJAPiR5i7kxASh5j3D5jabO1GHbPwq6UzapGLMzG5r8s6/1b4eX+4Zorfy+TmERNeUsWvQwf3P1A==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
jquery-form "^4.3.0"
-"@abp/jquery-validation-unobtrusive@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.1.tgz#93ff6ee92bccdde77816bfb434e967fd142f6b83"
- integrity sha512-LZE1KIALGBCINdWrHzoGczekUFtKwbXbLIgb4ZgiipO5Xja7py/iVvts10QWqUzhnBk+kmbHbj+KnjdqP4Z8pQ==
+"@abp/jquery-validation-unobtrusive@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.2.tgz#392ab72716baea26e6f560e2369d09f8c5488d3b"
+ integrity sha512-PyiWj0hj5jkjcZ1oJeLXYuoVCIAg51X4y6iLbcb1SpAbqYQP23gilDJK8xkURbysGPMiDq+7tOiKAnGiHSBnWA==
dependencies:
- "@abp/jquery-validation" "~5.0.0-beta.1"
+ "@abp/jquery-validation" "~5.0.0-beta.2"
jquery-validation-unobtrusive "^3.2.11"
-"@abp/jquery-validation@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.1.tgz#2964ca1266b087e4c4c0e768bfc4bfe0284e4ff5"
- integrity sha512-ZDNdkPy2ZNu0EYDNH20Oh9R3bICCYv9CbEj4zZ8Qavixo9VTkybY3BW0nYjcu1yb1P92gZPp80W8vyfxSo//kw==
+"@abp/jquery-validation@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.2.tgz#233eda5998ae566daeb945d8508999da2ef75a51"
+ integrity sha512-jKY0yfRgM5RGlJeQCGKkkczx5qptpPkhqWr4x+ffTUzR+ywF9FHUB5zcbELpEyWuOJ9cilap2hga2lvPZ8c+Pg==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
jquery-validation "^1.19.2"
-"@abp/jquery@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.1.tgz#360e7a164b6b4ce615a5ad91a1c78ef6893648f3"
- integrity sha512-v2t+76L45tlbpGeVR39GurZl60Rj1pR/TdUidpP6zwnpx1Y3I+CvlJNDwTESeE/ixTOT3PyFbXoMEi6hI+v39A==
+"@abp/jquery@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.2.tgz#62fa64fcc0bd5dca4b5e7534b24205a3f0461f08"
+ integrity sha512-tMzjo9qQAgJDYPvLk67YNlnOOUSTUfPWodlqfl5vvo6/NHSsB9eJhXH28txEtygX0o/Mepi9Ag87dL9VLh0DEw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
jquery "~3.6.0"
-"@abp/jstree@5.0.0-beta.1", "@abp/jstree@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-5.0.0-beta.1.tgz#8d60ef0366a2a11a9ace3ee995f024eebfaf80bc"
- integrity sha512-dG67IXEH2Bkf1SBVlX4k4gNkCyc6bIgBBG5xrSQ1RcuVxN5MLZ7S2pcBrlzwZfYppv2kH9cmn3FETrCchEktBQ==
+"@abp/jstree@5.0.0-beta.2", "@abp/jstree@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-5.0.0-beta.2.tgz#0d48304a62add8bf3023314a4e024ae360c66a79"
+ integrity sha512-Hgp7tkAZnDzY3IMmctkvdTcadqR1llkwI136SscSVNJE6/XcW++jRh5CtwDQIqLkMFR5PQTlTXlV4SrT+bkUJg==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
jstree "^3.3.9"
-"@abp/lodash@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.1.tgz#618797bde42b17f91d7f99fdd5f24cb5e8a361b3"
- integrity sha512-WsUjzHRZ6RkSMd5PTw0oWijDbbq/Wgonv8++ufUZi1WK5spZi9ohjcYM4io3Ms3fG+g4pWznaicYraMpV5tcsQ==
+"@abp/lodash@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.2.tgz#c821eb502de3211f94ca2f7ba8a5c0b0677c5c9b"
+ integrity sha512-lW8lz1JG8kweVOWVCB7jC6xxLUE0G6MJfwv4g0+eKwFLgsAO5dK6Yk4xZi+UXgST73OgGt5LIQJcS4+aCo/zmg==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
lodash "^4.17.15"
-"@abp/luxon@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.1.tgz#fc81fcbfb592d3baf7b9856b3cecf5b86df4bfdf"
- integrity sha512-t4lhJ/wr1rAVH1/bnzmc8niZYvolTuXUB0h6A6UYaw205QyNtimzusYkTwkc+Z3xHFUrkLCoG7J2SVoCJuioaA==
+"@abp/luxon@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.2.tgz#64c68c3091415153c8c470fb3e5650bbc00500d1"
+ integrity sha512-0mSVsycWEo5hamEuR7Mqw00JnVRlhQvpy8Bks58d7bRksIQzK8iPx9advTbP2ICF3iz9zHT9MJrMXYfvUT6oIQ==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
luxon "^1.24.1"
-"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.1.tgz#7af43d30af9b1f741fd9d9559d100aa4a5c52ae9"
- integrity sha512-B195PC4/75W0EXjGEQUd/ZARb/eGWj8DX7hq3K+J+lUWzWu46dZy8s5bBij78HqxS91/q6nbxU35Z+E9xl6ICg==
+"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.2.tgz#6c030cfe1e123be0a81f769dedd6a6b22aed9077"
+ integrity sha512-ZEkCMMDKe26b/sCArQjDOGEm8+lQB9Uis17FNyHDt/vA+FdtaPJjeLOqmfzMeLQYppvefH+JCpGzfaWwCNZmcw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/markdown-it@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-5.0.0-beta.1.tgz#eed2f8af8008d5ac641860cbe4fb4c08b96796a3"
- integrity sha512-n515ThJw9WdUyfYrLxGH4fh43VGeleCpd0Yg7GZyte3yclhiKmTGe2M1aAMnD7lZeoPKtJf3eHJPPtqaH0omIQ==
+"@abp/markdown-it@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/markdown-it/-/markdown-it-5.0.0-beta.2.tgz#4bbb862b54b145ecfc6c9f8c1a19b3e01263d82f"
+ integrity sha512-g5aYHg7xnpqNdJWvUHhTYhstGdhLYTkZX1cb8xi3tFnUL5pWFKDtaioIowO+6/Tohd7J9JlPisLP/ys57xLCPg==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
markdown-it "^11.0.0"
-"@abp/select2@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.1.tgz#15988165fcfed2ebc2b8d097965e2dc1984af35e"
- integrity sha512-SF+NkWDJNz1EeEimW5luaCMPTNN1oPzEWs47usPJo8m7HfijEvF3rymJ8jL5zWIOo05Tx3HUurLSVz0qu4vZsw==
+"@abp/select2@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.2.tgz#f5e74d56ccdabde61825453044f31fa183573b58"
+ integrity sha512-ApL7ioC4p5GguQM2KfnqtGrJ9TqBRiQh1v+y1J2Z3Lh18SJU+tsA3f9Va9ZyZNIFrpV3Bsmim2cIu7bjm7IBRw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
select2 "^4.0.13"
-"@abp/slugify@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-5.0.0-beta.1.tgz#fe763e4bd20a0b646320d9f1f2f0905d7f235f2b"
- integrity sha512-41zqeWZ0utg5OrLXcyENUlu+cBFE+yWKUSIjhTb0e3x1/+9QztauK6jamdaBqFapGzNCTWzfdDVwgLctsQ5K7A==
+"@abp/slugify@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-5.0.0-beta.2.tgz#5bd39971d5fdc24b4c6ad1b8bcf091b5d603213e"
+ integrity sha512-KcKBkawQDHG/Gi9W/3tlbUKsrZ8rHUmGkIINRbLUr1AK8+5kdS7iyL/CLlK+MvWbkF3BckiiBxSa7nWfLHvKkw==
dependencies:
slugify "^1.4.7"
-"@abp/star-rating-svg@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-5.0.0-beta.1.tgz#f38e79f8f54cfbbaa1cd7ef528165c8ac0a59f9b"
- integrity sha512-S0I+thqR+aaU4UKYKs0jp0i3EC439jEB3uaXjtvEj53XKvhCpJXif1b9Hax+s2uxj1iEzi5z6P3MlwB4jZaRLg==
+"@abp/star-rating-svg@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-5.0.0-beta.2.tgz#a142b9b040d713f1c6e0e8030b59407fb3a927db"
+ integrity sha512-q6ypP8O6NjSP+rNDdtSX4e7Qw0LO61b18tw7fvRfE68u/g+IX0a2IozXQAnMS7BaVS0AI87Bf0RH53/zBfRTIA==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
star-rating-svg "^3.5.0"
-"@abp/sweetalert2@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.1.tgz#c6a1185f39d3207f67753e7c486eddcefc7fd0da"
- integrity sha512-ADotpiMkIzHLy/ufK0q49V9hgF8oKE0rLRzVZV2dHBpmFR7YRcPdbb5AN9CiXDk6ol8nsocEEAwRmgD3eJG63w==
+"@abp/sweetalert2@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.2.tgz#164c1df63c2859fa5277673906f85cc8e7e2d1ef"
+ integrity sha512-UdENhKcfywOorjTf4+CxDO8UUet9lYAIDH2r+Kd1qjFKIDDu6w3TfJ7Gz108VG84+RsUevfVLgZ8qeYsA+drKQ==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
sweetalert2 "^11.0.18"
-"@abp/timeago@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.1.tgz#0f7bb8cd85b7e90d7d5c0a0940b9102e3f4f1e42"
- integrity sha512-QwYZyeDRW+X8BGecBcK1SgsClVWNYfPgvct+WkQhTIRxzbP/c1c+1irj69sNdN3df2WLnmjfu3sBw2hzz5ykbg==
+"@abp/timeago@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.2.tgz#7a6242e6cc403addf172ebf18ffb3513d4b30f21"
+ integrity sha512-wdXaKd0dBJP0mawzHqE04YWUgpUYzq8vJHGH3QGf9RpB+XpMztt1KNHR6d32VylDAEoPEtB7GH4rVvlimKa48g==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
timeago "^1.6.7"
-"@abp/toastr@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.1.tgz#d420fc5db6b15f6d623d3928bb6913996511937f"
- integrity sha512-82LfDrZQagtv4QLb643VTra4pxleOq5xYwhpOK1Ifop2K5CRgElxKfWvY2EtxdGkpCO2arvkOzjRNbxnecHB2w==
+"@abp/toastr@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.2.tgz#924f5315d3ade6ee41869d8809b625116c5b02f1"
+ integrity sha512-iqmgO/8AwORzYKf/43+Fx/478la0w+g+mrDahzokPlZFv6WUvFL3QSD/fs1mjc2yUOxEuvgprEiEfWoZcrwtNA==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
toastr "^2.1.4"
-"@abp/tui-editor@^5.0.0-beta.1", "@abp/tui-editor@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-5.0.0-beta.1.tgz#be51a8adfe181e148b45c5fb9d2a4e2933e4e1ab"
- integrity sha512-4ka2ABHdnuoub2sZtjaSQCJpK+ZCkXNiHsQEzKYLUVQdUW+w3fRNsYI+P7F+SJi9f1ZtYsOM0uwM3oWKqt1plA==
+"@abp/tui-editor@^5.0.0-beta.2", "@abp/tui-editor@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-5.0.0-beta.2.tgz#60548e594b4a06c9075b5501641a9a8e155729bf"
+ integrity sha512-ZYvRXXFLpzpoJLUjobGN+zC4UtuszX/yIF03rgu2mzXfKwA9JDvWWmpL4MftEpCeEFcRt5amt1DsGVKta3COJw==
dependencies:
- "@abp/codemirror" "~5.0.0-beta.1"
- "@abp/highlight.js" "~5.0.0-beta.1"
- "@abp/jquery" "~5.0.0-beta.1"
- "@abp/markdown-it" "~5.0.0-beta.1"
+ "@abp/codemirror" "~5.0.0-beta.2"
+ "@abp/highlight.js" "~5.0.0-beta.2"
+ "@abp/jquery" "~5.0.0-beta.2"
+ "@abp/markdown-it" "~5.0.0-beta.2"
"@toast-ui/editor" "^2.5.1"
-"@abp/uppy@^5.0.0-beta.1", "@abp/uppy@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-5.0.0-beta.1.tgz#c647781c4cf2c2f45cfbbce55fdfd01a37e10272"
- integrity sha512-ynx4lcQMav+RBE3BJpC8ooL2uegMYeGeURGnCjLX8VyBsmuoFLq+F1OChWhdLl2ppnyLegFXX7wPAQI1SeT7/w==
+"@abp/uppy@^5.0.0-beta.2", "@abp/uppy@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-5.0.0-beta.2.tgz#9b2dc0333cd2b35431a7287d60883d57796b63cf"
+ integrity sha512-oNRMMqgaFMMLDqPRaVOLER04iZ3Mx3h1kmfWOnEra3zopHqB/c3B3sOgaYYVzav2IeO/lz4YUuzLN6+/kZEIVw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
uppy "^1.16.1"
-"@abp/utils@^5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.1.tgz#e1bf9240738276081c89a67073d9d85205fdf14c"
- integrity sha512-suzKxHUautizxt5XdlJ8ONIaVMcAHrb2dp1kEnXnFRW1ip+7ZQ9/nxJj+GtY1MhHX2yPmlUQP2K8f2upJh9aoA==
+"@abp/utils@^5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.2.tgz#4d120c0f930b943071b4ba27dafedf6c8b730182"
+ integrity sha512-EZV1P+eafVBEHO6B+Ws6iX4xyeg8B6nCPLvpaFC6mStk7SGidh2rAYYWyydyh68Ky8YdbLYQE3oPaIewOhDWTg==
dependencies:
just-compare "^1.3.0"
diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo.CmsKit.Admin.Application.Contracts.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo.CmsKit.Admin.Application.Contracts.abppkg.json
new file mode 100644
index 0000000000..49032794e2
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo.CmsKit.Admin.Application.Contracts.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.application-contracts"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo.CmsKit.Admin.Application.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo.CmsKit.Admin.Application.abppkg.json
new file mode 100644
index 0000000000..412567ac33
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo.CmsKit.Admin.Application.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.application"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/Volo.CmsKit.Admin.HttpApi.Client.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/Volo.CmsKit.Admin.HttpApi.Client.abppkg.json
new file mode 100644
index 0000000000..7deef5e383
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/Volo.CmsKit.Admin.HttpApi.Client.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.http-api-client"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo.CmsKit.Admin.HttpApi.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo.CmsKit.Admin.HttpApi.abppkg.json
new file mode 100644
index 0000000000..515bfe64c4
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo.CmsKit.Admin.HttpApi.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.http-api"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/index.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/index.js
index ce6e56d842..60d0de3cb5 100644
--- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/index.js
+++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/index.js
@@ -44,6 +44,7 @@ $(function () {
.delete(data.record.id)
.then(function () {
dataTable.ajax.reload();
+ abp.notify.success(l('SuccessfullyDeleted'));
});
}
}
diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/index.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/index.js
index 7057b9f50b..be42901967 100644
--- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/index.js
+++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/index.js
@@ -49,6 +49,7 @@ $(function () {
.delete(data.record.id)
.then(function () {
dataTable.ajax.reload();
+ abp.notify.success(l('SuccessfullyDeleted'));
});
}
}
diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/details.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/details.js
index 90e16271ce..6d6e6a6dba 100644
--- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/details.js
+++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/details.js
@@ -10,6 +10,7 @@ $(function (){
todayBtn: "linked",
autoclose: true,
language: abp.localization.currentCulture.cultureName,
+ format: abp.localization.currentCulture.dateTimeFormat.shortDatePattern
})
.on("hide", function (e) {
e.stopPropagation();
@@ -74,6 +75,7 @@ $(function (){
.delete(data.record.id)
.then(function () {
_dataTable.ajax.reload();
+ abp.notify.success(l('SuccessfullyDeleted'));
});
}
}
diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/index.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/index.js
index af104dec71..7239c8d755 100644
--- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/index.js
+++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/index.js
@@ -10,6 +10,7 @@ $(function (){
todayBtn: "linked",
autoclose: true,
language: abp.localization.currentCulture.cultureName,
+ format: abp.localization.currentCulture.dateTimeFormat.shortDatePattern
})
.on("hide", function (e) {
e.stopPropagation();
@@ -74,6 +75,7 @@ $(function (){
.delete(data.record.id)
.then(function () {
_dataTable.ajax.reload();
+ abp.notify.success(l('SuccessfullyDeleted'));
});
}
}
diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/index.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/index.js
index f72bd40159..3a8612072c 100644
--- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/index.js
+++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/index.js
@@ -43,6 +43,7 @@ $(function (){
.delete(data.record.id)
.then(function () {
_dataTable.ajax.reload();
+ abp.notify.success(l('SuccessfullyDeleted'));
});
}
}
diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Tags/Components/TagEditor/TagEditorViewComponent.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Tags/Components/TagEditor/TagEditorViewComponent.cs
index 3c77f8c0c2..16f84e214b 100644
--- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Tags/Components/TagEditor/TagEditorViewComponent.cs
+++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Tags/Components/TagEditor/TagEditorViewComponent.cs
@@ -22,7 +22,7 @@ namespace Volo.CmsKit.Admin.Web.Pages.CmsKit.Tags.Components.TagEditor
TagAppService = tagAppService;
}
- public async Task InvokeAsync(string entityType, string entityId, bool displaySubmitButton = true)
+ public virtual async Task InvokeAsync(string entityType, string entityId, bool displaySubmitButton = true)
{
var tags =
entityId.IsNullOrWhiteSpace() ?
diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Volo.CmsKit.Admin.Web.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Volo.CmsKit.Admin.Web.abppkg.json
new file mode 100644
index 0000000000..930c4018b3
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Volo.CmsKit.Admin.Web.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.mvc"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.Application.Contracts/Volo.CmsKit.Application.Contracts.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Application.Contracts/Volo.CmsKit.Application.Contracts.abppkg.json
new file mode 100644
index 0000000000..49032794e2
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Application.Contracts/Volo.CmsKit.Application.Contracts.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.application-contracts"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.Application/Volo.CmsKit.Application.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Application/Volo.CmsKit.Application.abppkg.json
new file mode 100644
index 0000000000..412567ac33
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Application/Volo.CmsKit.Application.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.application"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo.CmsKit.Common.Application.Contracts.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo.CmsKit.Common.Application.Contracts.abppkg.json
new file mode 100644
index 0000000000..49032794e2
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo.CmsKit.Common.Application.Contracts.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.application-contracts"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo.CmsKit.Common.Application.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo.CmsKit.Common.Application.abppkg.json
new file mode 100644
index 0000000000..412567ac33
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo.CmsKit.Common.Application.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.application"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/Volo.CmsKit.Common.HttpApi.Client.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/Volo.CmsKit.Common.HttpApi.Client.abppkg.json
new file mode 100644
index 0000000000..7deef5e383
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi.Client/Volo.CmsKit.Common.HttpApi.Client.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.http-api-client"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi/Volo.CmsKit.Common.HttpApi.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi/Volo.CmsKit.Common.HttpApi.abppkg.json
new file mode 100644
index 0000000000..515bfe64c4
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Common.HttpApi/Volo.CmsKit.Common.HttpApi.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.http-api"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Web/Volo.CmsKit.Common.Web.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Common.Web/Volo.CmsKit.Common.Web.abppkg.json
new file mode 100644
index 0000000000..930c4018b3
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Common.Web/Volo.CmsKit.Common.Web.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.mvc"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo.CmsKit.Domain.Shared.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo.CmsKit.Domain.Shared.abppkg.json
new file mode 100644
index 0000000000..8b3de05f76
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo.CmsKit.Domain.Shared.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.domain-shared"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo.CmsKit.Domain.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo.CmsKit.Domain.abppkg.json
new file mode 100644
index 0000000000..1d574efe45
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo.CmsKit.Domain.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.domain"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo.CmsKit.EntityFrameworkCore.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo.CmsKit.EntityFrameworkCore.abppkg.json
new file mode 100644
index 0000000000..e1c64f0175
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo.CmsKit.EntityFrameworkCore.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.ef"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.HttpApi.Client/Volo.CmsKit.HttpApi.Client.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.HttpApi.Client/Volo.CmsKit.HttpApi.Client.abppkg.json
new file mode 100644
index 0000000000..7deef5e383
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.HttpApi.Client/Volo.CmsKit.HttpApi.Client.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.http-api-client"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.HttpApi/Volo.CmsKit.HttpApi.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.HttpApi/Volo.CmsKit.HttpApi.abppkg.json
new file mode 100644
index 0000000000..515bfe64c4
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.HttpApi/Volo.CmsKit.HttpApi.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.http-api"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.Installer/FodyWeavers.xml b/modules/cms-kit/src/Volo.CmsKit.Installer/FodyWeavers.xml
new file mode 100644
index 0000000000..00e1d9a1c1
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Installer/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.Installer/FodyWeavers.xsd b/modules/cms-kit/src/Volo.CmsKit.Installer/FodyWeavers.xsd
new file mode 100644
index 0000000000..3f3946e282
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Installer/FodyWeavers.xsd
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.
+
+
+
+
+ A comma-separated list of error codes that can be safely ignored in assembly verification.
+
+
+
+
+ 'false' to turn off automatic generation of the XML Schema file.
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.Installer/Volo.Abp.BlobStoring.Database.Installer.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Installer/Volo.Abp.BlobStoring.Database.Installer.abppkg.json
new file mode 100644
index 0000000000..9e26dfeeb6
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Installer/Volo.Abp.BlobStoring.Database.Installer.abppkg.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.Installer/Volo.CmsKit.Installer.csproj b/modules/cms-kit/src/Volo.CmsKit.Installer/Volo.CmsKit.Installer.csproj
new file mode 100644
index 0000000000..4ed4ae03fa
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Installer/Volo.CmsKit.Installer.csproj
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+ net5.0
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/cms-kit/src/Volo.CmsKit.Installer/Volo/Abp/CmsKit/AbpCmsKitInstallerModule.cs b/modules/cms-kit/src/Volo.CmsKit.Installer/Volo/Abp/CmsKit/AbpCmsKitInstallerModule.cs
new file mode 100644
index 0000000000..3b0d976f2a
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Installer/Volo/Abp/CmsKit/AbpCmsKitInstallerModule.cs
@@ -0,0 +1,21 @@
+using Volo.Abp.Modularity;
+using Volo.Abp.Studio;
+using Volo.Abp.VirtualFileSystem;
+
+namespace Volo.Abp.CmsKit
+{
+ [DependsOn(
+ typeof(AbpStudioModuleInstallerModule),
+ typeof(AbpVirtualFileSystemModule)
+ )]
+ public class VoloCmsKitDatabaseInstallerModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ Configure(options =>
+ {
+ options.FileSets.AddEmbedded();
+ });
+ }
+ }
+}
diff --git a/modules/cms-kit/src/Volo.CmsKit.Installer/Volo/Abp/CmsKit/CmsKitInstallerPipelineBuilder.cs b/modules/cms-kit/src/Volo.CmsKit.Installer/Volo/Abp/CmsKit/CmsKitInstallerPipelineBuilder.cs
new file mode 100644
index 0000000000..a9333b3d5c
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Installer/Volo/Abp/CmsKit/CmsKitInstallerPipelineBuilder.cs
@@ -0,0 +1,24 @@
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Studio.ModuleInstalling;
+
+namespace Volo.Abp.CmsKit
+{
+ [Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
+ [ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
+ public class BlobStoringDatabaseInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
+ {
+ public async Task BuildAsync(ModuleInstallingContext context)
+ {
+ context.AddEfCoreConfigurationMethodDeclaration(
+ new EfCoreConfigurationMethodDeclaration(
+ "Volo.CmsKit.EntityFrameworkCore",
+ "ConfigureCmsKit"
+ )
+ );
+
+ return GetBasePipeline(context);
+ }
+ }
+}
diff --git a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo.CmsKit.MongoDB.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo.CmsKit.MongoDB.abppkg.json
new file mode 100644
index 0000000000..8b23fd1e69
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo.CmsKit.MongoDB.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.mongodb"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo.CmsKit.Public.Application.Contracts.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo.CmsKit.Public.Application.Contracts.abppkg.json
new file mode 100644
index 0000000000..49032794e2
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo.CmsKit.Public.Application.Contracts.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.application-contracts"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo.CmsKit.Public.Application.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo.CmsKit.Public.Application.abppkg.json
new file mode 100644
index 0000000000..412567ac33
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo.CmsKit.Public.Application.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.application"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/Volo.CmsKit.Public.HttpApi.Client.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/Volo.CmsKit.Public.HttpApi.Client.abppkg.json
new file mode 100644
index 0000000000..7deef5e383
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/Volo.CmsKit.Public.HttpApi.Client.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.http-api-client"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo.CmsKit.Public.HttpApi.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo.CmsKit.Public.HttpApi.abppkg.json
new file mode 100644
index 0000000000..515bfe64c4
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo.CmsKit.Public.HttpApi.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.http-api"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.abppkg.json
new file mode 100644
index 0000000000..930c4018b3
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.mvc"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.Web/Volo.CmsKit.Web.abppkg.json b/modules/cms-kit/src/Volo.CmsKit.Web/Volo.CmsKit.Web.abppkg.json
new file mode 100644
index 0000000000..930c4018b3
--- /dev/null
+++ b/modules/cms-kit/src/Volo.CmsKit.Web/Volo.CmsKit.Web.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.mvc"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Volo.CmsKit.Application.Tests.abppkg.json b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Volo.CmsKit.Application.Tests.abppkg.json
new file mode 100644
index 0000000000..a686451fbc
--- /dev/null
+++ b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Volo.CmsKit.Application.Tests.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.test"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/test/Volo.CmsKit.Domain.Tests/Volo.CmsKit.Domain.Tests.abppkg.json b/modules/cms-kit/test/Volo.CmsKit.Domain.Tests/Volo.CmsKit.Domain.Tests.abppkg.json
new file mode 100644
index 0000000000..a686451fbc
--- /dev/null
+++ b/modules/cms-kit/test/Volo.CmsKit.Domain.Tests/Volo.CmsKit.Domain.Tests.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.test"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/test/Volo.CmsKit.EntityFrameworkCore.Tests/Volo.CmsKit.EntityFrameworkCore.Tests.abppkg.json b/modules/cms-kit/test/Volo.CmsKit.EntityFrameworkCore.Tests/Volo.CmsKit.EntityFrameworkCore.Tests.abppkg.json
new file mode 100644
index 0000000000..a686451fbc
--- /dev/null
+++ b/modules/cms-kit/test/Volo.CmsKit.EntityFrameworkCore.Tests/Volo.CmsKit.EntityFrameworkCore.Tests.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.test"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/test/Volo.CmsKit.HttpApi.Client.ConsoleTestApp/Volo.CmsKit.HttpApi.Client.ConsoleTestApp.abppkg.json b/modules/cms-kit/test/Volo.CmsKit.HttpApi.Client.ConsoleTestApp/Volo.CmsKit.HttpApi.Client.ConsoleTestApp.abppkg.json
new file mode 100644
index 0000000000..9e26dfeeb6
--- /dev/null
+++ b/modules/cms-kit/test/Volo.CmsKit.HttpApi.Client.ConsoleTestApp/Volo.CmsKit.HttpApi.Client.ConsoleTestApp.abppkg.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/Volo.CmsKit.MongoDB.Tests.abppkg.json b/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/Volo.CmsKit.MongoDB.Tests.abppkg.json
new file mode 100644
index 0000000000..a686451fbc
--- /dev/null
+++ b/modules/cms-kit/test/Volo.CmsKit.MongoDB.Tests/Volo.CmsKit.MongoDB.Tests.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.test"
+}
\ No newline at end of file
diff --git a/modules/cms-kit/test/Volo.CmsKit.TestBase/Volo.CmsKit.TestBase.abppkg.json b/modules/cms-kit/test/Volo.CmsKit.TestBase/Volo.CmsKit.TestBase.abppkg.json
new file mode 100644
index 0000000000..9e26dfeeb6
--- /dev/null
+++ b/modules/cms-kit/test/Volo.CmsKit.TestBase/Volo.CmsKit.TestBase.abppkg.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/modules/docs/app/VoloDocs.Web/package.json b/modules/docs/app/VoloDocs.Web/package.json
index 987d011aa2..1315c7e2cb 100644
--- a/modules/docs/app/VoloDocs.Web/package.json
+++ b/modules/docs/app/VoloDocs.Web/package.json
@@ -3,7 +3,7 @@
"name": "volo.docstestapp",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.1",
- "@abp/docs": "^5.0.0-beta.1"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.2",
+ "@abp/docs": "^5.0.0-beta.2"
}
}
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
index 1fee6e798d..d7b5d2d9c4 100644
--- a/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
@@ -1,4 +1,6 @@
/*
https://select2.org/troubleshooting/common-problems
*/
-$.fn.modal.Constructor.prototype._enforceFocus = function () { };
\ No newline at end of file
+if ($.fn.modal) {
+ $.fn.modal.Constructor.prototype._enforceFocus = function () { };
+}
diff --git a/modules/docs/app/VoloDocs.Web/yarn.lock b/modules/docs/app/VoloDocs.Web/yarn.lock
index dcd06bbde0..79331c9205 100644
--- a/modules/docs/app/VoloDocs.Web/yarn.lock
+++ b/modules/docs/app/VoloDocs.Web/yarn.lock
@@ -2,45 +2,45 @@
# yarn lockfile v1
-"@abp/anchor-js@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-5.0.0-beta.1.tgz#374dbb25de11fe407e113a3188f9d1e65b7ddd20"
- integrity sha512-HsiWOtyqUntRou/NOyt1k9N8+5Gq+K6XByxu8LEEKc+KmfDMbTITuezQXVsZMdBS4FHzpiGKpm0MsxgflyWcLg==
+"@abp/anchor-js@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/anchor-js/-/anchor-js-5.0.0-beta.2.tgz#27b15070d904e50a53a77dad80b290ec861e170c"
+ integrity sha512-FS95T0MzWkD4XqZIfoj0bNQW7GAXHY75pNJSH5J73q7kzBWxhueIQx2mnSnlMM/dMvsjvFqB2H5/92er8JBdJQ==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
anchor-js "^4.2.2"
-"@abp/aspnetcore.mvc.ui.theme.basic@^5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.0-beta.1.tgz#2c78c2bd977a67f6c2ed77cfcd404cf9533eaaae"
- integrity sha512-b8Boztxd5NbaDlXQvgHXHtw8ZNgM4tEgo14kw/bN3mcLx05fWLGd8Lzfdi7i+Ju6U3rKbgi+0MSbga93A0KSmg==
- dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.1"
-
-"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.1.tgz#25596652bb3f7b6bac5bbd966a731144cd9646c6"
- integrity sha512-N4SHu6rn8alK4jdve00IscngrfvqJNEjrwQclXNmP9c4NtPuVM9emZdxBzKF8jFb6Hz8HiwM9H3xV/SjKCS/7A==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.1"
- "@abp/bootstrap" "~5.0.0-beta.1"
- "@abp/bootstrap-datepicker" "~5.0.0-beta.1"
- "@abp/datatables.net-bs4" "~5.0.0-beta.1"
- "@abp/font-awesome" "~5.0.0-beta.1"
- "@abp/jquery-form" "~5.0.0-beta.1"
- "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.1"
- "@abp/lodash" "~5.0.0-beta.1"
- "@abp/luxon" "~5.0.0-beta.1"
- "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.1"
- "@abp/select2" "~5.0.0-beta.1"
- "@abp/sweetalert2" "~5.0.0-beta.1"
- "@abp/timeago" "~5.0.0-beta.1"
- "@abp/toastr" "~5.0.0-beta.1"
-
-"@abp/aspnetcore.mvc.ui@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.1.tgz#30c14386899596bf91e8871810dbaa1a0e51e996"
- integrity sha512-pabiGHghC62eg95RfAncEt0+yGdBxdMmyqCXV+Be4JjaMz/hGZIDOPIYnaqCayZtyMmIRqG6IAwi99DqBjkQAQ==
+"@abp/aspnetcore.mvc.ui.theme.basic@^5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.0-beta.2.tgz#077d1edd88f2f1ccb5c8227180a75e3121eece19"
+ integrity sha512-b7f05Fza18NYHudrHosYuCX/UJ/Y3KYJrJMHqdvAsZYu0t3dc7EMWKYTDA/+rDEO8iV/83twRYfHLf0tmVyc1Q==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.2"
+
+"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.2.tgz#8c58d252f1a39f91c2c287b91691e5bd772f4918"
+ integrity sha512-l4suGM7PjGTw/MEg2f2BdbRXYzALhZQUSijzKIQTy5dwcA/JQPsLbezPzGy45fD3lXsYxBwS4QaOmofTosKkug==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.2"
+ "@abp/bootstrap" "~5.0.0-beta.2"
+ "@abp/bootstrap-datepicker" "~5.0.0-beta.2"
+ "@abp/datatables.net-bs4" "~5.0.0-beta.2"
+ "@abp/font-awesome" "~5.0.0-beta.2"
+ "@abp/jquery-form" "~5.0.0-beta.2"
+ "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.2"
+ "@abp/lodash" "~5.0.0-beta.2"
+ "@abp/luxon" "~5.0.0-beta.2"
+ "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.2"
+ "@abp/select2" "~5.0.0-beta.2"
+ "@abp/sweetalert2" "~5.0.0-beta.2"
+ "@abp/timeago" "~5.0.0-beta.2"
+ "@abp/toastr" "~5.0.0-beta.2"
+
+"@abp/aspnetcore.mvc.ui@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.2.tgz#c30d9905e133451208e379f7173ed9c44dd5f487"
+ integrity sha512-8Dzfg5SzeVoXz/nY11o2u3y7ZQdUW/zVSYVTgbsCMC1HCe2yzptpr2XI0Goz8jQKgz0G+zg3iwfeur7vNoaoMw==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@@ -49,181 +49,181 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
-"@abp/bootstrap-datepicker@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.1.tgz#727e0f7305a94c95ece152ffff011bcff621f46d"
- integrity sha512-txhdlJqyO2D9MkGLYgrsiDaC58cb2eCpk2uxoqqQeVWvuRPo/L+9rCBk+bu6J37FGJtU8aabtHJyR5xnYbv0TQ==
+"@abp/bootstrap-datepicker@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.2.tgz#dbf92485225a424f0e53e55c3ef8c993943682f0"
+ integrity sha512-jJWVKrkKcUMEqwBrEqhGD1zDFD8b0b3j0WdlzKuzlw26AaQkfE4LQ9Gjfjs+RnTW1LxPn8rGP8QCgdVeWMNjQQ==
dependencies:
bootstrap-datepicker "^1.9.0"
-"@abp/bootstrap@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.1.tgz#075a15459ff8e3896b6553786e6c8f091c6ffcad"
- integrity sha512-W8z6qSAsRoXmG0++xH6Bk1oRc90hFqVcjKI+5XgBQhUUCn2qBruBYOKFxPg2GeT2f1k9K5TrCEnnVrh0sOP9/A==
+"@abp/bootstrap@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.2.tgz#0faaa85871fd23076dd597dce83dc3020b1ff950"
+ integrity sha512-zy0DUcAJuX+Oeu4csw7XbyLGq/YdfonMLJt/Mkpq8CjAssD7n7aJK6PwG+akaI4giSQd7Sc1JvvnKRMRzyxy1Q==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
bootstrap "^4.6.0"
bootstrap-v4-rtl "4.6.0-1"
-"@abp/clipboard@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-5.0.0-beta.1.tgz#7c46ffe185116b1d3e43ef389df9dae2b98dd0c9"
- integrity sha512-Gsr8qZNhxoH7uH+Kd0Q7qrQdGAjU20r65zjBI7iUgtpP/18obm87SUZLPDobZLAf+UB/Wl9VnxvedyLYDnuQGQ==
+"@abp/clipboard@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-5.0.0-beta.2.tgz#a7c7cbb090a5fad8744d6de48b9aa0deeda60d0f"
+ integrity sha512-rhJkXD3/6z5lXmN39uhXavMSSue+/D9h2SXs3HaBMzgAIJUI/qHPrHOAOMUdXT/jKiO+EQtLzLH8V/5nJtvIZQ==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
clipboard "^2.0.6"
-"@abp/core@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.1.tgz#6cff06b13529ab9d7a6ddc4e89dc40616e6b7739"
- integrity sha512-TK1CnurJIK/SXfsNTk6HSpxdaJgVxwvqNd4F3fxCC0Uj8s5viD3TAGk39Hkp4909WGfNrRq8BEUNvTYM/rP6gg==
+"@abp/core@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.2.tgz#f9643d21b19128be3ad58b23083e1fc9620f2102"
+ integrity sha512-AHlJQF5NC+yNsj5xILHk1CF++Z93aQDNp0zdJciDqIexH9lEJ+AQCX2EKLn0yjWt4Ga00pOOmQM5vJVJjuJCEw==
dependencies:
- "@abp/utils" "^5.0.0-beta.1"
+ "@abp/utils" "^5.0.0-beta.2"
-"@abp/datatables.net-bs4@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.1.tgz#110d7d8cf1c15db7432d8f0649f4317ba8de10dd"
- integrity sha512-CPodZP9pqLdwnFZ77/mcSfuhyK1WMi/c+9VWpGXFQSGaABNKPP2UIdAChwUcBRdGkZRa/IhXx3CCr1ZMLpJsMQ==
+"@abp/datatables.net-bs4@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.2.tgz#3afb32918f59b55c68d3d37b2c1f0bf49bb06fc8"
+ integrity sha512-t6YserKkBId7KnT46uYaGw6HJrf8tcLp4bJmGyUSnCwVlgJcha/P6fr3pKWqFz9QPGk5riCZF3hK6x1BH9u71g==
dependencies:
- "@abp/datatables.net" "~5.0.0-beta.1"
+ "@abp/datatables.net" "~5.0.0-beta.2"
datatables.net-bs4 "^1.10.21"
-"@abp/datatables.net@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.1.tgz#8e784a011d33de154554f3239c448fcfd8adb713"
- integrity sha512-mRMYqTCoYLmDLvL+CvmwUS4JqCqdkn6mxHd7zgkaR04xlGLEmNae5aGbs1wURJ86MOWrHbfkx66lQjkul3zbQw==
+"@abp/datatables.net@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.2.tgz#fc87be76ebec94b16c6734c2249ea8a0a04a83b8"
+ integrity sha512-aEAlej1wNtxsxpwlw2GFOV0tFSZ7MWA+Wpfi5QZ4VIbYHSIkhEnz0apiNMBsoB8i7VJLJKZuKvynlJWYABNk0Q==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
datatables.net "^1.10.21"
-"@abp/docs@^5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-5.0.0-beta.1.tgz#c9015d551234331f3a33d4699fb1492fa35ef0fc"
- integrity sha512-xj5ZTqVoINuod3B6LAfExGGVJAw2/ia7ftSO/VUJhpYrMVfTjlm6xZ+FLqOuTPAPVSP1mEkKbAPmPqKkJ2koRQ==
+"@abp/docs@^5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/docs/-/docs-5.0.0-beta.2.tgz#5d53a1c98e7fbc05012fd39370f269048815ceaa"
+ integrity sha512-5H3vC0pGuWARzALrkdgCq2I4/78Y280nux/h2mgcGibZr6rzGoETNLD6tVmVegsOryLVozUCk9vA7geBs1OYhA==
dependencies:
- "@abp/anchor-js" "~5.0.0-beta.1"
- "@abp/clipboard" "~5.0.0-beta.1"
- "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.1"
- "@abp/popper.js" "~5.0.0-beta.1"
- "@abp/prismjs" "~5.0.0-beta.1"
+ "@abp/anchor-js" "~5.0.0-beta.2"
+ "@abp/clipboard" "~5.0.0-beta.2"
+ "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.2"
+ "@abp/popper.js" "~5.0.0-beta.2"
+ "@abp/prismjs" "~5.0.0-beta.2"
-"@abp/font-awesome@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.1.tgz#3ae721c447a009601226c381a20dc4adabe154e1"
- integrity sha512-fsMqwApogZ1rAogStQxBX/Nh8akXPW/Alm8UayfK6TXIkPPjBz5RQSHfdlosG7M/U3mwUNGcLlaDvQXsE/nqow==
+"@abp/font-awesome@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.2.tgz#10a920fb20294f7ccd404ea2b302fb11f68f0705"
+ integrity sha512-Mmhfm7g5HdflvqbZOZDKk335IlY8ipwtKsCQ1qRaobsMpWi2AFh6/P/XX7y4H5p0wH5cluUsSzS1QB37QXp36w==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
"@fortawesome/fontawesome-free" "^5.13.0"
-"@abp/jquery-form@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.1.tgz#d13f4cffce48125547b9da57cfc407f9a35a89e6"
- integrity sha512-RYE90XIDxWkvxO5ukuZ2PHk6aA/o7NQKLcR9WsN1G2xTU/frrNPgtruGRTIj7Nx3BPUeMp7EAN2rYZwglcnO5g==
+"@abp/jquery-form@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.2.tgz#4b685858d54eafac123995ebfea759c769e49cab"
+ integrity sha512-ekytRAvAUNKJAPiR5i7kxASh5j3D5jabO1GHbPwq6UzapGLMzG5r8s6/1b4eX+4Zorfy+TmERNeUsWvQwf3P1A==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
jquery-form "^4.3.0"
-"@abp/jquery-validation-unobtrusive@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.1.tgz#93ff6ee92bccdde77816bfb434e967fd142f6b83"
- integrity sha512-LZE1KIALGBCINdWrHzoGczekUFtKwbXbLIgb4ZgiipO5Xja7py/iVvts10QWqUzhnBk+kmbHbj+KnjdqP4Z8pQ==
+"@abp/jquery-validation-unobtrusive@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.2.tgz#392ab72716baea26e6f560e2369d09f8c5488d3b"
+ integrity sha512-PyiWj0hj5jkjcZ1oJeLXYuoVCIAg51X4y6iLbcb1SpAbqYQP23gilDJK8xkURbysGPMiDq+7tOiKAnGiHSBnWA==
dependencies:
- "@abp/jquery-validation" "~5.0.0-beta.1"
+ "@abp/jquery-validation" "~5.0.0-beta.2"
jquery-validation-unobtrusive "^3.2.11"
-"@abp/jquery-validation@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.1.tgz#2964ca1266b087e4c4c0e768bfc4bfe0284e4ff5"
- integrity sha512-ZDNdkPy2ZNu0EYDNH20Oh9R3bICCYv9CbEj4zZ8Qavixo9VTkybY3BW0nYjcu1yb1P92gZPp80W8vyfxSo//kw==
+"@abp/jquery-validation@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.2.tgz#233eda5998ae566daeb945d8508999da2ef75a51"
+ integrity sha512-jKY0yfRgM5RGlJeQCGKkkczx5qptpPkhqWr4x+ffTUzR+ywF9FHUB5zcbELpEyWuOJ9cilap2hga2lvPZ8c+Pg==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
jquery-validation "^1.19.2"
-"@abp/jquery@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.1.tgz#360e7a164b6b4ce615a5ad91a1c78ef6893648f3"
- integrity sha512-v2t+76L45tlbpGeVR39GurZl60Rj1pR/TdUidpP6zwnpx1Y3I+CvlJNDwTESeE/ixTOT3PyFbXoMEi6hI+v39A==
+"@abp/jquery@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.2.tgz#62fa64fcc0bd5dca4b5e7534b24205a3f0461f08"
+ integrity sha512-tMzjo9qQAgJDYPvLk67YNlnOOUSTUfPWodlqfl5vvo6/NHSsB9eJhXH28txEtygX0o/Mepi9Ag87dL9VLh0DEw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
jquery "~3.6.0"
-"@abp/lodash@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.1.tgz#618797bde42b17f91d7f99fdd5f24cb5e8a361b3"
- integrity sha512-WsUjzHRZ6RkSMd5PTw0oWijDbbq/Wgonv8++ufUZi1WK5spZi9ohjcYM4io3Ms3fG+g4pWznaicYraMpV5tcsQ==
+"@abp/lodash@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.2.tgz#c821eb502de3211f94ca2f7ba8a5c0b0677c5c9b"
+ integrity sha512-lW8lz1JG8kweVOWVCB7jC6xxLUE0G6MJfwv4g0+eKwFLgsAO5dK6Yk4xZi+UXgST73OgGt5LIQJcS4+aCo/zmg==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
lodash "^4.17.15"
-"@abp/luxon@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.1.tgz#fc81fcbfb592d3baf7b9856b3cecf5b86df4bfdf"
- integrity sha512-t4lhJ/wr1rAVH1/bnzmc8niZYvolTuXUB0h6A6UYaw205QyNtimzusYkTwkc+Z3xHFUrkLCoG7J2SVoCJuioaA==
+"@abp/luxon@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.2.tgz#64c68c3091415153c8c470fb3e5650bbc00500d1"
+ integrity sha512-0mSVsycWEo5hamEuR7Mqw00JnVRlhQvpy8Bks58d7bRksIQzK8iPx9advTbP2ICF3iz9zHT9MJrMXYfvUT6oIQ==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
luxon "^1.24.1"
-"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.1.tgz#7af43d30af9b1f741fd9d9559d100aa4a5c52ae9"
- integrity sha512-B195PC4/75W0EXjGEQUd/ZARb/eGWj8DX7hq3K+J+lUWzWu46dZy8s5bBij78HqxS91/q6nbxU35Z+E9xl6ICg==
+"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.2.tgz#6c030cfe1e123be0a81f769dedd6a6b22aed9077"
+ integrity sha512-ZEkCMMDKe26b/sCArQjDOGEm8+lQB9Uis17FNyHDt/vA+FdtaPJjeLOqmfzMeLQYppvefH+JCpGzfaWwCNZmcw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/popper.js@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-5.0.0-beta.1.tgz#732a4fd9b32e7a70c4a4f27665aeee7b99b3d2e8"
- integrity sha512-I752rSlW5GdkB9Nc9Cxu67XKOETZoS54ZOlp2arSWgdyAI8BLDAUOpdpy+tjQiVOUX9aIVuV5EWkQRyI9b5o3Q==
+"@abp/popper.js@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/popper.js/-/popper.js-5.0.0-beta.2.tgz#9b69fc1e913dcd5d80687470684301293537f0fc"
+ integrity sha512-Pf6O8Kdb4yC2Yh4PRAudMBVxolPAaKjpoMOh2nnlEMtorT/5Vrw21D8DdCd5ANh6oNmcAbKXin0KVCzJoS3lDQ==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
popper.js "^1.16.0"
-"@abp/prismjs@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-5.0.0-beta.1.tgz#a41883c46e2ce67b2b9dcbe1ce85de9b183cfd29"
- integrity sha512-Ps3X6gckZYUnWcmBPnXCa1LIh8HnQYxDD0WPppbEsp1VFN49T3yNO4G5jFVRxomFi5km8AluJW2zYk3Kh/4OSw==
+"@abp/prismjs@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-5.0.0-beta.2.tgz#d00876d3d0768305a3c7d3c178488352ce88df5d"
+ integrity sha512-PFSrnoPrl+4w9XyCwe4F3N+Qg/ekXWeUkX0Zwh+0oR8pxQlbJC6aiCRDhCsmui+dEU/0vYpkKHXq46iDHQnjxQ==
dependencies:
- "@abp/clipboard" "~5.0.0-beta.1"
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/clipboard" "~5.0.0-beta.2"
+ "@abp/core" "~5.0.0-beta.2"
prismjs "^1.20.0"
-"@abp/select2@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.1.tgz#15988165fcfed2ebc2b8d097965e2dc1984af35e"
- integrity sha512-SF+NkWDJNz1EeEimW5luaCMPTNN1oPzEWs47usPJo8m7HfijEvF3rymJ8jL5zWIOo05Tx3HUurLSVz0qu4vZsw==
+"@abp/select2@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.2.tgz#f5e74d56ccdabde61825453044f31fa183573b58"
+ integrity sha512-ApL7ioC4p5GguQM2KfnqtGrJ9TqBRiQh1v+y1J2Z3Lh18SJU+tsA3f9Va9ZyZNIFrpV3Bsmim2cIu7bjm7IBRw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
select2 "^4.0.13"
-"@abp/sweetalert2@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.1.tgz#c6a1185f39d3207f67753e7c486eddcefc7fd0da"
- integrity sha512-ADotpiMkIzHLy/ufK0q49V9hgF8oKE0rLRzVZV2dHBpmFR7YRcPdbb5AN9CiXDk6ol8nsocEEAwRmgD3eJG63w==
+"@abp/sweetalert2@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.2.tgz#164c1df63c2859fa5277673906f85cc8e7e2d1ef"
+ integrity sha512-UdENhKcfywOorjTf4+CxDO8UUet9lYAIDH2r+Kd1qjFKIDDu6w3TfJ7Gz108VG84+RsUevfVLgZ8qeYsA+drKQ==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
sweetalert2 "^11.0.18"
-"@abp/timeago@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.1.tgz#0f7bb8cd85b7e90d7d5c0a0940b9102e3f4f1e42"
- integrity sha512-QwYZyeDRW+X8BGecBcK1SgsClVWNYfPgvct+WkQhTIRxzbP/c1c+1irj69sNdN3df2WLnmjfu3sBw2hzz5ykbg==
+"@abp/timeago@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.2.tgz#7a6242e6cc403addf172ebf18ffb3513d4b30f21"
+ integrity sha512-wdXaKd0dBJP0mawzHqE04YWUgpUYzq8vJHGH3QGf9RpB+XpMztt1KNHR6d32VylDAEoPEtB7GH4rVvlimKa48g==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
timeago "^1.6.7"
-"@abp/toastr@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.1.tgz#d420fc5db6b15f6d623d3928bb6913996511937f"
- integrity sha512-82LfDrZQagtv4QLb643VTra4pxleOq5xYwhpOK1Ifop2K5CRgElxKfWvY2EtxdGkpCO2arvkOzjRNbxnecHB2w==
+"@abp/toastr@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.2.tgz#924f5315d3ade6ee41869d8809b625116c5b02f1"
+ integrity sha512-iqmgO/8AwORzYKf/43+Fx/478la0w+g+mrDahzokPlZFv6WUvFL3QSD/fs1mjc2yUOxEuvgprEiEfWoZcrwtNA==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
toastr "^2.1.4"
-"@abp/utils@^5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.1.tgz#e1bf9240738276081c89a67073d9d85205fdf14c"
- integrity sha512-suzKxHUautizxt5XdlJ8ONIaVMcAHrb2dp1kEnXnFRW1ip+7ZQ9/nxJj+GtY1MhHX2yPmlUQP2K8f2upJh9aoA==
+"@abp/utils@^5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.2.tgz#4d120c0f930b943071b4ba27dafedf6c8b730182"
+ integrity sha512-EZV1P+eafVBEHO6B+Ws6iX4xyeg8B6nCPLvpaFC6mStk7SGidh2rAYYWyydyh68Ky8YdbLYQE3oPaIewOhDWTg==
dependencies:
just-compare "^1.3.0"
diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/index.js b/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/index.js
index 6748447724..463fd60f50 100644
--- a/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/index.js
+++ b/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/index.js
@@ -57,6 +57,7 @@ $(function () {
.delete(data.record.id)
.then(function () {
_dataTable.ajax.reload();
+ abp.notify.success(l('SuccessfullyDeleted'));
});
},
},
diff --git a/modules/feature-management/Volo.Abp.FeatureManagement.sln b/modules/feature-management/Volo.Abp.FeatureManagement.sln
index 11e32bd6e7..85a1db61a3 100644
--- a/modules/feature-management/Volo.Abp.FeatureManagement.sln
+++ b/modules/feature-management/Volo.Abp.FeatureManagement.sln
@@ -41,6 +41,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.FeatureManagement.
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.FeatureManagement.Blazor.WebAssembly", "src\Volo.Abp.FeatureManagement.Blazor.WebAssembly\Volo.Abp.FeatureManagement.Blazor.WebAssembly.csproj", "{A96771F7-65D7-43C2-818E-CF0F5DBC3DC6}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.FeatureManagement.Installer", "src\Volo.Abp.FeatureManagement.Installer\Volo.Abp.FeatureManagement.Installer.csproj", "{0141EA97-1E9E-49D8-B7B4-8A82589A5BFF}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -115,6 +117,10 @@ Global
{A96771F7-65D7-43C2-818E-CF0F5DBC3DC6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A96771F7-65D7-43C2-818E-CF0F5DBC3DC6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A96771F7-65D7-43C2-818E-CF0F5DBC3DC6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0141EA97-1E9E-49D8-B7B4-8A82589A5BFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0141EA97-1E9E-49D8-B7B4-8A82589A5BFF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0141EA97-1E9E-49D8-B7B4-8A82589A5BFF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0141EA97-1E9E-49D8-B7B4-8A82589A5BFF}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -137,6 +143,7 @@ Global
{0F34FFD5-E98F-4F77-AE0B-A790BD5810D5} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
{5B2EA81B-9FAE-456E-B83B-58205AA48752} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
{A96771F7-65D7-43C2-818E-CF0F5DBC3DC6} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
+ {0141EA97-1E9E-49D8-B7B4-8A82589A5BFF} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4324B3B4-B60B-4E3C-91D8-59576B4E26DD}
diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/it.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/it.json
index f59d326d2b..ba77671388 100644
--- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/it.json
+++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/it.json
@@ -3,8 +3,8 @@
"texts": {
"Features": "Funzionalità",
"NoFeatureFoundMessage": "Non ci sono funzioni disponibili.",
- "Permission:FeatureManagement": "Gestione delle funzionalità",
+ "Permission:FeatureManagement": "Gestione funzionalità",
"Permission:FeatureManagement.ManageHostFeatures": "Gestisci le funzionalità dell'host",
"Volo.Abp.FeatureManagement:InvalidFeatureValue": "Il valore dell'elemento {0} non è valido!"
}
-}
\ No newline at end of file
+}
diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/FodyWeavers.xml b/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/FodyWeavers.xml
new file mode 100644
index 0000000000..00e1d9a1c1
--- /dev/null
+++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/FodyWeavers.xsd b/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/FodyWeavers.xsd
new file mode 100644
index 0000000000..3f3946e282
--- /dev/null
+++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/FodyWeavers.xsd
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.
+
+
+
+
+ A comma-separated list of error codes that can be safely ignored in assembly verification.
+
+
+
+
+ 'false' to turn off automatic generation of the XML Schema file.
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/Volo.Abp.FeatureManagement.Installer.csproj b/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/Volo.Abp.FeatureManagement.Installer.csproj
new file mode 100644
index 0000000000..de78fd2a68
--- /dev/null
+++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/Volo.Abp.FeatureManagement.Installer.csproj
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+ net5.0
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/Volo/Abp/FeatureManagement/AbpFeatureManagementInstallerModule.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/Volo/Abp/FeatureManagement/AbpFeatureManagementInstallerModule.cs
new file mode 100644
index 0000000000..da0b5836ff
--- /dev/null
+++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/Volo/Abp/FeatureManagement/AbpFeatureManagementInstallerModule.cs
@@ -0,0 +1,21 @@
+using Volo.Abp.Modularity;
+using Volo.Abp.Studio;
+using Volo.Abp.VirtualFileSystem;
+
+namespace Volo.Abp.FeatureManagement
+{
+ [DependsOn(
+ typeof(AbpStudioModuleInstallerModule),
+ typeof(AbpVirtualFileSystemModule)
+ )]
+ public class AbpFeatureManagementInstallerModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ Configure(options =>
+ {
+ options.FileSets.AddEmbedded();
+ });
+ }
+ }
+}
diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/Volo/Abp/FeatureManagement/FeatureManagementInstallerPipelineBuilder.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/Volo/Abp/FeatureManagement/FeatureManagementInstallerPipelineBuilder.cs
new file mode 100644
index 0000000000..335b770edd
--- /dev/null
+++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Installer/Volo/Abp/FeatureManagement/FeatureManagementInstallerPipelineBuilder.cs
@@ -0,0 +1,24 @@
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Studio.ModuleInstalling;
+
+namespace Volo.Abp.FeatureManagement
+{
+ [Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
+ [ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
+ public class FeatureManagementInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
+ {
+ public async Task BuildAsync(ModuleInstallingContext context)
+ {
+ context.AddEfCoreConfigurationMethodDeclaration(
+ new EfCoreConfigurationMethodDeclaration(
+ "Volo.Abp.FeatureManagement.EntityFrameworkCore",
+ "ConfigureFeatureManagement"
+ )
+ );
+
+ return GetBasePipeline(context);
+ }
+ }
+}
diff --git a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo.Abp.Identity.Application.Contracts.abppkg.analyze.json b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo.Abp.Identity.Application.Contracts.abppkg.analyze.json
new file mode 100644
index 0000000000..f5c9f5f12e
--- /dev/null
+++ b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo.Abp.Identity.Application.Contracts.abppkg.analyze.json
@@ -0,0 +1,11 @@
+{
+ "name": "Volo.Abp.Identity.Application.Contracts",
+ "hash": "7d48962330d53c649b5db86b7e77bce9",
+ "contents": [
+ {
+ "namespace": "Volo.Abp.Identity",
+ "contentType": "abpModule",
+ "name": "AbpIdentityApplicationContractsModule"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo.Abp.Identity.Application.Contracts.csproj b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo.Abp.Identity.Application.Contracts.csproj
index e6241c927d..5beb6a2668 100644
--- a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo.Abp.Identity.Application.Contracts.csproj
+++ b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo.Abp.Identity.Application.Contracts.csproj
@@ -21,4 +21,14 @@
+
+
+
+ true
+ Never
+
+
+
+
+
diff --git a/modules/identity/src/Volo.Abp.Identity.Application/Volo.Abp.Identity.Application.abppkg.analyze.json b/modules/identity/src/Volo.Abp.Identity.Application/Volo.Abp.Identity.Application.abppkg.analyze.json
new file mode 100644
index 0000000000..56179082c7
--- /dev/null
+++ b/modules/identity/src/Volo.Abp.Identity.Application/Volo.Abp.Identity.Application.abppkg.analyze.json
@@ -0,0 +1,127 @@
+{
+ "name": "Volo.Abp.Identity.Application",
+ "hash": "4e28f54b13b3299ac1f5ee664729ec40",
+ "contents": [
+ {
+ "namespace": "Volo.Abp.Identity",
+ "contentType": "abpModule",
+ "name": "AbpIdentityApplicationModule"
+ },
+ {
+ "namespace": "Volo.Abp.Identity",
+ "summary": null,
+ "implementingInterfaces": [
+ "Volo.Abp.Identity.IIdentityRoleAppService",
+ "Volo.Abp.Application.Services.ICrudAppService`5[[Volo.Abp.Identity.IdentityRoleDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[System.Guid, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Volo.Abp.Identity.GetIdentityRolesInput, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityRoleCreateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityRoleUpdateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null]]",
+ "Volo.Abp.Application.Services.ICrudAppService`6[[Volo.Abp.Identity.IdentityRoleDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityRoleDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[System.Guid, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Volo.Abp.Identity.GetIdentityRolesInput, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityRoleCreateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityRoleUpdateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null]]",
+ "Volo.Abp.Application.Services.IReadOnlyAppService`4[[Volo.Abp.Identity.IdentityRoleDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityRoleDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[System.Guid, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Volo.Abp.Identity.GetIdentityRolesInput, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null]]",
+ "Volo.Abp.Application.Services.ICreateUpdateAppService`4[[Volo.Abp.Identity.IdentityRoleDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[System.Guid, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Volo.Abp.Identity.IdentityRoleCreateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityRoleUpdateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null]]",
+ "Volo.Abp.Application.Services.ICreateAppService`2[[Volo.Abp.Identity.IdentityRoleDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityRoleCreateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null]]",
+ "Volo.Abp.Application.Services.IUpdateAppService`3[[Volo.Abp.Identity.IdentityRoleDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[System.Guid, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Volo.Abp.Identity.IdentityRoleUpdateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null]]",
+ "Volo.Abp.Application.Services.IDeleteAppService`1[[System.Guid, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
+ ],
+ "contentType": "applicationService",
+ "name": "IdentityRoleAppService"
+ },
+ {
+ "namespace": "Volo.Abp.Identity",
+ "summary": null,
+ "implementingInterfaces": [
+ "Volo.Abp.Identity.IIdentityUserAppService",
+ "Volo.Abp.Application.Services.ICrudAppService`5[[Volo.Abp.Identity.IdentityUserDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[System.Guid, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Volo.Abp.Identity.GetIdentityUsersInput, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityUserCreateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityUserUpdateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null]]",
+ "Volo.Abp.Application.Services.ICrudAppService`6[[Volo.Abp.Identity.IdentityUserDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityUserDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[System.Guid, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Volo.Abp.Identity.GetIdentityUsersInput, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityUserCreateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityUserUpdateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null]]",
+ "Volo.Abp.Application.Services.IReadOnlyAppService`4[[Volo.Abp.Identity.IdentityUserDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityUserDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[System.Guid, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Volo.Abp.Identity.GetIdentityUsersInput, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null]]",
+ "Volo.Abp.Application.Services.ICreateUpdateAppService`4[[Volo.Abp.Identity.IdentityUserDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[System.Guid, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Volo.Abp.Identity.IdentityUserCreateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityUserUpdateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null]]",
+ "Volo.Abp.Application.Services.ICreateAppService`2[[Volo.Abp.Identity.IdentityUserDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[Volo.Abp.Identity.IdentityUserCreateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null]]",
+ "Volo.Abp.Application.Services.IUpdateAppService`3[[Volo.Abp.Identity.IdentityUserDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null],[System.Guid, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Volo.Abp.Identity.IdentityUserUpdateDto, Volo.Abp.Identity.Application.Contracts, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null]]",
+ "Volo.Abp.Application.Services.IDeleteAppService`1[[System.Guid, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]"
+ ],
+ "contentType": "applicationService",
+ "name": "IdentityUserAppService"
+ },
+ {
+ "namespace": "Volo.Abp.Identity",
+ "summary": null,
+ "implementingInterfaces": [
+ "Volo.Abp.Identity.IIdentityUserLookupAppService"
+ ],
+ "contentType": "applicationService",
+ "name": "IdentityUserLookupAppService"
+ },
+ {
+ "namespace": "Volo.Abp.Identity",
+ "summary": null,
+ "implementingInterfaces": [
+ "Volo.Abp.Identity.IProfileAppService"
+ ],
+ "contentType": "applicationService",
+ "name": "ProfileAppService"
+ },
+ {
+ "displayName": "Role management",
+ "isEnabled": true,
+ "contentType": "permission",
+ "name": "AbpIdentity.Roles"
+ },
+ {
+ "displayName": "Create",
+ "isEnabled": true,
+ "contentType": "permission",
+ "name": "AbpIdentity.Roles.Create"
+ },
+ {
+ "displayName": "Edit",
+ "isEnabled": true,
+ "contentType": "permission",
+ "name": "AbpIdentity.Roles.Update"
+ },
+ {
+ "displayName": "Delete",
+ "isEnabled": true,
+ "contentType": "permission",
+ "name": "AbpIdentity.Roles.Delete"
+ },
+ {
+ "displayName": "Change permissions",
+ "isEnabled": true,
+ "contentType": "permission",
+ "name": "AbpIdentity.Roles.ManagePermissions"
+ },
+ {
+ "displayName": "User management",
+ "isEnabled": true,
+ "contentType": "permission",
+ "name": "AbpIdentity.Users"
+ },
+ {
+ "displayName": "Create",
+ "isEnabled": true,
+ "contentType": "permission",
+ "name": "AbpIdentity.Users.Create"
+ },
+ {
+ "displayName": "Edit",
+ "isEnabled": true,
+ "contentType": "permission",
+ "name": "AbpIdentity.Users.Update"
+ },
+ {
+ "displayName": "Delete",
+ "isEnabled": true,
+ "contentType": "permission",
+ "name": "AbpIdentity.Users.Delete"
+ },
+ {
+ "displayName": "Change permissions",
+ "isEnabled": true,
+ "contentType": "permission",
+ "name": "AbpIdentity.Users.ManagePermissions"
+ },
+ {
+ "displayName": "User lookup",
+ "isEnabled": true,
+ "contentType": "permission",
+ "name": "AbpIdentity.UserLookup"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/modules/identity/src/Volo.Abp.Identity.Application/Volo.Abp.Identity.Application.csproj b/modules/identity/src/Volo.Abp.Identity.Application/Volo.Abp.Identity.Application.csproj
index fc01ba4400..a256285e56 100644
--- a/modules/identity/src/Volo.Abp.Identity.Application/Volo.Abp.Identity.Application.csproj
+++ b/modules/identity/src/Volo.Abp.Identity.Application/Volo.Abp.Identity.Application.csproj
@@ -21,4 +21,14 @@
+
+
+
+ true
+ Never
+
+
+
+
+
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo.Abp.Identity.Domain.Shared.abppkg.analyze.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo.Abp.Identity.Domain.Shared.abppkg.analyze.json
new file mode 100644
index 0000000000..eae6233b7e
--- /dev/null
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo.Abp.Identity.Domain.Shared.abppkg.analyze.json
@@ -0,0 +1,11 @@
+{
+ "name": "Volo.Abp.Identity.Domain.Shared",
+ "hash": "7db38ac2a2f335158964c4d06d0dfaab",
+ "contents": [
+ {
+ "namespace": "Volo.Abp.Identity",
+ "contentType": "abpModule",
+ "name": "AbpIdentityDomainSharedModule"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo.Abp.Identity.Domain.Shared.csproj b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo.Abp.Identity.Domain.Shared.csproj
index ddd23ab870..ddc85df885 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo.Abp.Identity.Domain.Shared.csproj
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo.Abp.Identity.Domain.Shared.csproj
@@ -18,6 +18,13 @@
+
+
+ true
+ Never
+
+
+
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/it.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/it.json
index 1199298be0..906ecb249d 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/it.json
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/it.json
@@ -1,7 +1,7 @@
{
"culture": "it",
"texts": {
- "Menu:IdentityManagement": "Gestione dell'identità",
+ "Menu:IdentityManagement": "Gestione identità",
"Users": "Utenti",
"NewUser": "Nuovo utente",
"UserName": "Nome utente",
@@ -15,8 +15,8 @@
"Password": "Password",
"PersonalInfo": "Il mio profilo",
"PersonalSettings": "Impostazioni personali",
- "UserDeletionConfirmationMessage": "L'utente '{0}' verrà eliminato. Lo confermi?",
- "RoleDeletionConfirmationMessage": "Il ruolo '{0}' verrà eliminato. Lo confermi?",
+ "UserDeletionConfirmationMessage": "L'utente '{0}' verrà eliminato. Confermi?",
+ "RoleDeletionConfirmationMessage": "Il ruolo '{0}' verrà eliminato. Confermi?",
"DisplayName:RoleName": "Nome del ruolo",
"DisplayName:UserName": "Nome utente",
"DisplayName:Name": "Nome",
@@ -33,7 +33,7 @@
"DisplayName:CurrentPassword": "Password attuale",
"DisplayName:NewPassword": "Nuova password",
"DisplayName:NewPasswordConfirm": "Conferma la nuova password",
- "PasswordChangedMessage": "La tua password è stata cambiata con successo.",
+ "PasswordChangedMessage": "La tua password è stata modificata con successo.",
"PersonalSettingsSavedMessage": "Le tue impostazioni personali sono state salvate con successo.",
"Volo.Abp.Identity:DefaultError": "Si è verificato un errore sconosciuto.",
"Volo.Abp.Identity:ConcurrencyFailure": "Errore di concorrenza ottimistica, l'oggetto è stato modificato.",
@@ -46,13 +46,13 @@
"Volo.Abp.Identity:InvalidRoleName": "Il nome del ruolo '{0}' non è valido.",
"Volo.Abp.Identity:InvalidToken": "Token non valido.",
"Volo.Abp.Identity:InvalidUserName": "Il nome utente '{0}' non è valido, può contenere solo lettere o cifre.",
- "Volo.Abp.Identity:LoginAlreadyAssociated": "Esiste già un utente con questo accesso.",
+ "Volo.Abp.Identity:LoginAlreadyAssociated": "Esiste già un utente con questo account.",
"Volo.Abp.Identity:PasswordMismatch": "Password errata.",
- "Volo.Abp.Identity:PasswordRequiresDigit": "Le password devono contenere almeno una cifra ('0'-'9').",
- "Volo.Abp.Identity:PasswordRequiresLower": "Le password devono contenere almeno una minuscola ('a'-'z').",
- "Volo.Abp.Identity:PasswordRequiresNonAlphanumeric": "Le password devono contenere almeno un carattere non alfanumerico.",
- "Volo.Abp.Identity:PasswordRequiresUpper": "Le password devono contenere almeno una maiuscola ('A'-'Z').",
- "Volo.Abp.Identity:PasswordTooShort": "Le password devono contenere almeno {0} caratteri.",
+ "Volo.Abp.Identity:PasswordRequiresDigit": "La password deve contenere almeno una cifra ('0'-'9').",
+ "Volo.Abp.Identity:PasswordRequiresLower": "La password deve contenere almeno una lettera minuscola ('a'-'z').",
+ "Volo.Abp.Identity:PasswordRequiresNonAlphanumeric": "La password deve contenere almeno un carattere non alfanumerico.",
+ "Volo.Abp.Identity:PasswordRequiresUpper": "La password deve contenere almeno una lettera maiuscola ('A'-'Z').",
+ "Volo.Abp.Identity:PasswordTooShort": "La password deve essere composta da almeno {0} caratteri.",
"Volo.Abp.Identity:RoleNotFound": "Il ruolo {0} non esiste.",
"Volo.Abp.Identity:UserAlreadyHasPassword": "L'utente ha già una password impostata.",
"Volo.Abp.Identity:UserAlreadyInRole": "Utente già nel ruolo '{0}'.",
@@ -67,11 +67,11 @@
"Volo.Abp.Identity:010004": "Esiste già un'unità organizzativa con nome {0}. Non è possibile creare due unità con lo stesso nome nello stesso livello.",
"Volo.Abp.Identity:010005": "I ruoli statici non possono essere rinominati.",
"Volo.Abp.Identity:010006": "I ruoli statici non possono essere eliminati.",
- "Volo.Abp.Identity:010007": "Non puoi Modifica l'impostazione dei due fattori.",
- "Volo.Abp.Identity:010008": "Non è consentito Modifica l'impostazione a due fattori.",
+ "Volo.Abp.Identity:010007": "Non puoi modificare l'impostazione dei due fattori.",
+ "Volo.Abp.Identity:010008": "Non è consentito modificare l'impostazione a due fattori.",
"Identity.OrganizationUnit.MaxUserMembershipCount": "Numero massimo consentito di membri dell'unità organizzativa per un utente",
- "Permission:IdentityManagement": "Gestione dell'identità",
- "Permission:RoleManagement": "Gestione dei ruoli",
+ "Permission:IdentityManagement": "Gestione identità",
+ "Permission:RoleManagement": "Gestione ruoli",
"Permission:Create": "Crea",
"Permission:Edit": "Modifica",
"Permission:Delete": "Elimina",
@@ -92,19 +92,19 @@
"DisplayName:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "Richiedi un numero di telefono confermato",
"DisplayName:Abp.Identity.User.IsUserNameUpdateEnabled": "Consenti agli utenti di Modifica i propri nomi utente",
"DisplayName:Abp.Identity.User.IsEmailUpdateEnabled": "Consenti agli utenti di Modifica i propri indirizzi email",
- "Description:Abp.Identity.Password.RequiredLength": "La lunghezza minima che deve essere una password.",
+ "Description:Abp.Identity.Password.RequiredLength": "La lunghezza minima di caratteri della password.",
"Description:Abp.Identity.Password.RequiredUniqueChars": "Il numero minimo di caratteri univoci che una password deve contenere.",
- "Description:Abp.Identity.Password.RequireNonAlphanumeric": "Se le password devono contenere un carattere non alfanumerico.",
- "Description:Abp.Identity.Password.RequireLowercase": "Se le password devono contenere un carattere ASCII minuscolo.",
- "Description:Abp.Identity.Password.RequireUppercase": "Se le password devono contenere un carattere ASCII maiuscolo.",
- "Description:Abp.Identity.Password.RequireDigit": "Se le password devono contenere una cifra.",
+ "Description:Abp.Identity.Password.RequireNonAlphanumeric": "Se la password deve contenere un carattere non alfanumerico.",
+ "Description:Abp.Identity.Password.RequireLowercase": "Se la password deve contenere un carattere ASCII minuscolo.",
+ "Description:Abp.Identity.Password.RequireUppercase": "Se la password deve contenere un carattere ASCII maiuscolo.",
+ "Description:Abp.Identity.Password.RequireDigit": "Se la password devono contenere una cifra.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Se un nuovo utente può essere bloccato.",
"Description:Abp.Identity.Lockout.LockoutDuration": "La durata per cui un utente viene bloccato quando si verifica un blocco.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Il numero di tentativi di accesso non riusciti consentiti prima che un utente venga bloccato, a condizione che il blocco sia abilitato.",
"Description:Abp.Identity.SignIn.RequireConfirmedEmail": "Indica se è necessario un indirizzo email confermato per accedere.",
- "Description:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "Se il phoneNumber può essere confermato dall'utente.",
+ "Description:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "Se il numero di telefono può essere confermato dall'utente.",
"Description:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "Indica se è necessario un numero di telefono confermato per accedere.",
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Se il nome utente può essere aggiornato dall'utente.",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "Se l'email può essere aggiornata dall'utente."
}
-}
\ No newline at end of file
+}
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo.Abp.Identity.Domain.abppkg.analyze.json b/modules/identity/src/Volo.Abp.Identity.Domain/Volo.Abp.Identity.Domain.abppkg.analyze.json
new file mode 100644
index 0000000000..4011e6d04b
--- /dev/null
+++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo.Abp.Identity.Domain.abppkg.analyze.json
@@ -0,0 +1,205 @@
+{
+ "name": "Volo.Abp.Identity.Domain",
+ "hash": "7736ef4a79faf05ed7e6097700d560ce",
+ "contents": [
+ {
+ "namespace": "Volo.Abp.Identity",
+ "contentType": "abpModule",
+ "name": "AbpIdentityDomainModule"
+ },
+ {
+ "namespace": "Volo.Abp.Identity",
+ "primaryKeyType": "Guid",
+ "summary": null,
+ "collectionProperties": [],
+ "navigationProperties": [],
+ "contentType": "aggregateRoot",
+ "name": "IdentityClaimType"
+ },
+ {
+ "namespace": "Volo.Abp.Identity",
+ "primaryKeyType": "Guid",
+ "summary": null,
+ "collectionProperties": [],
+ "navigationProperties": [],
+ "contentType": "aggregateRoot",
+ "name": "IdentityLinkUser"
+ },
+ {
+ "namespace": "Volo.Abp.Identity",
+ "primaryKeyType": "Guid",
+ "summary": "Represents a role in the identity system",
+ "collectionProperties": [
+ "Volo.Abp.Identity.IdentityRoleClaim"
+ ],
+ "navigationProperties": [],
+ "contentType": "aggregateRoot",
+ "name": "IdentityRole"
+ },
+ {
+ "namespace": "Volo.Abp.Identity",
+ "primaryKeyType": "Guid",
+ "summary": null,
+ "collectionProperties": [],
+ "navigationProperties": [],
+ "contentType": "aggregateRoot",
+ "name": "IdentitySecurityLog"
+ },
+ {
+ "namespace": "Volo.Abp.Identity",
+ "primaryKeyType": "Guid",
+ "summary": null,
+ "collectionProperties": [
+ "Volo.Abp.Identity.IdentityUserRole",
+ "Volo.Abp.Identity.IdentityUserClaim",
+ "Volo.Abp.Identity.IdentityUserLogin",
+ "Volo.Abp.Identity.IdentityUserToken",
+ "Volo.Abp.Identity.IdentityUserOrganizationUnit"
+ ],
+ "navigationProperties": [],
+ "contentType": "aggregateRoot",
+ "name": "IdentityUser"
+ },
+ {
+ "namespace": "Volo.Abp.Identity",
+ "primaryKeyType": "Guid",
+ "summary": "Represents an organization unit (OU).",
+ "collectionProperties": [
+ "Volo.Abp.Identity.OrganizationUnitRole"
+ ],
+ "navigationProperties": [],
+ "contentType": "aggregateRoot",
+ "name": "OrganizationUnit"
+ },
+ {
+ "namespace": "Volo.Abp.Identity",
+ "summary": null,
+ "contentType": "domainService",
+ "name": "IdentityClaimTypeManager"
+ },
+ {
+ "namespace": "Volo.Abp.Identity",
+ "summary": null,
+ "contentType": "domainService",
+ "name": "IdentityRoleManager"
+ },
+ {
+ "namespace": "Volo.Abp.Identity",
+ "summary": null,
+ "contentType": "domainService",
+ "name": "IdentityLinkUserManager"
+ },
+ {
+ "namespace": "Volo.Abp.Identity",
+ "summary": null,
+ "contentType": "domainService",
+ "name": "IdentityUserManager"
+ },
+ {
+ "namespace": "Volo.Abp.Identity",
+ "summary": "Performs domain logic for Organization Units.",
+ "contentType": "domainService",
+ "name": "OrganizationUnitManager"
+ },
+ {
+ "namespace": "Volo.Abp.Identity",
+ "summary": null,
+ "entityModel": {
+ "namespace": "Volo.Abp.Identity",
+ "primaryKeyType": "Guid",
+ "summary": null,
+ "collectionProperties": [],
+ "navigationProperties": [],
+ "contentType": "entity",
+ "name": "IdentityClaimType"
+ },
+ "contentType": "repositoryInterface",
+ "name": "IIdentityClaimTypeRepository"
+ },
+ {
+ "namespace": "Volo.Abp.Identity",
+ "summary": null,
+ "entityModel": {
+ "namespace": "Volo.Abp.Identity",
+ "primaryKeyType": "Guid",
+ "summary": null,
+ "collectionProperties": [],
+ "navigationProperties": [],
+ "contentType": "entity",
+ "name": "IdentityLinkUser"
+ },
+ "contentType": "repositoryInterface",
+ "name": "IIdentityLinkUserRepository"
+ },
+ {
+ "namespace": "Volo.Abp.Identity",
+ "summary": null,
+ "entityModel": {
+ "namespace": "Volo.Abp.Identity",
+ "primaryKeyType": "Guid",
+ "summary": "Represents a role in the identity system",
+ "collectionProperties": [
+ "Volo.Abp.Identity.IdentityRoleClaim"
+ ],
+ "navigationProperties": [],
+ "contentType": "entity",
+ "name": "IdentityRole"
+ },
+ "contentType": "repositoryInterface",
+ "name": "IIdentityRoleRepository"
+ },
+ {
+ "namespace": "Volo.Abp.Identity",
+ "summary": null,
+ "entityModel": {
+ "namespace": "Volo.Abp.Identity",
+ "primaryKeyType": "Guid",
+ "summary": null,
+ "collectionProperties": [],
+ "navigationProperties": [],
+ "contentType": "entity",
+ "name": "IdentitySecurityLog"
+ },
+ "contentType": "repositoryInterface",
+ "name": "IIdentitySecurityLogRepository"
+ },
+ {
+ "namespace": "Volo.Abp.Identity",
+ "summary": null,
+ "entityModel": {
+ "namespace": "Volo.Abp.Identity",
+ "primaryKeyType": "Guid",
+ "summary": null,
+ "collectionProperties": [
+ "Volo.Abp.Identity.IdentityUserRole",
+ "Volo.Abp.Identity.IdentityUserClaim",
+ "Volo.Abp.Identity.IdentityUserLogin",
+ "Volo.Abp.Identity.IdentityUserToken",
+ "Volo.Abp.Identity.IdentityUserOrganizationUnit"
+ ],
+ "navigationProperties": [],
+ "contentType": "entity",
+ "name": "IdentityUser"
+ },
+ "contentType": "repositoryInterface",
+ "name": "IIdentityUserRepository"
+ },
+ {
+ "namespace": "Volo.Abp.Identity",
+ "summary": null,
+ "entityModel": {
+ "namespace": "Volo.Abp.Identity",
+ "primaryKeyType": "Guid",
+ "summary": "Represents an organization unit (OU).",
+ "collectionProperties": [
+ "Volo.Abp.Identity.OrganizationUnitRole"
+ ],
+ "navigationProperties": [],
+ "contentType": "entity",
+ "name": "OrganizationUnit"
+ },
+ "contentType": "repositoryInterface",
+ "name": "IOrganizationUnitRepository"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo.Abp.Identity.Domain.csproj b/modules/identity/src/Volo.Abp.Identity.Domain/Volo.Abp.Identity.Domain.csproj
index e951457688..f5f5e5f00d 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo.Abp.Identity.Domain.csproj
+++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo.Abp.Identity.Domain.csproj
@@ -18,6 +18,13 @@
+
+
+ true
+ Never
+
+
+
diff --git a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo.Abp.Identity.EntityFrameworkCore.abppkg.analyze.json b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo.Abp.Identity.EntityFrameworkCore.abppkg.analyze.json
new file mode 100644
index 0000000000..0c0d76de69
--- /dev/null
+++ b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo.Abp.Identity.EntityFrameworkCore.abppkg.analyze.json
@@ -0,0 +1,84 @@
+{
+ "name": "Volo.Abp.Identity.EntityFrameworkCore",
+ "hash": "8f270f0242f12d428caba0db20954d9e",
+ "contents": [
+ {
+ "namespace": "Volo.Abp.Identity.EntityFrameworkCore",
+ "contentType": "abpModule",
+ "name": "AbpIdentityEntityFrameworkCoreModule"
+ },
+ {
+ "namespace": "Volo.Abp.Identity.EntityFrameworkCore",
+ "connectionStringName": "AbpIdentity",
+ "databaseTables": [
+ {
+ "entityFullName": "Volo.Abp.Identity.IdentityClaimType",
+ "contentType": "databaseTable",
+ "name": "AbpClaimTypes"
+ },
+ {
+ "entityFullName": "Volo.Abp.Identity.IdentityLinkUser",
+ "contentType": "databaseTable",
+ "name": "AbpLinkUsers"
+ },
+ {
+ "entityFullName": "Volo.Abp.Identity.IdentityRole",
+ "contentType": "databaseTable",
+ "name": "AbpRoles"
+ },
+ {
+ "entityFullName": "Volo.Abp.Identity.IdentityRoleClaim",
+ "contentType": "databaseTable",
+ "name": "AbpRoleClaims"
+ },
+ {
+ "entityFullName": "Volo.Abp.Identity.IdentitySecurityLog",
+ "contentType": "databaseTable",
+ "name": "AbpSecurityLogs"
+ },
+ {
+ "entityFullName": "Volo.Abp.Identity.IdentityUser",
+ "contentType": "databaseTable",
+ "name": "AbpUsers"
+ },
+ {
+ "entityFullName": "Volo.Abp.Identity.IdentityUserClaim",
+ "contentType": "databaseTable",
+ "name": "AbpUserClaims"
+ },
+ {
+ "entityFullName": "Volo.Abp.Identity.IdentityUserLogin",
+ "contentType": "databaseTable",
+ "name": "AbpUserLogins"
+ },
+ {
+ "entityFullName": "Volo.Abp.Identity.IdentityUserOrganizationUnit",
+ "contentType": "databaseTable",
+ "name": "AbpUserOrganizationUnits"
+ },
+ {
+ "entityFullName": "Volo.Abp.Identity.IdentityUserRole",
+ "contentType": "databaseTable",
+ "name": "AbpUserRoles"
+ },
+ {
+ "entityFullName": "Volo.Abp.Identity.IdentityUserToken",
+ "contentType": "databaseTable",
+ "name": "AbpUserTokens"
+ },
+ {
+ "entityFullName": "Volo.Abp.Identity.OrganizationUnit",
+ "contentType": "databaseTable",
+ "name": "AbpOrganizationUnits"
+ },
+ {
+ "entityFullName": "Volo.Abp.Identity.OrganizationUnitRole",
+ "contentType": "databaseTable",
+ "name": "AbpOrganizationUnitRoles"
+ }
+ ],
+ "contentType": "efCoreDbContext",
+ "name": "IdentityDbContext"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo.Abp.Identity.EntityFrameworkCore.csproj b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo.Abp.Identity.EntityFrameworkCore.csproj
index 41cf02d96e..bb9b865a0d 100644
--- a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo.Abp.Identity.EntityFrameworkCore.csproj
+++ b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo.Abp.Identity.EntityFrameworkCore.csproj
@@ -19,4 +19,14 @@
+
+
+
+ true
+ Never
+
+
+
+
+
diff --git a/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo.Abp.Identity.HttpApi.Client.abppkg.analyze.json b/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo.Abp.Identity.HttpApi.Client.abppkg.analyze.json
new file mode 100644
index 0000000000..8853f9be01
--- /dev/null
+++ b/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo.Abp.Identity.HttpApi.Client.abppkg.analyze.json
@@ -0,0 +1,11 @@
+{
+ "name": "Volo.Abp.Identity.HttpApi.Client",
+ "hash": "774ff4f82e3a8df910bab011545deaeb",
+ "contents": [
+ {
+ "namespace": "Volo.Abp.Identity",
+ "contentType": "abpModule",
+ "name": "AbpIdentityHttpApiClientModule"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo.Abp.Identity.HttpApi.Client.csproj b/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo.Abp.Identity.HttpApi.Client.csproj
index 5bff2432a7..3584a1db66 100644
--- a/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo.Abp.Identity.HttpApi.Client.csproj
+++ b/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo.Abp.Identity.HttpApi.Client.csproj
@@ -19,4 +19,14 @@
+
+
+
+
+
+ true
+ Never
+
+
+
diff --git a/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo.Abp.Identity.HttpApi.abppkg.analyze.json b/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo.Abp.Identity.HttpApi.abppkg.analyze.json
new file mode 100644
index 0000000000..3fab306b7c
--- /dev/null
+++ b/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo.Abp.Identity.HttpApi.abppkg.analyze.json
@@ -0,0 +1,11 @@
+{
+ "name": "Volo.Abp.Identity.HttpApi",
+ "hash": "ec955af18068942f6dfa1a627f4aeacd",
+ "contents": [
+ {
+ "namespace": "Volo.Abp.Identity",
+ "contentType": "abpModule",
+ "name": "AbpIdentityHttpApiModule"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo.Abp.Identity.HttpApi.csproj b/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo.Abp.Identity.HttpApi.csproj
index 374001080d..5610c273c4 100644
--- a/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo.Abp.Identity.HttpApi.csproj
+++ b/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo.Abp.Identity.HttpApi.csproj
@@ -21,4 +21,18 @@
+
+
+
+ true
+ PreserveNewest
+ PreserveNewest
+
+
+
+ true
+ Never
+
+
+
diff --git a/modules/identity/src/Volo.Abp.Identity.Installer/FodyWeavers.xml b/modules/identity/src/Volo.Abp.Identity.Installer/FodyWeavers.xml
new file mode 100644
index 0000000000..00e1d9a1c1
--- /dev/null
+++ b/modules/identity/src/Volo.Abp.Identity.Installer/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/modules/identity/src/Volo.Abp.Identity.Installer/FodyWeavers.xsd b/modules/identity/src/Volo.Abp.Identity.Installer/FodyWeavers.xsd
new file mode 100644
index 0000000000..3f3946e282
--- /dev/null
+++ b/modules/identity/src/Volo.Abp.Identity.Installer/FodyWeavers.xsd
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.
+
+
+
+
+ A comma-separated list of error codes that can be safely ignored in assembly verification.
+
+
+
+
+ 'false' to turn off automatic generation of the XML Schema file.
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/identity/src/Volo.Abp.Identity.Installer/Volo.Abp.Identity.Installer.csproj b/modules/identity/src/Volo.Abp.Identity.Installer/Volo.Abp.Identity.Installer.csproj
new file mode 100644
index 0000000000..80a1b51bb0
--- /dev/null
+++ b/modules/identity/src/Volo.Abp.Identity.Installer/Volo.Abp.Identity.Installer.csproj
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+ net5.0
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/identity/src/Volo.Abp.Identity.Installer/Volo/Abp/Identity/AbpIdentityInstallerModule.cs b/modules/identity/src/Volo.Abp.Identity.Installer/Volo/Abp/Identity/AbpIdentityInstallerModule.cs
new file mode 100644
index 0000000000..23a1de23a2
--- /dev/null
+++ b/modules/identity/src/Volo.Abp.Identity.Installer/Volo/Abp/Identity/AbpIdentityInstallerModule.cs
@@ -0,0 +1,21 @@
+using Volo.Abp.Studio;
+using Volo.Abp.Modularity;
+using Volo.Abp.VirtualFileSystem;
+
+namespace Volo.Abp.Identity
+{
+ [DependsOn(
+ typeof(AbpStudioModuleInstallerModule),
+ typeof(AbpVirtualFileSystemModule)
+ )]
+ public class AbpIdentityInstallerModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ Configure(options =>
+ {
+ options.FileSets.AddEmbedded();
+ });
+ }
+ }
+}
diff --git a/modules/identity/src/Volo.Abp.Identity.Installer/Volo/Abp/Identity/IdentityInstallerPipelineBuilder.cs b/modules/identity/src/Volo.Abp.Identity.Installer/Volo/Abp/Identity/IdentityInstallerPipelineBuilder.cs
new file mode 100644
index 0000000000..8f2f75c30c
--- /dev/null
+++ b/modules/identity/src/Volo.Abp.Identity.Installer/Volo/Abp/Identity/IdentityInstallerPipelineBuilder.cs
@@ -0,0 +1,24 @@
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Studio.ModuleInstalling;
+
+namespace Volo.Abp.Identity
+{
+ [Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
+ [ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
+ public class IdentityInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
+ {
+ public async Task BuildAsync(ModuleInstallingContext context)
+ {
+ context.AddEfCoreConfigurationMethodDeclaration(
+ new EfCoreConfigurationMethodDeclaration(
+ "Volo.Abp.Identity.EntityFrameworkCore",
+ "ConfigureIdentity"
+ )
+ );
+
+ return GetBasePipeline(context);
+ }
+ }
+}
diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Roles/index.js b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Roles/index.js
index d19ad1c81a..b3c2de8e15 100644
--- a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Roles/index.js
+++ b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Roles/index.js
@@ -63,6 +63,7 @@
.delete(data.record.id)
.then(function () {
_dataTable.ajax.reload();
+ abp.notify.success(l('SuccessfullyDeleted'));
});
},
}
diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/index.js b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/index.js
index 28e7581cb1..96ee7e5361 100644
--- a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/index.js
+++ b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/index.js
@@ -58,6 +58,7 @@
.delete(data.record.id)
.then(function () {
_dataTable.ajax.reload();
+ abp.notify.success(l('SuccessfullyDeleted'));
});
},
}
diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Volo.Abp.Identity.Web.abppkg.analyze.json b/modules/identity/src/Volo.Abp.Identity.Web/Volo.Abp.Identity.Web.abppkg.analyze.json
new file mode 100644
index 0000000000..0ff75daa7f
--- /dev/null
+++ b/modules/identity/src/Volo.Abp.Identity.Web/Volo.Abp.Identity.Web.abppkg.analyze.json
@@ -0,0 +1,11 @@
+{
+ "name": "Volo.Abp.Identity.Web",
+ "hash": "e8d9278c1f4324ce9c89a3045da71d43",
+ "contents": [
+ {
+ "namespace": "Volo.Abp.Identity.Web",
+ "contentType": "abpModule",
+ "name": "AbpIdentityWebModule"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/modules/identityserver/Volo.Abp.IdentityServer.sln b/modules/identityserver/Volo.Abp.IdentityServer.sln
index 93dd971d47..0006ded671 100644
--- a/modules/identityserver/Volo.Abp.IdentityServer.sln
+++ b/modules/identityserver/Volo.Abp.IdentityServer.sln
@@ -25,6 +25,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.IdentityServer.Dom
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.PermissionManagement.Domain.IdentityServer", "src\Volo.Abp.PermissionManagement.Domain.IdentityServer\Volo.Abp.PermissionManagement.Domain.IdentityServer.csproj", "{072BD630-FB89-45FC-BA2D-12A9745AAB93}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.IdentityServer.Installer", "src\Volo.Abp.IdentityServer.Installer\Volo.Abp.IdentityServer.Installer.csproj", "{E8C9972C-8AA9-4E30-8290-C93FEA00D374}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -67,6 +69,10 @@ Global
{072BD630-FB89-45FC-BA2D-12A9745AAB93}.Debug|Any CPU.Build.0 = Debug|Any CPU
{072BD630-FB89-45FC-BA2D-12A9745AAB93}.Release|Any CPU.ActiveCfg = Release|Any CPU
{072BD630-FB89-45FC-BA2D-12A9745AAB93}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E8C9972C-8AA9-4E30-8290-C93FEA00D374}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E8C9972C-8AA9-4E30-8290-C93FEA00D374}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E8C9972C-8AA9-4E30-8290-C93FEA00D374}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E8C9972C-8AA9-4E30-8290-C93FEA00D374}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -81,6 +87,7 @@ Global
{2E18B471-7FCA-497B-90FF-6AA9172CC62F} = {2C792EC1-BA27-44ED-B7CC-D0939553F1B2}
{0680D0B6-51C0-4812-8A0B-192FDE717E60} = {2C792EC1-BA27-44ED-B7CC-D0939553F1B2}
{072BD630-FB89-45FC-BA2D-12A9745AAB93} = {59A0FC0F-EA6D-477B-84A7-3B1E41B4C858}
+ {E8C9972C-8AA9-4E30-8290-C93FEA00D374} = {59A0FC0F-EA6D-477B-84A7-3B1E41B4C858}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {45562023-C330-4060-A583-2BA10F472D3D}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo.Abp.IdentityServer.Domain.Shared.abppkg.analyze.json b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo.Abp.IdentityServer.Domain.Shared.abppkg.analyze.json
new file mode 100644
index 0000000000..504cacafca
--- /dev/null
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo.Abp.IdentityServer.Domain.Shared.abppkg.analyze.json
@@ -0,0 +1,11 @@
+{
+ "name": "Volo.Abp.IdentityServer.Domain.Shared",
+ "hash": "ce5c24d589a663bc543a334b6a98de00",
+ "contents": [
+ {
+ "namespace": "Volo.Abp.IdentityServer",
+ "contentType": "abpModule",
+ "name": "AbpIdentityServerDomainSharedModule"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/it.json b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/it.json
index cde4f688f4..066b3e86d4 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/it.json
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/it.json
@@ -2,14 +2,14 @@
"culture": "it",
"texts": {
"Volo.IdentityServer:DuplicateIdentityResourceName": "Il nome della risorsa identità esiste già: {Name}",
- "Volo.IdentityServer:DuplicateApiResourceName": "L'Api Resource esiste già: {Name}",
+ "Volo.IdentityServer:DuplicateApiResourceName": "L'API Resource esiste già: {Name}",
"Volo.IdentityServer:DuplicateApiScopeName": "L'API Scope esiste già: {Name}",
"Volo.IdentityServer:DuplicateClientId": "ClientId già esistente: {ClientId}",
"UserLockedOut": "L'account utente è stato bloccato a causa di tentativi di accesso non validi. Attendi qualche istante e riprova.",
"InvalidUserNameOrPassword": "Username o password non validi!",
- "LoginIsNotAllowed": "Non sei autorizzato ad accedere! Il tuo account non è attivo o deve confermare la tua email/numero di telefono.",
+ "LoginIsNotAllowed": "Non sei autorizzato ad accedere! Il tuo account non è attivo o devi confermare la tua e-mail/numero di telefono.",
"InvalidUsername": "Username o password non validi!",
"InvalidAuthenticatorCode": "Codice autenticatore non valido!",
- "TheTargetUserIsNotLinkedToYou": "L'utente di destinazione non è collegato a te!"
+ "TheTargetUserIsNotLinkedToYou": "L'utente indicato non è collegato a te!"
}
-}
\ No newline at end of file
+}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo.Abp.IdentityServer.EntityFrameworkCore.abppkg.analyze.json b/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo.Abp.IdentityServer.EntityFrameworkCore.abppkg.analyze.json
new file mode 100644
index 0000000000..c10e3143b8
--- /dev/null
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo.Abp.IdentityServer.EntityFrameworkCore.abppkg.analyze.json
@@ -0,0 +1,11 @@
+{
+ "name": "Volo.Abp.IdentityServer.EntityFrameworkCore",
+ "hash": "034f1be234bf02cb8e782935c47c0eeb",
+ "contents": [
+ {
+ "namespace": "Volo.Abp.IdentityServer.EntityFrameworkCore",
+ "contentType": "abpModule",
+ "name": "AbpIdentityServerEntityFrameworkCoreModule"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/FodyWeavers.xml b/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/FodyWeavers.xml
new file mode 100644
index 0000000000..00e1d9a1c1
--- /dev/null
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/FodyWeavers.xsd b/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/FodyWeavers.xsd
new file mode 100644
index 0000000000..3f3946e282
--- /dev/null
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/FodyWeavers.xsd
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.
+
+
+
+
+ A comma-separated list of error codes that can be safely ignored in assembly verification.
+
+
+
+
+ 'false' to turn off automatic generation of the XML Schema file.
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/Volo.Abp.IdentityServer.Installer.csproj b/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/Volo.Abp.IdentityServer.Installer.csproj
new file mode 100644
index 0000000000..ca7d96ac5d
--- /dev/null
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/Volo.Abp.IdentityServer.Installer.csproj
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+ net5.0
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/Volo/Abp/IdentityServer/AbpIdentityServerInstallerModule.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/Volo/Abp/IdentityServer/AbpIdentityServerInstallerModule.cs
new file mode 100644
index 0000000000..f3b7447744
--- /dev/null
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/Volo/Abp/IdentityServer/AbpIdentityServerInstallerModule.cs
@@ -0,0 +1,21 @@
+using Volo.Abp.Modularity;
+using Volo.Abp.Studio;
+using Volo.Abp.VirtualFileSystem;
+
+namespace Volo.Abp.IdentityServer
+{
+ [DependsOn(
+ typeof(AbpStudioModuleInstallerModule),
+ typeof(AbpVirtualFileSystemModule)
+ )]
+ public class AbpIdentityServerInstallerModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ Configure(options =>
+ {
+ options.FileSets.AddEmbedded();
+ });
+ }
+ }
+}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/Volo/Abp/IdentityServer/IdentityServerInstallerPipelineBuilder.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/Volo/Abp/IdentityServer/IdentityServerInstallerPipelineBuilder.cs
new file mode 100644
index 0000000000..02042215f5
--- /dev/null
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Installer/Volo/Abp/IdentityServer/IdentityServerInstallerPipelineBuilder.cs
@@ -0,0 +1,24 @@
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Studio.ModuleInstalling;
+
+namespace Volo.Abp.IdentityServer
+{
+ [Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
+ [ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
+ public class IdentityServerInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
+ {
+ public async Task BuildAsync(ModuleInstallingContext context)
+ {
+ context.AddEfCoreConfigurationMethodDeclaration(
+ new EfCoreConfigurationMethodDeclaration(
+ "Volo.Abp.IdentityServer.EntityFrameworkCore",
+ "ConfigureIdentityServer"
+ )
+ );
+
+ return GetBasePipeline(context);
+ }
+ }
+}
diff --git a/modules/permission-management/Volo.Abp.PermissionManagement.sln b/modules/permission-management/Volo.Abp.PermissionManagement.sln
index 6cb7292684..5eb2673282 100644
--- a/modules/permission-management/Volo.Abp.PermissionManagement.sln
+++ b/modules/permission-management/Volo.Abp.PermissionManagement.sln
@@ -41,6 +41,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.PermissionManageme
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.PermissionManagement.Blazor.WebAssembly", "src\Volo.Abp.PermissionManagement.Blazor.WebAssembly\Volo.Abp.PermissionManagement.Blazor.WebAssembly.csproj", "{C8AA18AA-BD1F-4E58-92C6-12F846C02000}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.PermissionManagement.Installer", "src\Volo.Abp.PermissionManagement.Installer\Volo.Abp.PermissionManagement.Installer.csproj", "{A0D67614-A668-45E6-BB8F-8ACE54D8A196}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -115,6 +117,10 @@ Global
{C8AA18AA-BD1F-4E58-92C6-12F846C02000}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C8AA18AA-BD1F-4E58-92C6-12F846C02000}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C8AA18AA-BD1F-4E58-92C6-12F846C02000}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A0D67614-A668-45E6-BB8F-8ACE54D8A196}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A0D67614-A668-45E6-BB8F-8ACE54D8A196}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A0D67614-A668-45E6-BB8F-8ACE54D8A196}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A0D67614-A668-45E6-BB8F-8ACE54D8A196}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -137,6 +143,7 @@ Global
{6F899C50-83BB-43C4-983A-DCCD8FBBF066} = {B559B878-38F7-49CC-BC06-43A32D68C1A7}
{88B39D54-5289-4D39-B4B9-E7C264ED2996} = {B559B878-38F7-49CC-BC06-43A32D68C1A7}
{C8AA18AA-BD1F-4E58-92C6-12F846C02000} = {B559B878-38F7-49CC-BC06-43A32D68C1A7}
+ {A0D67614-A668-45E6-BB8F-8ACE54D8A196} = {B559B878-38F7-49CC-BC06-43A32D68C1A7}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {8FC7DF78-5E2D-489F-9D43-147D2ABAA112}
diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/FodyWeavers.xml b/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/FodyWeavers.xml
new file mode 100644
index 0000000000..00e1d9a1c1
--- /dev/null
+++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/FodyWeavers.xsd b/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/FodyWeavers.xsd
new file mode 100644
index 0000000000..3f3946e282
--- /dev/null
+++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/FodyWeavers.xsd
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.
+
+
+
+
+ A comma-separated list of error codes that can be safely ignored in assembly verification.
+
+
+
+
+ 'false' to turn off automatic generation of the XML Schema file.
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/Volo.Abp.PermissionManagement.Installer.csproj b/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/Volo.Abp.PermissionManagement.Installer.csproj
new file mode 100644
index 0000000000..c1fa844501
--- /dev/null
+++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/Volo.Abp.PermissionManagement.Installer.csproj
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+ net5.0
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/Volo/Abp/PermissionManagement/AbpPermissionManagementInstallerModule.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/Volo/Abp/PermissionManagement/AbpPermissionManagementInstallerModule.cs
new file mode 100644
index 0000000000..4f82d2996e
--- /dev/null
+++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/Volo/Abp/PermissionManagement/AbpPermissionManagementInstallerModule.cs
@@ -0,0 +1,21 @@
+using Volo.Abp.Modularity;
+using Volo.Abp.Studio;
+using Volo.Abp.VirtualFileSystem;
+
+namespace Volo.Abp.PermissionManagement
+{
+ [DependsOn(
+ typeof(AbpStudioModuleInstallerModule),
+ typeof(AbpVirtualFileSystemModule)
+ )]
+ public class AbpPermissionManagementInstallerModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ Configure(options =>
+ {
+ options.FileSets.AddEmbedded();
+ });
+ }
+ }
+}
diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/Volo/Abp/PermissionManagement/PermissionManagementInstallerPipelineBuilder.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/Volo/Abp/PermissionManagement/PermissionManagementInstallerPipelineBuilder.cs
new file mode 100644
index 0000000000..1f47f5cff4
--- /dev/null
+++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Installer/Volo/Abp/PermissionManagement/PermissionManagementInstallerPipelineBuilder.cs
@@ -0,0 +1,24 @@
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Studio.ModuleInstalling;
+
+namespace Volo.Abp.PermissionManagement
+{
+ [Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
+ [ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
+ public class PermissionManagementInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
+ {
+ public async Task BuildAsync(ModuleInstallingContext context)
+ {
+ context.AddEfCoreConfigurationMethodDeclaration(
+ new EfCoreConfigurationMethodDeclaration(
+ "Volo.Abp.PermissionManagement.EntityFrameworkCore",
+ "ConfigurePermissionManagement"
+ )
+ );
+
+ return GetBasePipeline(context);
+ }
+ }
+}
diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionStore_Tests.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionStore_Tests.cs
index ee0ef168c1..e259114b7c 100644
--- a/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionStore_Tests.cs
+++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionStore_Tests.cs
@@ -22,7 +22,6 @@ namespace Volo.Abp.PermissionManagement
UserPermissionValueProvider.ProviderName,
PermissionTestDataBuilder.User1Id.ToString())).ShouldBeTrue();
-
(await _permissionStore.IsGrantedAsync("MyPermission1NotExist",
UserPermissionValueProvider.ProviderName,
PermissionTestDataBuilder.User1Id.ToString())).ShouldBeFalse();
diff --git a/modules/setting-management/Volo.Abp.SettingManagement.sln b/modules/setting-management/Volo.Abp.SettingManagement.sln
index 57a34cf8ac..26db0f3a72 100644
--- a/modules/setting-management/Volo.Abp.SettingManagement.sln
+++ b/modules/setting-management/Volo.Abp.SettingManagement.sln
@@ -43,6 +43,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.SettingManagement.
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.SettingManagement.Blazor.WebAssembly", "src\Volo.Abp.SettingManagement.Blazor.WebAssembly\Volo.Abp.SettingManagement.Blazor.WebAssembly.csproj", "{9C65F145-6A74-48E4-8950-9E4F83953FDB}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.SettingManagement.Installer", "src\Volo.Abp.SettingManagement.Installer\Volo.Abp.SettingManagement.Installer.csproj", "{6D4AE734-45DF-4A6F-9E8B-2479760F1611}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -117,6 +119,10 @@ Global
{9C65F145-6A74-48E4-8950-9E4F83953FDB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9C65F145-6A74-48E4-8950-9E4F83953FDB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9C65F145-6A74-48E4-8950-9E4F83953FDB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6D4AE734-45DF-4A6F-9E8B-2479760F1611}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6D4AE734-45DF-4A6F-9E8B-2479760F1611}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6D4AE734-45DF-4A6F-9E8B-2479760F1611}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6D4AE734-45DF-4A6F-9E8B-2479760F1611}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -139,6 +145,7 @@ Global
{8488F380-83DD-4209-80B7-87ACAB83A052} = {D3222BEC-EDCE-4509-9A19-36C43C9A59FB}
{54825027-5569-456A-81D3-0F425FEE4712} = {F1BE945B-F0CF-4712-BC2B-9AF8C02059EA}
{9C65F145-6A74-48E4-8950-9E4F83953FDB} = {F1BE945B-F0CF-4712-BC2B-9AF8C02059EA}
+ {6D4AE734-45DF-4A6F-9E8B-2479760F1611} = {F1BE945B-F0CF-4712-BC2B-9AF8C02059EA}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {24B3A486-E7CA-4AA5-B76F-27D351A97E59}
diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json
index f0f1b6439a..b8fea48794 100644
--- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json
+++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/package.json
@@ -3,6 +3,6 @@
"name": "demo-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.1"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.2"
}
}
diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
index 1fee6e798d..d7b5d2d9c4 100644
--- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
+++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
@@ -1,4 +1,6 @@
/*
https://select2.org/troubleshooting/common-problems
*/
-$.fn.modal.Constructor.prototype._enforceFocus = function () { };
\ No newline at end of file
+if ($.fn.modal) {
+ $.fn.modal.Constructor.prototype._enforceFocus = function () { };
+}
diff --git a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock
index 62f479c1ca..a7752bd98f 100644
--- a/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock
+++ b/modules/setting-management/app/Volo.Abp.SettingManagement.DemoApp/yarn.lock
@@ -2,37 +2,37 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@^5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.0-beta.1.tgz#2c78c2bd977a67f6c2ed77cfcd404cf9533eaaae"
- integrity sha512-b8Boztxd5NbaDlXQvgHXHtw8ZNgM4tEgo14kw/bN3mcLx05fWLGd8Lzfdi7i+Ju6U3rKbgi+0MSbga93A0KSmg==
- dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.1"
-
-"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.1.tgz#25596652bb3f7b6bac5bbd966a731144cd9646c6"
- integrity sha512-N4SHu6rn8alK4jdve00IscngrfvqJNEjrwQclXNmP9c4NtPuVM9emZdxBzKF8jFb6Hz8HiwM9H3xV/SjKCS/7A==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.1"
- "@abp/bootstrap" "~5.0.0-beta.1"
- "@abp/bootstrap-datepicker" "~5.0.0-beta.1"
- "@abp/datatables.net-bs4" "~5.0.0-beta.1"
- "@abp/font-awesome" "~5.0.0-beta.1"
- "@abp/jquery-form" "~5.0.0-beta.1"
- "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.1"
- "@abp/lodash" "~5.0.0-beta.1"
- "@abp/luxon" "~5.0.0-beta.1"
- "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.1"
- "@abp/select2" "~5.0.0-beta.1"
- "@abp/sweetalert2" "~5.0.0-beta.1"
- "@abp/timeago" "~5.0.0-beta.1"
- "@abp/toastr" "~5.0.0-beta.1"
-
-"@abp/aspnetcore.mvc.ui@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.1.tgz#30c14386899596bf91e8871810dbaa1a0e51e996"
- integrity sha512-pabiGHghC62eg95RfAncEt0+yGdBxdMmyqCXV+Be4JjaMz/hGZIDOPIYnaqCayZtyMmIRqG6IAwi99DqBjkQAQ==
+"@abp/aspnetcore.mvc.ui.theme.basic@^5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.0-beta.2.tgz#077d1edd88f2f1ccb5c8227180a75e3121eece19"
+ integrity sha512-b7f05Fza18NYHudrHosYuCX/UJ/Y3KYJrJMHqdvAsZYu0t3dc7EMWKYTDA/+rDEO8iV/83twRYfHLf0tmVyc1Q==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.2"
+
+"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.2.tgz#8c58d252f1a39f91c2c287b91691e5bd772f4918"
+ integrity sha512-l4suGM7PjGTw/MEg2f2BdbRXYzALhZQUSijzKIQTy5dwcA/JQPsLbezPzGy45fD3lXsYxBwS4QaOmofTosKkug==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.2"
+ "@abp/bootstrap" "~5.0.0-beta.2"
+ "@abp/bootstrap-datepicker" "~5.0.0-beta.2"
+ "@abp/datatables.net-bs4" "~5.0.0-beta.2"
+ "@abp/font-awesome" "~5.0.0-beta.2"
+ "@abp/jquery-form" "~5.0.0-beta.2"
+ "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.2"
+ "@abp/lodash" "~5.0.0-beta.2"
+ "@abp/luxon" "~5.0.0-beta.2"
+ "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.2"
+ "@abp/select2" "~5.0.0-beta.2"
+ "@abp/sweetalert2" "~5.0.0-beta.2"
+ "@abp/timeago" "~5.0.0-beta.2"
+ "@abp/toastr" "~5.0.0-beta.2"
+
+"@abp/aspnetcore.mvc.ui@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.2.tgz#c30d9905e133451208e379f7173ed9c44dd5f487"
+ integrity sha512-8Dzfg5SzeVoXz/nY11o2u3y7ZQdUW/zVSYVTgbsCMC1HCe2yzptpr2XI0Goz8jQKgz0G+zg3iwfeur7vNoaoMw==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@@ -41,145 +41,145 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
-"@abp/bootstrap-datepicker@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.1.tgz#727e0f7305a94c95ece152ffff011bcff621f46d"
- integrity sha512-txhdlJqyO2D9MkGLYgrsiDaC58cb2eCpk2uxoqqQeVWvuRPo/L+9rCBk+bu6J37FGJtU8aabtHJyR5xnYbv0TQ==
+"@abp/bootstrap-datepicker@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.2.tgz#dbf92485225a424f0e53e55c3ef8c993943682f0"
+ integrity sha512-jJWVKrkKcUMEqwBrEqhGD1zDFD8b0b3j0WdlzKuzlw26AaQkfE4LQ9Gjfjs+RnTW1LxPn8rGP8QCgdVeWMNjQQ==
dependencies:
bootstrap-datepicker "^1.9.0"
-"@abp/bootstrap@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.1.tgz#075a15459ff8e3896b6553786e6c8f091c6ffcad"
- integrity sha512-W8z6qSAsRoXmG0++xH6Bk1oRc90hFqVcjKI+5XgBQhUUCn2qBruBYOKFxPg2GeT2f1k9K5TrCEnnVrh0sOP9/A==
+"@abp/bootstrap@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.2.tgz#0faaa85871fd23076dd597dce83dc3020b1ff950"
+ integrity sha512-zy0DUcAJuX+Oeu4csw7XbyLGq/YdfonMLJt/Mkpq8CjAssD7n7aJK6PwG+akaI4giSQd7Sc1JvvnKRMRzyxy1Q==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
bootstrap "^4.6.0"
bootstrap-v4-rtl "4.6.0-1"
-"@abp/core@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.1.tgz#6cff06b13529ab9d7a6ddc4e89dc40616e6b7739"
- integrity sha512-TK1CnurJIK/SXfsNTk6HSpxdaJgVxwvqNd4F3fxCC0Uj8s5viD3TAGk39Hkp4909WGfNrRq8BEUNvTYM/rP6gg==
+"@abp/core@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.2.tgz#f9643d21b19128be3ad58b23083e1fc9620f2102"
+ integrity sha512-AHlJQF5NC+yNsj5xILHk1CF++Z93aQDNp0zdJciDqIexH9lEJ+AQCX2EKLn0yjWt4Ga00pOOmQM5vJVJjuJCEw==
dependencies:
- "@abp/utils" "^5.0.0-beta.1"
+ "@abp/utils" "^5.0.0-beta.2"
-"@abp/datatables.net-bs4@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.1.tgz#110d7d8cf1c15db7432d8f0649f4317ba8de10dd"
- integrity sha512-CPodZP9pqLdwnFZ77/mcSfuhyK1WMi/c+9VWpGXFQSGaABNKPP2UIdAChwUcBRdGkZRa/IhXx3CCr1ZMLpJsMQ==
+"@abp/datatables.net-bs4@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.2.tgz#3afb32918f59b55c68d3d37b2c1f0bf49bb06fc8"
+ integrity sha512-t6YserKkBId7KnT46uYaGw6HJrf8tcLp4bJmGyUSnCwVlgJcha/P6fr3pKWqFz9QPGk5riCZF3hK6x1BH9u71g==
dependencies:
- "@abp/datatables.net" "~5.0.0-beta.1"
+ "@abp/datatables.net" "~5.0.0-beta.2"
datatables.net-bs4 "^1.10.21"
-"@abp/datatables.net@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.1.tgz#8e784a011d33de154554f3239c448fcfd8adb713"
- integrity sha512-mRMYqTCoYLmDLvL+CvmwUS4JqCqdkn6mxHd7zgkaR04xlGLEmNae5aGbs1wURJ86MOWrHbfkx66lQjkul3zbQw==
+"@abp/datatables.net@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.2.tgz#fc87be76ebec94b16c6734c2249ea8a0a04a83b8"
+ integrity sha512-aEAlej1wNtxsxpwlw2GFOV0tFSZ7MWA+Wpfi5QZ4VIbYHSIkhEnz0apiNMBsoB8i7VJLJKZuKvynlJWYABNk0Q==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
datatables.net "^1.10.21"
-"@abp/font-awesome@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.1.tgz#3ae721c447a009601226c381a20dc4adabe154e1"
- integrity sha512-fsMqwApogZ1rAogStQxBX/Nh8akXPW/Alm8UayfK6TXIkPPjBz5RQSHfdlosG7M/U3mwUNGcLlaDvQXsE/nqow==
+"@abp/font-awesome@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.2.tgz#10a920fb20294f7ccd404ea2b302fb11f68f0705"
+ integrity sha512-Mmhfm7g5HdflvqbZOZDKk335IlY8ipwtKsCQ1qRaobsMpWi2AFh6/P/XX7y4H5p0wH5cluUsSzS1QB37QXp36w==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
"@fortawesome/fontawesome-free" "^5.13.0"
-"@abp/jquery-form@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.1.tgz#d13f4cffce48125547b9da57cfc407f9a35a89e6"
- integrity sha512-RYE90XIDxWkvxO5ukuZ2PHk6aA/o7NQKLcR9WsN1G2xTU/frrNPgtruGRTIj7Nx3BPUeMp7EAN2rYZwglcnO5g==
+"@abp/jquery-form@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.2.tgz#4b685858d54eafac123995ebfea759c769e49cab"
+ integrity sha512-ekytRAvAUNKJAPiR5i7kxASh5j3D5jabO1GHbPwq6UzapGLMzG5r8s6/1b4eX+4Zorfy+TmERNeUsWvQwf3P1A==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
jquery-form "^4.3.0"
-"@abp/jquery-validation-unobtrusive@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.1.tgz#93ff6ee92bccdde77816bfb434e967fd142f6b83"
- integrity sha512-LZE1KIALGBCINdWrHzoGczekUFtKwbXbLIgb4ZgiipO5Xja7py/iVvts10QWqUzhnBk+kmbHbj+KnjdqP4Z8pQ==
+"@abp/jquery-validation-unobtrusive@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.2.tgz#392ab72716baea26e6f560e2369d09f8c5488d3b"
+ integrity sha512-PyiWj0hj5jkjcZ1oJeLXYuoVCIAg51X4y6iLbcb1SpAbqYQP23gilDJK8xkURbysGPMiDq+7tOiKAnGiHSBnWA==
dependencies:
- "@abp/jquery-validation" "~5.0.0-beta.1"
+ "@abp/jquery-validation" "~5.0.0-beta.2"
jquery-validation-unobtrusive "^3.2.11"
-"@abp/jquery-validation@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.1.tgz#2964ca1266b087e4c4c0e768bfc4bfe0284e4ff5"
- integrity sha512-ZDNdkPy2ZNu0EYDNH20Oh9R3bICCYv9CbEj4zZ8Qavixo9VTkybY3BW0nYjcu1yb1P92gZPp80W8vyfxSo//kw==
+"@abp/jquery-validation@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.2.tgz#233eda5998ae566daeb945d8508999da2ef75a51"
+ integrity sha512-jKY0yfRgM5RGlJeQCGKkkczx5qptpPkhqWr4x+ffTUzR+ywF9FHUB5zcbELpEyWuOJ9cilap2hga2lvPZ8c+Pg==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
jquery-validation "^1.19.2"
-"@abp/jquery@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.1.tgz#360e7a164b6b4ce615a5ad91a1c78ef6893648f3"
- integrity sha512-v2t+76L45tlbpGeVR39GurZl60Rj1pR/TdUidpP6zwnpx1Y3I+CvlJNDwTESeE/ixTOT3PyFbXoMEi6hI+v39A==
+"@abp/jquery@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.2.tgz#62fa64fcc0bd5dca4b5e7534b24205a3f0461f08"
+ integrity sha512-tMzjo9qQAgJDYPvLk67YNlnOOUSTUfPWodlqfl5vvo6/NHSsB9eJhXH28txEtygX0o/Mepi9Ag87dL9VLh0DEw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
jquery "~3.6.0"
-"@abp/lodash@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.1.tgz#618797bde42b17f91d7f99fdd5f24cb5e8a361b3"
- integrity sha512-WsUjzHRZ6RkSMd5PTw0oWijDbbq/Wgonv8++ufUZi1WK5spZi9ohjcYM4io3Ms3fG+g4pWznaicYraMpV5tcsQ==
+"@abp/lodash@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.2.tgz#c821eb502de3211f94ca2f7ba8a5c0b0677c5c9b"
+ integrity sha512-lW8lz1JG8kweVOWVCB7jC6xxLUE0G6MJfwv4g0+eKwFLgsAO5dK6Yk4xZi+UXgST73OgGt5LIQJcS4+aCo/zmg==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
lodash "^4.17.15"
-"@abp/luxon@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.1.tgz#fc81fcbfb592d3baf7b9856b3cecf5b86df4bfdf"
- integrity sha512-t4lhJ/wr1rAVH1/bnzmc8niZYvolTuXUB0h6A6UYaw205QyNtimzusYkTwkc+Z3xHFUrkLCoG7J2SVoCJuioaA==
+"@abp/luxon@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.2.tgz#64c68c3091415153c8c470fb3e5650bbc00500d1"
+ integrity sha512-0mSVsycWEo5hamEuR7Mqw00JnVRlhQvpy8Bks58d7bRksIQzK8iPx9advTbP2ICF3iz9zHT9MJrMXYfvUT6oIQ==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
luxon "^1.24.1"
-"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.1.tgz#7af43d30af9b1f741fd9d9559d100aa4a5c52ae9"
- integrity sha512-B195PC4/75W0EXjGEQUd/ZARb/eGWj8DX7hq3K+J+lUWzWu46dZy8s5bBij78HqxS91/q6nbxU35Z+E9xl6ICg==
+"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.2.tgz#6c030cfe1e123be0a81f769dedd6a6b22aed9077"
+ integrity sha512-ZEkCMMDKe26b/sCArQjDOGEm8+lQB9Uis17FNyHDt/vA+FdtaPJjeLOqmfzMeLQYppvefH+JCpGzfaWwCNZmcw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/select2@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.1.tgz#15988165fcfed2ebc2b8d097965e2dc1984af35e"
- integrity sha512-SF+NkWDJNz1EeEimW5luaCMPTNN1oPzEWs47usPJo8m7HfijEvF3rymJ8jL5zWIOo05Tx3HUurLSVz0qu4vZsw==
+"@abp/select2@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.2.tgz#f5e74d56ccdabde61825453044f31fa183573b58"
+ integrity sha512-ApL7ioC4p5GguQM2KfnqtGrJ9TqBRiQh1v+y1J2Z3Lh18SJU+tsA3f9Va9ZyZNIFrpV3Bsmim2cIu7bjm7IBRw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
select2 "^4.0.13"
-"@abp/sweetalert2@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.1.tgz#c6a1185f39d3207f67753e7c486eddcefc7fd0da"
- integrity sha512-ADotpiMkIzHLy/ufK0q49V9hgF8oKE0rLRzVZV2dHBpmFR7YRcPdbb5AN9CiXDk6ol8nsocEEAwRmgD3eJG63w==
+"@abp/sweetalert2@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.2.tgz#164c1df63c2859fa5277673906f85cc8e7e2d1ef"
+ integrity sha512-UdENhKcfywOorjTf4+CxDO8UUet9lYAIDH2r+Kd1qjFKIDDu6w3TfJ7Gz108VG84+RsUevfVLgZ8qeYsA+drKQ==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
sweetalert2 "^11.0.18"
-"@abp/timeago@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.1.tgz#0f7bb8cd85b7e90d7d5c0a0940b9102e3f4f1e42"
- integrity sha512-QwYZyeDRW+X8BGecBcK1SgsClVWNYfPgvct+WkQhTIRxzbP/c1c+1irj69sNdN3df2WLnmjfu3sBw2hzz5ykbg==
+"@abp/timeago@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.2.tgz#7a6242e6cc403addf172ebf18ffb3513d4b30f21"
+ integrity sha512-wdXaKd0dBJP0mawzHqE04YWUgpUYzq8vJHGH3QGf9RpB+XpMztt1KNHR6d32VylDAEoPEtB7GH4rVvlimKa48g==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
timeago "^1.6.7"
-"@abp/toastr@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.1.tgz#d420fc5db6b15f6d623d3928bb6913996511937f"
- integrity sha512-82LfDrZQagtv4QLb643VTra4pxleOq5xYwhpOK1Ifop2K5CRgElxKfWvY2EtxdGkpCO2arvkOzjRNbxnecHB2w==
+"@abp/toastr@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.2.tgz#924f5315d3ade6ee41869d8809b625116c5b02f1"
+ integrity sha512-iqmgO/8AwORzYKf/43+Fx/478la0w+g+mrDahzokPlZFv6WUvFL3QSD/fs1mjc2yUOxEuvgprEiEfWoZcrwtNA==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
toastr "^2.1.4"
-"@abp/utils@^5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.1.tgz#e1bf9240738276081c89a67073d9d85205fdf14c"
- integrity sha512-suzKxHUautizxt5XdlJ8ONIaVMcAHrb2dp1kEnXnFRW1ip+7ZQ9/nxJj+GtY1MhHX2yPmlUQP2K8f2upJh9aoA==
+"@abp/utils@^5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.2.tgz#4d120c0f930b943071b4ba27dafedf6c8b730182"
+ integrity sha512-EZV1P+eafVBEHO6B+Ws6iX4xyeg8B6nCPLvpaFC6mStk7SGidh2rAYYWyydyh68Ky8YdbLYQE3oPaIewOhDWTg==
dependencies:
just-compare "^1.3.0"
diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/FodyWeavers.xml b/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/FodyWeavers.xml
new file mode 100644
index 0000000000..00e1d9a1c1
--- /dev/null
+++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/FodyWeavers.xsd b/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/FodyWeavers.xsd
new file mode 100644
index 0000000000..3f3946e282
--- /dev/null
+++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/FodyWeavers.xsd
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.
+
+
+
+
+ A comma-separated list of error codes that can be safely ignored in assembly verification.
+
+
+
+
+ 'false' to turn off automatic generation of the XML Schema file.
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/Volo.Abp.SettingManagement.Installer.csproj b/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/Volo.Abp.SettingManagement.Installer.csproj
new file mode 100644
index 0000000000..dd3daf7500
--- /dev/null
+++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/Volo.Abp.SettingManagement.Installer.csproj
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+ net5.0
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/Volo/Abp/SettingManagement/AbpSettingManagementInstallerModule.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/Volo/Abp/SettingManagement/AbpSettingManagementInstallerModule.cs
new file mode 100644
index 0000000000..3fdfb0601d
--- /dev/null
+++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/Volo/Abp/SettingManagement/AbpSettingManagementInstallerModule.cs
@@ -0,0 +1,21 @@
+using Volo.Abp.Modularity;
+using Volo.Abp.Studio;
+using Volo.Abp.VirtualFileSystem;
+
+namespace Volo.Abp.SettingManagement
+{
+ [DependsOn(
+ typeof(AbpStudioModuleInstallerModule),
+ typeof(AbpVirtualFileSystemModule)
+ )]
+ public class AbpSettingManagementInstallerModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ Configure(options =>
+ {
+ options.FileSets.AddEmbedded();
+ });
+ }
+ }
+}
diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/Volo/Abp/SettingManagement/SettingManagementInstallerPipelineBuilder.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/Volo/Abp/SettingManagement/SettingManagementInstallerPipelineBuilder.cs
new file mode 100644
index 0000000000..e7fa67631e
--- /dev/null
+++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Installer/Volo/Abp/SettingManagement/SettingManagementInstallerPipelineBuilder.cs
@@ -0,0 +1,24 @@
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Studio.ModuleInstalling;
+
+namespace Volo.Abp.SettingManagement
+{
+ [Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
+ [ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
+ public class SettingManagementInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
+ {
+ public async Task BuildAsync(ModuleInstallingContext context)
+ {
+ context.AddEfCoreConfigurationMethodDeclaration(
+ new EfCoreConfigurationMethodDeclaration(
+ "Volo.Abp.SettingManagement.EntityFrameworkCore",
+ "ConfigureSettingManagement"
+ )
+ );
+
+ return GetBasePipeline(context);
+ }
+ }
+}
diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/EmailSettingGroupViewComponent.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/EmailSettingGroupViewComponent.cs
index 1936b2a7e3..c38a804d1a 100644
--- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/EmailSettingGroupViewComponent.cs
+++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/EmailSettingGroupViewComponent.cs
@@ -6,17 +6,17 @@ namespace Volo.Abp.SettingManagement.Web.Pages.SettingManagement.Components.Emai
{
public class EmailSettingGroupViewComponent : AbpViewComponent
{
- private readonly IEmailSettingsAppService _emailSettingsAppService;
+ protected IEmailSettingsAppService EmailSettingsAppService { get; }
public EmailSettingGroupViewComponent(IEmailSettingsAppService emailSettingsAppService)
{
ObjectMapperContext = typeof(AbpSettingManagementWebModule);
- _emailSettingsAppService = emailSettingsAppService;
+ EmailSettingsAppService = emailSettingsAppService;
}
- public async Task InvokeAsync()
+ public virtual async Task InvokeAsync()
{
- var model = await _emailSettingsAppService.GetAsync();
+ var model = await EmailSettingsAppService.GetAsync();
return View("~/Pages/SettingManagement/Components/EmailSettingGroup/Default.cshtml", model);
}
diff --git a/modules/tenant-management/Volo.Abp.TenantManagement.abpmdl.json b/modules/tenant-management/Volo.Abp.TenantManagement.abpmdl.json
new file mode 100644
index 0000000000..f9094439d8
--- /dev/null
+++ b/modules/tenant-management/Volo.Abp.TenantManagement.abpmdl.json
@@ -0,0 +1,78 @@
+{
+ "folders": {
+ "items": {
+ "src": {},
+ "test": {}
+ }
+ },
+ "packages": {
+ "Volo.Abp.TenantManagement.Domain.Shared": {
+ "path": "src/Volo.Abp.TenantManagement.Domain.Shared/Volo.Abp.TenantManagement.Domain.Shared.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.Abp.TenantManagement.Domain": {
+ "path": "src/Volo.Abp.TenantManagement.Domain/Volo.Abp.TenantManagement.Domain.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.Abp.TenantManagement.Application.Contracts": {
+ "path": "src/Volo.Abp.TenantManagement.Application.Contracts/Volo.Abp.TenantManagement.Application.Contracts.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.Abp.TenantManagement.Application": {
+ "path": "src/Volo.Abp.TenantManagement.Application/Volo.Abp.TenantManagement.Application.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.Abp.TenantManagement.EntityFrameworkCore": {
+ "path": "src/Volo.Abp.TenantManagement.EntityFrameworkCore/Volo.Abp.TenantManagement.EntityFrameworkCore.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.Abp.TenantManagement.HttpApi": {
+ "path": "src/Volo.Abp.TenantManagement.HttpApi/Volo.Abp.TenantManagement.HttpApi.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.Abp.TenantManagement.HttpApi.Client": {
+ "path": "src/Volo.Abp.TenantManagement.HttpApi.Client/Volo.Abp.TenantManagement.HttpApi.Client.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.Abp.TenantManagement.Web": {
+ "path": "src/Volo.Abp.TenantManagement.Web/Volo.Abp.TenantManagement.Web.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.Abp.TenantManagement.Application.Tests": {
+ "path": "test/Volo.Abp.TenantManagement.Application.Tests/Volo.Abp.TenantManagement.Application.Tests.abppkg.json",
+ "folder": "test"
+ },
+ "Volo.Abp.TenantManagement.EntityFrameworkCore.Tests": {
+ "path": "test/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests.abppkg.json",
+ "folder": "test"
+ },
+ "Volo.Abp.TenantManagement.MongoDB": {
+ "path": "src/Volo.Abp.TenantManagement.MongoDB/Volo.Abp.TenantManagement.MongoDB.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.Abp.TenantManagement.MongoDB.Tests": {
+ "path": "test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo.Abp.TenantManagement.MongoDB.Tests.abppkg.json",
+ "folder": "test"
+ },
+ "Volo.Abp.TenantManagement.TestBase": {
+ "path": "test/Volo.Abp.TenantManagement.TestBase/Volo.Abp.TenantManagement.TestBase.abppkg.json",
+ "folder": "test"
+ },
+ "Volo.Abp.TenantManagement.Domain.Tests": {
+ "path": "test/Volo.Abp.TenantManagement.Domain.Tests/Volo.Abp.TenantManagement.Domain.Tests.abppkg.json",
+ "folder": "test"
+ },
+ "Volo.Abp.TenantManagement.Blazor": {
+ "path": "src/Volo.Abp.TenantManagement.Blazor/Volo.Abp.TenantManagement.Blazor.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.Abp.TenantManagement.Blazor.WebAssembly": {
+ "path": "src/Volo.Abp.TenantManagement.Blazor.WebAssembly/Volo.Abp.TenantManagement.Blazor.WebAssembly.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.Abp.TenantManagement.Blazor.Server": {
+ "path": "src/Volo.Abp.TenantManagement.Blazor.Server/Volo.Abp.TenantManagement.Blazor.Server.abppkg.json",
+ "folder": "src"
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/tenant-management/Volo.Abp.TenantManagement.abpsln.json b/modules/tenant-management/Volo.Abp.TenantManagement.abpsln.json
new file mode 100644
index 0000000000..d6d4cb2f63
--- /dev/null
+++ b/modules/tenant-management/Volo.Abp.TenantManagement.abpsln.json
@@ -0,0 +1,7 @@
+{
+ "modules": {
+ "Volo.Abp.TenantManagement": {
+ "path": "Volo.Abp.TenantManagement.abpmdl.json"
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/tenant-management/Volo.Abp.TenantManagement.sln b/modules/tenant-management/Volo.Abp.TenantManagement.sln
index 2fec240db6..27fc44c10c 100644
--- a/modules/tenant-management/Volo.Abp.TenantManagement.sln
+++ b/modules/tenant-management/Volo.Abp.TenantManagement.sln
@@ -41,6 +41,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.TenantManagement.B
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.TenantManagement.Blazor.Server", "src\Volo.Abp.TenantManagement.Blazor.Server\Volo.Abp.TenantManagement.Blazor.Server.csproj", "{F92A9527-A2E2-4062-9A4B-0111C89AE222}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.TenantManagement.Installer", "src\Volo.Abp.TenantManagement.Installer\Volo.Abp.TenantManagement.Installer.csproj", "{56205DE5-77CB-4593-82E3-2DBC17310DDC}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -115,6 +117,10 @@ Global
{F92A9527-A2E2-4062-9A4B-0111C89AE222}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F92A9527-A2E2-4062-9A4B-0111C89AE222}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F92A9527-A2E2-4062-9A4B-0111C89AE222}.Release|Any CPU.Build.0 = Release|Any CPU
+ {56205DE5-77CB-4593-82E3-2DBC17310DDC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {56205DE5-77CB-4593-82E3-2DBC17310DDC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {56205DE5-77CB-4593-82E3-2DBC17310DDC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {56205DE5-77CB-4593-82E3-2DBC17310DDC}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -137,6 +143,7 @@ Global
{02D10CCE-03B6-42BC-8C7B-7F1EC74FCB8C} = {799CA525-4748-421A-9892-05C68BB2FA13}
{62C6DC70-A7DB-4623-A7BD-DB6D679660CA} = {799CA525-4748-421A-9892-05C68BB2FA13}
{F92A9527-A2E2-4062-9A4B-0111C89AE222} = {799CA525-4748-421A-9892-05C68BB2FA13}
+ {56205DE5-77CB-4593-82E3-2DBC17310DDC} = {799CA525-4748-421A-9892-05C68BB2FA13}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {7C258726-2CE0-44D3-A2D7-71812E8F505C}
diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo.Abp.TenantManagement.Application.Contracts.abppkg.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo.Abp.TenantManagement.Application.Contracts.abppkg.json
new file mode 100644
index 0000000000..49032794e2
--- /dev/null
+++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo.Abp.TenantManagement.Application.Contracts.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.application-contracts"
+}
\ No newline at end of file
diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo.Abp.TenantManagement.Application.abppkg.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo.Abp.TenantManagement.Application.abppkg.json
new file mode 100644
index 0000000000..412567ac33
--- /dev/null
+++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo.Abp.TenantManagement.Application.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.application"
+}
\ No newline at end of file
diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor.Server/Volo.Abp.TenantManagement.Blazor.Server.abppkg.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor.Server/Volo.Abp.TenantManagement.Blazor.Server.abppkg.json
new file mode 100644
index 0000000000..ef40d81585
--- /dev/null
+++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor.Server/Volo.Abp.TenantManagement.Blazor.Server.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.blazor-server"
+}
\ No newline at end of file
diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor.WebAssembly/Volo.Abp.TenantManagement.Blazor.WebAssembly.abppkg.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor.WebAssembly/Volo.Abp.TenantManagement.Blazor.WebAssembly.abppkg.json
new file mode 100644
index 0000000000..471ef5e067
--- /dev/null
+++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor.WebAssembly/Volo.Abp.TenantManagement.Blazor.WebAssembly.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.blazor-wasm"
+}
\ No newline at end of file
diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Volo.Abp.TenantManagement.Blazor.abppkg.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Volo.Abp.TenantManagement.Blazor.abppkg.json
new file mode 100644
index 0000000000..19c29b7b8b
--- /dev/null
+++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Volo.Abp.TenantManagement.Blazor.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.blazor"
+}
\ No newline at end of file
diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo.Abp.TenantManagement.Domain.Shared.abppkg.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo.Abp.TenantManagement.Domain.Shared.abppkg.json
new file mode 100644
index 0000000000..8b3de05f76
--- /dev/null
+++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo.Abp.TenantManagement.Domain.Shared.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.domain-shared"
+}
\ No newline at end of file
diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain/Volo.Abp.TenantManagement.Domain.abppkg.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain/Volo.Abp.TenantManagement.Domain.abppkg.json
new file mode 100644
index 0000000000..1d574efe45
--- /dev/null
+++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain/Volo.Abp.TenantManagement.Domain.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.domain"
+}
\ No newline at end of file
diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.EntityFrameworkCore/Volo.Abp.TenantManagement.EntityFrameworkCore.abppkg.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.EntityFrameworkCore/Volo.Abp.TenantManagement.EntityFrameworkCore.abppkg.json
new file mode 100644
index 0000000000..e1c64f0175
--- /dev/null
+++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.EntityFrameworkCore/Volo.Abp.TenantManagement.EntityFrameworkCore.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.ef"
+}
\ No newline at end of file
diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi.Client/Volo.Abp.TenantManagement.HttpApi.Client.abppkg.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi.Client/Volo.Abp.TenantManagement.HttpApi.Client.abppkg.json
new file mode 100644
index 0000000000..7deef5e383
--- /dev/null
+++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi.Client/Volo.Abp.TenantManagement.HttpApi.Client.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.http-api-client"
+}
\ No newline at end of file
diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi/Volo.Abp.TenantManagement.HttpApi.abppkg.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi/Volo.Abp.TenantManagement.HttpApi.abppkg.json
new file mode 100644
index 0000000000..515bfe64c4
--- /dev/null
+++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi/Volo.Abp.TenantManagement.HttpApi.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.http-api"
+}
\ No newline at end of file
diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/FodyWeavers.xml b/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/FodyWeavers.xml
new file mode 100644
index 0000000000..00e1d9a1c1
--- /dev/null
+++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/FodyWeavers.xsd b/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/FodyWeavers.xsd
new file mode 100644
index 0000000000..3f3946e282
--- /dev/null
+++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/FodyWeavers.xsd
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.
+
+
+
+
+ A comma-separated list of error codes that can be safely ignored in assembly verification.
+
+
+
+
+ 'false' to turn off automatic generation of the XML Schema file.
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/Volo.Abp.TenantManagement.Installer.csproj b/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/Volo.Abp.TenantManagement.Installer.csproj
new file mode 100644
index 0000000000..13fa3e195f
--- /dev/null
+++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/Volo.Abp.TenantManagement.Installer.csproj
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+ net5.0
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/Volo/Abp/TenantManagement/AbpTenantManagementInstallerModule.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/Volo/Abp/TenantManagement/AbpTenantManagementInstallerModule.cs
new file mode 100644
index 0000000000..7a0f5f66f2
--- /dev/null
+++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/Volo/Abp/TenantManagement/AbpTenantManagementInstallerModule.cs
@@ -0,0 +1,21 @@
+using Volo.Abp.Modularity;
+using Volo.Abp.Studio;
+using Volo.Abp.VirtualFileSystem;
+
+namespace Volo.Abp.TenantManagement
+{
+ [DependsOn(
+ typeof(AbpStudioModuleInstallerModule),
+ typeof(AbpVirtualFileSystemModule)
+ )]
+ public class AbpTenantManagementInstallerModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ Configure(options =>
+ {
+ options.FileSets.AddEmbedded();
+ });
+ }
+ }
+}
diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/Volo/Abp/TenantManagement/TenantManagementInstallerPipelineBuilder.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/Volo/Abp/TenantManagement/TenantManagementInstallerPipelineBuilder.cs
new file mode 100644
index 0000000000..02a3449a7b
--- /dev/null
+++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Installer/Volo/Abp/TenantManagement/TenantManagementInstallerPipelineBuilder.cs
@@ -0,0 +1,24 @@
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Studio.ModuleInstalling;
+
+namespace Volo.Abp.TenantManagement
+{
+ [Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
+ [ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
+ public class AuditLoggingInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
+ {
+ public async Task BuildAsync(ModuleInstallingContext context)
+ {
+ context.AddEfCoreConfigurationMethodDeclaration(
+ new EfCoreConfigurationMethodDeclaration(
+ "Volo.Abp.TenantManagement.EntityFrameworkCore",
+ "ConfigureTenantManagement"
+ )
+ );
+
+ return GetBasePipeline(context);
+ }
+ }
+}
diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.MongoDB/Volo.Abp.TenantManagement.MongoDB.abppkg.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.MongoDB/Volo.Abp.TenantManagement.MongoDB.abppkg.json
new file mode 100644
index 0000000000..8b23fd1e69
--- /dev/null
+++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.MongoDB/Volo.Abp.TenantManagement.MongoDB.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.mongodb"
+}
\ No newline at end of file
diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Index.js b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Index.js
index 9f61ffdcfc..e990b8fc37 100644
--- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Index.js
+++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Index.js
@@ -57,6 +57,7 @@
.delete(data.record.id)
.then(function () {
_dataTable.ajax.reload();
+ abp.notify.success(l('SuccessfullyDeleted'));
});
},
}
diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Volo.Abp.TenantManagement.Web.abppkg.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Volo.Abp.TenantManagement.Web.abppkg.json
new file mode 100644
index 0000000000..930c4018b3
--- /dev/null
+++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Volo.Abp.TenantManagement.Web.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.mvc"
+}
\ No newline at end of file
diff --git a/modules/tenant-management/test/Volo.Abp.TenantManagement.Application.Tests/Volo.Abp.TenantManagement.Application.Tests.abppkg.json b/modules/tenant-management/test/Volo.Abp.TenantManagement.Application.Tests/Volo.Abp.TenantManagement.Application.Tests.abppkg.json
new file mode 100644
index 0000000000..a686451fbc
--- /dev/null
+++ b/modules/tenant-management/test/Volo.Abp.TenantManagement.Application.Tests/Volo.Abp.TenantManagement.Application.Tests.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.test"
+}
\ No newline at end of file
diff --git a/modules/tenant-management/test/Volo.Abp.TenantManagement.Domain.Tests/Volo.Abp.TenantManagement.Domain.Tests.abppkg.json b/modules/tenant-management/test/Volo.Abp.TenantManagement.Domain.Tests/Volo.Abp.TenantManagement.Domain.Tests.abppkg.json
new file mode 100644
index 0000000000..a686451fbc
--- /dev/null
+++ b/modules/tenant-management/test/Volo.Abp.TenantManagement.Domain.Tests/Volo.Abp.TenantManagement.Domain.Tests.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.test"
+}
\ No newline at end of file
diff --git a/modules/tenant-management/test/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests.abppkg.json b/modules/tenant-management/test/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests.abppkg.json
new file mode 100644
index 0000000000..a686451fbc
--- /dev/null
+++ b/modules/tenant-management/test/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests/Volo.Abp.TenantManagement.EntityFrameworkCore.Tests.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.test"
+}
\ No newline at end of file
diff --git a/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo.Abp.TenantManagement.MongoDB.Tests.abppkg.json b/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo.Abp.TenantManagement.MongoDB.Tests.abppkg.json
new file mode 100644
index 0000000000..a686451fbc
--- /dev/null
+++ b/modules/tenant-management/test/Volo.Abp.TenantManagement.MongoDB.Tests/Volo.Abp.TenantManagement.MongoDB.Tests.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.test"
+}
\ No newline at end of file
diff --git a/modules/tenant-management/test/Volo.Abp.TenantManagement.TestBase/Volo.Abp.TenantManagement.TestBase.abppkg.json b/modules/tenant-management/test/Volo.Abp.TenantManagement.TestBase/Volo.Abp.TenantManagement.TestBase.abppkg.json
new file mode 100644
index 0000000000..9e26dfeeb6
--- /dev/null
+++ b/modules/tenant-management/test/Volo.Abp.TenantManagement.TestBase/Volo.Abp.TenantManagement.TestBase.abppkg.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/modules/users/Volo.Abp.Users.sln b/modules/users/Volo.Abp.Users.sln
index 6fb2387f16..d09f18a406 100644
--- a/modules/users/Volo.Abp.Users.sln
+++ b/modules/users/Volo.Abp.Users.sln
@@ -15,6 +15,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Users.Abstractions
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Users.MongoDB", "src\Volo.Abp.Users.MongoDB\Volo.Abp.Users.MongoDB.csproj", "{70E89492-7D4E-418A-835F-35E70282E808}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Users.Installer", "src\Volo.Abp.Users.Installer\Volo.Abp.Users.Installer.csproj", "{561CE9B2-B9B7-43F0-9BBF-8918A8D749D7}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -41,6 +43,10 @@ Global
{70E89492-7D4E-418A-835F-35E70282E808}.Debug|Any CPU.Build.0 = Debug|Any CPU
{70E89492-7D4E-418A-835F-35E70282E808}.Release|Any CPU.ActiveCfg = Release|Any CPU
{70E89492-7D4E-418A-835F-35E70282E808}.Release|Any CPU.Build.0 = Release|Any CPU
+ {561CE9B2-B9B7-43F0-9BBF-8918A8D749D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {561CE9B2-B9B7-43F0-9BBF-8918A8D749D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {561CE9B2-B9B7-43F0-9BBF-8918A8D749D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {561CE9B2-B9B7-43F0-9BBF-8918A8D749D7}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -51,6 +57,7 @@ Global
{C18FFD6A-0BE2-4FB8-B953-895F7B9CB374} = {6DE713B1-3AD7-4388-8B07-CCBE7158EC6E}
{3905D0E9-448D-43DE-8884-C60D0612AA04} = {6DE713B1-3AD7-4388-8B07-CCBE7158EC6E}
{70E89492-7D4E-418A-835F-35E70282E808} = {6DE713B1-3AD7-4388-8B07-CCBE7158EC6E}
+ {561CE9B2-B9B7-43F0-9BBF-8918A8D749D7} = {6DE713B1-3AD7-4388-8B07-CCBE7158EC6E}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {E18777C8-72AB-4C08-BA72-885650BE70A9}
diff --git a/modules/users/src/Volo.Abp.Users.Installer/FodyWeavers.xml b/modules/users/src/Volo.Abp.Users.Installer/FodyWeavers.xml
new file mode 100644
index 0000000000..00e1d9a1c1
--- /dev/null
+++ b/modules/users/src/Volo.Abp.Users.Installer/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/modules/users/src/Volo.Abp.Users.Installer/FodyWeavers.xsd b/modules/users/src/Volo.Abp.Users.Installer/FodyWeavers.xsd
new file mode 100644
index 0000000000..3f3946e282
--- /dev/null
+++ b/modules/users/src/Volo.Abp.Users.Installer/FodyWeavers.xsd
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.
+
+
+
+
+ A comma-separated list of error codes that can be safely ignored in assembly verification.
+
+
+
+
+ 'false' to turn off automatic generation of the XML Schema file.
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/users/src/Volo.Abp.Users.Installer/Volo.Abp.Users.Installer.csproj b/modules/users/src/Volo.Abp.Users.Installer/Volo.Abp.Users.Installer.csproj
new file mode 100644
index 0000000000..e39f1e5b6e
--- /dev/null
+++ b/modules/users/src/Volo.Abp.Users.Installer/Volo.Abp.Users.Installer.csproj
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+ net5.0
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/users/src/Volo.Abp.Users.Installer/Volo/Abp/Users/AbpUsersInstallerModule.cs b/modules/users/src/Volo.Abp.Users.Installer/Volo/Abp/Users/AbpUsersInstallerModule.cs
new file mode 100644
index 0000000000..bd9f0800a1
--- /dev/null
+++ b/modules/users/src/Volo.Abp.Users.Installer/Volo/Abp/Users/AbpUsersInstallerModule.cs
@@ -0,0 +1,21 @@
+using Volo.Abp.Modularity;
+using Volo.Abp.Studio;
+using Volo.Abp.VirtualFileSystem;
+
+namespace Volo.Abp.Users
+{
+ [DependsOn(
+ typeof(AbpStudioModuleInstallerModule),
+ typeof(AbpVirtualFileSystemModule)
+ )]
+ public class AbpUsersInstallerModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ Configure(options =>
+ {
+ options.FileSets.AddEmbedded();
+ });
+ }
+ }
+}
diff --git a/modules/users/src/Volo.Abp.Users.Installer/Volo/Abp/Users/UsersInstallerPipelineBuilder.cs b/modules/users/src/Volo.Abp.Users.Installer/Volo/Abp/Users/UsersInstallerPipelineBuilder.cs
new file mode 100644
index 0000000000..f5e71b8860
--- /dev/null
+++ b/modules/users/src/Volo.Abp.Users.Installer/Volo/Abp/Users/UsersInstallerPipelineBuilder.cs
@@ -0,0 +1,24 @@
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Studio.ModuleInstalling;
+
+namespace Volo.Abp.Users
+{
+ [Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
+ [ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
+ public class UsersInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
+ {
+ public async Task BuildAsync(ModuleInstallingContext context)
+ {
+ context.AddEfCoreConfigurationMethodDeclaration(
+ new EfCoreConfigurationMethodDeclaration(
+ "Volo.Abp.Users.EntityFrameworkCore",
+ "ConfigureAbpUser"
+ )
+ );
+
+ return GetBasePipeline(context);
+ }
+ }
+}
diff --git a/modules/virtual-file-explorer/Volo.Abp.VirtualFileExplorer.abpmdl.json b/modules/virtual-file-explorer/Volo.Abp.VirtualFileExplorer.abpmdl.json
new file mode 100644
index 0000000000..dbb8cc5c4e
--- /dev/null
+++ b/modules/virtual-file-explorer/Volo.Abp.VirtualFileExplorer.abpmdl.json
@@ -0,0 +1,18 @@
+{
+ "folders": {
+ "items": {
+ "src": {},
+ "app": {}
+ }
+ },
+ "packages": {
+ "Volo.Abp.VirtualFileExplorer.Web": {
+ "path": "src/Volo.Abp.VirtualFileExplorer.Web/Volo.Abp.VirtualFileExplorer.Web.abppkg.json",
+ "folder": "src"
+ },
+ "Volo.Abp.VirtualFileExplorer.DemoApp": {
+ "path": "app/Volo.Abp.VirtualFileExplorer.DemoApp/Volo.Abp.VirtualFileExplorer.DemoApp.abppkg.json",
+ "folder": "app"
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/virtual-file-explorer/Volo.Abp.VirtualFileExplorer.abpsln.json b/modules/virtual-file-explorer/Volo.Abp.VirtualFileExplorer.abpsln.json
new file mode 100644
index 0000000000..c163e92950
--- /dev/null
+++ b/modules/virtual-file-explorer/Volo.Abp.VirtualFileExplorer.abpsln.json
@@ -0,0 +1,7 @@
+{
+ "modules": {
+ "Volo.Abp.VirtualFileExplorer": {
+ "path": "Volo.Abp.VirtualFileExplorer.abpmdl.json"
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/virtual-file-explorer/Volo.Abp.VirtualFileExplorer.sln b/modules/virtual-file-explorer/Volo.Abp.VirtualFileExplorer.sln
index 240117b5b7..67b9741932 100644
--- a/modules/virtual-file-explorer/Volo.Abp.VirtualFileExplorer.sln
+++ b/modules/virtual-file-explorer/Volo.Abp.VirtualFileExplorer.sln
@@ -11,6 +11,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "app", "app", "{0489DA85-A27
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.VirtualFileExplorer.DemoApp", "app\Volo.Abp.VirtualFileExplorer.DemoApp\Volo.Abp.VirtualFileExplorer.DemoApp.csproj", "{6DAA2A8D-5422-4C3B-BA70-B54D949B1678}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.VirtualFileExplorer.Installer", "src\Volo.Abp.VirtualFileExplorer.Installer\Volo.Abp.VirtualFileExplorer.Installer.csproj", "{638DDC11-0B86-4B5D-A518-4A8158665074}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -25,6 +27,10 @@ Global
{6DAA2A8D-5422-4C3B-BA70-B54D949B1678}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6DAA2A8D-5422-4C3B-BA70-B54D949B1678}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6DAA2A8D-5422-4C3B-BA70-B54D949B1678}.Release|Any CPU.Build.0 = Release|Any CPU
+ {638DDC11-0B86-4B5D-A518-4A8158665074}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {638DDC11-0B86-4B5D-A518-4A8158665074}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {638DDC11-0B86-4B5D-A518-4A8158665074}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {638DDC11-0B86-4B5D-A518-4A8158665074}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -32,6 +38,7 @@ Global
GlobalSection(NestedProjects) = preSolution
{3B7B6317-1B85-4164-8E11-75574F80AE17} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
{6DAA2A8D-5422-4C3B-BA70-B54D949B1678} = {0489DA85-A27F-4D98-9DBD-950F5F2ECD11}
+ {638DDC11-0B86-4B5D-A518-4A8158665074} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4324B3B4-B60B-4E3C-91D8-59576B4E26DD}
diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/Volo.Abp.VirtualFileExplorer.DemoApp.abppkg.json b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/Volo.Abp.VirtualFileExplorer.DemoApp.abppkg.json
new file mode 100644
index 0000000000..9e26dfeeb6
--- /dev/null
+++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/Volo.Abp.VirtualFileExplorer.DemoApp.abppkg.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json
index 87ad005393..fefd37b3d6 100644
--- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json
+++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/package.json
@@ -3,7 +3,7 @@
"version": "1.0.0",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.1",
- "@abp/virtual-file-explorer": "^5.0.0-beta.1"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.2",
+ "@abp/virtual-file-explorer": "^5.0.0-beta.2"
}
}
diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
index 1fee6e798d..d7b5d2d9c4 100644
--- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
+++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
@@ -1,4 +1,6 @@
/*
https://select2.org/troubleshooting/common-problems
*/
-$.fn.modal.Constructor.prototype._enforceFocus = function () { };
\ No newline at end of file
+if ($.fn.modal) {
+ $.fn.modal.Constructor.prototype._enforceFocus = function () { };
+}
diff --git a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/yarn.lock b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/yarn.lock
index 61f7f3e3f2..45daa8fd37 100644
--- a/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/yarn.lock
+++ b/modules/virtual-file-explorer/app/Volo.Abp.VirtualFileExplorer.DemoApp/yarn.lock
@@ -2,37 +2,37 @@
# yarn lockfile v1
-"@abp/aspnetcore.mvc.ui.theme.basic@^5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.0-beta.1.tgz#2c78c2bd977a67f6c2ed77cfcd404cf9533eaaae"
- integrity sha512-b8Boztxd5NbaDlXQvgHXHtw8ZNgM4tEgo14kw/bN3mcLx05fWLGd8Lzfdi7i+Ju6U3rKbgi+0MSbga93A0KSmg==
- dependencies:
- "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.1"
-
-"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.1.tgz#25596652bb3f7b6bac5bbd966a731144cd9646c6"
- integrity sha512-N4SHu6rn8alK4jdve00IscngrfvqJNEjrwQclXNmP9c4NtPuVM9emZdxBzKF8jFb6Hz8HiwM9H3xV/SjKCS/7A==
- dependencies:
- "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.1"
- "@abp/bootstrap" "~5.0.0-beta.1"
- "@abp/bootstrap-datepicker" "~5.0.0-beta.1"
- "@abp/datatables.net-bs4" "~5.0.0-beta.1"
- "@abp/font-awesome" "~5.0.0-beta.1"
- "@abp/jquery-form" "~5.0.0-beta.1"
- "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.1"
- "@abp/lodash" "~5.0.0-beta.1"
- "@abp/luxon" "~5.0.0-beta.1"
- "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.1"
- "@abp/select2" "~5.0.0-beta.1"
- "@abp/sweetalert2" "~5.0.0-beta.1"
- "@abp/timeago" "~5.0.0-beta.1"
- "@abp/toastr" "~5.0.0-beta.1"
-
-"@abp/aspnetcore.mvc.ui@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.1.tgz#30c14386899596bf91e8871810dbaa1a0e51e996"
- integrity sha512-pabiGHghC62eg95RfAncEt0+yGdBxdMmyqCXV+Be4JjaMz/hGZIDOPIYnaqCayZtyMmIRqG6IAwi99DqBjkQAQ==
+"@abp/aspnetcore.mvc.ui.theme.basic@^5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-5.0.0-beta.2.tgz#077d1edd88f2f1ccb5c8227180a75e3121eece19"
+ integrity sha512-b7f05Fza18NYHudrHosYuCX/UJ/Y3KYJrJMHqdvAsZYu0t3dc7EMWKYTDA/+rDEO8iV/83twRYfHLf0tmVyc1Q==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui.theme.shared" "~5.0.0-beta.2"
+
+"@abp/aspnetcore.mvc.ui.theme.shared@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-5.0.0-beta.2.tgz#8c58d252f1a39f91c2c287b91691e5bd772f4918"
+ integrity sha512-l4suGM7PjGTw/MEg2f2BdbRXYzALhZQUSijzKIQTy5dwcA/JQPsLbezPzGy45fD3lXsYxBwS4QaOmofTosKkug==
+ dependencies:
+ "@abp/aspnetcore.mvc.ui" "~5.0.0-beta.2"
+ "@abp/bootstrap" "~5.0.0-beta.2"
+ "@abp/bootstrap-datepicker" "~5.0.0-beta.2"
+ "@abp/datatables.net-bs4" "~5.0.0-beta.2"
+ "@abp/font-awesome" "~5.0.0-beta.2"
+ "@abp/jquery-form" "~5.0.0-beta.2"
+ "@abp/jquery-validation-unobtrusive" "~5.0.0-beta.2"
+ "@abp/lodash" "~5.0.0-beta.2"
+ "@abp/luxon" "~5.0.0-beta.2"
+ "@abp/malihu-custom-scrollbar-plugin" "~5.0.0-beta.2"
+ "@abp/select2" "~5.0.0-beta.2"
+ "@abp/sweetalert2" "~5.0.0-beta.2"
+ "@abp/timeago" "~5.0.0-beta.2"
+ "@abp/toastr" "~5.0.0-beta.2"
+
+"@abp/aspnetcore.mvc.ui@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-5.0.0-beta.2.tgz#c30d9905e133451208e379f7173ed9c44dd5f487"
+ integrity sha512-8Dzfg5SzeVoXz/nY11o2u3y7ZQdUW/zVSYVTgbsCMC1HCe2yzptpr2XI0Goz8jQKgz0G+zg3iwfeur7vNoaoMw==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@@ -41,172 +41,172 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
-"@abp/bootstrap-datepicker@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.1.tgz#727e0f7305a94c95ece152ffff011bcff621f46d"
- integrity sha512-txhdlJqyO2D9MkGLYgrsiDaC58cb2eCpk2uxoqqQeVWvuRPo/L+9rCBk+bu6J37FGJtU8aabtHJyR5xnYbv0TQ==
+"@abp/bootstrap-datepicker@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-5.0.0-beta.2.tgz#dbf92485225a424f0e53e55c3ef8c993943682f0"
+ integrity sha512-jJWVKrkKcUMEqwBrEqhGD1zDFD8b0b3j0WdlzKuzlw26AaQkfE4LQ9Gjfjs+RnTW1LxPn8rGP8QCgdVeWMNjQQ==
dependencies:
bootstrap-datepicker "^1.9.0"
-"@abp/bootstrap@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.1.tgz#075a15459ff8e3896b6553786e6c8f091c6ffcad"
- integrity sha512-W8z6qSAsRoXmG0++xH6Bk1oRc90hFqVcjKI+5XgBQhUUCn2qBruBYOKFxPg2GeT2f1k9K5TrCEnnVrh0sOP9/A==
+"@abp/bootstrap@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-5.0.0-beta.2.tgz#0faaa85871fd23076dd597dce83dc3020b1ff950"
+ integrity sha512-zy0DUcAJuX+Oeu4csw7XbyLGq/YdfonMLJt/Mkpq8CjAssD7n7aJK6PwG+akaI4giSQd7Sc1JvvnKRMRzyxy1Q==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
bootstrap "^4.6.0"
bootstrap-v4-rtl "4.6.0-1"
-"@abp/clipboard@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-5.0.0-beta.1.tgz#7c46ffe185116b1d3e43ef389df9dae2b98dd0c9"
- integrity sha512-Gsr8qZNhxoH7uH+Kd0Q7qrQdGAjU20r65zjBI7iUgtpP/18obm87SUZLPDobZLAf+UB/Wl9VnxvedyLYDnuQGQ==
+"@abp/clipboard@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-5.0.0-beta.2.tgz#a7c7cbb090a5fad8744d6de48b9aa0deeda60d0f"
+ integrity sha512-rhJkXD3/6z5lXmN39uhXavMSSue+/D9h2SXs3HaBMzgAIJUI/qHPrHOAOMUdXT/jKiO+EQtLzLH8V/5nJtvIZQ==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
clipboard "^2.0.6"
-"@abp/core@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.1.tgz#6cff06b13529ab9d7a6ddc4e89dc40616e6b7739"
- integrity sha512-TK1CnurJIK/SXfsNTk6HSpxdaJgVxwvqNd4F3fxCC0Uj8s5viD3TAGk39Hkp4909WGfNrRq8BEUNvTYM/rP6gg==
+"@abp/core@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/core/-/core-5.0.0-beta.2.tgz#f9643d21b19128be3ad58b23083e1fc9620f2102"
+ integrity sha512-AHlJQF5NC+yNsj5xILHk1CF++Z93aQDNp0zdJciDqIexH9lEJ+AQCX2EKLn0yjWt4Ga00pOOmQM5vJVJjuJCEw==
dependencies:
- "@abp/utils" "^5.0.0-beta.1"
+ "@abp/utils" "^5.0.0-beta.2"
-"@abp/datatables.net-bs4@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.1.tgz#110d7d8cf1c15db7432d8f0649f4317ba8de10dd"
- integrity sha512-CPodZP9pqLdwnFZ77/mcSfuhyK1WMi/c+9VWpGXFQSGaABNKPP2UIdAChwUcBRdGkZRa/IhXx3CCr1ZMLpJsMQ==
+"@abp/datatables.net-bs4@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-5.0.0-beta.2.tgz#3afb32918f59b55c68d3d37b2c1f0bf49bb06fc8"
+ integrity sha512-t6YserKkBId7KnT46uYaGw6HJrf8tcLp4bJmGyUSnCwVlgJcha/P6fr3pKWqFz9QPGk5riCZF3hK6x1BH9u71g==
dependencies:
- "@abp/datatables.net" "~5.0.0-beta.1"
+ "@abp/datatables.net" "~5.0.0-beta.2"
datatables.net-bs4 "^1.10.21"
-"@abp/datatables.net@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.1.tgz#8e784a011d33de154554f3239c448fcfd8adb713"
- integrity sha512-mRMYqTCoYLmDLvL+CvmwUS4JqCqdkn6mxHd7zgkaR04xlGLEmNae5aGbs1wURJ86MOWrHbfkx66lQjkul3zbQw==
+"@abp/datatables.net@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-5.0.0-beta.2.tgz#fc87be76ebec94b16c6734c2249ea8a0a04a83b8"
+ integrity sha512-aEAlej1wNtxsxpwlw2GFOV0tFSZ7MWA+Wpfi5QZ4VIbYHSIkhEnz0apiNMBsoB8i7VJLJKZuKvynlJWYABNk0Q==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
datatables.net "^1.10.21"
-"@abp/font-awesome@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.1.tgz#3ae721c447a009601226c381a20dc4adabe154e1"
- integrity sha512-fsMqwApogZ1rAogStQxBX/Nh8akXPW/Alm8UayfK6TXIkPPjBz5RQSHfdlosG7M/U3mwUNGcLlaDvQXsE/nqow==
+"@abp/font-awesome@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-5.0.0-beta.2.tgz#10a920fb20294f7ccd404ea2b302fb11f68f0705"
+ integrity sha512-Mmhfm7g5HdflvqbZOZDKk335IlY8ipwtKsCQ1qRaobsMpWi2AFh6/P/XX7y4H5p0wH5cluUsSzS1QB37QXp36w==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
"@fortawesome/fontawesome-free" "^5.13.0"
-"@abp/jquery-form@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.1.tgz#d13f4cffce48125547b9da57cfc407f9a35a89e6"
- integrity sha512-RYE90XIDxWkvxO5ukuZ2PHk6aA/o7NQKLcR9WsN1G2xTU/frrNPgtruGRTIj7Nx3BPUeMp7EAN2rYZwglcnO5g==
+"@abp/jquery-form@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-5.0.0-beta.2.tgz#4b685858d54eafac123995ebfea759c769e49cab"
+ integrity sha512-ekytRAvAUNKJAPiR5i7kxASh5j3D5jabO1GHbPwq6UzapGLMzG5r8s6/1b4eX+4Zorfy+TmERNeUsWvQwf3P1A==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
jquery-form "^4.3.0"
-"@abp/jquery-validation-unobtrusive@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.1.tgz#93ff6ee92bccdde77816bfb434e967fd142f6b83"
- integrity sha512-LZE1KIALGBCINdWrHzoGczekUFtKwbXbLIgb4ZgiipO5Xja7py/iVvts10QWqUzhnBk+kmbHbj+KnjdqP4Z8pQ==
+"@abp/jquery-validation-unobtrusive@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-5.0.0-beta.2.tgz#392ab72716baea26e6f560e2369d09f8c5488d3b"
+ integrity sha512-PyiWj0hj5jkjcZ1oJeLXYuoVCIAg51X4y6iLbcb1SpAbqYQP23gilDJK8xkURbysGPMiDq+7tOiKAnGiHSBnWA==
dependencies:
- "@abp/jquery-validation" "~5.0.0-beta.1"
+ "@abp/jquery-validation" "~5.0.0-beta.2"
jquery-validation-unobtrusive "^3.2.11"
-"@abp/jquery-validation@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.1.tgz#2964ca1266b087e4c4c0e768bfc4bfe0284e4ff5"
- integrity sha512-ZDNdkPy2ZNu0EYDNH20Oh9R3bICCYv9CbEj4zZ8Qavixo9VTkybY3BW0nYjcu1yb1P92gZPp80W8vyfxSo//kw==
+"@abp/jquery-validation@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-5.0.0-beta.2.tgz#233eda5998ae566daeb945d8508999da2ef75a51"
+ integrity sha512-jKY0yfRgM5RGlJeQCGKkkczx5qptpPkhqWr4x+ffTUzR+ywF9FHUB5zcbELpEyWuOJ9cilap2hga2lvPZ8c+Pg==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
jquery-validation "^1.19.2"
-"@abp/jquery@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.1.tgz#360e7a164b6b4ce615a5ad91a1c78ef6893648f3"
- integrity sha512-v2t+76L45tlbpGeVR39GurZl60Rj1pR/TdUidpP6zwnpx1Y3I+CvlJNDwTESeE/ixTOT3PyFbXoMEi6hI+v39A==
+"@abp/jquery@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-5.0.0-beta.2.tgz#62fa64fcc0bd5dca4b5e7534b24205a3f0461f08"
+ integrity sha512-tMzjo9qQAgJDYPvLk67YNlnOOUSTUfPWodlqfl5vvo6/NHSsB9eJhXH28txEtygX0o/Mepi9Ag87dL9VLh0DEw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
jquery "~3.6.0"
-"@abp/lodash@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.1.tgz#618797bde42b17f91d7f99fdd5f24cb5e8a361b3"
- integrity sha512-WsUjzHRZ6RkSMd5PTw0oWijDbbq/Wgonv8++ufUZi1WK5spZi9ohjcYM4io3Ms3fG+g4pWznaicYraMpV5tcsQ==
+"@abp/lodash@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-5.0.0-beta.2.tgz#c821eb502de3211f94ca2f7ba8a5c0b0677c5c9b"
+ integrity sha512-lW8lz1JG8kweVOWVCB7jC6xxLUE0G6MJfwv4g0+eKwFLgsAO5dK6Yk4xZi+UXgST73OgGt5LIQJcS4+aCo/zmg==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
lodash "^4.17.15"
-"@abp/luxon@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.1.tgz#fc81fcbfb592d3baf7b9856b3cecf5b86df4bfdf"
- integrity sha512-t4lhJ/wr1rAVH1/bnzmc8niZYvolTuXUB0h6A6UYaw205QyNtimzusYkTwkc+Z3xHFUrkLCoG7J2SVoCJuioaA==
+"@abp/luxon@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-5.0.0-beta.2.tgz#64c68c3091415153c8c470fb3e5650bbc00500d1"
+ integrity sha512-0mSVsycWEo5hamEuR7Mqw00JnVRlhQvpy8Bks58d7bRksIQzK8iPx9advTbP2ICF3iz9zHT9MJrMXYfvUT6oIQ==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
luxon "^1.24.1"
-"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.1.tgz#7af43d30af9b1f741fd9d9559d100aa4a5c52ae9"
- integrity sha512-B195PC4/75W0EXjGEQUd/ZARb/eGWj8DX7hq3K+J+lUWzWu46dZy8s5bBij78HqxS91/q6nbxU35Z+E9xl6ICg==
+"@abp/malihu-custom-scrollbar-plugin@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-5.0.0-beta.2.tgz#6c030cfe1e123be0a81f769dedd6a6b22aed9077"
+ integrity sha512-ZEkCMMDKe26b/sCArQjDOGEm8+lQB9Uis17FNyHDt/vA+FdtaPJjeLOqmfzMeLQYppvefH+JCpGzfaWwCNZmcw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
malihu-custom-scrollbar-plugin "^3.1.5"
-"@abp/prismjs@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-5.0.0-beta.1.tgz#a41883c46e2ce67b2b9dcbe1ce85de9b183cfd29"
- integrity sha512-Ps3X6gckZYUnWcmBPnXCa1LIh8HnQYxDD0WPppbEsp1VFN49T3yNO4G5jFVRxomFi5km8AluJW2zYk3Kh/4OSw==
+"@abp/prismjs@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-5.0.0-beta.2.tgz#d00876d3d0768305a3c7d3c178488352ce88df5d"
+ integrity sha512-PFSrnoPrl+4w9XyCwe4F3N+Qg/ekXWeUkX0Zwh+0oR8pxQlbJC6aiCRDhCsmui+dEU/0vYpkKHXq46iDHQnjxQ==
dependencies:
- "@abp/clipboard" "~5.0.0-beta.1"
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/clipboard" "~5.0.0-beta.2"
+ "@abp/core" "~5.0.0-beta.2"
prismjs "^1.20.0"
-"@abp/select2@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.1.tgz#15988165fcfed2ebc2b8d097965e2dc1984af35e"
- integrity sha512-SF+NkWDJNz1EeEimW5luaCMPTNN1oPzEWs47usPJo8m7HfijEvF3rymJ8jL5zWIOo05Tx3HUurLSVz0qu4vZsw==
+"@abp/select2@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-5.0.0-beta.2.tgz#f5e74d56ccdabde61825453044f31fa183573b58"
+ integrity sha512-ApL7ioC4p5GguQM2KfnqtGrJ9TqBRiQh1v+y1J2Z3Lh18SJU+tsA3f9Va9ZyZNIFrpV3Bsmim2cIu7bjm7IBRw==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
select2 "^4.0.13"
-"@abp/sweetalert2@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.1.tgz#c6a1185f39d3207f67753e7c486eddcefc7fd0da"
- integrity sha512-ADotpiMkIzHLy/ufK0q49V9hgF8oKE0rLRzVZV2dHBpmFR7YRcPdbb5AN9CiXDk6ol8nsocEEAwRmgD3eJG63w==
+"@abp/sweetalert2@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-5.0.0-beta.2.tgz#164c1df63c2859fa5277673906f85cc8e7e2d1ef"
+ integrity sha512-UdENhKcfywOorjTf4+CxDO8UUet9lYAIDH2r+Kd1qjFKIDDu6w3TfJ7Gz108VG84+RsUevfVLgZ8qeYsA+drKQ==
dependencies:
- "@abp/core" "~5.0.0-beta.1"
+ "@abp/core" "~5.0.0-beta.2"
sweetalert2 "^11.0.18"
-"@abp/timeago@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.1.tgz#0f7bb8cd85b7e90d7d5c0a0940b9102e3f4f1e42"
- integrity sha512-QwYZyeDRW+X8BGecBcK1SgsClVWNYfPgvct+WkQhTIRxzbP/c1c+1irj69sNdN3df2WLnmjfu3sBw2hzz5ykbg==
+"@abp/timeago@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-5.0.0-beta.2.tgz#7a6242e6cc403addf172ebf18ffb3513d4b30f21"
+ integrity sha512-wdXaKd0dBJP0mawzHqE04YWUgpUYzq8vJHGH3QGf9RpB+XpMztt1KNHR6d32VylDAEoPEtB7GH4rVvlimKa48g==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
timeago "^1.6.7"
-"@abp/toastr@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.1.tgz#d420fc5db6b15f6d623d3928bb6913996511937f"
- integrity sha512-82LfDrZQagtv4QLb643VTra4pxleOq5xYwhpOK1Ifop2K5CRgElxKfWvY2EtxdGkpCO2arvkOzjRNbxnecHB2w==
+"@abp/toastr@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-5.0.0-beta.2.tgz#924f5315d3ade6ee41869d8809b625116c5b02f1"
+ integrity sha512-iqmgO/8AwORzYKf/43+Fx/478la0w+g+mrDahzokPlZFv6WUvFL3QSD/fs1mjc2yUOxEuvgprEiEfWoZcrwtNA==
dependencies:
- "@abp/jquery" "~5.0.0-beta.1"
+ "@abp/jquery" "~5.0.0-beta.2"
toastr "^2.1.4"
-"@abp/utils@^5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.1.tgz#e1bf9240738276081c89a67073d9d85205fdf14c"
- integrity sha512-suzKxHUautizxt5XdlJ8ONIaVMcAHrb2dp1kEnXnFRW1ip+7ZQ9/nxJj+GtY1MhHX2yPmlUQP2K8f2upJh9aoA==
+"@abp/utils@^5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.2.tgz#4d120c0f930b943071b4ba27dafedf6c8b730182"
+ integrity sha512-EZV1P+eafVBEHO6B+Ws6iX4xyeg8B6nCPLvpaFC6mStk7SGidh2rAYYWyydyh68Ky8YdbLYQE3oPaIewOhDWTg==
dependencies:
just-compare "^1.3.0"
-"@abp/virtual-file-explorer@^5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/virtual-file-explorer/-/virtual-file-explorer-5.0.0-beta.1.tgz#da32da66a85063292c8571a3b252b1828a22d2b3"
- integrity sha512-8ZEmlvbrqDoKDxJ/ngiJmWdaLMThNoSsC9L/G4gfQ69ekQx0I0feKX3/i7RfR4t1wwjOWJsMmFVejxgaf3yNEA==
+"@abp/virtual-file-explorer@^5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/virtual-file-explorer/-/virtual-file-explorer-5.0.0-beta.2.tgz#150e9eb4d32bd548988497d07f2e6e6faa1856a8"
+ integrity sha512-Q6sAFdWgS52GgjH9wVap/dwvq369vxQR9vRjQeMeCCFaCq8T3kFWkKj/nh2IDwBKyz0pXZVmDSuLHKI35CVFeQ==
dependencies:
- "@abp/clipboard" "~5.0.0-beta.1"
- "@abp/prismjs" "~5.0.0-beta.1"
+ "@abp/clipboard" "~5.0.0-beta.2"
+ "@abp/prismjs" "~5.0.0-beta.2"
"@fortawesome/fontawesome-free@^5.13.0":
version "5.15.1"
diff --git a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/FodyWeavers.xml b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/FodyWeavers.xml
new file mode 100644
index 0000000000..00e1d9a1c1
--- /dev/null
+++ b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/FodyWeavers.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/FodyWeavers.xsd b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/FodyWeavers.xsd
new file mode 100644
index 0000000000..3f3946e282
--- /dev/null
+++ b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/FodyWeavers.xsd
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.
+
+
+
+
+ A comma-separated list of error codes that can be safely ignored in assembly verification.
+
+
+
+
+ 'false' to turn off automatic generation of the XML Schema file.
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo.Abp.VirtualFileExplorer.Installer.csproj b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo.Abp.VirtualFileExplorer.Installer.csproj
new file mode 100644
index 0000000000..6a82e34326
--- /dev/null
+++ b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo.Abp.VirtualFileExplorer.Installer.csproj
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+ net5.0
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo/Abp/VirtualFileExplorer/AbpVirtualFileExplorerInstallerModule.cs b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo/Abp/VirtualFileExplorer/AbpVirtualFileExplorerInstallerModule.cs
new file mode 100644
index 0000000000..f2e0f800a5
--- /dev/null
+++ b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo/Abp/VirtualFileExplorer/AbpVirtualFileExplorerInstallerModule.cs
@@ -0,0 +1,21 @@
+using Volo.Abp.Modularity;
+using Volo.Abp.Studio;
+using Volo.Abp.VirtualFileSystem;
+
+namespace Volo.Abp.VirtualFileExplorer
+{
+ [DependsOn(
+ typeof(AbpStudioModuleInstallerModule),
+ typeof(AbpVirtualFileSystemModule)
+ )]
+ public class AbpVirtualFileExplorerInstallerModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ Configure(options =>
+ {
+ options.FileSets.AddEmbedded();
+ });
+ }
+ }
+}
diff --git a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo/Abp/VirtualFileExplorer/VirtualFileExplorerInstallerPipelineBuilder.cs b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo/Abp/VirtualFileExplorer/VirtualFileExplorerInstallerPipelineBuilder.cs
new file mode 100644
index 0000000000..fe75a305f7
--- /dev/null
+++ b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer/Volo/Abp/VirtualFileExplorer/VirtualFileExplorerInstallerPipelineBuilder.cs
@@ -0,0 +1,17 @@
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Studio.ModuleInstalling;
+
+namespace Volo.Abp.VirtualFileExplorer
+{
+ [Dependency(ServiceLifetime.Transient, ReplaceServices = true)]
+ [ExposeServices(typeof(IModuleInstallingPipelineBuilder))]
+ public class VirtualFileExplorerInstallerPipelineBuilder : ModuleInstallingPipelineBuilderBase, IModuleInstallingPipelineBuilder, ITransientDependency
+ {
+ public async Task BuildAsync(ModuleInstallingContext context)
+ {
+ return GetBasePipeline(context);
+ }
+ }
+}
diff --git a/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Volo.Abp.VirtualFileExplorer.Web.abppkg.json b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Volo.Abp.VirtualFileExplorer.Web.abppkg.json
new file mode 100644
index 0000000000..930c4018b3
--- /dev/null
+++ b/modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web/Volo.Abp.VirtualFileExplorer.Web.abppkg.json
@@ -0,0 +1,3 @@
+{
+ "role": "lib.mvc"
+}
\ No newline at end of file
diff --git a/npm/lerna.json b/npm/lerna.json
index d87fc55190..ec4a4cf4aa 100644
--- a/npm/lerna.json
+++ b/npm/lerna.json
@@ -1,6 +1,8 @@
{
- "version": "5.0.0-beta.1",
- "packages": ["packs/*"],
+ "version": "5.0.0-beta.2",
+ "packages": [
+ "packs/*"
+ ],
"npmClient": "yarn",
"lerna": "3.18.4"
}
diff --git a/npm/ng-packs/apps/dev-app/src/environments/environment.prod.ts b/npm/ng-packs/apps/dev-app/src/environments/environment.prod.ts
index 70af33346f..9e6d6f63d7 100644
--- a/npm/ng-packs/apps/dev-app/src/environments/environment.prod.ts
+++ b/npm/ng-packs/apps/dev-app/src/environments/environment.prod.ts
@@ -1,4 +1,4 @@
-import { Config } from '@abp/ng.core';
+import { Environment } from '@abp/ng.core';
const baseUrl = 'http://localhost:4200';
@@ -22,4 +22,4 @@ export const environment = {
url: 'https://localhost:44305',
},
},
-} as Config.Environment;
+} as Environment;
diff --git a/npm/ng-packs/lerna.version.json b/npm/ng-packs/lerna.version.json
index 41c18f07e8..0cbdcce37a 100644
--- a/npm/ng-packs/lerna.version.json
+++ b/npm/ng-packs/lerna.version.json
@@ -1,5 +1,7 @@
{
- "version": "5.0.0-beta.1-1",
- "packages": ["packages/*"],
+ "version": "5.0.0-beta.2",
+ "packages": [
+ "packages/*"
+ ],
"npmClient": "yarn"
}
diff --git a/npm/ng-packs/package.json b/npm/ng-packs/package.json
index 9df8ec0892..cec2e47eb4 100644
--- a/npm/ng-packs/package.json
+++ b/npm/ng-packs/package.json
@@ -37,18 +37,18 @@
},
"private": true,
"devDependencies": {
- "@abp/ng.account": "~5.0.0-beta.1",
- "@abp/ng.account.core": "~5.0.0-beta.1",
- "@abp/ng.core": "~5.0.0-beta.1",
- "@abp/ng.feature-management": "~5.0.0-beta.1",
- "@abp/ng.identity": "~5.0.0-beta.1",
- "@abp/ng.permission-management": "~5.0.0-beta.1",
- "@abp/ng.schematics": "~5.0.0-beta.1",
- "@abp/ng.setting-management": "~5.0.0-beta.1",
- "@abp/ng.tenant-management": "~5.0.0-beta.1",
- "@abp/ng.theme.basic": "~5.0.0-beta.1",
- "@abp/ng.theme.shared": "~5.0.0-beta.1",
- "@abp/utils": "~5.0.0-beta.1",
+ "@abp/ng.account": "~5.0.0-beta.2",
+ "@abp/ng.account.core": "~5.0.0-beta.2",
+ "@abp/ng.core": "~5.0.0-beta.2",
+ "@abp/ng.feature-management": "~5.0.0-beta.2",
+ "@abp/ng.identity": "~5.0.0-beta.2",
+ "@abp/ng.permission-management": "~5.0.0-beta.2",
+ "@abp/ng.schematics": "~5.0.0-beta.2",
+ "@abp/ng.setting-management": "~5.0.0-beta.2",
+ "@abp/ng.tenant-management": "~5.0.0-beta.2",
+ "@abp/ng.theme.basic": "~5.0.0-beta.2",
+ "@abp/ng.theme.shared": "~5.0.0-beta.2",
+ "@abp/utils": "~5.0.0-beta.2",
"@angular-devkit/build-angular": "~12.2.0",
"@angular-devkit/build-ng-packagr": "^0.1002.0",
"@angular-devkit/schematics-cli": "~12.2.0",
@@ -115,4 +115,4 @@
"typescript": "~4.3.5",
"zone.js": "~0.11.4"
}
-}
\ No newline at end of file
+}
diff --git a/npm/ng-packs/packages/account-core/package.json b/npm/ng-packs/packages/account-core/package.json
index b04243ed2e..c0ca1e5e75 100644
--- a/npm/ng-packs/packages/account-core/package.json
+++ b/npm/ng-packs/packages/account-core/package.json
@@ -1,14 +1,14 @@
{
"name": "@abp/ng.account.core",
- "version": "5.0.0-beta.1-1",
+ "version": "5.0.0-beta.2",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"peerDependencies": {
- "@abp/ng.core": "~5.0.0-beta.1",
- "@abp/ng.theme.shared": "~5.0.0-beta.1",
+ "@abp/ng.core": "~5.0.0-beta.2",
+ "@abp/ng.theme.shared": "~5.0.0-beta.2",
"@angular/common": ">=12.0.0",
"@angular/core": ">=12.0.0"
},
diff --git a/npm/ng-packs/packages/account/package.json b/npm/ng-packs/packages/account/package.json
index 41aead682c..6ef59001c6 100644
--- a/npm/ng-packs/packages/account/package.json
+++ b/npm/ng-packs/packages/account/package.json
@@ -1,15 +1,15 @@
{
"name": "@abp/ng.account",
- "version": "5.0.0-beta.1-1",
+ "version": "5.0.0-beta.2",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.account.core": "~5.0.0-beta.1-1",
- "@abp/ng.identity": "~5.0.0-beta.1-1",
- "@abp/ng.theme.shared": "~5.0.0-beta.1-1",
+ "@abp/ng.account.core": "~5.0.0-beta.2",
+ "@abp/ng.identity": "~5.0.0-beta.2",
+ "@abp/ng.theme.shared": "~5.0.0-beta.2",
"tslib": "^2.0.0"
},
"publishConfig": {
diff --git a/npm/ng-packs/packages/components/package.json b/npm/ng-packs/packages/components/package.json
index 85ed3e508e..0f82063aa4 100644
--- a/npm/ng-packs/packages/components/package.json
+++ b/npm/ng-packs/packages/components/package.json
@@ -1,14 +1,14 @@
{
"name": "@abp/ng.components",
- "version": "5.0.0-beta.1-1",
+ "version": "5.0.0-beta.2",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"peerDependencies": {
- "@abp/ng.core": ">=5.0.0-beta.1",
- "@abp/ng.theme.shared": ">=5.0.0-beta.1",
+ "@abp/ng.core": ">=5.0.0-beta.1-1",
+ "@abp/ng.theme.shared": ">=5.0.0-beta.1-1",
"@ng-bootstrap/ng-bootstrap": ">=6.0.0"
},
"dependencies": {
diff --git a/npm/ng-packs/packages/core/package.json b/npm/ng-packs/packages/core/package.json
index 801fc51e76..9571c94e7b 100644
--- a/npm/ng-packs/packages/core/package.json
+++ b/npm/ng-packs/packages/core/package.json
@@ -1,13 +1,13 @@
{
"name": "@abp/ng.core",
- "version": "5.0.0-beta.1-1",
+ "version": "5.0.0-beta.2",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/utils": "^5.0.0-beta.1",
+ "@abp/utils": "^5.0.0-beta.2",
"angular-oauth2-oidc": "^12.1.0",
"just-clone": "^3.2.1",
"just-compare": "^1.4.0",
diff --git a/npm/ng-packs/packages/feature-management/package.json b/npm/ng-packs/packages/feature-management/package.json
index f14305fd99..8e16780bfd 100644
--- a/npm/ng-packs/packages/feature-management/package.json
+++ b/npm/ng-packs/packages/feature-management/package.json
@@ -1,13 +1,13 @@
{
"name": "@abp/ng.feature-management",
- "version": "5.0.0-beta.1-1",
+ "version": "5.0.0-beta.2",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.theme.shared": "~5.0.0-beta.1-1",
+ "@abp/ng.theme.shared": "~5.0.0-beta.2",
"tslib": "^2.0.0"
},
"publishConfig": {
diff --git a/npm/ng-packs/packages/identity/package.json b/npm/ng-packs/packages/identity/package.json
index f7790985a1..43e62deec0 100644
--- a/npm/ng-packs/packages/identity/package.json
+++ b/npm/ng-packs/packages/identity/package.json
@@ -1,14 +1,14 @@
{
"name": "@abp/ng.identity",
- "version": "5.0.0-beta.1-1",
+ "version": "5.0.0-beta.2",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.permission-management": "~5.0.0-beta.1-1",
- "@abp/ng.theme.shared": "~5.0.0-beta.1-1",
+ "@abp/ng.permission-management": "~5.0.0-beta.2",
+ "@abp/ng.theme.shared": "~5.0.0-beta.2",
"tslib": "^2.0.0"
},
"publishConfig": {
diff --git a/npm/ng-packs/packages/permission-management/package.json b/npm/ng-packs/packages/permission-management/package.json
index 006603ca5d..51316e7146 100644
--- a/npm/ng-packs/packages/permission-management/package.json
+++ b/npm/ng-packs/packages/permission-management/package.json
@@ -1,13 +1,13 @@
{
"name": "@abp/ng.permission-management",
- "version": "5.0.0-beta.1-1",
+ "version": "5.0.0-beta.2",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.theme.shared": "~5.0.0-beta.1-1",
+ "@abp/ng.theme.shared": "~5.0.0-beta.2",
"tslib": "^2.0.0"
},
"publishConfig": {
diff --git a/npm/ng-packs/packages/schematics/package.json b/npm/ng-packs/packages/schematics/package.json
index c5970684a0..9ca76a332b 100644
--- a/npm/ng-packs/packages/schematics/package.json
+++ b/npm/ng-packs/packages/schematics/package.json
@@ -1,6 +1,6 @@
{
"name": "@abp/ng.schematics",
- "version": "5.0.0-beta.1-1",
+ "version": "5.0.0-beta.2",
"description": "Schematics that works with ABP Backend",
"keywords": [
"schematics"
diff --git a/npm/ng-packs/packages/setting-management/package.json b/npm/ng-packs/packages/setting-management/package.json
index a285a41b35..b80fa8d5b6 100644
--- a/npm/ng-packs/packages/setting-management/package.json
+++ b/npm/ng-packs/packages/setting-management/package.json
@@ -1,14 +1,14 @@
{
"name": "@abp/ng.setting-management",
- "version": "5.0.0-beta.1-1",
+ "version": "5.0.0-beta.2",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.components": "~5.0.0-beta.1-1",
- "@abp/ng.theme.shared": "~5.0.0-beta.1-1",
+ "@abp/ng.components": "~5.0.0-beta.2",
+ "@abp/ng.theme.shared": "~5.0.0-beta.2",
"tslib": "^2.0.0"
},
"publishConfig": {
diff --git a/npm/ng-packs/packages/tenant-management/package.json b/npm/ng-packs/packages/tenant-management/package.json
index 032ed5b981..594bc44970 100644
--- a/npm/ng-packs/packages/tenant-management/package.json
+++ b/npm/ng-packs/packages/tenant-management/package.json
@@ -1,14 +1,14 @@
{
"name": "@abp/ng.tenant-management",
- "version": "5.0.0-beta.1-1",
+ "version": "5.0.0-beta.2",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.feature-management": "~5.0.0-beta.1-1",
- "@abp/ng.theme.shared": "~5.0.0-beta.1-1",
+ "@abp/ng.feature-management": "~5.0.0-beta.2",
+ "@abp/ng.theme.shared": "~5.0.0-beta.2",
"tslib": "^2.0.0"
},
"publishConfig": {
diff --git a/npm/ng-packs/packages/theme-basic/package.json b/npm/ng-packs/packages/theme-basic/package.json
index 2e3b98514c..4584abef81 100644
--- a/npm/ng-packs/packages/theme-basic/package.json
+++ b/npm/ng-packs/packages/theme-basic/package.json
@@ -1,14 +1,14 @@
{
"name": "@abp/ng.theme.basic",
- "version": "5.0.0-beta.1-1",
+ "version": "5.0.0-beta.2",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.account.core": "~5.0.0-beta.1-1",
- "@abp/ng.theme.shared": "~5.0.0-beta.1-1",
+ "@abp/ng.account.core": "~5.0.0-beta.2",
+ "@abp/ng.theme.shared": "~5.0.0-beta.2",
"tslib": "^2.0.0"
},
"publishConfig": {
diff --git a/npm/ng-packs/packages/theme-shared/package.json b/npm/ng-packs/packages/theme-shared/package.json
index 68018298f0..3e79dbc3d1 100644
--- a/npm/ng-packs/packages/theme-shared/package.json
+++ b/npm/ng-packs/packages/theme-shared/package.json
@@ -1,13 +1,13 @@
{
"name": "@abp/ng.theme.shared",
- "version": "5.0.0-beta.1-1",
+ "version": "5.0.0-beta.2",
"homepage": "https://abp.io",
"repository": {
"type": "git",
"url": "https://github.com/abpframework/abp.git"
},
"dependencies": {
- "@abp/ng.core": "~5.0.0-beta.1-1",
+ "@abp/ng.core": "~5.0.0-beta.2",
"@fortawesome/fontawesome-free": "^5.15.4",
"@ng-bootstrap/ng-bootstrap": "^7.0.0",
"@ngx-validate/core": "^0.0.13",
diff --git a/npm/ng-packs/yarn.lock b/npm/ng-packs/yarn.lock
index b108106bef..86797dbd27 100644
--- a/npm/ng-packs/yarn.lock
+++ b/npm/ng-packs/yarn.lock
@@ -2,57 +2,36 @@
# yarn lockfile v1
-"@abp/ng.account.core@~4.4.3":
- version "4.4.3"
- resolved "https://registry.yarnpkg.com/@abp/ng.account.core/-/ng.account.core-4.4.3.tgz#e67100fe158da15c8e63d231f3ec7ec3083b7541"
- integrity sha512-qNdDQ7UnYXaIiDqCsbw9LRXEuw14eXLrcsVrx4MNQHn/mmHX0i8HybRBu/HoLLOI5Xtibf+kAWCDyILqShTGQA==
+"@abp/ng.account.core@~5.0.0-beta.2":
+ version "5.0.0-beta.1-1"
+ resolved "https://registry.yarnpkg.com/@abp/ng.account.core/-/ng.account.core-5.0.0-beta.1-1.tgz#1b283a884a178e86306bb3719fc9aa4f4e13f1a7"
+ integrity sha512-T5eyxg+UdFWe3+qS1mFwk0TWZUOD+E4ILbLtQJdmC4kE/aqSOJZeab4PQo45xvTqxJ+QO4GVIYrfg6krkIDnZQ==
dependencies:
tslib "^2.0.0"
-"@abp/ng.account.core@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/ng.account.core/-/ng.account.core-5.0.0-beta.1.tgz#b06026cadd964e0be6585d99e1f3fb3fdf638f96"
- integrity sha512-hstVq25ajS8fPlc7DOnCikaut6al7nOnlI6yQlWfTAPbm0Pj/e45i2YQE9j/7aIpzuWzn01c+hoTt5cPTukv2g==
- dependencies:
- tslib "^2.0.0"
-
-"@abp/ng.account@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/ng.account/-/ng.account-5.0.0-beta.1.tgz#76f39da149c646b408bce4c6f46f6c41e98bc5dc"
- integrity sha512-7R2UQuwfNngkohw3pu8agXqX/FHTyF16OcPRENkD/opufwIABqRczoOL4vfSsXtxTpLuSJ8Oy/79KQrbuwpi9A==
- dependencies:
- "@abp/ng.account.core" "~4.4.3"
- "@abp/ng.identity" "~4.4.3"
- "@abp/ng.theme.shared" "~4.4.3"
- tslib "^2.0.0"
-
-"@abp/ng.components@~4.4.3":
- version "4.4.3"
- resolved "https://registry.yarnpkg.com/@abp/ng.components/-/ng.components-4.4.3.tgz#5a13476e68182e85e6a065dd760c12b5d767bcca"
- integrity sha512-b0zRe7kMHeclz8ytdInPAtIFIpgqO1XMKaTPOZFOpPutaaKWbD0Ji8ig9xm9sS8BT102NOmA6lI/0vJtVxkbyg==
+"@abp/ng.account@~5.0.0-beta.2":
+ version "5.0.0-beta.1-1"
+ resolved "https://registry.yarnpkg.com/@abp/ng.account/-/ng.account-5.0.0-beta.1-1.tgz#0b1fe99e5f0df4892e12f1ea989c087dd3fafcc1"
+ integrity sha512-bwqqiUxVINtDX6cMqNx6Wh1Ie7VUJNGyAx3nHNjhvDwU+40w0DvngoQ/+2UUNrWvacFplj9wkuhKR4YNr26Dfw==
dependencies:
- ng-zorro-antd "^11.0.0"
+ "@abp/ng.account.core" "~5.0.0-beta.2"
+ "@abp/ng.identity" "~5.0.0-beta.2"
+ "@abp/ng.theme.shared" "~5.0.0-beta.2"
tslib "^2.0.0"
-"@abp/ng.core@~4.4.3":
- version "4.4.3"
- resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-4.4.3.tgz#235e1ffa092e7015893f55ca66834a54df0fdebb"
- integrity sha512-MJILExkpinyGadxbCE2xdxUqn2UzuByH0O2Oxm85ZU7CpQs0HPrw3Lon/0ySadJrTZmeNpbj5OA6CVGkQzzmdw==
+"@abp/ng.components@~5.0.0-beta.2":
+ version "5.0.0-beta.1-1"
+ resolved "https://registry.yarnpkg.com/@abp/ng.components/-/ng.components-5.0.0-beta.1-1.tgz#53cb99f14f47f1e274a5b729f7f2239ce5ea6251"
+ integrity sha512-567FfP108A2yFVDHfz34g1LJQsV7HGpm0z4403nlVUT1CWxv5o5zVVpcaOn2pau57Uf9tE0IRxXxZuWHNPzXVw==
dependencies:
- "@abp/utils" "^4.4.3"
- "@angular/localize" "~10.0.10"
- "@ngxs/store" "^3.7.0"
- angular-oauth2-oidc "^10.0.0"
- just-clone "^3.1.0"
- just-compare "^1.3.0"
- snq "^1.0.3"
- ts-toolbelt "6.15.4"
+ chart.js "^3.5.1"
+ ng-zorro-antd "^12.0.1"
tslib "^2.0.0"
-"@abp/ng.core@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-5.0.0-beta.1.tgz#00ba3db7de28b9abc31ca4891318fe88a6fe8b8d"
- integrity sha512-X3Hp4jYyoBXudQFGTsHtdMOPvKH7aeHjbvRE6lkXJ4KCxwaXWHr/Xc/0RdU9MQoJrM+Ta+cbUlqS5mUkLclOIw==
+"@abp/ng.core@~5.0.0-beta.2":
+ version "5.0.0-beta.1-1"
+ resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-5.0.0-beta.1-1.tgz#3a679cfb562a4598fe8628b9335009cce8d821ad"
+ integrity sha512-F/N7M1rUPG9ROTOhruF9wMBy/hOTHOeSuJSqI1BN5m3lav8mDj0q6X+TlxszN5xQvIepgZXDYmCz6C+qmB9+Lg==
dependencies:
"@abp/utils" "^5.0.0-beta.1"
angular-oauth2-oidc "^12.1.0"
@@ -61,60 +40,35 @@
ts-toolbelt "6.15.4"
tslib "^2.0.0"
-"@abp/ng.feature-management@~4.4.3":
- version "4.4.3"
- resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-4.4.3.tgz#1047898ad1312283354ad5f764483db9a03a3958"
- integrity sha512-onXC5iXxVLrwgAwj+z++uOP52im2px1ewVNC4w+oQoW7IOS0877xXbUANhs2wykyMLjTLVI5p9HaO4N2QPsYeA==
+"@abp/ng.feature-management@~5.0.0-beta.2":
+ version "5.0.0-beta.1-1"
+ resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-5.0.0-beta.1-1.tgz#0b14ef984de2308297b053ea421c834d22bd352c"
+ integrity sha512-89XX1+PkA1LZROZIJGGIDGQWEbuqvusnDcDKkuzVrI3+mghkvoGQYPig7nxnhW5vGdAmvJ9fDztsUNN5JKUDDQ==
dependencies:
- "@abp/ng.theme.shared" "~4.4.3"
+ "@abp/ng.theme.shared" "~5.0.0-beta.2"
tslib "^2.0.0"
-"@abp/ng.feature-management@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-5.0.0-beta.1.tgz#f027156077564fbbb7dad15da9cbdaa3a48023ce"
- integrity sha512-3SAaI7uG9Xn524OFaVD+w/C91WIevUQ0sbpdJ3llQKWqU/WYCR6paT1lrzdkk1dTCZG+F47SD5dj8OukP5fA+g==
+"@abp/ng.identity@~5.0.0-beta.2":
+ version "5.0.0-beta.1-1"
+ resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-5.0.0-beta.1-1.tgz#dd06d766a950a354565b5821363200d8763d2a65"
+ integrity sha512-qHRc5SceIQ56V1F0VVGqPjVnr7YHLEYmfX5tgyd/qk97WWvszkBD7a1eyQREP4Q63IiwcBtqnbN3hRCAU78JIQ==
dependencies:
- "@abp/ng.theme.shared" "~4.4.3"
+ "@abp/ng.permission-management" "~5.0.0-beta.2"
+ "@abp/ng.theme.shared" "~5.0.0-beta.2"
tslib "^2.0.0"
-"@abp/ng.identity@~4.4.3":
- version "4.4.3"
- resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-4.4.3.tgz#0a5f6d25ad337476f24c9632037c476167e527c9"
- integrity sha512-LaUYxFoFyRM2nBy7YVoPSF+huAPdK6Gthk86kEUOycbka2uw2fxWI9h/vonqs8Tny/tAqtJsEzeGguIjjsjLhg==
+"@abp/ng.permission-management@~5.0.0-beta.2":
+ version "5.0.0-beta.1-1"
+ resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-5.0.0-beta.1-1.tgz#72f709fc99581724b9102e9308f69f52200dc596"
+ integrity sha512-TKoP0lPMpgGzhtQ4W1zfv3uof4oP4ZZNxoTa9W7t1TzfAhxo/ryPJuMf11NXrJvKnD3s0I9AZMudGhjQvxXm3Q==
dependencies:
- "@abp/ng.permission-management" "~4.4.3"
- "@abp/ng.theme.shared" "~4.4.3"
+ "@abp/ng.theme.shared" "~5.0.0-beta.2"
tslib "^2.0.0"
-"@abp/ng.identity@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-5.0.0-beta.1.tgz#e5efe6012d6e5fb6858030420b759ed763308bb8"
- integrity sha512-CNg6Fg9KysAXX4lF6sdhTYdgbTf6CNYF45xhEMM+wFth7GXU4FtScy3jHKVfyEzNJwP4nyDndTRcT4PveXdCAw==
- dependencies:
- "@abp/ng.permission-management" "~4.4.3"
- "@abp/ng.theme.shared" "~4.4.3"
- tslib "^2.0.0"
-
-"@abp/ng.permission-management@~4.4.3":
- version "4.4.3"
- resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-4.4.3.tgz#088900bcc24b8bf66909681d41f0fcf937be1e0f"
- integrity sha512-ijwl1pldAftixHdJ3m4pGPHPZMeL26YULhuOd1KavlIhiaKOMJQ4alx/FYgCkCsKMgKkcb6gNXAspF+m92tJjg==
- dependencies:
- "@abp/ng.theme.shared" "~4.4.3"
- tslib "^2.0.0"
-
-"@abp/ng.permission-management@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-5.0.0-beta.1.tgz#1ad5a5f5b1a8d2d37a6d8d24e1ab16d88a4a8a8b"
- integrity sha512-GIejir8qrZ/jje9DApSWdnjxJZ2Q1M/2Q2lXNgZqAg4h1UZz1NZisR2+Qohvn2ImfcGEPTKSaPyZDv4Ic1WJxg==
- dependencies:
- "@abp/ng.theme.shared" "~4.4.3"
- tslib "^2.0.0"
-
-"@abp/ng.schematics@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/ng.schematics/-/ng.schematics-5.0.0-beta.1.tgz#a9312f43181a5784f97da87907d9326f973a107d"
- integrity sha512-3FBWEney/W7D5TLqEyP/hCJGIguvKewMP3zh9o956MFVU7q4iWrLWsC5d06BEtr3rDv/fznIazuFdQ+EYRZNXw==
+"@abp/ng.schematics@~5.0.0-beta.2":
+ version "5.0.0-beta.1-1"
+ resolved "https://registry.yarnpkg.com/@abp/ng.schematics/-/ng.schematics-5.0.0-beta.1-1.tgz#e53298a5f6472065b07ae1268ed74ee879389d6b"
+ integrity sha512-B820JImPYoCRuAf6LgxcCTW0i841RZwD2Y9prhmeAbue8uKs89MnjWiQMf7VbKIWR9rm7WPoEKoLBSV1cVO9/A==
dependencies:
"@angular-devkit/core" "~11.0.2"
"@angular-devkit/schematics" "~11.0.2"
@@ -123,53 +77,39 @@
should-quote "^1.0.0"
typescript "~3.9.2"
-"@abp/ng.setting-management@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-5.0.0-beta.1.tgz#7741069e67fb1dd651b846bd3ccb84b8f0516fa3"
- integrity sha512-c4cRsHu8KIAorbTkh/DlBxezv0N4THpWIYcKa9wDzwA6mJeBGmoD/4YtoklFWbWtN48p0psSNSEmRzUBYWE+bQ==
- dependencies:
- "@abp/ng.components" "~4.4.3"
- "@abp/ng.theme.shared" "~4.4.3"
- tslib "^2.0.0"
-
-"@abp/ng.tenant-management@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-5.0.0-beta.1.tgz#18d16e7322de6e30c66e5a1c0e4136a054b4ce8d"
- integrity sha512-ac2HAJMf2wnfIEXJcscnLo9mDIeCtOMfTC9qtpxhChhjvwGJ+41gWWTgGXs1icRN9vi+bZExF3DYVdMxvN13Bg==
+"@abp/ng.setting-management@~5.0.0-beta.2":
+ version "5.0.0-beta.1-1"
+ resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-5.0.0-beta.1-1.tgz#4ad8d3ce4b0eee54460f6babb6a6b8775a217b05"
+ integrity sha512-Qqu/vjeoGJ/8+uq1/dmIb/ZsZn7lah3afUkYrs/1auFACYSiR9F9JgYueXaQ9OxLjrBZuA7wjdMB2mxKGDaZAg==
dependencies:
- "@abp/ng.feature-management" "~4.4.3"
- "@abp/ng.theme.shared" "~4.4.3"
+ "@abp/ng.components" "~5.0.0-beta.2"
+ "@abp/ng.theme.shared" "~5.0.0-beta.2"
tslib "^2.0.0"
-"@abp/ng.theme.basic@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-5.0.0-beta.1.tgz#a4b2a46b9fc0a68b37e7d8b8d5b6d521156939b7"
- integrity sha512-7vyqFIBJGLeYF88cnobUXk3aHV0S7euJYB8RJy26G1qcZYLKinRkDvvC3h+ftdpr667H/SlY1q4S6LlBXeQdpQ==
+"@abp/ng.tenant-management@~5.0.0-beta.2":
+ version "5.0.0-beta.1-1"
+ resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-5.0.0-beta.1-1.tgz#4b851d6d4971fce83d11cf0511d74d2578ccf742"
+ integrity sha512-t7e8oYGas4Y3L28UUFmWPGlHyri/HVHSdKNf27rq3XjY1bhDd2RCC3FqSJCCr/AoNm1NU7fIPUl8oLTCWIYvkg==
dependencies:
- "@abp/ng.account.core" "~4.4.3"
- "@abp/ng.theme.shared" "~4.4.3"
+ "@abp/ng.feature-management" "~5.0.0-beta.2"
+ "@abp/ng.theme.shared" "~5.0.0-beta.2"
tslib "^2.0.0"
-"@abp/ng.theme.shared@~4.4.3":
- version "4.4.3"
- resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-4.4.3.tgz#b3e507b8540ffcb84c4b055e23f358bff8e86d87"
- integrity sha512-A3d+9kICENobWm7M8RnrBUp3gtA0i4OjOLlDeJTYNp4mcBPQu4R40QHUvSSqteUjGfbu6P1w6n9EQn40jn4wMw==
+"@abp/ng.theme.basic@~5.0.0-beta.2":
+ version "5.0.0-beta.1-1"
+ resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-5.0.0-beta.1-1.tgz#fdb92411c5c3df686472ea3ea6175294a7a1f437"
+ integrity sha512-CAoVAU3ZOBsXhIAiQYGhNeuPic1yGR1MBolIK4EUpR0Ag1jyUXEahCu3T78MYdRBcPlYOD0yrK1/llo4GWZn2w==
dependencies:
- "@abp/ng.core" "~4.4.3"
- "@fortawesome/fontawesome-free" "^5.14.0"
- "@ng-bootstrap/ng-bootstrap" "^7.0.0"
- "@ngx-validate/core" "^0.0.13"
- "@swimlane/ngx-datatable" "^17.1.0"
- bootstrap "~4.6.0"
- chart.js "^2.9.3"
+ "@abp/ng.account.core" "~5.0.0-beta.2"
+ "@abp/ng.theme.shared" "~5.0.0-beta.2"
tslib "^2.0.0"
-"@abp/ng.theme.shared@~5.0.0-beta.1":
- version "5.0.0-beta.1"
- resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-5.0.0-beta.1.tgz#9ccee523a43d1408dcc73d09e7ba7a1583ae644a"
- integrity sha512-nkuSnxroGmjy1TrkLomOGQy/ZYTUvs42Z2IX0k4rkpYXYcPYq2L4ly7MxxPY1GZWzR8MiCvRBlpYNlAfncDgXw==
+"@abp/ng.theme.shared@~5.0.0-beta.2":
+ version "5.0.0-beta.1-1"
+ resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-5.0.0-beta.1-1.tgz#fce2aa9433838f514263cfa3aff34ab803651320"
+ integrity sha512-AQFTm4T8ohR/7RmZTTJ7CvUscwKqf/HF2AvxZRy+ixe+q1PGWos6L+e8ZFt5YuzkieUPLXdWkeBni0x4rEQRdw==
dependencies:
- "@abp/ng.core" "~4.4.3"
+ "@abp/ng.core" "~5.0.0-beta.2"
"@fortawesome/fontawesome-free" "^5.15.4"
"@ng-bootstrap/ng-bootstrap" "^7.0.0"
"@ngx-validate/core" "^0.0.13"
@@ -177,20 +117,20 @@
bootstrap "~4.6.0"
tslib "^2.0.0"
-"@abp/utils@^4.4.3":
- version "4.4.3"
- resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.3.tgz#5d6939be5463adaa938357d74d1a35fed21b0115"
- integrity sha512-B2E89fhM7vKDz9He6EeNc9P5RVYThiBLpTkKvJTeXG+DJtrP2ZbEICe1fcDA48wLFokXXKgx/SjoJlMvObhilQ==
- dependencies:
- just-compare "^1.3.0"
-
-"@abp/utils@^5.0.0-beta.1", "@abp/utils@~5.0.0-beta.1":
+"@abp/utils@^5.0.0-beta.1":
version "5.0.0-beta.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.1.tgz#e1bf9240738276081c89a67073d9d85205fdf14c"
integrity sha512-suzKxHUautizxt5XdlJ8ONIaVMcAHrb2dp1kEnXnFRW1ip+7ZQ9/nxJj+GtY1MhHX2yPmlUQP2K8f2upJh9aoA==
dependencies:
just-compare "^1.3.0"
+"@abp/utils@~5.0.0-beta.2":
+ version "5.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-5.0.0-beta.2.tgz#4d120c0f930b943071b4ba27dafedf6c8b730182"
+ integrity sha512-EZV1P+eafVBEHO6B+Ws6iX4xyeg8B6nCPLvpaFC6mStk7SGidh2rAYYWyydyh68Ky8YdbLYQE3oPaIewOhDWTg==
+ dependencies:
+ just-compare "^1.3.0"
+
"@ampproject/remapping@1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-1.0.1.tgz#1398e73e567c2a7992df6554c15bb94a89b68ba2"
@@ -430,15 +370,6 @@
dependencies:
tslib "^2.2.0"
-"@angular/cdk@^11.0.2":
- version "11.2.13"
- resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-11.2.13.tgz#d54c9187e3b8cf3f8ba190b1edddc08ed2b740de"
- integrity sha512-FkE4iCwoLbQxLDUOjV1I7M/6hmpyb7erAjEdWgch7nGRNxF1hqX5Bqf1lvLFKPNCbx5NRI5K7YVAdIUQUR8vug==
- dependencies:
- tslib "^2.0.0"
- optionalDependencies:
- parse5 "^5.0.0"
-
"@angular/cdk@^12.1.0":
version "12.2.6"
resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-12.2.6.tgz#12aca217e30d96625b38ab83c0ca445f074ba41b"
@@ -526,15 +457,6 @@
resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-12.2.6.tgz#c6b90ac820323d01d3fa4e0ce93a5fb1dcafa0e3"
integrity sha512-4oKiWgJFCFIVIdMUgyNl/SA++rYjLa+rj0fU+Coi9lwtSpBIOWdLd9KnwtaU/JbdZjx1SSogy9+T9ylT/y0CMw==
-"@angular/localize@~10.0.10":
- version "10.0.14"
- resolved "https://registry.yarnpkg.com/@angular/localize/-/localize-10.0.14.tgz#99064a3b12e94e54e791c0638fbbbcc8783d8a62"
- integrity sha512-tV1oUii6bxpQ6bKELcZsibUEEGmNiROxy8xRW015VgrgMFhuNuesHSmNUIstZ7ag8/sjh0/w1p55PUB6LEiPFA==
- dependencies:
- "@babel/core" "7.8.3"
- glob "7.1.2"
- yargs "15.3.0"
-
"@angular/platform-browser-dynamic@~12.2.0":
version "12.2.6"
resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.2.6.tgz#534d7e16d41a938b868a322806975950867bd5ed"
@@ -563,14 +485,6 @@
dependencies:
"@ctrl/tinycolor" "^3.3.1"
-"@ant-design/icons-angular@^11.0.1":
- version "11.0.1"
- resolved "https://registry.yarnpkg.com/@ant-design/icons-angular/-/icons-angular-11.0.1.tgz#8ff3131f3d9b4b25fd28c64c4a9bdfe36da54942"
- integrity sha512-WwxVx/aToxTjWmB5+O+3rOjSYdF8FC/Yd/8jF1ZGQMtLWAzP8/foQmKvPAktTUsh0/Ijhtur7LrHN2VuUedMcA==
- dependencies:
- "@ant-design/colors" "^5.0.0"
- tslib "^2.0.0"
-
"@ant-design/icons-angular@^12.0.3":
version "12.0.3"
resolved "https://registry.yarnpkg.com/@ant-design/icons-angular/-/icons-angular-12.0.3.tgz#3e99aa99ceebb978384a2926d06da19c043fc4bd"
@@ -624,27 +538,6 @@
semver "^6.3.0"
source-map "^0.5.0"
-"@babel/core@7.8.3":
- version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.3.tgz#30b0ebb4dd1585de6923a0b4d179e0b9f5d82941"
- integrity sha512-4XFkf8AwyrEG7Ziu3L2L0Cv+WyY47Tcsp70JFmpftbAA1K7YL/sgE9jh9HyNj08Y/U50ItUchpN0w6HxAoX1rA==
- dependencies:
- "@babel/code-frame" "^7.8.3"
- "@babel/generator" "^7.8.3"
- "@babel/helpers" "^7.8.3"
- "@babel/parser" "^7.8.3"
- "@babel/template" "^7.8.3"
- "@babel/traverse" "^7.8.3"
- "@babel/types" "^7.8.3"
- convert-source-map "^1.7.0"
- debug "^4.1.0"
- gensync "^1.0.0-beta.1"
- json5 "^2.1.0"
- lodash "^4.17.13"
- resolve "^1.3.2"
- semver "^5.4.1"
- source-map "^0.5.0"
-
"@babel/core@^7.0.1", "@babel/core@^7.1.0", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.6":
version "7.15.5"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.5.tgz#f8ed9ace730722544609f90c9bb49162dc3bf5b9"
@@ -675,7 +568,7 @@
jsesc "^2.5.1"
source-map "^0.5.0"
-"@babel/generator@^7.14.8", "@babel/generator@^7.15.4", "@babel/generator@^7.7.2", "@babel/generator@^7.8.3":
+"@babel/generator@^7.14.8", "@babel/generator@^7.15.4", "@babel/generator@^7.7.2":
version "7.15.4"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.4.tgz#85acb159a267ca6324f9793986991ee2022a05b0"
integrity sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==
@@ -880,7 +773,7 @@
"@babel/traverse" "^7.15.4"
"@babel/types" "^7.15.4"
-"@babel/helpers@^7.14.8", "@babel/helpers@^7.15.4", "@babel/helpers@^7.8.3":
+"@babel/helpers@^7.14.8", "@babel/helpers@^7.15.4":
version "7.15.4"
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.15.4.tgz#5f40f02050a3027121a3cf48d497c05c555eaf43"
integrity sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==
@@ -898,7 +791,7 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
-"@babel/parser@^7.1.0", "@babel/parser@^7.14.5", "@babel/parser@^7.14.8", "@babel/parser@^7.15.4", "@babel/parser@^7.15.5", "@babel/parser@^7.7.2", "@babel/parser@^7.8.3":
+"@babel/parser@^7.1.0", "@babel/parser@^7.14.5", "@babel/parser@^7.14.8", "@babel/parser@^7.15.4", "@babel/parser@^7.15.5", "@babel/parser@^7.7.2":
version "7.15.7"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.7.tgz#0c3ed4a2eb07b165dfa85b3cc45c727334c4edae"
integrity sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g==
@@ -1628,7 +1521,7 @@
"@babel/parser" "^7.14.5"
"@babel/types" "^7.14.5"
-"@babel/template@^7.14.5", "@babel/template@^7.15.4", "@babel/template@^7.3.3", "@babel/template@^7.8.3":
+"@babel/template@^7.14.5", "@babel/template@^7.15.4", "@babel/template@^7.3.3":
version "7.15.4"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194"
integrity sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==
@@ -1637,7 +1530,7 @@
"@babel/parser" "^7.15.4"
"@babel/types" "^7.15.4"
-"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.8", "@babel/traverse@^7.15.4", "@babel/traverse@^7.7.2", "@babel/traverse@^7.8.3":
+"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.8", "@babel/traverse@^7.15.4", "@babel/traverse@^7.7.2":
version "7.15.4"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d"
integrity sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==
@@ -1652,7 +1545,7 @@
debug "^4.1.0"
globals "^11.1.0"
-"@babel/types@^7.0.0", "@babel/types@^7.14.5", "@babel/types@^7.14.8", "@babel/types@^7.15.4", "@babel/types@^7.15.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6":
+"@babel/types@^7.0.0", "@babel/types@^7.14.5", "@babel/types@^7.14.8", "@babel/types@^7.15.4", "@babel/types@^7.15.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.8.6":
version "7.15.6"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f"
integrity sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==
@@ -1740,7 +1633,7 @@
minimatch "^3.0.4"
strip-json-comments "^3.1.1"
-"@fortawesome/fontawesome-free@^5.14.0", "@fortawesome/fontawesome-free@^5.15.4":
+"@fortawesome/fontawesome-free@^5.15.4":
version "5.15.4"
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.4.tgz#ecda5712b61ac852c760d8b3c79c96adca5554e5"
integrity sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg==
@@ -2707,13 +2600,6 @@
dependencies:
tslib "^1.9.0"
-"@ngxs/store@^3.7.0":
- version "3.7.2"
- resolved "https://registry.yarnpkg.com/@ngxs/store/-/store-3.7.2.tgz#1088b0669adc382d36ca7ae8438c603e55879b42"
- integrity sha512-1cnAjHOGCovfvhjtcAWBajrMXos97Un3c8ekKoS8FIHnq3aQOzY/ePspDRNi9kTcuBJ/r/xl097JC1ssEuNbyg==
- dependencies:
- tslib "^1.9.0"
-
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
@@ -3147,11 +3033,6 @@
dependencies:
"@sinonjs/commons" "^1.7.0"
-"@swimlane/ngx-datatable@^17.1.0":
- version "17.1.0"
- resolved "https://registry.yarnpkg.com/@swimlane/ngx-datatable/-/ngx-datatable-17.1.0.tgz#ef2f91c3783526e7e89ac7a62a53e7bc9e1c90d5"
- integrity sha512-zYUS7uNO9OJ5UQZFuuTRjlPu6vdKA+FHYLfeEs7PgSuUiDCcbl2SWoUdS/3zIoWn/qQyws767ueWiAvvWUbpEw==
-
"@swimlane/ngx-datatable@^19.0.0":
version "19.0.0"
resolved "https://registry.yarnpkg.com/@swimlane/ngx-datatable/-/ngx-datatable-19.0.0.tgz#7eed84ba276ebb9e4761233f8ac95d38fdff45b7"
@@ -4028,13 +3909,6 @@ alphanum-sort@^1.0.2:
resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=
-angular-oauth2-oidc@^10.0.0:
- version "10.0.3"
- resolved "https://registry.yarnpkg.com/angular-oauth2-oidc/-/angular-oauth2-oidc-10.0.3.tgz#612ef75c2e07b56592d2506f9618ee6a61857ad9"
- integrity sha512-9wC8I3e3cN6rMBOlo5JB2y3Fd2erp8pJ67t4vEVzyPbnRG6BJ4rreSOznSL9zw/2SjhC9kRV2OfFie29CUCzEg==
- dependencies:
- tslib "^2.0.0"
-
angular-oauth2-oidc@^12.1.0:
version "12.1.0"
resolved "https://registry.yarnpkg.com/angular-oauth2-oidc/-/angular-oauth2-oidc-12.1.0.tgz#d15b40e52c149187303d4511dd0e4d9661281fc6"
@@ -5013,34 +4887,11 @@ chardet@^0.7.0:
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
-chart.js@^2.9.3:
- version "2.9.4"
- resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-2.9.4.tgz#0827f9563faffb2dc5c06562f8eb10337d5b9684"
- integrity sha512-B07aAzxcrikjAPyV+01j7BmOpxtQETxTSlQ26BEYJ+3iUkbNKaOJ/nDbT6JjyqYxseM0ON12COHYdU2cTIjC7A==
- dependencies:
- chartjs-color "^2.1.0"
- moment "^2.10.2"
-
chart.js@^3.5.1:
version "3.5.1"
resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-3.5.1.tgz#73e24d23a4134a70ccdb5e79a917f156b6f3644a"
integrity sha512-m5kzt72I1WQ9LILwQC4syla/LD/N413RYv2Dx2nnTkRS9iv/ey1xLTt0DnPc/eWV4zI+BgEgDYBIzbQhZHc/PQ==
-chartjs-color-string@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz#1df096621c0e70720a64f4135ea171d051402f71"
- integrity sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==
- dependencies:
- color-name "^1.0.0"
-
-chartjs-color@^2.1.0:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/chartjs-color/-/chartjs-color-2.4.1.tgz#6118bba202fe1ea79dd7f7c0f9da93467296c3b0"
- integrity sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w==
- dependencies:
- chartjs-color-string "^0.6.0"
- color-convert "^1.9.3"
-
check-more-types@^2.24.0:
version "2.24.0"
resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600"
@@ -5251,7 +5102,7 @@ collection-visit@^1.0.0:
map-visit "^1.0.0"
object-visit "^1.0.0"
-color-convert@^1.9.0, color-convert@^1.9.3:
+color-convert@^1.9.0:
version "1.9.3"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
@@ -5270,7 +5121,7 @@ color-name@1.1.3:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
-color-name@^1.0.0, color-name@^1.1.4, color-name@~1.1.4:
+color-name@^1.1.4, color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
@@ -7366,7 +7217,7 @@ gauge@~2.7.3:
strip-ansi "^3.0.1"
wide-align "^1.1.0"
-gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2:
+gensync@^1.0.0-beta.2:
version "1.0.0-beta.2"
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
@@ -7527,18 +7378,6 @@ glob-to-regexp@^0.4.1:
resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
-glob@7.1.2:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
- integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==
- dependencies:
- fs.realpath "^1.0.0"
- inflight "^1.0.4"
- inherits "2"
- minimatch "^3.0.4"
- once "^1.3.0"
- path-is-absolute "^1.0.0"
-
glob@7.1.4:
version "7.1.4"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
@@ -9316,7 +9155,7 @@ json3@^3.3.3:
resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81"
integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==
-json5@2.x, json5@^2.1.0, json5@^2.1.2:
+json5@2.x, json5@^2.1.2:
version "2.2.0"
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
@@ -9374,7 +9213,7 @@ jszip@^3.1.3:
readable-stream "~2.3.6"
set-immediate-shim "~1.0.1"
-just-clone@^3.1.0, just-clone@^3.2.1:
+just-clone@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/just-clone/-/just-clone-3.2.1.tgz#7396be5790d33f0fa7e8a145d7983b986a8cee39"
integrity sha512-PFotEVrrzAnwuWTUOFquDShWrHnUnhxNrVs1VFqkNfnoH3Sn5XUlDOePYn2Vv5cN8xV2y69jf8qEoQHm7eoLnw==
@@ -9696,7 +9535,7 @@ lodash.uniq@^4.5.0:
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
-lodash@4.x, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0:
+lodash@4.x, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -10205,11 +10044,6 @@ modify-values@^1.0.0:
resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022"
integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==
-moment@^2.10.2:
- version "2.29.1"
- resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3"
- integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==
-
moo-color@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/moo-color/-/moo-color-1.0.2.tgz#837c40758d2d58763825d1359a84e330531eca64"
@@ -10361,17 +10195,6 @@ ng-packagr@^12.2.0:
sass "^1.32.8"
stylus "^0.54.8"
-ng-zorro-antd@^11.0.0:
- version "11.4.2"
- resolved "https://registry.yarnpkg.com/ng-zorro-antd/-/ng-zorro-antd-11.4.2.tgz#c19f12fee9166cbed0b6c7c63fa37da0464413e7"
- integrity sha512-1dMIz5zBma+CfUYYKmIKWIB9mXX837L+WKGGHhl2KrmIIbsbNLh3WTKudCBuyqL58EEgiVhTZYwl841xdz+vLw==
- dependencies:
- "@angular/cdk" "^11.0.2"
- "@ant-design/icons-angular" "^11.0.1"
- date-fns "^2.10.0"
- resize-observer-polyfill "^1.5.1"
- tslib "^2.0.0"
-
ng-zorro-antd@^12.0.1:
version "12.0.1"
resolved "https://registry.yarnpkg.com/ng-zorro-antd/-/ng-zorro-antd-12.0.1.tgz#7f06e2f538f02aefc17ff307e9e19045997f066f"
@@ -12543,11 +12366,6 @@ requires-port@^1.0.0:
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
-resize-observer-polyfill@^1.5.1:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464"
- integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==
-
resolve-alpn@^1.0.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9"
@@ -12846,7 +12664,7 @@ selfsigned@^1.10.8:
dependencies:
node-forge "^0.10.0"
-"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1:
+"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.3.0, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1:
version "5.7.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
@@ -13097,11 +12915,6 @@ snapdragon@^0.8.1:
source-map-resolve "^0.5.0"
use "^3.1.0"
-snq@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/snq/-/snq-1.0.3.tgz#f9661d10eebb224c52fc3c50106445c268618168"
- integrity sha512-bXcxd1ppFnSNYKq84HyOYuYtbMHCFTZvuPSNCn/80yx9+DLkU/hLqjqCRKRHSDISrL1T/lWGXJyQxWS8TnutFA==
-
sockjs-client@^1.5.0:
version "1.5.2"
resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.2.tgz#4bc48c2da9ce4769f19dc723396b50f5c12330a3"
@@ -15033,7 +14846,7 @@ yargs-parser@^13.1.2:
camelcase "^5.0.0"
decamelize "^1.2.0"
-yargs-parser@^18.1.0, yargs-parser@^18.1.2:
+yargs-parser@^18.1.2:
version "18.1.3"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
@@ -15041,23 +14854,6 @@ yargs-parser@^18.1.0, yargs-parser@^18.1.2:
camelcase "^5.0.0"
decamelize "^1.2.0"
-yargs@15.3.0:
- version "15.3.0"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.0.tgz#403af6edc75b3ae04bf66c94202228ba119f0976"
- integrity sha512-g/QCnmjgOl1YJjGsnUg2SatC7NUYEiLXJqxNOQU9qSpjzGtGXda9b+OKccr1kLTy8BN9yqEyqfq5lxlwdc13TA==
- dependencies:
- cliui "^6.0.0"
- decamelize "^1.2.0"
- find-up "^4.1.0"
- get-caller-file "^2.0.1"
- require-directory "^2.1.1"
- require-main-filename "^2.0.0"
- set-blocking "^2.0.0"
- string-width "^4.2.0"
- which-module "^2.0.0"
- y18n "^4.0.0"
- yargs-parser "^18.1.0"
-
yargs@15.4.1, yargs@^15.3.1:
version "15.4.1"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8"
diff --git a/npm/package-update-script.js b/npm/package-update-script.js
index 27930f096c..1625f77129 100644
--- a/npm/package-update-script.js
+++ b/npm/package-update-script.js
@@ -15,7 +15,7 @@ const check = (pkgJsonPath) => {
return childProcess
.execSync(
`ncu "/^@(${packages}).*$/" --packageFile ${pkgJsonPath} -u${
- program.prerelase ? ' --target greatest' : ''
+ program.prerelase ? ' --target newest' : ''
}${program.registry ? ` --registry ${program.registry}` : ''}`
)
.toString();
diff --git a/npm/packs/anchor-js/package.json b/npm/packs/anchor-js/package.json
index 8e701e83d0..2d5df96a60 100644
--- a/npm/packs/anchor-js/package.json
+++ b/npm/packs/anchor-js/package.json
@@ -1,11 +1,11 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/anchor-js",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~5.0.0-beta.1",
+ "@abp/core": "~5.0.0-beta.2",
"anchor-js": "^4.2.2"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/aspnetcore.components.server.basictheme/package.json b/npm/packs/aspnetcore.components.server.basictheme/package.json
index 869fc2406d..c3a56f8367 100644
--- a/npm/packs/aspnetcore.components.server.basictheme/package.json
+++ b/npm/packs/aspnetcore.components.server.basictheme/package.json
@@ -1,11 +1,11 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/aspnetcore.components.server.basictheme",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/aspnetcore.components.server.theming": "~5.0.0-beta.1"
+ "@abp/aspnetcore.components.server.theming": "~5.0.0-beta.2"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
}
diff --git a/npm/packs/aspnetcore.components.server.theming/package.json b/npm/packs/aspnetcore.components.server.theming/package.json
index 3dd87e42c7..768c0c4f8e 100644
--- a/npm/packs/aspnetcore.components.server.theming/package.json
+++ b/npm/packs/aspnetcore.components.server.theming/package.json
@@ -1,12 +1,12 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/aspnetcore.components.server.theming",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/bootstrap": "~5.0.0-beta.1",
- "@abp/font-awesome": "~5.0.0-beta.1"
+ "@abp/bootstrap": "~5.0.0-beta.2",
+ "@abp/font-awesome": "~5.0.0-beta.2"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
}
diff --git a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json
index 347176684c..bc4032b352 100644
--- a/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json
+++ b/npm/packs/aspnetcore.mvc.ui.theme.basic/package.json
@@ -1,11 +1,16 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/aspnetcore.mvc.ui.theme.basic",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/abpframework/abp.git",
+ "directory": "npm/packs/aspnetcore.mvc.ui.theme.basic"
+ },
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.shared": "~5.0.0-beta.1"
+ "@abp/aspnetcore.mvc.ui.theme.shared": "~5.0.0-beta.2"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
}
diff --git a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json
index 5870dfb137..5646bc2ebf 100644
--- a/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json
+++ b/npm/packs/aspnetcore.mvc.ui.theme.shared/package.json
@@ -1,24 +1,29 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/aspnetcore.mvc.ui.theme.shared",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/abpframework/abp.git",
+ "directory": "npm/packs/aspnetcore.mvc.ui.theme.shared"
+ },
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/aspnetcore.mvc.ui": "~5.0.0-beta.1",
- "@abp/bootstrap": "~5.0.0-beta.1",
- "@abp/bootstrap-datepicker": "~5.0.0-beta.1",
- "@abp/datatables.net-bs4": "~5.0.0-beta.1",
- "@abp/font-awesome": "~5.0.0-beta.1",
- "@abp/jquery-form": "~5.0.0-beta.1",
- "@abp/jquery-validation-unobtrusive": "~5.0.0-beta.1",
- "@abp/lodash": "~5.0.0-beta.1",
- "@abp/luxon": "~5.0.0-beta.1",
- "@abp/malihu-custom-scrollbar-plugin": "~5.0.0-beta.1",
- "@abp/select2": "~5.0.0-beta.1",
- "@abp/sweetalert2": "~5.0.0-beta.1",
- "@abp/timeago": "~5.0.0-beta.1",
- "@abp/toastr": "~5.0.0-beta.1"
+ "@abp/aspnetcore.mvc.ui": "~5.0.0-beta.2",
+ "@abp/bootstrap": "~5.0.0-beta.2",
+ "@abp/bootstrap-datepicker": "~5.0.0-beta.2",
+ "@abp/datatables.net-bs4": "~5.0.0-beta.2",
+ "@abp/font-awesome": "~5.0.0-beta.2",
+ "@abp/jquery-form": "~5.0.0-beta.2",
+ "@abp/jquery-validation-unobtrusive": "~5.0.0-beta.2",
+ "@abp/lodash": "~5.0.0-beta.2",
+ "@abp/luxon": "~5.0.0-beta.2",
+ "@abp/malihu-custom-scrollbar-plugin": "~5.0.0-beta.2",
+ "@abp/select2": "~5.0.0-beta.2",
+ "@abp/sweetalert2": "~5.0.0-beta.2",
+ "@abp/timeago": "~5.0.0-beta.2",
+ "@abp/toastr": "~5.0.0-beta.2"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
}
diff --git a/npm/packs/aspnetcore.mvc.ui/package-lock.json b/npm/packs/aspnetcore.mvc.ui/package-lock.json
index 97962a503f..5720a3f35a 100644
--- a/npm/packs/aspnetcore.mvc.ui/package-lock.json
+++ b/npm/packs/aspnetcore.mvc.ui/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "@abp/aspnetcore.mvc.ui",
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
diff --git a/npm/packs/aspnetcore.mvc.ui/package.json b/npm/packs/aspnetcore.mvc.ui/package.json
index 9bbd5aefaf..08269f7189 100644
--- a/npm/packs/aspnetcore.mvc.ui/package.json
+++ b/npm/packs/aspnetcore.mvc.ui/package.json
@@ -1,6 +1,11 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/aspnetcore.mvc.ui",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/abpframework/abp.git",
+ "directory": "npm/packs/aspnetcore.mvc.ui"
+ },
"publishConfig": {
"access": "public"
},
diff --git a/npm/packs/blogging/package.json b/npm/packs/blogging/package.json
index 0b2cb53ec9..76cfeeced1 100644
--- a/npm/packs/blogging/package.json
+++ b/npm/packs/blogging/package.json
@@ -1,14 +1,14 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/blogging",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.shared": "~5.0.0-beta.1",
- "@abp/owl.carousel": "~5.0.0-beta.1",
- "@abp/prismjs": "~5.0.0-beta.1",
- "@abp/tui-editor": "~5.0.0-beta.1"
+ "@abp/aspnetcore.mvc.ui.theme.shared": "~5.0.0-beta.2",
+ "@abp/owl.carousel": "~5.0.0-beta.2",
+ "@abp/prismjs": "~5.0.0-beta.2",
+ "@abp/tui-editor": "~5.0.0-beta.2"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
}
diff --git a/npm/packs/bootstrap-datepicker/package.json b/npm/packs/bootstrap-datepicker/package.json
index f6b9c52680..c65311e5a9 100644
--- a/npm/packs/bootstrap-datepicker/package.json
+++ b/npm/packs/bootstrap-datepicker/package.json
@@ -1,6 +1,11 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/bootstrap-datepicker",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/abpframework/abp.git",
+ "directory": "npm/packs/bootstrap-datepicker"
+ },
"publishConfig": {
"access": "public"
},
diff --git a/npm/packs/bootstrap/package.json b/npm/packs/bootstrap/package.json
index cc55564936..b36af798e7 100644
--- a/npm/packs/bootstrap/package.json
+++ b/npm/packs/bootstrap/package.json
@@ -1,11 +1,16 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/bootstrap",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/abpframework/abp.git",
+ "directory": "npm/packs/bootstrap"
+ },
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~5.0.0-beta.1",
+ "@abp/core": "~5.0.0-beta.2",
"bootstrap": "^4.6.0",
"bootstrap-v4-rtl": "4.6.0-1"
},
diff --git a/npm/packs/chart.js/package.json b/npm/packs/chart.js/package.json
index 78e07187de..28e99c6124 100644
--- a/npm/packs/chart.js/package.json
+++ b/npm/packs/chart.js/package.json
@@ -1,5 +1,5 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/chart.js",
"publishConfig": {
"access": "public"
diff --git a/npm/packs/clipboard/package.json b/npm/packs/clipboard/package.json
index 5557d46809..66f6792c99 100644
--- a/npm/packs/clipboard/package.json
+++ b/npm/packs/clipboard/package.json
@@ -1,11 +1,11 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/clipboard",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~5.0.0-beta.1",
+ "@abp/core": "~5.0.0-beta.2",
"clipboard": "^2.0.6"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/cms-kit.admin/package.json b/npm/packs/cms-kit.admin/package.json
index dd5d836cc8..89c788784d 100644
--- a/npm/packs/cms-kit.admin/package.json
+++ b/npm/packs/cms-kit.admin/package.json
@@ -1,14 +1,14 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/cms-kit.admin",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/jstree": "~5.0.0-beta.1",
- "@abp/slugify": "~5.0.0-beta.1",
- "@abp/tui-editor": "~5.0.0-beta.1",
- "@abp/uppy": "~5.0.0-beta.1"
+ "@abp/jstree": "~5.0.0-beta.2",
+ "@abp/slugify": "~5.0.0-beta.2",
+ "@abp/tui-editor": "~5.0.0-beta.2",
+ "@abp/uppy": "~5.0.0-beta.2"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
}
diff --git a/npm/packs/cms-kit.public/package.json b/npm/packs/cms-kit.public/package.json
index 2d2ad3a3ec..25e9abb958 100644
--- a/npm/packs/cms-kit.public/package.json
+++ b/npm/packs/cms-kit.public/package.json
@@ -1,12 +1,12 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/cms-kit.public",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/highlight.js": "~5.0.0-beta.1",
- "@abp/star-rating-svg": "~5.0.0-beta.1"
+ "@abp/highlight.js": "~5.0.0-beta.2",
+ "@abp/star-rating-svg": "~5.0.0-beta.2"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
}
diff --git a/npm/packs/cms-kit/package.json b/npm/packs/cms-kit/package.json
index af2e36551d..d2388a30ff 100644
--- a/npm/packs/cms-kit/package.json
+++ b/npm/packs/cms-kit/package.json
@@ -1,12 +1,12 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/cms-kit",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/cms-kit.admin": "~5.0.0-beta.1",
- "@abp/cms-kit.public": "~5.0.0-beta.1"
+ "@abp/cms-kit.admin": "~5.0.0-beta.2",
+ "@abp/cms-kit.public": "~5.0.0-beta.2"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
}
diff --git a/npm/packs/codemirror/package.json b/npm/packs/codemirror/package.json
index a16c81517a..4ec395dcf2 100644
--- a/npm/packs/codemirror/package.json
+++ b/npm/packs/codemirror/package.json
@@ -1,11 +1,11 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/codemirror",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~5.0.0-beta.1",
+ "@abp/core": "~5.0.0-beta.2",
"codemirror": "^5.54.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/core/package.json b/npm/packs/core/package.json
index 98619ae53f..67647f3f79 100644
--- a/npm/packs/core/package.json
+++ b/npm/packs/core/package.json
@@ -1,11 +1,16 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/core",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/abpframework/abp.git",
+ "directory": "npm/packs/core"
+ },
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/utils": "^5.0.0-beta.1"
+ "@abp/utils": "^5.0.0-beta.2"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
}
diff --git a/npm/packs/cropperjs/package.json b/npm/packs/cropperjs/package.json
index 675d1e2282..f7504ab03c 100644
--- a/npm/packs/cropperjs/package.json
+++ b/npm/packs/cropperjs/package.json
@@ -1,11 +1,11 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/cropperjs",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~5.0.0-beta.1",
+ "@abp/core": "~5.0.0-beta.2",
"cropperjs": "^1.5.7"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/datatables.net-bs4/package.json b/npm/packs/datatables.net-bs4/package.json
index b470739daf..1bebb5d4ce 100644
--- a/npm/packs/datatables.net-bs4/package.json
+++ b/npm/packs/datatables.net-bs4/package.json
@@ -1,11 +1,16 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/datatables.net-bs4",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/abpframework/abp.git",
+ "directory": "npm/packs/datatables.net-bs4"
+ },
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/datatables.net": "~5.0.0-beta.1",
+ "@abp/datatables.net": "~5.0.0-beta.2",
"datatables.net-bs4": "^1.10.21"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/datatables.net/package.json b/npm/packs/datatables.net/package.json
index 41fc99c148..fa5e5f6c61 100644
--- a/npm/packs/datatables.net/package.json
+++ b/npm/packs/datatables.net/package.json
@@ -1,11 +1,16 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/datatables.net",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/abpframework/abp.git",
+ "directory": "npm/packs/datatables.net"
+ },
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/jquery": "~5.0.0-beta.1",
+ "@abp/jquery": "~5.0.0-beta.2",
"datatables.net": "^1.10.21"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/docs/package.json b/npm/packs/docs/package.json
index 115261f284..2852d0c87b 100644
--- a/npm/packs/docs/package.json
+++ b/npm/packs/docs/package.json
@@ -1,15 +1,15 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/docs",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/anchor-js": "~5.0.0-beta.1",
- "@abp/clipboard": "~5.0.0-beta.1",
- "@abp/malihu-custom-scrollbar-plugin": "~5.0.0-beta.1",
- "@abp/popper.js": "~5.0.0-beta.1",
- "@abp/prismjs": "~5.0.0-beta.1"
+ "@abp/anchor-js": "~5.0.0-beta.2",
+ "@abp/clipboard": "~5.0.0-beta.2",
+ "@abp/malihu-custom-scrollbar-plugin": "~5.0.0-beta.2",
+ "@abp/popper.js": "~5.0.0-beta.2",
+ "@abp/prismjs": "~5.0.0-beta.2"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
}
diff --git a/npm/packs/flag-icon-css/package.json b/npm/packs/flag-icon-css/package.json
index 8049298aaa..f4b4a7ba4b 100644
--- a/npm/packs/flag-icon-css/package.json
+++ b/npm/packs/flag-icon-css/package.json
@@ -1,5 +1,5 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/flag-icon-css",
"publishConfig": {
"access": "public"
diff --git a/npm/packs/font-awesome/package.json b/npm/packs/font-awesome/package.json
index efbb174c50..9be3a70b1e 100644
--- a/npm/packs/font-awesome/package.json
+++ b/npm/packs/font-awesome/package.json
@@ -1,11 +1,16 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/font-awesome",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/abpframework/abp.git",
+ "directory": "npm/packs/font-awesome"
+ },
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~5.0.0-beta.1",
+ "@abp/core": "~5.0.0-beta.2",
"@fortawesome/fontawesome-free": "^5.13.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/highlight.js/package.json b/npm/packs/highlight.js/package.json
index 573df92a2d..9736e97565 100644
--- a/npm/packs/highlight.js/package.json
+++ b/npm/packs/highlight.js/package.json
@@ -1,11 +1,11 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/highlight.js",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~5.0.0-beta.1"
+ "@abp/core": "~5.0.0-beta.2"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
}
diff --git a/npm/packs/jquery-form/package.json b/npm/packs/jquery-form/package.json
index 91c40ba030..e76e1f8f6c 100644
--- a/npm/packs/jquery-form/package.json
+++ b/npm/packs/jquery-form/package.json
@@ -1,11 +1,16 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/jquery-form",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/abpframework/abp.git",
+ "directory": "npm/packs/jquery-form"
+ },
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/jquery": "~5.0.0-beta.1",
+ "@abp/jquery": "~5.0.0-beta.2",
"jquery-form": "^4.3.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/jquery-validation-unobtrusive/package.json b/npm/packs/jquery-validation-unobtrusive/package.json
index 8f6e689aeb..440f822d64 100644
--- a/npm/packs/jquery-validation-unobtrusive/package.json
+++ b/npm/packs/jquery-validation-unobtrusive/package.json
@@ -1,11 +1,16 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/jquery-validation-unobtrusive",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/abpframework/abp.git",
+ "directory": "npm/packs/jquery-validation-unobtrusive"
+ },
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/jquery-validation": "~5.0.0-beta.1",
+ "@abp/jquery-validation": "~5.0.0-beta.2",
"jquery-validation-unobtrusive": "^3.2.11"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/jquery-validation/package.json b/npm/packs/jquery-validation/package.json
index 4d1fa17f11..2374460945 100644
--- a/npm/packs/jquery-validation/package.json
+++ b/npm/packs/jquery-validation/package.json
@@ -1,11 +1,16 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/jquery-validation",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/abpframework/abp.git",
+ "directory": "npm/packs/jquery-validation"
+ },
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/jquery": "~5.0.0-beta.1",
+ "@abp/jquery": "~5.0.0-beta.2",
"jquery-validation": "^1.19.2"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/jquery/package.json b/npm/packs/jquery/package.json
index 48427999bd..286501099f 100644
--- a/npm/packs/jquery/package.json
+++ b/npm/packs/jquery/package.json
@@ -1,11 +1,16 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/jquery",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/abpframework/abp.git",
+ "directory": "npm/packs/jquery"
+ },
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~5.0.0-beta.1",
+ "@abp/core": "~5.0.0-beta.2",
"jquery": "~3.6.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/jstree/package.json b/npm/packs/jstree/package.json
index e7422924b9..25c2cc12a2 100644
--- a/npm/packs/jstree/package.json
+++ b/npm/packs/jstree/package.json
@@ -1,11 +1,11 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/jstree",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/jquery": "~5.0.0-beta.1",
+ "@abp/jquery": "~5.0.0-beta.2",
"jstree": "^3.3.9"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/lodash/package.json b/npm/packs/lodash/package.json
index e59cdbb2c3..4d1ad4d008 100644
--- a/npm/packs/lodash/package.json
+++ b/npm/packs/lodash/package.json
@@ -1,11 +1,16 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/lodash",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/abpframework/abp.git",
+ "directory": "npm/packs/lodash"
+ },
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~5.0.0-beta.1",
+ "@abp/core": "~5.0.0-beta.2",
"lodash": "^4.17.15"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/luxon/package.json b/npm/packs/luxon/package.json
index 24a9f22ef5..19777ba38d 100644
--- a/npm/packs/luxon/package.json
+++ b/npm/packs/luxon/package.json
@@ -1,11 +1,16 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/luxon",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/abpframework/abp.git",
+ "directory": "npm/packs/luxon"
+ },
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~5.0.0-beta.1",
+ "@abp/core": "~5.0.0-beta.2",
"luxon": "^1.24.1"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/malihu-custom-scrollbar-plugin/package.json b/npm/packs/malihu-custom-scrollbar-plugin/package.json
index 21c2eb2873..4e8f856ddc 100644
--- a/npm/packs/malihu-custom-scrollbar-plugin/package.json
+++ b/npm/packs/malihu-custom-scrollbar-plugin/package.json
@@ -1,11 +1,16 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/malihu-custom-scrollbar-plugin",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/abpframework/abp.git",
+ "directory": "npm/packs/malihu-custom-scrollbar-plugin"
+ },
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~5.0.0-beta.1",
+ "@abp/core": "~5.0.0-beta.2",
"malihu-custom-scrollbar-plugin": "^3.1.5"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/markdown-it/package.json b/npm/packs/markdown-it/package.json
index 01e3e73be1..b2ac23dd06 100644
--- a/npm/packs/markdown-it/package.json
+++ b/npm/packs/markdown-it/package.json
@@ -1,11 +1,11 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/markdown-it",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~5.0.0-beta.1",
+ "@abp/core": "~5.0.0-beta.2",
"markdown-it": "^11.0.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/owl.carousel/package.json b/npm/packs/owl.carousel/package.json
index 96ce2a2911..b90e2f30e8 100644
--- a/npm/packs/owl.carousel/package.json
+++ b/npm/packs/owl.carousel/package.json
@@ -1,11 +1,11 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/owl.carousel",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~5.0.0-beta.1",
+ "@abp/core": "~5.0.0-beta.2",
"owl.carousel": "^2.3.4"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/popper.js/package.json b/npm/packs/popper.js/package.json
index fb566cf9e3..b983b45c98 100644
--- a/npm/packs/popper.js/package.json
+++ b/npm/packs/popper.js/package.json
@@ -1,11 +1,11 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/popper.js",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~5.0.0-beta.1",
+ "@abp/core": "~5.0.0-beta.2",
"popper.js": "^1.16.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/prismjs/package.json b/npm/packs/prismjs/package.json
index 4b5602d5db..50ee04050e 100644
--- a/npm/packs/prismjs/package.json
+++ b/npm/packs/prismjs/package.json
@@ -1,12 +1,12 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/prismjs",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/clipboard": "~5.0.0-beta.1",
- "@abp/core": "~5.0.0-beta.1",
+ "@abp/clipboard": "~5.0.0-beta.2",
+ "@abp/core": "~5.0.0-beta.2",
"prismjs": "^1.20.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/select2/package.json b/npm/packs/select2/package.json
index d6f927c2cd..fbd909e87e 100644
--- a/npm/packs/select2/package.json
+++ b/npm/packs/select2/package.json
@@ -1,11 +1,16 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/select2",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/abpframework/abp.git",
+ "directory": "npm/packs/select2"
+ },
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~5.0.0-beta.1",
+ "@abp/core": "~5.0.0-beta.2",
"select2": "^4.0.13"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/select2/src/select2-bootstrap-modal-patch.js b/npm/packs/select2/src/select2-bootstrap-modal-patch.js
index 1fee6e798d..d7b5d2d9c4 100644
--- a/npm/packs/select2/src/select2-bootstrap-modal-patch.js
+++ b/npm/packs/select2/src/select2-bootstrap-modal-patch.js
@@ -1,4 +1,6 @@
/*
https://select2.org/troubleshooting/common-problems
*/
-$.fn.modal.Constructor.prototype._enforceFocus = function () { };
\ No newline at end of file
+if ($.fn.modal) {
+ $.fn.modal.Constructor.prototype._enforceFocus = function () { };
+}
diff --git a/npm/packs/signalr/package.json b/npm/packs/signalr/package.json
index 9291206096..481ee9fc83 100644
--- a/npm/packs/signalr/package.json
+++ b/npm/packs/signalr/package.json
@@ -1,11 +1,11 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/signalr",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~5.0.0-beta.1",
+ "@abp/core": "~5.0.0-beta.2",
"@microsoft/signalr": "~3.1.5"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/slugify/package.json b/npm/packs/slugify/package.json
index 6ed3daf30d..4fcfde09aa 100644
--- a/npm/packs/slugify/package.json
+++ b/npm/packs/slugify/package.json
@@ -1,5 +1,5 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/slugify",
"publishConfig": {
"access": "public"
diff --git a/npm/packs/star-rating-svg/package.json b/npm/packs/star-rating-svg/package.json
index 4c2e7d1681..2e154aef75 100644
--- a/npm/packs/star-rating-svg/package.json
+++ b/npm/packs/star-rating-svg/package.json
@@ -1,11 +1,11 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/star-rating-svg",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/jquery": "~5.0.0-beta.1",
+ "@abp/jquery": "~5.0.0-beta.2",
"star-rating-svg": "^3.5.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/sweetalert2/package.json b/npm/packs/sweetalert2/package.json
index f7f2b0f40b..0aa8031c21 100644
--- a/npm/packs/sweetalert2/package.json
+++ b/npm/packs/sweetalert2/package.json
@@ -1,11 +1,16 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/sweetalert2",
"publishConfig": {
"access": "public"
},
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/abpframework/abp.git",
+ "directory":"npm/packs/sweetalert2"
+ },
"dependencies": {
- "@abp/core": "~5.0.0-beta.1",
+ "@abp/core": "~5.0.0-beta.2",
"sweetalert2": "^11.0.18"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/timeago/package.json b/npm/packs/timeago/package.json
index a7c44b3aac..961f424511 100644
--- a/npm/packs/timeago/package.json
+++ b/npm/packs/timeago/package.json
@@ -1,11 +1,16 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/timeago",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/abpframework/abp.git",
+ "directory": "npm/packs/timeago"
+ },
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/jquery": "~5.0.0-beta.1",
+ "@abp/jquery": "~5.0.0-beta.2",
"timeago": "^1.6.7"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/toastr/package.json b/npm/packs/toastr/package.json
index af10fda1bd..084b4885a7 100644
--- a/npm/packs/toastr/package.json
+++ b/npm/packs/toastr/package.json
@@ -1,11 +1,16 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/toastr",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/abpframework/abp.git",
+ "directory": "npm/packs/toastr"
+ },
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/jquery": "~5.0.0-beta.1",
+ "@abp/jquery": "~5.0.0-beta.2",
"toastr": "^2.1.4"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/tui-editor/package.json b/npm/packs/tui-editor/package.json
index 06271478af..f4d1b892aa 100644
--- a/npm/packs/tui-editor/package.json
+++ b/npm/packs/tui-editor/package.json
@@ -1,14 +1,14 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/tui-editor",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/codemirror": "~5.0.0-beta.1",
- "@abp/highlight.js": "~5.0.0-beta.1",
- "@abp/jquery": "~5.0.0-beta.1",
- "@abp/markdown-it": "~5.0.0-beta.1",
+ "@abp/codemirror": "~5.0.0-beta.2",
+ "@abp/highlight.js": "~5.0.0-beta.2",
+ "@abp/jquery": "~5.0.0-beta.2",
+ "@abp/markdown-it": "~5.0.0-beta.2",
"@toast-ui/editor": "^2.5.1"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/uppy/package.json b/npm/packs/uppy/package.json
index 1513d33781..ed3fb91b7e 100644
--- a/npm/packs/uppy/package.json
+++ b/npm/packs/uppy/package.json
@@ -1,11 +1,11 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/uppy",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/core": "~5.0.0-beta.1",
+ "@abp/core": "~5.0.0-beta.2",
"uppy": "^1.16.1"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/utils/package.json b/npm/packs/utils/package.json
index 841988f87a..4bcdad9335 100644
--- a/npm/packs/utils/package.json
+++ b/npm/packs/utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@abp/utils",
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"scripts": {
"prepublish": "yarn install --ignore-scripts && node prepublish.js",
"ng": "ng",
@@ -13,6 +13,11 @@
"access": "public"
},
"main": "dist/bundles/abp-utils.umd.js",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/abpframework/abp.git",
+ "directory": "npm/packs/utils"
+ },
"module": "dist/fesm2015/abp-utils.js",
"es2015_ivy_ngcc": "__ivy_ngcc__/dist/fesm2015/abp-utils.js",
"es2015": "dist/fesm2015/abp-utils.js",
diff --git a/npm/packs/vee-validate/package.json b/npm/packs/vee-validate/package.json
index 50276d1c3c..bb29b2c31c 100644
--- a/npm/packs/vee-validate/package.json
+++ b/npm/packs/vee-validate/package.json
@@ -1,11 +1,11 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/vee-validate",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/vue": "~5.0.0-beta.1",
+ "@abp/vue": "~5.0.0-beta.2",
"vee-validate": "~3.4.4"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
diff --git a/npm/packs/virtual-file-explorer/package.json b/npm/packs/virtual-file-explorer/package.json
index 0d113490de..3e22df29b2 100644
--- a/npm/packs/virtual-file-explorer/package.json
+++ b/npm/packs/virtual-file-explorer/package.json
@@ -1,12 +1,12 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/virtual-file-explorer",
"publishConfig": {
"access": "public"
},
"dependencies": {
- "@abp/clipboard": "~5.0.0-beta.1",
- "@abp/prismjs": "~5.0.0-beta.1"
+ "@abp/clipboard": "~5.0.0-beta.2",
+ "@abp/prismjs": "~5.0.0-beta.2"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431"
}
diff --git a/npm/packs/vue/package.json b/npm/packs/vue/package.json
index 01b9623b68..b24fee25c3 100644
--- a/npm/packs/vue/package.json
+++ b/npm/packs/vue/package.json
@@ -1,5 +1,5 @@
{
- "version": "5.0.0-beta.1",
+ "version": "5.0.0-beta.2",
"name": "@abp/vue",
"publishConfig": {
"access": "public"
diff --git a/npm/update-gulp.js b/npm/update-gulp.js
index 678c6a043b..d9a7c469aa 100644
--- a/npm/update-gulp.js
+++ b/npm/update-gulp.js
@@ -31,7 +31,7 @@ const updatePackages = (pkgJsonPath) => {
const result = childProcess
.execSync(
`ncu "/^@abp.*$/" --packageFile ${pkgJsonPath} -u${
- program.prerelase ? ' --target greatest' : ''
+ program.prerelase ? ' --target newest' : ''
}`
)
.toString();
diff --git a/nupkg/common.ps1 b/nupkg/common.ps1
index 7d48c1ac1d..f356175dd9 100644
--- a/nupkg/common.ps1
+++ b/nupkg/common.ps1
@@ -21,7 +21,8 @@ $solutions = (
"modules/users",
"modules/virtual-file-explorer",
"modules/blob-storing-database",
- "modules/cms-kit"
+ "modules/cms-kit",
+ "modules/studio"
)
# List of projects
@@ -73,6 +74,7 @@ $projects = (
"framework/src/Volo.Abp.BackgroundJobs.Quartz",
"framework/src/Volo.Abp.BackgroundWorkers",
"framework/src/Volo.Abp.BackgroundWorkers.Quartz",
+ "framework/src/Volo.Abp.BackgroundWorkers.Hangfire",
"framework/src/Volo.Abp.BlazoriseUI",
"framework/src/Volo.Abp.BlobStoring",
"framework/src/Volo.Abp.BlobStoring.FileSystem",
@@ -92,6 +94,7 @@ $projects = (
"framework/src/Volo.Abp.Ddd.Application",
"framework/src/Volo.Abp.Ddd.Application.Contracts",
"framework/src/Volo.Abp.Ddd.Domain",
+ "framework/src/Volo.Abp.DistributedLocking.Abstractions",
"framework/src/Volo.Abp.DistributedLocking",
"framework/src/Volo.Abp.Emailing",
"framework/src/Volo.Abp.EntityFrameworkCore",
@@ -103,7 +106,6 @@ $projects = (
"framework/src/Volo.Abp.EntityFrameworkCore.SqlServer",
"framework/src/Volo.Abp.EventBus.Abstractions",
"framework/src/Volo.Abp.EventBus",
- "framework/src/Volo.Abp.EventBus.Boxes",
"framework/src/Volo.Abp.EventBus.RabbitMQ",
"framework/src/Volo.Abp.EventBus.Kafka",
"framework/src/Volo.Abp.EventBus.Rebus",
@@ -165,24 +167,32 @@ $projects = (
"modules/account/src/Volo.Abp.Account.Web",
"modules/account/src/Volo.Abp.Account.Web.IdentityServer",
"modules/account/src/Volo.Abp.Account.Blazor",
+ "modules/account/src/Volo.Abp.Account.Installer",
+ "studio/source-codes/Volo.Abp.Account.SourceCode",
# modules/audit-logging
"modules/audit-logging/src/Volo.Abp.AuditLogging.Domain",
"modules/audit-logging/src/Volo.Abp.AuditLogging.Domain.Shared",
"modules/audit-logging/src/Volo.Abp.AuditLogging.EntityFrameworkCore",
"modules/audit-logging/src/Volo.Abp.AuditLogging.MongoDB",
+ "modules/audit-logging/src/Volo.Abp.AuditLogging.Installer",
+ "studio/source-codes/Volo.Abp.AuditLogging.SourceCode",
# modules/background-jobs
"modules/background-jobs/src/Volo.Abp.BackgroundJobs.Domain",
"modules/background-jobs/src/Volo.Abp.BackgroundJobs.Domain.Shared",
"modules/background-jobs/src/Volo.Abp.BackgroundJobs.EntityFrameworkCore",
"modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB",
+ "modules/background-jobs/src/Volo.Abp.BackgroundJobs.Installer",
+ "studio/source-codes/Volo.Abp.BackgroundJobs.SourceCode",
# modules/basic-theme
"modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme",
"modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme",
"modules/basic-theme/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme",
"modules/basic-theme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic",
+ "modules/basic-theme/src/Volo.Abp.BasicTheme.Installer",
+ "studio/source-codes/Volo.Abp.BasicTheme.SourceCode",
# modules/blogging
"modules/blogging/src/Volo.Blogging.Application.Contracts.Shared",
@@ -234,6 +244,8 @@ $projects = (
"modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor",
"modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor.Server",
"modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor.WebAssembly",
+ "modules/feature-management/src/Volo.Abp.FeatureManagement.Installer",
+ "studio/source-codes/Volo.Abp.FeatureManagement.SourceCode",
# modules/identity
"modules/identity/src/Volo.Abp.Identity.Application.Contracts",
@@ -250,6 +262,8 @@ $projects = (
"modules/identity/src/Volo.Abp.Identity.Blazor.Server",
"modules/identity/src/Volo.Abp.Identity.Blazor.WebAssembly",
"modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity",
+ "modules/identity/src/Volo.Abp.Identity.Installer",
+ "studio/source-codes/Volo.Abp.Identity.SourceCode",
# modules/identityserver
"modules/identityserver/src/Volo.Abp.IdentityServer.Domain",
@@ -257,6 +271,8 @@ $projects = (
"modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore",
"modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB",
"modules/identityserver/src/Volo.Abp.PermissionManagement.Domain.IdentityServer",
+ "modules/identityserver/src/Volo.Abp.IdentityServer.Installer",
+ "studio/source-codes/Volo.Abp.IdentityServer.SourceCode",
# modules/permission-management
"modules/permission-management/src/Volo.Abp.PermissionManagement.Application.Contracts",
@@ -271,6 +287,8 @@ $projects = (
"modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor",
"modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor.Server",
"modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor.WebAssembly",
+ "modules/permission-management/src/Volo.Abp.PermissionManagement.Installer",
+ "studio/source-codes/Volo.Abp.PermissionManagement.SourceCode",
# modules/setting-management
"modules/setting-management/src/Volo.Abp.SettingManagement.Application.Contracts",
@@ -285,6 +303,8 @@ $projects = (
"modules/setting-management/src/Volo.Abp.SettingManagement.HttpApi",
"modules/setting-management/src/Volo.Abp.SettingManagement.MongoDB",
"modules/setting-management/src/Volo.Abp.SettingManagement.Web",
+ "modules/setting-management/src/Volo.Abp.SettingManagement.Installer",
+ "studio/source-codes/Volo.Abp.SettingManagement.SourceCode",
# modules/tenant-management
"modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts",
@@ -299,6 +319,8 @@ $projects = (
"modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi",
"modules/tenant-management/src/Volo.Abp.TenantManagement.MongoDB",
"modules/tenant-management/src/Volo.Abp.TenantManagement.Web",
+ "modules/tenant-management/src/Volo.Abp.TenantManagement.Installer",
+ "studio/source-codes/Volo.Abp.TenantManagement.SourceCode",
# modules/users
"modules/users/src/Volo.Abp.Users.Abstractions",
@@ -306,15 +328,21 @@ $projects = (
"modules/users/src/Volo.Abp.Users.Domain.Shared",
"modules/users/src/Volo.Abp.Users.EntityFrameworkCore",
"modules/users/src/Volo.Abp.Users.MongoDB",
+ "modules/users/src/Volo.Abp.Users.Installer",
+ "studio/source-codes/Volo.Abp.Users.SourceCode",
# modules/virtual-file-explorer
"modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Web",
+ "modules/virtual-file-explorer/src/Volo.Abp.VirtualFileExplorer.Installer",
+ "studio/source-codes/Volo.Abp.VirtualFileExplorer.SourceCode",
# modules/blob-storing-database
"modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain",
"modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Domain.Shared",
"modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.EntityFrameworkCore",
"modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.MongoDB",
+ "modules/blob-storing-database/src/Volo.Abp.BlobStoring.Database.Installer",
+ "studio/source-codes/Volo.Abp.BlobStoring.Database.SourceCode",
# abp/cms-kit
"modules/cms-kit/src/Volo.CmsKit.Admin.Application",
@@ -340,5 +368,14 @@ $projects = (
"modules/cms-kit/src/Volo.CmsKit.Public.HttpApi",
"modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client",
"modules/cms-kit/src/Volo.CmsKit.Public.Web",
- "modules/cms-kit/src/Volo.CmsKit.Web"
+ "modules/cms-kit/src/Volo.CmsKit.Web",
+ "modules/cms-kit/src/Volo.CmsKit.Installer",
+ "studio/source-codes/Volo.CmsKit.SourceCode",
+
+ # abp/studio
+ "studio/src/Volo.Abp.Studio.Analyzing.Abstractions",
+ "studio/src/Volo.Abp.Studio.Domain.CommonServices",
+ "studio/src/Volo.Abp.Studio.Domain.Shared",
+ "studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions",
+ "studio/src/Volo.Abp.Studio.ModuleInstaller"
)
diff --git a/studio/Volo.Abp.Studio.Open.sln b/studio/Volo.Abp.Studio.Open.sln
new file mode 100644
index 0000000000..563e1d4602
--- /dev/null
+++ b/studio/Volo.Abp.Studio.Open.sln
@@ -0,0 +1,49 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{344A1096-CC05-42D1-BDDB-E254C27508A9}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Studio.Analyzing.Abstractions", "src\Volo.Abp.Studio.Analyzing.Abstractions\Volo.Abp.Studio.Analyzing.Abstractions.csproj", "{2271296E-33FD-46BE-97FD-9938193CB7D1}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Studio.Domain.CommonServices", "src\Volo.Abp.Studio.Domain.CommonServices\Volo.Abp.Studio.Domain.CommonServices.csproj", "{1C86021F-E522-41A1-AC3F-01B0E474D75E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Studio.Domain.Shared", "src\Volo.Abp.Studio.Domain.Shared\Volo.Abp.Studio.Domain.Shared.csproj", "{28132E4E-FFB9-45C4-99AD-1BCA04B3E597}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Studio.ModuleInstaller", "src\Volo.Abp.Studio.ModuleInstaller\Volo.Abp.Studio.ModuleInstaller.csproj", "{4FA11334-D727-4C14-9D71-1DB46AC3BE9C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Studio.ModuleInstaller.Abstractions", "src\Volo.Abp.Studio.ModuleInstaller.Abstractions\Volo.Abp.Studio.ModuleInstaller.Abstractions.csproj", "{99679BF9-B888-4814-8E85-F751984CAFF8}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {2271296E-33FD-46BE-97FD-9938193CB7D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2271296E-33FD-46BE-97FD-9938193CB7D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2271296E-33FD-46BE-97FD-9938193CB7D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2271296E-33FD-46BE-97FD-9938193CB7D1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1C86021F-E522-41A1-AC3F-01B0E474D75E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1C86021F-E522-41A1-AC3F-01B0E474D75E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1C86021F-E522-41A1-AC3F-01B0E474D75E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1C86021F-E522-41A1-AC3F-01B0E474D75E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {28132E4E-FFB9-45C4-99AD-1BCA04B3E597}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {28132E4E-FFB9-45C4-99AD-1BCA04B3E597}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {28132E4E-FFB9-45C4-99AD-1BCA04B3E597}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {28132E4E-FFB9-45C4-99AD-1BCA04B3E597}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4FA11334-D727-4C14-9D71-1DB46AC3BE9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4FA11334-D727-4C14-9D71-1DB46AC3BE9C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4FA11334-D727-4C14-9D71-1DB46AC3BE9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4FA11334-D727-4C14-9D71-1DB46AC3BE9C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {99679BF9-B888-4814-8E85-F751984CAFF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {99679BF9-B888-4814-8E85-F751984CAFF8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {99679BF9-B888-4814-8E85-F751984CAFF8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {99679BF9-B888-4814-8E85-F751984CAFF8}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {2271296E-33FD-46BE-97FD-9938193CB7D1} = {344A1096-CC05-42D1-BDDB-E254C27508A9}
+ {1C86021F-E522-41A1-AC3F-01B0E474D75E} = {344A1096-CC05-42D1-BDDB-E254C27508A9}
+ {28132E4E-FFB9-45C4-99AD-1BCA04B3E597} = {344A1096-CC05-42D1-BDDB-E254C27508A9}
+ {4FA11334-D727-4C14-9D71-1DB46AC3BE9C} = {344A1096-CC05-42D1-BDDB-E254C27508A9}
+ {99679BF9-B888-4814-8E85-F751984CAFF8} = {344A1096-CC05-42D1-BDDB-E254C27508A9}
+ EndGlobalSection
+EndGlobal
diff --git a/studio/source-codes/Volo.Abp.Account.SourceCode/Volo.Abp.Account.SourceCode.csproj b/studio/source-codes/Volo.Abp.Account.SourceCode/Volo.Abp.Account.SourceCode.csproj
new file mode 100644
index 0000000000..dfcded7827
--- /dev/null
+++ b/studio/source-codes/Volo.Abp.Account.SourceCode/Volo.Abp.Account.SourceCode.csproj
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+ net6.0
+
+
+
+
+
+ true
+ content\
+
+
+
diff --git a/studio/source-codes/Volo.Abp.Account.SourceCode/Volo.Abp.Account.SourceCode.zip b/studio/source-codes/Volo.Abp.Account.SourceCode/Volo.Abp.Account.SourceCode.zip
new file mode 100644
index 0000000000..b9f804564b
Binary files /dev/null and b/studio/source-codes/Volo.Abp.Account.SourceCode/Volo.Abp.Account.SourceCode.zip differ
diff --git a/studio/source-codes/Volo.Abp.AuditLogging.SourceCode/Volo.Abp.AuditLogging.SourceCode.csproj b/studio/source-codes/Volo.Abp.AuditLogging.SourceCode/Volo.Abp.AuditLogging.SourceCode.csproj
new file mode 100644
index 0000000000..7645af74d4
--- /dev/null
+++ b/studio/source-codes/Volo.Abp.AuditLogging.SourceCode/Volo.Abp.AuditLogging.SourceCode.csproj
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+ net6.0
+
+
+
+
+
+ true
+ content\
+
+
+
diff --git a/studio/source-codes/Volo.Abp.AuditLogging.SourceCode/Volo.Abp.AuditLogging.SourceCode.zip b/studio/source-codes/Volo.Abp.AuditLogging.SourceCode/Volo.Abp.AuditLogging.SourceCode.zip
new file mode 100644
index 0000000000..4659363044
Binary files /dev/null and b/studio/source-codes/Volo.Abp.AuditLogging.SourceCode/Volo.Abp.AuditLogging.SourceCode.zip differ
diff --git a/studio/source-codes/Volo.Abp.BackgroundJobs.SourceCode/Volo.Abp.BackgroundJobs.SourceCode.csproj b/studio/source-codes/Volo.Abp.BackgroundJobs.SourceCode/Volo.Abp.BackgroundJobs.SourceCode.csproj
new file mode 100644
index 0000000000..0a33d7b57d
--- /dev/null
+++ b/studio/source-codes/Volo.Abp.BackgroundJobs.SourceCode/Volo.Abp.BackgroundJobs.SourceCode.csproj
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+ net6.0
+
+
+
+
+
+ true
+ content\
+
+
+
diff --git a/studio/source-codes/Volo.Abp.BackgroundJobs.SourceCode/Volo.Abp.BackgroundJobs.SourceCode.zip b/studio/source-codes/Volo.Abp.BackgroundJobs.SourceCode/Volo.Abp.BackgroundJobs.SourceCode.zip
new file mode 100644
index 0000000000..2dbaa13bb9
Binary files /dev/null and b/studio/source-codes/Volo.Abp.BackgroundJobs.SourceCode/Volo.Abp.BackgroundJobs.SourceCode.zip differ
diff --git a/studio/source-codes/Volo.Abp.BasicTheme.SourceCode/Volo.Abp.BasicTheme.SourceCode.csproj b/studio/source-codes/Volo.Abp.BasicTheme.SourceCode/Volo.Abp.BasicTheme.SourceCode.csproj
new file mode 100644
index 0000000000..ef90639f4c
--- /dev/null
+++ b/studio/source-codes/Volo.Abp.BasicTheme.SourceCode/Volo.Abp.BasicTheme.SourceCode.csproj
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+ net6.0
+
+
+
+
+
+ true
+ content\
+
+
+
diff --git a/studio/source-codes/Volo.Abp.BasicTheme.SourceCode/Volo.Abp.BasicTheme.SourceCode.zip b/studio/source-codes/Volo.Abp.BasicTheme.SourceCode/Volo.Abp.BasicTheme.SourceCode.zip
new file mode 100644
index 0000000000..aa881f36a0
Binary files /dev/null and b/studio/source-codes/Volo.Abp.BasicTheme.SourceCode/Volo.Abp.BasicTheme.SourceCode.zip differ
diff --git a/studio/source-codes/Volo.Abp.BlobStoring.Database.SourceCode/Volo.Abp.BlobStoring.Database.SourceCode.csproj b/studio/source-codes/Volo.Abp.BlobStoring.Database.SourceCode/Volo.Abp.BlobStoring.Database.SourceCode.csproj
new file mode 100644
index 0000000000..2ccffa1bb8
--- /dev/null
+++ b/studio/source-codes/Volo.Abp.BlobStoring.Database.SourceCode/Volo.Abp.BlobStoring.Database.SourceCode.csproj
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+ net6.0
+
+
+
+
+
+ true
+ content\
+
+
+
diff --git a/studio/source-codes/Volo.Abp.BlobStoring.Database.SourceCode/Volo.Abp.BlobStoring.Database.SourceCode.zip b/studio/source-codes/Volo.Abp.BlobStoring.Database.SourceCode/Volo.Abp.BlobStoring.Database.SourceCode.zip
new file mode 100644
index 0000000000..fdc85f636c
Binary files /dev/null and b/studio/source-codes/Volo.Abp.BlobStoring.Database.SourceCode/Volo.Abp.BlobStoring.Database.SourceCode.zip differ
diff --git a/studio/source-codes/Volo.Abp.FeatureManagement.SourceCode/Volo.Abp.FeatureManagement.SourceCode.csproj b/studio/source-codes/Volo.Abp.FeatureManagement.SourceCode/Volo.Abp.FeatureManagement.SourceCode.csproj
new file mode 100644
index 0000000000..b670e3365e
--- /dev/null
+++ b/studio/source-codes/Volo.Abp.FeatureManagement.SourceCode/Volo.Abp.FeatureManagement.SourceCode.csproj
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+ net6.0
+
+
+
+
+
+ true
+ content\
+
+
+
diff --git a/studio/source-codes/Volo.Abp.FeatureManagement.SourceCode/Volo.Abp.FeatureManagement.SourceCode.zip b/studio/source-codes/Volo.Abp.FeatureManagement.SourceCode/Volo.Abp.FeatureManagement.SourceCode.zip
new file mode 100644
index 0000000000..e0e759b1f9
Binary files /dev/null and b/studio/source-codes/Volo.Abp.FeatureManagement.SourceCode/Volo.Abp.FeatureManagement.SourceCode.zip differ
diff --git a/studio/source-codes/Volo.Abp.Identity.SourceCode/Volo.Abp.Identity.SourceCode.csproj b/studio/source-codes/Volo.Abp.Identity.SourceCode/Volo.Abp.Identity.SourceCode.csproj
new file mode 100644
index 0000000000..0d61ae3ce3
--- /dev/null
+++ b/studio/source-codes/Volo.Abp.Identity.SourceCode/Volo.Abp.Identity.SourceCode.csproj
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+ net6.0
+
+
+
+
+
+ true
+ content\
+
+
+
diff --git a/studio/source-codes/Volo.Abp.Identity.SourceCode/Volo.Abp.Identity.SourceCode.zip b/studio/source-codes/Volo.Abp.Identity.SourceCode/Volo.Abp.Identity.SourceCode.zip
new file mode 100644
index 0000000000..e243461ac0
Binary files /dev/null and b/studio/source-codes/Volo.Abp.Identity.SourceCode/Volo.Abp.Identity.SourceCode.zip differ
diff --git a/studio/source-codes/Volo.Abp.IdentityServer.SourceCode/Volo.Abp.IdentityServer.SourceCode.csproj b/studio/source-codes/Volo.Abp.IdentityServer.SourceCode/Volo.Abp.IdentityServer.SourceCode.csproj
new file mode 100644
index 0000000000..97478e7c99
--- /dev/null
+++ b/studio/source-codes/Volo.Abp.IdentityServer.SourceCode/Volo.Abp.IdentityServer.SourceCode.csproj
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+ net6.0
+
+
+
+
+
+ true
+ content\
+
+
+
diff --git a/studio/source-codes/Volo.Abp.IdentityServer.SourceCode/Volo.Abp.IdentityServer.SourceCode.zip b/studio/source-codes/Volo.Abp.IdentityServer.SourceCode/Volo.Abp.IdentityServer.SourceCode.zip
new file mode 100644
index 0000000000..89613a9877
Binary files /dev/null and b/studio/source-codes/Volo.Abp.IdentityServer.SourceCode/Volo.Abp.IdentityServer.SourceCode.zip differ
diff --git a/studio/source-codes/Volo.Abp.PermissionManagement.SourceCode/Volo.Abp.PermissionManagement.SourceCode.csproj b/studio/source-codes/Volo.Abp.PermissionManagement.SourceCode/Volo.Abp.PermissionManagement.SourceCode.csproj
new file mode 100644
index 0000000000..9ddc7a7c16
--- /dev/null
+++ b/studio/source-codes/Volo.Abp.PermissionManagement.SourceCode/Volo.Abp.PermissionManagement.SourceCode.csproj
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+ net6.0
+
+
+
+
+
+ true
+ content\
+
+
+
diff --git a/studio/source-codes/Volo.Abp.PermissionManagement.SourceCode/Volo.Abp.PermissionManagement.SourceCode.zip b/studio/source-codes/Volo.Abp.PermissionManagement.SourceCode/Volo.Abp.PermissionManagement.SourceCode.zip
new file mode 100644
index 0000000000..8e7e4413d0
Binary files /dev/null and b/studio/source-codes/Volo.Abp.PermissionManagement.SourceCode/Volo.Abp.PermissionManagement.SourceCode.zip differ
diff --git a/studio/source-codes/Volo.Abp.SettingManagement.SourceCode/Volo.Abp.SettingManagement.SourceCode.csproj b/studio/source-codes/Volo.Abp.SettingManagement.SourceCode/Volo.Abp.SettingManagement.SourceCode.csproj
new file mode 100644
index 0000000000..ab045bb678
--- /dev/null
+++ b/studio/source-codes/Volo.Abp.SettingManagement.SourceCode/Volo.Abp.SettingManagement.SourceCode.csproj
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+ net6.0
+
+
+
+
+
+ true
+ content\
+
+
+
diff --git a/studio/source-codes/Volo.Abp.SettingManagement.SourceCode/Volo.Abp.SettingManagement.SourceCode.zip b/studio/source-codes/Volo.Abp.SettingManagement.SourceCode/Volo.Abp.SettingManagement.SourceCode.zip
new file mode 100644
index 0000000000..31ff3342c6
Binary files /dev/null and b/studio/source-codes/Volo.Abp.SettingManagement.SourceCode/Volo.Abp.SettingManagement.SourceCode.zip differ
diff --git a/studio/source-codes/Volo.Abp.TenantManagement.SourceCode/Volo.Abp.TenantManagement.SourceCode.csproj b/studio/source-codes/Volo.Abp.TenantManagement.SourceCode/Volo.Abp.TenantManagement.SourceCode.csproj
new file mode 100644
index 0000000000..e2744c5145
--- /dev/null
+++ b/studio/source-codes/Volo.Abp.TenantManagement.SourceCode/Volo.Abp.TenantManagement.SourceCode.csproj
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+ net6.0
+
+
+
+
+
+ true
+ content\
+
+
+
diff --git a/studio/source-codes/Volo.Abp.TenantManagement.SourceCode/Volo.Abp.TenantManagement.SourceCode.zip b/studio/source-codes/Volo.Abp.TenantManagement.SourceCode/Volo.Abp.TenantManagement.SourceCode.zip
new file mode 100644
index 0000000000..0d98b22322
Binary files /dev/null and b/studio/source-codes/Volo.Abp.TenantManagement.SourceCode/Volo.Abp.TenantManagement.SourceCode.zip differ
diff --git a/studio/source-codes/Volo.Abp.Users.SourceCode/Volo.Abp.Users.SourceCode.csproj b/studio/source-codes/Volo.Abp.Users.SourceCode/Volo.Abp.Users.SourceCode.csproj
new file mode 100644
index 0000000000..375fe08a93
--- /dev/null
+++ b/studio/source-codes/Volo.Abp.Users.SourceCode/Volo.Abp.Users.SourceCode.csproj
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+ net6.0
+
+
+
+
+
+ true
+ content\
+
+
+
diff --git a/studio/source-codes/Volo.Abp.Users.SourceCode/Volo.Abp.Users.SourceCode.zip b/studio/source-codes/Volo.Abp.Users.SourceCode/Volo.Abp.Users.SourceCode.zip
new file mode 100644
index 0000000000..5867c26ac5
Binary files /dev/null and b/studio/source-codes/Volo.Abp.Users.SourceCode/Volo.Abp.Users.SourceCode.zip differ
diff --git a/studio/source-codes/Volo.Abp.VirtualFileExplorer.SourceCode/Volo.Abp.VirtualFileExplorer.SourceCode.csproj b/studio/source-codes/Volo.Abp.VirtualFileExplorer.SourceCode/Volo.Abp.VirtualFileExplorer.SourceCode.csproj
new file mode 100644
index 0000000000..9a39ad9ec9
--- /dev/null
+++ b/studio/source-codes/Volo.Abp.VirtualFileExplorer.SourceCode/Volo.Abp.VirtualFileExplorer.SourceCode.csproj
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+ net6.0
+
+
+
+
+
+ true
+ content\
+
+
+
diff --git a/studio/source-codes/Volo.Abp.VirtualFileExplorer.SourceCode/Volo.Abp.VirtualFileExplorer.SourceCode.zip b/studio/source-codes/Volo.Abp.VirtualFileExplorer.SourceCode/Volo.Abp.VirtualFileExplorer.SourceCode.zip
new file mode 100644
index 0000000000..ba904407f0
Binary files /dev/null and b/studio/source-codes/Volo.Abp.VirtualFileExplorer.SourceCode/Volo.Abp.VirtualFileExplorer.SourceCode.zip differ
diff --git a/studio/source-codes/Volo.CmsKit.SourceCode/Volo.CmsKit.SourceCode.csproj b/studio/source-codes/Volo.CmsKit.SourceCode/Volo.CmsKit.SourceCode.csproj
new file mode 100644
index 0000000000..9d5f78c58e
--- /dev/null
+++ b/studio/source-codes/Volo.CmsKit.SourceCode/Volo.CmsKit.SourceCode.csproj
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+ net6.0
+
+
+
+
+
+ true
+ content\
+
+
+
diff --git a/studio/source-codes/Volo.CmsKit.SourceCode/Volo.CmsKit.SourceCode.zip b/studio/source-codes/Volo.CmsKit.SourceCode/Volo.CmsKit.SourceCode.zip
new file mode 100644
index 0000000000..0044566350
Binary files /dev/null and b/studio/source-codes/Volo.CmsKit.SourceCode/Volo.CmsKit.SourceCode.zip differ
diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo.Abp.Studio.Analyzing.Abstractions.csproj b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo.Abp.Studio.Analyzing.Abstractions.csproj
new file mode 100644
index 0000000000..3998636495
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo.Abp.Studio.Analyzing.Abstractions.csproj
@@ -0,0 +1,14 @@
+
+
+
+
+
+ netstandard2.0
+
+
+
+
+
+
+
+
diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/AbpStudioAnalyzingAbstractionsModule.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/AbpStudioAnalyzingAbstractionsModule.cs
new file mode 100644
index 0000000000..6935ae3755
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/AbpStudioAnalyzingAbstractionsModule.cs
@@ -0,0 +1,9 @@
+using Volo.Abp.Modularity;
+
+namespace Volo.Abp.Studio.Analyzing
+{
+ public class AbpStudioAnalyzingAbstractionsModule : AbpModule
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Application/ApplicationServiceModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Application/ApplicationServiceModel.cs
new file mode 100644
index 0000000000..3618b58711
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Application/ApplicationServiceModel.cs
@@ -0,0 +1,21 @@
+using System.Collections.Generic;
+using JetBrains.Annotations;
+
+namespace Volo.Abp.Studio.Analyzing.Models.Application
+{
+ [PackageContentItemName(ContentTypeName)]
+ public class ApplicationServiceModel : PackageContentItemModel
+ {
+ public const string ContentTypeName = "applicationService";
+
+ public string Namespace { get; set; }
+
+ public string Summary { get; set; }
+
+ public List ImplementingInterfaces { get; set; }
+
+ public ApplicationServiceModel([NotNull] string name) : base(name)
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Authorization/PermissionModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Authorization/PermissionModel.cs
new file mode 100644
index 0000000000..a386f5c4d5
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Authorization/PermissionModel.cs
@@ -0,0 +1,24 @@
+using JetBrains.Annotations;
+
+namespace Volo.Abp.Studio.Analyzing.Models.Authorization
+{
+ [PackageContentItemName(ContentTypeName)]
+ public class PermissionModel : PackageContentItemModel
+ {
+ public const string ContentTypeName = "permission";
+
+ public string DisplayName { get; }
+
+ public bool IsEnabled { get; }
+
+ public PermissionModel(
+ [NotNull] string name,
+ string displayName,
+ bool isEnabled)
+ : base(name)
+ {
+ DisplayName = displayName;
+ IsEnabled = isEnabled;
+ }
+ }
+}
\ No newline at end of file
diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/DatabaseCollectionModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/DatabaseCollectionModel.cs
new file mode 100644
index 0000000000..5e78f54f87
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/DatabaseCollectionModel.cs
@@ -0,0 +1,17 @@
+using JetBrains.Annotations;
+
+namespace Volo.Abp.Studio.Analyzing.Models.Database
+{
+ [PackageContentItemName(ContentTypeName)]
+ public class DatabaseCollectionModel : PackageContentItemModel
+ {
+ public const string ContentTypeName = "databaseCollection";
+
+ public string EntityFullName { get; private set; }
+
+ public DatabaseCollectionModel([NotNull] string name, string entityFullName) : base(name)
+ {
+ EntityFullName = Check.NotNullOrWhiteSpace(entityFullName, nameof(entityFullName));
+ }
+ }
+}
\ No newline at end of file
diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/DatabaseTableModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/DatabaseTableModel.cs
new file mode 100644
index 0000000000..a2af1acdbb
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/DatabaseTableModel.cs
@@ -0,0 +1,17 @@
+using JetBrains.Annotations;
+
+namespace Volo.Abp.Studio.Analyzing.Models.Database
+{
+ [PackageContentItemName(ContentTypeName)]
+ public class DatabaseTableModel : PackageContentItemModel
+ {
+ public const string ContentTypeName = "databaseTable";
+
+ public string EntityFullName { get; private set; }
+
+ public DatabaseTableModel([NotNull] string name, string entityFullName) : base(name)
+ {
+ EntityFullName = Check.NotNullOrWhiteSpace(entityFullName, nameof(entityFullName));
+ }
+ }
+}
\ No newline at end of file
diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/EfCoreDbContextModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/EfCoreDbContextModel.cs
new file mode 100644
index 0000000000..292b58e65f
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/EfCoreDbContextModel.cs
@@ -0,0 +1,25 @@
+using System.Collections.Generic;
+using JetBrains.Annotations;
+
+namespace Volo.Abp.Studio.Analyzing.Models.Database
+{
+ [PackageContentItemName(ContentTypeName)]
+ public class EfCoreDbContextModel : PackageContentItemModel, IDbContextModel
+ {
+ public const string ContentTypeName = "efCoreDbContext";
+
+ public string Namespace { get; private set; }
+
+ public string ConnectionStringName { get; set; }
+
+ public List DatabaseTables { get; set; }
+
+ public EfCoreDbContextModel(
+ [NotNull] string name,
+ [NotNull] string @namespace
+ ) : base(name)
+ {
+ Namespace = Check.NotNullOrWhiteSpace(@namespace, nameof(@namespace));
+ }
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/IDbContextModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/IDbContextModel.cs
new file mode 100644
index 0000000000..08c00162f5
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/IDbContextModel.cs
@@ -0,0 +1,7 @@
+namespace Volo.Abp.Studio.Analyzing.Models.Database
+{
+ public interface IDbContextModel
+ {
+ string ConnectionStringName { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/MongoDbContextModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/MongoDbContextModel.cs
new file mode 100644
index 0000000000..6fa6c80f79
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Database/MongoDbContextModel.cs
@@ -0,0 +1,25 @@
+using System.Collections.Generic;
+using JetBrains.Annotations;
+
+namespace Volo.Abp.Studio.Analyzing.Models.Database
+{
+ [PackageContentItemName(ContentTypeName)]
+ public class MongoDbContextModel : PackageContentItemModel, IDbContextModel
+ {
+ public const string ContentTypeName = "mongoDbContext";
+
+ public string Namespace { get; private set; }
+
+ public string ConnectionStringName { get; set; }
+
+ public List DatabaseCollections { get; set; }
+
+ public MongoDbContextModel(
+ [NotNull] string name,
+ [NotNull] string @namespace
+ ) : base(name)
+ {
+ Namespace = Check.NotNullOrWhiteSpace(@namespace, nameof(@namespace));
+ }
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/AggregateRootModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/AggregateRootModel.cs
new file mode 100644
index 0000000000..f31e07d8b1
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/AggregateRootModel.cs
@@ -0,0 +1,12 @@
+namespace Volo.Abp.Studio.Analyzing.Models.Domain
+{
+ [PackageContentItemName(ContentTypeName)]
+ public class AggregateRootModel : EntityModel
+ {
+ public new const string ContentTypeName = "aggregateRoot";
+
+ public AggregateRootModel(string name) : base(name)
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/DomainServiceModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/DomainServiceModel.cs
new file mode 100644
index 0000000000..6b4a648bcd
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/DomainServiceModel.cs
@@ -0,0 +1,18 @@
+using JetBrains.Annotations;
+
+namespace Volo.Abp.Studio.Analyzing.Models.Domain
+{
+ [PackageContentItemName(ContentTypeName)]
+ public class DomainServiceModel : PackageContentItemModel
+ {
+ public const string ContentTypeName = "domainService";
+
+ public string Namespace { get; set; }
+
+ public string Summary { get; set; }
+
+ public DomainServiceModel([NotNull] string name) : base(name)
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/EntityModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/EntityModel.cs
new file mode 100644
index 0000000000..0b3e5a5708
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/EntityModel.cs
@@ -0,0 +1,25 @@
+using System.Collections.Generic;
+
+namespace Volo.Abp.Studio.Analyzing.Models.Domain
+{
+ [PackageContentItemName(ContentTypeName)]
+ public class EntityModel : PackageContentItemModel
+ {
+ public const string ContentTypeName = "entity";
+
+ public string Namespace { get; set; }
+
+ public string PrimaryKeyType { get; set; }
+
+ public string Summary { get; set; }
+
+ public List CollectionProperties { get; set; }
+ public List NavigationProperties { get; set; }
+
+ public EntityModel(string name) : base(name)
+ {
+ CollectionProperties = new List();
+ NavigationProperties = new List();
+ }
+ }
+}
\ No newline at end of file
diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/RepositoryInterfaceModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/RepositoryInterfaceModel.cs
new file mode 100644
index 0000000000..a44613b335
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Domain/RepositoryInterfaceModel.cs
@@ -0,0 +1,20 @@
+using JetBrains.Annotations;
+
+namespace Volo.Abp.Studio.Analyzing.Models.Domain
+{
+ [PackageContentItemName(ContentTypeName)]
+ public class RepositoryInterfaceModel : PackageContentItemModel
+ {
+ public const string ContentTypeName = "repositoryInterface";
+
+ public string Namespace { get; set; }
+
+ public string Summary { get; set; }
+
+ public EntityModel EntityModel { get; set; }
+
+ public RepositoryInterfaceModel([NotNull] string name) : base(name)
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Feature/FeatureModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Feature/FeatureModel.cs
new file mode 100644
index 0000000000..ee2b7ef48b
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Feature/FeatureModel.cs
@@ -0,0 +1,40 @@
+using JetBrains.Annotations;
+
+namespace Volo.Abp.Studio.Analyzing.Models.Feature
+{
+ [PackageContentItemName(ContentTypeName)]
+ public class FeatureModel : PackageContentItemModel
+ {
+ public const string ContentTypeName = "feature";
+
+ public string ValueType { get; }
+
+ public string DefaultValue { get; }
+
+ public string DisplayName { get; }
+
+ public string Description { get; }
+
+ public bool IsAvailableToHost { get; }
+
+ public bool IsVisibleToClients { get; }
+
+ public FeatureModel(
+ [NotNull] string name,
+ [NotNull] string valueType,
+ string defaultValue,
+ string displayName,
+ string description,
+ bool isAvailableToHost,
+ bool isVisibleToClients
+ ) : base(name)
+ {
+ ValueType = valueType;
+ DefaultValue = defaultValue;
+ DisplayName = displayName;
+ Description = description;
+ IsAvailableToHost = isAvailableToHost;
+ IsVisibleToClients = isVisibleToClients;
+ }
+ }
+}
\ No newline at end of file
diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Module/AbpModuleModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Module/AbpModuleModel.cs
new file mode 100644
index 0000000000..9094d7d0b8
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Module/AbpModuleModel.cs
@@ -0,0 +1,16 @@
+using JetBrains.Annotations;
+
+namespace Volo.Abp.Studio.Analyzing.Models.Module
+{
+ [PackageContentItemName(ContentTypeName)]
+ public class AbpModuleModel : PackageContentItemModel
+ {
+ public const string ContentTypeName = "abpModule";
+
+ public string Namespace { get; set; }
+
+ public AbpModuleModel([NotNull] string name) : base(name)
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageContentItemModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageContentItemModel.cs
new file mode 100644
index 0000000000..749ecd8fa9
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageContentItemModel.cs
@@ -0,0 +1,16 @@
+using JetBrains.Annotations;
+
+namespace Volo.Abp.Studio.Analyzing.Models
+{
+ public abstract class PackageContentItemModel
+ {
+ public string ContentType { get; }
+ public string Name { get; }
+
+ public PackageContentItemModel([NotNull] string name)
+ {
+ Name = Check.NotNullOrWhiteSpace(name, nameof(name));
+ ContentType = PackageContentItemNameAttribute.GetName(GetType());
+ }
+ }
+}
\ No newline at end of file
diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageContentItemNameAttribute.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageContentItemNameAttribute.cs
new file mode 100644
index 0000000000..9a04fa274b
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageContentItemNameAttribute.cs
@@ -0,0 +1,26 @@
+using System;
+using Volo.Abp.Reflection;
+
+namespace Volo.Abp.Studio.Analyzing.Models
+{
+ public class PackageContentItemNameAttribute : Attribute
+ {
+ public string Name { get; }
+
+ public PackageContentItemNameAttribute(string name)
+ {
+ Name = name;
+ }
+
+ public static string GetName(Type type)
+ {
+ var attribute = ReflectionHelper.GetSingleAttributeOrDefault(type);
+ if (attribute == null)
+ {
+ throw new ApplicationException($"Given type {type.FullName} must have an {nameof(PackageContentItemNameAttribute)}, but not defined!");
+ }
+
+ return attribute.Name;
+ }
+ }
+}
\ No newline at end of file
diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageContentList.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageContentList.cs
new file mode 100644
index 0000000000..ab519cb264
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageContentList.cs
@@ -0,0 +1,9 @@
+using System.Collections.Generic;
+
+namespace Volo.Abp.Studio.Analyzing.Models
+{
+ public class PackageContentList : List
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageModel.cs
new file mode 100644
index 0000000000..74bcaac9cf
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/PackageModel.cs
@@ -0,0 +1,20 @@
+using JetBrains.Annotations;
+
+namespace Volo.Abp.Studio.Analyzing.Models
+{
+ public class PackageModel
+ {
+ public string Name { get; }
+
+ public string Hash { get; }
+
+ public PackageContentList Contents { get; }
+
+ public PackageModel([NotNull] string name, [NotNull] string hash)
+ {
+ Name = Check.NotNullOrWhiteSpace(name, nameof(name));
+ Contents = new PackageContentList();
+ Hash = hash;
+ }
+ }
+}
\ No newline at end of file
diff --git a/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Setting/SettingModel.cs b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Setting/SettingModel.cs
new file mode 100644
index 0000000000..910f81099f
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Analyzing.Abstractions/Volo/Abp/Studio/Analyzing/Models/Setting/SettingModel.cs
@@ -0,0 +1,26 @@
+using JetBrains.Annotations;
+
+namespace Volo.Abp.Studio.Analyzing.Models.Setting
+{
+ [PackageContentItemName(ContentTypeName)]
+ public class SettingModel : PackageContentItemModel
+ {
+ public const string ContentTypeName = "setting";
+
+ public string DefaultValue { get; set; }
+
+ public string DisplayName { get; set; }
+
+ public string Description { get; set; }
+
+ public bool IsVisibleToClient { get; set; }
+
+ public bool IsInherited { get; set; }
+
+ public bool IsEncrypted { get; set; }
+
+ public SettingModel([NotNull] string name) : base(name)
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo.Abp.Studio.Domain.CommonServices.csproj b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo.Abp.Studio.Domain.CommonServices.csproj
new file mode 100644
index 0000000000..0f266a153e
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo.Abp.Studio.Domain.CommonServices.csproj
@@ -0,0 +1,21 @@
+
+
+
+
+
+ net5.0
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/AbpStudioDomainCommonServicesModule.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/AbpStudioDomainCommonServicesModule.cs
new file mode 100644
index 0000000000..84b2dba930
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/AbpStudioDomainCommonServicesModule.cs
@@ -0,0 +1,17 @@
+using System.IO.Abstractions;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.Modularity;
+
+namespace Volo.Abp.Studio
+{
+ [DependsOn(
+ typeof(AbpStudioDomainSharedModule)
+ )]
+ public class AbpStudioDomainCommonServicesModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ context.Services.AddSingleton(new FileSystem());
+ }
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/AbpStudioException.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/AbpStudioException.cs
new file mode 100644
index 0000000000..418e6067b9
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/AbpStudioException.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Runtime.Serialization;
+using Microsoft.Extensions.Logging;
+
+namespace Volo.Abp.Studio
+{
+ public class AbpStudioException : BusinessException
+ {
+ public AbpStudioException(
+ string code = null,
+ string message = null,
+ string details = null,
+ Exception innerException = null,
+ LogLevel logLevel = LogLevel.Warning)
+ : base(code, message, details, innerException, logLevel)
+ {
+ Code = code;
+ Details = details;
+ LogLevel = logLevel;
+ }
+
+ public AbpStudioException(SerializationInfo serializationInfo, StreamingContext context)
+ : base(serializationInfo, context)
+ {
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Helpers/PathHelper.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Helpers/PathHelper.cs
new file mode 100644
index 0000000000..b741e37cf8
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Helpers/PathHelper.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Runtime.InteropServices;
+using JetBrains.Annotations;
+
+namespace Volo.Abp.Studio.Helpers
+{
+ public static class PathHelper
+ {
+ public static string GetRelativePath([NotNull] string basePath, [NotNull] string targetPath)
+ {
+ Check.NotNull(basePath, nameof(basePath));
+ Check.NotNull(targetPath, nameof(targetPath));
+
+ return new Uri(basePath).MakeRelativeUri(new Uri(targetPath)).ToString();
+ }
+
+ public static string EnsureForwardSlash(string path)
+ {
+ if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
+ {
+ return path.Replace("\\", "/");
+ }
+
+ return path;
+ }
+
+ public static string Normalize(string path)
+ {
+ if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
+ {
+ return path.Replace("/", "\\");
+ }
+
+ return path;
+ }
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/AbpModuleFileManager.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/AbpModuleFileManager.cs
new file mode 100644
index 0000000000..ccb90ad2e4
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/AbpModuleFileManager.cs
@@ -0,0 +1,77 @@
+using System;
+using System.Collections.Generic;
+using System.IO.Abstractions;
+using System.Linq;
+using System.Threading.Tasks;
+using Volo.Abp.DependencyInjection;
+
+namespace Volo.Abp.Studio.Packages.Modifying
+{
+ public class AbpModuleFileManager : IAbpModuleFileManager, ITransientDependency
+ {
+ public IFileSystem FileSystem { get; }
+
+ public AbpModuleFileManager(IFileSystem fileSystem)
+ {
+ FileSystem = fileSystem;
+ }
+
+ public async Task AddDependency(string filePath, string moduleToAdd)
+ {
+ var fileContent = await FileSystem.File.ReadAllTextAsync(filePath);
+ var moduleName = moduleToAdd.Split(".").Last();
+ var moduleNamespace = moduleToAdd.RemovePostFix("." + moduleName);
+ var usingStatement = $"using {moduleNamespace};";
+ var dependsOnStart = $"DependsOn(";
+
+ if (fileContent.Contains($"typeof({moduleName})"))
+ {
+ // module already added
+ return;
+ }
+
+ if (!fileContent.NormalizeLineEndings().SplitToLines().Any(l=> l.Trim().StartsWith("namespace ") && l.Contains(moduleNamespace)) &&
+ !fileContent.Contains(usingStatement)
+ )
+ {
+ fileContent = usingStatement + Environment.NewLine + fileContent;
+ }
+
+ if (!fileContent.Contains(dependsOnStart))
+ {
+ var fileLines = fileContent.NormalizeLineEndings().SplitToLines().ToList();
+ fileLines.InsertBefore(l=> l.Contains("public") && l.Contains("class"), $" [DependsOn(typeof({moduleName}))]");
+ fileContent = fileLines.JoinAsString(Environment.NewLine);
+ }
+ else
+ {
+ var fileLines = fileContent.NormalizeLineEndings().SplitToLines().ToList();
+ var dependsOnStartLine = fileLines.First(l=> l.Contains(dependsOnStart));
+ var dependsOnStartLineModified = dependsOnStartLine.Replace(dependsOnStart,
+ dependsOnStart + Environment.NewLine +
+ $" typeof({moduleName}),"
+ );
+ fileContent = fileContent.Replace(dependsOnStartLine, dependsOnStartLineModified);
+ }
+
+ FileSystem.File.WriteAllTextAsync(filePath, fileContent);
+ }
+
+ public async Task ExtractModuleNameWithNamespace(string filePath)
+ {
+ var fileContent = await FileSystem.File.ReadAllTextAsync(filePath);
+
+ var fileLines = fileContent.NormalizeLineEndings().SplitToLines();
+
+ var lineOfClassName = fileLines.First(l=> l.Contains("public") && l.Contains("class"));
+
+ var moduleName = lineOfClassName.Split(":")[0].Trim().Split(" ").Last();
+
+ var lineOfNamespace = fileLines.First(l=> l.Trim().StartsWith("namespace"));
+
+ var moduleNamespace = lineOfNamespace.Split(" ").Skip(1).First();
+
+ return moduleNamespace + "." + moduleName;
+ }
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/CsprojFileManager.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/CsprojFileManager.cs
new file mode 100644
index 0000000000..e1bf7bccd2
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/CsprojFileManager.cs
@@ -0,0 +1,204 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Threading.Tasks;
+using System.Xml;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Studio.Helpers;
+using Volo.Abp.Studio.Package;
+using Volo.Abp.Studio.Xml;
+
+namespace Volo.Abp.Studio.Packages.Modifying
+{
+ public class CsprojFileManager: XmlFileManagerBase, ICsprojFileManager, ITransientDependency
+ {
+ public async Task AddProjectReferenceAsync(string filePath, string projectToReference)
+ {
+ var document = await GetXmlDocumentAsync(filePath);
+
+ /*if (document.SelectNodes($"/Project/ItemGroup/ProjectReference[ends-with(@Include, '{Path.GetFileName(projectToReference)}')]").Count > 0)
+ {
+ return;
+ }*/
+
+ var packageReferenceToSameProject =
+ document.SelectNodes(
+ $"/Project/ItemGroup/PackageReference[starts-with(@Include, '{Path.GetFileName(projectToReference).RemovePostFix(".csproj")}')]"
+ );
+
+ if (packageReferenceToSameProject.Count > 0)
+ {
+ packageReferenceToSameProject[0].ParentNode.RemoveChild(packageReferenceToSameProject[0]);
+ }
+
+ var relativePath = PathHelper.GetRelativePath(filePath, projectToReference);
+
+ var itemGroupNode = GetOrCreateItemGroupNode(document);
+
+ var newNode = document.CreateElement("ProjectReference");
+
+ var includeAttr = document.CreateAttribute("Include");
+ includeAttr.Value = relativePath;
+ newNode.Attributes.Append(includeAttr);
+
+ itemGroupNode.AppendChild(newNode);
+
+ await SaveXmlDocumentAsync(filePath, document);
+ }
+
+ public async Task AddPackageReferenceAsync(string filePath, string packageName, string version)
+ {
+ var document = await GetXmlDocumentAsync(filePath);
+
+ if (document.SelectNodes($"/Project/ItemGroup/PackageReference[starts-with(@Include, '{packageName}')]").Count > 0)
+ {
+ // Package reference is already added.
+ return;
+ }
+
+ var itemGroupNode = GetOrCreateItemGroupNode(document);
+
+ var newNode = document.CreateElement("PackageReference");
+
+ var includeAttr = document.CreateAttribute("Include");
+ includeAttr.Value = packageName;
+ newNode.Attributes.Append(includeAttr);
+
+ var versionAttr = document.CreateAttribute("Version");
+ versionAttr.Value = version;
+ newNode.Attributes.Append(versionAttr);
+
+ itemGroupNode.AppendChild(newNode);
+ itemGroupNode.AppendChild(document.CreateWhitespace(Environment.NewLine + " "));
+
+ await SaveXmlDocumentAsync(filePath, document);
+ }
+
+ public async Task ConvertPackageReferenceToProjectReferenceAsync(string filePath, string projectToReference)
+ {
+ var document = await GetXmlDocumentAsync(filePath);
+
+ var packageName = Path.GetFileName(projectToReference).RemovePostFix(".csproj");
+
+ var matchedNodes = document.SelectNodes($"/Project/ItemGroup/PackageReference[starts-with(@Include, '{packageName}')]");
+
+ if (matchedNodes.Count == 0)
+ {
+ return;
+ }
+
+ XmlNode targetNode = null;
+
+ foreach (XmlNode matchedNode in matchedNodes)
+ {
+ if (matchedNode.Attributes["Include"].Value == packageName)
+ {
+ targetNode = matchedNode;
+ break;
+ }
+ }
+
+ if (targetNode == null)
+ {
+ return;
+ }
+
+ var targetNodeParent = targetNode.ParentNode;
+
+ targetNodeParent.RemoveChild(targetNode);
+
+ var relativePath = PathHelper.GetRelativePath(filePath, projectToReference);
+
+ var newNode = document.CreateElement("ProjectReference");
+
+ var includeAttr = document.CreateAttribute("Include");
+ includeAttr.Value = relativePath;
+ newNode.Attributes.Append(includeAttr);
+
+ targetNodeParent.AppendChild(newNode);
+
+ await SaveXmlDocumentAsync(filePath, document);
+ }
+
+ public async Task GetTargetFrameworkAsync(string filePath)
+ {
+ var document = await GetXmlDocumentAsync(filePath);
+
+ var nodes = document["Project"]?["PropertyGroup"]?.SelectNodes("TargetFramework");
+
+ if (nodes == null || nodes.Count == 0)
+ {
+ return null;
+ }
+
+ return nodes[0].InnerText.Trim();
+ }
+
+ public async Task> GetDependencyListAsync(string filePath)
+ {
+ var result = new List();
+
+ var document = await GetXmlDocumentAsync(filePath);
+
+ var packageReferenceNodes = document.SelectNodes($"/Project/ItemGroup/PackageReference");
+ var projectReferenceNodes = document.SelectNodes($"/Project/ItemGroup/ProjectReference");
+
+ if (packageReferenceNodes != null && packageReferenceNodes.Count > 0)
+ {
+ foreach (XmlNode packageReferenceNode in packageReferenceNodes)
+ {
+ result.Add(
+ new PackageDependency(
+ packageReferenceNode.Attributes["Include"].Value,
+ packageReferenceNode.Attributes["Version"].Value
+ )
+ );
+ }
+ }
+
+ if (projectReferenceNodes != null && projectReferenceNodes.Count > 0)
+ {
+ foreach (XmlNode projectReferenceNode in projectReferenceNodes)
+ {
+ result.Add(
+ new PackageDependency(
+ Path.GetFullPath(Path.Combine(Path.GetDirectoryName(filePath), projectReferenceNode.Attributes["Include"].Value))
+ )
+ );
+ }
+ }
+
+ return result;
+ }
+
+ private XmlNode GetOrCreateItemGroupNode(XmlDocument document)
+ {
+ var nodes = document["Project"].SelectNodes("ItemGroup");
+
+ if (nodes == null || nodes.Count < 1)
+ {
+ var newNode = document.CreateElement("ItemGroup");
+ document["Project"].AppendChild(newNode);
+ return newNode;
+ }
+
+ foreach (XmlNode node in nodes)
+ {
+ if (node.SelectNodes("ProjectReference").Count > 0)
+ {
+ return node;
+ }
+ }
+
+ foreach (XmlNode node in nodes)
+ {
+ if (node.SelectNodes("PackageReference").Count > 0)
+ {
+ return node;
+ }
+ }
+
+ return nodes[0];
+ }
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/IAbpModuleFileManager.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/IAbpModuleFileManager.cs
new file mode 100644
index 0000000000..7eb2060e48
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/IAbpModuleFileManager.cs
@@ -0,0 +1,11 @@
+using System.Threading.Tasks;
+
+namespace Volo.Abp.Studio.Packages.Modifying
+{
+ public interface IAbpModuleFileManager
+ {
+ Task AddDependency(string filePath, string moduleToAdd);
+
+ Task ExtractModuleNameWithNamespace(string filePath);
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/ICsprojFileManager.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/ICsprojFileManager.cs
new file mode 100644
index 0000000000..af8c466c17
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Modifying/ICsprojFileManager.cs
@@ -0,0 +1,19 @@
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Volo.Abp.Studio.Package;
+
+namespace Volo.Abp.Studio.Packages.Modifying
+{
+ public interface ICsprojFileManager
+ {
+ Task AddProjectReferenceAsync(string filePath, string projectToReference);
+
+ Task AddPackageReferenceAsync(string filePath, string packageName, string version);
+
+ Task ConvertPackageReferenceToProjectReferenceAsync(string filePath, string projectToReference);
+
+ Task GetTargetFrameworkAsync(string filePath);
+
+ Task> GetDependencyListAsync(string filePath);
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/INugetSourceCodeStore.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/INugetSourceCodeStore.cs
new file mode 100644
index 0000000000..6fce22dbe0
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/INugetSourceCodeStore.cs
@@ -0,0 +1,18 @@
+using System.Threading.Tasks;
+
+namespace Volo.Abp.Studio.Nuget
+{
+ public interface INugetSourceCodeStore
+ {
+ Task GetCachedSourceCodeFilePathAsync(string name,
+ string type,
+ string version = null,
+ bool includePreReleases = false);
+
+ Task GetCachedDllFilePathAsync(string name,
+ string type,
+ string version = null,
+ bool includePreReleases = false,
+ bool includeDependencies = false);
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/NugetPackageCacheManager.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/NugetPackageCacheManager.cs
new file mode 100644
index 0000000000..b4a21560cb
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/NugetPackageCacheManager.cs
@@ -0,0 +1,36 @@
+using System;
+using System.IO;
+using System.Threading.Tasks;
+using Volo.Abp.Cli.Utils;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Studio.Helpers;
+
+namespace Volo.Abp.Studio.Nuget
+{
+ public class NugetPackageCacheManager : ITransientDependency
+ {
+ private readonly ICmdHelper _cmdHelper;
+
+ public NugetPackageCacheManager(ICmdHelper cmdHelper)
+ {
+ _cmdHelper = cmdHelper;
+ }
+
+ public async Task CachePackageAsync(string packageName, string version, bool deleteAfter = true)
+ {
+ var temporaryFolder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
+
+ Directory.CreateDirectory(temporaryFolder);
+
+ _cmdHelper.RunCmdAndGetOutput("dotnet new console -lang c#", temporaryFolder);
+ _cmdHelper.RunCmdAndGetOutput($"dotnet add package {packageName} --version {version}", temporaryFolder);
+
+ if (deleteAfter)
+ {
+ Directory.Delete(temporaryFolder, true);
+ }
+
+ return temporaryFolder;
+ }
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/NugetSourceCodeStore.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/NugetSourceCodeStore.cs
new file mode 100644
index 0000000000..c81d95b2dc
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/NugetSourceCodeStore.cs
@@ -0,0 +1,163 @@
+using System;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using Volo.Abp.Cli.NuGet;
+using Volo.Abp.Cli.ProjectBuilding;
+using Volo.Abp.Cli.Utils;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Studio.Helpers;
+using Volo.Abp.Studio.Modules;
+
+namespace Volo.Abp.Studio.Nuget
+{
+ [Dependency(ReplaceServices = true)]
+ public class NugetSourceCodeStore : ISourceCodeStore, INugetSourceCodeStore, ITransientDependency
+ {
+ private readonly NuGetService _nuGetService;
+ private readonly NugetPackageCacheManager _nugetPackageCacheManager;
+ private readonly ICmdHelper _cmdHelper;
+
+ public NugetSourceCodeStore(
+ NuGetService nuGetService,
+ NugetPackageCacheManager nugetPackageCacheManager,
+ ICmdHelper cmdHelper)
+ {
+ _nuGetService = nuGetService;
+ _nugetPackageCacheManager = nugetPackageCacheManager;
+ _cmdHelper = cmdHelper;
+ }
+
+ public async Task GetAsync(
+ string name,
+ string type,
+ string version = null,
+ string templateSource = null,
+ bool includePreReleases = false)
+ {
+ name = GetNugetPackageName(name, type);
+
+ var latestVersion = await GetLatestVersionAsync(name, includePreReleases);
+
+ version ??= latestVersion;
+
+ var localCachedFilePath = await GetLocalCacheSourceCodeFilePathInternal(name, version);
+
+ if (localCachedFilePath == null)
+ {
+ return null;
+ }
+
+ return new TemplateFile(await File.ReadAllBytesAsync(localCachedFilePath), version, latestVersion, version);
+ }
+
+ public async Task GetCachedSourceCodeFilePathAsync(string name, string type, string version = null,
+ bool includePreReleases = false)
+ {
+ name = GetNugetPackageName(name, type);
+
+ version ??= await GetLatestVersionAsync(name, includePreReleases);
+
+ return await GetLocalCacheSourceCodeFilePathInternal(name, version);
+ }
+
+ public async Task GetCachedDllFilePathAsync(string name, string type, string version = null, bool includePreReleases = false, bool includeDependencies = false)
+ {
+ if (type == SourceCodeTypes.Template)
+ {
+ name = TemplateNugetPackageInfoProvider.GetNugetPackageName(name);
+ }
+
+ version ??= await GetLatestVersionAsync(name, includePreReleases);
+
+ var localDllFolder = Path.Combine(
+ GetLocalNugetCachePath(),
+ name,
+ version,
+ "lib");
+
+ if (!Directory.Exists(localDllFolder) ||
+ (includeDependencies && !Directory.GetFiles(localDllFolder, $"*Volo.Abp.Studio.ModuleInstaller.dll", SearchOption.AllDirectories).Any()))
+ {
+ if (includeDependencies)
+ {
+ var temporaryFolder = await _nugetPackageCacheManager.CachePackageAsync(name, version, false);
+
+ var outputFolder = Path.GetDirectoryName(
+ Directory
+ .GetFiles(localDllFolder, $"*{name}.dll", SearchOption.AllDirectories)
+ .First()
+ );
+
+ _cmdHelper.RunCmdAndGetOutput($"dotnet build -o {outputFolder}", temporaryFolder);
+
+ Directory.Delete(temporaryFolder, true);
+ }
+ else
+ {
+ await _nugetPackageCacheManager.CachePackageAsync(name, version);
+ }
+ }
+
+ if (!Directory.Exists(localDllFolder))
+ {
+ return null;
+ }
+
+ return Directory.GetFiles(localDllFolder, $"{name}.dll", SearchOption.AllDirectories).FirstOrDefault();
+ }
+
+ private async Task GetLatestVersionAsync(string nugetPackage, bool includePreReleases)
+ {
+ var v = await _nuGetService.GetLatestVersionOrNullAsync(nugetPackage, includePreReleases);
+
+ return v.ToString();
+ }
+
+ private async Task GetLocalCacheSourceCodeFilePathInternal(string name, string version)
+ {
+ var localCacheFile = Path.Combine(
+ GetLocalNugetCachePath(),
+ name,
+ version,
+ "content",
+ $"{name}.zip");
+
+
+ if (!File.Exists(localCacheFile))
+ {
+ await _nugetPackageCacheManager.CachePackageAsync(name, version);
+
+ if (!File.Exists(localCacheFile))
+ {
+ return null;
+ }
+ }
+
+ return localCacheFile;
+ }
+
+ private string GetLocalNugetCachePath()
+ {
+ return Path.Combine(
+ Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),
+ ".nuget",
+ "packages");
+ }
+
+ private string GetNugetPackageName(string name, string type)
+ {
+ if (type == SourceCodeTypes.Template)
+ {
+ return TemplateNugetPackageInfoProvider.GetNugetPackageName(name);
+ }
+
+ if (type == SourceCodeTypes.Module)
+ {
+ return name + ModuleConsts.SourceCorePackagePostfix;
+ }
+
+ return name;
+ }
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/TemplateNugetPackageInfoProvider.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/TemplateNugetPackageInfoProvider.cs
new file mode 100644
index 0000000000..03765f96c1
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Nuget/TemplateNugetPackageInfoProvider.cs
@@ -0,0 +1,18 @@
+using System.Threading.Tasks;
+
+namespace Volo.Abp.Studio.Nuget
+{
+ public static class TemplateNugetPackageInfoProvider
+ {
+ public static string GetNugetPackageName(string template)
+ {
+ switch (template)
+ {
+ case "app":
+ return "Cotur.Abp.Basic.Template"; // todo: replace with real template!
+ default:
+ return null;
+ }
+ }
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Package/PackageDependency.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Package/PackageDependency.cs
new file mode 100644
index 0000000000..1a9d2e1396
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Package/PackageDependency.cs
@@ -0,0 +1,30 @@
+using System;
+using System.IO;
+
+namespace Volo.Abp.Studio.Package
+{
+ public class PackageDependency
+ {
+ public ReferenceType Type { get; }
+
+ public string Name { get; }
+
+ public string Version { get; }
+
+ public string Path { get; }
+
+ public PackageDependency(string name, string version)
+ {
+ Type = ReferenceType.Package;
+ Name = name;
+ Version = version;
+ }
+
+ public PackageDependency(string path)
+ {
+ Type = ReferenceType.Project;
+ Path = path;
+ Name = System.IO.Path.GetFileName(path).RemovePostFix(".csproj");
+ }
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Package/PackageTypes.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Package/PackageTypes.cs
new file mode 100644
index 0000000000..cc5870f783
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Package/PackageTypes.cs
@@ -0,0 +1,244 @@
+using System.Collections.Generic;
+
+namespace Volo.Abp.Studio.Packages
+{
+ public static class PackageTypes
+ {
+ public const string Domain = "lib.domain";
+ public const string DomainShared = "lib.domain-shared";
+ public const string Application = "lib.application";
+ public const string ApplicationContracts = "lib.application-contracts";
+ public const string EntityFrameworkCore = "lib.ef";
+ public const string MongoDB = "lib.mongodb";
+ public const string HttpApi = "lib.http-api";
+ public const string HttpApiClient = "lib.http-api-client";
+ public const string Mvc = "lib.mvc";
+ public const string Blazor = "lib.blazor";
+ public const string BlazorWebAssembly = "lib.blazor-wasm";
+ public const string BlazorServer = "lib.blazor-server";
+ public const string Test = "lib.test";
+
+ public const string HostHttpApi = "host.http-api";
+ public const string HostMvc = "host.mvc";
+ public const string HostBlazorWebAssembly = "host.blazor-wasm";
+ public const string HostBlazorServer = "host.blazor-server";
+ public const string HostApiGatewayOcelot = "host.api-gateway-ocelot";
+
+ public static string CalculateDefaultPackageNameForModule(
+ string moduleName,
+ string packageType)
+ {
+ switch (packageType)
+ {
+ case Domain:
+ return moduleName + ".Domain";
+ case DomainShared:
+ return moduleName + ".Domain.Shared";
+ case Application:
+ return moduleName + ".Application";
+ case ApplicationContracts:
+ return moduleName + ".Application.Contracts";
+ case EntityFrameworkCore:
+ return moduleName + ".EntityFrameworkCore";
+ case HttpApi:
+ return moduleName + ".HttpApi";
+ case HttpApiClient:
+ return moduleName + ".HttpApi.Client";
+ case MongoDB:
+ return moduleName + ".MongoDB";
+ case Mvc:
+ return moduleName + ".Web";
+ case Blazor:
+ return moduleName + ".Blazor";
+ case BlazorWebAssembly:
+ return moduleName + ".Blazor.WebAssembly";
+ case BlazorServer:
+ return moduleName + ".Blazor.Server";
+ case HostHttpApi:
+ return moduleName + ".HttpApi.Host";
+ case HostMvc:
+ return moduleName + ".Web.Host";
+ case HostBlazorWebAssembly:
+ return moduleName + ".Blazor.Client";
+ case HostBlazorServer:
+ return moduleName + ".Blazor.Host";
+ case HostApiGatewayOcelot:
+ return moduleName + ".Gateway";
+ default:
+ throw new AbpStudioException(AbpStudioErrorCodes.PackageNameMustBeSpecified);
+ }
+ }
+
+ public static bool IsHostProject(string packageType)
+ {
+ return
+ packageType == HostMvc ||
+ packageType == HostHttpApi ||
+ packageType == HostBlazorWebAssembly ||
+ packageType == HostBlazorServer ||
+ packageType == HostApiGatewayOcelot;
+ }
+
+ public static bool IsUiProject(string packageType)
+ {
+ return
+ packageType == Mvc ||
+ packageType == BlazorWebAssembly ||
+ packageType == BlazorServer;
+ }
+
+ public static string GetHostTypeOfUi(string packageType, bool useHostBlazorServerForMvcPackages = false)
+ {
+ return packageType switch
+ {
+ Mvc => !useHostBlazorServerForMvcPackages ? HostMvc : HostBlazorServer,
+ BlazorWebAssembly => HostBlazorWebAssembly,
+ BlazorServer => HostBlazorServer,
+ _ => null
+ };
+ }
+
+ public static List GetSuggestedInstallationType(string packageType)
+ {
+ if (packageType == DomainShared)
+ {
+ return new List()
+ {
+ Domain,
+ DomainShared,
+ ApplicationContracts
+ };
+ }
+
+ if (packageType == Domain)
+ {
+ return new List()
+ {
+ Domain,
+ Application
+ };
+ }
+
+ if (packageType == ApplicationContracts)
+ {
+ return new List()
+ {
+ Application,
+ ApplicationContracts,
+ Mvc,
+ Blazor,
+ BlazorServer,
+ BlazorWebAssembly,
+ HttpApi
+ };
+ }
+
+ if (packageType == Application)
+ {
+ return new List()
+ {
+ Application,
+ HostMvc,
+ HostBlazorServer,
+ HostBlazorWebAssembly,
+ HostHttpApi
+ };
+ }
+
+ if (packageType == EntityFrameworkCore)
+ {
+ return new List()
+ {
+ EntityFrameworkCore,
+ HostMvc,
+ HostBlazorServer,
+ HostBlazorWebAssembly,
+ HostHttpApi
+ };
+ }
+
+ if (packageType == MongoDB)
+ {
+ return new List()
+ {
+ MongoDB,
+ HostMvc,
+ HostBlazorServer,
+ HostBlazorWebAssembly,
+ HostHttpApi
+ };
+ }
+
+ if (packageType == HttpApi)
+ {
+ return new List()
+ {
+ HttpApi,
+ HostMvc,
+ HostBlazorServer,
+ HostBlazorWebAssembly,
+ HostHttpApi
+ };
+ }
+
+ if (packageType == HttpApiClient)
+ {
+ return new List()
+ {
+ HttpApiClient,
+ HostMvc,
+ HostBlazorServer,
+ HostBlazorWebAssembly,
+ HostHttpApi
+ };
+ }
+
+ if (packageType == Mvc)
+ {
+ return new List()
+ {
+ Mvc,
+ HostMvc
+ };
+ }
+
+ if (packageType == Blazor)
+ {
+ return new List()
+ {
+ Blazor,
+ BlazorServer,
+ BlazorWebAssembly
+ };
+ }
+
+ if (packageType == BlazorServer)
+ {
+ return new List()
+ {
+ BlazorServer,
+ HostBlazorServer
+ };
+ }
+
+ if (packageType == BlazorWebAssembly)
+ {
+ return new List()
+ {
+ BlazorWebAssembly,
+ HostBlazorWebAssembly
+ };
+ }
+
+ if (packageType == Test)
+ {
+ return new List()
+ {
+ Test
+ };
+ }
+
+ return new List();
+ }
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Package/ReferenceType.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Package/ReferenceType.cs
new file mode 100644
index 0000000000..5c4d83b2f9
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Package/ReferenceType.cs
@@ -0,0 +1,8 @@
+namespace Volo.Abp.Studio.Package
+{
+ public enum ReferenceType
+ {
+ Project = 1,
+ Package = 2
+ }
+}
\ No newline at end of file
diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/DotnetSlnFileModifierService.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/DotnetSlnFileModifierService.cs
new file mode 100644
index 0000000000..5fadc93569
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/DotnetSlnFileModifierService.cs
@@ -0,0 +1,126 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.IO.Abstractions;
+using System.Linq;
+using System.Threading.Tasks;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Studio.Helpers;
+
+namespace Volo.Abp.Studio.Solution
+{
+ public class DotnetSlnFileModifierService : IDotnetSlnFileModifierService, ITransientDependency
+ {
+ public IFileSystem FileSystem { get; }
+
+ public DotnetSlnFileModifierService(IFileSystem fileSystem)
+ {
+ FileSystem = fileSystem;
+ }
+
+ public async Task AddProjectAsync(string slnFilePath, string projectPath, string slnTargetFolder = "src")
+ {
+ var projectName = FileSystem.Path.GetFileName(projectPath).RemovePostFix(".csproj");
+ var folderId = await GetOrAddFolderIdAsync(slnFilePath, slnTargetFolder);
+ var slnFileLines = (await FileSystem.File.ReadAllTextAsync(slnFilePath))
+ .Split(Environment.NewLine).ToList();
+
+ if (slnFileLines.Any(l => l.Contains($"\"{projectName}\"") && l.Contains("9A19103F-16F7-4668-BE54-9A1E7A4F7556")))
+ {
+ throw new AbpStudioException(AbpStudioErrorCodes.ProjectWithSameNameAlreadyExistInTheSolutionFile)
+ .WithData("Solution Path", slnFilePath)
+ .WithData("Project Name", projectName);
+ }
+
+ var projectId = Guid.NewGuid().ToString();
+ var relativeProjectPath = PathHelper.GetRelativePath(slnFilePath, projectPath).Replace("/", "\\");
+ var newProjectLine = "Project(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"" + projectName + "\"," +
+ " \"" + relativeProjectPath + "\", \"{" + projectId + "}\""
+ + Environment.NewLine + "EndProject";
+
+ slnFileLines.InsertAfter(l => l.Trim().Equals("EndProject"), newProjectLine);
+
+ var newPostSolutionLine =
+ " {" + projectId + "}.Debug|Any CPU.ActiveCfg = Debug|Any CPU" + Environment.NewLine +
+ " {" + projectId + "}.Debug|Any CPU.Build.0 = Debug|Any CPU" + Environment.NewLine +
+ " {" + projectId + "}.Release|Any CPU.ActiveCfg = Release|Any CPU" + Environment.NewLine +
+ " {" + projectId + "}.Release|Any CPU.Build.0 = Release|Any CPU";
+
+ if (!slnFileLines.Any(l => l.Contains("GlobalSection") && l.Contains("ProjectConfigurationPlatforms")))
+ {
+ slnFileLines.InsertBefore(l => l.Trim().Equals("EndGlobal"), " GlobalSection(ProjectConfigurationPlatforms) = postSolution");
+ slnFileLines.InsertBefore(l => l.Trim().Equals("EndGlobal"), " EndGlobalSection");
+ }
+
+ slnFileLines.InsertAfter(l => l.Contains("GlobalSection") && l.Contains("ProjectConfigurationPlatforms"),
+ newPostSolutionLine);
+
+ var newPreSolutionLine =
+ " {" + projectId + "} = {" + folderId + "}";
+
+
+ if (!slnFileLines.Any(l => l.Contains("GlobalSection") && l.Contains("NestedProjects")))
+ {
+ slnFileLines.InsertBefore(l => l.Trim().Equals("EndGlobal"), " GlobalSection(NestedProjects) = preSolution");
+ slnFileLines.InsertBefore(l => l.Trim().Equals("EndGlobal"), " EndGlobalSection");
+ }
+
+ slnFileLines.InsertAfter(l => l.Contains("GlobalSection") && l.Contains("NestedProjects"), newPreSolutionLine);
+
+ await FileSystem.File.WriteAllTextAsync(slnFilePath, string.Join(Environment.NewLine, slnFileLines));
+ }
+
+ private async Task GetOrAddFolderIdAsync(string solutionFile, string folderName, string parentFolderId = null)
+ {
+ if (folderName.Contains("/") && parentFolderId == null)
+ {
+ var parents = folderName.Split("/").SkipLast(1).JoinAsString("/");
+ folderName = folderName.Split("/").Last();
+
+ parentFolderId = await GetOrAddFolderIdAsync(solutionFile, parents);
+ }
+
+ var file = await FileSystem.File.ReadAllTextAsync(solutionFile);
+ var lines = file.Split(Environment.NewLine).ToList();
+ string folderId;
+
+ var folderLineIndex = lines.FindIndex(l =>
+ l.Contains("2150E333-8FDC-42A3-9474-1A3956D46DE8") && l.Contains("\"" + folderName + "\""));
+
+ if (folderLineIndex < 0)
+ {
+ folderId = Guid.NewGuid().ToString();
+ var newFolderLine = "Project(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"" + folderName + "\", \"" +
+ folderName + "\", \"{" + folderId + "}\""
+ + Environment.NewLine + "EndProject";
+
+ if (lines.Any(l => l.Trim().Equals("EndProject")))
+ {
+ lines.InsertAfter(l => l.Trim().Equals("EndProject"), newFolderLine);
+ }
+ else
+ {
+ lines.InsertAfter(l => l.StartsWith("Microsoft Visual Studio Solution File"), newFolderLine);
+ }
+
+ if (parentFolderId != null && lines.Any(l=>l.Contains("GlobalSection") && l.Contains("NestedProjects")))
+ {
+ var newPreSolutionLine =
+ " {" + folderId + "} = {" + parentFolderId + "}";
+
+ lines.InsertAfter(l => l.Contains("GlobalSection") && l.Contains("NestedProjects"),
+ newPreSolutionLine);
+ }
+
+ await FileSystem.File.WriteAllTextAsync(solutionFile, string.Join(Environment.NewLine, lines));
+ }
+ else
+ {
+ folderId = lines[folderLineIndex].Replace("\"", " ").Replace("{", " ").Replace("}", " ").TrimEnd()
+ .Split(" ").Last();
+ }
+
+ return folderId;
+ }
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/IDotnetSlnFileModifierService.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/IDotnetSlnFileModifierService.cs
new file mode 100644
index 0000000000..5bb26bf9d9
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/IDotnetSlnFileModifierService.cs
@@ -0,0 +1,9 @@
+using System.Threading.Tasks;
+
+namespace Volo.Abp.Studio.Solution
+{
+ public interface IDotnetSlnFileModifierService
+ {
+ Task AddProjectAsync(string slnFile, string projectPath, string slnTargetFolder = "src");
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/ISolutionFileModuleAdder.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/ISolutionFileModuleAdder.cs
new file mode 100644
index 0000000000..4f51330db7
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/ISolutionFileModuleAdder.cs
@@ -0,0 +1,9 @@
+using System.Threading.Tasks;
+
+namespace Volo.Abp.Studio.Solution
+{
+ public interface ISolutionFileModuleAdder
+ {
+ Task AddAsync(string TargetModule, string ModuleName);
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/SolutionFileModuleAdder.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/SolutionFileModuleAdder.cs
new file mode 100644
index 0000000000..cafd0f9281
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/SolutionFileModuleAdder.cs
@@ -0,0 +1,42 @@
+using System;
+using System.IO;
+using System.Threading.Tasks;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.Studio.Modules;
+
+namespace Volo.Abp.Studio.Solution
+{
+ public class SolutionFileModuleAdder : ISolutionFileModuleAdder, ITransientDependency
+ {
+ private readonly IDotnetSlnFileModifierService _dotnetSlnFileModifierService;
+
+ public SolutionFileModuleAdder(IDotnetSlnFileModifierService dotnetSlnFileModifierService)
+ {
+ _dotnetSlnFileModifierService = dotnetSlnFileModifierService;
+ }
+
+ public async Task AddAsync(string TargetModule, string ModuleName)
+ {
+ var targetFolder = Path.Combine(Path.GetDirectoryName(TargetModule), "modules", ModuleName);;
+ var slnFile = TargetModule.RemovePostFix(ModuleConsts.FileExtension) + ".sln";
+ var moduleSrcFolder = Path.Combine(targetFolder, "src");
+ var moduleTestFolder = Path.Combine(targetFolder, "test");
+
+ await AddProjectsUnderDirectoryToSolutionFile(slnFile, moduleSrcFolder, $"modules/{ModuleName}");
+ await AddProjectsUnderDirectoryToSolutionFile(slnFile, moduleTestFolder, $"test/{ModuleName}.Tests");
+ }
+
+ private async Task AddProjectsUnderDirectoryToSolutionFile(
+ string slnFile,
+ string directory,
+ string slnTargetFolder)
+ {
+ var projects = Directory.GetFiles(directory, "*.csproj", SearchOption.AllDirectories);
+
+ foreach (var project in projects)
+ {
+ await _dotnetSlnFileModifierService.AddProjectAsync(slnFile, project, slnTargetFolder);
+ }
+ }
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Xml/XmlFileManagerBase.cs b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Xml/XmlFileManagerBase.cs
new file mode 100644
index 0000000000..74eb5379c2
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Xml/XmlFileManagerBase.cs
@@ -0,0 +1,51 @@
+using System;
+using System.IO;
+using System.IO.Abstractions;
+using System.Threading.Tasks;
+using System.Xml;
+using System.Xml.Linq;
+using Volo.Abp.Threading;
+
+namespace Volo.Abp.Studio.Xml
+{
+ public abstract class XmlFileManagerBase
+ {
+ public IFileSystem FileSystem { get; set; }
+
+ public ICancellationTokenProvider CancellationTokenProvider { get; set; }
+
+ protected async Task GetXmlDocumentAsync(string filePath)
+ {
+ try
+ {
+ var doc = new XmlDocument() { PreserveWhitespace = true };
+ doc.Load(GenerateStreamFromString(await FileSystem.File.ReadAllTextAsync(filePath)));
+ return doc;
+ }
+ catch (Exception ex)
+ {
+ throw new AbpException($"Error while reading {filePath} as XML document.", innerException: ex);
+ }
+ }
+
+ protected async Task SaveXmlDocumentAsync(string filePath, XmlDocument rootNode)
+ {
+ await SaveFileContentAsync(filePath, XDocument.Parse(rootNode.OuterXml).ToString());
+ }
+
+ protected async Task SaveFileContentAsync(string filePath, string content)
+ {
+ await FileSystem.File.WriteAllTextAsync(filePath, content, CancellationTokenProvider.Token);
+ }
+
+ private MemoryStream GenerateStreamFromString(string s)
+ {
+ var stream = new MemoryStream();
+ var writer = new StreamWriter(stream);
+ writer.Write(s);
+ writer.Flush();
+ stream.Position = 0;
+ return stream;
+ }
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.Domain.Shared/Volo.Abp.Studio.Domain.Shared.csproj b/studio/src/Volo.Abp.Studio.Domain.Shared/Volo.Abp.Studio.Domain.Shared.csproj
new file mode 100644
index 0000000000..62daa81f1a
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Domain.Shared/Volo.Abp.Studio.Domain.Shared.csproj
@@ -0,0 +1,15 @@
+
+
+
+
+
+ netstandard2.0
+
+
+
+
+
+
+
+
+
diff --git a/studio/src/Volo.Abp.Studio.Domain.Shared/Volo/Abp/Studio/AbpStudioDomainSharedModule.cs b/studio/src/Volo.Abp.Studio.Domain.Shared/Volo/Abp/Studio/AbpStudioDomainSharedModule.cs
new file mode 100644
index 0000000000..9693bc2577
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Domain.Shared/Volo/Abp/Studio/AbpStudioDomainSharedModule.cs
@@ -0,0 +1,13 @@
+using Volo.Abp.Cli;
+using Volo.Abp.Modularity;
+
+namespace Volo.Abp.Studio
+{
+ [DependsOn(
+ typeof(AbpCliCoreModule)
+ )]
+ public class AbpStudioDomainSharedModule : AbpModule
+ {
+
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.Domain.Shared/Volo/Abp/Studio/AbpStudioErrorCodes.cs b/studio/src/Volo.Abp.Studio.Domain.Shared/Volo/Abp/Studio/AbpStudioErrorCodes.cs
new file mode 100644
index 0000000000..32bc670c6e
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Domain.Shared/Volo/Abp/Studio/AbpStudioErrorCodes.cs
@@ -0,0 +1,32 @@
+namespace Volo.Abp.Studio
+{
+ public static class AbpStudioErrorCodes
+ {
+ public const string SolutionAlreadyExists = "AbpStudio:SolutionAlreadyExists";
+ public const string ModuleAlreadyExistsInTheSolution = "AbpStudio:ModuleAlreadyExistsInTheSolution";
+ public const string ModuleFileAlreadyExists = "AbpStudio:ModuleFileAlreadyExists";
+ public const string IncorrectFileFormat = "AbpStudio:IncorrectFileFormat";
+ public const string ModuleNotFound = "AbpStudio:ModuleNotFound";
+ public const string SolutionNotFound = "AbpStudio:SolutionNotFound";
+ public const string ModuleNotSpecified = "AbpStudio:ModuleNotSpecified";
+ public const string SolutionNotSpecified = "AbpStudio:SolutionNotSpecified";
+ public const string ProjectAlreadyExistInTheModule = "AbpStudio:ProjectAlreadyExistInTheModule";
+ public const string IncorrectSolutionFileFormat = "AbpStudio:IncorrectSolutionFileFormat";
+ public const string FolderNotFound = "AbpStudio:FolderNotFound";
+ public const string ProjectWithSameNameAlreadyExistInTheSolutionFile = "AbpStudio:ProjectWithSameNameAlreadyExistInTheSolutionFile";
+ public const string UndefinedPackageTemplate = "AbpStudio:UndefinedPackageTemplate";
+ public const string PackageTemplateNotSpecified = "AbpStudio:PackageTemplateNotSpecified";
+ public const string PackageNameMustBeSpecified = "AbpStudio:PackageNameMustBeSpecified";
+ public const string FileAlreadyExists = "AbpStudio:FileAlreadyExists";
+ public const string PackageNotSpecified = "AbpStudio:PackageNotSpecified";
+ public const string DbmsMustBeSpecified = "AbpStudio:DbmsMustBeSpecified";
+ public const string UserNotLoggedIn = "AbpStudio:UserNotLoggedIn";
+ public const string PackageAlreadyExist = "AbpStudio:PackageAlreadyExist";
+ public const string AbpModuleFileNotFound = "AbpStudio:AbpModuleFileNotFound";
+ public const string DllNotFound = "AbpStudio:DllNotFound";
+ public const string PackageNotFound = "AbpStudio:PackageNotFound";
+ public const string FileNotFound = "AbpStudio:FileNotFound";
+ public const string IncorrectFolderName = "AbpStudio:IncorrectFolderName";
+ public const string ModuleAlreadyInstalled = "AbpStudio:ModuleAlreadyInstalled";
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.Domain.Shared/Volo/Abp/Studio/Modules/ModuleConsts.cs b/studio/src/Volo.Abp.Studio.Domain.Shared/Volo/Abp/Studio/Modules/ModuleConsts.cs
new file mode 100644
index 0000000000..b2c9733720
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Domain.Shared/Volo/Abp/Studio/Modules/ModuleConsts.cs
@@ -0,0 +1,18 @@
+namespace Volo.Abp.Studio.Modules
+{
+ public static class ModuleConsts
+ {
+ public const string FileExtension = ".abpmdl.json";
+ public const string InstallerPackagePostfix = ".Installer";
+ public const string SourceCorePackagePostfix = ".SourceCode";
+ public const string Packages = "packages";
+
+ public static class Layers //TODO: Moving to PackageTypes
+ {
+ public const string Domain = "lib.domain";
+ public const string DomainShared = "lib.domain.shared";
+ public const string Application = "lib.application";
+ public const string ApplicationContracts = "lib.application.contracts";
+ }
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.Domain.Shared/Volo/Abp/Studio/Package/PackageReferenceCompatibility.cs b/studio/src/Volo.Abp.Studio.Domain.Shared/Volo/Abp/Studio/Package/PackageReferenceCompatibility.cs
new file mode 100644
index 0000000000..70c51c36e2
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.Domain.Shared/Volo/Abp/Studio/Package/PackageReferenceCompatibility.cs
@@ -0,0 +1,13 @@
+namespace Volo.Abp.Studio.Packages.Referencing
+{
+ public enum PackageReferenceCompatibility
+ {
+ Unknown,
+ DDD_Compatible,
+ Compatible,
+ TestProject,
+ IndirectlyReferenced,
+ DirectlyReferenced,
+ CircularReference
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo.Abp.Studio.ModuleInstaller.Abstractions.csproj b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo.Abp.Studio.ModuleInstaller.Abstractions.csproj
new file mode 100644
index 0000000000..8076b60746
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo.Abp.Studio.ModuleInstaller.Abstractions.csproj
@@ -0,0 +1,15 @@
+
+
+
+
+
+ netstandard2.0
+
+
+
+
+
+
+
+
+
diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/AbpStudioModuleInstallerAbstractionsModule.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/AbpStudioModuleInstallerAbstractionsModule.cs
new file mode 100644
index 0000000000..c9e68ec940
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/AbpStudioModuleInstallerAbstractionsModule.cs
@@ -0,0 +1,13 @@
+using Volo.Abp.Modularity;
+using Volo.Abp.Studio.Analyzing;
+
+namespace Volo.Abp.Studio
+{
+ [DependsOn(
+ typeof(AbpStudioAnalyzingAbstractionsModule)
+ )]
+ public class AbpStudioModuleInstallerAbstractionsModule : AbpModule
+ {
+
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Analyzing/AnalyzingOptions.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Analyzing/AnalyzingOptions.cs
new file mode 100644
index 0000000000..7296dfce74
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Analyzing/AnalyzingOptions.cs
@@ -0,0 +1,45 @@
+using JetBrains.Annotations;
+
+namespace Volo.Abp.Studio.Analyzing
+{
+ public class AnalyzingOptions
+ {
+ public bool Force { get; set; } = false;
+
+ [CanBeNull]
+ public string AnalyzeConfigurationFile { get; set; }
+
+ [CanBeNull]
+ public string SettingNamePrefix { get; set; }
+
+ [CanBeNull]
+ public string FeatureNamePrefix { get; set; }
+
+ // Combines two options
+ // The second option has more priority
+ public static AnalyzingOptions Combine([CanBeNull] AnalyzingOptions first, [CanBeNull] AnalyzingOptions second)
+ {
+ if (second == null && first == null)
+ {
+ return new AnalyzingOptions();
+ }
+
+ if (second == null)
+ {
+ return first;
+ }
+
+ if (first == null)
+ {
+ return second;
+ }
+
+ return new AnalyzingOptions
+ {
+ AnalyzeConfigurationFile = second.AnalyzeConfigurationFile ?? first.AnalyzeConfigurationFile,
+ SettingNamePrefix = second.SettingNamePrefix ?? first.SettingNamePrefix,
+ FeatureNamePrefix = second.FeatureNamePrefix ?? first.FeatureNamePrefix
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/EfCoreConfigurationMethodDeclaration.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/EfCoreConfigurationMethodDeclaration.cs
new file mode 100644
index 0000000000..5b69a49cbd
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/EfCoreConfigurationMethodDeclaration.cs
@@ -0,0 +1,18 @@
+using JetBrains.Annotations;
+
+namespace Volo.Abp.Studio.ModuleInstalling
+{
+ public class EfCoreConfigurationMethodDeclaration
+ {
+ public string Namespace { get; }
+
+ public string MethodName { get; }
+
+ public EfCoreConfigurationMethodDeclaration([NotNull] string nameSpace, [NotNull] string methodName)
+ {
+ Namespace = Check.NotNullOrEmpty(nameSpace, nameof(nameSpace));
+ MethodName = Check.NotNullOrEmpty(methodName, nameof(methodName));
+ }
+
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/IModuleInstallingPipelineBuilder.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/IModuleInstallingPipelineBuilder.cs
new file mode 100644
index 0000000000..1112328675
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/IModuleInstallingPipelineBuilder.cs
@@ -0,0 +1,9 @@
+using System.Threading.Tasks;
+
+namespace Volo.Abp.Studio.ModuleInstalling
+{
+ public interface IModuleInstallingPipelineBuilder
+ {
+ Task BuildAsync(ModuleInstallingContext context);
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/ModuleInstallingContext.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/ModuleInstallingContext.cs
new file mode 100644
index 0000000000..350359c551
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/ModuleInstallingContext.cs
@@ -0,0 +1,89 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using JetBrains.Annotations;
+using Volo.Abp.Studio.Packages;
+
+namespace Volo.Abp.Studio.ModuleInstalling
+{
+ public class ModuleInstallingContext
+ {
+ public string ModuleName { get; set; }
+
+ public string TargetModule { get; set; }
+
+ public bool WithSourceCode { get; set; }
+
+ public bool AddToSolutionFile { get; set; }
+
+ public string Version { get; set; }
+
+ public List EfCoreConfigurationMethodDeclarations { get; }
+
+ public List TargetModulePackages { get; protected set; }
+
+ public List ReferenceModulePackages { get; protected set; }
+
+ public Dictionary Options { get; }
+
+ public IServiceProvider ServiceProvider { get; }
+
+ public ModuleInstallingContext(
+ string moduleName,
+ string targetModule,
+ bool withSourceCode,
+ bool addToSolutionFile,
+ string version,
+ Dictionary options,
+ IServiceProvider serviceProvider)
+ {
+ ModuleName = moduleName;
+ TargetModule = targetModule;
+ WithSourceCode = withSourceCode;
+ AddToSolutionFile = addToSolutionFile;
+ Version = version;
+ Options = options;
+
+ TargetModulePackages = new List();
+ ReferenceModulePackages = new List();
+
+ EfCoreConfigurationMethodDeclarations = new List();
+
+ ServiceProvider = Check.NotNull(serviceProvider, nameof(serviceProvider));
+ }
+
+ public void AddEfCoreConfigurationMethodDeclaration(params EfCoreConfigurationMethodDeclaration[] methodNames)
+ {
+ foreach (var methodName in methodNames)
+ {
+ Check.NotNull(methodName, nameof(methodName));
+
+ EfCoreConfigurationMethodDeclarations.Add(methodName);
+ }
+ }
+
+ public void SetReferenceModulePackages([NotNull] List referenceModulePackages)
+ {
+ Check.NotNull(referenceModulePackages, nameof(referenceModulePackages));
+
+ ReferenceModulePackages = referenceModulePackages;
+ }
+
+ public void SetTargetModulePackages([NotNull] List targetModulePackages)
+ {
+ Check.NotNull(targetModulePackages, nameof(targetModulePackages));
+
+ TargetModulePackages = targetModulePackages;
+ }
+
+ public string GetTargetSourceCodeFolder()
+ {
+ return CalculateTargetSourceCodeFolder(TargetModule, ModuleName);
+ }
+
+ public static string CalculateTargetSourceCodeFolder(string targetModule, string moduleName)
+ {
+ return Path.Combine(Path.GetDirectoryName(targetModule), "modules", moduleName);
+ }
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/ModuleInstallingPipeline.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/ModuleInstallingPipeline.cs
new file mode 100644
index 0000000000..4582a4ac8b
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/ModuleInstallingPipeline.cs
@@ -0,0 +1,53 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace Volo.Abp.Studio.ModuleInstalling
+{
+ public class ModuleInstallingPipeline
+ {
+ public ModuleInstallingContext Context { get; }
+
+ public List Steps { get; }
+
+ public ModuleInstallingPipeline(ModuleInstallingContext context)
+ {
+ Context = context;
+ Steps = new List();
+ }
+
+ public async Task ExecuteAsync()
+ {
+ foreach (var step in Steps)
+ {
+ await step.ExecuteAsync(Context);
+ }
+ }
+
+ public void Add(ModuleInstallingPipelineStep step)
+ {
+ Steps.Add(step);
+ }
+
+ public void Remove(Type stepType)
+ {
+ Steps.RemoveAll(step => step.GetType() == stepType);
+ }
+
+ public void Replace(Type stepType, ModuleInstallingPipelineStep step)
+ {
+ Steps.ReplaceOne(step => step.GetType() == stepType , step);
+ }
+
+ public void InsertAfter(Type stepType, ModuleInstallingPipelineStep step)
+ {
+ Steps.InsertAfter(step => step.GetType() == stepType , step);
+ }
+
+ public void InsertBefore(Type stepType, ModuleInstallingPipelineStep step)
+ {
+ Steps.InsertBefore(step => step.GetType() == stepType , step);
+ }
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/ModuleInstallingPipelineStep.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/ModuleInstallingPipelineStep.cs
new file mode 100644
index 0000000000..b98d32b32a
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/ModuleInstallingPipelineStep.cs
@@ -0,0 +1,9 @@
+using System.Threading.Tasks;
+
+namespace Volo.Abp.Studio.ModuleInstalling
+{
+ public abstract class ModuleInstallingPipelineStep
+ {
+ public abstract Task ExecuteAsync(ModuleInstallingContext context);
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/Options/IModuleInstallingOptionProvider.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/Options/IModuleInstallingOptionProvider.cs
new file mode 100644
index 0000000000..ac557d5a51
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/Options/IModuleInstallingOptionProvider.cs
@@ -0,0 +1,10 @@
+using System.Collections.Generic;
+using System.Threading.Tasks;
+
+namespace Volo.Abp.Studio.ModuleInstalling.Options
+{
+ public interface IModuleInstallingOptionProvider
+ {
+ Task> GetAsync();
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/Options/ModuleInstallingOption.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/Options/ModuleInstallingOption.cs
new file mode 100644
index 0000000000..f8725e1e93
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/Options/ModuleInstallingOption.cs
@@ -0,0 +1,28 @@
+using System.Collections.Generic;
+using JetBrains.Annotations;
+
+namespace Volo.Abp.Studio.ModuleInstalling.Options
+{
+ public class ModuleInstallingOption
+ {
+ public string Name { get; set; }
+
+ public string Description { get; set; }
+
+ public ModuleInstallingOptionType Type { get; set; }
+
+ public Dictionary Values { get; set; }
+
+ public ModuleInstallingOption(
+ [NotNull] string name,
+ [NotNull] string description,
+ [NotNull] ModuleInstallingOptionType type,
+ [CanBeNull] Dictionary values = null)
+ {
+ Name = Check.NotNullOrWhiteSpace(name, nameof(name));
+ Description = Check.NotNullOrWhiteSpace(description, nameof(description));
+ Type = type;
+ Values = values ?? new Dictionary();
+ }
+ }
+}
\ No newline at end of file
diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/Options/ModuleInstallingOptionType.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/Options/ModuleInstallingOptionType.cs
new file mode 100644
index 0000000000..140b1339df
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/ModuleInstalling/Options/ModuleInstallingOptionType.cs
@@ -0,0 +1,10 @@
+namespace Volo.Abp.Studio.ModuleInstalling.Options
+{
+ public enum ModuleInstallingOptionType
+ {
+ NotSpecified,
+ Checkbox,
+ FreeText,
+ ComboBox
+ }
+}
\ No newline at end of file
diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Package/PackageConsts.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Package/PackageConsts.cs
new file mode 100644
index 0000000000..05a7abb16e
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Package/PackageConsts.cs
@@ -0,0 +1,9 @@
+namespace Volo.Abp.Studio.Packages
+{
+ public static class PackageConsts
+ {
+ public const string FileExtension = ".abppkg.json";
+
+ public const string RoleProperty = "role";
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Package/PackageHelper.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Package/PackageHelper.cs
new file mode 100644
index 0000000000..daae8d2f77
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Package/PackageHelper.cs
@@ -0,0 +1,18 @@
+using System;
+using System.IO;
+using JetBrains.Annotations;
+
+namespace Volo.Abp.Studio.Packages
+{
+ public static class PackageHelper
+ {
+ public static string GetNameFromPath([NotNull] string path)
+ {
+ Check.NotNullOrWhiteSpace(path, nameof(path));
+
+ return Path
+ .GetFileName(path)
+ .RemovePostFix(StringComparison.OrdinalIgnoreCase, PackageConsts.FileExtension);
+ }
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Package/PackageInfo.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Package/PackageInfo.cs
new file mode 100644
index 0000000000..0a6e939ded
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Package/PackageInfo.cs
@@ -0,0 +1,27 @@
+using JetBrains.Annotations;
+using Volo.Abp.Studio.Analyzing;
+
+namespace Volo.Abp.Studio.Packages
+{
+ public class PackageInfo
+ {
+ [NotNull]
+ public string Path { get; }
+
+ [NotNull]
+ public string Name { get; }
+
+ [CanBeNull]
+ public string Role { get; }
+
+ [CanBeNull]
+ public AnalyzingOptions AnalyzingOptions { get; set; }
+
+ public PackageInfo([NotNull] string path, [CanBeNull] string role)
+ {
+ Path = Check.NotNullOrWhiteSpace(path, nameof(path));
+ Name = PackageHelper.GetNameFromPath(path);
+ Role = role;
+ }
+ }
+}
\ No newline at end of file
diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Package/PackageInfoWithAnalyze.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Package/PackageInfoWithAnalyze.cs
new file mode 100644
index 0000000000..efb7950fc2
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.ModuleInstaller.Abstractions/Volo/Abp/Studio/Package/PackageInfoWithAnalyze.cs
@@ -0,0 +1,28 @@
+using JetBrains.Annotations;
+using Volo.Abp.Studio.Analyzing.Models;
+
+namespace Volo.Abp.Studio.Packages
+{
+ public class PackageInfoWithAnalyze
+ {
+ [NotNull]
+ public string Path { get; }
+
+ [NotNull]
+ public string Name { get; }
+
+ [CanBeNull]
+ public string Role { get; }
+
+ [NotNull]
+ public PackageModel Analyze { get; }
+
+ public PackageInfoWithAnalyze([NotNull] string path, [CanBeNull] string role, [NotNull] PackageModel analyze)
+ {
+ Path = Check.NotNullOrWhiteSpace(path, nameof(path));
+ Name = PackageHelper.GetNameFromPath(path);
+ Role = role;
+ Analyze = Check.NotNull(analyze, nameof(analyze));
+ }
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo.Abp.Studio.ModuleInstaller.csproj b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo.Abp.Studio.ModuleInstaller.csproj
new file mode 100644
index 0000000000..2d3577e20f
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo.Abp.Studio.ModuleInstaller.csproj
@@ -0,0 +1,16 @@
+
+
+
+
+
+ net5.0
+ true
+
+
+
+
+
+
+
+
+
diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/AbpStudioModuleInstallerModule.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/AbpStudioModuleInstallerModule.cs
new file mode 100644
index 0000000000..3450ab8a5c
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/AbpStudioModuleInstallerModule.cs
@@ -0,0 +1,16 @@
+using Volo.Abp.Modularity;
+
+namespace Volo.Abp.Studio
+{
+ [DependsOn(
+ typeof(AbpStudioDomainCommonServicesModule),
+ typeof(AbpStudioModuleInstallerAbstractionsModule)
+ )]
+ public class AbpStudioModuleInstallerModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+
+ }
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/ModuleInstallingPipelineBuilderBase.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/ModuleInstallingPipelineBuilderBase.cs
new file mode 100644
index 0000000000..ba78031686
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/ModuleInstallingPipelineBuilderBase.cs
@@ -0,0 +1,32 @@
+using System.Linq;
+using Volo.Abp.Studio.ModuleInstalling.Steps;
+
+namespace Volo.Abp.Studio.ModuleInstalling
+{
+ public abstract class ModuleInstallingPipelineBuilderBase
+ {
+ protected ModuleInstallingPipeline GetBasePipeline(ModuleInstallingContext context)
+ {
+ var pipeline = new ModuleInstallingPipeline(context);
+
+ if (context.WithSourceCode)
+ {
+ pipeline.Add(new SourceCodeDownloadStep());
+
+ if (context.AddToSolutionFile)
+ {
+ pipeline.Add(new AddToSolutionFileStep());
+ }
+ }
+
+ pipeline.Add(new PackageReferencingStep());
+
+ if (context.EfCoreConfigurationMethodDeclarations.Any())
+ {
+ pipeline.Add(new AddEfCoreConfigurationMethodStep());
+ }
+
+ return pipeline;
+ }
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/Steps/AddEfCoreConfigurationMethodStep.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/Steps/AddEfCoreConfigurationMethodStep.cs
new file mode 100644
index 0000000000..54d6ec2cee
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/Steps/AddEfCoreConfigurationMethodStep.cs
@@ -0,0 +1,43 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.Cli.ProjectModification;
+using Volo.Abp.Studio.Packages;
+using Volo.Abp.Studio.Packages.Modifying;
+using Volo.Abp.Studio.Analyzing.Models.Module;
+
+namespace Volo.Abp.Studio.ModuleInstalling.Steps
+{
+ public class AddEfCoreConfigurationMethodStep : ModuleInstallingPipelineStep
+ {
+ public override async Task ExecuteAsync(ModuleInstallingContext context)
+ {
+ var efCoreProject = context.TargetModulePackages.FirstOrDefault(p => p.Role == PackageTypes.EntityFrameworkCore);
+
+ if (efCoreProject == null)
+ {
+ return;
+ }
+
+ var efCoreProjectCsprojPath = efCoreProject.Path.RemovePostFix(PackageConsts.FileExtension) + ".csproj";
+
+ var _derivedClassFinder = context.ServiceProvider.GetRequiredService();
+ var _dbContextFileBuilderConfigureAdder = context.ServiceProvider.GetRequiredService();
+
+ var dbContextFile = _derivedClassFinder.Find(efCoreProjectCsprojPath, "AbpDbContext").FirstOrDefault();
+
+ if (dbContextFile == null)
+ {
+ return;
+ }
+
+ foreach (var declaration in context.EfCoreConfigurationMethodDeclarations)
+ {
+ _dbContextFileBuilderConfigureAdder.Add(dbContextFile, declaration.Namespace + ":" + declaration.MethodName);
+ }
+ }
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/Steps/AddToSolutionFileStep.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/Steps/AddToSolutionFileStep.cs
new file mode 100644
index 0000000000..2739a62eaf
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/Steps/AddToSolutionFileStep.cs
@@ -0,0 +1,16 @@
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.Studio.Solution;
+
+namespace Volo.Abp.Studio.ModuleInstalling.Steps
+{
+ public class AddToSolutionFileStep : ModuleInstallingPipelineStep
+ {
+ public override async Task ExecuteAsync(ModuleInstallingContext context)
+ {
+ var _solutionFileModuleAdder = context.ServiceProvider.GetRequiredService();
+
+ await _solutionFileModuleAdder.AddAsync(context.TargetModule, context.ModuleName);
+ }
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/Steps/PackageReferencingStep.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/Steps/PackageReferencingStep.cs
new file mode 100644
index 0000000000..bec9da5a1b
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/Steps/PackageReferencingStep.cs
@@ -0,0 +1,102 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.Studio.Packages;
+using Volo.Abp.Studio.Packages.Modifying;
+using Volo.Abp.Studio.Analyzing.Models.Module;
+
+namespace Volo.Abp.Studio.ModuleInstalling.Steps
+{
+ public class PackageReferencingStep : ModuleInstallingPipelineStep
+ {
+ public override async Task ExecuteAsync(ModuleInstallingContext context)
+ {
+ var _abpModuleFileManager = context.ServiceProvider.GetRequiredService();
+
+ foreach (var referencePackage in context.ReferenceModulePackages)
+ {
+ var targetPackages = GetTargetPackages(context.TargetModulePackages, referencePackage);
+
+ foreach (var targetPackage in targetPackages)
+ {
+ await AddReferenceAsync(context, targetPackage, referencePackage);
+
+ var targetAbpModulePath = FindAbpModuleFile(targetPackage.Path);
+
+ await _abpModuleFileManager.AddDependency(targetAbpModulePath, FindAbpModuleName(referencePackage));
+ }
+ }
+ }
+
+ private async Task AddReferenceAsync(
+ ModuleInstallingContext context,
+ PackageInfo targetPackage,
+ PackageInfoWithAnalyze referencePackage)
+ {
+ var _csprojFileManager = context.ServiceProvider.GetRequiredService();
+ var csprojFilePath = targetPackage.Path.RemovePostFix(PackageConsts.FileExtension) + ".csproj";
+
+ if (context.WithSourceCode)
+ {
+ var referenceProjectPath = Directory.GetFiles(context.GetTargetSourceCodeFolder(),
+ $"*{referencePackage.Name}.csproj",
+ SearchOption.AllDirectories).FirstOrDefault();
+
+ if (referenceProjectPath == null)
+ {
+ return;
+ }
+
+ await _csprojFileManager.AddProjectReferenceAsync(
+ csprojFilePath,
+ referenceProjectPath);
+ }
+ else
+ {
+ await _csprojFileManager.AddPackageReferenceAsync(
+ csprojFilePath,
+ referencePackage.Name,
+ context.Version);
+ }
+ }
+
+ private string FindAbpModuleFile(string targetPackagePath)
+ {
+ return Directory.GetFiles(Path.GetDirectoryName(targetPackagePath), "*Module.cs",
+ SearchOption.AllDirectories)
+ .FirstOrDefault();
+ }
+
+ private string FindAbpModuleName(PackageInfoWithAnalyze package)
+ {
+ var abpModuleModel = package.Analyze.Contents.Where(y =>
+ y.ContentType == AbpModuleModel.ContentTypeName
+ ).Cast().First();
+
+ return abpModuleModel.Namespace + "." + abpModuleModel.Name;
+ }
+
+ private List GetTargetPackages(List targetModulePackages,
+ PackageInfoWithAnalyze referencePackage)
+ {
+ if (PackageTypes.IsHostProject(referencePackage.Role))
+ {
+ return new List();
+ }
+
+ if (PackageTypes.IsUiProject(referencePackage.Role))
+ {
+ var useHostBlazorServerForMvcPackages = targetModulePackages.All(p => p.Role != PackageTypes.HostMvc);
+ var targetHostType =
+ PackageTypes.GetHostTypeOfUi(referencePackage.Role, useHostBlazorServerForMvcPackages);
+
+ return targetModulePackages.Where(p => p.Role == targetHostType).ToList();
+ }
+
+ return targetModulePackages.Where(p => p.Role == referencePackage.Role).ToList();
+ }
+ }
+}
diff --git a/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/Steps/SourceCodeDownloadStep.cs b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/Steps/SourceCodeDownloadStep.cs
new file mode 100644
index 0000000000..f99186d216
--- /dev/null
+++ b/studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/Steps/SourceCodeDownloadStep.cs
@@ -0,0 +1,39 @@
+using System;
+using System.IO;
+using System.IO.Compression;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.Cli.ProjectBuilding;
+using Volo.Abp.Studio.Nuget;
+
+namespace Volo.Abp.Studio.ModuleInstalling.Steps
+{
+ public class SourceCodeDownloadStep : ModuleInstallingPipelineStep
+ {
+ public override async Task ExecuteAsync(ModuleInstallingContext context)
+ {
+ var _nugetSourceCodeStoreManager = context.ServiceProvider.GetRequiredService();
+
+ var zipFilePath = await _nugetSourceCodeStoreManager.GetCachedSourceCodeFilePathAsync(
+ context.ModuleName,
+ SourceCodeTypes.Module,
+ context.Version);
+
+ if (zipFilePath == null)
+ {
+ throw new AbpStudioException(message: $"Source code not found for {context.ModuleName} (v{context.Version})");
+ }
+
+ var targetFolder = context.GetTargetSourceCodeFolder();
+
+ if (Directory.Exists(targetFolder))
+ {
+ return;
+ }
+
+ Directory.CreateDirectory(targetFolder);
+
+ ZipFile.ExtractToDirectory(zipFilePath, targetFolder);
+ }
+ }
+}
diff --git a/templates/app/angular/package.json b/templates/app/angular/package.json
index 706362b81e..3dd71d659e 100644
--- a/templates/app/angular/package.json
+++ b/templates/app/angular/package.json
@@ -12,14 +12,14 @@
},
"private": true,
"dependencies": {
- "@abp/ng.account": "~5.0.0-beta.1",
- "@abp/ng.components": "~5.0.0-beta.1",
- "@abp/ng.core": "~5.0.0-beta.1",
- "@abp/ng.identity": "~5.0.0-beta.1",
- "@abp/ng.setting-management": "~5.0.0-beta.1",
- "@abp/ng.tenant-management": "~5.0.0-beta.1",
- "@abp/ng.theme.basic": "~5.0.0-beta.1",
- "@abp/ng.theme.shared": "~5.0.0-beta.1",
+ "@abp/ng.account": "~5.0.0-beta.2",
+ "@abp/ng.components": "~5.0.0-beta.2",
+ "@abp/ng.core": "~5.0.0-beta.2",
+ "@abp/ng.identity": "~5.0.0-beta.2",
+ "@abp/ng.setting-management": "~5.0.0-beta.2",
+ "@abp/ng.tenant-management": "~5.0.0-beta.2",
+ "@abp/ng.theme.basic": "~5.0.0-beta.2",
+ "@abp/ng.theme.shared": "~5.0.0-beta.2",
"@angular/animations": "~12.2.6",
"@angular/common": "~12.2.6",
"@angular/compiler": "~12.2.6",
@@ -34,7 +34,7 @@
"zone.js": "~0.11.4"
},
"devDependencies": {
- "@abp/ng.schematics": "~5.0.0-beta.1",
+ "@abp/ng.schematics": "~5.0.0-beta.2",
"@angular-devkit/build-angular": "~12.2.6",
"@angular-eslint/builder": "~12.5.0",
"@angular-eslint/eslint-plugin": "~12.5.0",
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs
index 6cfddfd272..56cdf0a619 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs
@@ -98,7 +98,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Tiered
ConfigureBlazorise(context);
ConfigureRouter(context);
ConfigureMenu(configuration);
- ConfigureRedis(context, configuration, hostingEnvironment);
+ ConfigureDataProtection(context, configuration, hostingEnvironment);
ConfigureSwaggerServices(context.Services);
}
@@ -109,7 +109,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Tiered
options.Applications["MVC"].RootUrl = configuration["App:SelfUrl"];
});
}
-
+
private void ConfigureCache()
{
Configure(options =>
@@ -143,7 +143,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Tiered
);
});
}
-
+
private void ConfigureMultiTenancy()
{
Configure(options =>
@@ -253,7 +253,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Tiered
{
options.MenuContributors.Add(new MyProjectNameMenuContributor(configuration));
});
-
+
Configure(options =>
{
options.Contributors.Add(new MyProjectNameToolbarContributor());
@@ -275,7 +275,7 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Tiered
options.AddMaps();
});
}
-
+
private void ConfigureSwaggerServices(IServiceCollection services)
{
services.AddAbpSwaggerGen(
@@ -288,17 +288,16 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Tiered
);
}
- private void ConfigureRedis(
+ private void ConfigureDataProtection(
ServiceConfigurationContext context,
IConfiguration configuration,
IWebHostEnvironment hostingEnvironment)
{
+ var dataProtectionBuilder = context.Services.AddDataProtection().SetApplicationName("MyProjectName");
if (!hostingEnvironment.IsDevelopment())
{
var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]);
- context.Services
- .AddDataProtection()
- .PersistKeysToStackExchangeRedis(redis, "MyProjectName-Protection-Keys");
+ dataProtectionBuilder.PersistKeysToStackExchangeRedis(redis, "MyProjectName-Protection-Keys");
}
}
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json
index f84bada2b0..348e566c64 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json
@@ -3,7 +3,7 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.1",
- "@abp/aspnetcore.components.server.basictheme": "^5.0.0-beta.1"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.2",
+ "@abp/aspnetcore.components.server.basictheme": "^5.0.0-beta.2"
}
}
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json
index f84bada2b0..348e566c64 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json
@@ -3,7 +3,7 @@
"name": "my-app",
"private": true,
"dependencies": {
- "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.1",
- "@abp/aspnetcore.components.server.basictheme": "^5.0.0-beta.1"
+ "@abp/aspnetcore.mvc.ui.theme.basic": "^5.0.0-beta.2",
+ "@abp/aspnetcore.components.server.basictheme": "^5.0.0-beta.2"
}
}
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/global.css b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/global.css
index 6b7a763f1a..1799c7f276 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/global.css
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/global.css
@@ -9,8 +9,8 @@
* Font Awesome Free 5.12.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
*/
-.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\f907"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\f913"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\f91a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\f91e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\f941"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\f949"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:normal;font-display:auto;src:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-brands-400.eot);src:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-brands-400.woff2) format("woff2"),url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-brands-400.woff) format("woff"),url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-brands-400.ttf) format("truetype"),url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:auto;src:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-regular-400.eot);src:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-regular-400.woff2) format("woff2"),url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-regular-400.woff) format("woff"),url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-regular-400.ttf) format("truetype"),url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:auto;src:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-solid-900.eot);src:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-solid-900.woff2) format("woff2"),url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-solid-900.woff) format("woff"),url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-solid-900.ttf) format("truetype"),url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900}
-.flag-icon-background{background-size:contain;background-position:50%;background-repeat:no-repeat}.flag-icon{background-size:contain;background-position:50%;background-repeat:no-repeat;position:relative;display:inline-block;width:1.33333333em;line-height:1em}.flag-icon:before{content:" "}.flag-icon.flag-icon-squared{width:1em}.flag-icon-ad{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ad.svg)}.flag-icon-ad.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ad.svg)}.flag-icon-ae{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ae.svg)}.flag-icon-ae.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ae.svg)}.flag-icon-af{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/af.svg)}.flag-icon-af.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/af.svg)}.flag-icon-ag{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ag.svg)}.flag-icon-ag.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ag.svg)}.flag-icon-ai{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ai.svg)}.flag-icon-ai.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ai.svg)}.flag-icon-al{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/al.svg)}.flag-icon-al.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/al.svg)}.flag-icon-am{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/am.svg)}.flag-icon-am.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/am.svg)}.flag-icon-ao{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ao.svg)}.flag-icon-ao.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ao.svg)}.flag-icon-aq{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/aq.svg)}.flag-icon-aq.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/aq.svg)}.flag-icon-ar{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ar.svg)}.flag-icon-ar.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ar.svg)}.flag-icon-as{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/as.svg)}.flag-icon-as.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/as.svg)}.flag-icon-at{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/at.svg)}.flag-icon-at.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/at.svg)}.flag-icon-au{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/au.svg)}.flag-icon-au.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/au.svg)}.flag-icon-aw{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/aw.svg)}.flag-icon-aw.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/aw.svg)}.flag-icon-ax{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ax.svg)}.flag-icon-ax.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ax.svg)}.flag-icon-az{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/az.svg)}.flag-icon-az.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/az.svg)}.flag-icon-ba{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ba.svg)}.flag-icon-ba.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ba.svg)}.flag-icon-bb{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bb.svg)}.flag-icon-bb.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bb.svg)}.flag-icon-bd{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bd.svg)}.flag-icon-bd.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bd.svg)}.flag-icon-be{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/be.svg)}.flag-icon-be.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/be.svg)}.flag-icon-bf{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bf.svg)}.flag-icon-bf.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bf.svg)}.flag-icon-bg{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bg.svg)}.flag-icon-bg.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bg.svg)}.flag-icon-bh{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bh.svg)}.flag-icon-bh.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bh.svg)}.flag-icon-bi{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bi.svg)}.flag-icon-bi.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bi.svg)}.flag-icon-bj{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bj.svg)}.flag-icon-bj.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bj.svg)}.flag-icon-bl{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bl.svg)}.flag-icon-bl.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bl.svg)}.flag-icon-bm{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bm.svg)}.flag-icon-bm.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bm.svg)}.flag-icon-bn{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bn.svg)}.flag-icon-bn.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bn.svg)}.flag-icon-bo{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bo.svg)}.flag-icon-bo.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bo.svg)}.flag-icon-bq{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bq.svg)}.flag-icon-bq.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bq.svg)}.flag-icon-br{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/br.svg)}.flag-icon-br.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/br.svg)}.flag-icon-bs{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bs.svg)}.flag-icon-bs.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bs.svg)}.flag-icon-bt{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bt.svg)}.flag-icon-bt.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bt.svg)}.flag-icon-bv{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bv.svg)}.flag-icon-bv.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bv.svg)}.flag-icon-bw{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bw.svg)}.flag-icon-bw.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bw.svg)}.flag-icon-by{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/by.svg)}.flag-icon-by.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/by.svg)}.flag-icon-bz{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bz.svg)}.flag-icon-bz.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bz.svg)}.flag-icon-ca{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ca.svg)}.flag-icon-ca.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ca.svg)}.flag-icon-cc{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cc.svg)}.flag-icon-cc.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cc.svg)}.flag-icon-cd{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cd.svg)}.flag-icon-cd.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cd.svg)}.flag-icon-cf{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cf.svg)}.flag-icon-cf.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cf.svg)}.flag-icon-cg{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cg.svg)}.flag-icon-cg.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cg.svg)}.flag-icon-ch{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ch.svg)}.flag-icon-ch.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ch.svg)}.flag-icon-ci{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ci.svg)}.flag-icon-ci.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ci.svg)}.flag-icon-ck{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ck.svg)}.flag-icon-ck.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ck.svg)}.flag-icon-cl{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cl.svg)}.flag-icon-cl.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cl.svg)}.flag-icon-cm{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cm.svg)}.flag-icon-cm.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cm.svg)}.flag-icon-cn{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cn.svg)}.flag-icon-cn.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cn.svg)}.flag-icon-co{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/co.svg)}.flag-icon-co.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/co.svg)}.flag-icon-cr{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cr.svg)}.flag-icon-cr.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cr.svg)}.flag-icon-cu{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cu.svg)}.flag-icon-cu.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cu.svg)}.flag-icon-cv{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cv.svg)}.flag-icon-cv.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cv.svg)}.flag-icon-cw{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cw.svg)}.flag-icon-cw.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cw.svg)}.flag-icon-cx{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cx.svg)}.flag-icon-cx.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cx.svg)}.flag-icon-cy{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cy.svg)}.flag-icon-cy.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cy.svg)}.flag-icon-cz{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cz.svg)}.flag-icon-cz.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cz.svg)}.flag-icon-de{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/de.svg)}.flag-icon-de.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/de.svg)}.flag-icon-dj{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/dj.svg)}.flag-icon-dj.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/dj.svg)}.flag-icon-dk{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/dk.svg)}.flag-icon-dk.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/dk.svg)}.flag-icon-dm{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/dm.svg)}.flag-icon-dm.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/dm.svg)}.flag-icon-do{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/do.svg)}.flag-icon-do.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/do.svg)}.flag-icon-dz{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/dz.svg)}.flag-icon-dz.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/dz.svg)}.flag-icon-ec{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ec.svg)}.flag-icon-ec.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ec.svg)}.flag-icon-ee{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ee.svg)}.flag-icon-ee.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ee.svg)}.flag-icon-eg{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/eg.svg)}.flag-icon-eg.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/eg.svg)}.flag-icon-eh{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/eh.svg)}.flag-icon-eh.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/eh.svg)}.flag-icon-er{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/er.svg)}.flag-icon-er.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/er.svg)}.flag-icon-es{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/es.svg)}.flag-icon-es.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/es.svg)}.flag-icon-et{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/et.svg)}.flag-icon-et.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/et.svg)}.flag-icon-fi{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/fi.svg)}.flag-icon-fi.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/fi.svg)}.flag-icon-fj{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/fj.svg)}.flag-icon-fj.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/fj.svg)}.flag-icon-fk{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/fk.svg)}.flag-icon-fk.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/fk.svg)}.flag-icon-fm{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/fm.svg)}.flag-icon-fm.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/fm.svg)}.flag-icon-fo{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/fo.svg)}.flag-icon-fo.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/fo.svg)}.flag-icon-fr{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/fr.svg)}.flag-icon-fr.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/fr.svg)}.flag-icon-ga{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ga.svg)}.flag-icon-ga.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ga.svg)}.flag-icon-gb{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gb.svg)}.flag-icon-gb.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gb.svg)}.flag-icon-gd{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gd.svg)}.flag-icon-gd.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gd.svg)}.flag-icon-ge{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ge.svg)}.flag-icon-ge.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ge.svg)}.flag-icon-gf{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gf.svg)}.flag-icon-gf.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gf.svg)}.flag-icon-gg{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gg.svg)}.flag-icon-gg.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gg.svg)}.flag-icon-gh{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gh.svg)}.flag-icon-gh.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gh.svg)}.flag-icon-gi{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gi.svg)}.flag-icon-gi.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gi.svg)}.flag-icon-gl{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gl.svg)}.flag-icon-gl.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gl.svg)}.flag-icon-gm{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gm.svg)}.flag-icon-gm.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gm.svg)}.flag-icon-gn{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gn.svg)}.flag-icon-gn.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gn.svg)}.flag-icon-gp{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gp.svg)}.flag-icon-gp.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gp.svg)}.flag-icon-gq{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gq.svg)}.flag-icon-gq.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gq.svg)}.flag-icon-gr{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gr.svg)}.flag-icon-gr.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gr.svg)}.flag-icon-gs{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gs.svg)}.flag-icon-gs.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gs.svg)}.flag-icon-gt{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gt.svg)}.flag-icon-gt.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gt.svg)}.flag-icon-gu{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gu.svg)}.flag-icon-gu.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gu.svg)}.flag-icon-gw{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gw.svg)}.flag-icon-gw.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gw.svg)}.flag-icon-gy{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gy.svg)}.flag-icon-gy.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gy.svg)}.flag-icon-hk{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/hk.svg)}.flag-icon-hk.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/hk.svg)}.flag-icon-hm{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/hm.svg)}.flag-icon-hm.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/hm.svg)}.flag-icon-hn{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/hn.svg)}.flag-icon-hn.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/hn.svg)}.flag-icon-hr{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/hr.svg)}.flag-icon-hr.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/hr.svg)}.flag-icon-ht{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ht.svg)}.flag-icon-ht.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ht.svg)}.flag-icon-hu{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/hu.svg)}.flag-icon-hu.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/hu.svg)}.flag-icon-id{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/id.svg)}.flag-icon-id.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/id.svg)}.flag-icon-ie{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ie.svg)}.flag-icon-ie.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ie.svg)}.flag-icon-il{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/il.svg)}.flag-icon-il.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/il.svg)}.flag-icon-im{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/im.svg)}.flag-icon-im.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/im.svg)}.flag-icon-in{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/in.svg)}.flag-icon-in.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/in.svg)}.flag-icon-io{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/io.svg)}.flag-icon-io.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/io.svg)}.flag-icon-iq{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/iq.svg)}.flag-icon-iq.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/iq.svg)}.flag-icon-ir{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ir.svg)}.flag-icon-ir.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ir.svg)}.flag-icon-is{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/is.svg)}.flag-icon-is.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/is.svg)}.flag-icon-it{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/it.svg)}.flag-icon-it.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/it.svg)}.flag-icon-je{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/je.svg)}.flag-icon-je.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/je.svg)}.flag-icon-jm{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/jm.svg)}.flag-icon-jm.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/jm.svg)}.flag-icon-jo{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/jo.svg)}.flag-icon-jo.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/jo.svg)}.flag-icon-jp{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/jp.svg)}.flag-icon-jp.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/jp.svg)}.flag-icon-ke{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ke.svg)}.flag-icon-ke.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ke.svg)}.flag-icon-kg{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/kg.svg)}.flag-icon-kg.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/kg.svg)}.flag-icon-kh{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/kh.svg)}.flag-icon-kh.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/kh.svg)}.flag-icon-ki{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ki.svg)}.flag-icon-ki.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ki.svg)}.flag-icon-km{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/km.svg)}.flag-icon-km.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/km.svg)}.flag-icon-kn{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/kn.svg)}.flag-icon-kn.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/kn.svg)}.flag-icon-kp{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/kp.svg)}.flag-icon-kp.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/kp.svg)}.flag-icon-kr{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/kr.svg)}.flag-icon-kr.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/kr.svg)}.flag-icon-kw{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/kw.svg)}.flag-icon-kw.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/kw.svg)}.flag-icon-ky{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ky.svg)}.flag-icon-ky.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ky.svg)}.flag-icon-kz{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/kz.svg)}.flag-icon-kz.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/kz.svg)}.flag-icon-la{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/la.svg)}.flag-icon-la.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/la.svg)}.flag-icon-lb{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/lb.svg)}.flag-icon-lb.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/lb.svg)}.flag-icon-lc{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/lc.svg)}.flag-icon-lc.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/lc.svg)}.flag-icon-li{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/li.svg)}.flag-icon-li.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/li.svg)}.flag-icon-lk{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/lk.svg)}.flag-icon-lk.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/lk.svg)}.flag-icon-lr{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/lr.svg)}.flag-icon-lr.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/lr.svg)}.flag-icon-ls{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ls.svg)}.flag-icon-ls.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ls.svg)}.flag-icon-lt{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/lt.svg)}.flag-icon-lt.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/lt.svg)}.flag-icon-lu{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/lu.svg)}.flag-icon-lu.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/lu.svg)}.flag-icon-lv{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/lv.svg)}.flag-icon-lv.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/lv.svg)}.flag-icon-ly{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ly.svg)}.flag-icon-ly.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ly.svg)}.flag-icon-ma{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ma.svg)}.flag-icon-ma.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ma.svg)}.flag-icon-mc{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mc.svg)}.flag-icon-mc.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mc.svg)}.flag-icon-md{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/md.svg)}.flag-icon-md.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/md.svg)}.flag-icon-me{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/me.svg)}.flag-icon-me.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/me.svg)}.flag-icon-mf{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mf.svg)}.flag-icon-mf.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mf.svg)}.flag-icon-mg{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mg.svg)}.flag-icon-mg.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mg.svg)}.flag-icon-mh{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mh.svg)}.flag-icon-mh.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mh.svg)}.flag-icon-mk{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mk.svg)}.flag-icon-mk.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mk.svg)}.flag-icon-ml{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ml.svg)}.flag-icon-ml.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ml.svg)}.flag-icon-mm{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mm.svg)}.flag-icon-mm.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mm.svg)}.flag-icon-mn{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mn.svg)}.flag-icon-mn.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mn.svg)}.flag-icon-mo{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mo.svg)}.flag-icon-mo.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mo.svg)}.flag-icon-mp{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mp.svg)}.flag-icon-mp.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mp.svg)}.flag-icon-mq{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mq.svg)}.flag-icon-mq.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mq.svg)}.flag-icon-mr{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mr.svg)}.flag-icon-mr.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mr.svg)}.flag-icon-ms{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ms.svg)}.flag-icon-ms.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ms.svg)}.flag-icon-mt{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mt.svg)}.flag-icon-mt.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mt.svg)}.flag-icon-mu{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mu.svg)}.flag-icon-mu.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mu.svg)}.flag-icon-mv{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mv.svg)}.flag-icon-mv.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mv.svg)}.flag-icon-mw{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mw.svg)}.flag-icon-mw.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mw.svg)}.flag-icon-mx{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mx.svg)}.flag-icon-mx.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mx.svg)}.flag-icon-my{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/my.svg)}.flag-icon-my.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/my.svg)}.flag-icon-mz{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mz.svg)}.flag-icon-mz.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mz.svg)}.flag-icon-na{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/na.svg)}.flag-icon-na.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/na.svg)}.flag-icon-nc{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/nc.svg)}.flag-icon-nc.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/nc.svg)}.flag-icon-ne{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ne.svg)}.flag-icon-ne.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ne.svg)}.flag-icon-nf{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/nf.svg)}.flag-icon-nf.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/nf.svg)}.flag-icon-ng{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ng.svg)}.flag-icon-ng.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ng.svg)}.flag-icon-ni{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ni.svg)}.flag-icon-ni.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ni.svg)}.flag-icon-nl{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/nl.svg)}.flag-icon-nl.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/nl.svg)}.flag-icon-no{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/no.svg)}.flag-icon-no.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/no.svg)}.flag-icon-np{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/np.svg)}.flag-icon-np.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/np.svg)}.flag-icon-nr{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/nr.svg)}.flag-icon-nr.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/nr.svg)}.flag-icon-nu{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/nu.svg)}.flag-icon-nu.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/nu.svg)}.flag-icon-nz{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/nz.svg)}.flag-icon-nz.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/nz.svg)}.flag-icon-om{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/om.svg)}.flag-icon-om.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/om.svg)}.flag-icon-pa{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pa.svg)}.flag-icon-pa.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pa.svg)}.flag-icon-pe{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pe.svg)}.flag-icon-pe.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pe.svg)}.flag-icon-pf{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pf.svg)}.flag-icon-pf.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pf.svg)}.flag-icon-pg{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pg.svg)}.flag-icon-pg.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pg.svg)}.flag-icon-ph{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ph.svg)}.flag-icon-ph.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ph.svg)}.flag-icon-pk{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pk.svg)}.flag-icon-pk.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pk.svg)}.flag-icon-pl{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pl.svg)}.flag-icon-pl.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pl.svg)}.flag-icon-pm{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pm.svg)}.flag-icon-pm.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pm.svg)}.flag-icon-pn{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pn.svg)}.flag-icon-pn.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pn.svg)}.flag-icon-pr{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pr.svg)}.flag-icon-pr.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pr.svg)}.flag-icon-ps{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ps.svg)}.flag-icon-ps.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ps.svg)}.flag-icon-pt{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pt.svg)}.flag-icon-pt.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pt.svg)}.flag-icon-pw{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pw.svg)}.flag-icon-pw.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pw.svg)}.flag-icon-py{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/py.svg)}.flag-icon-py.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/py.svg)}.flag-icon-qa{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/qa.svg)}.flag-icon-qa.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/qa.svg)}.flag-icon-re{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/re.svg)}.flag-icon-re.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/re.svg)}.flag-icon-ro{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ro.svg)}.flag-icon-ro.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ro.svg)}.flag-icon-rs{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/rs.svg)}.flag-icon-rs.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/rs.svg)}.flag-icon-ru{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ru.svg)}.flag-icon-ru.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ru.svg)}.flag-icon-rw{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/rw.svg)}.flag-icon-rw.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/rw.svg)}.flag-icon-sa{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sa.svg)}.flag-icon-sa.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sa.svg)}.flag-icon-sb{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sb.svg)}.flag-icon-sb.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sb.svg)}.flag-icon-sc{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sc.svg)}.flag-icon-sc.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sc.svg)}.flag-icon-sd{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sd.svg)}.flag-icon-sd.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sd.svg)}.flag-icon-se{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/se.svg)}.flag-icon-se.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/se.svg)}.flag-icon-sg{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sg.svg)}.flag-icon-sg.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sg.svg)}.flag-icon-sh{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sh.svg)}.flag-icon-sh.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sh.svg)}.flag-icon-si{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/si.svg)}.flag-icon-si.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/si.svg)}.flag-icon-sj{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sj.svg)}.flag-icon-sj.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sj.svg)}.flag-icon-sk{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sk.svg)}.flag-icon-sk.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sk.svg)}.flag-icon-sl{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sl.svg)}.flag-icon-sl.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sl.svg)}.flag-icon-sm{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sm.svg)}.flag-icon-sm.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sm.svg)}.flag-icon-sn{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sn.svg)}.flag-icon-sn.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sn.svg)}.flag-icon-so{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/so.svg)}.flag-icon-so.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/so.svg)}.flag-icon-sr{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sr.svg)}.flag-icon-sr.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sr.svg)}.flag-icon-ss{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ss.svg)}.flag-icon-ss.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ss.svg)}.flag-icon-st{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/st.svg)}.flag-icon-st.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/st.svg)}.flag-icon-sv{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sv.svg)}.flag-icon-sv.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sv.svg)}.flag-icon-sx{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sx.svg)}.flag-icon-sx.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sx.svg)}.flag-icon-sy{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sy.svg)}.flag-icon-sy.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sy.svg)}.flag-icon-sz{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sz.svg)}.flag-icon-sz.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sz.svg)}.flag-icon-tc{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tc.svg)}.flag-icon-tc.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tc.svg)}.flag-icon-td{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/td.svg)}.flag-icon-td.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/td.svg)}.flag-icon-tf{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tf.svg)}.flag-icon-tf.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tf.svg)}.flag-icon-tg{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tg.svg)}.flag-icon-tg.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tg.svg)}.flag-icon-th{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/th.svg)}.flag-icon-th.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/th.svg)}.flag-icon-tj{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tj.svg)}.flag-icon-tj.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tj.svg)}.flag-icon-tk{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tk.svg)}.flag-icon-tk.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tk.svg)}.flag-icon-tl{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tl.svg)}.flag-icon-tl.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tl.svg)}.flag-icon-tm{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tm.svg)}.flag-icon-tm.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tm.svg)}.flag-icon-tn{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tn.svg)}.flag-icon-tn.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tn.svg)}.flag-icon-to{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/to.svg)}.flag-icon-to.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/to.svg)}.flag-icon-tr{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tr.svg)}.flag-icon-tr.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tr.svg)}.flag-icon-tt{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tt.svg)}.flag-icon-tt.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tt.svg)}.flag-icon-tv{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tv.svg)}.flag-icon-tv.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tv.svg)}.flag-icon-tw{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tw.svg)}.flag-icon-tw.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tw.svg)}.flag-icon-tz{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tz.svg)}.flag-icon-tz.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tz.svg)}.flag-icon-ua{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ua.svg)}.flag-icon-ua.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ua.svg)}.flag-icon-ug{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ug.svg)}.flag-icon-ug.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ug.svg)}.flag-icon-um{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/um.svg)}.flag-icon-um.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/um.svg)}.flag-icon-us{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/us.svg)}.flag-icon-us.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/us.svg)}.flag-icon-uy{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/uy.svg)}.flag-icon-uy.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/uy.svg)}.flag-icon-uz{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/uz.svg)}.flag-icon-uz.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/uz.svg)}.flag-icon-va{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/va.svg)}.flag-icon-va.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/va.svg)}.flag-icon-vc{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/vc.svg)}.flag-icon-vc.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/vc.svg)}.flag-icon-ve{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ve.svg)}.flag-icon-ve.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ve.svg)}.flag-icon-vg{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/vg.svg)}.flag-icon-vg.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/vg.svg)}.flag-icon-vi{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/vi.svg)}.flag-icon-vi.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/vi.svg)}.flag-icon-vn{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/vn.svg)}.flag-icon-vn.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/vn.svg)}.flag-icon-vu{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/vu.svg)}.flag-icon-vu.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/vu.svg)}.flag-icon-wf{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/wf.svg)}.flag-icon-wf.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/wf.svg)}.flag-icon-ws{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ws.svg)}.flag-icon-ws.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ws.svg)}.flag-icon-ye{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ye.svg)}.flag-icon-ye.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ye.svg)}.flag-icon-yt{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/yt.svg)}.flag-icon-yt.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/yt.svg)}.flag-icon-za{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/za.svg)}.flag-icon-za.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/za.svg)}.flag-icon-zm{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/zm.svg)}.flag-icon-zm.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/zm.svg)}.flag-icon-zw{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/zw.svg)}.flag-icon-zw.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/zw.svg)}.flag-icon-es-ca{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/es-ca.svg)}.flag-icon-es-ca.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/es-ca.svg)}.flag-icon-es-ga{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/es-ga.svg)}.flag-icon-es-ga.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/es-ga.svg)}.flag-icon-eu{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/eu.svg)}.flag-icon-eu.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/eu.svg)}.flag-icon-gb-eng{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gb-eng.svg)}.flag-icon-gb-eng.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gb-eng.svg)}.flag-icon-gb-nir{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gb-nir.svg)}.flag-icon-gb-nir.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gb-nir.svg)}.flag-icon-gb-sct{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gb-sct.svg)}.flag-icon-gb-sct.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gb-sct.svg)}.flag-icon-gb-wls{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gb-wls.svg)}.flag-icon-gb-wls.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gb-wls.svg)}.flag-icon-un{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/un.svg)}.flag-icon-un.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/un.svg)}.flag-icon-xk{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/xk.svg)}.flag-icon-xk.flag-icon-squared{background-image:url(../../../../../framework/src/Volo.Abp.Cli/bin/Debug/net6.0/_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/xk.svg)}
+.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\f907"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\f913"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\f91a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\f91e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\f941"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\f949"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:normal;font-display:auto;src:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-brands-400.eot);src:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-brands-400.woff2) format("woff2"),url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-brands-400.woff) format("woff"),url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-brands-400.ttf) format("truetype"),url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:auto;src:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-regular-400.eot);src:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-regular-400.woff2) format("woff2"),url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-regular-400.woff) format("woff"),url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-regular-400.ttf) format("truetype"),url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:auto;src:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-solid-900.eot);src:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-solid-900.woff2) format("woff2"),url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-solid-900.woff) format("woff"),url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-solid-900.ttf) format("truetype"),url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/fontawesome/webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900}
+.flag-icon-background{background-size:contain;background-position:50%;background-repeat:no-repeat}.flag-icon{background-size:contain;background-position:50%;background-repeat:no-repeat;position:relative;display:inline-block;width:1.33333333em;line-height:1em}.flag-icon:before{content:" "}.flag-icon.flag-icon-squared{width:1em}.flag-icon-ad{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ad.svg)}.flag-icon-ad.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ad.svg)}.flag-icon-ae{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ae.svg)}.flag-icon-ae.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ae.svg)}.flag-icon-af{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/af.svg)}.flag-icon-af.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/af.svg)}.flag-icon-ag{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ag.svg)}.flag-icon-ag.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ag.svg)}.flag-icon-ai{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ai.svg)}.flag-icon-ai.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ai.svg)}.flag-icon-al{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/al.svg)}.flag-icon-al.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/al.svg)}.flag-icon-am{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/am.svg)}.flag-icon-am.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/am.svg)}.flag-icon-ao{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ao.svg)}.flag-icon-ao.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ao.svg)}.flag-icon-aq{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/aq.svg)}.flag-icon-aq.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/aq.svg)}.flag-icon-ar{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ar.svg)}.flag-icon-ar.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ar.svg)}.flag-icon-as{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/as.svg)}.flag-icon-as.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/as.svg)}.flag-icon-at{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/at.svg)}.flag-icon-at.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/at.svg)}.flag-icon-au{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/au.svg)}.flag-icon-au.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/au.svg)}.flag-icon-aw{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/aw.svg)}.flag-icon-aw.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/aw.svg)}.flag-icon-ax{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ax.svg)}.flag-icon-ax.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ax.svg)}.flag-icon-az{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/az.svg)}.flag-icon-az.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/az.svg)}.flag-icon-ba{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ba.svg)}.flag-icon-ba.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ba.svg)}.flag-icon-bb{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bb.svg)}.flag-icon-bb.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bb.svg)}.flag-icon-bd{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bd.svg)}.flag-icon-bd.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bd.svg)}.flag-icon-be{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/be.svg)}.flag-icon-be.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/be.svg)}.flag-icon-bf{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bf.svg)}.flag-icon-bf.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bf.svg)}.flag-icon-bg{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bg.svg)}.flag-icon-bg.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bg.svg)}.flag-icon-bh{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bh.svg)}.flag-icon-bh.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bh.svg)}.flag-icon-bi{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bi.svg)}.flag-icon-bi.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bi.svg)}.flag-icon-bj{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bj.svg)}.flag-icon-bj.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bj.svg)}.flag-icon-bl{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bl.svg)}.flag-icon-bl.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bl.svg)}.flag-icon-bm{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bm.svg)}.flag-icon-bm.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bm.svg)}.flag-icon-bn{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bn.svg)}.flag-icon-bn.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bn.svg)}.flag-icon-bo{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bo.svg)}.flag-icon-bo.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bo.svg)}.flag-icon-bq{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bq.svg)}.flag-icon-bq.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bq.svg)}.flag-icon-br{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/br.svg)}.flag-icon-br.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/br.svg)}.flag-icon-bs{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bs.svg)}.flag-icon-bs.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bs.svg)}.flag-icon-bt{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bt.svg)}.flag-icon-bt.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bt.svg)}.flag-icon-bv{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bv.svg)}.flag-icon-bv.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bv.svg)}.flag-icon-bw{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bw.svg)}.flag-icon-bw.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bw.svg)}.flag-icon-by{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/by.svg)}.flag-icon-by.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/by.svg)}.flag-icon-bz{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/bz.svg)}.flag-icon-bz.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/bz.svg)}.flag-icon-ca{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ca.svg)}.flag-icon-ca.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ca.svg)}.flag-icon-cc{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cc.svg)}.flag-icon-cc.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cc.svg)}.flag-icon-cd{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cd.svg)}.flag-icon-cd.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cd.svg)}.flag-icon-cf{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cf.svg)}.flag-icon-cf.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cf.svg)}.flag-icon-cg{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cg.svg)}.flag-icon-cg.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cg.svg)}.flag-icon-ch{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ch.svg)}.flag-icon-ch.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ch.svg)}.flag-icon-ci{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ci.svg)}.flag-icon-ci.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ci.svg)}.flag-icon-ck{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ck.svg)}.flag-icon-ck.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ck.svg)}.flag-icon-cl{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cl.svg)}.flag-icon-cl.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cl.svg)}.flag-icon-cm{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cm.svg)}.flag-icon-cm.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cm.svg)}.flag-icon-cn{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cn.svg)}.flag-icon-cn.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cn.svg)}.flag-icon-co{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/co.svg)}.flag-icon-co.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/co.svg)}.flag-icon-cr{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cr.svg)}.flag-icon-cr.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cr.svg)}.flag-icon-cu{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cu.svg)}.flag-icon-cu.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cu.svg)}.flag-icon-cv{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cv.svg)}.flag-icon-cv.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cv.svg)}.flag-icon-cw{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cw.svg)}.flag-icon-cw.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cw.svg)}.flag-icon-cx{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cx.svg)}.flag-icon-cx.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cx.svg)}.flag-icon-cy{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cy.svg)}.flag-icon-cy.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cy.svg)}.flag-icon-cz{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/cz.svg)}.flag-icon-cz.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/cz.svg)}.flag-icon-de{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/de.svg)}.flag-icon-de.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/de.svg)}.flag-icon-dj{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/dj.svg)}.flag-icon-dj.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/dj.svg)}.flag-icon-dk{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/dk.svg)}.flag-icon-dk.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/dk.svg)}.flag-icon-dm{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/dm.svg)}.flag-icon-dm.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/dm.svg)}.flag-icon-do{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/do.svg)}.flag-icon-do.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/do.svg)}.flag-icon-dz{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/dz.svg)}.flag-icon-dz.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/dz.svg)}.flag-icon-ec{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ec.svg)}.flag-icon-ec.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ec.svg)}.flag-icon-ee{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ee.svg)}.flag-icon-ee.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ee.svg)}.flag-icon-eg{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/eg.svg)}.flag-icon-eg.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/eg.svg)}.flag-icon-eh{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/eh.svg)}.flag-icon-eh.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/eh.svg)}.flag-icon-er{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/er.svg)}.flag-icon-er.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/er.svg)}.flag-icon-es{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/es.svg)}.flag-icon-es.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/es.svg)}.flag-icon-et{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/et.svg)}.flag-icon-et.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/et.svg)}.flag-icon-fi{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/fi.svg)}.flag-icon-fi.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/fi.svg)}.flag-icon-fj{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/fj.svg)}.flag-icon-fj.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/fj.svg)}.flag-icon-fk{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/fk.svg)}.flag-icon-fk.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/fk.svg)}.flag-icon-fm{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/fm.svg)}.flag-icon-fm.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/fm.svg)}.flag-icon-fo{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/fo.svg)}.flag-icon-fo.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/fo.svg)}.flag-icon-fr{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/fr.svg)}.flag-icon-fr.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/fr.svg)}.flag-icon-ga{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ga.svg)}.flag-icon-ga.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ga.svg)}.flag-icon-gb{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gb.svg)}.flag-icon-gb.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gb.svg)}.flag-icon-gd{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gd.svg)}.flag-icon-gd.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gd.svg)}.flag-icon-ge{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ge.svg)}.flag-icon-ge.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ge.svg)}.flag-icon-gf{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gf.svg)}.flag-icon-gf.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gf.svg)}.flag-icon-gg{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gg.svg)}.flag-icon-gg.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gg.svg)}.flag-icon-gh{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gh.svg)}.flag-icon-gh.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gh.svg)}.flag-icon-gi{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gi.svg)}.flag-icon-gi.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gi.svg)}.flag-icon-gl{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gl.svg)}.flag-icon-gl.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gl.svg)}.flag-icon-gm{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gm.svg)}.flag-icon-gm.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gm.svg)}.flag-icon-gn{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gn.svg)}.flag-icon-gn.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gn.svg)}.flag-icon-gp{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gp.svg)}.flag-icon-gp.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gp.svg)}.flag-icon-gq{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gq.svg)}.flag-icon-gq.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gq.svg)}.flag-icon-gr{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gr.svg)}.flag-icon-gr.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gr.svg)}.flag-icon-gs{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gs.svg)}.flag-icon-gs.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gs.svg)}.flag-icon-gt{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gt.svg)}.flag-icon-gt.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gt.svg)}.flag-icon-gu{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gu.svg)}.flag-icon-gu.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gu.svg)}.flag-icon-gw{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gw.svg)}.flag-icon-gw.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gw.svg)}.flag-icon-gy{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gy.svg)}.flag-icon-gy.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gy.svg)}.flag-icon-hk{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/hk.svg)}.flag-icon-hk.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/hk.svg)}.flag-icon-hm{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/hm.svg)}.flag-icon-hm.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/hm.svg)}.flag-icon-hn{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/hn.svg)}.flag-icon-hn.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/hn.svg)}.flag-icon-hr{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/hr.svg)}.flag-icon-hr.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/hr.svg)}.flag-icon-ht{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ht.svg)}.flag-icon-ht.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ht.svg)}.flag-icon-hu{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/hu.svg)}.flag-icon-hu.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/hu.svg)}.flag-icon-id{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/id.svg)}.flag-icon-id.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/id.svg)}.flag-icon-ie{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ie.svg)}.flag-icon-ie.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ie.svg)}.flag-icon-il{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/il.svg)}.flag-icon-il.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/il.svg)}.flag-icon-im{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/im.svg)}.flag-icon-im.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/im.svg)}.flag-icon-in{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/in.svg)}.flag-icon-in.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/in.svg)}.flag-icon-io{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/io.svg)}.flag-icon-io.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/io.svg)}.flag-icon-iq{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/iq.svg)}.flag-icon-iq.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/iq.svg)}.flag-icon-ir{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ir.svg)}.flag-icon-ir.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ir.svg)}.flag-icon-is{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/is.svg)}.flag-icon-is.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/is.svg)}.flag-icon-it{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/it.svg)}.flag-icon-it.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/it.svg)}.flag-icon-je{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/je.svg)}.flag-icon-je.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/je.svg)}.flag-icon-jm{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/jm.svg)}.flag-icon-jm.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/jm.svg)}.flag-icon-jo{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/jo.svg)}.flag-icon-jo.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/jo.svg)}.flag-icon-jp{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/jp.svg)}.flag-icon-jp.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/jp.svg)}.flag-icon-ke{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ke.svg)}.flag-icon-ke.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ke.svg)}.flag-icon-kg{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/kg.svg)}.flag-icon-kg.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/kg.svg)}.flag-icon-kh{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/kh.svg)}.flag-icon-kh.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/kh.svg)}.flag-icon-ki{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ki.svg)}.flag-icon-ki.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ki.svg)}.flag-icon-km{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/km.svg)}.flag-icon-km.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/km.svg)}.flag-icon-kn{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/kn.svg)}.flag-icon-kn.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/kn.svg)}.flag-icon-kp{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/kp.svg)}.flag-icon-kp.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/kp.svg)}.flag-icon-kr{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/kr.svg)}.flag-icon-kr.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/kr.svg)}.flag-icon-kw{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/kw.svg)}.flag-icon-kw.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/kw.svg)}.flag-icon-ky{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ky.svg)}.flag-icon-ky.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ky.svg)}.flag-icon-kz{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/kz.svg)}.flag-icon-kz.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/kz.svg)}.flag-icon-la{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/la.svg)}.flag-icon-la.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/la.svg)}.flag-icon-lb{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/lb.svg)}.flag-icon-lb.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/lb.svg)}.flag-icon-lc{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/lc.svg)}.flag-icon-lc.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/lc.svg)}.flag-icon-li{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/li.svg)}.flag-icon-li.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/li.svg)}.flag-icon-lk{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/lk.svg)}.flag-icon-lk.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/lk.svg)}.flag-icon-lr{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/lr.svg)}.flag-icon-lr.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/lr.svg)}.flag-icon-ls{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ls.svg)}.flag-icon-ls.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ls.svg)}.flag-icon-lt{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/lt.svg)}.flag-icon-lt.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/lt.svg)}.flag-icon-lu{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/lu.svg)}.flag-icon-lu.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/lu.svg)}.flag-icon-lv{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/lv.svg)}.flag-icon-lv.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/lv.svg)}.flag-icon-ly{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ly.svg)}.flag-icon-ly.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ly.svg)}.flag-icon-ma{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ma.svg)}.flag-icon-ma.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ma.svg)}.flag-icon-mc{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mc.svg)}.flag-icon-mc.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mc.svg)}.flag-icon-md{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/md.svg)}.flag-icon-md.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/md.svg)}.flag-icon-me{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/me.svg)}.flag-icon-me.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/me.svg)}.flag-icon-mf{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mf.svg)}.flag-icon-mf.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mf.svg)}.flag-icon-mg{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mg.svg)}.flag-icon-mg.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mg.svg)}.flag-icon-mh{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mh.svg)}.flag-icon-mh.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mh.svg)}.flag-icon-mk{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mk.svg)}.flag-icon-mk.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mk.svg)}.flag-icon-ml{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ml.svg)}.flag-icon-ml.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ml.svg)}.flag-icon-mm{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mm.svg)}.flag-icon-mm.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mm.svg)}.flag-icon-mn{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mn.svg)}.flag-icon-mn.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mn.svg)}.flag-icon-mo{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mo.svg)}.flag-icon-mo.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mo.svg)}.flag-icon-mp{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mp.svg)}.flag-icon-mp.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mp.svg)}.flag-icon-mq{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mq.svg)}.flag-icon-mq.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mq.svg)}.flag-icon-mr{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mr.svg)}.flag-icon-mr.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mr.svg)}.flag-icon-ms{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ms.svg)}.flag-icon-ms.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ms.svg)}.flag-icon-mt{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mt.svg)}.flag-icon-mt.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mt.svg)}.flag-icon-mu{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mu.svg)}.flag-icon-mu.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mu.svg)}.flag-icon-mv{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mv.svg)}.flag-icon-mv.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mv.svg)}.flag-icon-mw{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mw.svg)}.flag-icon-mw.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mw.svg)}.flag-icon-mx{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mx.svg)}.flag-icon-mx.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mx.svg)}.flag-icon-my{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/my.svg)}.flag-icon-my.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/my.svg)}.flag-icon-mz{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/mz.svg)}.flag-icon-mz.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/mz.svg)}.flag-icon-na{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/na.svg)}.flag-icon-na.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/na.svg)}.flag-icon-nc{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/nc.svg)}.flag-icon-nc.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/nc.svg)}.flag-icon-ne{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ne.svg)}.flag-icon-ne.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ne.svg)}.flag-icon-nf{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/nf.svg)}.flag-icon-nf.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/nf.svg)}.flag-icon-ng{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ng.svg)}.flag-icon-ng.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ng.svg)}.flag-icon-ni{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ni.svg)}.flag-icon-ni.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ni.svg)}.flag-icon-nl{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/nl.svg)}.flag-icon-nl.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/nl.svg)}.flag-icon-no{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/no.svg)}.flag-icon-no.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/no.svg)}.flag-icon-np{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/np.svg)}.flag-icon-np.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/np.svg)}.flag-icon-nr{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/nr.svg)}.flag-icon-nr.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/nr.svg)}.flag-icon-nu{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/nu.svg)}.flag-icon-nu.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/nu.svg)}.flag-icon-nz{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/nz.svg)}.flag-icon-nz.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/nz.svg)}.flag-icon-om{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/om.svg)}.flag-icon-om.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/om.svg)}.flag-icon-pa{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pa.svg)}.flag-icon-pa.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pa.svg)}.flag-icon-pe{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pe.svg)}.flag-icon-pe.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pe.svg)}.flag-icon-pf{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pf.svg)}.flag-icon-pf.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pf.svg)}.flag-icon-pg{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pg.svg)}.flag-icon-pg.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pg.svg)}.flag-icon-ph{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ph.svg)}.flag-icon-ph.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ph.svg)}.flag-icon-pk{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pk.svg)}.flag-icon-pk.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pk.svg)}.flag-icon-pl{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pl.svg)}.flag-icon-pl.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pl.svg)}.flag-icon-pm{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pm.svg)}.flag-icon-pm.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pm.svg)}.flag-icon-pn{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pn.svg)}.flag-icon-pn.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pn.svg)}.flag-icon-pr{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pr.svg)}.flag-icon-pr.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pr.svg)}.flag-icon-ps{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ps.svg)}.flag-icon-ps.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ps.svg)}.flag-icon-pt{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pt.svg)}.flag-icon-pt.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pt.svg)}.flag-icon-pw{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/pw.svg)}.flag-icon-pw.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/pw.svg)}.flag-icon-py{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/py.svg)}.flag-icon-py.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/py.svg)}.flag-icon-qa{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/qa.svg)}.flag-icon-qa.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/qa.svg)}.flag-icon-re{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/re.svg)}.flag-icon-re.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/re.svg)}.flag-icon-ro{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ro.svg)}.flag-icon-ro.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ro.svg)}.flag-icon-rs{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/rs.svg)}.flag-icon-rs.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/rs.svg)}.flag-icon-ru{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ru.svg)}.flag-icon-ru.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ru.svg)}.flag-icon-rw{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/rw.svg)}.flag-icon-rw.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/rw.svg)}.flag-icon-sa{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sa.svg)}.flag-icon-sa.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sa.svg)}.flag-icon-sb{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sb.svg)}.flag-icon-sb.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sb.svg)}.flag-icon-sc{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sc.svg)}.flag-icon-sc.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sc.svg)}.flag-icon-sd{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sd.svg)}.flag-icon-sd.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sd.svg)}.flag-icon-se{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/se.svg)}.flag-icon-se.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/se.svg)}.flag-icon-sg{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sg.svg)}.flag-icon-sg.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sg.svg)}.flag-icon-sh{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sh.svg)}.flag-icon-sh.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sh.svg)}.flag-icon-si{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/si.svg)}.flag-icon-si.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/si.svg)}.flag-icon-sj{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sj.svg)}.flag-icon-sj.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sj.svg)}.flag-icon-sk{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sk.svg)}.flag-icon-sk.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sk.svg)}.flag-icon-sl{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sl.svg)}.flag-icon-sl.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sl.svg)}.flag-icon-sm{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sm.svg)}.flag-icon-sm.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sm.svg)}.flag-icon-sn{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sn.svg)}.flag-icon-sn.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sn.svg)}.flag-icon-so{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/so.svg)}.flag-icon-so.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/so.svg)}.flag-icon-sr{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sr.svg)}.flag-icon-sr.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sr.svg)}.flag-icon-ss{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ss.svg)}.flag-icon-ss.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ss.svg)}.flag-icon-st{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/st.svg)}.flag-icon-st.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/st.svg)}.flag-icon-sv{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sv.svg)}.flag-icon-sv.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sv.svg)}.flag-icon-sx{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sx.svg)}.flag-icon-sx.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sx.svg)}.flag-icon-sy{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sy.svg)}.flag-icon-sy.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sy.svg)}.flag-icon-sz{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/sz.svg)}.flag-icon-sz.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/sz.svg)}.flag-icon-tc{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tc.svg)}.flag-icon-tc.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tc.svg)}.flag-icon-td{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/td.svg)}.flag-icon-td.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/td.svg)}.flag-icon-tf{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tf.svg)}.flag-icon-tf.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tf.svg)}.flag-icon-tg{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tg.svg)}.flag-icon-tg.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tg.svg)}.flag-icon-th{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/th.svg)}.flag-icon-th.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/th.svg)}.flag-icon-tj{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tj.svg)}.flag-icon-tj.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tj.svg)}.flag-icon-tk{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tk.svg)}.flag-icon-tk.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tk.svg)}.flag-icon-tl{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tl.svg)}.flag-icon-tl.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tl.svg)}.flag-icon-tm{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tm.svg)}.flag-icon-tm.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tm.svg)}.flag-icon-tn{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tn.svg)}.flag-icon-tn.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tn.svg)}.flag-icon-to{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/to.svg)}.flag-icon-to.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/to.svg)}.flag-icon-tr{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tr.svg)}.flag-icon-tr.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tr.svg)}.flag-icon-tt{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tt.svg)}.flag-icon-tt.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tt.svg)}.flag-icon-tv{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tv.svg)}.flag-icon-tv.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tv.svg)}.flag-icon-tw{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tw.svg)}.flag-icon-tw.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tw.svg)}.flag-icon-tz{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/tz.svg)}.flag-icon-tz.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/tz.svg)}.flag-icon-ua{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ua.svg)}.flag-icon-ua.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ua.svg)}.flag-icon-ug{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ug.svg)}.flag-icon-ug.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ug.svg)}.flag-icon-um{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/um.svg)}.flag-icon-um.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/um.svg)}.flag-icon-us{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/us.svg)}.flag-icon-us.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/us.svg)}.flag-icon-uy{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/uy.svg)}.flag-icon-uy.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/uy.svg)}.flag-icon-uz{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/uz.svg)}.flag-icon-uz.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/uz.svg)}.flag-icon-va{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/va.svg)}.flag-icon-va.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/va.svg)}.flag-icon-vc{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/vc.svg)}.flag-icon-vc.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/vc.svg)}.flag-icon-ve{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ve.svg)}.flag-icon-ve.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ve.svg)}.flag-icon-vg{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/vg.svg)}.flag-icon-vg.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/vg.svg)}.flag-icon-vi{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/vi.svg)}.flag-icon-vi.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/vi.svg)}.flag-icon-vn{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/vn.svg)}.flag-icon-vn.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/vn.svg)}.flag-icon-vu{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/vu.svg)}.flag-icon-vu.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/vu.svg)}.flag-icon-wf{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/wf.svg)}.flag-icon-wf.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/wf.svg)}.flag-icon-ws{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ws.svg)}.flag-icon-ws.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ws.svg)}.flag-icon-ye{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/ye.svg)}.flag-icon-ye.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/ye.svg)}.flag-icon-yt{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/yt.svg)}.flag-icon-yt.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/yt.svg)}.flag-icon-za{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/za.svg)}.flag-icon-za.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/za.svg)}.flag-icon-zm{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/zm.svg)}.flag-icon-zm.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/zm.svg)}.flag-icon-zw{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/zw.svg)}.flag-icon-zw.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/zw.svg)}.flag-icon-es-ca{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/es-ca.svg)}.flag-icon-es-ca.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/es-ca.svg)}.flag-icon-es-ga{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/es-ga.svg)}.flag-icon-es-ga.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/es-ga.svg)}.flag-icon-eu{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/eu.svg)}.flag-icon-eu.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/eu.svg)}.flag-icon-gb-eng{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gb-eng.svg)}.flag-icon-gb-eng.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gb-eng.svg)}.flag-icon-gb-nir{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gb-nir.svg)}.flag-icon-gb-nir.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gb-nir.svg)}.flag-icon-gb-sct{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gb-sct.svg)}.flag-icon-gb-sct.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gb-sct.svg)}.flag-icon-gb-wls{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/gb-wls.svg)}.flag-icon-gb-wls.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/gb-wls.svg)}.flag-icon-un{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/un.svg)}.flag-icon-un.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/un.svg)}.flag-icon-xk{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/4x3/xk.svg)}.flag-icon-xk.flag-icon-squared{background-image:url(../../../../../../_content/Volo.Abp.AspNetCore.Components.WebAssembly.Theming/libs/flag-icon/flags/1x1/xk.svg)}
body:before{content:"mobile";display:none;visibility:hidden}@media(min-width:768px){body:before{content:"tablet"}}@media(min-width:992px){body:before{content:"desktop"}}@media(min-width:1200px){body:before{content:"widescreen"}}@media(min-width:1400px){body:before{content:"fullhd"}}hr.divider.divider-solid{border-top:var(--b-divider-thickness,1px) solid var(--b-divider-color,#999)}hr.divider.divider-dashed{border-top:var(--b-divider-thickness,1px) dashed var(--b-divider-color,#999)}hr.divider.divider-dotted{border-top:var(--b-divider-thickness,1px) dotted var(--b-divider-color,#999)}hr.divider.divider-text{position:relative;border:none;height:var(--b-divider-thickness,1px);background:var(--b-divider-color,#999)}hr.divider.divider-text::before{content:attr(data-content);display:inline-block;background:#fff;font-weight:bold;font-size:var(--b-divider-font-size,.85rem);color:var(--b-divider-color,#999);border-radius:30rem;padding:.2rem 2rem;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.progress.progress-xs{height:.25rem}.progress.progress-sm{height:.5rem}.progress.progress-md{height:1rem}.progress.progress-lg{height:1.5rem}.progress.progress-xl{height:2rem}.b-page-progress{width:100%;height:4px;z-index:9999;top:0;left:0;position:fixed;display:none}.b-page-progress .b-page-progress-indicator{width:0;height:100%;transition:height .3s;background-color:#000;transition:width 1s}.b-page-progress .b-page-progress-indicator.b-page-progress-indicator-indeterminate{width:30%;animation:running-page-progress 2s cubic-bezier(.4,0,.2,1) infinite}.b-page-progress.b-page-progress-active{display:block}@keyframes running-page-progress{0%{margin-left:0;margin-right:100%}50%{margin-left:25%;margin-right:0%}100%{margin-left:100%;margin-right:0}}.tippy-box[data-animation=scale][data-placement^=top]{transform-origin:bottom}.tippy-box[data-animation=scale][data-placement^=bottom]{transform-origin:top}.tippy-box[data-animation=scale][data-placement^=left]{transform-origin:right}.tippy-box[data-animation=scale][data-placement^=right]{transform-origin:left}.tippy-box[data-animation=scale][data-state=hidden]{transform:scale(.5);opacity:0}.tippy-box[data-theme~='blazorise']{background-color:RGBA(var(--b-tooltip-background-color-r,128),var(--b-tooltip-background-color-g,128),var(--b-tooltip-background-color-b,128),var(--b-tooltip-background-opacity,.9));color:var(--b-tooltip-color,#fff)}.tippy-box[data-theme~='blazorise'][data-placement^='top']>.tippy-arrow::before{border-top-color:RGBA(var(--b-tooltip-background-color-r,128),var(--b-tooltip-background-color-g,128),var(--b-tooltip-background-color-b,128),var(--b-tooltip-background-opacity,.9))}.tippy-box[data-theme~='blazorise'][data-placement^='bottom']>.tippy-arrow::before{border-bottom-color:RGBA(var(--b-tooltip-background-color-r,128),var(--b-tooltip-background-color-g,128),var(--b-tooltip-background-color-b,128),var(--b-tooltip-background-opacity,.9))}.tippy-box[data-theme~='blazorise'][data-placement^='left']>.tippy-arrow::before{border-left-color:RGBA(var(--b-tooltip-background-color-r,128),var(--b-tooltip-background-color-g,128),var(--b-tooltip-background-color-b,128),var(--b-tooltip-background-opacity,.9))}.tippy-box[data-theme~='blazorise'][data-placement^='right']>.tippy-arrow::before{border-right-color:RGBA(var(--b-tooltip-background-color-r,128),var(--b-tooltip-background-color-g,128),var(--b-tooltip-background-color-b,128),var(--b-tooltip-background-opacity,.9))}.tippy-box[data-theme~='blazorise']>.tippy-svg-arrow{fill:RGBA(var(--b-tooltip-background-color-r,128),var(--b-tooltip-background-color-g,128),var(--b-tooltip-background-color-b,128),var(--b-tooltip-background-opacity,.9))}.b-tooltip-inline{display:inline-block}.b-layout{display:flex;flex:auto;flex-direction:column}.b-layout.b-layout-root{height:100vh}.b-layout,.b-layout *{box-sizing:border-box}@keyframes spinner{0%{transform:translate3d(-50%,-50%,0) rotate(0deg)}100%{transform:translate3d(-50%,-50%,0) rotate(360deg)}}.b-layout>.b-layout-loading{z-index:9999;position:fixed;width:100%;height:100%;background:rgba(0,0,0,.3)}.b-layout>.b-layout-loading:before{animation:1s linear infinite spinner;border:solid 3px #eee;border-bottom-color:var(--b-theme-primary);border-radius:50%;height:40px;left:50%;position:absolute;top:50%;transform:translate3d(-50%,-50%,0);width:40px;content:' '}.b-layout.b-layout-has-sider{flex-direction:row;min-height:0}.b-layout.b-layout-has-sider .b-layout{overflow-x:hidden}.b-layout-header,.b-layout-footer{flex:0 0 auto}.b-layout-header{color:rgba(0,0,0,.65)}.b-layout.b-layout-root.b-layout-has-sider>.b-layout-header-fixed,.b-layout.b-layout-root.b-layout-has-sider>.b-layout>.b-layout-header-fixed{position:sticky;top:0;width:100%;flex:0}.b-layout.b-layout-root:not(.b-layout-has-sider) .b-layout-header-fixed,.b-layout.b-layout-root:not(.b-layout-has-sider)>.b-layout .b-layout-header-fixed{position:fixed;top:0;left:0;right:0;flex:0}.b-layout.b-layout-root:not(.b-layout-has-sider) .b-layout-header-fixed+.b-layout-content,.b-layout.b-layout-root:not(.b-layout-has-sider)>.b-layout .b-layout-header-fixed+.b-layout-content{margin-top:var(--b-bar-horizontal-height,auto)}.b-layout.b-layout-root>.b-layout-header.b-layout-header-fixed+.b-layout.b-layout-has-sider{margin-top:var(--b-bar-horizontal-height,auto)}.b-layout-footer{color:rgba(0,0,0,.65)}.b-layout-footer-fixed{position:sticky;z-index:1;bottom:0;flex:0}.b-layout-content{flex:1}.b-layout-sider{display:flex;position:relative;background:#001529}.b-layout-sider-content{position:sticky;top:0;z-index:2}.b-layout-header .navbar{line-height:inherit}.b-bar-horizontal[data-collapse=hide]{flex-wrap:nowrap}.b-bar-horizontal[data-collapse=hide][data-broken=true]{height:auto}.b-bar-horizontal[data-broken=false]{height:auto}.b-layout>.b-layout-header .b-bar-horizontal[data-collapse=hide][data-broken=true]{height:var(--b-bar-horizontal-height,auto)}.b-layout>.b-layout-header .b-bar-horizontal[data-broken=false]{height:var(--b-bar-horizontal-height,auto)}.b-bar-vertical-inline,.b-bar-vertical-popout,.b-bar-vertical-small{display:flex;flex-direction:column;flex-wrap:nowrap;position:sticky;top:0;padding:0;min-width:var(--b-vertical-bar-width,230px);max-width:var(--b-vertical-bar-width,230px);width:var(--b-vertical-bar-width,230px);transition:width 200ms ease-in-out,min-width 200ms ease-in-out;box-shadow:2px 0 6px rgba(0,21,41,.35);height:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.b-bar-vertical-inline .b-bar-menu,.b-bar-vertical-popout .b-bar-menu,.b-bar-vertical-small .b-bar-menu{width:100%;display:flex;flex:1;justify-content:space-between;flex-direction:column;align-self:stretch}.b-bar-vertical-inline .b-bar-brand,.b-bar-vertical-popout .b-bar-brand,.b-bar-vertical-small .b-bar-brand{width:100%;display:flex;height:var(--b-vertical-bar-brand-height,64px);min-height:var(--b-vertical-bar-brand-height,64px)}.b-bar-vertical-inline .b-bar-toggler-inline,.b-bar-vertical-popout .b-bar-toggler-inline,.b-bar-vertical-small .b-bar-toggler-inline{height:var(--b-vertical-bar-brand-height,64px);padding:12px;display:inline-flex;cursor:pointer;position:absolute;right:0}.b-bar-vertical-inline .b-bar-toggler-inline>*,.b-bar-vertical-popout .b-bar-toggler-inline>*,.b-bar-vertical-small .b-bar-toggler-inline>*{margin:auto}.b-bar-vertical-inline .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-popout .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-small .b-bar-toggler-popout:not(.b-bar-mobile-toggle){display:flex;position:fixed;left:var(--b-vertical-bar-width,230px);border-radius:0 10px 10px 0;border:0;width:10px;height:40px;padding:5px;align-items:center;transition:width 200ms ease-in-out,left 200ms ease-in-out;box-shadow:2px 0 6px rgba(0,21,41,.35);cursor:pointer}.b-bar-vertical-inline .b-bar-toggler-popout:not(.b-bar-mobile-toggle)>*,.b-bar-vertical-popout .b-bar-toggler-popout:not(.b-bar-mobile-toggle)>*,.b-bar-vertical-small .b-bar-toggler-popout:not(.b-bar-mobile-toggle)>*{margin:auto;display:none}.b-bar-vertical-inline .b-bar-toggler-popout:not(.b-bar-mobile-toggle):hover,.b-bar-vertical-popout .b-bar-toggler-popout:not(.b-bar-mobile-toggle):hover,.b-bar-vertical-small .b-bar-toggler-popout:not(.b-bar-mobile-toggle):hover{width:45px}.b-bar-vertical-inline .b-bar-toggler-popout:not(.b-bar-mobile-toggle):hover>*,.b-bar-vertical-popout .b-bar-toggler-popout:not(.b-bar-mobile-toggle):hover>*,.b-bar-vertical-small .b-bar-toggler-popout:not(.b-bar-mobile-toggle):hover>*{display:block}.b-bar-vertical-inline .b-bar-item,.b-bar-vertical-popout .b-bar-item,.b-bar-vertical-small .b-bar-item{margin:auto;flex-grow:1;min-height:40px}.b-bar-vertical-inline .b-bar-item .b-bar-icon,.b-bar-vertical-popout .b-bar-item .b-bar-icon,.b-bar-vertical-small .b-bar-item .b-bar-icon{font-size:1.25rem;vertical-align:middle;margin:3px;display:inline-block}.b-bar-vertical-inline .b-bar-start,.b-bar-vertical-popout .b-bar-start,.b-bar-vertical-small .b-bar-start{width:100%;display:block}.b-bar-vertical-inline .b-bar-end,.b-bar-vertical-popout .b-bar-end,.b-bar-vertical-small .b-bar-end{padding-bottom:1rem;width:100%;padding-top:1rem;display:block}.b-bar-vertical-inline .b-bar-link,.b-bar-vertical-popout .b-bar-link,.b-bar-vertical-small .b-bar-link{display:block;width:100%;text-decoration:none;padding:.5rem .5rem .5rem 1.5rem;cursor:pointer;overflow-x:hidden;line-height:1.5rem;vertical-align:middle;transition:font-size 150ms ease-in}.b-bar-vertical-inline .b-bar-label,.b-bar-vertical-popout .b-bar-label,.b-bar-vertical-small .b-bar-label{background:transparent;color:#adb5bd;padding:.375rem 1.25rem;font-size:.75rem;text-overflow:ellipsis;overflow-x:hidden}.b-bar-vertical-inline .b-bar-dropdown .b-bar-dropdown-toggle:before,.b-bar-vertical-popout .b-bar-dropdown .b-bar-dropdown-toggle:before,.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-toggle:before{content:" ";border:solid;border-width:0 2px 2px 0;display:inline-block;padding:2px;right:1rem;transition:transform 200ms ease-out;float:right;position:relative;-webkit-transform:rotate(225deg);transform:rotate(225deg);top:.7rem}.b-bar-vertical-inline .b-bar-dropdown:not([data-visible=true]) .b-bar-dropdown-toggle:before,.b-bar-vertical-popout .b-bar-dropdown:not([data-visible=true]) .b-bar-dropdown-toggle:before,.b-bar-vertical-small .b-bar-dropdown:not([data-visible=true]) .b-bar-dropdown-toggle:before{-webkit-transform:rotate(45deg);transform:rotate(45deg);top:.5rem}.b-bar-vertical-inline .b-bar-dropdown .b-bar-dropdown-menu,.b-bar-vertical-popout .b-bar-dropdown .b-bar-dropdown-menu,.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu{display:none;background:inherit;color:inherit;float:none;padding:5px 0}.b-bar-vertical-inline .b-bar-dropdown .b-bar-dropdown-menu[data-visible=true],.b-bar-vertical-popout .b-bar-dropdown .b-bar-dropdown-menu[data-visible=true],.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu[data-visible=true]{display:block}.b-bar-vertical-inline .b-bar-dropdown .b-bar-dropdown-menu .b-bar-dropdown-item,.b-bar-vertical-popout .b-bar-dropdown .b-bar-dropdown-menu .b-bar-dropdown-item,.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu .b-bar-dropdown-item{position:relative;color:inherit;transition:background 100ms ease-in-out,color 100ms ease-in-out;text-decoration:none;display:block;width:100%;overflow-x:hidden}.b-bar-vertical-inline .b-bar-dropdown .b-bar-dropdown-menu .b-bar-dropdown-item i,.b-bar-vertical-popout .b-bar-dropdown .b-bar-dropdown-menu .b-bar-dropdown-item i,.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu .b-bar-dropdown-item i{margin-right:.3rem}.b-bar-vertical-inline .b-bar-dropdown .b-bar-dropdown-menu:before,.b-bar-vertical-popout .b-bar-dropdown .b-bar-dropdown-menu:before,.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu:before{background:inherit;box-shadow:none}.b-bar-vertical-inline .b-bar-mobile-toggle,.b-bar-vertical-popout .b-bar-mobile-toggle,.b-bar-vertical-small .b-bar-mobile-toggle{right:20px;margin:auto;display:none}.b-bar-vertical-inline .b-bar-item-multi-line,.b-bar-vertical-popout .b-bar-item-multi-line,.b-bar-vertical-small .b-bar-item-multi-line{display:-webkit-box !important;-webkit-box-orient:vertical;-webkit-line-clamp:var(--b-bar-item-lines,2);white-space:normal !important;overflow:hidden;text-overflow:ellipsis}.b-bar-vertical-inline.b-bar-dark,.b-bar-vertical-popout.b-bar-dark,.b-bar-vertical-small.b-bar-dark{background:var(--b-bar-dark-background,#001529);color:var(--b-bar-dark-color,rgba(255,255,255,.5))}.b-bar-vertical-inline.b-bar-dark .b-bar-brand,.b-bar-vertical-popout.b-bar-dark .b-bar-brand,.b-bar-vertical-small.b-bar-dark .b-bar-brand{background:var(--b-bar-brand-dark-background,rgba(255,255,255,.025))}.b-bar-vertical-inline.b-bar-dark .b-bar-brand .b-bar-link,.b-bar-vertical-popout.b-bar-dark .b-bar-brand .b-bar-link,.b-bar-vertical-small.b-bar-dark .b-bar-brand .b-bar-link{color:#fff}.b-bar-vertical-inline.b-bar-dark .b-bar-brand .b-bar-link.active,.b-bar-vertical-popout.b-bar-dark .b-bar-brand .b-bar-link.active,.b-bar-vertical-small.b-bar-dark .b-bar-brand .b-bar-link.active{color:#fff;background:inherit}.b-bar-vertical-inline.b-bar-dark .b-bar-brand .b-bar-link:hover,.b-bar-vertical-popout.b-bar-dark .b-bar-brand .b-bar-link:hover,.b-bar-vertical-small.b-bar-dark .b-bar-brand .b-bar-link:hover{color:#fff;background:inherit}.b-bar-vertical-inline.b-bar-dark .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-popout.b-bar-dark .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-small.b-bar-dark .b-bar-toggler-popout:not(.b-bar-mobile-toggle){background:var(--b-bar-dark-background,#001529);color:var(--b-bar-dark-color,rgba(255,255,255,.5))}.b-bar-vertical-inline.b-bar-dark .b-bar-dropdown-menu,.b-bar-vertical-popout.b-bar-dark .b-bar-dropdown-menu,.b-bar-vertical-small.b-bar-dark .b-bar-dropdown-menu{background:var(--b-bar-dropdown-dark-background,#000c17)}.b-bar-vertical-inline.b-bar-dark .b-bar-dropdown-menu .b-bar-dropdown-item.active,.b-bar-vertical-popout.b-bar-dark .b-bar-dropdown-menu .b-bar-dropdown-item.active,.b-bar-vertical-small.b-bar-dark .b-bar-dropdown-menu .b-bar-dropdown-item.active{color:var(--b-bar-item-dark-active-color,#fff);background:var(--b-bar-item-dark-active-background,#0288d1)}.b-bar-vertical-inline.b-bar-dark .b-bar-dropdown-menu .b-bar-dropdown-item:hover,.b-bar-vertical-popout.b-bar-dark .b-bar-dropdown-menu .b-bar-dropdown-item:hover,.b-bar-vertical-small.b-bar-dark .b-bar-dropdown-menu .b-bar-dropdown-item:hover{color:var(--b-bar-item-dark-hover-color,#fff);background:var(--b-bar-item-dark-hover-background,rgba(255,255,255,.3))}.b-bar-vertical-inline.b-bar-dark .b-bar-link,.b-bar-vertical-popout.b-bar-dark .b-bar-link,.b-bar-vertical-small.b-bar-dark .b-bar-link{color:inherit}.b-bar-vertical-inline.b-bar-dark .b-bar-link.active,.b-bar-vertical-popout.b-bar-dark .b-bar-link.active,.b-bar-vertical-small.b-bar-dark .b-bar-link.active{color:var(--b-bar-item-dark-active-color,#fff);background:var(--b-bar-item-dark-active-background,#0288d1)}.b-bar-vertical-inline.b-bar-dark .b-bar-link:hover,.b-bar-vertical-popout.b-bar-dark .b-bar-link:hover,.b-bar-vertical-small.b-bar-dark .b-bar-link:hover{color:var(--b-bar-item-dark-hover-color,#fff);background:var(--b-bar-item-dark-hover-background,rgba(255,255,255,.3))}.b-bar-vertical-inline.b-bar-light,.b-bar-vertical-popout.b-bar-light,.b-bar-vertical-small.b-bar-light{background:var(--b-bar-light-background,#fff);color:var(--b-bar-light-color,rgba(0,0,0,.7))}.b-bar-vertical-inline.b-bar-light .b-bar-brand,.b-bar-vertical-popout.b-bar-light .b-bar-brand,.b-bar-vertical-small.b-bar-light .b-bar-brand{background:var(--b-bar-brand-light-background,rgba(0,0,0,.025))}.b-bar-vertical-inline.b-bar-light .b-bar-brand .b-bar-link,.b-bar-vertical-popout.b-bar-light .b-bar-brand .b-bar-link,.b-bar-vertical-small.b-bar-light .b-bar-brand .b-bar-link{color:#000}.b-bar-vertical-inline.b-bar-light .b-bar-brand .b-bar-link.active,.b-bar-vertical-popout.b-bar-light .b-bar-brand .b-bar-link.active,.b-bar-vertical-small.b-bar-light .b-bar-brand .b-bar-link.active{background:inherit}.b-bar-vertical-inline.b-bar-light .b-bar-brand .b-bar-link:hover,.b-bar-vertical-popout.b-bar-light .b-bar-brand .b-bar-link:hover,.b-bar-vertical-small.b-bar-light .b-bar-brand .b-bar-link:hover{background:inherit}.b-bar-vertical-inline.b-bar-light .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-popout.b-bar-light .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-small.b-bar-light .b-bar-toggler-popout:not(.b-bar-mobile-toggle){background:var(--b-bar-brand-light-background,#fff);color:var(--b-bar-light-color,rgba(0,0,0,.7))}.b-bar-vertical-inline.b-bar-light .b-bar-dropdown-menu,.b-bar-vertical-popout.b-bar-light .b-bar-dropdown-menu,.b-bar-vertical-small.b-bar-light .b-bar-dropdown-menu{background:var(--b-bar-dropdown-light-background,#f2f2f2)}.b-bar-vertical-inline.b-bar-light .b-bar-dropdown-menu .b-bar-dropdown-item.active,.b-bar-vertical-popout.b-bar-light .b-bar-dropdown-menu .b-bar-dropdown-item.active,.b-bar-vertical-small.b-bar-light .b-bar-dropdown-menu .b-bar-dropdown-item.active{color:var(--b-bar-item-light-active-color,#000);background:var(--b-bar-item-light-active-background,#0288d1)}.b-bar-vertical-inline.b-bar-light .b-bar-dropdown-menu .b-bar-dropdown-item:hover,.b-bar-vertical-popout.b-bar-light .b-bar-dropdown-menu .b-bar-dropdown-item:hover,.b-bar-vertical-small.b-bar-light .b-bar-dropdown-menu .b-bar-dropdown-item:hover{color:var(--b-bar-item-dark-hover-color,#000);background:var(--b-bar-item-dark-hover-background,rgba(0,0,0,.3))}.b-bar-vertical-inline.b-bar-light .b-bar-link,.b-bar-vertical-popout.b-bar-light .b-bar-link,.b-bar-vertical-small.b-bar-light .b-bar-link{color:inherit}.b-bar-vertical-inline.b-bar-light .b-bar-link.active,.b-bar-vertical-popout.b-bar-light .b-bar-link.active,.b-bar-vertical-small.b-bar-light .b-bar-link.active{color:var(--b-bar-item-light-active-color,#000);background:var(--b-bar-item-light-active-background,#0288d1)}.b-bar-vertical-inline.b-bar-light .b-bar-link:hover,.b-bar-vertical-popout.b-bar-light .b-bar-link:hover,.b-bar-vertical-small.b-bar-light .b-bar-link:hover{color:var(--b-bar-item-dark-hover-color,#000);background:var(--b-bar-item-dark-hover-background,rgba(0,0,0,.3))}.b-bar-vertical-small,.b-bar-vertical-inline[data-collapse=small],.b-bar-vertical-popout[data-collapse=small]{width:var(--b-vertical-bar-small-width,64px);min-width:var(--b-vertical-bar-small-width,64px);transition:width 200ms ease-in-out,min-width 200ms ease-in-out}.b-bar-vertical-small .b-bar-toggler-inline,.b-bar-vertical-inline[data-collapse=small] .b-bar-toggler-inline,.b-bar-vertical-popout[data-collapse=small] .b-bar-toggler-inline{position:relative;width:100%}.b-bar-vertical-small .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-inline[data-collapse=small] .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-popout[data-collapse=small] .b-bar-toggler-popout:not(.b-bar-mobile-toggle){left:var(--b-vertical-bar-small-width,64px)}.b-bar-vertical-small .b-bar-item>.b-bar-dropdown>.b-bar-dropdown-toggle:before,.b-bar-vertical-inline[data-collapse=small] .b-bar-item>.b-bar-dropdown>.b-bar-dropdown-toggle:before,.b-bar-vertical-popout[data-collapse=small] .b-bar-item>.b-bar-dropdown>.b-bar-dropdown-toggle:before{display:none}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container{z-index:100;max-height:50vh;position:absolute !important;margin:-42px 5px 0 5px;display:flex;width:var(--b-vertical-bar-popout-menu-width,180px);left:var(--b-vertical-bar-small-width,64px)}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container.b-bar-right,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container.b-bar-right,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container.b-bar-right{right:var(--b-vertical-bar-small-width,64px);left:unset}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu{box-shadow:0 3px 6px -4px rgba(0,0,0,.12),0 6px 16px 0 rgba(0,0,0,.08),0 9px 28px 8px rgba(0,0,0,.05);border-radius:3px;overflow-y:auto;overflow-x:hidden;flex:1 100%}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu .b-bar-dropdown-item,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu .b-bar-dropdown-item,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu .b-bar-dropdown-item{padding:.5rem .5rem .5rem 1.5rem}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu:before,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu:before,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu:before{position:absolute;top:0;left:-7px;right:0;bottom:0;width:100%;height:100%;opacity:.0001;content:' ';z-index:-1}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu.b-bar-right:before,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu.b-bar-right:before,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu.b-bar-right:before{left:unset;right:-7px}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-menu-container,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-menu-container,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-menu-container{left:var(--b-vertical-bar-popout-menu-width,180px)}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-menu-container.b-bar-right,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-menu-container.b-bar-right,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-menu-container.b-bar-right{right:var(--b-vertical-bar-popout-menu-width,180px)}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-toggle:before,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-toggle:before,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-toggle:before{content:" ";border:solid;border-width:0 2px 2px 0;display:inline-block;padding:2px;right:1rem;transition:transform 200ms ease-out;float:right;position:relative;-webkit-transform:rotate(315deg);transform:rotate(315deg)}.b-bar-vertical-small .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown:not([data-visible=true]) .b-bar-dropdown-toggle:before,.b-bar-vertical-inline[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown:not([data-visible=true]) .b-bar-dropdown-toggle:before,.b-bar-vertical-popout[data-collapse=small] .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown:not([data-visible=true]) .b-bar-dropdown-toggle:before{-webkit-transform:rotate(135deg);transform:rotate(135deg);right:.8rem}@keyframes b-bar-link-small{to{text-align:center;padding-left:0;padding-right:0}}.b-bar-vertical-small .b-bar-item>.b-bar-link,.b-bar-vertical-small .b-bar-item>.b-bar-dropdown>.b-bar-link,.b-bar-vertical-inline[data-collapse=small] .b-bar-item>.b-bar-link,.b-bar-vertical-inline[data-collapse=small] .b-bar-item>.b-bar-dropdown>.b-bar-link,.b-bar-vertical-popout[data-collapse=small] .b-bar-item>.b-bar-link,.b-bar-vertical-popout[data-collapse=small] .b-bar-item>.b-bar-dropdown>.b-bar-link{animation:b-bar-link-small forwards;animation-delay:170ms;font-size:0;transition:font-size 100ms ease-out}.b-bar-vertical-small .b-bar-item>.b-bar-link:after,.b-bar-vertical-small .b-bar-item>.b-bar-dropdown>.b-bar-link:after,.b-bar-vertical-inline[data-collapse=small] .b-bar-item>.b-bar-link:after,.b-bar-vertical-inline[data-collapse=small] .b-bar-item>.b-bar-dropdown>.b-bar-link:after,.b-bar-vertical-popout[data-collapse=small] .b-bar-item>.b-bar-link:after,.b-bar-vertical-popout[data-collapse=small] .b-bar-item>.b-bar-dropdown>.b-bar-link:after{display:none}.b-bar-vertical-small .b-bar-label,.b-bar-vertical-inline[data-collapse=small] .b-bar-label,.b-bar-vertical-popout[data-collapse=small] .b-bar-label{text-align:center}.b-bar-vertical-inline:not([data-collapse]){overflow-y:auto;overflow-x:hidden}.b-bar-vertical-inline:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container{position:relative}.b-bar-vertical-inline:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu{position:relative !important;border:none;border-radius:0;box-shadow:none}.b-bar-vertical-inline:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu .b-bar-dropdown-item{padding:.5rem .5rem .5rem 3rem}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-toggle:before{content:" ";border:solid;border-width:0 2px 2px 0;display:inline-block;padding:2px;right:1rem;transition:transform 200ms ease-out;float:right;position:relative;-webkit-transform:rotate(315deg);transform:rotate(315deg)}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown:not([data-visible=true]) .b-bar-dropdown-toggle:before{-webkit-transform:rotate(135deg);transform:rotate(135deg);right:.8rem}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container{z-index:100;max-height:50vh;position:absolute !important;margin:-42px 5px 0 5px;display:flex;width:var(--b-vertical-bar-popout-menu-width,180px);left:var(--b-vertical-bar-width,230px)}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container.b-bar-right{right:var(--b-vertical-bar-width,230px);left:unset}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu{box-shadow:0 3px 6px -4px rgba(0,0,0,.12),0 6px 16px 0 rgba(0,0,0,.08),0 9px 28px 8px rgba(0,0,0,.05);border-radius:3px;overflow-y:auto;overflow-x:hidden;flex:1 100%}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu .b-bar-dropdown-item{padding:.5rem .5rem .5rem 1.5rem}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu:before{position:absolute;top:0;left:-7px;right:0;bottom:0;width:100%;height:100%;opacity:.0001;content:' ';z-index:-1}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu.b-bar-right:before{left:unset;right:-7px}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-menu-container{left:var(--b-vertical-bar-popout-menu-width,180px)}.b-bar-vertical-popout:not([data-collapse]) .b-bar-dropdown .b-bar-dropdown-menu-container .b-bar-dropdown-menu>.b-bar-dropdown .b-bar-dropdown-menu-container.b-bar-right{right:var(--b-vertical-bar-popout-menu-width,180px)}.b-bar-vertical-inline[data-collapse=hide],.b-bar-vertical-popout[data-collapse=hide],.b-bar-vertical-small[data-collapse=hide]{width:0;min-width:0;transition:width 200ms ease-in-out,min-width 200ms ease-in-out,visibility 100ms;visibility:hidden}.b-bar-vertical-inline[data-collapse=hide] .b-bar-toggler-inline,.b-bar-vertical-popout[data-collapse=hide] .b-bar-toggler-inline,.b-bar-vertical-small[data-collapse=hide] .b-bar-toggler-inline{display:none}.b-bar-vertical-inline[data-collapse=hide] .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-popout[data-collapse=hide] .b-bar-toggler-popout:not(.b-bar-mobile-toggle),.b-bar-vertical-small[data-collapse=hide] .b-bar-toggler-popout:not(.b-bar-mobile-toggle){visibility:visible;left:0}@media only screen and (max-width:576px){.b-bar-vertical-inline:not([data-collapse]){min-width:100vw}.b-bar-vertical-inline:not([data-collapse]) .b-bar-toggler-inline:not(.b-bar-mobile-toggle){display:none}.b-bar-vertical-inline:not([data-collapse]) .b-bar-toggler-popout:not(.b-bar-mobile-toggle){left:100vw}.b-bar-vertical-inline:not([data-collapse]) .b-bar-mobile-toggle{display:flex}}.b-table.table{position:relative}.b-table.table .b-table-resizer{position:absolute;top:0;right:0;width:5px;cursor:col-resize;user-select:none;z-index:1}.b-table.table .b-table-resizer:hover,.b-table.table .b-table-resizing{cursor:col-resize !important;border-right:2px solid var(--b-theme-primary,#00f)}.b-table.table .b-table-resizing{cursor:col-resize !important}thead tr th{position:relative}.b-character-casing-lower{text-transform:lowercase}.b-character-casing-upper{text-transform:uppercase}.b-character-casing-title{text-transform:lowercase}.b-character-casing-title::first-letter {text-transform:uppercase}.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,.9);fill:rgba(0,0,0,.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,.9);fill:rgba(0,0,0,.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{left:0}.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{right:0}.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,.1)}.numInputWrapper span:active{background:rgba(0,0,0,.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,.5)}.numInputWrapper:hover{background:rgba(0,0,0,.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer+.dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.flatpickr-monthSelect-months{margin:10px 1px 3px 1px;flex-wrap:wrap}.flatpickr-monthSelect-month{background:none;border:0;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;display:inline-block;font-weight:400;margin:.5px;justify-content:center;padding:10px;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;text-align:center;width:33%}.flatpickr-monthSelect-month.disabled{color:#eee}.flatpickr-monthSelect-month.disabled:hover,.flatpickr-monthSelect-month.disabled:focus{cursor:not-allowed;background:none !important}.flatpickr-monthSelect-theme-dark{background:#3f4458}.flatpickr-monthSelect-theme-dark .flatpickr-current-month input.cur-year{color:#fff}.flatpickr-monthSelect-theme-dark .flatpickr-months .flatpickr-prev-month,.flatpickr-monthSelect-theme-dark .flatpickr-months .flatpickr-next-month{color:#fff;fill:#fff}.flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month{color:rgba(255,255,255,.95)}.flatpickr-monthSelect-month:hover,.flatpickr-monthSelect-month:focus{background:#e6e6e6;cursor:pointer;outline:0}.flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month:hover,.flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month:focus{background:#646c8c;border-color:#646c8c}.flatpickr-monthSelect-month.selected{background-color:#569ff7;color:#fff}.flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month.selected{background:#80cbc4;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#80cbc4}
@keyframes fadeIn{0%{opacity:0}100%{opacity:1}0%{opacity:0}}@keyframes slideIn{0%{transform:translateY(1rem);opacity:0}100%{transform:translateY(0);opacity:1}0%{transform:translateY(1rem);opacity:0}}.badge-close{cursor:pointer}.badge-close::before{height:2px;width:50%}.badge-close::after{height:50%;width:2px}.badge-close:hover,.badge-close:focus{background-color:rgba(10,10,10,.3)}.badge-close:active{background-color:rgba(10,10,10,.4)}.navbar-nav .nav-item:hover{cursor:pointer}.navbar-nav .nav-link:hover{cursor:pointer}.nav .nav-link:hover{cursor:pointer}.nav-item{position:relative}.btn-group>.b-tooltip:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.b-tooltip:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group.btn-group-toggle .btn.active.disabled{opacity:1}.btn-group-vertical>.b-tooltip:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.b-tooltip:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-xs,.btn-group-xs>.btn{padding:.15rem .5rem;font-size:.75rem;line-height:1.5;border-radius:.15rem}.btn-md,.btn-group-md>.btn{padding:.47rem 1rem;font-size:1.125rem;line-height:1.5;border-radius:.25rem}.btn-xl,.btn-group-xl>.btn{padding:.5rem 1rem;font-size:1.5rem;line-height:1.5;border-radius:.4rem}.dropdown-toggle.dropdown-toggle-hidden::after{content:none !important}.dropdown-toggle.dropdown-toggle-hidden::before{content:none !important}.dropdown-menu.show{animation-duration:.3s;animation-fill-mode:both;animation-name:fadeIn}.dropdown-menu a:not([href]).dropdown-item:not(.disabled){cursor:pointer}.b-is-autocomplete .dropdown-menu{width:100%;max-height:var(--autocomplete-menu-max-height,200px);overflow-y:scroll}.snackbar{z-index:1060 !important}.figure-is-16x16{height:16px;width:16px}.figure-is-24x24{height:24px;width:24px}.figure-is-32x32{height:32px;width:32px}.figure-is-48x48{height:48px;width:48px}.figure-is-64x64{height:64px;width:64px}.figure-is-96x96{height:96px;width:96px}.figure-is-128x128{height:128px;width:128px}.figure-is-256x256{height:256px;width:256px}.figure-is-512x512{height:512px;width:512px}.form-check>.form-check-input.form-check-input-pointer,.form-check>.form-check-label.form-check-label-pointer,.custom-checkbox>.custom-control-input.custom-control-input-pointer,.custom-checkbox>.custom-control-label.custom-control-label-pointer,.custom-switch>.custom-control-input.custom-control-input-pointer,.custom-switch>.custom-control-label.custom-control-label-pointer{cursor:pointer}.form-control-plaintext.form-control-xs,.form-control-plaintext.form-control-md,.form-control-plaintext.form-control-xl{padding-right:0;padding-left:0}.form-control-xs{height:calc(1.5em + .3rem + 2px);padding:.15rem .5rem;font-size:.75rem;line-height:1.5;border-radius:.15rem}.form-control-md{height:calc(1.5em + .94rem + 2px);padding:.47rem 1rem;font-size:1.125rem;line-height:1.5;border-radius:.25rem}.form-control-xl{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.5rem;line-height:1.5;border-radius:.4rem}.custom-select-xs{height:calc(1.5em + .3rem + 2px);padding-top:.15rem;padding-bottom:.15rem;padding-left:.5rem;font-size:.75rem}.custom-select-md{height:calc(1.5em + .94rem + 2px);padding-top:.47rem;padding-bottom:.47rem;padding-left:1rem;font-size:1.125rem}.custom-select-xl{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.5rem}.input-group>.b-numeric:not(:last-child)>input{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.b-numeric:not(:first-child)>input{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-xs>.form-control:not(textarea),.input-group-xs>.custom-select,.input-group-xs>.b-numeric>input{height:calc(1.5em + .3rem + 2px)}.input-group-xs>.form-control,.input-group-xs>.custom-select,.input-group-xs>.input-group-prepend>.input-group-text,.input-group-xs>.input-group-append>.input-group-text,.input-group-xs>.input-group-prepend>.btn,.input-group-xs>.input-group-append>.btn,.input-group-xs>.b-numeric>input{padding:.15rem .5rem;font-size:.75rem;line-height:1.5;border-radius:.15rem}.input-group-sm>.b-numeric>input{height:calc(1.5em + .5rem + 2px)}.input-group-sm>.b-numeric>input{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-md>.form-control:not(textarea),.input-group-md>.custom-select,.input-group-md>.b-numeric>input{height:calc(1.5em + .94rem + 2px)}.input-group-md>.form-control,.input-group-md>.custom-select,.input-group-md>.input-group-prepend>.input-group-text,.input-group-md>.input-group-append>.input-group-text,.input-group-md>.input-group-prepend>.btn,.input-group-md>.input-group-append>.btn,.input-group-md>.b-numeric>input{padding:.47rem 1rem;font-size:1.125rem;line-height:1.5;border-radius:.25rem}.input-group-lg>.b-numeric>input{height:calc(1.5em + 1rem + 2px)}.input-group-lg>.b-numeric>input{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-xl>.form-control:not(textarea),.input-group-xl>.custom-select,.input-group-xl>.b-numeric>input{height:calc(1.5em + 1rem + 2px)}.input-group-xl>.form-control,.input-group-xl>.custom-select,.input-group-xl>.input-group-prepend>.input-group-text,.input-group-xl>.input-group-append>.input-group-text,.input-group-xl>.input-group-prepend>.btn,.input-group-xl>.input-group-append>.btn,.input-group-xl>.b-numeric>input{padding:.5rem 1rem;font-size:1.5rem;line-height:1.5;border-radius:.4rem}.input-group-xs>.custom-select,.input-group-md>.custom-select,.input-group-xl>.custom-select{padding-right:1.75rem}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group>.input-group-prepend:first-child>.dropdown>.btn:not(:last-child).dropdown-toggle,.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-append:last-child>.dropdown>.btn:not(:last-child).dropdown-toggle,.input-group>.input-group-append:last-child>.dropdown>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-xs+.custom-control-label::before,.custom-control.custom-checkbox>.custom-control-input.custom-control-input-xs+.custom-control-label::after{width:.7rem;height:.7rem}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-xs+.custom-control-label{line-height:"normal";padding-left:0}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-sm+.custom-control-label::before,.custom-control.custom-checkbox>.custom-control-input.custom-control-input-sm+.custom-control-label::after{width:.8rem;height:.8rem}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-sm+.custom-control-label{line-height:"normal";padding-left:0}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-md+.custom-control-label::before,.custom-control.custom-checkbox>.custom-control-input.custom-control-input-md+.custom-control-label::after{width:1.25rem;height:1.25rem}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-md+.custom-control-label{line-height:1.7rem;padding-left:3px}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-lg+.custom-control-label::before,.custom-control.custom-checkbox>.custom-control-input.custom-control-input-lg+.custom-control-label::after{width:1.55rem;height:1.55rem}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-lg+.custom-control-label{line-height:2rem;padding-left:6px}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-xl+.custom-control-label::before,.custom-control.custom-checkbox>.custom-control-input.custom-control-input-xl+.custom-control-label::after{width:1.85rem;height:1.85rem}.custom-control.custom-checkbox>.custom-control-input.custom-control-input-xl+.custom-control-label{line-height:2.5rem;padding-left:10px}.custom-control.custom-radio>.custom-control-input.custom-control-input-xs+.custom-control-label::before,.custom-control.custom-radio>.custom-control-input.custom-control-input-xs+.custom-control-label::after{width:.7rem;height:.7rem}.custom-control.custom-radio>.custom-control-input.custom-control-input-xs+.custom-control-label{line-height:normal;padding-left:0}.custom-control.custom-radio>.custom-control-input.custom-control-input-sm+.custom-control-label::before,.custom-control.custom-radio>.custom-control-input.custom-control-input-sm+.custom-control-label::after{width:.8rem;height:.8rem}.custom-control.custom-radio>.custom-control-input.custom-control-input-sm+.custom-control-label{line-height:normal;padding-left:0}.custom-control.custom-radio>.custom-control-input.custom-control-input-md+.custom-control-label::before,.custom-control.custom-radio>.custom-control-input.custom-control-input-md+.custom-control-label::after{width:1.25rem;height:1.25rem}.custom-control.custom-radio>.custom-control-input.custom-control-input-md+.custom-control-label{line-height:1.7rem;padding-left:3px}.custom-control.custom-radio>.custom-control-input.custom-control-input-lg+.custom-control-label::before,.custom-control.custom-radio>.custom-control-input.custom-control-input-lg+.custom-control-label::after{width:1.55rem;height:1.55rem}.custom-control.custom-radio>.custom-control-input.custom-control-input-lg+.custom-control-label{line-height:2rem;padding-left:6px}.custom-control.custom-radio>.custom-control-input.custom-control-input-xl+.custom-control-label::before,.custom-control.custom-radio>.custom-control-input.custom-control-input-xl+.custom-control-label::after{width:1.85rem;height:1.85rem}.custom-control.custom-radio>.custom-control-input.custom-control-input-xl+.custom-control-label{line-height:2.5rem;padding-left:10px}select[readonly]{pointer-events:none}select[readonly] option,select[readonly] optgroup{display:none}.b-numeric{position:relative;width:100%}.b-numeric:hover>.b-numeric-handler-wrap{opacity:1}.b-numeric-handler-wrap{position:absolute;top:0;right:0;width:22px;height:100%;background:#fff;border:1px solid #d9d9d9;opacity:0}.input-group .b-numeric{-ms-flex:1 1 auto;flex:1 1 auto;width:1%}.b-numeric-handler-wrap .b-numeric-handler.b-numeric-handler-down{border-top:1px solid #d9d9d9}.b-numeric-handler{position:relative;display:flex;width:100%;height:50%;overflow:hidden;color:rgba(0,0,0,.45);font-weight:700;line-height:0;align-items:center;justify-content:center}.b-numeric-handler.btn{padding:0}.form-control+.b-numeric-handler-wrap{font-size:1rem;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.form-control-xs+.b-numeric-handler-wrap{font-size:.75rem;border-top-right-radius:.15rem;border-bottom-right-radius:.15rem}.form-control-xs+.b-numeric-handler-wrap>.b-numeric-handler.btn{font-size:.75rem}.form-control-sm+.b-numeric-handler-wrap{font-size:.875rem;border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.form-control-sm+.b-numeric-handler-wrap>.b-numeric-handler.btn{font-size:.875rem}.form-control-md+.b-numeric-handler-wrap{font-size:1.125rem;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.form-control-md+.b-numeric-handler-wrap>.b-numeric-handler.btn{font-size:1.125rem}.form-control-lg+.b-numeric-handler-wrap{font-size:1.25rem;border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.form-control-lg+.b-numeric-handler-wrap>.b-numeric-handler.btn{font-size:1.25rem}.form-control-xl+.b-numeric-handler-wrap{font-size:1.5rem;border-top-right-radius:.4rem;border-bottom-right-radius:.4rem}.form-control-xl+.b-numeric-handler-wrap>.b-numeric-handler.btn{font-size:1.5rem}.custom-file-label{overflow:hidden}input[readonly][type=range],input[readonly="readonly"][type=range]{pointer-events:none}input[readonly][type=range]::-webkit-slider-thumb,input[readonly="readonly"][type=range]::-webkit-slider-thumb{pointer-events:none}input[readonly][type=range]::-moz-range-thumb,input[readonly="readonly"][type=range]::-moz-range-thumb{pointer-events:none}input[readonly][type=range]::-ms-thumb,input[readonly="readonly"][type=range]::-ms-thumb{pointer-events:none}.jumbotron.jumbotron-primary{background-color:#007bff;color:#fff}.jumbotron.jumbotron-secondary{background-color:#6c757d;color:#fff}.jumbotron.jumbotron-success{background-color:#28a745;color:#fff}.jumbotron.jumbotron-info{background-color:#17a2b8;color:#fff}.jumbotron.jumbotron-warning{background-color:#ffc107;color:#212529}.jumbotron.jumbotron-danger{background-color:#dc3545;color:#fff}.jumbotron.jumbotron-light{background-color:#f8f9fa;color:#212529}.jumbotron.jumbotron-dark{background-color:#343a40;color:#fff}.jumbotron.jumbotron-link{background-color:#3273dc;color:#fff}.b-layout-header-fixed{z-index:1020}.b-layout-footer-fixed{z-index:1020}.b-layout-sider-content{z-index:1021}li.list-group-item-action{cursor:pointer}.modal.show{animation-duration:.25s;animation-fill-mode:both;animation-name:fadeIn}.page-item:not(.disabled) .page-link{cursor:pointer}.pagination-xs .page-link{padding:.125rem .25rem;font-size:.75rem;line-height:1.5}.pagination-xs .page-item:first-child .page-link{border-top-left-radius:.15rem;border-bottom-left-radius:.15rem}.pagination-xs .page-item:last-child .page-link{border-top-right-radius:.15rem;border-bottom-right-radius:.15rem}.pagination-md .page-link{padding:.625rem 1.25rem;font-size:1.125rem;line-height:1.5}.pagination-md .page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.pagination-md .page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-xl .page-link{padding:1rem 2rem;font-size:1.5rem;line-height:1.5}.pagination-xl .page-item:first-child .page-link{border-top-left-radius:.4rem;border-bottom-left-radius:.4rem}.pagination-xl .page-item:last-child .page-link{border-top-right-radius:.4rem;border-bottom-right-radius:.4rem}.b-page-progress .b-page-progress-indicator.b-page-progress-indicator-primary{background-color:#007bff}.b-page-progress .b-page-progress-indicator.b-page-progress-indicator-secondary{background-color:#6c757d}.b-page-progress .b-page-progress-indicator.b-page-progress-indicator-success{background-color:#28a745}.b-page-progress .b-page-progress-indicator.b-page-progress-indicator-info{background-color:#17a2b8}.b-page-progress .b-page-progress-indicator.b-page-progress-indicator-warning{background-color:#ffc107}.b-page-progress .b-page-progress-indicator.b-page-progress-indicator-danger{background-color:#dc3545}.b-page-progress .b-page-progress-indicator.b-page-progress-indicator-light{background-color:#f8f9fa}.b-page-progress .b-page-progress-indicator.b-page-progress-indicator-dark{background-color:#343a40}.b-page-progress .b-page-progress-indicator.b-page-progress-indicator-link{background-color:#3273dc}.rating:not(.rating-disabled):not(.rating-readonly):hover .rating-item{cursor:pointer}.rating.rating-disabled{opacity:.65}.rating .rating-item.rating-item-primary{color:#007bff}.rating .rating-item.rating-item-secondary{color:#6c757d}.rating .rating-item.rating-item-success{color:#28a745}.rating .rating-item.rating-item-info{color:#17a2b8}.rating .rating-item.rating-item-warning{color:#ffc107}.rating .rating-item.rating-item-danger{color:#dc3545}.rating .rating-item.rating-item-light{color:#f8f9fa}.rating .rating-item.rating-item-dark{color:#343a40}.rating .rating-item.rating-item-link{color:#3273dc}.rating .rating-item.rating-item-hover{opacity:.7}.steps{padding:0;margin:0;list-style:none;display:flex;overflow-x:auto}.steps .step:first-child{margin-left:auto}.steps .step:last-child{margin-right:auto}.step:first-of-type .step-circle::before{display:none}.step:last-of-type .step-container{padding-right:0}.step-container{box-sizing:content-box;display:flex;align-items:center;flex-direction:column;width:5rem;min-width:5rem;max-width:5rem;padding-top:.5rem;padding-right:1rem}.step-circle{position:relative;display:flex;justify-content:center;align-items:center;width:1.5rem;height:1.5rem;color:#adb5bd;border:2px solid #adb5bd;border-radius:100%;background-color:#fff}.step-circle::before{content:'';display:block;position:absolute;top:50%;left:-2px;width:calc(5rem + 1rem - 1.5rem);height:2px;transform:translate(-100%,-50%);color:#adb5bd;background-color:currentColor}.step-text{color:#adb5bd;word-break:break-all;margin-top:.25em}.step-completed .step-circle{color:#fff;background-color:#28a745;border-color:#28a745}.step-completed .step-circle::before{color:#28a745}.step-completed .step-text{color:#28a745}.step-active .step-circle{color:#fff;background-color:#007bff;border-color:#007bff}.step-active .step-circle::before{color:#007bff}.step-active .step-text{color:#007bff}.step-primary .step-circle{color:#007bff;border-color:#007bff}.step-primary.step-completed .step-circle{color:#fff;background-color:#007bff;border-color:#007bff}.step-primary.step-completed .step-circle::before{color:#007bff}.step-primary.step-completed .step-text{color:#007bff}.step-primary.step-active .step-circle{color:#fff;background-color:#007bff;border-color:#007bff}.step-primary.step-active::before{color:#007bff}.step-primary.step-active .step-text{color:#007bff}.step-secondary .step-circle{color:#6c757d;border-color:#6c757d}.step-secondary.step-completed .step-circle{color:#fff;background-color:#6c757d;border-color:#6c757d}.step-secondary.step-completed .step-circle::before{color:#6c757d}.step-secondary.step-completed .step-text{color:#6c757d}.step-secondary.step-active .step-circle{color:#fff;background-color:#007bff;border-color:#007bff}.step-secondary.step-active::before{color:#007bff}.step-secondary.step-active .step-text{color:#007bff}.step-success .step-circle{color:#28a745;border-color:#28a745}.step-success.step-completed .step-circle{color:#fff;background-color:#28a745;border-color:#28a745}.step-success.step-completed .step-circle::before{color:#28a745}.step-success.step-completed .step-text{color:#28a745}.step-success.step-active .step-circle{color:#fff;background-color:#007bff;border-color:#007bff}.step-success.step-active::before{color:#007bff}.step-success.step-active .step-text{color:#007bff}.step-info .step-circle{color:#17a2b8;border-color:#17a2b8}.step-info.step-completed .step-circle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.step-info.step-completed .step-circle::before{color:#17a2b8}.step-info.step-completed .step-text{color:#17a2b8}.step-info.step-active .step-circle{color:#fff;background-color:#007bff;border-color:#007bff}.step-info.step-active::before{color:#007bff}.step-info.step-active .step-text{color:#007bff}.step-warning .step-circle{color:#ffc107;border-color:#ffc107}.step-warning.step-completed .step-circle{color:#fff;background-color:#ffc107;border-color:#ffc107}.step-warning.step-completed .step-circle::before{color:#ffc107}.step-warning.step-completed .step-text{color:#ffc107}.step-warning.step-active .step-circle{color:#fff;background-color:#007bff;border-color:#007bff}.step-warning.step-active::before{color:#007bff}.step-warning.step-active .step-text{color:#007bff}.step-danger .step-circle{color:#dc3545;border-color:#dc3545}.step-danger.step-completed .step-circle{color:#fff;background-color:#dc3545;border-color:#dc3545}.step-danger.step-completed .step-circle::before{color:#dc3545}.step-danger.step-completed .step-text{color:#dc3545}.step-danger.step-active .step-circle{color:#fff;background-color:#007bff;border-color:#007bff}.step-danger.step-active::before{color:#007bff}.step-danger.step-active .step-text{color:#007bff}.step-light .step-circle{color:#f8f9fa;border-color:#f8f9fa}.step-light.step-completed .step-circle{color:#fff;background-color:#f8f9fa;border-color:#f8f9fa}.step-light.step-completed .step-circle::before{color:#f8f9fa}.step-light.step-completed .step-text{color:#f8f9fa}.step-light.step-active .step-circle{color:#fff;background-color:#007bff;border-color:#007bff}.step-light.step-active::before{color:#007bff}.step-light.step-active .step-text{color:#007bff}.step-dark .step-circle{color:#343a40;border-color:#343a40}.step-dark.step-completed .step-circle{color:#fff;background-color:#343a40;border-color:#343a40}.step-dark.step-completed .step-circle::before{color:#343a40}.step-dark.step-completed .step-text{color:#343a40}.step-dark.step-active .step-circle{color:#fff;background-color:#007bff;border-color:#007bff}.step-dark.step-active::before{color:#007bff}.step-dark.step-active .step-text{color:#007bff}.step-link .step-circle{color:#3273dc;border-color:#3273dc}.step-link.step-completed .step-circle{color:#fff;background-color:#3273dc;border-color:#3273dc}.step-link.step-completed .step-circle::before{color:#3273dc}.step-link.step-completed .step-text{color:#3273dc}.step-link.step-active .step-circle{color:#fff;background-color:#007bff;border-color:#007bff}.step-link.step-active::before{color:#007bff}.step-link.step-active .step-text{color:#007bff}.steps-content{margin:1rem 0}.steps-content>.step-panel{display:none}.steps-content>.active{display:block}.custom-switch .custom-control-input.custom-control-input-primary:checked~.custom-control-label::before{background-color:#007bff;border-color:#007bff}.custom-switch .custom-control-input.custom-control-input-primary:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25);border-color:#007bff}.custom-switch .custom-control-input:disabled.custom-control-input-primary:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch .custom-control-input.custom-control-input-secondary:checked~.custom-control-label::before{background-color:#6c757d;border-color:#6c757d}.custom-switch .custom-control-input.custom-control-input-secondary:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(108,117,125,.25);border-color:#6c757d}.custom-switch .custom-control-input:disabled.custom-control-input-secondary:checked~.custom-control-label::before{background-color:rgba(108,117,125,.5)}.custom-switch .custom-control-input.custom-control-input-success:checked~.custom-control-label::before{background-color:#28a745;border-color:#28a745}.custom-switch .custom-control-input.custom-control-input-success:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25);border-color:#28a745}.custom-switch .custom-control-input:disabled.custom-control-input-success:checked~.custom-control-label::before{background-color:rgba(40,167,69,.5)}.custom-switch .custom-control-input.custom-control-input-info:checked~.custom-control-label::before{background-color:#17a2b8;border-color:#17a2b8}.custom-switch .custom-control-input.custom-control-input-info:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(23,162,184,.25);border-color:#17a2b8}.custom-switch .custom-control-input:disabled.custom-control-input-info:checked~.custom-control-label::before{background-color:rgba(23,162,184,.5)}.custom-switch .custom-control-input.custom-control-input-warning:checked~.custom-control-label::before{background-color:#ffc107;border-color:#ffc107}.custom-switch .custom-control-input.custom-control-input-warning:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(255,193,7,.25);border-color:#ffc107}.custom-switch .custom-control-input:disabled.custom-control-input-warning:checked~.custom-control-label::before{background-color:rgba(255,193,7,.5)}.custom-switch .custom-control-input.custom-control-input-danger:checked~.custom-control-label::before{background-color:#dc3545;border-color:#dc3545}.custom-switch .custom-control-input.custom-control-input-danger:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25);border-color:#dc3545}.custom-switch .custom-control-input:disabled.custom-control-input-danger:checked~.custom-control-label::before{background-color:rgba(220,53,69,.5)}.custom-switch .custom-control-input.custom-control-input-light:checked~.custom-control-label::before{background-color:#f8f9fa;border-color:#f8f9fa}.custom-switch .custom-control-input.custom-control-input-light:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(248,249,250,.25);border-color:#f8f9fa}.custom-switch .custom-control-input:disabled.custom-control-input-light:checked~.custom-control-label::before{background-color:rgba(248,249,250,.5)}.custom-switch .custom-control-input.custom-control-input-dark:checked~.custom-control-label::before{background-color:#343a40;border-color:#343a40}.custom-switch .custom-control-input.custom-control-input-dark:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(52,58,64,.25);border-color:#343a40}.custom-switch .custom-control-input:disabled.custom-control-input-dark:checked~.custom-control-label::before{background-color:rgba(52,58,64,.5)}.custom-switch .custom-control-input.custom-control-input-link:checked~.custom-control-label::before{background-color:#3273dc;border-color:#3273dc}.custom-switch .custom-control-input.custom-control-input-link:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(50,115,220,.25);border-color:#3273dc}.custom-switch .custom-control-input:disabled.custom-control-input-link:checked~.custom-control-label::before{background-color:rgba(50,115,220,.5)}.custom-switch .custom-control-input.custom-control-input-xs+.custom-control-label{line-height:1rem;vertical-align:middle;padding-left:0}.custom-switch .custom-control-input.custom-control-input-xs+.custom-control-label::before{height:.5rem;width:calc(.75rem + (.5rem/2));border-radius:1rem}.custom-switch .custom-control-input.custom-control-input-xs+.custom-control-label::after{height:calc(.5rem - 4px);width:calc(.5rem - 4px);border-radius:calc(.75rem - (.5rem/2))}.custom-switch .custom-control-input.custom-control-input-xs:checked~.custom-control-label::after{transform:translateX(calc(.75rem - (.5rem/2)))}.custom-switch .custom-control-input.custom-control-input-sm+.custom-control-label{line-height:1.25rem;vertical-align:middle;padding-left:0}.custom-switch .custom-control-input.custom-control-input-sm+.custom-control-label::before{height:.75rem;width:calc(1rem + (.75rem/2));border-radius:1.5rem}.custom-switch .custom-control-input.custom-control-input-sm+.custom-control-label::after{height:calc(.75rem - 4px);width:calc(.75rem - 4px);border-radius:calc(1rem - (.75rem/2))}.custom-switch .custom-control-input.custom-control-input-sm:checked~.custom-control-label::after{transform:translateX(calc(1rem - (.75rem/2)))}.custom-switch .custom-control-input.custom-control-input-md+.custom-control-label{line-height:2rem;vertical-align:middle;padding-left:2rem}.custom-switch .custom-control-input.custom-control-input-md+.custom-control-label::before{height:1.5rem;width:calc(2rem + (1.5rem/2));border-radius:3rem}.custom-switch .custom-control-input.custom-control-input-md+.custom-control-label::after{height:calc(1.5rem - 4px);width:calc(1.5rem - 4px);border-radius:calc(2rem - (1.5rem/2))}.custom-switch .custom-control-input.custom-control-input-md:checked~.custom-control-label::after{transform:translateX(calc(2rem - (1.5rem/2)))}.custom-switch .custom-control-input.custom-control-input-lg+.custom-control-label{line-height:2.5rem;vertical-align:middle;padding-left:3rem}.custom-switch .custom-control-input.custom-control-input-lg+.custom-control-label::before{height:2rem;width:calc(3rem + (2rem/2));border-radius:4rem}.custom-switch .custom-control-input.custom-control-input-lg+.custom-control-label::after{height:calc(2rem - 4px);width:calc(2rem - 4px);border-radius:calc(3rem - (2rem/2))}.custom-switch .custom-control-input.custom-control-input-lg:checked~.custom-control-label::after{transform:translateX(calc(3rem - (2rem/2)))}.custom-switch .custom-control-input.custom-control-input-xl+.custom-control-label{line-height:3rem;vertical-align:middle;padding-left:4rem}.custom-switch .custom-control-input.custom-control-input-xl+.custom-control-label::before{height:2.5rem;width:calc(4rem + (2.5rem/2));border-radius:5rem}.custom-switch .custom-control-input.custom-control-input-xl+.custom-control-label::after{height:calc(2.5rem - 4px);width:calc(2.5rem - 4px);border-radius:calc(4rem - (2.5rem/2))}.custom-switch .custom-control-input.custom-control-input-xl:checked~.custom-control-label::after{transform:translateX(calc(4rem - (2.5rem/2)))}table.table tbody tr.selected{background-color:var(--primary)}tr.table-row-selectable:hover{cursor:pointer}.table-fixed-header{overflow-y:auto}.table-fixed-header .table{border-collapse:separate;border-spacing:0}.table-fixed-header .table thead tr th{border-top:none;position:sticky;background:#fff;z-index:10}.table-fixed-header .table thead tr:nth-child(1) th{top:0}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.flatpickr-months{margin:.5rem 0}.flatpickr-months .flatpickr-month,.flatpickr-months .flatpickr-next-month,.flatpickr-months .flatpickr-prev-month{height:auto;position:relative}.flatpickr-months .flatpickr-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg,.flatpickr-months .flatpickr-prev-month:hover svg{fill:#007bff}.flatpickr-months .flatpickr-month{color:#212529}.flatpickr-current-month{padding:13px 0 0 0;font-size:115%}.flatpickr-current-month span.cur-month{font-weight:700}.flatpickr-current-month span.cur-month:hover{background:rgba(0,123,255,.15)}.numInputWrapper:hover{background:rgba(0,123,255,.15)}.flatpickr-day{border-radius:.25rem;font-weight:500;color:#212529}.flatpickr-day.today{border-color:#007bff}.flatpickr-day.today:hover{background:#007bff;border-color:#007bff}.flatpickr-day:hover{background:rgba(0,123,255,.1);border-color:transparent}span.flatpickr-weekday{color:#212529}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#007bff;border-color:#007bff}.flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n+1)){box-shadow:-10px 0 0 #007bff}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:.25rem 0 0 .25rem}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 .25rem .25rem 0}.flatpickr-monthSelect-month:hover,.flatpickr-monthSelect-month:focus{background:rgba(0,123,255,.1)}.flatpickr-monthSelect-month.selected{background-color:#007bff}
.snackbar{align-items:center;background-color:var(--b-snackbar-background,#323232);color:var(--b-snackbar-text-color,#fff);font-size:.875rem;line-height:1.42857;opacity:0;padding:.875rem 1.5rem;position:fixed;bottom:0;left:0;transform:translateY(100%);transition:opacity 0s .195s,transform .195s cubic-bezier(.4,0,1,1);width:100%;z-index:60}@media(min-width:768px){.snackbar{border-radius:2px;max-width:35.5rem;min-width:18rem;left:50%;transform:translate(-50%,100%);width:auto}}@media(min-width:768px){.snackbar{transition:opacity 0s .2535s,transform .2535s cubic-bezier(.4,0,1,1)}}@media(min-width:1200px){.snackbar{transition:opacity 0s .13s,transform .13s cubic-bezier(.4,0,1,1)}}@media screen and (prefers-reduced-motion:reduce){.snackbar{transition:none}}.snackbar.snackbar-show{transition-duration:.225s;transition-property:transform;transition-timing-function:cubic-bezier(0,0,.2,1);opacity:1;transform:translateY(0)}@media(min-width:768px){.snackbar.snackbar-show{transition-duration:.2925s}}@media(min-width:1200px){.snackbar.snackbar-show{transition-duration:.15s}}@media screen and (prefers-reduced-motion:reduce){.snackbar.snackbar-show{transition:none}}@media(min-width:768px){.snackbar.snackbar-show{transform:translate(-50%,-1.5rem)}}.snackbar-header{display:flex;-ms-flex-pack:justify;justify-content:space-between;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:DARKEN(var(--b-snackbar-background,#323232),30%);margin-right:auto;min-width:0;font-weight:bold;padding-bottom:.875rem}.snackbar-footer{display:flex;-ms-flex-pack:justify;justify-content:space-between;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:DARKEN(var(--b-snackbar-background,#323232),30%);margin-right:auto;min-width:0;padding-top:.875rem}.snackbar-body{display:flex;-ms-flex-pack:justify;justify-content:space-between;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:auto;max-height:100%;min-width:0}.snackbar-action-button{transition-duration:.3s;transition-property:background-color,background-image;transition-timing-function:cubic-bezier(.4,0,.2,1);background-color:transparent;background-image:none;border:0;color:var(--b-snackbar-button-color,var(--b-snackbar-button-color,#ff4081));cursor:pointer;display:block;flex-shrink:0;font-size:inherit;font-weight:500;line-height:inherit;padding:0;text-transform:uppercase;white-space:nowrap}@media(min-width:768px){.snackbar-action-button{transition-duration:.39s}}@media(min-width:1200px){.snackbar-action-button{transition-duration:.2s}}@media screen and (prefers-reduced-motion:reduce){.snackbar-action-button{transition:none}}.snackbar-action-button:focus,.snackbar-action-button:hover{color:var(--b-snackbar-button-hover-color,var(--b-snackbar-button-hover-color,#ff80ab));text-decoration:none}@media(min-width:768px){.snackbar-action-button{margin-left:3rem}}.snackbar-action-button:focus{outline:0}@media(min-width:768px){.snackbar-left,.snackbar-right{transform:translateY(100%)}.snackbar-left.snackbar-show,.snackbar-right.snackbar-show{transform:translateY(-1.5rem)}}@media(min-width:768px){.snackbar-left{left:1.5rem}}@media(min-width:768px){.snackbar-right{right:1.5rem;left:auto}}.snackbar-multi-line{padding-top:1.25rem;padding-bottom:1.25rem}.snackbar-multi-line .snackbar-body{white-space:normal}.snackbar-primary{background-color:var(--b-snackbar-background-primary,#cce5ff);color:var(--b-snackbar-text-primary,#004085)}.snackbar-action-button-primary{color:var(--b-snackbar-button-primary,#ff4081)}.snackbar-action-button-primary:focus,.snackbar-action-button-primary:hover{color:var(--b-snackbar-button-hover-primary,#ff80ab)}.snackbar-secondary{background-color:var(--b-snackbar-background-secondary,#e2e3e5);color:var(--b-snackbar-text-secondary,#383d41)}.snackbar-action-button-secondary{color:var(--b-snackbar-button-secondary,#ff4081)}.snackbar-action-button-secondary:focus,.snackbar-action-button-secondary:hover{color:var(--b-snackbar-button-hover-secondary,#ff80ab)}.snackbar-success{background-color:var(--b-snackbar-background-success,#d4edda);color:var(--b-snackbar-text-success,#155724)}.snackbar-action-button-success{color:var(--b-snackbar-button-success,#ff4081)}.snackbar-action-button-success:focus,.snackbar-action-button-success:hover{color:var(--b-snackbar-button-hover-success,#ff80ab)}.snackbar-danger{background-color:var(--b-snackbar-background-danger,#f8d7da);color:var(--b-snackbar-text-danger,#721c24)}.snackbar-action-button-danger{color:var(--b-snackbar-button-danger,#ff4081)}.snackbar-action-button-danger:focus,.snackbar-action-button-danger:hover{color:var(--b-snackbar-button-hover-danger,#ff80ab)}.snackbar-warning{background-color:var(--b-snackbar-background-warning,#fff3cd);color:var(--b-snackbar-text-warning,#856404)}.snackbar-action-button-warning{color:var(--b-snackbar-button-warning,#ff4081)}.snackbar-action-button-warning:focus,.snackbar-action-button-warning:hover{color:var(--b-snackbar-button-hover-warning,#ff80ab)}.snackbar-info{background-color:var(--b-snackbar-background-info,#d1ecf1);color:var(--b-snackbar-text-info,#0c5460)}.snackbar-action-button-info{color:var(--b-snackbar-button-info,#ff4081)}.snackbar-action-button-info:focus,.snackbar-action-button-info:hover{color:var(--b-snackbar-button-hover-info,#ff80ab)}.snackbar-light{background-color:var(--b-snackbar-background-light,#fefefe);color:var(--b-snackbar-text-light,#818182)}.snackbar-action-button-light{color:var(--b-snackbar-button-light,#ff4081)}.snackbar-action-button-light:focus,.snackbar-action-button-light:hover{color:var(--b-snackbar-button-hover-light,#ff80ab)}.snackbar-dark{background-color:var(--b-snackbar-background-dark,#d6d8d9);color:var(--b-snackbar-text-dark,#1b1e21)}.snackbar-action-button-dark{color:var(--b-snackbar-button-dark,#ff4081)}.snackbar-action-button-dark:focus,.snackbar-action-button-dark:hover{color:var(--b-snackbar-button-hover-dark,#ff80ab)}.snackbar-stack{display:flex;flex-direction:column;position:fixed;z-index:60;bottom:0}.snackbar-stack .snackbar{position:relative;flex-direction:row;margin-bottom:0}.snackbar-stack .snackbar:not(:last-child){margin-bottom:1.5rem}@media(min-width:576px){.snackbar-stack-center{left:50%;transform:translate(-50%,0%)}.snackbar-stack-left{left:1.5rem}.snackbar-stack-right{right:1.5rem}}
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html
index a5648a93de..014daf8486 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/wwwroot/index.html
@@ -8,7 +8,7 @@
-
+
@@ -23,7 +23,7 @@
-
+