StarSim

StarSim.git
git clone git://git.lenczewski.org/StarSim.git
Log | Files | Refs | README | LICENSE

commit b2661f44895a3d01826d5ce2cb226639ae8bad47
parent 875267054d541b70b8c5d3ba1e95266fc4ea763c
Author: Mikolaj Lenczewski <33129490+EnderRifter@users.noreply.github.com>
Date:   Thu,  1 Aug 2019 16:18:50 +0200

Login system works, as does primitive main menu

Diffstat:
MStarSim/StarSim/Program.cs | 40++++++++++++++--------------------------
AStarSim/StarSimGui/Contexts/SimulatorContextFactory.cs | 36++++++++++++++++++++++++++++++++++++
AStarSim/StarSimGui/Migrations/20190801135345_InitialCreate.Designer.cs | 233+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
AStarSim/StarSimGui/Migrations/20190801135345_InitialCreate.cs | 196+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
AStarSim/StarSimGui/Migrations/SimulatorContextModelSnapshot.cs | 231+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MStarSim/StarSimGui/Program.cs | 45+++++++++++++++++++++++++++++++++++++++------
AStarSim/StarSimGui/Simulator.db | 0
AStarSim/StarSimGui/Source/LoginAttemptResult.cs | 75+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MStarSim/StarSimGui/StarSimGui.csproj | 46++++++++++++++++++++++++++++++++++++++++++++++
AStarSim/StarSimGui/ViewModels/DatabaseViewModel.cs | 10++++++++++
MStarSim/StarSimGui/ViewModels/MainWindowViewModel.cs | 23+++++++++++++++++++++--
AStarSim/StarSimGui/ViewModels/OverviewViewModel.cs | 10++++++++++
AStarSim/StarSimGui/ViewModels/SimulationViewModel.cs | 10++++++++++
AStarSim/StarSimGui/ViewModels/UserLoginViewModel.cs | 196+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MStarSim/StarSimGui/ViewModels/ViewModelBase.cs | 9++++-----
AStarSim/StarSimGui/Views/Database.xaml | 17+++++++++++++++++
AStarSim/StarSimGui/Views/Database.xaml.cs | 19+++++++++++++++++++
MStarSim/StarSimGui/Views/MainWindow.xaml | 29++++++++++++++++++++++-------
AStarSim/StarSimGui/Views/Overview.xaml | 17+++++++++++++++++
AStarSim/StarSimGui/Views/Overview.xaml.cs | 19+++++++++++++++++++
AStarSim/StarSimGui/Views/Simulation.xaml | 17+++++++++++++++++
AStarSim/StarSimGui/Views/Simulation.xaml.cs | 19+++++++++++++++++++
AStarSim/StarSimGui/Views/UserLogin.xaml | 39+++++++++++++++++++++++++++++++++++++++
AStarSim/StarSimGui/Views/UserLogin.xaml.cs | 19+++++++++++++++++++
MStarSim/StarSimLib/Constants.cs | 2+-
MStarSim/StarSimLib/Contexts/SimulatorContext.cs | 17+++++++++++++----
MStarSim/StarSimLib/Models/Body.cs | 2+-
MStarSim/StarSimLib/Models/BodyToSystemJoin.cs | 2+-
MStarSim/StarSimLib/Models/System.cs | 6++++--
MStarSim/StarSimLib/Models/User.cs | 92++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
MStarSim/StarSimLib/StarSimLib.xml | 88++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
31 files changed, 1499 insertions(+), 65 deletions(-)

diff --git a/StarSim/StarSim/Program.cs b/StarSim/StarSim/Program.cs @@ -5,7 +5,6 @@ using SFML.Graphics; using SFML.Window; using StarSimLib; using StarSimLib.Contexts; -using StarSimLib.Cryptography; using StarSimLib.Data_Structures; using StarSimLib.Physics; using StarSimLib.UI; @@ -55,7 +54,13 @@ namespace StarSim UpdateDelegate bodyPositionUpdater = BodyUpdater.UpdateBodiesBarnesHut; #endif - RenderWindow simulationWindow = new RenderWindow(VideoMode.DesktopMode, "N-Body Simulation: FPS "); + ContextSettings customContextSettings = new ContextSettings { AntialiasingLevel = 8, DepthBits = 24, StencilBits = 8 }; + + RenderWindow simulationWindow = + new RenderWindow(VideoMode.DesktopMode, "N-Body Simulation: FPS ", Styles.Default, customContextSettings); + + PrintContextSettings(customContextSettings); + IInputHandler simulationInputHandler = new SimulationInputHandler(ref bodies); simulationScreen = new SimulationScreen(simulationWindow, simulationInputHandler, ref bodies, ref bodyShapeMap, bodyPositionUpdater); @@ -105,31 +110,14 @@ namespace StarSim Console.ReadLine(); } - private static void TestHashing(string password) + private static void PrintContextSettings(ContextSettings settings) { - // set a shorthand for nicety reasons - string BytesToString(byte[] contents) => CryptographyHelper.BytesToString(contents); - - Console.WriteLine($"Password to hash: {password}"); - - byte[] passwordBytes = CryptographyHelper.StringToBytes(password); - Console.WriteLine($"Password bytes:\n{BytesToString(passwordBytes)}"); - - // generates a salt of the default length - byte[] saltBytes = CryptographyHelper.GenerateSalt(); - Console.WriteLine($"Generated salt:\n{BytesToString(saltBytes)}"); - - // generates a hash of the default length - byte[] passwordHash = CryptographyHelper.GenerateHash(passwordBytes, saltBytes); - Console.WriteLine($"Generated valid hash:\n{BytesToString(passwordHash)}"); - - byte[] invalidPasswordBytes = CryptographyHelper.StringToBytes("password "); - Console.WriteLine($"Invalid password bytes:\n{BytesToString(invalidPasswordBytes)}"); - - byte[] invalidPasswordHash = CryptographyHelper.GenerateHash(invalidPasswordBytes, saltBytes); - Console.WriteLine($"Generated invalid hash:\n{BytesToString(invalidPasswordHash)}"); - - Console.WriteLine($"Valid hash == invalid hash: {CryptographyHelper.HashesEqual(passwordHash, invalidPasswordHash)}"); + Console.WriteLine($"AA Level: {settings.AntialiasingLevel}, " + + $"Depth Bits: {settings.DepthBits}, " + + $"Stencil Bits: {settings.StencilBits}, " + + $"SRGB Capable: {settings.SRgbCapable}, " + + $"Attributes: {settings.AttributeFlags}, " + + $"Version: {settings.MajorVersion}.{settings.MinorVersion}"); } } } \ No newline at end of file diff --git a/StarSim/StarSimGui/Contexts/SimulatorContextFactory.cs b/StarSim/StarSimGui/Contexts/SimulatorContextFactory.cs @@ -0,0 +1,35 @@ +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Design; +using StarSimLib.Contexts; + +namespace StarSimGui.Contexts +{ + /// <summary> + /// Factory class for creating <see cref="SimulatorContext"/> instances. + /// </summary> + /// <remarks> + /// This solves the problem of having the database context class in a common library, and trying to push migrations + /// to a specific user of the library. + /// SO question: https://stackoverflow.com/questions/46394494/ef-core-dbcontext-in-net-standard-2-0-library + /// Solution 1 : https://docs.microsoft.com/en-gb/ef/core/miscellaneous/cli/dbcontext-creation + /// Solution 2 : https://codingblast.com/entityframework-core-idesigntimedbcontextfactory/ + /// </remarks> + public class SimulatorContextFactory : IDesignTimeDbContextFactory<SimulatorContext> + { + #region Implementation of IDesignTimeDbContextFactory<out TaxiContext> + + /// <inheritdoc /> + public SimulatorContext CreateDbContext(string[] args) + { + DbContextOptionsBuilder<SimulatorContext> optionsBuilder = new DbContextOptionsBuilder<SimulatorContext>(); + + // we use SQLite due to the low overhead, ease of use, and great tooling (e.g. DB Browser for SQLite). + optionsBuilder.UseSqlite(SimulatorContext.ConnectionString, + builder => builder.MigrationsAssembly(nameof(StarSimGui))); + + return new SimulatorContext(optionsBuilder.Options); + } + + #endregion Implementation of IDesignTimeDbContextFactory<out TaxiContext> + } +} +\ No newline at end of file diff --git a/StarSim/StarSimGui/Migrations/20190801135345_InitialCreate.Designer.cs b/StarSim/StarSimGui/Migrations/20190801135345_InitialCreate.Designer.cs @@ -0,0 +1,233 @@ +// <auto-generated /> +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using StarSimLib.Contexts; + +namespace StarSimGui.Migrations +{ + [DbContext(typeof(SimulatorContext))] + [Migration("20190801135345_InitialCreate")] + partial class InitialCreate + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "2.2.4-servicing-10062"); + + modelBuilder.Entity("StarSimLib.Models.Body", b => + { + b.Property<ulong>("Id") + .ValueGeneratedOnAdd(); + + b.Property<double>("Mass"); + + b.Property<string>("Name") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(100) + .HasDefaultValue("UNNAMED"); + + b.Property<byte[]>("Timestamp") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate(); + + b.HasKey("Id"); + + b.HasIndex("Id") + .IsUnique(); + + b.ToTable("Bodies"); + + b.HasData( + new + { + Id = 1ul, + Mass = 1.9889200738424369E+36, + Name = "Sagittarius A*" + }, + new + { + Id = 2ul, + Mass = 1.9889200738424369E+30, + Name = "Sol" + }, + new + { + Id = 3ul, + Mass = 1.9889200738424369E+30, + Name = "Earth" + }); + }); + + modelBuilder.Entity("StarSimLib.Models.BodyToSystemJoin", b => + { + b.Property<ulong>("Id") + .ValueGeneratedOnAdd(); + + b.Property<ulong>("BodyId"); + + b.Property<ulong>("SystemId"); + + b.Property<byte[]>("Timestamp") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate(); + + b.HasKey("Id"); + + b.HasIndex("SystemId"); + + b.HasIndex("BodyId", "SystemId") + .IsUnique(); + + b.ToTable("BodyToSystemJoins"); + + b.HasData( + new + { + Id = 1ul, + BodyId = 1ul, + SystemId = 1ul + }, + new + { + Id = 2ul, + BodyId = 2ul, + SystemId = 1ul + }, + new + { + Id = 3ul, + BodyId = 3ul, + SystemId = 1ul + }); + }); + + modelBuilder.Entity("StarSimLib.Models.System", b => + { + b.Property<ulong>("Id") + .ValueGeneratedOnAdd(); + + b.Property<ulong>("CreatorId"); + + b.Property<string>("Name") + .IsRequired() + .HasMaxLength(100); + + b.Property<byte[]>("Timestamp") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate(); + + b.HasKey("Id"); + + b.HasIndex("CreatorId"); + + b.HasIndex("Id") + .IsUnique(); + + b.ToTable("Systems"); + + b.HasData( + new + { + Id = 1ul, + CreatorId = 1ul, + Name = "Test" + }); + }); + + modelBuilder.Entity("StarSimLib.Models.User", b => + { + b.Property<ulong>("Id") + .ValueGeneratedOnAdd(); + + b.Property<string>("Email") + .ValueGeneratedOnAdd() + .HasMaxLength(100) + .HasDefaultValue("john.doe@gmail.com"); + + b.Property<byte[]>("PasswordHash") + .IsRequired(); + + b.Property<byte[]>("PasswordSalt") + .IsRequired(); + + b.Property<int>("Privileges"); + + b.Property<byte[]>("Timestamp") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate(); + + b.Property<string>("Username") + .IsRequired() + .HasMaxLength(100); + + b.HasKey("Id"); + + b.HasIndex("Id") + .IsUnique(); + + b.ToTable("Users"); + + b.HasData( + new + { + Id = 1ul, + PasswordHash = new byte[] { 109, 130, 25, 214, 39, 53, 131, 81, 48, 220, 120, 195, 63, 217, 205, 210, 13, 222, 80, 79, 152, 102, 78, 59, 249, 128, 195, 65, 122, 251, 241, 113, 174, 57, 222, 102, 66, 115, 206, 180, 211, 111, 49, 158, 94, 56, 8, 191, 15, 121, 249, 65, 244, 145, 72, 45, 255, 22, 110, 35, 105, 127, 73, 55, 23, 41, 249, 210, 171, 83, 253, 122, 230, 122, 189, 50, 28, 148, 171, 236, 169, 150, 63, 252, 22, 154, 150, 64, 54, 152, 169, 151, 36, 36, 63, 207, 96, 1, 4, 6, 249, 204, 17, 129, 224, 169, 140, 24, 162, 96, 120, 221, 48, 198, 59, 125, 234, 17, 12, 39, 242, 220, 57, 4, 96, 218, 139, 37, 81, 121, 239, 7, 55, 99, 32, 241, 216, 130, 57, 44, 64, 175, 107, 214, 131, 41, 140, 204, 51, 20, 136, 150, 136, 232, 127, 17, 223, 103, 122, 84, 160, 224, 170, 185, 148, 107, 5, 61, 247, 153, 166, 46, 249, 232, 32, 246, 136, 41, 19, 205, 62, 215, 132, 251, 60, 208, 199, 201, 187, 125, 129, 60, 195, 243, 101, 95, 236, 102, 93, 71, 29, 95, 68, 6, 28, 95, 53, 153, 232, 97, 72, 96, 16, 83, 51, 169, 110, 99, 105, 211, 23, 232, 217, 130, 121, 39, 208, 40, 162, 46, 117, 232, 234, 231, 70, 59, 106, 151, 183, 245, 236, 124, 91, 203, 245, 83, 178, 165, 222, 27, 221, 65, 109, 97, 163, 10, 203, 202, 28, 89, 97, 122, 163, 94, 167, 47, 26, 112, 218, 151, 41, 183, 66, 80, 7, 43, 211, 130, 37, 72, 140, 29, 20, 92, 89, 208, 97, 232, 150, 89, 202, 44, 222, 252, 135, 136, 140, 178, 182, 139, 174, 123, 103, 56, 86, 119, 253, 150, 168, 200, 107, 24, 223, 61, 52, 75, 161, 18, 66, 162, 156, 68, 201, 11, 137, 36, 247, 223, 116, 147, 34, 129, 127, 249, 229, 7, 178, 49, 86, 46, 57, 32, 154, 78, 160, 195, 84, 116, 45, 209, 162, 207, 148, 212, 43, 193, 164, 248, 36, 9, 234, 226, 76, 223, 146, 249, 42, 137, 15, 15, 207, 40, 87, 20, 74, 170, 237, 212, 86, 19, 187, 207, 84, 52, 126, 10, 35, 151, 207, 14, 39, 134, 236, 239, 248, 54, 15, 238, 120, 21, 55, 83, 136, 199, 202, 184, 18, 231, 11, 30, 208, 133, 206, 116, 195, 189, 91, 239, 46, 145, 216, 192, 70, 40, 158, 69, 144, 183, 188, 51, 212, 215, 123, 79, 33, 110, 128, 62, 104, 222, 52, 239, 14, 54, 224, 83, 79, 49, 105, 194, 170, 219, 7, 20, 130, 37, 165, 220, 239, 203, 100, 166, 116, 80, 27, 103, 39, 7, 74, 40, 150, 107, 130, 145, 42, 206, 36, 244, 169, 180, 98, 70, 136, 198, 113, 58, 81, 125, 61, 38, 2, 161, 31, 240, 110, 141, 206, 240, 211, 95, 92, 94, 130, 59, 51, 243, 86, 207, 72, 188, 29, 129, 145, 202, 44, 78, 92, 27, 144, 41, 250, 181, 143, 167, 193, 207, 206, 72, 54, 200, 28, 180, 176, 251, 48, 204, 193, 238, 10, 224, 25, 103, 190, 11, 74, 61, 12, 242, 227, 29, 29, 224, 97, 1, 44, 31, 54, 239, 70, 195, 197, 172, 107, 78, 205, 104, 220, 56, 163, 198, 129, 121, 230, 151, 243, 131, 134, 15, 131, 105, 163, 91, 222, 230, 161, 78, 106, 163, 84, 11, 95, 105, 83, 28, 245, 59, 29, 213, 72, 221, 60, 140, 38, 11, 145, 31, 241, 57, 70, 41, 172, 53, 167, 77, 10, 16, 193, 120, 58, 171, 39, 169, 39, 154, 53, 174, 169, 228, 228, 228, 26, 194, 143, 105, 126, 127, 105, 140, 58, 99, 98, 40, 136, 231, 66, 53, 54, 212, 17, 113, 103, 196, 60, 38, 173, 49, 18, 240, 50, 21, 255, 158, 55, 120, 186, 63, 52, 102, 115, 246, 21, 5, 182, 42, 101, 122, 60, 231, 184, 124, 178, 77, 76, 180, 195, 139, 234, 96, 255, 204, 92, 215, 247, 121, 11, 141, 72, 230, 46, 51, 162, 1, 235, 182, 197, 172, 103, 209, 216, 158, 12, 40, 94, 38, 32, 25, 134, 154, 96, 141, 173, 81, 82, 242, 118, 121, 53, 115, 101, 121, 184, 243, 12, 6, 159, 186, 211, 207, 2, 70, 18, 226, 26, 196, 15, 37, 15, 83, 216, 226, 166, 115, 221, 69, 229, 124, 162, 42, 52, 31, 108, 123, 109, 29, 68, 32, 242, 109, 6, 224, 240, 133, 8, 59, 182, 189, 158, 139, 110, 115, 36, 37, 197, 252, 145, 187, 150, 46, 5, 27, 110, 59, 231, 223, 107, 100, 215, 42, 5, 43, 26, 221, 205, 35, 190, 125, 60, 197, 213, 211, 76, 72, 123, 43, 99, 231, 119, 100, 67, 101, 33, 217, 138, 170, 199, 198, 116, 196, 236, 153, 140, 88, 13, 191, 12, 54, 38, 0, 10, 202, 63, 2, 37, 214, 113, 87, 216, 80, 121, 239, 199, 50, 97, 235, 25, 152, 242, 105, 150, 154, 80, 37, 191, 155, 5, 120, 123, 109, 127, 145, 131, 11, 29, 231, 225, 117, 190, 228, 147, 170, 177, 110, 108, 212, 192, 201, 248, 154, 237, 109, 91, 69, 170, 239, 135, 217, 23, 208, 47, 106, 109, 154, 63, 80, 85, 151, 78, 89, 115, 220, 21, 6, 178, 32, 95, 180, 4, 187, 101, 199, 16, 120, 121, 82, 147, 168, 83, 197, 155, 207, 95, 14, 230, 79, 119, 244, 137, 69, 218, 189, 39, 181, 40, 202, 135, 163, 210, 236, 19, 60, 215, 159, 249, 59, 79, 85, 101, 229, 26, 180, 63, 48, 11, 95, 8, 121, 207, 64, 254, 150, 73, 220, 89, 149, 107, 126, 245, 167, 240, 83, 124, 19, 154, 72, 251, 252, 165, 33, 255, 8, 50, 200, 220, 231, 194, 116, 111, 201, 244, 129, 129, 127, 44, 62, 101, 3, 201, 114, 185, 170, 59, 126, 138, 208, 145, 79, 44, 45, 18, 28, 198, 196, 78, 42, 183, 211, 200, 146, 211, 114, 142, 55, 115, 154, 127, 33, 115, 90, 97, 185, 55, 69, 0, 162, 62, 138, 194, 106, 95, 14, 85, 215, 127, 132, 116, 250, 215, 160, 240, 202, 148, 89, 176, 225, 18, 170, 110, 234, 192, 80, 111, 122, 221, 94, 248, 180, 40, 251, 75, 162, 171, 179, 73, 8, 7, 210, 167, 81, 91, 211, 126, 175, 34, 184, 164, 174, 199, 149, 109, 244, 185, 185, 6, 191, 103, 90, 84, 31, 242, 255, 127, 72, 232, 203, 249, 57, 160, 141, 5, 52, 142, 22, 209, 87, 21, 139, 148, 103, 175, 80, 104, 71, 51, 55, 100, 227, 35, 153, 191, 220, 10, 224, 60, 57, 202, 119, 110, 96, 202, 126, 62, 40, 41, 27, 196, 121, 1, 185, 230, 223, 114, 179, 214, 179, 65, 98, 179, 175, 88, 227, 231, 187, 179, 139, 243, 154, 204, 20, 201, 146, 89, 228, 89, 167, 117, 137, 62, 58, 253, 190, 65, 215, 0, 230, 36, 68, 50, 106, 46, 117, 35, 29, 12, 233, 198, 179, 6, 2, 237, 109, 216, 149, 166, 107, 123, 250, 115, 216, 233, 78, 13, 241, 109, 96, 31, 67, 128, 33, 114, 149, 229, 31, 155, 168, 94, 74, 26, 2, 223, 11, 153, 113, 130, 241, 105, 245, 154, 69, 55, 0, 1, 159, 235, 147, 165, 42, 167, 129, 61, 145, 162, 216, 106, 186, 247, 20, 132, 184, 66, 92, 14, 35, 82, 152, 223, 231, 230, 112, 138, 182, 231, 82, 59, 250, 158, 15, 55, 186, 52, 241, 99, 210, 93, 88, 244, 219, 64, 138, 171, 236, 69, 252, 184, 186, 163, 169, 191, 168, 182, 104, 117, 63, 68, 60, 174, 210, 255, 134, 202, 17, 19, 72, 219, 19, 227, 120, 218, 122, 148, 152, 60, 238, 189, 88, 182, 197, 102, 102, 253, 210, 174, 160, 100, 168, 230, 167, 95, 113, 249, 246, 159, 197, 229, 253, 164, 193, 226, 57, 23, 253, 63, 193, 225, 237, 124, 115, 126, 58, 30, 86, 72, 151, 97, 164, 108, 243, 152, 227, 158, 244, 120, 191, 137, 1, 56, 249, 212, 228, 13, 5, 227, 154, 124, 78, 65, 28, 155, 14, 250, 101, 82, 247, 147, 236, 200, 103, 233, 221, 0, 81, 232, 207, 72, 112, 57, 117, 7, 41, 47, 109, 192, 154, 32, 155, 122, 171, 37, 255, 109, 8, 218, 205, 210, 154, 123, 115, 240, 129, 144, 46, 158, 248, 168, 250, 111, 90, 41, 223, 201, 32, 36, 15, 237, 162, 10, 222, 156, 52, 55, 184, 142, 15, 161, 83, 194, 85, 1, 248, 228, 210, 111, 237, 167, 71, 115, 155, 175, 250, 182, 18, 56, 49, 226, 174, 162, 156, 15, 162, 21, 93, 89, 44, 147, 224, 135, 18, 215, 85, 215, 19, 92, 203, 142, 8, 7, 119, 183, 99, 17, 226, 234, 56, 102, 53, 69, 201, 24, 160, 148, 180, 12, 157, 142, 202, 67, 186, 165, 146, 188, 172, 117, 152, 123, 1, 175, 29, 99, 254, 233, 23, 72, 237, 74, 177, 99, 103, 93, 118, 232, 76, 237, 25, 44, 84, 16, 52, 102, 17, 113, 88, 112, 189, 13, 83, 152, 145, 44, 100, 249, 170, 21, 69, 134, 252, 168, 19, 58, 69, 67, 28, 223, 80, 174, 182, 223, 106, 214, 209, 82, 173, 227, 60, 236, 228, 245, 191, 215, 115, 201, 204, 60, 218, 162, 235, 77, 203, 202, 5, 154, 236, 200, 107, 164, 245, 238, 25, 71, 177, 155, 151, 65, 58, 165, 6, 24, 142, 35, 16, 194, 189, 248, 17, 153, 243, 55, 128, 188, 132, 102, 254, 125, 4, 46, 20, 206, 215, 152, 33, 142, 146, 229, 248, 242, 197, 157, 170, 249, 164, 45, 185, 20, 213, 44, 227, 238, 142, 182, 232, 183, 128, 189, 23, 138, 170, 37, 103, 5, 153, 16, 64, 123, 207, 17, 194, 62, 41, 199, 96, 102, 141, 133, 122, 19, 82, 104, 155, 122, 119, 39, 146, 45, 201, 154, 206, 169, 4, 2, 53, 53, 31, 43, 113, 0, 213, 177, 18, 48, 148, 241, 61, 247, 188, 96, 52, 23, 243, 112, 31, 24, 133, 201, 73, 245, 93, 248, 47, 41, 31, 102, 204, 43, 95, 26, 129, 54, 247, 140, 221, 30, 136, 248, 179, 44, 91, 118, 92, 183, 90, 216, 104, 1, 98, 168, 172, 94, 18, 55, 122, 255, 197, 174, 131, 152, 184, 160, 180, 108, 92, 122, 173, 122, 5, 71, 113, 114, 181, 214, 39, 34, 51, 29, 7, 234, 122, 228, 67, 53, 127, 137, 141, 16, 164, 174, 9, 16, 179, 172, 136, 9, 219, 40, 132, 10, 246, 163, 169, 79, 125, 210, 3, 2, 171, 94, 239, 100, 27, 135, 142, 38, 130, 236, 88, 67, 221, 246, 137, 33, 189, 7, 138, 140, 197, 116, 171, 21, 251, 64, 236, 120, 185, 148, 182, 203, 223, 157, 11, 77, 73, 232, 160, 202, 167, 13, 248, 239, 12, 192, 195, 46, 157, 145, 91, 148, 195, 123, 88, 120, 0, 157, 172, 195, 45, 89, 181, 159, 129, 74, 31, 147, 69, 195, 39, 118, 50, 192, 142, 231, 17, 135, 139, 16, 170, 14, 48, 68, 121, 240, 62, 195, 221, 93, 159, 70, 143, 212, 110, 168, 153, 146, 255, 57, 55, 30, 16, 168, 148, 252, 43, 169, 27, 43, 243, 100, 99, 30, 99, 70, 20, 68, 50, 236, 217, 194, 195, 144, 121, 23, 202, 254, 143, 21, 66, 241, 223, 158, 190, 138, 209, 143, 150, 63, 143, 237, 17, 42, 106, 175, 133, 199, 211, 41, 123, 144, 111, 91, 146, 37, 61, 161, 100, 116, 169, 51, 3, 2, 18, 154, 112, 97, 63, 43, 254, 249, 105, 193, 130, 18, 69, 198, 23, 198, 222, 9, 164, 41, 24, 236, 45, 100, 9, 17, 245, 237, 61, 139, 193, 66, 206, 37, 242, 179, 15, 225, 238, 75, 126, 61, 190, 214, 104, 123, 113, 33, 20, 222, 102, 59, 115, 231, 76, 152, 105, 55, 209, 172, 178, 173, 76 }, + PasswordSalt = new byte[] { 176, 102, 80, 107, 173, 26, 240, 36, 98, 4, 222, 144, 88, 201, 220, 103, 160, 116, 0, 92, 236, 201, 183, 162, 26, 29, 209, 47, 81, 205, 52, 53, 33, 204, 36, 127, 110, 95, 180, 44, 127, 51, 169, 164, 212, 113, 207, 236, 101, 209, 127, 18, 134, 198, 247, 42, 172, 39, 10, 40, 23, 46, 77, 21, 189, 52, 75, 80, 77, 139, 72, 99, 80, 68, 239, 74, 167, 21, 209, 27, 211, 98, 31, 225, 79, 40, 159, 95, 196, 133, 138, 43, 247, 28, 240, 146, 211, 226, 74, 57, 214, 121, 48, 92, 15, 147, 243, 33, 28, 92, 197, 188, 48, 7, 181, 152, 242, 168, 163, 96, 0, 159, 206, 73, 49, 152, 27, 192, 196, 54, 157, 85, 64, 164, 128, 35, 23, 105, 108, 92, 29, 156, 53, 145, 84, 103, 79, 21, 96, 113, 188, 33, 113, 65, 154, 132, 121, 41, 137, 31, 235, 8, 230, 254, 248, 198, 42, 5, 80, 69, 127, 98, 188, 206, 21, 73, 33, 184, 57, 249, 180, 69, 40, 117, 146, 197, 223, 247, 202, 167, 207, 203, 163, 81, 121, 224, 45, 116, 158, 244, 194, 215, 199, 138, 253, 247, 82, 4, 67, 187, 230, 47, 98, 211, 106, 134, 56, 15, 242, 18, 200, 118, 184, 127, 243, 6, 172, 3, 245, 21, 205, 136, 158, 254, 78, 140, 147, 65, 140, 174, 97, 145, 219, 87, 51, 10, 97, 105, 167, 44, 146, 12, 229, 85, 162, 181, 191, 26, 120, 213, 226, 55, 30, 177, 82, 34, 80, 109, 181, 26, 130, 127, 43, 107, 193, 132, 125, 43, 206, 23, 32, 169, 155, 250, 212, 160, 133, 213, 214, 47, 114, 101, 226, 5, 16, 92, 63, 103, 149, 4, 189, 165, 216, 164, 7, 240, 5, 14, 191, 237, 112, 244, 106, 0, 181, 75, 54, 230, 109, 250, 216, 67, 251, 235, 160, 153, 59, 122, 208, 151, 94, 58, 68, 6, 65, 217, 5, 90, 178, 83, 228, 101, 141, 216, 69, 94, 93, 90, 211, 238, 190, 214, 246, 126, 229, 17, 214, 74, 212, 4, 179, 132, 187, 24, 64, 122, 46, 75, 0, 72, 35, 134, 93, 40, 184, 83, 238, 5, 111, 161, 203, 210, 174, 78, 32, 228, 87, 166, 110, 134, 179, 128, 200, 65, 244, 27, 184, 108, 44, 219, 123, 76, 75, 56, 220, 4, 202, 89, 84, 251, 224, 215, 35, 178, 54, 48, 195, 172, 212, 201, 208, 132, 136, 42, 125, 17, 215, 51, 82, 170, 185, 109, 167, 74, 45, 164, 236, 192, 192, 41, 11, 179, 117, 107, 80, 168, 129, 102, 0, 131, 39, 184, 191, 206, 120, 220, 254, 210, 228, 79, 13, 241, 122, 190, 20, 45, 109, 239, 231, 151, 230, 239, 83, 157, 111, 62, 112, 100, 243, 157, 40, 141, 41, 97, 119, 96, 205, 248, 164, 108, 160, 157, 12, 118, 213, 34, 243, 192, 90, 91, 139, 92, 214, 195, 30, 185, 198, 84, 238, 77, 219, 79, 238, 169, 11, 115, 166, 25, 47, 226, 255, 168, 254, 187, 230, 97, 41, 33, 99, 170, 21, 148, 95, 171, 99, 35, 187, 215, 168, 24, 239, 208, 67, 109, 188, 94, 122, 96, 169, 124, 213, 210, 134, 77, 231, 0, 35, 98, 155, 219, 210, 2, 157, 2, 206, 92, 166, 77, 56, 238, 222, 171, 14, 73, 239, 156, 169, 114, 241, 96, 163, 206, 97, 196, 22, 199, 221, 157, 230, 1, 236, 4, 30, 79, 5, 249, 108, 44, 181, 108, 222, 163, 113, 146, 171, 161, 166, 76, 90, 60, 46, 92, 48, 127, 245, 166, 231, 168, 75, 143, 147, 222, 24, 15, 253, 85, 242, 114, 53, 141, 228, 246, 112, 204, 165, 18, 82, 247, 220, 79, 226, 198, 201, 213, 162, 33, 96, 112, 167, 166, 45, 78, 222, 215, 138, 207, 237, 154, 89, 130, 25, 187, 46, 244, 50, 15, 89, 231, 235, 238, 237, 185, 245, 91, 165, 85, 101, 147, 43, 95, 143, 3, 117, 169, 21, 82, 232, 103, 128, 249, 222, 33, 232, 14, 130, 117, 53, 74, 222, 21, 5, 82, 74, 188, 43, 56, 208, 208, 23, 141, 97, 151, 214, 167, 126, 236, 218, 83, 113, 205, 180, 52, 125, 112, 203, 89, 3, 211, 182, 145, 210, 118, 167, 4, 224, 135, 163, 52, 219, 5, 222, 39, 221, 73, 40, 137, 124, 216, 105, 67, 255, 197, 19, 253, 129, 194, 108, 97, 82, 95, 216, 90, 112, 67, 80, 81, 121, 40, 65, 149, 86, 28, 98, 104, 36, 177, 102, 195, 110, 12, 226, 24, 72, 205, 59, 143, 107, 250, 253, 105, 138, 93, 163, 164, 119, 193, 91, 38, 199, 56, 191, 63, 193, 159, 200, 182, 80, 218, 134, 79, 226, 69, 75, 63, 88, 47, 178, 35, 161, 241, 39, 199, 168, 156, 118, 197, 240, 43, 121, 207, 193, 194, 156, 234, 78, 72, 4, 0, 47, 3, 5, 241, 65, 223, 179, 185, 224, 215, 71, 164, 133, 202, 219, 66, 99, 106, 242, 40, 131, 12, 160, 14, 91, 158, 51, 146, 111, 121, 157, 210, 96, 168, 60, 60, 26, 199, 213, 62, 58, 11, 200, 97, 157, 18, 128, 25, 236, 187, 41, 149, 236, 144, 174, 197, 230, 59, 231, 97, 85, 84, 13, 161, 144, 177, 218, 219, 136, 206, 28, 179, 42, 131, 111, 110, 190, 176, 21, 183, 57, 134, 131, 69, 74, 122, 168, 120, 214, 101, 214, 193, 37, 185, 192, 220, 38, 79, 24, 88, 132, 89, 72, 37, 183, 169, 100, 23, 114, 144, 32, 219, 220, 115, 170, 177, 118, 237, 230, 35, 236, 173, 251, 181, 249, 226, 59, 203, 172, 105, 228, 117, 103, 231, 78, 148, 15, 138, 134, 36, 207, 87, 194, 3, 9, 214, 38, 121, 15, 63, 13, 15, 153, 35, 254, 35, 174, 69, 11, 245, 132, 173, 174, 155, 217, 106, 178, 106, 48, 117, 74, 178, 112, 233, 104, 31, 145, 55, 93, 246, 136, 131, 174, 176, 138, 39, 168, 40, 33, 104, 34, 237, 28, 141, 207, 100, 142, 80, 81, 219, 27, 148, 218, 184, 144, 210, 89, 113, 59, 73, 247, 242, 6, 247, 237, 56, 132, 141, 148, 251, 103, 77, 51, 160, 177, 8, 190, 48, 254, 64, 60, 14, 241, 244, 240, 3, 11, 53, 101, 148, 32, 97, 160, 224, 58, 128, 158, 95, 234, 122, 74, 191, 151, 49, 89, 218, 32, 250, 231, 244, 97, 30, 166, 95, 67, 101, 171, 245, 55, 106, 76, 251, 172, 61, 200, 113, 210, 215, 160, 205, 237, 189, 82, 2, 136, 5, 6, 98, 51, 220, 53, 78, 254, 35, 159, 121, 3, 106, 19, 251, 212, 194, 114, 67, 124, 66, 235, 93, 166, 240, 19, 46, 168, 250, 37, 84, 236, 70, 162, 157, 204, 73, 0, 180, 53, 32, 119, 178, 200, 38, 63, 163, 237, 26, 31, 228, 179, 95, 170, 159, 54, 142, 209, 8, 250, 82, 182, 31, 240, 72, 80, 213, 109, 159, 31, 110, 132, 37, 155, 75, 67, 11, 49, 200, 172, 246, 71, 255, 19, 157, 65, 44, 26, 135, 18, 54, 95, 106, 133, 154, 244, 148, 228, 207, 166, 168, 48, 249, 209, 119, 37, 250, 60, 88, 182, 182, 151, 43, 248, 96, 78, 254, 252, 100, 57, 211, 21, 236, 116, 216, 41, 192, 68, 135, 2, 226, 29, 51, 236, 141, 232, 95, 186, 236, 112, 150, 135, 86, 101, 93, 122, 102, 212, 137, 104, 18, 213, 8, 155, 5, 127, 204, 110, 37, 3, 31, 23, 83, 183, 63, 202, 204, 206, 127, 88, 208, 69, 16, 214, 119, 203, 53, 159, 219, 15, 88, 183, 17, 22, 170, 199, 45, 27, 107, 68, 43, 108, 52, 161, 238, 44, 101, 92, 230, 168, 211, 191, 108, 91, 62, 118, 98, 214, 69, 238, 93, 255, 143, 133, 188, 224, 248, 96, 89, 230, 71, 195, 244, 87, 129, 151, 26, 171, 133, 111, 243, 122, 237, 114, 26, 15, 244, 130, 144, 216, 216, 149, 81, 22, 193, 28, 110, 210, 96, 172, 218, 57, 221, 139, 249, 159, 150, 253, 194, 58, 79, 121, 190, 41, 41, 14, 165, 128, 34, 12, 142, 84, 71, 21, 60, 205, 0, 88, 29, 115, 72, 15, 128, 192, 166, 64, 18, 16, 179, 215, 250, 136, 239, 183, 168, 39, 164, 248, 226, 95, 235, 79, 15, 20, 115, 183, 164, 38, 249, 175, 217, 5, 67, 112, 214, 41, 221, 102, 124, 54, 88, 231, 85, 61, 165, 234, 224, 97, 159, 77, 150, 39, 110, 195, 166, 111, 11, 179, 23, 44, 145, 197, 218, 246, 52, 180, 21, 186, 1, 192, 103, 25, 23, 123, 81, 107, 30, 187, 154, 207, 202, 10, 39, 89, 216, 26, 153, 184, 36, 103, 106, 238, 45, 112, 54, 69, 225, 200, 52, 47, 193, 129, 73, 171, 158, 0, 231, 252, 67, 234, 133, 112, 133, 217, 166, 180, 43, 253, 8, 228, 193, 226, 230, 212, 214, 164, 201, 212, 72, 239, 198, 5, 75, 142, 114, 48, 77, 132, 117, 87, 60, 135, 98, 180, 178, 159, 228, 59, 54, 63, 76, 47, 221, 226, 108, 178, 161, 37, 191, 90, 206, 71, 160, 13, 108, 36, 32, 31, 239, 248, 65, 250, 19, 255, 107, 79, 108, 44, 5, 211, 53, 167, 220, 60, 214, 16, 207, 107, 3, 6, 251, 125, 57, 215, 238, 138, 198, 27, 155, 170, 116, 147, 172, 124, 227, 124, 74, 170, 9, 232, 148, 42, 201, 25, 65, 30, 35, 178, 211, 97, 115, 19, 219, 21, 69, 201, 253, 97, 248, 136, 202, 80, 252, 168, 96, 89, 149, 200, 139, 166, 186, 93, 255, 181, 11, 131, 130, 82, 13, 8, 175, 68, 29, 71, 4, 113, 75, 34, 207, 90, 32, 250, 50, 79, 135, 173, 117, 198, 0, 251, 185, 215, 183, 32, 229, 149, 0, 128, 97, 49, 52, 163, 76, 153, 152, 245, 121, 83, 156, 79, 141, 99, 129, 134, 231, 24, 40, 129, 115, 225, 128, 71, 249, 194, 146, 102, 20, 31, 236, 129, 195, 74, 249, 203, 105, 188, 135, 110, 193, 194, 183, 10, 141, 214, 139, 21, 40, 34, 172, 20, 27, 70, 17, 201, 76, 197, 173, 96, 20, 15, 246, 251, 61, 218, 179, 217, 116, 57, 108, 60, 15, 157, 1, 149, 176, 105, 80, 129, 50, 134, 241, 26, 153, 0, 88, 133, 17, 101, 107, 50, 98, 240, 4, 91, 80, 176, 170, 55, 56, 90, 23, 155, 83, 126, 222, 8, 42, 253, 128, 135, 19, 43, 106, 200, 252, 12, 139, 174, 54, 208, 48, 116, 58, 85, 234, 2, 6, 48, 66, 29, 212, 12, 89, 25, 72, 223, 45, 212, 238, 216, 169, 156, 195, 147, 197, 141, 38, 180, 68, 226, 36, 129, 176, 134, 51, 115, 237, 204, 8, 234, 214, 170, 192, 132, 72, 113, 219, 97, 138, 149, 208, 64, 130, 97, 243, 215, 14, 146, 156, 155, 180, 176, 178, 244, 225, 43, 118, 181, 120, 98, 238, 2, 52, 241, 117, 87, 122, 113, 106, 210, 10, 250, 243, 160, 188, 20, 141, 110, 38, 21, 3, 207, 226, 87, 49, 207, 170, 105, 204, 150, 99, 9, 70, 58, 230, 54, 63, 70, 96, 241, 92, 213, 115, 91, 17, 198, 77, 137, 183, 207, 100, 128, 130, 4, 153, 228, 128, 168, 0, 127, 170, 117, 84, 35, 222, 240, 191, 190, 179, 167, 45, 17, 0, 124, 166, 91, 112, 131, 203, 159, 131, 139, 206, 7, 165, 161, 72, 89, 54, 59, 29, 170, 96, 23, 167, 55, 219, 236, 169, 155, 121, 87, 234, 200, 187, 196, 99, 99, 170, 245, 34, 0, 204, 150, 68, 142, 209, 142, 130, 198, 89, 224, 17, 132, 186, 156, 68, 180, 94, 213, 96, 110, 235, 166, 97, 48, 127, 48, 100, 76, 202, 179, 126, 210, 107, 242, 246, 70, 106, 151, 1, 9, 206, 37, 3, 209, 33, 125, 84, 133, 122, 113, 0, 93, 31, 237, 213, 151, 70, 170, 204, 69, 48, 96, 208 }, + Privileges = 8, + Username = "User" + }, + new + { + Id = 2ul, + PasswordHash = new byte[] { 228, 156, 247, 87, 85, 44, 125, 62, 169, 91, 105, 98, 152, 58, 237, 2, 2, 222, 106, 70, 101, 90, 137, 214, 225, 198, 101, 85, 185, 211, 221, 77, 96, 34, 81, 1, 137, 79, 181, 188, 11, 198, 239, 160, 147, 141, 116, 56, 73, 153, 177, 189, 37, 229, 18, 75, 144, 171, 252, 3, 77, 196, 237, 255, 212, 3, 27, 145, 230, 15, 68, 234, 213, 203, 12, 30, 215, 38, 224, 241, 208, 7, 90, 77, 222, 237, 18, 126, 170, 209, 178, 127, 144, 41, 184, 219, 158, 29, 45, 64, 173, 9, 43, 174, 174, 57, 100, 40, 224, 224, 165, 89, 125, 195, 32, 230, 21, 162, 152, 239, 2, 162, 130, 125, 205, 169, 247, 5, 33, 246, 199, 189, 90, 78, 176, 11, 195, 199, 82, 247, 208, 191, 23, 240, 130, 111, 46, 156, 255, 7, 167, 152, 178, 129, 233, 93, 121, 244, 249, 90, 79, 161, 216, 143, 31, 193, 187, 61, 60, 166, 70, 180, 220, 127, 164, 221, 163, 40, 74, 150, 245, 170, 97, 81, 128, 202, 200, 76, 116, 79, 77, 192, 129, 47, 195, 105, 36, 107, 245, 46, 88, 154, 195, 252, 203, 96, 47, 72, 151, 190, 98, 239, 16, 199, 246, 160, 44, 45, 142, 122, 94, 61, 162, 157, 34, 183, 232, 224, 248, 18, 173, 110, 202, 9, 40, 63, 137, 126, 145, 97, 162, 54, 206, 21, 221, 131, 207, 11, 216, 3, 73, 174, 254, 211, 71, 162, 221, 251, 48, 41, 236, 88, 245, 8, 5, 120, 65, 121, 119, 204, 182, 4, 71, 25, 253, 213, 166, 2, 193, 99, 253, 64, 245, 70, 198, 16, 194, 184, 14, 208, 144, 228, 80, 248, 149, 245, 205, 119, 24, 10, 186, 233, 146, 173, 235, 239, 197, 109, 106, 171, 115, 197, 211, 40, 169, 152, 118, 43, 134, 82, 124, 43, 35, 82, 202, 18, 7, 80, 17, 152, 114, 130, 190, 242, 114, 125, 90, 1, 181, 215, 68, 40, 82, 135, 124, 51, 252, 194, 172, 211, 252, 36, 71, 104, 239, 139, 93, 225, 116, 254, 218, 102, 4, 220, 40, 167, 173, 102, 58, 16, 70, 144, 6, 33, 86, 79, 197, 104, 254, 88, 161, 210, 222, 221, 19, 21, 88, 34, 225, 147, 133, 76, 162, 81, 131, 92, 218, 157, 205, 6, 82, 7, 71, 1, 192, 227, 181, 149, 245, 240, 211, 68, 150, 43, 110, 248, 40, 67, 37, 122, 217, 93, 108, 196, 255, 170, 146, 122, 104, 21, 150, 34, 69, 141, 213, 24, 98, 253, 185, 192, 66, 143, 194, 76, 168, 10, 231, 205, 234, 250, 162, 18, 185, 173, 99, 220, 238, 184, 10, 128, 153, 59, 232, 43, 87, 76, 34, 83, 177, 74, 174, 94, 52, 221, 93, 186, 247, 54, 100, 98, 171, 145, 87, 220, 136, 81, 14, 23, 86, 32, 70, 191, 103, 20, 110, 12, 144, 28, 166, 200, 163, 23, 249, 104, 182, 185, 36, 119, 18, 82, 26, 34, 134, 39, 66, 42, 48, 182, 171, 85, 136, 225, 55, 73, 54, 195, 4, 137, 84, 110, 95, 144, 235, 160, 71, 19, 145, 189, 243, 181, 189, 167, 47, 149, 74, 107, 163, 241, 88, 71, 180, 56, 196, 52, 42, 40, 0, 192, 28, 188, 138, 13, 197, 220, 48, 230, 68, 235, 215, 16, 236, 241, 123, 237, 178, 29, 17, 153, 226, 29, 109, 13, 242, 87, 41, 105, 43, 67, 99, 245, 128, 165, 18, 245, 100, 167, 88, 28, 191, 129, 126, 99, 18, 51, 215, 22, 36, 171, 242, 156, 58, 149, 243, 209, 5, 66, 98, 63, 245, 143, 101, 82, 220, 122, 249, 52, 97, 144, 149, 58, 131, 200, 26, 64, 99, 163, 52, 163, 175, 145, 102, 184, 140, 125, 228, 208, 137, 216, 194, 227, 151, 96, 53, 171, 6, 245, 163, 80, 160, 2, 2, 154, 49, 69, 11, 214, 173, 171, 59, 140, 76, 234, 244, 219, 54, 224, 149, 198, 153, 118, 82, 160, 126, 4, 41, 163, 237, 244, 202, 91, 85, 223, 211, 6, 92, 213, 220, 120, 206, 113, 143, 33, 223, 224, 110, 152, 247, 43, 242, 246, 118, 26, 162, 50, 158, 193, 222, 149, 226, 216, 190, 91, 62, 163, 28, 174, 35, 226, 193, 107, 78, 134, 75, 58, 242, 100, 193, 211, 54, 66, 165, 12, 161, 130, 121, 128, 239, 96, 48, 153, 175, 180, 155, 105, 171, 72, 190, 29, 229, 118, 251, 24, 21, 194, 252, 45, 52, 176, 177, 62, 166, 102, 90, 131, 82, 155, 175, 222, 48, 192, 118, 63, 139, 213, 179, 212, 105, 20, 78, 51, 243, 249, 22, 127, 17, 186, 250, 11, 78, 3, 83, 171, 38, 37, 41, 38, 63, 65, 222, 207, 249, 148, 87, 106, 134, 84, 246, 255, 123, 14, 205, 34, 28, 107, 223, 205, 95, 192, 88, 185, 237, 27, 9, 131, 142, 151, 163, 50, 76, 133, 229, 56, 151, 210, 65, 213, 11, 93, 35, 67, 112, 86, 193, 35, 227, 46, 96, 133, 80, 113, 101, 151, 71, 33, 68, 152, 28, 19, 113, 42, 13, 219, 122, 251, 73, 19, 198, 183, 149, 91, 159, 84, 37, 247, 126, 168, 1, 191, 85, 136, 162, 14, 12, 125, 203, 212, 16, 57, 93, 91, 113, 57, 156, 1, 201, 238, 92, 196, 66, 133, 67, 217, 164, 87, 10, 232, 105, 130, 241, 103, 66, 5, 185, 101, 252, 156, 113, 216, 190, 164, 7, 240, 175, 11, 5, 9, 103, 64, 227, 81, 158, 104, 152, 156, 158, 77, 165, 52, 89, 207, 215, 11, 57, 224, 93, 73, 225, 122, 102, 51, 170, 120, 6, 156, 218, 161, 246, 66, 62, 184, 160, 84, 207, 232, 117, 66, 134, 229, 211, 170, 5, 171, 235, 20, 202, 183, 86, 180, 190, 207, 76, 107, 219, 23, 229, 125, 79, 82, 88, 118, 71, 15, 216, 227, 174, 230, 26, 1, 238, 140, 17, 146, 214, 4, 92, 124, 86, 95, 48, 187, 236, 4, 125, 119, 229, 209, 174, 85, 249, 69, 15, 95, 251, 242, 218, 248, 246, 113, 142, 75, 211, 100, 246, 230, 184, 81, 145, 249, 154, 198, 234, 227, 239, 222, 9, 141, 235, 7, 157, 7, 15, 44, 146, 154, 221, 215, 197, 228, 19, 245, 163, 158, 159, 8, 240, 218, 173, 142, 51, 26, 20, 124, 164, 191, 241, 32, 241, 52, 209, 151, 253, 148, 3, 179, 39, 118, 177, 55, 240, 188, 38, 239, 160, 139, 66, 199, 67, 79, 155, 181, 222, 203, 239, 181, 195, 50, 113, 187, 242, 63, 119, 90, 130, 251, 108, 94, 12, 240, 232, 225, 214, 255, 250, 42, 55, 193, 19, 146, 242, 64, 217, 99, 70, 129, 117, 157, 69, 127, 241, 64, 131, 137, 139, 53, 167, 31, 74, 79, 22, 42, 72, 131, 181, 219, 8, 5, 173, 119, 150, 143, 255, 60, 19, 172, 25, 125, 19, 162, 132, 44, 164, 72, 143, 236, 46, 94, 15, 237, 200, 62, 17, 73, 132, 240, 195, 51, 88, 13, 170, 108, 15, 87, 59, 190, 140, 71, 151, 3, 174, 82, 83, 74, 198, 18, 157, 119, 81, 245, 54, 47, 209, 72, 2, 139, 24, 137, 96, 154, 31, 21, 64, 103, 233, 150, 14, 63, 9, 70, 206, 75, 67, 174, 83, 102, 26, 183, 180, 212, 136, 49, 3, 19, 190, 65, 208, 135, 25, 7, 213, 2, 98, 99, 70, 113, 33, 224, 226, 81, 213, 90, 134, 76, 236, 178, 98, 124, 254, 178, 242, 150, 75, 91, 249, 70, 149, 39, 148, 14, 198, 71, 167, 155, 248, 15, 184, 229, 176, 144, 66, 165, 240, 217, 98, 230, 157, 34, 93, 245, 96, 32, 95, 111, 253, 236, 206, 84, 122, 71, 218, 113, 214, 220, 58, 23, 91, 70, 248, 153, 23, 39, 84, 15, 45, 84, 64, 44, 178, 143, 238, 17, 209, 196, 156, 154, 101, 102, 209, 5, 99, 1, 61, 163, 2, 147, 119, 174, 114, 13, 40, 104, 56, 17, 96, 253, 188, 32, 67, 24, 115, 142, 51, 77, 158, 98, 22, 237, 15, 7, 232, 34, 93, 209, 200, 101, 135, 32, 188, 79, 213, 252, 24, 97, 141, 64, 88, 114, 112, 131, 57, 196, 34, 50, 84, 251, 61, 189, 9, 35, 162, 195, 173, 199, 159, 148, 129, 194, 126, 237, 122, 57, 40, 80, 68, 74, 178, 139, 24, 63, 227, 35, 86, 252, 234, 246, 66, 118, 22, 44, 111, 119, 235, 22, 113, 72, 41, 7, 46, 103, 255, 35, 220, 31, 118, 207, 70, 48, 204, 132, 167, 0, 12, 219, 69, 153, 45, 216, 246, 10, 56, 19, 161, 112, 178, 23, 225, 201, 48, 152, 135, 177, 126, 119, 141, 86, 236, 5, 186, 33, 121, 21, 107, 77, 194, 122, 184, 157, 160, 232, 139, 155, 65, 86, 219, 15, 112, 191, 2, 212, 171, 158, 164, 208, 140, 245, 187, 128, 38, 103, 103, 198, 133, 197, 222, 199, 102, 231, 88, 106, 103, 110, 128, 154, 14, 110, 78, 187, 201, 49, 162, 82, 91, 250, 99, 175, 114, 8, 207, 211, 1, 250, 98, 101, 1, 249, 160, 38, 29, 97, 71, 251, 6, 72, 66, 77, 158, 251, 49, 24, 212, 180, 228, 66, 115, 38, 113, 16, 235, 169, 30, 75, 161, 93, 144, 61, 86, 54, 68, 79, 236, 106, 231, 82, 59, 252, 16, 55, 160, 235, 53, 131, 219, 34, 144, 194, 25, 219, 223, 117, 249, 220, 39, 203, 58, 50, 176, 100, 112, 59, 160, 159, 51, 210, 220, 22, 178, 59, 234, 130, 58, 207, 211, 206, 73, 123, 150, 1, 217, 143, 79, 10, 101, 171, 244, 114, 220, 22, 254, 34, 110, 19, 34, 172, 6, 49, 229, 46, 57, 204, 115, 55, 56, 224, 52, 213, 167, 22, 5, 115, 199, 146, 21, 50, 34, 202, 20, 206, 142, 127, 250, 174, 100, 12, 220, 117, 120, 109, 172, 126, 57, 182, 108, 143, 202, 188, 139, 183, 203, 164, 203, 237, 238, 217, 107, 116, 156, 229, 132, 54, 213, 4, 69, 116, 109, 74, 112, 93, 244, 195, 246, 219, 63, 16, 53, 145, 233, 98, 199, 176, 212, 123, 37, 175, 58, 138, 152, 192, 129, 197, 51, 27, 35, 35, 203, 106, 149, 22, 13, 1, 251, 101, 83, 115, 63, 98, 43, 49, 93, 32, 251, 252, 181, 131, 40, 34, 109, 190, 61, 124, 16, 240, 110, 45, 79, 54, 118, 109, 24, 122, 127, 213, 250, 166, 255, 149, 4, 240, 240, 235, 217, 196, 98, 128, 19, 18, 221, 13, 239, 161, 154, 89, 8, 212, 7, 50, 154, 182, 189, 229, 91, 113, 132, 189, 132, 88, 189, 250, 191, 117, 34, 56, 18, 203, 6, 144, 196, 66, 172, 224, 46, 152, 67, 212, 238, 209, 199, 68, 12, 212, 200, 184, 227, 154, 143, 82, 63, 225, 104, 35, 118, 35, 49, 217, 222, 207, 189, 173, 244, 70, 92, 245, 128, 44, 75, 105, 148, 45, 203, 144, 244, 37, 233, 234, 73, 95, 177, 99, 20, 152, 239, 189, 12, 54, 175, 153, 239, 98, 213, 120, 30, 206, 231, 252, 60, 128, 182, 116, 21, 231, 205, 189, 83, 207, 46, 143, 238, 134, 53, 208, 75, 54, 107, 195, 60, 36, 233, 28, 54, 211, 10, 36, 200, 21, 167, 130, 195, 205, 134, 155, 101, 165, 56, 170, 111, 63, 169, 188, 183, 162, 182, 132, 235, 64, 248, 141, 194, 36, 85, 70, 253, 62, 154, 166, 198, 225, 38, 222, 37, 118, 27, 7, 94, 136, 109, 184, 172, 132, 173, 23, 3, 122, 1, 188, 9, 93, 207, 155, 94, 211, 195, 126, 46, 121, 154, 157, 203, 8, 41, 160, 168, 45, 67, 34, 26, 189, 16, 170, 74, 37, 172, 149, 2, 108, 29, 67, 134, 238, 249, 208, 188, 105, 133, 248, 175, 33, 167, 186, 246, 155, 133, 121, 78, 122, 68, 229, 82, 48, 242, 137, 132, 184, 130, 223, 231, 227, 187, 155, 199, 223, 189, 238, 78, 142, 91, 142, 151, 3, 83, 82 }, + PasswordSalt = new byte[] { 79, 233, 99, 247, 7, 211, 109, 228, 11, 213, 83, 90, 111, 19, 14, 23, 189, 12, 92, 110, 83, 224, 51, 183, 19, 80, 203, 202, 201, 161, 157, 39, 78, 218, 113, 230, 156, 150, 148, 254, 35, 212, 220, 65, 165, 142, 60, 203, 96, 40, 41, 139, 125, 155, 222, 186, 205, 244, 120, 85, 61, 159, 15, 70, 174, 17, 81, 199, 167, 144, 158, 102, 92, 46, 144, 91, 161, 4, 247, 105, 116, 217, 12, 71, 64, 19, 47, 169, 85, 52, 129, 0, 30, 53, 51, 172, 33, 155, 74, 17, 154, 248, 2, 218, 56, 251, 192, 163, 56, 182, 141, 215, 86, 189, 43, 132, 199, 236, 33, 121, 237, 153, 25, 15, 201, 16, 111, 245, 64, 188, 30, 190, 116, 151, 25, 58, 138, 191, 82, 170, 32, 70, 139, 58, 82, 188, 58, 147, 125, 27, 131, 169, 110, 172, 218, 81, 155, 177, 81, 176, 195, 231, 145, 126, 2, 155, 209, 119, 34, 146, 47, 199, 1, 76, 3, 116, 175, 172, 232, 177, 109, 71, 200, 185, 235, 245, 58, 22, 213, 238, 110, 205, 145, 98, 231, 97, 149, 127, 7, 143, 204, 62, 95, 48, 129, 47, 188, 132, 58, 202, 157, 138, 123, 67, 228, 38, 154, 221, 141, 0, 44, 48, 115, 244, 74, 119, 111, 92, 191, 212, 239, 96, 204, 255, 211, 76, 146, 141, 234, 200, 148, 134, 79, 180, 203, 135, 48, 180, 33, 157, 52, 189, 82, 4, 43, 140, 207, 118, 115, 39, 210, 111, 130, 115, 182, 87, 40, 169, 157, 237, 37, 88, 132, 136, 140, 147, 23, 107, 142, 226, 248, 84, 255, 30, 138, 130, 89, 215, 191, 191, 197, 163, 199, 123, 242, 168, 49, 234, 210, 15, 4, 176, 180, 94, 127, 39, 159, 28, 63, 97, 5, 76, 124, 97, 6, 194, 2, 161, 181, 164, 6, 255, 155, 165, 135, 181, 92, 5, 130, 41, 46, 168, 37, 118, 101, 17, 3, 248, 167, 199, 63, 104, 178, 64, 103, 23, 104, 212, 139, 104, 143, 234, 184, 245, 255, 200, 212, 3, 28, 0, 220, 65, 172, 85, 143, 110, 119, 28, 15, 199, 42, 85, 66, 107, 35, 66, 234, 30, 211, 142, 49, 126, 71, 187, 247, 70, 61, 37, 93, 37, 179, 122, 50, 147, 178, 116, 172, 175, 197, 157, 254, 134, 229, 92, 220, 131, 44, 140, 4, 18, 176, 255, 118, 17, 72, 116, 45, 243, 178, 244, 185, 113, 15, 79, 19, 241, 25, 115, 46, 152, 138, 84, 162, 25, 141, 231, 99, 236, 31, 37, 209, 23, 226, 70, 192, 7, 142, 126, 130, 100, 193, 142, 114, 124, 40, 217, 180, 61, 228, 224, 114, 224, 137, 36, 204, 79, 76, 21, 160, 184, 218, 73, 165, 185, 30, 214, 244, 154, 239, 64, 57, 15, 6, 156, 95, 117, 226, 227, 109, 149, 93, 242, 123, 185, 48, 33, 86, 170, 54, 154, 165, 61, 250, 108, 212, 109, 236, 206, 81, 62, 13, 109, 154, 181, 114, 226, 19, 192, 95, 124, 136, 87, 85, 225, 27, 129, 50, 66, 230, 0, 25, 137, 64, 45, 219, 128, 207, 192, 115, 244, 110, 1, 111, 199, 114, 234, 188, 180, 146, 21, 164, 13, 114, 61, 108, 216, 117, 37, 123, 80, 160, 102, 122, 85, 85, 23, 56, 196, 205, 42, 28, 255, 243, 89, 43, 171, 179, 171, 124, 116, 32, 201, 236, 200, 34, 94, 115, 209, 32, 18, 138, 126, 212, 134, 25, 46, 167, 236, 110, 151, 137, 98, 90, 143, 11, 32, 165, 156, 187, 9, 38, 196, 100, 3, 251, 116, 62, 135, 220, 1, 56, 102, 195, 229, 10, 118, 41, 71, 99, 228, 177, 81, 55, 33, 127, 193, 199, 222, 181, 35, 216, 108, 1, 231, 47, 74, 104, 112, 147, 77, 195, 165, 165, 132, 46, 120, 252, 144, 121, 150, 88, 62, 226, 12, 177, 216, 198, 32, 105, 150, 106, 101, 178, 139, 179, 75, 75, 183, 79, 209, 133, 250, 227, 194, 78, 255, 31, 41, 45, 1, 188, 131, 119, 245, 252, 72, 200, 46, 254, 129, 169, 98, 192, 172, 241, 181, 232, 208, 8, 225, 65, 44, 1, 144, 26, 32, 26, 123, 130, 141, 191, 211, 237, 72, 97, 240, 216, 8, 201, 101, 209, 224, 89, 122, 41, 174, 217, 168, 155, 169, 214, 173, 92, 58, 84, 78, 151, 206, 254, 165, 129, 124, 226, 39, 80, 118, 184, 237, 158, 94, 39, 34, 217, 63, 97, 225, 146, 239, 111, 19, 222, 218, 20, 137, 83, 65, 207, 131, 149, 210, 49, 209, 173, 192, 27, 60, 86, 103, 219, 44, 143, 74, 141, 13, 37, 18, 69, 184, 72, 43, 85, 184, 80, 198, 89, 28, 31, 57, 168, 3, 158, 254, 252, 243, 84, 57, 137, 47, 236, 11, 207, 108, 212, 240, 56, 56, 126, 190, 136, 39, 91, 143, 219, 196, 140, 62, 26, 198, 142, 241, 31, 100, 7, 126, 74, 112, 223, 24, 4, 135, 68, 98, 220, 37, 127, 76, 84, 80, 116, 155, 239, 223, 165, 133, 141, 27, 156, 96, 69, 85, 224, 32, 223, 103, 185, 9, 164, 11, 167, 96, 129, 193, 179, 12, 53, 169, 173, 175, 5, 159, 199, 241, 133, 242, 251, 124, 108, 55, 75, 113, 96, 110, 18, 167, 80, 207, 183, 68, 93, 67, 82, 129, 176, 85, 93, 31, 48, 170, 107, 126, 104, 245, 140, 148, 52, 95, 193, 79, 162, 118, 121, 239, 193, 44, 127, 79, 8, 96, 108, 238, 59, 10, 2, 99, 249, 86, 68, 173, 59, 202, 58, 213, 98, 16, 3, 68, 226, 224, 76, 65, 238, 18, 97, 154, 171, 179, 235, 28, 177, 18, 25, 30, 169, 166, 42, 128, 146, 181, 116, 72, 17, 99, 130, 162, 130, 232, 116, 113, 176, 123, 45, 234, 130, 158, 56, 104, 196, 127, 145, 219, 5, 100, 19, 52, 41, 76, 129, 236, 75, 100, 227, 220, 84, 98, 225, 239, 114, 232, 163, 137, 123, 160, 219, 112, 59, 199, 118, 202, 167, 159, 87, 106, 136, 60, 161, 103, 151, 223, 228, 120, 164, 169, 137, 183, 231, 98, 210, 115, 248, 212, 85, 118, 161, 72, 161, 122, 21, 239, 178, 118, 102, 208, 208, 68, 223, 137, 217, 212, 19, 58, 255, 147, 59, 28, 39, 241, 115, 41, 8, 150, 144, 82, 47, 26, 57, 149, 11, 146, 72, 142, 62, 124, 211, 72, 171, 173, 83, 77, 4, 210, 253, 25, 25, 74, 92, 23, 66, 159, 206, 167, 113, 33, 121, 195, 125, 103, 217, 83, 165, 18, 194, 54, 80, 156, 122, 168, 105, 182, 100, 218, 151, 240, 251, 125, 71, 27, 57, 97, 81, 235, 229, 208, 37, 119, 200, 255, 146, 204, 215, 124, 250, 166, 167, 107, 193, 156, 126, 52, 153, 240, 182, 101, 15, 105, 165, 102, 233, 139, 32, 103, 10, 11, 17, 254, 143, 70, 72, 82, 178, 44, 53, 188, 239, 49, 45, 213, 156, 250, 30, 82, 207, 212, 83, 163, 205, 64, 137, 161, 66, 191, 87, 27, 139, 221, 192, 189, 243, 201, 180, 131, 188, 68, 195, 205, 199, 187, 215, 244, 170, 47, 109, 216, 13, 227, 170, 126, 175, 39, 109, 204, 192, 79, 178, 85, 44, 53, 8, 248, 21, 152, 114, 55, 114, 17, 136, 21, 176, 163, 87, 241, 52, 55, 119, 211, 29, 116, 131, 172, 232, 158, 105, 111, 93, 63, 184, 153, 129, 160, 76, 116, 255, 165, 76, 78, 202, 66, 222, 232, 41, 244, 175, 49, 236, 136, 110, 153, 49, 208, 95, 226, 54, 239, 250, 8, 247, 153, 210, 150, 66, 120, 61, 176, 248, 76, 132, 157, 14, 34, 125, 110, 145, 0, 211, 199, 243, 83, 115, 253, 16, 50, 98, 245, 205, 121, 112, 35, 144, 213, 120, 140, 217, 130, 21, 177, 99, 93, 182, 241, 83, 222, 86, 137, 237, 46, 232, 175, 112, 179, 211, 153, 48, 8, 114, 60, 25, 146, 73, 57, 177, 90, 241, 22, 11, 81, 62, 224, 161, 108, 11, 78, 255, 168, 244, 105, 92, 4, 201, 134, 210, 169, 68, 120, 238, 15, 174, 244, 243, 251, 34, 52, 117, 81, 203, 118, 62, 101, 131, 146, 229, 246, 67, 131, 100, 174, 113, 131, 254, 121, 4, 74, 92, 198, 84, 167, 62, 244, 116, 147, 52, 10, 36, 124, 70, 150, 210, 205, 87, 194, 138, 150, 31, 245, 210, 93, 10, 5, 72, 197, 39, 228, 128, 41, 225, 234, 19, 117, 96, 90, 166, 37, 177, 46, 209, 79, 242, 127, 53, 189, 234, 67, 24, 20, 92, 164, 231, 130, 178, 50, 235, 113, 184, 106, 143, 160, 189, 145, 194, 181, 158, 47, 105, 10, 148, 228, 3, 56, 5, 28, 1, 185, 110, 36, 10, 13, 191, 98, 28, 218, 71, 142, 194, 100, 105, 143, 227, 159, 236, 154, 12, 123, 174, 63, 94, 214, 61, 15, 129, 16, 146, 169, 36, 39, 222, 74, 227, 63, 99, 191, 135, 44, 98, 51, 14, 207, 90, 103, 218, 68, 147, 111, 169, 94, 148, 87, 247, 43, 83, 53, 33, 92, 71, 57, 83, 118, 214, 88, 67, 31, 91, 227, 231, 248, 238, 247, 38, 75, 44, 155, 255, 211, 82, 79, 213, 141, 84, 82, 251, 201, 210, 244, 3, 127, 211, 169, 253, 166, 231, 37, 37, 49, 30, 150, 122, 213, 24, 246, 142, 68, 79, 49, 55, 84, 150, 214, 105, 45, 123, 119, 16, 75, 235, 82, 253, 233, 96, 227, 253, 14, 101, 65, 2, 173, 188, 37, 12, 87, 1, 29, 148, 156, 180, 148, 54, 232, 38, 28, 16, 240, 244, 229, 149, 170, 226, 239, 184, 160, 193, 168, 138, 213, 240, 145, 46, 57, 166, 216, 102, 242, 77, 129, 30, 5, 54, 56, 140, 247, 1, 19, 156, 115, 88, 182, 105, 176, 91, 59, 76, 246, 136, 223, 205, 90, 229, 21, 154, 149, 184, 95, 227, 86, 80, 203, 37, 234, 20, 28, 177, 9, 67, 54, 148, 42, 243, 240, 129, 168, 83, 199, 135, 20, 245, 59, 169, 3, 166, 77, 229, 136, 35, 68, 193, 241, 144, 159, 250, 11, 60, 99, 187, 237, 54, 188, 174, 137, 38, 141, 117, 138, 105, 178, 203, 205, 214, 105, 188, 7, 208, 219, 19, 139, 42, 52, 135, 27, 3, 3, 0, 194, 143, 130, 129, 75, 214, 21, 185, 19, 60, 108, 127, 38, 85, 248, 215, 180, 69, 5, 176, 93, 198, 192, 213, 230, 201, 35, 136, 128, 141, 186, 250, 49, 253, 14, 170, 205, 119, 89, 17, 1, 190, 102, 5, 201, 245, 52, 149, 37, 112, 11, 228, 27, 20, 236, 154, 7, 235, 18, 86, 160, 125, 13, 181, 133, 181, 12, 120, 29, 119, 58, 118, 194, 60, 12, 165, 20, 49, 14, 245, 50, 122, 163, 16, 186, 233, 217, 0, 180, 180, 79, 235, 94, 136, 139, 54, 228, 232, 172, 157, 185, 102, 170, 105, 114, 13, 97, 149, 248, 212, 27, 185, 225, 96, 56, 35, 5, 165, 168, 140, 123, 24, 215, 202, 189, 217, 177, 144, 34, 106, 128, 98, 237, 122, 56, 56, 140, 0, 153, 250, 113, 236, 228, 120, 91, 63, 4, 57, 193, 232, 13, 27, 135, 58, 112, 101, 138, 51, 186, 65, 234, 33, 129, 13, 32, 111, 93, 112, 81, 179, 64, 177, 41, 122, 245, 144, 239, 147, 250, 228, 170, 137, 159, 62, 107, 142, 146, 162, 3, 42, 253, 138, 13, 157, 102, 15, 112, 221, 38, 251, 242, 85, 164, 72, 21, 11, 221, 72, 66, 123, 216, 98, 153, 89, 95, 227, 70, 1, 108, 97, 50, 183, 208, 98, 74, 163, 164, 126, 206, 40, 61, 144, 133, 16, 120, 19, 197, 224, 113, 36, 148, 12, 159, 31, 48, 142, 59, 126, 130, 98, 72, 253, 227, 73, 122, 114, 84, 139, 39, 43, 180, 218, 92, 152, 232, 205, 5, 250, 240, 37, 113, 224, 21, 214, 102, 239, 94, 105, 61, 179, 221, 231, 19, 123, 111, 25, 20, 173, 64, 232, 80 }, + Privileges = 61, + Username = "Publisher" + }, + new + { + Id = 3ul, + PasswordHash = new byte[] { 166, 86, 204, 46, 226, 41, 186, 243, 57, 65, 80, 176, 190, 55, 196, 102, 168, 134, 13, 131, 60, 254, 5, 127, 222, 236, 223, 170, 223, 194, 35, 221, 17, 84, 6, 35, 216, 113, 146, 182, 221, 2, 22, 195, 146, 188, 53, 102, 81, 184, 18, 15, 2, 236, 243, 49, 38, 78, 7, 159, 14, 69, 128, 181, 34, 131, 229, 45, 208, 208, 99, 211, 34, 56, 179, 41, 182, 164, 141, 145, 102, 69, 113, 204, 218, 83, 63, 104, 104, 248, 223, 119, 68, 221, 224, 135, 147, 42, 188, 218, 28, 51, 116, 1, 88, 175, 32, 58, 35, 71, 159, 220, 123, 157, 191, 11, 136, 214, 124, 132, 162, 61, 23, 62, 6, 64, 126, 53, 93, 241, 93, 112, 152, 128, 182, 87, 15, 207, 9, 23, 125, 28, 77, 82, 210, 182, 225, 236, 178, 96, 33, 127, 25, 219, 208, 236, 62, 175, 150, 193, 195, 222, 67, 174, 140, 163, 133, 124, 37, 128, 254, 155, 137, 166, 197, 195, 151, 156, 152, 252, 155, 181, 73, 221, 68, 38, 194, 240, 60, 86, 239, 130, 191, 252, 148, 163, 71, 138, 190, 17, 121, 77, 51, 132, 131, 106, 246, 210, 239, 12, 129, 0, 212, 60, 188, 214, 166, 254, 185, 154, 222, 204, 118, 252, 124, 111, 45, 14, 36, 108, 219, 96, 229, 101, 60, 121, 12, 10, 32, 90, 12, 13, 143, 216, 136, 60, 10, 206, 0, 169, 35, 16, 30, 174, 153, 184, 49, 159, 240, 83, 226, 71, 26, 172, 202, 26, 148, 5, 160, 245, 201, 249, 165, 112, 75, 185, 19, 25, 220, 85, 176, 62, 253, 111, 63, 32, 63, 18, 215, 114, 151, 139, 43, 79, 130, 91, 50, 16, 186, 79, 136, 11, 209, 228, 39, 21, 181, 75, 23, 60, 192, 199, 117, 118, 9, 250, 12, 242, 89, 109, 28, 44, 102, 160, 26, 200, 77, 52, 169, 38, 126, 129, 180, 72, 183, 14, 41, 151, 155, 158, 173, 214, 230, 86, 224, 3, 68, 11, 31, 164, 185, 87, 87, 177, 155, 137, 7, 17, 46, 58, 234, 48, 123, 158, 54, 205, 177, 74, 53, 120, 3, 43, 131, 223, 119, 95, 132, 137, 26, 159, 60, 108, 82, 216, 38, 226, 152, 163, 7, 247, 81, 170, 87, 37, 59, 137, 93, 170, 170, 130, 118, 72, 28, 171, 160, 42, 28, 210, 191, 211, 131, 21, 105, 150, 242, 98, 228, 217, 212, 53, 41, 20, 239, 198, 185, 88, 191, 246, 109, 148, 239, 191, 62, 190, 8, 162, 114, 208, 52, 72, 7, 208, 159, 143, 206, 160, 87, 80, 63, 109, 230, 7, 162, 175, 135, 140, 20, 96, 158, 22, 179, 44, 141, 221, 112, 245, 67, 138, 148, 190, 115, 75, 247, 92, 62, 164, 81, 192, 250, 191, 45, 93, 96, 226, 217, 26, 5, 99, 104, 64, 123, 190, 96, 172, 255, 112, 139, 109, 104, 71, 16, 127, 146, 62, 138, 161, 94, 220, 208, 248, 122, 185, 73, 1, 202, 49, 10, 6, 105, 25, 0, 175, 158, 55, 72, 49, 215, 18, 60, 27, 94, 84, 204, 176, 96, 253, 105, 151, 81, 133, 19, 13, 227, 106, 237, 93, 178, 60, 208, 166, 221, 26, 123, 223, 37, 187, 37, 53, 108, 62, 236, 49, 242, 176, 146, 235, 167, 235, 47, 249, 33, 0, 231, 62, 0, 180, 19, 34, 233, 38, 193, 115, 132, 106, 105, 101, 12, 77, 163, 231, 133, 240, 62, 108, 91, 83, 150, 55, 247, 193, 204, 29, 21, 212, 152, 217, 107, 171, 13, 30, 190, 145, 15, 154, 204, 52, 182, 117, 106, 71, 145, 136, 74, 82, 111, 145, 40, 179, 80, 98, 13, 2, 181, 211, 231, 142, 143, 190, 188, 24, 39, 209, 83, 33, 157, 173, 160, 57, 50, 31, 114, 93, 36, 53, 76, 27, 60, 154, 206, 170, 125, 23, 51, 4, 145, 168, 157, 206, 46, 183, 165, 70, 165, 135, 222, 75, 147, 105, 52, 43, 90, 7, 133, 155, 162, 69, 187, 24, 216, 77, 64, 188, 34, 252, 2, 177, 187, 241, 107, 144, 206, 79, 129, 214, 57, 2, 3, 127, 129, 82, 189, 198, 17, 149, 248, 197, 140, 59, 117, 12, 196, 138, 204, 188, 2, 211, 118, 173, 223, 50, 185, 82, 212, 50, 178, 102, 240, 161, 42, 168, 198, 192, 190, 1, 171, 217, 228, 129, 113, 130, 169, 140, 250, 111, 72, 173, 221, 69, 132, 149, 108, 235, 55, 250, 1, 239, 234, 49, 229, 16, 211, 156, 167, 67, 4, 17, 244, 237, 106, 27, 234, 87, 205, 139, 207, 197, 11, 149, 153, 150, 199, 125, 202, 37, 1, 231, 92, 233, 202, 71, 231, 189, 183, 133, 145, 93, 185, 40, 64, 169, 196, 161, 64, 29, 44, 156, 125, 47, 69, 155, 254, 111, 169, 146, 12, 219, 141, 215, 209, 28, 46, 81, 175, 200, 151, 2, 226, 158, 136, 219, 33, 92, 187, 145, 67, 21, 254, 135, 223, 149, 208, 148, 61, 179, 141, 198, 194, 107, 31, 190, 158, 101, 106, 215, 150, 251, 208, 85, 253, 132, 117, 183, 220, 67, 237, 184, 114, 97, 52, 214, 85, 187, 50, 150, 103, 124, 243, 39, 42, 74, 153, 213, 79, 58, 96, 163, 90, 56, 86, 185, 3, 127, 65, 124, 8, 167, 18, 139, 221, 250, 124, 225, 235, 230, 94, 78, 140, 35, 15, 80, 60, 193, 95, 146, 9, 156, 153, 238, 248, 173, 10, 251, 152, 123, 39, 242, 188, 210, 245, 63, 137, 143, 90, 94, 148, 106, 33, 95, 47, 210, 77, 51, 196, 68, 192, 193, 181, 72, 134, 102, 112, 106, 35, 53, 176, 100, 128, 64, 55, 90, 46, 170, 11, 7, 185, 38, 110, 225, 121, 49, 29, 179, 77, 51, 55, 225, 230, 11, 17, 105, 139, 10, 79, 6, 147, 42, 166, 40, 50, 250, 115, 218, 246, 235, 202, 73, 220, 89, 92, 151, 195, 152, 21, 232, 56, 47, 81, 58, 53, 216, 150, 14, 51, 99, 131, 6, 11, 82, 224, 250, 251, 55, 13, 30, 113, 190, 125, 95, 90, 244, 158, 95, 204, 136, 31, 217, 6, 241, 235, 137, 96, 16, 83, 188, 180, 78, 111, 91, 170, 251, 192, 72, 91, 90, 161, 76, 193, 73, 143, 144, 99, 162, 114, 215, 215, 173, 124, 10, 148, 60, 194, 54, 48, 6, 151, 87, 83, 185, 22, 124, 129, 190, 233, 168, 40, 15, 106, 215, 219, 173, 33, 163, 118, 132, 161, 162, 231, 197, 139, 164, 87, 139, 233, 5, 18, 9, 149, 105, 215, 201, 200, 156, 237, 194, 14, 83, 73, 169, 186, 219, 170, 240, 105, 174, 144, 108, 207, 18, 124, 176, 178, 54, 165, 138, 17, 45, 177, 196, 47, 136, 26, 97, 138, 86, 232, 244, 89, 59, 220, 168, 42, 172, 245, 165, 220, 49, 237, 14, 112, 80, 5, 191, 149, 253, 235, 50, 141, 241, 2, 13, 140, 0, 247, 33, 221, 33, 103, 0, 14, 13, 11, 65, 176, 31, 194, 179, 108, 234, 128, 249, 9, 110, 41, 127, 5, 96, 194, 238, 167, 145, 145, 9, 190, 209, 86, 248, 28, 192, 107, 47, 200, 109, 244, 228, 23, 222, 87, 5, 250, 32, 189, 158, 27, 66, 169, 58, 173, 123, 15, 61, 10, 86, 182, 56, 181, 37, 61, 248, 66, 73, 244, 136, 162, 152, 162, 67, 209, 171, 229, 28, 236, 77, 88, 2, 218, 12, 221, 118, 243, 51, 129, 35, 2, 85, 217, 16, 158, 154, 111, 192, 213, 137, 224, 224, 237, 178, 124, 8, 60, 147, 88, 186, 116, 132, 233, 179, 251, 43, 70, 235, 146, 89, 180, 35, 37, 215, 147, 3, 160, 59, 121, 31, 105, 57, 68, 86, 38, 95, 223, 198, 46, 183, 118, 22, 200, 24, 132, 162, 131, 160, 246, 38, 162, 111, 200, 42, 48, 131, 38, 177, 53, 204, 24, 207, 135, 249, 221, 27, 1, 213, 4, 175, 148, 1, 54, 146, 3, 74, 215, 154, 57, 19, 215, 50, 210, 164, 25, 141, 254, 177, 83, 162, 100, 165, 113, 209, 140, 32, 77, 57, 21, 112, 54, 234, 135, 153, 244, 179, 201, 126, 132, 28, 217, 40, 55, 148, 216, 99, 248, 69, 85, 97, 105, 186, 73, 65, 198, 64, 157, 27, 206, 137, 138, 102, 24, 225, 180, 232, 223, 89, 163, 58, 78, 242, 92, 117, 224, 198, 132, 171, 206, 93, 144, 160, 214, 91, 188, 69, 149, 128, 224, 53, 7, 149, 233, 26, 117, 22, 210, 26, 131, 217, 141, 76, 82, 75, 225, 240, 39, 98, 215, 215, 48, 29, 172, 8, 245, 72, 217, 203, 166, 21, 194, 140, 211, 26, 57, 184, 37, 116, 108, 126, 140, 84, 88, 21, 190, 188, 138, 67, 175, 159, 133, 31, 102, 107, 19, 44, 158, 247, 102, 128, 125, 209, 198, 144, 136, 112, 179, 168, 79, 125, 18, 43, 83, 57, 190, 7, 34, 149, 238, 129, 237, 208, 147, 1, 103, 108, 219, 148, 176, 223, 2, 158, 237, 194, 119, 96, 194, 97, 107, 198, 209, 173, 63, 221, 197, 142, 114, 149, 163, 86, 160, 94, 1, 60, 52, 75, 244, 46, 85, 241, 186, 216, 204, 44, 157, 176, 62, 167, 105, 68, 182, 157, 215, 122, 180, 82, 83, 223, 157, 250, 74, 219, 16, 221, 213, 20, 112, 76, 106, 242, 15, 60, 38, 248, 61, 51, 1, 165, 45, 96, 209, 191, 211, 20, 42, 169, 137, 29, 73, 146, 157, 241, 35, 61, 250, 170, 114, 75, 23, 71, 24, 15, 234, 161, 52, 215, 244, 170, 164, 179, 116, 223, 61, 243, 148, 253, 190, 226, 114, 219, 26, 35, 24, 169, 213, 178, 174, 170, 79, 156, 120, 36, 14, 177, 163, 155, 195, 229, 202, 178, 7, 70, 211, 90, 199, 101, 78, 122, 238, 4, 85, 228, 253, 54, 194, 175, 98, 120, 130, 210, 36, 111, 181, 230, 205, 176, 133, 110, 15, 129, 141, 174, 19, 143, 29, 159, 52, 213, 57, 67, 36, 200, 122, 107, 122, 92, 178, 212, 234, 140, 97, 131, 231, 96, 33, 143, 143, 212, 131, 145, 156, 97, 72, 27, 140, 97, 102, 12, 69, 208, 123, 125, 62, 196, 40, 37, 12, 74, 174, 17, 30, 121, 90, 150, 47, 17, 175, 59, 231, 122, 159, 36, 199, 187, 218, 37, 187, 175, 188, 67, 168, 11, 132, 119, 230, 220, 87, 55, 16, 4, 142, 157, 112, 73, 159, 252, 139, 109, 198, 121, 194, 221, 195, 169, 151, 240, 237, 180, 234, 175, 233, 250, 45, 95, 63, 156, 59, 113, 162, 24, 13, 59, 185, 29, 216, 86, 129, 150, 137, 246, 198, 217, 243, 11, 23, 104, 167, 82, 215, 164, 183, 175, 155, 55, 180, 33, 108, 239, 88, 40, 89, 198, 224, 121, 178, 101, 25, 161, 137, 47, 84, 2, 241, 28, 167, 159, 203, 73, 156, 109, 67, 210, 8, 160, 24, 41, 6, 47, 207, 123, 97, 182, 165, 134, 215, 172, 209, 153, 253, 78, 144, 229, 156, 185, 245, 63, 15, 197, 90, 95, 25, 93, 132, 203, 104, 62, 57, 153, 166, 138, 201, 248, 213, 249, 220, 215, 110, 24, 164, 49, 0, 52, 148, 106, 81, 68, 35, 22, 2, 36, 14, 81, 181, 53, 50, 100, 202, 165, 205, 48, 78, 47, 254, 173, 76, 122, 41, 246, 49, 36, 210, 32, 90, 222, 221, 164, 238, 25, 121, 137, 190, 147, 139, 246, 202, 190, 199, 173, 196, 217, 247, 126, 59, 129, 196, 253, 57, 251, 180, 15, 30, 46, 234, 221, 190, 223, 199, 156, 237, 48, 108, 81, 92, 36, 96, 157, 73, 7, 76, 225, 198, 226, 208, 49, 172, 113, 211, 193, 158, 192, 95, 128, 197, 254, 16, 218, 188, 70, 26, 221, 199, 215, 238, 148, 221, 7, 175, 159, 14, 215, 26, 32, 36, 225, 184, 225, 233, 185, 2, 209, 21, 96, 2, 172, 174, 147, 96, 242, 191, 56, 211, 74, 14, 225, 134, 135, 211, 133, 221, 173, 164, 176, 28, 203, 136, 160 }, + PasswordSalt = new byte[] { 199, 201, 103, 52, 8, 215, 39, 26, 108, 120, 239, 41, 25, 1, 96, 59, 149, 221, 90, 39, 140, 28, 96, 92, 105, 240, 241, 212, 159, 116, 14, 6, 1, 247, 142, 125, 242, 86, 97, 148, 31, 147, 224, 244, 137, 179, 1, 183, 201, 76, 224, 88, 35, 52, 225, 136, 251, 99, 48, 107, 200, 160, 43, 88, 126, 253, 46, 197, 250, 157, 100, 102, 121, 145, 203, 122, 109, 250, 5, 231, 22, 123, 139, 185, 98, 91, 111, 145, 134, 154, 198, 138, 212, 159, 60, 72, 220, 252, 133, 151, 67, 97, 26, 159, 5, 90, 211, 45, 217, 36, 148, 28, 46, 149, 28, 143, 82, 125, 143, 231, 34, 25, 181, 3, 17, 226, 191, 133, 142, 180, 84, 176, 102, 147, 168, 136, 255, 33, 235, 150, 254, 147, 102, 195, 220, 121, 29, 162, 97, 59, 6, 41, 37, 243, 32, 90, 228, 238, 193, 17, 212, 118, 93, 191, 230, 238, 106, 176, 194, 183, 112, 86, 244, 127, 255, 124, 28, 35, 42, 40, 0, 121, 167, 236, 206, 37, 9, 45, 176, 4, 217, 230, 223, 163, 248, 252, 117, 66, 227, 49, 253, 92, 89, 124, 174, 232, 34, 167, 168, 82, 143, 78, 234, 75, 116, 165, 187, 184, 5, 53, 102, 89, 143, 14, 177, 80, 168, 17, 155, 118, 179, 45, 219, 117, 94, 166, 50, 163, 49, 60, 247, 55, 209, 42, 249, 68, 52, 21, 182, 242, 139, 174, 99, 128, 85, 51, 71, 45, 2, 189, 193, 0, 173, 79, 72, 148, 244, 250, 69, 143, 85, 87, 79, 36, 66, 24, 125, 112, 8, 173, 102, 55, 60, 21, 32, 228, 200, 86, 216, 250, 1, 124, 5, 59, 119, 173, 177, 2, 0, 5, 198, 179, 110, 63, 83, 227, 23, 88, 179, 25, 157, 117, 229, 63, 148, 174, 188, 214, 157, 230, 66, 250, 224, 157, 128, 76, 43, 145, 241, 74, 8, 129, 23, 81, 194, 143, 196, 247, 236, 137, 90, 116, 91, 251, 137, 139, 253, 43, 185, 122, 139, 11, 104, 108, 61, 120, 200, 238, 135, 240, 118, 3, 126, 152, 208, 126, 151, 117, 162, 37, 67, 7, 8, 118, 50, 166, 98, 215, 73, 99, 183, 208, 149, 105, 136, 231, 176, 137, 193, 201, 140, 198, 34, 180, 5, 48, 169, 192, 100, 51, 8, 151, 253, 3, 171, 167, 122, 36, 160, 238, 120, 117, 165, 52, 118, 173, 163, 244, 190, 168, 71, 31, 246, 51, 112, 149, 253, 197, 38, 253, 191, 96, 254, 31, 51, 100, 10, 131, 180, 2, 208, 249, 78, 66, 169, 226, 71, 130, 90, 247, 110, 127, 213, 130, 173, 27, 45, 60, 145, 244, 89, 230, 157, 174, 113, 40, 222, 43, 154, 253, 242, 216, 85, 53, 158, 170, 238, 195, 176, 150, 129, 60, 31, 80, 162, 249, 209, 125, 176, 84, 171, 75, 11, 64, 76, 100, 151, 110, 56, 225, 84, 78, 240, 232, 172, 246, 201, 3, 135, 215, 207, 24, 140, 154, 200, 92, 134, 202, 168, 18, 247, 18, 173, 181, 41, 134, 230, 73, 76, 60, 45, 47, 41, 17, 149, 152, 189, 16, 25, 246, 94, 25, 158, 242, 23, 163, 248, 78, 217, 42, 245, 166, 4, 199, 43, 75, 219, 215, 161, 64, 234, 156, 178, 127, 80, 103, 167, 56, 24, 186, 134, 152, 118, 117, 185, 17, 206, 87, 129, 139, 24, 4, 255, 171, 73, 148, 99, 34, 43, 54, 137, 66, 144, 8, 182, 192, 129, 129, 37, 134, 58, 30, 86, 42, 150, 4, 44, 164, 50, 13, 237, 88, 39, 79, 188, 241, 249, 96, 162, 99, 132, 115, 111, 175, 164, 0, 63, 6, 157, 139, 56, 87, 89, 152, 70, 196, 112, 192, 125, 22, 10, 123, 188, 236, 15, 125, 95, 4, 51, 159, 79, 110, 51, 202, 57, 14, 142, 29, 141, 45, 134, 20, 73, 87, 227, 186, 176, 159, 117, 99, 194, 174, 109, 3, 11, 8, 246, 194, 110, 33, 76, 30, 254, 79, 248, 167, 63, 16, 14, 246, 146, 42, 185, 119, 181, 198, 67, 9, 220, 68, 216, 45, 201, 212, 223, 78, 108, 139, 138, 233, 183, 131, 92, 97, 154, 230, 172, 122, 110, 93, 54, 176, 242, 96, 130, 148, 14, 15, 114, 141, 7, 150, 6, 47, 43, 156, 69, 23, 165, 7, 57, 65, 131, 69, 206, 146, 3, 141, 52, 155, 230, 61, 194, 124, 149, 208, 176, 29, 232, 79, 80, 189, 42, 81, 242, 221, 192, 109, 47, 60, 7, 218, 91, 197, 191, 30, 230, 229, 69, 51, 196, 161, 158, 130, 12, 53, 101, 82, 207, 60, 169, 135, 36, 11, 126, 63, 97, 32, 156, 102, 54, 38, 95, 6, 206, 23, 114, 211, 33, 87, 42, 129, 212, 230, 82, 2, 163, 77, 7, 31, 110, 75, 11, 16, 139, 194, 18, 251, 239, 21, 78, 102, 222, 52, 109, 164, 31, 184, 120, 157, 211, 126, 226, 76, 190, 73, 113, 152, 31, 104, 0, 13, 208, 250, 90, 235, 82, 171, 226, 134, 200, 176, 45, 215, 79, 48, 167, 74, 237, 94, 90, 210, 215, 232, 183, 88, 33, 152, 184, 117, 105, 181, 184, 72, 91, 80, 165, 80, 105, 117, 183, 132, 86, 181, 78, 169, 4, 61, 58, 17, 6, 103, 87, 40, 39, 80, 242, 114, 187, 42, 106, 74, 54, 71, 111, 135, 85, 119, 228, 54, 212, 148, 225, 101, 246, 6, 159, 134, 166, 248, 149, 157, 40, 172, 50, 69, 188, 78, 204, 182, 211, 119, 134, 36, 246, 249, 74, 99, 180, 216, 100, 23, 198, 12, 114, 82, 121, 9, 233, 247, 243, 24, 136, 175, 204, 167, 46, 3, 36, 157, 100, 252, 93, 179, 105, 240, 226, 35, 171, 29, 217, 145, 81, 161, 203, 92, 111, 211, 94, 13, 138, 80, 73, 195, 154, 67, 135, 138, 23, 231, 88, 209, 20, 74, 69, 68, 115, 66, 215, 21, 171, 46, 204, 178, 132, 86, 120, 87, 81, 118, 233, 111, 59, 177, 134, 204, 202, 73, 67, 25, 27, 59, 9, 124, 159, 135, 251, 100, 214, 236, 217, 191, 49, 204, 36, 134, 140, 140, 162, 195, 45, 67, 188, 48, 106, 218, 12, 78, 214, 254, 166, 187, 3, 151, 98, 239, 166, 108, 127, 154, 131, 2, 185, 158, 67, 153, 61, 64, 205, 175, 80, 64, 76, 171, 72, 9, 153, 98, 119, 0, 137, 212, 48, 156, 63, 125, 165, 118, 65, 150, 164, 244, 116, 245, 112, 145, 112, 65, 156, 115, 136, 248, 86, 78, 148, 77, 61, 40, 49, 216, 230, 66, 211, 249, 227, 32, 4, 68, 224, 70, 102, 10, 203, 212, 107, 147, 221, 129, 93, 68, 48, 85, 135, 121, 56, 209, 255, 227, 85, 37, 169, 157, 111, 200, 18, 74, 180, 180, 6, 222, 47, 248, 126, 129, 212, 161, 227, 8, 70, 49, 69, 86, 70, 251, 30, 195, 197, 116, 138, 85, 251, 12, 62, 252, 14, 151, 110, 74, 109, 150, 34, 57, 75, 159, 145, 19, 82, 52, 20, 208, 100, 191, 142, 228, 192, 16, 137, 203, 49, 15, 107, 73, 220, 138, 110, 126, 195, 140, 13, 142, 52, 86, 181, 108, 94, 205, 108, 238, 19, 177, 20, 249, 74, 217, 200, 56, 164, 95, 85, 82, 206, 143, 237, 35, 223, 190, 139, 105, 154, 214, 71, 141, 140, 178, 212, 229, 155, 60, 30, 142, 251, 17, 6, 24, 243, 246, 235, 67, 168, 201, 89, 8, 122, 66, 5, 191, 98, 196, 47, 241, 191, 1, 32, 32, 109, 84, 210, 121, 146, 232, 228, 149, 56, 225, 105, 218, 237, 108, 10, 10, 16, 82, 62, 85, 194, 146, 94, 80, 211, 55, 95, 112, 169, 108, 187, 167, 245, 190, 176, 240, 21, 241, 252, 224, 240, 139, 221, 64, 122, 217, 109, 196, 126, 102, 140, 55, 129, 129, 85, 126, 250, 114, 215, 196, 44, 79, 115, 89, 17, 249, 47, 38, 250, 140, 178, 33, 158, 147, 161, 105, 138, 188, 113, 43, 143, 203, 111, 178, 190, 135, 242, 87, 223, 85, 62, 51, 237, 218, 211, 23, 202, 175, 177, 234, 135, 192, 8, 161, 44, 77, 159, 102, 202, 220, 252, 173, 155, 245, 211, 134, 251, 153, 99, 235, 234, 170, 70, 233, 25, 143, 211, 15, 164, 255, 186, 4, 226, 26, 236, 145, 14, 47, 40, 237, 227, 246, 238, 136, 223, 9, 160, 115, 241, 111, 139, 103, 164, 110, 98, 12, 47, 234, 104, 39, 25, 159, 215, 202, 22, 134, 130, 99, 217, 219, 37, 182, 30, 251, 213, 147, 227, 223, 204, 178, 214, 119, 130, 129, 74, 107, 42, 150, 249, 211, 0, 3, 160, 24, 207, 46, 231, 243, 11, 92, 163, 145, 63, 31, 142, 47, 108, 83, 24, 63, 43, 31, 239, 22, 19, 92, 5, 92, 118, 20, 76, 64, 21, 88, 139, 14, 11, 2, 211, 51, 111, 85, 17, 139, 210, 238, 31, 17, 103, 22, 246, 22, 117, 21, 194, 83, 31, 10, 146, 72, 120, 43, 38, 129, 156, 86, 42, 255, 218, 137, 202, 6, 68, 196, 68, 105, 242, 40, 243, 44, 248, 117, 147, 122, 134, 231, 94, 235, 99, 240, 241, 137, 92, 222, 98, 42, 169, 134, 158, 231, 136, 182, 126, 106, 169, 175, 141, 143, 102, 46, 39, 155, 60, 30, 24, 103, 140, 67, 139, 45, 72, 95, 52, 100, 254, 142, 137, 20, 141, 82, 219, 77, 144, 147, 221, 83, 202, 43, 159, 147, 78, 213, 89, 41, 92, 155, 253, 39, 252, 76, 2, 139, 176, 66, 5, 143, 212, 14, 89, 179, 232, 102, 209, 146, 145, 174, 131, 157, 53, 144, 235, 152, 89, 104, 160, 25, 76, 15, 166, 36, 78, 146, 69, 218, 226, 227, 221, 239, 241, 69, 250, 139, 18, 56, 150, 186, 36, 127, 7, 209, 67, 204, 153, 176, 71, 27, 228, 184, 94, 116, 225, 254, 129, 6, 36, 92, 186, 152, 53, 128, 100, 95, 194, 14, 224, 203, 96, 19, 231, 196, 236, 127, 152, 237, 107, 9, 130, 15, 43, 111, 242, 66, 173, 185, 218, 42, 13, 88, 50, 135, 228, 105, 248, 181, 190, 77, 215, 12, 7, 224, 88, 61, 199, 206, 77, 95, 3, 214, 135, 15, 194, 53, 225, 174, 154, 170, 246, 145, 69, 35, 88, 61, 189, 38, 28, 47, 60, 72, 85, 60, 110, 211, 242, 116, 203, 79, 130, 11, 141, 212, 41, 75, 217, 158, 203, 109, 3, 171, 244, 118, 232, 54, 90, 223, 175, 161, 53, 70, 119, 7, 43, 41, 199, 91, 230, 133, 94, 110, 187, 118, 97, 199, 5, 112, 195, 129, 102, 210, 144, 28, 234, 201, 215, 33, 18, 68, 25, 243, 159, 12, 53, 27, 160, 109, 92, 125, 52, 106, 0, 74, 227, 205, 11, 221, 185, 23, 63, 19, 30, 203, 243, 65, 29, 72, 247, 76, 7, 136, 207, 140, 214, 2, 53, 8, 216, 224, 126, 234, 242, 207, 255, 162, 203, 42, 37, 102, 235, 240, 169, 232, 55, 198, 227, 160, 233, 46, 64, 181, 119, 211, 126, 150, 72, 87, 107, 6, 100, 192, 165, 240, 77, 196, 226, 134, 7, 138, 214, 28, 230, 141, 239, 161, 185, 137, 131, 216, 215, 155, 21, 240, 13, 20, 148, 251, 53, 17, 72, 162, 74, 139, 73, 159, 107, 52, 114, 85, 166, 240, 90, 3, 144, 97, 143, 158, 68, 33, 119, 150, 103, 202, 215, 144, 57, 132, 26, 154, 137, 43, 194, 45, 47, 253, 208, 219, 183, 23, 134, 129, 44, 76, 76, 231, 64, 128, 86, 134, 248, 240, 145, 105, 7, 169, 23, 236, 102, 234, 142, 70, 125, 43, 253, 233, 236, 149, 88, 136, 246, 241, 65, 40, 65, 210, 1, 29, 80, 146, 187, 42, 137, 64, 121, 109, 118, 148, 246, 46, 231, 196, 103, 151, 13, 5, 145, 28, 92, 3, 137, 195, 165, 251, 120, 47, 161, 92, 66, 151, 254, 197, 211, 238, 226, 86, 206, 209, 20, 49, 153, 139, 103, 220, 169, 26, 69, 129 }, + Privileges = 511, + Username = "Administrator" + }, + new + { + Id = 4ul, + PasswordHash = new byte[] { 36, 167, 235, 85, 137, 38, 168, 238, 219, 43, 150, 103, 238, 180, 236, 32, 175, 117, 105, 97, 66, 113, 11, 37, 106, 217, 225, 189, 190, 231, 195, 27, 34, 122, 228, 17, 24, 182, 61, 104, 146, 84, 180, 193, 56, 103, 36, 64, 167, 39, 178, 187, 164, 86, 190, 87, 142, 81, 99, 162, 68, 88, 87, 189, 192, 120, 82, 9, 163, 53, 180, 153, 246, 226, 122, 136, 231, 175, 2, 79, 33, 203, 46, 200, 192, 176, 129, 165, 180, 16, 250, 176, 166, 209, 212, 142, 142, 134, 26, 113, 219, 210, 246, 13, 186, 215, 121, 204, 253, 205, 214, 78, 108, 101, 145, 158, 78, 41, 18, 116, 50, 207, 255, 224, 195, 60, 246, 193, 208, 37, 88, 200, 136, 157, 253, 236, 89, 41, 59, 104, 78, 194, 122, 189, 201, 42, 220, 142, 139, 226, 202, 73, 154, 226, 175, 37, 40, 40, 182, 219, 6, 51, 201, 56, 205, 164, 86, 105, 17, 123, 35, 12, 247, 5, 252, 63, 68, 174, 227, 65, 54, 217, 245, 160, 61, 32, 184, 194, 158, 1, 82, 115, 71, 166, 234, 50, 148, 111, 205, 99, 73, 48, 74, 81, 45, 231, 10, 41, 230, 160, 136, 79, 176, 47, 211, 190, 88, 80, 18, 41, 145, 166, 21, 142, 166, 26, 151, 251, 186, 108, 206, 79, 48, 39, 152, 234, 162, 41, 46, 170, 64, 199, 94, 30, 75, 162, 46, 107, 110, 163, 165, 70, 6, 94, 128, 91, 46, 141, 11, 43, 40, 52, 140, 203, 2, 189, 198, 143, 3, 144, 54, 164, 47, 53, 204, 189, 122, 28, 216, 114, 228, 200, 8, 250, 245, 154, 95, 70, 225, 73, 121, 215, 52, 119, 194, 234, 52, 3, 125, 22, 100, 98, 127, 5, 254, 19, 50, 169, 159, 115, 1, 176, 35, 26, 233, 240, 154, 110, 53, 20, 230, 237, 150, 148, 244, 50, 81, 66, 170, 66, 226, 196, 146, 183, 10, 60, 157, 21, 105, 7, 103, 221, 13, 151, 214, 35, 240, 132, 68, 163, 113, 187, 149, 138, 221, 174, 102, 170, 72, 134, 63, 73, 113, 240, 73, 230, 122, 45, 151, 233, 210, 6, 70, 248, 46, 1, 144, 221, 94, 208, 27, 13, 22, 97, 168, 212, 163, 17, 158, 176, 133, 240, 3, 236, 226, 203, 161, 109, 80, 134, 118, 143, 115, 99, 56, 63, 202, 84, 96, 237, 118, 213, 205, 182, 179, 203, 1, 144, 157, 249, 147, 226, 80, 65, 216, 206, 242, 59, 58, 166, 188, 104, 128, 12, 149, 178, 3, 112, 204, 227, 72, 232, 50, 177, 126, 182, 131, 172, 237, 29, 16, 184, 33, 47, 164, 81, 2, 104, 61, 50, 198, 208, 248, 168, 71, 228, 99, 96, 219, 233, 160, 231, 245, 244, 180, 184, 145, 12, 17, 51, 145, 216, 225, 27, 219, 155, 52, 50, 126, 235, 77, 21, 234, 120, 189, 108, 246, 246, 7, 190, 248, 4, 224, 53, 191, 82, 126, 133, 95, 129, 226, 55, 115, 154, 42, 5, 107, 29, 49, 13, 28, 205, 188, 24, 15, 156, 115, 122, 52, 83, 175, 235, 197, 156, 131, 209, 197, 52, 15, 42, 112, 14, 20, 90, 255, 46, 172, 194, 73, 203, 118, 108, 54, 82, 89, 0, 232, 129, 231, 8, 68, 203, 237, 227, 69, 253, 241, 162, 255, 158, 186, 185, 193, 158, 249, 52, 114, 48, 36, 240, 104, 206, 115, 188, 132, 216, 153, 176, 186, 17, 245, 134, 222, 141, 138, 76, 245, 113, 173, 151, 171, 81, 145, 70, 113, 15, 247, 195, 149, 249, 111, 142, 214, 109, 0, 227, 221, 209, 90, 169, 20, 26, 205, 192, 129, 32, 250, 28, 16, 105, 238, 29, 94, 7, 52, 151, 199, 251, 67, 186, 230, 232, 218, 104, 163, 164, 119, 102, 78, 236, 82, 210, 112, 96, 239, 196, 167, 163, 123, 234, 5, 24, 140, 239, 101, 137, 239, 249, 185, 188, 126, 133, 121, 141, 226, 80, 84, 234, 197, 197, 28, 21, 52, 88, 67, 216, 227, 96, 108, 191, 112, 224, 243, 66, 37, 191, 92, 243, 109, 148, 245, 189, 222, 85, 218, 29, 168, 64, 235, 138, 167, 45, 222, 82, 80, 158, 201, 52, 61, 148, 92, 191, 18, 86, 173, 7, 211, 232, 129, 249, 43, 140, 26, 60, 165, 75, 51, 72, 6, 76, 227, 201, 94, 98, 147, 125, 173, 225, 183, 146, 28, 69, 14, 183, 244, 11, 202, 158, 53, 171, 201, 94, 197, 191, 1, 83, 129, 65, 233, 49, 214, 58, 189, 17, 87, 85, 207, 163, 107, 186, 142, 225, 43, 205, 44, 117, 21, 31, 19, 238, 193, 135, 135, 159, 209, 153, 154, 44, 120, 83, 14, 122, 141, 247, 124, 52, 196, 174, 83, 195, 202, 239, 9, 104, 39, 127, 80, 250, 218, 124, 182, 122, 160, 237, 145, 14, 81, 133, 251, 121, 239, 222, 176, 95, 168, 120, 85, 37, 149, 41, 142, 208, 2, 37, 192, 98, 176, 128, 77, 246, 120, 90, 255, 104, 37, 163, 220, 195, 185, 171, 147, 143, 209, 182, 213, 12, 217, 56, 103, 166, 192, 59, 69, 199, 208, 100, 86, 245, 71, 187, 236, 143, 79, 148, 243, 160, 203, 146, 234, 147, 211, 81, 182, 230, 206, 122, 134, 47, 10, 142, 4, 194, 42, 93, 136, 254, 41, 212, 238, 222, 253, 53, 42, 188, 96, 225, 30, 50, 196, 9, 152, 69, 31, 33, 33, 133, 169, 88, 39, 163, 79, 189, 60, 250, 102, 162, 182, 75, 110, 106, 87, 60, 166, 208, 247, 65, 118, 221, 76, 85, 139, 94, 172, 223, 26, 109, 139, 49, 107, 146, 94, 134, 233, 142, 166, 151, 2, 49, 241, 164, 230, 133, 53, 18, 3, 246, 2, 175, 233, 102, 87, 65, 194, 183, 241, 41, 177, 238, 196, 196, 3, 148, 147, 85, 184, 153, 247, 54, 48, 24, 11, 33, 162, 84, 161, 207, 47, 221, 48, 64, 176, 115, 140, 179, 161, 254, 189, 163, 96, 60, 191, 12, 108, 45, 140, 122, 105, 224, 1, 222, 10, 140, 106, 15, 200, 134, 57, 238, 211, 31, 225, 152, 232, 247, 36, 204, 80, 234, 128, 8, 52, 61, 48, 197, 23, 52, 224, 42, 70, 24, 121, 254, 93, 38, 129, 183, 107, 207, 155, 217, 47, 185, 110, 219, 156, 98, 175, 161, 209, 138, 221, 245, 194, 12, 71, 200, 221, 41, 230, 95, 65, 10, 29, 198, 26, 129, 37, 226, 233, 172, 30, 51, 244, 227, 197, 247, 174, 132, 31, 164, 202, 228, 59, 91, 44, 210, 209, 73, 41, 52, 52, 178, 113, 120, 10, 222, 95, 88, 197, 208, 231, 214, 224, 231, 144, 90, 201, 117, 72, 131, 89, 130, 50, 113, 157, 152, 61, 34, 170, 88, 13, 186, 228, 151, 247, 87, 120, 138, 168, 211, 92, 238, 205, 245, 211, 128, 113, 93, 21, 32, 97, 232, 13, 136, 7, 67, 20, 136, 15, 226, 155, 209, 143, 238, 222, 228, 167, 157, 85, 248, 102, 131, 25, 69, 19, 149, 57, 12, 44, 145, 22, 33, 149, 158, 78, 218, 97, 84, 29, 210, 132, 123, 18, 47, 187, 54, 28, 11, 46, 167, 117, 44, 11, 37, 167, 84, 103, 83, 147, 142, 221, 165, 67, 7, 60, 174, 160, 119, 78, 6, 151, 237, 14, 212, 119, 127, 66, 15, 229, 79, 121, 185, 32, 95, 198, 74, 193, 35, 21, 163, 206, 231, 132, 12, 150, 107, 208, 217, 206, 109, 223, 6, 107, 16, 205, 199, 188, 11, 198, 113, 210, 38, 169, 94, 235, 81, 126, 140, 226, 53, 223, 161, 160, 11, 240, 153, 81, 64, 181, 221, 113, 19, 134, 57, 153, 221, 240, 255, 234, 98, 192, 32, 255, 10, 40, 142, 117, 203, 38, 22, 36, 112, 240, 27, 253, 22, 117, 31, 213, 155, 198, 131, 82, 90, 161, 120, 157, 44, 103, 61, 126, 57, 90, 200, 84, 117, 113, 151, 54, 178, 151, 21, 196, 142, 129, 88, 198, 9, 104, 180, 76, 148, 122, 212, 223, 67, 123, 107, 55, 93, 46, 229, 51, 69, 109, 213, 49, 180, 106, 26, 248, 10, 61, 44, 241, 172, 43, 151, 89, 23, 80, 87, 33, 145, 162, 255, 255, 166, 68, 31, 111, 10, 74, 36, 0, 35, 46, 29, 169, 229, 17, 180, 252, 38, 173, 141, 80, 125, 32, 109, 187, 93, 200, 157, 159, 199, 111, 152, 145, 135, 5, 234, 202, 66, 252, 56, 151, 17, 93, 239, 229, 140, 153, 175, 130, 23, 13, 68, 115, 206, 131, 5, 35, 90, 238, 175, 237, 173, 58, 149, 254, 37, 133, 3, 176, 211, 227, 255, 71, 215, 228, 127, 31, 151, 200, 161, 231, 34, 102, 255, 240, 168, 62, 5, 57, 94, 94, 135, 209, 97, 153, 147, 165, 15, 161, 27, 88, 32, 42, 33, 235, 189, 122, 8, 124, 47, 4, 155, 137, 206, 212, 206, 194, 212, 181, 224, 56, 128, 202, 137, 248, 250, 110, 144, 188, 94, 43, 5, 188, 238, 80, 61, 185, 102, 104, 232, 202, 181, 253, 35, 18, 79, 25, 161, 145, 248, 128, 231, 231, 169, 32, 230, 102, 84, 89, 241, 247, 209, 214, 241, 127, 179, 149, 11, 173, 189, 163, 27, 27, 148, 22, 153, 70, 61, 66, 133, 198, 242, 25, 193, 253, 211, 40, 45, 167, 102, 189, 125, 244, 217, 21, 90, 28, 174, 102, 65, 106, 249, 59, 130, 234, 47, 76, 203, 192, 139, 147, 68, 23, 225, 144, 24, 178, 140, 248, 18, 225, 239, 38, 235, 211, 69, 255, 157, 33, 168, 236, 68, 224, 142, 147, 55, 221, 69, 41, 118, 241, 238, 99, 218, 193, 97, 183, 117, 67, 126, 234, 249, 137, 3, 11, 156, 203, 136, 195, 106, 163, 235, 158, 35, 54, 91, 170, 229, 142, 5, 27, 20, 12, 72, 206, 58, 136, 8, 138, 55, 88, 53, 192, 26, 82, 55, 35, 12, 89, 233, 103, 110, 40, 47, 79, 67, 212, 128, 74, 157, 227, 192, 88, 227, 236, 0, 16, 182, 182, 243, 113, 253, 138, 242, 156, 187, 1, 232, 238, 51, 148, 21, 238, 130, 23, 170, 182, 39, 99, 196, 253, 185, 198, 251, 57, 107, 0, 88, 35, 241, 143, 143, 39, 223, 165, 245, 229, 40, 191, 150, 133, 48, 154, 70, 129, 231, 240, 100, 26, 191, 255, 149, 116, 59, 23, 128, 207, 215, 106, 57, 226, 41, 77, 178, 202, 4, 29, 53, 194, 9, 63, 73, 81, 149, 140, 59, 154, 110, 57, 20, 12, 212, 93, 168, 79, 144, 135, 160, 163, 76, 227, 186, 43, 147, 146, 36, 235, 253, 237, 238, 117, 17, 74, 236, 46, 42, 236, 86, 226, 225, 176, 171, 190, 191, 47, 230, 203, 161, 136, 156, 158, 69, 250, 207, 201, 25, 178, 148, 220, 9, 102, 251, 128, 139, 107, 71, 158, 240, 15, 39, 22, 28, 142, 146, 35, 38, 170, 115, 219, 17, 249, 217, 89, 25, 116, 193, 104, 165, 63, 38, 116, 45, 255, 125, 168, 136, 144, 148, 82, 100, 202, 140, 114, 198, 252, 197, 78, 130, 144, 220, 29, 11, 8, 26, 206, 211, 44, 233, 133, 82, 64, 111, 14, 252, 116, 188, 167, 131, 212, 196, 79, 82, 138, 216, 246, 124, 158, 12, 30, 114, 242, 88, 20, 153, 44, 120, 157, 152, 171, 188, 171, 70, 38, 52, 187, 72, 137, 140, 76, 3, 45, 42, 181, 157, 64, 4, 243, 107, 173, 201, 200, 241, 115, 5, 58, 210, 59, 236, 194, 229, 120, 204, 148, 27, 206, 207, 33, 124, 191, 122, 36, 131, 185, 205, 154, 156, 131, 55, 229, 103, 50, 209, 39, 205, 184, 230, 164, 42, 234, 92, 198, 17, 77, 57, 215, 81, 219, 250, 113, 72, 205, 127, 3, 44, 161, 192, 189, 85, 126, 181, 201, 19, 217, 173, 254, 91, 172, 161, 14, 114, 9, 166, 8, 175, 5, 204, 153, 233, 11, 60, 249, 234, 100, 255, 60, 209, 102, 157, 225, 183, 87, 89, 240, 234, 70, 188, 113, 124, 166, 18, 175, 193 }, + PasswordSalt = new byte[] { 214, 220, 188, 220, 245, 95, 220, 187, 65, 151, 234, 175, 97, 72, 161, 218, 111, 76, 170, 131, 194, 30, 103, 74, 248, 78, 249, 171, 105, 214, 151, 9, 141, 184, 100, 113, 211, 117, 6, 218, 2, 117, 200, 235, 168, 65, 29, 51, 116, 60, 111, 51, 242, 203, 109, 174, 255, 40, 159, 160, 179, 74, 58, 155, 252, 218, 74, 75, 221, 112, 177, 30, 223, 3, 51, 169, 28, 209, 91, 160, 11, 10, 242, 255, 202, 34, 52, 238, 150, 17, 82, 27, 154, 204, 198, 160, 116, 97, 242, 170, 30, 134, 249, 237, 158, 154, 155, 166, 227, 55, 79, 255, 132, 190, 158, 74, 190, 139, 244, 60, 162, 148, 45, 118, 165, 117, 219, 141, 104, 143, 151, 48, 242, 105, 124, 103, 41, 123, 210, 216, 197, 39, 247, 185, 31, 25, 47, 160, 190, 135, 202, 52, 94, 115, 12, 61, 77, 139, 70, 26, 254, 139, 86, 21, 228, 151, 250, 252, 80, 196, 57, 228, 70, 82, 34, 167, 1, 111, 150, 4, 184, 87, 71, 26, 106, 93, 63, 81, 56, 50, 29, 19, 40, 146, 105, 3, 235, 214, 86, 73, 213, 64, 180, 103, 220, 253, 26, 2, 109, 226, 69, 42, 198, 109, 176, 2, 103, 30, 98, 189, 78, 121, 149, 31, 244, 170, 190, 154, 232, 30, 193, 2, 0, 122, 253, 27, 22, 239, 83, 132, 2, 80, 150, 98, 49, 29, 201, 234, 166, 175, 137, 39, 215, 101, 58, 231, 163, 15, 192, 93, 150, 13, 13, 43, 243, 239, 51, 62, 5, 165, 178, 36, 230, 190, 106, 17, 151, 52, 89, 61, 233, 227, 134, 41, 193, 110, 27, 165, 172, 33, 95, 9, 137, 100, 210, 129, 231, 116, 239, 233, 89, 142, 128, 205, 20, 169, 164, 184, 165, 57, 224, 106, 42, 79, 175, 62, 110, 95, 44, 7, 28, 225, 216, 2, 131, 188, 193, 85, 206, 180, 41, 89, 155, 234, 74, 29, 148, 60, 91, 52, 255, 103, 51, 156, 220, 198, 88, 138, 108, 104, 27, 30, 73, 34, 24, 254, 170, 87, 229, 244, 164, 209, 159, 3, 47, 187, 6, 234, 197, 145, 25, 93, 149, 173, 210, 170, 48, 53, 212, 174, 199, 49, 59, 169, 157, 59, 165, 135, 63, 216, 151, 238, 236, 143, 226, 146, 234, 161, 24, 97, 30, 100, 47, 173, 120, 253, 56, 4, 24, 124, 92, 214, 199, 169, 210, 112, 197, 157, 190, 138, 238, 146, 106, 235, 7, 205, 251, 15, 221, 228, 91, 65, 22, 144, 15, 231, 200, 213, 35, 143, 224, 137, 64, 171, 234, 10, 225, 199, 155, 178, 67, 247, 4, 24, 72, 20, 211, 107, 7, 233, 123, 197, 179, 254, 237, 176, 11, 170, 202, 177, 42, 68, 183, 24, 50, 203, 191, 69, 234, 86, 48, 82, 229, 75, 36, 182, 22, 55, 183, 175, 32, 186, 199, 14, 154, 26, 175, 123, 108, 217, 41, 94, 25, 3, 157, 247, 166, 37, 41, 236, 96, 164, 31, 43, 96, 30, 147, 186, 21, 40, 18, 99, 220, 36, 158, 22, 220, 157, 171, 92, 55, 164, 88, 131, 43, 164, 27, 49, 22, 105, 214, 215, 251, 135, 244, 56, 95, 161, 117, 53, 51, 56, 163, 147, 223, 123, 202, 8, 199, 219, 220, 170, 49, 165, 194, 188, 222, 110, 207, 215, 167, 119, 246, 38, 136, 41, 181, 33, 140, 167, 209, 220, 211, 3, 54, 20, 63, 45, 229, 13, 97, 10, 152, 4, 53, 172, 109, 100, 216, 137, 218, 81, 232, 152, 25, 158, 35, 103, 18, 148, 82, 100, 22, 175, 233, 131, 191, 233, 146, 216, 248, 40, 166, 198, 179, 72, 222, 104, 0, 141, 142, 11, 123, 104, 47, 144, 90, 123, 207, 221, 136, 202, 226, 130, 154, 79, 95, 98, 169, 33, 59, 255, 30, 171, 226, 44, 225, 210, 32, 101, 226, 193, 153, 93, 61, 142, 244, 73, 248, 218, 71, 253, 221, 105, 133, 134, 182, 73, 7, 208, 74, 114, 14, 209, 164, 61, 77, 217, 207, 151, 185, 110, 86, 71, 192, 252, 184, 36, 168, 29, 138, 177, 177, 74, 224, 39, 37, 171, 148, 175, 109, 123, 172, 227, 182, 178, 130, 231, 227, 237, 247, 145, 205, 199, 36, 176, 217, 167, 163, 117, 73, 54, 218, 85, 123, 41, 32, 7, 22, 156, 10, 171, 254, 160, 209, 0, 237, 116, 126, 12, 218, 113, 78, 244, 247, 121, 164, 255, 71, 201, 132, 93, 46, 93, 177, 135, 250, 43, 232, 147, 182, 136, 182, 28, 53, 158, 192, 75, 223, 231, 53, 138, 109, 43, 204, 196, 194, 142, 55, 23, 138, 174, 200, 236, 203, 215, 122, 243, 118, 213, 97, 155, 53, 188, 199, 220, 129, 84, 41, 108, 39, 29, 71, 206, 87, 243, 231, 18, 100, 94, 242, 83, 132, 236, 204, 228, 2, 72, 249, 233, 139, 21, 166, 77, 224, 128, 67, 10, 25, 186, 176, 5, 22, 203, 150, 144, 40, 14, 36, 140, 142, 121, 173, 79, 217, 34, 185, 166, 247, 246, 183, 213, 28, 184, 228, 67, 131, 245, 225, 254, 29, 84, 209, 175, 139, 44, 168, 134, 30, 9, 153, 94, 18, 93, 32, 249, 178, 232, 144, 79, 163, 27, 183, 190, 157, 166, 248, 111, 133, 27, 153, 5, 115, 67, 140, 148, 39, 34, 32, 57, 39, 156, 144, 89, 188, 206, 165, 213, 197, 191, 165, 252, 18, 220, 1, 144, 221, 59, 192, 44, 231, 229, 6, 132, 92, 120, 77, 81, 248, 244, 37, 229, 233, 112, 62, 232, 180, 108, 61, 243, 52, 110, 71, 248, 113, 245, 230, 39, 40, 104, 199, 130, 103, 71, 231, 183, 247, 207, 90, 193, 52, 62, 201, 142, 187, 170, 161, 137, 174, 21, 39, 0, 168, 136, 241, 47, 29, 136, 211, 1, 34, 158, 42, 248, 0, 74, 110, 31, 22, 87, 221, 23, 103, 211, 238, 21, 125, 202, 217, 193, 14, 87, 75, 23, 255, 193, 196, 215, 36, 9, 112, 103, 123, 66, 207, 234, 78, 176, 64, 63, 128, 52, 24, 244, 238, 122, 124, 244, 48, 101, 139, 64, 107, 15, 19, 160, 67, 150, 245, 65, 133, 6, 33, 77, 48, 97, 133, 74, 232, 210, 163, 35, 189, 108, 165, 231, 244, 86, 237, 79, 103, 12, 54, 158, 137, 65, 147, 169, 148, 186, 181, 126, 18, 183, 163, 184, 114, 181, 70, 108, 226, 76, 203, 252, 205, 45, 63, 70, 79, 83, 61, 224, 54, 133, 204, 213, 62, 168, 114, 18, 201, 144, 113, 110, 148, 48, 178, 137, 195, 247, 47, 50, 120, 101, 171, 138, 100, 235, 166, 27, 184, 39, 171, 226, 126, 225, 147, 237, 30, 249, 199, 192, 16, 250, 9, 53, 43, 214, 12, 182, 48, 176, 217, 102, 123, 114, 23, 29, 82, 62, 190, 221, 109, 200, 112, 180, 197, 199, 225, 115, 117, 154, 129, 44, 55, 184, 109, 4, 165, 239, 173, 101, 27, 62, 220, 106, 180, 205, 0, 66, 6, 179, 192, 113, 68, 126, 226, 76, 174, 178, 103, 42, 51, 211, 211, 78, 97, 184, 38, 75, 131, 205, 19, 85, 62, 5, 231, 104, 53, 139, 254, 103, 155, 249, 59, 42, 44, 137, 71, 123, 205, 0, 192, 205, 189, 236, 1, 255, 68, 191, 97, 159, 46, 17, 73, 13, 103, 124, 31, 217, 177, 177, 145, 48, 49, 118, 137, 199, 116, 219, 35, 174, 102, 196, 144, 109, 74, 240, 231, 131, 165, 243, 154, 155, 105, 82, 20, 238, 4, 163, 171, 105, 98, 37, 83, 39, 230, 140, 226, 10, 245, 69, 25, 87, 17, 69, 93, 88, 72, 154, 162, 82, 249, 152, 44, 139, 101, 15, 59, 143, 104, 231, 219, 243, 194, 111, 217, 176, 245, 152, 198, 28, 36, 57, 232, 217, 165, 201, 42, 129, 248, 6, 115, 94, 20, 1, 59, 28, 183, 221, 62, 191, 200, 122, 197, 143, 40, 220, 55, 60, 207, 186, 115, 149, 188, 76, 7, 112, 121, 197, 7, 182, 226, 95, 178, 185, 254, 161, 39, 4, 57, 165, 133, 69, 215, 140, 197, 41, 127, 183, 31, 148, 23, 249, 128, 254, 254, 254, 41, 143, 94, 51, 39, 195, 209, 30, 24, 37, 62, 180, 174, 171, 129, 0, 26, 72, 148, 142, 135, 174, 173, 124, 246, 47, 36, 74, 253, 105, 183, 140, 159, 88, 8, 114, 38, 144, 116, 18, 51, 105, 92, 23, 32, 36, 188, 186, 249, 61, 210, 229, 85, 51, 118, 203, 227, 34, 6, 120, 207, 209, 17, 35, 145, 87, 207, 77, 62, 84, 138, 229, 132, 76, 183, 192, 26, 56, 143, 12, 227, 4, 73, 201, 93, 230, 75, 57, 198, 183, 95, 154, 40, 192, 241, 22, 254, 87, 211, 191, 128, 99, 103, 239, 47, 113, 8, 65, 63, 70, 224, 55, 203, 102, 182, 36, 170, 111, 193, 119, 204, 177, 52, 244, 46, 167, 149, 67, 151, 179, 167, 216, 240, 7, 180, 179, 52, 224, 209, 172, 11, 246, 34, 150, 52, 21, 99, 78, 134, 140, 101, 60, 188, 39, 176, 230, 128, 78, 96, 108, 98, 30, 131, 155, 112, 100, 150, 18, 210, 42, 75, 131, 36, 71, 10, 104, 37, 142, 153, 125, 115, 73, 175, 216, 133, 36, 164, 53, 206, 171, 197, 32, 132, 225, 142, 177, 246, 168, 166, 16, 171, 112, 241, 88, 214, 255, 194, 208, 159, 232, 67, 141, 228, 123, 110, 45, 181, 236, 239, 140, 9, 168, 45, 120, 74, 34, 122, 248, 193, 39, 246, 175, 186, 9, 142, 43, 29, 180, 77, 185, 241, 212, 189, 219, 121, 192, 200, 31, 85, 115, 250, 59, 233, 138, 121, 105, 133, 49, 10, 60, 106, 6, 109, 197, 189, 184, 207, 211, 216, 188, 81, 19, 31, 124, 184, 238, 107, 178, 138, 232, 96, 162, 77, 140, 166, 146, 83, 127, 229, 222, 98, 57, 28, 163, 113, 95, 169, 48, 242, 186, 190, 98, 24, 170, 210, 31, 89, 255, 61, 247, 126, 19, 206, 181, 251, 152, 199, 92, 95, 186, 89, 249, 219, 194, 162, 3, 254, 83, 188, 226, 228, 23, 108, 23, 251, 115, 107, 22, 141, 166, 61, 157, 95, 109, 239, 172, 33, 209, 226, 17, 117, 105, 118, 10, 27, 183, 98, 120, 229, 197, 194, 138, 149, 140, 70, 28, 230, 225, 45, 203, 117, 177, 118, 207, 131, 89, 145, 204, 0, 186, 221, 224, 57, 97, 203, 52, 142, 9, 203, 134, 64, 176, 237, 164, 106, 174, 219, 148, 91, 152, 42, 192, 149, 25, 65, 159, 149, 144, 62, 150, 169, 187, 88, 193, 143, 240, 175, 7, 245, 65, 91, 157, 235, 232, 129, 37, 149, 22, 149, 9, 4, 250, 103, 131, 220, 200, 146, 29, 227, 8, 71, 145, 141, 94, 148, 53, 142, 59, 166, 165, 247, 13, 46, 155, 73, 235, 34, 0, 253, 7, 156, 64, 179, 193, 185, 224, 69, 66, 243, 66, 171, 19, 31, 11, 193, 248, 234, 250, 179, 19, 141, 43, 126, 235, 234, 8, 43, 2, 208, 4, 152, 100, 211, 194, 21, 134, 88, 158, 147, 118, 73, 157, 49, 182, 140, 208, 11, 125, 111, 54, 117, 238, 172, 43, 250, 174, 134, 88, 217, 61, 148, 7, 53, 121, 178, 159, 9, 167, 10, 165, 58, 240, 39, 183, 211, 104, 248, 205, 93, 138, 174, 158, 47, 120, 60, 78, 96, 22, 133, 208, 73, 234, 195, 192, 68, 243, 20, 35, 108, 211, 92, 50, 116, 94, 44, 21, 207, 129, 58, 236, 130, 76, 1, 72, 35, 178, 124, 203, 204, 150, 87, 116, 86, 32, 192, 21, 153, 94, 47, 78, 78, 82, 169, 34, 224, 58, 147, 21, 232, 49, 80, 242, 180, 144, 239, 44, 119, 235, 39, 116, 154, 224, 26, 55, 199, 21, 73, 53, 131, 133, 249, 251, 254, 152, 234, 101, 235, 16, 50, 175, 81, 2, 180, 163, 19, 10, 222, 197, 137, 108, 22, 221, 245, 50, 177, 85, 51, 240, 164, 14, 228, 114, 38, 49, 86, 237, 129, 47, 9, 123 }, + Privileges = 8, + Username = "John Doe" + }); + }); + + modelBuilder.Entity("StarSimLib.Models.BodyToSystemJoin", b => + { + b.HasOne("StarSimLib.Models.Body", "Body") + .WithMany("BodyToSystemJoins") + .HasForeignKey("BodyId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("StarSimLib.Models.System", "System") + .WithMany("BodyToSystemJoins") + .HasForeignKey("SystemId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("StarSimLib.Models.System", b => + { + b.HasOne("StarSimLib.Models.User", "Creator") + .WithMany("CreatedSystems") + .HasForeignKey("CreatorId") + .OnDelete(DeleteBehavior.Cascade); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/StarSim/StarSimGui/Migrations/20190801135345_InitialCreate.cs b/StarSim/StarSimGui/Migrations/20190801135345_InitialCreate.cs @@ -0,0 +1,196 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace StarSimGui.Migrations +{ + public partial class InitialCreate : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Bodies", + columns: table => new + { + Id = table.Column<ulong>(nullable: false) + .Annotation("Sqlite:Autoincrement", true), + Mass = table.Column<double>(nullable: false), + Name = table.Column<string>(maxLength: 100, nullable: false, defaultValue: "UNNAMED"), + Timestamp = table.Column<byte[]>(rowVersion: true, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Bodies", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Users", + columns: table => new + { + Id = table.Column<ulong>(nullable: false) + .Annotation("Sqlite:Autoincrement", true), + Email = table.Column<string>(maxLength: 100, nullable: true, defaultValue: "john.doe@gmail.com"), + PasswordHash = table.Column<byte[]>(nullable: false), + PasswordSalt = table.Column<byte[]>(nullable: false), + Privileges = table.Column<int>(nullable: false), + Timestamp = table.Column<byte[]>(rowVersion: true, nullable: true), + Username = table.Column<string>(maxLength: 100, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Users", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Systems", + columns: table => new + { + Id = table.Column<ulong>(nullable: false) + .Annotation("Sqlite:Autoincrement", true), + CreatorId = table.Column<ulong>(nullable: false), + Name = table.Column<string>(maxLength: 100, nullable: false), + Timestamp = table.Column<byte[]>(rowVersion: true, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Systems", x => x.Id); + table.ForeignKey( + name: "FK_Systems_Users_CreatorId", + column: x => x.CreatorId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "BodyToSystemJoins", + columns: table => new + { + Id = table.Column<ulong>(nullable: false) + .Annotation("Sqlite:Autoincrement", true), + BodyId = table.Column<ulong>(nullable: false), + SystemId = table.Column<ulong>(nullable: false), + Timestamp = table.Column<byte[]>(rowVersion: true, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_BodyToSystemJoins", x => x.Id); + table.ForeignKey( + name: "FK_BodyToSystemJoins_Bodies_BodyId", + column: x => x.BodyId, + principalTable: "Bodies", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_BodyToSystemJoins_Systems_SystemId", + column: x => x.SystemId, + principalTable: "Systems", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.InsertData( + table: "Bodies", + columns: new[] { "Id", "Mass", "Name" }, + values: new object[] { 1ul, 1.9889200738424369E+36, "Sagittarius A*" }); + + migrationBuilder.InsertData( + table: "Bodies", + columns: new[] { "Id", "Mass", "Name" }, + values: new object[] { 2ul, 1.9889200738424369E+30, "Sol" }); + + migrationBuilder.InsertData( + table: "Bodies", + columns: new[] { "Id", "Mass", "Name" }, + values: new object[] { 3ul, 1.9889200738424369E+30, "Earth" }); + + migrationBuilder.InsertData( + table: "Users", + columns: new[] { "Id", "PasswordHash", "PasswordSalt", "Privileges", "Username" }, + values: new object[] { 1ul, new byte[] { 109, 130, 25, 214, 39, 53, 131, 81, 48, 220, 120, 195, 63, 217, 205, 210, 13, 222, 80, 79, 152, 102, 78, 59, 249, 128, 195, 65, 122, 251, 241, 113, 174, 57, 222, 102, 66, 115, 206, 180, 211, 111, 49, 158, 94, 56, 8, 191, 15, 121, 249, 65, 244, 145, 72, 45, 255, 22, 110, 35, 105, 127, 73, 55, 23, 41, 249, 210, 171, 83, 253, 122, 230, 122, 189, 50, 28, 148, 171, 236, 169, 150, 63, 252, 22, 154, 150, 64, 54, 152, 169, 151, 36, 36, 63, 207, 96, 1, 4, 6, 249, 204, 17, 129, 224, 169, 140, 24, 162, 96, 120, 221, 48, 198, 59, 125, 234, 17, 12, 39, 242, 220, 57, 4, 96, 218, 139, 37, 81, 121, 239, 7, 55, 99, 32, 241, 216, 130, 57, 44, 64, 175, 107, 214, 131, 41, 140, 204, 51, 20, 136, 150, 136, 232, 127, 17, 223, 103, 122, 84, 160, 224, 170, 185, 148, 107, 5, 61, 247, 153, 166, 46, 249, 232, 32, 246, 136, 41, 19, 205, 62, 215, 132, 251, 60, 208, 199, 201, 187, 125, 129, 60, 195, 243, 101, 95, 236, 102, 93, 71, 29, 95, 68, 6, 28, 95, 53, 153, 232, 97, 72, 96, 16, 83, 51, 169, 110, 99, 105, 211, 23, 232, 217, 130, 121, 39, 208, 40, 162, 46, 117, 232, 234, 231, 70, 59, 106, 151, 183, 245, 236, 124, 91, 203, 245, 83, 178, 165, 222, 27, 221, 65, 109, 97, 163, 10, 203, 202, 28, 89, 97, 122, 163, 94, 167, 47, 26, 112, 218, 151, 41, 183, 66, 80, 7, 43, 211, 130, 37, 72, 140, 29, 20, 92, 89, 208, 97, 232, 150, 89, 202, 44, 222, 252, 135, 136, 140, 178, 182, 139, 174, 123, 103, 56, 86, 119, 253, 150, 168, 200, 107, 24, 223, 61, 52, 75, 161, 18, 66, 162, 156, 68, 201, 11, 137, 36, 247, 223, 116, 147, 34, 129, 127, 249, 229, 7, 178, 49, 86, 46, 57, 32, 154, 78, 160, 195, 84, 116, 45, 209, 162, 207, 148, 212, 43, 193, 164, 248, 36, 9, 234, 226, 76, 223, 146, 249, 42, 137, 15, 15, 207, 40, 87, 20, 74, 170, 237, 212, 86, 19, 187, 207, 84, 52, 126, 10, 35, 151, 207, 14, 39, 134, 236, 239, 248, 54, 15, 238, 120, 21, 55, 83, 136, 199, 202, 184, 18, 231, 11, 30, 208, 133, 206, 116, 195, 189, 91, 239, 46, 145, 216, 192, 70, 40, 158, 69, 144, 183, 188, 51, 212, 215, 123, 79, 33, 110, 128, 62, 104, 222, 52, 239, 14, 54, 224, 83, 79, 49, 105, 194, 170, 219, 7, 20, 130, 37, 165, 220, 239, 203, 100, 166, 116, 80, 27, 103, 39, 7, 74, 40, 150, 107, 130, 145, 42, 206, 36, 244, 169, 180, 98, 70, 136, 198, 113, 58, 81, 125, 61, 38, 2, 161, 31, 240, 110, 141, 206, 240, 211, 95, 92, 94, 130, 59, 51, 243, 86, 207, 72, 188, 29, 129, 145, 202, 44, 78, 92, 27, 144, 41, 250, 181, 143, 167, 193, 207, 206, 72, 54, 200, 28, 180, 176, 251, 48, 204, 193, 238, 10, 224, 25, 103, 190, 11, 74, 61, 12, 242, 227, 29, 29, 224, 97, 1, 44, 31, 54, 239, 70, 195, 197, 172, 107, 78, 205, 104, 220, 56, 163, 198, 129, 121, 230, 151, 243, 131, 134, 15, 131, 105, 163, 91, 222, 230, 161, 78, 106, 163, 84, 11, 95, 105, 83, 28, 245, 59, 29, 213, 72, 221, 60, 140, 38, 11, 145, 31, 241, 57, 70, 41, 172, 53, 167, 77, 10, 16, 193, 120, 58, 171, 39, 169, 39, 154, 53, 174, 169, 228, 228, 228, 26, 194, 143, 105, 126, 127, 105, 140, 58, 99, 98, 40, 136, 231, 66, 53, 54, 212, 17, 113, 103, 196, 60, 38, 173, 49, 18, 240, 50, 21, 255, 158, 55, 120, 186, 63, 52, 102, 115, 246, 21, 5, 182, 42, 101, 122, 60, 231, 184, 124, 178, 77, 76, 180, 195, 139, 234, 96, 255, 204, 92, 215, 247, 121, 11, 141, 72, 230, 46, 51, 162, 1, 235, 182, 197, 172, 103, 209, 216, 158, 12, 40, 94, 38, 32, 25, 134, 154, 96, 141, 173, 81, 82, 242, 118, 121, 53, 115, 101, 121, 184, 243, 12, 6, 159, 186, 211, 207, 2, 70, 18, 226, 26, 196, 15, 37, 15, 83, 216, 226, 166, 115, 221, 69, 229, 124, 162, 42, 52, 31, 108, 123, 109, 29, 68, 32, 242, 109, 6, 224, 240, 133, 8, 59, 182, 189, 158, 139, 110, 115, 36, 37, 197, 252, 145, 187, 150, 46, 5, 27, 110, 59, 231, 223, 107, 100, 215, 42, 5, 43, 26, 221, 205, 35, 190, 125, 60, 197, 213, 211, 76, 72, 123, 43, 99, 231, 119, 100, 67, 101, 33, 217, 138, 170, 199, 198, 116, 196, 236, 153, 140, 88, 13, 191, 12, 54, 38, 0, 10, 202, 63, 2, 37, 214, 113, 87, 216, 80, 121, 239, 199, 50, 97, 235, 25, 152, 242, 105, 150, 154, 80, 37, 191, 155, 5, 120, 123, 109, 127, 145, 131, 11, 29, 231, 225, 117, 190, 228, 147, 170, 177, 110, 108, 212, 192, 201, 248, 154, 237, 109, 91, 69, 170, 239, 135, 217, 23, 208, 47, 106, 109, 154, 63, 80, 85, 151, 78, 89, 115, 220, 21, 6, 178, 32, 95, 180, 4, 187, 101, 199, 16, 120, 121, 82, 147, 168, 83, 197, 155, 207, 95, 14, 230, 79, 119, 244, 137, 69, 218, 189, 39, 181, 40, 202, 135, 163, 210, 236, 19, 60, 215, 159, 249, 59, 79, 85, 101, 229, 26, 180, 63, 48, 11, 95, 8, 121, 207, 64, 254, 150, 73, 220, 89, 149, 107, 126, 245, 167, 240, 83, 124, 19, 154, 72, 251, 252, 165, 33, 255, 8, 50, 200, 220, 231, 194, 116, 111, 201, 244, 129, 129, 127, 44, 62, 101, 3, 201, 114, 185, 170, 59, 126, 138, 208, 145, 79, 44, 45, 18, 28, 198, 196, 78, 42, 183, 211, 200, 146, 211, 114, 142, 55, 115, 154, 127, 33, 115, 90, 97, 185, 55, 69, 0, 162, 62, 138, 194, 106, 95, 14, 85, 215, 127, 132, 116, 250, 215, 160, 240, 202, 148, 89, 176, 225, 18, 170, 110, 234, 192, 80, 111, 122, 221, 94, 248, 180, 40, 251, 75, 162, 171, 179, 73, 8, 7, 210, 167, 81, 91, 211, 126, 175, 34, 184, 164, 174, 199, 149, 109, 244, 185, 185, 6, 191, 103, 90, 84, 31, 242, 255, 127, 72, 232, 203, 249, 57, 160, 141, 5, 52, 142, 22, 209, 87, 21, 139, 148, 103, 175, 80, 104, 71, 51, 55, 100, 227, 35, 153, 191, 220, 10, 224, 60, 57, 202, 119, 110, 96, 202, 126, 62, 40, 41, 27, 196, 121, 1, 185, 230, 223, 114, 179, 214, 179, 65, 98, 179, 175, 88, 227, 231, 187, 179, 139, 243, 154, 204, 20, 201, 146, 89, 228, 89, 167, 117, 137, 62, 58, 253, 190, 65, 215, 0, 230, 36, 68, 50, 106, 46, 117, 35, 29, 12, 233, 198, 179, 6, 2, 237, 109, 216, 149, 166, 107, 123, 250, 115, 216, 233, 78, 13, 241, 109, 96, 31, 67, 128, 33, 114, 149, 229, 31, 155, 168, 94, 74, 26, 2, 223, 11, 153, 113, 130, 241, 105, 245, 154, 69, 55, 0, 1, 159, 235, 147, 165, 42, 167, 129, 61, 145, 162, 216, 106, 186, 247, 20, 132, 184, 66, 92, 14, 35, 82, 152, 223, 231, 230, 112, 138, 182, 231, 82, 59, 250, 158, 15, 55, 186, 52, 241, 99, 210, 93, 88, 244, 219, 64, 138, 171, 236, 69, 252, 184, 186, 163, 169, 191, 168, 182, 104, 117, 63, 68, 60, 174, 210, 255, 134, 202, 17, 19, 72, 219, 19, 227, 120, 218, 122, 148, 152, 60, 238, 189, 88, 182, 197, 102, 102, 253, 210, 174, 160, 100, 168, 230, 167, 95, 113, 249, 246, 159, 197, 229, 253, 164, 193, 226, 57, 23, 253, 63, 193, 225, 237, 124, 115, 126, 58, 30, 86, 72, 151, 97, 164, 108, 243, 152, 227, 158, 244, 120, 191, 137, 1, 56, 249, 212, 228, 13, 5, 227, 154, 124, 78, 65, 28, 155, 14, 250, 101, 82, 247, 147, 236, 200, 103, 233, 221, 0, 81, 232, 207, 72, 112, 57, 117, 7, 41, 47, 109, 192, 154, 32, 155, 122, 171, 37, 255, 109, 8, 218, 205, 210, 154, 123, 115, 240, 129, 144, 46, 158, 248, 168, 250, 111, 90, 41, 223, 201, 32, 36, 15, 237, 162, 10, 222, 156, 52, 55, 184, 142, 15, 161, 83, 194, 85, 1, 248, 228, 210, 111, 237, 167, 71, 115, 155, 175, 250, 182, 18, 56, 49, 226, 174, 162, 156, 15, 162, 21, 93, 89, 44, 147, 224, 135, 18, 215, 85, 215, 19, 92, 203, 142, 8, 7, 119, 183, 99, 17, 226, 234, 56, 102, 53, 69, 201, 24, 160, 148, 180, 12, 157, 142, 202, 67, 186, 165, 146, 188, 172, 117, 152, 123, 1, 175, 29, 99, 254, 233, 23, 72, 237, 74, 177, 99, 103, 93, 118, 232, 76, 237, 25, 44, 84, 16, 52, 102, 17, 113, 88, 112, 189, 13, 83, 152, 145, 44, 100, 249, 170, 21, 69, 134, 252, 168, 19, 58, 69, 67, 28, 223, 80, 174, 182, 223, 106, 214, 209, 82, 173, 227, 60, 236, 228, 245, 191, 215, 115, 201, 204, 60, 218, 162, 235, 77, 203, 202, 5, 154, 236, 200, 107, 164, 245, 238, 25, 71, 177, 155, 151, 65, 58, 165, 6, 24, 142, 35, 16, 194, 189, 248, 17, 153, 243, 55, 128, 188, 132, 102, 254, 125, 4, 46, 20, 206, 215, 152, 33, 142, 146, 229, 248, 242, 197, 157, 170, 249, 164, 45, 185, 20, 213, 44, 227, 238, 142, 182, 232, 183, 128, 189, 23, 138, 170, 37, 103, 5, 153, 16, 64, 123, 207, 17, 194, 62, 41, 199, 96, 102, 141, 133, 122, 19, 82, 104, 155, 122, 119, 39, 146, 45, 201, 154, 206, 169, 4, 2, 53, 53, 31, 43, 113, 0, 213, 177, 18, 48, 148, 241, 61, 247, 188, 96, 52, 23, 243, 112, 31, 24, 133, 201, 73, 245, 93, 248, 47, 41, 31, 102, 204, 43, 95, 26, 129, 54, 247, 140, 221, 30, 136, 248, 179, 44, 91, 118, 92, 183, 90, 216, 104, 1, 98, 168, 172, 94, 18, 55, 122, 255, 197, 174, 131, 152, 184, 160, 180, 108, 92, 122, 173, 122, 5, 71, 113, 114, 181, 214, 39, 34, 51, 29, 7, 234, 122, 228, 67, 53, 127, 137, 141, 16, 164, 174, 9, 16, 179, 172, 136, 9, 219, 40, 132, 10, 246, 163, 169, 79, 125, 210, 3, 2, 171, 94, 239, 100, 27, 135, 142, 38, 130, 236, 88, 67, 221, 246, 137, 33, 189, 7, 138, 140, 197, 116, 171, 21, 251, 64, 236, 120, 185, 148, 182, 203, 223, 157, 11, 77, 73, 232, 160, 202, 167, 13, 248, 239, 12, 192, 195, 46, 157, 145, 91, 148, 195, 123, 88, 120, 0, 157, 172, 195, 45, 89, 181, 159, 129, 74, 31, 147, 69, 195, 39, 118, 50, 192, 142, 231, 17, 135, 139, 16, 170, 14, 48, 68, 121, 240, 62, 195, 221, 93, 159, 70, 143, 212, 110, 168, 153, 146, 255, 57, 55, 30, 16, 168, 148, 252, 43, 169, 27, 43, 243, 100, 99, 30, 99, 70, 20, 68, 50, 236, 217, 194, 195, 144, 121, 23, 202, 254, 143, 21, 66, 241, 223, 158, 190, 138, 209, 143, 150, 63, 143, 237, 17, 42, 106, 175, 133, 199, 211, 41, 123, 144, 111, 91, 146, 37, 61, 161, 100, 116, 169, 51, 3, 2, 18, 154, 112, 97, 63, 43, 254, 249, 105, 193, 130, 18, 69, 198, 23, 198, 222, 9, 164, 41, 24, 236, 45, 100, 9, 17, 245, 237, 61, 139, 193, 66, 206, 37, 242, 179, 15, 225, 238, 75, 126, 61, 190, 214, 104, 123, 113, 33, 20, 222, 102, 59, 115, 231, 76, 152, 105, 55, 209, 172, 178, 173, 76 }, new byte[] { 176, 102, 80, 107, 173, 26, 240, 36, 98, 4, 222, 144, 88, 201, 220, 103, 160, 116, 0, 92, 236, 201, 183, 162, 26, 29, 209, 47, 81, 205, 52, 53, 33, 204, 36, 127, 110, 95, 180, 44, 127, 51, 169, 164, 212, 113, 207, 236, 101, 209, 127, 18, 134, 198, 247, 42, 172, 39, 10, 40, 23, 46, 77, 21, 189, 52, 75, 80, 77, 139, 72, 99, 80, 68, 239, 74, 167, 21, 209, 27, 211, 98, 31, 225, 79, 40, 159, 95, 196, 133, 138, 43, 247, 28, 240, 146, 211, 226, 74, 57, 214, 121, 48, 92, 15, 147, 243, 33, 28, 92, 197, 188, 48, 7, 181, 152, 242, 168, 163, 96, 0, 159, 206, 73, 49, 152, 27, 192, 196, 54, 157, 85, 64, 164, 128, 35, 23, 105, 108, 92, 29, 156, 53, 145, 84, 103, 79, 21, 96, 113, 188, 33, 113, 65, 154, 132, 121, 41, 137, 31, 235, 8, 230, 254, 248, 198, 42, 5, 80, 69, 127, 98, 188, 206, 21, 73, 33, 184, 57, 249, 180, 69, 40, 117, 146, 197, 223, 247, 202, 167, 207, 203, 163, 81, 121, 224, 45, 116, 158, 244, 194, 215, 199, 138, 253, 247, 82, 4, 67, 187, 230, 47, 98, 211, 106, 134, 56, 15, 242, 18, 200, 118, 184, 127, 243, 6, 172, 3, 245, 21, 205, 136, 158, 254, 78, 140, 147, 65, 140, 174, 97, 145, 219, 87, 51, 10, 97, 105, 167, 44, 146, 12, 229, 85, 162, 181, 191, 26, 120, 213, 226, 55, 30, 177, 82, 34, 80, 109, 181, 26, 130, 127, 43, 107, 193, 132, 125, 43, 206, 23, 32, 169, 155, 250, 212, 160, 133, 213, 214, 47, 114, 101, 226, 5, 16, 92, 63, 103, 149, 4, 189, 165, 216, 164, 7, 240, 5, 14, 191, 237, 112, 244, 106, 0, 181, 75, 54, 230, 109, 250, 216, 67, 251, 235, 160, 153, 59, 122, 208, 151, 94, 58, 68, 6, 65, 217, 5, 90, 178, 83, 228, 101, 141, 216, 69, 94, 93, 90, 211, 238, 190, 214, 246, 126, 229, 17, 214, 74, 212, 4, 179, 132, 187, 24, 64, 122, 46, 75, 0, 72, 35, 134, 93, 40, 184, 83, 238, 5, 111, 161, 203, 210, 174, 78, 32, 228, 87, 166, 110, 134, 179, 128, 200, 65, 244, 27, 184, 108, 44, 219, 123, 76, 75, 56, 220, 4, 202, 89, 84, 251, 224, 215, 35, 178, 54, 48, 195, 172, 212, 201, 208, 132, 136, 42, 125, 17, 215, 51, 82, 170, 185, 109, 167, 74, 45, 164, 236, 192, 192, 41, 11, 179, 117, 107, 80, 168, 129, 102, 0, 131, 39, 184, 191, 206, 120, 220, 254, 210, 228, 79, 13, 241, 122, 190, 20, 45, 109, 239, 231, 151, 230, 239, 83, 157, 111, 62, 112, 100, 243, 157, 40, 141, 41, 97, 119, 96, 205, 248, 164, 108, 160, 157, 12, 118, 213, 34, 243, 192, 90, 91, 139, 92, 214, 195, 30, 185, 198, 84, 238, 77, 219, 79, 238, 169, 11, 115, 166, 25, 47, 226, 255, 168, 254, 187, 230, 97, 41, 33, 99, 170, 21, 148, 95, 171, 99, 35, 187, 215, 168, 24, 239, 208, 67, 109, 188, 94, 122, 96, 169, 124, 213, 210, 134, 77, 231, 0, 35, 98, 155, 219, 210, 2, 157, 2, 206, 92, 166, 77, 56, 238, 222, 171, 14, 73, 239, 156, 169, 114, 241, 96, 163, 206, 97, 196, 22, 199, 221, 157, 230, 1, 236, 4, 30, 79, 5, 249, 108, 44, 181, 108, 222, 163, 113, 146, 171, 161, 166, 76, 90, 60, 46, 92, 48, 127, 245, 166, 231, 168, 75, 143, 147, 222, 24, 15, 253, 85, 242, 114, 53, 141, 228, 246, 112, 204, 165, 18, 82, 247, 220, 79, 226, 198, 201, 213, 162, 33, 96, 112, 167, 166, 45, 78, 222, 215, 138, 207, 237, 154, 89, 130, 25, 187, 46, 244, 50, 15, 89, 231, 235, 238, 237, 185, 245, 91, 165, 85, 101, 147, 43, 95, 143, 3, 117, 169, 21, 82, 232, 103, 128, 249, 222, 33, 232, 14, 130, 117, 53, 74, 222, 21, 5, 82, 74, 188, 43, 56, 208, 208, 23, 141, 97, 151, 214, 167, 126, 236, 218, 83, 113, 205, 180, 52, 125, 112, 203, 89, 3, 211, 182, 145, 210, 118, 167, 4, 224, 135, 163, 52, 219, 5, 222, 39, 221, 73, 40, 137, 124, 216, 105, 67, 255, 197, 19, 253, 129, 194, 108, 97, 82, 95, 216, 90, 112, 67, 80, 81, 121, 40, 65, 149, 86, 28, 98, 104, 36, 177, 102, 195, 110, 12, 226, 24, 72, 205, 59, 143, 107, 250, 253, 105, 138, 93, 163, 164, 119, 193, 91, 38, 199, 56, 191, 63, 193, 159, 200, 182, 80, 218, 134, 79, 226, 69, 75, 63, 88, 47, 178, 35, 161, 241, 39, 199, 168, 156, 118, 197, 240, 43, 121, 207, 193, 194, 156, 234, 78, 72, 4, 0, 47, 3, 5, 241, 65, 223, 179, 185, 224, 215, 71, 164, 133, 202, 219, 66, 99, 106, 242, 40, 131, 12, 160, 14, 91, 158, 51, 146, 111, 121, 157, 210, 96, 168, 60, 60, 26, 199, 213, 62, 58, 11, 200, 97, 157, 18, 128, 25, 236, 187, 41, 149, 236, 144, 174, 197, 230, 59, 231, 97, 85, 84, 13, 161, 144, 177, 218, 219, 136, 206, 28, 179, 42, 131, 111, 110, 190, 176, 21, 183, 57, 134, 131, 69, 74, 122, 168, 120, 214, 101, 214, 193, 37, 185, 192, 220, 38, 79, 24, 88, 132, 89, 72, 37, 183, 169, 100, 23, 114, 144, 32, 219, 220, 115, 170, 177, 118, 237, 230, 35, 236, 173, 251, 181, 249, 226, 59, 203, 172, 105, 228, 117, 103, 231, 78, 148, 15, 138, 134, 36, 207, 87, 194, 3, 9, 214, 38, 121, 15, 63, 13, 15, 153, 35, 254, 35, 174, 69, 11, 245, 132, 173, 174, 155, 217, 106, 178, 106, 48, 117, 74, 178, 112, 233, 104, 31, 145, 55, 93, 246, 136, 131, 174, 176, 138, 39, 168, 40, 33, 104, 34, 237, 28, 141, 207, 100, 142, 80, 81, 219, 27, 148, 218, 184, 144, 210, 89, 113, 59, 73, 247, 242, 6, 247, 237, 56, 132, 141, 148, 251, 103, 77, 51, 160, 177, 8, 190, 48, 254, 64, 60, 14, 241, 244, 240, 3, 11, 53, 101, 148, 32, 97, 160, 224, 58, 128, 158, 95, 234, 122, 74, 191, 151, 49, 89, 218, 32, 250, 231, 244, 97, 30, 166, 95, 67, 101, 171, 245, 55, 106, 76, 251, 172, 61, 200, 113, 210, 215, 160, 205, 237, 189, 82, 2, 136, 5, 6, 98, 51, 220, 53, 78, 254, 35, 159, 121, 3, 106, 19, 251, 212, 194, 114, 67, 124, 66, 235, 93, 166, 240, 19, 46, 168, 250, 37, 84, 236, 70, 162, 157, 204, 73, 0, 180, 53, 32, 119, 178, 200, 38, 63, 163, 237, 26, 31, 228, 179, 95, 170, 159, 54, 142, 209, 8, 250, 82, 182, 31, 240, 72, 80, 213, 109, 159, 31, 110, 132, 37, 155, 75, 67, 11, 49, 200, 172, 246, 71, 255, 19, 157, 65, 44, 26, 135, 18, 54, 95, 106, 133, 154, 244, 148, 228, 207, 166, 168, 48, 249, 209, 119, 37, 250, 60, 88, 182, 182, 151, 43, 248, 96, 78, 254, 252, 100, 57, 211, 21, 236, 116, 216, 41, 192, 68, 135, 2, 226, 29, 51, 236, 141, 232, 95, 186, 236, 112, 150, 135, 86, 101, 93, 122, 102, 212, 137, 104, 18, 213, 8, 155, 5, 127, 204, 110, 37, 3, 31, 23, 83, 183, 63, 202, 204, 206, 127, 88, 208, 69, 16, 214, 119, 203, 53, 159, 219, 15, 88, 183, 17, 22, 170, 199, 45, 27, 107, 68, 43, 108, 52, 161, 238, 44, 101, 92, 230, 168, 211, 191, 108, 91, 62, 118, 98, 214, 69, 238, 93, 255, 143, 133, 188, 224, 248, 96, 89, 230, 71, 195, 244, 87, 129, 151, 26, 171, 133, 111, 243, 122, 237, 114, 26, 15, 244, 130, 144, 216, 216, 149, 81, 22, 193, 28, 110, 210, 96, 172, 218, 57, 221, 139, 249, 159, 150, 253, 194, 58, 79, 121, 190, 41, 41, 14, 165, 128, 34, 12, 142, 84, 71, 21, 60, 205, 0, 88, 29, 115, 72, 15, 128, 192, 166, 64, 18, 16, 179, 215, 250, 136, 239, 183, 168, 39, 164, 248, 226, 95, 235, 79, 15, 20, 115, 183, 164, 38, 249, 175, 217, 5, 67, 112, 214, 41, 221, 102, 124, 54, 88, 231, 85, 61, 165, 234, 224, 97, 159, 77, 150, 39, 110, 195, 166, 111, 11, 179, 23, 44, 145, 197, 218, 246, 52, 180, 21, 186, 1, 192, 103, 25, 23, 123, 81, 107, 30, 187, 154, 207, 202, 10, 39, 89, 216, 26, 153, 184, 36, 103, 106, 238, 45, 112, 54, 69, 225, 200, 52, 47, 193, 129, 73, 171, 158, 0, 231, 252, 67, 234, 133, 112, 133, 217, 166, 180, 43, 253, 8, 228, 193, 226, 230, 212, 214, 164, 201, 212, 72, 239, 198, 5, 75, 142, 114, 48, 77, 132, 117, 87, 60, 135, 98, 180, 178, 159, 228, 59, 54, 63, 76, 47, 221, 226, 108, 178, 161, 37, 191, 90, 206, 71, 160, 13, 108, 36, 32, 31, 239, 248, 65, 250, 19, 255, 107, 79, 108, 44, 5, 211, 53, 167, 220, 60, 214, 16, 207, 107, 3, 6, 251, 125, 57, 215, 238, 138, 198, 27, 155, 170, 116, 147, 172, 124, 227, 124, 74, 170, 9, 232, 148, 42, 201, 25, 65, 30, 35, 178, 211, 97, 115, 19, 219, 21, 69, 201, 253, 97, 248, 136, 202, 80, 252, 168, 96, 89, 149, 200, 139, 166, 186, 93, 255, 181, 11, 131, 130, 82, 13, 8, 175, 68, 29, 71, 4, 113, 75, 34, 207, 90, 32, 250, 50, 79, 135, 173, 117, 198, 0, 251, 185, 215, 183, 32, 229, 149, 0, 128, 97, 49, 52, 163, 76, 153, 152, 245, 121, 83, 156, 79, 141, 99, 129, 134, 231, 24, 40, 129, 115, 225, 128, 71, 249, 194, 146, 102, 20, 31, 236, 129, 195, 74, 249, 203, 105, 188, 135, 110, 193, 194, 183, 10, 141, 214, 139, 21, 40, 34, 172, 20, 27, 70, 17, 201, 76, 197, 173, 96, 20, 15, 246, 251, 61, 218, 179, 217, 116, 57, 108, 60, 15, 157, 1, 149, 176, 105, 80, 129, 50, 134, 241, 26, 153, 0, 88, 133, 17, 101, 107, 50, 98, 240, 4, 91, 80, 176, 170, 55, 56, 90, 23, 155, 83, 126, 222, 8, 42, 253, 128, 135, 19, 43, 106, 200, 252, 12, 139, 174, 54, 208, 48, 116, 58, 85, 234, 2, 6, 48, 66, 29, 212, 12, 89, 25, 72, 223, 45, 212, 238, 216, 169, 156, 195, 147, 197, 141, 38, 180, 68, 226, 36, 129, 176, 134, 51, 115, 237, 204, 8, 234, 214, 170, 192, 132, 72, 113, 219, 97, 138, 149, 208, 64, 130, 97, 243, 215, 14, 146, 156, 155, 180, 176, 178, 244, 225, 43, 118, 181, 120, 98, 238, 2, 52, 241, 117, 87, 122, 113, 106, 210, 10, 250, 243, 160, 188, 20, 141, 110, 38, 21, 3, 207, 226, 87, 49, 207, 170, 105, 204, 150, 99, 9, 70, 58, 230, 54, 63, 70, 96, 241, 92, 213, 115, 91, 17, 198, 77, 137, 183, 207, 100, 128, 130, 4, 153, 228, 128, 168, 0, 127, 170, 117, 84, 35, 222, 240, 191, 190, 179, 167, 45, 17, 0, 124, 166, 91, 112, 131, 203, 159, 131, 139, 206, 7, 165, 161, 72, 89, 54, 59, 29, 170, 96, 23, 167, 55, 219, 236, 169, 155, 121, 87, 234, 200, 187, 196, 99, 99, 170, 245, 34, 0, 204, 150, 68, 142, 209, 142, 130, 198, 89, 224, 17, 132, 186, 156, 68, 180, 94, 213, 96, 110, 235, 166, 97, 48, 127, 48, 100, 76, 202, 179, 126, 210, 107, 242, 246, 70, 106, 151, 1, 9, 206, 37, 3, 209, 33, 125, 84, 133, 122, 113, 0, 93, 31, 237, 213, 151, 70, 170, 204, 69, 48, 96, 208 }, 8, "User" }); + + migrationBuilder.InsertData( + table: "Users", + columns: new[] { "Id", "PasswordHash", "PasswordSalt", "Privileges", "Username" }, + values: new object[] { 2ul, new byte[] { 228, 156, 247, 87, 85, 44, 125, 62, 169, 91, 105, 98, 152, 58, 237, 2, 2, 222, 106, 70, 101, 90, 137, 214, 225, 198, 101, 85, 185, 211, 221, 77, 96, 34, 81, 1, 137, 79, 181, 188, 11, 198, 239, 160, 147, 141, 116, 56, 73, 153, 177, 189, 37, 229, 18, 75, 144, 171, 252, 3, 77, 196, 237, 255, 212, 3, 27, 145, 230, 15, 68, 234, 213, 203, 12, 30, 215, 38, 224, 241, 208, 7, 90, 77, 222, 237, 18, 126, 170, 209, 178, 127, 144, 41, 184, 219, 158, 29, 45, 64, 173, 9, 43, 174, 174, 57, 100, 40, 224, 224, 165, 89, 125, 195, 32, 230, 21, 162, 152, 239, 2, 162, 130, 125, 205, 169, 247, 5, 33, 246, 199, 189, 90, 78, 176, 11, 195, 199, 82, 247, 208, 191, 23, 240, 130, 111, 46, 156, 255, 7, 167, 152, 178, 129, 233, 93, 121, 244, 249, 90, 79, 161, 216, 143, 31, 193, 187, 61, 60, 166, 70, 180, 220, 127, 164, 221, 163, 40, 74, 150, 245, 170, 97, 81, 128, 202, 200, 76, 116, 79, 77, 192, 129, 47, 195, 105, 36, 107, 245, 46, 88, 154, 195, 252, 203, 96, 47, 72, 151, 190, 98, 239, 16, 199, 246, 160, 44, 45, 142, 122, 94, 61, 162, 157, 34, 183, 232, 224, 248, 18, 173, 110, 202, 9, 40, 63, 137, 126, 145, 97, 162, 54, 206, 21, 221, 131, 207, 11, 216, 3, 73, 174, 254, 211, 71, 162, 221, 251, 48, 41, 236, 88, 245, 8, 5, 120, 65, 121, 119, 204, 182, 4, 71, 25, 253, 213, 166, 2, 193, 99, 253, 64, 245, 70, 198, 16, 194, 184, 14, 208, 144, 228, 80, 248, 149, 245, 205, 119, 24, 10, 186, 233, 146, 173, 235, 239, 197, 109, 106, 171, 115, 197, 211, 40, 169, 152, 118, 43, 134, 82, 124, 43, 35, 82, 202, 18, 7, 80, 17, 152, 114, 130, 190, 242, 114, 125, 90, 1, 181, 215, 68, 40, 82, 135, 124, 51, 252, 194, 172, 211, 252, 36, 71, 104, 239, 139, 93, 225, 116, 254, 218, 102, 4, 220, 40, 167, 173, 102, 58, 16, 70, 144, 6, 33, 86, 79, 197, 104, 254, 88, 161, 210, 222, 221, 19, 21, 88, 34, 225, 147, 133, 76, 162, 81, 131, 92, 218, 157, 205, 6, 82, 7, 71, 1, 192, 227, 181, 149, 245, 240, 211, 68, 150, 43, 110, 248, 40, 67, 37, 122, 217, 93, 108, 196, 255, 170, 146, 122, 104, 21, 150, 34, 69, 141, 213, 24, 98, 253, 185, 192, 66, 143, 194, 76, 168, 10, 231, 205, 234, 250, 162, 18, 185, 173, 99, 220, 238, 184, 10, 128, 153, 59, 232, 43, 87, 76, 34, 83, 177, 74, 174, 94, 52, 221, 93, 186, 247, 54, 100, 98, 171, 145, 87, 220, 136, 81, 14, 23, 86, 32, 70, 191, 103, 20, 110, 12, 144, 28, 166, 200, 163, 23, 249, 104, 182, 185, 36, 119, 18, 82, 26, 34, 134, 39, 66, 42, 48, 182, 171, 85, 136, 225, 55, 73, 54, 195, 4, 137, 84, 110, 95, 144, 235, 160, 71, 19, 145, 189, 243, 181, 189, 167, 47, 149, 74, 107, 163, 241, 88, 71, 180, 56, 196, 52, 42, 40, 0, 192, 28, 188, 138, 13, 197, 220, 48, 230, 68, 235, 215, 16, 236, 241, 123, 237, 178, 29, 17, 153, 226, 29, 109, 13, 242, 87, 41, 105, 43, 67, 99, 245, 128, 165, 18, 245, 100, 167, 88, 28, 191, 129, 126, 99, 18, 51, 215, 22, 36, 171, 242, 156, 58, 149, 243, 209, 5, 66, 98, 63, 245, 143, 101, 82, 220, 122, 249, 52, 97, 144, 149, 58, 131, 200, 26, 64, 99, 163, 52, 163, 175, 145, 102, 184, 140, 125, 228, 208, 137, 216, 194, 227, 151, 96, 53, 171, 6, 245, 163, 80, 160, 2, 2, 154, 49, 69, 11, 214, 173, 171, 59, 140, 76, 234, 244, 219, 54, 224, 149, 198, 153, 118, 82, 160, 126, 4, 41, 163, 237, 244, 202, 91, 85, 223, 211, 6, 92, 213, 220, 120, 206, 113, 143, 33, 223, 224, 110, 152, 247, 43, 242, 246, 118, 26, 162, 50, 158, 193, 222, 149, 226, 216, 190, 91, 62, 163, 28, 174, 35, 226, 193, 107, 78, 134, 75, 58, 242, 100, 193, 211, 54, 66, 165, 12, 161, 130, 121, 128, 239, 96, 48, 153, 175, 180, 155, 105, 171, 72, 190, 29, 229, 118, 251, 24, 21, 194, 252, 45, 52, 176, 177, 62, 166, 102, 90, 131, 82, 155, 175, 222, 48, 192, 118, 63, 139, 213, 179, 212, 105, 20, 78, 51, 243, 249, 22, 127, 17, 186, 250, 11, 78, 3, 83, 171, 38, 37, 41, 38, 63, 65, 222, 207, 249, 148, 87, 106, 134, 84, 246, 255, 123, 14, 205, 34, 28, 107, 223, 205, 95, 192, 88, 185, 237, 27, 9, 131, 142, 151, 163, 50, 76, 133, 229, 56, 151, 210, 65, 213, 11, 93, 35, 67, 112, 86, 193, 35, 227, 46, 96, 133, 80, 113, 101, 151, 71, 33, 68, 152, 28, 19, 113, 42, 13, 219, 122, 251, 73, 19, 198, 183, 149, 91, 159, 84, 37, 247, 126, 168, 1, 191, 85, 136, 162, 14, 12, 125, 203, 212, 16, 57, 93, 91, 113, 57, 156, 1, 201, 238, 92, 196, 66, 133, 67, 217, 164, 87, 10, 232, 105, 130, 241, 103, 66, 5, 185, 101, 252, 156, 113, 216, 190, 164, 7, 240, 175, 11, 5, 9, 103, 64, 227, 81, 158, 104, 152, 156, 158, 77, 165, 52, 89, 207, 215, 11, 57, 224, 93, 73, 225, 122, 102, 51, 170, 120, 6, 156, 218, 161, 246, 66, 62, 184, 160, 84, 207, 232, 117, 66, 134, 229, 211, 170, 5, 171, 235, 20, 202, 183, 86, 180, 190, 207, 76, 107, 219, 23, 229, 125, 79, 82, 88, 118, 71, 15, 216, 227, 174, 230, 26, 1, 238, 140, 17, 146, 214, 4, 92, 124, 86, 95, 48, 187, 236, 4, 125, 119, 229, 209, 174, 85, 249, 69, 15, 95, 251, 242, 218, 248, 246, 113, 142, 75, 211, 100, 246, 230, 184, 81, 145, 249, 154, 198, 234, 227, 239, 222, 9, 141, 235, 7, 157, 7, 15, 44, 146, 154, 221, 215, 197, 228, 19, 245, 163, 158, 159, 8, 240, 218, 173, 142, 51, 26, 20, 124, 164, 191, 241, 32, 241, 52, 209, 151, 253, 148, 3, 179, 39, 118, 177, 55, 240, 188, 38, 239, 160, 139, 66, 199, 67, 79, 155, 181, 222, 203, 239, 181, 195, 50, 113, 187, 242, 63, 119, 90, 130, 251, 108, 94, 12, 240, 232, 225, 214, 255, 250, 42, 55, 193, 19, 146, 242, 64, 217, 99, 70, 129, 117, 157, 69, 127, 241, 64, 131, 137, 139, 53, 167, 31, 74, 79, 22, 42, 72, 131, 181, 219, 8, 5, 173, 119, 150, 143, 255, 60, 19, 172, 25, 125, 19, 162, 132, 44, 164, 72, 143, 236, 46, 94, 15, 237, 200, 62, 17, 73, 132, 240, 195, 51, 88, 13, 170, 108, 15, 87, 59, 190, 140, 71, 151, 3, 174, 82, 83, 74, 198, 18, 157, 119, 81, 245, 54, 47, 209, 72, 2, 139, 24, 137, 96, 154, 31, 21, 64, 103, 233, 150, 14, 63, 9, 70, 206, 75, 67, 174, 83, 102, 26, 183, 180, 212, 136, 49, 3, 19, 190, 65, 208, 135, 25, 7, 213, 2, 98, 99, 70, 113, 33, 224, 226, 81, 213, 90, 134, 76, 236, 178, 98, 124, 254, 178, 242, 150, 75, 91, 249, 70, 149, 39, 148, 14, 198, 71, 167, 155, 248, 15, 184, 229, 176, 144, 66, 165, 240, 217, 98, 230, 157, 34, 93, 245, 96, 32, 95, 111, 253, 236, 206, 84, 122, 71, 218, 113, 214, 220, 58, 23, 91, 70, 248, 153, 23, 39, 84, 15, 45, 84, 64, 44, 178, 143, 238, 17, 209, 196, 156, 154, 101, 102, 209, 5, 99, 1, 61, 163, 2, 147, 119, 174, 114, 13, 40, 104, 56, 17, 96, 253, 188, 32, 67, 24, 115, 142, 51, 77, 158, 98, 22, 237, 15, 7, 232, 34, 93, 209, 200, 101, 135, 32, 188, 79, 213, 252, 24, 97, 141, 64, 88, 114, 112, 131, 57, 196, 34, 50, 84, 251, 61, 189, 9, 35, 162, 195, 173, 199, 159, 148, 129, 194, 126, 237, 122, 57, 40, 80, 68, 74, 178, 139, 24, 63, 227, 35, 86, 252, 234, 246, 66, 118, 22, 44, 111, 119, 235, 22, 113, 72, 41, 7, 46, 103, 255, 35, 220, 31, 118, 207, 70, 48, 204, 132, 167, 0, 12, 219, 69, 153, 45, 216, 246, 10, 56, 19, 161, 112, 178, 23, 225, 201, 48, 152, 135, 177, 126, 119, 141, 86, 236, 5, 186, 33, 121, 21, 107, 77, 194, 122, 184, 157, 160, 232, 139, 155, 65, 86, 219, 15, 112, 191, 2, 212, 171, 158, 164, 208, 140, 245, 187, 128, 38, 103, 103, 198, 133, 197, 222, 199, 102, 231, 88, 106, 103, 110, 128, 154, 14, 110, 78, 187, 201, 49, 162, 82, 91, 250, 99, 175, 114, 8, 207, 211, 1, 250, 98, 101, 1, 249, 160, 38, 29, 97, 71, 251, 6, 72, 66, 77, 158, 251, 49, 24, 212, 180, 228, 66, 115, 38, 113, 16, 235, 169, 30, 75, 161, 93, 144, 61, 86, 54, 68, 79, 236, 106, 231, 82, 59, 252, 16, 55, 160, 235, 53, 131, 219, 34, 144, 194, 25, 219, 223, 117, 249, 220, 39, 203, 58, 50, 176, 100, 112, 59, 160, 159, 51, 210, 220, 22, 178, 59, 234, 130, 58, 207, 211, 206, 73, 123, 150, 1, 217, 143, 79, 10, 101, 171, 244, 114, 220, 22, 254, 34, 110, 19, 34, 172, 6, 49, 229, 46, 57, 204, 115, 55, 56, 224, 52, 213, 167, 22, 5, 115, 199, 146, 21, 50, 34, 202, 20, 206, 142, 127, 250, 174, 100, 12, 220, 117, 120, 109, 172, 126, 57, 182, 108, 143, 202, 188, 139, 183, 203, 164, 203, 237, 238, 217, 107, 116, 156, 229, 132, 54, 213, 4, 69, 116, 109, 74, 112, 93, 244, 195, 246, 219, 63, 16, 53, 145, 233, 98, 199, 176, 212, 123, 37, 175, 58, 138, 152, 192, 129, 197, 51, 27, 35, 35, 203, 106, 149, 22, 13, 1, 251, 101, 83, 115, 63, 98, 43, 49, 93, 32, 251, 252, 181, 131, 40, 34, 109, 190, 61, 124, 16, 240, 110, 45, 79, 54, 118, 109, 24, 122, 127, 213, 250, 166, 255, 149, 4, 240, 240, 235, 217, 196, 98, 128, 19, 18, 221, 13, 239, 161, 154, 89, 8, 212, 7, 50, 154, 182, 189, 229, 91, 113, 132, 189, 132, 88, 189, 250, 191, 117, 34, 56, 18, 203, 6, 144, 196, 66, 172, 224, 46, 152, 67, 212, 238, 209, 199, 68, 12, 212, 200, 184, 227, 154, 143, 82, 63, 225, 104, 35, 118, 35, 49, 217, 222, 207, 189, 173, 244, 70, 92, 245, 128, 44, 75, 105, 148, 45, 203, 144, 244, 37, 233, 234, 73, 95, 177, 99, 20, 152, 239, 189, 12, 54, 175, 153, 239, 98, 213, 120, 30, 206, 231, 252, 60, 128, 182, 116, 21, 231, 205, 189, 83, 207, 46, 143, 238, 134, 53, 208, 75, 54, 107, 195, 60, 36, 233, 28, 54, 211, 10, 36, 200, 21, 167, 130, 195, 205, 134, 155, 101, 165, 56, 170, 111, 63, 169, 188, 183, 162, 182, 132, 235, 64, 248, 141, 194, 36, 85, 70, 253, 62, 154, 166, 198, 225, 38, 222, 37, 118, 27, 7, 94, 136, 109, 184, 172, 132, 173, 23, 3, 122, 1, 188, 9, 93, 207, 155, 94, 211, 195, 126, 46, 121, 154, 157, 203, 8, 41, 160, 168, 45, 67, 34, 26, 189, 16, 170, 74, 37, 172, 149, 2, 108, 29, 67, 134, 238, 249, 208, 188, 105, 133, 248, 175, 33, 167, 186, 246, 155, 133, 121, 78, 122, 68, 229, 82, 48, 242, 137, 132, 184, 130, 223, 231, 227, 187, 155, 199, 223, 189, 238, 78, 142, 91, 142, 151, 3, 83, 82 }, new byte[] { 79, 233, 99, 247, 7, 211, 109, 228, 11, 213, 83, 90, 111, 19, 14, 23, 189, 12, 92, 110, 83, 224, 51, 183, 19, 80, 203, 202, 201, 161, 157, 39, 78, 218, 113, 230, 156, 150, 148, 254, 35, 212, 220, 65, 165, 142, 60, 203, 96, 40, 41, 139, 125, 155, 222, 186, 205, 244, 120, 85, 61, 159, 15, 70, 174, 17, 81, 199, 167, 144, 158, 102, 92, 46, 144, 91, 161, 4, 247, 105, 116, 217, 12, 71, 64, 19, 47, 169, 85, 52, 129, 0, 30, 53, 51, 172, 33, 155, 74, 17, 154, 248, 2, 218, 56, 251, 192, 163, 56, 182, 141, 215, 86, 189, 43, 132, 199, 236, 33, 121, 237, 153, 25, 15, 201, 16, 111, 245, 64, 188, 30, 190, 116, 151, 25, 58, 138, 191, 82, 170, 32, 70, 139, 58, 82, 188, 58, 147, 125, 27, 131, 169, 110, 172, 218, 81, 155, 177, 81, 176, 195, 231, 145, 126, 2, 155, 209, 119, 34, 146, 47, 199, 1, 76, 3, 116, 175, 172, 232, 177, 109, 71, 200, 185, 235, 245, 58, 22, 213, 238, 110, 205, 145, 98, 231, 97, 149, 127, 7, 143, 204, 62, 95, 48, 129, 47, 188, 132, 58, 202, 157, 138, 123, 67, 228, 38, 154, 221, 141, 0, 44, 48, 115, 244, 74, 119, 111, 92, 191, 212, 239, 96, 204, 255, 211, 76, 146, 141, 234, 200, 148, 134, 79, 180, 203, 135, 48, 180, 33, 157, 52, 189, 82, 4, 43, 140, 207, 118, 115, 39, 210, 111, 130, 115, 182, 87, 40, 169, 157, 237, 37, 88, 132, 136, 140, 147, 23, 107, 142, 226, 248, 84, 255, 30, 138, 130, 89, 215, 191, 191, 197, 163, 199, 123, 242, 168, 49, 234, 210, 15, 4, 176, 180, 94, 127, 39, 159, 28, 63, 97, 5, 76, 124, 97, 6, 194, 2, 161, 181, 164, 6, 255, 155, 165, 135, 181, 92, 5, 130, 41, 46, 168, 37, 118, 101, 17, 3, 248, 167, 199, 63, 104, 178, 64, 103, 23, 104, 212, 139, 104, 143, 234, 184, 245, 255, 200, 212, 3, 28, 0, 220, 65, 172, 85, 143, 110, 119, 28, 15, 199, 42, 85, 66, 107, 35, 66, 234, 30, 211, 142, 49, 126, 71, 187, 247, 70, 61, 37, 93, 37, 179, 122, 50, 147, 178, 116, 172, 175, 197, 157, 254, 134, 229, 92, 220, 131, 44, 140, 4, 18, 176, 255, 118, 17, 72, 116, 45, 243, 178, 244, 185, 113, 15, 79, 19, 241, 25, 115, 46, 152, 138, 84, 162, 25, 141, 231, 99, 236, 31, 37, 209, 23, 226, 70, 192, 7, 142, 126, 130, 100, 193, 142, 114, 124, 40, 217, 180, 61, 228, 224, 114, 224, 137, 36, 204, 79, 76, 21, 160, 184, 218, 73, 165, 185, 30, 214, 244, 154, 239, 64, 57, 15, 6, 156, 95, 117, 226, 227, 109, 149, 93, 242, 123, 185, 48, 33, 86, 170, 54, 154, 165, 61, 250, 108, 212, 109, 236, 206, 81, 62, 13, 109, 154, 181, 114, 226, 19, 192, 95, 124, 136, 87, 85, 225, 27, 129, 50, 66, 230, 0, 25, 137, 64, 45, 219, 128, 207, 192, 115, 244, 110, 1, 111, 199, 114, 234, 188, 180, 146, 21, 164, 13, 114, 61, 108, 216, 117, 37, 123, 80, 160, 102, 122, 85, 85, 23, 56, 196, 205, 42, 28, 255, 243, 89, 43, 171, 179, 171, 124, 116, 32, 201, 236, 200, 34, 94, 115, 209, 32, 18, 138, 126, 212, 134, 25, 46, 167, 236, 110, 151, 137, 98, 90, 143, 11, 32, 165, 156, 187, 9, 38, 196, 100, 3, 251, 116, 62, 135, 220, 1, 56, 102, 195, 229, 10, 118, 41, 71, 99, 228, 177, 81, 55, 33, 127, 193, 199, 222, 181, 35, 216, 108, 1, 231, 47, 74, 104, 112, 147, 77, 195, 165, 165, 132, 46, 120, 252, 144, 121, 150, 88, 62, 226, 12, 177, 216, 198, 32, 105, 150, 106, 101, 178, 139, 179, 75, 75, 183, 79, 209, 133, 250, 227, 194, 78, 255, 31, 41, 45, 1, 188, 131, 119, 245, 252, 72, 200, 46, 254, 129, 169, 98, 192, 172, 241, 181, 232, 208, 8, 225, 65, 44, 1, 144, 26, 32, 26, 123, 130, 141, 191, 211, 237, 72, 97, 240, 216, 8, 201, 101, 209, 224, 89, 122, 41, 174, 217, 168, 155, 169, 214, 173, 92, 58, 84, 78, 151, 206, 254, 165, 129, 124, 226, 39, 80, 118, 184, 237, 158, 94, 39, 34, 217, 63, 97, 225, 146, 239, 111, 19, 222, 218, 20, 137, 83, 65, 207, 131, 149, 210, 49, 209, 173, 192, 27, 60, 86, 103, 219, 44, 143, 74, 141, 13, 37, 18, 69, 184, 72, 43, 85, 184, 80, 198, 89, 28, 31, 57, 168, 3, 158, 254, 252, 243, 84, 57, 137, 47, 236, 11, 207, 108, 212, 240, 56, 56, 126, 190, 136, 39, 91, 143, 219, 196, 140, 62, 26, 198, 142, 241, 31, 100, 7, 126, 74, 112, 223, 24, 4, 135, 68, 98, 220, 37, 127, 76, 84, 80, 116, 155, 239, 223, 165, 133, 141, 27, 156, 96, 69, 85, 224, 32, 223, 103, 185, 9, 164, 11, 167, 96, 129, 193, 179, 12, 53, 169, 173, 175, 5, 159, 199, 241, 133, 242, 251, 124, 108, 55, 75, 113, 96, 110, 18, 167, 80, 207, 183, 68, 93, 67, 82, 129, 176, 85, 93, 31, 48, 170, 107, 126, 104, 245, 140, 148, 52, 95, 193, 79, 162, 118, 121, 239, 193, 44, 127, 79, 8, 96, 108, 238, 59, 10, 2, 99, 249, 86, 68, 173, 59, 202, 58, 213, 98, 16, 3, 68, 226, 224, 76, 65, 238, 18, 97, 154, 171, 179, 235, 28, 177, 18, 25, 30, 169, 166, 42, 128, 146, 181, 116, 72, 17, 99, 130, 162, 130, 232, 116, 113, 176, 123, 45, 234, 130, 158, 56, 104, 196, 127, 145, 219, 5, 100, 19, 52, 41, 76, 129, 236, 75, 100, 227, 220, 84, 98, 225, 239, 114, 232, 163, 137, 123, 160, 219, 112, 59, 199, 118, 202, 167, 159, 87, 106, 136, 60, 161, 103, 151, 223, 228, 120, 164, 169, 137, 183, 231, 98, 210, 115, 248, 212, 85, 118, 161, 72, 161, 122, 21, 239, 178, 118, 102, 208, 208, 68, 223, 137, 217, 212, 19, 58, 255, 147, 59, 28, 39, 241, 115, 41, 8, 150, 144, 82, 47, 26, 57, 149, 11, 146, 72, 142, 62, 124, 211, 72, 171, 173, 83, 77, 4, 210, 253, 25, 25, 74, 92, 23, 66, 159, 206, 167, 113, 33, 121, 195, 125, 103, 217, 83, 165, 18, 194, 54, 80, 156, 122, 168, 105, 182, 100, 218, 151, 240, 251, 125, 71, 27, 57, 97, 81, 235, 229, 208, 37, 119, 200, 255, 146, 204, 215, 124, 250, 166, 167, 107, 193, 156, 126, 52, 153, 240, 182, 101, 15, 105, 165, 102, 233, 139, 32, 103, 10, 11, 17, 254, 143, 70, 72, 82, 178, 44, 53, 188, 239, 49, 45, 213, 156, 250, 30, 82, 207, 212, 83, 163, 205, 64, 137, 161, 66, 191, 87, 27, 139, 221, 192, 189, 243, 201, 180, 131, 188, 68, 195, 205, 199, 187, 215, 244, 170, 47, 109, 216, 13, 227, 170, 126, 175, 39, 109, 204, 192, 79, 178, 85, 44, 53, 8, 248, 21, 152, 114, 55, 114, 17, 136, 21, 176, 163, 87, 241, 52, 55, 119, 211, 29, 116, 131, 172, 232, 158, 105, 111, 93, 63, 184, 153, 129, 160, 76, 116, 255, 165, 76, 78, 202, 66, 222, 232, 41, 244, 175, 49, 236, 136, 110, 153, 49, 208, 95, 226, 54, 239, 250, 8, 247, 153, 210, 150, 66, 120, 61, 176, 248, 76, 132, 157, 14, 34, 125, 110, 145, 0, 211, 199, 243, 83, 115, 253, 16, 50, 98, 245, 205, 121, 112, 35, 144, 213, 120, 140, 217, 130, 21, 177, 99, 93, 182, 241, 83, 222, 86, 137, 237, 46, 232, 175, 112, 179, 211, 153, 48, 8, 114, 60, 25, 146, 73, 57, 177, 90, 241, 22, 11, 81, 62, 224, 161, 108, 11, 78, 255, 168, 244, 105, 92, 4, 201, 134, 210, 169, 68, 120, 238, 15, 174, 244, 243, 251, 34, 52, 117, 81, 203, 118, 62, 101, 131, 146, 229, 246, 67, 131, 100, 174, 113, 131, 254, 121, 4, 74, 92, 198, 84, 167, 62, 244, 116, 147, 52, 10, 36, 124, 70, 150, 210, 205, 87, 194, 138, 150, 31, 245, 210, 93, 10, 5, 72, 197, 39, 228, 128, 41, 225, 234, 19, 117, 96, 90, 166, 37, 177, 46, 209, 79, 242, 127, 53, 189, 234, 67, 24, 20, 92, 164, 231, 130, 178, 50, 235, 113, 184, 106, 143, 160, 189, 145, 194, 181, 158, 47, 105, 10, 148, 228, 3, 56, 5, 28, 1, 185, 110, 36, 10, 13, 191, 98, 28, 218, 71, 142, 194, 100, 105, 143, 227, 159, 236, 154, 12, 123, 174, 63, 94, 214, 61, 15, 129, 16, 146, 169, 36, 39, 222, 74, 227, 63, 99, 191, 135, 44, 98, 51, 14, 207, 90, 103, 218, 68, 147, 111, 169, 94, 148, 87, 247, 43, 83, 53, 33, 92, 71, 57, 83, 118, 214, 88, 67, 31, 91, 227, 231, 248, 238, 247, 38, 75, 44, 155, 255, 211, 82, 79, 213, 141, 84, 82, 251, 201, 210, 244, 3, 127, 211, 169, 253, 166, 231, 37, 37, 49, 30, 150, 122, 213, 24, 246, 142, 68, 79, 49, 55, 84, 150, 214, 105, 45, 123, 119, 16, 75, 235, 82, 253, 233, 96, 227, 253, 14, 101, 65, 2, 173, 188, 37, 12, 87, 1, 29, 148, 156, 180, 148, 54, 232, 38, 28, 16, 240, 244, 229, 149, 170, 226, 239, 184, 160, 193, 168, 138, 213, 240, 145, 46, 57, 166, 216, 102, 242, 77, 129, 30, 5, 54, 56, 140, 247, 1, 19, 156, 115, 88, 182, 105, 176, 91, 59, 76, 246, 136, 223, 205, 90, 229, 21, 154, 149, 184, 95, 227, 86, 80, 203, 37, 234, 20, 28, 177, 9, 67, 54, 148, 42, 243, 240, 129, 168, 83, 199, 135, 20, 245, 59, 169, 3, 166, 77, 229, 136, 35, 68, 193, 241, 144, 159, 250, 11, 60, 99, 187, 237, 54, 188, 174, 137, 38, 141, 117, 138, 105, 178, 203, 205, 214, 105, 188, 7, 208, 219, 19, 139, 42, 52, 135, 27, 3, 3, 0, 194, 143, 130, 129, 75, 214, 21, 185, 19, 60, 108, 127, 38, 85, 248, 215, 180, 69, 5, 176, 93, 198, 192, 213, 230, 201, 35, 136, 128, 141, 186, 250, 49, 253, 14, 170, 205, 119, 89, 17, 1, 190, 102, 5, 201, 245, 52, 149, 37, 112, 11, 228, 27, 20, 236, 154, 7, 235, 18, 86, 160, 125, 13, 181, 133, 181, 12, 120, 29, 119, 58, 118, 194, 60, 12, 165, 20, 49, 14, 245, 50, 122, 163, 16, 186, 233, 217, 0, 180, 180, 79, 235, 94, 136, 139, 54, 228, 232, 172, 157, 185, 102, 170, 105, 114, 13, 97, 149, 248, 212, 27, 185, 225, 96, 56, 35, 5, 165, 168, 140, 123, 24, 215, 202, 189, 217, 177, 144, 34, 106, 128, 98, 237, 122, 56, 56, 140, 0, 153, 250, 113, 236, 228, 120, 91, 63, 4, 57, 193, 232, 13, 27, 135, 58, 112, 101, 138, 51, 186, 65, 234, 33, 129, 13, 32, 111, 93, 112, 81, 179, 64, 177, 41, 122, 245, 144, 239, 147, 250, 228, 170, 137, 159, 62, 107, 142, 146, 162, 3, 42, 253, 138, 13, 157, 102, 15, 112, 221, 38, 251, 242, 85, 164, 72, 21, 11, 221, 72, 66, 123, 216, 98, 153, 89, 95, 227, 70, 1, 108, 97, 50, 183, 208, 98, 74, 163, 164, 126, 206, 40, 61, 144, 133, 16, 120, 19, 197, 224, 113, 36, 148, 12, 159, 31, 48, 142, 59, 126, 130, 98, 72, 253, 227, 73, 122, 114, 84, 139, 39, 43, 180, 218, 92, 152, 232, 205, 5, 250, 240, 37, 113, 224, 21, 214, 102, 239, 94, 105, 61, 179, 221, 231, 19, 123, 111, 25, 20, 173, 64, 232, 80 }, 61, "Publisher" }); + + migrationBuilder.InsertData( + table: "Users", + columns: new[] { "Id", "PasswordHash", "PasswordSalt", "Privileges", "Username" }, + values: new object[] { 3ul, new byte[] { 166, 86, 204, 46, 226, 41, 186, 243, 57, 65, 80, 176, 190, 55, 196, 102, 168, 134, 13, 131, 60, 254, 5, 127, 222, 236, 223, 170, 223, 194, 35, 221, 17, 84, 6, 35, 216, 113, 146, 182, 221, 2, 22, 195, 146, 188, 53, 102, 81, 184, 18, 15, 2, 236, 243, 49, 38, 78, 7, 159, 14, 69, 128, 181, 34, 131, 229, 45, 208, 208, 99, 211, 34, 56, 179, 41, 182, 164, 141, 145, 102, 69, 113, 204, 218, 83, 63, 104, 104, 248, 223, 119, 68, 221, 224, 135, 147, 42, 188, 218, 28, 51, 116, 1, 88, 175, 32, 58, 35, 71, 159, 220, 123, 157, 191, 11, 136, 214, 124, 132, 162, 61, 23, 62, 6, 64, 126, 53, 93, 241, 93, 112, 152, 128, 182, 87, 15, 207, 9, 23, 125, 28, 77, 82, 210, 182, 225, 236, 178, 96, 33, 127, 25, 219, 208, 236, 62, 175, 150, 193, 195, 222, 67, 174, 140, 163, 133, 124, 37, 128, 254, 155, 137, 166, 197, 195, 151, 156, 152, 252, 155, 181, 73, 221, 68, 38, 194, 240, 60, 86, 239, 130, 191, 252, 148, 163, 71, 138, 190, 17, 121, 77, 51, 132, 131, 106, 246, 210, 239, 12, 129, 0, 212, 60, 188, 214, 166, 254, 185, 154, 222, 204, 118, 252, 124, 111, 45, 14, 36, 108, 219, 96, 229, 101, 60, 121, 12, 10, 32, 90, 12, 13, 143, 216, 136, 60, 10, 206, 0, 169, 35, 16, 30, 174, 153, 184, 49, 159, 240, 83, 226, 71, 26, 172, 202, 26, 148, 5, 160, 245, 201, 249, 165, 112, 75, 185, 19, 25, 220, 85, 176, 62, 253, 111, 63, 32, 63, 18, 215, 114, 151, 139, 43, 79, 130, 91, 50, 16, 186, 79, 136, 11, 209, 228, 39, 21, 181, 75, 23, 60, 192, 199, 117, 118, 9, 250, 12, 242, 89, 109, 28, 44, 102, 160, 26, 200, 77, 52, 169, 38, 126, 129, 180, 72, 183, 14, 41, 151, 155, 158, 173, 214, 230, 86, 224, 3, 68, 11, 31, 164, 185, 87, 87, 177, 155, 137, 7, 17, 46, 58, 234, 48, 123, 158, 54, 205, 177, 74, 53, 120, 3, 43, 131, 223, 119, 95, 132, 137, 26, 159, 60, 108, 82, 216, 38, 226, 152, 163, 7, 247, 81, 170, 87, 37, 59, 137, 93, 170, 170, 130, 118, 72, 28, 171, 160, 42, 28, 210, 191, 211, 131, 21, 105, 150, 242, 98, 228, 217, 212, 53, 41, 20, 239, 198, 185, 88, 191, 246, 109, 148, 239, 191, 62, 190, 8, 162, 114, 208, 52, 72, 7, 208, 159, 143, 206, 160, 87, 80, 63, 109, 230, 7, 162, 175, 135, 140, 20, 96, 158, 22, 179, 44, 141, 221, 112, 245, 67, 138, 148, 190, 115, 75, 247, 92, 62, 164, 81, 192, 250, 191, 45, 93, 96, 226, 217, 26, 5, 99, 104, 64, 123, 190, 96, 172, 255, 112, 139, 109, 104, 71, 16, 127, 146, 62, 138, 161, 94, 220, 208, 248, 122, 185, 73, 1, 202, 49, 10, 6, 105, 25, 0, 175, 158, 55, 72, 49, 215, 18, 60, 27, 94, 84, 204, 176, 96, 253, 105, 151, 81, 133, 19, 13, 227, 106, 237, 93, 178, 60, 208, 166, 221, 26, 123, 223, 37, 187, 37, 53, 108, 62, 236, 49, 242, 176, 146, 235, 167, 235, 47, 249, 33, 0, 231, 62, 0, 180, 19, 34, 233, 38, 193, 115, 132, 106, 105, 101, 12, 77, 163, 231, 133, 240, 62, 108, 91, 83, 150, 55, 247, 193, 204, 29, 21, 212, 152, 217, 107, 171, 13, 30, 190, 145, 15, 154, 204, 52, 182, 117, 106, 71, 145, 136, 74, 82, 111, 145, 40, 179, 80, 98, 13, 2, 181, 211, 231, 142, 143, 190, 188, 24, 39, 209, 83, 33, 157, 173, 160, 57, 50, 31, 114, 93, 36, 53, 76, 27, 60, 154, 206, 170, 125, 23, 51, 4, 145, 168, 157, 206, 46, 183, 165, 70, 165, 135, 222, 75, 147, 105, 52, 43, 90, 7, 133, 155, 162, 69, 187, 24, 216, 77, 64, 188, 34, 252, 2, 177, 187, 241, 107, 144, 206, 79, 129, 214, 57, 2, 3, 127, 129, 82, 189, 198, 17, 149, 248, 197, 140, 59, 117, 12, 196, 138, 204, 188, 2, 211, 118, 173, 223, 50, 185, 82, 212, 50, 178, 102, 240, 161, 42, 168, 198, 192, 190, 1, 171, 217, 228, 129, 113, 130, 169, 140, 250, 111, 72, 173, 221, 69, 132, 149, 108, 235, 55, 250, 1, 239, 234, 49, 229, 16, 211, 156, 167, 67, 4, 17, 244, 237, 106, 27, 234, 87, 205, 139, 207, 197, 11, 149, 153, 150, 199, 125, 202, 37, 1, 231, 92, 233, 202, 71, 231, 189, 183, 133, 145, 93, 185, 40, 64, 169, 196, 161, 64, 29, 44, 156, 125, 47, 69, 155, 254, 111, 169, 146, 12, 219, 141, 215, 209, 28, 46, 81, 175, 200, 151, 2, 226, 158, 136, 219, 33, 92, 187, 145, 67, 21, 254, 135, 223, 149, 208, 148, 61, 179, 141, 198, 194, 107, 31, 190, 158, 101, 106, 215, 150, 251, 208, 85, 253, 132, 117, 183, 220, 67, 237, 184, 114, 97, 52, 214, 85, 187, 50, 150, 103, 124, 243, 39, 42, 74, 153, 213, 79, 58, 96, 163, 90, 56, 86, 185, 3, 127, 65, 124, 8, 167, 18, 139, 221, 250, 124, 225, 235, 230, 94, 78, 140, 35, 15, 80, 60, 193, 95, 146, 9, 156, 153, 238, 248, 173, 10, 251, 152, 123, 39, 242, 188, 210, 245, 63, 137, 143, 90, 94, 148, 106, 33, 95, 47, 210, 77, 51, 196, 68, 192, 193, 181, 72, 134, 102, 112, 106, 35, 53, 176, 100, 128, 64, 55, 90, 46, 170, 11, 7, 185, 38, 110, 225, 121, 49, 29, 179, 77, 51, 55, 225, 230, 11, 17, 105, 139, 10, 79, 6, 147, 42, 166, 40, 50, 250, 115, 218, 246, 235, 202, 73, 220, 89, 92, 151, 195, 152, 21, 232, 56, 47, 81, 58, 53, 216, 150, 14, 51, 99, 131, 6, 11, 82, 224, 250, 251, 55, 13, 30, 113, 190, 125, 95, 90, 244, 158, 95, 204, 136, 31, 217, 6, 241, 235, 137, 96, 16, 83, 188, 180, 78, 111, 91, 170, 251, 192, 72, 91, 90, 161, 76, 193, 73, 143, 144, 99, 162, 114, 215, 215, 173, 124, 10, 148, 60, 194, 54, 48, 6, 151, 87, 83, 185, 22, 124, 129, 190, 233, 168, 40, 15, 106, 215, 219, 173, 33, 163, 118, 132, 161, 162, 231, 197, 139, 164, 87, 139, 233, 5, 18, 9, 149, 105, 215, 201, 200, 156, 237, 194, 14, 83, 73, 169, 186, 219, 170, 240, 105, 174, 144, 108, 207, 18, 124, 176, 178, 54, 165, 138, 17, 45, 177, 196, 47, 136, 26, 97, 138, 86, 232, 244, 89, 59, 220, 168, 42, 172, 245, 165, 220, 49, 237, 14, 112, 80, 5, 191, 149, 253, 235, 50, 141, 241, 2, 13, 140, 0, 247, 33, 221, 33, 103, 0, 14, 13, 11, 65, 176, 31, 194, 179, 108, 234, 128, 249, 9, 110, 41, 127, 5, 96, 194, 238, 167, 145, 145, 9, 190, 209, 86, 248, 28, 192, 107, 47, 200, 109, 244, 228, 23, 222, 87, 5, 250, 32, 189, 158, 27, 66, 169, 58, 173, 123, 15, 61, 10, 86, 182, 56, 181, 37, 61, 248, 66, 73, 244, 136, 162, 152, 162, 67, 209, 171, 229, 28, 236, 77, 88, 2, 218, 12, 221, 118, 243, 51, 129, 35, 2, 85, 217, 16, 158, 154, 111, 192, 213, 137, 224, 224, 237, 178, 124, 8, 60, 147, 88, 186, 116, 132, 233, 179, 251, 43, 70, 235, 146, 89, 180, 35, 37, 215, 147, 3, 160, 59, 121, 31, 105, 57, 68, 86, 38, 95, 223, 198, 46, 183, 118, 22, 200, 24, 132, 162, 131, 160, 246, 38, 162, 111, 200, 42, 48, 131, 38, 177, 53, 204, 24, 207, 135, 249, 221, 27, 1, 213, 4, 175, 148, 1, 54, 146, 3, 74, 215, 154, 57, 19, 215, 50, 210, 164, 25, 141, 254, 177, 83, 162, 100, 165, 113, 209, 140, 32, 77, 57, 21, 112, 54, 234, 135, 153, 244, 179, 201, 126, 132, 28, 217, 40, 55, 148, 216, 99, 248, 69, 85, 97, 105, 186, 73, 65, 198, 64, 157, 27, 206, 137, 138, 102, 24, 225, 180, 232, 223, 89, 163, 58, 78, 242, 92, 117, 224, 198, 132, 171, 206, 93, 144, 160, 214, 91, 188, 69, 149, 128, 224, 53, 7, 149, 233, 26, 117, 22, 210, 26, 131, 217, 141, 76, 82, 75, 225, 240, 39, 98, 215, 215, 48, 29, 172, 8, 245, 72, 217, 203, 166, 21, 194, 140, 211, 26, 57, 184, 37, 116, 108, 126, 140, 84, 88, 21, 190, 188, 138, 67, 175, 159, 133, 31, 102, 107, 19, 44, 158, 247, 102, 128, 125, 209, 198, 144, 136, 112, 179, 168, 79, 125, 18, 43, 83, 57, 190, 7, 34, 149, 238, 129, 237, 208, 147, 1, 103, 108, 219, 148, 176, 223, 2, 158, 237, 194, 119, 96, 194, 97, 107, 198, 209, 173, 63, 221, 197, 142, 114, 149, 163, 86, 160, 94, 1, 60, 52, 75, 244, 46, 85, 241, 186, 216, 204, 44, 157, 176, 62, 167, 105, 68, 182, 157, 215, 122, 180, 82, 83, 223, 157, 250, 74, 219, 16, 221, 213, 20, 112, 76, 106, 242, 15, 60, 38, 248, 61, 51, 1, 165, 45, 96, 209, 191, 211, 20, 42, 169, 137, 29, 73, 146, 157, 241, 35, 61, 250, 170, 114, 75, 23, 71, 24, 15, 234, 161, 52, 215, 244, 170, 164, 179, 116, 223, 61, 243, 148, 253, 190, 226, 114, 219, 26, 35, 24, 169, 213, 178, 174, 170, 79, 156, 120, 36, 14, 177, 163, 155, 195, 229, 202, 178, 7, 70, 211, 90, 199, 101, 78, 122, 238, 4, 85, 228, 253, 54, 194, 175, 98, 120, 130, 210, 36, 111, 181, 230, 205, 176, 133, 110, 15, 129, 141, 174, 19, 143, 29, 159, 52, 213, 57, 67, 36, 200, 122, 107, 122, 92, 178, 212, 234, 140, 97, 131, 231, 96, 33, 143, 143, 212, 131, 145, 156, 97, 72, 27, 140, 97, 102, 12, 69, 208, 123, 125, 62, 196, 40, 37, 12, 74, 174, 17, 30, 121, 90, 150, 47, 17, 175, 59, 231, 122, 159, 36, 199, 187, 218, 37, 187, 175, 188, 67, 168, 11, 132, 119, 230, 220, 87, 55, 16, 4, 142, 157, 112, 73, 159, 252, 139, 109, 198, 121, 194, 221, 195, 169, 151, 240, 237, 180, 234, 175, 233, 250, 45, 95, 63, 156, 59, 113, 162, 24, 13, 59, 185, 29, 216, 86, 129, 150, 137, 246, 198, 217, 243, 11, 23, 104, 167, 82, 215, 164, 183, 175, 155, 55, 180, 33, 108, 239, 88, 40, 89, 198, 224, 121, 178, 101, 25, 161, 137, 47, 84, 2, 241, 28, 167, 159, 203, 73, 156, 109, 67, 210, 8, 160, 24, 41, 6, 47, 207, 123, 97, 182, 165, 134, 215, 172, 209, 153, 253, 78, 144, 229, 156, 185, 245, 63, 15, 197, 90, 95, 25, 93, 132, 203, 104, 62, 57, 153, 166, 138, 201, 248, 213, 249, 220, 215, 110, 24, 164, 49, 0, 52, 148, 106, 81, 68, 35, 22, 2, 36, 14, 81, 181, 53, 50, 100, 202, 165, 205, 48, 78, 47, 254, 173, 76, 122, 41, 246, 49, 36, 210, 32, 90, 222, 221, 164, 238, 25, 121, 137, 190, 147, 139, 246, 202, 190, 199, 173, 196, 217, 247, 126, 59, 129, 196, 253, 57, 251, 180, 15, 30, 46, 234, 221, 190, 223, 199, 156, 237, 48, 108, 81, 92, 36, 96, 157, 73, 7, 76, 225, 198, 226, 208, 49, 172, 113, 211, 193, 158, 192, 95, 128, 197, 254, 16, 218, 188, 70, 26, 221, 199, 215, 238, 148, 221, 7, 175, 159, 14, 215, 26, 32, 36, 225, 184, 225, 233, 185, 2, 209, 21, 96, 2, 172, 174, 147, 96, 242, 191, 56, 211, 74, 14, 225, 134, 135, 211, 133, 221, 173, 164, 176, 28, 203, 136, 160 }, new byte[] { 199, 201, 103, 52, 8, 215, 39, 26, 108, 120, 239, 41, 25, 1, 96, 59, 149, 221, 90, 39, 140, 28, 96, 92, 105, 240, 241, 212, 159, 116, 14, 6, 1, 247, 142, 125, 242, 86, 97, 148, 31, 147, 224, 244, 137, 179, 1, 183, 201, 76, 224, 88, 35, 52, 225, 136, 251, 99, 48, 107, 200, 160, 43, 88, 126, 253, 46, 197, 250, 157, 100, 102, 121, 145, 203, 122, 109, 250, 5, 231, 22, 123, 139, 185, 98, 91, 111, 145, 134, 154, 198, 138, 212, 159, 60, 72, 220, 252, 133, 151, 67, 97, 26, 159, 5, 90, 211, 45, 217, 36, 148, 28, 46, 149, 28, 143, 82, 125, 143, 231, 34, 25, 181, 3, 17, 226, 191, 133, 142, 180, 84, 176, 102, 147, 168, 136, 255, 33, 235, 150, 254, 147, 102, 195, 220, 121, 29, 162, 97, 59, 6, 41, 37, 243, 32, 90, 228, 238, 193, 17, 212, 118, 93, 191, 230, 238, 106, 176, 194, 183, 112, 86, 244, 127, 255, 124, 28, 35, 42, 40, 0, 121, 167, 236, 206, 37, 9, 45, 176, 4, 217, 230, 223, 163, 248, 252, 117, 66, 227, 49, 253, 92, 89, 124, 174, 232, 34, 167, 168, 82, 143, 78, 234, 75, 116, 165, 187, 184, 5, 53, 102, 89, 143, 14, 177, 80, 168, 17, 155, 118, 179, 45, 219, 117, 94, 166, 50, 163, 49, 60, 247, 55, 209, 42, 249, 68, 52, 21, 182, 242, 139, 174, 99, 128, 85, 51, 71, 45, 2, 189, 193, 0, 173, 79, 72, 148, 244, 250, 69, 143, 85, 87, 79, 36, 66, 24, 125, 112, 8, 173, 102, 55, 60, 21, 32, 228, 200, 86, 216, 250, 1, 124, 5, 59, 119, 173, 177, 2, 0, 5, 198, 179, 110, 63, 83, 227, 23, 88, 179, 25, 157, 117, 229, 63, 148, 174, 188, 214, 157, 230, 66, 250, 224, 157, 128, 76, 43, 145, 241, 74, 8, 129, 23, 81, 194, 143, 196, 247, 236, 137, 90, 116, 91, 251, 137, 139, 253, 43, 185, 122, 139, 11, 104, 108, 61, 120, 200, 238, 135, 240, 118, 3, 126, 152, 208, 126, 151, 117, 162, 37, 67, 7, 8, 118, 50, 166, 98, 215, 73, 99, 183, 208, 149, 105, 136, 231, 176, 137, 193, 201, 140, 198, 34, 180, 5, 48, 169, 192, 100, 51, 8, 151, 253, 3, 171, 167, 122, 36, 160, 238, 120, 117, 165, 52, 118, 173, 163, 244, 190, 168, 71, 31, 246, 51, 112, 149, 253, 197, 38, 253, 191, 96, 254, 31, 51, 100, 10, 131, 180, 2, 208, 249, 78, 66, 169, 226, 71, 130, 90, 247, 110, 127, 213, 130, 173, 27, 45, 60, 145, 244, 89, 230, 157, 174, 113, 40, 222, 43, 154, 253, 242, 216, 85, 53, 158, 170, 238, 195, 176, 150, 129, 60, 31, 80, 162, 249, 209, 125, 176, 84, 171, 75, 11, 64, 76, 100, 151, 110, 56, 225, 84, 78, 240, 232, 172, 246, 201, 3, 135, 215, 207, 24, 140, 154, 200, 92, 134, 202, 168, 18, 247, 18, 173, 181, 41, 134, 230, 73, 76, 60, 45, 47, 41, 17, 149, 152, 189, 16, 25, 246, 94, 25, 158, 242, 23, 163, 248, 78, 217, 42, 245, 166, 4, 199, 43, 75, 219, 215, 161, 64, 234, 156, 178, 127, 80, 103, 167, 56, 24, 186, 134, 152, 118, 117, 185, 17, 206, 87, 129, 139, 24, 4, 255, 171, 73, 148, 99, 34, 43, 54, 137, 66, 144, 8, 182, 192, 129, 129, 37, 134, 58, 30, 86, 42, 150, 4, 44, 164, 50, 13, 237, 88, 39, 79, 188, 241, 249, 96, 162, 99, 132, 115, 111, 175, 164, 0, 63, 6, 157, 139, 56, 87, 89, 152, 70, 196, 112, 192, 125, 22, 10, 123, 188, 236, 15, 125, 95, 4, 51, 159, 79, 110, 51, 202, 57, 14, 142, 29, 141, 45, 134, 20, 73, 87, 227, 186, 176, 159, 117, 99, 194, 174, 109, 3, 11, 8, 246, 194, 110, 33, 76, 30, 254, 79, 248, 167, 63, 16, 14, 246, 146, 42, 185, 119, 181, 198, 67, 9, 220, 68, 216, 45, 201, 212, 223, 78, 108, 139, 138, 233, 183, 131, 92, 97, 154, 230, 172, 122, 110, 93, 54, 176, 242, 96, 130, 148, 14, 15, 114, 141, 7, 150, 6, 47, 43, 156, 69, 23, 165, 7, 57, 65, 131, 69, 206, 146, 3, 141, 52, 155, 230, 61, 194, 124, 149, 208, 176, 29, 232, 79, 80, 189, 42, 81, 242, 221, 192, 109, 47, 60, 7, 218, 91, 197, 191, 30, 230, 229, 69, 51, 196, 161, 158, 130, 12, 53, 101, 82, 207, 60, 169, 135, 36, 11, 126, 63, 97, 32, 156, 102, 54, 38, 95, 6, 206, 23, 114, 211, 33, 87, 42, 129, 212, 230, 82, 2, 163, 77, 7, 31, 110, 75, 11, 16, 139, 194, 18, 251, 239, 21, 78, 102, 222, 52, 109, 164, 31, 184, 120, 157, 211, 126, 226, 76, 190, 73, 113, 152, 31, 104, 0, 13, 208, 250, 90, 235, 82, 171, 226, 134, 200, 176, 45, 215, 79, 48, 167, 74, 237, 94, 90, 210, 215, 232, 183, 88, 33, 152, 184, 117, 105, 181, 184, 72, 91, 80, 165, 80, 105, 117, 183, 132, 86, 181, 78, 169, 4, 61, 58, 17, 6, 103, 87, 40, 39, 80, 242, 114, 187, 42, 106, 74, 54, 71, 111, 135, 85, 119, 228, 54, 212, 148, 225, 101, 246, 6, 159, 134, 166, 248, 149, 157, 40, 172, 50, 69, 188, 78, 204, 182, 211, 119, 134, 36, 246, 249, 74, 99, 180, 216, 100, 23, 198, 12, 114, 82, 121, 9, 233, 247, 243, 24, 136, 175, 204, 167, 46, 3, 36, 157, 100, 252, 93, 179, 105, 240, 226, 35, 171, 29, 217, 145, 81, 161, 203, 92, 111, 211, 94, 13, 138, 80, 73, 195, 154, 67, 135, 138, 23, 231, 88, 209, 20, 74, 69, 68, 115, 66, 215, 21, 171, 46, 204, 178, 132, 86, 120, 87, 81, 118, 233, 111, 59, 177, 134, 204, 202, 73, 67, 25, 27, 59, 9, 124, 159, 135, 251, 100, 214, 236, 217, 191, 49, 204, 36, 134, 140, 140, 162, 195, 45, 67, 188, 48, 106, 218, 12, 78, 214, 254, 166, 187, 3, 151, 98, 239, 166, 108, 127, 154, 131, 2, 185, 158, 67, 153, 61, 64, 205, 175, 80, 64, 76, 171, 72, 9, 153, 98, 119, 0, 137, 212, 48, 156, 63, 125, 165, 118, 65, 150, 164, 244, 116, 245, 112, 145, 112, 65, 156, 115, 136, 248, 86, 78, 148, 77, 61, 40, 49, 216, 230, 66, 211, 249, 227, 32, 4, 68, 224, 70, 102, 10, 203, 212, 107, 147, 221, 129, 93, 68, 48, 85, 135, 121, 56, 209, 255, 227, 85, 37, 169, 157, 111, 200, 18, 74, 180, 180, 6, 222, 47, 248, 126, 129, 212, 161, 227, 8, 70, 49, 69, 86, 70, 251, 30, 195, 197, 116, 138, 85, 251, 12, 62, 252, 14, 151, 110, 74, 109, 150, 34, 57, 75, 159, 145, 19, 82, 52, 20, 208, 100, 191, 142, 228, 192, 16, 137, 203, 49, 15, 107, 73, 220, 138, 110, 126, 195, 140, 13, 142, 52, 86, 181, 108, 94, 205, 108, 238, 19, 177, 20, 249, 74, 217, 200, 56, 164, 95, 85, 82, 206, 143, 237, 35, 223, 190, 139, 105, 154, 214, 71, 141, 140, 178, 212, 229, 155, 60, 30, 142, 251, 17, 6, 24, 243, 246, 235, 67, 168, 201, 89, 8, 122, 66, 5, 191, 98, 196, 47, 241, 191, 1, 32, 32, 109, 84, 210, 121, 146, 232, 228, 149, 56, 225, 105, 218, 237, 108, 10, 10, 16, 82, 62, 85, 194, 146, 94, 80, 211, 55, 95, 112, 169, 108, 187, 167, 245, 190, 176, 240, 21, 241, 252, 224, 240, 139, 221, 64, 122, 217, 109, 196, 126, 102, 140, 55, 129, 129, 85, 126, 250, 114, 215, 196, 44, 79, 115, 89, 17, 249, 47, 38, 250, 140, 178, 33, 158, 147, 161, 105, 138, 188, 113, 43, 143, 203, 111, 178, 190, 135, 242, 87, 223, 85, 62, 51, 237, 218, 211, 23, 202, 175, 177, 234, 135, 192, 8, 161, 44, 77, 159, 102, 202, 220, 252, 173, 155, 245, 211, 134, 251, 153, 99, 235, 234, 170, 70, 233, 25, 143, 211, 15, 164, 255, 186, 4, 226, 26, 236, 145, 14, 47, 40, 237, 227, 246, 238, 136, 223, 9, 160, 115, 241, 111, 139, 103, 164, 110, 98, 12, 47, 234, 104, 39, 25, 159, 215, 202, 22, 134, 130, 99, 217, 219, 37, 182, 30, 251, 213, 147, 227, 223, 204, 178, 214, 119, 130, 129, 74, 107, 42, 150, 249, 211, 0, 3, 160, 24, 207, 46, 231, 243, 11, 92, 163, 145, 63, 31, 142, 47, 108, 83, 24, 63, 43, 31, 239, 22, 19, 92, 5, 92, 118, 20, 76, 64, 21, 88, 139, 14, 11, 2, 211, 51, 111, 85, 17, 139, 210, 238, 31, 17, 103, 22, 246, 22, 117, 21, 194, 83, 31, 10, 146, 72, 120, 43, 38, 129, 156, 86, 42, 255, 218, 137, 202, 6, 68, 196, 68, 105, 242, 40, 243, 44, 248, 117, 147, 122, 134, 231, 94, 235, 99, 240, 241, 137, 92, 222, 98, 42, 169, 134, 158, 231, 136, 182, 126, 106, 169, 175, 141, 143, 102, 46, 39, 155, 60, 30, 24, 103, 140, 67, 139, 45, 72, 95, 52, 100, 254, 142, 137, 20, 141, 82, 219, 77, 144, 147, 221, 83, 202, 43, 159, 147, 78, 213, 89, 41, 92, 155, 253, 39, 252, 76, 2, 139, 176, 66, 5, 143, 212, 14, 89, 179, 232, 102, 209, 146, 145, 174, 131, 157, 53, 144, 235, 152, 89, 104, 160, 25, 76, 15, 166, 36, 78, 146, 69, 218, 226, 227, 221, 239, 241, 69, 250, 139, 18, 56, 150, 186, 36, 127, 7, 209, 67, 204, 153, 176, 71, 27, 228, 184, 94, 116, 225, 254, 129, 6, 36, 92, 186, 152, 53, 128, 100, 95, 194, 14, 224, 203, 96, 19, 231, 196, 236, 127, 152, 237, 107, 9, 130, 15, 43, 111, 242, 66, 173, 185, 218, 42, 13, 88, 50, 135, 228, 105, 248, 181, 190, 77, 215, 12, 7, 224, 88, 61, 199, 206, 77, 95, 3, 214, 135, 15, 194, 53, 225, 174, 154, 170, 246, 145, 69, 35, 88, 61, 189, 38, 28, 47, 60, 72, 85, 60, 110, 211, 242, 116, 203, 79, 130, 11, 141, 212, 41, 75, 217, 158, 203, 109, 3, 171, 244, 118, 232, 54, 90, 223, 175, 161, 53, 70, 119, 7, 43, 41, 199, 91, 230, 133, 94, 110, 187, 118, 97, 199, 5, 112, 195, 129, 102, 210, 144, 28, 234, 201, 215, 33, 18, 68, 25, 243, 159, 12, 53, 27, 160, 109, 92, 125, 52, 106, 0, 74, 227, 205, 11, 221, 185, 23, 63, 19, 30, 203, 243, 65, 29, 72, 247, 76, 7, 136, 207, 140, 214, 2, 53, 8, 216, 224, 126, 234, 242, 207, 255, 162, 203, 42, 37, 102, 235, 240, 169, 232, 55, 198, 227, 160, 233, 46, 64, 181, 119, 211, 126, 150, 72, 87, 107, 6, 100, 192, 165, 240, 77, 196, 226, 134, 7, 138, 214, 28, 230, 141, 239, 161, 185, 137, 131, 216, 215, 155, 21, 240, 13, 20, 148, 251, 53, 17, 72, 162, 74, 139, 73, 159, 107, 52, 114, 85, 166, 240, 90, 3, 144, 97, 143, 158, 68, 33, 119, 150, 103, 202, 215, 144, 57, 132, 26, 154, 137, 43, 194, 45, 47, 253, 208, 219, 183, 23, 134, 129, 44, 76, 76, 231, 64, 128, 86, 134, 248, 240, 145, 105, 7, 169, 23, 236, 102, 234, 142, 70, 125, 43, 253, 233, 236, 149, 88, 136, 246, 241, 65, 40, 65, 210, 1, 29, 80, 146, 187, 42, 137, 64, 121, 109, 118, 148, 246, 46, 231, 196, 103, 151, 13, 5, 145, 28, 92, 3, 137, 195, 165, 251, 120, 47, 161, 92, 66, 151, 254, 197, 211, 238, 226, 86, 206, 209, 20, 49, 153, 139, 103, 220, 169, 26, 69, 129 }, 511, "Administrator" }); + + migrationBuilder.InsertData( + table: "Users", + columns: new[] { "Id", "PasswordHash", "PasswordSalt", "Privileges", "Username" }, + values: new object[] { 4ul, new byte[] { 36, 167, 235, 85, 137, 38, 168, 238, 219, 43, 150, 103, 238, 180, 236, 32, 175, 117, 105, 97, 66, 113, 11, 37, 106, 217, 225, 189, 190, 231, 195, 27, 34, 122, 228, 17, 24, 182, 61, 104, 146, 84, 180, 193, 56, 103, 36, 64, 167, 39, 178, 187, 164, 86, 190, 87, 142, 81, 99, 162, 68, 88, 87, 189, 192, 120, 82, 9, 163, 53, 180, 153, 246, 226, 122, 136, 231, 175, 2, 79, 33, 203, 46, 200, 192, 176, 129, 165, 180, 16, 250, 176, 166, 209, 212, 142, 142, 134, 26, 113, 219, 210, 246, 13, 186, 215, 121, 204, 253, 205, 214, 78, 108, 101, 145, 158, 78, 41, 18, 116, 50, 207, 255, 224, 195, 60, 246, 193, 208, 37, 88, 200, 136, 157, 253, 236, 89, 41, 59, 104, 78, 194, 122, 189, 201, 42, 220, 142, 139, 226, 202, 73, 154, 226, 175, 37, 40, 40, 182, 219, 6, 51, 201, 56, 205, 164, 86, 105, 17, 123, 35, 12, 247, 5, 252, 63, 68, 174, 227, 65, 54, 217, 245, 160, 61, 32, 184, 194, 158, 1, 82, 115, 71, 166, 234, 50, 148, 111, 205, 99, 73, 48, 74, 81, 45, 231, 10, 41, 230, 160, 136, 79, 176, 47, 211, 190, 88, 80, 18, 41, 145, 166, 21, 142, 166, 26, 151, 251, 186, 108, 206, 79, 48, 39, 152, 234, 162, 41, 46, 170, 64, 199, 94, 30, 75, 162, 46, 107, 110, 163, 165, 70, 6, 94, 128, 91, 46, 141, 11, 43, 40, 52, 140, 203, 2, 189, 198, 143, 3, 144, 54, 164, 47, 53, 204, 189, 122, 28, 216, 114, 228, 200, 8, 250, 245, 154, 95, 70, 225, 73, 121, 215, 52, 119, 194, 234, 52, 3, 125, 22, 100, 98, 127, 5, 254, 19, 50, 169, 159, 115, 1, 176, 35, 26, 233, 240, 154, 110, 53, 20, 230, 237, 150, 148, 244, 50, 81, 66, 170, 66, 226, 196, 146, 183, 10, 60, 157, 21, 105, 7, 103, 221, 13, 151, 214, 35, 240, 132, 68, 163, 113, 187, 149, 138, 221, 174, 102, 170, 72, 134, 63, 73, 113, 240, 73, 230, 122, 45, 151, 233, 210, 6, 70, 248, 46, 1, 144, 221, 94, 208, 27, 13, 22, 97, 168, 212, 163, 17, 158, 176, 133, 240, 3, 236, 226, 203, 161, 109, 80, 134, 118, 143, 115, 99, 56, 63, 202, 84, 96, 237, 118, 213, 205, 182, 179, 203, 1, 144, 157, 249, 147, 226, 80, 65, 216, 206, 242, 59, 58, 166, 188, 104, 128, 12, 149, 178, 3, 112, 204, 227, 72, 232, 50, 177, 126, 182, 131, 172, 237, 29, 16, 184, 33, 47, 164, 81, 2, 104, 61, 50, 198, 208, 248, 168, 71, 228, 99, 96, 219, 233, 160, 231, 245, 244, 180, 184, 145, 12, 17, 51, 145, 216, 225, 27, 219, 155, 52, 50, 126, 235, 77, 21, 234, 120, 189, 108, 246, 246, 7, 190, 248, 4, 224, 53, 191, 82, 126, 133, 95, 129, 226, 55, 115, 154, 42, 5, 107, 29, 49, 13, 28, 205, 188, 24, 15, 156, 115, 122, 52, 83, 175, 235, 197, 156, 131, 209, 197, 52, 15, 42, 112, 14, 20, 90, 255, 46, 172, 194, 73, 203, 118, 108, 54, 82, 89, 0, 232, 129, 231, 8, 68, 203, 237, 227, 69, 253, 241, 162, 255, 158, 186, 185, 193, 158, 249, 52, 114, 48, 36, 240, 104, 206, 115, 188, 132, 216, 153, 176, 186, 17, 245, 134, 222, 141, 138, 76, 245, 113, 173, 151, 171, 81, 145, 70, 113, 15, 247, 195, 149, 249, 111, 142, 214, 109, 0, 227, 221, 209, 90, 169, 20, 26, 205, 192, 129, 32, 250, 28, 16, 105, 238, 29, 94, 7, 52, 151, 199, 251, 67, 186, 230, 232, 218, 104, 163, 164, 119, 102, 78, 236, 82, 210, 112, 96, 239, 196, 167, 163, 123, 234, 5, 24, 140, 239, 101, 137, 239, 249, 185, 188, 126, 133, 121, 141, 226, 80, 84, 234, 197, 197, 28, 21, 52, 88, 67, 216, 227, 96, 108, 191, 112, 224, 243, 66, 37, 191, 92, 243, 109, 148, 245, 189, 222, 85, 218, 29, 168, 64, 235, 138, 167, 45, 222, 82, 80, 158, 201, 52, 61, 148, 92, 191, 18, 86, 173, 7, 211, 232, 129, 249, 43, 140, 26, 60, 165, 75, 51, 72, 6, 76, 227, 201, 94, 98, 147, 125, 173, 225, 183, 146, 28, 69, 14, 183, 244, 11, 202, 158, 53, 171, 201, 94, 197, 191, 1, 83, 129, 65, 233, 49, 214, 58, 189, 17, 87, 85, 207, 163, 107, 186, 142, 225, 43, 205, 44, 117, 21, 31, 19, 238, 193, 135, 135, 159, 209, 153, 154, 44, 120, 83, 14, 122, 141, 247, 124, 52, 196, 174, 83, 195, 202, 239, 9, 104, 39, 127, 80, 250, 218, 124, 182, 122, 160, 237, 145, 14, 81, 133, 251, 121, 239, 222, 176, 95, 168, 120, 85, 37, 149, 41, 142, 208, 2, 37, 192, 98, 176, 128, 77, 246, 120, 90, 255, 104, 37, 163, 220, 195, 185, 171, 147, 143, 209, 182, 213, 12, 217, 56, 103, 166, 192, 59, 69, 199, 208, 100, 86, 245, 71, 187, 236, 143, 79, 148, 243, 160, 203, 146, 234, 147, 211, 81, 182, 230, 206, 122, 134, 47, 10, 142, 4, 194, 42, 93, 136, 254, 41, 212, 238, 222, 253, 53, 42, 188, 96, 225, 30, 50, 196, 9, 152, 69, 31, 33, 33, 133, 169, 88, 39, 163, 79, 189, 60, 250, 102, 162, 182, 75, 110, 106, 87, 60, 166, 208, 247, 65, 118, 221, 76, 85, 139, 94, 172, 223, 26, 109, 139, 49, 107, 146, 94, 134, 233, 142, 166, 151, 2, 49, 241, 164, 230, 133, 53, 18, 3, 246, 2, 175, 233, 102, 87, 65, 194, 183, 241, 41, 177, 238, 196, 196, 3, 148, 147, 85, 184, 153, 247, 54, 48, 24, 11, 33, 162, 84, 161, 207, 47, 221, 48, 64, 176, 115, 140, 179, 161, 254, 189, 163, 96, 60, 191, 12, 108, 45, 140, 122, 105, 224, 1, 222, 10, 140, 106, 15, 200, 134, 57, 238, 211, 31, 225, 152, 232, 247, 36, 204, 80, 234, 128, 8, 52, 61, 48, 197, 23, 52, 224, 42, 70, 24, 121, 254, 93, 38, 129, 183, 107, 207, 155, 217, 47, 185, 110, 219, 156, 98, 175, 161, 209, 138, 221, 245, 194, 12, 71, 200, 221, 41, 230, 95, 65, 10, 29, 198, 26, 129, 37, 226, 233, 172, 30, 51, 244, 227, 197, 247, 174, 132, 31, 164, 202, 228, 59, 91, 44, 210, 209, 73, 41, 52, 52, 178, 113, 120, 10, 222, 95, 88, 197, 208, 231, 214, 224, 231, 144, 90, 201, 117, 72, 131, 89, 130, 50, 113, 157, 152, 61, 34, 170, 88, 13, 186, 228, 151, 247, 87, 120, 138, 168, 211, 92, 238, 205, 245, 211, 128, 113, 93, 21, 32, 97, 232, 13, 136, 7, 67, 20, 136, 15, 226, 155, 209, 143, 238, 222, 228, 167, 157, 85, 248, 102, 131, 25, 69, 19, 149, 57, 12, 44, 145, 22, 33, 149, 158, 78, 218, 97, 84, 29, 210, 132, 123, 18, 47, 187, 54, 28, 11, 46, 167, 117, 44, 11, 37, 167, 84, 103, 83, 147, 142, 221, 165, 67, 7, 60, 174, 160, 119, 78, 6, 151, 237, 14, 212, 119, 127, 66, 15, 229, 79, 121, 185, 32, 95, 198, 74, 193, 35, 21, 163, 206, 231, 132, 12, 150, 107, 208, 217, 206, 109, 223, 6, 107, 16, 205, 199, 188, 11, 198, 113, 210, 38, 169, 94, 235, 81, 126, 140, 226, 53, 223, 161, 160, 11, 240, 153, 81, 64, 181, 221, 113, 19, 134, 57, 153, 221, 240, 255, 234, 98, 192, 32, 255, 10, 40, 142, 117, 203, 38, 22, 36, 112, 240, 27, 253, 22, 117, 31, 213, 155, 198, 131, 82, 90, 161, 120, 157, 44, 103, 61, 126, 57, 90, 200, 84, 117, 113, 151, 54, 178, 151, 21, 196, 142, 129, 88, 198, 9, 104, 180, 76, 148, 122, 212, 223, 67, 123, 107, 55, 93, 46, 229, 51, 69, 109, 213, 49, 180, 106, 26, 248, 10, 61, 44, 241, 172, 43, 151, 89, 23, 80, 87, 33, 145, 162, 255, 255, 166, 68, 31, 111, 10, 74, 36, 0, 35, 46, 29, 169, 229, 17, 180, 252, 38, 173, 141, 80, 125, 32, 109, 187, 93, 200, 157, 159, 199, 111, 152, 145, 135, 5, 234, 202, 66, 252, 56, 151, 17, 93, 239, 229, 140, 153, 175, 130, 23, 13, 68, 115, 206, 131, 5, 35, 90, 238, 175, 237, 173, 58, 149, 254, 37, 133, 3, 176, 211, 227, 255, 71, 215, 228, 127, 31, 151, 200, 161, 231, 34, 102, 255, 240, 168, 62, 5, 57, 94, 94, 135, 209, 97, 153, 147, 165, 15, 161, 27, 88, 32, 42, 33, 235, 189, 122, 8, 124, 47, 4, 155, 137, 206, 212, 206, 194, 212, 181, 224, 56, 128, 202, 137, 248, 250, 110, 144, 188, 94, 43, 5, 188, 238, 80, 61, 185, 102, 104, 232, 202, 181, 253, 35, 18, 79, 25, 161, 145, 248, 128, 231, 231, 169, 32, 230, 102, 84, 89, 241, 247, 209, 214, 241, 127, 179, 149, 11, 173, 189, 163, 27, 27, 148, 22, 153, 70, 61, 66, 133, 198, 242, 25, 193, 253, 211, 40, 45, 167, 102, 189, 125, 244, 217, 21, 90, 28, 174, 102, 65, 106, 249, 59, 130, 234, 47, 76, 203, 192, 139, 147, 68, 23, 225, 144, 24, 178, 140, 248, 18, 225, 239, 38, 235, 211, 69, 255, 157, 33, 168, 236, 68, 224, 142, 147, 55, 221, 69, 41, 118, 241, 238, 99, 218, 193, 97, 183, 117, 67, 126, 234, 249, 137, 3, 11, 156, 203, 136, 195, 106, 163, 235, 158, 35, 54, 91, 170, 229, 142, 5, 27, 20, 12, 72, 206, 58, 136, 8, 138, 55, 88, 53, 192, 26, 82, 55, 35, 12, 89, 233, 103, 110, 40, 47, 79, 67, 212, 128, 74, 157, 227, 192, 88, 227, 236, 0, 16, 182, 182, 243, 113, 253, 138, 242, 156, 187, 1, 232, 238, 51, 148, 21, 238, 130, 23, 170, 182, 39, 99, 196, 253, 185, 198, 251, 57, 107, 0, 88, 35, 241, 143, 143, 39, 223, 165, 245, 229, 40, 191, 150, 133, 48, 154, 70, 129, 231, 240, 100, 26, 191, 255, 149, 116, 59, 23, 128, 207, 215, 106, 57, 226, 41, 77, 178, 202, 4, 29, 53, 194, 9, 63, 73, 81, 149, 140, 59, 154, 110, 57, 20, 12, 212, 93, 168, 79, 144, 135, 160, 163, 76, 227, 186, 43, 147, 146, 36, 235, 253, 237, 238, 117, 17, 74, 236, 46, 42, 236, 86, 226, 225, 176, 171, 190, 191, 47, 230, 203, 161, 136, 156, 158, 69, 250, 207, 201, 25, 178, 148, 220, 9, 102, 251, 128, 139, 107, 71, 158, 240, 15, 39, 22, 28, 142, 146, 35, 38, 170, 115, 219, 17, 249, 217, 89, 25, 116, 193, 104, 165, 63, 38, 116, 45, 255, 125, 168, 136, 144, 148, 82, 100, 202, 140, 114, 198, 252, 197, 78, 130, 144, 220, 29, 11, 8, 26, 206, 211, 44, 233, 133, 82, 64, 111, 14, 252, 116, 188, 167, 131, 212, 196, 79, 82, 138, 216, 246, 124, 158, 12, 30, 114, 242, 88, 20, 153, 44, 120, 157, 152, 171, 188, 171, 70, 38, 52, 187, 72, 137, 140, 76, 3, 45, 42, 181, 157, 64, 4, 243, 107, 173, 201, 200, 241, 115, 5, 58, 210, 59, 236, 194, 229, 120, 204, 148, 27, 206, 207, 33, 124, 191, 122, 36, 131, 185, 205, 154, 156, 131, 55, 229, 103, 50, 209, 39, 205, 184, 230, 164, 42, 234, 92, 198, 17, 77, 57, 215, 81, 219, 250, 113, 72, 205, 127, 3, 44, 161, 192, 189, 85, 126, 181, 201, 19, 217, 173, 254, 91, 172, 161, 14, 114, 9, 166, 8, 175, 5, 204, 153, 233, 11, 60, 249, 234, 100, 255, 60, 209, 102, 157, 225, 183, 87, 89, 240, 234, 70, 188, 113, 124, 166, 18, 175, 193 }, new byte[] { 214, 220, 188, 220, 245, 95, 220, 187, 65, 151, 234, 175, 97, 72, 161, 218, 111, 76, 170, 131, 194, 30, 103, 74, 248, 78, 249, 171, 105, 214, 151, 9, 141, 184, 100, 113, 211, 117, 6, 218, 2, 117, 200, 235, 168, 65, 29, 51, 116, 60, 111, 51, 242, 203, 109, 174, 255, 40, 159, 160, 179, 74, 58, 155, 252, 218, 74, 75, 221, 112, 177, 30, 223, 3, 51, 169, 28, 209, 91, 160, 11, 10, 242, 255, 202, 34, 52, 238, 150, 17, 82, 27, 154, 204, 198, 160, 116, 97, 242, 170, 30, 134, 249, 237, 158, 154, 155, 166, 227, 55, 79, 255, 132, 190, 158, 74, 190, 139, 244, 60, 162, 148, 45, 118, 165, 117, 219, 141, 104, 143, 151, 48, 242, 105, 124, 103, 41, 123, 210, 216, 197, 39, 247, 185, 31, 25, 47, 160, 190, 135, 202, 52, 94, 115, 12, 61, 77, 139, 70, 26, 254, 139, 86, 21, 228, 151, 250, 252, 80, 196, 57, 228, 70, 82, 34, 167, 1, 111, 150, 4, 184, 87, 71, 26, 106, 93, 63, 81, 56, 50, 29, 19, 40, 146, 105, 3, 235, 214, 86, 73, 213, 64, 180, 103, 220, 253, 26, 2, 109, 226, 69, 42, 198, 109, 176, 2, 103, 30, 98, 189, 78, 121, 149, 31, 244, 170, 190, 154, 232, 30, 193, 2, 0, 122, 253, 27, 22, 239, 83, 132, 2, 80, 150, 98, 49, 29, 201, 234, 166, 175, 137, 39, 215, 101, 58, 231, 163, 15, 192, 93, 150, 13, 13, 43, 243, 239, 51, 62, 5, 165, 178, 36, 230, 190, 106, 17, 151, 52, 89, 61, 233, 227, 134, 41, 193, 110, 27, 165, 172, 33, 95, 9, 137, 100, 210, 129, 231, 116, 239, 233, 89, 142, 128, 205, 20, 169, 164, 184, 165, 57, 224, 106, 42, 79, 175, 62, 110, 95, 44, 7, 28, 225, 216, 2, 131, 188, 193, 85, 206, 180, 41, 89, 155, 234, 74, 29, 148, 60, 91, 52, 255, 103, 51, 156, 220, 198, 88, 138, 108, 104, 27, 30, 73, 34, 24, 254, 170, 87, 229, 244, 164, 209, 159, 3, 47, 187, 6, 234, 197, 145, 25, 93, 149, 173, 210, 170, 48, 53, 212, 174, 199, 49, 59, 169, 157, 59, 165, 135, 63, 216, 151, 238, 236, 143, 226, 146, 234, 161, 24, 97, 30, 100, 47, 173, 120, 253, 56, 4, 24, 124, 92, 214, 199, 169, 210, 112, 197, 157, 190, 138, 238, 146, 106, 235, 7, 205, 251, 15, 221, 228, 91, 65, 22, 144, 15, 231, 200, 213, 35, 143, 224, 137, 64, 171, 234, 10, 225, 199, 155, 178, 67, 247, 4, 24, 72, 20, 211, 107, 7, 233, 123, 197, 179, 254, 237, 176, 11, 170, 202, 177, 42, 68, 183, 24, 50, 203, 191, 69, 234, 86, 48, 82, 229, 75, 36, 182, 22, 55, 183, 175, 32, 186, 199, 14, 154, 26, 175, 123, 108, 217, 41, 94, 25, 3, 157, 247, 166, 37, 41, 236, 96, 164, 31, 43, 96, 30, 147, 186, 21, 40, 18, 99, 220, 36, 158, 22, 220, 157, 171, 92, 55, 164, 88, 131, 43, 164, 27, 49, 22, 105, 214, 215, 251, 135, 244, 56, 95, 161, 117, 53, 51, 56, 163, 147, 223, 123, 202, 8, 199, 219, 220, 170, 49, 165, 194, 188, 222, 110, 207, 215, 167, 119, 246, 38, 136, 41, 181, 33, 140, 167, 209, 220, 211, 3, 54, 20, 63, 45, 229, 13, 97, 10, 152, 4, 53, 172, 109, 100, 216, 137, 218, 81, 232, 152, 25, 158, 35, 103, 18, 148, 82, 100, 22, 175, 233, 131, 191, 233, 146, 216, 248, 40, 166, 198, 179, 72, 222, 104, 0, 141, 142, 11, 123, 104, 47, 144, 90, 123, 207, 221, 136, 202, 226, 130, 154, 79, 95, 98, 169, 33, 59, 255, 30, 171, 226, 44, 225, 210, 32, 101, 226, 193, 153, 93, 61, 142, 244, 73, 248, 218, 71, 253, 221, 105, 133, 134, 182, 73, 7, 208, 74, 114, 14, 209, 164, 61, 77, 217, 207, 151, 185, 110, 86, 71, 192, 252, 184, 36, 168, 29, 138, 177, 177, 74, 224, 39, 37, 171, 148, 175, 109, 123, 172, 227, 182, 178, 130, 231, 227, 237, 247, 145, 205, 199, 36, 176, 217, 167, 163, 117, 73, 54, 218, 85, 123, 41, 32, 7, 22, 156, 10, 171, 254, 160, 209, 0, 237, 116, 126, 12, 218, 113, 78, 244, 247, 121, 164, 255, 71, 201, 132, 93, 46, 93, 177, 135, 250, 43, 232, 147, 182, 136, 182, 28, 53, 158, 192, 75, 223, 231, 53, 138, 109, 43, 204, 196, 194, 142, 55, 23, 138, 174, 200, 236, 203, 215, 122, 243, 118, 213, 97, 155, 53, 188, 199, 220, 129, 84, 41, 108, 39, 29, 71, 206, 87, 243, 231, 18, 100, 94, 242, 83, 132, 236, 204, 228, 2, 72, 249, 233, 139, 21, 166, 77, 224, 128, 67, 10, 25, 186, 176, 5, 22, 203, 150, 144, 40, 14, 36, 140, 142, 121, 173, 79, 217, 34, 185, 166, 247, 246, 183, 213, 28, 184, 228, 67, 131, 245, 225, 254, 29, 84, 209, 175, 139, 44, 168, 134, 30, 9, 153, 94, 18, 93, 32, 249, 178, 232, 144, 79, 163, 27, 183, 190, 157, 166, 248, 111, 133, 27, 153, 5, 115, 67, 140, 148, 39, 34, 32, 57, 39, 156, 144, 89, 188, 206, 165, 213, 197, 191, 165, 252, 18, 220, 1, 144, 221, 59, 192, 44, 231, 229, 6, 132, 92, 120, 77, 81, 248, 244, 37, 229, 233, 112, 62, 232, 180, 108, 61, 243, 52, 110, 71, 248, 113, 245, 230, 39, 40, 104, 199, 130, 103, 71, 231, 183, 247, 207, 90, 193, 52, 62, 201, 142, 187, 170, 161, 137, 174, 21, 39, 0, 168, 136, 241, 47, 29, 136, 211, 1, 34, 158, 42, 248, 0, 74, 110, 31, 22, 87, 221, 23, 103, 211, 238, 21, 125, 202, 217, 193, 14, 87, 75, 23, 255, 193, 196, 215, 36, 9, 112, 103, 123, 66, 207, 234, 78, 176, 64, 63, 128, 52, 24, 244, 238, 122, 124, 244, 48, 101, 139, 64, 107, 15, 19, 160, 67, 150, 245, 65, 133, 6, 33, 77, 48, 97, 133, 74, 232, 210, 163, 35, 189, 108, 165, 231, 244, 86, 237, 79, 103, 12, 54, 158, 137, 65, 147, 169, 148, 186, 181, 126, 18, 183, 163, 184, 114, 181, 70, 108, 226, 76, 203, 252, 205, 45, 63, 70, 79, 83, 61, 224, 54, 133, 204, 213, 62, 168, 114, 18, 201, 144, 113, 110, 148, 48, 178, 137, 195, 247, 47, 50, 120, 101, 171, 138, 100, 235, 166, 27, 184, 39, 171, 226, 126, 225, 147, 237, 30, 249, 199, 192, 16, 250, 9, 53, 43, 214, 12, 182, 48, 176, 217, 102, 123, 114, 23, 29, 82, 62, 190, 221, 109, 200, 112, 180, 197, 199, 225, 115, 117, 154, 129, 44, 55, 184, 109, 4, 165, 239, 173, 101, 27, 62, 220, 106, 180, 205, 0, 66, 6, 179, 192, 113, 68, 126, 226, 76, 174, 178, 103, 42, 51, 211, 211, 78, 97, 184, 38, 75, 131, 205, 19, 85, 62, 5, 231, 104, 53, 139, 254, 103, 155, 249, 59, 42, 44, 137, 71, 123, 205, 0, 192, 205, 189, 236, 1, 255, 68, 191, 97, 159, 46, 17, 73, 13, 103, 124, 31, 217, 177, 177, 145, 48, 49, 118, 137, 199, 116, 219, 35, 174, 102, 196, 144, 109, 74, 240, 231, 131, 165, 243, 154, 155, 105, 82, 20, 238, 4, 163, 171, 105, 98, 37, 83, 39, 230, 140, 226, 10, 245, 69, 25, 87, 17, 69, 93, 88, 72, 154, 162, 82, 249, 152, 44, 139, 101, 15, 59, 143, 104, 231, 219, 243, 194, 111, 217, 176, 245, 152, 198, 28, 36, 57, 232, 217, 165, 201, 42, 129, 248, 6, 115, 94, 20, 1, 59, 28, 183, 221, 62, 191, 200, 122, 197, 143, 40, 220, 55, 60, 207, 186, 115, 149, 188, 76, 7, 112, 121, 197, 7, 182, 226, 95, 178, 185, 254, 161, 39, 4, 57, 165, 133, 69, 215, 140, 197, 41, 127, 183, 31, 148, 23, 249, 128, 254, 254, 254, 41, 143, 94, 51, 39, 195, 209, 30, 24, 37, 62, 180, 174, 171, 129, 0, 26, 72, 148, 142, 135, 174, 173, 124, 246, 47, 36, 74, 253, 105, 183, 140, 159, 88, 8, 114, 38, 144, 116, 18, 51, 105, 92, 23, 32, 36, 188, 186, 249, 61, 210, 229, 85, 51, 118, 203, 227, 34, 6, 120, 207, 209, 17, 35, 145, 87, 207, 77, 62, 84, 138, 229, 132, 76, 183, 192, 26, 56, 143, 12, 227, 4, 73, 201, 93, 230, 75, 57, 198, 183, 95, 154, 40, 192, 241, 22, 254, 87, 211, 191, 128, 99, 103, 239, 47, 113, 8, 65, 63, 70, 224, 55, 203, 102, 182, 36, 170, 111, 193, 119, 204, 177, 52, 244, 46, 167, 149, 67, 151, 179, 167, 216, 240, 7, 180, 179, 52, 224, 209, 172, 11, 246, 34, 150, 52, 21, 99, 78, 134, 140, 101, 60, 188, 39, 176, 230, 128, 78, 96, 108, 98, 30, 131, 155, 112, 100, 150, 18, 210, 42, 75, 131, 36, 71, 10, 104, 37, 142, 153, 125, 115, 73, 175, 216, 133, 36, 164, 53, 206, 171, 197, 32, 132, 225, 142, 177, 246, 168, 166, 16, 171, 112, 241, 88, 214, 255, 194, 208, 159, 232, 67, 141, 228, 123, 110, 45, 181, 236, 239, 140, 9, 168, 45, 120, 74, 34, 122, 248, 193, 39, 246, 175, 186, 9, 142, 43, 29, 180, 77, 185, 241, 212, 189, 219, 121, 192, 200, 31, 85, 115, 250, 59, 233, 138, 121, 105, 133, 49, 10, 60, 106, 6, 109, 197, 189, 184, 207, 211, 216, 188, 81, 19, 31, 124, 184, 238, 107, 178, 138, 232, 96, 162, 77, 140, 166, 146, 83, 127, 229, 222, 98, 57, 28, 163, 113, 95, 169, 48, 242, 186, 190, 98, 24, 170, 210, 31, 89, 255, 61, 247, 126, 19, 206, 181, 251, 152, 199, 92, 95, 186, 89, 249, 219, 194, 162, 3, 254, 83, 188, 226, 228, 23, 108, 23, 251, 115, 107, 22, 141, 166, 61, 157, 95, 109, 239, 172, 33, 209, 226, 17, 117, 105, 118, 10, 27, 183, 98, 120, 229, 197, 194, 138, 149, 140, 70, 28, 230, 225, 45, 203, 117, 177, 118, 207, 131, 89, 145, 204, 0, 186, 221, 224, 57, 97, 203, 52, 142, 9, 203, 134, 64, 176, 237, 164, 106, 174, 219, 148, 91, 152, 42, 192, 149, 25, 65, 159, 149, 144, 62, 150, 169, 187, 88, 193, 143, 240, 175, 7, 245, 65, 91, 157, 235, 232, 129, 37, 149, 22, 149, 9, 4, 250, 103, 131, 220, 200, 146, 29, 227, 8, 71, 145, 141, 94, 148, 53, 142, 59, 166, 165, 247, 13, 46, 155, 73, 235, 34, 0, 253, 7, 156, 64, 179, 193, 185, 224, 69, 66, 243, 66, 171, 19, 31, 11, 193, 248, 234, 250, 179, 19, 141, 43, 126, 235, 234, 8, 43, 2, 208, 4, 152, 100, 211, 194, 21, 134, 88, 158, 147, 118, 73, 157, 49, 182, 140, 208, 11, 125, 111, 54, 117, 238, 172, 43, 250, 174, 134, 88, 217, 61, 148, 7, 53, 121, 178, 159, 9, 167, 10, 165, 58, 240, 39, 183, 211, 104, 248, 205, 93, 138, 174, 158, 47, 120, 60, 78, 96, 22, 133, 208, 73, 234, 195, 192, 68, 243, 20, 35, 108, 211, 92, 50, 116, 94, 44, 21, 207, 129, 58, 236, 130, 76, 1, 72, 35, 178, 124, 203, 204, 150, 87, 116, 86, 32, 192, 21, 153, 94, 47, 78, 78, 82, 169, 34, 224, 58, 147, 21, 232, 49, 80, 242, 180, 144, 239, 44, 119, 235, 39, 116, 154, 224, 26, 55, 199, 21, 73, 53, 131, 133, 249, 251, 254, 152, 234, 101, 235, 16, 50, 175, 81, 2, 180, 163, 19, 10, 222, 197, 137, 108, 22, 221, 245, 50, 177, 85, 51, 240, 164, 14, 228, 114, 38, 49, 86, 237, 129, 47, 9, 123 }, 8, "John Doe" }); + + migrationBuilder.InsertData( + table: "Systems", + columns: new[] { "Id", "CreatorId", "Name" }, + values: new object[] { 1ul, 1ul, "Test" }); + + migrationBuilder.InsertData( + table: "BodyToSystemJoins", + columns: new[] { "Id", "BodyId", "SystemId" }, + values: new object[] { 1ul, 1ul, 1ul }); + + migrationBuilder.InsertData( + table: "BodyToSystemJoins", + columns: new[] { "Id", "BodyId", "SystemId" }, + values: new object[] { 2ul, 2ul, 1ul }); + + migrationBuilder.InsertData( + table: "BodyToSystemJoins", + columns: new[] { "Id", "BodyId", "SystemId" }, + values: new object[] { 3ul, 3ul, 1ul }); + + migrationBuilder.CreateIndex( + name: "IX_Bodies_Id", + table: "Bodies", + column: "Id", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_BodyToSystemJoins_SystemId", + table: "BodyToSystemJoins", + column: "SystemId"); + + migrationBuilder.CreateIndex( + name: "IX_BodyToSystemJoins_BodyId_SystemId", + table: "BodyToSystemJoins", + columns: new[] { "BodyId", "SystemId" }, + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_Systems_CreatorId", + table: "Systems", + column: "CreatorId"); + + migrationBuilder.CreateIndex( + name: "IX_Systems_Id", + table: "Systems", + column: "Id", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_Users_Id", + table: "Users", + column: "Id", + unique: true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "BodyToSystemJoins"); + + migrationBuilder.DropTable( + name: "Bodies"); + + migrationBuilder.DropTable( + name: "Systems"); + + migrationBuilder.DropTable( + name: "Users"); + } + } +} diff --git a/StarSim/StarSimGui/Migrations/SimulatorContextModelSnapshot.cs b/StarSim/StarSimGui/Migrations/SimulatorContextModelSnapshot.cs @@ -0,0 +1,231 @@ +// <auto-generated /> +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using StarSimLib.Contexts; + +namespace StarSimGui.Migrations +{ + [DbContext(typeof(SimulatorContext))] + partial class SimulatorContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "2.2.4-servicing-10062"); + + modelBuilder.Entity("StarSimLib.Models.Body", b => + { + b.Property<ulong>("Id") + .ValueGeneratedOnAdd(); + + b.Property<double>("Mass"); + + b.Property<string>("Name") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(100) + .HasDefaultValue("UNNAMED"); + + b.Property<byte[]>("Timestamp") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate(); + + b.HasKey("Id"); + + b.HasIndex("Id") + .IsUnique(); + + b.ToTable("Bodies"); + + b.HasData( + new + { + Id = 1ul, + Mass = 1.9889200738424369E+36, + Name = "Sagittarius A*" + }, + new + { + Id = 2ul, + Mass = 1.9889200738424369E+30, + Name = "Sol" + }, + new + { + Id = 3ul, + Mass = 1.9889200738424369E+30, + Name = "Earth" + }); + }); + + modelBuilder.Entity("StarSimLib.Models.BodyToSystemJoin", b => + { + b.Property<ulong>("Id") + .ValueGeneratedOnAdd(); + + b.Property<ulong>("BodyId"); + + b.Property<ulong>("SystemId"); + + b.Property<byte[]>("Timestamp") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate(); + + b.HasKey("Id"); + + b.HasIndex("SystemId"); + + b.HasIndex("BodyId", "SystemId") + .IsUnique(); + + b.ToTable("BodyToSystemJoins"); + + b.HasData( + new + { + Id = 1ul, + BodyId = 1ul, + SystemId = 1ul + }, + new + { + Id = 2ul, + BodyId = 2ul, + SystemId = 1ul + }, + new + { + Id = 3ul, + BodyId = 3ul, + SystemId = 1ul + }); + }); + + modelBuilder.Entity("StarSimLib.Models.System", b => + { + b.Property<ulong>("Id") + .ValueGeneratedOnAdd(); + + b.Property<ulong>("CreatorId"); + + b.Property<string>("Name") + .IsRequired() + .HasMaxLength(100); + + b.Property<byte[]>("Timestamp") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate(); + + b.HasKey("Id"); + + b.HasIndex("CreatorId"); + + b.HasIndex("Id") + .IsUnique(); + + b.ToTable("Systems"); + + b.HasData( + new + { + Id = 1ul, + CreatorId = 1ul, + Name = "Test" + }); + }); + + modelBuilder.Entity("StarSimLib.Models.User", b => + { + b.Property<ulong>("Id") + .ValueGeneratedOnAdd(); + + b.Property<string>("Email") + .ValueGeneratedOnAdd() + .HasMaxLength(100) + .HasDefaultValue("john.doe@gmail.com"); + + b.Property<byte[]>("PasswordHash") + .IsRequired(); + + b.Property<byte[]>("PasswordSalt") + .IsRequired(); + + b.Property<int>("Privileges"); + + b.Property<byte[]>("Timestamp") + .IsConcurrencyToken() + .ValueGeneratedOnAddOrUpdate(); + + b.Property<string>("Username") + .IsRequired() + .HasMaxLength(100); + + b.HasKey("Id"); + + b.HasIndex("Id") + .IsUnique(); + + b.ToTable("Users"); + + b.HasData( + new + { + Id = 1ul, + PasswordHash = new byte[] { 109, 130, 25, 214, 39, 53, 131, 81, 48, 220, 120, 195, 63, 217, 205, 210, 13, 222, 80, 79, 152, 102, 78, 59, 249, 128, 195, 65, 122, 251, 241, 113, 174, 57, 222, 102, 66, 115, 206, 180, 211, 111, 49, 158, 94, 56, 8, 191, 15, 121, 249, 65, 244, 145, 72, 45, 255, 22, 110, 35, 105, 127, 73, 55, 23, 41, 249, 210, 171, 83, 253, 122, 230, 122, 189, 50, 28, 148, 171, 236, 169, 150, 63, 252, 22, 154, 150, 64, 54, 152, 169, 151, 36, 36, 63, 207, 96, 1, 4, 6, 249, 204, 17, 129, 224, 169, 140, 24, 162, 96, 120, 221, 48, 198, 59, 125, 234, 17, 12, 39, 242, 220, 57, 4, 96, 218, 139, 37, 81, 121, 239, 7, 55, 99, 32, 241, 216, 130, 57, 44, 64, 175, 107, 214, 131, 41, 140, 204, 51, 20, 136, 150, 136, 232, 127, 17, 223, 103, 122, 84, 160, 224, 170, 185, 148, 107, 5, 61, 247, 153, 166, 46, 249, 232, 32, 246, 136, 41, 19, 205, 62, 215, 132, 251, 60, 208, 199, 201, 187, 125, 129, 60, 195, 243, 101, 95, 236, 102, 93, 71, 29, 95, 68, 6, 28, 95, 53, 153, 232, 97, 72, 96, 16, 83, 51, 169, 110, 99, 105, 211, 23, 232, 217, 130, 121, 39, 208, 40, 162, 46, 117, 232, 234, 231, 70, 59, 106, 151, 183, 245, 236, 124, 91, 203, 245, 83, 178, 165, 222, 27, 221, 65, 109, 97, 163, 10, 203, 202, 28, 89, 97, 122, 163, 94, 167, 47, 26, 112, 218, 151, 41, 183, 66, 80, 7, 43, 211, 130, 37, 72, 140, 29, 20, 92, 89, 208, 97, 232, 150, 89, 202, 44, 222, 252, 135, 136, 140, 178, 182, 139, 174, 123, 103, 56, 86, 119, 253, 150, 168, 200, 107, 24, 223, 61, 52, 75, 161, 18, 66, 162, 156, 68, 201, 11, 137, 36, 247, 223, 116, 147, 34, 129, 127, 249, 229, 7, 178, 49, 86, 46, 57, 32, 154, 78, 160, 195, 84, 116, 45, 209, 162, 207, 148, 212, 43, 193, 164, 248, 36, 9, 234, 226, 76, 223, 146, 249, 42, 137, 15, 15, 207, 40, 87, 20, 74, 170, 237, 212, 86, 19, 187, 207, 84, 52, 126, 10, 35, 151, 207, 14, 39, 134, 236, 239, 248, 54, 15, 238, 120, 21, 55, 83, 136, 199, 202, 184, 18, 231, 11, 30, 208, 133, 206, 116, 195, 189, 91, 239, 46, 145, 216, 192, 70, 40, 158, 69, 144, 183, 188, 51, 212, 215, 123, 79, 33, 110, 128, 62, 104, 222, 52, 239, 14, 54, 224, 83, 79, 49, 105, 194, 170, 219, 7, 20, 130, 37, 165, 220, 239, 203, 100, 166, 116, 80, 27, 103, 39, 7, 74, 40, 150, 107, 130, 145, 42, 206, 36, 244, 169, 180, 98, 70, 136, 198, 113, 58, 81, 125, 61, 38, 2, 161, 31, 240, 110, 141, 206, 240, 211, 95, 92, 94, 130, 59, 51, 243, 86, 207, 72, 188, 29, 129, 145, 202, 44, 78, 92, 27, 144, 41, 250, 181, 143, 167, 193, 207, 206, 72, 54, 200, 28, 180, 176, 251, 48, 204, 193, 238, 10, 224, 25, 103, 190, 11, 74, 61, 12, 242, 227, 29, 29, 224, 97, 1, 44, 31, 54, 239, 70, 195, 197, 172, 107, 78, 205, 104, 220, 56, 163, 198, 129, 121, 230, 151, 243, 131, 134, 15, 131, 105, 163, 91, 222, 230, 161, 78, 106, 163, 84, 11, 95, 105, 83, 28, 245, 59, 29, 213, 72, 221, 60, 140, 38, 11, 145, 31, 241, 57, 70, 41, 172, 53, 167, 77, 10, 16, 193, 120, 58, 171, 39, 169, 39, 154, 53, 174, 169, 228, 228, 228, 26, 194, 143, 105, 126, 127, 105, 140, 58, 99, 98, 40, 136, 231, 66, 53, 54, 212, 17, 113, 103, 196, 60, 38, 173, 49, 18, 240, 50, 21, 255, 158, 55, 120, 186, 63, 52, 102, 115, 246, 21, 5, 182, 42, 101, 122, 60, 231, 184, 124, 178, 77, 76, 180, 195, 139, 234, 96, 255, 204, 92, 215, 247, 121, 11, 141, 72, 230, 46, 51, 162, 1, 235, 182, 197, 172, 103, 209, 216, 158, 12, 40, 94, 38, 32, 25, 134, 154, 96, 141, 173, 81, 82, 242, 118, 121, 53, 115, 101, 121, 184, 243, 12, 6, 159, 186, 211, 207, 2, 70, 18, 226, 26, 196, 15, 37, 15, 83, 216, 226, 166, 115, 221, 69, 229, 124, 162, 42, 52, 31, 108, 123, 109, 29, 68, 32, 242, 109, 6, 224, 240, 133, 8, 59, 182, 189, 158, 139, 110, 115, 36, 37, 197, 252, 145, 187, 150, 46, 5, 27, 110, 59, 231, 223, 107, 100, 215, 42, 5, 43, 26, 221, 205, 35, 190, 125, 60, 197, 213, 211, 76, 72, 123, 43, 99, 231, 119, 100, 67, 101, 33, 217, 138, 170, 199, 198, 116, 196, 236, 153, 140, 88, 13, 191, 12, 54, 38, 0, 10, 202, 63, 2, 37, 214, 113, 87, 216, 80, 121, 239, 199, 50, 97, 235, 25, 152, 242, 105, 150, 154, 80, 37, 191, 155, 5, 120, 123, 109, 127, 145, 131, 11, 29, 231, 225, 117, 190, 228, 147, 170, 177, 110, 108, 212, 192, 201, 248, 154, 237, 109, 91, 69, 170, 239, 135, 217, 23, 208, 47, 106, 109, 154, 63, 80, 85, 151, 78, 89, 115, 220, 21, 6, 178, 32, 95, 180, 4, 187, 101, 199, 16, 120, 121, 82, 147, 168, 83, 197, 155, 207, 95, 14, 230, 79, 119, 244, 137, 69, 218, 189, 39, 181, 40, 202, 135, 163, 210, 236, 19, 60, 215, 159, 249, 59, 79, 85, 101, 229, 26, 180, 63, 48, 11, 95, 8, 121, 207, 64, 254, 150, 73, 220, 89, 149, 107, 126, 245, 167, 240, 83, 124, 19, 154, 72, 251, 252, 165, 33, 255, 8, 50, 200, 220, 231, 194, 116, 111, 201, 244, 129, 129, 127, 44, 62, 101, 3, 201, 114, 185, 170, 59, 126, 138, 208, 145, 79, 44, 45, 18, 28, 198, 196, 78, 42, 183, 211, 200, 146, 211, 114, 142, 55, 115, 154, 127, 33, 115, 90, 97, 185, 55, 69, 0, 162, 62, 138, 194, 106, 95, 14, 85, 215, 127, 132, 116, 250, 215, 160, 240, 202, 148, 89, 176, 225, 18, 170, 110, 234, 192, 80, 111, 122, 221, 94, 248, 180, 40, 251, 75, 162, 171, 179, 73, 8, 7, 210, 167, 81, 91, 211, 126, 175, 34, 184, 164, 174, 199, 149, 109, 244, 185, 185, 6, 191, 103, 90, 84, 31, 242, 255, 127, 72, 232, 203, 249, 57, 160, 141, 5, 52, 142, 22, 209, 87, 21, 139, 148, 103, 175, 80, 104, 71, 51, 55, 100, 227, 35, 153, 191, 220, 10, 224, 60, 57, 202, 119, 110, 96, 202, 126, 62, 40, 41, 27, 196, 121, 1, 185, 230, 223, 114, 179, 214, 179, 65, 98, 179, 175, 88, 227, 231, 187, 179, 139, 243, 154, 204, 20, 201, 146, 89, 228, 89, 167, 117, 137, 62, 58, 253, 190, 65, 215, 0, 230, 36, 68, 50, 106, 46, 117, 35, 29, 12, 233, 198, 179, 6, 2, 237, 109, 216, 149, 166, 107, 123, 250, 115, 216, 233, 78, 13, 241, 109, 96, 31, 67, 128, 33, 114, 149, 229, 31, 155, 168, 94, 74, 26, 2, 223, 11, 153, 113, 130, 241, 105, 245, 154, 69, 55, 0, 1, 159, 235, 147, 165, 42, 167, 129, 61, 145, 162, 216, 106, 186, 247, 20, 132, 184, 66, 92, 14, 35, 82, 152, 223, 231, 230, 112, 138, 182, 231, 82, 59, 250, 158, 15, 55, 186, 52, 241, 99, 210, 93, 88, 244, 219, 64, 138, 171, 236, 69, 252, 184, 186, 163, 169, 191, 168, 182, 104, 117, 63, 68, 60, 174, 210, 255, 134, 202, 17, 19, 72, 219, 19, 227, 120, 218, 122, 148, 152, 60, 238, 189, 88, 182, 197, 102, 102, 253, 210, 174, 160, 100, 168, 230, 167, 95, 113, 249, 246, 159, 197, 229, 253, 164, 193, 226, 57, 23, 253, 63, 193, 225, 237, 124, 115, 126, 58, 30, 86, 72, 151, 97, 164, 108, 243, 152, 227, 158, 244, 120, 191, 137, 1, 56, 249, 212, 228, 13, 5, 227, 154, 124, 78, 65, 28, 155, 14, 250, 101, 82, 247, 147, 236, 200, 103, 233, 221, 0, 81, 232, 207, 72, 112, 57, 117, 7, 41, 47, 109, 192, 154, 32, 155, 122, 171, 37, 255, 109, 8, 218, 205, 210, 154, 123, 115, 240, 129, 144, 46, 158, 248, 168, 250, 111, 90, 41, 223, 201, 32, 36, 15, 237, 162, 10, 222, 156, 52, 55, 184, 142, 15, 161, 83, 194, 85, 1, 248, 228, 210, 111, 237, 167, 71, 115, 155, 175, 250, 182, 18, 56, 49, 226, 174, 162, 156, 15, 162, 21, 93, 89, 44, 147, 224, 135, 18, 215, 85, 215, 19, 92, 203, 142, 8, 7, 119, 183, 99, 17, 226, 234, 56, 102, 53, 69, 201, 24, 160, 148, 180, 12, 157, 142, 202, 67, 186, 165, 146, 188, 172, 117, 152, 123, 1, 175, 29, 99, 254, 233, 23, 72, 237, 74, 177, 99, 103, 93, 118, 232, 76, 237, 25, 44, 84, 16, 52, 102, 17, 113, 88, 112, 189, 13, 83, 152, 145, 44, 100, 249, 170, 21, 69, 134, 252, 168, 19, 58, 69, 67, 28, 223, 80, 174, 182, 223, 106, 214, 209, 82, 173, 227, 60, 236, 228, 245, 191, 215, 115, 201, 204, 60, 218, 162, 235, 77, 203, 202, 5, 154, 236, 200, 107, 164, 245, 238, 25, 71, 177, 155, 151, 65, 58, 165, 6, 24, 142, 35, 16, 194, 189, 248, 17, 153, 243, 55, 128, 188, 132, 102, 254, 125, 4, 46, 20, 206, 215, 152, 33, 142, 146, 229, 248, 242, 197, 157, 170, 249, 164, 45, 185, 20, 213, 44, 227, 238, 142, 182, 232, 183, 128, 189, 23, 138, 170, 37, 103, 5, 153, 16, 64, 123, 207, 17, 194, 62, 41, 199, 96, 102, 141, 133, 122, 19, 82, 104, 155, 122, 119, 39, 146, 45, 201, 154, 206, 169, 4, 2, 53, 53, 31, 43, 113, 0, 213, 177, 18, 48, 148, 241, 61, 247, 188, 96, 52, 23, 243, 112, 31, 24, 133, 201, 73, 245, 93, 248, 47, 41, 31, 102, 204, 43, 95, 26, 129, 54, 247, 140, 221, 30, 136, 248, 179, 44, 91, 118, 92, 183, 90, 216, 104, 1, 98, 168, 172, 94, 18, 55, 122, 255, 197, 174, 131, 152, 184, 160, 180, 108, 92, 122, 173, 122, 5, 71, 113, 114, 181, 214, 39, 34, 51, 29, 7, 234, 122, 228, 67, 53, 127, 137, 141, 16, 164, 174, 9, 16, 179, 172, 136, 9, 219, 40, 132, 10, 246, 163, 169, 79, 125, 210, 3, 2, 171, 94, 239, 100, 27, 135, 142, 38, 130, 236, 88, 67, 221, 246, 137, 33, 189, 7, 138, 140, 197, 116, 171, 21, 251, 64, 236, 120, 185, 148, 182, 203, 223, 157, 11, 77, 73, 232, 160, 202, 167, 13, 248, 239, 12, 192, 195, 46, 157, 145, 91, 148, 195, 123, 88, 120, 0, 157, 172, 195, 45, 89, 181, 159, 129, 74, 31, 147, 69, 195, 39, 118, 50, 192, 142, 231, 17, 135, 139, 16, 170, 14, 48, 68, 121, 240, 62, 195, 221, 93, 159, 70, 143, 212, 110, 168, 153, 146, 255, 57, 55, 30, 16, 168, 148, 252, 43, 169, 27, 43, 243, 100, 99, 30, 99, 70, 20, 68, 50, 236, 217, 194, 195, 144, 121, 23, 202, 254, 143, 21, 66, 241, 223, 158, 190, 138, 209, 143, 150, 63, 143, 237, 17, 42, 106, 175, 133, 199, 211, 41, 123, 144, 111, 91, 146, 37, 61, 161, 100, 116, 169, 51, 3, 2, 18, 154, 112, 97, 63, 43, 254, 249, 105, 193, 130, 18, 69, 198, 23, 198, 222, 9, 164, 41, 24, 236, 45, 100, 9, 17, 245, 237, 61, 139, 193, 66, 206, 37, 242, 179, 15, 225, 238, 75, 126, 61, 190, 214, 104, 123, 113, 33, 20, 222, 102, 59, 115, 231, 76, 152, 105, 55, 209, 172, 178, 173, 76 }, + PasswordSalt = new byte[] { 176, 102, 80, 107, 173, 26, 240, 36, 98, 4, 222, 144, 88, 201, 220, 103, 160, 116, 0, 92, 236, 201, 183, 162, 26, 29, 209, 47, 81, 205, 52, 53, 33, 204, 36, 127, 110, 95, 180, 44, 127, 51, 169, 164, 212, 113, 207, 236, 101, 209, 127, 18, 134, 198, 247, 42, 172, 39, 10, 40, 23, 46, 77, 21, 189, 52, 75, 80, 77, 139, 72, 99, 80, 68, 239, 74, 167, 21, 209, 27, 211, 98, 31, 225, 79, 40, 159, 95, 196, 133, 138, 43, 247, 28, 240, 146, 211, 226, 74, 57, 214, 121, 48, 92, 15, 147, 243, 33, 28, 92, 197, 188, 48, 7, 181, 152, 242, 168, 163, 96, 0, 159, 206, 73, 49, 152, 27, 192, 196, 54, 157, 85, 64, 164, 128, 35, 23, 105, 108, 92, 29, 156, 53, 145, 84, 103, 79, 21, 96, 113, 188, 33, 113, 65, 154, 132, 121, 41, 137, 31, 235, 8, 230, 254, 248, 198, 42, 5, 80, 69, 127, 98, 188, 206, 21, 73, 33, 184, 57, 249, 180, 69, 40, 117, 146, 197, 223, 247, 202, 167, 207, 203, 163, 81, 121, 224, 45, 116, 158, 244, 194, 215, 199, 138, 253, 247, 82, 4, 67, 187, 230, 47, 98, 211, 106, 134, 56, 15, 242, 18, 200, 118, 184, 127, 243, 6, 172, 3, 245, 21, 205, 136, 158, 254, 78, 140, 147, 65, 140, 174, 97, 145, 219, 87, 51, 10, 97, 105, 167, 44, 146, 12, 229, 85, 162, 181, 191, 26, 120, 213, 226, 55, 30, 177, 82, 34, 80, 109, 181, 26, 130, 127, 43, 107, 193, 132, 125, 43, 206, 23, 32, 169, 155, 250, 212, 160, 133, 213, 214, 47, 114, 101, 226, 5, 16, 92, 63, 103, 149, 4, 189, 165, 216, 164, 7, 240, 5, 14, 191, 237, 112, 244, 106, 0, 181, 75, 54, 230, 109, 250, 216, 67, 251, 235, 160, 153, 59, 122, 208, 151, 94, 58, 68, 6, 65, 217, 5, 90, 178, 83, 228, 101, 141, 216, 69, 94, 93, 90, 211, 238, 190, 214, 246, 126, 229, 17, 214, 74, 212, 4, 179, 132, 187, 24, 64, 122, 46, 75, 0, 72, 35, 134, 93, 40, 184, 83, 238, 5, 111, 161, 203, 210, 174, 78, 32, 228, 87, 166, 110, 134, 179, 128, 200, 65, 244, 27, 184, 108, 44, 219, 123, 76, 75, 56, 220, 4, 202, 89, 84, 251, 224, 215, 35, 178, 54, 48, 195, 172, 212, 201, 208, 132, 136, 42, 125, 17, 215, 51, 82, 170, 185, 109, 167, 74, 45, 164, 236, 192, 192, 41, 11, 179, 117, 107, 80, 168, 129, 102, 0, 131, 39, 184, 191, 206, 120, 220, 254, 210, 228, 79, 13, 241, 122, 190, 20, 45, 109, 239, 231, 151, 230, 239, 83, 157, 111, 62, 112, 100, 243, 157, 40, 141, 41, 97, 119, 96, 205, 248, 164, 108, 160, 157, 12, 118, 213, 34, 243, 192, 90, 91, 139, 92, 214, 195, 30, 185, 198, 84, 238, 77, 219, 79, 238, 169, 11, 115, 166, 25, 47, 226, 255, 168, 254, 187, 230, 97, 41, 33, 99, 170, 21, 148, 95, 171, 99, 35, 187, 215, 168, 24, 239, 208, 67, 109, 188, 94, 122, 96, 169, 124, 213, 210, 134, 77, 231, 0, 35, 98, 155, 219, 210, 2, 157, 2, 206, 92, 166, 77, 56, 238, 222, 171, 14, 73, 239, 156, 169, 114, 241, 96, 163, 206, 97, 196, 22, 199, 221, 157, 230, 1, 236, 4, 30, 79, 5, 249, 108, 44, 181, 108, 222, 163, 113, 146, 171, 161, 166, 76, 90, 60, 46, 92, 48, 127, 245, 166, 231, 168, 75, 143, 147, 222, 24, 15, 253, 85, 242, 114, 53, 141, 228, 246, 112, 204, 165, 18, 82, 247, 220, 79, 226, 198, 201, 213, 162, 33, 96, 112, 167, 166, 45, 78, 222, 215, 138, 207, 237, 154, 89, 130, 25, 187, 46, 244, 50, 15, 89, 231, 235, 238, 237, 185, 245, 91, 165, 85, 101, 147, 43, 95, 143, 3, 117, 169, 21, 82, 232, 103, 128, 249, 222, 33, 232, 14, 130, 117, 53, 74, 222, 21, 5, 82, 74, 188, 43, 56, 208, 208, 23, 141, 97, 151, 214, 167, 126, 236, 218, 83, 113, 205, 180, 52, 125, 112, 203, 89, 3, 211, 182, 145, 210, 118, 167, 4, 224, 135, 163, 52, 219, 5, 222, 39, 221, 73, 40, 137, 124, 216, 105, 67, 255, 197, 19, 253, 129, 194, 108, 97, 82, 95, 216, 90, 112, 67, 80, 81, 121, 40, 65, 149, 86, 28, 98, 104, 36, 177, 102, 195, 110, 12, 226, 24, 72, 205, 59, 143, 107, 250, 253, 105, 138, 93, 163, 164, 119, 193, 91, 38, 199, 56, 191, 63, 193, 159, 200, 182, 80, 218, 134, 79, 226, 69, 75, 63, 88, 47, 178, 35, 161, 241, 39, 199, 168, 156, 118, 197, 240, 43, 121, 207, 193, 194, 156, 234, 78, 72, 4, 0, 47, 3, 5, 241, 65, 223, 179, 185, 224, 215, 71, 164, 133, 202, 219, 66, 99, 106, 242, 40, 131, 12, 160, 14, 91, 158, 51, 146, 111, 121, 157, 210, 96, 168, 60, 60, 26, 199, 213, 62, 58, 11, 200, 97, 157, 18, 128, 25, 236, 187, 41, 149, 236, 144, 174, 197, 230, 59, 231, 97, 85, 84, 13, 161, 144, 177, 218, 219, 136, 206, 28, 179, 42, 131, 111, 110, 190, 176, 21, 183, 57, 134, 131, 69, 74, 122, 168, 120, 214, 101, 214, 193, 37, 185, 192, 220, 38, 79, 24, 88, 132, 89, 72, 37, 183, 169, 100, 23, 114, 144, 32, 219, 220, 115, 170, 177, 118, 237, 230, 35, 236, 173, 251, 181, 249, 226, 59, 203, 172, 105, 228, 117, 103, 231, 78, 148, 15, 138, 134, 36, 207, 87, 194, 3, 9, 214, 38, 121, 15, 63, 13, 15, 153, 35, 254, 35, 174, 69, 11, 245, 132, 173, 174, 155, 217, 106, 178, 106, 48, 117, 74, 178, 112, 233, 104, 31, 145, 55, 93, 246, 136, 131, 174, 176, 138, 39, 168, 40, 33, 104, 34, 237, 28, 141, 207, 100, 142, 80, 81, 219, 27, 148, 218, 184, 144, 210, 89, 113, 59, 73, 247, 242, 6, 247, 237, 56, 132, 141, 148, 251, 103, 77, 51, 160, 177, 8, 190, 48, 254, 64, 60, 14, 241, 244, 240, 3, 11, 53, 101, 148, 32, 97, 160, 224, 58, 128, 158, 95, 234, 122, 74, 191, 151, 49, 89, 218, 32, 250, 231, 244, 97, 30, 166, 95, 67, 101, 171, 245, 55, 106, 76, 251, 172, 61, 200, 113, 210, 215, 160, 205, 237, 189, 82, 2, 136, 5, 6, 98, 51, 220, 53, 78, 254, 35, 159, 121, 3, 106, 19, 251, 212, 194, 114, 67, 124, 66, 235, 93, 166, 240, 19, 46, 168, 250, 37, 84, 236, 70, 162, 157, 204, 73, 0, 180, 53, 32, 119, 178, 200, 38, 63, 163, 237, 26, 31, 228, 179, 95, 170, 159, 54, 142, 209, 8, 250, 82, 182, 31, 240, 72, 80, 213, 109, 159, 31, 110, 132, 37, 155, 75, 67, 11, 49, 200, 172, 246, 71, 255, 19, 157, 65, 44, 26, 135, 18, 54, 95, 106, 133, 154, 244, 148, 228, 207, 166, 168, 48, 249, 209, 119, 37, 250, 60, 88, 182, 182, 151, 43, 248, 96, 78, 254, 252, 100, 57, 211, 21, 236, 116, 216, 41, 192, 68, 135, 2, 226, 29, 51, 236, 141, 232, 95, 186, 236, 112, 150, 135, 86, 101, 93, 122, 102, 212, 137, 104, 18, 213, 8, 155, 5, 127, 204, 110, 37, 3, 31, 23, 83, 183, 63, 202, 204, 206, 127, 88, 208, 69, 16, 214, 119, 203, 53, 159, 219, 15, 88, 183, 17, 22, 170, 199, 45, 27, 107, 68, 43, 108, 52, 161, 238, 44, 101, 92, 230, 168, 211, 191, 108, 91, 62, 118, 98, 214, 69, 238, 93, 255, 143, 133, 188, 224, 248, 96, 89, 230, 71, 195, 244, 87, 129, 151, 26, 171, 133, 111, 243, 122, 237, 114, 26, 15, 244, 130, 144, 216, 216, 149, 81, 22, 193, 28, 110, 210, 96, 172, 218, 57, 221, 139, 249, 159, 150, 253, 194, 58, 79, 121, 190, 41, 41, 14, 165, 128, 34, 12, 142, 84, 71, 21, 60, 205, 0, 88, 29, 115, 72, 15, 128, 192, 166, 64, 18, 16, 179, 215, 250, 136, 239, 183, 168, 39, 164, 248, 226, 95, 235, 79, 15, 20, 115, 183, 164, 38, 249, 175, 217, 5, 67, 112, 214, 41, 221, 102, 124, 54, 88, 231, 85, 61, 165, 234, 224, 97, 159, 77, 150, 39, 110, 195, 166, 111, 11, 179, 23, 44, 145, 197, 218, 246, 52, 180, 21, 186, 1, 192, 103, 25, 23, 123, 81, 107, 30, 187, 154, 207, 202, 10, 39, 89, 216, 26, 153, 184, 36, 103, 106, 238, 45, 112, 54, 69, 225, 200, 52, 47, 193, 129, 73, 171, 158, 0, 231, 252, 67, 234, 133, 112, 133, 217, 166, 180, 43, 253, 8, 228, 193, 226, 230, 212, 214, 164, 201, 212, 72, 239, 198, 5, 75, 142, 114, 48, 77, 132, 117, 87, 60, 135, 98, 180, 178, 159, 228, 59, 54, 63, 76, 47, 221, 226, 108, 178, 161, 37, 191, 90, 206, 71, 160, 13, 108, 36, 32, 31, 239, 248, 65, 250, 19, 255, 107, 79, 108, 44, 5, 211, 53, 167, 220, 60, 214, 16, 207, 107, 3, 6, 251, 125, 57, 215, 238, 138, 198, 27, 155, 170, 116, 147, 172, 124, 227, 124, 74, 170, 9, 232, 148, 42, 201, 25, 65, 30, 35, 178, 211, 97, 115, 19, 219, 21, 69, 201, 253, 97, 248, 136, 202, 80, 252, 168, 96, 89, 149, 200, 139, 166, 186, 93, 255, 181, 11, 131, 130, 82, 13, 8, 175, 68, 29, 71, 4, 113, 75, 34, 207, 90, 32, 250, 50, 79, 135, 173, 117, 198, 0, 251, 185, 215, 183, 32, 229, 149, 0, 128, 97, 49, 52, 163, 76, 153, 152, 245, 121, 83, 156, 79, 141, 99, 129, 134, 231, 24, 40, 129, 115, 225, 128, 71, 249, 194, 146, 102, 20, 31, 236, 129, 195, 74, 249, 203, 105, 188, 135, 110, 193, 194, 183, 10, 141, 214, 139, 21, 40, 34, 172, 20, 27, 70, 17, 201, 76, 197, 173, 96, 20, 15, 246, 251, 61, 218, 179, 217, 116, 57, 108, 60, 15, 157, 1, 149, 176, 105, 80, 129, 50, 134, 241, 26, 153, 0, 88, 133, 17, 101, 107, 50, 98, 240, 4, 91, 80, 176, 170, 55, 56, 90, 23, 155, 83, 126, 222, 8, 42, 253, 128, 135, 19, 43, 106, 200, 252, 12, 139, 174, 54, 208, 48, 116, 58, 85, 234, 2, 6, 48, 66, 29, 212, 12, 89, 25, 72, 223, 45, 212, 238, 216, 169, 156, 195, 147, 197, 141, 38, 180, 68, 226, 36, 129, 176, 134, 51, 115, 237, 204, 8, 234, 214, 170, 192, 132, 72, 113, 219, 97, 138, 149, 208, 64, 130, 97, 243, 215, 14, 146, 156, 155, 180, 176, 178, 244, 225, 43, 118, 181, 120, 98, 238, 2, 52, 241, 117, 87, 122, 113, 106, 210, 10, 250, 243, 160, 188, 20, 141, 110, 38, 21, 3, 207, 226, 87, 49, 207, 170, 105, 204, 150, 99, 9, 70, 58, 230, 54, 63, 70, 96, 241, 92, 213, 115, 91, 17, 198, 77, 137, 183, 207, 100, 128, 130, 4, 153, 228, 128, 168, 0, 127, 170, 117, 84, 35, 222, 240, 191, 190, 179, 167, 45, 17, 0, 124, 166, 91, 112, 131, 203, 159, 131, 139, 206, 7, 165, 161, 72, 89, 54, 59, 29, 170, 96, 23, 167, 55, 219, 236, 169, 155, 121, 87, 234, 200, 187, 196, 99, 99, 170, 245, 34, 0, 204, 150, 68, 142, 209, 142, 130, 198, 89, 224, 17, 132, 186, 156, 68, 180, 94, 213, 96, 110, 235, 166, 97, 48, 127, 48, 100, 76, 202, 179, 126, 210, 107, 242, 246, 70, 106, 151, 1, 9, 206, 37, 3, 209, 33, 125, 84, 133, 122, 113, 0, 93, 31, 237, 213, 151, 70, 170, 204, 69, 48, 96, 208 }, + Privileges = 8, + Username = "User" + }, + new + { + Id = 2ul, + PasswordHash = new byte[] { 228, 156, 247, 87, 85, 44, 125, 62, 169, 91, 105, 98, 152, 58, 237, 2, 2, 222, 106, 70, 101, 90, 137, 214, 225, 198, 101, 85, 185, 211, 221, 77, 96, 34, 81, 1, 137, 79, 181, 188, 11, 198, 239, 160, 147, 141, 116, 56, 73, 153, 177, 189, 37, 229, 18, 75, 144, 171, 252, 3, 77, 196, 237, 255, 212, 3, 27, 145, 230, 15, 68, 234, 213, 203, 12, 30, 215, 38, 224, 241, 208, 7, 90, 77, 222, 237, 18, 126, 170, 209, 178, 127, 144, 41, 184, 219, 158, 29, 45, 64, 173, 9, 43, 174, 174, 57, 100, 40, 224, 224, 165, 89, 125, 195, 32, 230, 21, 162, 152, 239, 2, 162, 130, 125, 205, 169, 247, 5, 33, 246, 199, 189, 90, 78, 176, 11, 195, 199, 82, 247, 208, 191, 23, 240, 130, 111, 46, 156, 255, 7, 167, 152, 178, 129, 233, 93, 121, 244, 249, 90, 79, 161, 216, 143, 31, 193, 187, 61, 60, 166, 70, 180, 220, 127, 164, 221, 163, 40, 74, 150, 245, 170, 97, 81, 128, 202, 200, 76, 116, 79, 77, 192, 129, 47, 195, 105, 36, 107, 245, 46, 88, 154, 195, 252, 203, 96, 47, 72, 151, 190, 98, 239, 16, 199, 246, 160, 44, 45, 142, 122, 94, 61, 162, 157, 34, 183, 232, 224, 248, 18, 173, 110, 202, 9, 40, 63, 137, 126, 145, 97, 162, 54, 206, 21, 221, 131, 207, 11, 216, 3, 73, 174, 254, 211, 71, 162, 221, 251, 48, 41, 236, 88, 245, 8, 5, 120, 65, 121, 119, 204, 182, 4, 71, 25, 253, 213, 166, 2, 193, 99, 253, 64, 245, 70, 198, 16, 194, 184, 14, 208, 144, 228, 80, 248, 149, 245, 205, 119, 24, 10, 186, 233, 146, 173, 235, 239, 197, 109, 106, 171, 115, 197, 211, 40, 169, 152, 118, 43, 134, 82, 124, 43, 35, 82, 202, 18, 7, 80, 17, 152, 114, 130, 190, 242, 114, 125, 90, 1, 181, 215, 68, 40, 82, 135, 124, 51, 252, 194, 172, 211, 252, 36, 71, 104, 239, 139, 93, 225, 116, 254, 218, 102, 4, 220, 40, 167, 173, 102, 58, 16, 70, 144, 6, 33, 86, 79, 197, 104, 254, 88, 161, 210, 222, 221, 19, 21, 88, 34, 225, 147, 133, 76, 162, 81, 131, 92, 218, 157, 205, 6, 82, 7, 71, 1, 192, 227, 181, 149, 245, 240, 211, 68, 150, 43, 110, 248, 40, 67, 37, 122, 217, 93, 108, 196, 255, 170, 146, 122, 104, 21, 150, 34, 69, 141, 213, 24, 98, 253, 185, 192, 66, 143, 194, 76, 168, 10, 231, 205, 234, 250, 162, 18, 185, 173, 99, 220, 238, 184, 10, 128, 153, 59, 232, 43, 87, 76, 34, 83, 177, 74, 174, 94, 52, 221, 93, 186, 247, 54, 100, 98, 171, 145, 87, 220, 136, 81, 14, 23, 86, 32, 70, 191, 103, 20, 110, 12, 144, 28, 166, 200, 163, 23, 249, 104, 182, 185, 36, 119, 18, 82, 26, 34, 134, 39, 66, 42, 48, 182, 171, 85, 136, 225, 55, 73, 54, 195, 4, 137, 84, 110, 95, 144, 235, 160, 71, 19, 145, 189, 243, 181, 189, 167, 47, 149, 74, 107, 163, 241, 88, 71, 180, 56, 196, 52, 42, 40, 0, 192, 28, 188, 138, 13, 197, 220, 48, 230, 68, 235, 215, 16, 236, 241, 123, 237, 178, 29, 17, 153, 226, 29, 109, 13, 242, 87, 41, 105, 43, 67, 99, 245, 128, 165, 18, 245, 100, 167, 88, 28, 191, 129, 126, 99, 18, 51, 215, 22, 36, 171, 242, 156, 58, 149, 243, 209, 5, 66, 98, 63, 245, 143, 101, 82, 220, 122, 249, 52, 97, 144, 149, 58, 131, 200, 26, 64, 99, 163, 52, 163, 175, 145, 102, 184, 140, 125, 228, 208, 137, 216, 194, 227, 151, 96, 53, 171, 6, 245, 163, 80, 160, 2, 2, 154, 49, 69, 11, 214, 173, 171, 59, 140, 76, 234, 244, 219, 54, 224, 149, 198, 153, 118, 82, 160, 126, 4, 41, 163, 237, 244, 202, 91, 85, 223, 211, 6, 92, 213, 220, 120, 206, 113, 143, 33, 223, 224, 110, 152, 247, 43, 242, 246, 118, 26, 162, 50, 158, 193, 222, 149, 226, 216, 190, 91, 62, 163, 28, 174, 35, 226, 193, 107, 78, 134, 75, 58, 242, 100, 193, 211, 54, 66, 165, 12, 161, 130, 121, 128, 239, 96, 48, 153, 175, 180, 155, 105, 171, 72, 190, 29, 229, 118, 251, 24, 21, 194, 252, 45, 52, 176, 177, 62, 166, 102, 90, 131, 82, 155, 175, 222, 48, 192, 118, 63, 139, 213, 179, 212, 105, 20, 78, 51, 243, 249, 22, 127, 17, 186, 250, 11, 78, 3, 83, 171, 38, 37, 41, 38, 63, 65, 222, 207, 249, 148, 87, 106, 134, 84, 246, 255, 123, 14, 205, 34, 28, 107, 223, 205, 95, 192, 88, 185, 237, 27, 9, 131, 142, 151, 163, 50, 76, 133, 229, 56, 151, 210, 65, 213, 11, 93, 35, 67, 112, 86, 193, 35, 227, 46, 96, 133, 80, 113, 101, 151, 71, 33, 68, 152, 28, 19, 113, 42, 13, 219, 122, 251, 73, 19, 198, 183, 149, 91, 159, 84, 37, 247, 126, 168, 1, 191, 85, 136, 162, 14, 12, 125, 203, 212, 16, 57, 93, 91, 113, 57, 156, 1, 201, 238, 92, 196, 66, 133, 67, 217, 164, 87, 10, 232, 105, 130, 241, 103, 66, 5, 185, 101, 252, 156, 113, 216, 190, 164, 7, 240, 175, 11, 5, 9, 103, 64, 227, 81, 158, 104, 152, 156, 158, 77, 165, 52, 89, 207, 215, 11, 57, 224, 93, 73, 225, 122, 102, 51, 170, 120, 6, 156, 218, 161, 246, 66, 62, 184, 160, 84, 207, 232, 117, 66, 134, 229, 211, 170, 5, 171, 235, 20, 202, 183, 86, 180, 190, 207, 76, 107, 219, 23, 229, 125, 79, 82, 88, 118, 71, 15, 216, 227, 174, 230, 26, 1, 238, 140, 17, 146, 214, 4, 92, 124, 86, 95, 48, 187, 236, 4, 125, 119, 229, 209, 174, 85, 249, 69, 15, 95, 251, 242, 218, 248, 246, 113, 142, 75, 211, 100, 246, 230, 184, 81, 145, 249, 154, 198, 234, 227, 239, 222, 9, 141, 235, 7, 157, 7, 15, 44, 146, 154, 221, 215, 197, 228, 19, 245, 163, 158, 159, 8, 240, 218, 173, 142, 51, 26, 20, 124, 164, 191, 241, 32, 241, 52, 209, 151, 253, 148, 3, 179, 39, 118, 177, 55, 240, 188, 38, 239, 160, 139, 66, 199, 67, 79, 155, 181, 222, 203, 239, 181, 195, 50, 113, 187, 242, 63, 119, 90, 130, 251, 108, 94, 12, 240, 232, 225, 214, 255, 250, 42, 55, 193, 19, 146, 242, 64, 217, 99, 70, 129, 117, 157, 69, 127, 241, 64, 131, 137, 139, 53, 167, 31, 74, 79, 22, 42, 72, 131, 181, 219, 8, 5, 173, 119, 150, 143, 255, 60, 19, 172, 25, 125, 19, 162, 132, 44, 164, 72, 143, 236, 46, 94, 15, 237, 200, 62, 17, 73, 132, 240, 195, 51, 88, 13, 170, 108, 15, 87, 59, 190, 140, 71, 151, 3, 174, 82, 83, 74, 198, 18, 157, 119, 81, 245, 54, 47, 209, 72, 2, 139, 24, 137, 96, 154, 31, 21, 64, 103, 233, 150, 14, 63, 9, 70, 206, 75, 67, 174, 83, 102, 26, 183, 180, 212, 136, 49, 3, 19, 190, 65, 208, 135, 25, 7, 213, 2, 98, 99, 70, 113, 33, 224, 226, 81, 213, 90, 134, 76, 236, 178, 98, 124, 254, 178, 242, 150, 75, 91, 249, 70, 149, 39, 148, 14, 198, 71, 167, 155, 248, 15, 184, 229, 176, 144, 66, 165, 240, 217, 98, 230, 157, 34, 93, 245, 96, 32, 95, 111, 253, 236, 206, 84, 122, 71, 218, 113, 214, 220, 58, 23, 91, 70, 248, 153, 23, 39, 84, 15, 45, 84, 64, 44, 178, 143, 238, 17, 209, 196, 156, 154, 101, 102, 209, 5, 99, 1, 61, 163, 2, 147, 119, 174, 114, 13, 40, 104, 56, 17, 96, 253, 188, 32, 67, 24, 115, 142, 51, 77, 158, 98, 22, 237, 15, 7, 232, 34, 93, 209, 200, 101, 135, 32, 188, 79, 213, 252, 24, 97, 141, 64, 88, 114, 112, 131, 57, 196, 34, 50, 84, 251, 61, 189, 9, 35, 162, 195, 173, 199, 159, 148, 129, 194, 126, 237, 122, 57, 40, 80, 68, 74, 178, 139, 24, 63, 227, 35, 86, 252, 234, 246, 66, 118, 22, 44, 111, 119, 235, 22, 113, 72, 41, 7, 46, 103, 255, 35, 220, 31, 118, 207, 70, 48, 204, 132, 167, 0, 12, 219, 69, 153, 45, 216, 246, 10, 56, 19, 161, 112, 178, 23, 225, 201, 48, 152, 135, 177, 126, 119, 141, 86, 236, 5, 186, 33, 121, 21, 107, 77, 194, 122, 184, 157, 160, 232, 139, 155, 65, 86, 219, 15, 112, 191, 2, 212, 171, 158, 164, 208, 140, 245, 187, 128, 38, 103, 103, 198, 133, 197, 222, 199, 102, 231, 88, 106, 103, 110, 128, 154, 14, 110, 78, 187, 201, 49, 162, 82, 91, 250, 99, 175, 114, 8, 207, 211, 1, 250, 98, 101, 1, 249, 160, 38, 29, 97, 71, 251, 6, 72, 66, 77, 158, 251, 49, 24, 212, 180, 228, 66, 115, 38, 113, 16, 235, 169, 30, 75, 161, 93, 144, 61, 86, 54, 68, 79, 236, 106, 231, 82, 59, 252, 16, 55, 160, 235, 53, 131, 219, 34, 144, 194, 25, 219, 223, 117, 249, 220, 39, 203, 58, 50, 176, 100, 112, 59, 160, 159, 51, 210, 220, 22, 178, 59, 234, 130, 58, 207, 211, 206, 73, 123, 150, 1, 217, 143, 79, 10, 101, 171, 244, 114, 220, 22, 254, 34, 110, 19, 34, 172, 6, 49, 229, 46, 57, 204, 115, 55, 56, 224, 52, 213, 167, 22, 5, 115, 199, 146, 21, 50, 34, 202, 20, 206, 142, 127, 250, 174, 100, 12, 220, 117, 120, 109, 172, 126, 57, 182, 108, 143, 202, 188, 139, 183, 203, 164, 203, 237, 238, 217, 107, 116, 156, 229, 132, 54, 213, 4, 69, 116, 109, 74, 112, 93, 244, 195, 246, 219, 63, 16, 53, 145, 233, 98, 199, 176, 212, 123, 37, 175, 58, 138, 152, 192, 129, 197, 51, 27, 35, 35, 203, 106, 149, 22, 13, 1, 251, 101, 83, 115, 63, 98, 43, 49, 93, 32, 251, 252, 181, 131, 40, 34, 109, 190, 61, 124, 16, 240, 110, 45, 79, 54, 118, 109, 24, 122, 127, 213, 250, 166, 255, 149, 4, 240, 240, 235, 217, 196, 98, 128, 19, 18, 221, 13, 239, 161, 154, 89, 8, 212, 7, 50, 154, 182, 189, 229, 91, 113, 132, 189, 132, 88, 189, 250, 191, 117, 34, 56, 18, 203, 6, 144, 196, 66, 172, 224, 46, 152, 67, 212, 238, 209, 199, 68, 12, 212, 200, 184, 227, 154, 143, 82, 63, 225, 104, 35, 118, 35, 49, 217, 222, 207, 189, 173, 244, 70, 92, 245, 128, 44, 75, 105, 148, 45, 203, 144, 244, 37, 233, 234, 73, 95, 177, 99, 20, 152, 239, 189, 12, 54, 175, 153, 239, 98, 213, 120, 30, 206, 231, 252, 60, 128, 182, 116, 21, 231, 205, 189, 83, 207, 46, 143, 238, 134, 53, 208, 75, 54, 107, 195, 60, 36, 233, 28, 54, 211, 10, 36, 200, 21, 167, 130, 195, 205, 134, 155, 101, 165, 56, 170, 111, 63, 169, 188, 183, 162, 182, 132, 235, 64, 248, 141, 194, 36, 85, 70, 253, 62, 154, 166, 198, 225, 38, 222, 37, 118, 27, 7, 94, 136, 109, 184, 172, 132, 173, 23, 3, 122, 1, 188, 9, 93, 207, 155, 94, 211, 195, 126, 46, 121, 154, 157, 203, 8, 41, 160, 168, 45, 67, 34, 26, 189, 16, 170, 74, 37, 172, 149, 2, 108, 29, 67, 134, 238, 249, 208, 188, 105, 133, 248, 175, 33, 167, 186, 246, 155, 133, 121, 78, 122, 68, 229, 82, 48, 242, 137, 132, 184, 130, 223, 231, 227, 187, 155, 199, 223, 189, 238, 78, 142, 91, 142, 151, 3, 83, 82 }, + PasswordSalt = new byte[] { 79, 233, 99, 247, 7, 211, 109, 228, 11, 213, 83, 90, 111, 19, 14, 23, 189, 12, 92, 110, 83, 224, 51, 183, 19, 80, 203, 202, 201, 161, 157, 39, 78, 218, 113, 230, 156, 150, 148, 254, 35, 212, 220, 65, 165, 142, 60, 203, 96, 40, 41, 139, 125, 155, 222, 186, 205, 244, 120, 85, 61, 159, 15, 70, 174, 17, 81, 199, 167, 144, 158, 102, 92, 46, 144, 91, 161, 4, 247, 105, 116, 217, 12, 71, 64, 19, 47, 169, 85, 52, 129, 0, 30, 53, 51, 172, 33, 155, 74, 17, 154, 248, 2, 218, 56, 251, 192, 163, 56, 182, 141, 215, 86, 189, 43, 132, 199, 236, 33, 121, 237, 153, 25, 15, 201, 16, 111, 245, 64, 188, 30, 190, 116, 151, 25, 58, 138, 191, 82, 170, 32, 70, 139, 58, 82, 188, 58, 147, 125, 27, 131, 169, 110, 172, 218, 81, 155, 177, 81, 176, 195, 231, 145, 126, 2, 155, 209, 119, 34, 146, 47, 199, 1, 76, 3, 116, 175, 172, 232, 177, 109, 71, 200, 185, 235, 245, 58, 22, 213, 238, 110, 205, 145, 98, 231, 97, 149, 127, 7, 143, 204, 62, 95, 48, 129, 47, 188, 132, 58, 202, 157, 138, 123, 67, 228, 38, 154, 221, 141, 0, 44, 48, 115, 244, 74, 119, 111, 92, 191, 212, 239, 96, 204, 255, 211, 76, 146, 141, 234, 200, 148, 134, 79, 180, 203, 135, 48, 180, 33, 157, 52, 189, 82, 4, 43, 140, 207, 118, 115, 39, 210, 111, 130, 115, 182, 87, 40, 169, 157, 237, 37, 88, 132, 136, 140, 147, 23, 107, 142, 226, 248, 84, 255, 30, 138, 130, 89, 215, 191, 191, 197, 163, 199, 123, 242, 168, 49, 234, 210, 15, 4, 176, 180, 94, 127, 39, 159, 28, 63, 97, 5, 76, 124, 97, 6, 194, 2, 161, 181, 164, 6, 255, 155, 165, 135, 181, 92, 5, 130, 41, 46, 168, 37, 118, 101, 17, 3, 248, 167, 199, 63, 104, 178, 64, 103, 23, 104, 212, 139, 104, 143, 234, 184, 245, 255, 200, 212, 3, 28, 0, 220, 65, 172, 85, 143, 110, 119, 28, 15, 199, 42, 85, 66, 107, 35, 66, 234, 30, 211, 142, 49, 126, 71, 187, 247, 70, 61, 37, 93, 37, 179, 122, 50, 147, 178, 116, 172, 175, 197, 157, 254, 134, 229, 92, 220, 131, 44, 140, 4, 18, 176, 255, 118, 17, 72, 116, 45, 243, 178, 244, 185, 113, 15, 79, 19, 241, 25, 115, 46, 152, 138, 84, 162, 25, 141, 231, 99, 236, 31, 37, 209, 23, 226, 70, 192, 7, 142, 126, 130, 100, 193, 142, 114, 124, 40, 217, 180, 61, 228, 224, 114, 224, 137, 36, 204, 79, 76, 21, 160, 184, 218, 73, 165, 185, 30, 214, 244, 154, 239, 64, 57, 15, 6, 156, 95, 117, 226, 227, 109, 149, 93, 242, 123, 185, 48, 33, 86, 170, 54, 154, 165, 61, 250, 108, 212, 109, 236, 206, 81, 62, 13, 109, 154, 181, 114, 226, 19, 192, 95, 124, 136, 87, 85, 225, 27, 129, 50, 66, 230, 0, 25, 137, 64, 45, 219, 128, 207, 192, 115, 244, 110, 1, 111, 199, 114, 234, 188, 180, 146, 21, 164, 13, 114, 61, 108, 216, 117, 37, 123, 80, 160, 102, 122, 85, 85, 23, 56, 196, 205, 42, 28, 255, 243, 89, 43, 171, 179, 171, 124, 116, 32, 201, 236, 200, 34, 94, 115, 209, 32, 18, 138, 126, 212, 134, 25, 46, 167, 236, 110, 151, 137, 98, 90, 143, 11, 32, 165, 156, 187, 9, 38, 196, 100, 3, 251, 116, 62, 135, 220, 1, 56, 102, 195, 229, 10, 118, 41, 71, 99, 228, 177, 81, 55, 33, 127, 193, 199, 222, 181, 35, 216, 108, 1, 231, 47, 74, 104, 112, 147, 77, 195, 165, 165, 132, 46, 120, 252, 144, 121, 150, 88, 62, 226, 12, 177, 216, 198, 32, 105, 150, 106, 101, 178, 139, 179, 75, 75, 183, 79, 209, 133, 250, 227, 194, 78, 255, 31, 41, 45, 1, 188, 131, 119, 245, 252, 72, 200, 46, 254, 129, 169, 98, 192, 172, 241, 181, 232, 208, 8, 225, 65, 44, 1, 144, 26, 32, 26, 123, 130, 141, 191, 211, 237, 72, 97, 240, 216, 8, 201, 101, 209, 224, 89, 122, 41, 174, 217, 168, 155, 169, 214, 173, 92, 58, 84, 78, 151, 206, 254, 165, 129, 124, 226, 39, 80, 118, 184, 237, 158, 94, 39, 34, 217, 63, 97, 225, 146, 239, 111, 19, 222, 218, 20, 137, 83, 65, 207, 131, 149, 210, 49, 209, 173, 192, 27, 60, 86, 103, 219, 44, 143, 74, 141, 13, 37, 18, 69, 184, 72, 43, 85, 184, 80, 198, 89, 28, 31, 57, 168, 3, 158, 254, 252, 243, 84, 57, 137, 47, 236, 11, 207, 108, 212, 240, 56, 56, 126, 190, 136, 39, 91, 143, 219, 196, 140, 62, 26, 198, 142, 241, 31, 100, 7, 126, 74, 112, 223, 24, 4, 135, 68, 98, 220, 37, 127, 76, 84, 80, 116, 155, 239, 223, 165, 133, 141, 27, 156, 96, 69, 85, 224, 32, 223, 103, 185, 9, 164, 11, 167, 96, 129, 193, 179, 12, 53, 169, 173, 175, 5, 159, 199, 241, 133, 242, 251, 124, 108, 55, 75, 113, 96, 110, 18, 167, 80, 207, 183, 68, 93, 67, 82, 129, 176, 85, 93, 31, 48, 170, 107, 126, 104, 245, 140, 148, 52, 95, 193, 79, 162, 118, 121, 239, 193, 44, 127, 79, 8, 96, 108, 238, 59, 10, 2, 99, 249, 86, 68, 173, 59, 202, 58, 213, 98, 16, 3, 68, 226, 224, 76, 65, 238, 18, 97, 154, 171, 179, 235, 28, 177, 18, 25, 30, 169, 166, 42, 128, 146, 181, 116, 72, 17, 99, 130, 162, 130, 232, 116, 113, 176, 123, 45, 234, 130, 158, 56, 104, 196, 127, 145, 219, 5, 100, 19, 52, 41, 76, 129, 236, 75, 100, 227, 220, 84, 98, 225, 239, 114, 232, 163, 137, 123, 160, 219, 112, 59, 199, 118, 202, 167, 159, 87, 106, 136, 60, 161, 103, 151, 223, 228, 120, 164, 169, 137, 183, 231, 98, 210, 115, 248, 212, 85, 118, 161, 72, 161, 122, 21, 239, 178, 118, 102, 208, 208, 68, 223, 137, 217, 212, 19, 58, 255, 147, 59, 28, 39, 241, 115, 41, 8, 150, 144, 82, 47, 26, 57, 149, 11, 146, 72, 142, 62, 124, 211, 72, 171, 173, 83, 77, 4, 210, 253, 25, 25, 74, 92, 23, 66, 159, 206, 167, 113, 33, 121, 195, 125, 103, 217, 83, 165, 18, 194, 54, 80, 156, 122, 168, 105, 182, 100, 218, 151, 240, 251, 125, 71, 27, 57, 97, 81, 235, 229, 208, 37, 119, 200, 255, 146, 204, 215, 124, 250, 166, 167, 107, 193, 156, 126, 52, 153, 240, 182, 101, 15, 105, 165, 102, 233, 139, 32, 103, 10, 11, 17, 254, 143, 70, 72, 82, 178, 44, 53, 188, 239, 49, 45, 213, 156, 250, 30, 82, 207, 212, 83, 163, 205, 64, 137, 161, 66, 191, 87, 27, 139, 221, 192, 189, 243, 201, 180, 131, 188, 68, 195, 205, 199, 187, 215, 244, 170, 47, 109, 216, 13, 227, 170, 126, 175, 39, 109, 204, 192, 79, 178, 85, 44, 53, 8, 248, 21, 152, 114, 55, 114, 17, 136, 21, 176, 163, 87, 241, 52, 55, 119, 211, 29, 116, 131, 172, 232, 158, 105, 111, 93, 63, 184, 153, 129, 160, 76, 116, 255, 165, 76, 78, 202, 66, 222, 232, 41, 244, 175, 49, 236, 136, 110, 153, 49, 208, 95, 226, 54, 239, 250, 8, 247, 153, 210, 150, 66, 120, 61, 176, 248, 76, 132, 157, 14, 34, 125, 110, 145, 0, 211, 199, 243, 83, 115, 253, 16, 50, 98, 245, 205, 121, 112, 35, 144, 213, 120, 140, 217, 130, 21, 177, 99, 93, 182, 241, 83, 222, 86, 137, 237, 46, 232, 175, 112, 179, 211, 153, 48, 8, 114, 60, 25, 146, 73, 57, 177, 90, 241, 22, 11, 81, 62, 224, 161, 108, 11, 78, 255, 168, 244, 105, 92, 4, 201, 134, 210, 169, 68, 120, 238, 15, 174, 244, 243, 251, 34, 52, 117, 81, 203, 118, 62, 101, 131, 146, 229, 246, 67, 131, 100, 174, 113, 131, 254, 121, 4, 74, 92, 198, 84, 167, 62, 244, 116, 147, 52, 10, 36, 124, 70, 150, 210, 205, 87, 194, 138, 150, 31, 245, 210, 93, 10, 5, 72, 197, 39, 228, 128, 41, 225, 234, 19, 117, 96, 90, 166, 37, 177, 46, 209, 79, 242, 127, 53, 189, 234, 67, 24, 20, 92, 164, 231, 130, 178, 50, 235, 113, 184, 106, 143, 160, 189, 145, 194, 181, 158, 47, 105, 10, 148, 228, 3, 56, 5, 28, 1, 185, 110, 36, 10, 13, 191, 98, 28, 218, 71, 142, 194, 100, 105, 143, 227, 159, 236, 154, 12, 123, 174, 63, 94, 214, 61, 15, 129, 16, 146, 169, 36, 39, 222, 74, 227, 63, 99, 191, 135, 44, 98, 51, 14, 207, 90, 103, 218, 68, 147, 111, 169, 94, 148, 87, 247, 43, 83, 53, 33, 92, 71, 57, 83, 118, 214, 88, 67, 31, 91, 227, 231, 248, 238, 247, 38, 75, 44, 155, 255, 211, 82, 79, 213, 141, 84, 82, 251, 201, 210, 244, 3, 127, 211, 169, 253, 166, 231, 37, 37, 49, 30, 150, 122, 213, 24, 246, 142, 68, 79, 49, 55, 84, 150, 214, 105, 45, 123, 119, 16, 75, 235, 82, 253, 233, 96, 227, 253, 14, 101, 65, 2, 173, 188, 37, 12, 87, 1, 29, 148, 156, 180, 148, 54, 232, 38, 28, 16, 240, 244, 229, 149, 170, 226, 239, 184, 160, 193, 168, 138, 213, 240, 145, 46, 57, 166, 216, 102, 242, 77, 129, 30, 5, 54, 56, 140, 247, 1, 19, 156, 115, 88, 182, 105, 176, 91, 59, 76, 246, 136, 223, 205, 90, 229, 21, 154, 149, 184, 95, 227, 86, 80, 203, 37, 234, 20, 28, 177, 9, 67, 54, 148, 42, 243, 240, 129, 168, 83, 199, 135, 20, 245, 59, 169, 3, 166, 77, 229, 136, 35, 68, 193, 241, 144, 159, 250, 11, 60, 99, 187, 237, 54, 188, 174, 137, 38, 141, 117, 138, 105, 178, 203, 205, 214, 105, 188, 7, 208, 219, 19, 139, 42, 52, 135, 27, 3, 3, 0, 194, 143, 130, 129, 75, 214, 21, 185, 19, 60, 108, 127, 38, 85, 248, 215, 180, 69, 5, 176, 93, 198, 192, 213, 230, 201, 35, 136, 128, 141, 186, 250, 49, 253, 14, 170, 205, 119, 89, 17, 1, 190, 102, 5, 201, 245, 52, 149, 37, 112, 11, 228, 27, 20, 236, 154, 7, 235, 18, 86, 160, 125, 13, 181, 133, 181, 12, 120, 29, 119, 58, 118, 194, 60, 12, 165, 20, 49, 14, 245, 50, 122, 163, 16, 186, 233, 217, 0, 180, 180, 79, 235, 94, 136, 139, 54, 228, 232, 172, 157, 185, 102, 170, 105, 114, 13, 97, 149, 248, 212, 27, 185, 225, 96, 56, 35, 5, 165, 168, 140, 123, 24, 215, 202, 189, 217, 177, 144, 34, 106, 128, 98, 237, 122, 56, 56, 140, 0, 153, 250, 113, 236, 228, 120, 91, 63, 4, 57, 193, 232, 13, 27, 135, 58, 112, 101, 138, 51, 186, 65, 234, 33, 129, 13, 32, 111, 93, 112, 81, 179, 64, 177, 41, 122, 245, 144, 239, 147, 250, 228, 170, 137, 159, 62, 107, 142, 146, 162, 3, 42, 253, 138, 13, 157, 102, 15, 112, 221, 38, 251, 242, 85, 164, 72, 21, 11, 221, 72, 66, 123, 216, 98, 153, 89, 95, 227, 70, 1, 108, 97, 50, 183, 208, 98, 74, 163, 164, 126, 206, 40, 61, 144, 133, 16, 120, 19, 197, 224, 113, 36, 148, 12, 159, 31, 48, 142, 59, 126, 130, 98, 72, 253, 227, 73, 122, 114, 84, 139, 39, 43, 180, 218, 92, 152, 232, 205, 5, 250, 240, 37, 113, 224, 21, 214, 102, 239, 94, 105, 61, 179, 221, 231, 19, 123, 111, 25, 20, 173, 64, 232, 80 }, + Privileges = 61, + Username = "Publisher" + }, + new + { + Id = 3ul, + PasswordHash = new byte[] { 166, 86, 204, 46, 226, 41, 186, 243, 57, 65, 80, 176, 190, 55, 196, 102, 168, 134, 13, 131, 60, 254, 5, 127, 222, 236, 223, 170, 223, 194, 35, 221, 17, 84, 6, 35, 216, 113, 146, 182, 221, 2, 22, 195, 146, 188, 53, 102, 81, 184, 18, 15, 2, 236, 243, 49, 38, 78, 7, 159, 14, 69, 128, 181, 34, 131, 229, 45, 208, 208, 99, 211, 34, 56, 179, 41, 182, 164, 141, 145, 102, 69, 113, 204, 218, 83, 63, 104, 104, 248, 223, 119, 68, 221, 224, 135, 147, 42, 188, 218, 28, 51, 116, 1, 88, 175, 32, 58, 35, 71, 159, 220, 123, 157, 191, 11, 136, 214, 124, 132, 162, 61, 23, 62, 6, 64, 126, 53, 93, 241, 93, 112, 152, 128, 182, 87, 15, 207, 9, 23, 125, 28, 77, 82, 210, 182, 225, 236, 178, 96, 33, 127, 25, 219, 208, 236, 62, 175, 150, 193, 195, 222, 67, 174, 140, 163, 133, 124, 37, 128, 254, 155, 137, 166, 197, 195, 151, 156, 152, 252, 155, 181, 73, 221, 68, 38, 194, 240, 60, 86, 239, 130, 191, 252, 148, 163, 71, 138, 190, 17, 121, 77, 51, 132, 131, 106, 246, 210, 239, 12, 129, 0, 212, 60, 188, 214, 166, 254, 185, 154, 222, 204, 118, 252, 124, 111, 45, 14, 36, 108, 219, 96, 229, 101, 60, 121, 12, 10, 32, 90, 12, 13, 143, 216, 136, 60, 10, 206, 0, 169, 35, 16, 30, 174, 153, 184, 49, 159, 240, 83, 226, 71, 26, 172, 202, 26, 148, 5, 160, 245, 201, 249, 165, 112, 75, 185, 19, 25, 220, 85, 176, 62, 253, 111, 63, 32, 63, 18, 215, 114, 151, 139, 43, 79, 130, 91, 50, 16, 186, 79, 136, 11, 209, 228, 39, 21, 181, 75, 23, 60, 192, 199, 117, 118, 9, 250, 12, 242, 89, 109, 28, 44, 102, 160, 26, 200, 77, 52, 169, 38, 126, 129, 180, 72, 183, 14, 41, 151, 155, 158, 173, 214, 230, 86, 224, 3, 68, 11, 31, 164, 185, 87, 87, 177, 155, 137, 7, 17, 46, 58, 234, 48, 123, 158, 54, 205, 177, 74, 53, 120, 3, 43, 131, 223, 119, 95, 132, 137, 26, 159, 60, 108, 82, 216, 38, 226, 152, 163, 7, 247, 81, 170, 87, 37, 59, 137, 93, 170, 170, 130, 118, 72, 28, 171, 160, 42, 28, 210, 191, 211, 131, 21, 105, 150, 242, 98, 228, 217, 212, 53, 41, 20, 239, 198, 185, 88, 191, 246, 109, 148, 239, 191, 62, 190, 8, 162, 114, 208, 52, 72, 7, 208, 159, 143, 206, 160, 87, 80, 63, 109, 230, 7, 162, 175, 135, 140, 20, 96, 158, 22, 179, 44, 141, 221, 112, 245, 67, 138, 148, 190, 115, 75, 247, 92, 62, 164, 81, 192, 250, 191, 45, 93, 96, 226, 217, 26, 5, 99, 104, 64, 123, 190, 96, 172, 255, 112, 139, 109, 104, 71, 16, 127, 146, 62, 138, 161, 94, 220, 208, 248, 122, 185, 73, 1, 202, 49, 10, 6, 105, 25, 0, 175, 158, 55, 72, 49, 215, 18, 60, 27, 94, 84, 204, 176, 96, 253, 105, 151, 81, 133, 19, 13, 227, 106, 237, 93, 178, 60, 208, 166, 221, 26, 123, 223, 37, 187, 37, 53, 108, 62, 236, 49, 242, 176, 146, 235, 167, 235, 47, 249, 33, 0, 231, 62, 0, 180, 19, 34, 233, 38, 193, 115, 132, 106, 105, 101, 12, 77, 163, 231, 133, 240, 62, 108, 91, 83, 150, 55, 247, 193, 204, 29, 21, 212, 152, 217, 107, 171, 13, 30, 190, 145, 15, 154, 204, 52, 182, 117, 106, 71, 145, 136, 74, 82, 111, 145, 40, 179, 80, 98, 13, 2, 181, 211, 231, 142, 143, 190, 188, 24, 39, 209, 83, 33, 157, 173, 160, 57, 50, 31, 114, 93, 36, 53, 76, 27, 60, 154, 206, 170, 125, 23, 51, 4, 145, 168, 157, 206, 46, 183, 165, 70, 165, 135, 222, 75, 147, 105, 52, 43, 90, 7, 133, 155, 162, 69, 187, 24, 216, 77, 64, 188, 34, 252, 2, 177, 187, 241, 107, 144, 206, 79, 129, 214, 57, 2, 3, 127, 129, 82, 189, 198, 17, 149, 248, 197, 140, 59, 117, 12, 196, 138, 204, 188, 2, 211, 118, 173, 223, 50, 185, 82, 212, 50, 178, 102, 240, 161, 42, 168, 198, 192, 190, 1, 171, 217, 228, 129, 113, 130, 169, 140, 250, 111, 72, 173, 221, 69, 132, 149, 108, 235, 55, 250, 1, 239, 234, 49, 229, 16, 211, 156, 167, 67, 4, 17, 244, 237, 106, 27, 234, 87, 205, 139, 207, 197, 11, 149, 153, 150, 199, 125, 202, 37, 1, 231, 92, 233, 202, 71, 231, 189, 183, 133, 145, 93, 185, 40, 64, 169, 196, 161, 64, 29, 44, 156, 125, 47, 69, 155, 254, 111, 169, 146, 12, 219, 141, 215, 209, 28, 46, 81, 175, 200, 151, 2, 226, 158, 136, 219, 33, 92, 187, 145, 67, 21, 254, 135, 223, 149, 208, 148, 61, 179, 141, 198, 194, 107, 31, 190, 158, 101, 106, 215, 150, 251, 208, 85, 253, 132, 117, 183, 220, 67, 237, 184, 114, 97, 52, 214, 85, 187, 50, 150, 103, 124, 243, 39, 42, 74, 153, 213, 79, 58, 96, 163, 90, 56, 86, 185, 3, 127, 65, 124, 8, 167, 18, 139, 221, 250, 124, 225, 235, 230, 94, 78, 140, 35, 15, 80, 60, 193, 95, 146, 9, 156, 153, 238, 248, 173, 10, 251, 152, 123, 39, 242, 188, 210, 245, 63, 137, 143, 90, 94, 148, 106, 33, 95, 47, 210, 77, 51, 196, 68, 192, 193, 181, 72, 134, 102, 112, 106, 35, 53, 176, 100, 128, 64, 55, 90, 46, 170, 11, 7, 185, 38, 110, 225, 121, 49, 29, 179, 77, 51, 55, 225, 230, 11, 17, 105, 139, 10, 79, 6, 147, 42, 166, 40, 50, 250, 115, 218, 246, 235, 202, 73, 220, 89, 92, 151, 195, 152, 21, 232, 56, 47, 81, 58, 53, 216, 150, 14, 51, 99, 131, 6, 11, 82, 224, 250, 251, 55, 13, 30, 113, 190, 125, 95, 90, 244, 158, 95, 204, 136, 31, 217, 6, 241, 235, 137, 96, 16, 83, 188, 180, 78, 111, 91, 170, 251, 192, 72, 91, 90, 161, 76, 193, 73, 143, 144, 99, 162, 114, 215, 215, 173, 124, 10, 148, 60, 194, 54, 48, 6, 151, 87, 83, 185, 22, 124, 129, 190, 233, 168, 40, 15, 106, 215, 219, 173, 33, 163, 118, 132, 161, 162, 231, 197, 139, 164, 87, 139, 233, 5, 18, 9, 149, 105, 215, 201, 200, 156, 237, 194, 14, 83, 73, 169, 186, 219, 170, 240, 105, 174, 144, 108, 207, 18, 124, 176, 178, 54, 165, 138, 17, 45, 177, 196, 47, 136, 26, 97, 138, 86, 232, 244, 89, 59, 220, 168, 42, 172, 245, 165, 220, 49, 237, 14, 112, 80, 5, 191, 149, 253, 235, 50, 141, 241, 2, 13, 140, 0, 247, 33, 221, 33, 103, 0, 14, 13, 11, 65, 176, 31, 194, 179, 108, 234, 128, 249, 9, 110, 41, 127, 5, 96, 194, 238, 167, 145, 145, 9, 190, 209, 86, 248, 28, 192, 107, 47, 200, 109, 244, 228, 23, 222, 87, 5, 250, 32, 189, 158, 27, 66, 169, 58, 173, 123, 15, 61, 10, 86, 182, 56, 181, 37, 61, 248, 66, 73, 244, 136, 162, 152, 162, 67, 209, 171, 229, 28, 236, 77, 88, 2, 218, 12, 221, 118, 243, 51, 129, 35, 2, 85, 217, 16, 158, 154, 111, 192, 213, 137, 224, 224, 237, 178, 124, 8, 60, 147, 88, 186, 116, 132, 233, 179, 251, 43, 70, 235, 146, 89, 180, 35, 37, 215, 147, 3, 160, 59, 121, 31, 105, 57, 68, 86, 38, 95, 223, 198, 46, 183, 118, 22, 200, 24, 132, 162, 131, 160, 246, 38, 162, 111, 200, 42, 48, 131, 38, 177, 53, 204, 24, 207, 135, 249, 221, 27, 1, 213, 4, 175, 148, 1, 54, 146, 3, 74, 215, 154, 57, 19, 215, 50, 210, 164, 25, 141, 254, 177, 83, 162, 100, 165, 113, 209, 140, 32, 77, 57, 21, 112, 54, 234, 135, 153, 244, 179, 201, 126, 132, 28, 217, 40, 55, 148, 216, 99, 248, 69, 85, 97, 105, 186, 73, 65, 198, 64, 157, 27, 206, 137, 138, 102, 24, 225, 180, 232, 223, 89, 163, 58, 78, 242, 92, 117, 224, 198, 132, 171, 206, 93, 144, 160, 214, 91, 188, 69, 149, 128, 224, 53, 7, 149, 233, 26, 117, 22, 210, 26, 131, 217, 141, 76, 82, 75, 225, 240, 39, 98, 215, 215, 48, 29, 172, 8, 245, 72, 217, 203, 166, 21, 194, 140, 211, 26, 57, 184, 37, 116, 108, 126, 140, 84, 88, 21, 190, 188, 138, 67, 175, 159, 133, 31, 102, 107, 19, 44, 158, 247, 102, 128, 125, 209, 198, 144, 136, 112, 179, 168, 79, 125, 18, 43, 83, 57, 190, 7, 34, 149, 238, 129, 237, 208, 147, 1, 103, 108, 219, 148, 176, 223, 2, 158, 237, 194, 119, 96, 194, 97, 107, 198, 209, 173, 63, 221, 197, 142, 114, 149, 163, 86, 160, 94, 1, 60, 52, 75, 244, 46, 85, 241, 186, 216, 204, 44, 157, 176, 62, 167, 105, 68, 182, 157, 215, 122, 180, 82, 83, 223, 157, 250, 74, 219, 16, 221, 213, 20, 112, 76, 106, 242, 15, 60, 38, 248, 61, 51, 1, 165, 45, 96, 209, 191, 211, 20, 42, 169, 137, 29, 73, 146, 157, 241, 35, 61, 250, 170, 114, 75, 23, 71, 24, 15, 234, 161, 52, 215, 244, 170, 164, 179, 116, 223, 61, 243, 148, 253, 190, 226, 114, 219, 26, 35, 24, 169, 213, 178, 174, 170, 79, 156, 120, 36, 14, 177, 163, 155, 195, 229, 202, 178, 7, 70, 211, 90, 199, 101, 78, 122, 238, 4, 85, 228, 253, 54, 194, 175, 98, 120, 130, 210, 36, 111, 181, 230, 205, 176, 133, 110, 15, 129, 141, 174, 19, 143, 29, 159, 52, 213, 57, 67, 36, 200, 122, 107, 122, 92, 178, 212, 234, 140, 97, 131, 231, 96, 33, 143, 143, 212, 131, 145, 156, 97, 72, 27, 140, 97, 102, 12, 69, 208, 123, 125, 62, 196, 40, 37, 12, 74, 174, 17, 30, 121, 90, 150, 47, 17, 175, 59, 231, 122, 159, 36, 199, 187, 218, 37, 187, 175, 188, 67, 168, 11, 132, 119, 230, 220, 87, 55, 16, 4, 142, 157, 112, 73, 159, 252, 139, 109, 198, 121, 194, 221, 195, 169, 151, 240, 237, 180, 234, 175, 233, 250, 45, 95, 63, 156, 59, 113, 162, 24, 13, 59, 185, 29, 216, 86, 129, 150, 137, 246, 198, 217, 243, 11, 23, 104, 167, 82, 215, 164, 183, 175, 155, 55, 180, 33, 108, 239, 88, 40, 89, 198, 224, 121, 178, 101, 25, 161, 137, 47, 84, 2, 241, 28, 167, 159, 203, 73, 156, 109, 67, 210, 8, 160, 24, 41, 6, 47, 207, 123, 97, 182, 165, 134, 215, 172, 209, 153, 253, 78, 144, 229, 156, 185, 245, 63, 15, 197, 90, 95, 25, 93, 132, 203, 104, 62, 57, 153, 166, 138, 201, 248, 213, 249, 220, 215, 110, 24, 164, 49, 0, 52, 148, 106, 81, 68, 35, 22, 2, 36, 14, 81, 181, 53, 50, 100, 202, 165, 205, 48, 78, 47, 254, 173, 76, 122, 41, 246, 49, 36, 210, 32, 90, 222, 221, 164, 238, 25, 121, 137, 190, 147, 139, 246, 202, 190, 199, 173, 196, 217, 247, 126, 59, 129, 196, 253, 57, 251, 180, 15, 30, 46, 234, 221, 190, 223, 199, 156, 237, 48, 108, 81, 92, 36, 96, 157, 73, 7, 76, 225, 198, 226, 208, 49, 172, 113, 211, 193, 158, 192, 95, 128, 197, 254, 16, 218, 188, 70, 26, 221, 199, 215, 238, 148, 221, 7, 175, 159, 14, 215, 26, 32, 36, 225, 184, 225, 233, 185, 2, 209, 21, 96, 2, 172, 174, 147, 96, 242, 191, 56, 211, 74, 14, 225, 134, 135, 211, 133, 221, 173, 164, 176, 28, 203, 136, 160 }, + PasswordSalt = new byte[] { 199, 201, 103, 52, 8, 215, 39, 26, 108, 120, 239, 41, 25, 1, 96, 59, 149, 221, 90, 39, 140, 28, 96, 92, 105, 240, 241, 212, 159, 116, 14, 6, 1, 247, 142, 125, 242, 86, 97, 148, 31, 147, 224, 244, 137, 179, 1, 183, 201, 76, 224, 88, 35, 52, 225, 136, 251, 99, 48, 107, 200, 160, 43, 88, 126, 253, 46, 197, 250, 157, 100, 102, 121, 145, 203, 122, 109, 250, 5, 231, 22, 123, 139, 185, 98, 91, 111, 145, 134, 154, 198, 138, 212, 159, 60, 72, 220, 252, 133, 151, 67, 97, 26, 159, 5, 90, 211, 45, 217, 36, 148, 28, 46, 149, 28, 143, 82, 125, 143, 231, 34, 25, 181, 3, 17, 226, 191, 133, 142, 180, 84, 176, 102, 147, 168, 136, 255, 33, 235, 150, 254, 147, 102, 195, 220, 121, 29, 162, 97, 59, 6, 41, 37, 243, 32, 90, 228, 238, 193, 17, 212, 118, 93, 191, 230, 238, 106, 176, 194, 183, 112, 86, 244, 127, 255, 124, 28, 35, 42, 40, 0, 121, 167, 236, 206, 37, 9, 45, 176, 4, 217, 230, 223, 163, 248, 252, 117, 66, 227, 49, 253, 92, 89, 124, 174, 232, 34, 167, 168, 82, 143, 78, 234, 75, 116, 165, 187, 184, 5, 53, 102, 89, 143, 14, 177, 80, 168, 17, 155, 118, 179, 45, 219, 117, 94, 166, 50, 163, 49, 60, 247, 55, 209, 42, 249, 68, 52, 21, 182, 242, 139, 174, 99, 128, 85, 51, 71, 45, 2, 189, 193, 0, 173, 79, 72, 148, 244, 250, 69, 143, 85, 87, 79, 36, 66, 24, 125, 112, 8, 173, 102, 55, 60, 21, 32, 228, 200, 86, 216, 250, 1, 124, 5, 59, 119, 173, 177, 2, 0, 5, 198, 179, 110, 63, 83, 227, 23, 88, 179, 25, 157, 117, 229, 63, 148, 174, 188, 214, 157, 230, 66, 250, 224, 157, 128, 76, 43, 145, 241, 74, 8, 129, 23, 81, 194, 143, 196, 247, 236, 137, 90, 116, 91, 251, 137, 139, 253, 43, 185, 122, 139, 11, 104, 108, 61, 120, 200, 238, 135, 240, 118, 3, 126, 152, 208, 126, 151, 117, 162, 37, 67, 7, 8, 118, 50, 166, 98, 215, 73, 99, 183, 208, 149, 105, 136, 231, 176, 137, 193, 201, 140, 198, 34, 180, 5, 48, 169, 192, 100, 51, 8, 151, 253, 3, 171, 167, 122, 36, 160, 238, 120, 117, 165, 52, 118, 173, 163, 244, 190, 168, 71, 31, 246, 51, 112, 149, 253, 197, 38, 253, 191, 96, 254, 31, 51, 100, 10, 131, 180, 2, 208, 249, 78, 66, 169, 226, 71, 130, 90, 247, 110, 127, 213, 130, 173, 27, 45, 60, 145, 244, 89, 230, 157, 174, 113, 40, 222, 43, 154, 253, 242, 216, 85, 53, 158, 170, 238, 195, 176, 150, 129, 60, 31, 80, 162, 249, 209, 125, 176, 84, 171, 75, 11, 64, 76, 100, 151, 110, 56, 225, 84, 78, 240, 232, 172, 246, 201, 3, 135, 215, 207, 24, 140, 154, 200, 92, 134, 202, 168, 18, 247, 18, 173, 181, 41, 134, 230, 73, 76, 60, 45, 47, 41, 17, 149, 152, 189, 16, 25, 246, 94, 25, 158, 242, 23, 163, 248, 78, 217, 42, 245, 166, 4, 199, 43, 75, 219, 215, 161, 64, 234, 156, 178, 127, 80, 103, 167, 56, 24, 186, 134, 152, 118, 117, 185, 17, 206, 87, 129, 139, 24, 4, 255, 171, 73, 148, 99, 34, 43, 54, 137, 66, 144, 8, 182, 192, 129, 129, 37, 134, 58, 30, 86, 42, 150, 4, 44, 164, 50, 13, 237, 88, 39, 79, 188, 241, 249, 96, 162, 99, 132, 115, 111, 175, 164, 0, 63, 6, 157, 139, 56, 87, 89, 152, 70, 196, 112, 192, 125, 22, 10, 123, 188, 236, 15, 125, 95, 4, 51, 159, 79, 110, 51, 202, 57, 14, 142, 29, 141, 45, 134, 20, 73, 87, 227, 186, 176, 159, 117, 99, 194, 174, 109, 3, 11, 8, 246, 194, 110, 33, 76, 30, 254, 79, 248, 167, 63, 16, 14, 246, 146, 42, 185, 119, 181, 198, 67, 9, 220, 68, 216, 45, 201, 212, 223, 78, 108, 139, 138, 233, 183, 131, 92, 97, 154, 230, 172, 122, 110, 93, 54, 176, 242, 96, 130, 148, 14, 15, 114, 141, 7, 150, 6, 47, 43, 156, 69, 23, 165, 7, 57, 65, 131, 69, 206, 146, 3, 141, 52, 155, 230, 61, 194, 124, 149, 208, 176, 29, 232, 79, 80, 189, 42, 81, 242, 221, 192, 109, 47, 60, 7, 218, 91, 197, 191, 30, 230, 229, 69, 51, 196, 161, 158, 130, 12, 53, 101, 82, 207, 60, 169, 135, 36, 11, 126, 63, 97, 32, 156, 102, 54, 38, 95, 6, 206, 23, 114, 211, 33, 87, 42, 129, 212, 230, 82, 2, 163, 77, 7, 31, 110, 75, 11, 16, 139, 194, 18, 251, 239, 21, 78, 102, 222, 52, 109, 164, 31, 184, 120, 157, 211, 126, 226, 76, 190, 73, 113, 152, 31, 104, 0, 13, 208, 250, 90, 235, 82, 171, 226, 134, 200, 176, 45, 215, 79, 48, 167, 74, 237, 94, 90, 210, 215, 232, 183, 88, 33, 152, 184, 117, 105, 181, 184, 72, 91, 80, 165, 80, 105, 117, 183, 132, 86, 181, 78, 169, 4, 61, 58, 17, 6, 103, 87, 40, 39, 80, 242, 114, 187, 42, 106, 74, 54, 71, 111, 135, 85, 119, 228, 54, 212, 148, 225, 101, 246, 6, 159, 134, 166, 248, 149, 157, 40, 172, 50, 69, 188, 78, 204, 182, 211, 119, 134, 36, 246, 249, 74, 99, 180, 216, 100, 23, 198, 12, 114, 82, 121, 9, 233, 247, 243, 24, 136, 175, 204, 167, 46, 3, 36, 157, 100, 252, 93, 179, 105, 240, 226, 35, 171, 29, 217, 145, 81, 161, 203, 92, 111, 211, 94, 13, 138, 80, 73, 195, 154, 67, 135, 138, 23, 231, 88, 209, 20, 74, 69, 68, 115, 66, 215, 21, 171, 46, 204, 178, 132, 86, 120, 87, 81, 118, 233, 111, 59, 177, 134, 204, 202, 73, 67, 25, 27, 59, 9, 124, 159, 135, 251, 100, 214, 236, 217, 191, 49, 204, 36, 134, 140, 140, 162, 195, 45, 67, 188, 48, 106, 218, 12, 78, 214, 254, 166, 187, 3, 151, 98, 239, 166, 108, 127, 154, 131, 2, 185, 158, 67, 153, 61, 64, 205, 175, 80, 64, 76, 171, 72, 9, 153, 98, 119, 0, 137, 212, 48, 156, 63, 125, 165, 118, 65, 150, 164, 244, 116, 245, 112, 145, 112, 65, 156, 115, 136, 248, 86, 78, 148, 77, 61, 40, 49, 216, 230, 66, 211, 249, 227, 32, 4, 68, 224, 70, 102, 10, 203, 212, 107, 147, 221, 129, 93, 68, 48, 85, 135, 121, 56, 209, 255, 227, 85, 37, 169, 157, 111, 200, 18, 74, 180, 180, 6, 222, 47, 248, 126, 129, 212, 161, 227, 8, 70, 49, 69, 86, 70, 251, 30, 195, 197, 116, 138, 85, 251, 12, 62, 252, 14, 151, 110, 74, 109, 150, 34, 57, 75, 159, 145, 19, 82, 52, 20, 208, 100, 191, 142, 228, 192, 16, 137, 203, 49, 15, 107, 73, 220, 138, 110, 126, 195, 140, 13, 142, 52, 86, 181, 108, 94, 205, 108, 238, 19, 177, 20, 249, 74, 217, 200, 56, 164, 95, 85, 82, 206, 143, 237, 35, 223, 190, 139, 105, 154, 214, 71, 141, 140, 178, 212, 229, 155, 60, 30, 142, 251, 17, 6, 24, 243, 246, 235, 67, 168, 201, 89, 8, 122, 66, 5, 191, 98, 196, 47, 241, 191, 1, 32, 32, 109, 84, 210, 121, 146, 232, 228, 149, 56, 225, 105, 218, 237, 108, 10, 10, 16, 82, 62, 85, 194, 146, 94, 80, 211, 55, 95, 112, 169, 108, 187, 167, 245, 190, 176, 240, 21, 241, 252, 224, 240, 139, 221, 64, 122, 217, 109, 196, 126, 102, 140, 55, 129, 129, 85, 126, 250, 114, 215, 196, 44, 79, 115, 89, 17, 249, 47, 38, 250, 140, 178, 33, 158, 147, 161, 105, 138, 188, 113, 43, 143, 203, 111, 178, 190, 135, 242, 87, 223, 85, 62, 51, 237, 218, 211, 23, 202, 175, 177, 234, 135, 192, 8, 161, 44, 77, 159, 102, 202, 220, 252, 173, 155, 245, 211, 134, 251, 153, 99, 235, 234, 170, 70, 233, 25, 143, 211, 15, 164, 255, 186, 4, 226, 26, 236, 145, 14, 47, 40, 237, 227, 246, 238, 136, 223, 9, 160, 115, 241, 111, 139, 103, 164, 110, 98, 12, 47, 234, 104, 39, 25, 159, 215, 202, 22, 134, 130, 99, 217, 219, 37, 182, 30, 251, 213, 147, 227, 223, 204, 178, 214, 119, 130, 129, 74, 107, 42, 150, 249, 211, 0, 3, 160, 24, 207, 46, 231, 243, 11, 92, 163, 145, 63, 31, 142, 47, 108, 83, 24, 63, 43, 31, 239, 22, 19, 92, 5, 92, 118, 20, 76, 64, 21, 88, 139, 14, 11, 2, 211, 51, 111, 85, 17, 139, 210, 238, 31, 17, 103, 22, 246, 22, 117, 21, 194, 83, 31, 10, 146, 72, 120, 43, 38, 129, 156, 86, 42, 255, 218, 137, 202, 6, 68, 196, 68, 105, 242, 40, 243, 44, 248, 117, 147, 122, 134, 231, 94, 235, 99, 240, 241, 137, 92, 222, 98, 42, 169, 134, 158, 231, 136, 182, 126, 106, 169, 175, 141, 143, 102, 46, 39, 155, 60, 30, 24, 103, 140, 67, 139, 45, 72, 95, 52, 100, 254, 142, 137, 20, 141, 82, 219, 77, 144, 147, 221, 83, 202, 43, 159, 147, 78, 213, 89, 41, 92, 155, 253, 39, 252, 76, 2, 139, 176, 66, 5, 143, 212, 14, 89, 179, 232, 102, 209, 146, 145, 174, 131, 157, 53, 144, 235, 152, 89, 104, 160, 25, 76, 15, 166, 36, 78, 146, 69, 218, 226, 227, 221, 239, 241, 69, 250, 139, 18, 56, 150, 186, 36, 127, 7, 209, 67, 204, 153, 176, 71, 27, 228, 184, 94, 116, 225, 254, 129, 6, 36, 92, 186, 152, 53, 128, 100, 95, 194, 14, 224, 203, 96, 19, 231, 196, 236, 127, 152, 237, 107, 9, 130, 15, 43, 111, 242, 66, 173, 185, 218, 42, 13, 88, 50, 135, 228, 105, 248, 181, 190, 77, 215, 12, 7, 224, 88, 61, 199, 206, 77, 95, 3, 214, 135, 15, 194, 53, 225, 174, 154, 170, 246, 145, 69, 35, 88, 61, 189, 38, 28, 47, 60, 72, 85, 60, 110, 211, 242, 116, 203, 79, 130, 11, 141, 212, 41, 75, 217, 158, 203, 109, 3, 171, 244, 118, 232, 54, 90, 223, 175, 161, 53, 70, 119, 7, 43, 41, 199, 91, 230, 133, 94, 110, 187, 118, 97, 199, 5, 112, 195, 129, 102, 210, 144, 28, 234, 201, 215, 33, 18, 68, 25, 243, 159, 12, 53, 27, 160, 109, 92, 125, 52, 106, 0, 74, 227, 205, 11, 221, 185, 23, 63, 19, 30, 203, 243, 65, 29, 72, 247, 76, 7, 136, 207, 140, 214, 2, 53, 8, 216, 224, 126, 234, 242, 207, 255, 162, 203, 42, 37, 102, 235, 240, 169, 232, 55, 198, 227, 160, 233, 46, 64, 181, 119, 211, 126, 150, 72, 87, 107, 6, 100, 192, 165, 240, 77, 196, 226, 134, 7, 138, 214, 28, 230, 141, 239, 161, 185, 137, 131, 216, 215, 155, 21, 240, 13, 20, 148, 251, 53, 17, 72, 162, 74, 139, 73, 159, 107, 52, 114, 85, 166, 240, 90, 3, 144, 97, 143, 158, 68, 33, 119, 150, 103, 202, 215, 144, 57, 132, 26, 154, 137, 43, 194, 45, 47, 253, 208, 219, 183, 23, 134, 129, 44, 76, 76, 231, 64, 128, 86, 134, 248, 240, 145, 105, 7, 169, 23, 236, 102, 234, 142, 70, 125, 43, 253, 233, 236, 149, 88, 136, 246, 241, 65, 40, 65, 210, 1, 29, 80, 146, 187, 42, 137, 64, 121, 109, 118, 148, 246, 46, 231, 196, 103, 151, 13, 5, 145, 28, 92, 3, 137, 195, 165, 251, 120, 47, 161, 92, 66, 151, 254, 197, 211, 238, 226, 86, 206, 209, 20, 49, 153, 139, 103, 220, 169, 26, 69, 129 }, + Privileges = 511, + Username = "Administrator" + }, + new + { + Id = 4ul, + PasswordHash = new byte[] { 36, 167, 235, 85, 137, 38, 168, 238, 219, 43, 150, 103, 238, 180, 236, 32, 175, 117, 105, 97, 66, 113, 11, 37, 106, 217, 225, 189, 190, 231, 195, 27, 34, 122, 228, 17, 24, 182, 61, 104, 146, 84, 180, 193, 56, 103, 36, 64, 167, 39, 178, 187, 164, 86, 190, 87, 142, 81, 99, 162, 68, 88, 87, 189, 192, 120, 82, 9, 163, 53, 180, 153, 246, 226, 122, 136, 231, 175, 2, 79, 33, 203, 46, 200, 192, 176, 129, 165, 180, 16, 250, 176, 166, 209, 212, 142, 142, 134, 26, 113, 219, 210, 246, 13, 186, 215, 121, 204, 253, 205, 214, 78, 108, 101, 145, 158, 78, 41, 18, 116, 50, 207, 255, 224, 195, 60, 246, 193, 208, 37, 88, 200, 136, 157, 253, 236, 89, 41, 59, 104, 78, 194, 122, 189, 201, 42, 220, 142, 139, 226, 202, 73, 154, 226, 175, 37, 40, 40, 182, 219, 6, 51, 201, 56, 205, 164, 86, 105, 17, 123, 35, 12, 247, 5, 252, 63, 68, 174, 227, 65, 54, 217, 245, 160, 61, 32, 184, 194, 158, 1, 82, 115, 71, 166, 234, 50, 148, 111, 205, 99, 73, 48, 74, 81, 45, 231, 10, 41, 230, 160, 136, 79, 176, 47, 211, 190, 88, 80, 18, 41, 145, 166, 21, 142, 166, 26, 151, 251, 186, 108, 206, 79, 48, 39, 152, 234, 162, 41, 46, 170, 64, 199, 94, 30, 75, 162, 46, 107, 110, 163, 165, 70, 6, 94, 128, 91, 46, 141, 11, 43, 40, 52, 140, 203, 2, 189, 198, 143, 3, 144, 54, 164, 47, 53, 204, 189, 122, 28, 216, 114, 228, 200, 8, 250, 245, 154, 95, 70, 225, 73, 121, 215, 52, 119, 194, 234, 52, 3, 125, 22, 100, 98, 127, 5, 254, 19, 50, 169, 159, 115, 1, 176, 35, 26, 233, 240, 154, 110, 53, 20, 230, 237, 150, 148, 244, 50, 81, 66, 170, 66, 226, 196, 146, 183, 10, 60, 157, 21, 105, 7, 103, 221, 13, 151, 214, 35, 240, 132, 68, 163, 113, 187, 149, 138, 221, 174, 102, 170, 72, 134, 63, 73, 113, 240, 73, 230, 122, 45, 151, 233, 210, 6, 70, 248, 46, 1, 144, 221, 94, 208, 27, 13, 22, 97, 168, 212, 163, 17, 158, 176, 133, 240, 3, 236, 226, 203, 161, 109, 80, 134, 118, 143, 115, 99, 56, 63, 202, 84, 96, 237, 118, 213, 205, 182, 179, 203, 1, 144, 157, 249, 147, 226, 80, 65, 216, 206, 242, 59, 58, 166, 188, 104, 128, 12, 149, 178, 3, 112, 204, 227, 72, 232, 50, 177, 126, 182, 131, 172, 237, 29, 16, 184, 33, 47, 164, 81, 2, 104, 61, 50, 198, 208, 248, 168, 71, 228, 99, 96, 219, 233, 160, 231, 245, 244, 180, 184, 145, 12, 17, 51, 145, 216, 225, 27, 219, 155, 52, 50, 126, 235, 77, 21, 234, 120, 189, 108, 246, 246, 7, 190, 248, 4, 224, 53, 191, 82, 126, 133, 95, 129, 226, 55, 115, 154, 42, 5, 107, 29, 49, 13, 28, 205, 188, 24, 15, 156, 115, 122, 52, 83, 175, 235, 197, 156, 131, 209, 197, 52, 15, 42, 112, 14, 20, 90, 255, 46, 172, 194, 73, 203, 118, 108, 54, 82, 89, 0, 232, 129, 231, 8, 68, 203, 237, 227, 69, 253, 241, 162, 255, 158, 186, 185, 193, 158, 249, 52, 114, 48, 36, 240, 104, 206, 115, 188, 132, 216, 153, 176, 186, 17, 245, 134, 222, 141, 138, 76, 245, 113, 173, 151, 171, 81, 145, 70, 113, 15, 247, 195, 149, 249, 111, 142, 214, 109, 0, 227, 221, 209, 90, 169, 20, 26, 205, 192, 129, 32, 250, 28, 16, 105, 238, 29, 94, 7, 52, 151, 199, 251, 67, 186, 230, 232, 218, 104, 163, 164, 119, 102, 78, 236, 82, 210, 112, 96, 239, 196, 167, 163, 123, 234, 5, 24, 140, 239, 101, 137, 239, 249, 185, 188, 126, 133, 121, 141, 226, 80, 84, 234, 197, 197, 28, 21, 52, 88, 67, 216, 227, 96, 108, 191, 112, 224, 243, 66, 37, 191, 92, 243, 109, 148, 245, 189, 222, 85, 218, 29, 168, 64, 235, 138, 167, 45, 222, 82, 80, 158, 201, 52, 61, 148, 92, 191, 18, 86, 173, 7, 211, 232, 129, 249, 43, 140, 26, 60, 165, 75, 51, 72, 6, 76, 227, 201, 94, 98, 147, 125, 173, 225, 183, 146, 28, 69, 14, 183, 244, 11, 202, 158, 53, 171, 201, 94, 197, 191, 1, 83, 129, 65, 233, 49, 214, 58, 189, 17, 87, 85, 207, 163, 107, 186, 142, 225, 43, 205, 44, 117, 21, 31, 19, 238, 193, 135, 135, 159, 209, 153, 154, 44, 120, 83, 14, 122, 141, 247, 124, 52, 196, 174, 83, 195, 202, 239, 9, 104, 39, 127, 80, 250, 218, 124, 182, 122, 160, 237, 145, 14, 81, 133, 251, 121, 239, 222, 176, 95, 168, 120, 85, 37, 149, 41, 142, 208, 2, 37, 192, 98, 176, 128, 77, 246, 120, 90, 255, 104, 37, 163, 220, 195, 185, 171, 147, 143, 209, 182, 213, 12, 217, 56, 103, 166, 192, 59, 69, 199, 208, 100, 86, 245, 71, 187, 236, 143, 79, 148, 243, 160, 203, 146, 234, 147, 211, 81, 182, 230, 206, 122, 134, 47, 10, 142, 4, 194, 42, 93, 136, 254, 41, 212, 238, 222, 253, 53, 42, 188, 96, 225, 30, 50, 196, 9, 152, 69, 31, 33, 33, 133, 169, 88, 39, 163, 79, 189, 60, 250, 102, 162, 182, 75, 110, 106, 87, 60, 166, 208, 247, 65, 118, 221, 76, 85, 139, 94, 172, 223, 26, 109, 139, 49, 107, 146, 94, 134, 233, 142, 166, 151, 2, 49, 241, 164, 230, 133, 53, 18, 3, 246, 2, 175, 233, 102, 87, 65, 194, 183, 241, 41, 177, 238, 196, 196, 3, 148, 147, 85, 184, 153, 247, 54, 48, 24, 11, 33, 162, 84, 161, 207, 47, 221, 48, 64, 176, 115, 140, 179, 161, 254, 189, 163, 96, 60, 191, 12, 108, 45, 140, 122, 105, 224, 1, 222, 10, 140, 106, 15, 200, 134, 57, 238, 211, 31, 225, 152, 232, 247, 36, 204, 80, 234, 128, 8, 52, 61, 48, 197, 23, 52, 224, 42, 70, 24, 121, 254, 93, 38, 129, 183, 107, 207, 155, 217, 47, 185, 110, 219, 156, 98, 175, 161, 209, 138, 221, 245, 194, 12, 71, 200, 221, 41, 230, 95, 65, 10, 29, 198, 26, 129, 37, 226, 233, 172, 30, 51, 244, 227, 197, 247, 174, 132, 31, 164, 202, 228, 59, 91, 44, 210, 209, 73, 41, 52, 52, 178, 113, 120, 10, 222, 95, 88, 197, 208, 231, 214, 224, 231, 144, 90, 201, 117, 72, 131, 89, 130, 50, 113, 157, 152, 61, 34, 170, 88, 13, 186, 228, 151, 247, 87, 120, 138, 168, 211, 92, 238, 205, 245, 211, 128, 113, 93, 21, 32, 97, 232, 13, 136, 7, 67, 20, 136, 15, 226, 155, 209, 143, 238, 222, 228, 167, 157, 85, 248, 102, 131, 25, 69, 19, 149, 57, 12, 44, 145, 22, 33, 149, 158, 78, 218, 97, 84, 29, 210, 132, 123, 18, 47, 187, 54, 28, 11, 46, 167, 117, 44, 11, 37, 167, 84, 103, 83, 147, 142, 221, 165, 67, 7, 60, 174, 160, 119, 78, 6, 151, 237, 14, 212, 119, 127, 66, 15, 229, 79, 121, 185, 32, 95, 198, 74, 193, 35, 21, 163, 206, 231, 132, 12, 150, 107, 208, 217, 206, 109, 223, 6, 107, 16, 205, 199, 188, 11, 198, 113, 210, 38, 169, 94, 235, 81, 126, 140, 226, 53, 223, 161, 160, 11, 240, 153, 81, 64, 181, 221, 113, 19, 134, 57, 153, 221, 240, 255, 234, 98, 192, 32, 255, 10, 40, 142, 117, 203, 38, 22, 36, 112, 240, 27, 253, 22, 117, 31, 213, 155, 198, 131, 82, 90, 161, 120, 157, 44, 103, 61, 126, 57, 90, 200, 84, 117, 113, 151, 54, 178, 151, 21, 196, 142, 129, 88, 198, 9, 104, 180, 76, 148, 122, 212, 223, 67, 123, 107, 55, 93, 46, 229, 51, 69, 109, 213, 49, 180, 106, 26, 248, 10, 61, 44, 241, 172, 43, 151, 89, 23, 80, 87, 33, 145, 162, 255, 255, 166, 68, 31, 111, 10, 74, 36, 0, 35, 46, 29, 169, 229, 17, 180, 252, 38, 173, 141, 80, 125, 32, 109, 187, 93, 200, 157, 159, 199, 111, 152, 145, 135, 5, 234, 202, 66, 252, 56, 151, 17, 93, 239, 229, 140, 153, 175, 130, 23, 13, 68, 115, 206, 131, 5, 35, 90, 238, 175, 237, 173, 58, 149, 254, 37, 133, 3, 176, 211, 227, 255, 71, 215, 228, 127, 31, 151, 200, 161, 231, 34, 102, 255, 240, 168, 62, 5, 57, 94, 94, 135, 209, 97, 153, 147, 165, 15, 161, 27, 88, 32, 42, 33, 235, 189, 122, 8, 124, 47, 4, 155, 137, 206, 212, 206, 194, 212, 181, 224, 56, 128, 202, 137, 248, 250, 110, 144, 188, 94, 43, 5, 188, 238, 80, 61, 185, 102, 104, 232, 202, 181, 253, 35, 18, 79, 25, 161, 145, 248, 128, 231, 231, 169, 32, 230, 102, 84, 89, 241, 247, 209, 214, 241, 127, 179, 149, 11, 173, 189, 163, 27, 27, 148, 22, 153, 70, 61, 66, 133, 198, 242, 25, 193, 253, 211, 40, 45, 167, 102, 189, 125, 244, 217, 21, 90, 28, 174, 102, 65, 106, 249, 59, 130, 234, 47, 76, 203, 192, 139, 147, 68, 23, 225, 144, 24, 178, 140, 248, 18, 225, 239, 38, 235, 211, 69, 255, 157, 33, 168, 236, 68, 224, 142, 147, 55, 221, 69, 41, 118, 241, 238, 99, 218, 193, 97, 183, 117, 67, 126, 234, 249, 137, 3, 11, 156, 203, 136, 195, 106, 163, 235, 158, 35, 54, 91, 170, 229, 142, 5, 27, 20, 12, 72, 206, 58, 136, 8, 138, 55, 88, 53, 192, 26, 82, 55, 35, 12, 89, 233, 103, 110, 40, 47, 79, 67, 212, 128, 74, 157, 227, 192, 88, 227, 236, 0, 16, 182, 182, 243, 113, 253, 138, 242, 156, 187, 1, 232, 238, 51, 148, 21, 238, 130, 23, 170, 182, 39, 99, 196, 253, 185, 198, 251, 57, 107, 0, 88, 35, 241, 143, 143, 39, 223, 165, 245, 229, 40, 191, 150, 133, 48, 154, 70, 129, 231, 240, 100, 26, 191, 255, 149, 116, 59, 23, 128, 207, 215, 106, 57, 226, 41, 77, 178, 202, 4, 29, 53, 194, 9, 63, 73, 81, 149, 140, 59, 154, 110, 57, 20, 12, 212, 93, 168, 79, 144, 135, 160, 163, 76, 227, 186, 43, 147, 146, 36, 235, 253, 237, 238, 117, 17, 74, 236, 46, 42, 236, 86, 226, 225, 176, 171, 190, 191, 47, 230, 203, 161, 136, 156, 158, 69, 250, 207, 201, 25, 178, 148, 220, 9, 102, 251, 128, 139, 107, 71, 158, 240, 15, 39, 22, 28, 142, 146, 35, 38, 170, 115, 219, 17, 249, 217, 89, 25, 116, 193, 104, 165, 63, 38, 116, 45, 255, 125, 168, 136, 144, 148, 82, 100, 202, 140, 114, 198, 252, 197, 78, 130, 144, 220, 29, 11, 8, 26, 206, 211, 44, 233, 133, 82, 64, 111, 14, 252, 116, 188, 167, 131, 212, 196, 79, 82, 138, 216, 246, 124, 158, 12, 30, 114, 242, 88, 20, 153, 44, 120, 157, 152, 171, 188, 171, 70, 38, 52, 187, 72, 137, 140, 76, 3, 45, 42, 181, 157, 64, 4, 243, 107, 173, 201, 200, 241, 115, 5, 58, 210, 59, 236, 194, 229, 120, 204, 148, 27, 206, 207, 33, 124, 191, 122, 36, 131, 185, 205, 154, 156, 131, 55, 229, 103, 50, 209, 39, 205, 184, 230, 164, 42, 234, 92, 198, 17, 77, 57, 215, 81, 219, 250, 113, 72, 205, 127, 3, 44, 161, 192, 189, 85, 126, 181, 201, 19, 217, 173, 254, 91, 172, 161, 14, 114, 9, 166, 8, 175, 5, 204, 153, 233, 11, 60, 249, 234, 100, 255, 60, 209, 102, 157, 225, 183, 87, 89, 240, 234, 70, 188, 113, 124, 166, 18, 175, 193 }, + PasswordSalt = new byte[] { 214, 220, 188, 220, 245, 95, 220, 187, 65, 151, 234, 175, 97, 72, 161, 218, 111, 76, 170, 131, 194, 30, 103, 74, 248, 78, 249, 171, 105, 214, 151, 9, 141, 184, 100, 113, 211, 117, 6, 218, 2, 117, 200, 235, 168, 65, 29, 51, 116, 60, 111, 51, 242, 203, 109, 174, 255, 40, 159, 160, 179, 74, 58, 155, 252, 218, 74, 75, 221, 112, 177, 30, 223, 3, 51, 169, 28, 209, 91, 160, 11, 10, 242, 255, 202, 34, 52, 238, 150, 17, 82, 27, 154, 204, 198, 160, 116, 97, 242, 170, 30, 134, 249, 237, 158, 154, 155, 166, 227, 55, 79, 255, 132, 190, 158, 74, 190, 139, 244, 60, 162, 148, 45, 118, 165, 117, 219, 141, 104, 143, 151, 48, 242, 105, 124, 103, 41, 123, 210, 216, 197, 39, 247, 185, 31, 25, 47, 160, 190, 135, 202, 52, 94, 115, 12, 61, 77, 139, 70, 26, 254, 139, 86, 21, 228, 151, 250, 252, 80, 196, 57, 228, 70, 82, 34, 167, 1, 111, 150, 4, 184, 87, 71, 26, 106, 93, 63, 81, 56, 50, 29, 19, 40, 146, 105, 3, 235, 214, 86, 73, 213, 64, 180, 103, 220, 253, 26, 2, 109, 226, 69, 42, 198, 109, 176, 2, 103, 30, 98, 189, 78, 121, 149, 31, 244, 170, 190, 154, 232, 30, 193, 2, 0, 122, 253, 27, 22, 239, 83, 132, 2, 80, 150, 98, 49, 29, 201, 234, 166, 175, 137, 39, 215, 101, 58, 231, 163, 15, 192, 93, 150, 13, 13, 43, 243, 239, 51, 62, 5, 165, 178, 36, 230, 190, 106, 17, 151, 52, 89, 61, 233, 227, 134, 41, 193, 110, 27, 165, 172, 33, 95, 9, 137, 100, 210, 129, 231, 116, 239, 233, 89, 142, 128, 205, 20, 169, 164, 184, 165, 57, 224, 106, 42, 79, 175, 62, 110, 95, 44, 7, 28, 225, 216, 2, 131, 188, 193, 85, 206, 180, 41, 89, 155, 234, 74, 29, 148, 60, 91, 52, 255, 103, 51, 156, 220, 198, 88, 138, 108, 104, 27, 30, 73, 34, 24, 254, 170, 87, 229, 244, 164, 209, 159, 3, 47, 187, 6, 234, 197, 145, 25, 93, 149, 173, 210, 170, 48, 53, 212, 174, 199, 49, 59, 169, 157, 59, 165, 135, 63, 216, 151, 238, 236, 143, 226, 146, 234, 161, 24, 97, 30, 100, 47, 173, 120, 253, 56, 4, 24, 124, 92, 214, 199, 169, 210, 112, 197, 157, 190, 138, 238, 146, 106, 235, 7, 205, 251, 15, 221, 228, 91, 65, 22, 144, 15, 231, 200, 213, 35, 143, 224, 137, 64, 171, 234, 10, 225, 199, 155, 178, 67, 247, 4, 24, 72, 20, 211, 107, 7, 233, 123, 197, 179, 254, 237, 176, 11, 170, 202, 177, 42, 68, 183, 24, 50, 203, 191, 69, 234, 86, 48, 82, 229, 75, 36, 182, 22, 55, 183, 175, 32, 186, 199, 14, 154, 26, 175, 123, 108, 217, 41, 94, 25, 3, 157, 247, 166, 37, 41, 236, 96, 164, 31, 43, 96, 30, 147, 186, 21, 40, 18, 99, 220, 36, 158, 22, 220, 157, 171, 92, 55, 164, 88, 131, 43, 164, 27, 49, 22, 105, 214, 215, 251, 135, 244, 56, 95, 161, 117, 53, 51, 56, 163, 147, 223, 123, 202, 8, 199, 219, 220, 170, 49, 165, 194, 188, 222, 110, 207, 215, 167, 119, 246, 38, 136, 41, 181, 33, 140, 167, 209, 220, 211, 3, 54, 20, 63, 45, 229, 13, 97, 10, 152, 4, 53, 172, 109, 100, 216, 137, 218, 81, 232, 152, 25, 158, 35, 103, 18, 148, 82, 100, 22, 175, 233, 131, 191, 233, 146, 216, 248, 40, 166, 198, 179, 72, 222, 104, 0, 141, 142, 11, 123, 104, 47, 144, 90, 123, 207, 221, 136, 202, 226, 130, 154, 79, 95, 98, 169, 33, 59, 255, 30, 171, 226, 44, 225, 210, 32, 101, 226, 193, 153, 93, 61, 142, 244, 73, 248, 218, 71, 253, 221, 105, 133, 134, 182, 73, 7, 208, 74, 114, 14, 209, 164, 61, 77, 217, 207, 151, 185, 110, 86, 71, 192, 252, 184, 36, 168, 29, 138, 177, 177, 74, 224, 39, 37, 171, 148, 175, 109, 123, 172, 227, 182, 178, 130, 231, 227, 237, 247, 145, 205, 199, 36, 176, 217, 167, 163, 117, 73, 54, 218, 85, 123, 41, 32, 7, 22, 156, 10, 171, 254, 160, 209, 0, 237, 116, 126, 12, 218, 113, 78, 244, 247, 121, 164, 255, 71, 201, 132, 93, 46, 93, 177, 135, 250, 43, 232, 147, 182, 136, 182, 28, 53, 158, 192, 75, 223, 231, 53, 138, 109, 43, 204, 196, 194, 142, 55, 23, 138, 174, 200, 236, 203, 215, 122, 243, 118, 213, 97, 155, 53, 188, 199, 220, 129, 84, 41, 108, 39, 29, 71, 206, 87, 243, 231, 18, 100, 94, 242, 83, 132, 236, 204, 228, 2, 72, 249, 233, 139, 21, 166, 77, 224, 128, 67, 10, 25, 186, 176, 5, 22, 203, 150, 144, 40, 14, 36, 140, 142, 121, 173, 79, 217, 34, 185, 166, 247, 246, 183, 213, 28, 184, 228, 67, 131, 245, 225, 254, 29, 84, 209, 175, 139, 44, 168, 134, 30, 9, 153, 94, 18, 93, 32, 249, 178, 232, 144, 79, 163, 27, 183, 190, 157, 166, 248, 111, 133, 27, 153, 5, 115, 67, 140, 148, 39, 34, 32, 57, 39, 156, 144, 89, 188, 206, 165, 213, 197, 191, 165, 252, 18, 220, 1, 144, 221, 59, 192, 44, 231, 229, 6, 132, 92, 120, 77, 81, 248, 244, 37, 229, 233, 112, 62, 232, 180, 108, 61, 243, 52, 110, 71, 248, 113, 245, 230, 39, 40, 104, 199, 130, 103, 71, 231, 183, 247, 207, 90, 193, 52, 62, 201, 142, 187, 170, 161, 137, 174, 21, 39, 0, 168, 136, 241, 47, 29, 136, 211, 1, 34, 158, 42, 248, 0, 74, 110, 31, 22, 87, 221, 23, 103, 211, 238, 21, 125, 202, 217, 193, 14, 87, 75, 23, 255, 193, 196, 215, 36, 9, 112, 103, 123, 66, 207, 234, 78, 176, 64, 63, 128, 52, 24, 244, 238, 122, 124, 244, 48, 101, 139, 64, 107, 15, 19, 160, 67, 150, 245, 65, 133, 6, 33, 77, 48, 97, 133, 74, 232, 210, 163, 35, 189, 108, 165, 231, 244, 86, 237, 79, 103, 12, 54, 158, 137, 65, 147, 169, 148, 186, 181, 126, 18, 183, 163, 184, 114, 181, 70, 108, 226, 76, 203, 252, 205, 45, 63, 70, 79, 83, 61, 224, 54, 133, 204, 213, 62, 168, 114, 18, 201, 144, 113, 110, 148, 48, 178, 137, 195, 247, 47, 50, 120, 101, 171, 138, 100, 235, 166, 27, 184, 39, 171, 226, 126, 225, 147, 237, 30, 249, 199, 192, 16, 250, 9, 53, 43, 214, 12, 182, 48, 176, 217, 102, 123, 114, 23, 29, 82, 62, 190, 221, 109, 200, 112, 180, 197, 199, 225, 115, 117, 154, 129, 44, 55, 184, 109, 4, 165, 239, 173, 101, 27, 62, 220, 106, 180, 205, 0, 66, 6, 179, 192, 113, 68, 126, 226, 76, 174, 178, 103, 42, 51, 211, 211, 78, 97, 184, 38, 75, 131, 205, 19, 85, 62, 5, 231, 104, 53, 139, 254, 103, 155, 249, 59, 42, 44, 137, 71, 123, 205, 0, 192, 205, 189, 236, 1, 255, 68, 191, 97, 159, 46, 17, 73, 13, 103, 124, 31, 217, 177, 177, 145, 48, 49, 118, 137, 199, 116, 219, 35, 174, 102, 196, 144, 109, 74, 240, 231, 131, 165, 243, 154, 155, 105, 82, 20, 238, 4, 163, 171, 105, 98, 37, 83, 39, 230, 140, 226, 10, 245, 69, 25, 87, 17, 69, 93, 88, 72, 154, 162, 82, 249, 152, 44, 139, 101, 15, 59, 143, 104, 231, 219, 243, 194, 111, 217, 176, 245, 152, 198, 28, 36, 57, 232, 217, 165, 201, 42, 129, 248, 6, 115, 94, 20, 1, 59, 28, 183, 221, 62, 191, 200, 122, 197, 143, 40, 220, 55, 60, 207, 186, 115, 149, 188, 76, 7, 112, 121, 197, 7, 182, 226, 95, 178, 185, 254, 161, 39, 4, 57, 165, 133, 69, 215, 140, 197, 41, 127, 183, 31, 148, 23, 249, 128, 254, 254, 254, 41, 143, 94, 51, 39, 195, 209, 30, 24, 37, 62, 180, 174, 171, 129, 0, 26, 72, 148, 142, 135, 174, 173, 124, 246, 47, 36, 74, 253, 105, 183, 140, 159, 88, 8, 114, 38, 144, 116, 18, 51, 105, 92, 23, 32, 36, 188, 186, 249, 61, 210, 229, 85, 51, 118, 203, 227, 34, 6, 120, 207, 209, 17, 35, 145, 87, 207, 77, 62, 84, 138, 229, 132, 76, 183, 192, 26, 56, 143, 12, 227, 4, 73, 201, 93, 230, 75, 57, 198, 183, 95, 154, 40, 192, 241, 22, 254, 87, 211, 191, 128, 99, 103, 239, 47, 113, 8, 65, 63, 70, 224, 55, 203, 102, 182, 36, 170, 111, 193, 119, 204, 177, 52, 244, 46, 167, 149, 67, 151, 179, 167, 216, 240, 7, 180, 179, 52, 224, 209, 172, 11, 246, 34, 150, 52, 21, 99, 78, 134, 140, 101, 60, 188, 39, 176, 230, 128, 78, 96, 108, 98, 30, 131, 155, 112, 100, 150, 18, 210, 42, 75, 131, 36, 71, 10, 104, 37, 142, 153, 125, 115, 73, 175, 216, 133, 36, 164, 53, 206, 171, 197, 32, 132, 225, 142, 177, 246, 168, 166, 16, 171, 112, 241, 88, 214, 255, 194, 208, 159, 232, 67, 141, 228, 123, 110, 45, 181, 236, 239, 140, 9, 168, 45, 120, 74, 34, 122, 248, 193, 39, 246, 175, 186, 9, 142, 43, 29, 180, 77, 185, 241, 212, 189, 219, 121, 192, 200, 31, 85, 115, 250, 59, 233, 138, 121, 105, 133, 49, 10, 60, 106, 6, 109, 197, 189, 184, 207, 211, 216, 188, 81, 19, 31, 124, 184, 238, 107, 178, 138, 232, 96, 162, 77, 140, 166, 146, 83, 127, 229, 222, 98, 57, 28, 163, 113, 95, 169, 48, 242, 186, 190, 98, 24, 170, 210, 31, 89, 255, 61, 247, 126, 19, 206, 181, 251, 152, 199, 92, 95, 186, 89, 249, 219, 194, 162, 3, 254, 83, 188, 226, 228, 23, 108, 23, 251, 115, 107, 22, 141, 166, 61, 157, 95, 109, 239, 172, 33, 209, 226, 17, 117, 105, 118, 10, 27, 183, 98, 120, 229, 197, 194, 138, 149, 140, 70, 28, 230, 225, 45, 203, 117, 177, 118, 207, 131, 89, 145, 204, 0, 186, 221, 224, 57, 97, 203, 52, 142, 9, 203, 134, 64, 176, 237, 164, 106, 174, 219, 148, 91, 152, 42, 192, 149, 25, 65, 159, 149, 144, 62, 150, 169, 187, 88, 193, 143, 240, 175, 7, 245, 65, 91, 157, 235, 232, 129, 37, 149, 22, 149, 9, 4, 250, 103, 131, 220, 200, 146, 29, 227, 8, 71, 145, 141, 94, 148, 53, 142, 59, 166, 165, 247, 13, 46, 155, 73, 235, 34, 0, 253, 7, 156, 64, 179, 193, 185, 224, 69, 66, 243, 66, 171, 19, 31, 11, 193, 248, 234, 250, 179, 19, 141, 43, 126, 235, 234, 8, 43, 2, 208, 4, 152, 100, 211, 194, 21, 134, 88, 158, 147, 118, 73, 157, 49, 182, 140, 208, 11, 125, 111, 54, 117, 238, 172, 43, 250, 174, 134, 88, 217, 61, 148, 7, 53, 121, 178, 159, 9, 167, 10, 165, 58, 240, 39, 183, 211, 104, 248, 205, 93, 138, 174, 158, 47, 120, 60, 78, 96, 22, 133, 208, 73, 234, 195, 192, 68, 243, 20, 35, 108, 211, 92, 50, 116, 94, 44, 21, 207, 129, 58, 236, 130, 76, 1, 72, 35, 178, 124, 203, 204, 150, 87, 116, 86, 32, 192, 21, 153, 94, 47, 78, 78, 82, 169, 34, 224, 58, 147, 21, 232, 49, 80, 242, 180, 144, 239, 44, 119, 235, 39, 116, 154, 224, 26, 55, 199, 21, 73, 53, 131, 133, 249, 251, 254, 152, 234, 101, 235, 16, 50, 175, 81, 2, 180, 163, 19, 10, 222, 197, 137, 108, 22, 221, 245, 50, 177, 85, 51, 240, 164, 14, 228, 114, 38, 49, 86, 237, 129, 47, 9, 123 }, + Privileges = 8, + Username = "John Doe" + }); + }); + + modelBuilder.Entity("StarSimLib.Models.BodyToSystemJoin", b => + { + b.HasOne("StarSimLib.Models.Body", "Body") + .WithMany("BodyToSystemJoins") + .HasForeignKey("BodyId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("StarSimLib.Models.System", "System") + .WithMany("BodyToSystemJoins") + .HasForeignKey("SystemId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("StarSimLib.Models.System", b => + { + b.HasOne("StarSimLib.Models.User", "Creator") + .WithMany("CreatedSystems") + .HasForeignKey("CreatorId") + .OnDelete(DeleteBehavior.Cascade); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/StarSim/StarSimGui/Program.cs b/StarSim/StarSimGui/Program.cs @@ -1,15 +1,18 @@ using System; using Avalonia; using Avalonia.Logging.Serilog; +using StarSimLib.Cryptography; using StarSimGui.ViewModels; using StarSimGui.Views; namespace StarSimGui { + /// <summary> + /// Main program class. + /// </summary> internal class Program { - // Your application's entry point. Here you can initialize your MVVM framework, DI - // container, etc. + // Your application's entry point. Here you can initialize your MVVM framework, DI container, etc. private static void AppMain(Application app, string[] args) { MainWindow window = new MainWindow @@ -20,6 +23,33 @@ namespace StarSimGui app.Run(window); } + private static void TestHashing(string password) + { + // set a shorthand for nicety reasons + string BytesToString(byte[] contents) => CryptographyHelper.BytesToString(contents); + + Console.WriteLine($"Password to hash: {password}"); + + byte[] passwordBytes = CryptographyHelper.StringToBytes(password); + Console.WriteLine($"Password bytes:\n{BytesToString(passwordBytes)}"); + + // generates a salt of the default length + byte[] saltBytes = CryptographyHelper.GenerateSalt(); + Console.WriteLine($"Generated salt:\n{BytesToString(saltBytes)}"); + + // generates a hash of the default length + byte[] passwordHash = CryptographyHelper.GenerateHash(passwordBytes, saltBytes); + Console.WriteLine($"Generated valid hash:\n{BytesToString(passwordHash)}"); + + byte[] invalidPasswordBytes = CryptographyHelper.StringToBytes("password "); + Console.WriteLine($"Invalid password bytes:\n{BytesToString(invalidPasswordBytes)}"); + + byte[] invalidPasswordHash = CryptographyHelper.GenerateHash(invalidPasswordBytes, saltBytes); + Console.WriteLine($"Generated invalid hash:\n{BytesToString(invalidPasswordHash)}"); + + Console.WriteLine($"Valid hash == invalid hash: {CryptographyHelper.HashesEqual(passwordHash, invalidPasswordHash)}"); + } + // Avalonia configuration, don't remove; also used by visual designer. public static AppBuilder BuildAvaloniaApp() => AppBuilder.Configure<App>() @@ -27,9 +57,12 @@ namespace StarSimGui .LogToDebug() .UseReactiveUI(); - // Initialization code. Don't use any Avalonia, third-party APIs or any - // SynchronizationContext-reliant code before AppMain is called: things aren't initialized - // yet and stuff might break. - public static void Main(string[] args) => BuildAvaloniaApp().Start(AppMain, args); + // Initialization code. Don't use any Avalonia, third-party APIs or any SynchronizationContext-reliant code + // before AppMain is called: things aren't initialized yet and stuff might break. + public static void Main(string[] args) + { + //TestHashing("Hello World!"); + BuildAvaloniaApp().Start(AppMain, args); + } } } \ No newline at end of file diff --git a/StarSim/StarSimGui/Simulator.db b/StarSim/StarSimGui/Simulator.db Binary files differ. diff --git a/StarSim/StarSimGui/Source/LoginAttemptResult.cs b/StarSim/StarSimGui/Source/LoginAttemptResult.cs @@ -0,0 +1,74 @@ +using System; + +namespace StarSimGui.Source +{ + /// <summary> + /// Enumerates the possible results of a login attempt. + /// </summary> + [Flags] + public enum LoginResult : byte + { + /// <summary> + /// The user logged in successfully. + /// </summary> + Success = 1 << 0, + + /// <summary> + /// There was an unexpected error, and the user was not logged in. + /// </summary> + Error = 1 << 1, + + /// <summary> + /// The user did not give a valid username, and was not logged in. + /// </summary> + BadUsername = Error | 1 << 2, + + /// <summary> + /// The user did not give a valid password, and was not logged in. + /// </summary> + BadPassword = Error | 1 << 3, + } + + /// <summary> + /// Represents the result of a login attempt, and holds data about the error (if any) encountered during the login. + /// </summary> + public struct LoginAttemptResult + { + /// <summary> + /// The result of the attempt. + /// </summary> + public LoginResult Result; + + /// <summary> + /// Initialises a new instance of the <see cref="LoginAttemptResult"/> struct. + /// </summary> + /// <param name="result">The <see cref="LoginResult"/> of this attempt.</param> + /// <param name="message">The message about the error that occured, if any.</param> + public LoginAttemptResult(LoginResult result, string message = null) + { + Result = result; + Message = message; + } + + /// <summary> + /// Whether this attempt resulted in an error. + /// </summary> + public bool IsError + { + get { return (Result & LoginResult.Error) == LoginResult.Error; } + } + + /// <summary> + /// Whether this attempt resulted in a success. + /// </summary> + public bool IsSuccess + { + get { return (Result & LoginResult.Success) == LoginResult.Success; } + } + + /// <summary> + /// A description of the error that occured, if any. + /// </summary> + public string Message { get; set; } + } +} +\ No newline at end of file diff --git a/StarSim/StarSimGui/StarSimGui.csproj b/StarSim/StarSimGui/StarSimGui.csproj @@ -18,12 +18,55 @@ </ItemGroup> <ItemGroup> + <AvaloniaResource Remove="Views\Database.xaml" /> + <AvaloniaResource Remove="Views\Overview.xaml" /> + <AvaloniaResource Remove="Views\Simulation.xaml" /> + <AvaloniaResource Remove="Views\UserLogin.xaml" /> + </ItemGroup> + + <ItemGroup> + <Compile Remove="Migrations\20190801134219_UpdateModels.cs" /> + <Compile Remove="Migrations\20190801134219_UpdateModels.Designer.cs" /> + </ItemGroup> + + <ItemGroup> + <None Remove="Views\Database.xaml" /> + <None Remove="Views\Overview.xaml" /> + <None Remove="Views\Simulation.xaml" /> + <None Remove="Views\UserLogin.xaml" /> + </ItemGroup> + + <ItemGroup> <PackageReference Include="Avalonia" Version="0.8.0" /> <PackageReference Include="Avalonia.Desktop" Version="0.8.0" /> <PackageReference Include="Avalonia.ReactiveUI" Version="0.8.0" /> </ItemGroup> <ItemGroup> + <EmbeddedResource Include="Views\UserLogin.xaml"> + <Generator>MSBuild:Compile</Generator> + </EmbeddedResource> + </ItemGroup> + + <ItemGroup> + <EmbeddedResource Include="Views\Overview.xaml"> + <Generator>MSBuild:Compile</Generator> + </EmbeddedResource> + </ItemGroup> + + <ItemGroup> + <EmbeddedResource Include="Views\Simulation.xaml"> + <Generator>MSBuild:Compile</Generator> + </EmbeddedResource> + </ItemGroup> + + <ItemGroup> + <EmbeddedResource Include="Views\Database.xaml"> + <Generator>MSBuild:Compile</Generator> + </EmbeddedResource> + </ItemGroup> + + <ItemGroup> <ProjectReference Include="..\StarSimLib\StarSimLib.csproj" /> </ItemGroup> @@ -31,6 +74,9 @@ <None Update="App.xaml"> <Generator>MSBuild:Compile</Generator> </None> + <None Update="Simulator.db"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> <None Update="Views\MainWindow.xaml"> <Generator>MSBuild:Compile</Generator> </None> diff --git a/StarSim/StarSimGui/ViewModels/DatabaseViewModel.cs b/StarSim/StarSimGui/ViewModels/DatabaseViewModel.cs @@ -0,0 +1,9 @@ +namespace StarSimGui.ViewModels +{ + /// <summary> + /// Represents the database view. + /// </summary> + public class DatabaseViewModel : ViewModelBase + { + } +} +\ No newline at end of file diff --git a/StarSim/StarSimGui/ViewModels/MainWindowViewModel.cs b/StarSim/StarSimGui/ViewModels/MainWindowViewModel.cs @@ -1,14 +1,33 @@ using System; using System.Collections.Generic; using System.Text; +using StarSimLib.Contexts; namespace StarSimGui.ViewModels { public class MainWindowViewModel : ViewModelBase { - public string Greeting + public MainWindowViewModel() { - get { return "Welcome to Avalonia!"; } + SimulatorContext = new SimulatorContext(); + + DatabaseViewModel = new DatabaseViewModel(); + + OverviewViewModel = new OverviewViewModel(); + + SimulationViewModel = new SimulationViewModel(); + + UserLoginViewModel = new UserLoginViewModel(SimulatorContext); } + + /// <summary> + /// The database context in which the program should store data and which it should query to fetch data. + /// </summary> + private SimulatorContext SimulatorContext { get; } + + public DatabaseViewModel DatabaseViewModel { get; set; } + public OverviewViewModel OverviewViewModel { get; set; } + public SimulationViewModel SimulationViewModel { get; set; } + public UserLoginViewModel UserLoginViewModel { get; set; } } } \ No newline at end of file diff --git a/StarSim/StarSimGui/ViewModels/OverviewViewModel.cs b/StarSim/StarSimGui/ViewModels/OverviewViewModel.cs @@ -0,0 +1,9 @@ +namespace StarSimGui.ViewModels +{ + /// <summary> + /// Represents the overview. + /// </summary> + public class OverviewViewModel : ViewModelBase + { + } +} +\ No newline at end of file diff --git a/StarSim/StarSimGui/ViewModels/SimulationViewModel.cs b/StarSim/StarSimGui/ViewModels/SimulationViewModel.cs @@ -0,0 +1,9 @@ +namespace StarSimGui.ViewModels +{ + /// <summary> + /// Represents the simulation view. + /// </summary> + public class SimulationViewModel : ViewModelBase + { + } +} +\ No newline at end of file diff --git a/StarSim/StarSimGui/ViewModels/UserLoginViewModel.cs b/StarSim/StarSimGui/ViewModels/UserLoginViewModel.cs @@ -0,0 +1,195 @@ +using System; +using System.Linq; +using System.Windows.Input; +using ReactiveUI; +using StarSimGui.Source; +using StarSimLib.Contexts; +using StarSimLib.Cryptography; +using StarSimLib.Models; + +namespace StarSimGui.ViewModels +{ + /// <summary> + /// Represents the user login view. + /// </summary> + public class UserLoginViewModel : ViewModelBase + { + /// <summary> + /// The program database. + /// </summary> + private readonly SimulatorContext dbContext; + + /// <summary> + /// Backing field for the <see cref="IsLoggedIn"/> property. + /// </summary> + private bool isLoggedIn; + + /// <summary> + /// Backing field for the <see cref="LoginFeedback"/> property. + /// </summary> + private LoginAttemptResult loginFeedback; + + /// <summary> + /// Backing field for the <see cref="Password"/> property. + /// </summary> + private string password; + + /// <summary> + /// Backing field for the <see cref="Username"/> property. + /// </summary> + private string username; + + /// <summary> + /// Initialises a new instance of the<see cref="UserLoginViewModel"/> class. + /// </summary> + public UserLoginViewModel() : this(null) + { + } + + /// <summary> + /// Initialises a new instance of the <see cref="UserLoginViewModel"/> class. + /// </summary> + /// <param name="context">The <see cref="SimulatorContext"/> instance in which program data is stored.</param> + public UserLoginViewModel(SimulatorContext context) + { + dbContext = context; + + IObservable<bool> canLogin = this.WhenAnyValue(x => x.Username, x => x.Password, x => x.IsLoggedIn, + (username, password, isLoggedIn) => + !string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password) && !isLoggedIn); + + OnLoginCommand = ReactiveCommand.Create(OnLoginImpl, canLogin); + + IObservable<bool> canLogout = this.WhenAnyValue(x => x.IsLoggedIn); + + OnLogoutCommand = ReactiveCommand.Create(OnLogoutImpl, canLogout); + } + + /// <summary> + /// Whether the user is logged into the service. + /// </summary> + public bool IsLoggedIn + { + get + { + return isLoggedIn; + } + set + { + isLoggedIn = value; + this.RaisePropertyChanged(); + } + } + + /// <summary> + /// Feedback about the last login attempt. + /// </summary> + public LoginAttemptResult LoginFeedback + { + get + { + return loginFeedback; + } + + set + { + loginFeedback = value; + this.RaisePropertyChanged(); + } + } + + /// <summary> + /// Command invoked whenever the user tries to login. + /// </summary> + public ICommand OnLoginCommand { get; } + + /// <summary> + /// Command invoked whenever the user tries to logout. + /// </summary> + public ICommand OnLogoutCommand { get; } + + /// <summary> + /// The password to attempt to login with. + /// </summary> + public string Password + { + get + { + return password; + } + + set + { + password = value; + this.RaisePropertyChanged(); + } + } + + /// <summary> + /// The username to attempt to login with. + /// </summary> + public string Username + { + get + { + return username; + } + + set + { + username = value; + this.RaisePropertyChanged(); + } + } + + /// <summary> + /// Invoked whenever the user attempts to login with a <see cref="Username"/> and <see cref="Password"/>. + /// </summary> + private void OnLoginImpl() + { + try + { + // we convert the password to a byte array, so that it may be hashed + byte[] passwordAsBytes = CryptographyHelper.StringToBytes(Password); + + // we attempt to find a user with the requested username, to check the given password against + User tempUser = dbContext.Users.FirstOrDefault(user => user.Username == Username); + + // if no user with the given username was found, we skip any further processing and inform the user + if (tempUser == null) + { + LoginFeedback = new LoginAttemptResult(LoginResult.BadUsername, "User with the given username does not exist"); + return; + } + + // a user with the given username exists, so we get their password salt and compare the password hashes + byte[] userSalt = tempUser.PasswordSalt; + byte[] givenPasswordHash = CryptographyHelper.GenerateHash(passwordAsBytes, userSalt); + + // if the passwords do not match, we skip any further processing and inform the user + if (!CryptographyHelper.HashesEqual(givenPasswordHash, tempUser.PasswordHash)) + { + LoginFeedback = new LoginAttemptResult(LoginResult.BadPassword, "Given password is invalid"); + return; + } + + // if both the given username and password match, the user is logged in + IsLoggedIn = true; + LoginFeedback = new LoginAttemptResult(LoginResult.Success, "Logged in successfully."); + } + catch (Exception) + { + LoginFeedback = new LoginAttemptResult(LoginResult.Error, "Unexpected error occurred"); + } + } + + /// <summary> + /// Invoked whenever the user attempts to log out. + /// </summary> + private void OnLogoutImpl() + { + IsLoggedIn = false; + LoginFeedback = new LoginAttemptResult(); + } + } +} +\ No newline at end of file diff --git a/StarSim/StarSimGui/ViewModels/ViewModelBase.cs b/StarSim/StarSimGui/ViewModels/ViewModelBase.cs @@ -1,11 +1,9 @@ -using System; -using System.Collections.Generic; -using System.Text; +using System.ComponentModel; using ReactiveUI; namespace StarSimGui.ViewModels { - public class ViewModelBase : ReactiveObject + public class ViewModelBase : ReactiveObject, INotifyPropertyChanged { } -} +} +\ No newline at end of file diff --git a/StarSim/StarSimGui/Views/Database.xaml b/StarSim/StarSimGui/Views/Database.xaml @@ -0,0 +1,16 @@ +<UserControl xmlns="https://github.com/avaloniaui" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:vm="clr-namespace:StarSimGui.ViewModels;assembly=StarSimGui" + xmlns:v="clr-namespace:StarSimGui.Views;assembly=StarSimGui" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" + x:Class="StarSimGui.Views.Database" + Background="WhiteSmoke"> + + <Design.DataContext> + <vm:DatabaseViewModel /> + </Design.DataContext> + + <TextBlock Text="Database" HorizontalAlignment="Center" VerticalAlignment="Center" /> +</UserControl> +\ No newline at end of file diff --git a/StarSim/StarSimGui/Views/Database.xaml.cs b/StarSim/StarSimGui/Views/Database.xaml.cs @@ -0,0 +1,19 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; + +namespace StarSimGui.Views +{ + public class Database : UserControl + { + public Database() + { + this.InitializeComponent(); + } + + private void InitializeComponent() + { + AvaloniaXamlLoader.Load(this); + } + } +} diff --git a/StarSim/StarSimGui/Views/MainWindow.xaml b/StarSim/StarSimGui/Views/MainWindow.xaml @@ -1,17 +1,31 @@ <Window xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:vm="clr-namespace:StarSimGui.ViewModels;assembly=StarSimGui" + xmlns:v="clr-namespace:StarSimGui.Views;assembly=StarSimGui" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" x:Class="StarSimGui.Views.MainWindow" Icon="/Assets/avalonia-logo.ico" - Title="StarSimGui"> + Title="Star Simulation - Mikołaj Lenczewski" + Background="White"> - <Design.DataContext> - <vm:MainWindowViewModel/> - </Design.DataContext> + <Design.DataContext> + <vm:MainWindowViewModel /> + </Design.DataContext> - <TextBlock Text="{Binding Greeting}" HorizontalAlignment="Center" VerticalAlignment="Center"/> - -</Window> + <TabControl BorderThickness="5"> + <TabItem Header="Login" Background="WhiteSmoke" BorderThickness="1"> + <v:UserLogin DataContext="{Binding UserLoginViewModel}" /> + </TabItem> + <TabItem Header="Overview" Background="WhiteSmoke" BorderThickness="1" IsVisible="{Binding UserLoginViewModel.IsLoggedIn}"> + <v:Overview DataContext="{Binding OverviewViewModel}" /> + </TabItem> + <TabItem Header="Simulation" Background="WhiteSmoke" BorderThickness="1" IsVisible="{Binding UserLoginViewModel.IsLoggedIn}"> + <v:Simulation DataContext="{Binding SimulationViewModel}" /> + </TabItem> + <TabItem Header="Body Database" Background="WhiteSmoke" BorderThickness="1" IsVisible="{Binding UserLoginViewModel.IsLoggedIn}"> + <v:Database DataContext="{Binding DatabaseViewModel}" /> + </TabItem> + </TabControl> +</Window> +\ No newline at end of file diff --git a/StarSim/StarSimGui/Views/Overview.xaml b/StarSim/StarSimGui/Views/Overview.xaml @@ -0,0 +1,16 @@ +<UserControl xmlns="https://github.com/avaloniaui" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:vm="clr-namespace:StarSimGui.ViewModels;assembly=StarSimGui" + xmlns:v="clr-namespace:StarSimGui.Views;assembly=StarSimGui" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" + x:Class="StarSimGui.Views.Overview" + Background="WhiteSmoke"> + + <Design.DataContext> + <vm:OverviewViewModel /> + </Design.DataContext> + + <TextBlock Text="Overview" HorizontalAlignment="Center" VerticalAlignment="Center" /> +</UserControl> +\ No newline at end of file diff --git a/StarSim/StarSimGui/Views/Overview.xaml.cs b/StarSim/StarSimGui/Views/Overview.xaml.cs @@ -0,0 +1,19 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; + +namespace StarSimGui.Views +{ + public class Overview : UserControl + { + public Overview() + { + this.InitializeComponent(); + } + + private void InitializeComponent() + { + AvaloniaXamlLoader.Load(this); + } + } +} diff --git a/StarSim/StarSimGui/Views/Simulation.xaml b/StarSim/StarSimGui/Views/Simulation.xaml @@ -0,0 +1,16 @@ +<UserControl xmlns="https://github.com/avaloniaui" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:vm="clr-namespace:StarSimGui.ViewModels;assembly=StarSimGui" + xmlns:v="clr-namespace:StarSimGui.Views;assembly=StarSimGui" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" + x:Class="StarSimGui.Views.Simulation" + Background="WhiteSmoke"> + + <Design.DataContext> + <vm:SimulationViewModel /> + </Design.DataContext> + + <TextBlock Text="Simulation" HorizontalAlignment="Center" VerticalAlignment="Center" /> +</UserControl> +\ No newline at end of file diff --git a/StarSim/StarSimGui/Views/Simulation.xaml.cs b/StarSim/StarSimGui/Views/Simulation.xaml.cs @@ -0,0 +1,19 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; + +namespace StarSimGui.Views +{ + public class Simulation : UserControl + { + public Simulation() + { + this.InitializeComponent(); + } + + private void InitializeComponent() + { + AvaloniaXamlLoader.Load(this); + } + } +} diff --git a/StarSim/StarSimGui/Views/UserLogin.xaml b/StarSim/StarSimGui/Views/UserLogin.xaml @@ -0,0 +1,38 @@ +<UserControl xmlns="https://github.com/avaloniaui" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:vm="clr-namespace:StarSimGui.ViewModels;assembly=StarSimGui" + xmlns:v="clr-namespace:StarSimGui.Views;assembly=StarSimGui" + xmlns:local="clr-namespace:StarSimGui.Source;assembly=StarSimGui" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + mc:Ignorable="d" + x:Class="StarSimGui.Views.UserLogin" + Background="WhiteSmoke"> + + <Design.DataContext> + <vm:UserLoginViewModel /> + </Design.DataContext> + + <DockPanel> + <StackPanel Margin="4" Orientation="Vertical" DockPanel.Dock="Top"> + <TextBlock Text="Username:" HorizontalAlignment="Center" DockPanel.Dock="Top" /> + <TextBox Text="{Binding Username, Mode=TwoWay}" Width="200" HorizontalAlignment="Center" /> + <TextBlock Text="Password:" HorizontalAlignment="Center" DockPanel.Dock="Top" /> + <TextBox Text="{Binding Password, Mode=TwoWay}" Width="200" PasswordChar="*" HorizontalAlignment="Center" /> + <Separator Margin="2" DockPanel.Dock="Top" /> + <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" DataContext="{Binding LoginFeedback}"> + <TextBlock Text="Error: " Foreground="Red" IsVisible="{Binding IsError}" /> + <TextBlock Text="{Binding Message}" Foreground="Red" IsVisible="{Binding IsError}" /> + </StackPanel> + <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" DataContext="{Binding LoginFeedback}"> + <TextBlock Text="Login Successful!" Foreground="Green" IsVisible="{Binding IsSuccess}" /> + </StackPanel> + </StackPanel> + <Separator Margin="2" DockPanel.Dock="Top" /> + <StackPanel Orientation="Vertical" Margin="4" DockPanel.Dock="Bottom"> + <Button Command="{Binding OnLoginCommand}" Height="50">Login</Button> + <Separator Margin="2" /> + <Button Command="{Binding OnLogoutCommand}" Height="50">Logout</Button> + </StackPanel> + </DockPanel> +</UserControl> +\ No newline at end of file diff --git a/StarSim/StarSimGui/Views/UserLogin.xaml.cs b/StarSim/StarSimGui/Views/UserLogin.xaml.cs @@ -0,0 +1,19 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; + +namespace StarSimGui.Views +{ + public class UserLogin : UserControl + { + public UserLogin() + { + this.InitializeComponent(); + } + + private void InitializeComponent() + { + AvaloniaXamlLoader.Load(this); + } + } +} diff --git a/StarSim/StarSimLib/Constants.cs b/StarSim/StarSimLib/Constants.cs @@ -10,7 +10,7 @@ namespace StarSimLib /// <summary> /// The amount of bodies that are rendered by default. /// </summary> - public const int BodyCount = 50; + public const int BodyCount = 25; /// <summary> /// The mass of the central body, if it is included. diff --git a/StarSim/StarSimLib/Contexts/SimulatorContext.cs b/StarSim/StarSimLib/Contexts/SimulatorContext.cs @@ -1,5 +1,6 @@ using System.Security.Cryptography; using Microsoft.EntityFrameworkCore; +using StarSimLib.Cryptography; using StarSimLib.Models; namespace StarSimLib.Contexts @@ -15,14 +16,14 @@ namespace StarSimLib.Contexts public const string ConnectionString = @"Data Source=Simulator.db"; /// <summary> - /// Constructs a new instance of the <see cref="SimulatorContext"/> class. + /// Initialises a new instance of the <see cref="SimulatorContext"/> class. /// </summary> public SimulatorContext() : base(new DbContextOptionsBuilder<SimulatorContext>().Options) { } /// <summary> - /// Constructs a new instance of the <see cref="SimulatorContext"/> class. + /// Initialises a new instance of the <see cref="SimulatorContext"/> class. /// </summary> /// <param name="options">Any <see cref="DbContextOptions"/> that should be set on this instance.</param> public SimulatorContext(DbContextOptions options) : base(options) @@ -74,7 +75,7 @@ namespace StarSimLib.Contexts modelBuilder.Entity<Models.System>().HasIndex(system => system.Id).IsUnique(); modelBuilder.Entity<Models.System>().HasData( - new Models.System(1, "Test") + new Models.System(1, 1, "Test") ); modelBuilder.Entity<BodyToSystemJoin>().HasIndex(join => new { join.BodyId, join.SystemId }).IsUnique(); @@ -89,8 +90,16 @@ namespace StarSimLib.Contexts modelBuilder.Entity<User>().Property(user => user.Email).HasDefaultValue("john.doe@gmail.com"); + byte[] defaultUserSalt = CryptographyHelper.GenerateSalt(), defaultUserPasswordBytes = CryptographyHelper.StringToBytes("Default"); + byte[] publisherSalt = CryptographyHelper.GenerateSalt(), publisherPasswordBytes = CryptographyHelper.StringToBytes("Publish"); + byte[] adminSalt = CryptographyHelper.GenerateSalt(), adminPasswordBytes = CryptographyHelper.StringToBytes("Admin"); + byte[] testUserSalt = CryptographyHelper.GenerateSalt(), testUserPasswordBytes = CryptographyHelper.StringToBytes("Test123"); + modelBuilder.Entity<User>().HasData( - new User(1, "John Doe", new byte[0], new byte[0]) + new User(1, "User", UserPrivileges.Default, CryptographyHelper.GenerateHash(defaultUserPasswordBytes, defaultUserSalt), defaultUserSalt), + new User(2, "Publisher", UserPrivileges.Publisher, CryptographyHelper.GenerateHash(publisherPasswordBytes, publisherSalt), publisherSalt), + new User(3, "Administrator", UserPrivileges.Admin, CryptographyHelper.GenerateHash(adminPasswordBytes, adminSalt), adminSalt), + new User(4, "John Doe", UserPrivileges.Default, CryptographyHelper.GenerateHash(testUserPasswordBytes, testUserSalt), testUserSalt) ); } diff --git a/StarSim/StarSimLib/Models/Body.cs b/StarSim/StarSimLib/Models/Body.cs @@ -53,7 +53,7 @@ namespace StarSimLib.Models /// A timestamp updated whenever the entity is handled by the database. Functions as a concurrency token to prevent /// multiple access to the same field. /// </summary> - [Timestamp, Required(ErrorMessage = "Body must have a timestamp associated with it.")] + [Timestamp] public byte[] Timestamp { get; set; } } } \ No newline at end of file diff --git a/StarSim/StarSimLib/Models/BodyToSystemJoin.cs b/StarSim/StarSimLib/Models/BodyToSystemJoin.cs @@ -57,7 +57,7 @@ namespace StarSimLib.Models /// A timestamp updated whenever the entity is handled by the database. Functions as a concurrency token to prevent /// multiple access to the same field. /// </summary> - [Timestamp, Required(ErrorMessage = "Body-to-System join must have a timestamp associated with it.")] + [Timestamp] public byte[] Timestamp { get; set; } } } \ No newline at end of file diff --git a/StarSim/StarSimLib/Models/System.cs b/StarSim/StarSimLib/Models/System.cs @@ -13,10 +13,12 @@ namespace StarSimLib.Models /// Initialises a new instance of the <see cref="System"/> class. /// </summary> /// <param name="id">The unique id of this instance.</param> + /// <param name="creatorId">The unique id of the creator of this instance.</param> /// <param name="name">The name of this instance.</param> - public System(ulong id, string name) + public System(ulong id, ulong creatorId, string name) { Id = id; + CreatorId = creatorId; Name = name; } @@ -58,7 +60,7 @@ namespace StarSimLib.Models /// A timestamp updated whenever the entity is handled by the database. Functions as a concurrency token to prevent /// multiple access to the same field. /// </summary> - [Timestamp, Required(ErrorMessage = "System must have a timestamp associated with it.")] + [Timestamp] public byte[] Timestamp { get; set; } } } \ No newline at end of file diff --git a/StarSim/StarSimLib/Models/User.cs b/StarSim/StarSimLib/Models/User.cs @@ -1,11 +1,83 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; -using StarSimLib.Cryptography; namespace StarSimLib.Models { /// <summary> + /// Enumerates the possible privileges that a <see cref="User"/> can have, as flags to save space. + /// </summary> + [Flags] + public enum UserPrivileges + { + /// <summary> + /// Represents a user with the default privileges. + /// </summary> + Default = ViewSimulations | ViewKnownBodies, + + /// <summary> + /// Represents a user with publishing privileges. + /// </summary> + Publisher = Default | PublishSimulations | ManageOwnSimulations | PublishKnownBodies | ManageOwnKnownBodies, + + /// <summary> + /// Represents a user with administration privileges. + /// </summary> + Admin = Publisher | ManageForeignSimulations | ManageForeignKnownBodies | ViewUsers | ManageUsers, + + /// <summary> + /// Allows a user to start published or random simulations and view them. + /// </summary> + ViewSimulations = 0, + + /// <summary> + /// Allows a user to publish simulations for other users to view. + /// </summary> + PublishSimulations = 1, + + /// <summary> + /// Allows a user to manage other user's published simulations. + /// </summary> + ManageForeignSimulations = 2, + + /// <summary> + /// Allows a user to manage their own published simulations. + /// </summary> + ManageOwnSimulations = 4, + + /// <summary> + /// Allows a user to view known bodies. + /// </summary> + ViewKnownBodies = 8, + + /// <summary> + /// Allows a user to add new known bodies for other users to view. + /// </summary> + PublishKnownBodies = 16, + + /// <summary> + /// Allows a user to edit their own published known bodies. + /// </summary> + ManageOwnKnownBodies = 32, + + /// <summary> + /// Allows a user to edit other user's published known bodies. + /// </summary> + ManageForeignKnownBodies = 64, + + /// <summary> + /// Allows a user to view other user's information. + /// </summary> + ViewUsers = 128, + + /// <summary> + /// Allows a user to manage other user's information. + /// </summary> + ManageUsers = 256, + } + + /// <summary> /// Represents a user in the database. /// </summary> public class User @@ -15,11 +87,13 @@ namespace StarSimLib.Models /// </summary> /// <param name="id">The unique id of this instance.</param> /// <param name="username">The username of this instance.</param> + /// <param name="privileges">The privileges associated with this instance.</param> /// <param name="email">The optional email of this instance.</param> - public User(ulong id, string username, string email = null) + public User(ulong id, string username, UserPrivileges privileges, string email = null) { Id = id; Username = username; + Privileges = privileges; Email = email; } @@ -28,13 +102,15 @@ namespace StarSimLib.Models /// </summary> /// <param name="id">The unique id of this instance.</param> /// <param name="username">The username of this instance.</param> + /// <param name="privileges">The privileges associated with this instance.</param> /// <param name="passwordHash">The hash of the salted password of this instance.</param> /// <param name="passwordSalt">The salt used to hash the password.</param> /// <param name="email">The optional email of this instance.</param> - public User(ulong id, string username, byte[] passwordHash, byte[] passwordSalt, string email = null) + public User(ulong id, string username, UserPrivileges privileges, byte[] passwordHash, byte[] passwordSalt, string email = null) { Id = id; Username = username; + Privileges = privileges; PasswordHash = passwordHash; PasswordSalt = passwordSalt; Email = email; @@ -73,10 +149,16 @@ namespace StarSimLib.Models public byte[] PasswordSalt { get; set; } /// <summary> + /// The privileges associated with this instance. + /// </summary> + [Required(ErrorMessage = "User account must have at least the default privilege associated with it.")] + public UserPrivileges Privileges { get; set; } + + /// <summary> /// A timestamp updated whenever the entity is handled by the database. Functions as a concurrency token to prevent /// multiple access to the same field. /// </summary> - [Timestamp, Required(ErrorMessage = "User must have a timestamp associated with it.")] + [Timestamp] public byte[] Timestamp { get; set; } /// <summary> diff --git a/StarSim/StarSimLib/StarSimLib.xml b/StarSim/StarSimLib/StarSimLib.xml @@ -108,12 +108,12 @@ </member> <member name="M:StarSimLib.Contexts.SimulatorContext.#ctor"> <summary> - Constructs a new instance of the <see cref="T:StarSimLib.Contexts.SimulatorContext"/> class. + Initialises a new instance of the <see cref="T:StarSimLib.Contexts.SimulatorContext"/> class. </summary> </member> <member name="M:StarSimLib.Contexts.SimulatorContext.#ctor(Microsoft.EntityFrameworkCore.DbContextOptions)"> <summary> - Constructs a new instance of the <see cref="T:StarSimLib.Contexts.SimulatorContext"/> class. + Initialises a new instance of the <see cref="T:StarSimLib.Contexts.SimulatorContext"/> class. </summary> <param name="options">Any <see cref="T:Microsoft.EntityFrameworkCore.DbContextOptions"/> that should be set on this instance.</param> </member> @@ -1382,11 +1382,12 @@ Represents a star system in the database, with a collection of child <see cref="T:StarSimLib.Models.Body"/> instances. </summary> </member> - <member name="M:StarSimLib.Models.System.#ctor(System.UInt64,System.String)"> + <member name="M:StarSimLib.Models.System.#ctor(System.UInt64,System.UInt64,System.String)"> <summary> Initialises a new instance of the <see cref="T:StarSimLib.Models.System"/> class. </summary> <param name="id">The unique id of this instance.</param> + <param name="creatorId">The unique id of the creator of this instance.</param> <param name="name">The name of this instance.</param> </member> <member name="P:StarSimLib.Models.System.BodyToSystemJoins"> @@ -1421,25 +1422,97 @@ multiple access to the same field. </summary> </member> + <member name="T:StarSimLib.Models.UserPrivileges"> + <summary> + Enumerates the possible privileges that a <see cref="T:StarSimLib.Models.User"/> can have, as flags to save space. + </summary> + </member> + <member name="F:StarSimLib.Models.UserPrivileges.Default"> + <summary> + Represents a user with the default privileges. + </summary> + </member> + <member name="F:StarSimLib.Models.UserPrivileges.Publisher"> + <summary> + Represents a user with publishing privileges. + </summary> + </member> + <member name="F:StarSimLib.Models.UserPrivileges.Admin"> + <summary> + Represents a user with administration privileges. + </summary> + </member> + <member name="F:StarSimLib.Models.UserPrivileges.ViewSimulations"> + <summary> + Allows a user to start published or random simulations and view them. + </summary> + </member> + <member name="F:StarSimLib.Models.UserPrivileges.PublishSimulations"> + <summary> + Allows a user to publish simulations for other users to view. + </summary> + </member> + <member name="F:StarSimLib.Models.UserPrivileges.ManageForeignSimulations"> + <summary> + Allows a user to manage other user's published simulations. + </summary> + </member> + <member name="F:StarSimLib.Models.UserPrivileges.ManageOwnSimulations"> + <summary> + Allows a user to manage their own published simulations. + </summary> + </member> + <member name="F:StarSimLib.Models.UserPrivileges.ViewKnownBodies"> + <summary> + Allows a user to view known bodies. + </summary> + </member> + <member name="F:StarSimLib.Models.UserPrivileges.PublishKnownBodies"> + <summary> + Allows a user to add new known bodies for other users to view. + </summary> + </member> + <member name="F:StarSimLib.Models.UserPrivileges.ManageOwnKnownBodies"> + <summary> + Allows a user to edit their own published known bodies. + </summary> + </member> + <member name="F:StarSimLib.Models.UserPrivileges.ManageForeignKnownBodies"> + <summary> + Allows a user to edit other user's published known bodies. + </summary> + </member> + <member name="F:StarSimLib.Models.UserPrivileges.ViewUsers"> + <summary> + Allows a user to view other user's information. + </summary> + </member> + <member name="F:StarSimLib.Models.UserPrivileges.ManageUsers"> + <summary> + Allows a user to manage other user's information. + </summary> + </member> <member name="T:StarSimLib.Models.User"> <summary> Represents a user in the database. </summary> </member> - <member name="M:StarSimLib.Models.User.#ctor(System.UInt64,System.String,System.String)"> + <member name="M:StarSimLib.Models.User.#ctor(System.UInt64,System.String,StarSimLib.Models.UserPrivileges,System.String)"> <summary> Initialises a new instance of the <see cref="T:StarSimLib.Models.User"/> class. </summary> <param name="id">The unique id of this instance.</param> <param name="username">The username of this instance.</param> + <param name="privileges">The privileges associated with this instance.</param> <param name="email">The optional email of this instance.</param> </member> - <member name="M:StarSimLib.Models.User.#ctor(System.UInt64,System.String,System.Byte[],System.Byte[],System.String)"> + <member name="M:StarSimLib.Models.User.#ctor(System.UInt64,System.String,StarSimLib.Models.UserPrivileges,System.Byte[],System.Byte[],System.String)"> <summary> Initialises a new instance of the <see cref="T:StarSimLib.Models.User"/> class. </summary> <param name="id">The unique id of this instance.</param> <param name="username">The username of this instance.</param> + <param name="privileges">The privileges associated with this instance.</param> <param name="passwordHash">The hash of the salted password of this instance.</param> <param name="passwordSalt">The salt used to hash the password.</param> <param name="email">The optional email of this instance.</param> @@ -1469,6 +1542,11 @@ The salt prepended to this instance's password prior to hashing. </summary> </member> + <member name="P:StarSimLib.Models.User.Privileges"> + <summary> + The privileges associated with this instance. + </summary> + </member> <member name="P:StarSimLib.Models.User.Timestamp"> <summary> A timestamp updated whenever the entity is handled by the database. Functions as a concurrency token to prevent