diff --git a/DataModels/AppDb.cs b/Backend/Database/Database.cs
similarity index 91%
rename from DataModels/AppDb.cs
rename to Backend/Database/Database.cs
index 80845ce..3025d24 100644
--- a/DataModels/AppDb.cs
+++ b/Backend/Database/Database.cs
@@ -3,11 +3,11 @@ using System.Linq;
using LinqToDB;
using LinqToDB.Configuration;
using LinqToDB.Data;
-using RTMPDash.DataModels.Tables;
+using RTMPDash.Backend.Database.Tables;
-namespace RTMPDash.DataModels;
+namespace RTMPDash.Backend.Database;
-public class AppDb {
+public class Database {
public class ConnectionStringSettings : IConnectionStringSettings {
public string ConnectionString { get; set; }
public string Name { get; set; }
diff --git a/DataModels/Tables/DbInfo.cs b/Backend/Database/Tables/DbInfo.cs
similarity index 84%
rename from DataModels/Tables/DbInfo.cs
rename to Backend/Database/Tables/DbInfo.cs
index 084cb57..43f74e7 100644
--- a/DataModels/Tables/DbInfo.cs
+++ b/Backend/Database/Tables/DbInfo.cs
@@ -1,6 +1,6 @@
using LinqToDB.Mapping;
-namespace RTMPDash.DataModels.Tables;
+namespace RTMPDash.Backend.Database.Tables;
[Table(Name = "DbInfo")]
public class DbInfo {
diff --git a/DataModels/Tables/Invite.cs b/Backend/Database/Tables/Invite.cs
similarity index 76%
rename from DataModels/Tables/Invite.cs
rename to Backend/Database/Tables/Invite.cs
index 125b264..62b9bc2 100644
--- a/DataModels/Tables/Invite.cs
+++ b/Backend/Database/Tables/Invite.cs
@@ -1,8 +1,8 @@
using LinqToDB.Mapping;
-namespace RTMPDash.DataModels.Tables;
+namespace RTMPDash.Backend.Database.Tables;
[Table(Name = "Invites")]
public class Invite {
[Column(Name = "Code"), PrimaryKey, NotNull] public string Code { get; set; }
-}
\ No newline at end of file
+}
diff --git a/DataModels/Tables/User.cs b/Backend/Database/Tables/User.cs
similarity index 96%
rename from DataModels/Tables/User.cs
rename to Backend/Database/Tables/User.cs
index f910c03..8825fbc 100644
--- a/DataModels/Tables/User.cs
+++ b/Backend/Database/Tables/User.cs
@@ -1,6 +1,6 @@
using LinqToDB.Mapping;
-namespace RTMPDash.DataModels.Tables;
+namespace RTMPDash.Backend.Database.Tables;
[Table(Name = "Users")]
public class User {
diff --git a/Migrations.cs b/Backend/Migrations.cs
similarity index 95%
rename from Migrations.cs
rename to Backend/Migrations.cs
index 529d9b4..e2974f6 100644
--- a/Migrations.cs
+++ b/Backend/Migrations.cs
@@ -3,11 +3,10 @@ using System.Collections.Generic;
using System.Linq;
using LinqToDB;
using LinqToDB.Data;
-using RTMPDash.DataModels;
-using RTMPDash.DataModels.Tables;
+using RTMPDash.Backend.Database.Tables;
using RTMPDash.Pages;
-namespace RTMPDash;
+namespace RTMPDash.Backend;
public static class Migrations {
private const int DbVer = 2;
@@ -20,7 +19,7 @@ public static class Migrations {
};
public static void RunMigrations() {
- using var db = new AppDb.DbConn();
+ using var db = new Database.Database.DbConn();
var ccolor = Console.ForegroundColor;
if (!db.DataProvider.GetSchemaProvider().GetSchema(db).Tables.Any()) {
@@ -82,7 +81,7 @@ public static class Migrations {
new Migration(0, "COMMIT TRANSACTION").Run(db);
- var newdb = new AppDb.DbConn();
+ var newdb = new Database.Database.DbConn();
var dbinfo = newdb.DbInfo.First();
dbinfo.DbVer = DbVer;
newdb.Update(dbinfo);
diff --git a/Program.cs b/Backend/Program.cs
similarity index 94%
rename from Program.cs
rename to Backend/Program.cs
index 1807eb6..47bb16f 100644
--- a/Program.cs
+++ b/Backend/Program.cs
@@ -3,9 +3,8 @@ using System.Threading;
using LinqToDB.Data;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
-using RTMPDash.DataModels;
-namespace RTMPDash;
+namespace RTMPDash.Backend;
public class Program {
public const string SiteName = "chaos.stream";
@@ -25,7 +24,7 @@ public class Program {
"Telegram, Threema, or via email.";
public static void Main(string[] args) {
- DataConnection.DefaultSettings = new AppDb.Settings();
+ DataConnection.DefaultSettings = new Database.Database.Settings();
ThreadPool.SetMinThreads(100, 100);
Migrations.RunMigrations();
CreateHostBuilder(args).Build().Run();
diff --git a/Startup.cs b/Backend/Startup.cs
similarity index 98%
rename from Startup.cs
rename to Backend/Startup.cs
index 25222d4..4a6bec4 100644
--- a/Startup.cs
+++ b/Backend/Startup.cs
@@ -5,7 +5,7 @@ using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
-namespace RTMPDash;
+namespace RTMPDash.Backend;
public class Startup {
public Startup(IConfiguration configuration) => Configuration = configuration;
@@ -62,4 +62,4 @@ public class Startup {
endpoints.MapControllers();
});
}
-}
\ No newline at end of file
+}
diff --git a/StreamUtils.cs b/Backend/StreamUtils.cs
similarity index 98%
rename from StreamUtils.cs
rename to Backend/StreamUtils.cs
index 3f8ea02..7299543 100644
--- a/StreamUtils.cs
+++ b/Backend/StreamUtils.cs
@@ -2,9 +2,8 @@ using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Xml.Serialization;
-using RTMPDash.DataModels;
-namespace RTMPDash;
+namespace RTMPDash.Backend;
public static class StreamUtils {
private static readonly XmlSerializer Serializer = new(typeof(StatsObject));
@@ -19,7 +18,7 @@ public static class StreamUtils {
long.Parse(stats.Server.Applications.First(p => p.Name == "ingress").MethodLive.Streams.First(p => p.Name == user).Time);
public static int CountLiveRestreams(string user, StatsObject stats) {
- var db = new AppDb.DbConn();
+ var db = new Database.Database.DbConn();
var dbUser = db.Users.First(p => p.Username == user);
return dbUser.RestreamTargets.Split(",")
.Count(target => stats.Server.Applications.First(p => p.Name == "ingress")
@@ -27,7 +26,7 @@ public static class StreamUtils {
}
public static int CountLiveRestreams(string user, string privateAccesskey, StatsObject stats) {
- var db = new AppDb.DbConn();
+ var db = new Database.Database.DbConn();
var dbUser = db.Users.First(p => p.Username == user);
return dbUser.RestreamTargets.Split(",")
.Count(target => stats.Server.Applications.First(p => p.Name == "ingress")
diff --git a/Controllers/RtmpAuthController.cs b/Controllers/RtmpAuthController.cs
index 9f57d12..38e2d6b 100644
--- a/Controllers/RtmpAuthController.cs
+++ b/Controllers/RtmpAuthController.cs
@@ -1,6 +1,6 @@
using System.Linq;
using Microsoft.AspNetCore.Mvc;
-using RTMPDash.DataModels;
+using RTMPDash.Backend.Database;
namespace RTMPDash.Controllers;
@@ -8,7 +8,7 @@ namespace RTMPDash.Controllers;
public class RtmpAuthController : ControllerBase {
[HttpGet]
public string Get() {
- var db = new AppDb.DbConn();
+ var db = new Database.DbConn();
if (!db.Users.Any(p => p.StreamKey == Request.Query["name"])) {
Response.StatusCode = 403;
return "unauthorized";
diff --git a/Pages/Admin.cshtml b/Pages/Admin.cshtml
index 5d30412..bfd9f96 100644
--- a/Pages/Admin.cshtml
+++ b/Pages/Admin.cshtml
@@ -2,14 +2,15 @@
@inject IAntiforgery Antiforgery
@using Microsoft.AspNetCore.Antiforgery
@using Microsoft.AspNetCore.Http
-@using RTMPDash.DataModels
+@using RTMPDash.Backend
+@using RTMPDash.Backend.Database
@model AdminModel
@{
ViewData["Title"] = "Admin";
- var db = new AppDb.DbConn();
+ var db = new Database.DbConn();
var tokenSet = Antiforgery.GetAndStoreTokens(HttpContext);
- if (string.IsNullOrEmpty(HttpContext.Session.GetString("authenticatedUser")) || !new AppDb.DbConn().Users.First(p => p.Username == HttpContext.Session.GetString("authenticatedUser")).IsAdmin) {
+ if (string.IsNullOrEmpty(HttpContext.Session.GetString("authenticatedUser")) || !new Database.DbConn().Users.First(p => p.Username == HttpContext.Session.GetString("authenticatedUser")).IsAdmin) {
Response.Redirect("/");
return;
}
diff --git a/Pages/Admin.cshtml.cs b/Pages/Admin.cshtml.cs
index f834694..6f1a6e5 100644
--- a/Pages/Admin.cshtml.cs
+++ b/Pages/Admin.cshtml.cs
@@ -3,8 +3,8 @@ using System.Linq;
using LinqToDB;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc.RazorPages;
-using RTMPDash.DataModels;
-using RTMPDash.DataModels.Tables;
+using RTMPDash.Backend.Database;
+using RTMPDash.Backend.Database.Tables;
namespace RTMPDash.Pages;
@@ -13,13 +13,13 @@ public class AdminModel : PageModel {
public void OnPost() {
if (string.IsNullOrEmpty(HttpContext.Session.GetString("authenticatedUser"))
- || !new AppDb.DbConn().Users.First(p => p.Username == HttpContext.Session.GetString("authenticatedUser")).IsAdmin)
+ || !new Database.DbConn().Users.First(p => p.Username == HttpContext.Session.GetString("authenticatedUser")).IsAdmin)
return;
if (!Request.HasFormContentType || string.IsNullOrWhiteSpace(Request.Form["action"]))
return;
- var db = new AppDb.DbConn();
+ var db = new Database.DbConn();
if (Request.Form["action"] == "invite_generate")
db.Insert(new Invite { Code = Guid.NewGuid().ToString() });
diff --git a/Pages/Content.cshtml b/Pages/Content.cshtml
index df5b2ab..9677574 100644
--- a/Pages/Content.cshtml
+++ b/Pages/Content.cshtml
@@ -1,4 +1,5 @@
@page
+@using RTMPDash.Backend
@model ContentModel
@{
ViewData["Title"] = "Content Policy";
diff --git a/Pages/Credits.cshtml b/Pages/Credits.cshtml
index 6cf8e57..ed6cf52 100644
--- a/Pages/Credits.cshtml
+++ b/Pages/Credits.cshtml
@@ -1,4 +1,5 @@
@page
+@using RTMPDash.Backend
@model CreditsModel
@{
ViewData["Title"] = "Credits";
diff --git a/Pages/Dashboard.cshtml b/Pages/Dashboard.cshtml
index efb9cbb..e60ab58 100644
--- a/Pages/Dashboard.cshtml
+++ b/Pages/Dashboard.cshtml
@@ -2,7 +2,8 @@
@inject IAntiforgery _antiforgery
@using Microsoft.AspNetCore.Antiforgery
@using Microsoft.AspNetCore.Http
-@using RTMPDash.DataModels
+@using RTMPDash.Backend
+@using RTMPDash.Backend.Database
@model DashboardModel
@{
ViewData["Title"] = "Dashboard";
@@ -16,7 +17,7 @@
}
else {
- var db = new AppDb.DbConn();
+ var db = new Database.DbConn();
var user = db.Users.First(p => p.Username == HttpContext.Session.GetString("authenticatedUser"));
var stats = StreamUtils.GetStatsObject();
diff --git a/Pages/Dashboard.cshtml.cs b/Pages/Dashboard.cshtml.cs
index 043b669..abca07f 100644
--- a/Pages/Dashboard.cshtml.cs
+++ b/Pages/Dashboard.cshtml.cs
@@ -3,7 +3,7 @@ using System.Linq;
using LinqToDB;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc.RazorPages;
-using RTMPDash.DataModels;
+using RTMPDash.Backend.Database;
namespace RTMPDash.Pages;
@@ -14,7 +14,7 @@ public class DashboardModel : PageModel {
if (!Request.HasFormContentType || string.IsNullOrWhiteSpace(Request.Form["action"]) || string.IsNullOrWhiteSpace(HttpContext.Session.GetString("authenticatedUser")))
return;
- using var db = new AppDb.DbConn();
+ using var db = new Database.DbConn();
var user = db.Users.FirstOrDefault(p => p.Username == HttpContext.Session.GetString("authenticatedUser"));
if (Request.Form["action"] == "password_change") {
@@ -69,14 +69,12 @@ public class DashboardModel : PageModel {
}
if (Request.Form["action"] == "pronoun_plural") {
- var target = string.IsNullOrWhiteSpace(Request.Form["value"]) ? "their" : Request.Form["value"].ToString();
user!.PronounPlural = true;
db.Update(user);
Response.Redirect("/Dashboard");
}
if (Request.Form["action"] == "pronoun_singular") {
- var target = string.IsNullOrWhiteSpace(Request.Form["value"]) ? "their" : Request.Form["value"].ToString();
user!.PronounPlural = false;
db.Update(user);
Response.Redirect("/Dashboard");
diff --git a/Pages/Index.cshtml b/Pages/Index.cshtml
index f091798..4b88686 100644
--- a/Pages/Index.cshtml
+++ b/Pages/Index.cshtml
@@ -1,9 +1,10 @@
@page
-@using RTMPDash.DataModels
+@using RTMPDash.Backend.Database
+@using RTMPDash.Backend
@model IndexModel
@{
ViewData["Title"] = "Home";
- var db = new AppDb.DbConn();
+ var db = new Database.DbConn();
var allStreams = StreamUtils.ListLiveUsers();
var allUsers = db.Users.Where(p => !p.IsPrivate).Select(p => p.Username);
var liveUsers = allStreams.Intersect(allUsers);
diff --git a/Pages/Login.cshtml.cs b/Pages/Login.cshtml.cs
index 722f26a..0d58a4c 100644
--- a/Pages/Login.cshtml.cs
+++ b/Pages/Login.cshtml.cs
@@ -6,7 +6,7 @@ using System.Text;
using System.Web;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc.RazorPages;
-using RTMPDash.DataModels;
+using RTMPDash.Backend.Database;
namespace RTMPDash.Pages;
@@ -15,7 +15,7 @@ public class LoginModel : PageModel {
if (!Request.HasFormContentType || string.IsNullOrWhiteSpace(Request.Form["user"]) || string.IsNullOrWhiteSpace(Request.Form["pass"]))
return;
- using var db = new AppDb.DbConn();
+ using var db = new Database.DbConn();
var user = db.Users.FirstOrDefault(p => p.Username == Request.Form["user"].ToString());
if (user == null)
diff --git a/Pages/Privacy.cshtml b/Pages/Privacy.cshtml
index c6564f4..21d33e9 100644
--- a/Pages/Privacy.cshtml
+++ b/Pages/Privacy.cshtml
@@ -1,4 +1,5 @@
@page
+@using RTMPDash.Backend
@model PrivacyModel
@{
ViewData["Title"] = "Privacy Policy";
diff --git a/Pages/Profile.cshtml b/Pages/Profile.cshtml
index 21fade3..bdecaeb 100644
--- a/Pages/Profile.cshtml
+++ b/Pages/Profile.cshtml
@@ -1,9 +1,10 @@
@page "/{user}"
-@using RTMPDash.DataModels
+@using RTMPDash.Backend.Database
+@using RTMPDash.Backend
@model ProfileModel
@{
ViewData["Title"] = Model.User;
- var db = new AppDb.DbConn();
+ var db = new Database.DbConn();
if (!db.Users.Any(p => p.Username == Model.User)) {
Response.Redirect("/");
return;
diff --git a/Pages/Register.cshtml.cs b/Pages/Register.cshtml.cs
index 58a52ec..f16f89c 100644
--- a/Pages/Register.cshtml.cs
+++ b/Pages/Register.cshtml.cs
@@ -3,8 +3,8 @@ using System.Linq;
using LinqToDB;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc.RazorPages;
-using RTMPDash.DataModels;
-using RTMPDash.DataModels.Tables;
+using RTMPDash.Backend.Database;
+using RTMPDash.Backend.Database.Tables;
namespace RTMPDash.Pages;
@@ -16,7 +16,7 @@ public class RegisterModel : PageModel {
|| string.IsNullOrWhiteSpace(Request.Form["code"]))
return;
- using var db = new AppDb.DbConn();
+ using var db = new Database.DbConn();
if (!db.Invites.Any(p => p.Code == Request.Form["code"]))
return;
diff --git a/Pages/Shared/_Layout.cshtml b/Pages/Shared/_Layout.cshtml
index e4f95b9..c4712a6 100644
--- a/Pages/Shared/_Layout.cshtml
+++ b/Pages/Shared/_Layout.cshtml
@@ -1,5 +1,6 @@
@using Microsoft.AspNetCore.Http
-@using RTMPDash.DataModels
+@using RTMPDash.Backend
+@using RTMPDash.Backend.Database
@@ -33,7 +34,7 @@
Stats
- @if (!string.IsNullOrEmpty(Context.Session.GetString("authenticatedUser")) && new AppDb.DbConn().Users.First(p => p.Username == Context.Session.GetString("authenticatedUser")).IsAdmin) {
+ @if (!string.IsNullOrEmpty(Context.Session.GetString("authenticatedUser")) && new Database.DbConn().Users.First(p => p.Username == Context.Session.GetString("authenticatedUser")).IsAdmin) {
Admin
diff --git a/Pages/Stats.cshtml b/Pages/Stats.cshtml
index a1027a4..ddadf4d 100644
--- a/Pages/Stats.cshtml
+++ b/Pages/Stats.cshtml
@@ -1,4 +1,5 @@
@page
+@using RTMPDash.Backend
@model StatsModel
@{
ViewData["Title"] = "Stats";
diff --git a/Pages/_ViewImports.cshtml b/Pages/_ViewImports.cshtml
index 22d6dc2..0764f37 100644
--- a/Pages/_ViewImports.cshtml
+++ b/Pages/_ViewImports.cshtml
@@ -1,4 +1,2 @@
-@using Microsoft.AspNetCore.Identity
-@using RTMPDash
@namespace RTMPDash.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
\ No newline at end of file
diff --git a/RTMPDash.csproj b/RTMPDash.csproj
index cdc9aea..d1cc489 100644
--- a/RTMPDash.csproj
+++ b/RTMPDash.csproj
@@ -6,68 +6,72 @@
-
-
-
-
+
+
+
+
- <_ContentIncludedByDefault Remove="Areas\Identity\Pages\_ViewStart.cshtml"/>
- <_ContentIncludedByDefault Remove="wwwroot\css\dark-mode.css"/>
- <_ContentIncludedByDefault Remove="wwwroot\css\site.css"/>
- <_ContentIncludedByDefault Remove="wwwroot\favicon.ico"/>
- <_ContentIncludedByDefault Remove="wwwroot\js\dark-mode-switch.js"/>
- <_ContentIncludedByDefault Remove="wwwroot\js\site.js"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.css"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.css.map"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.min.css"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.min.css.map"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.css"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.css.map"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.min.css"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.min.css.map"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.css"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.css.map"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.min.css"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.min.css.map"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.bundle.js"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.bundle.js.map"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.bundle.min.js"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.bundle.min.js.map"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.js"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.js.map"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.min.js"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.min.js.map"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\LICENSE"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\jquery-validation-unobtrusive\jquery.validate.unobtrusive.js"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\jquery-validation-unobtrusive\jquery.validate.unobtrusive.min.js"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\jquery-validation-unobtrusive\LICENSE.txt"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\jquery-validation\dist\additional-methods.js"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\jquery-validation\dist\additional-methods.min.js"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\jquery-validation\dist\jquery.validate.js"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\jquery-validation\dist\jquery.validate.min.js"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\jquery-validation\LICENSE.md"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\jquery\dist\jquery.js"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\jquery\dist\jquery.min.js"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\jquery\dist\jquery.min.map"/>
- <_ContentIncludedByDefault Remove="wwwroot\lib\jquery\LICENSE.txt"/>
+ <_ContentIncludedByDefault Remove="Areas\Identity\Pages\_ViewStart.cshtml" />
+ <_ContentIncludedByDefault Remove="wwwroot\css\dark-mode.css" />
+ <_ContentIncludedByDefault Remove="wwwroot\css\site.css" />
+ <_ContentIncludedByDefault Remove="wwwroot\favicon.ico" />
+ <_ContentIncludedByDefault Remove="wwwroot\js\dark-mode-switch.js" />
+ <_ContentIncludedByDefault Remove="wwwroot\js\site.js" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.css" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.css.map" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.min.css" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-grid.min.css.map" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.css" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.css.map" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.min.css" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap-reboot.min.css.map" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.css" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.css.map" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.min.css" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\css\bootstrap.min.css.map" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.bundle.js" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.bundle.js.map" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.bundle.min.js" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.bundle.min.js.map" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.js" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.js.map" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.min.js" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\dist\js\bootstrap.min.js.map" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\bootstrap\LICENSE" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\jquery-validation-unobtrusive\jquery.validate.unobtrusive.js" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\jquery-validation-unobtrusive\jquery.validate.unobtrusive.min.js" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\jquery-validation-unobtrusive\LICENSE.txt" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\jquery-validation\dist\additional-methods.js" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\jquery-validation\dist\additional-methods.min.js" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\jquery-validation\dist\jquery.validate.js" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\jquery-validation\dist\jquery.validate.min.js" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\jquery-validation\LICENSE.md" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\jquery\dist\jquery.js" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\jquery\dist\jquery.min.js" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\jquery\dist\jquery.min.map" />
+ <_ContentIncludedByDefault Remove="wwwroot\lib\jquery\LICENSE.txt" />
-
+
-
+
-
+
+
+
+
+
-
+