From ee79d53aab7eb76c507e6caf148a040d016b9f99 Mon Sep 17 00:00:00 2001 From: AlanMoonbase Date: Mon, 30 Jun 2025 13:54:12 -0700 Subject: [PATCH] Remove `Online Users` Tab Add Status Icons To User List Optimize Profile Window Initialization --- .../Services/GatewayService/GatewayService.cs | 4 +- .../GatewayService/IGatewayService.cs | 2 +- qtc-net-client-2/Forms/Main.Designer.cs | 142 ++--- qtc-net-client-2/Forms/Main.cs | 112 +--- qtc-net-client-2/Forms/Main.resx | 554 ++++++++++-------- qtc-net-client-2/Forms/Profile.Designer.cs | 2 +- qtc-net-client-2/Forms/Profile.cs | 20 +- 7 files changed, 425 insertions(+), 411 deletions(-) diff --git a/QtCNETAPI/Services/GatewayService/GatewayService.cs b/QtCNETAPI/Services/GatewayService/GatewayService.cs index 3c4b978..c09ecb6 100644 --- a/QtCNETAPI/Services/GatewayService/GatewayService.cs +++ b/QtCNETAPI/Services/GatewayService/GatewayService.cs @@ -16,7 +16,7 @@ namespace QtCNETAPI.Services.GatewayService public event EventHandler OnRoomMessageReceived; - public event EventHandler OnRefreshUserListReceived; + public event EventHandler OnRefreshUserListsReceived; public event EventHandler OnRefreshRoomListReceived; public event EventHandler OnRefreshContactsListReceived; public event EventHandler OnClientFunctionReceived; @@ -52,7 +52,7 @@ namespace QtCNETAPI.Services.GatewayService HubConnection.On("RoomMessage", (serverMessage) => OnRoomMessageReceived?.Invoke(this, new ServerMessageEventArgs { Message = serverMessage })); HubConnection.On("cf", (function) => OnClientFunctionReceived?.Invoke(this, new ClientFunctionEventArgs { Function = function })); HubConnection.On("ReceiveDirectMessage", (message, user) => OnDirectMessageReceived?.Invoke(this, new DirectMessageEventArgs { Message = message, User = user })); - HubConnection.On("RefreshUserList", () => OnRefreshUserListReceived?.Invoke(this, EventArgs.Empty)); + HubConnection.On("RefreshUserLists", () => OnRefreshUserListsReceived?.Invoke(this, EventArgs.Empty)); HubConnection.On("RefreshRoomList", () => OnRefreshRoomListReceived?.Invoke(this, EventArgs.Empty)); HubConnection.On("RefreshContactsList", () => OnRefreshContactsListReceived?.Invoke(this, EventArgs.Empty)); HubConnection.On("ReceiveServerConfig", (serverConfig) => OnServerConfigReceived?.Invoke(this, new ServerConfigEventArgs { ServerConfig = serverConfig })); diff --git a/QtCNETAPI/Services/GatewayService/IGatewayService.cs b/QtCNETAPI/Services/GatewayService/IGatewayService.cs index f0067a0..0bb00f6 100644 --- a/QtCNETAPI/Services/GatewayService/IGatewayService.cs +++ b/QtCNETAPI/Services/GatewayService/IGatewayService.cs @@ -120,7 +120,7 @@ namespace QtCNETAPI.Services.GatewayService /// /// Fires When The Client Receives The Request To Refresh Its User List /// - public event EventHandler OnRefreshUserListReceived; + public event EventHandler OnRefreshUserListsReceived; /// /// Fires When The Client Receives The Request To Refresh Its Room List diff --git a/qtc-net-client-2/Forms/Main.Designer.cs b/qtc-net-client-2/Forms/Main.Designer.cs index 9e4368b..b26c043 100644 --- a/qtc-net-client-2/Forms/Main.Designer.cs +++ b/qtc-net-client-2/Forms/Main.Designer.cs @@ -30,8 +30,8 @@ { components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Main)); - ListViewItem listViewItem3 = new ListViewItem("Stock Market", 0); - ListViewItem listViewItem4 = new ListViewItem("Guess The Number", 1); + ListViewItem listViewItem1 = new ListViewItem("Stock Market", 0); + ListViewItem listViewItem2 = new ListViewItem("Guess The Number", 1); tbcMain = new TabControl(); tbpContacts = new TabPage(); lvContacts = new ListView(); @@ -41,10 +41,9 @@ tbpRooms = new TabPage(); btnAddRoom = new Button(); lbRooms = new ListBox(); - tbpOnlineUsers = new TabPage(); - lbOnlineUsers = new ListBox(); - tbpUserDirectory = new TabPage(); - lbUserDirectory = new ListBox(); + tbpUsers = new TabPage(); + lvUserDirectory = new ListView(); + ilStatusIcons = new ImageList(components); tbpGames = new TabPage(); lvGames = new ListView(); ilGames = new ImageList(components); @@ -70,8 +69,7 @@ tbpContacts.SuspendLayout(); ctxmRefresh.SuspendLayout(); tbpRooms.SuspendLayout(); - tbpOnlineUsers.SuspendLayout(); - tbpUserDirectory.SuspendLayout(); + tbpUsers.SuspendLayout(); tbpGames.SuspendLayout(); ctxmChangeStatus.SuspendLayout(); pCurrencyArea.SuspendLayout(); @@ -85,15 +83,14 @@ tbcMain.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; tbcMain.Controls.Add(tbpContacts); tbcMain.Controls.Add(tbpRooms); - tbcMain.Controls.Add(tbpOnlineUsers); - tbcMain.Controls.Add(tbpUserDirectory); + tbcMain.Controls.Add(tbpUsers); tbcMain.Controls.Add(tbpGames); tbcMain.Enabled = false; tbcMain.ImageList = ilTabIcons; tbcMain.Location = new Point(12, 66); tbcMain.Name = "tbcMain"; tbcMain.SelectedIndex = 0; - tbcMain.Size = new Size(439, 535); + tbcMain.Size = new Size(305, 535); tbcMain.TabIndex = 0; // // tbpContacts @@ -103,7 +100,7 @@ tbpContacts.Location = new Point(4, 24); tbpContacts.Name = "tbpContacts"; tbpContacts.Padding = new Padding(3); - tbpContacts.Size = new Size(431, 507); + tbpContacts.Size = new Size(297, 507); tbpContacts.TabIndex = 0; tbpContacts.Text = "Contacts"; tbpContacts.UseVisualStyleBackColor = true; @@ -117,7 +114,7 @@ lvContacts.Location = new Point(0, 0); lvContacts.MultiSelect = false; lvContacts.Name = "lvContacts"; - lvContacts.Size = new Size(431, 514); + lvContacts.Size = new Size(297, 514); lvContacts.SmallImageList = ilProfilePics; lvContacts.TabIndex = 1; lvContacts.UseCompatibleStateImageBehavior = false; @@ -152,7 +149,7 @@ tbpRooms.Location = new Point(4, 24); tbpRooms.Name = "tbpRooms"; tbpRooms.Padding = new Padding(3); - tbpRooms.Size = new Size(431, 507); + tbpRooms.Size = new Size(297, 507); tbpRooms.TabIndex = 1; tbpRooms.Text = "Rooms"; tbpRooms.UseVisualStyleBackColor = true; @@ -176,56 +173,45 @@ lbRooms.ItemHeight = 15; lbRooms.Location = new Point(0, 0); lbRooms.Name = "lbRooms"; - lbRooms.Size = new Size(431, 514); + lbRooms.Size = new Size(297, 514); lbRooms.TabIndex = 0; lbRooms.DoubleClick += lbRooms_DoubleClick; // - // tbpOnlineUsers + // tbpUsers // - tbpOnlineUsers.Controls.Add(lbOnlineUsers); - tbpOnlineUsers.ImageIndex = 1; - tbpOnlineUsers.Location = new Point(4, 24); - tbpOnlineUsers.Name = "tbpOnlineUsers"; - tbpOnlineUsers.Padding = new Padding(3); - tbpOnlineUsers.Size = new Size(431, 507); - tbpOnlineUsers.TabIndex = 2; - tbpOnlineUsers.Text = "Online Users"; - tbpOnlineUsers.UseVisualStyleBackColor = true; + tbpUsers.Controls.Add(lvUserDirectory); + tbpUsers.ImageIndex = 1; + tbpUsers.Location = new Point(4, 24); + tbpUsers.Name = "tbpUsers"; + tbpUsers.Size = new Size(297, 507); + tbpUsers.TabIndex = 3; + tbpUsers.Text = "Users"; + tbpUsers.UseVisualStyleBackColor = true; // - // lbOnlineUsers + // lvUserDirectory // - lbOnlineUsers.Anchor = AnchorStyles.Left | AnchorStyles.Right; - lbOnlineUsers.ContextMenuStrip = ctxmRefresh; - lbOnlineUsers.FormattingEnabled = true; - lbOnlineUsers.ItemHeight = 15; - lbOnlineUsers.Location = new Point(0, 0); - lbOnlineUsers.Name = "lbOnlineUsers"; - lbOnlineUsers.Size = new Size(431, 514); - lbOnlineUsers.TabIndex = 0; - lbOnlineUsers.DoubleClick += lbOnlineUsers_DoubleClick; + lvUserDirectory.Alignment = ListViewAlignment.Left; + lvUserDirectory.ContextMenuStrip = ctxmRefresh; + lvUserDirectory.Location = new Point(0, 0); + lvUserDirectory.MultiSelect = false; + lvUserDirectory.Name = "lvUserDirectory"; + lvUserDirectory.RightToLeft = RightToLeft.Yes; + lvUserDirectory.Size = new Size(297, 514); + lvUserDirectory.SmallImageList = ilStatusIcons; + lvUserDirectory.TabIndex = 0; + lvUserDirectory.UseCompatibleStateImageBehavior = false; + lvUserDirectory.View = View.SmallIcon; + lvUserDirectory.DoubleClick += lbUserDirectory_DoubleClick; // - // tbpUserDirectory + // ilStatusIcons // - tbpUserDirectory.Controls.Add(lbUserDirectory); - tbpUserDirectory.ImageIndex = 1; - tbpUserDirectory.Location = new Point(4, 24); - tbpUserDirectory.Name = "tbpUserDirectory"; - tbpUserDirectory.Size = new Size(431, 507); - tbpUserDirectory.TabIndex = 3; - tbpUserDirectory.Text = "User Directory"; - tbpUserDirectory.UseVisualStyleBackColor = true; - // - // lbUserDirectory - // - lbUserDirectory.Anchor = AnchorStyles.Left | AnchorStyles.Right; - lbUserDirectory.ContextMenuStrip = ctxmRefresh; - lbUserDirectory.FormattingEnabled = true; - lbUserDirectory.ItemHeight = 15; - lbUserDirectory.Location = new Point(0, 0); - lbUserDirectory.Name = "lbUserDirectory"; - lbUserDirectory.Size = new Size(431, 514); - lbUserDirectory.TabIndex = 1; - lbUserDirectory.DoubleClick += lbUserDirectory_DoubleClick; + ilStatusIcons.ColorDepth = ColorDepth.Depth32Bit; + ilStatusIcons.ImageStream = (ImageListStreamer)resources.GetObject("ilStatusIcons.ImageStream"); + ilStatusIcons.TransparentColor = Color.Transparent; + ilStatusIcons.Images.SetKeyName(0, "Offline"); + ilStatusIcons.Images.SetKeyName(1, "Online"); + ilStatusIcons.Images.SetKeyName(2, "Away"); + ilStatusIcons.Images.SetKeyName(3, "DND"); // // tbpGames // @@ -233,7 +219,7 @@ tbpGames.ImageIndex = 3; tbpGames.Location = new Point(4, 24); tbpGames.Name = "tbpGames"; - tbpGames.Size = new Size(431, 507); + tbpGames.Size = new Size(297, 507); tbpGames.TabIndex = 4; tbpGames.Text = "Games"; tbpGames.UseVisualStyleBackColor = true; @@ -241,14 +227,14 @@ // lvGames // lvGames.Anchor = AnchorStyles.Left | AnchorStyles.Right; - listViewItem3.Tag = "StockMarketGame"; - listViewItem4.Tag = "GuessTheNumberGame"; - lvGames.Items.AddRange(new ListViewItem[] { listViewItem3, listViewItem4 }); + listViewItem1.Tag = "StockMarketGame"; + listViewItem2.Tag = "GuessTheNumberGame"; + lvGames.Items.AddRange(new ListViewItem[] { listViewItem1, listViewItem2 }); lvGames.LargeImageList = ilGames; lvGames.Location = new Point(0, 0); lvGames.MultiSelect = false; lvGames.Name = "lvGames"; - lvGames.Size = new Size(431, 514); + lvGames.Size = new Size(297, 514); lvGames.SmallImageList = ilGames; lvGames.TabIndex = 2; lvGames.UseCompatibleStateImageBehavior = false; @@ -311,10 +297,10 @@ // lblRequestNotif.Anchor = AnchorStyles.Top | AnchorStyles.Right; lblRequestNotif.AutoSize = true; - lblRequestNotif.Font = new Font("Segoe UI", 7F, FontStyle.Bold); - lblRequestNotif.Location = new Point(313, 52); + lblRequestNotif.Font = new Font("Segoe UI", 6F, FontStyle.Bold); + lblRequestNotif.Location = new Point(215, 53); lblRequestNotif.Name = "lblRequestNotif"; - lblRequestNotif.Size = new Size(134, 12); + lblRequestNotif.Size = new Size(109, 11); lblRequestNotif.TabIndex = 6; lblRequestNotif.Text = "You Have Contact Requests!"; lblRequestNotif.Visible = false; @@ -329,7 +315,7 @@ // llblClaimSpin.AutoSize = true; llblClaimSpin.Font = new Font("Segoe UI", 9F, FontStyle.Bold); - llblClaimSpin.Location = new Point(12, 24); + llblClaimSpin.Location = new Point(1, 25); llblClaimSpin.Name = "llblClaimSpin"; llblClaimSpin.Size = new Size(94, 15); llblClaimSpin.TabIndex = 11; @@ -345,15 +331,15 @@ pCurrencyArea.Controls.Add(llblClaimSpin); pCurrencyArea.Controls.Add(pbCurrencyIcon); pCurrencyArea.Controls.Add(lblCurrencyAmount); - pCurrencyArea.Location = new Point(336, 5); + pCurrencyArea.Location = new Point(223, 5); pCurrencyArea.Name = "pCurrencyArea"; - pCurrencyArea.Size = new Size(116, 46); + pCurrencyArea.Size = new Size(95, 46); pCurrencyArea.TabIndex = 12; // // pbCurrencyIcon // pbCurrencyIcon.Image = Properties.Resources.CurrencyIcon; - pbCurrencyIcon.Location = new Point(33, 6); + pbCurrencyIcon.Location = new Point(20, 6); pbCurrencyIcon.Name = "pbCurrencyIcon"; pbCurrencyIcon.Size = new Size(15, 14); pbCurrencyIcon.SizeMode = PictureBoxSizeMode.StretchImage; @@ -366,7 +352,7 @@ lblCurrencyAmount.BackColor = Color.Transparent; lblCurrencyAmount.Font = new Font("Segoe UI", 9F, FontStyle.Bold); lblCurrencyAmount.ForeColor = Color.White; - lblCurrencyAmount.Location = new Point(48, 3); + lblCurrencyAmount.Location = new Point(35, 3); lblCurrencyAmount.Name = "lblCurrencyAmount"; lblCurrencyAmount.Size = new Size(69, 20); lblCurrencyAmount.TabIndex = 19; @@ -384,7 +370,7 @@ pCurrentUser.Controls.Add(pbUserPfp); pCurrentUser.Location = new Point(5, 4); pCurrentUser.Name = "pCurrentUser"; - pCurrentUser.Size = new Size(298, 59); + pCurrentUser.Size = new Size(204, 59); pCurrentUser.TabIndex = 13; // // llblEditProfile @@ -430,12 +416,12 @@ // // lblWelcome // - lblWelcome.AutoSize = true; + lblWelcome.AutoEllipsis = true; lblWelcome.Font = new Font("Segoe UI Light", 9F); lblWelcome.ForeColor = SystemColors.ControlLightLight; lblWelcome.Location = new Point(56, 11); lblWelcome.Name = "lblWelcome"; - lblWelcome.Size = new Size(60, 15); + lblWelcome.Size = new Size(143, 15); lblWelcome.TabIndex = 7; lblWelcome.Text = "Welcome, "; // @@ -458,7 +444,7 @@ AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; BackColor = Color.DodgerBlue; - ClientSize = new Size(463, 613); + ClientSize = new Size(329, 613); Controls.Add(pCurrentUser); Controls.Add(pCurrencyArea); Controls.Add(lblRequestNotif); @@ -476,8 +462,7 @@ tbpContacts.ResumeLayout(false); ctxmRefresh.ResumeLayout(false); tbpRooms.ResumeLayout(false); - tbpOnlineUsers.ResumeLayout(false); - tbpUserDirectory.ResumeLayout(false); + tbpUsers.ResumeLayout(false); tbpGames.ResumeLayout(false); ctxmChangeStatus.ResumeLayout(false); pCurrencyArea.ResumeLayout(false); @@ -496,8 +481,6 @@ private TabPage tbpContacts; private TabPage tbpRooms; private ListBox lbRooms; - private TabPage tbpOnlineUsers; - private ListBox lbOnlineUsers; private Label lblRequestNotif; private ListView lvContacts; private System.Windows.Forms.ImageList ilProfilePics; @@ -510,8 +493,6 @@ private ToolStripMenuItem invisibleToolStripMenuItem; private Button btnAddRoom; private LinkLabel llblClaimSpin; - private TabPage tbpUserDirectory; - private ListBox lbUserDirectory; private Panel pCurrencyArea; private Panel pCurrentUser; private LinkLabel llblEditProfile; @@ -526,5 +507,8 @@ private Label lblCurrencyAmount; private ContextMenuStrip ctxmRefresh; private ToolStripMenuItem refreshToolStripMenuItem; + private ImageList ilStatusIcons; + private TabPage tbpUsers; + private ListView lvUserDirectory; } } diff --git a/qtc-net-client-2/Forms/Main.cs b/qtc-net-client-2/Forms/Main.cs index 831489c..256c34c 100644 --- a/qtc-net-client-2/Forms/Main.cs +++ b/qtc-net-client-2/Forms/Main.cs @@ -20,7 +20,7 @@ namespace qtc_net_client_2 private List RoomList = []; private List OnlineUsers = []; private List UserDirectory = []; - private List Contacts = []; + private List Contacts = []; private bool FirstMinimize = true; public Main(IApiService apiService, IGatewayService gatewayService, Config config, LoggingService loggingService) @@ -145,31 +145,6 @@ namespace qtc_net_client_2 } } - private async void lbOnlineUsers_DoubleClick(object sender, EventArgs e) - { - if (lbOnlineUsers.SelectedItems.Count > 0) - { - string? selectedUser = (string?)lbOnlineUsers.SelectedItems[lbOnlineUsers.SelectedItems.Count - 1]; - - if (selectedUser != null) - { - // get user info and open profile dialog - var user = OnlineUsers.FirstOrDefault(e => e.Username == selectedUser); - var res = await _apiService.GetUserInformationAsync(user!.Id); - var pfpRes = await _apiService.GetUserProfilePic(user!.Id); - - if (pfpRes != null && !pfpRes.Success) LoggingService.LogString($"User Has No Profile Picture Or It Could Not Be Loaded.\n{pfpRes.Message}"); - - if (res.Data != null && res.Success) - { - LoggingService.LogString($"Opening Profile For User '{res.Data.Username}'"); - Profile frmProfile = new Profile(res.Data, pfpRes, _apiService, _gatewayService); - frmProfile.Show(); - } - } - } - } - private void llblEditProfile_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { ProfileEdit frmProfileEdit = new ProfileEdit(_apiService); @@ -192,7 +167,7 @@ namespace qtc_net_client_2 if (selectedUser.Contains('[')) selectedUser = selectedUser.Split('[', options: StringSplitOptions.TrimEntries)[0]; // get user info and open profile dialog - var user = Contacts.FirstOrDefault(e => e.Username == selectedUser); + var user = UserDirectory.FirstOrDefault(e => e.Username == selectedUser); var res = await _apiService.GetUserInformationAsync(user!.Id); var pfpRes = await _apiService.GetUserProfilePic(user!.Id); @@ -201,7 +176,7 @@ namespace qtc_net_client_2 if (res.Data != null && res.Success) { LoggingService.LogString($"Opening Profile For User '{res.Data.Username}'"); - Profile frmProfile = new Profile(res.Data, pfpRes, _apiService, _gatewayService); + Profile frmProfile = new Profile(res.Data, pfpRes, Contacts, _apiService, _gatewayService); frmProfile.Show(); } } @@ -309,9 +284,9 @@ namespace qtc_net_client_2 private async void lbUserDirectory_DoubleClick(object sender, EventArgs e) { - if (lbUserDirectory.SelectedItems.Count > 0) + if (lvUserDirectory.SelectedItems.Count > 0) { - string? selectedUser = (string?)lbUserDirectory.SelectedItems[lbUserDirectory.SelectedItems.Count - 1]; + string? selectedUser = (string?)lvUserDirectory.SelectedItems[lvUserDirectory.SelectedItems.Count - 1].Text; if (selectedUser != null) { @@ -325,7 +300,7 @@ namespace qtc_net_client_2 if (res.Data != null && res.Success) { LoggingService.LogString($"Opening Profile For User '{res.Data.Username}'"); - Profile frmProfile = new Profile(res.Data, pfpRes, _apiService, _gatewayService); + Profile frmProfile = new Profile(res.Data, pfpRes, Contacts, _apiService, _gatewayService); frmProfile.Show(); } } @@ -357,8 +332,7 @@ namespace qtc_net_client_2 // refresh all controls (TODO - probably restrict this to currently visible control) await RefreshContactsList(); await RefreshRoomsList(); - await RefreshOnlineUsersList(); - await RefreshUserDirectory(); + await RefreshUsers(); } private async Task OnSuccessfulLogin() @@ -377,7 +351,7 @@ namespace qtc_net_client_2 _gatewayService.OnServerReconnected += _gatewayService_OnServerReconnected; _gatewayService.OnServerDisconnect += _gatewayService_OnServerDisconnect; _gatewayService.OnDirectMessageReceived += _gatewayService_OnDirectMessageReceived; - _gatewayService.OnRefreshUserListReceived += _gatewayService_OnRefreshUserListReceived; + _gatewayService.OnRefreshUserListsReceived += _gatewayService_OnRefreshUserListReceived; _gatewayService.OnRefreshRoomListReceived += _gatewayService_OnRefreshRoomListReceived; _gatewayService.OnRefreshContactsListReceived += _gatewayService_OnRefreshContactsListReceived; _gatewayService.OnServerConfigReceived += _gatewayService_OnServerConfigReceived; @@ -408,8 +382,7 @@ namespace qtc_net_client_2 await RefreshContactsList(); await RefreshRoomsList(); - await RefreshOnlineUsersList(); - await RefreshUserDirectory(); + await RefreshUsers(); // TODO - figure out server side why online status is invisible on login _apiService.CurrentUser.Status = 1; @@ -458,42 +431,7 @@ namespace qtc_net_client_2 } } - private async Task RefreshOnlineUsersList() - { - LoggingService.LogString("Refreshing Online Users List..."); - - if (InvokeRequired) - { - await Invoke(async delegate () - { - lbOnlineUsers.Items.Clear(); - var usersOnlineRes = await _apiService.GetOnlineUsersAsync(); - if (usersOnlineRes.Success && usersOnlineRes.Data != null) - { - foreach (var user in usersOnlineRes.Data) - { - lbOnlineUsers.Items.Add(user.Username); - } - OnlineUsers = usersOnlineRes.Data; - } - }); - return; - } - - lbOnlineUsers.Items.Clear(); - var usersOnlineRes = await _apiService.GetOnlineUsersAsync(); - if (usersOnlineRes.Success && usersOnlineRes.Data != null) - { - lbOnlineUsers.Items.Clear(); - foreach (var user in usersOnlineRes.Data) - { - lbOnlineUsers.Items.Add(user.Username); - } - OnlineUsers = usersOnlineRes.Data; - } - } - - private async Task RefreshUserDirectory() + private async Task RefreshUsers() { LoggingService.LogString("Refreshing All Users List..."); @@ -503,20 +441,20 @@ namespace qtc_net_client_2 if (userList != null && userList.Success && userList.Data != null) { // clear the list - if (lbUserDirectory.InvokeRequired) lbUserDirectory.BeginInvoke(lbUserDirectory.Items.Clear); - else lbUserDirectory.Items.Clear(); + if (lvUserDirectory.InvokeRequired) lvUserDirectory.BeginInvoke(lvUserDirectory.Items.Clear); + else lvUserDirectory.Items.Clear(); UserDirectory.Clear(); // populate list foreach (var user in userList.Data) { - if (lbUserDirectory.InvokeRequired) + if (lvUserDirectory.InvokeRequired) { - lbUserDirectory.BeginInvoke(delegate () { lbUserDirectory.Items.Add(user.Username); }); + lvUserDirectory.BeginInvoke(delegate () { lvUserDirectory.Items.Add(user.Username, user.Status); }); } else { - lbUserDirectory.Items.Add(user.Username); + lvUserDirectory.Items.Add(user.Username, user.Status); } UserDirectory.Add(user); } @@ -593,7 +531,7 @@ namespace qtc_net_client_2 if (user.Data != null) { - Contacts.Add(user.Data); + Contacts.Add(contact); if (contact.OwnerId == _apiService.CurrentUser!.Id) { switch (contact.OwnerStatus) @@ -663,7 +601,7 @@ namespace qtc_net_client_2 if (user.Data != null) { - Contacts.Add(user.Data); + Contacts.Add(contact); if (contact.OwnerId == _apiService.CurrentUser!.Id) { switch (contact.OwnerStatus) @@ -718,13 +656,13 @@ namespace qtc_net_client_2 if (InvokeRequired && !IsDisposed) { - await Invoke(async delegate () - { - label.ForeColor = Color.Red; - await Task.Delay(500); - label.ForeColor = Color.Blue; - await Task.Delay(500); - }); + BeginInvoke(async delegate () + { + label.ForeColor = Color.Red; + await Task.Delay(500); + label.ForeColor = Color.Blue; + await Task.Delay(500); + }); } label.ForeColor = Color.Red; @@ -857,6 +795,6 @@ namespace qtc_net_client_2 private async void _gatewayService_OnRefreshContactsListReceived(object? sender, EventArgs e) => await RefreshContactsList(); private async void _gatewayService_OnRefreshRoomListReceived(object? sender, EventArgs e) => await RefreshRoomsList(); - private async void _gatewayService_OnRefreshUserListReceived(object? sender, EventArgs e) => await RefreshOnlineUsersList(); + private async void _gatewayService_OnRefreshUserListReceived(object? sender, EventArgs e) => await RefreshUsers(); } } diff --git a/qtc-net-client-2/Forms/Main.resx b/qtc-net-client-2/Forms/Main.resx index f164dee..035d66a 100644 --- a/qtc-net-client-2/Forms/Main.resx +++ b/qtc-net-client-2/Forms/Main.resx @@ -117,99 +117,8 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 122, 19 - - - - AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs - LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu - SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAzhIAAAJNU0Z0AUkBTAIBAQQB - AAHAAQEBwAEBARABAAEQAQAE/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 - xQFvAmgB9AGfAWUBMQH/AZcBUwEXAf8BlgFLAQkB/wGTAUYBAQH/AYwBQwEDAf8BfQFAAQsB/wFrAUAB - GgH/AW4BUAE2Af8DaAHwA1oBtwM0AVQEAAT/AZcBiwFtAf8CgQGAAf8BggGBAYAB/wGYAYgBYAH/AcoB - kAEAAf8B3QHMAZ8B/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A5MB/wNqAe0DfQH6A4EB - /wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wNVAa80AANfAdMD - PQFnBAADNQFVA10BxwFvAW4BWgH1AbgBZQEbAf8BuQFYAQIB/wHJAV8BAAH/AdgBZQEAAf8B3AFnAQAB - /wHWAWQBAAH/AcMBXAEAAf8BogFMAQAB/wF8ATsBAwH/AW4BRgEjAf8DaAHwA1oBtwMwAUoE/wGGAYQB - fQH/A4EB/wOBAf8BhwGDAXoB/wHPAZQBAAH/Ad4BzAGfAf8D4AH/A+AB/wPgAf8D4AH/A+AB/wPgAf8D - 4AH/A+AB/wO8Af8DYwHfA24B9QOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8D - gQH/A4EB/wOBAf8DVQGvNAADWgHCAzQBUwQAA1wBxAGKAXwBXAH4AdQBcQEYAf8B1wFlAQAB/wHlAWwB - AAH/AfIBcgEAAf8B+gF1AQAB/wH8AXYBAAH/AfoBdgEAAf8B8wFyAQAB/wHiAWsBAAH/Ab0BWQEAAf8B - hwFAAQAB/wFxAUgBIwH/A2gB8ANWAasE/wGLAYYBegH/A4EB/wOBAf8BjgGGAXEB/wHPAZQBAAH/Ad4B - zAGfIf8DygH/AzYBWANbAcADbgH1A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB - /wOBAf8DaAH0A1IBpBAAAw0BEQM/AWwDUwGnAVwCWQG+AVgCVgGzAUgCRwGDAyEBMAQAA28B8wM6AWAI - AAH+Ad0BwQH/Ae0BgAEgAf8B7QFxAQIB/wHzAXMBAAH/AfoBdgEAAf8B/gF4AQAC/wF7AQgC/wGIAScC - /wGiAVMB/wH+AYEBFwH/AfwBeAEEAf8B7AFvAQAB/wHBAVsBAAH/AYYBQQEDAf8BeAFWATYB/wNjAd8E - /wGsAZYBYAH/AYMBggF/Af8BhQGCAX0B/wGzAZMBRAH/Ac8BlAEAAf8B3gHMAZ8B/wOwAf8DsAH/A7AB - /wOwAf8DsAH/A7AB/wOwAf8DsAH/A6gB/wMCAQMDGgEjAzgBXANUAagDYgHXA3AB8QOAAf4DgQH/A4EB - /wOBAf8DgQH9A2gB8ANhAdQDUwGlAzYBWQMYASAIAAMaASQDUgGgAmMBSAH2AaIBcwEAAf8BrgF8AQAB - /wGwAX0BAAH/AagBeAEAAf8BlQFqAQAB/wKAATgB/gFcAlkBxgNXAbUDFgEeCAAB/wGyAW8B/wH9AYAB - EQH/AfwBdwEBAf8B/QF3AQAC/wF4AQAC/wF/AQ8C/wGSATsC/wGzAYMC/wHqAeAC/wGQAT0C/wF7AQoB - /wH8AXcBAAH/AeUBbAEAAf8BsQFUAQAB/wGEAUsBGgH/A2MB3wT/AdkBqgE3Af8BvgGYATgB/wHAAZgB - NgH/AdwBogEUAf8BzwGUAQAB/wHeAcwBnwH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8D - kwH/RAADIAEtAmMBWgHpAb8BiAEAAf8BzQGVAQoB/wGwAYgBJwH/AXMBZAE/Af8BTQFLAUcB/wFOAUsB - QgH/AWYBVwExAf8BmgF0ARcB/wGkAXYBAwH/AXABTwEAAf8DQwF2BAEEAAH/AZoBQgL/AYMBFQH/Af4B - egEEAv8BeAEAAv8BeAEAAv8BlQE/Av8BygGuAv8B2gHGAv8B7QHlAv8BlgFJAv8BfAENAf8B/gF4AQAB - /wH0AXMBAAH/AdABYgEAAf8BmgFOAQoB/wFjAl0B3wT/AeEBrgExAf8BvQGXATsB/wHAAZgBNQH/AeMB - pQEKAf8BzwGUAQAB/wHeAcwBnwH/A8AB/wPAAf8DwAH/A8AB/wPAAf8DwAH/A8AB/wPAAf8DrwH/CAAD - AgEDAwgBCgMhAS8DMQFOAz0BaANDAXYDRAF6A0MBdQM9AWcDMQFNAyABLgMHAQkEAggAAmMBWgHpAdkB - mgEAAf8B2gGjARwB/wKOAYwB/wOKAf8DlwH/A5sB/wORAf8DdAH/A0gB/wFDAUIBPwH/AbUBgwEHAf8B - egFXAQAB/wM2AVgEAAH/AZUBNwL/AYkBHwL/AX0BCAL/AXgBAAL/AXgBAAL/AagBXAL/AeABzQL/AaEB - ZgL/AdgBxQL/AbkBlAL/AYcBIwL/AXgBAAH/AfsBdgEAAf8B4gFqAQAB/wGvAVQBAwH/AWMCXQHfBP8B - uwGdAVMB/wGIAYQBeQH/AYwBhQF0Af8BxAGZATAB/wHPAZQBAAH/Ad4BzAGfIf8DygH/BAADEwEaAzkB - XQNZAbwDZAHbA2oB7QNjAfYDXwH7A4EB/QNfAfsDYwH2A2UB7ANjAdoDWgG6AzgBXAMTARoDQwF2AekB - pwECAf8B6QGrARIB/wHQAcoBuwH/A6wB/wNdAf8DTAH/A0sB/wNEAf8DDwH/A7MB/wNmAf8BVAFMAToB - /wGuAX0BBAH/A10BzAQAAf8BoAFJAv8BkgExAv8BgQERAv8BeQEDAv8BeAEAAv8BqAFcAv8B4AHNAv8B - oQFmAv8B2AHFAv8BwAGfAv8BiQEnAv8BeAEAAf8B/gF4AQAB/wHsAW8BAAH/Ab8BWgECAf8BYwJdAd8E - /wGUAYoBcwH/A4EB/wOBAf8BmgGKAWMB/wHPAZQBAAH/Ad4BzAGfAf8D0AH/A9AB/wPQAf8D0AH/A9AB - /wPQAf8D0AH/A9AB/wO1Af8DGgEkA1YBrgNoAfQDgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB - /wOBAf8DgQH/A4EB/wNrAfIDUgGhAmoBYQHmAe0BrQEQAf8B9AHQAXYB/wP6Af8D+gH/A30B/wN/Af8D - gAH/A4AB/wN+Af8DhAH/A7sB/wNqAf8BqAGAARwB/wJjAUgB9gQAAf8BswFvAv8BngFIAv8BiAEeAv8B - fAEHAv8BeAEAAv8BmAFDAv8BzgG0Av8B1wHAAv8B6gHgAv8BnQFXAv8BfgERAv8BeAEAAv8BeAEAAf8B - 8AFxAQAB/wHLAWQBCQH/AWMBYQFdAd8E/wGGAYMBfgH/A4EB/wOBAf8BhgGDAXsB/wHPAZQBAAH/Ad4B - zAGfAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOTAf8DVwGyA2UB5wOBAf8DgQH/A4EB - /wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DVQGvA2IB7gHvAbQBIQH/AfcB - 3AGXCf8DkQH/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 - /wHPAZQBAAH/Ad4BzAGfAf8DoQH/A6EB/wOhAf8DoQH/A6EB/wOhAf8DoQH/A6EB/wOhAf8DbwHzA18B - +wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DVQGvA0sB - jQHwAb4BPwH/AfQBzQFsIf8D+wH/A9AB/wHXAacBMQH/AmEBXQHRBAAB/wHpAdUC/wG8AYEC/wGkAVQC - /wGOASoC/wF/AQ0C/wF5AQIC/wF7AQkC/wGCAR0C/wF4AQAC/wF4AQAC/wF4AQEC/wF6AQQC/wF6AQMB - /wHzAXQBAwH/AeIBhAEyAf8DYwHfBP8BpwGUAWcB/wGDAYIBfwH/AYUBgwF+Af8BsAGUAU4B/wHTAZcB - AgH/AeABzgGfAf8D5wH/A+cB/wPnAf8D5wH/A+cB/wPnAf8D5wH/A+cB/wPAAf8DZAHbA2gB9AOBAf8D - gQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DVQGvAwcBCQNiAe4B - 8QG8ATsB/wH6AeoBwgH/A9wB/wN3Af8DaAH/A2gB/wNoAf8DMgn/AfIB3QGpAf8B6gGpAQgB/wM+AWoE - AANeAdIBkQGKAYEB+QH/AbsBfQL/AaMBUgL/AZABLAL/AYIBEwL/AX0BCAL/AXoBBAL/AXkBAgL/AXoB - BAL/AX0BCQL/AYABDwL/AX8BDQH/AfgBhgEgAf8BdgFpAWgB9ANYAbgE/wHXAbEBUgH/AZoBjwF0Af8B - oAGSAW0B/wHgAa8BNwH/AecBqQEQAf8B6wHVAaAB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8D - gQH/A5MB/wM8AWQDXwHJA30B+gOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8D - gQH/A30B+gNVAaoEAAMzAVEDaAHwAfMBxgFYAf8B+gHnAbgW/wH+AfsB/wH5AeIBqgH/Ae8BuAEtAf8D - TgGWBAIEAAM8AWYDYwHVAZEBgQF8AfgB/wG+AYUC/wGqAV8C/wGZAT4C/wGNAScC/wGGARoC/wGDARUC - /wGFARkC/wGKASIC/wGNASgC/wGTATMB/wF2AW4BaAH1A10BxQM2AVkE/wH0Ac0BbAH/AfQBywFmAf8B - 9AHLAWUB/wH0AcsBZQH/AfEBwQFJAf8B+QHjAawB/wOJAf8DiQH/A4kB/wOJAf8DiQH/A4kB/wOJAf8D - iQH/A5oB/wMGAQgDMQFMA1ABmwNlAewDfQH6A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wN9AfoD - agHtA1ABmwMvAUkIAAMiATEDXwHJAn0BZwH6AfMBygFlAf8B+QHhAaYB/wH7Ae0BzAH/AfsB7AHIAf8B - +AHdAZsB/wGCAoAB/gJlAV4B4gM9AWgEAQwAA0IBcgNjAdUBkQGMAYYB+QH/AckBmQL/AbwBfwL/Aa4B - ZgL/AaQBUwL/AZ8BSgL/AZ8BSwL/AaMBUQL/AacBWAH/AZECfAH4A10BxwM7AWIEAED/CAADBQEGAxIB - FwM6AWADUQGfA18B0wNnAe8DYwH2A2IB7gNeAdIDUQGeAzkBXwMRARYDBQEGFAADDwETA0cBggNkAdsC - fgFvAfwDZwHqA1QBqAMoATscAAM8AWUDXgHSAf8B7wHgAv8B3AG8Av8BzQGfAv8BwQGKAv8BuwF/Av8B - vwGGAv8BzQGhAv8B6QHWAf8DXAHEAzUBVQgAAUIBTQE+BwABPgMAASgDAAFAAwABIAMAAQEBAAEBBgAB - ARYAA/+FAAH/AfwBwAEDBAAB/wH8AYABAQQAAf8B+QYAAf8B+QYAAfABEwYAAcABAwQAAv8BgAEBBAAB - wAEBAYABAQQAAYACAAEBBwABAQcAAQEHAAEBBwABAQYAAYABAQYAAcABAwGAAQECAAHAAQEB8AEfAcAB - Aws= - - - 537, 24 + 356, 21 17, 17 @@ -219,7 +128,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA0A0AAAJNU0Z0AUkBTAMBAQAB - SAEAAUgBAAEgAQABIAEABP8BIQEACP8BQgFNATYHAAE2AwABKAMAAYADAAEgAwABAQEAASAGAAFAEgAD + 2AEAAdgBAAEgAQABIAEABP8BIQEACP8BQgFNATYHAAE2AwABKAMAAYADAAEgAwABAQEAASAGAAFAEgAD 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 @@ -278,161 +187,344 @@ 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= + + + + 13, 101 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs + LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu + SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAKhQAAAJNU0Z0AUkBTAIBAQQB + AAGQAQABkAEAARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAASADAAEBAQABIAYAASD/ + AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AC4AAwYBBwM0AVQDUQGiA14B0gNaAekDYAHoA10B + 0QNQAZ8DMQFNAwUBBhgAAwYBBwM0AVQDUQGiA14B0gNaAekDYAHoA10B0QNQAZ8DMQFNAwUBBhgAAwYB + BwM0AVQDUQGiA14B0gNaAekDYAHoA10B0QNQAZ8DMQFNAwUBBhgAAwYBBwM0AVQDUQGiA14B0gNaAekD + YAHoA10B0QNQAZ8DMQFNAwUBBhQAAyABLQNUAasDWwHkA0sB9QMkAfsDNgH+AzYB/gMkAfsDUwH0A2IB + 4QNRAaEDHgEqEAADIAEtA1QBqwNbAeQBRQFXAUUB9QEhAVIBIQH7ARIBUgESAf4BEgFSARIB/gEhAVIB + IQH7AU0BUwFNAfQDYgHhA1EBoQMeASoQAAMgAS0DVAGrA1sB5AFFAlcB9QEhAlIB+wESAlIB/gESAlIB + /gEhAlIB+wFNAlMB9ANiAeEDUQGhAx4BKhAAAyABLQNUAasDWwHkAkUBVwH1AiEBUgH7AhIBUgH+AhIB + UgH+AiEBUgH7Ak0BUwH0A2IB4QNRAaEDHgEqDAADGwElA1gBvQNaAfIDOgH+AzAB/wM5Af8DPAH/AzYB + /wMqAf8DJAH/A0AB/QNYAfADVgGyAxoBIwgAAxsBJQNYAb0BVQFaAVUB8gESAVoBEgH+AQABVwEAAf8B + AAFnAQAB/wEAAWwBAAH/AQABYQEAAf8BAAFMAQAB/wEAAUABAAH/ASQBQAEkAf0BUwFdAVMB8ANWAbIB + GQEaARkBIwgAAxsBJQNYAb0BVQJaAfIBEgJaAf4BAAJXAf8BAAJnAf8BAAJsAf8BAAJhAf8BAAJMAf8B + AAJAAf8BJAJAAf0BUwJdAfADVgGyARkCGgEjCAADGwElA1gBvQJVAVoB8gISAVoB/gIAAVcB/wIAAWcB + /wIAAWwB/wIAAWEB/wIAAUwB/wIAAUAB/wIkAUAB/QJTAV0B8ANWAbICGQEaASMEAAMDAQQDUgGlA14B + 8wNJAf8DVQH/A2UB/wNxAf8DdQH/A3EB/wNkAf8DTAH/AzEB/wM2Af4DXAHuA1ABmgMDAQQDAwEEAVIB + UwFSAaUBUAFvAVAB8wEAAYIBAAH/AQABmQEAAf8BAAG2AQAB/wEAAcwBAAH/AQAB0wEAAf8BAAHLAQAB + /wEAAbMBAAH/AQABiAEAAf8BAAFXAQAB/wESAVIBEgH+AVkBYAFZAe4DUAGaAwMBBAMDAQQBUgJTAaUB + UAJvAfMBAAKCAf8BAAKZAf8BAAK2Af8BAALMAf8BAALTAf8BAALLAf8BAAKzAf8BAAKIAf8BAAJXAf8B + EgJSAf4BWQJgAe4DUAGaAwMBBAMDAQQCUgFTAaUCUAFvAfMCAAGCAf8CAAGZAf8CAAG2Af8CAAHMAf8C + AAHTAf8CAAHLAf8CAAGzAf8CAAGIAf8CAAFXAf8CEgFSAf4CWQFgAe4DUAGaAwMBBAMtAUQDYAHoA3UB + /gNuAf8DewH/A4UB/wOKAf8DjAH/A4oB/wOFAf8DdgH/A1cB/wMyAf8DQAH9A14B3QMqAT8DLQFEAWAB + aQFgAegBEgGQARIB/gEAAcYBAAH/AQAB3AEAAf8BAAHuAQAB/wEAAfgBAAH/AQAB+wEAAf8BAAH5AQAB + /wEAAe8BAAH/AQAB1AEAAf8BAAGcAQAB/wEAAVoBAAH/ASQBQAEkAf0DXgHdAyoBPwMtAUQBYAJpAegB + EgKQAf4BAALGAf8BAALcAf8BAALuAf8BAAL4Af8BAAL7Af8BAAL5Af8BAALvAf8BAALUAf8BAAKcAf8B + AAJaAf8BJAJAAf0DXgHdAyoBPwMtAUQCYAFpAegCEgGQAf4CAAHGAf8CAAHcAf8CAAHuAf8CAAH4Af8C + AAH7Af8CAAH5Af8CAAHvAf8CAAHUAf8CAAGcAf8CAAFaAf8CJAFAAf0DXgHdAyoBPwNOAZUDdwH4A38B + /wOFAf8DigH/A40B/wOOAf8DjgH/A44B/wONAf8DiQH/A3cB/wNNAf8DJQH/A1oB8gNKAYsDTgGVATwB + kgE8AfgBAAHlAQAB/wEAAe8BAAH/AQAB+AEAAf8BAAH9AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB + /wEAAf4BAAH/AQAB9gEAAf8BAAHVAQAB/wEAAYsBAAH/AQABQQEAAf8BVQFaAVUB8gNKAYsDTgGVATwC + kgH4AQAC5QH/AQAC7wH/AQAC+AH/AQAC/QH/AQAD/wEAA/8BAAP/AQAC/gH/AQAC9gH/AQAC1QH/AQAC + iwH/AQACQQH/AVUCWgHyA0oBiwNOAZUCPAGSAfgCAAHlAf8CAAHvAf8CAAH4Af8CAAH9Af8CAAL/AgAC + /wIAAv8CAAH+Af8CAAH2Af8CAAHVAf8CAAGLAf8CAAFBAf8CVQFaAfIDSgGLA18B0wN+AfwDkwH/A44B + /wONAf8DjgH/A44B/wOOAf8DjgH/A44B/wONAf8DhQH/A2cB/wM0Af8DQQH5A1oBxAFbAV8BWwHTASsB + vAErAfwBDgH7AQ4B/wEDAf0BAwH/AQAB/gEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB + /wEAAf8BAAH/AQAB/QEAAf8BAAHvAQAB/wEAAbkBAAH/AQABXQEAAf8BNQFBATUB+QNaAcQBWwJfAdMB + KwK8AfwBDgL7Af8BAwL9Af8BAAL+Af8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAAv0B/wEAAu8B/wEAArkB + /wEAAl0B/wE1AkEB+QNaAcQCWwFfAdMCKwG8AfwCDgH7Af8CAwH9Af8CAAH+Af8CAAL/AgAC/wIAAv8C + AAL/AgAC/wIAAf0B/wIAAe8B/wIAAbkB/wIAAV0B/wI1AUEB+QNaAcQDbgH1A4AB/gOfAf8DkwH/A48B + /wOOAf8DjgH/A44B/wOOAf8DjgH/A44B/wOLAf8DdwH/A0gB/wNAAf0DYgHhAUoBhQFKAfUBNgHbATYB + /gEnAf8BJwH/AQsB/wELAf8BAQH/AQEB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB + /wEAAf8BAAH/AQAB/wEAAfkBAAH/AQAB1gEAAf8BAAGBAQAB/wEkAUABJAH9A2IB4QFKAoUB9QE2AtsB + /gEnA/8BCwP/AQED/wEAA/8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAAvkB/wEAAtYB/wEAAoEB/wEkAkAB + /QNiAeECSgGFAfUCNgHbAf4CJwL/AgsC/wIBAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAH5Af8C + AAHWAf8CAAGBAf8CJAFAAf0DYgHhA3UB9gOKAf4DqwH/A5kB/wOQAf8DjgH/A44B/wOOAf8DjgH/A44B + /wOOAf8DjQH/A38B/wNVAf8DQAH9A14B4gFIAYsBSAH2AVkB2wFZAf4BQgH/AUIB/wEZAf8BGQH/AQQB + /wEEAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH9AQAB + /wEAAeQBAAH/AQABmAEAAf8BJAFAASQB/QNeAeIBSAKLAfYBWQLbAf4BQgP/ARkD/wEEA/8BAAP/AQAD + /wEAA/8BAAP/AQAD/wEAA/8BAAL9Af8BAALkAf8BAAKYAf8BJAJAAf0DXgHiAkgBiwH2AlkB2wH+AkIC + /wIZAv8CBAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAB/QH/AgAB5AH/AgABmAH/AiQBQAH9A14B + 4gNhAdYDjAH8A7gB/wOjAf8DkwH/A44B/wOOAf8DjgH/A44B/wOOAf8DjgH/A40B/wOCAf8DXAH/A00B + +gNaAccBXAFhAVwB1gFkAcABZAH8AV8B/wFfAf8BLwH/AS8B/wEMAf8BDAH/AQEB/wEBAf8BAAH/AQAB + /wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/gEAAf8BAAHqAQAB/wEAAaUBAAH/ASYB + TQEmAfoDWgHHAVwCYQHWAWQCwAH8AV8D/wEvA/8BDAP/AQED/wEAA/8BAAP/AQAD/wEAA/8BAAP/AQAC + /gH/AQAC6gH/AQACpQH/ASYCTQH6A1oBxwJcAWEB1gJkAcAB/AJfAv8CLwL/AgwC/wIBAv8CAAL/AgAC + /wIAAv8CAAL/AgAC/wIAAf4B/wIAAeoB/wIAAaUB/wImAU0B+gNaAccDUAGaA44B+QPFAf8DsgH/A5wB + /wORAf8DjgH/A44B/wOOAf8DjgH/A48B/wOOAf8DgwH/A2AB/wNaAfIDTAGQA1ABmgFqAaUBagH5AXwB + /wF8Af8BUQH/AVEB/wEfAf8BHwH/AQcB/wEHAf8BAQH/AQEB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB + /wECAf8BAgH/AQIB/gECAf8BAAHrAQAB/wEAAa0BAAH/AVUBawFVAfIDTAGQA1ABmgFqAqUB+QF8A/8B + UQP/AR8D/wEHA/8BAQP/AQAD/wEAA/8BAAP/AQID/wECAv4B/wEAAusB/wEAAq0B/wFVAmsB8gNMAZAD + UAGaAmoBpQH5AnwC/wJRAv8CHwL/AgcC/wIBAv8CAAL/AgAC/wIAAv8CAgL/AgIB/gH/AgAB6wH/AgAB + rQH/AlUBawHyA0wBkAMvAUkDbAHrA6wB/gPGAf8DrgH/A5wB/wOTAf8DkAH/A48B/wOQAf8DkwH/A5MB + /wOFAf8DVAH9A2AB4AMtAUUDLwFJAWwBbQFsAesBgAHbAYAB/gF/Af8BfwH/AUkB/wFJAf8BHwH/AR8B + /wEMAf8BDAH/AQUB/wEFAf8BAwH/AQMB/wEFAf8BBQH/AQoB/wEKAf8BCgH+AQoB/wEBAe0BAQH/ASQB + tgEkAf0BYAFmAWAB4AMtAUUDLwFJAWwCbQHrAYAC2wH+AX8D/wFJA/8BHwP/AQwD/wEFA/8BAwP/AQUD + /wEKA/8BCgL+Af8BAQLtAf8BJAK2Af0BYAJmAeADLQFFAy8BSQJsAW0B6wKAAdsB/gJ/Av8CSQL/Ah8C + /wIMAv8CBQL/AgMC/wIFAv8CCgL/AgoB/gH/AgEB7QH/AiQBtgH9AmABZgHgAy0BRQMDAQQDVgGuA38B + 9QPZAf8DywH/A7cB/wOnAf8DnQH/A5oB/wOcAf8DnwH/A5sB/wOJAf8DaAHwA1IBowMDAQQDAwEEA1YB + rgFwAYUBcAH1AagB/wGoAf8BiQH/AYkB/wFcAf8BXAH/ATcB/wE3Af8BIgH/ASIB/wEbAf8BGwH/AR8B + /wEfAf8BJgH/ASYB/wEdAf8BHQH/AQUB8wEFAf8BUwFsAVMB8ANSAaMDAwEEAwMBBANWAa4BcAKFAfUB + qAP/AYkD/wFcA/8BNwP/ASID/wEbA/8BHwP/ASYD/wEdA/8BBQLzAf8BUwJsAfADUgGjAwMBBAMDAQQD + VgGuAnABhQH1AqgC/wKJAv8CXAL/AjcC/wIiAv8CGwL/Ah8C/wImAv8CHQL/AgUB8wH/AlMBbAHwA1IB + owMDAQQEAAMcAScDXQHHA38B9gO7Af4D1wH/A8wB/wPCAf8DuwH/A7cB/wOxAf8DgAH+A2sB9ANZAbwD + GwEmCAADHAEnA10BxwF4AYsBeAH2AZMB2wGTAf4BpQH/AaUB/wGLAf8BiwH/AXQB/wF0Af8BZgH/AWYB + /wFcAf8BXAH/AU4B/wFOAf8BQgHbAUIB/gFQAX8BUAH0AVcBWQFXAbwDGwEmCAADHAEnA10BxwF4AosB + 9gGTAtsB/gGlA/8BiwP/AXQD/wFmA/8BXAP/AU4D/wFCAtsB/gFQAn8B9AFXAlkBvAMbASYIAAMcAScD + XQHHAngBiwH2ApMB2wH+AqUC/wKLAv8CdAL/AmYC/wJcAv8CTgL/AkIB2wH+AlABfwH0AlcBWQG8AxsB + JgwAAyEBMANZAbYDbQHuA6EB+gO+Af0D1AH/A8wB/wO+Af0DigH5A2wB6wNVAawDHwEsEAADIQEwA1kB + tgFrAW8BawHuAYoBqwGKAfoBrgHJAa4B/QGfAf8BnwH/AYwB/wGMAf8BZAHJAWQB/QFoAaUBaAH5AWEB + bQFhAesDVQGsAx8BLBAAAyEBMANZAbYBawJvAe4BigKrAfoBrgLJAf0BnwP/AYwD/wFkAskB/QFoAqUB + +QFhAm0B6wNVAawDHwEsEAADIQEwA1kBtgJrAW8B7gKKAasB+gKuAckB/QKfAv8CjAL/AmQByQH9AmgB + pQH5AmEBbQHrA1UBrAMfASwUAAMGAQcDNgFYA1UBrANmAeUDrwH8A5kB+wNlAeIDUwGnAzMBUQMGAQcY + AAMGAQcDNgFYA1UBrAFmAWcBZgHlAX4BwAF+AfwBeQG2AXkB+wNlAeIDUwGnAzMBUQMGAQcYAAMGAQcD + NgFYA1UBrAFmAmcB5QF+AsAB/AF5ArYB+wNlAeIDUwGnAzMBUQMGAQcYAAMGAQcDNgFYA1UBrAJmAWcB + 5QJ+AcAB/AJ5AbYB+wNlAeIDUwGnAzMBUQMGAQcMAAFCAU0BPgcAAT4DAAEoAwABQAMAASADAAEBAQAB + AQYAAQEWAAP/gQAB4AEHAeABBwHgAQcB4AEHAcABAwHAAQMBwAEDAcABAwGAAQEBgAEBAYABAQGAAQFQ + AAGAAQEBgAEBAYABAQGAAQEBwAEDAcABAwHAAQMBwAEDAeABBwHgAQcB4AEHAeABBws= - 451, 21 + 24, 73 AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu - SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAXCAAAAJNU0Z0AUkBTAIBAQIB - AAHAAQABwAEAASABAAEgAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABgAMAASADAAEBAQABIAYAAUB6 + SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAoh8AAAJNU0Z0AUkBTAIBAQIB + AAFQAQEBUAEBASABAAEgAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABgAMAASADAAEBAQABIAYAAUB6 AANcAecBCAEKAQAB/wMqAUAMAAMqAUADNgFXAz8BbAM/AWwDPwFsAz8BbAM/AWwDPwFsAz8BbAM/AWwD PwFsAz8BbAM/AWwDPwFsAz8BbAM/AWwDPwFsAz8BbAI7AToBYgMzAVEDGAEh/wB1AAMhATADRgGAFAAB - FQEfAQQB/wENARUBAAH/AQgBCgEAAf8BCAEKAQAB/wwAA0QBegNTAacBYwFhAV0BzwFjAWEBXQHPAWMB - YQFdAc8BYwFhAV0BzwFjAWEBXQHPAWMBYQFdAc8BYwFhAV0BzwFjAWEBXQHPAWMBYQFdAc8BYwFhAV0B - zwFjAWEBXQHPAWMBYQFdAc8BYwFhAV0BzwFjAWEBXQHPAWMBYQFdAc8BYgFgAV0BzgNZAbsCUAFPAZsD - KgFA/wBpAANaAb8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8B - CAEKAQAB/wNaAb8DWgG/AUMBdAEHAf8BRwF3AQwB/wElAUcBAAH/AQ4BGQEAAf8MAAJLAUoBigJaAVgB - vQGBAWcBSwHqAYEBZwFLAeoBgQFnAUsB6gGBAWcBSwHqAYEBZwFLAeoBgQFnAUsB6gGBAWcBSwHqAYEB - ZwFLAeoBgQFnAUsB6gGBAWcBSwHqAYEBZwFLAeoBgQFnAUsB6gGBAWcBSwHqAYEBZwFLAeoBgQFnAUsB - 6gGAAWgBTgHpAWMBXwFbAdMDVQGvAy4BSP8AZQABCAEKAQAB/wEQAR4BAAH/ASEBQQEAAf8BJwFLAQAB - /wEmAUoBAAH/ASEBQQEAAf8BEAEeAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEpAU4BAAH/AVoB - lgEQAf8BWgGcARAB/wFzAbYBJgH/ARgBLgEAAf8MAANJAYYCWgFYAbcBdgFlAVYB4wF2AWUBVgHjAXYB - ZQFWAeMBdgFlAVYB4wF8AWoBVAHmAY4BagFIAe0BpwFrATUB9AHSAXcBEgH8Af8BeAEAAv8BeAEAAf8B - rQFuAS8B9QF8AWoBVAHmAXYBZQFWAeMBdgFlAVYB4wF2AWUBVgHjAXMBZQFWAeIBYAFeAVsBzQJVAVMB - qgIuAS0BRv8AYQABCAEKAQAB/wE9AXEBAgH/AUwBhgEHAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8B - UgGMAQgB/wFSAYwBEAH/AUwBfwEPAf8BOwFnAQgB/wEhATQBCAH/AVMBjgELAf8BWgGcARAB/wFyAbMB - JwH/AVMBgQEbAf8QAAMrAUEDNgFZAkABPwFuAkABPwFuAkABPwFuAkABPwFuA0QBewJRAVABnwJdAVsB - xQGOAWkBRwHuAf8BeAEAAv8BeAEAAf8CXwFcAckDRQF8AkABPwFuAkABPwFuAkABPwFuAz8BbQM7AWMD - MwFSAxkBIv8AXQABFQEpAQAB/wFKAYQBBAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8B - UgGMAQgB/wFSAYwBEAH/AVIBjAEQAf8BUgGMARAB/wFaAZQBEAH/AVYBkAEMAf8BWgGaARAB/wFaAZwB - EAH/AXIBqQEwAf8BCAEKAQAB/wEIAQoBAAH/DAADDAEQAxEBFgMVARwDFQEcAxUBHAMVARwDIQEwAj4B - PQFpAlMBUgGlAXsBZgFVAeUB/wF4AQAC/wF4AQAB/wJVAVMBqgMiATEDFQEcAxUBHAMVARwDFAEbAxMB - GQMQARUDBwEJ/wBZAAEWAScBAgH/AUkBgAEHAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB - /wFSAYwBCAH/AVIBjAELAf8BUgGMARAB/wFSAYwBEAH/AVgBkgEQAf8BWgGUARAB/wFaAZsBEAH/AVoB - nAEQAf8BXAGeARIB/wE7AW0BAwH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/CAADBQQGBAgBCgMIAQoD - CAEKAwgBCgMXAR8COQE4AV0DUQGeAXYBZQFWAeMB/wF4AQAC/wF4AQAB/wNSAaMDGAEhAwgBCgMIAQoD - CAEKAwgBCgMHAQkDBgEHAwIBA/8AVQADXQHfAUcBgAEDAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8B - UgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB/wFSAYwBEAH/AVIBjAEQAf8BWgGUARAB/wFaAZQB - EAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGYARAB/wEWASoBAAH/AQgBCgEAAf8B - CAEKAQAB/xwAAxIBFwM1AVYDUAGaAXEBZQFZAeEB/wF4AQAC/wF4AQAB/wJRAVABnwMSARj/AHEAASwB - UAEAAf8BSgGMAQAB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQ4B - /wFVAZIBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZQBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoB - nAEQAf8BWgGcARAB/wFaAZQBGAH/AVgBkgEWAf8BEAEeAQAB/wEIAQoBAAH/HAADEgEXAzUBVgNQAZoB - cQFlAVkB4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGP8AdQADSwGPATMBXgEAAf8BUgGMAQgB/wFSAYwB - CAH/AVIBjAEIAf8BUgGMARAB/wF/AcABMwH/AV8BngEXAf8BIAE/AQAB/wEIAQoBAAH/AVIBjAEQAf8B - WgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZUBFwH/AVoBlAEYAf8BWgGUARgB/wFaAZQB - GAH/AQgBCgEAAf8BCAEKAQAB/xgAAxIBFwM1AVYDUAGaAXEBZQFZAeEB/wF4AQAC/wF4AQAB/wJRAVAB - nwMSARgUAAQBAwMBBAMGBAcBCQMHAQkDBAEFBAIEAf8ATQABQgF7AQAB/wFSAYwBCAH/AXsBxgEpAf8D - MwFQBAADDAEQATkBawEAAf8BWgGcARAB/wFaAZwBEAH/AV0BlwETAf8BVgGUAQwB/wFaAZwBEAH/AVoB - lAEYAf8BWgGUARgB/wFjAZwBGAH/AWMBpQEXAf8BKQFQAQAB/wEIAQoBAAH/GAADEgEXAzUBVgNQAZoB - cQFlAVkB4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBQABAIDCQEMAw8BFAMTARoDEgEYAwoBDQMEAQUE - Af8AUQABCAEKAQAB/wwAARMBIwEAAf8BWgGUARAB/wFaAZwBEAH/AZQB1gFKAf8BDQERAQIB/wExAVoB - AAH/AVoBlAESAf8BWgGUARgB/wFaAZQBGAH/AWMBnAEYAf8BYwGlARcB/wFrAaUBIQH/ARABHgEAAf8Y - AAMSARcDNQFWA1ABmgFxAWUBWQHhAf8BeAEAAv8BeAEAAf8CUQFQAZ8DEgEYFAADBQEGAx0BKQMwAUoC - OwE8AWUCOwE8AWQDKAE8AhUBFgEdAwYBCP8APQADXQHfAQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgB - CgEAAf8BCAEKAQAB/wEIAQoBAAH/AzMBUAM6AWABSwGFAQcB/wFaAZQBEAH/AVoBnAEQAf8BOQFrAQAB - /wMJAQwBEAEeAQAB/wFUAY4BEgH/AVoBlAEYAf8BYwGcARgB/wFjAZwBGAH/AWMBpQEXAf8BcwG0ASkB - /wEQAR4BAAH/GAADEgEXAzUBVgNQAZoBcQFlAVkB4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBQAAwkB - DAMzAVACTAFNAZECXAFfAckCWwFgAcoDRAF6AykBPQMMARD/ADkAAQgBCgEAAf8BCAEKAQAB/wEIAQoB + FQEfAQQB/wENARUBAAH/AQgBCgEAAf8BCAEKAQAB/wwAA0QBegNTAacCYQFdAc8CYQFdAc8CYQFdAc8C + YQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8CYQFdAc8C + YQFdAc8CYQFdAc8CYAFdAc4DWQG7AlABTwGbAyoBQP8AaQADWgG/AQgBCgEAAf8BCAEKAQAB/wEIAQoB + AAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8DWgG/A1oBvwFDAXQBBwH/AUcBdwEMAf8B + JQFHAQAB/wEOARkBAAH/DAACSwFKAYoCWgFYAb0CZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoC + ZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoCZwFdAeoC + YwFaAekCXwFbAdMDVQGvAy4BSP8AZQABCAEKAQAB/wEQAR4BAAH/ASEBQQEAAf8BJwFLAQAB/wEmAUoB + AAH/ASEBQQEAAf8BEAEeAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEpAU4BAAH/AVoBlgEQAf8B + WgGcARAB/wFzAbYBJgH/ARgBLgEAAf8MAANJAYYCWgFYAbcCZQFgAeMCZQFgAeMCZQFgAeMCZQFgAeMC + agFhAeYCagFeAe0BdAFoAVMB9AGuAXcBKwH8Af8BeAEAAv8BeAEAAf8BcAFuAU8B9QJqAWEB5gJlAWAB + 4wJlAWAB4wJlAWAB4wJlAV4B4gJeAVsBzQJVAVMBqgIuAS0BRv8AYQABCAEKAQAB/wE9AXEBAgH/AUwB + hgEHAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBEAH/AUwBfwEPAf8BOwFnAQgB + /wEhATQBCAH/AVMBjgELAf8BWgGcARAB/wFyAbMBJwH/AVMBgQEbAf8QAAMrAUEDNgFZAkABPwFuAkAB + PwFuAkABPwFuAkABPwFuA0QBewJRAVABnwJdAVsBxQFmAmIB7gH/AXgBAAL/AXgBAAH/Al8BXQHJA0UB + fAJAAT8BbgJAAT8BbgJAAT8BbgM/AW0DOwFjAzMBUgMZASL/AF0AARUBKQEAAf8BSgGEAQQB/wFSAYwB + CAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB/wFSAYwBEAH/AVIBjAEQAf8B + WgGUARAB/wFWAZABDAH/AVoBmgEQAf8BWgGcARAB/wFyAakBMAH/AQgBCgEAAf8BCAEKAQAB/wwAAwwB + EAMRARYDFQEcAxUBHAMVARwDFQEcAyEBMAI+AT0BaQJTAVIBpQJmAV8B5QH/AXgBAAL/AXgBAAH/AlUB + UwGqAyIBMQMVARwDFQEcAxUBHAMUARsDEwEZAxABFQMHAQn/AFkAARYBJwECAf8BSQGAAQcB/wFSAYwB + CAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQsB/wFSAYwBEAH/AVIBjAEQAf8B + WAGSARAB/wFaAZQBEAH/AVoBmwEQAf8BWgGcARAB/wFcAZ4BEgH/ATsBbQEDAf8BCAEKAQAB/wEIAQoB + AAH/AQgBCgEAAf8IAAMFBAYECAEKAwgBCgMIAQoDCAEKAxcBHwI5ATgBXQNRAZ4CZQFgAeMB/wF4AQAC + /wF4AQAB/wNSAaMDGAEhAwgBCgMIAQoDCAEKAwgBCgMHAQkDBgEHAwIBA/8AVQADXQHfAUcBgAEDAf8B + UgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB/wFSAYwB + EAH/AVIBjAEQAf8BWgGUARAB/wFaAZQBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8B + WgGYARAB/wEWASoBAAH/AQgBCgEAAf8BCAEKAQAB/xwAAxIBFwM1AVYDUAGaA2IB4QH/AXgBAAL/AXgB + AAH/AlEBUAGfAxIBGP8AcQABLAFQAQAB/wFKAYwBAAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIB + jAEIAf8BUgGMAQgB/wFSAYwBDgH/AVUBkgEQAf8BWgGcARAB/wFaAZwBEAH/AVoBlAEQAf8BWgGcARAB + /wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBlAEYAf8BWAGSARYB/wEQAR4BAAH/AQgB + CgEAAf8cAAMSARcDNQFWA1ABmgNiAeEB/wF4AQAC/wF4AQAB/wJRAVABnwMSARj/AHUAA0sBjwEzAV4B + AAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8BfwHAATMB/wFfAZ4BFwH/ASABPwEAAf8B + CAEKAQAB/wFSAYwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGVARcB/wFaAZQB + GAH/AVoBlAEYAf8BWgGUARgB/wEIAQoBAAH/AQgBCgEAAf8YAAMSARcDNQFWA1ABmgNiAeEB/wF4AQAC + /wF4AQAB/wJRAVABnwMSARgUAAQBAwMBBAMGBAcBCQMHAQkDBAEFBAIEAf8ATQABQgF7AQAB/wFSAYwB + CAH/AXsBxgEpAf8DMwFQBAADDAEQATkBawEAAf8BWgGcARAB/wFaAZwBEAH/AV0BlwETAf8BVgGUAQwB + /wFaAZwBEAH/AVoBlAEYAf8BWgGUARgB/wFjAZwBGAH/AWMBpQEXAf8BKQFQAQAB/wEIAQoBAAH/GAAD + EgEXAzUBVgNQAZoDYgHhAf8BeAEAAv8BeAEAAf8CUQFQAZ8DEgEYFAAEAgMJAQwDDwEUAxMBGgMSARgD + CgENAwQBBQQB/wBRAAEIAQoBAAH/DAABEwEjAQAB/wFaAZQBEAH/AVoBnAEQAf8BlAHWAUoB/wENAREB + AgH/ATEBWgEAAf8BWgGUARIB/wFaAZQBGAH/AVoBlAEYAf8BYwGcARgB/wFjAaUBFwH/AWsBpQEhAf8B + EAEeAQAB/xgAAxIBFwM1AVYDUAGaA2IB4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBQAAwUBBgMdASkD + MAFKAjsBPAFlAjsBPAFkAygBPAIVARYBHQMGAQj/AD0AA10B3wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB + /wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wMzAVADOgFgAUsBhQEHAf8BWgGUARAB/wFaAZwBEAH/ATkB + awEAAf8DCQEMARABHgEAAf8BVAGOARIB/wFaAZQBGAH/AWMBnAEYAf8BYwGcARgB/wFjAaUBFwH/AXMB + tAEpAf8BEAEeAQAB/xgAAxIBFwM1AVYDUAGaA2IB4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBQAAwkB + DAMzAVACTAFNAZECXQFfAckCWwFdAcoDRAF6AykBPQMMARD/ADkAAQgBCgEAAf8BCAEKAQAB/wEIAQoB AAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/ATMBXwECAf8B WgGUARAB/wFaAZwBEAH/Aa0B5wFjAf8BEAEeAQAB/wEIAQoBAAH/ARQBJgEAAf8BVAGOARIB/wFiAZsB - GAH/AWMBnAEYAf8BYwGlARcB/wFjAaUBFwH/AWMBnAEhAf8BGAEuAQAB/xgAAxIBFwM1AVYDUAGaAXEB - ZQFZAeEB/wF4AQAC/wF4AQAB/wJRAVABnwMSARgUAAMJAQsDLgFHA0gBhAJZAV0BwwJbAWABywNJAYUD - LgFHAw8BE/8ANQABCAEKAQAB/wErAVIBAAH/AUEBcgEFAf8BSgGEAQYB/wFKAYQBBgH/AUoBhAEGAf8B - QgFzAQYB/wEpAVABAAH/ARABHgEAAf8BHwE6AQAB/wFVAY8BCwH/AVoBlQEQAf8BWgGcARAB/wHWAf8B - jAH/ARABHgEAAf8BGAEuAQAB/wFCAXgBAwH/AVoBlAEYAf8BYgGbARgB/wFjAZwBGAH/AWMBpQEXAf8B - YwGlARcB/wFzAbQBKQH/ARABHgEAAf8YAAMSARcDNQFWA1ABmgFxAWUBWQHhAf8BeAEAAv8BeAEAAf8C - UQFQAZ8DEgEYFAADBgEIAyQBNAM8AWYDUwGnA1gBuAJHAUgBgwMxAU0DDwEU/wAxAAEoAU0BAAH/AU4B - iAEHAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB - /wFSAYwBEAH/AVIBjAEQAf8BWgGUARAB/wFaAZwBEAH/AWMBpQEXAf8BQgF7AQAB/wFKAYQBBgH/AVIB - jAEIAf8BWgGYARQB/wFaAZQBGAH/AWMBnAEYAf8BYwGlARcB/wFjAaUBFwH/AWMBpQEXAf8BlAHJAU0B - /wQAAxABFQMaASQDIQEvAxEBFgQCBAEDEgEXAzUBVgNQAZoBcQFlAVkB4QH/AXgBAAL/AXgBAAH/AlEB - UAGfAxIBGBQAAwMBBAMTARkDJQE2AjsBPAFkAkEBQgFyAzMBUQMhAS8DCQEM/wAtAAEpAU4BAgH/AVIB - jAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB - /wFSAYwBEAH/AVIBjAEQAf8BWgGUARAB/wFaAZUBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoB - nAEQAf8BWgGUARgB/wFaAZQBGAH/AWMBnAEYAf8BYwGcARgB/wFjAaUBFwH/AWMBpQEXAf8BYwGlARcB - /wFlAaABIQH/BAADHgErAjEBMAFMAzsBYwMiATEDBwEJAwQBBQMSARgDNgFXA1ABmgFxAWUBWQHhAf8B - eAEAAv8BeAEAAf8CUQFQAZ8DEgEYHAADBwEJAxwBJwMjATICGQEaASMDDwEUAwQBBf8AKQADRgGAAU4B - iAEHAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB - /wFSAYwBEAH/AVIBjAEQAf8BUgGMARAB/wFaAZQBEAH/AVoBlwEQAf8BWgGcARAB/wFaAZwBEAH/AVoB - nAEQAf8BWgGcARAB/wFaAZQBGAH/AVoBlAEYAf8BYwGcARgB/wFjAaEBGAH/AWMBpQEXAf8BYwGlARcB - /wF4AboBLAH/AQgBCgEAAf8EAAMkATQDRQF8AloBWAG3A04BlAM/AW0DKAE7Ax8BLAM5AV4DUAGaAXEB - ZQFZAeEB/wF4AQAC/wF4AQAB/wJRAVABnwMSARgcAAMSARcDPAFmA0oBiQNAAW8DLgFHAw4BEv8AKQAB - NQFeAQcB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwB - CAH/AVIBjAEIAf8BUgGMARAB/wFSAYwBEAH/AVoBlAEQAf8BWgGUARAB/wFaAZsBEAH/AVoBnAEQAf8B - WgGcARAB/wFaAZwBEAH/AVoBlgEWAf8BWgGUARgB/wFdAZcBGAH/AWMBnAEYAf8BYwGlARcB/wFjAaUB - FwH/AXABswEgAf8BKwFQAQQB/wgAAycBOgJTAVEBogHTAWYBGwH7AX0BZgFTAecCXAFaAcQCQwFCAXUD - MQFNAkABPwFuAlEBUAGfAXYBZQFWAeMB/wF4AQAC/wF4AQAB/wJRAVABnwMSARgcAAMZASIDTgGVAlsB - YAHNAlYBVwGyA0QBegMdASkDBgEIBAIEAf8AHQABSgGEAQYB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB - /wFSAYwBCAH/AVIBjAEIAf8BZwGpARcB/wFSAYwBCAH/AUoBhAEGAf8BSgGEAQYB/wFSAYwBEAH/AVoB - lAEQAf8BWgGXARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBlAEYAf8BWgGUARgB - /wFfAZgBGAH/AWMBngEYAf8BYwGlARcB/wFrAakBHQH/ASkBUAEAAf8MAAMiATEDTgGYAaUBbwE6AfMB - lQFoAUAB8AF8AWoBVAHmAVwBWgFXAcICVQFTAaoDUwGnAlkBVwG8AYkBbAFPAesB/wF4AQAC/wF4AQAB - /wJRAVABnwMSARgcAAMUARsCQwFEAXcCVgFZAbYCWwFgAc0CVgFYAbMDPwFsAyYBOAMMAQ8DAgED/wAd - AAFKAYQBBgH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BaQGkAR4B/wEsAVABAwH/AQgB - CgEAAf8BNwFhAQcB/wFSAYwBDgH/AVIBjAEQAf8BfwHBATIB/wFbAV4BWwHTA1oBvwEvAVkBAAH/AUQB - egEFAf8BUAGKAQgB/wFaAZwBDgH/AVoBnAEQAf8BWgGcARAB/wFPAYYBEAH/AUQBdAEMAf8DWgG/EAAC - GgEZASMDRAF7AWABXQFbAcoBaQFjAVwB2gF+AWkBTwHoAZEBZwFCAe8BiAFrAUwB7AFmAWEBWwHWAWUB - YAFbAdgBpwFrATUB9AH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBwAAw8BEwM0AVMDTQGSAl0BYwHPAl0B - ZgHUAlIBVAGoAkEBQgFyAyYBOAMUARsDBgEIAwIBA/8AFQABSgGMAQAB/wFSAYwBCAH/AVIBjAEIAf8B - UgGMAQgB/wFSAYwBCAH/AWcBnQEnAf8BCAEKAQAB/wEKAQ8BAAH/AUIBdwEDAf8BUgGMARAB/wFaAZwB - EAH/ASUBQQEFAf8EAAM6AWABCAEKAQAB/wEIAQoBAAH/BAADRgGAA0YBgANGAYAcAAMKAQ0DIgExAzQB - VANEAXgCUQFQAZ8BYwFhAV0BzwGOAWoBSAHtAYgBawFMAewBlQFoAUAB8AHTAWYBGwH7Af8BeAEAAv8B - eAEAAf8CUQFQAZ8DEgEYHAADBgEIAxgBIQMxAU0CTAFNAZECWAFaAb0CXQFiAdECWQFdAcMCUQFTAaID - PQFnAhkBGgEjAwwBD/8AFQABOwFtAQIB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVMB - jgEQAf8BDwEbAQAB/wEjAUMBAAH/AVIBjAEQAf8BUgGMARAB/wF7Ab0BMAH/AQgBCgEAAf8BCAEKAQAB - /wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8oAAMDAQQDCQELAyIBMQM4AVsC - TwFOAZcCXwFcAcgBewFmAVUB5QG+AW8BLgH3AeQBbwESAf0B/wF4AQAC/wF4AQAB/wJRAVABnwMSARgc - AAQBAwIBAwMVARwDNQFWAksBTAGPAlwBXwHIAlcBbQHfAlYBdgHjAlIBUwGlAzQBUwMcASf/ABUAAQgB - CgEAAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AU4BggEPAf8BSgGEAQYB - /wFSAYwBEAH/AWMBpQEXAf8BCAEKAQAB/wEIAQoBAAH/ARMBIwEAAf8BQgFzAQYB/wEgAT8BAAH/AQgB - CgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/yAABAEDAwEEAwwBEAMYASADKQE9Az4B - agJXAVYBtQF7AWYBVQHlAb4BbwEuAfcB/wF4AQAC/wF4AQAB/wJRAVABnwMSARggAAQBAwcBCQMUARsD - KgFAA0MBdgNVAa8CTgGAAekCWwFjAdACUAFRAZ8DMwFR/wAZAAFCAXMBBgH/AVIBjAEIAf8BUgGMAQgB - /wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBEAH/AVIBjAEQAf8BSgGEAQYB/wEQAR4BAAH/ATEB - WgEAAf8BTQGEAQ0B/wFaAZwBEAH/AVoBnAEQAf8BUgGMAQgB/wEQAR4BAAH/AQgBCgEAAf8BCAEKAQAB - /wNGAYAsAAMCAQMDCwEOAyABLgNDAXYCVwFVAbEBcwFmAVkB4AGxAW0BLQH2AccBagEgAfkCUQFQAZwD - EgEXDAAEAQMMARADFwEfAx0BKAMdASgDDAEPCAADDwEUAiYBJwE5AkcBSAGDAlkBcQHhAlMBfQHnAlsB - YgHSAj8BQAFu/wAdAAFJAYkBAAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB - /wFSAYwBEAH/AVIBjAEQAf8BUgGMARAB/wFaAZQBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoB - nAEQAf8BWgGUARgB/wFCAXMBBgH/AQoBDgEAAf8wAAQBAwMBBAMMAQ8DHgEqAzoBYQJZAVcBuQF0AWMB - UwHkAY4BaQFHAe4CTwFOAZcDEgEXDAADAgEDAyEBLwM2AVkCQgFDAXUCQQFCAXMDHgErCAADBAEFAwwB - DwM4AVwCXQFiAc4CTAGIAewCQgGRAe8DRgF//wAhAAE6AWsBAAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwB - CAH/AVIBjAEQAf8BUgGMARAB/wFaAZQBEAH/AVoBlAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8B - WgGcARAB/wFaAZQBGAH/AVoBlAEYAf8BYwGlARcB/wEZASwBAwH/OAADAgEDAwgBCgMgAS0CQQFAAXEC - TQFMAZEDUAGaAjsBOgFiAwwBDwwAAwMBBAMrAUEDRAF6A1MBpwNVAa0DNwFaAxgBIAMJAQsDBgEHAw0B - EQM5AV8CXQFiAdECQgGRAe8COgGlAfMCRgFHAYH/ACUAASwBVQEAAf8BUgGMAQgB/wFSAYwBCAH/AVIB + GAH/AWMBnAEYAf8BYwGlARcB/wFjAaUBFwH/AWMBnAEhAf8BGAEuAQAB/xgAAxIBFwM1AVYDUAGaA2IB + 4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBQAAwkBCwMuAUcDSAGEAlkBXAHDAlwBXwHLA0kBhQMuAUcD + DwET/wA1AAEIAQoBAAH/ASsBUgEAAf8BQQFyAQUB/wFKAYQBBgH/AUoBhAEGAf8BSgGEAQYB/wFCAXMB + BgH/ASkBUAEAAf8BEAEeAQAB/wEfAToBAAH/AVUBjwELAf8BWgGVARAB/wFaAZwBEAH/AdYB/wGMAf8B + EAEeAQAB/wEYAS4BAAH/AUIBeAEDAf8BWgGUARgB/wFiAZsBGAH/AWMBnAEYAf8BYwGlARcB/wFjAaUB + FwH/AXMBtAEpAf8BEAEeAQAB/xgAAxIBFwM1AVYDUAGaA2IB4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIB + GBQAAwYBCAMkATQDPAFmA1MBpwNYAbgCRwFIAYMDMQFNAw8BFP8AMQABKAFNAQAB/wFOAYgBBwH/AVIB + jAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8BUgGMARAB + /wFSAYwBEAH/AVoBlAEQAf8BWgGcARAB/wFjAaUBFwH/AUIBewEAAf8BSgGEAQYB/wFSAYwBCAH/AVoB + mAEUAf8BWgGUARgB/wFjAZwBGAH/AWMBpQEXAf8BYwGlARcB/wFjAaUBFwH/AZQByQFNAf8EAAMQARUD + GgEkAyEBLwMRARYEAgQBAxIBFwM1AVYDUAGaA2IB4QH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBQAAwMB + BAMTARkDJQE2AjsBPAFkAkEBQgFyAzMBUQMhAS8DCQEM/wAtAAEpAU4BAgH/AVIBjAEIAf8BUgGMAQgB + /wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB/wFSAYwBEAH/AVIB + jAEQAf8BWgGUARAB/wFaAZUBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGUARgB + /wFaAZQBGAH/AWMBnAEYAf8BYwGcARgB/wFjAaUBFwH/AWMBpQEXAf8BYwGlARcB/wFlAaABIQH/BAAD + HgErAjEBMAFMAzsBYwMiATEDBwEJAwQBBQMSARgDNgFXA1ABmgNiAeEB/wF4AQAC/wF4AQAB/wJRAVAB + nwMSARgcAAMHAQkDHAEnAyMBMgIZARoBIwMPARQDBAEF/wApAANGAYABTgGIAQcB/wFSAYwBCAH/AVIB + jAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8BUgGMARAB + /wFSAYwBEAH/AVoBlAEQAf8BWgGXARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoB + lAEYAf8BWgGUARgB/wFjAZwBGAH/AWMBoQEYAf8BYwGlARcB/wFjAaUBFwH/AXgBugEsAf8BCAEKAQAB + /wQAAyQBNANFAXwCWgFYAbcDTgGUAz8BbQMoATsDHwEsAzkBXgNQAZoDYgHhAf8BeAEAAv8BeAEAAf8C + UQFQAZ8DEgEYHAADEgEXAzwBZgNKAYkDQAFvAy4BRwMOARL/ACkAATUBXgEHAf8BUgGMAQgB/wFSAYwB + CAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8B + UgGMARAB/wFaAZQBEAH/AVoBlAEQAf8BWgGbARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZYB + FgH/AVoBlAEYAf8BXQGXARgB/wFjAZwBGAH/AWMBpQEXAf8BYwGlARcB/wFwAbMBIAH/ASsBUAEEAf8I + AAMnAToCUwFRAaIBmwFfASEB+wJlAVwB5wJcAVoBxAJDAUIBdQMxAU0CQAE/AW4CUQFQAZ8CZQFgAeMB + /wF4AQAC/wF4AQAB/wJRAVABnwMSARgcAAMZASIDTgGVAlsBXgHNAlYBVwGyA0QBegMdASkDBgEIBAIE + Af8AHQABSgGEAQYB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BZwGpARcB + /wFSAYwBCAH/AUoBhAEGAf8BSgGEAQYB/wFSAYwBEAH/AVoBlAEQAf8BWgGXARAB/wFaAZwBEAH/AVoB + nAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBlAEYAf8BWgGUARgB/wFfAZgBGAH/AWMBngEYAf8BYwGlARcB + /wFrAakBHQH/ASkBUAEAAf8MAAMiATEDTgGYAm8BWwHzAmgBXQHwAmoBYQHmAloBVwHCAlUBUwGqA1MB + pwJZAVcBvAJsAWEB6wH/AXgBAAL/AXgBAAH/AlEBUAGfAxIBGBwAAxQBGwJDAUQBdwJWAVkBtgJbAV4B + zQJWAVgBswM/AWwDJgE4AwwBDwMCAQP/AB0AAUoBhAEGAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8B + UgGMAQgB/wFpAaQBHgH/ASwBUAEDAf8BCAEKAQAB/wE3AWEBBwH/AVIBjAEOAf8BUgGMARAB/wF/AcEB + MgH/AVsBXgFbAdMDWgG/AS8BWQEAAf8BRAF6AQUB/wFQAYoBCAH/AVoBnAEOAf8BWgGcARAB/wFaAZwB + EAH/AU8BhgEQAf8BRAF0AQwB/wNaAb8QAAIaARkBIwNEAXsCXQFbAcoCYwFfAdoCaQFgAegCZwFZAe8B + ZgFlAV0B7AJhAVwB1gJfAVsB2AF0AWgBUwH0Af8BeAEAAv8BeAEAAf8CUQFQAZ8DEgEYHAADDwETAzQB + UwNNAZICXQFhAc8CXQFhAdQCUgFUAagCQQFCAXIDJgE4AxQBGwMGAQgDAgED/wAVAAFKAYwBAAH/AVIB + jAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BZwGdAScB/wEIAQoBAAH/AQoBDwEAAf8BQgF3AQMB + /wFSAYwBEAH/AVoBnAEQAf8BJQFBAQUB/wQAAzoBYAEIAQoBAAH/AQgBCgEAAf8EAANGAYADRgGAA0YB + gBwAAwoBDQMiATEDNAFUA0QBeAJRAVABnwJhAV0BzwJqAV4B7QFmAWUBXQHsAmgBXQHwAZsBXwEhAfsB + /wF4AQAC/wF4AQAB/wJRAVABnwMSARgcAAMGAQgDGAEhAzEBTQJMAU0BkQJYAVoBvQJdAWEB0QJZAVwB + wwJRAVMBogM9AWcCGQEaASMDDAEP/wAVAAE7AW0BAgH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIB + jAEIAf8BUwGOARAB/wEPARsBAAH/ASMBQwEAAf8BUgGMARAB/wFSAYwBEAH/AXsBvQEwAf8BCAEKAQAB + /wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/ygAAwMBBAMJAQsD + IgExAzgBWwJPAU4BlwJfAVwByAJmAV8B5QGGAW8BUQH3Ab4BXQE2Af0B/wF4AQAC/wF4AQAB/wJRAVAB + nwMSARgcAAQBAwIBAwMVARwDNQFWAksBTAGPAlwBXwHIAl0BYwHfAmABZQHjAlIBUwGlAzQBUwMcASf/ + ABUAAQgBCgEAAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AU4BggEPAf8B + SgGEAQYB/wFSAYwBEAH/AWMBpQEXAf8BCAEKAQAB/wEIAQoBAAH/ARMBIwEAAf8BQgFzAQYB/wEgAT8B + AAH/AQgBCgEAAf8BCAEKAQAB/wEIAQoBAAH/AQgBCgEAAf8BCAEKAQAB/yAABAEDAwEEAwwBEAMYASAD + KQE9Az4BagJXAVYBtQJmAV8B5QGGAW8BUQH3Af8BeAEAAv8BeAEAAf8CUQFQAZ8DEgEYIAAEAQMHAQkD + FAEbAyoBQANDAXYDVQGvAloBYwHpAlsBXwHQAlABUQGfAzMBUf8AGQABQgFzAQYB/wFSAYwBCAH/AVIB + jAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEIAf8BUgGMARAB/wFSAYwBEAH/AUoBhAEGAf8BEAEeAQAB + /wExAVoBAAH/AU0BhAENAf8BWgGcARAB/wFaAZwBEAH/AVIBjAEIAf8BEAEeAQAB/wEIAQoBAAH/AQgB + CgEAAf8DRgGALAADAgEDAwsBDgMgAS4DQwF2AlcBVQGxAmYBYAHgAXcBYwFIAfYBjgFqAUEB+QJRAVAB + nAMSARcMAAQBAwwBEAMXAR8DHQEoAx0BKAMMAQ8IAAMPARQCJgEnATkCRwFIAYMDYgHhAlwBZQHnA14B + 0gI/AUABbv8AHQABSQGJAQAB/wFSAYwBCAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8B + UgGMARAB/wFSAYwBEAH/AVIBjAEQAf8BWgGUARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwB + EAH/AVoBlAEYAf8BQgFzAQYB/wEKAQ4BAAH/MAAEAQMDAQQDDAEPAx4BKgM6AWECWQFXAbkCYwFbAeQB + ZgJiAe4CTwFOAZcDEgEXDAADAgEDAyEBLwM2AVkCQgFDAXUCQQFCAXMDHgErCAADBAEFAwwBDwM4AVwC + XQFgAc4CXQFmAewCWQFnAe8DRgF//wAhAAE6AWsBAAH/AVIBjAEIAf8BUgGMAQgB/wFSAYwBCAH/AVIB jAEQAf8BUgGMARAB/wFaAZQBEAH/AVoBlAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB - /wFaAZQBGAH/AVoBlAEYAf8BIQFBAQAB/0AABAIDBwEJAxAEFQEcAhYBFQEdAw8BEwMCAQMMAAMDAQQD - MANLAUwBjwJbAWABygJZAW0B3gNOAZQDNAFTAxUBHAMNAREDHgErAkMBRAF3AlcBbQHfAkEBngHxAk4B - gAHpA0QBe/8AIQABEgEiAQAB/wFMAYYBBgH/AVIBjAEIAf8BWgGcARAB/wFQAYoBCAH/AVIBjAEQAf8B - WgGUARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAERAf8BaQGrAR8B/wEIAQoB - AAH/bAADAgEDAyEBLwM6AWEDVQGtAlwBaQHaA1oBvwJQAVEBnwNEAXoCQQFCAXIDSQGFAlYBVwGyAkgB - jgHtAlsBawHbAlUBVwGxAzgBW/8AIQABEAEeAQAB/wFIAX0BBwH/AVkBkwETAf8BVQGIARgB/wgAASEB - QQEAAf8BQgF7AQAB/wFSAYwBCAH/AVUBkQEIAf8BOQFmAQQB/wNZAe94AAMGAQgDFwEfA0QBewJZAV4B - xgJTAXQB5AI1AacB9AJHAY4B7gJHAY4B7gJBAZ4B8QItAbEB9gISAdIB/AJZAVwBvgM+AWsDJAE0/wAp - AAEeAToBAAH/nAAEAgMJAQwDKgM/AUABbgNOAZYCVgFYAbMCWQFcAcECWgFdAccCWgFdAccCVwFZAbkC - UQFSAaQCQAFBAXEDJQE2AxMBGf8A0QAEAQMLAQ4DJgE4AzkBXgNGAX0CSgFLAYsDSgGJAz4BawMqAT8D - FwEfAwIBA/8ABQABQgFNAT4HAAE+AwABKAMAAYADAAEgAwABAQEAAQEGAAECFgAD/wEAA/8BxwIAAQcB - /wgAAv8BzwGHAgABBwH/CAAB/wH+AQABBwIAAQcB/wgAAf8B/AEAAQcCAAEHAf8IAAH/AfgBAAEPAgAB - BwH/CAAB/wHwAQABBwIAAQcB/wgAAf8B4AEAAQMCAAEHAf8IAAH/AcABAAEBAfwBAwL/CAAB/wHAAQAB - AQH8AQMC/wgAAf8B4AIAAfwBAwHgAR8IAAH/AfwBIAEAAfwBAwHgAR8IAAH/Af4B4AEAAfwBAwHgAR8I - AAH/AcACAAH8AQMB4AEfCAAB/wGAAgAB/AEDAeABHwgAAf8DAAH8AQMB4AEfCAAB/gIAAQEBAAEDAeAB - HwgAAfwCAAEBAQABAwH4AR8IAAH4AgABAQEAAQMB+AEfCAAB+AIAAQMBAAEDAfgBAwgAAfgCAAEHAQAB - AwH4AQMIAAH4AgABDwEAAQMB+AkAAfgBAAFEAX8BAAEDAfgJAAH4AQABAQH/AYABAwH4CQAB+AIAAX8B - gAEDAfwJAAH8AgABfwHwAQMBgQGACAAB/gIAAf8B8AEDAYEBgAgAAf8CAAH/AfwBAwGACQAB/wGAAQEB - /wH+AQMBgAkAAf8BAAEDA/8BgAkAAf8BDAEPA/8BwAkAAf8B3wT/AcAJAAb/AfABAQgACw== + /wFaAZQBGAH/AVoBlAEYAf8BYwGlARcB/wEZASwBAwH/OAADAgEDAwgBCgMgAS0CQQFAAXECTQFMAZED + UAGaAjsBOgFiAwwBDwwAAwMBBAMrAUEDRAF6A1MBpwNVAa0DNwFaAxgBIAMJAQsDBgEHAw0BEQM5AV8C + XQFhAdECWQFnAe8CWwFvAfMCRgFHAYH/ACUAASwBVQEAAf8BUgGMAQgB/wFSAYwBCAH/AVIBjAEQAf8B + UgGMARAB/wFaAZQBEAH/AVoBlAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZQB + GAH/AVoBlAEYAf8BIQFBAQAB/0AABAIDBwEJAxAEFQEcAhYBFQEdAw8BEwMCAQMMAAMDAQQDMANLAUwB + jwJbAV0BygJbAWEB3gNOAZQDNAFTAxUBHAMNAREDHgErAkMBRAF3Al0BYwHfAmEBcAHxAloBYwHpA0QB + e/8AIQABEgEiAQAB/wFMAYYBBgH/AVIBjAEIAf8BWgGcARAB/wFQAYoBCAH/AVIBjAEQAf8BWgGUARAB + /wFaAZwBEAH/AVoBnAEQAf8BWgGcARAB/wFaAZwBEAH/AVoBnAERAf8BaQGrAR8B/wEIAQoBAAH/bAAD + AgEDAyEBLwM6AWEDVQGtAl8BYwHaA1oBvwJQAVEBnwNEAXoCQQFCAXIDSQGFAlYBVwGyAl4BagHtAmAB + ZAHbAlUBVwGxAzgBW/8AIQABEAEeAQAB/wFIAX0BBwH/AVkBkwETAf8BVQGIARgB/wgAASEBQQEAAf8B + QgF7AQAB/wFSAYwBCAH/AVUBkQEIAf8BOQFmAQQB/wNZAe94AAMGAQgDFwEfA0QBewJZAVwBxgJbAWMB + 5AJTAXQB9AJiAWYB7gJiAWYB7gJhAXAB8QJIAXcB9gIrAa4B/AJZAVwBvgM+AWsDJAE0/wApAAEeAToB + AAH/nAAEAgMJAQwDKgM/AUABbgNOAZYCVgFYAbMCWQFcAcECWgFdAccCWgFdAccCVwFZAbkCUQFSAaQC + QAFBAXEDJQE2AxMBGf8A0QAEAQMLAQ4DJgE4AzkBXgNGAX0CSgFLAYsDSgGJAz4BawMqAT8DFwEfAwIB + A/8ABQABQgFNAT4HAAE+AwABKAMAAYADAAEgAwABAQEAAQEGAAECFgAD/wEAA/8BxwIAAQcB/wgAAv8B + zwGHAgABBwH/CAAB/wH+AQABBwIAAQcB/wgAAf8B/AEAAQcCAAEHAf8IAAH/AfgBAAEPAgABBwH/CAAB + /wHwAQABBwIAAQcB/wgAAf8B4AEAAQMCAAEHAf8IAAH/AcABAAEBAfwBAwL/CAAB/wHAAQABAQH8AQMC + /wgAAf8B4AIAAfwBAwHgAR8IAAH/AfwBIAEAAfwBAwHgAR8IAAH/Af4B4AEAAfwBAwHgAR8IAAH/AcAC + AAH8AQMB4AEfCAAB/wGAAgAB/AEDAeABHwgAAf8DAAH8AQMB4AEfCAAB/gIAAQEBAAEDAeABHwgAAfwC + AAEBAQABAwH4AR8IAAH4AgABAQEAAQMB+AEfCAAB+AIAAQMBAAEDAfgBAwgAAfgCAAEHAQABAwH4AQMI + AAH4AgABDwEAAQMB+AkAAfgBAAFEAX8BAAEDAfgJAAH4AQABAQH/AYABAwH4CQAB+AIAAX8BgAEDAfwJ + AAH8AgABfwHwAQMBgQGACAAB/gIAAf8B8AEDAYEBgAgAAf8CAAH/AfwBAwGACQAB/wGAAQEB/wH+AQMB + gAkAAf8BAAEDA/8BgAkAAf8BDAEPA/8BwAkAAf8B3wT/AcAJAAb/AfABAQgACw== + + + + 20, 44 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs + LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu + SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAuhIAAAJNU0Z0AUkBTAIBAQQB + AAFQAQIBUAECARABAAEQAQAE/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/wKAAUoB/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+AWoEAANeAdIB + fwFxAWoB+QH/AbsBfQL/AaMBUgL/AZABLAL/AYIBEwL/AX0BCAL/AXoBBAL/AXkBAgL/AXoBBAL/AX0B + CQL/AYABDwL/AX8BDQH/AfgBhgEgAf8DaAH0A1gBuAT/AdcBsQFSAf8BmgGPAXQB/wGgAZIBbQH/AeAB + rwE3Af8B5wGpARAB/wHrAdUBoAH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DkwH/AzwB + ZANfAckDfQH6A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DfQH6A1UB + qgQAAzMBUQNoAfAB8wHGAVgB/wH6AecBuBb/Af4B+wH/AfkB4gGqAf8B7wG4AS0B/wNOAZYEAgQAAzwB + ZgNjAdUDfAH4Af8BvgGFAv8BqgFfAv8BmQE+Av8BjQEnAv8BhgEaAv8BgwEVAv8BhQEZAv8BigEiAv8B + jQEoAv8BkwEzAf8CbgFoAfUDXQHFAzYBWQT/AfQBzQFsAf8B9AHLAWYB/wH0AcsBZQH/AfQBywFlAf8B + 8QHBAUkB/wH5AeMBrAH/A4kB/wOJAf8DiQH/A4kB/wOJAf8DiQH/A4kB/wOJAf8DmgH/AwYBCAMxAUwD + UAGbA2UB7AN9AfoDgQH/A4EB/wOBAf8DgQH/A4EB/wOBAf8DgQH/A30B+gNqAe0DUAGbAy8BSQgAAyIB + MQNfAckCfQFnAfoB8wHKAWUB/wH5AeEBpgH/AfsB7QHMAf8B+wHsAcgB/wH4Ad0BmwH/A4AB/gJlAV4B + 4gM9AWgEAQwAA0IBcgNjAdUBfwF1AWoB+QH/AckBmQL/AbwBfwL/Aa4BZgL/AaQBUwL/AZ8BSgL/AZ8B + SwL/AaMBUQL/AacBWAH/A3wB+ANdAccDOwFiBABA/wgAAwUBBgMSARcDOgFgA1EBnwNfAdMDZwHvA2MB + 9gNiAe4DXgHSA1EBngM5AV8DEQEWAwUBBhQAAw8BEwNHAYIDZAHbAn4BbwH8A2cB6gNUAagDKAE7HAAD + PAFlA14B0gH/Ae8B4AL/AdwBvAL/Ac0BnwL/AcEBigL/AbsBfwL/Ab8BhgL/Ac0BoQL/AekB1gH/A1wB + xAM1AVUIAAFCAU0BPgcAAT4DAAEoAwABQAMAASADAAEBAQABAQYAAQEWAAP/hQAB/wH8AcABAwQAAf8B + /AGAAQEEAAH/AfkGAAH/AfkGAAHwARMGAAHAAQMEAAL/AYABAQQAAcABAQGAAQEEAAGAAgABAQcAAQEH + AAEBBwABAQcAAQEGAAGAAQEGAAHAAQMBgAEBAgABwAEBAfABHwHAAQML - 297, 21 + 205, 21 - 216, 21 + 125, 19 @@ -512,7 +604,7 @@ - 55 + 133 diff --git a/qtc-net-client-2/Forms/Profile.Designer.cs b/qtc-net-client-2/Forms/Profile.Designer.cs index 877d33b..fea3037 100644 --- a/qtc-net-client-2/Forms/Profile.Designer.cs +++ b/qtc-net-client-2/Forms/Profile.Designer.cs @@ -225,7 +225,7 @@ MaximizeBox = false; MinimizeBox = false; Name = "Profile"; - StartPosition = FormStartPosition.CenterParent; + StartPosition = FormStartPosition.CenterScreen; Text = "QtC.NET Client - User Profile"; FormClosed += Profile_FormClosed; Load += frmProfile_Load; diff --git a/qtc-net-client-2/Forms/Profile.cs b/qtc-net-client-2/Forms/Profile.cs index 4e3e897..88170d5 100644 --- a/qtc-net-client-2/Forms/Profile.cs +++ b/qtc-net-client-2/Forms/Profile.cs @@ -18,25 +18,25 @@ namespace qtc_net_client_2.Forms { public partial class Profile : Form { - UserInformationDto _userInformationDto; - IApiService _apiService; - IGatewayService _gatewayService; + private UserInformationDto _userInformationDto; + private IApiService _apiService; + private IGatewayService _gatewayService; - ServiceResponse? pfpRes; - public Profile(UserInformationDto userInfo, ServiceResponse? pfp, IApiService apiService, IGatewayService gatewayService) + private ServiceResponse? pfpRes; + private List contactsList; + public Profile(UserInformationDto userInfo, ServiceResponse? pfp, List contacts, IApiService apiService, IGatewayService gatewayService) { _userInformationDto = userInfo; _apiService = apiService; _gatewayService = gatewayService; pfpRes = pfp; + contactsList = contacts; InitializeComponent(); } - private async void frmProfile_Load(object sender, EventArgs e) + private void frmProfile_Load(object sender, EventArgs e) { - var contactsList = await _apiService.GetCurrentUserContacts(); - lblUsername.Text = _userInformationDto.Username; lblCurrencyAmount.Text = _userInformationDto.CurrencyAmount.ToString("N0"); rtxtBio.Text = _userInformationDto.Bio; @@ -75,9 +75,9 @@ namespace qtc_net_client_2.Forms } else btnAddContact.Visible = true; - if (contactsList != null && contactsList.Success && contactsList.Data != null) + if (contactsList != null) { - var contact = contactsList.Data.FirstOrDefault(e => e.UserId == _userInformationDto.Id || e.OwnerId == _userInformationDto.Id); + var contact = contactsList.FirstOrDefault(e => e.UserId == _userInformationDto.Id || e.OwnerId == _userInformationDto.Id); if (contact != null) { if (contact.OwnerId == _apiService.CurrentUser.Id)