Compare commits
No commits in common. "master" and "6.0.1" have entirely different histories.
@ -1,14 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace QtCNETAPI.Dtos.User
|
||||
{
|
||||
public class UserPasswordResetDto
|
||||
{
|
||||
public string Token { get; set; } = string.Empty;
|
||||
public string Password { get; set; } = string.Empty;
|
||||
}
|
||||
}
|
||||
@ -6,6 +6,5 @@
|
||||
public string Name { get; set; } = string.Empty;
|
||||
public string CreatorId { get; set; } = string.Empty;
|
||||
public DateTime CreatedAt { get; set; } = new DateTime();
|
||||
public int UserCount { get; set; } = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -9,7 +9,6 @@
|
||||
public string Role { get; set; } = string.Empty;
|
||||
public string PasswordHash { get; set; } = string.Empty;
|
||||
public string Email { get; set; } = string.Empty;
|
||||
public bool IsEmailVerified { get; set; } = false;
|
||||
public DateTime DateOfBirth { get; set; }
|
||||
public DateTime CreatedAt { get; set; }
|
||||
public int Status { get; set; } = 0;
|
||||
@ -17,7 +16,6 @@
|
||||
public int StockAmount { get; set; } = 0;
|
||||
public DateTime LastCurrencySpin { get; set; }
|
||||
public int ActiveProfileCosmetic { get; set; } = 0;
|
||||
public string CurrentRoomId { get; set; } = string.Empty;
|
||||
|
||||
public virtual IEnumerable<RefreshToken>? RefreshTokens { get; }
|
||||
public virtual IEnumerable<Contact>? ContactsMade { get; }
|
||||
|
||||
@ -7,11 +7,10 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Meziantou.Framework.Win32.CredentialManager" Version="1.7.6" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.16" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="9.0.9" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="9.0.5" />
|
||||
<PackageReference Include="RestSharp" Version="112.1.0" />
|
||||
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.14.0" />
|
||||
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.10.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@ -13,15 +13,10 @@ namespace QtCNETAPI.Services.ApiService
|
||||
{
|
||||
private User? user;
|
||||
private RestClient _client;
|
||||
private LoggingService _loggingService;
|
||||
|
||||
private CredentialService _credService = new();
|
||||
|
||||
internal string? sessionToken;
|
||||
internal string apiUri;
|
||||
|
||||
public event EventHandler? OnCurrentUserUpdate;
|
||||
|
||||
public string? SessionToken
|
||||
{
|
||||
get { return sessionToken; }
|
||||
@ -33,10 +28,9 @@ namespace QtCNETAPI.Services.ApiService
|
||||
get { return user; }
|
||||
}
|
||||
|
||||
public ApiService(string apiUrl, LoggingService loggingService)
|
||||
public ApiService(string apiUrl)
|
||||
{
|
||||
apiUri = apiUrl;
|
||||
_loggingService = loggingService;
|
||||
_client = new RestClient(apiUri);
|
||||
}
|
||||
|
||||
@ -159,7 +153,6 @@ namespace QtCNETAPI.Services.ApiService
|
||||
|
||||
// anything that changes the user should tell the api service to set it again
|
||||
await SetCurrentUser();
|
||||
OnCurrentUserUpdate?.Invoke(this, EventArgs.Empty);
|
||||
} else
|
||||
{
|
||||
serviceResponse.Success = false;
|
||||
@ -188,7 +181,6 @@ namespace QtCNETAPI.Services.ApiService
|
||||
|
||||
// anything that changes the user should tell the api service to set it again
|
||||
await SetCurrentUser();
|
||||
OnCurrentUserUpdate?.Invoke(this, EventArgs.Empty);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -237,9 +229,9 @@ namespace QtCNETAPI.Services.ApiService
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<ServiceResponse<string>> LoginAsync(UserLoginDto userLoginDto)
|
||||
public async Task<ServiceResponse<User>> LoginAsync(UserLoginDto userLoginDto)
|
||||
{
|
||||
var serviceResponse = new ServiceResponse<string>();
|
||||
var serviceResponse = new ServiceResponse<User>();
|
||||
|
||||
try
|
||||
{
|
||||
@ -259,11 +251,13 @@ namespace QtCNETAPI.Services.ApiService
|
||||
{
|
||||
SessionToken = response.Data!;
|
||||
|
||||
await File.WriteAllTextAsync("./session.token", response.Message);
|
||||
|
||||
var user = await SetCurrentUser();
|
||||
|
||||
serviceResponse.Success = true;
|
||||
if (response.Message != null) serviceResponse.Message = response.Message;
|
||||
serviceResponse.Data = response.Message;
|
||||
serviceResponse.Data = user;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -280,72 +274,6 @@ namespace QtCNETAPI.Services.ApiService
|
||||
return serviceResponse;
|
||||
}
|
||||
|
||||
public async Task<ServiceResponse<bool>> ResendVerificationEmail(string email)
|
||||
{
|
||||
var serviceResponse = new ServiceResponse<bool>();
|
||||
|
||||
var restRequest = new RestRequest($"auth/resend-verification-email")
|
||||
.AddQueryParameter("email", email);
|
||||
var response = await _client.PostAsync<ServiceResponse<bool>>(restRequest);
|
||||
|
||||
if (response != null)
|
||||
{
|
||||
serviceResponse.Success = true;
|
||||
serviceResponse.Data = response.Data;
|
||||
}
|
||||
else
|
||||
{
|
||||
serviceResponse.Success = false;
|
||||
serviceResponse.Message = "API never responded.";
|
||||
}
|
||||
|
||||
return serviceResponse;
|
||||
}
|
||||
|
||||
public async Task<ServiceResponse<bool>> SendPasswordResetEmail(string email)
|
||||
{
|
||||
var serviceResponse = new ServiceResponse<bool>();
|
||||
|
||||
var restRequest = new RestRequest($"auth/request-password-reset")
|
||||
.AddQueryParameter("email", email);
|
||||
var response = await _client.PostAsync<ServiceResponse<bool>>(restRequest);
|
||||
|
||||
if (response != null)
|
||||
{
|
||||
serviceResponse.Success = true;
|
||||
serviceResponse.Data = response.Data;
|
||||
}
|
||||
else
|
||||
{
|
||||
serviceResponse.Success = false;
|
||||
serviceResponse.Message = "API never responded.";
|
||||
}
|
||||
|
||||
return serviceResponse;
|
||||
}
|
||||
|
||||
public async Task<ServiceResponse<bool>> ResetPassword(UserPasswordResetDto request)
|
||||
{
|
||||
var serviceResponse = new ServiceResponse<bool>();
|
||||
|
||||
var restRequest = new RestRequest($"auth/reset-password")
|
||||
.AddJsonBody(request);
|
||||
var response = await _client.PostAsync<ServiceResponse<bool>>(restRequest);
|
||||
|
||||
if (response != null)
|
||||
{
|
||||
serviceResponse.Success = true;
|
||||
serviceResponse.Data = response.Data;
|
||||
}
|
||||
else
|
||||
{
|
||||
serviceResponse.Success = false;
|
||||
serviceResponse.Message = "API never responded.";
|
||||
}
|
||||
|
||||
return serviceResponse;
|
||||
}
|
||||
|
||||
public async Task<User> SetCurrentUser()
|
||||
{
|
||||
var userRequest = new RestRequest("users/user-authorized")
|
||||
@ -355,9 +283,6 @@ namespace QtCNETAPI.Services.ApiService
|
||||
if (userResponse != null && userResponse.Success && userResponse.Data != null)
|
||||
{
|
||||
user = userResponse.Data;
|
||||
|
||||
_loggingService.LogString($"Current User's Status Is {userResponse.Data.Status}");
|
||||
|
||||
return userResponse.Data;
|
||||
} else
|
||||
{
|
||||
@ -413,23 +338,21 @@ namespace QtCNETAPI.Services.ApiService
|
||||
public async Task<ServiceResponse<string>> RefreshSessionIfInvalid()
|
||||
{
|
||||
var tokenHandler = new JwtSecurityTokenHandler();
|
||||
var refToken = _credService.GetAccessToken(); // fuck CA1416, if this is being ran on linux it should just crash (theoretically)
|
||||
|
||||
if (refToken == null)
|
||||
{
|
||||
// treat as session expired
|
||||
return new ServiceResponse<string> { Success = false, Message = "Refresh Token Not Found. Session Expired." };
|
||||
}
|
||||
var refToken = await File.ReadAllTextAsync("./session.token");
|
||||
|
||||
JwtSecurityToken token = tokenHandler.ReadJwtToken(SessionToken);
|
||||
|
||||
if(DateTime.Compare(DateTime.UtcNow, token.ValidTo) > 0)
|
||||
{
|
||||
if (!File.Exists("./session.token")) { return new ServiceResponse<string> { Success = false, Message = "Session File Not Found. Session Expired." }; }
|
||||
|
||||
var result = await RefreshLogin(refToken);
|
||||
|
||||
if (result == null || result.Success == false)
|
||||
{
|
||||
return new ServiceResponse<string> { Success = false, Message = "Session Expired." }; // logging in again should overwrite old token
|
||||
File.Delete("./session.token");
|
||||
|
||||
return new ServiceResponse<string> { Success = false, Message = "Session Expired." };
|
||||
} else return new ServiceResponse<string> { Success = true, Data = refToken };
|
||||
} else return new ServiceResponse<string> { Success = true, Data = refToken };
|
||||
}
|
||||
@ -643,6 +566,9 @@ namespace QtCNETAPI.Services.ApiService
|
||||
{
|
||||
serviceResponse.Success = true;
|
||||
serviceResponse.Data = response.Data;
|
||||
|
||||
// anything that changes the user should tell the api service to set it again
|
||||
await SetCurrentUser();
|
||||
}
|
||||
|
||||
return serviceResponse;
|
||||
@ -671,7 +597,6 @@ namespace QtCNETAPI.Services.ApiService
|
||||
|
||||
// anything that changes the user should tell the api service to set it again
|
||||
await SetCurrentUser();
|
||||
OnCurrentUserUpdate?.Invoke(this, EventArgs.Empty);
|
||||
}
|
||||
|
||||
return serviceResponse;
|
||||
@ -719,10 +644,6 @@ namespace QtCNETAPI.Services.ApiService
|
||||
{
|
||||
serviceResponse.Success = true;
|
||||
serviceResponse.Data = response.Data;
|
||||
|
||||
// anything that changes the user should tell the api service to set it again
|
||||
await SetCurrentUser();
|
||||
OnCurrentUserUpdate?.Invoke(this, EventArgs.Empty);
|
||||
}
|
||||
|
||||
return serviceResponse;
|
||||
@ -747,10 +668,6 @@ namespace QtCNETAPI.Services.ApiService
|
||||
{
|
||||
serviceResponse.Success = true;
|
||||
serviceResponse.Data = response.Data;
|
||||
|
||||
// anything that changes the user should tell the api service to set it again
|
||||
await SetCurrentUser();
|
||||
OnCurrentUserUpdate?.Invoke(this, EventArgs.Empty);
|
||||
}
|
||||
|
||||
return serviceResponse;
|
||||
@ -870,10 +787,6 @@ namespace QtCNETAPI.Services.ApiService
|
||||
{
|
||||
serviceResponse.Success = true;
|
||||
serviceResponse.Data = response.Data;
|
||||
|
||||
// anything that changes the user should tell the api service to set it again
|
||||
await SetCurrentUser();
|
||||
OnCurrentUserUpdate?.Invoke(this, EventArgs.Empty);
|
||||
}
|
||||
|
||||
return serviceResponse;
|
||||
@ -925,29 +838,5 @@ namespace QtCNETAPI.Services.ApiService
|
||||
|
||||
return serviceResponse;
|
||||
}
|
||||
|
||||
public async Task<ServiceResponse<User>> DeleteUserById(string id)
|
||||
{
|
||||
await RefreshSessionIfInvalid();
|
||||
|
||||
var serviceResponse = new ServiceResponse<User>();
|
||||
|
||||
if (SessionToken == null) throw new NullReferenceException("Function Was Called Before A Session Was Made.");
|
||||
|
||||
var restRequest = new RestRequest("users/delete-user")
|
||||
.AddHeader("Authorization", $"Bearer {SessionToken}")
|
||||
.AddQueryParameter("id", id);
|
||||
var response = await _client.DeleteAsync<ServiceResponse<User>>(restRequest);
|
||||
|
||||
if (response == null) { serviceResponse.Success = false; serviceResponse.Message = "API did not respond."; return serviceResponse; }
|
||||
|
||||
if (response.Success)
|
||||
{
|
||||
serviceResponse.Success = true;
|
||||
serviceResponse.Data = response.Data;
|
||||
}
|
||||
|
||||
return serviceResponse;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -17,16 +17,10 @@ namespace QtCNETAPI.Services.ApiService
|
||||
public string? SessionToken { get; set; }
|
||||
public User CurrentUser { get; }
|
||||
|
||||
public event EventHandler? OnCurrentUserUpdate;
|
||||
|
||||
public Task<ServiceResponse<string>> PingServerAsync();
|
||||
public Task<ServiceResponse<List<UserInformationDto>>> GetOnlineUsersAsync();
|
||||
public Task<ServiceResponse<List<UserInformationDto>>> GetAllUsersAsync();
|
||||
public Task<ServiceResponse<User>> DeleteUserById(string id);
|
||||
public Task<ServiceResponse<string>> LoginAsync(UserLoginDto userLoginDto);
|
||||
public Task<ServiceResponse<bool>> ResendVerificationEmail(string email);
|
||||
public Task<ServiceResponse<bool>> SendPasswordResetEmail(string email);
|
||||
public Task<ServiceResponse<bool>> ResetPassword(UserPasswordResetDto request);
|
||||
public Task<ServiceResponse<User>> LoginAsync(UserLoginDto userLoginDto);
|
||||
public Task<ServiceResponse<User>> RefreshLogin(string refreshToken);
|
||||
public Task<ServiceResponse<string>> RefreshSessionIfInvalid();
|
||||
public Task<User> SetCurrentUser();
|
||||
|
||||
@ -1,42 +0,0 @@
|
||||
using Meziantou.Framework.Win32;
|
||||
|
||||
namespace QtCNETAPI.Services
|
||||
{
|
||||
public class CredentialService()
|
||||
{
|
||||
/*
|
||||
|
||||
* NOTE *
|
||||
This does not work on other platforms such as Linux or macOS.
|
||||
I will probably recode the legacy way of doing this for those other platforms.
|
||||
|
||||
*/
|
||||
|
||||
public void SaveAccessToken(string username, string accessToken)
|
||||
{
|
||||
string applicationName = "QtC.NET";
|
||||
if (System.Diagnostics.Debugger.IsAttached) applicationName = "QtC.NET.Development";
|
||||
|
||||
CredentialManager.WriteCredential(applicationName, username, accessToken, $"Access Token For User {username} On QtC.NET", CredentialPersistence.LocalMachine);
|
||||
}
|
||||
|
||||
public void DeleteAccessToken()
|
||||
{
|
||||
string applicationName = "QtC.NET";
|
||||
if (System.Diagnostics.Debugger.IsAttached) applicationName = "QtC.NET.Development";
|
||||
|
||||
CredentialManager.DeleteCredential(applicationName);
|
||||
}
|
||||
|
||||
public string? GetAccessToken()
|
||||
{
|
||||
string applicationName = "QtC.NET";
|
||||
if (System.Diagnostics.Debugger.IsAttached) applicationName = "QtC.NET.Development";
|
||||
|
||||
var credential = CredentialManager.ReadCredential(applicationName);
|
||||
if (credential == null) return null;
|
||||
|
||||
return credential.Password;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,5 +1,4 @@
|
||||
using Microsoft.AspNetCore.SignalR.Client;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using QtCNETAPI.Dtos.User;
|
||||
using QtCNETAPI.Events;
|
||||
using QtCNETAPI.Models;
|
||||
@ -7,54 +6,48 @@ using QtCNETAPI.Services.ApiService;
|
||||
|
||||
namespace QtCNETAPI.Services.GatewayService
|
||||
{
|
||||
public class GatewayService(string GWUrl, IApiService apiService, LoggingService loggingService) : IGatewayService, IAsyncDisposable
|
||||
public class GatewayService : IGatewayService, IAsyncDisposable
|
||||
{
|
||||
internal string gwBaseUri = GWUrl;
|
||||
internal string gwBaseUri = "127.0.0.1";
|
||||
|
||||
public Room? CurrentRoom { get; private set; }
|
||||
public bool InLobby { get; private set; }
|
||||
public HubConnection? HubConnection { get; private set; }
|
||||
|
||||
|
||||
public event EventHandler? OnRoomMessageReceived;
|
||||
public event EventHandler? OnRoomUserListReceived;
|
||||
public event EventHandler? OnGuestUserJoin;
|
||||
public event EventHandler? OnRefreshUserListsReceived;
|
||||
public event EventHandler? OnRefreshRoomListReceived;
|
||||
public event EventHandler? OnRoomDeleted;
|
||||
public event EventHandler? OnRefreshContactsListReceived;
|
||||
public event EventHandler? OnClientFunctionReceived;
|
||||
public event EventHandler? OnDirectMessageReceived;
|
||||
public event EventHandler? OnServerConfigReceived;
|
||||
public event EventHandler? OnServerDisconnect;
|
||||
public event EventHandler? OnServerReconnecting;
|
||||
public event EventHandler? OnServerReconnected;
|
||||
public event EventHandler? OnUserForceLogout;
|
||||
public event EventHandler OnRoomMessageReceived;
|
||||
public event EventHandler OnRoomUserListReceived;
|
||||
public event EventHandler OnGuestUserJoin;
|
||||
public event EventHandler OnRefreshUserListsReceived;
|
||||
public event EventHandler OnRefreshRoomListReceived;
|
||||
public event EventHandler OnRefreshContactsListReceived;
|
||||
public event EventHandler OnClientFunctionReceived;
|
||||
public event EventHandler OnDirectMessageReceived;
|
||||
public event EventHandler OnServerConfigReceived;
|
||||
public event EventHandler OnServerDisconnect;
|
||||
public event EventHandler OnServerReconnecting;
|
||||
public event EventHandler OnServerReconnected;
|
||||
|
||||
private IApiService _apiService = apiService;
|
||||
private LoggingService _loggingService = loggingService;
|
||||
private IApiService _apiService;
|
||||
|
||||
public GatewayService(string GWUrl, IApiService apiService)
|
||||
{
|
||||
gwBaseUri = GWUrl;
|
||||
_apiService = apiService;
|
||||
}
|
||||
|
||||
public async Task StartAsync()
|
||||
{
|
||||
// just to be safe (it doesn't load the server since it shouldn't request a new one unless its actually expired)
|
||||
await _apiService.RefreshSessionIfInvalid();
|
||||
|
||||
// build connection
|
||||
var gwConBuilder = new HubConnectionBuilder()
|
||||
.WithAutomaticReconnect()
|
||||
.ConfigureLogging((builder) =>
|
||||
{
|
||||
builder.AddProvider(new LoggingServiceProvider(_loggingService));
|
||||
|
||||
if (System.Diagnostics.Debugger.IsAttached) builder.SetMinimumLevel(LogLevel.Debug);
|
||||
else builder.SetMinimumLevel(LogLevel.Error);
|
||||
})
|
||||
.WithUrl(gwBaseUri, options =>
|
||||
{
|
||||
options.AccessTokenProvider = async () =>
|
||||
{
|
||||
// this should hopefully refresh the session every time the gateway connection is used to prevent connection aborts
|
||||
await _apiService.RefreshSessionIfInvalid();
|
||||
return _apiService.SessionToken;
|
||||
};
|
||||
})
|
||||
.WithStatefulReconnect();
|
||||
options.AccessTokenProvider = () => Task.FromResult(_apiService.SessionToken);
|
||||
});
|
||||
HubConnection = gwConBuilder.Build();
|
||||
|
||||
// register events
|
||||
@ -67,26 +60,13 @@ namespace QtCNETAPI.Services.GatewayService
|
||||
HubConnection.On<ServerConfig>("ReceiveServerConfig", (serverConfig) => OnServerConfigReceived?.Invoke(this, new ServerConfigEventArgs { ServerConfig = serverConfig }));
|
||||
HubConnection.On<List<User>>("RoomUserList", (userList) => OnRoomUserListReceived?.Invoke(this, new RoomListEventArgs { UserList = userList }));
|
||||
HubConnection.On<string>("GuestJoin", (username) => OnGuestUserJoin?.Invoke(this, new GuestUserJoinEventArgs { Username = username }));
|
||||
HubConnection.On("RoomDeleted", () => OnRoomDeleted?.Invoke(this, EventArgs.Empty));
|
||||
HubConnection.On("ForceSignOut", () => OnUserForceLogout?.Invoke(this, EventArgs.Empty));
|
||||
|
||||
HubConnection.Closed += HubConnection_Closed;
|
||||
HubConnection.Reconnecting += HubConnection_Reconnecting;
|
||||
HubConnection.Reconnected += HubConnection_Reconnected;
|
||||
|
||||
// start connection
|
||||
try
|
||||
{
|
||||
await HubConnection.StartAsync();
|
||||
}
|
||||
catch (HttpRequestException ex)
|
||||
{
|
||||
_loggingService.LogString($"Unable To Connect To SignalR.\n{ex.Message}\n{ex.StackTrace}");
|
||||
return;
|
||||
}
|
||||
|
||||
// ensure current user is up to date (particularly status)
|
||||
await _apiService.SetCurrentUser();
|
||||
await HubConnection.StartAsync();
|
||||
}
|
||||
|
||||
public async Task StopAsync()
|
||||
@ -119,35 +99,62 @@ namespace QtCNETAPI.Services.GatewayService
|
||||
}
|
||||
}
|
||||
|
||||
public async Task JoinRoomAsync(Room? room = null)
|
||||
public async Task JoinLobbyAsync()
|
||||
{
|
||||
await _apiService.RefreshSessionIfInvalid();
|
||||
|
||||
if (HubConnection == null || HubConnection.State != HubConnectionState.Connected) throw new InvalidOperationException("Function was called before connection was made.");
|
||||
|
||||
// assume user is trying to join lobby if room is null (does not have db entry)
|
||||
room ??= new Room
|
||||
{
|
||||
Id = "LOBBY",
|
||||
Name = "Lobby"
|
||||
};
|
||||
await HubConnection.SendAsync("JoinLobby", _apiService.CurrentUser);
|
||||
InLobby = true;
|
||||
CurrentRoom = null;
|
||||
}
|
||||
|
||||
public async Task JoinRoomAsync(Room room)
|
||||
{
|
||||
await _apiService.RefreshSessionIfInvalid();
|
||||
|
||||
if (HubConnection == null || HubConnection.State != HubConnectionState.Connected) throw new InvalidOperationException("Function was called before connection was made.");
|
||||
|
||||
if (InLobby == true)
|
||||
{
|
||||
await HubConnection.SendAsync("LeaveLobby", _apiService.CurrentUser);
|
||||
InLobby = false;
|
||||
}
|
||||
else if (CurrentRoom != null)
|
||||
{
|
||||
await HubConnection.SendAsync("LeaveRoom", _apiService.CurrentUser, CurrentRoom);
|
||||
}
|
||||
|
||||
if (CurrentRoom != null) await HubConnection.SendAsync("LeaveRoom", _apiService.CurrentUser, CurrentRoom);
|
||||
await HubConnection.SendAsync("JoinRoom", _apiService.CurrentUser, room);
|
||||
CurrentRoom = room;
|
||||
}
|
||||
|
||||
public async Task LeaveRoomAsync()
|
||||
{
|
||||
await _apiService.RefreshSessionIfInvalid();
|
||||
|
||||
if (HubConnection == null || HubConnection.State != HubConnectionState.Connected) throw new InvalidOperationException("Function was called before connection was made.");
|
||||
|
||||
if (CurrentRoom != null) await HubConnection.SendAsync("LeaveRoom", _apiService.CurrentUser, CurrentRoom);
|
||||
CurrentRoom = null;
|
||||
if (InLobby)
|
||||
{
|
||||
await HubConnection.SendAsync("LeaveLobby", _apiService.CurrentUser);
|
||||
InLobby = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
await HubConnection.SendAsync("LeaveRoom", _apiService.CurrentUser, CurrentRoom);
|
||||
CurrentRoom = null;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task PostMessageAsync(Message message)
|
||||
{
|
||||
await _apiService.RefreshSessionIfInvalid();
|
||||
|
||||
if (HubConnection == null || HubConnection.State != HubConnectionState.Connected) throw new InvalidOperationException("Function was called before connection was made.");
|
||||
|
||||
await HubConnection.SendAsync("SendMessage", _apiService.CurrentUser, message, CurrentRoom);
|
||||
await HubConnection.SendAsync("SendMessage", _apiService.CurrentUser, message, InLobby, CurrentRoom);
|
||||
}
|
||||
|
||||
public async Task SendDirectMessageAsync(UserInformationDto user, Message message)
|
||||
@ -161,6 +168,8 @@ namespace QtCNETAPI.Services.GatewayService
|
||||
|
||||
public async Task UpdateStatus(int status)
|
||||
{
|
||||
await _apiService.RefreshSessionIfInvalid();
|
||||
|
||||
if (HubConnection == null || HubConnection.State != HubConnectionState.Connected) throw new InvalidOperationException("Function was called before connection was made.");
|
||||
|
||||
await HubConnection.SendAsync("UpdateStatus", _apiService.CurrentUser, status);
|
||||
|
||||
@ -18,7 +18,10 @@ namespace QtCNETAPI.Services.GatewayService
|
||||
/// The Current Room The Current User Is In
|
||||
/// </summary>
|
||||
public Room? CurrentRoom { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Is The User Currently In The Lobby?
|
||||
/// </summary>
|
||||
public bool InLobby { get; }
|
||||
/// <summary>
|
||||
/// The Current Connection To The Gateway
|
||||
/// </summary>
|
||||
@ -44,13 +47,20 @@ namespace QtCNETAPI.Services.GatewayService
|
||||
/// <returns></returns>
|
||||
public Task DisposeAsync();
|
||||
|
||||
/// <summary>
|
||||
/// Joins The Lobby Of The Server
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="InvalidOperationException">Thrown if the function is called before the connection is established.</exception>
|
||||
public Task JoinLobbyAsync();
|
||||
|
||||
/// <summary>
|
||||
/// Joins The Current User To A Room On The Server
|
||||
/// </summary>
|
||||
/// <param name="room">Room To Join</param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="InvalidOperationException">Thrown if the function is called before the connection is established.</exception>
|
||||
public Task JoinRoomAsync(Room? room = null);
|
||||
public Task JoinRoomAsync(Room room);
|
||||
|
||||
/// <summary>
|
||||
/// Leaves The Current Room The Current User Is In
|
||||
@ -94,11 +104,6 @@ namespace QtCNETAPI.Services.GatewayService
|
||||
/// </summary>
|
||||
public event EventHandler OnRoomUserListReceived;
|
||||
|
||||
/// <summary>
|
||||
/// Fires When The Room The User Is In Gets Deleted By An Admin
|
||||
/// </summary>
|
||||
public event EventHandler OnRoomDeleted;
|
||||
|
||||
/// <summary>
|
||||
/// Fires When A Guest User Joins Your Room
|
||||
/// </summary>
|
||||
@ -148,10 +153,5 @@ namespace QtCNETAPI.Services.GatewayService
|
||||
/// When the Connection Reconnects, This Event Fires
|
||||
/// </summary>
|
||||
public event EventHandler OnServerReconnected;
|
||||
|
||||
/// <summary>
|
||||
/// Fires When The Current User Is Signed Out By The Server
|
||||
/// </summary>
|
||||
public event EventHandler OnUserForceLogout;
|
||||
}
|
||||
}
|
||||
|
||||
@ -15,9 +15,6 @@ namespace qtc_net_client_2.ClientModel
|
||||
[JsonPropertyName("minimizeToTray")]
|
||||
[JsonRequired]
|
||||
public bool MinimizeToTray { get; set; } = true;
|
||||
[JsonPropertyName("enableDebugLogs")]
|
||||
[JsonRequired]
|
||||
public bool EnableDebugLogs { get; set; } = false;
|
||||
|
||||
[JsonPropertyName("serverUrl")]
|
||||
[JsonRequired]
|
||||
|
||||
@ -1,148 +0,0 @@
|
||||
using qtc_net_client_2.Properties;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace qtc_net_client_2.Controls
|
||||
{
|
||||
public class ChatMessageControl : Control
|
||||
{
|
||||
public Image? Avatar { get; set; }
|
||||
public string Username = "Username";
|
||||
public string Message = "Message";
|
||||
|
||||
private Font usernameFont = new("Segoe UI", 9, FontStyle.Bold);
|
||||
private Font messageFont = new("Segoe UI", 9, FontStyle.Regular);
|
||||
private Font messageFontBold = new("Segoe UI", 10, FontStyle.Bold);
|
||||
|
||||
public ChatMessageControl()
|
||||
{
|
||||
DoubleBuffered = true;
|
||||
}
|
||||
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
base.OnPaint(e);
|
||||
|
||||
int avatarSize = 32;
|
||||
int padding = 6;
|
||||
|
||||
// first, draw the avatar
|
||||
Rectangle pfpRect = new(padding, padding, avatarSize, avatarSize);
|
||||
e.Graphics.DrawImage(Avatar ?? Resources.DefaultPfp, pfpRect);
|
||||
|
||||
// then draw the username
|
||||
int textLeft = padding * 2 + avatarSize;
|
||||
int textWidth = Width - textLeft - padding;
|
||||
|
||||
Rectangle usernameRect = new(textLeft, padding, textWidth, 20);
|
||||
e.Graphics.DrawString(Username, usernameFont, Brushes.Black, usernameRect);
|
||||
|
||||
// finally draw the message
|
||||
int messageTop = usernameRect.Bottom + 2;
|
||||
|
||||
Rectangle messageRect = new(textLeft, messageTop, textWidth, Height - messageTop - padding);
|
||||
StringFormat fmt = new()
|
||||
{
|
||||
Trimming = StringTrimming.Word,
|
||||
FormatFlags = 0,
|
||||
Alignment = StringAlignment.Near
|
||||
};
|
||||
|
||||
if (Username.Contains("Server"))
|
||||
{
|
||||
e.Graphics.DrawString(Message, messageFontBold, Brushes.Black, messageRect, fmt);
|
||||
return;
|
||||
}
|
||||
|
||||
e.Graphics.DrawString(Message, messageFont, Brushes.Black, messageRect, fmt);
|
||||
}
|
||||
|
||||
protected override void OnResize(EventArgs e)
|
||||
{
|
||||
base.OnResize(e);
|
||||
Height = CalculateHeight(Width);
|
||||
}
|
||||
|
||||
public int CalculateHeight(int width)
|
||||
{
|
||||
int padding = 6;
|
||||
int avatarSize = 32;
|
||||
int textLeft = padding * 2 + avatarSize;
|
||||
int textWidth = width - textLeft - padding;
|
||||
|
||||
using (Graphics g = CreateGraphics())
|
||||
{
|
||||
SizeF usernameSize = g.MeasureString(Username, usernameFont, textWidth);
|
||||
SizeF messageSize = g.MeasureString(Message, messageFont, textWidth);
|
||||
|
||||
int totalHeight = padding + (int)usernameSize.Height + 2 + (int)messageSize.Height + padding + 5;
|
||||
return Math.Max(totalHeight, avatarSize + 2 * padding);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class ChatMessageControlMinimal : Control
|
||||
{
|
||||
public string Username = "Username";
|
||||
public string Message = "Message";
|
||||
|
||||
private Font usernameFont = new("Segoe UI", 9, FontStyle.Bold);
|
||||
private Font messageFont = new("Segoe UI", 9, FontStyle.Regular);
|
||||
|
||||
public ChatMessageControlMinimal()
|
||||
{
|
||||
DoubleBuffered = true;
|
||||
MinimumSize = new Size(150, 20);
|
||||
}
|
||||
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
base.OnPaint(e);
|
||||
|
||||
int padding = 6;
|
||||
|
||||
// first draw the username
|
||||
int textWidth = Width - padding * 2;
|
||||
|
||||
Rectangle usernameRect = new(padding, padding, textWidth, 20);
|
||||
e.Graphics.DrawString(Username, usernameFont, Brushes.Black, usernameRect);
|
||||
|
||||
// finally draw the message
|
||||
int messageTop = usernameRect.Bottom + 2;
|
||||
|
||||
Rectangle messageRect = new(padding, messageTop, textWidth, Height - messageTop - padding);
|
||||
StringFormat fmt = new()
|
||||
{
|
||||
Trimming = StringTrimming.Word,
|
||||
FormatFlags = 0,
|
||||
Alignment = StringAlignment.Near
|
||||
};
|
||||
|
||||
e.Graphics.DrawString(Message, messageFont, Brushes.Black, messageRect, fmt);
|
||||
}
|
||||
|
||||
protected override void OnResize(EventArgs e)
|
||||
{
|
||||
base.OnResize(e);
|
||||
Height = CalculateHeight(Width);
|
||||
}
|
||||
|
||||
public int CalculateHeight(int width)
|
||||
{
|
||||
int padding = 6;
|
||||
int textWidth = width - padding * 2;
|
||||
|
||||
using (Graphics g = CreateGraphics())
|
||||
{
|
||||
SizeF usernameSize = g.MeasureString(Username, usernameFont, textWidth);
|
||||
SizeF messageSize = g.MeasureString(Message, messageFont, textWidth);
|
||||
|
||||
int totalHeight = padding + (int)usernameSize.Height + 2 + (int)messageSize.Height + padding + 5;
|
||||
return totalHeight;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,92 +0,0 @@
|
||||
using Accessibility;
|
||||
using Microsoft.AspNetCore.Mvc.TagHelpers;
|
||||
using qtc_net_client_2.Properties;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace qtc_net_client_2.Controls
|
||||
{
|
||||
public class ContactEntryControl : Control
|
||||
{
|
||||
public Image? Avatar { get; set; }
|
||||
public string Username = "Username";
|
||||
public Color StatusColor = Color.Gray;
|
||||
|
||||
private Font? usernameFont;
|
||||
|
||||
public event EventHandler? ContactDoubleClicked;
|
||||
|
||||
private bool IsHoveredOn;
|
||||
public ContactEntryControl()
|
||||
{
|
||||
// reduce flicker
|
||||
SetStyle(ControlStyles.AllPaintingInWmPaint |
|
||||
ControlStyles.ResizeRedraw |
|
||||
ControlStyles.UserPaint |
|
||||
ControlStyles.OptimizedDoubleBuffer, true);
|
||||
|
||||
Height = 36;
|
||||
}
|
||||
|
||||
protected override void OnPaintBackground(PaintEventArgs pevent) { } // prevent this
|
||||
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
|
||||
|
||||
Rectangle rect = ClientRectangle;
|
||||
|
||||
using var brush = new LinearGradientBrush(rect, StatusColor, BackColor, LinearGradientMode.Horizontal);
|
||||
|
||||
Color usernameForeColor = Color.Black;
|
||||
if(IsHoveredOn)
|
||||
{
|
||||
usernameForeColor = Color.White;
|
||||
usernameFont = new Font("Segoe UI", 9, FontStyle.Bold | FontStyle.Underline);
|
||||
}
|
||||
else
|
||||
{
|
||||
usernameFont = new Font("Segoe UI", 9, FontStyle.Bold);
|
||||
}
|
||||
|
||||
e.Graphics.FillRectangle(brush, rect);
|
||||
|
||||
int margin = 6;
|
||||
int imgSize = 32;
|
||||
|
||||
Rectangle avatarRect = new(margin, (Height - imgSize) / 2, imgSize, imgSize);
|
||||
e.Graphics.DrawImage(Avatar ?? Resources.DefaultPfp, avatarRect);
|
||||
|
||||
int textLeft = avatarRect.Right + margin;
|
||||
|
||||
Rectangle rectText = new(textLeft, 0, Width - textLeft - 8, Height - 16);
|
||||
TextRenderer.DrawText(e.Graphics, Username, usernameFont, rectText, usernameForeColor, TextFormatFlags.Left | TextFormatFlags.VerticalCenter);
|
||||
}
|
||||
|
||||
protected override void OnMouseDoubleClick(MouseEventArgs e)
|
||||
{
|
||||
base.OnMouseDoubleClick(e);
|
||||
ContactDoubleClicked?.Invoke(this, EventArgs.Empty);
|
||||
}
|
||||
|
||||
protected override void OnMouseHover(EventArgs e)
|
||||
{
|
||||
base.OnMouseHover(e);
|
||||
IsHoveredOn = true;
|
||||
Invalidate();
|
||||
}
|
||||
|
||||
protected override void OnMouseLeave(EventArgs e)
|
||||
{
|
||||
base.OnMouseLeave(e);
|
||||
IsHoveredOn = false;
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,95 +0,0 @@
|
||||
using qtc_net_client_2.Properties;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel;
|
||||
|
||||
namespace qtc_net_client_2.Controls
|
||||
{
|
||||
public class RoomEntryControl : Control
|
||||
{
|
||||
public Image Image = Resources.RoomsChatIcon;
|
||||
public string RoomName = "Room";
|
||||
public bool HideUserCount = false;
|
||||
public int RoomUserCount = 0;
|
||||
|
||||
private Font? nameFont;
|
||||
private Color nameColor;
|
||||
|
||||
private Font userCountFont = new("Segoe UI", 9, FontStyle.Bold);
|
||||
private Color userCountColor = Color.Gray;
|
||||
|
||||
private bool IsHoveredOn = false;
|
||||
|
||||
public event EventHandler? OnRoomDoubleClicked;
|
||||
public RoomEntryControl()
|
||||
{
|
||||
// reduce flicker
|
||||
SetStyle(ControlStyles.AllPaintingInWmPaint |
|
||||
ControlStyles.ResizeRedraw |
|
||||
ControlStyles.UserPaint |
|
||||
ControlStyles.OptimizedDoubleBuffer, true);
|
||||
|
||||
Height = 36;
|
||||
}
|
||||
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
if(IsHoveredOn)
|
||||
{
|
||||
nameFont = new("Segoe UI", 9, FontStyle.Bold | FontStyle.Underline);
|
||||
nameColor = Color.LightGray;
|
||||
} else
|
||||
{
|
||||
nameFont = new("Segoe UI", 9, FontStyle.Bold);
|
||||
nameColor = Color.Black;
|
||||
}
|
||||
|
||||
int margin = 6;
|
||||
int imageSize = 32;
|
||||
|
||||
Rectangle imageRect = new(margin, (Height - imageSize) / 2, imageSize, imageSize);
|
||||
e.Graphics.DrawImage(Image, imageRect);
|
||||
|
||||
int nameLeft = imageRect.Right + margin;
|
||||
|
||||
Rectangle nameRect = new(nameLeft, 6, Width - nameLeft - 8, Height - 16);
|
||||
TextRenderer.DrawText(e.Graphics, RoomName, nameFont, nameRect, nameColor, TextFormatFlags.Left | TextFormatFlags.VerticalCenter);
|
||||
|
||||
string userCountText = RoomUserCount.ToString();
|
||||
Size countSize = TextRenderer.MeasureText(e.Graphics, userCountText, userCountFont);
|
||||
|
||||
if(!HideUserCount)
|
||||
{
|
||||
int rightPad = 8;
|
||||
int countX = Width - countSize.Width - rightPad;
|
||||
int countY = (Height - countSize.Height) / 2;
|
||||
Point userCountPoint = new(countX, countY);
|
||||
|
||||
TextRenderer.DrawText(e.Graphics, userCountText, userCountFont, userCountPoint, userCountColor, TextFormatFlags.Left);
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnMouseDoubleClick(MouseEventArgs e)
|
||||
{
|
||||
base.OnMouseDoubleClick(e);
|
||||
OnRoomDoubleClicked?.Invoke(this, EventArgs.Empty);
|
||||
}
|
||||
|
||||
protected override void OnMouseHover(EventArgs e)
|
||||
{
|
||||
base.OnMouseHover(e);
|
||||
IsHoveredOn = true;
|
||||
Invalidate();
|
||||
}
|
||||
|
||||
protected override void OnMouseLeave(EventArgs e)
|
||||
{
|
||||
base.OnMouseLeave(e);
|
||||
IsHoveredOn = false;
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
}
|
||||
77
qtc-net-client-2/Forms/ChatRoom.Designer.cs
generated
77
qtc-net-client-2/Forms/ChatRoom.Designer.cs
generated
@ -32,18 +32,17 @@
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ChatRoom));
|
||||
rtxtChatbox = new RichTextBox();
|
||||
btnSend = new Button();
|
||||
rtxtChat = new RichTextBox();
|
||||
lblRoomName = new Label();
|
||||
ilStatusIcons = new ImageList(components);
|
||||
ilProfileImages = new ImageList(components);
|
||||
lvUserList = new ListView();
|
||||
fpnlMessages = new FlowLayoutPanel();
|
||||
ilStatusIcons = new ImageList(components);
|
||||
SuspendLayout();
|
||||
//
|
||||
// rtxtChatbox
|
||||
//
|
||||
rtxtChatbox.Location = new Point(12, 322);
|
||||
rtxtChatbox.Location = new Point(12, 268);
|
||||
rtxtChatbox.Name = "rtxtChatbox";
|
||||
rtxtChatbox.Size = new Size(589, 54);
|
||||
rtxtChatbox.Size = new Size(512, 54);
|
||||
rtxtChatbox.TabIndex = 1;
|
||||
rtxtChatbox.Text = "";
|
||||
rtxtChatbox.KeyDown += rtxtChatbox_KeyDown;
|
||||
@ -53,13 +52,24 @@
|
||||
btnSend.FlatAppearance.BorderSize = 0;
|
||||
btnSend.FlatStyle = FlatStyle.Flat;
|
||||
btnSend.Image = Properties.Resources.SendIcon;
|
||||
btnSend.Location = new Point(607, 322);
|
||||
btnSend.Location = new Point(530, 268);
|
||||
btnSend.Name = "btnSend";
|
||||
btnSend.Size = new Size(75, 54);
|
||||
btnSend.TabIndex = 2;
|
||||
btnSend.UseVisualStyleBackColor = true;
|
||||
btnSend.Click += btnSend_Click;
|
||||
//
|
||||
// rtxtChat
|
||||
//
|
||||
rtxtChat.Font = new Font("Segoe UI", 10F);
|
||||
rtxtChat.HideSelection = false;
|
||||
rtxtChat.Location = new Point(142, 43);
|
||||
rtxtChat.Name = "rtxtChat";
|
||||
rtxtChat.ReadOnly = true;
|
||||
rtxtChat.Size = new Size(463, 219);
|
||||
rtxtChat.TabIndex = 3;
|
||||
rtxtChat.Text = "";
|
||||
//
|
||||
// lblRoomName
|
||||
//
|
||||
lblRoomName.AutoSize = true;
|
||||
@ -72,6 +82,19 @@
|
||||
lblRoomName.TabIndex = 8;
|
||||
lblRoomName.Text = "Room";
|
||||
//
|
||||
// lvUserList
|
||||
//
|
||||
lvUserList.Alignment = ListViewAlignment.Left;
|
||||
lvUserList.Location = new Point(12, 43);
|
||||
lvUserList.MultiSelect = false;
|
||||
lvUserList.Name = "lvUserList";
|
||||
lvUserList.Size = new Size(124, 219);
|
||||
lvUserList.SmallImageList = ilStatusIcons;
|
||||
lvUserList.TabIndex = 9;
|
||||
lvUserList.UseCompatibleStateImageBehavior = false;
|
||||
lvUserList.View = View.SmallIcon;
|
||||
lvUserList.DoubleClick += lvUserList_DoubleClick;
|
||||
//
|
||||
// ilStatusIcons
|
||||
//
|
||||
ilStatusIcons.ColorDepth = ColorDepth.Depth32Bit;
|
||||
@ -82,50 +105,17 @@
|
||||
ilStatusIcons.Images.SetKeyName(2, "Away");
|
||||
ilStatusIcons.Images.SetKeyName(3, "DND");
|
||||
//
|
||||
// ilProfileImages
|
||||
//
|
||||
ilProfileImages.ColorDepth = ColorDepth.Depth32Bit;
|
||||
ilProfileImages.ImageStream = (ImageListStreamer)resources.GetObject("ilProfileImages.ImageStream");
|
||||
ilProfileImages.TransparentColor = Color.Transparent;
|
||||
ilProfileImages.Images.SetKeyName(0, "DefaultPFP");
|
||||
//
|
||||
// lvUserList
|
||||
//
|
||||
lvUserList.Alignment = ListViewAlignment.Left;
|
||||
lvUserList.Location = new Point(12, 43);
|
||||
lvUserList.MultiSelect = false;
|
||||
lvUserList.Name = "lvUserList";
|
||||
lvUserList.Size = new Size(124, 273);
|
||||
lvUserList.SmallImageList = ilStatusIcons;
|
||||
lvUserList.TabIndex = 9;
|
||||
lvUserList.UseCompatibleStateImageBehavior = false;
|
||||
lvUserList.View = View.SmallIcon;
|
||||
lvUserList.DoubleClick += lvUserList_DoubleClick;
|
||||
//
|
||||
// fpnlMessages
|
||||
//
|
||||
fpnlMessages.AutoScroll = true;
|
||||
fpnlMessages.BackColor = Color.White;
|
||||
fpnlMessages.BorderStyle = BorderStyle.Fixed3D;
|
||||
fpnlMessages.FlowDirection = FlowDirection.TopDown;
|
||||
fpnlMessages.Location = new Point(142, 43);
|
||||
fpnlMessages.Name = "fpnlMessages";
|
||||
fpnlMessages.Size = new Size(540, 273);
|
||||
fpnlMessages.TabIndex = 10;
|
||||
fpnlMessages.WrapContents = false;
|
||||
//
|
||||
// ChatRoom
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||
AutoScaleMode = AutoScaleMode.Font;
|
||||
BackColor = Color.DodgerBlue;
|
||||
ClientSize = new Size(694, 388);
|
||||
Controls.Add(fpnlMessages);
|
||||
ClientSize = new Size(617, 334);
|
||||
Controls.Add(lvUserList);
|
||||
Controls.Add(lblRoomName);
|
||||
Controls.Add(rtxtChat);
|
||||
Controls.Add(btnSend);
|
||||
Controls.Add(rtxtChatbox);
|
||||
DoubleBuffered = true;
|
||||
FormBorderStyle = FormBorderStyle.FixedSingle;
|
||||
Icon = (Icon)resources.GetObject("$this.Icon");
|
||||
MaximizeBox = false;
|
||||
@ -141,10 +131,9 @@
|
||||
#endregion
|
||||
private RichTextBox rtxtChatbox;
|
||||
private Button btnSend;
|
||||
private RichTextBox rtxtChat;
|
||||
private Label lblRoomName;
|
||||
private ImageList ilStatusIcons;
|
||||
private ImageList ilProfileImages;
|
||||
private ListView lvUserList;
|
||||
private FlowLayoutPanel fpnlMessages;
|
||||
private ImageList ilStatusIcons;
|
||||
}
|
||||
}
|
||||
@ -1,63 +1,47 @@
|
||||
using qtc_net_client_2.ClientModel;
|
||||
using qtc_net_client_2.Controls;
|
||||
using qtc_net_client_2.Services;
|
||||
using QtCNETAPI.Dtos.User;
|
||||
using qtc_net_client_2.Services;
|
||||
using QtCNETAPI.Events;
|
||||
using QtCNETAPI.Models;
|
||||
using QtCNETAPI.Services.ApiService;
|
||||
using QtCNETAPI.Services.GatewayService;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace qtc_net_client_2.Forms
|
||||
{
|
||||
public partial class ChatRoom : Form
|
||||
{
|
||||
private readonly IGatewayService _gatewayService;
|
||||
private readonly IApiService _apiService;
|
||||
private readonly AudioService AudioService = new();
|
||||
IGatewayService _gatewayService;
|
||||
IApiService _apiService;
|
||||
AudioService AudioService = new();
|
||||
|
||||
private readonly List<User> RoomUserList = new();
|
||||
private Room? Room;
|
||||
public ChatRoom(IGatewayService gatewayService, IApiService apiService, Room? room = null)
|
||||
public ChatRoom(IGatewayService gatewayService, IApiService apiService)
|
||||
{
|
||||
_gatewayService = gatewayService;
|
||||
_apiService = apiService;
|
||||
Room = room;
|
||||
|
||||
// subscribe to server message event
|
||||
_gatewayService.OnRoomMessageReceived += _gatewayService_OnServerMessageReceived;
|
||||
_gatewayService.OnRoomUserListReceived += _gatewayService_OnRoomUserListReceived;
|
||||
_gatewayService.OnRoomDeleted += _gatewayService_OnRoomDeleted;
|
||||
_gatewayService.OnGuestUserJoin += _gatewayService_OnGuestUserJoin;
|
||||
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private async void frmChat_Load(object sender, EventArgs e)
|
||||
private void frmChat_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (Room == null)
|
||||
{
|
||||
// join lobby
|
||||
await _gatewayService.JoinRoomAsync();
|
||||
Room = new Room
|
||||
{
|
||||
Id = "LOBBY",
|
||||
Name = "Lobby"
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
// join selected room
|
||||
await _gatewayService.JoinRoomAsync(Room);
|
||||
}
|
||||
// subscribe to server message event
|
||||
_gatewayService.OnRoomMessageReceived += _gatewayService_OnServerMessageReceived;
|
||||
_gatewayService.OnRoomUserListReceived += _gatewayService_OnRoomUserListReceived;
|
||||
_gatewayService.OnGuestUserJoin += _gatewayService_OnGuestUserJoin;
|
||||
|
||||
// init ui
|
||||
if (_gatewayService.CurrentRoom != null) { Text = $"QtC.NET Client - Chat Room - {_gatewayService.CurrentRoom.Name}"; lblRoomName.Text = _gatewayService.CurrentRoom.Name; }
|
||||
else if (_gatewayService.InLobby) { Text = $"QtC.NET Client - Chat Room - Lobby"; lblRoomName.Text = "Lobby"; }
|
||||
|
||||
Text = $"QtC.NET Client - Chat Room - {Room.Name}";
|
||||
lblRoomName.Text = Room.Name;
|
||||
lvUserList.Clear();
|
||||
|
||||
RoomUserList.Clear();
|
||||
lvUserList.Items.Clear();
|
||||
// always add current user to list i guess
|
||||
lvUserList.Items.Add(_apiService.CurrentUser.Username, _apiService.CurrentUser.Status);
|
||||
}
|
||||
|
||||
private async void frmChat_FormClosing(object sender, FormClosingEventArgs e)
|
||||
@ -66,7 +50,7 @@ namespace qtc_net_client_2.Forms
|
||||
_gatewayService.OnRoomMessageReceived -= _gatewayService_OnServerMessageReceived;
|
||||
_gatewayService.OnRoomUserListReceived -= _gatewayService_OnRoomUserListReceived;
|
||||
|
||||
if (_gatewayService.CurrentRoom != null)
|
||||
if (_gatewayService.CurrentRoom != null || _gatewayService.InLobby)
|
||||
{
|
||||
// leave any room user is in
|
||||
await _gatewayService.LeaveRoomAsync();
|
||||
@ -82,7 +66,7 @@ namespace qtc_net_client_2.Forms
|
||||
|
||||
// send it and clear text box
|
||||
await _gatewayService.PostMessageAsync(message);
|
||||
rtxtChatbox.Text = string.Empty;
|
||||
rtxtChatbox.Clear();
|
||||
AudioService.PlaySoundEffect("sndSendClick");
|
||||
}
|
||||
}
|
||||
@ -110,28 +94,24 @@ namespace qtc_net_client_2.Forms
|
||||
{
|
||||
// get user info and open profile dialog
|
||||
var user = mainForm.UserDirectory.FirstOrDefault(e => e.Username == selectedUser);
|
||||
if (user != null)
|
||||
{
|
||||
var res = await _apiService.GetUserInformationAsync(user.Id);
|
||||
var pfpRes = await _apiService.GetUserProfilePic(user.Id);
|
||||
var res = await _apiService.GetUserInformationAsync(user!.Id);
|
||||
var pfpRes = await _apiService.GetUserProfilePic(user!.Id);
|
||||
|
||||
if (res.Data != null && res.Success)
|
||||
{
|
||||
Profile frmProfile = new Profile(res.Data, pfpRes, mainForm.Contacts, _apiService, _gatewayService);
|
||||
frmProfile.Show();
|
||||
}
|
||||
if (res.Data != null && res.Success)
|
||||
{
|
||||
Profile frmProfile = new Profile(res.Data, pfpRes, mainForm.Contacts, _apiService, _gatewayService);
|
||||
frmProfile.Show();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async void _gatewayService_OnServerMessageReceived(object? sender, EventArgs e)
|
||||
private void _gatewayService_OnServerMessageReceived(object? sender, EventArgs e)
|
||||
{
|
||||
var msgEventArgs = (ServerMessageEventArgs)e;
|
||||
var user = RoomUserList.FirstOrDefault(e => e.Username == msgEventArgs.Message.Split(':')[0]);
|
||||
|
||||
AddMessage(msgEventArgs.Message, user?.Id);
|
||||
AddMessage(msgEventArgs.Message);
|
||||
if (!msgEventArgs.Message.Contains(_apiService.CurrentUser.Username)) AudioService.PlaySoundEffect("sndMessage");
|
||||
}
|
||||
|
||||
@ -139,77 +119,26 @@ namespace qtc_net_client_2.Forms
|
||||
{
|
||||
var args = (RoomListEventArgs)e;
|
||||
|
||||
if (IsHandleCreated && !IsDisposed)
|
||||
{
|
||||
Invoke(async delegate ()
|
||||
{
|
||||
RoomUserList.Clear();
|
||||
lvUserList.Items.Clear();
|
||||
foreach (var user in args.UserList)
|
||||
{
|
||||
lvUserList.Items.Add(user.Username, user.Status);
|
||||
RoomUserList.Add(user);
|
||||
if (!IsHandleCreated) return;
|
||||
|
||||
// TODO - probably do this only when a message is received (requires response model change)
|
||||
var pfpRes = await _apiService.GetUserProfilePic(user.Id);
|
||||
if (pfpRes != null && pfpRes.Success && pfpRes.Data != null)
|
||||
{
|
||||
using var ms = new MemoryStream(pfpRes.Data);
|
||||
using var bmp = new Bitmap(ms);
|
||||
ilProfileImages.Images.Add(user.Id, bmp);
|
||||
}
|
||||
}
|
||||
});
|
||||
lvUserList.BeginInvoke(lvUserList.Clear);
|
||||
foreach (var user in args.UserList)
|
||||
{
|
||||
lvUserList.BeginInvoke(delegate () { lvUserList.Items.Add(user.Username, user.Status); });
|
||||
}
|
||||
}
|
||||
private void _gatewayService_OnGuestUserJoin(object? sender, EventArgs e)
|
||||
{
|
||||
var args = (GuestUserJoinEventArgs)e;
|
||||
AddMessage($"Server: Guest User {args.Username} Has Joined {_gatewayService.CurrentRoom?.Name}");
|
||||
}
|
||||
|
||||
private void _gatewayService_OnRoomDeleted(object? sender, EventArgs e)
|
||||
{
|
||||
if (IsHandleCreated && !IsDisposed)
|
||||
{
|
||||
Invoke(delegate ()
|
||||
{
|
||||
AddMessage($"Server: This Room Was Deleted By An Admin.");
|
||||
lvUserList.Items.Clear();
|
||||
RoomUserList.Clear();
|
||||
|
||||
lvUserList.Enabled = false;
|
||||
rtxtChatbox.Enabled = false;
|
||||
btnSend.Enabled = false;
|
||||
});
|
||||
}
|
||||
AddMessage($"[SERVER] Guest User {args.Username} Has Joined {_gatewayService.CurrentRoom?.Name}");
|
||||
}
|
||||
|
||||
|
||||
private void AddMessage(string message, string? userId = null)
|
||||
private void AddMessage(string message)
|
||||
{
|
||||
if (IsHandleCreated && !IsDisposed)
|
||||
{
|
||||
Invoke((Delegate)delegate ()
|
||||
{
|
||||
var ctrl = new ChatMessageControl()
|
||||
{
|
||||
Username = message.Split(':')[0],
|
||||
Message = message.Split(':')[1].Trim(),
|
||||
Width = fpnlMessages.ClientSize.Width - SystemInformation.VerticalScrollBarWidth
|
||||
};
|
||||
|
||||
if(ilProfileImages.Images.ContainsKey(userId))
|
||||
ctrl.Avatar = ilProfileImages.Images[userId];
|
||||
else ctrl.Avatar = null;
|
||||
|
||||
ctrl.Height = ctrl.CalculateHeight(ctrl.Width);
|
||||
|
||||
fpnlMessages.Controls.Add(ctrl);
|
||||
fpnlMessages.VerticalScroll.Value = fpnlMessages.VerticalScroll.Maximum;
|
||||
fpnlMessages.PerformLayout();
|
||||
});
|
||||
}
|
||||
if (InvokeRequired)
|
||||
Invoke(delegate { rtxtChat.AppendText(message + Environment.NewLine); });
|
||||
else rtxtChat.AppendText(message + Environment.NewLine);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -124,218 +124,93 @@
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
|
||||
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
|
||||
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAchMAAAJNU0Z0AUkBTAIBAQQB
|
||||
AAEYAQIBGAECARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAASADAAEBAQABIAYAASD/
|
||||
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA+hMAAAJNU0Z0AUkBTAIBAQQB
|
||||
AAHAAQABwAEAARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAASADAAEBAQABIAYAASD/
|
||||
AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AC4AAwYBBwM0AVQDUQGiA14B0gNaAekDYAHoA10B
|
||||
0QNQAZ8DMQFNAwUBBhgAAwYBBwM0AVQDUQGiA14B0gNaAekDYAHoA10B0QNQAZ8DMQFNAwUBBhgAAwYB
|
||||
BwM0AVQDUQGiA14B0gNaAekDYAHoA10B0QNQAZ8DMQFNAwUBBhgAAwYBBwM0AVQDUQGiA14B0gNaAekD
|
||||
YAHoA10B0QNQAZ8DMQFNAwUBBhQAAyABLQNUAasDWwHkA1oB9QMkAfsDZwH+A2cB/gMkAfsDUwH0A2IB
|
||||
4QNRAaEDHgEqEAADIAEtA1QBqwNbAeQDWgH1ASEBXgEhAfsBQwGAAUMB/gFDAYABQwH+ASEBXgEhAfsD
|
||||
UwH0A2IB4QNRAaEDHgEqEAADIAEtA1QBqwNbAeQDWgH1ASECXgH7AUMCgAH+AUMCgAH+ASECXgH7A1MB
|
||||
9ANiAeEDUQGhAx4BKhAAAyABLQNUAasDWwHkA1oB9QIhAV4B+wJDAYAB/gJDAYAB/gIhAV4B+wNTAfQD
|
||||
YgHhA1EBoQMeASoMAAMbASUDWAG9A1oB8gNrAf4DMAH/AzkB/wM8Af8DNgH/AyoB/wMkAf8DQAH9A14B
|
||||
8ANWAbIDGgEjCAADGwElA1gBvQNaAfIBQwGAAUMB/gEAAVcBAAH/AQABZwEAAf8BAAFsAQAB/wEAAWEB
|
||||
AAH/AQABTAEAAf8BAAFAAQAB/wNAAf0DXgHwA1YBsgEZARoBGQEjCAADGwElA1gBvQNaAfIBQwKAAf4B
|
||||
AAJXAf8BAAJnAf8BAAJsAf8BAAJhAf8BAAJMAf8BAAJAAf8DQAH9A14B8ANWAbIBGQIaASMIAAMbASUD
|
||||
WAG9A1oB8gJDAYAB/gIAAVcB/wIAAWcB/wIAAWwB/wIAAWEB/wIAAUwB/wIAAUAB/wNAAf0DXgHwA1YB
|
||||
sgIZARoBIwQAAwMBBANSAaUDYAHzA0kB/wNVAf8DZQH/A3EB/wN1Af8DcQH/A2QB/wNMAf8DMQH/A2cB
|
||||
/gNiAe4DUAGaAwMBBAMDAQQBUgFTAVIBpQFgAW8BYAHzAQABggEAAf8BAAGZAQAB/wEAAbYBAAH/AQAB
|
||||
zAEAAf8BAAHTAQAB/wEAAcsBAAH/AQABswEAAf8BAAGIAQAB/wEAAVcBAAH/AUMBgAFDAf4DYgHuA1AB
|
||||
mgMDAQQDAwEEAVICUwGlAWACbwHzAQACggH/AQACmQH/AQACtgH/AQACzAH/AQAC0wH/AQACywH/AQAC
|
||||
swH/AQACiAH/AQACVwH/AUMCgAH+A2IB7gNQAZoDAwEEAwMBBAJSAVMBpQJgAW8B8wIAAYIB/wIAAZkB
|
||||
/wIAAbYB/wIAAcwB/wIAAdMB/wIAAcsB/wIAAbMB/wIAAYgB/wIAAVcB/wJDAYAB/gNiAe4DUAGaAwMB
|
||||
BAMtAUQDYAHoA4AB/gNuAf8DewH/A4UB/wOKAf8DjAH/A4oB/wOFAf8DdgH/A1cB/wMyAf8DQAH9A14B
|
||||
3QMqAT8DLQFEAWABaQFgAegBQwGAAUMB/gEAAcYBAAH/AQAB3AEAAf8BAAHuAQAB/wEAAfgBAAH/AQAB
|
||||
+wEAAf8BAAH5AQAB/wEAAe8BAAH/AQAB1AEAAf8BAAGcAQAB/wEAAVoBAAH/A0AB/QNeAd0DKgE/Ay0B
|
||||
RAFgAmkB6AFDAoAB/gEAAsYB/wEAAtwB/wEAAu4B/wEAAvgB/wEAAvsB/wEAAvkB/wEAAu8B/wEAAtQB
|
||||
/wEAApwB/wEAAloB/wNAAf0DXgHdAyoBPwMtAUQCYAFpAegCQwGAAf4CAAHGAf8CAAHcAf8CAAHuAf8C
|
||||
AAH4Af8CAAH7Af8CAAH5Af8CAAHvAf8CAAHUAf8CAAGcAf8CAAFaAf8DQAH9A14B3QMqAT8DTgGVA3cB
|
||||
+AN/Af8DhQH/A4oB/wONAf8DjgH/A44B/wOOAf8DjQH/A4kB/wN3Af8DTQH/AyUB/wNaAfIDSgGLA04B
|
||||
lQFcAXwBXAH4AQAB5QEAAf8BAAHvAQAB/wEAAfgBAAH/AQAB/QEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB
|
||||
/wEAAf8BAAH+AQAB/wEAAfYBAAH/AQAB1QEAAf8BAAGLAQAB/wEAAUEBAAH/A1oB8gNKAYsDTgGVAVwC
|
||||
fAH4AQAC5QH/AQAC7wH/AQAC+AH/AQAC/QH/AQAD/wEAA/8BAAP/AQAC/gH/AQAC9gH/AQAC1QH/AQAC
|
||||
iwH/AQACQQH/A1oB8gNKAYsDTgGVAlwBfAH4AgAB5QH/AgAB7wH/AgAB+AH/AgAB/QH/AgAC/wIAAv8C
|
||||
AAL/AgAB/gH/AgAB9gH/AgAB1QH/AgABiwH/AgABQQH/A1oB8gNKAYsDXwHTA34B/AOTAf8DjgH/A40B
|
||||
/wOOAf8DjgH/A44B/wOOAf8DjgH/A40B/wOFAf8DZwH/AzQB/wNBAfkDWgHEAVsBXwFbAdMBKwF+ASsB
|
||||
/AEOAfsBDgH/AQMB/QEDAf8BAAH+AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB
|
||||
/wEAAf8BAAH9AQAB/wEAAe8BAAH/AQABuQEAAf8BAAFdAQAB/wNBAfkDWgHEAVsCXwHTASsCfgH8AQ4C
|
||||
+wH/AQMC/QH/AQAC/gH/AQAD/wEAA/8BAAP/AQAD/wEAA/8BAAL9Af8BAALvAf8BAAK5Af8BAAJdAf8D
|
||||
QQH5A1oBxAJbAV8B0wIrAX4B/AIOAfsB/wIDAf0B/wIAAf4B/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAB
|
||||
/QH/AgAB7wH/AgABuQH/AgABXQH/A0EB+QNaAcQDbgH1A4AB/gOfAf8DkwH/A48B/wOOAf8DjgH/A44B
|
||||
/wOOAf8DjgH/A44B/wOLAf8DdwH/A0gB/wNAAf0DYgHhAVoBbgFaAfUBZwGAAWcB/gEnAf8BJwH/AQsB
|
||||
/wELAf8BAQH/AQEB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB
|
||||
/wEAAfkBAAH/AQAB1gEAAf8BAAGBAQAB/wNAAf0DYgHhAVoCbgH1AWcCgAH+AScD/wELA/8BAQP/AQAD
|
||||
/wEAA/8BAAP/AQAD/wEAA/8BAAP/AQAC+QH/AQAC1gH/AQACgQH/A0AB/QNiAeECWgFuAfUCZwGAAf4C
|
||||
JwL/AgsC/wIBAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAH5Af8CAAHWAf8CAAGBAf8DQAH9A2IB
|
||||
4QNjAfYDgAH+A6sB/wOZAf8DkAH/A44B/wOOAf8DjgH/A44B/wOOAf8DjgH/A40B/wN/Af8DVQH/A0AB
|
||||
/QNeAeIBSAFjAUgB9gOAAf4BQgH/AUIB/wEZAf8BGQH/AQQB/wEEAf8BAAH/AQAB/wEAAf8BAAH/AQAB
|
||||
/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH9AQAB/wEAAeQBAAH/AQABmAEAAf8DQAH9A14B
|
||||
4gFIAmMB9gOAAf4BQgP/ARkD/wEEA/8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAA/8BAAL9Af8BAALkAf8B
|
||||
AAKYAf8DQAH9A14B4gJIAWMB9gOAAf4CQgL/AhkC/wIEAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8C
|
||||
AAH9Af8CAAHkAf8CAAGYAf8DQAH9A14B4gNhAdYDfgH8A7gB/wOjAf8DkwH/A44B/wOOAf8DjgH/A44B
|
||||
/wOOAf8DjgH/A40B/wOCAf8DXAH/A00B+gNaAccBXAFhAVwB1gFkAX4BZAH8AV8B/wFfAf8BLwH/AS8B
|
||||
/wEMAf8BDAH/AQEB/wEBAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB
|
||||
/gEAAf8BAAHqAQAB/wEAAaUBAAH/A00B+gNaAccBXAJhAdYBZAJ+AfwBXwP/AS8D/wEMA/8BAQP/AQAD
|
||||
/wEAA/8BAAP/AQAD/wEAA/8BAAL+Af8BAALqAf8BAAKlAf8DTQH6A1oBxwJcAWEB1gJkAX4B/AJfAv8C
|
||||
LwL/AgwC/wIBAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAf4B/wIAAeoB/wIAAaUB/wNNAfoDWgHHA1AB
|
||||
mgNqAfkDxQH/A7IB/wOcAf8DkQH/A44B/wOOAf8DjgH/A44B/wOPAf8DjgH/A4MB/wNgAf8DWgHyA0wB
|
||||
kANQAZoDagH5AXwB/wF8Af8BUQH/AVEB/wEfAf8BHwH/AQcB/wEHAf8BAQH/AQEB/wEAAf8BAAH/AQAB
|
||||
/wEAAf8BAAH/AQAB/wECAf8BAgH/AQIB/gECAf8BAAHrAQAB/wEAAa0BAAH/AVoBawFaAfIDTAGQA1AB
|
||||
mgNqAfkBfAP/AVED/wEfA/8BBwP/AQED/wEAA/8BAAP/AQAD/wECA/8BAgL+Af8BAALrAf8BAAKtAf8B
|
||||
WgJrAfIDTAGQA1ABmgNqAfkCfAL/AlEC/wIfAv8CBwL/AgEC/wIAAv8CAAL/AgAC/wICAv8CAgH+Af8C
|
||||
AAHrAf8CAAGtAf8CWgFrAfIDTAGQAy8BSQNsAesDgAH+A8YB/wOuAf8DnAH/A5MB/wOQAf8DjwH/A5AB
|
||||
/wOTAf8DkwH/A4UB/wNAAf0DYAHgAy0BRQMvAUkDbAHrA4AB/gF/Af8BfwH/AUkB/wFJAf8BHwH/AR8B
|
||||
/wEMAf8BDAH/AQUB/wEFAf8BAwH/AQMB/wEFAf8BBQH/AQoB/wEKAf8BCgH+AQoB/wEBAe0BAQH/AUAB
|
||||
tgFAAf0BYAFmAWAB4AMtAUUDLwFJA2wB6wOAAf4BfwP/AUkD/wEfA/8BDAP/AQUD/wEDA/8BBQP/AQoD
|
||||
/wEKAv4B/wEBAu0B/wFAArYB/QFgAmYB4AMtAUUDLwFJA2wB6wOAAf4CfwL/AkkC/wIfAv8CDAL/AgUC
|
||||
/wIDAv8CBQL/AgoC/wIKAf4B/wIBAe0B/wJAAbYB/QJgAWYB4AMtAUUDAwEEA1YBrgNuAfUD2QH/A8sB
|
||||
/wO3Af8DpwH/A50B/wOaAf8DnAH/A58B/wObAf8DiQH/A2gB8ANSAaMDAwEEAwMBBANWAa4DbgH1AagB
|
||||
/wGoAf8BiQH/AYkB/wFcAf8BXAH/ATcB/wE3Af8BIgH/ASIB/wEbAf8BGwH/AR8B/wEfAf8BJgH/ASYB
|
||||
/wEdAf8BHQH/AQUB8wEFAf8BXgFoAV4B8ANSAaMDAwEEAwMBBANWAa4DbgH1AagD/wGJA/8BXAP/ATcD
|
||||
/wEiA/8BGwP/AR8D/wEmA/8BHQP/AQUC8wH/AV4CaAHwA1IBowMDAQQDAwEEA1YBrgNuAfUCqAL/AokC
|
||||
/wJcAv8CNwL/AiIC/wIbAv8CHwL/AiYC/wIdAv8CBQHzAf8CXgFoAfADUgGjAwMBBAQAAxwBJwNdAccD
|
||||
YwH2A4AB/gPXAf8DzAH/A8IB/wO7Af8DtwH/A7EB/wOAAf4DaAH0A1kBvAMbASYIAAMcAScDXQHHA2MB
|
||||
9gOAAf4BpQH/AaUB/wGLAf8BiwH/AXQB/wF0Af8BZgH/AWYB/wFcAf8BXAH/AU4B/wFOAf8BcwGAAXMB
|
||||
/gFTAWgBUwH0AVcBWQFXAbwDGwEmCAADHAEnA10BxwNjAfYDgAH+AaUD/wGLA/8BdAP/AWYD/wFcA/8B
|
||||
TgP/AXMCgAH+AVMCaAH0AVcCWQG8AxsBJggAAxwBJwNdAccDYwH2A4AB/gKlAv8CiwL/AnQC/wJmAv8C
|
||||
XAL/Ak4C/wJzAYAB/gJTAWgB9AJXAVkBvAMbASYMAAMhATADWQG2A2IB7gN9AfoDvgH9A9QB/wPMAf8D
|
||||
vgH9A2oB+QNsAesDVQGsAx8BLBAAAyEBMANZAbYDYgHuA30B+gGuAb4BrgH9AZ8B/wGfAf8BjAH/AYwB
|
||||
/wFAAb4BQAH9AWgBagFoAfkBYQFsAWEB6wNVAawDHwEsEAADIQEwA1kBtgNiAe4DfQH6Aa4CvgH9AZ8D
|
||||
/wGMA/8BQAK+Af0BaAJqAfkBYQJsAesDVQGsAx8BLBAAAyEBMANZAbYDYgHuA30B+gKuAb4B/QKfAv8C
|
||||
jAL/AkABvgH9AmgBagH5AmEBbAHrA1UBrAMfASwUAAMGAQcDNgFYA1UBrANmAeUDfgH8A18B+wNlAeID
|
||||
UwGnAzMBUQMGAQcYAAMGAQcDNgFYA1UBrANmAeUDfgH8AV8BZwFfAfsDZQHiA1MBpwMzAVEDBgEHGAAD
|
||||
BgEHAzYBWANVAawDZgHlA34B/AFfAmcB+wNlAeIDUwGnAzMBUQMGAQcYAAMGAQcDNgFYA1UBrANmAeUD
|
||||
fgH8Al8BZwH7A2UB4gNTAacDMwFRAwYBBwwAAUIBTQE+BwABPgMAASgDAAFAAwABIAMAAQEBAAEBBgAB
|
||||
ARYAA/+BAAHgAQcB4AEHAeABBwHgAQcBwAEDAcABAwHAAQMBwAEDAYABAQGAAQEBgAEBAYABAVAAAYAB
|
||||
AQGAAQEBgAEBAYABAQHAAQMBwAEDAcABAwHAAQMB4AEHAeABBwHgAQcB4AEHCw==
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="ilProfileImages.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>132, 12</value>
|
||||
</metadata>
|
||||
<data name="ilProfileImages.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
|
||||
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
|
||||
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAlhsAAAJNU0Z0AUkBTAMBAQAB
|
||||
QAEBAUABAQEgAQABIAEABP8BIQEACP8BQgFNATYHAAE2AwABKAMAAYADAAEgAwABAQEAASAGAAFAEgAC
|
||||
RwFGAYACRwFGAYACRwFGAYABRwJGAYABRwJGAYACRwFGAYACRwFGAYABRwJGAYABRwJGAYABRwJGAYAD
|
||||
RgGAAkcBRgGAAkcBRgGAAkcBRgGAAkcBRgGAAkcBRgGAAkcBRgGAAkcBRgGAAkcBRgGAAkcBRgGAAkcB
|
||||
RgGAAkcBRgGAA0YBgAFHAkYBgAFHAkYBgAFHAkYBgAFHAkYBgAFHAkYBgAJHAUYBgAJHAUYBgAJHAUYB
|
||||
gAMqAUD/AIEAAf8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRgEBAv8BRwEBAv8BSAEAAf8B7QFGAQEB
|
||||
/wHbAUMBAgH/AZEBNgEBAf8BRgEpAQAB/wF1AVABAQH/AaMBdwECAf8BzAGQAQkB/wH0AagBEAH/AfkB
|
||||
rQEIAf8B/gGxAQAB/wH3Aa4BBgH/Ae8BqwEMAf8BygGOAQcB/wGlAXABAgH/AXABTgEBAf8BOwEsAQAB
|
||||
/wFZAScBAAH/AXcBIgEAAf8BuwE0AQIB/wH+AUYBBAL/AUcBAwL/AUcBAQL/AUcBAQL/AUcBAQH/AkcB
|
||||
RgGA/wCBAAH/AUcBAQL/AUcBAQL/AUcBAQL/AUYBAgL/AUYBAwH/AfsBRwEBAf8B9wFIAQAB/wHaAVAB
|
||||
AQH/Ab0BWAEBAf8BrgFjAQEB/wGgAW8BAAH/AbgBggEBAf8B0QGWAQEB/wHkAaMBBQH/AfgBrwEJAf8B
|
||||
+wGxAQUC/wGzAQEB/wH7AbEBBAH/AfcBsAEIAf8B5AGiAQQB/wHRAZQBAQH/AbcBgwECAf8BnQFyAQIB
|
||||
/wGDAVEBAQH/AWgBMQEAAf8BlAEzAQEB/wHBATYBAwH/AeABPwECAv8BSAEBAv8BRwEBAv8BRwEBAf8C
|
||||
RwFGAYD/AIEAAf8BRwEBAv8BRwEBAv8BRwEBAv8BRgEDAv8BRQEEAf8B9wFGAQIB/wHvAUcBAAH/AccB
|
||||
WgEAAf8BnwFtAQAB/wHMAZEBAAH/AfkBtAEAAf8B/AG1AQAC/wG1AQAB/wH9AbYBAQH/AfsBtgEBAf8B
|
||||
/QG1AQEC/wG0AQEC/wG0AQIC/wG0AQMB/wH+AbYBAgH/Af0BtwEAAf8B/gG3AQIC/wG3AQQB/wGsAXwB
|
||||
AgH/AVkBQAEAAf8BbgEzAQEB/wGDASUBAQH/AcEBNwEBAf8B/gFIAQAC/wFIAQEC/wFHAQEB/wJHAUYB
|
||||
gP8AgQAB/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQIC/wFHAQIB/wHyAUwBAQH/AeYBUgEAAf8B2gFxAQAB
|
||||
/wHPAZABAAH/AeYBogEAAf8B/AG1AQEB/wH+AbUBAQL/AbUBAQH/Af4BtQEBAf8B/QG2AQEB/wH+AbUB
|
||||
AQL/AbUBAQL/AbUBAgL/AbUBAgL/AbUBAQH/Af4BtgEBAf8B/QG0AQEB/wH7AbIBAgH/AdQBmAEDAf8B
|
||||
rAF/AQMB/wGHAVUBAgH/AWMBKwEBAf8BrwE5AQEB/wH8AUgBAQH/Af4BRwEBAv8BRwEBAf8CRwFGAYD/
|
||||
AIEAAf8BRwEBAv8BRwEBAv8BRwEBAv8BSAEBAv8BSQEAAf8B7gFTAQAB/wHcAVwBAAH/Ae4BiAEAAv8B
|
||||
swEAAv8BtAEBAv8BtQEBAv8BtQEBAv8BtQEBAv8BtQEBAv8BtQEBAv8BtQEBAv8BtQEBAv8BtQEBAv8B
|
||||
tQEBAv8BtQEBAv8BtQEBAf8B+wGxAQEB/wH3AawBAAH/AfsBtQEDAv8BvgEGAf8BoQF3AQQB/wFCATAB
|
||||
AQH/AZ4BPAECAf8B+gFHAQIB/wH9AUcBAgL/AUcBAQH/AkcBRgGA/wCBAAH/AUcBAQL/AUcBAQL/AUcB
|
||||
AQL/AUgBAQL/AUkBAAH/AfYBZAEQAf8B7gF/ASEB/wH2AZoBEAL/AbUBAAL/AbUBAQL/AbUBAQL/AbUB
|
||||
AgL/AbUBAgL/AbUBAgL/AbUBAQL/AbUBAQL/AbUBAQL/AbUBAQL/AbUBAQL/AbUBAQL/AbUBAQH/Af0B
|
||||
swEBAf8B+wGxAQEB/wH9AbUBAwL/AboBBQH/AaQBdwEDAf8BSQE0AQEB/wGjAT0BAgH/Af0BRgEDAf8B
|
||||
/gFHAQIC/wFHAQEB/wJHAUYBgP8AgQAB/wFHAQEC/wFHAQEC/wFHAQEC/wFIAQEB/wH+AUgBAAL/AXUB
|
||||
IQL/AaIBQQL/AawBIQL/AbYBAAL/AbYBAQL/AbUBAQL/AbUBAgL/AbQBAwL/AbUBAgL/AbUBAQL/AbUB
|
||||
AQL/AbUBAQL/AbUBAQL/AbUBAQL/AbUBAQL/AbUBAQL/AbUBAQL/AbUBAQL/AbYBAwL/AbYBBAH/AagB
|
||||
dwECAf8BUAE3AQAB/wGoAT4BAgL/AUUBBAL/AUYBAwL/AUcBAQH/AkcBRgGA/wCBAAH/AUcBAQL/AUcB
|
||||
AQL/AUcBAQL/AUcBAQL/AUgBAQL/AV8BEwL/AXcBJgL/AZwBKAL/AcIBKgL/AbwBFQL/AbYBAQL/AbUB
|
||||
AQL/AbUBAgL/AbUBAgL/AbUBAQL/AbUBAQL/AbUBAQL/AbUBAQL/AbUBAQL/AbUBAgL/AbUBAgL/AbUB
|
||||
AQL/AbYBAQH/Af4BtgEBAf8B/QG2AQIB/wG9AXkBAQH/AX4BPQEAAf8BvgFCAQEC/wFHAQIC/wFHAQIC
|
||||
/wFHAQEB/wJHAUYBgP8AgQAB/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC/wFJAQYC/wFLAQoC
|
||||
/wGMAS8C/wHNAVMC/wHCASoC/wG2AQAC/wG2AQEC/wG1AQEC/wG1AQEC/wG1AQEC/wG1AQEC/wG1AQEC
|
||||
/wG1AQEC/wG1AQEC/wG1AQIC/wG0AQMC/wG1AQIC/wG2AQAB/wH9AbYBAAH/AfoBtQEAAf8B0wF8AQAB
|
||||
/wGsAUMBAAH/AdUBRgEAAf8B/gFIAQAC/wFIAQEC/wFHAQEB/wJHAUYBgP8AgQAB/wFHAQEC/wFHAQEC
|
||||
/wFHAQEC/wFHAQEC/wFGAQIB/wH+AUgBAwH/Af0BSQEFAf8B7wFrARwB/wHhAY0BNAH/AfABrQE7Av8B
|
||||
zgFDAv8BwQEjAv8BtAEEAv8BtQECAv8BtgEBAv8BtQEBAv8BtQEBAv8BtQEBAv8BtgEBAf8B/gG0AQEB
|
||||
/wH+AbMBAgH/Af4BtwEJAv8BuwEQAf8B/gG0AQ0B/wH9Aa0BCgH/AekBeAEFAf8B1gFDAQAB/wHqAUYB
|
||||
AAL/AUgBAAL/AUgBAQL/AUcBAQH/AkcBRgGA/wCBAAH/AUcBAQL/AUcBAQL/AUcBAQL/AUYBAgL/AUUB
|
||||
AgH/Af0BRgEBAf8B+gFHAQAB/wHfAUoBCgH/AcMBTAEUAf8B4QGZAU0C/wHlAYYC/wHMAUYC/wGzAQYC
|
||||
/wG1AQMC/wG2AQAC/wG2AQEC/wG1AQEC/wG2AQEC/wG2AQAB/wH+AbQBAAH/AfwBsgEAAf8B/gG5ARAC
|
||||
/wG/ASAC/wGyARoC/wGkARQC/wF0AQoC/wFDAQAC/wFGAQAC/wFIAQAC/wFIAQEC/wFHAQEB/wJHAUYB
|
||||
gP8AgQAB/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC/wFGAQIB/wH+AUcBAQH/Af0BRwEBAf8B7wFHAQYB
|
||||
/wHhAUgBCwH/AfABcAEnAv8BmAFDAf8B/gGgATwB/wH9AagBNAH/Af4BugFCAv8BzAFQAv8BzAFOAv8B
|
||||
ywFNAv8ByAFHAv8BxgFCAf8B/gHBAT8B/wH+Ab0BPAH/Af4BoQEnAv8BhgESAv8BfQEOAv8BdQELAv8B
|
||||
XQEGAv8BRQEBAv8BRgEBAv8BSAEBAv8BRwEBAv8BRwEBAf8CRwFGAYD/AIEAAf8BRwEBAv8BRwEBAv8B
|
||||
RwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRQECAv8BQwECAv8BRwEBAv8BSwEAAf8B/QF0ATEB
|
||||
/wH7AZ0BYgH/Af0BwAGBAv8B4gGgAv8B4gGcAv8B4QGYAv8B2wGOAv8B1QGEAv8BzgF+Av8BxwF3Av8B
|
||||
igE9Av8BTAEDAv8BSQEDAv8BRgECAv8BRwECAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAf8C
|
||||
RwFGAYD/AIEAAf8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAf8B/gFGAQIB
|
||||
/wH+AUUBAwH/Af4BSAECAv8BSwEAAf8B+QFdARkB/wHyAW8BMwH/Ac0BewFBAf8BpwGHAVAB/wGkAYgB
|
||||
TgH/AaABigFMAf8BowGGAUoB/wGnAYMBSQH/AbcBfgFCAf8ByAF5ATwB/wHjAWEBHwL/AUoBAgL/AUgB
|
||||
AgL/AUcBAgL/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQH/AkcBRgGA/wCBAAH/AUcB
|
||||
AQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQH/Af4BRwEDAf8B/AFGAQQB/wH+AUgB
|
||||
AgL/AUoBAAH/AfQBRQECAf8B6QFAAQMB/wGcATYBAgH/AU8BLAEAAf8BSAEvAQAB/wFBATIBAAH/AUgB
|
||||
MQEHAf8BTgEwAQ0B/wFvAS0BBwH/AZABKgEAAf8ByAE5AQEC/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC
|
||||
/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEB/wJHAUYBgP8AgQAB/wFHAQEC/wFHAQEC/wFHAQEC
|
||||
/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEB/wH+AUcBAgH/Af4BRwECAf8B/gFGAQEC/wFFAQEB/wHhAU0B
|
||||
AQH/AcMBVAECAf8BtQFhAQEB/wGnAW8BAAH/AaMBcAEAAf8BnwFxAQAB/wGjAXIBAwH/AacBcgEHAf8B
|
||||
hwFPAQMB/wFoASwBAAH/AaABNQEAAf8B2AE/AQEB/wHrAUMBAQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcB
|
||||
AQL/AUcBAQL/AUcBAQL/AUcBAQH/AkcBRgGA/wCBAAH/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcB
|
||||
AQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAAL/AUQBAQL/AUABAQH/Ac4BVAEBAf8BnQFoAQAB/wHOAY0B
|
||||
AAL/AbEBAAH/Af4BsQEAAf8B/AGwAQAB/wH+AbIBAAL/AbQBAAH/AaABcQEAAf8BQAEtAQAB/wF4ATIB
|
||||
AAH/AbABNwEAAf8B2AE/AQEC/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEB
|
||||
/wJHAUYBgP8AgQAB/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQIC
|
||||
/wFGAQIB/wH2AUUBAQH/Ae0BRQEBAf8B3gFqAQEB/wHOAZABAgH/AecBogEBAv8BtAEAAf8B/gGzAQEB
|
||||
/wH+AbIBAgH/Af4BtAEDAv8BtQEDAf8BzgGRAQMB/wGdAWwBAgH/AZMBSwEBAf8BiQErAQAB/wHEATkB
|
||||
AQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQH/AkcBRgGA/wCBAAH/AUcB
|
||||
AQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQL/AUYBAwL/AUUBBAH/Ae0BRwECAf8B
|
||||
2wFJAQAB/wHtAYABAgL/AbcBBAL/AbcBAgL/AbcBAAL/AbYBAgL/AbQBBAL/AbUBBQL/AbYBBgH/Af0B
|
||||
sQEFAf8B+gGrAQQB/wGuAWUBAgH/AWIBHgEAAf8BsQEzAQEC/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC
|
||||
/wFHAQEC/wFHAQEC/wFHAQEB/wJHAUYBgP8AgQAB/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC
|
||||
/wFHAQEC/wFHAQEC/wFHAQIC/wFHAQIB/wHqAUkBAQH/AdYBSwEAAf8B6wGAAQMC/wG1AQYC/wG2AQMC
|
||||
/wG2AQEC/wG1AQIC/wG1AQMC/wG1AQMC/wG2AQQB/wH+AbQBAwH/Af0BsgECAf8BrgFrAQEB/wFfASQB
|
||||
AAH/Aa8BNQEBAv8BRwECAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAf8CRwFGAYD/
|
||||
AIEAAf8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BSAEBAf8B/gFIAQAB
|
||||
/wHoAUsBAAH/AdEBTQEAAf8B6AGAAQQC/wGzAQcC/wG0AQQC/wG1AQEC/wG1AQEC/wG1AQEC/wG1AQEC
|
||||
/wG1AQEC/wG3AQEC/wG4AQAB/wGtAXEBAAH/AVsBKQEAAf8BrQE4AQEC/wFGAQIC/wFHAQIC/wFHAQEC
|
||||
/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEB/wJHAUYBgP8AgQAB/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC
|
||||
/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC/wFIAQEB/wHzAUoBAAH/AecBTQEAAf8B8wGGAQ4C/wG/ARwC
|
||||
/wG6AQ4B/wH+AbYBAQL/AbYBAQL/AbUBAQL/AbUBAQL/AbUBAQL/AbUBAQL/AbUBAQH/AcEBcQEAAf8B
|
||||
gwEuAQAB/wHBAToBAQL/AUcBAgL/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQH/AkcB
|
||||
RgGA/wCBAAH/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcB
|
||||
AQH/Af4BSgEBAf8B/QFNAQAB/wH+AYwBGQL/AcoBMQH/Af4BwQEZAf8B/QG3AQAB/wH+AbYBAQL/AbUB
|
||||
AQL/AbUBAQL/AbUBAQL/AbQBAQL/AbIBAQH/AdUBcgEBAf8BqwEyAQAB/wHVAT0BAQL/AUcBAQL/AUcB
|
||||
AQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQH/AkcBRgGA/wCBAAH/AUcBAQL/AUcBAQL/AUcB
|
||||
AQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQL/AUcBAQL/AUgBAQH/Af4BSgEAAv8BjQE2Av8B
|
||||
0QFsAf8B+wHHAUcB/wH3Ab4BIgH/AfsBuQESAv8BtQECAf8B/QG1AQgB/wH8AbYBDQH/AfsBrwENAf8B
|
||||
+wGoAQ0B/wHoAXIBCAH/AdUBPAEDAf8B6gFCAQIC/wFIAQEC/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC
|
||||
/wFHAQEC/wFHAQEB/wJHAUYBgP8AgQAB/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC
|
||||
/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC/wFGAQAC/wGPAVMC/wHYAaYB/wH4Ac4BdQH/AfEBxAFEAf8B
|
||||
+AG8ASQC/wG0AQMB/wH8AbYBDgH/AfgBtwEZAf8B+AGrARkB/wH3AZ4BGAH/AfsBcgEPAv8BRQEGAv8B
|
||||
RwEDAv8BSAEAAv8BSAEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAf8CRwFGAYD/AIEAAf8B
|
||||
RwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BSAEBAf8B/QFIAQAB
|
||||
/wH7AUgBAAH/Af0BbgEsAv8BlAFZAf8B/AGOAT8B/wH4AYgBJQH/Ae8BhAEUAf8B5gGBAQMB/wHtAYEB
|
||||
CAH/AfUBgQEOAf8B+AF5AQ8B/wH7AXIBEAH/Af0BXQEJAv8BRwEDAv8BRwECAv8BSAEBAv8BRwEBAv8B
|
||||
RwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAf8CRwFGAYD/AIEAAf8BRwEBAv8BRwEBAv8BRwEBAv8B
|
||||
RwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BSAEBAf8B/gFIAQAB/wH6AUkBAAH/AfYBSQEAAf8B+wFNAQYC
|
||||
/wFQAQsC/wFOAQkC/wFMAQYB/wHmAU0BBAH/AcwBTQECAf8B3wFMAQMB/wHyAUoBAwH/AfkBSAEFAv8B
|
||||
RgEHAv8BSAEEAf8B/gFJAQAC/wFIAQEC/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC
|
||||
/wFHAQEB/wJHAUYBgP8AgQAB/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC/wFHAQEC
|
||||
/wFHAQEC/wFIAQEB/wH9AUgBAQH/AfsBSAEBAf8B/QFKAQMC/wFMAQYC/wFLAQUC/wFKAQQB/wHyAUoB
|
||||
AwH/AeYBSgECAf8B7wFJAQIB/wH5AUkBAgH/AfwBSAEDAv8BRwEEAv8BRwECAv8BSAEBAv8BSAEBAv8B
|
||||
RwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAf8CRwFGAYD/AIEAAf8BRwEBAv8B
|
||||
RwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8B
|
||||
RwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8B
|
||||
RwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAf8C
|
||||
RwFGAYD/AIEAAf8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8B
|
||||
RwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8B
|
||||
RwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8B
|
||||
RwEBAv8BRwEBAv8BRwEBAf8CRwFGAYD/AIEAAf8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8B
|
||||
RwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8B
|
||||
RwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8B
|
||||
RwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAv8BRwEBAf8CRwFGAYD/AIEAAUIBTQE+BwABPgMAASgD
|
||||
AAGAAwABIAMAAQEBAAEBBgABAhYAA///AP8AAwAL
|
||||
YAHoA10B0QNQAZ8DMQFNAwUBBhQAAyABLQNUAasDWwHkA1UB9QMkAfsDPAH+AzwB/gMkAfsDUwH0A2IB
|
||||
4QNRAaEDHgEqEAADIAEtA1QBqwNbAeQBSwFaAUsB9QEhAVgBIQH7ARgBWAEYAf4BGAFYARgB/gEhAVgB
|
||||
IQH7A1MB9ANiAeEDUQGhAx4BKhAAAyABLQNUAasDWwHkAUsCWgH1ASECWAH7ARgCWAH+ARgCWAH+ASEC
|
||||
WAH7A1MB9ANiAeEDUQGhAx4BKhAAAyABLQNUAasDWwHkAksBWgH1AiEBWAH7AhgBWAH+AhgBWAH+AiEB
|
||||
WAH7A1MB9ANiAeEDUQGhAx4BKgwAAxsBJQNYAb0DWgHyA0AB/gMwAf8DOQH/AzwB/wM2Af8DKgH/AyQB
|
||||
/wNAAf0DXgHwA1YBsgMaASMIAAMbASUDWAG9A1oB8gEYAWABGAH+AQABVwEAAf8BAAFnAQAB/wEAAWwB
|
||||
AAH/AQABYQEAAf8BAAFMAQAB/wEAAUABAAH/ATABQAEwAf0BWgFeAVoB8ANWAbIBGQEaARkBIwgAAxsB
|
||||
JQNYAb0DWgHyARgCYAH+AQACVwH/AQACZwH/AQACbAH/AQACYQH/AQACTAH/AQACQAH/ATACQAH9AVoC
|
||||
XgHwA1YBsgEZAhoBIwgAAxsBJQNYAb0DWgHyAhgBYAH+AgABVwH/AgABZwH/AgABbAH/AgABYQH/AgAB
|
||||
TAH/AgABQAH/AjABQAH9AloBXgHwA1YBsgIZARoBIwQAAwMBBANSAaUDYAHzA0kB/wNVAf8DZQH/A3EB
|
||||
/wN1Af8DcQH/A2QB/wNMAf8DMQH/AzwB/gNiAe4DUAGaAwMBBAMDAQQBUgFTAVIBpQFWAW8BVgHzAQAB
|
||||
ggEAAf8BAAGZAQAB/wEAAbYBAAH/AQABzAEAAf8BAAHTAQAB/wEAAcsBAAH/AQABswEAAf8BAAGIAQAB
|
||||
/wEAAVcBAAH/ARgBWAEYAf4BXwFiAV8B7gNQAZoDAwEEAwMBBAFSAlMBpQFWAm8B8wEAAoIB/wEAApkB
|
||||
/wEAArYB/wEAAswB/wEAAtMB/wEAAssB/wEAArMB/wEAAogB/wEAAlcB/wEYAlgB/gFfAmIB7gNQAZoD
|
||||
AwEEAwMBBAJSAVMBpQJWAW8B8wIAAYIB/wIAAZkB/wIAAbYB/wIAAcwB/wIAAdMB/wIAAcsB/wIAAbMB
|
||||
/wIAAYgB/wIAAVcB/wIYAVgB/gJfAWIB7gNQAZoDAwEEAy0BRANgAegDewH+A24B/wN7Af8DhQH/A4oB
|
||||
/wOMAf8DigH/A4UB/wN2Af8DVwH/AzIB/wNAAf0DXgHdAyoBPwMtAUQBYAFpAWAB6AEYAYQBGAH+AQAB
|
||||
xgEAAf8BAAHcAQAB/wEAAe4BAAH/AQAB+AEAAf8BAAH7AQAB/wEAAfkBAAH/AQAB7wEAAf8BAAHUAQAB
|
||||
/wEAAZwBAAH/AQABWgEAAf8BMAFAATAB/QNeAd0DKgE/Ay0BRAFgAmkB6AEYAoQB/gEAAsYB/wEAAtwB
|
||||
/wEAAu4B/wEAAvgB/wEAAvsB/wEAAvkB/wEAAu8B/wEAAtQB/wEAApwB/wEAAloB/wEwAkAB/QNeAd0D
|
||||
KgE/Ay0BRAJgAWkB6AIYAYQB/gIAAcYB/wIAAdwB/wIAAe4B/wIAAfgB/wIAAfsB/wIAAfkB/wIAAe8B
|
||||
/wIAAdQB/wIAAZwB/wIAAVoB/wIwAUAB/QNeAd0DKgE/A04BlQN3AfgDfwH/A4UB/wOKAf8DjQH/A44B
|
||||
/wOOAf8DjgH/A40B/wOJAf8DdwH/A00B/wMlAf8DWgHyA0oBiwNOAZUBQgGBAUIB+AEAAeUBAAH/AQAB
|
||||
7wEAAf8BAAH4AQAB/wEAAf0BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/gEAAf8BAAH2AQAB
|
||||
/wEAAdUBAAH/AQABiwEAAf8BAAFBAQAB/wNaAfIDSgGLA04BlQFCAoEB+AEAAuUB/wEAAu8B/wEAAvgB
|
||||
/wEAAv0B/wEAA/8BAAP/AQAD/wEAAv4B/wEAAvYB/wEAAtUB/wEAAosB/wEAAkEB/wNaAfIDSgGLA04B
|
||||
lQJCAYEB+AIAAeUB/wIAAe8B/wIAAfgB/wIAAf0B/wIAAv8CAAL/AgAC/wIAAf4B/wIAAfYB/wIAAdUB
|
||||
/wIAAYsB/wIAAUEB/wNaAfIDSgGLA18B0wN+AfwDkwH/A44B/wONAf8DjgH/A44B/wOOAf8DjgH/A44B
|
||||
/wONAf8DhQH/A2cB/wM0Af8DQQH5A1oBxAFbAV8BWwHTASsBsAErAfwBDgH7AQ4B/wEDAf0BAwH/AQAB
|
||||
/gEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/QEAAf8BAAHvAQAB
|
||||
/wEAAbkBAAH/AQABXQEAAf8DQQH5A1oBxAFbAl8B0wErArAB/AEOAvsB/wEDAv0B/wEAAv4B/wEAA/8B
|
||||
AAP/AQAD/wEAA/8BAAP/AQAC/QH/AQAC7wH/AQACuQH/AQACXQH/A0EB+QNaAcQCWwFfAdMCKwGwAfwC
|
||||
DgH7Af8CAwH9Af8CAAH+Af8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAf0B/wIAAe8B/wIAAbkB/wIAAV0B
|
||||
/wNBAfkDWgHEA24B9QOAAf4DnwH/A5MB/wOPAf8DjgH/A44B/wOOAf8DjgH/A44B/wOOAf8DiwH/A3cB
|
||||
/wNIAf8DQAH9A2IB4QFTAXYBUwH1ATwBzwE8Af4BJwH/AScB/wELAf8BCwH/AQEB/wEBAf8BAAH/AQAB
|
||||
/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH5AQAB/wEAAdYBAAH/AQAB
|
||||
gQEAAf8BMAFAATAB/QNiAeEBUwJ2AfUBPALPAf4BJwP/AQsD/wEBA/8BAAP/AQAD/wEAA/8BAAP/AQAD
|
||||
/wEAA/8BAAL5Af8BAALWAf8BAAKBAf8BMAJAAf0DYgHhAlMBdgH1AjwBzwH+AicC/wILAv8CAQL/AgAC
|
||||
/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAB+QH/AgAB1gH/AgABgQH/AjABQAH9A2IB4QNtAfYDgAH+A6sB
|
||||
/wOZAf8DkAH/A44B/wOOAf8DjgH/A44B/wOOAf8DjgH/A40B/wN/Af8DVQH/A0AB/QNeAeIBSAF6AUgB
|
||||
9gFfAc8BXwH+AUIB/wFCAf8BGQH/ARkB/wEEAf8BBAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB
|
||||
/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/QEAAf8BAAHkAQAB/wEAAZgBAAH/ATABQAEwAf0DXgHiAUgC
|
||||
egH2AV8CzwH+AUID/wEZA/8BBAP/AQAD/wEAA/8BAAP/AQAD/wEAA/8BAAP/AQAC/QH/AQAC5AH/AQAC
|
||||
mAH/ATACQAH9A14B4gJIAXoB9gJfAc8B/gJCAv8CGQL/AgQC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC
|
||||
/wIAAf0B/wIAAeQB/wIAAZgB/wIwAUAB/QNeAeIDYQHWA34B/AO4Af8DowH/A5MB/wOOAf8DjgH/A44B
|
||||
/wOOAf8DjgH/A44B/wONAf8DggH/A1wB/wNNAfoDWgHHAVwBYQFcAdYBZAG0AWQB/AFfAf8BXwH/AS8B
|
||||
/wEvAf8BDAH/AQwB/wEBAf8BAQH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB
|
||||
/wEAAf4BAAH/AQAB6gEAAf8BAAGlAQAB/wEsAU0BLAH6A1oBxwFcAmEB1gFkArQB/AFfA/8BLwP/AQwD
|
||||
/wEBA/8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAAv4B/wEAAuoB/wEAAqUB/wEsAk0B+gNaAccCXAFhAdYC
|
||||
ZAG0AfwCXwL/Ai8C/wIMAv8CAQL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAH+Af8CAAHqAf8CAAGlAf8C
|
||||
LAFNAfoDWgHHA1ABmgOIAfkDxQH/A7IB/wOcAf8DkQH/A44B/wOOAf8DjgH/A44B/wOPAf8DjgH/A4MB
|
||||
/wNgAf8DWgHyA0wBkANQAZoBagGRAWoB+QF8Af8BfAH/AVEB/wFRAf8BHwH/AR8B/wEHAf8BBwH/AQEB
|
||||
/wEBAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAgH/AQIB/wECAf4BAgH/AQAB6wEAAf8BAAGtAQAB
|
||||
/wFaAWsBWgHyA0wBkANQAZoBagKRAfkBfAP/AVED/wEfA/8BBwP/AQED/wEAA/8BAAP/AQAD/wECA/8B
|
||||
AgL+Af8BAALrAf8BAAKtAf8BWgJrAfIDTAGQA1ABmgJqAZEB+QJ8Av8CUQL/Ah8C/wIHAv8CAQL/AgAC
|
||||
/wIAAv8CAAL/AgIC/wICAf4B/wIAAesB/wIAAa0B/wJaAWsB8gNMAZADLwFJA2wB6wOgAf4DxgH/A64B
|
||||
/wOcAf8DkwH/A5AB/wOPAf8DkAH/A5MB/wOTAf8DhQH/A04B/QNgAeADLQFFAy8BSQNsAesBgAHPAYAB
|
||||
/gF/Af8BfwH/AUkB/wFJAf8BHwH/AR8B/wEMAf8BDAH/AQUB/wEFAf8BAwH/AQMB/wEFAf8BBQH/AQoB
|
||||
/wEKAf8BCgH+AQoB/wEBAe0BAQH/ATABtgEwAf0BYAFmAWAB4AMtAUUDLwFJA2wB6wGAAs8B/gF/A/8B
|
||||
SQP/AR8D/wEMA/8BBQP/AQMD/wEFA/8BCgP/AQoC/gH/AQEC7QH/ATACtgH9AWACZgHgAy0BRQMvAUkD
|
||||
bAHrAoABzwH+An8C/wJJAv8CHwL/AgwC/wIFAv8CAwL/AgUC/wIKAv8CCgH+Af8CAQHtAf8CMAG2Af0C
|
||||
YAFmAeADLQFFAwMBBANWAa4DcAH1A9kB/wPLAf8DtwH/A6cB/wOdAf8DmgH/A5wB/wOfAf8DmwH/A4kB
|
||||
/wNoAfADUgGjAwMBBAMDAQQDVgGuAW4BdgFuAfUBqAH/AagB/wGJAf8BiQH/AVwB/wFcAf8BNwH/ATcB
|
||||
/wEiAf8BIgH/ARsB/wEbAf8BHwH/AR8B/wEmAf8BJgH/AR0B/wEdAf8BBQHzAQUB/wFaAWgBWgHwA1IB
|
||||
owMDAQQDAwEEA1YBrgFuAnYB9QGoA/8BiQP/AVwD/wE3A/8BIgP/ARsD/wEfA/8BJgP/AR0D/wEFAvMB
|
||||
/wFaAmgB8ANSAaMDAwEEAwMBBANWAa4CbgF2AfUCqAL/AokC/wJcAv8CNwL/AiIC/wIbAv8CHwL/AiYC
|
||||
/wIdAv8CBQHzAf8CWgFoAfADUgGjAwMBBAQAAxwBJwNdAccDdwH2A68B/gPXAf8DzAH/A8IB/wO7Af8D
|
||||
twH/A7EB/wOAAf4DaAH0A1kBvAMbASYIAAMcAScDXQHHAXIBegFyAfYBhwHPAYcB/gGlAf8BpQH/AYsB
|
||||
/wGLAf8BdAH/AXQB/wFmAf8BZgH/AVwB/wFcAf8BTgH/AU4B/wFIAc8BSAH+AVMBdwFTAfQBVwFZAVcB
|
||||
vAMbASYIAAMcAScDXQHHAXICegH2AYcCzwH+AaUD/wGLA/8BdAP/AWYD/wFcA/8BTgP/AUgCzwH+AVMC
|
||||
dwH0AVcCWQG8AxsBJggAAxwBJwNdAccCcgF6AfYChwHPAf4CpQL/AosC/wJ0Av8CZgL/AlwC/wJOAv8C
|
||||
SAHPAf4CUwF3AfQCVwFZAbwDGwEmDAADIQEwA1kBtgNnAe4DkwH6A74B/QPUAf8DzAH/A74B/QOEAfkD
|
||||
bAHrA1UBrAMfASwQAAMhATADWQG2AWUBaQFlAe4BfQGfAX0B+gGuAb4BrgH9AZ8B/wGfAf8BjAH/AYwB
|
||||
/wFeAb4BXgH9AWgBkQFoAfkBYQFsAWEB6wNVAawDHwEsEAADIQEwA1kBtgFlAmkB7gF9Ap8B+gGuAr4B
|
||||
/QGfA/8BjAP/AV4CvgH9AWgCkQH5AWECbAHrA1UBrAMfASwQAAMhATADWQG2AmUBaQHuAn0BnwH6Aq4B
|
||||
vgH9Ap8C/wKMAv8CXgG+Af0CaAGRAfkCYQFsAesDVQGsAx8BLBQAAwYBBwM2AVgDVQGsA2YB5QOgAfwD
|
||||
kwH7A2UB4gNTAacDMwFRAwYBBxgAAwYBBwM2AVgDVQGsA2YB5QF+AbQBfgH8AW0BngFtAfsDZQHiA1MB
|
||||
pwMzAVEDBgEHGAADBgEHAzYBWANVAawDZgHlAX4CtAH8AW0CngH7A2UB4gNTAacDMwFRAwYBBxgAAwYB
|
||||
BwM2AVgDVQGsA2YB5QJ+AbQB/AJtAZ4B+wNlAeIDUwGnAzMBUQMGAQcMAAFCAU0BPgcAAT4DAAEoAwAB
|
||||
QAMAASADAAEBAQABAQYAAQEWAAP/gQAB4AEHAeABBwHgAQcB4AEHAcABAwHAAQMBwAEDAcABAwGAAQEB
|
||||
gAEBAYABAQGAAQFQAAGAAQEBgAEBAYABAQGAAQEBwAEDAcABAwHAAQMBwAEDAeABBwHgAQcB4AEHAeAB
|
||||
Bws=
|
||||
</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
|
||||
21
qtc-net-client-2/Forms/ConnectionClosed.Designer.cs
generated
21
qtc-net-client-2/Forms/ConnectionClosed.Designer.cs
generated
@ -31,17 +31,18 @@
|
||||
lblHead = new Label();
|
||||
btnReconnect = new Button();
|
||||
btnQuit = new Button();
|
||||
lblReason = new Label();
|
||||
SuspendLayout();
|
||||
//
|
||||
// lblHead
|
||||
//
|
||||
lblHead.AutoSize = true;
|
||||
lblHead.Font = new Font("Segoe UI", 11F, FontStyle.Bold);
|
||||
lblHead.Location = new Point(12, 9);
|
||||
lblHead.Name = "lblHead";
|
||||
lblHead.Size = new Size(444, 20);
|
||||
lblHead.TabIndex = 0;
|
||||
lblHead.Text = "Your Connection To The QtC.NET Server Was Lost. What Now?";
|
||||
lblHead.TextAlign = ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// btnReconnect
|
||||
//
|
||||
@ -65,12 +66,23 @@
|
||||
btnQuit.UseVisualStyleBackColor = true;
|
||||
btnQuit.Click += btnQuit_Click;
|
||||
//
|
||||
// ConnectionClosed
|
||||
// lblReason
|
||||
//
|
||||
lblReason.AutoSize = true;
|
||||
lblReason.Font = new Font("Segoe UI", 5F, FontStyle.Bold);
|
||||
lblReason.Location = new Point(88, 40);
|
||||
lblReason.Name = "lblReason";
|
||||
lblReason.Size = new Size(72, 10);
|
||||
lblReason.TabIndex = 3;
|
||||
lblReason.Text = "Reason: ${REASON}";
|
||||
//
|
||||
// frmConnectionClosed
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||
AutoScaleMode = AutoScaleMode.Font;
|
||||
BackColor = Color.DodgerBlue;
|
||||
ClientSize = new Size(463, 65);
|
||||
Controls.Add(lblReason);
|
||||
Controls.Add(btnQuit);
|
||||
Controls.Add(btnReconnect);
|
||||
Controls.Add(lblHead);
|
||||
@ -80,10 +92,12 @@
|
||||
Margin = new Padding(4, 3, 4, 3);
|
||||
MaximizeBox = false;
|
||||
MinimizeBox = false;
|
||||
Name = "ConnectionClosed";
|
||||
Name = "frmConnectionClosed";
|
||||
StartPosition = FormStartPosition.CenterScreen;
|
||||
Text = "QtC.NET Client - Connection Lost";
|
||||
Load += frmConnectionClosed_Load;
|
||||
ResumeLayout(false);
|
||||
PerformLayout();
|
||||
}
|
||||
|
||||
#endregion
|
||||
@ -91,5 +105,6 @@
|
||||
private Label lblHead;
|
||||
private Button btnReconnect;
|
||||
private Button btnQuit;
|
||||
private Label lblReason;
|
||||
}
|
||||
}
|
||||
@ -12,12 +12,19 @@ namespace qtc_net_client_2.Forms
|
||||
{
|
||||
public partial class ConnectionClosed : Form
|
||||
{
|
||||
public Label StatusLabel { get { return lblHead; } }
|
||||
public ConnectionClosed()
|
||||
public string? Reason { get; set; } = string.Empty;
|
||||
public ConnectionClosed(string? reason = "")
|
||||
{
|
||||
Reason = reason;
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void frmConnectionClosed_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (string.IsNullOrEmpty(Reason)) lblReason.Visible = false;
|
||||
else lblReason.Text = $"Reason: {Reason}";
|
||||
}
|
||||
|
||||
private void btnReconnect_Click(object sender, EventArgs e)
|
||||
{
|
||||
DialogResult = DialogResult.OK;
|
||||
|
||||
47
qtc-net-client-2/Forms/DirectMessage.Designer.cs
generated
47
qtc-net-client-2/Forms/DirectMessage.Designer.cs
generated
@ -29,14 +29,23 @@
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DirectMessage));
|
||||
rtxtChat = new RichTextBox();
|
||||
btnSend = new Button();
|
||||
rtxtChatbox = new RichTextBox();
|
||||
lblUsername = new Label();
|
||||
pbPfp = new PictureBox();
|
||||
fpnlMessages = new FlowLayoutPanel();
|
||||
((System.ComponentModel.ISupportInitialize)pbPfp).BeginInit();
|
||||
SuspendLayout();
|
||||
//
|
||||
// rtxtChat
|
||||
//
|
||||
rtxtChat.HideSelection = false;
|
||||
rtxtChat.Location = new Point(12, 48);
|
||||
rtxtChat.Margin = new Padding(4, 3, 4, 3);
|
||||
rtxtChat.Name = "rtxtChat";
|
||||
rtxtChat.ReadOnly = true;
|
||||
rtxtChat.Size = new Size(593, 325);
|
||||
rtxtChat.TabIndex = 6;
|
||||
rtxtChat.Text = "";
|
||||
//
|
||||
// btnSend
|
||||
//
|
||||
btnSend.FlatAppearance.BorderSize = 0;
|
||||
@ -65,44 +74,21 @@
|
||||
//
|
||||
lblUsername.AutoSize = true;
|
||||
lblUsername.Font = new Font("Segoe UI", 25F, FontStyle.Bold | FontStyle.Italic);
|
||||
lblUsername.Location = new Point(52, 0);
|
||||
lblUsername.Location = new Point(6, 0);
|
||||
lblUsername.Margin = new Padding(4, 0, 4, 0);
|
||||
lblUsername.Name = "lblUsername";
|
||||
lblUsername.Size = new Size(181, 46);
|
||||
lblUsername.TabIndex = 7;
|
||||
lblUsername.Text = "Username";
|
||||
//
|
||||
// pbPfp
|
||||
//
|
||||
pbPfp.Image = Properties.Resources.DefaultPfp;
|
||||
pbPfp.Location = new Point(14, 6);
|
||||
pbPfp.Name = "pbPfp";
|
||||
pbPfp.Size = new Size(40, 37);
|
||||
pbPfp.SizeMode = PictureBoxSizeMode.StretchImage;
|
||||
pbPfp.TabIndex = 9;
|
||||
pbPfp.TabStop = false;
|
||||
//
|
||||
// fpnlMessages
|
||||
//
|
||||
fpnlMessages.AutoScroll = true;
|
||||
fpnlMessages.BackColor = Color.White;
|
||||
fpnlMessages.BorderStyle = BorderStyle.Fixed3D;
|
||||
fpnlMessages.FlowDirection = FlowDirection.TopDown;
|
||||
fpnlMessages.Location = new Point(14, 49);
|
||||
fpnlMessages.Name = "fpnlMessages";
|
||||
fpnlMessages.Size = new Size(591, 324);
|
||||
fpnlMessages.TabIndex = 11;
|
||||
fpnlMessages.WrapContents = false;
|
||||
//
|
||||
// DirectMessage
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||
AutoScaleMode = AutoScaleMode.Font;
|
||||
BackColor = Color.DodgerBlue;
|
||||
ClientSize = new Size(618, 443);
|
||||
Controls.Add(fpnlMessages);
|
||||
Controls.Add(pbPfp);
|
||||
Controls.Add(lblUsername);
|
||||
Controls.Add(rtxtChat);
|
||||
Controls.Add(btnSend);
|
||||
Controls.Add(rtxtChatbox);
|
||||
Font = new Font("Segoe UI", 9F);
|
||||
@ -115,16 +101,15 @@
|
||||
StartPosition = FormStartPosition.CenterScreen;
|
||||
Text = "QtC.NET Client - Direct Message With ${USER}";
|
||||
Load += frmDirectMessage_Load;
|
||||
((System.ComponentModel.ISupportInitialize)pbPfp).EndInit();
|
||||
ResumeLayout(false);
|
||||
PerformLayout();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private RichTextBox rtxtChat;
|
||||
private Button btnSend;
|
||||
private RichTextBox rtxtChatbox;
|
||||
private Label lblUsername;
|
||||
private PictureBox pbPfp;
|
||||
private FlowLayoutPanel fpnlMessages;
|
||||
}
|
||||
}
|
||||
@ -1,5 +1,4 @@
|
||||
using Microsoft.AspNetCore.Mvc.ModelBinding;
|
||||
using qtc_net_client_2.Controls;
|
||||
using qtc_net_client_2.Services;
|
||||
using QtCNETAPI.Dtos.User;
|
||||
using QtCNETAPI.Events;
|
||||
@ -37,23 +36,15 @@ namespace qtc_net_client_2.Forms
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private async void frmDirectMessage_Load(object sender, EventArgs e)
|
||||
private void frmDirectMessage_Load(object sender, EventArgs e)
|
||||
{
|
||||
lblUsername.Text = User.Username;
|
||||
Text = $"QtC.NET Client - Direct Message With {User.Username}";
|
||||
Messages.CollectionChanged += Messages_CollectionChanged;
|
||||
|
||||
var pfpRes = await _apiService.GetUserProfilePic(User.Id);
|
||||
if(pfpRes != null && pfpRes.Success && pfpRes.Data != null)
|
||||
{
|
||||
using var ms = new MemoryStream(pfpRes.Data);
|
||||
using var img = Image.FromStream(ms);
|
||||
pbPfp.Image = new Bitmap(img);
|
||||
}
|
||||
|
||||
if (InitMessage != null)
|
||||
{
|
||||
Messages.Add($"{User.Username}: {InitMessage.Content}");
|
||||
Messages.Add($"[{User.Username}] {InitMessage.Content}\n");
|
||||
AudioService.PlaySoundEffect("sndDirectMsg");
|
||||
}
|
||||
}
|
||||
@ -67,7 +58,7 @@ namespace qtc_net_client_2.Forms
|
||||
if (!string.IsNullOrEmpty(rtxtChatbox.Text))
|
||||
{
|
||||
await _gatewayService.SendDirectMessageAsync(User, new QtCNETAPI.Models.Message { Content = rtxtChatbox.Text, AuthorId = _apiService.CurrentUser.Id });
|
||||
Messages.Add($"{_apiService.CurrentUser.Username}: {rtxtChatbox.Text}");
|
||||
Messages.Add($"[{_apiService.CurrentUser.Username}] {rtxtChatbox.Text}");
|
||||
rtxtChatbox.Clear();
|
||||
AudioService.PlaySoundEffect("sndSendClick");
|
||||
}
|
||||
@ -78,7 +69,7 @@ namespace qtc_net_client_2.Forms
|
||||
if (!string.IsNullOrEmpty(rtxtChatbox.Text))
|
||||
{
|
||||
await _gatewayService.SendDirectMessageAsync(User, new QtCNETAPI.Models.Message { Content = rtxtChatbox.Text, AuthorId = _apiService.CurrentUser.Id });
|
||||
Messages.Add($"{_apiService.CurrentUser.Username}: {rtxtChatbox.Text}");
|
||||
Messages.Add($"[{_apiService.CurrentUser.Username}] {rtxtChatbox.Text}");
|
||||
rtxtChatbox.Clear();
|
||||
AudioService.PlaySoundEffect("sndSendClick");
|
||||
}
|
||||
@ -101,36 +92,14 @@ namespace qtc_net_client_2.Forms
|
||||
Invoke(delegate ()
|
||||
{
|
||||
var msg = e.NewItems.Cast<string>().FirstOrDefault();
|
||||
|
||||
var ctrl = new ChatMessageControlMinimal()
|
||||
{
|
||||
Username = msg!.Split(':')[0],
|
||||
Message = msg!.Split(":")[1].Trim(),
|
||||
};
|
||||
ctrl.Height = ctrl.CalculateHeight(ctrl.Width);
|
||||
|
||||
fpnlMessages.Controls.Add(ctrl);
|
||||
fpnlMessages.VerticalScroll.Value = fpnlMessages.VerticalScroll.Maximum;
|
||||
fpnlMessages.PerformLayout();
|
||||
|
||||
rtxtChat.AppendText(msg);
|
||||
if (!msg!.Contains(_apiService.CurrentUser.Username)) AudioService.PlaySoundEffect("sndMessage");
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
var msg = e.NewItems.Cast<string>().FirstOrDefault();
|
||||
|
||||
var ctrl = new ChatMessageControlMinimal()
|
||||
{
|
||||
Username = msg!.Split(':')[0],
|
||||
Message = msg!.Split(":")[1].Trim(),
|
||||
};
|
||||
ctrl.Height = ctrl.CalculateHeight(ctrl.Width);
|
||||
|
||||
fpnlMessages.Controls.Add(ctrl);
|
||||
fpnlMessages.VerticalScroll.Value = fpnlMessages.VerticalScroll.Maximum;
|
||||
fpnlMessages.PerformLayout();
|
||||
|
||||
rtxtChat.AppendText(msg);
|
||||
if (!msg!.Contains(_apiService.CurrentUser.Username)) AudioService.PlaySoundEffect("sndMessage");
|
||||
}
|
||||
}
|
||||
|
||||
64
qtc-net-client-2/Forms/Login.Designer.cs
generated
64
qtc-net-client-2/Forms/Login.Designer.cs
generated
@ -32,13 +32,11 @@
|
||||
pbLoginBanner = new PictureBox();
|
||||
tbEmail = new TextBox();
|
||||
lblEmail = new Label();
|
||||
lblPassword = new Label();
|
||||
label1 = new Label();
|
||||
tbPassword = new TextBox();
|
||||
btnLogin = new Button();
|
||||
llblRegister = new LinkLabel();
|
||||
cbRememberMe = new CheckBox();
|
||||
llblResendEmail = new LinkLabel();
|
||||
llblForgotPasswor = new LinkLabel();
|
||||
((System.ComponentModel.ISupportInitialize)pbLoginBanner).BeginInit();
|
||||
SuspendLayout();
|
||||
//
|
||||
@ -70,16 +68,16 @@
|
||||
lblEmail.TabIndex = 2;
|
||||
lblEmail.Text = "Email";
|
||||
//
|
||||
// lblPassword
|
||||
// label1
|
||||
//
|
||||
lblPassword.AutoSize = true;
|
||||
lblPassword.Font = new Font("Segoe UI Light", 9F);
|
||||
lblPassword.ForeColor = SystemColors.ControlLight;
|
||||
lblPassword.Location = new Point(11, 138);
|
||||
lblPassword.Name = "lblPassword";
|
||||
lblPassword.Size = new Size(55, 15);
|
||||
lblPassword.TabIndex = 4;
|
||||
lblPassword.Text = "Password";
|
||||
label1.AutoSize = true;
|
||||
label1.Font = new Font("Segoe UI Light", 9F);
|
||||
label1.ForeColor = SystemColors.ControlLight;
|
||||
label1.Location = new Point(11, 138);
|
||||
label1.Name = "label1";
|
||||
label1.Size = new Size(55, 15);
|
||||
label1.TabIndex = 4;
|
||||
label1.Text = "Password";
|
||||
//
|
||||
// tbPassword
|
||||
//
|
||||
@ -119,49 +117,21 @@
|
||||
cbRememberMe.ForeColor = SystemColors.ControlLight;
|
||||
cbRememberMe.Location = new Point(198, 168);
|
||||
cbRememberMe.Name = "cbRememberMe";
|
||||
cbRememberMe.Size = new Size(163, 19);
|
||||
cbRememberMe.Size = new Size(157, 19);
|
||||
cbRememberMe.TabIndex = 7;
|
||||
cbRememberMe.Text = "Remember Me For 30 Days";
|
||||
cbRememberMe.Text = "Remember Me For 7 Days";
|
||||
cbRememberMe.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// llblResendEmail
|
||||
//
|
||||
llblResendEmail.AutoSize = true;
|
||||
llblResendEmail.Font = new Font("Segoe UI Light", 9F);
|
||||
llblResendEmail.LinkColor = SystemColors.ControlLight;
|
||||
llblResendEmail.Location = new Point(369, 164);
|
||||
llblResendEmail.Name = "llblResendEmail";
|
||||
llblResendEmail.Size = new Size(129, 15);
|
||||
llblResendEmail.TabIndex = 8;
|
||||
llblResendEmail.TabStop = true;
|
||||
llblResendEmail.Text = "Resend Verification Email";
|
||||
llblResendEmail.LinkClicked += llblResendEmail_LinkClicked;
|
||||
//
|
||||
// llblForgotPasswor
|
||||
//
|
||||
llblForgotPasswor.AutoSize = true;
|
||||
llblForgotPasswor.Font = new Font("Segoe UI Light", 9F);
|
||||
llblForgotPasswor.LinkColor = SystemColors.ControlLight;
|
||||
llblForgotPasswor.Location = new Point(401, 181);
|
||||
llblForgotPasswor.Name = "llblForgotPasswor";
|
||||
llblForgotPasswor.Size = new Size(98, 15);
|
||||
llblForgotPasswor.TabIndex = 9;
|
||||
llblForgotPasswor.TabStop = true;
|
||||
llblForgotPasswor.Text = "Forgot Password?";
|
||||
llblForgotPasswor.LinkClicked += llblForgotPasswor_LinkClicked;
|
||||
//
|
||||
// Login
|
||||
// frmLogin
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||
AutoScaleMode = AutoScaleMode.Font;
|
||||
BackColor = Color.DodgerBlue;
|
||||
ClientSize = new Size(515, 203);
|
||||
Controls.Add(llblForgotPasswor);
|
||||
Controls.Add(llblResendEmail);
|
||||
Controls.Add(cbRememberMe);
|
||||
Controls.Add(llblRegister);
|
||||
Controls.Add(btnLogin);
|
||||
Controls.Add(lblPassword);
|
||||
Controls.Add(label1);
|
||||
Controls.Add(tbPassword);
|
||||
Controls.Add(lblEmail);
|
||||
Controls.Add(tbEmail);
|
||||
@ -169,7 +139,7 @@
|
||||
FormBorderStyle = FormBorderStyle.FixedDialog;
|
||||
Icon = (Icon)resources.GetObject("$this.Icon");
|
||||
MaximizeBox = false;
|
||||
Name = "Login";
|
||||
Name = "frmLogin";
|
||||
StartPosition = FormStartPosition.CenterParent;
|
||||
Text = "QtC.NET Client - Login";
|
||||
Load += frmLogin_Load;
|
||||
@ -183,12 +153,10 @@
|
||||
private PictureBox pbLoginBanner;
|
||||
private TextBox tbEmail;
|
||||
private Label lblEmail;
|
||||
private Label lblPassword;
|
||||
private Label label1;
|
||||
private TextBox tbPassword;
|
||||
private Button btnLogin;
|
||||
private LinkLabel llblRegister;
|
||||
private CheckBox cbRememberMe;
|
||||
private LinkLabel llblResendEmail;
|
||||
private LinkLabel llblForgotPasswor;
|
||||
}
|
||||
}
|
||||
@ -1,5 +1,4 @@
|
||||
using QtCNETAPI.Services.ApiService;
|
||||
using QtCNETAPI.Services;
|
||||
using QtCNETAPI.Dtos.User;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@ -10,14 +9,12 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using qtc_net_client_2.Services;
|
||||
|
||||
namespace qtc_net_client_2.Forms
|
||||
{
|
||||
public partial class Login : Form
|
||||
{
|
||||
private IApiService _apiService;
|
||||
private CredentialService _credService = new();
|
||||
public Login(IApiService apiService)
|
||||
{
|
||||
_apiService = apiService;
|
||||
@ -27,14 +24,14 @@ namespace qtc_net_client_2.Forms
|
||||
|
||||
private async void frmLogin_Load(object sender, EventArgs e)
|
||||
{
|
||||
string? accessToken = _credService.GetAccessToken();
|
||||
|
||||
if (accessToken != null)
|
||||
if (File.Exists("./session.token"))
|
||||
{
|
||||
ToggleControls(false, false);
|
||||
|
||||
// try logging in with the token in cred storage
|
||||
var result = await _apiService.RefreshLogin(accessToken);
|
||||
// try logging in with the token in the file
|
||||
string token = File.ReadAllText("./session.token");
|
||||
|
||||
var result = await _apiService.RefreshLogin(token);
|
||||
if (result.Success)
|
||||
{
|
||||
DialogResult = DialogResult.OK;
|
||||
@ -58,9 +55,8 @@ namespace qtc_net_client_2.Forms
|
||||
RememberMe = cbRememberMe.Checked
|
||||
});
|
||||
|
||||
if (result.Success && result.Data != null)
|
||||
if (result.Success)
|
||||
{
|
||||
_credService.SaveAccessToken(_apiService.CurrentUser.Username, result.Data);
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
}
|
||||
@ -72,24 +68,6 @@ namespace qtc_net_client_2.Forms
|
||||
}
|
||||
}
|
||||
|
||||
private void llblRegister_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
Register frmRegister = new Register(_apiService);
|
||||
frmRegister.ShowDialog();
|
||||
}
|
||||
|
||||
private void llblResendEmail_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
ResendVerificationEmail resendVerificationEmail = new ResendVerificationEmail(_apiService);
|
||||
resendVerificationEmail.ShowDialog();
|
||||
}
|
||||
|
||||
private void llblForgotPasswor_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
ResetPassword resetPassword = new ResetPassword(_apiService);
|
||||
resetPassword.ShowDialog();
|
||||
}
|
||||
|
||||
private void ToggleControls(bool enable, bool clearText)
|
||||
{
|
||||
tbEmail.Enabled = enable;
|
||||
@ -103,5 +81,11 @@ namespace qtc_net_client_2.Forms
|
||||
tbPassword.Text = string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
private void llblRegister_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
Register frmRegister = new Register(_apiService);
|
||||
frmRegister.ShowDialog();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
220
qtc-net-client-2/Forms/Main.Designer.cs
generated
220
qtc-net-client-2/Forms/Main.Designer.cs
generated
@ -30,16 +30,18 @@
|
||||
{
|
||||
components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Main));
|
||||
ListViewItem listViewItem4 = new ListViewItem("Stock Market", 0);
|
||||
ListViewItem listViewItem5 = new ListViewItem("Guess The Number", 1);
|
||||
ListViewItem listViewItem6 = new ListViewItem("Tic-Tac-Toe (Multiplayer)", "Tic-tac-toe.png");
|
||||
ListViewItem listViewItem1 = new ListViewItem("Stock Market", 0);
|
||||
ListViewItem listViewItem2 = new ListViewItem("Guess The Number", 1);
|
||||
ListViewItem listViewItem3 = new ListViewItem("Tic-Tac-Toe (Multiplayer)", "Tic-tac-toe.png");
|
||||
tbcMain = new TabControl();
|
||||
tbpContacts = new TabPage();
|
||||
flpContacts = new FlowLayoutPanel();
|
||||
lvContacts = new ListView();
|
||||
ctxmRefresh = new ContextMenuStrip(components);
|
||||
refreshToolStripMenuItem = new ToolStripMenuItem();
|
||||
ilProfilePics = new ImageList(components);
|
||||
tbpRooms = new TabPage();
|
||||
flpRooms = new FlowLayoutPanel();
|
||||
btnAddRoom = new Button();
|
||||
lbRooms = new ListBox();
|
||||
tbpUsers = new TabPage();
|
||||
lvUserDirectory = new ListView();
|
||||
ilStatusIcons = new ImageList(components);
|
||||
@ -50,7 +52,6 @@
|
||||
lvStoreItems = new ListView();
|
||||
ilStoreThumbnails = new ImageList(components);
|
||||
ilTabIcons = new ImageList(components);
|
||||
ilProfilePics = new ImageList(components);
|
||||
ctxmChangeStatus = new ContextMenuStrip(components);
|
||||
onlineToolStripMenuItem = new ToolStripMenuItem();
|
||||
awayToolStripMenuItem = new ToolStripMenuItem();
|
||||
@ -69,18 +70,6 @@
|
||||
lblWelcome = new Label();
|
||||
pbUserPfp = new PictureBox();
|
||||
pbDonate = new PictureBox();
|
||||
ctxmAdminUserList = new ContextMenuStrip(components);
|
||||
refreshToolStripMenuItem1 = new ToolStripMenuItem();
|
||||
toolStripSeparator1 = new ToolStripSeparator();
|
||||
copyUserIDToClipboardToolStripMenuItem = new ToolStripMenuItem();
|
||||
deleteUserToolStripMenuItem = new ToolStripMenuItem();
|
||||
adminDirectMessageToolStripMenuItem = new ToolStripMenuItem();
|
||||
ctxmAdminRoomList = new ContextMenuStrip(components);
|
||||
toolStripMenuItem1 = new ToolStripMenuItem();
|
||||
toolStripSeparator2 = new ToolStripSeparator();
|
||||
addRoomToolStripMenuItem = new ToolStripMenuItem();
|
||||
deleteRoomToolStripMenuItem = new ToolStripMenuItem();
|
||||
lblConnectionLost = new Label();
|
||||
tbcMain.SuspendLayout();
|
||||
tbpContacts.SuspendLayout();
|
||||
ctxmRefresh.SuspendLayout();
|
||||
@ -94,8 +83,6 @@
|
||||
pCurrentUser.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pbUserPfp).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)pbDonate).BeginInit();
|
||||
ctxmAdminUserList.SuspendLayout();
|
||||
ctxmAdminRoomList.SuspendLayout();
|
||||
SuspendLayout();
|
||||
//
|
||||
// tbcMain
|
||||
@ -117,7 +104,7 @@
|
||||
//
|
||||
// tbpContacts
|
||||
//
|
||||
tbpContacts.Controls.Add(flpContacts);
|
||||
tbpContacts.Controls.Add(lvContacts);
|
||||
tbpContacts.ImageKey = "ContactsIcon.png";
|
||||
tbpContacts.Location = new Point(4, 24);
|
||||
tbpContacts.Name = "tbpContacts";
|
||||
@ -127,19 +114,21 @@
|
||||
tbpContacts.Text = "Contacts";
|
||||
tbpContacts.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// flpContacts
|
||||
// lvContacts
|
||||
//
|
||||
flpContacts.AutoScroll = true;
|
||||
flpContacts.BackColor = Color.White;
|
||||
flpContacts.BorderStyle = BorderStyle.Fixed3D;
|
||||
flpContacts.ContextMenuStrip = ctxmRefresh;
|
||||
flpContacts.Dock = DockStyle.Fill;
|
||||
flpContacts.FlowDirection = FlowDirection.TopDown;
|
||||
flpContacts.Location = new Point(3, 3);
|
||||
flpContacts.Name = "flpContacts";
|
||||
flpContacts.Size = new Size(338, 465);
|
||||
flpContacts.TabIndex = 0;
|
||||
flpContacts.WrapContents = false;
|
||||
lvContacts.Alignment = ListViewAlignment.Left;
|
||||
lvContacts.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
|
||||
lvContacts.ContextMenuStrip = ctxmRefresh;
|
||||
lvContacts.LargeImageList = ilProfilePics;
|
||||
lvContacts.Location = new Point(0, 0);
|
||||
lvContacts.MultiSelect = false;
|
||||
lvContacts.Name = "lvContacts";
|
||||
lvContacts.Size = new Size(344, 478);
|
||||
lvContacts.SmallImageList = ilProfilePics;
|
||||
lvContacts.TabIndex = 1;
|
||||
lvContacts.UseCompatibleStateImageBehavior = false;
|
||||
lvContacts.View = View.SmallIcon;
|
||||
lvContacts.DoubleClick += lvContacts_DoubleClick;
|
||||
//
|
||||
// ctxmRefresh
|
||||
//
|
||||
@ -154,9 +143,17 @@
|
||||
refreshToolStripMenuItem.Text = "Refresh";
|
||||
refreshToolStripMenuItem.Click += refreshToolStripMenuItem_Click;
|
||||
//
|
||||
// ilProfilePics
|
||||
//
|
||||
ilProfilePics.ColorDepth = ColorDepth.Depth32Bit;
|
||||
ilProfilePics.ImageStream = (ImageListStreamer)resources.GetObject("ilProfilePics.ImageStream");
|
||||
ilProfilePics.TransparentColor = Color.Transparent;
|
||||
ilProfilePics.Images.SetKeyName(0, "DEFAULT");
|
||||
//
|
||||
// tbpRooms
|
||||
//
|
||||
tbpRooms.Controls.Add(flpRooms);
|
||||
tbpRooms.Controls.Add(btnAddRoom);
|
||||
tbpRooms.Controls.Add(lbRooms);
|
||||
tbpRooms.ImageKey = "RoomsChatIcon.png";
|
||||
tbpRooms.Location = new Point(4, 24);
|
||||
tbpRooms.Name = "tbpRooms";
|
||||
@ -166,19 +163,28 @@
|
||||
tbpRooms.Text = "Rooms";
|
||||
tbpRooms.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// flpRooms
|
||||
// btnAddRoom
|
||||
//
|
||||
flpRooms.AutoScroll = true;
|
||||
flpRooms.BackColor = Color.White;
|
||||
flpRooms.BorderStyle = BorderStyle.Fixed3D;
|
||||
flpRooms.ContextMenuStrip = ctxmRefresh;
|
||||
flpRooms.Dock = DockStyle.Fill;
|
||||
flpRooms.FlowDirection = FlowDirection.TopDown;
|
||||
flpRooms.Location = new Point(3, 3);
|
||||
flpRooms.Name = "flpRooms";
|
||||
flpRooms.Size = new Size(338, 465);
|
||||
flpRooms.TabIndex = 1;
|
||||
flpRooms.WrapContents = false;
|
||||
btnAddRoom.FlatAppearance.BorderSize = 0;
|
||||
btnAddRoom.FlatStyle = FlatStyle.Flat;
|
||||
btnAddRoom.Location = new Point(342, 485);
|
||||
btnAddRoom.Name = "btnAddRoom";
|
||||
btnAddRoom.Size = new Size(20, 22);
|
||||
btnAddRoom.TabIndex = 7;
|
||||
btnAddRoom.UseVisualStyleBackColor = true;
|
||||
btnAddRoom.Click += btnAddRoom_Click;
|
||||
//
|
||||
// lbRooms
|
||||
//
|
||||
lbRooms.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
|
||||
lbRooms.ContextMenuStrip = ctxmRefresh;
|
||||
lbRooms.FormattingEnabled = true;
|
||||
lbRooms.ItemHeight = 15;
|
||||
lbRooms.Location = new Point(0, 0);
|
||||
lbRooms.Name = "lbRooms";
|
||||
lbRooms.Size = new Size(344, 484);
|
||||
lbRooms.TabIndex = 0;
|
||||
lbRooms.DoubleClick += lbRooms_DoubleClick;
|
||||
//
|
||||
// tbpUsers
|
||||
//
|
||||
@ -231,10 +237,10 @@
|
||||
// lvGames
|
||||
//
|
||||
lvGames.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
|
||||
listViewItem4.Tag = "StockMarketGame";
|
||||
listViewItem5.Tag = "GuessTheNumberGame";
|
||||
listViewItem6.Tag = "TicTacToeGame";
|
||||
lvGames.Items.AddRange(new ListViewItem[] { listViewItem4, listViewItem5, listViewItem6 });
|
||||
listViewItem1.Tag = "StockMarketGame";
|
||||
listViewItem2.Tag = "GuessTheNumberGame";
|
||||
listViewItem3.Tag = "TicTacToeGame";
|
||||
lvGames.Items.AddRange(new ListViewItem[] { listViewItem1, listViewItem2, listViewItem3 });
|
||||
lvGames.LargeImageList = ilGames;
|
||||
lvGames.Location = new Point(0, 0);
|
||||
lvGames.MultiSelect = false;
|
||||
@ -270,7 +276,6 @@
|
||||
//
|
||||
lvStoreItems.LargeImageList = ilStoreThumbnails;
|
||||
lvStoreItems.Location = new Point(0, 0);
|
||||
lvStoreItems.MultiSelect = false;
|
||||
lvStoreItems.Name = "lvStoreItems";
|
||||
lvStoreItems.Size = new Size(344, 484);
|
||||
lvStoreItems.SmallImageList = ilStoreThumbnails;
|
||||
@ -294,13 +299,6 @@
|
||||
ilTabIcons.Images.SetKeyName(2, "RoomsChatIcon.png");
|
||||
ilTabIcons.Images.SetKeyName(3, "CurrencyIcon.png");
|
||||
//
|
||||
// ilProfilePics
|
||||
//
|
||||
ilProfilePics.ColorDepth = ColorDepth.Depth32Bit;
|
||||
ilProfilePics.ImageStream = (ImageListStreamer)resources.GetObject("ilProfilePics.ImageStream");
|
||||
ilProfilePics.TransparentColor = Color.Transparent;
|
||||
ilProfilePics.Images.SetKeyName(0, "DEFAULT");
|
||||
//
|
||||
// ctxmChangeStatus
|
||||
//
|
||||
ctxmChangeStatus.Items.AddRange(new ToolStripItem[] { onlineToolStripMenuItem, awayToolStripMenuItem, doNotDisturbToolStripMenuItem, invisibleToolStripMenuItem });
|
||||
@ -470,6 +468,7 @@
|
||||
//
|
||||
// pbUserPfp
|
||||
//
|
||||
pbUserPfp.BorderStyle = BorderStyle.FixedSingle;
|
||||
pbUserPfp.ContextMenuStrip = ctxmChangeStatus;
|
||||
pbUserPfp.Cursor = Cursors.Hand;
|
||||
pbUserPfp.Image = Properties.Resources.DefaultPfp;
|
||||
@ -494,89 +493,6 @@
|
||||
pbDonate.TabStop = false;
|
||||
pbDonate.Click += pbDonate_Click;
|
||||
//
|
||||
// ctxmAdminUserList
|
||||
//
|
||||
ctxmAdminUserList.Items.AddRange(new ToolStripItem[] { refreshToolStripMenuItem1, toolStripSeparator1, copyUserIDToClipboardToolStripMenuItem, deleteUserToolStripMenuItem, adminDirectMessageToolStripMenuItem });
|
||||
ctxmAdminUserList.Name = "contextMenuStrip1";
|
||||
ctxmAdminUserList.Size = new Size(214, 98);
|
||||
ctxmAdminUserList.Opening += ctxmAdminUserList_Opening;
|
||||
//
|
||||
// refreshToolStripMenuItem1
|
||||
//
|
||||
refreshToolStripMenuItem1.Name = "refreshToolStripMenuItem1";
|
||||
refreshToolStripMenuItem1.Size = new Size(213, 22);
|
||||
refreshToolStripMenuItem1.Text = "Refresh";
|
||||
refreshToolStripMenuItem1.Click += refreshToolStripMenuItem_Click;
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
toolStripSeparator1.Size = new Size(210, 6);
|
||||
//
|
||||
// copyUserIDToClipboardToolStripMenuItem
|
||||
//
|
||||
copyUserIDToClipboardToolStripMenuItem.Name = "copyUserIDToClipboardToolStripMenuItem";
|
||||
copyUserIDToClipboardToolStripMenuItem.Size = new Size(213, 22);
|
||||
copyUserIDToClipboardToolStripMenuItem.Text = "Copy User ID To Clipboard";
|
||||
copyUserIDToClipboardToolStripMenuItem.Click += copyUserIDToClipboardToolStripMenuItem_Click;
|
||||
//
|
||||
// deleteUserToolStripMenuItem
|
||||
//
|
||||
deleteUserToolStripMenuItem.Name = "deleteUserToolStripMenuItem";
|
||||
deleteUserToolStripMenuItem.Size = new Size(213, 22);
|
||||
deleteUserToolStripMenuItem.Text = "Delete User";
|
||||
deleteUserToolStripMenuItem.Click += deleteUserToolStripMenuItem_Click;
|
||||
//
|
||||
// adminDirectMessageToolStripMenuItem
|
||||
//
|
||||
adminDirectMessageToolStripMenuItem.Name = "adminDirectMessageToolStripMenuItem";
|
||||
adminDirectMessageToolStripMenuItem.Size = new Size(213, 22);
|
||||
adminDirectMessageToolStripMenuItem.Text = "Admin Direct Message";
|
||||
adminDirectMessageToolStripMenuItem.Click += adminDirectMessageToolStripMenuItem_Click;
|
||||
//
|
||||
// ctxmAdminRoomList
|
||||
//
|
||||
ctxmAdminRoomList.Items.AddRange(new ToolStripItem[] { toolStripMenuItem1, toolStripSeparator2, addRoomToolStripMenuItem, deleteRoomToolStripMenuItem });
|
||||
ctxmAdminRoomList.Name = "contextMenuStrip1";
|
||||
ctxmAdminRoomList.Size = new Size(143, 76);
|
||||
//
|
||||
// toolStripMenuItem1
|
||||
//
|
||||
toolStripMenuItem1.Name = "toolStripMenuItem1";
|
||||
toolStripMenuItem1.Size = new Size(142, 22);
|
||||
toolStripMenuItem1.Text = "Refresh";
|
||||
toolStripMenuItem1.Click += refreshToolStripMenuItem_Click;
|
||||
//
|
||||
// toolStripSeparator2
|
||||
//
|
||||
toolStripSeparator2.Name = "toolStripSeparator2";
|
||||
toolStripSeparator2.Size = new Size(139, 6);
|
||||
//
|
||||
// addRoomToolStripMenuItem
|
||||
//
|
||||
addRoomToolStripMenuItem.Name = "addRoomToolStripMenuItem";
|
||||
addRoomToolStripMenuItem.Size = new Size(142, 22);
|
||||
addRoomToolStripMenuItem.Text = "Add Room";
|
||||
addRoomToolStripMenuItem.Click += addRoomToolStripMenuItem_Click;
|
||||
//
|
||||
// deleteRoomToolStripMenuItem
|
||||
//
|
||||
deleteRoomToolStripMenuItem.Name = "deleteRoomToolStripMenuItem";
|
||||
deleteRoomToolStripMenuItem.Size = new Size(142, 22);
|
||||
deleteRoomToolStripMenuItem.Text = "Delete Room";
|
||||
//
|
||||
// lblConnectionLost
|
||||
//
|
||||
lblConnectionLost.AutoSize = true;
|
||||
lblConnectionLost.Font = new Font("Segoe UI", 6F, FontStyle.Bold);
|
||||
lblConnectionLost.ForeColor = Color.Red;
|
||||
lblConnectionLost.Location = new Point(12, 67);
|
||||
lblConnectionLost.Name = "lblConnectionLost";
|
||||
lblConnectionLost.Size = new Size(175, 11);
|
||||
lblConnectionLost.TabIndex = 15;
|
||||
lblConnectionLost.Text = "Server Connection Lost. Trying To Reconnect...";
|
||||
lblConnectionLost.Visible = false;
|
||||
//
|
||||
// Main
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||
@ -588,7 +504,6 @@
|
||||
Controls.Add(pCurrencyArea);
|
||||
Controls.Add(lblRequestNotif);
|
||||
Controls.Add(tbcMain);
|
||||
Controls.Add(lblConnectionLost);
|
||||
FormBorderStyle = FormBorderStyle.FixedDialog;
|
||||
Icon = (Icon)resources.GetObject("$this.Icon");
|
||||
MaximizeBox = false;
|
||||
@ -613,8 +528,6 @@
|
||||
pCurrentUser.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pbUserPfp).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)pbDonate).EndInit();
|
||||
ctxmAdminUserList.ResumeLayout(false);
|
||||
ctxmAdminRoomList.ResumeLayout(false);
|
||||
ResumeLayout(false);
|
||||
PerformLayout();
|
||||
}
|
||||
@ -624,7 +537,9 @@
|
||||
private TabControl tbcMain;
|
||||
private TabPage tbpContacts;
|
||||
private TabPage tbpRooms;
|
||||
private ListBox lbRooms;
|
||||
private Label lblRequestNotif;
|
||||
private ListView lvContacts;
|
||||
private System.Windows.Forms.ImageList ilProfilePics;
|
||||
private NotifyIcon niMain;
|
||||
private ImageList ilTabIcons;
|
||||
@ -633,6 +548,7 @@
|
||||
private ToolStripMenuItem awayToolStripMenuItem;
|
||||
private ToolStripMenuItem doNotDisturbToolStripMenuItem;
|
||||
private ToolStripMenuItem invisibleToolStripMenuItem;
|
||||
private Button btnAddRoom;
|
||||
private LinkLabel llblClaimSpin;
|
||||
private Panel pCurrencyArea;
|
||||
private Panel pCurrentUser;
|
||||
@ -650,24 +566,10 @@
|
||||
private ToolStripMenuItem refreshToolStripMenuItem;
|
||||
private ImageList ilStatusIcons;
|
||||
private TabPage tbpUsers;
|
||||
private ListView lvUserDirectory;
|
||||
private PictureBox pbDonate;
|
||||
private TabPage tbpStore;
|
||||
private ListView lvStoreItems;
|
||||
private ImageList ilStoreThumbnails;
|
||||
private ContextMenuStrip ctxmAdminUserList;
|
||||
private ToolStripMenuItem refreshToolStripMenuItem1;
|
||||
private ToolStripSeparator toolStripSeparator1;
|
||||
private ToolStripMenuItem copyUserIDToClipboardToolStripMenuItem;
|
||||
private ToolStripMenuItem deleteUserToolStripMenuItem;
|
||||
private ToolStripMenuItem adminDirectMessageToolStripMenuItem;
|
||||
private ContextMenuStrip ctxmAdminRoomList;
|
||||
private ToolStripMenuItem toolStripMenuItem1;
|
||||
private ToolStripSeparator toolStripSeparator2;
|
||||
private ToolStripMenuItem addRoomToolStripMenuItem;
|
||||
private ToolStripMenuItem deleteRoomToolStripMenuItem;
|
||||
private Label lblConnectionLost;
|
||||
private FlowLayoutPanel flpContacts;
|
||||
private ListView lvUserDirectory;
|
||||
private FlowLayoutPanel flpRooms;
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -120,362 +120,6 @@
|
||||
<metadata name="ctxmRefresh.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>356, 21</value>
|
||||
</metadata>
|
||||
<metadata name="ilTabIcons.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>20, 44</value>
|
||||
</metadata>
|
||||
<data name="ilTabIcons.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
|
||||
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
|
||||
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAshIAAAJNU0Z0AUkBTAIBAQQB
|
||||
AAGoAQMBqAEDARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAASADAAEBAQABIAYAASD/
|
||||
AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/ACIAA2cB7wJnAVkB7wFnAV0BWQHvAWcBWwFZAe8B
|
||||
ZwFbAVkB7wFnAlkB7wFnAWQBWQHvA2cB7wNnAe8DZwHvA2cB7wNnAe8DZwHvA2cB7wNnAe8DZwHvAwcB
|
||||
CQMqAT8DRQF8A1kBuwNjAd8DaAH0A4AB/gOBAf8DgQH/A4EB/wOAAf4DaAH0A2MB3wNaAboDRAF6AycB
|
||||
OjgAAzMBUQNuAfUIAAM3AVoDWAG4A2MB3wJjAV0B3wFiAl0B3wNdAd8DXQHfAWECXQHfA2MB3wNjAd8D
|
||||
VQGsAzABSwgAA/gB/wG5AZUBPAH/AYMBfQFuAf8BhAF9AWwB/wGqAYQBJwH/AawBewEAAf8BzAG8AZQB
|
||||
/wN+Af8DfgH/A34B/wN+Af8DfgH/A34B/wN+Af8DfgH/A44B/wNDAXUDXQHMA3wB+AOBAf8DgQH/A4EB
|
||||
/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A3wB+ANUAag4AAMSARgDPwFtBAADOwFiA10B
|
||||
xQNoAfQBnwFlATEB/wGXAVMBFwH/AZYBSwEJAf8BkwFGAQEB/wGMAUMBAwH/AX0BQAELAf8BawFAARoB
|
||||
/wFuAVABNgH/A2gB8ANaAbcDNAFUBAAE/wGXAYsBbQH/AoEBgAH/AYIBgQGAAf8BmAGIAWAB/wHKAZAB
|
||||
AAH/Ad0BzAGfAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOTAf8DagHtA30B+gOBAf8D
|
||||
gQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DVQGvNAADXwHTAz0B
|
||||
ZwQAAzUBVQNdAccCbgFaAfUBuAFlARsB/wG5AVgBAgH/AckBXwEAAf8B2AFlAQAB/wHcAWcBAAH/AdYB
|
||||
ZAEAAf8BwwFcAQAB/wGiAUwBAAH/AXwBOwEDAf8BbgFGASMB/wNoAfADWgG3AzABSgT/AYYBhAF9Af8D
|
||||
gQH/A4EB/wGHAYMBegH/Ac8BlAEAAf8B3gHMAZ8B/wPgAf8D4AH/A+AB/wPgAf8D4AH/A+AB/wPgAf8D
|
||||
4AH/A7wB/wNjAd8DbgH1A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8D
|
||||
gQH/A4EB/wNVAa80AANaAcIDNAFTBAADXAHEAnwBXAH4AdQBcQEYAf8B1wFlAQAB/wHlAWwBAAH/AfIB
|
||||
cgEAAf8B+gF1AQAB/wH8AXYBAAH/AfoBdgEAAf8B8wFyAQAB/wHiAWsBAAH/Ab0BWQEAAf8BhwFAAQAB
|
||||
/wFxAUgBIwH/A2gB8ANWAasE/wGLAYYBegH/A4EB/wOBAf8BjgGGAXEB/wHPAZQBAAH/Ad4BzAGfIf8D
|
||||
ygH/AzYBWANbAcADbgH1A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8D
|
||||
aAH0A1IBpBAAAw0BEQM/AWwDUwGnAVwCWQG+AVgCVgGzAUgCRwGDAyEBMAQAA28B8wM6AWAIAAH+Ad0B
|
||||
wQH/Ae0BgAEgAf8B7QFxAQIB/wHzAXMBAAH/AfoBdgEAAf8B/gF4AQAC/wF7AQgC/wGIAScC/wGiAVMB
|
||||
/wH+AYEBFwH/AfwBeAEEAf8B7AFvAQAB/wHBAVsBAAH/AYYBQQEDAf8BeAFWATYB/wNjAd8E/wGsAZYB
|
||||
YAH/AYMBggF/Af8BhQGCAX0B/wGzAZMBRAH/Ac8BlAEAAf8B3gHMAZ8B/wOwAf8DsAH/A7AB/wOwAf8D
|
||||
sAH/A7AB/wOwAf8DsAH/A6gB/wMCAQMDGgEjAzgBXANUAagDYgHXA3AB8QOAAf4DgQH/A4EB/wOBAf8D
|
||||
gQH9A2gB8ANhAdQDUwGlAzYBWQMYASAIAAMaASQDUgGgAmMBSAH2AaIBcwEAAf8BrgF8AQAB/wGwAX0B
|
||||
AAH/AagBeAEAAf8BlQFqAQAB/wKAAXUB/gFcAlkBxgNXAbUDFgEeCAAB/wGyAW8B/wH9AYABEQH/AfwB
|
||||
dwEBAf8B/QF3AQAC/wF4AQAC/wF/AQ8C/wGSATsC/wGzAYMC/wHqAeAC/wGQAT0C/wF7AQoB/wH8AXcB
|
||||
AAH/AeUBbAEAAf8BsQFUAQAB/wGEAUsBGgH/A2MB3wT/AdkBqgE3Af8BvgGYATgB/wHAAZgBNgH/AdwB
|
||||
ogEUAf8BzwGUAQAB/wHeAcwBnwH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DkwH/RAAD
|
||||
IAEtAmMBWgHpAb8BiAEAAf8BzQGVAQoB/wGwAYgBJwH/AXMBZAE/Af8BTQFLAUcB/wFOAUsBQgH/AWYB
|
||||
VwExAf8BmgF0ARcB/wGkAXYBAwH/AXABTwEAAf8DQwF2BAEEAAH/AZoBQgL/AYMBFQH/Af4BegEEAv8B
|
||||
eAEAAv8BeAEAAv8BlQE/Av8BygGuAv8B2gHGAv8B7QHlAv8BlgFJAv8BfAENAf8B/gF4AQAB/wH0AXMB
|
||||
AAH/AdABYgEAAf8BmgFOAQoB/wFjAl0B3wT/AeEBrgExAf8BvQGXATsB/wHAAZgBNQH/AeMBpQEKAf8B
|
||||
zwGUAQAB/wHeAcwBnwH/A8AB/wPAAf8DwAH/A8AB/wPAAf8DwAH/A8AB/wPAAf8DrwH/CAADAgEDAwgB
|
||||
CgMhAS8DMQFOAz0BaANDAXYDRAF6A0MBdQM9AWcDMQFNAyABLgMHAQkEAggAAmMBWgHpAdkBmgEAAf8B
|
||||
2gGjARwB/wKOAYwB/wOKAf8DlwH/A5sB/wORAf8DdAH/A0gB/wFDAUIBPwH/AbUBgwEHAf8BegFXAQAB
|
||||
/wM2AVgEAAH/AZUBNwL/AYkBHwL/AX0BCAL/AXgBAAL/AXgBAAL/AagBXAL/AeABzQL/AaEBZgL/AdgB
|
||||
xQL/AbkBlAL/AYcBIwL/AXgBAAH/AfsBdgEAAf8B4gFqAQAB/wGvAVQBAwH/AWMCXQHfBP8BuwGdAVMB
|
||||
/wGIAYQBeQH/AYwBhQF0Af8BxAGZATAB/wHPAZQBAAH/Ad4BzAGfIf8DygH/BAADEwEaAzkBXQNZAbwD
|
||||
ZAHbA2oB7QNjAfYDXwH7A4EB/QNfAfsDYwH2A2UB7ANjAdoDWgG6AzgBXAMTARoDQwF2AekBpwECAf8B
|
||||
6QGrARIB/wHQAcoBuwH/A6wB/wNdAf8DTAH/A0sB/wNEAf8DDwH/A7MB/wNmAf8BVAFMAToB/wGuAX0B
|
||||
BAH/A10BzAQAAf8BoAFJAv8BkgExAv8BgQERAv8BeQEDAv8BeAEAAv8BqAFcAv8B4AHNAv8BoQFmAv8B
|
||||
2AHFAv8BwAGfAv8BiQEnAv8BeAEAAf8B/gF4AQAB/wHsAW8BAAH/Ab8BWgECAf8BYwJdAd8E/wGUAYoB
|
||||
cwH/A4EB/wOBAf8BmgGKAWMB/wHPAZQBAAH/Ad4BzAGfAf8D0AH/A9AB/wPQAf8D0AH/A9AB/wPQAf8D
|
||||
0AH/A9AB/wO1Af8DGgEkA1YBrgNoAfQDgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8D
|
||||
gQH/A4EB/wNrAfIDUgGhAmoBYQHmAe0BrQEQAf8B9AHQAXYB/wP6Af8D+gH/A30B/wN/Af8DgAH/A4AB
|
||||
/wN+Af8DhAH/A7sB/wNqAf8BqAGAARwB/wJjAUgB9gQAAf8BswFvAv8BngFIAv8BiAEeAv8BfAEHAv8B
|
||||
eAEAAv8BmAFDAv8BzgG0Av8B1wHAAv8B6gHgAv8BnQFXAv8BfgERAv8BeAEAAv8BeAEAAf8B8AFxAQAB
|
||||
/wHLAWQBCQH/AWMBYQFdAd8E/wGGAYMBfgH/A4EB/wOBAf8BhgGDAXsB/wHPAZQBAAH/Ad4BzAGfAf8D
|
||||
gQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOTAf8DVwGyA2UB5wOBAf8DgQH/A4EB/wOBAf8D
|
||||
gQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DVQGvA2IB7gHvAbQBIQH/AfcB3AGXCf8D
|
||||
kQH/A4gB/wOHAf8DhwH/A4EB/wNXAf8D5gH/A6MB/wG2AZEBNgH/AmoBQQH5BAAB/wHMAZ8C/wGsAWMC
|
||||
/wGTATMC/wGBAREC/wF5AQIC/wGCARYC/wGaAUsC/wGuAXgC/wGlAVcC/wGBARcC/wF5AQQC/wF4AQAC
|
||||
/wF4AQAB/wHwAXEBAAH/AdUBcQEXAf8CYwFdAd8E/wGLAYYBeQH/A4EB/wOBAf8BjgGGAXEB/wHPAZQB
|
||||
AAH/Ad4BzAGfAf8DoQH/A6EB/wOhAf8DoQH/A6EB/wOhAf8DoQH/A6EB/wOhAf8DbwHzA18B+wOBAf8D
|
||||
gQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DVQGvA0sBjQHwAb4B
|
||||
PwH/AfQBzQFsIf8D+wH/A9AB/wHXAacBMQH/AmEBXQHRBAAB/wHpAdUC/wG8AYEC/wGkAVQC/wGOASoC
|
||||
/wF/AQ0C/wF5AQIC/wF7AQkC/wGCAR0C/wF4AQAC/wF4AQAC/wF4AQEC/wF6AQQC/wF6AQMB/wHzAXQB
|
||||
AwH/AeIBhAEyAf8DYwHfBP8BpwGUAWcB/wGDAYIBfwH/AYUBgwF+Af8BsAGUAU4B/wHTAZcBAgH/AeAB
|
||||
zgGfAf8D5wH/A+cB/wPnAf8D5wH/A+cB/wPnAf8D5wH/A+cB/wPAAf8DZAHbA2gB9AOBAf8DgQH/A4EB
|
||||
/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DVQGvAwcBCQNiAe4B8QG8ATsB
|
||||
/wH6AeoBwgH/A9wB/wN3Af8DaAH/A2gB/wNoAf8DMgn/AfIB3QGpAf8B6gGpAQgB/wM+AWoEAANeAdID
|
||||
agH5Af8BuwF9Av8BowFSAv8BkAEsAv8BggETAv8BfQEIAv8BegEEAv8BeQECAv8BegEEAv8BfQEJAv8B
|
||||
gAEPAv8BfwENAf8B+AGGASAB/wNoAfQDWAG4BP8B1wGxAVIB/wGaAY8BdAH/AaABkgFtAf8B4AGvATcB
|
||||
/wHnAakBEAH/AesB1QGgAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOTAf8DPAFkA18B
|
||||
yQN9AfoDgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wN9AfoDVQGqBAAD
|
||||
MwFRA2gB8AHzAcYBWAH/AfoB5wG4Fv8B/gH7Af8B+QHiAaoB/wHvAbgBLQH/A04BlgQCBAADPAFmA2MB
|
||||
1QN8AfgB/wG+AYUC/wGqAV8C/wGZAT4C/wGNAScC/wGGARoC/wGDARUC/wGFARkC/wGKASIC/wGNASgC
|
||||
/wGTATMB/wJuAWgB9QNdAcUDNgFZBP8B9AHNAWwB/wH0AcsBZgH/AfQBywFlAf8B9AHLAWUB/wHxAcEB
|
||||
SQH/AfkB4wGsAf8DiQH/A4kB/wOJAf8DiQH/A4kB/wOJAf8DiQH/A4kB/wOaAf8DBgEIAzEBTANQAZsD
|
||||
ZQHsA30B+gOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DfQH6A2oB7QNQAZsDLwFJCAADIgExA18B
|
||||
yQJ9AWcB+gHzAcoBZQH/AfkB4QGmAf8B+wHtAcwB/wH7AewByAH/AfgB3QGbAf8DgAH+AmUBXgHiAz0B
|
||||
aAQBDAADQgFyA2MB1QNqAfkB/wHJAZkC/wG8AX8C/wGuAWYC/wGkAVMC/wGfAUoC/wGfAUsC/wGjAVEC
|
||||
/wGnAVgB/wN8AfgDXQHHAzsBYgQAQP8IAAMFAQYDEgEXAzoBYANRAZ8DXwHTA2cB7wNjAfYDYgHuA14B
|
||||
0gNRAZ4DOQFfAxEBFgMFAQYUAAMPARMDRwGCA2QB2wJ+AW8B/ANnAeoDVAGoAygBOxwAAzwBZQNeAdIB
|
||||
/wHvAeAC/wHcAbwC/wHNAZ8C/wHBAYoC/wG7AX8C/wG/AYYC/wHNAaEC/wHpAdYB/wNcAcQDNQFVCAAB
|
||||
QgFNAT4HAAE+AwABKAMAAUADAAEgAwABAQEAAQEGAAEBFgAD/4UAAf8B/AHAAQMEAAH/AfwBgAEBBAAB
|
||||
/wH5BgAB/wH5BgAB8AETBgABwAEDBAAC/wGAAQEEAAHAAQEBgAEBBAABgAIAAQEHAAEBBwABAQcAAQEH
|
||||
AAEBBgABgAEBBgABwAEDAYABAQIAAcABAQHwAR8BwAEDCw==
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="ilStatusIcons.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>13, 101</value>
|
||||
</metadata>
|
||||
<data name="ilStatusIcons.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
|
||||
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
|
||||
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAihMAAAJNU0Z0AUkBTAIBAQQB
|
||||
AAHoAQEB6AEBARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAASADAAEBAQABIAYAASD/
|
||||
AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AC4AAwYBBwM0AVQDUQGiA14B0gNaAekDYAHoA10B
|
||||
0QNQAZ8DMQFNAwUBBhgAAwYBBwM0AVQDUQGiA14B0gNaAekDYAHoA10B0QNQAZ8DMQFNAwUBBhgAAwYB
|
||||
BwM0AVQDUQGiA14B0gNaAekDYAHoA10B0QNQAZ8DMQFNAwUBBhgAAwYBBwM0AVQDUQGiA14B0gNaAekD
|
||||
YAHoA10B0QNQAZ8DMQFNAwUBBhQAAyABLQNUAasDWwHkA1oB9QMkAfsDYQH+A2EB/gMkAfsDUwH0A2IB
|
||||
4QNRAaEDHgEqEAADIAEtA1QBqwNbAeQDWgH1ASEBXgEhAfsBPQF9AT0B/gE9AX0BPQH+ASEBXgEhAfsD
|
||||
UwH0A2IB4QNRAaEDHgEqEAADIAEtA1QBqwNbAeQDWgH1ASECXgH7AT0CfQH+AT0CfQH+ASECXgH7A1MB
|
||||
9ANiAeEDUQGhAx4BKhAAAyABLQNUAasDWwHkA1oB9QIhAV4B+wI9AX0B/gI9AX0B/gIhAV4B+wNTAfQD
|
||||
YgHhA1EBoQMeASoMAAMbASUDWAG9A1oB8gNlAf4DMAH/AzkB/wM8Af8DNgH/AyoB/wMkAf8DQAH9A14B
|
||||
8ANWAbIDGgEjCAADGwElA1gBvQNaAfIBPQGAAT0B/gEAAVcBAAH/AQABZwEAAf8BAAFsAQAB/wEAAWEB
|
||||
AAH/AQABTAEAAf8BAAFAAQAB/wNAAf0DXgHwA1YBsgEZARoBGQEjCAADGwElA1gBvQNaAfIBPQKAAf4B
|
||||
AAJXAf8BAAJnAf8BAAJsAf8BAAJhAf8BAAJMAf8BAAJAAf8DQAH9A14B8ANWAbIBGQIaASMIAAMbASUD
|
||||
WAG9A1oB8gI9AYAB/gIAAVcB/wIAAWcB/wIAAWwB/wIAAWEB/wIAAUwB/wIAAUAB/wNAAf0DXgHwA1YB
|
||||
sgIZARoBIwQAAwMBBANSAaUDYAHzA0kB/wNVAf8DZQH/A3EB/wN1Af8DcQH/A2QB/wNMAf8DMQH/A2EB
|
||||
/gNiAe4DUAGaAwMBBAMDAQQBUgFTAVIBpQFgAW8BYAHzAQABggEAAf8BAAGZAQAB/wEAAbYBAAH/AQAB
|
||||
zAEAAf8BAAHTAQAB/wEAAcsBAAH/AQABswEAAf8BAAGIAQAB/wEAAVcBAAH/AT0BfQE9Af4DYgHuA1AB
|
||||
mgMDAQQDAwEEAVICUwGlAWACbwHzAQACggH/AQACmQH/AQACtgH/AQACzAH/AQAC0wH/AQACywH/AQAC
|
||||
swH/AQACiAH/AQACVwH/AT0CfQH+A2IB7gNQAZoDAwEEAwMBBAJSAVMBpQJgAW8B8wIAAYIB/wIAAZkB
|
||||
/wIAAbYB/wIAAcwB/wIAAdMB/wIAAcsB/wIAAbMB/wIAAYgB/wIAAVcB/wI9AX0B/gNiAe4DUAGaAwMB
|
||||
BAMtAUQDYAHoA4AB/gNuAf8DewH/A4UB/wOKAf8DjAH/A4oB/wOFAf8DdgH/A1cB/wMyAf8DQAH9A14B
|
||||
3QMqAT8DLQFEAWABaQFgAegBPQGAAT0B/gEAAcYBAAH/AQAB3AEAAf8BAAHuAQAB/wEAAfgBAAH/AQAB
|
||||
+wEAAf8BAAH5AQAB/wEAAe8BAAH/AQAB1AEAAf8BAAGcAQAB/wEAAVoBAAH/A0AB/QNeAd0DKgE/Ay0B
|
||||
RAFgAmkB6AE9AoAB/gEAAsYB/wEAAtwB/wEAAu4B/wEAAvgB/wEAAvsB/wEAAvkB/wEAAu8B/wEAAtQB
|
||||
/wEAApwB/wEAAloB/wNAAf0DXgHdAyoBPwMtAUQCYAFpAegCPQGAAf4CAAHGAf8CAAHcAf8CAAHuAf8C
|
||||
AAH4Af8CAAH7Af8CAAH5Af8CAAHvAf8CAAHUAf8CAAGcAf8CAAFaAf8DQAH9A14B3QMqAT8DTgGVA3cB
|
||||
+AN/Af8DhQH/A4oB/wONAf8DjgH/A44B/wOOAf8DjQH/A4kB/wN3Af8DTQH/AyUB/wNaAfIDSgGLA04B
|
||||
lQFcAXwBXAH4AQAB5QEAAf8BAAHvAQAB/wEAAfgBAAH/AQAB/QEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB
|
||||
/wEAAf8BAAH+AQAB/wEAAfYBAAH/AQAB1QEAAf8BAAGLAQAB/wEAAUEBAAH/A1oB8gNKAYsDTgGVAVwC
|
||||
fAH4AQAC5QH/AQAC7wH/AQAC+AH/AQAC/QH/AQAD/wEAA/8BAAP/AQAC/gH/AQAC9gH/AQAC1QH/AQAC
|
||||
iwH/AQACQQH/A1oB8gNKAYsDTgGVAlwBfAH4AgAB5QH/AgAB7wH/AgAB+AH/AgAB/QH/AgAC/wIAAv8C
|
||||
AAL/AgAB/gH/AgAB9gH/AgAB1QH/AgABiwH/AgABQQH/A1oB8gNKAYsDXwHTA34B/AOTAf8DjgH/A40B
|
||||
/wOOAf8DjgH/A44B/wOOAf8DjgH/A40B/wOFAf8DZwH/AzQB/wNBAfkDWgHEAVsBXwFbAdMBKwF+ASsB
|
||||
/AEOAfsBDgH/AQMB/QEDAf8BAAH+AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB
|
||||
/wEAAf8BAAH9AQAB/wEAAe8BAAH/AQABuQEAAf8BAAFdAQAB/wNBAfkDWgHEAVsCXwHTASsCfgH8AQ4C
|
||||
+wH/AQMC/QH/AQAC/gH/AQAD/wEAA/8BAAP/AQAD/wEAA/8BAAL9Af8BAALvAf8BAAK5Af8BAAJdAf8D
|
||||
QQH5A1oBxAJbAV8B0wIrAX4B/AIOAfsB/wIDAf0B/wIAAf4B/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAB
|
||||
/QH/AgAB7wH/AgABuQH/AgABXQH/A0EB+QNaAcQDbgH1A4AB/gOfAf8DkwH/A48B/wOOAf8DjgH/A44B
|
||||
/wOOAf8DjgH/A44B/wOLAf8DdwH/A0gB/wNAAf0DYgHhAVoBbgFaAfUBYQGFAWEB/gEnAf8BJwH/AQsB
|
||||
/wELAf8BAQH/AQEB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB
|
||||
/wEAAfkBAAH/AQAB1gEAAf8BAAGBAQAB/wNAAf0DYgHhAVoCbgH1AWEChQH+AScD/wELA/8BAQP/AQAD
|
||||
/wEAA/8BAAP/AQAD/wEAA/8BAAP/AQAC+QH/AQAC1gH/AQACgQH/A0AB/QNiAeECWgFuAfUCYQGFAf4C
|
||||
JwL/AgsC/wIBAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAH5Af8CAAHWAf8CAAGBAf8DQAH9A2IB
|
||||
4QNjAfYDgAH+A6sB/wOZAf8DkAH/A44B/wOOAf8DjgH/A44B/wOOAf8DjgH/A40B/wN/Af8DVQH/A0AB
|
||||
/QNeAeIBSAFjAUgB9gGAAYUBgAH+AUIB/wFCAf8BGQH/ARkB/wEEAf8BBAH/AQAB/wEAAf8BAAH/AQAB
|
||||
/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/QEAAf8BAAHkAQAB/wEAAZgBAAH/A0AB
|
||||
/QNeAeIBSAJjAfYBgAKFAf4BQgP/ARkD/wEEA/8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAA/8BAAL9Af8B
|
||||
AALkAf8BAAKYAf8DQAH9A14B4gJIAWMB9gKAAYUB/gJCAv8CGQL/AgQC/wIAAv8CAAL/AgAC/wIAAv8C
|
||||
AAL/AgAC/wIAAf0B/wIAAeQB/wIAAZgB/wNAAf0DXgHiA2EB1gN+AfwDuAH/A6MB/wOTAf8DjgH/A44B
|
||||
/wOOAf8DjgH/A44B/wOOAf8DjQH/A4IB/wNcAf8DTQH6A1oBxwFcAWEBXAHWAWQBfgFkAfwBXwH/AV8B
|
||||
/wEvAf8BLwH/AQwB/wEMAf8BAQH/AQEB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB
|
||||
/wEAAf8BAAH+AQAB/wEAAeoBAAH/AQABpQEAAf8DTQH6A1oBxwFcAmEB1gFkAn4B/AFfA/8BLwP/AQwD
|
||||
/wEBA/8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAAv4B/wEAAuoB/wEAAqUB/wNNAfoDWgHHAlwBYQHWAmQB
|
||||
fgH8Al8C/wIvAv8CDAL/AgEC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAB/gH/AgAB6gH/AgABpQH/A00B
|
||||
+gNaAccDUAGaA2oB+QPFAf8DsgH/A5wB/wORAf8DjgH/A44B/wOOAf8DjgH/A48B/wOOAf8DgwH/A2AB
|
||||
/wNaAfIDTAGQA1ABmgNqAfkBfAH/AXwB/wFRAf8BUQH/AR8B/wEfAf8BBwH/AQcB/wEBAf8BAQH/AQAB
|
||||
/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQIB/wECAf8BAgH+AQIB/wEAAesBAAH/AQABrQEAAf8BWgFrAVoB
|
||||
8gNMAZADUAGaA2oB+QF8A/8BUQP/AR8D/wEHA/8BAQP/AQAD/wEAA/8BAAP/AQID/wECAv4B/wEAAusB
|
||||
/wEAAq0B/wFaAmsB8gNMAZADUAGaA2oB+QJ8Av8CUQL/Ah8C/wIHAv8CAQL/AgAC/wIAAv8CAAL/AgIC
|
||||
/wICAf4B/wIAAesB/wIAAa0B/wJaAWsB8gNMAZADLwFJA2wB6wOAAf4DxgH/A64B/wOcAf8DkwH/A5AB
|
||||
/wOPAf8DkAH/A5MB/wOTAf8DhQH/A0AB/QNgAeADLQFFAy8BSQNsAesBgAGFAYAB/gF/Af8BfwH/AUkB
|
||||
/wFJAf8BHwH/AR8B/wEMAf8BDAH/AQUB/wEFAf8BAwH/AQMB/wEFAf8BBQH/AQoB/wEKAf8BCgH+AQoB
|
||||
/wEBAe0BAQH/AUABtgFAAf0BYAFmAWAB4AMtAUUDLwFJA2wB6wGAAoUB/gF/A/8BSQP/AR8D/wEMA/8B
|
||||
BQP/AQMD/wEFA/8BCgP/AQoC/gH/AQEC7QH/AUACtgH9AWACZgHgAy0BRQMvAUkDbAHrAoABhQH+An8C
|
||||
/wJJAv8CHwL/AgwC/wIFAv8CAwL/AgUC/wIKAv8CCgH+Af8CAQHtAf8CQAG2Af0CYAFmAeADLQFFAwMB
|
||||
BANWAa4DbgH1A9kB/wPLAf8DtwH/A6cB/wOdAf8DmgH/A5wB/wOfAf8DmwH/A4kB/wNoAfADUgGjAwMB
|
||||
BAMDAQQDVgGuA24B9QGoAf8BqAH/AYkB/wGJAf8BXAH/AVwB/wE3Af8BNwH/ASIB/wEiAf8BGwH/ARsB
|
||||
/wEfAf8BHwH/ASYB/wEmAf8BHQH/AR0B/wEFAfMBBQH/AV4BaAFeAfADUgGjAwMBBAMDAQQDVgGuA24B
|
||||
9QGoA/8BiQP/AVwD/wE3A/8BIgP/ARsD/wEfA/8BJgP/AR0D/wEFAvMB/wFeAmgB8ANSAaMDAwEEAwMB
|
||||
BANWAa4DbgH1AqgC/wKJAv8CXAL/AjcC/wIiAv8CGwL/Ah8C/wImAv8CHQL/AgUB8wH/Al4BaAHwA1IB
|
||||
owMDAQQEAAMcAScDXQHHA2MB9gOAAf4D1wH/A8wB/wPCAf8DuwH/A7cB/wOxAf8DgAH+A2gB9ANZAbwD
|
||||
GwEmCAADHAEnA10BxwNjAfYBgAGFAYAB/gGlAf8BpQH/AYsB/wGLAf8BdAH/AXQB/wFmAf8BZgH/AVwB
|
||||
/wFcAf8BTgH/AU4B/wFtAYUBbQH+AVMBaAFTAfQBVwFZAVcBvAMbASYIAAMcAScDXQHHA2MB9gGAAoUB
|
||||
/gGlA/8BiwP/AXQD/wFmA/8BXAP/AU4D/wFtAoUB/gFTAmgB9AFXAlkBvAMbASYIAAMcAScDXQHHA2MB
|
||||
9gKAAYUB/gKlAv8CiwL/AnQC/wJmAv8CXAL/Ak4C/wJtAYUB/gJTAWgB9AJXAVkBvAMbASYMAAMhATAD
|
||||
WQG2A2IB7gN9AfoDvgH9A9QB/wPMAf8DvgH9A2oB+QNsAesDVQGsAx8BLBAAAyEBMANZAbYDYgHuA30B
|
||||
+gGuAb4BrgH9AZ8B/wGfAf8BjAH/AYwB/wFAAb4BQAH9AWgBagFoAfkBYQFsAWEB6wNVAawDHwEsEAAD
|
||||
IQEwA1kBtgNiAe4DfQH6Aa4CvgH9AZ8D/wGMA/8BQAK+Af0BaAJqAfkBYQJsAesDVQGsAx8BLBAAAyEB
|
||||
MANZAbYDYgHuA30B+gKuAb4B/QKfAv8CjAL/AkABvgH9AmgBagH5AmEBbAHrA1UBrAMfASwUAAMGAQcD
|
||||
NgFYA1UBrANmAeUDfgH8A18B+wNlAeIDUwGnAzMBUQMGAQcYAAMGAQcDNgFYA1UBrANmAeUDfgH8AV8B
|
||||
cwFfAfsDZQHiA1MBpwMzAVEDBgEHGAADBgEHAzYBWANVAawDZgHlA34B/AFfAnMB+wNlAeIDUwGnAzMB
|
||||
UQMGAQcYAAMGAQcDNgFYA1UBrANmAeUDfgH8Al8BcwH7A2UB4gNTAacDMwFRAwYBBwwAAUIBTQE+BwAB
|
||||
PgMAASgDAAFAAwABIAMAAQEBAAEBBgABARYAA/+BAAHgAQcB4AEHAeABBwHgAQcBwAEDAcABAwHAAQMB
|
||||
wAEDAYABAQGAAQEBgAEBAYABAVAAAYABAQGAAQEBgAEBAYABAQHAAQMBwAEDAcABAwHAAQMB4AEHAeAB
|
||||
BwHgAQcB4AEHCw==
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="ilGames.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>24, 73</value>
|
||||
</metadata>
|
||||
<data name="ilGames.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
|
||||
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
|
||||
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAJCUAAAJNU0Z0AUkBTAIBAQMB
|
||||
AAGoAQIBqAECASABAAEgAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABgAMAASADAAEBAQABIAYAAUB6
|
||||
AANcAecBCAEKAQAB/wMqAUAMAAMqAUADNgFXAz8BbAM/AWwDPwFsAz8BbAM/AWwDPwFsAz8BbAM/AWwD
|
||||
PwFsAz8BbAM/AWwDPwFsAz8BbAM/AWwDPwFsAz8BbAI7AToBYgMzAVEDGAEhVAADUwGiA1sBwCAAA1QB
|
||||
pgNZAbzwAAMhATADRgGAFAABFQEfAQQB/wENARUBAAH/AQgBCgEAAf8BCAEKAQAB/wwAA0QBegNTAacC
|
||||
YQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8C
|
||||
YQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYAFdAc4DWQG7AlABTwGbAyoBQFQAA18B0ANiAe4g
|
||||
AANhAdQDYwHp5AADWgG/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoB
|
||||
AAH/AQgBCgEAAf8DWgG/A1oBvwFDAXQBBwH/AUcBdwEMAf8BJQFHAQAB/wEOARkBAAH/DAACSwFKAYoC
|
||||
WgFYAb0CZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoC
|
||||
ZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCYwFaAekCXwFbAdMDVQGvAy4BSFQAA18B
|
||||
0ANiAe4gAANhAdQDYwHp4AABCAEKAQAB/wEQAR4BAAH/ASEBQQEAAf8BJwFLAQAB/wEmAUoBAAH/ASEB
|
||||
QQEAAf8BEAEeAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEpAU4BAAH/AVoBlgEQAf8BWgGcARAB
|
||||
/wFzAbYBJgH/ARgBLgEAAf8MAANJAYYCWgFYAbcCZQFgAeMCZQFgAeMCZQFgAeMCZQFgAeMCagFhAeYC
|
||||
agFeAe0CaAFTAfQBfgF3ASsB/AH/AXgBAAL/AXgBAAH/Am4BWgH1AmoBYQHmAmUBYAHjAmUBYAHjAmUB
|
||||
YAHjAmUBXgHiAl4BWwHNAlUBUwGqAi4BLQFGVAADXwHQA2IB7iAAA2EB1ANjAencAAEIAQoBAAH/AT0B
|
||||
cQECAf8BTAGGAQcB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8BTAF/AQ8B
|
||||
/wE7AWcBCAH/ASEBNAEIAf8BUwGOAQsB/wFaAZwBEAH/AXIBswEnAf8BUwGBARsB/xAAAysBQQM2AVkC
|
||||
QAE/AW4CQAE/AW4CQAE/AW4CQAE/AW4DRAF7AlEBUAGfAl0BWwHFA2IB7gH/AXgBAAL/AXgBAAH/Al8B
|
||||
XQHJA0UBfAJAAT8BbgJAAT8BbgJAAT8BbgM/AW0DOwFjAzMBUgMZASJUAANfAdADYgHuIAADYQHUA2MB
|
||||
6dgAARUBKQEAAf8BSgGEAQQB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8B
|
||||
UgGMARAB/wFSAYwBEAH/AVIBjAEQAf8BWgGUARAB/wFWAZABDAH/AVoBmgEQAf8BWgGcARAB/wFyAakB
|
||||
MAH/AQgBCgEAAf8BCAEKAQAB/wwAAwwBEAMRARYDFQEcAxUBHAMVARwDFQEcAyEBMAI+AT0BaQJTAVIB
|
||||
pQJmAV8B5QH/AXgBAAL/AXgBAAH/AlUBUwGqAyIBMQMVARwDFQEcAxUBHAMUARsDEwEZAxABFQMHAQlU
|
||||
AANfAdADYgHuIAADYQHUA2MB6dQAARYBJwECAf8BSQGAAQcB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB
|
||||
/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQsB/wFSAYwBEAH/AVIBjAEQAf8BWAGSARAB/wFaAZQBEAH/AVoB
|
||||
mwEQAf8BWgGcARAB/wFcAZ4BEgH/ATsBbQEDAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8IAAMFBAYE
|
||||
CAEKAwgBCgMIAQoDCAEKAxcBHwI5ATgBXQNRAZ4CZQFgAeMB/wF4AQAC/wF4AQAB/wNSAaMDGAEhAwgB
|
||||
CgMIAQoDCAEKAwgBCgMHAQkDBgEHAwIBA1QAA18B0ANiAe4gAANhAdQDYwHp0AADXQHfAUcBgAEDAf8B
|
||||
UgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB/wFSAYwB
|
||||
EAH/AVIBjAEQAf8BWgGUARAB/wFaAZQBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8B
|
||||
WgGYARAB/wEWASoBAAH/AQgBCgEAAf8BCAEKAQAB/xwAAxIBFwM1AVYDUAGaA2IB4QH/AXgBAAL/AXgB
|
||||
AAH/AlEBUAGfAxIBGHAAA18B0ANiAe4gAANhAdQDYwHp0AABLAFQAQAB/wFKAYwBAAH/AVIBjAEIAf8B
|
||||
UgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBDgH/AVUBkgEQAf8BWgGcARAB/wFaAZwB
|
||||
EAH/AVoBlAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBlAEYAf8B
|
||||
WAGSARYB/wEQAR4BAAH/AQgBCgEAAf8cAAMSARcDNQFWA1ABmgNiAeEB/wF4AQAC/wF4AQAB/wJRAVAB
|
||||
nwMSARhwAANfAdADYgHuIAADYQHUA2MB6dQAA0sBjwEzAV4BAAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwB
|
||||
CAH/AVIBjAEQAf8BfwHAATMB/wFfAZ4BFwH/ASABPwEAAf8BCAEKAQAB/wFSAYwBEAH/AVoBnAEQAf8B
|
||||
WgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGVARcB/wFaAZQBGAH/AVoBlAEYAf8BWgGUARgB/wEIAQoB
|
||||
AAH/AQgBCgEAAf8YAAMSARcDNQFWA1ABmgNiAeEB/wF4AQAC/wF4AQAB/wJRAVABnwMSARgUAAQBAwMB
|
||||
BAMGBAcBCQMHAQkDBAEFBAIEARQAAxEBFgMhAS8DIQEvAyEBLwMhAS8DIQEvAyEBLwMhAS8DIQEvAyEB
|
||||
LwNhAdkDcAHxAyEBLwMhAS8DIQEvAyEBLwMhAS8DIQEvAyEBLwMhAS8DYgHcA2oB7QMhAS8DIQEvAyEB
|
||||
LwMhAS8DIQEvAyEBLwMhAS8DIQEvAyEBLwMNARG4AAFCAXsBAAH/AVIBjAEIAf8BewHGASkB/wMzAVAE
|
||||
AAMMARABOQFrAQAB/wFaAZwBEAH/AVoBnAEQAf8BXQGXARMB/wFWAZQBDAH/AVoBnAEQAf8BWgGUARgB
|
||||
/wFaAZQBGAH/AWMBnAEYAf8BYwGlARcB/wEpAVABAAH/AQgBCgEAAf8YAAMSARcDNQFWA1ABmgNiAeEB
|
||||
/wF4AQAC/wF4AQAB/wJRAVABnwMSARgUAAQCAwkBDAMPARQDEwEaAxIBGAMKAQ0DBAEFBAEUAANpAegD
|
||||
fwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8D
|
||||
fwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8D
|
||||
YQHPvAABCAEKAQAB/wwAARMBIwEAAf8BWgGUARAB/wFaAZwBEAH/AZQB1gFKAf8BDQERAQIB/wExAVoB
|
||||
AAH/AVoBlAESAf8BWgGUARgB/wFaAZQBGAH/AWMBnAEYAf8BYwGlARcB/wFrAaUBIQH/ARABHgEAAf8Y
|
||||
AAMSARcDNQFWA1ABmgNiAeEB/wF4AQAC/wF4AQAB/wJRAVABnwMSARgUAAMFAQYDHQEpAzABSgI7ATwB
|
||||
ZQI7ATwBZAMoATwCFQEWAR0DBgEIFAADPAFkA0wBjwNMAY8DTAGPA0wBjwNMAY8DTAGPA0wBjwNMAY8D
|
||||
TAGPA2cB6gN8AfgDTAGPA0wBjwNMAY8DTAGPA0wBjwNMAY8DTAGPA0wBjwNlAewDbgH1A0wBjwNMAY8D
|
||||
TAGPA0wBjwNMAY8DTAGPA0wBjwNMAY8DTAGPAzUBVqgAA10B3wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB
|
||||
/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wMzAVADOgFgAUsBhQEHAf8BWgGUARAB/wFaAZwBEAH/ATkB
|
||||
awEAAf8DCQEMARABHgEAAf8BVAGOARIB/wFaAZQBGAH/AWMBnAEYAf8BYwGcARgB/wFjAaUBFwH/AXMB
|
||||
tAEpAf8BEAEeAQAB/xgAAxIBFwM1AVYDUAGaA2IB4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBQAAwkB
|
||||
DAMzAVACTAFNAZECXQFfAckCWwFdAcoDRAF6AykBPQMMARA8AANfAdADYgHuIAADYQHUA2MB6cwAAQgB
|
||||
CgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB
|
||||
/wEIAQoBAAH/ATMBXwECAf8BWgGUARAB/wFaAZwBEAH/Aa0B5wFjAf8BEAEeAQAB/wEIAQoBAAH/ARQB
|
||||
JgEAAf8BVAGOARIB/wFiAZsBGAH/AWMBnAEYAf8BYwGlARcB/wFjAaUBFwH/AWMBnAEhAf8BGAEuAQAB
|
||||
/xgAAxIBFwM1AVYDUAGaA2IB4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBQAAwkBCwMuAUcDSAGEAlkB
|
||||
XAHDAlwBXwHLA0kBhQMuAUcDDwETPAADXwHQA2IB7iAAA2EB1ANjAenIAAEIAQoBAAH/ASsBUgEAAf8B
|
||||
QQFyAQUB/wFKAYQBBgH/AUoBhAEGAf8BSgGEAQYB/wFCAXMBBgH/ASkBUAEAAf8BEAEeAQAB/wEfAToB
|
||||
AAH/AVUBjwELAf8BWgGVARAB/wFaAZwBEAH/AdYB/wGMAf8BEAEeAQAB/wEYAS4BAAH/AUIBeAEDAf8B
|
||||
WgGUARgB/wFiAZsBGAH/AWMBnAEYAf8BYwGlARcB/wFjAaUBFwH/AXMBtAEpAf8BEAEeAQAB/xgAAxIB
|
||||
FwM1AVYDUAGaA2IB4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBQAAwYBCAMkATQDPAFmA1MBpwNYAbgC
|
||||
RwFIAYMDMQFNAw8BFDwAA18B0ANiAe4gAANhAdQDYwHpxAABKAFNAQAB/wFOAYgBBwH/AVIBjAEIAf8B
|
||||
UgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8BUgGMARAB/wFSAYwB
|
||||
EAH/AVoBlAEQAf8BWgGcARAB/wFjAaUBFwH/AUIBewEAAf8BSgGEAQYB/wFSAYwBCAH/AVoBmAEUAf8B
|
||||
WgGUARgB/wFjAZwBGAH/AWMBpQEXAf8BYwGlARcB/wFjAaUBFwH/AZQByQFNAf8EAAMQARUDGgEkAyEB
|
||||
LwMRARYEAgQBAxIBFwM1AVYDUAGaA2IB4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBQAAwMBBAMTARkD
|
||||
JQE2AjsBPAFkAkEBQgFyAzMBUQMhAS8DCQEMPAADXwHQA2IB7iAAA2EB1ANjAenAAAEpAU4BAgH/AVIB
|
||||
jAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB
|
||||
/wFSAYwBEAH/AVIBjAEQAf8BWgGUARAB/wFaAZUBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoB
|
||||
nAEQAf8BWgGUARgB/wFaAZQBGAH/AWMBnAEYAf8BYwGcARgB/wFjAaUBFwH/AWMBpQEXAf8BYwGlARcB
|
||||
/wFlAaABIQH/BAADHgErAjEBMAFMAzsBYwMiATEDBwEJAwQBBQMSARgDNgFXA1ABmgNiAeEB/wF4AQAC
|
||||
/wF4AQAB/wJRAVABnwMSARgcAAMHAQkDHAEnAyMBMgIZARoBIwMPARQDBAEFPAADXwHQA2IB7iAAA2EB
|
||||
1ANjAem8AANGAYABTgGIAQcB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8B
|
||||
UgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8BUgGMARAB/wFSAYwBEAH/AVoBlAEQAf8BWgGXARAB/wFaAZwB
|
||||
EAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBlAEYAf8BWgGUARgB/wFjAZwBGAH/AWMBoQEYAf8B
|
||||
YwGlARcB/wFjAaUBFwH/AXgBugEsAf8BCAEKAQAB/wQAAyQBNANFAXwCWgFYAbcDTgGUAz8BbQMoATsD
|
||||
HwEsAzkBXgNQAZoDYgHhAf8BeAEAAv8BeAEAAf8CUQFQAZ8DEgEYHAADEgEXAzwBZgNKAYkDQAFvAy4B
|
||||
RwMOARI8AANfAdADYgHuIAADYQHUA2MB6bwAATUBXgEHAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8B
|
||||
UgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8BUgGMARAB/wFaAZQB
|
||||
EAH/AVoBlAEQAf8BWgGbARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZYBFgH/AVoBlAEYAf8B
|
||||
XQGXARgB/wFjAZwBGAH/AWMBpQEXAf8BYwGlARcB/wFwAbMBIAH/ASsBUAEEAf8IAAMnAToCUwFRAaIB
|
||||
YQFfASEB+wJlAVwB5wJcAVoBxAJDAUIBdQMxAU0CQAE/AW4CUQFQAZ8CZQFgAeMB/wF4AQAC/wF4AQAB
|
||||
/wJRAVABnwMSARgcAAMZASIDTgGVAlsBXgHNAlYBVwGyA0QBegMdASkDBgEIBAIEATAAA18B0ANiAe4g
|
||||
AANhAdQDYwHpvAABSgGEAQYB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8B
|
||||
ZwGpARcB/wFSAYwBCAH/AUoBhAEGAf8BSgGEAQYB/wFSAYwBEAH/AVoBlAEQAf8BWgGXARAB/wFaAZwB
|
||||
EAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBlAEYAf8BWgGUARgB/wFfAZgBGAH/AWMBngEYAf8B
|
||||
YwGlARcB/wFrAakBHQH/ASkBUAEAAf8MAAMiATEDTgGYAm8BYAHzAmgBXgHwAmoBYQHmAloBVwHCAlUB
|
||||
UwGqA1MBpwJZAVcBvAJsAWEB6wH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBwAAxQBGwJDAUQBdwJWAVkB
|
||||
tgJbAV4BzQJWAVgBswM/AWwDJgE4AwwBDwMCAQMIAAMCAQMDDQERAw0BEQMNAREDDQERAw0BEQMNARED
|
||||
DQERAw0BEQMNAREDXwHTA2cB7wMNAREDDQERAw0BEQMNAREDDQERAw0BEQMNAREDDQERA2IB1wNnAeoD
|
||||
DQERAw0BEQMNAREDDQERAw0BEQMNAREDDQERAw0BEQMNAREDBAEFlAABSgGEAQYB/wFSAYwBCAH/AVIB
|
||||
jAEIAf8BUgGMAQgB/wFSAYwBCAH/AWkBpAEeAf8BLAFQAQMB/wEIAQoBAAH/ATcBYQEHAf8BUgGMAQ4B
|
||||
/wFSAYwBEAH/AX8BwQEyAf8BWwFeAVsB0wNaAb8BLwFZAQAB/wFEAXoBBQH/AVABigEIAf8BWgGcAQ4B
|
||||
/wFaAZwBEAH/AVoBnAEQAf8BTwGGARAB/wFEAXQBDAH/A1oBvxAAAhoBGQEjA0QBewJdAVsBygJjAV8B
|
||||
2gJpAWAB6AJnAVkB7wJlAV0B7AJhAVwB1gJfAVsB2AJoAVMB9AH/AXgBAAL/AXgBAAH/AlEBUAGfAxIB
|
||||
GBwAAw8BEwM0AVMDTQGSAl0BYQHPAl0BYQHUAlIBVAGoAkEBQgFyAyYBOAMUARsDBgEIAwIBAwNaAcID
|
||||
fwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8D
|
||||
fwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8D
|
||||
YgHclAABSgGMAQAB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AWcBnQEnAf8BCAEKAQAB
|
||||
/wEKAQ8BAAH/AUIBdwEDAf8BUgGMARAB/wFaAZwBEAH/ASUBQQEFAf8EAAM6AWABCAEKAQAB/wEIAQoB
|
||||
AAH/BAADRgGAA0YBgANGAYAcAAMKAQ0DIgExAzQBVANEAXgCUQFQAZ8CYQFdAc8CagFeAe0CZQFdAewC
|
||||
aAFeAfABYQFfASEB+wH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBwAAwYBCAMYASEDMQFNAkwBTQGRAlgB
|
||||
WgG9Al0BYQHRAlkBXAHDAlEBUwGiAz0BZwIZARoBIwMMAQ8DQAFvA1UBrQNVAa0DVQGtA1UBrQNVAa0D
|
||||
VQGtA1UBrQNVAa0DVQGtA2gB8AN9AfoDVQGtA1UBrQNVAa0DVQGtA1UBrQNVAa0DVQGtA1UBrQNwAfED
|
||||
fAH4A1UBrQNVAa0DVQGtA1UBrQNVAa0DVQGtA1UBrQNVAa0DVQGtA0cBgZQAATsBbQECAf8BUgGMAQgB
|
||||
/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFTAY4BEAH/AQ8BGwEAAf8BIwFDAQAB/wFSAYwBEAH/AVIB
|
||||
jAEQAf8BewG9ATAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB
|
||||
/wEIAQoBAAH/KAADAwEEAwkBCwMiATEDOAFbAk8BTgGXAl8BXAHIAmYBXwHlAm8BUQH3Ab4CQAH9Af8B
|
||||
eAEAAv8BeAEAAf8CUQFQAZ8DEgEYHAAEAQMCAQMDFQEcAzUBVgJLAUwBjwJcAV8ByAJdAWMB3wJgAWUB
|
||||
4wJSAVMBpQM0AVMDHAEnKAADXwHQA2IB7iAAA2EB1ANjAem8AAEIAQoBAAH/AVIBjAEIAf8BUgGMAQgB
|
||||
/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFOAYIBDwH/AUoBhAEGAf8BUgGMARAB/wFjAaUBFwH/AQgB
|
||||
CgEAAf8BCAEKAQAB/wETASMBAAH/AUIBcwEGAf8BIAE/AQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB
|
||||
/wEIAQoBAAH/AQgBCgEAAf8gAAQBAwMBBAMMARADGAEgAykBPQM+AWoCVwFWAbUCZgFfAeUCbwFRAfcB
|
||||
/wF4AQAC/wF4AQAB/wJRAVABnwMSARggAAQBAwcBCQMUARsDKgFAA0MBdgNVAa8CWgFjAekCWwFfAdAC
|
||||
UAFRAZ8DMwFRKAADXwHQA2IB7iAAA2EB1ANjAenAAAFCAXMBBgH/AVIBjAEIAf8BUgGMAQgB/wFSAYwB
|
||||
CAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBEAH/AVIBjAEQAf8BSgGEAQYB/wEQAR4BAAH/ATEBWgEAAf8B
|
||||
TQGEAQ0B/wFaAZwBEAH/AVoBnAEQAf8BUgGMAQgB/wEQAR4BAAH/AQgBCgEAAf8BCAEKAQAB/wNGAYAs
|
||||
AAMCAQMDCwEOAyABLgNDAXYCVwFVAbECZgFgAeACYwFIAfYCagFBAfkCUQFQAZwDEgEXDAAEAQMMARAD
|
||||
FwEfAx0BKAMdASgDDAEPCAADDwEUAiYBJwE5AkcBSAGDA2IB4QJcAWUB5wNeAdICPwFAAW4oAANfAdAD
|
||||
YgHuIAADYQHUA2MB6cQAAUkBiQEAAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwB
|
||||
EAH/AVIBjAEQAf8BUgGMARAB/wFSAYwBEAH/AVoBlAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8B
|
||||
WgGcARAB/wFaAZQBGAH/AUIBcwEGAf8BCgEOAQAB/zAABAEDAwEEAwwBDwMeASoDOgFhAlkBVwG5AmMB
|
||||
WwHkA2IB7gJPAU4BlwMSARcMAAMCAQMDIQEvAzYBWQJCAUMBdQJBAUIBcwMeASsIAAMEAQUDDAEPAzgB
|
||||
XAJdAWABzgJdAWUB7AJZAWcB7wNGAX8oAANfAdADYgHuIAADYQHUA2MB6cgAAToBawEAAf8BUgGMAQgB
|
||||
/wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB/wFSAYwBEAH/AVoBlAEQAf8BWgGUARAB/wFaAZwBEAH/AVoB
|
||||
nAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBlAEYAf8BWgGUARgB/wFjAaUBFwH/ARkBLAEDAf84AAMCAQMD
|
||||
CAEKAyABLQJBAUABcQJNAUwBkQNQAZoCOwE6AWIDDAEPDAADAwEEAysBQQNEAXoDUwGnA1UBrQM3AVoD
|
||||
GAEgAwkBCwMGAQcDDQERAzkBXwJdAWEB0QJZAWcB7wJgAW8B8wJGAUcBgSgAA18B0ANiAe4gAANhAdQD
|
||||
YwHpzAABLAFVAQAB/wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB/wFSAYwBEAH/AVoBlAEQAf8BWgGUARAB
|
||||
/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBlAEYAf8BWgGUARgB/wEhAUEBAAH/QAAE
|
||||
AgMHAQkDEAQVARwCFgEVAR0DDwETAwIBAwwAAwMBBAMwA0sBTAGPAlsBXQHKAlsBYQHeA04BlAM0AVMD
|
||||
FQEcAw0BEQMeASsCQwFEAXcCXQFjAd8CZQFwAfECWgFjAekDRAF7KAADXwHQA2IB7iAAA2EB1ANjAenI
|
||||
AAESASIBAAH/AUwBhgEGAf8BUgGMAQgB/wFaAZwBEAH/AVABigEIAf8BUgGMARAB/wFaAZQBEAH/AVoB
|
||||
nAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcAREB/wFpAasBHwH/AQgBCgEAAf9sAAMCAQMD
|
||||
IQEvAzoBYQNVAa0CXwFjAdoDWgG/AlABUQGfA0QBegJBAUIBcgNJAYUCVgFXAbICXgFqAe0CYAFkAdsC
|
||||
VQFXAbEDOAFbKAADXwHQA2IB7iAAA2EB1ANjAenIAAEQAR4BAAH/AUgBfQEHAf8BWQGTARMB/wFVAYgB
|
||||
GAH/CAABIQFBAQAB/wFCAXsBAAH/AVIBjAEIAf8BVQGRAQgB/wE5AWYBBAH/A1kB73gAAwYBCAMXAR8D
|
||||
RAF7AlkBXAHGAlsBYwHkAlMBaAH0A2IB7gNiAe4CZQFwAfECSAFjAfYCKwF+AfwCWQFcAb4DPgFrAyQB
|
||||
NCgAA18B0ANiAe4gAANhAdQDYwHp0AABHgE6AQAB/5wABAIDCQEMAyoDPwFAAW4DTgGWAlYBWAGzAlkB
|
||||
XAHBAloBXQHHAloBXQHHAlcBWQG5AlEBUgGkAkABQQFxAyUBNgMTARkoAANfAdADYgHuIAADYQHUA2MB
|
||||
6f8AeQAEAQMLAQ4DJgE4AzkBXgNGAX0CSgFLAYsDSgGJAz4BawMqAT8DFwEfAwIBAywAA1MBogNaAb8g
|
||||
AANUAaYDWQG7qAABQgFNAT4HAAE+AwABKAMAAYADAAEgAwABAQEAAQEGAAECFgAD/wEAA/8BxwIAAQcC
|
||||
/wHPAfMB/wQAAv8BzwGHAgABBwL/Ac8B8wH/BAAB/wH+AQABBwIAAQcC/wHPAfMB/wQAAf8B/AEAAQcC
|
||||
AAEHAv8BzwHzAf8EAAH/AfgBAAEPAgABBwL/Ac8B8wH/BAAB/wHwAQABBwIAAQcC/wHPAfMB/wQAAf8B
|
||||
4AEAAQMCAAEHAv8BzwHzAf8EAAH/AcABAAEBAfwBAwP/Ac8B8wH/BAAB/wHAAQABAQH8AQMD/wHPAfMB
|
||||
/wQAAf8B4AIAAfwBAwHgAR8IAAH/AfwBIAEAAfwBAwHgAR8IAAH/Af4B4AEAAfwBAwHgAR8IAAH/AcAC
|
||||
AAH8AQMB4AEfAf8BzwHzAf8EAAH/AYACAAH8AQMB4AEfAf8BzwHzAf8EAAH/AwAB/AEDAeABHwH/Ac8B
|
||||
8wH/BAAB/gIAAQEBAAEDAeABHwH/Ac8B8wH/BAAB/AIAAQEBAAEDAfgBHwH/Ac8B8wH/BAAB+AIAAQEB
|
||||
AAEDAfgBHwH/Ac8B8wH/BAAB+AIAAQMBAAEDAfgBAwH/Ac8B8wH/BAAB+AIAAQcBAAEDAfgBAwgAAfgC
|
||||
AAEPAQABAwH4CQAB+AEAAUQBfwEAAQMB+AkAAfgBAAEBAf8BgAEDAfgBAAH/Ac8B8wH/BAAB+AIAAX8B
|
||||
gAEDAfwBAAH/Ac8B8wH/BAAB/AIAAX8B8AEDAYEBgAH/Ac8B8wH/BAAB/gIAAf8B8AEDAYEBgAH/Ac8B
|
||||
8wH/BAAB/wIAAf8B/AEDAYABAAH/Ac8B8wH/BAAB/wGAAQEB/wH+AQMBgAEAAf8BzwHzAf8EAAH/AQAB
|
||||
AwP/AYABAAH/Ac8B8wH/BAAB/wEMAQ8D/wHAAQAB/wHPAfMB/wQAAf8B3wT/AcABAAH/Ac8B8wH/BAAG
|
||||
/wHwAQEB/wHPAfMB/wQACw==
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="ilStoreThumbnails.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>12, 128</value>
|
||||
</metadata>
|
||||
<metadata name="ilProfilePics.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
@ -484,7 +128,7 @@
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
|
||||
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
|
||||
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA0A0AAAJNU0Z0AUkBTAMBAQAB
|
||||
MAECATABAgEgAQABIAEABP8BIQEACP8BQgFNATYHAAE2AwABKAMAAYADAAEgAwABAQEAASAGAAFAEgAD
|
||||
MAEBATABAQEgAQABIAEABP8BIQEACP8BQgFNATYHAAE2AwABKAMAAYADAAEgAwABAQEAASAGAAFAEgAD
|
||||
rQH/A7oB/wO6Af8DuQH/A7oB/wO6Af8D2gX/A/wB/wP+Df8D/QH/A/wR/wP8Af8D/g3/A/0B/wPZAf8D
|
||||
ugH/A7oB/wO6Af8DugH/A7oB/wO6Af//AIEAA58B/wO6Af8DugH/A7oB/wO6Af8DugH/A9oJ/wP9Af8D
|
||||
/g3/A/0B/wP9Ef8D/AH/A/4N/wPaAf8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af//AIEAA6IB/wO6Af8D
|
||||
@ -543,6 +187,363 @@
|
||||
ugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8D
|
||||
ugH/A7oB/wO6Af8DugH/A7kB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB/wO6Af8DugH/A7oB//8AgQAB
|
||||
QgFNAT4HAAE+AwABKAMAAYADAAEgAwABAQEAAQEGAAECFgAD//8A/wADAAs=
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="ilStatusIcons.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>13, 101</value>
|
||||
</metadata>
|
||||
<data name="ilStatusIcons.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
|
||||
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
|
||||
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA4hMAAAJNU0Z0AUkBTAIBAQQB
|
||||
AAHoAQAB6AEAARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAASADAAEBAQABIAYAASD/
|
||||
AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AC4AAwYBBwM0AVQDUQGiA14B0gNaAekDYAHoA10B
|
||||
0QNQAZ8DMQFNAwUBBhgAAwYBBwM0AVQDUQGiA14B0gNaAekDYAHoA10B0QNQAZ8DMQFNAwUBBhgAAwYB
|
||||
BwM0AVQDUQGiA14B0gNaAekDYAHoA10B0QNQAZ8DMQFNAwUBBhgAAwYBBwM0AVQDUQGiA14B0gNaAekD
|
||||
YAHoA10B0QNQAZ8DMQFNAwUBBhQAAyABLQNUAasDWwHkA1oB9QMkAfsDQQH+A0EB/gMkAfsDUwH0A2IB
|
||||
4QNRAaEDHgEqEAADIAEtA1QBqwNbAeQBUwFaAVMB9QEhAV0BIQH7AR0BXQEdAf4BHQFdAR0B/gEhAV0B
|
||||
IQH7A1MB9ANiAeEDUQGhAx4BKhAAAyABLQNUAasDWwHkAVMCWgH1ASECXQH7AR0CXQH+AR0CXQH+ASEC
|
||||
XQH7A1MB9ANiAeEDUQGhAx4BKhAAAyABLQNUAasDWwHkAlMBWgH1AiEBXQH7Ah0BXQH+Ah0BXQH+AiEB
|
||||
XQH7A1MB9ANiAeEDUQGhAx4BKgwAAxsBJQNYAb0DWgHyA0UB/gMwAf8DOQH/AzwB/wM2Af8DKgH/AyQB
|
||||
/wNAAf0DXgHwA1YBsgMaASMIAAMbASUDWAG9A1oB8gEdAWUBHQH+AQABVwEAAf8BAAFnAQAB/wEAAWwB
|
||||
AAH/AQABYQEAAf8BAAFMAQAB/wEAAUABAAH/AToBQAE6Af0DXgHwA1YBsgEZARoBGQEjCAADGwElA1gB
|
||||
vQNaAfIBHQJlAf4BAAJXAf8BAAJnAf8BAAJsAf8BAAJhAf8BAAJMAf8BAAJAAf8BOgJAAf0DXgHwA1YB
|
||||
sgEZAhoBIwgAAxsBJQNYAb0DWgHyAh0BZQH+AgABVwH/AgABZwH/AgABbAH/AgABYQH/AgABTAH/AgAB
|
||||
QAH/AjoBQAH9A14B8ANWAbICGQEaASMEAAMDAQQDUgGlA2AB8wNJAf8DVQH/A2UB/wNxAf8DdQH/A3EB
|
||||
/wNkAf8DTAH/AzEB/wNBAf4DYgHuA1ABmgMDAQQDAwEEAVIBUwFSAaUBXQFvAV0B8wEAAYIBAAH/AQAB
|
||||
mQEAAf8BAAG2AQAB/wEAAcwBAAH/AQAB0wEAAf8BAAHLAQAB/wEAAbMBAAH/AQABiAEAAf8BAAFXAQAB
|
||||
/wEdAV0BHQH+A2IB7gNQAZoDAwEEAwMBBAFSAlMBpQFdAm8B8wEAAoIB/wEAApkB/wEAArYB/wEAAswB
|
||||
/wEAAtMB/wEAAssB/wEAArMB/wEAAogB/wEAAlcB/wEdAl0B/gNiAe4DUAGaAwMBBAMDAQQCUgFTAaUC
|
||||
XQFvAfMCAAGCAf8CAAGZAf8CAAG2Af8CAAHMAf8CAAHTAf8CAAHLAf8CAAGzAf8CAAGIAf8CAAFXAf8C
|
||||
HQFdAf4DYgHuA1ABmgMDAQQDLQFEA2AB6AOAAf4DbgH/A3sB/wOFAf8DigH/A4wB/wOKAf8DhQH/A3YB
|
||||
/wNXAf8DMgH/A0AB/QNeAd0DKgE/Ay0BRAFgAWkBYAHoAR0BgAEdAf4BAAHGAQAB/wEAAdwBAAH/AQAB
|
||||
7gEAAf8BAAH4AQAB/wEAAfsBAAH/AQAB+QEAAf8BAAHvAQAB/wEAAdQBAAH/AQABnAEAAf8BAAFaAQAB
|
||||
/wE6AUABOgH9A14B3QMqAT8DLQFEAWACaQHoAR0CgAH+AQACxgH/AQAC3AH/AQAC7gH/AQAC+AH/AQAC
|
||||
+wH/AQAC+QH/AQAC7wH/AQAC1AH/AQACnAH/AQACWgH/AToCQAH9A14B3QMqAT8DLQFEAmABaQHoAh0B
|
||||
gAH+AgABxgH/AgAB3AH/AgAB7gH/AgAB+AH/AgAB+wH/AgAB+QH/AgAB7wH/AgAB1AH/AgABnAH/AgAB
|
||||
WgH/AjoBQAH9A14B3QMqAT8DTgGVA3cB+AN/Af8DhQH/A4oB/wONAf8DjgH/A44B/wOOAf8DjQH/A4kB
|
||||
/wN3Af8DTQH/AyUB/wNaAfIDSgGLA04BlQFHAXwBRwH4AQAB5QEAAf8BAAHvAQAB/wEAAfgBAAH/AQAB
|
||||
/QEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH+AQAB/wEAAfYBAAH/AQAB1QEAAf8BAAGLAQAB
|
||||
/wEAAUEBAAH/A1oB8gNKAYsDTgGVAUcCfAH4AQAC5QH/AQAC7wH/AQAC+AH/AQAC/QH/AQAD/wEAA/8B
|
||||
AAP/AQAC/gH/AQAC9gH/AQAC1QH/AQACiwH/AQACQQH/A1oB8gNKAYsDTgGVAkcBfAH4AgAB5QH/AgAB
|
||||
7wH/AgAB+AH/AgAB/QH/AgAC/wIAAv8CAAL/AgAB/gH/AgAB9gH/AgAB1QH/AgABiwH/AgABQQH/A1oB
|
||||
8gNKAYsDXwHTA34B/AOTAf8DjgH/A40B/wOOAf8DjgH/A44B/wOOAf8DjgH/A40B/wOFAf8DZwH/AzQB
|
||||
/wNBAfkDWgHEAVsBXwFbAdMBKwGkASsB/AEOAfsBDgH/AQMB/QEDAf8BAAH+AQAB/wEAAf8BAAH/AQAB
|
||||
/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH9AQAB/wEAAe8BAAH/AQABuQEAAf8BAAFdAQAB
|
||||
/wNBAfkDWgHEAVsCXwHTASsCpAH8AQ4C+wH/AQMC/QH/AQAC/gH/AQAD/wEAA/8BAAP/AQAD/wEAA/8B
|
||||
AAL9Af8BAALvAf8BAAK5Af8BAAJdAf8DQQH5A1oBxAJbAV8B0wIrAaQB/AIOAfsB/wIDAf0B/wIAAf4B
|
||||
/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAB/QH/AgAB7wH/AgABuQH/AgABXQH/A0EB+QNaAcQDbgH1A4AB
|
||||
/gOfAf8DkwH/A48B/wOOAf8DjgH/A44B/wOOAf8DjgH/A44B/wOLAf8DdwH/A0gB/wNAAf0DYgHhAVkB
|
||||
bgFZAfUBQQHFAUEB/gEnAf8BJwH/AQsB/wELAf8BAQH/AQEB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB
|
||||
/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAfkBAAH/AQAB1gEAAf8BAAGBAQAB/wE6AUABOgH9A2IB
|
||||
4QFZAm4B9QFBAsUB/gEnA/8BCwP/AQED/wEAA/8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAAvkB/wEAAtYB
|
||||
/wEAAoEB/wE6AkAB/QNiAeECWQFuAfUCQQHFAf4CJwL/AgsC/wIBAv8CAAL/AgAC/wIAAv8CAAL/AgAC
|
||||
/wIAAv8CAAH5Af8CAAHWAf8CAAGBAf8COgFAAf0DYgHhA2MB9gOAAf4DqwH/A5kB/wOQAf8DjgH/A44B
|
||||
/wOOAf8DjgH/A44B/wOOAf8DjQH/A38B/wNVAf8DQAH9A14B4gFIAXUBSAH2AWQBxQFkAf4BQgH/AUIB
|
||||
/wEZAf8BGQH/AQQB/wEEAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB
|
||||
/wEAAf8BAAH9AQAB/wEAAeQBAAH/AQABmAEAAf8BOgFAAToB/QNeAeIBSAJ1AfYBZALFAf4BQgP/ARkD
|
||||
/wEEA/8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAA/8BAAL9Af8BAALkAf8BAAKYAf8BOgJAAf0DXgHiAkgB
|
||||
dQH2AmQBxQH+AkIC/wIZAv8CBAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAB/QH/AgAB5AH/AgAB
|
||||
mAH/AjoBQAH9A14B4gNhAdYDfgH8A7gB/wOjAf8DkwH/A44B/wOOAf8DjgH/A44B/wOOAf8DjgH/A40B
|
||||
/wOCAf8DXAH/A00B+gNaAccBXAFhAVwB1gFkAaoBZAH8AV8B/wFfAf8BLwH/AS8B/wEMAf8BDAH/AQEB
|
||||
/wEBAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/gEAAf8BAAHqAQAB
|
||||
/wEAAaUBAAH/ATEBTQExAfoDWgHHAVwCYQHWAWQCqgH8AV8D/wEvA/8BDAP/AQED/wEAA/8BAAP/AQAD
|
||||
/wEAA/8BAAP/AQAC/gH/AQAC6gH/AQACpQH/ATECTQH6A1oBxwJcAWEB1gJkAaoB/AJfAv8CLwL/AgwC
|
||||
/wIBAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAf4B/wIAAeoB/wIAAaUB/wIxAU0B+gNaAccDUAGaA4MB
|
||||
+QPFAf8DsgH/A5wB/wORAf8DjgH/A44B/wOOAf8DjgH/A48B/wOOAf8DgwH/A2AB/wNaAfIDTAGQA1AB
|
||||
mgFqAYwBagH5AXwB/wF8Af8BUQH/AVEB/wEfAf8BHwH/AQcB/wEHAf8BAQH/AQEB/wEAAf8BAAH/AQAB
|
||||
/wEAAf8BAAH/AQAB/wECAf8BAgH/AQIB/gECAf8BAAHrAQAB/wEAAa0BAAH/AVoBawFaAfIDTAGQA1AB
|
||||
mgFqAowB+QF8A/8BUQP/AR8D/wEHA/8BAQP/AQAD/wEAA/8BAAP/AQID/wECAv4B/wEAAusB/wEAAq0B
|
||||
/wFaAmsB8gNMAZADUAGaAmoBjAH5AnwC/wJRAv8CHwL/AgcC/wIBAv8CAAL/AgAC/wIAAv8CAgL/AgIB
|
||||
/gH/AgAB6wH/AgABrQH/AloBawHyA0wBkAMvAUkDbAHrA5YB/gPGAf8DrgH/A5wB/wOTAf8DkAH/A48B
|
||||
/wOQAf8DkwH/A5MB/wOFAf8DSQH9A2AB4AMtAUUDLwFJA2wB6wGAAcUBgAH+AX8B/wF/Af8BSQH/AUkB
|
||||
/wEfAf8BHwH/AQwB/wEMAf8BBQH/AQUB/wEDAf8BAwH/AQUB/wEFAf8BCgH/AQoB/wEKAf4BCgH/AQEB
|
||||
7QEBAf8BOgG2AToB/QFgAWYBYAHgAy0BRQMvAUkDbAHrAYACxQH+AX8D/wFJA/8BHwP/AQwD/wEFA/8B
|
||||
AwP/AQUD/wEKA/8BCgL+Af8BAQLtAf8BOgK2Af0BYAJmAeADLQFFAy8BSQNsAesCgAHFAf4CfwL/AkkC
|
||||
/wIfAv8CDAL/AgUC/wIDAv8CBQL/AgoC/wIKAf4B/wIBAe0B/wI6AbYB/QJgAWYB4AMtAUUDAwEEA1YB
|
||||
rgNuAfUD2QH/A8sB/wO3Af8DpwH/A50B/wOaAf8DnAH/A58B/wObAf8DiQH/A2gB8ANSAaMDAwEEAwMB
|
||||
BANWAa4DbgH1AagB/wGoAf8BiQH/AYkB/wFcAf8BXAH/ATcB/wE3Af8BIgH/ASIB/wEbAf8BGwH/AR8B
|
||||
/wEfAf8BJgH/ASYB/wEdAf8BHQH/AQUB8wEFAf8BXgFoAV4B8ANSAaMDAwEEAwMBBANWAa4DbgH1AagD
|
||||
/wGJA/8BXAP/ATcD/wEiA/8BGwP/AR8D/wEmA/8BHQP/AQUC8wH/AV4CaAHwA1IBowMDAQQDAwEEA1YB
|
||||
rgNuAfUCqAL/AokC/wJcAv8CNwL/AiIC/wIbAv8CHwL/AiYC/wIdAv8CBQHzAf8CXgFoAfADUgGjAwMB
|
||||
BAQAAxwBJwNdAccDcgH2A6UB/gPXAf8DzAH/A8IB/wO7Af8DtwH/A7EB/wOAAf4DaAH0A1kBvAMbASYI
|
||||
AAMcAScDXQHHAWkBdQFpAfYBgAHFAYAB/gGlAf8BpQH/AYsB/wGLAf8BdAH/AXQB/wFmAf8BZgH/AVwB
|
||||
/wFcAf8BTgH/AU4B/wFNAcUBTQH+AVMBcQFTAfQBVwFZAVcBvAMbASYIAAMcAScDXQHHAWkCdQH2AYAC
|
||||
xQH+AaUD/wGLA/8BdAP/AWYD/wFcA/8BTgP/AU0CxQH+AVMCcQH0AVcCWQG8AxsBJggAAxwBJwNdAccC
|
||||
aQF1AfYCgAHFAf4CpQL/AosC/wJ0Av8CZgL/AlwC/wJOAv8CTQHFAf4CUwFxAfQCVwFZAbwDGwEmDAAD
|
||||
IQEwA1kBtgNiAe4DhAH6A74B/QPUAf8DzAH/A74B/QN/AfkDbAHrA1UBrAMfASwQAAMhATADWQG2AWIB
|
||||
ZAFiAe4BfQGTAX0B+gGuAb4BrgH9AZ8B/wGfAf8BjAH/AYwB/wFZAb4BWQH9AWgBjAFoAfkBYQFsAWEB
|
||||
6wNVAawDHwEsEAADIQEwA1kBtgFiAmQB7gF9ApMB+gGuAr4B/QGfA/8BjAP/AVkCvgH9AWgCjAH5AWEC
|
||||
bAHrA1UBrAMfASwQAAMhATADWQG2AmIBZAHuAn0BkwH6Aq4BvgH9Ap8C/wKMAv8CWQG+Af0CaAGMAfkC
|
||||
YQFsAesDVQGsAx8BLBQAAwYBBwM2AVgDVQGsA2YB5QORAfwDjgH7A2UB4gNTAacDMwFRAwYBBxgAAwYB
|
||||
BwM2AVgDVQGsA2YB5QF+AaoBfgH8AWMBmQFjAfsDZQHiA1MBpwMzAVEDBgEHGAADBgEHAzYBWANVAawD
|
||||
ZgHlAX4CqgH8AWMCmQH7A2UB4gNTAacDMwFRAwYBBxgAAwYBBwM2AVgDVQGsA2YB5QJ+AaoB/AJjAZkB
|
||||
+wNlAeIDUwGnAzMBUQMGAQcMAAFCAU0BPgcAAT4DAAEoAwABQAMAASADAAEBAQABAQYAAQEWAAP/gQAB
|
||||
4AEHAeABBwHgAQcB4AEHAcABAwHAAQMBwAEDAcABAwGAAQEBgAEBAYABAQGAAQFQAAGAAQEBgAEBAYAB
|
||||
AQGAAQEBwAEDAcABAwHAAQMBwAEDAeABBwHgAQcB4AEHAeABBws=
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="ilGames.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>24, 73</value>
|
||||
</metadata>
|
||||
<data name="ilGames.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
|
||||
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
|
||||
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAALiUAAAJNU0Z0AUkBTAIBAQMB
|
||||
AAGoAQEBqAEBASABAAEgAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABgAMAASADAAEBAQABIAYAAUB6
|
||||
AANcAecBCAEKAQAB/wMqAUAMAAMqAUADNgFXAz8BbAM/AWwDPwFsAz8BbAM/AWwDPwFsAz8BbAM/AWwD
|
||||
PwFsAz8BbAM/AWwDPwFsAz8BbAM/AWwDPwFsAz8BbAI7AToBYgMzAVEDGAEhVAADUwGiA1sBwCAAA1QB
|
||||
pgNZAbzwAAMhATADRgGAFAABFQEfAQQB/wENARUBAAH/AQgBCgEAAf8BCAEKAQAB/wwAA0QBegNTAacC
|
||||
YQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8C
|
||||
YQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYAFdAc4DWQG7AlABTwGbAyoBQFQAA18B0ANpAe4g
|
||||
AANhAdQDZgHp5AADWgG/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoB
|
||||
AAH/AQgBCgEAAf8DWgG/A1oBvwFDAXQBBwH/AUcBdwEMAf8BJQFHAQAB/wEOARkBAAH/DAACSwFKAYoC
|
||||
WgFYAb0CZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoC
|
||||
ZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCYwFaAekCXwFbAdMDVQGvAy4BSFQAA18B
|
||||
0ANpAe4gAANhAdQDZgHp4AABCAEKAQAB/wEQAR4BAAH/ASEBQQEAAf8BJwFLAQAB/wEmAUoBAAH/ASEB
|
||||
QQEAAf8BEAEeAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEpAU4BAAH/AVoBlgEQAf8BWgGcARAB
|
||||
/wFzAbYBJgH/ARgBLgEAAf8MAANJAYYCWgFYAbcCZQFgAeMCZQFgAeMCZQFgAeMCZQFgAeMCagFhAeYC
|
||||
agFeAe0CaAFTAfQBjwF3ASsB/AH/AXgBAAL/AXgBAAH/Am4BWgH1AmoBYQHmAmUBYAHjAmUBYAHjAmUB
|
||||
YAHjAmUBXgHiAl4BWwHNAlUBUwGqAi4BLQFGVAADXwHQA2kB7iAAA2EB1ANmAencAAEIAQoBAAH/AT0B
|
||||
cQECAf8BTAGGAQcB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8BTAF/AQ8B
|
||||
/wE7AWcBCAH/ASEBNAEIAf8BUwGOAQsB/wFaAZwBEAH/AXIBswEnAf8BUwGBARsB/xAAAysBQQM2AVkC
|
||||
QAE/AW4CQAE/AW4CQAE/AW4CQAE/AW4DRAF7AlEBUAGfAl0BWwHFA2IB7gH/AXgBAAL/AXgBAAH/Al8B
|
||||
XQHJA0UBfAJAAT8BbgJAAT8BbgJAAT8BbgM/AW0DOwFjAzMBUgMZASJUAANfAdADaQHuIAADYQHUA2YB
|
||||
6dgAARUBKQEAAf8BSgGEAQQB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8B
|
||||
UgGMARAB/wFSAYwBEAH/AVIBjAEQAf8BWgGUARAB/wFWAZABDAH/AVoBmgEQAf8BWgGcARAB/wFyAakB
|
||||
MAH/AQgBCgEAAf8BCAEKAQAB/wwAAwwBEAMRARYDFQEcAxUBHAMVARwDFQEcAyEBMAI+AT0BaQJTAVIB
|
||||
pQJmAV8B5QH/AXgBAAL/AXgBAAH/AlUBUwGqAyIBMQMVARwDFQEcAxUBHAMUARsDEwEZAxABFQMHAQlU
|
||||
AANfAdADaQHuIAADYQHUA2YB6dQAARYBJwECAf8BSQGAAQcB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB
|
||||
/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQsB/wFSAYwBEAH/AVIBjAEQAf8BWAGSARAB/wFaAZQBEAH/AVoB
|
||||
mwEQAf8BWgGcARAB/wFcAZ4BEgH/ATsBbQEDAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8IAAMFBAYE
|
||||
CAEKAwgBCgMIAQoDCAEKAxcBHwI5ATgBXQNRAZ4CZQFgAeMB/wF4AQAC/wF4AQAB/wNSAaMDGAEhAwgB
|
||||
CgMIAQoDCAEKAwgBCgMHAQkDBgEHAwIBA1QAA18B0ANpAe4gAANhAdQDZgHp0AADXQHfAUcBgAEDAf8B
|
||||
UgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB/wFSAYwB
|
||||
EAH/AVIBjAEQAf8BWgGUARAB/wFaAZQBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8B
|
||||
WgGYARAB/wEWASoBAAH/AQgBCgEAAf8BCAEKAQAB/xwAAxIBFwM1AVYDUAGaA2IB4QH/AXgBAAL/AXgB
|
||||
AAH/AlEBUAGfAxIBGHAAA18B0ANpAe4gAANhAdQDZgHp0AABLAFQAQAB/wFKAYwBAAH/AVIBjAEIAf8B
|
||||
UgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBDgH/AVUBkgEQAf8BWgGcARAB/wFaAZwB
|
||||
EAH/AVoBlAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBlAEYAf8B
|
||||
WAGSARYB/wEQAR4BAAH/AQgBCgEAAf8cAAMSARcDNQFWA1ABmgNiAeEB/wF4AQAC/wF4AQAB/wJRAVAB
|
||||
nwMSARhwAANfAdADaQHuIAADYQHUA2YB6dQAA0sBjwEzAV4BAAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwB
|
||||
CAH/AVIBjAEQAf8BfwHAATMB/wFfAZ4BFwH/ASABPwEAAf8BCAEKAQAB/wFSAYwBEAH/AVoBnAEQAf8B
|
||||
WgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGVARcB/wFaAZQBGAH/AVoBlAEYAf8BWgGUARgB/wEIAQoB
|
||||
AAH/AQgBCgEAAf8YAAMSARcDNQFWA1ABmgNiAeEB/wF4AQAC/wF4AQAB/wJRAVABnwMSARgUAAQBAwMB
|
||||
BAMGBAcBCQMHAQkDBAEFBAIEARQAAxEBFgMhAS8DIQEvAyEBLwMhAS8DIQEvAyEBLwMhAS8DIQEvAyEB
|
||||
LwNhAdkDcAHxAyEBLwMhAS8DIQEvAyEBLwMhAS8DIQEvAyEBLwMhAS8DYgHcA2oB7QMhAS8DIQEvAyEB
|
||||
LwMhAS8DIQEvAyEBLwMhAS8DIQEvAyEBLwMNARG4AAFCAXsBAAH/AVIBjAEIAf8BewHGASkB/wMzAVAE
|
||||
AAMMARABOQFrAQAB/wFaAZwBEAH/AVoBnAEQAf8BXQGXARMB/wFWAZQBDAH/AVoBnAEQAf8BWgGUARgB
|
||||
/wFaAZQBGAH/AWMBnAEYAf8BYwGlARcB/wEpAVABAAH/AQgBCgEAAf8YAAMSARcDNQFWA1ABmgNiAeEB
|
||||
/wF4AQAC/wF4AQAB/wJRAVABnwMSARgUAAQCAwkBDAMPARQDEwEaAxIBGAMKAQ0DBAEFBAEUAANpAegD
|
||||
fwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8D
|
||||
fwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8D
|
||||
YQHPvAABCAEKAQAB/wwAARMBIwEAAf8BWgGUARAB/wFaAZwBEAH/AZQB1gFKAf8BDQERAQIB/wExAVoB
|
||||
AAH/AVoBlAESAf8BWgGUARgB/wFaAZQBGAH/AWMBnAEYAf8BYwGlARcB/wFrAaUBIQH/ARABHgEAAf8Y
|
||||
AAMSARcDNQFWA1ABmgNiAeEB/wF4AQAC/wF4AQAB/wJRAVABnwMSARgUAAMFAQYDHQEpAzABSgI7ATwB
|
||||
ZQI7ATwBZAMoATwCFQEWAR0DBgEIFAADPAFkA0wBjwNMAY8DTAGPA0wBjwNMAY8DTAGPA0wBjwNMAY8D
|
||||
TAGPA2cB6gN8AfgDTAGPA0wBjwNMAY8DTAGPA0wBjwNMAY8DTAGPA0wBjwNrAewDbgH1A0wBjwNMAY8D
|
||||
TAGPA0wBjwNMAY8DTAGPA0wBjwNMAY8DTAGPAzUBVqgAA10B3wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB
|
||||
/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wMzAVADOgFgAUsBhQEHAf8BWgGUARAB/wFaAZwBEAH/ATkB
|
||||
awEAAf8DCQEMARABHgEAAf8BVAGOARIB/wFaAZQBGAH/AWMBnAEYAf8BYwGcARgB/wFjAaUBFwH/AXMB
|
||||
tAEpAf8BEAEeAQAB/xgAAxIBFwM1AVYDUAGaA2IB4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBQAAwkB
|
||||
DAMzAVACTAFNAZECXQFfAckCWwFdAcoDRAF6AykBPQMMARA8AANfAdADaQHuIAADYQHUA2YB6cwAAQgB
|
||||
CgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB
|
||||
/wEIAQoBAAH/ATMBXwECAf8BWgGUARAB/wFaAZwBEAH/Aa0B5wFjAf8BEAEeAQAB/wEIAQoBAAH/ARQB
|
||||
JgEAAf8BVAGOARIB/wFiAZsBGAH/AWMBnAEYAf8BYwGlARcB/wFjAaUBFwH/AWMBnAEhAf8BGAEuAQAB
|
||||
/xgAAxIBFwM1AVYDUAGaA2IB4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBQAAwkBCwMuAUcDSAGEAlkB
|
||||
XAHDAlwBXwHLA0kBhQMuAUcDDwETPAADXwHQA2kB7iAAA2EB1ANmAenIAAEIAQoBAAH/ASsBUgEAAf8B
|
||||
QQFyAQUB/wFKAYQBBgH/AUoBhAEGAf8BSgGEAQYB/wFCAXMBBgH/ASkBUAEAAf8BEAEeAQAB/wEfAToB
|
||||
AAH/AVUBjwELAf8BWgGVARAB/wFaAZwBEAH/AdYB/wGMAf8BEAEeAQAB/wEYAS4BAAH/AUIBeAEDAf8B
|
||||
WgGUARgB/wFiAZsBGAH/AWMBnAEYAf8BYwGlARcB/wFjAaUBFwH/AXMBtAEpAf8BEAEeAQAB/xgAAxIB
|
||||
FwM1AVYDUAGaA2IB4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBQAAwYBCAMkATQDPAFmA1MBpwNYAbgC
|
||||
RwFIAYMDMQFNAw8BFDwAA18B0ANpAe4gAANhAdQDZgHpxAABKAFNAQAB/wFOAYgBBwH/AVIBjAEIAf8B
|
||||
UgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8BUgGMARAB/wFSAYwB
|
||||
EAH/AVoBlAEQAf8BWgGcARAB/wFjAaUBFwH/AUIBewEAAf8BSgGEAQYB/wFSAYwBCAH/AVoBmAEUAf8B
|
||||
WgGUARgB/wFjAZwBGAH/AWMBpQEXAf8BYwGlARcB/wFjAaUBFwH/AZQByQFNAf8EAAMQARUDGgEkAyEB
|
||||
LwMRARYEAgQBAxIBFwM1AVYDUAGaA2IB4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBQAAwMBBAMTARkD
|
||||
JQE2AjsBPAFkAkEBQgFyAzMBUQMhAS8DCQEMPAADXwHQA2kB7iAAA2EB1ANmAenAAAEpAU4BAgH/AVIB
|
||||
jAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB
|
||||
/wFSAYwBEAH/AVIBjAEQAf8BWgGUARAB/wFaAZUBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoB
|
||||
nAEQAf8BWgGUARgB/wFaAZQBGAH/AWMBnAEYAf8BYwGcARgB/wFjAaUBFwH/AWMBpQEXAf8BYwGlARcB
|
||||
/wFlAaABIQH/BAADHgErAjEBMAFMAzsBYwMiATEDBwEJAwQBBQMSARgDNgFXA1ABmgNiAeEB/wF4AQAC
|
||||
/wF4AQAB/wJRAVABnwMSARgcAAMHAQkDHAEnAyMBMgIZARoBIwMPARQDBAEFPAADXwHQA2kB7iAAA2EB
|
||||
1ANmAem8AANGAYABTgGIAQcB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8B
|
||||
UgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8BUgGMARAB/wFSAYwBEAH/AVoBlAEQAf8BWgGXARAB/wFaAZwB
|
||||
EAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBlAEYAf8BWgGUARgB/wFjAZwBGAH/AWMBoQEYAf8B
|
||||
YwGlARcB/wFjAaUBFwH/AXgBugEsAf8BCAEKAQAB/wQAAyQBNANFAXwCWgFYAbcDTgGUAz8BbQMoATsD
|
||||
HwEsAzkBXgNQAZoDYgHhAf8BeAEAAv8BeAEAAf8CUQFQAZ8DEgEYHAADEgEXAzwBZgNKAYkDQAFvAy4B
|
||||
RwMOARI8AANfAdADaQHuIAADYQHUA2YB6bwAATUBXgEHAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8B
|
||||
UgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8BUgGMARAB/wFaAZQB
|
||||
EAH/AVoBlAEQAf8BWgGbARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZYBFgH/AVoBlAEYAf8B
|
||||
XQGXARgB/wFjAZwBGAH/AWMBpQEXAf8BYwGlARcB/wFwAbMBIAH/ASsBUAEEAf8IAAMnAToCUwFRAaIB
|
||||
kAFfASEB+wJlAVwB5wJcAVoBxAJDAUIBdQMxAU0CQAE/AW4CUQFQAZ8CZQFgAeMB/wF4AQAC/wF4AQAB
|
||||
/wJRAVABnwMSARgcAAMZASIDTgGVAlsBXgHNAlYBVwGyA0QBegMdASkDBgEIBAIEATAAA18B0ANpAe4g
|
||||
AANhAdQDZgHpvAABSgGEAQYB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8B
|
||||
ZwGpARcB/wFSAYwBCAH/AUoBhAEGAf8BSgGEAQYB/wFSAYwBEAH/AVoBlAEQAf8BWgGXARAB/wFaAZwB
|
||||
EAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBlAEYAf8BWgGUARgB/wFfAZgBGAH/AWMBngEYAf8B
|
||||
YwGlARcB/wFrAakBHQH/ASkBUAEAAf8MAAMiATEDTgGYAm8BYAHzAmgBXgHwAmoBYQHmAloBVwHCAlUB
|
||||
UwGqA1MBpwJZAVcBvAJsAWEB6wH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBwAAxQBGwJDAUQBdwJWAVkB
|
||||
tgJbAV4BzQJWAVgBswM/AWwDJgE4AwwBDwMCAQMIAAMCAQMDDQERAw0BEQMNAREDDQERAw0BEQMNARED
|
||||
DQERAw0BEQMNAREDXwHTA2cB7wMNAREDDQERAw0BEQMNAREDDQERAw0BEQMNAREDDQERA2IB1wNnAeoD
|
||||
DQERAw0BEQMNAREDDQERAw0BEQMNAREDDQERAw0BEQMNAREDBAEFlAABSgGEAQYB/wFSAYwBCAH/AVIB
|
||||
jAEIAf8BUgGMAQgB/wFSAYwBCAH/AWkBpAEeAf8BLAFQAQMB/wEIAQoBAAH/ATcBYQEHAf8BUgGMAQ4B
|
||||
/wFSAYwBEAH/AX8BwQEyAf8BWwFeAVsB0wNaAb8BLwFZAQAB/wFEAXoBBQH/AVABigEIAf8BWgGcAQ4B
|
||||
/wFaAZwBEAH/AVoBnAEQAf8BTwGGARAB/wFEAXQBDAH/A1oBvxAAAhoBGQEjA0QBewJdAVsBygJjAV8B
|
||||
2gJpAWAB6AJnAVkB7wJlAV0B7AJhAVwB1gJfAVsB2AJoAVMB9AH/AXgBAAL/AXgBAAH/AlEBUAGfAxIB
|
||||
GBwAAw8BEwM0AVMDTQGSAl0BYQHPAl0BYQHUAlIBVAGoAkEBQgFyAyYBOAMUARsDBgEIAwIBAwNaAcID
|
||||
fwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8D
|
||||
fwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8DfwH/A38B/wN/Af8D
|
||||
YgHclAABSgGMAQAB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AWcBnQEnAf8BCAEKAQAB
|
||||
/wEKAQ8BAAH/AUIBdwEDAf8BUgGMARAB/wFaAZwBEAH/ASUBQQEFAf8EAAM6AWABCAEKAQAB/wEIAQoB
|
||||
AAH/BAADRgGAA0YBgANGAYAcAAMKAQ0DIgExAzQBVANEAXgCUQFQAZ8CYQFdAc8CagFeAe0CZQFdAewC
|
||||
aAFeAfABkAFfASEB+wH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBwAAwYBCAMYASEDMQFNAkwBTQGRAlgB
|
||||
WgG9Al0BYQHRAlkBXAHDAlEBUwGiAz0BZwIZARoBIwMMAQ8DQAFvA1UBrQNVAa0DVQGtA1UBrQNVAa0D
|
||||
VQGtA1UBrQNVAa0DVQGtA2gB8AN9AfoDVQGtA1UBrQNVAa0DVQGtA1UBrQNVAa0DVQGtA1UBrQNwAfED
|
||||
fAH4A1UBrQNVAa0DVQGtA1UBrQNVAa0DVQGtA1UBrQNVAa0DVQGtA0cBgZQAATsBbQECAf8BUgGMAQgB
|
||||
/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFTAY4BEAH/AQ8BGwEAAf8BIwFDAQAB/wFSAYwBEAH/AVIB
|
||||
jAEQAf8BewG9ATAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB
|
||||
/wEIAQoBAAH/KAADAwEEAwkBCwMiATEDOAFbAk8BTgGXAl8BXAHIAmYBXwHlAXcBbwFRAfcBvgFSAUAB
|
||||
/QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBwABAEDAgEDAxUBHAM1AVYCSwFMAY8CXAFfAcgCXQFjAd8C
|
||||
YAFlAeMCUgFTAaUDNAFTAxwBJygAA18B0ANpAe4gAANhAdQDZgHpvAABCAEKAQAB/wFSAYwBCAH/AVIB
|
||||
jAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BTgGCAQ8B/wFKAYQBBgH/AVIBjAEQAf8BYwGlARcB
|
||||
/wEIAQoBAAH/AQgBCgEAAf8BEwEjAQAB/wFCAXMBBgH/ASABPwEAAf8BCAEKAQAB/wEIAQoBAAH/AQgB
|
||||
CgEAAf8BCAEKAQAB/wEIAQoBAAH/IAAEAQMDAQQDDAEQAxgBIAMpAT0DPgFqAlcBVgG1AmYBXwHlAXcB
|
||||
bwFRAfcB/wF4AQAC/wF4AQAB/wJRAVABnwMSARggAAQBAwcBCQMUARsDKgFAA0MBdgNVAa8CWgFjAekC
|
||||
WwFfAdACUAFRAZ8DMwFRKAADXwHQA2kB7iAAA2EB1ANmAenAAAFCAXMBBgH/AVIBjAEIAf8BUgGMAQgB
|
||||
/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBEAH/AVIBjAEQAf8BSgGEAQYB/wEQAR4BAAH/ATEB
|
||||
WgEAAf8BTQGEAQ0B/wFaAZwBEAH/AVoBnAEQAf8BUgGMAQgB/wEQAR4BAAH/AQgBCgEAAf8BCAEKAQAB
|
||||
/wNGAYAsAAMCAQMDCwEOAyABLgNDAXYCVwFVAbECZgFgAeABZwFjAUgB9gGDAWoBQQH5AlEBUAGcAxIB
|
||||
FwwABAEDDAEQAxcBHwMdASgDHQEoAwwBDwgAAw8BFAImAScBOQJHAUgBgwNiAeECXAFlAecDXgHSAj8B
|
||||
QAFuKAADXwHQA2kB7iAAA2EB1ANmAenEAAFJAYkBAAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIB
|
||||
jAEIAf8BUgGMARAB/wFSAYwBEAH/AVIBjAEQAf8BUgGMARAB/wFaAZQBEAH/AVoBnAEQAf8BWgGcARAB
|
||||
/wFaAZwBEAH/AVoBnAEQAf8BWgGUARgB/wFCAXMBBgH/AQoBDgEAAf8wAAQBAwMBBAMMAQ8DHgEqAzoB
|
||||
YQJZAVcBuQJjAVsB5ANiAe4CTwFOAZcDEgEXDAADAgEDAyEBLwM2AVkCQgFDAXUCQQFCAXMDHgErCAAD
|
||||
BAEFAwwBDwM4AVwCXQFgAc4CXQFlAewCWQFnAe8DRgF/KAADXwHQA2kB7iAAA2EB1ANmAenIAAE6AWsB
|
||||
AAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8BUgGMARAB/wFaAZQBEAH/AVoBlAEQAf8B
|
||||
WgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZQBGAH/AVoBlAEYAf8BYwGlARcB/wEZASwB
|
||||
AwH/OAADAgEDAwgBCgMgAS0CQQFAAXECTQFMAZEDUAGaAjsBOgFiAwwBDwwAAwMBBAMrAUEDRAF6A1MB
|
||||
pwNVAa0DNwFaAxgBIAMJAQsDBgEHAw0BEQM5AV8CXQFhAdECWQFnAe8CYAFvAfMCRgFHAYEoAANfAdAD
|
||||
aQHuIAADYQHUA2YB6cwAASwBVQEAAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8BUgGMARAB/wFaAZQB
|
||||
EAH/AVoBlAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZQBGAH/AVoBlAEYAf8B
|
||||
IQFBAQAB/0AABAIDBwEJAxAEFQEcAhYBFQEdAw8BEwMCAQMMAAMDAQQDMANLAUwBjwJbAV0BygJbAWEB
|
||||
3gNOAZQDNAFTAxUBHAMNAREDHgErAkMBRAF3Al0BYwHfAmUBcAHxAloBYwHpA0QBeygAA18B0ANpAe4g
|
||||
AANhAdQDZgHpyAABEgEiAQAB/wFMAYYBBgH/AVIBjAEIAf8BWgGcARAB/wFQAYoBCAH/AVIBjAEQAf8B
|
||||
WgGUARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAERAf8BaQGrAR8B/wEIAQoB
|
||||
AAH/bAADAgEDAyEBLwM6AWEDVQGtAl8BYwHaA1oBvwJQAVEBnwNEAXoCQQFCAXIDSQGFAlYBVwGyAl4B
|
||||
agHtAmABZAHbAlUBVwGxAzgBWygAA18B0ANpAe4gAANhAdQDZgHpyAABEAEeAQAB/wFIAX0BBwH/AVkB
|
||||
kwETAf8BVQGIARgB/wgAASEBQQEAAf8BQgF7AQAB/wFSAYwBCAH/AVUBkQEIAf8BOQFmAQQB/wNZAe94
|
||||
AAMGAQgDFwEfA0QBewJZAVwBxgJbAWMB5AJTAWgB9ANiAe4DYgHuAmUBcAHxAkgBZwH2AisBjwH8AlkB
|
||||
XAG+Az4BawMkATQoAANfAdADaQHuIAADYQHUA2YB6dAAAR4BOgEAAf+cAAQCAwkBDAMqAz8BQAFuA04B
|
||||
lgJWAVgBswJZAVwBwQJaAV0BxwJaAV0BxwJXAVkBuQJRAVIBpAJAAUEBcQMlATYDEwEZKAADXwHQA2kB
|
||||
7iAAA2EB1ANmAen/AHkABAEDCwEOAyYBOAM5AV4DRgF9AkoBSwGLA0oBiQM+AWsDKgE/AxcBHwMCAQMs
|
||||
AANTAaIDWgG/IAADVAGmA1kBu6gAAUIBTQE+BwABPgMAASgDAAGAAwABIAMAAQEBAAEBBgABAhYAA/8B
|
||||
AAP/AccCAAEHAv8BzwHzAf8EAAL/Ac8BhwIAAQcC/wHPAfMB/wQAAf8B/gEAAQcCAAEHAv8BzwHzAf8E
|
||||
AAH/AfwBAAEHAgABBwL/Ac8B8wH/BAAB/wH4AQABDwIAAQcC/wHPAfMB/wQAAf8B8AEAAQcCAAEHAv8B
|
||||
zwHzAf8EAAH/AeABAAEDAgABBwL/Ac8B8wH/BAAB/wHAAQABAQH8AQMD/wHPAfMB/wQAAf8BwAEAAQEB
|
||||
/AEDA/8BzwHzAf8EAAH/AeACAAH8AQMB4AEfCAAB/wH8ASABAAH8AQMB4AEfCAAB/wH+AeABAAH8AQMB
|
||||
4AEfCAAB/wHAAgAB/AEDAeABHwH/Ac8B8wH/BAAB/wGAAgAB/AEDAeABHwH/Ac8B8wH/BAAB/wMAAfwB
|
||||
AwHgAR8B/wHPAfMB/wQAAf4CAAEBAQABAwHgAR8B/wHPAfMB/wQAAfwCAAEBAQABAwH4AR8B/wHPAfMB
|
||||
/wQAAfgCAAEBAQABAwH4AR8B/wHPAfMB/wQAAfgCAAEDAQABAwH4AQMB/wHPAfMB/wQAAfgCAAEHAQAB
|
||||
AwH4AQMIAAH4AgABDwEAAQMB+AkAAfgBAAFEAX8BAAEDAfgJAAH4AQABAQH/AYABAwH4AQAB/wHPAfMB
|
||||
/wQAAfgCAAF/AYABAwH8AQAB/wHPAfMB/wQAAfwCAAF/AfABAwGBAYAB/wHPAfMB/wQAAf4CAAH/AfAB
|
||||
AwGBAYAB/wHPAfMB/wQAAf8CAAH/AfwBAwGAAQAB/wHPAfMB/wQAAf8BgAEBAf8B/gEDAYABAAH/Ac8B
|
||||
8wH/BAAB/wEAAQMD/wGAAQAB/wHPAfMB/wQAAf8BDAEPA/8BwAEAAf8BzwHzAf8EAAH/Ad8E/wHAAQAB
|
||||
/wHPAfMB/wQABv8B8AEBAf8BzwHzAf8EAAs=
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="ilStoreThumbnails.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>12, 128</value>
|
||||
</metadata>
|
||||
<metadata name="ilTabIcons.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>20, 44</value>
|
||||
</metadata>
|
||||
<data name="ilTabIcons.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
|
||||
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
|
||||
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAshIAAAJNU0Z0AUkBTAIBAQQB
|
||||
AAGoAQIBqAECARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAASADAAEBAQABIAYAASD/
|
||||
AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/ACIAA2cB7wJnAVkB7wFnAV0BWQHvAWcBWwFZAe8B
|
||||
ZwFbAVkB7wFnAlkB7wFnAWQBWQHvA2cB7wNnAe8DZwHvA2cB7wNnAe8DZwHvA2cB7wNnAe8DZwHvAwcB
|
||||
CQMqAT8DRQF8A1kBuwNjAd8DaAH0A4AB/gOBAf8DgQH/A4EB/wOAAf4DaAH0A2MB3wNaAboDRAF6AycB
|
||||
OjgAAzMBUQNuAfUIAAM3AVoDWAG4A2MB3wJjAV0B3wFiAl0B3wNdAd8DXQHfAWECXQHfA2MB3wNjAd8D
|
||||
VQGsAzABSwgAA/gB/wG5AZUBPAH/AYMBfQFuAf8BhAF9AWwB/wGqAYQBJwH/AawBewEAAf8BzAG8AZQB
|
||||
/wN+Af8DfgH/A34B/wN+Af8DfgH/A34B/wN+Af8DfgH/A44B/wNDAXUDXQHMA3wB+AOBAf8DgQH/A4EB
|
||||
/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A3wB+ANUAag4AAMSARgDPwFtBAADOwFiA10B
|
||||
xQNoAfQBnwFlATEB/wGXAVMBFwH/AZYBSwEJAf8BkwFGAQEB/wGMAUMBAwH/AX0BQAELAf8BawFAARoB
|
||||
/wFuAVABNgH/A2gB8ANaAbcDNAFUBAAE/wGXAYsBbQH/AoEBgAH/AYIBgQGAAf8BmAGIAWAB/wHKAZAB
|
||||
AAH/Ad0BzAGfAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOTAf8DagHtA30B+gOBAf8D
|
||||
gQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DVQGvNAADXwHTAz0B
|
||||
ZwQAAzUBVQNdAccCbgFaAfUBuAFlARsB/wG5AVgBAgH/AckBXwEAAf8B2AFlAQAB/wHcAWcBAAH/AdYB
|
||||
ZAEAAf8BwwFcAQAB/wGiAUwBAAH/AXwBOwEDAf8BbgFGASMB/wNoAfADWgG3AzABSgT/AYYBhAF9Af8D
|
||||
gQH/A4EB/wGHAYMBegH/Ac8BlAEAAf8B3gHMAZ8B/wPgAf8D4AH/A+AB/wPgAf8D4AH/A+AB/wPgAf8D
|
||||
4AH/A7wB/wNjAd8DbgH1A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8D
|
||||
gQH/A4EB/wNVAa80AANaAcIDNAFTBAADXAHEAnwBXAH4AdQBcQEYAf8B1wFlAQAB/wHlAWwBAAH/AfIB
|
||||
cgEAAf8B+gF1AQAB/wH8AXYBAAH/AfoBdgEAAf8B8wFyAQAB/wHiAWsBAAH/Ab0BWQEAAf8BhwFAAQAB
|
||||
/wFxAUgBIwH/A2gB8ANWAasE/wGLAYYBegH/A4EB/wOBAf8BjgGGAXEB/wHPAZQBAAH/Ad4BzAGfIf8D
|
||||
ygH/AzYBWANbAcADbgH1A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8D
|
||||
aAH0A1IBpBAAAw0BEQM/AWwDUwGnAVwCWQG+AVgCVgGzAUgCRwGDAyEBMAQAA28B8wM6AWAIAAH+Ad0B
|
||||
wQH/Ae0BgAEgAf8B7QFxAQIB/wHzAXMBAAH/AfoBdgEAAf8B/gF4AQAC/wF7AQgC/wGIAScC/wGiAVMB
|
||||
/wH+AYEBFwH/AfwBeAEEAf8B7AFvAQAB/wHBAVsBAAH/AYYBQQEDAf8BeAFWATYB/wNjAd8E/wGsAZYB
|
||||
YAH/AYMBggF/Af8BhQGCAX0B/wGzAZMBRAH/Ac8BlAEAAf8B3gHMAZ8B/wOwAf8DsAH/A7AB/wOwAf8D
|
||||
sAH/A7AB/wOwAf8DsAH/A6gB/wMCAQMDGgEjAzgBXANUAagDYgHXA3AB8QOAAf4DgQH/A4EB/wOBAf8D
|
||||
gQH9A2gB8ANhAdQDUwGlAzYBWQMYASAIAAMaASQDUgGgAmMBSAH2AaIBcwEAAf8BrgF8AQAB/wGwAX0B
|
||||
AAH/AagBeAEAAf8BlQFqAQAB/wKAAVUB/gFcAlkBxgNXAbUDFgEeCAAB/wGyAW8B/wH9AYABEQH/AfwB
|
||||
dwEBAf8B/QF3AQAC/wF4AQAC/wF/AQ8C/wGSATsC/wGzAYMC/wHqAeAC/wGQAT0C/wF7AQoB/wH8AXcB
|
||||
AAH/AeUBbAEAAf8BsQFUAQAB/wGEAUsBGgH/A2MB3wT/AdkBqgE3Af8BvgGYATgB/wHAAZgBNgH/AdwB
|
||||
ogEUAf8BzwGUAQAB/wHeAcwBnwH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DkwH/RAAD
|
||||
IAEtAmMBWgHpAb8BiAEAAf8BzQGVAQoB/wGwAYgBJwH/AXMBZAE/Af8BTQFLAUcB/wFOAUsBQgH/AWYB
|
||||
VwExAf8BmgF0ARcB/wGkAXYBAwH/AXABTwEAAf8DQwF2BAEEAAH/AZoBQgL/AYMBFQH/Af4BegEEAv8B
|
||||
eAEAAv8BeAEAAv8BlQE/Av8BygGuAv8B2gHGAv8B7QHlAv8BlgFJAv8BfAENAf8B/gF4AQAB/wH0AXMB
|
||||
AAH/AdABYgEAAf8BmgFOAQoB/wFjAl0B3wT/AeEBrgExAf8BvQGXATsB/wHAAZgBNQH/AeMBpQEKAf8B
|
||||
zwGUAQAB/wHeAcwBnwH/A8AB/wPAAf8DwAH/A8AB/wPAAf8DwAH/A8AB/wPAAf8DrwH/CAADAgEDAwgB
|
||||
CgMhAS8DMQFOAz0BaANDAXYDRAF6A0MBdQM9AWcDMQFNAyABLgMHAQkEAggAAmMBWgHpAdkBmgEAAf8B
|
||||
2gGjARwB/wKOAYwB/wOKAf8DlwH/A5sB/wORAf8DdAH/A0gB/wFDAUIBPwH/AbUBgwEHAf8BegFXAQAB
|
||||
/wM2AVgEAAH/AZUBNwL/AYkBHwL/AX0BCAL/AXgBAAL/AXgBAAL/AagBXAL/AeABzQL/AaEBZgL/AdgB
|
||||
xQL/AbkBlAL/AYcBIwL/AXgBAAH/AfsBdgEAAf8B4gFqAQAB/wGvAVQBAwH/AWMCXQHfBP8BuwGdAVMB
|
||||
/wGIAYQBeQH/AYwBhQF0Af8BxAGZATAB/wHPAZQBAAH/Ad4BzAGfIf8DygH/BAADEwEaAzkBXQNZAbwD
|
||||
ZAHbA2oB7QNjAfYDXwH7A4EB/QNfAfsDYwH2A2UB7ANjAdoDWgG6AzgBXAMTARoDQwF2AekBpwECAf8B
|
||||
6QGrARIB/wHQAcoBuwH/A6wB/wNdAf8DTAH/A0sB/wNEAf8DDwH/A7MB/wNmAf8BVAFMAToB/wGuAX0B
|
||||
BAH/A10BzAQAAf8BoAFJAv8BkgExAv8BgQERAv8BeQEDAv8BeAEAAv8BqAFcAv8B4AHNAv8BoQFmAv8B
|
||||
2AHFAv8BwAGfAv8BiQEnAv8BeAEAAf8B/gF4AQAB/wHsAW8BAAH/Ab8BWgECAf8BYwJdAd8E/wGUAYoB
|
||||
cwH/A4EB/wOBAf8BmgGKAWMB/wHPAZQBAAH/Ad4BzAGfAf8D0AH/A9AB/wPQAf8D0AH/A9AB/wPQAf8D
|
||||
0AH/A9AB/wO1Af8DGgEkA1YBrgNoAfQDgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8D
|
||||
gQH/A4EB/wNrAfIDUgGhAmoBYQHmAe0BrQEQAf8B9AHQAXYB/wP6Af8D+gH/A30B/wN/Af8DgAH/A4AB
|
||||
/wN+Af8DhAH/A7sB/wNqAf8BqAGAARwB/wJjAUgB9gQAAf8BswFvAv8BngFIAv8BiAEeAv8BfAEHAv8B
|
||||
eAEAAv8BmAFDAv8BzgG0Av8B1wHAAv8B6gHgAv8BnQFXAv8BfgERAv8BeAEAAv8BeAEAAf8B8AFxAQAB
|
||||
/wHLAWQBCQH/AWMBYQFdAd8E/wGGAYMBfgH/A4EB/wOBAf8BhgGDAXsB/wHPAZQBAAH/Ad4BzAGfAf8D
|
||||
gQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOTAf8DVwGyA2UB5wOBAf8DgQH/A4EB/wOBAf8D
|
||||
gQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DVQGvA2IB7gHvAbQBIQH/AfcB3AGXCf8D
|
||||
kQH/A4gB/wOHAf8DhwH/A4EB/wNXAf8D5gH/A6MB/wG2AZEBNgH/AmoBQQH5BAAB/wHMAZ8C/wGsAWMC
|
||||
/wGTATMC/wGBAREC/wF5AQIC/wGCARYC/wGaAUsC/wGuAXgC/wGlAVcC/wGBARcC/wF5AQQC/wF4AQAC
|
||||
/wF4AQAB/wHwAXEBAAH/AdUBcQEXAf8CYwFdAd8E/wGLAYYBeQH/A4EB/wOBAf8BjgGGAXEB/wHPAZQB
|
||||
AAH/Ad4BzAGfAf8DoQH/A6EB/wOhAf8DoQH/A6EB/wOhAf8DoQH/A6EB/wOhAf8DbwHzA18B+wOBAf8D
|
||||
gQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DVQGvA0sBjQHwAb4B
|
||||
PwH/AfQBzQFsIf8D+wH/A9AB/wHXAacBMQH/AmEBXQHRBAAB/wHpAdUC/wG8AYEC/wGkAVQC/wGOASoC
|
||||
/wF/AQ0C/wF5AQIC/wF7AQkC/wGCAR0C/wF4AQAC/wF4AQAC/wF4AQEC/wF6AQQC/wF6AQMB/wHzAXQB
|
||||
AwH/AeIBhAEyAf8DYwHfBP8BpwGUAWcB/wGDAYIBfwH/AYUBgwF+Af8BsAGUAU4B/wHTAZcBAgH/AeAB
|
||||
zgGfAf8D5wH/A+cB/wPnAf8D5wH/A+cB/wPnAf8D5wH/A+cB/wPAAf8DZAHbA2gB9AOBAf8DgQH/A4EB
|
||||
/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DVQGvAwcBCQNiAe4B8QG8ATsB
|
||||
/wH6AeoBwgH/A9wB/wN3Af8DaAH/A2gB/wNoAf8DMgn/AfIB3QGpAf8B6gGpAQgB/wM+AWoEAANeAdID
|
||||
agH5Af8BuwF9Av8BowFSAv8BkAEsAv8BggETAv8BfQEIAv8BegEEAv8BeQECAv8BegEEAv8BfQEJAv8B
|
||||
gAEPAv8BfwENAf8B+AGGASAB/wNoAfQDWAG4BP8B1wGxAVIB/wGaAY8BdAH/AaABkgFtAf8B4AGvATcB
|
||||
/wHnAakBEAH/AesB1QGgAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOTAf8DPAFkA18B
|
||||
yQN9AfoDgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wN9AfoDVQGqBAAD
|
||||
MwFRA2gB8AHzAcYBWAH/AfoB5wG4Fv8B/gH7Af8B+QHiAaoB/wHvAbgBLQH/A04BlgQCBAADPAFmA2MB
|
||||
1QN8AfgB/wG+AYUC/wGqAV8C/wGZAT4C/wGNAScC/wGGARoC/wGDARUC/wGFARkC/wGKASIC/wGNASgC
|
||||
/wGTATMB/wJuAWgB9QNdAcUDNgFZBP8B9AHNAWwB/wH0AcsBZgH/AfQBywFlAf8B9AHLAWUB/wHxAcEB
|
||||
SQH/AfkB4wGsAf8DiQH/A4kB/wOJAf8DiQH/A4kB/wOJAf8DiQH/A4kB/wOaAf8DBgEIAzEBTANQAZsD
|
||||
ZQHsA30B+gOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DfQH6A2oB7QNQAZsDLwFJCAADIgExA18B
|
||||
yQJ9AWcB+gHzAcoBZQH/AfkB4QGmAf8B+wHtAcwB/wH7AewByAH/AfgB3QGbAf8DgAH+AmUBXgHiAz0B
|
||||
aAQBDAADQgFyA2MB1QNqAfkB/wHJAZkC/wG8AX8C/wGuAWYC/wGkAVMC/wGfAUoC/wGfAUsC/wGjAVEC
|
||||
/wGnAVgB/wN8AfgDXQHHAzsBYgQAQP8IAAMFAQYDEgEXAzoBYANRAZ8DXwHTA2cB7wNjAfYDYgHuA14B
|
||||
0gNRAZ4DOQFfAxEBFgMFAQYUAAMPARMDRwGCA2QB2wJ+AW8B/ANnAeoDVAGoAygBOxwAAzwBZQNeAdIB
|
||||
/wHvAeAC/wHcAbwC/wHNAZ8C/wHBAYoC/wG7AX8C/wG/AYYC/wHNAaEC/wHpAdYB/wNcAcQDNQFVCAAB
|
||||
QgFNAT4HAAE+AwABKAMAAUADAAEgAwABAQEAAQEGAAEBFgAD/4UAAf8B/AHAAQMEAAH/AfwBgAEBBAAB
|
||||
/wH5BgAB/wH5BgAB8AETBgABwAEDBAAC/wGAAQEEAAHAAQEBgAEBBAABgAIAAQEHAAEBBwABAQcAAQEH
|
||||
AAEBBgABgAEBBgABwAEDAYABAQIAAcABAQHwAR8BwAEDCw==
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="ctxmChangeStatus.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
@ -628,12 +629,6 @@
|
||||
AB/+AAA//wAAf/+AAP//4AP///4///////8=
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="ctxmAdminUserList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>461, 24</value>
|
||||
</metadata>
|
||||
<metadata name="ctxmAdminRoomList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>461, 49</value>
|
||||
</metadata>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>90</value>
|
||||
</metadata>
|
||||
|
||||
20
qtc-net-client-2/Forms/Profile.Designer.cs
generated
20
qtc-net-client-2/Forms/Profile.Designer.cs
generated
@ -37,11 +37,13 @@
|
||||
btnDecline = new Button();
|
||||
btnCancelRequest = new Button();
|
||||
btnMessage = new Button();
|
||||
pbUserStatus = new PictureBox();
|
||||
pbCurrencyIcon = new PictureBox();
|
||||
lblCurrencyAmount = new Label();
|
||||
flpUsernameCurrency = new FlowLayoutPanel();
|
||||
pCurrency = new Panel();
|
||||
((System.ComponentModel.ISupportInitialize)pbUserPfp).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)pbUserStatus).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)pbCurrencyIcon).BeginInit();
|
||||
flpUsernameCurrency.SuspendLayout();
|
||||
pCurrency.SuspendLayout();
|
||||
@ -50,9 +52,9 @@
|
||||
// pbUserPfp
|
||||
//
|
||||
pbUserPfp.Image = Properties.Resources.DefaultPfp;
|
||||
pbUserPfp.Location = new Point(9, 5);
|
||||
pbUserPfp.Location = new Point(13, 11);
|
||||
pbUserPfp.Name = "pbUserPfp";
|
||||
pbUserPfp.Size = new Size(139, 138);
|
||||
pbUserPfp.Size = new Size(128, 128);
|
||||
pbUserPfp.SizeMode = PictureBoxSizeMode.StretchImage;
|
||||
pbUserPfp.TabIndex = 2;
|
||||
pbUserPfp.TabStop = false;
|
||||
@ -146,6 +148,17 @@
|
||||
btnMessage.Visible = false;
|
||||
btnMessage.Click += btnMessage_Click;
|
||||
//
|
||||
// pbUserStatus
|
||||
//
|
||||
pbUserStatus.BackColor = Color.Transparent;
|
||||
pbUserStatus.Image = Properties.Resources.OfflineIcon;
|
||||
pbUserStatus.Location = new Point(115, 1);
|
||||
pbUserStatus.Name = "pbUserStatus";
|
||||
pbUserStatus.Size = new Size(32, 32);
|
||||
pbUserStatus.SizeMode = PictureBoxSizeMode.StretchImage;
|
||||
pbUserStatus.TabIndex = 10;
|
||||
pbUserStatus.TabStop = false;
|
||||
//
|
||||
// pbCurrencyIcon
|
||||
//
|
||||
pbCurrencyIcon.Image = Properties.Resources.CurrencyIcon;
|
||||
@ -200,6 +213,7 @@
|
||||
Controls.Add(btnAccept);
|
||||
Controls.Add(btnDecline);
|
||||
Controls.Add(btnCancelRequest);
|
||||
Controls.Add(pbUserStatus);
|
||||
Controls.Add(btnAddContact);
|
||||
Controls.Add(rtxtBio);
|
||||
Controls.Add(pbUserPfp);
|
||||
@ -216,6 +230,7 @@
|
||||
FormClosed += Profile_FormClosed;
|
||||
Load += frmProfile_Load;
|
||||
((System.ComponentModel.ISupportInitialize)pbUserPfp).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)pbUserStatus).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)pbCurrencyIcon).EndInit();
|
||||
flpUsernameCurrency.ResumeLayout(false);
|
||||
flpUsernameCurrency.PerformLayout();
|
||||
@ -234,6 +249,7 @@
|
||||
private Button btnDecline;
|
||||
private Button btnCancelRequest;
|
||||
private Button btnMessage;
|
||||
private PictureBox pbUserStatus;
|
||||
private PictureBox pbCurrencyIcon;
|
||||
private Label lblCurrencyAmount;
|
||||
private FlowLayoutPanel flpUsernameCurrency;
|
||||
|
||||
@ -1,46 +1,41 @@
|
||||
using qtc_net_client_2.ClientModel;
|
||||
using qtc_net_client_2.Properties;
|
||||
using qtc_net_client_2.Services;
|
||||
using QtCNETAPI.Dtos.User;
|
||||
using QtCNETAPI.Models;
|
||||
using QtCNETAPI.Schema;
|
||||
using QtCNETAPI.Dtos.User;
|
||||
using QtCNETAPI.Services.ApiService;
|
||||
using QtCNETAPI.Services.GatewayService;
|
||||
using QtCNETAPI.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Design;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Drawing.Imaging;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using QtCNETAPI.Services.GatewayService;
|
||||
using qtc_net_client_2.ClientModel;
|
||||
using qtc_net_client_2.Properties;
|
||||
using qtc_net_client_2.Services;
|
||||
using QtCNETAPI.Schema;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing.Imaging;
|
||||
using System.Drawing.Design;
|
||||
using System.Drawing.Drawing2D;
|
||||
|
||||
namespace qtc_net_client_2.Forms
|
||||
{
|
||||
public partial class Profile : Form
|
||||
{
|
||||
private UserInformationDto _userInformationDto;
|
||||
private ImageFactory _imgFactory = new();
|
||||
private IApiService _apiService;
|
||||
private IGatewayService _gatewayService;
|
||||
|
||||
private ServiceResponse<byte[]>? pfpRes;
|
||||
byte[]? cosmeticRes;
|
||||
|
||||
private List<Contact> contactsList;
|
||||
public Profile(UserInformationDto userInfo, ServiceResponse<byte[]>? pfp, List<Contact> contacts, IApiService apiService, IGatewayService gatewayService, byte[]? cosmetic = null)
|
||||
public Profile(UserInformationDto userInfo, ServiceResponse<byte[]>? pfp, List<Contact> contacts, IApiService apiService, IGatewayService gatewayService)
|
||||
{
|
||||
_userInformationDto = userInfo;
|
||||
_apiService = apiService;
|
||||
_gatewayService = gatewayService;
|
||||
pfpRes = pfp;
|
||||
cosmeticRes = cosmetic;
|
||||
contactsList = contacts;
|
||||
|
||||
InitializeComponent();
|
||||
@ -52,45 +47,53 @@ namespace qtc_net_client_2.Forms
|
||||
lblCurrencyAmount.Text = _userInformationDto.CurrencyAmount.ToString("N0");
|
||||
rtxtBio.Text = _userInformationDto.Bio;
|
||||
|
||||
Bitmap? pfp = null;
|
||||
pbUserPfp.Location = new(13, 11);
|
||||
pbUserPfp.Size = new(128, 128);
|
||||
|
||||
if (pfpRes != null && pfpRes.Success && pfpRes.Data != null)
|
||||
{
|
||||
using (var ms = new MemoryStream(pfpRes.Data))
|
||||
{
|
||||
pfp = new Bitmap(ms);
|
||||
pbUserPfp.Image = new Bitmap(ms);
|
||||
}
|
||||
}
|
||||
|
||||
var userStatus = (UserStatus)_userInformationDto.Status;
|
||||
Bitmap precenseImage = Resources.OnlineIcon;
|
||||
switch (userStatus)
|
||||
{
|
||||
case UserStatus.Online:
|
||||
precenseImage = Resources.OnlineIcon;
|
||||
pbUserStatus.Image = Resources.OnlineIcon;
|
||||
break;
|
||||
case UserStatus.Away:
|
||||
precenseImage = Resources.AwayIcon;
|
||||
pbUserStatus.Image = Resources.AwayIcon;
|
||||
break;
|
||||
case UserStatus.DoNotDisturb:
|
||||
precenseImage = Resources.DNDIcon;
|
||||
pbUserStatus.Image = Resources.DNDIcon;
|
||||
break;
|
||||
case UserStatus.Offline:
|
||||
precenseImage = Resources.OfflineIcon;
|
||||
pbUserStatus.Image = Resources.OfflineIcon;
|
||||
break;
|
||||
}
|
||||
|
||||
Bitmap? cosmetic = null;
|
||||
if(cosmeticRes != null)
|
||||
if (_userInformationDto.ProfileCosmeticId != 0)
|
||||
{
|
||||
using var ms = new MemoryStream(cosmeticRes);
|
||||
cosmetic = new Bitmap(ms);
|
||||
var res = await _apiService.GetStoreItem(_userInformationDto.ProfileCosmeticId);
|
||||
if (res != null && res.Success && res.Data != null)
|
||||
{
|
||||
var client = new HttpClient();
|
||||
var response = await client.GetAsync(res.Data.AssetUrl);
|
||||
if (response.IsSuccessStatusCode)
|
||||
{
|
||||
using (var stream = await response.Content.ReadAsStreamAsync())
|
||||
{
|
||||
CombineProfileImageWithCosmetic(pbUserPfp.Image, new Bitmap(stream));
|
||||
}
|
||||
response.Dispose();
|
||||
}
|
||||
client.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
pbUserPfp.Image = _imgFactory.CreateProfileImage(precenseImage, pfp, cosmetic);
|
||||
precenseImage.Dispose();
|
||||
pfp?.Dispose();
|
||||
cosmetic?.Dispose();
|
||||
|
||||
if (_userInformationDto.Id == _apiService.CurrentUser!.Id)
|
||||
{
|
||||
btnAddContact.Visible = false;
|
||||
@ -182,9 +185,6 @@ namespace qtc_net_client_2.Forms
|
||||
|
||||
private async void btnAddContact_Click_Remove(object sender, EventArgs e)
|
||||
{
|
||||
var msgBoxResult = MessageBox.Show("Are You Sure You Want To Remove This User From Your Contacts?", "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
|
||||
if (msgBoxResult == DialogResult.No) return;
|
||||
|
||||
var result = await _apiService.RemoveContactFromCurrentUser(_userInformationDto.Id);
|
||||
if (result.Success)
|
||||
{
|
||||
@ -211,9 +211,6 @@ namespace qtc_net_client_2.Forms
|
||||
|
||||
private async void btnDecline_Click(object sender, EventArgs e)
|
||||
{
|
||||
var msgBoxResult = MessageBox.Show("Are You Sure You Want To Decline This Request?", "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
|
||||
if (msgBoxResult == DialogResult.No) return;
|
||||
|
||||
var result = await _apiService.RemoveContactFromCurrentUser(_userInformationDto.Id);
|
||||
if (result.Success)
|
||||
{
|
||||
@ -228,9 +225,6 @@ namespace qtc_net_client_2.Forms
|
||||
|
||||
private async void btnCancelRequest_Click(object sender, EventArgs e)
|
||||
{
|
||||
var msgBoxResult = MessageBox.Show("Are You Sure You Want To Cancel This Request?", "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
|
||||
if (msgBoxResult == DialogResult.No) return;
|
||||
|
||||
var result = await _apiService.RemoveContactFromCurrentUser(_userInformationDto.Id);
|
||||
if (result.Success)
|
||||
{
|
||||
@ -248,5 +242,24 @@ namespace qtc_net_client_2.Forms
|
||||
Close();
|
||||
frmDirectMessage.Show();
|
||||
}
|
||||
|
||||
private void CombineProfileImageWithCosmetic(Image pfp, Bitmap cosmetic)
|
||||
{
|
||||
cosmetic.MakeTransparent();
|
||||
Bitmap combined = new Bitmap(139, 138);
|
||||
|
||||
using (Graphics g = Graphics.FromImage(combined))
|
||||
{
|
||||
g.Clear(Color.Transparent);
|
||||
g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver;
|
||||
|
||||
g.DrawImage(pfp, 4, 6, 128, 128);
|
||||
g.DrawImage(cosmetic, 0, 0, 139, 138);
|
||||
}
|
||||
|
||||
pbUserPfp.Location = new(9, 5);
|
||||
pbUserPfp.Size = new(139, 138);
|
||||
pbUserPfp.Image = combined;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -17,7 +17,6 @@ namespace qtc_net_client_2.Forms
|
||||
public partial class ProfileEdit : Form
|
||||
{
|
||||
IApiService _apiService;
|
||||
private int currentCosmetic = 0;
|
||||
public ProfileEdit(IApiService apiService)
|
||||
{
|
||||
_apiService = apiService;
|
||||
@ -55,24 +54,15 @@ namespace qtc_net_client_2.Forms
|
||||
items.Add(cbi);
|
||||
}
|
||||
}
|
||||
} else
|
||||
{
|
||||
items.Add(new ComboBoxItem
|
||||
{
|
||||
Name = "(None)",
|
||||
Value = 0
|
||||
});
|
||||
}
|
||||
|
||||
cbCosmetic.DataSource = items;
|
||||
cbCosmetic.SelectedIndex = cbCosmetic.Items.IndexOf(items.FirstOrDefault(e => (int?)e.Value == _apiService.CurrentUser.ActiveProfileCosmetic));
|
||||
currentCosmetic = cbCosmetic.Items.IndexOf(items.FirstOrDefault(e => (int?)e.Value == _apiService.CurrentUser.ActiveProfileCosmetic));
|
||||
}
|
||||
|
||||
private async void btnSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
ComboBoxItem? selectedItem = (ComboBoxItem?)cbCosmetic.SelectedItem;
|
||||
int selectedItemId = 0;
|
||||
|
||||
// update user info
|
||||
UserUpdateInformationDto userUpdateInformationDto = new UserUpdateInformationDto
|
||||
@ -85,7 +75,7 @@ namespace qtc_net_client_2.Forms
|
||||
|
||||
if (selectedItem != null)
|
||||
{
|
||||
selectedItemId = (int?)selectedItem.Value ?? 0;
|
||||
int selectedItemId = (int?)selectedItem.Value ?? 0;
|
||||
userUpdateInformationDto.ProfileCosmeticId = selectedItemId;
|
||||
}
|
||||
|
||||
@ -93,8 +83,7 @@ namespace qtc_net_client_2.Forms
|
||||
|
||||
if (res.Success)
|
||||
{
|
||||
if (currentCosmetic != selectedItemId) DialogResult = DialogResult.Yes; // trigger ui refresh
|
||||
else DialogResult = DialogResult.OK;
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
}
|
||||
else
|
||||
|
||||
@ -43,7 +43,6 @@ namespace qtc_net_client_2.Forms
|
||||
|
||||
if(registerResult.Success)
|
||||
{
|
||||
MessageBox.Show("Registration Complete. If the server has email verification on, you may need to check your email for a verification link.\nIf you do not receive one, try logging in.");
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
} else
|
||||
|
||||
@ -1,104 +0,0 @@
|
||||
namespace qtc_net_client_2.Forms
|
||||
{
|
||||
partial class ResendVerificationEmail
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
pbLoginBanner = new PictureBox();
|
||||
tbEmail = new TextBox();
|
||||
lblHeader = new Label();
|
||||
btnSend = new Button();
|
||||
((System.ComponentModel.ISupportInitialize)pbLoginBanner).BeginInit();
|
||||
SuspendLayout();
|
||||
//
|
||||
// pbLoginBanner
|
||||
//
|
||||
pbLoginBanner.Image = Properties.Resources.LoginBanner;
|
||||
pbLoginBanner.Location = new Point(-4, 0);
|
||||
pbLoginBanner.Name = "pbLoginBanner";
|
||||
pbLoginBanner.Size = new Size(521, 99);
|
||||
pbLoginBanner.SizeMode = PictureBoxSizeMode.StretchImage;
|
||||
pbLoginBanner.TabIndex = 1;
|
||||
pbLoginBanner.TabStop = false;
|
||||
//
|
||||
// tbEmail
|
||||
//
|
||||
tbEmail.Location = new Point(50, 124);
|
||||
tbEmail.Name = "tbEmail";
|
||||
tbEmail.Size = new Size(424, 23);
|
||||
tbEmail.TabIndex = 3;
|
||||
//
|
||||
// lblHeader
|
||||
//
|
||||
lblHeader.AutoSize = true;
|
||||
lblHeader.Font = new Font("Segoe UI Light", 9F);
|
||||
lblHeader.ForeColor = SystemColors.ControlLight;
|
||||
lblHeader.Location = new Point(54, 106);
|
||||
lblHeader.Name = "lblHeader";
|
||||
lblHeader.Size = new Size(412, 15);
|
||||
lblHeader.TabIndex = 5;
|
||||
lblHeader.Text = "Please Enter Your Email, If An Account Exists With This Email, We'll Send You A Link";
|
||||
//
|
||||
// btnSend
|
||||
//
|
||||
btnSend.Location = new Point(224, 153);
|
||||
btnSend.Name = "btnSend";
|
||||
btnSend.Size = new Size(75, 23);
|
||||
btnSend.TabIndex = 6;
|
||||
btnSend.Text = "Send";
|
||||
btnSend.UseVisualStyleBackColor = true;
|
||||
btnSend.Click += btnSend_Click;
|
||||
//
|
||||
// ResendVerificationEmail
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||
AutoScaleMode = AutoScaleMode.Font;
|
||||
BackColor = Color.DodgerBlue;
|
||||
ClientSize = new Size(515, 187);
|
||||
Controls.Add(btnSend);
|
||||
Controls.Add(lblHeader);
|
||||
Controls.Add(tbEmail);
|
||||
Controls.Add(pbLoginBanner);
|
||||
FormBorderStyle = FormBorderStyle.FixedDialog;
|
||||
MaximizeBox = false;
|
||||
MinimizeBox = false;
|
||||
Name = "ResendVerificationEmail";
|
||||
StartPosition = FormStartPosition.CenterScreen;
|
||||
Text = "QtC.NET Client - Resend Verification Email";
|
||||
((System.ComponentModel.ISupportInitialize)pbLoginBanner).EndInit();
|
||||
ResumeLayout(false);
|
||||
PerformLayout();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private PictureBox pbLoginBanner;
|
||||
private TextBox tbEmail;
|
||||
private Label lblHeader;
|
||||
private Button btnSend;
|
||||
}
|
||||
}
|
||||
@ -1,43 +0,0 @@
|
||||
using QtCNETAPI.Services.ApiService;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace qtc_net_client_2.Forms
|
||||
{
|
||||
public partial class ResendVerificationEmail : Form
|
||||
{
|
||||
private IApiService _apiService;
|
||||
public ResendVerificationEmail(IApiService apiService)
|
||||
{
|
||||
_apiService = apiService;
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private async void btnSend_Click(object sender, EventArgs e)
|
||||
{
|
||||
if(!string.IsNullOrEmpty(tbEmail.Text))
|
||||
{
|
||||
tbEmail.Enabled = false;
|
||||
btnSend.Enabled = false;
|
||||
|
||||
var result = await _apiService.ResendVerificationEmail(tbEmail.Text);
|
||||
if(result != null && result.Success && result.Data)
|
||||
{
|
||||
MessageBox.Show("Got It! You should receive an email shortly.\nIf you do not receive an email, check your spam.", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
Close();
|
||||
} else
|
||||
{
|
||||
MessageBox.Show("Sorry, This Server Doesn't Have Email Features Enabled Or Something Went Wrong.\nIf you cannot login, you may need to contact the server admin.", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,120 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
221
qtc-net-client-2/Forms/ResetPassword.Designer.cs
generated
221
qtc-net-client-2/Forms/ResetPassword.Designer.cs
generated
@ -1,221 +0,0 @@
|
||||
namespace qtc_net_client_2.Forms
|
||||
{
|
||||
partial class ResetPassword
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
pEmailBox = new Panel();
|
||||
btnSend = new Button();
|
||||
lblHeader = new Label();
|
||||
tbEmail = new TextBox();
|
||||
pResetPasswordBox = new Panel();
|
||||
btnResetPassword = new Button();
|
||||
tbConfirmPassword = new TextBox();
|
||||
lblConfirmPassword = new Label();
|
||||
tbNewPassword = new TextBox();
|
||||
lblNewPassword = new Label();
|
||||
tbToken = new TextBox();
|
||||
lblToken = new Label();
|
||||
pbLoginBanner = new PictureBox();
|
||||
pEmailBox.SuspendLayout();
|
||||
pResetPasswordBox.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pbLoginBanner).BeginInit();
|
||||
SuspendLayout();
|
||||
//
|
||||
// pEmailBox
|
||||
//
|
||||
pEmailBox.Anchor = AnchorStyles.Bottom;
|
||||
pEmailBox.BorderStyle = BorderStyle.FixedSingle;
|
||||
pEmailBox.Controls.Add(btnSend);
|
||||
pEmailBox.Controls.Add(lblHeader);
|
||||
pEmailBox.Controls.Add(tbEmail);
|
||||
pEmailBox.Location = new Point(101, 125);
|
||||
pEmailBox.Name = "pEmailBox";
|
||||
pEmailBox.Size = new Size(458, 94);
|
||||
pEmailBox.TabIndex = 0;
|
||||
//
|
||||
// btnSend
|
||||
//
|
||||
btnSend.Location = new Point(193, 59);
|
||||
btnSend.Name = "btnSend";
|
||||
btnSend.Size = new Size(75, 23);
|
||||
btnSend.TabIndex = 9;
|
||||
btnSend.Text = "Send";
|
||||
btnSend.UseVisualStyleBackColor = true;
|
||||
btnSend.Click += btnSend_Click;
|
||||
//
|
||||
// lblHeader
|
||||
//
|
||||
lblHeader.AutoSize = true;
|
||||
lblHeader.Font = new Font("Segoe UI Light", 9F);
|
||||
lblHeader.ForeColor = SystemColors.ControlLight;
|
||||
lblHeader.Location = new Point(23, 12);
|
||||
lblHeader.Name = "lblHeader";
|
||||
lblHeader.Size = new Size(412, 15);
|
||||
lblHeader.TabIndex = 8;
|
||||
lblHeader.Text = "Please Enter Your Email, If An Account Exists With This Email, We'll Send You A Link";
|
||||
//
|
||||
// tbEmail
|
||||
//
|
||||
tbEmail.Location = new Point(19, 30);
|
||||
tbEmail.Name = "tbEmail";
|
||||
tbEmail.Size = new Size(424, 23);
|
||||
tbEmail.TabIndex = 7;
|
||||
//
|
||||
// pResetPasswordBox
|
||||
//
|
||||
pResetPasswordBox.Anchor = AnchorStyles.Bottom;
|
||||
pResetPasswordBox.BorderStyle = BorderStyle.FixedSingle;
|
||||
pResetPasswordBox.Controls.Add(btnResetPassword);
|
||||
pResetPasswordBox.Controls.Add(tbConfirmPassword);
|
||||
pResetPasswordBox.Controls.Add(lblConfirmPassword);
|
||||
pResetPasswordBox.Controls.Add(tbNewPassword);
|
||||
pResetPasswordBox.Controls.Add(lblNewPassword);
|
||||
pResetPasswordBox.Controls.Add(tbToken);
|
||||
pResetPasswordBox.Controls.Add(lblToken);
|
||||
pResetPasswordBox.Location = new Point(17, 106);
|
||||
pResetPasswordBox.Name = "pResetPasswordBox";
|
||||
pResetPasswordBox.Size = new Size(596, 138);
|
||||
pResetPasswordBox.TabIndex = 1;
|
||||
pResetPasswordBox.Visible = false;
|
||||
//
|
||||
// btnResetPassword
|
||||
//
|
||||
btnResetPassword.Location = new Point(270, 102);
|
||||
btnResetPassword.Name = "btnResetPassword";
|
||||
btnResetPassword.Size = new Size(100, 23);
|
||||
btnResetPassword.TabIndex = 15;
|
||||
btnResetPassword.Text = "Reset Password";
|
||||
btnResetPassword.UseVisualStyleBackColor = true;
|
||||
btnResetPassword.Click += btnResetPassword_Click;
|
||||
//
|
||||
// tbConfirmPassword
|
||||
//
|
||||
tbConfirmPassword.Location = new Point(123, 73);
|
||||
tbConfirmPassword.Name = "tbConfirmPassword";
|
||||
tbConfirmPassword.PasswordChar = '*';
|
||||
tbConfirmPassword.Size = new Size(424, 23);
|
||||
tbConfirmPassword.TabIndex = 14;
|
||||
//
|
||||
// lblConfirmPassword
|
||||
//
|
||||
lblConfirmPassword.AutoSize = true;
|
||||
lblConfirmPassword.Font = new Font("Segoe UI Light", 9F);
|
||||
lblConfirmPassword.ForeColor = SystemColors.ControlLight;
|
||||
lblConfirmPassword.Location = new Point(20, 76);
|
||||
lblConfirmPassword.Name = "lblConfirmPassword";
|
||||
lblConfirmPassword.Size = new Size(97, 15);
|
||||
lblConfirmPassword.TabIndex = 13;
|
||||
lblConfirmPassword.Text = "Confirm Password";
|
||||
//
|
||||
// tbNewPassword
|
||||
//
|
||||
tbNewPassword.Location = new Point(123, 44);
|
||||
tbNewPassword.Name = "tbNewPassword";
|
||||
tbNewPassword.PasswordChar = '*';
|
||||
tbNewPassword.Size = new Size(424, 23);
|
||||
tbNewPassword.TabIndex = 12;
|
||||
//
|
||||
// lblNewPassword
|
||||
//
|
||||
lblNewPassword.AutoSize = true;
|
||||
lblNewPassword.Font = new Font("Segoe UI Light", 9F);
|
||||
lblNewPassword.ForeColor = SystemColors.ControlLight;
|
||||
lblNewPassword.Location = new Point(36, 47);
|
||||
lblNewPassword.Name = "lblNewPassword";
|
||||
lblNewPassword.Size = new Size(81, 15);
|
||||
lblNewPassword.TabIndex = 11;
|
||||
lblNewPassword.Text = "New Password";
|
||||
//
|
||||
// tbToken
|
||||
//
|
||||
tbToken.Location = new Point(123, 15);
|
||||
tbToken.Name = "tbToken";
|
||||
tbToken.Size = new Size(424, 23);
|
||||
tbToken.TabIndex = 10;
|
||||
//
|
||||
// lblToken
|
||||
//
|
||||
lblToken.AutoSize = true;
|
||||
lblToken.Font = new Font("Segoe UI Light", 9F);
|
||||
lblToken.ForeColor = SystemColors.ControlLight;
|
||||
lblToken.Location = new Point(82, 18);
|
||||
lblToken.Name = "lblToken";
|
||||
lblToken.Size = new Size(35, 15);
|
||||
lblToken.TabIndex = 9;
|
||||
lblToken.Text = "Token";
|
||||
//
|
||||
// pbLoginBanner
|
||||
//
|
||||
pbLoginBanner.Image = Properties.Resources.LoginBanner;
|
||||
pbLoginBanner.Location = new Point(-3, -1);
|
||||
pbLoginBanner.Name = "pbLoginBanner";
|
||||
pbLoginBanner.Size = new Size(521, 99);
|
||||
pbLoginBanner.SizeMode = PictureBoxSizeMode.StretchImage;
|
||||
pbLoginBanner.TabIndex = 2;
|
||||
pbLoginBanner.TabStop = false;
|
||||
//
|
||||
// ResetPassword
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||
AutoScaleMode = AutoScaleMode.Font;
|
||||
BackColor = Color.DodgerBlue;
|
||||
ClientSize = new Size(622, 256);
|
||||
Controls.Add(pEmailBox);
|
||||
Controls.Add(pResetPasswordBox);
|
||||
Controls.Add(pbLoginBanner);
|
||||
FormBorderStyle = FormBorderStyle.FixedDialog;
|
||||
MaximizeBox = false;
|
||||
MinimizeBox = false;
|
||||
Name = "ResetPassword";
|
||||
StartPosition = FormStartPosition.CenterScreen;
|
||||
Text = "QtC.NET Client - Reset Password";
|
||||
pEmailBox.ResumeLayout(false);
|
||||
pEmailBox.PerformLayout();
|
||||
pResetPasswordBox.ResumeLayout(false);
|
||||
pResetPasswordBox.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pbLoginBanner).EndInit();
|
||||
ResumeLayout(false);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private Panel pEmailBox;
|
||||
private Button btnSend;
|
||||
private Label lblHeader;
|
||||
private TextBox tbEmail;
|
||||
private Panel pResetPasswordBox;
|
||||
private TextBox tbConfirmPassword;
|
||||
private Label lblConfirmPassword;
|
||||
private TextBox tbNewPassword;
|
||||
private Label lblNewPassword;
|
||||
private TextBox tbToken;
|
||||
private Label lblToken;
|
||||
private Button btnResetPassword;
|
||||
private PictureBox pbLoginBanner;
|
||||
}
|
||||
}
|
||||
@ -1,68 +0,0 @@
|
||||
using QtCNETAPI.Services.ApiService;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace qtc_net_client_2.Forms
|
||||
{
|
||||
public partial class ResetPassword : Form
|
||||
{
|
||||
private IApiService _apiService;
|
||||
public ResetPassword(IApiService apiService)
|
||||
{
|
||||
_apiService = apiService;
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private async void btnSend_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(tbEmail.Text))
|
||||
{
|
||||
tbEmail.Enabled = false;
|
||||
btnSend.Enabled = false;
|
||||
|
||||
var result = await _apiService.SendPasswordResetEmail(tbEmail.Text);
|
||||
if (result != null && result.Success && result.Data)
|
||||
{
|
||||
pEmailBox.Visible = false;
|
||||
pResetPasswordBox.Visible = true;
|
||||
|
||||
MessageBox.Show("Got It! You should receive an email shortly.\nIf you do not receive an email, check your spam.");
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("Sorry, This Server Doesn't Have Email Features Enabled Or Something Went Wrong.\nIf you cannot login, you may need to contact the server admin.", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async void btnResetPassword_Click(object sender, EventArgs e)
|
||||
{
|
||||
if(!string.IsNullOrEmpty(tbToken.Text) && !string.IsNullOrEmpty(tbNewPassword.Text) && !string.IsNullOrEmpty(tbConfirmPassword.Text))
|
||||
{
|
||||
tbToken.Enabled = false;
|
||||
tbNewPassword.Enabled = false;
|
||||
tbConfirmPassword.Enabled = false;
|
||||
btnResetPassword.Enabled = false;
|
||||
|
||||
var result = await _apiService.ResetPassword(new QtCNETAPI.Dtos.User.UserPasswordResetDto { Token = tbToken.Text, Password = tbNewPassword.Text });
|
||||
if(result != null && result.Success && result.Data)
|
||||
{
|
||||
MessageBox.Show("Your Password Has Been Reset. You may now login with the new password.", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
Close();
|
||||
} else
|
||||
{
|
||||
MessageBox.Show(result?.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,120 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
12
qtc-net-client-2/Forms/StockMarketGame.Designer.cs
generated
12
qtc-net-client-2/Forms/StockMarketGame.Designer.cs
generated
@ -52,7 +52,7 @@
|
||||
pStockManagement.Controls.Add(btnSell);
|
||||
pStockManagement.Controls.Add(btnBuy);
|
||||
pStockManagement.Controls.Add(lblStockCount);
|
||||
pStockManagement.Location = new Point(230, 138);
|
||||
pStockManagement.Location = new Point(242, 134);
|
||||
pStockManagement.Name = "pStockManagement";
|
||||
pStockManagement.Size = new Size(135, 81);
|
||||
pStockManagement.TabIndex = 3;
|
||||
@ -106,7 +106,7 @@
|
||||
pMarketStatus.Controls.Add(lblMarketStatus);
|
||||
pMarketStatus.Controls.Add(pbDollarSignRight);
|
||||
pMarketStatus.Controls.Add(pbDollarSignLeft);
|
||||
pMarketStatus.Location = new Point(3, 7);
|
||||
pMarketStatus.Location = new Point(9, 7);
|
||||
pMarketStatus.Name = "pMarketStatus";
|
||||
pMarketStatus.Size = new Size(586, 100);
|
||||
pMarketStatus.TabIndex = 4;
|
||||
@ -135,7 +135,7 @@
|
||||
// pbDollarSignRight
|
||||
//
|
||||
pbDollarSignRight.Image = Properties.Resources.dollar_money;
|
||||
pbDollarSignRight.Location = new Point(500, 3);
|
||||
pbDollarSignRight.Location = new Point(498, 3);
|
||||
pbDollarSignRight.Name = "pbDollarSignRight";
|
||||
pbDollarSignRight.Size = new Size(83, 94);
|
||||
pbDollarSignRight.SizeMode = PictureBoxSizeMode.Zoom;
|
||||
@ -145,7 +145,7 @@
|
||||
// pbDollarSignLeft
|
||||
//
|
||||
pbDollarSignLeft.Image = Properties.Resources.dollar_money;
|
||||
pbDollarSignLeft.Location = new Point(3, 3);
|
||||
pbDollarSignLeft.Location = new Point(6, 3);
|
||||
pbDollarSignLeft.Name = "pbDollarSignLeft";
|
||||
pbDollarSignLeft.Size = new Size(83, 94);
|
||||
pbDollarSignLeft.SizeMode = PictureBoxSizeMode.Zoom;
|
||||
@ -156,7 +156,7 @@
|
||||
//
|
||||
btnRefresh.Enabled = false;
|
||||
btnRefresh.ForeColor = Color.Black;
|
||||
btnRefresh.Location = new Point(270, 113);
|
||||
btnRefresh.Location = new Point(282, 109);
|
||||
btnRefresh.Name = "btnRefresh";
|
||||
btnRefresh.Size = new Size(56, 23);
|
||||
btnRefresh.TabIndex = 10;
|
||||
@ -169,7 +169,7 @@
|
||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||
AutoScaleMode = AutoScaleMode.Font;
|
||||
BackColor = Color.DodgerBlue;
|
||||
ClientSize = new Size(595, 227);
|
||||
ClientSize = new Size(606, 227);
|
||||
Controls.Add(btnRefresh);
|
||||
Controls.Add(pMarketStatus);
|
||||
Controls.Add(pStockManagement);
|
||||
|
||||
@ -44,6 +44,19 @@ namespace qtc_net_client_2.Forms
|
||||
_apiService.CurrentUser.StockAmount = result.Data.StockAmount;
|
||||
_apiService.CurrentUser.CurrencyAmount = result.Data.CurrencyAmount;
|
||||
|
||||
Main? mainWindow = (Main?)Application.OpenForms[0];
|
||||
if (mainWindow != null)
|
||||
{
|
||||
if (mainWindow.InvokeRequired)
|
||||
{
|
||||
mainWindow.Invoke(mainWindow.RefreshCurrencyCounter);
|
||||
}
|
||||
else
|
||||
{
|
||||
mainWindow.RefreshCurrencyCounter();
|
||||
}
|
||||
}
|
||||
|
||||
nudStockBuySellAmount.Enabled = true;
|
||||
nudStockBuySellAmount.Value = 0;
|
||||
btnBuy.Enabled = true;
|
||||
@ -82,6 +95,19 @@ namespace qtc_net_client_2.Forms
|
||||
_apiService.CurrentUser.StockAmount = result.Data.StockAmount;
|
||||
_apiService.CurrentUser.CurrencyAmount = result.Data.CurrencyAmount;
|
||||
|
||||
Main? mainWindow = (Main?)Application.OpenForms[0];
|
||||
if (mainWindow != null)
|
||||
{
|
||||
if (mainWindow.InvokeRequired)
|
||||
{
|
||||
mainWindow.Invoke(mainWindow.RefreshCurrencyCounter);
|
||||
}
|
||||
else
|
||||
{
|
||||
mainWindow.RefreshCurrencyCounter();
|
||||
}
|
||||
}
|
||||
|
||||
nudStockBuySellAmount.Enabled = true;
|
||||
nudStockBuySellAmount.Value = 0;
|
||||
btnBuy.Enabled = true;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
using QtCNETAPI.Dtos.User;
|
||||
using qtc_net_client_2.Services;
|
||||
using QtCNETAPI.Dtos.User;
|
||||
using QtCNETAPI.Schema;
|
||||
using QtCNETAPI.Services;
|
||||
using QtCNETAPI.Services.ApiService;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@ -69,8 +69,12 @@ namespace qtc_net_client_2.Forms
|
||||
|
||||
// attempt to buy item
|
||||
var ownedStoreItem = await _apiService.BuyStoreItem(StoreItem.Id);
|
||||
if (ownedStoreItem != null && ownedStoreItem.Success)
|
||||
if (ownedStoreItem != null && ownedStoreItem.Success && ownedStoreItem.Data != null)
|
||||
{
|
||||
Main? mainForm = (Main?)Application.OpenForms[0];
|
||||
if (mainForm != null)
|
||||
mainForm.RefreshCurrencyCounter();
|
||||
|
||||
Enabled = true;
|
||||
|
||||
var result = MessageBox.Show($"Successfully Bought '{StoreItem.Name}'! Would You Like To Wear It Now?", "Success!", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
|
||||
@ -87,12 +91,10 @@ namespace qtc_net_client_2.Forms
|
||||
};
|
||||
|
||||
await _apiService.UpdateUserInformationAsync(updateDto);
|
||||
DialogResult = DialogResult.Yes;
|
||||
}
|
||||
}
|
||||
else MessageBox.Show("We Weren't Able To Complete Your Purchase.\nYou May Not Have Enough Funds For This Item.", "Oops.", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
}
|
||||
}
|
||||
|
||||
@ -261,6 +261,11 @@ namespace qtc_net_client_2
|
||||
{
|
||||
await _apiService.AddCurrencyToCurrentUser(currencyJackpotSpinner.TokensWon, false);
|
||||
_apiService.CurrentUser.CurrencyAmount += currencyJackpotSpinner.TokensWon;
|
||||
|
||||
// find the main form to refresh currency count
|
||||
Main? mainForm = (Main?)Application.OpenForms[0];
|
||||
if (mainForm != null)
|
||||
mainForm.RefreshCurrencyCounter();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
using qtc_net_client_2.ClientModel;
|
||||
using qtc_net_client_2.Services;
|
||||
using QtCNETAPI.Services;
|
||||
using QtCNETAPI.Services.ApiService;
|
||||
using QtCNETAPI.Services.GatewayService;
|
||||
using System.Text.Json;
|
||||
@ -53,8 +52,8 @@ namespace qtc_net_client_2
|
||||
|
||||
// instantiate new ApiService and GatewayService for this session
|
||||
// this will keep the gateway thread in the main thread (i think)
|
||||
IApiService api = new ApiService($"{clientConfig.ServerUrl}/api", loggingService);
|
||||
IGatewayService gateway = new GatewayService($"{clientConfig.ServerUrl}/chat", api, loggingService);
|
||||
IApiService api = new ApiService($"{clientConfig.ServerUrl}/api");
|
||||
IGatewayService gateway = new GatewayService($"{clientConfig.ServerUrl}/chat", api);
|
||||
|
||||
// ping api
|
||||
var pingResult = await api.PingServerAsync();
|
||||
|
||||
14
qtc-net-client-2/Properties/Resources.Designer.cs
generated
14
qtc-net-client-2/Properties/Resources.Designer.cs
generated
@ -19,7 +19,7 @@ namespace qtc_net_client_2.Properties {
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "18.0.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
@ -81,7 +81,7 @@ namespace qtc_net_client_2.Properties {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 6.5.5.
|
||||
/// Looks up a localized string similar to 6.0.1.
|
||||
/// </summary>
|
||||
internal static string AssemblyVersion {
|
||||
get {
|
||||
@ -269,16 +269,6 @@ namespace qtc_net_client_2.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap RoomsChatIcon {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("RoomsChatIcon", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
|
||||
@ -118,6 +118,9 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="AddContactIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Icons\AddContactIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="right-horn-animated" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Anims\right-horn-animated.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
@ -154,8 +157,8 @@
|
||||
<data name="CurrencyIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Icons\CurrencyIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="AddContactIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Icons\AddContactIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<data name="DefaultPfp" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\DefaultPfp.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="RequestSentIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Icons\RequestSentIcon.png;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
@ -173,10 +176,7 @@
|
||||
<value>..\Icons\MessageIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="AssemblyVersion" xml:space="preserve">
|
||||
<value>6.5.5</value>
|
||||
</data>
|
||||
<data name="cobalt_sittingatputer" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\cobalt_sittingatputer.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<value>6.0.1</value>
|
||||
</data>
|
||||
<data name="LoginBanner" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\LoginBanner.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
@ -190,10 +190,7 @@
|
||||
<data name="AcceptContactIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Icons\AcceptContactIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="DefaultPfp" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\DefaultPfp.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="RoomsChatIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Icons\RoomsChatIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<data name="cobalt_sittingatputer" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\cobalt_sittingatputer.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 62 KiB |
@ -1,40 +0,0 @@
|
||||
using qtc_net_client_2.Properties;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace qtc_net_client_2.Services
|
||||
{
|
||||
public class ImageFactory
|
||||
{
|
||||
public Bitmap CreateProfileImage(Bitmap? precenseImage = null, Bitmap? pfp = null, Bitmap? cosmetic = null)
|
||||
{
|
||||
Bitmap combined = new Bitmap(139, 138);
|
||||
|
||||
using Graphics g = Graphics.FromImage(combined);
|
||||
g.Clear(Color.Transparent);
|
||||
g.CompositingMode = CompositingMode.SourceOver;
|
||||
|
||||
pfp ??= Resources.DefaultPfp;
|
||||
|
||||
g.DrawImage(pfp, 4, 6, 128, 128);
|
||||
|
||||
if (cosmetic != null)
|
||||
{
|
||||
cosmetic.MakeTransparent();
|
||||
g.DrawImage(cosmetic, 0, 0, 139, 138);
|
||||
}
|
||||
|
||||
if(precenseImage != null)
|
||||
{
|
||||
precenseImage.MakeTransparent();
|
||||
g.DrawImage(precenseImage, 104, 0, 35, 35);
|
||||
}
|
||||
|
||||
return combined;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -5,12 +5,10 @@ using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Diagnostics;
|
||||
using System.Text.Json;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.IdentityModel.Abstractions;
|
||||
|
||||
namespace QtCNETAPI.Services
|
||||
namespace qtc_net_client_2.Services
|
||||
{
|
||||
public class LoggingService : IDisposable, ILogger
|
||||
public class LoggingService : IDisposable
|
||||
{
|
||||
private DateTime LogDate { get; set; }
|
||||
private string LogFilePath { get; set; }
|
||||
@ -18,7 +16,7 @@ namespace QtCNETAPI.Services
|
||||
public LoggingService()
|
||||
{
|
||||
LogDate = DateTime.Now;
|
||||
LogFilePath = $"./Logs/QtCClientLog_{LogDate:ddMMyyy-hhmm}.log";
|
||||
LogFilePath = $"./Logs/QtCClientLog_{LogDate.ToString("ddMMyyy-hhmm")}.log";
|
||||
|
||||
// create log file
|
||||
|
||||
@ -32,8 +30,8 @@ namespace QtCNETAPI.Services
|
||||
{
|
||||
try
|
||||
{
|
||||
Debug.WriteLine($"({DateTime.Now.ToLocalTime():hh:mm}) {message}");
|
||||
LogFile.WriteLine($"({DateTime.Now.ToLocalTime():hh:mm}) {message}");
|
||||
Debug.WriteLine($"({DateTime.Now.ToLocalTime().ToString("hh:mm")}) {message}");
|
||||
LogFile.WriteLine($"({DateTime.Now.ToLocalTime().ToString("hh:mm")}) {message}");
|
||||
} catch (ObjectDisposedException)
|
||||
{
|
||||
}
|
||||
@ -47,8 +45,8 @@ namespace QtCNETAPI.Services
|
||||
string modelSerialized = JsonSerializer.Serialize(model, options: new JsonSerializerOptions { WriteIndented = true });
|
||||
|
||||
// log it
|
||||
Debug.WriteLine($"({DateTime.Now.ToLocalTime():hh:mm}) {modelSerialized}");
|
||||
LogFile.WriteLine($"({DateTime.Now.ToLocalTime():hh:mm}) {modelSerialized}");
|
||||
Debug.WriteLine($"({DateTime.Now.ToLocalTime().ToString("hh:mm")}) {modelSerialized}");
|
||||
LogFile.WriteLine($"({DateTime.Now.ToLocalTime().ToString("hh:mm")}) {modelSerialized}");
|
||||
} catch (ObjectDisposedException)
|
||||
{
|
||||
}
|
||||
@ -60,34 +58,5 @@ namespace QtCNETAPI.Services
|
||||
LogFile.Close();
|
||||
LogFile.Dispose();
|
||||
}
|
||||
|
||||
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception? exception, Func<TState, Exception?, string> formatter)
|
||||
{
|
||||
try
|
||||
{
|
||||
// format message
|
||||
string message = $"({DateTime.Now.ToLocalTime():hh:mm}) [{logLevel}] {formatter(state, exception)}";
|
||||
|
||||
// log it
|
||||
Debug.WriteLine(message);
|
||||
LogFile.WriteLine(message);
|
||||
} catch (ObjectDisposedException)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsEnabled(LogLevel logLevel) => true;
|
||||
public IDisposable? BeginScope<TState>(TState state) where TState : notnull => default!;
|
||||
}
|
||||
|
||||
public class LoggingServiceProvider(LoggingService? loggingService = null) : ILoggerProvider
|
||||
{
|
||||
public ILogger CreateLogger(string categoryName)
|
||||
{
|
||||
if (loggingService != null) return loggingService;
|
||||
else return new LoggingService();
|
||||
}
|
||||
|
||||
public void Dispose() { }
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user