From bbe4050b407f1f3b39461675e26ab5723be55a51 Mon Sep 17 00:00:00 2001
From: jp64k <122999544+jp64k@users.noreply.github.com>
Date: Sun, 7 Dec 2025 19:57:09 +0100
Subject: [PATCH] Completed comprehensive rookie redesign with extensive UI/UX
modernization, new theme and architectural improvements
Implemented a custom theme with a new color scheme and extensively refined UI logic and architecture for improved modernity and consistency. Relocated and reworked numerous options (mount device, select device, share app, uninstall app, pull-to-desktop, filters, etc.), and updated all message boxes to use the new themed styling with enhanced visual polish. All message boxes now use custom themed styling with enhanced visual polish. Corrected grammatical or logical flaws across text, tooltips, and title updates throughout the application. Added smooth animations to left-side navigation / container elements. Fine-tuned sizing, positioning, and colors across numerous UI components. Enhanced GalleryView with proper favorites support including context menu integration, favorite border styling and favorite badge, as well as some bug fixes. Implemented custom modern ToggleSwitch component (iOS-like) with animations. Completely overhauled quest option and rookie option menus to utilize new toggle switches in modernized layouts. Refined sorting and installation status logic to streamline UX; rookie now also functions as an efficient installed-quest-app browser with easily accessible view/uninstall controls. Added WebView2.dll validation to ensure runtime dependencies exist. Re-implemented trailer option. GalleryView is now shown on very first launch, but rookie remembers your preferred view thereafter, so list-view users won't be bothered, while everyone still gets to see the new gallery view at least once. Gallery performance has also been validated on very-low-spec hardware and confirmed to run fine and fast there, due to numerous optimizations. Given the extensive scope of changes across this commit series for beta-2.35-yt, I believe this update represents a significant milestone warranting v3.0 designation. In my opinion these changes represent one of the most significant set of logical and visual changes and enhancements the rookie application has seen in years. Changes have been summarized in changelog.txt for update.
---
ADB.cs | 4 +-
AndroidSideloader.csproj | 7 +-
App.config | 6 +-
FlexibleMessageBox.cs | 769 ++++----
GalleryView.cs | 141 +-
MainForm.Designer.cs | 1278 +++++++------
MainForm.cs | 1896 ++++++++++++++-----
MainForm.resx | 52 +-
Properties/Settings.Designer.cs | 6 +-
Properties/Settings.settings | 6 +-
QuestForm.Designer.cs | 774 ++++----
QuestForm.cs | 115 +-
RoundButton.cs | 53 +-
SettingsForm.Designer.cs | 1120 ++++++++----
SettingsForm.cs | 217 ++-
SettingsForm.resx | 3046 -------------------------------
ToggleSwitch.cs | 264 +++
UpdateForm.Designer.cs | 129 +-
UpdateForm.cs | 197 +-
Updater.cs | 4 +-
Utilities/SettingsManager.cs | 7 +-
changelog.txt | 37 +-
version | 2 +-
23 files changed, 4618 insertions(+), 5512 deletions(-)
create mode 100644 ToggleSwitch.cs
diff --git a/ADB.cs b/ADB.cs
index 3c080b3..f00c6c3 100644
--- a/ADB.cs
+++ b/ADB.cs
@@ -305,7 +305,7 @@ namespace AndroidSideloader
_ = ADB.RunAdbCommandToString($"pull \"/sdcard/Android/data/{MainForm.CurrPCKG}\" \"{Environment.CurrentDirectory}\"");
Program.form.changeTitle("Uninstalling game...");
_ = Sideloader.UninstallGame(MainForm.CurrPCKG);
- Program.form.changeTitle("Reinstalling Game");
+ Program.form.changeTitle("Reinstalling game...");
ret += ADB.RunAdbCommandToString($"install -g \"{path}\"");
_ = ADB.RunAdbCommandToString($"push \"{Environment.CurrentDirectory}\\{MainForm.CurrPCKG}\" /sdcard/Android/data/");
string directoryToDelete = Path.Combine(Environment.CurrentDirectory, MainForm.CurrPCKG);
@@ -317,7 +317,7 @@ namespace AndroidSideloader
}
}
- Program.form.changeTitle(" \n\n");
+ Program.form.changeTitle("");
return ret;
}
}
diff --git a/AndroidSideloader.csproj b/AndroidSideloader.csproj
index 406308c..f18d336 100644
--- a/AndroidSideloader.csproj
+++ b/AndroidSideloader.csproj
@@ -155,7 +155,7 @@
.\SergeUtils.dll
- C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.dll
+ ..\..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.dll
@@ -172,7 +172,7 @@
- C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Drawing.dll
+ ..\..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Drawing.dll
@@ -211,6 +211,9 @@
NewApps.cs
+
+ Component
+
Form
diff --git a/App.config b/App.config
index 519115b..32efb8b 100644
--- a/App.config
+++ b/App.config
@@ -33,7 +33,7 @@
True
- Microsoft Sans Serif, 9pt
+ Microsoft Sans Serif, 10pt
@@ -135,13 +135,13 @@
False
- DarkGray
+ White
25, 25, 25
- 25, 25, 25
+ 42, 45, 58
25, 25, 25
diff --git a/FlexibleMessageBox.cs b/FlexibleMessageBox.cs
index 587e65a..299d746 100644
--- a/FlexibleMessageBox.cs
+++ b/FlexibleMessageBox.cs
@@ -1,246 +1,72 @@
using System;
+using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
+using System.Drawing.Drawing2D;
using System.Globalization;
using System.Linq;
+using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace JR.Utils.GUI.Forms
{
- /* FlexibleMessageBox – A flexible replacement for the .NET MessageBox
- *
- * Author: Jörg Reichert (public@jreichert.de)
- * Contributors: Thanks to: David Hall, Roink
- * Version: 1.3
- * Published at: http://www.codeproject.com/Articles/601900/FlexibleMessageBox
- *
- ************************************************************************************************************
- * Features:
- * - It can be simply used instead of MessageBox since all important static "Show"-Functions are supported
- * - It is small, only one source file, which could be added easily to each solution
- * - It can be resized and the content is correctly word-wrapped
- * - It tries to auto-size the width to show the longest text row
- * - It never exceeds the current desktop working area
- * - It displays a vertical scrollbar when needed
- * - It does support hyperlinks in text
- *
- * Because the interface is identical to MessageBox, you can add this single source file to your project
- * and use the FlexibleMessageBox almost everywhere you use a standard MessageBox.
- * The goal was NOT to produce as many features as possible but to provide a simple replacement to fit my
- * own needs. Feel free to add additional features on your own, but please left my credits in this class.
- *
- ************************************************************************************************************
- * Usage examples:
- *
- * FlexibleMessageBox.Show("Just a text");
- *
- * FlexibleMessageBox.Show("A text",
- * "A caption");
- *
- * FlexibleMessageBox.Show("Some text with a link: www.google.com",
- * "Some caption",
- * MessageBoxButton
- *
- *
- *
- *
- *
- * s.AbortRetryIgnore,
- * MessageBoxIcon.Information,
- * MessageBoxDefaultButton.Button2);
- *
- * var dialogResult = FlexibleMessageBox.Show("Do you know the answer to life the universe and everything?",
- * "One short question",
- * MessageBoxButtons.YesNo);
- *
- ************************************************************************************************************
- * THE SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS", WITHOUT WARRANTY
- * OF ANY KIND, EXPRESS OR IMPLIED. IN NO EVENT SHALL THE AUTHOR BE
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF THIS
- * SOFTWARE.
- *
- ************************************************************************************************************
- * History:
- * Version 1.3 - 19.Dezember 2014
- * - Added refactoring function GetButtonText()
- * - Used CurrentUICulture instead of InstalledUICulture
- * - Added more button localizations. Supported languages are now: ENGLISH, GERMAN, SPANISH, ITALIAN
- * - Added standard MessageBox handling for "copy to clipboard" with + and +
- * - Tab handling is now corrected (only tabbing over the visible buttons)
- * - Added standard MessageBox handling for ALT-Keyboard shortcuts
- * - SetDialogSizes: Refactored completely: Corrected sizing and added caption driven sizing
- *
- * Version 1.2 - 10.August 2013
- * - Do not ShowInTaskbar anymore (original MessageBox is also hidden in taskbar)
- * - Added handling for Escape-Button
- * - Adapted top right close button (red X) to behave like MessageBox (but hidden instead of deactivated)
- *
- * Version 1.1 - 14.June 2013
- * - Some Refactoring
- * - Added internal form class
- * - Added missing code comments, etc.
- *
- * Version 1.0 - 15.April 2013
- * - Initial Version
- */
public class FlexibleMessageBox
{
#region Public statics
- ///
- /// Defines the maximum width for all FlexibleMessageBox instances in percent of the working area.
- ///
- /// Allowed values are 0.2 - 1.0 where:
- /// 0.2 means: The FlexibleMessageBox can be at most half as wide as the working area.
- /// 1.0 means: The FlexibleMessageBox can be as wide as the working area.
- ///
- /// Default is: 70% of the working area width.
- ///
public static double MAX_WIDTH_FACTOR = 0.7;
-
- ///
- /// Defines the maximum height for all FlexibleMessageBox instances in percent of the working area.
- ///
- /// Allowed values are 0.2 - 1.0 where:
- /// 0.2 means: The FlexibleMessageBox can be at most half as high as the working area.
- /// 1.0 means: The FlexibleMessageBox can be as high as the working area.
- ///
- /// Default is: 90% of the working area height.
- ///
public static double MAX_HEIGHT_FACTOR = 0.9;
-
- ///
- /// Defines the font for all FlexibleMessageBox instances.
- ///
- /// Default is: SystemFonts.MessageBoxFont
- ///
public static Font FONT = SystemFonts.MessageBoxFont;
#endregion
#region Public show functions
- ///
- /// Shows the specified message box.
- ///
- /// The text.
- /// The dialog result.
public static DialogResult Show(string text)
{
return FlexibleMessageBoxForm.Show(null, text, string.Empty, MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);
}
- ///
- /// Shows the specified message box.
- ///
- /// The owner.
- /// The text.
- /// The dialog result.
public static DialogResult Show(IWin32Window owner, string text)
{
return FlexibleMessageBoxForm.Show(owner, text, string.Empty, MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);
}
- ///
- /// Shows the specified message box.
- ///
- /// The text.
- /// The caption.
- /// The dialog result.
public static DialogResult Show(string text, string caption)
{
return FlexibleMessageBoxForm.Show(null, text, caption, MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);
}
- ///
- /// Shows the specified message box.
- ///
- /// The owner.
- /// The text.
- /// The caption.
- /// The dialog result.
public static DialogResult Show(IWin32Window owner, string text, string caption)
{
return FlexibleMessageBoxForm.Show(owner, text, caption, MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);
}
- ///
- /// Shows the specified message box.
- ///
- /// The text.
- /// The caption.
- /// The buttons.
- /// The dialog result.
public static DialogResult Show(string text, string caption, MessageBoxButtons buttons)
{
return FlexibleMessageBoxForm.Show(null, text, caption, buttons, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);
}
- ///
- /// Shows the specified message box.
- ///
- /// The owner.
- /// The text.
- /// The caption.
- /// The buttons.
- /// The dialog result.
public static DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons)
{
return FlexibleMessageBoxForm.Show(owner, text, caption, buttons, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);
}
- ///
- /// Shows the specified message box.
- ///
- /// The text.
- /// The caption.
- /// The buttons.
- /// The icon.
- ///
public static DialogResult Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon)
{
return FlexibleMessageBoxForm.Show(null, text, caption, buttons, icon, MessageBoxDefaultButton.Button1);
}
- ///
- /// Shows the specified message box.
- ///
- /// The owner.
- /// The text.
- /// The caption.
- /// The buttons.
- /// The icon.
- /// The dialog result.
public static DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon)
{
return FlexibleMessageBoxForm.Show(owner, text, caption, buttons, icon, MessageBoxDefaultButton.Button1);
}
- ///
- /// Shows the specified message box.
- ///
- /// The text.
- /// The caption.
- /// The buttons.
- /// The icon.
- /// The default button.
- /// The dialog result.
public static DialogResult Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton)
{
return FlexibleMessageBoxForm.Show(null, text, caption, buttons, icon, defaultButton);
}
- ///
- /// Shows the specified message box.
- ///
- /// The owner.
- /// The text.
- /// The caption.
- /// The buttons.
- /// The icon.
- /// The default button.
- /// The dialog result.
public static DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton)
{
return FlexibleMessageBoxForm.Show(owner, text, caption, buttons, icon, defaultButton);
@@ -250,23 +76,37 @@ namespace JR.Utils.GUI.Forms
#region Internal form class
- ///
- /// The form to show the customized message box.
- /// It is defined as an internal class to keep the public interface of the FlexibleMessageBox clean.
- ///
private class FlexibleMessageBoxForm : Form
{
+ #region Constants and P/Invoke
+
+ private const int CS_DROPSHADOW = 0x00020000;
+ private const int WM_NCLBUTTONDOWN = 0xA1;
+ private const int HT_CAPTION = 0x2;
+ private const int BORDER_RADIUS = 12;
+
+ [DllImport("user32.dll")]
+ private static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
+
+ [DllImport("user32.dll")]
+ private static extern bool ReleaseCapture();
+
+ protected override CreateParams CreateParams
+ {
+ get
+ {
+ CreateParams cp = base.CreateParams;
+ cp.ClassStyle |= CS_DROPSHADOW;
+ return cp;
+ }
+ }
+
+ #endregion
+
#region Form-Designer generated code
- ///
- /// Erforderliche Designervariable.
- ///
private System.ComponentModel.IContainer components = null;
- ///
- /// Verwendete Ressourcen bereinigen.
- ///
- /// True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
@@ -276,10 +116,21 @@ namespace JR.Utils.GUI.Forms
base.Dispose(disposing);
}
- ///
- /// Erforderliche Methode für die Designerunterstützung.
- /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
- ///
+ private void CloseButton_Click(object sender, EventArgs e)
+ {
+ this.DialogResult = DialogResult.Cancel;
+ this.Close();
+ }
+
+ private void TitlePanel_MouseDown(object sender, MouseEventArgs e)
+ {
+ if (e.Button == MouseButtons.Left)
+ {
+ ReleaseCapture();
+ SendMessage(this.Handle, WM_NCLBUTTONDOWN, (IntPtr)HT_CAPTION, IntPtr.Zero);
+ }
+ }
+
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
@@ -290,23 +141,75 @@ namespace JR.Utils.GUI.Forms
pictureBoxForIcon = new System.Windows.Forms.PictureBox();
button2 = new System.Windows.Forms.Button();
button3 = new System.Windows.Forms.Button();
+ titlePanel = new System.Windows.Forms.Panel();
+ titleLabel = new System.Windows.Forms.Label();
+ closeButton = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)FlexibleMessageBoxFormBindingSource).BeginInit();
panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureBoxForIcon).BeginInit();
+ titlePanel.SuspendLayout();
SuspendLayout();
//
+ // titlePanel
+ //
+ titlePanel.BackColor = System.Drawing.Color.FromArgb(20, 24, 29);
+ titlePanel.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
+ titlePanel.Location = new System.Drawing.Point(6, 6);
+ titlePanel.Name = "titlePanel";
+ titlePanel.Size = new System.Drawing.Size(248, 28);
+ titlePanel.TabIndex = 10;
+ titlePanel.Controls.Add(closeButton);
+ titlePanel.Controls.Add(titleLabel);
+ titlePanel.MouseDown += TitlePanel_MouseDown;
+ //
+ // titleLabel
+ //
+ titleLabel.AutoSize = false;
+ titleLabel.Dock = System.Windows.Forms.DockStyle.Fill;
+ titleLabel.ForeColor = System.Drawing.Color.White;
+ titleLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ titleLabel.Location = new System.Drawing.Point(0, 0);
+ titleLabel.Name = "titleLabel";
+ titleLabel.Padding = new System.Windows.Forms.Padding(18, 0, 0, 0);
+ titleLabel.Size = new System.Drawing.Size(218, 28);
+ titleLabel.TabIndex = 0;
+ titleLabel.Text = "";
+ titleLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ titleLabel.MouseDown += TitlePanel_MouseDown;
+ //
+ // closeButton
+ //
+ closeButton.Dock = System.Windows.Forms.DockStyle.Right;
+ closeButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ closeButton.FlatAppearance.BorderSize = 0;
+ closeButton.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(200, 60, 60);
+ closeButton.BackColor = System.Drawing.Color.FromArgb(20, 24, 29);
+ closeButton.ForeColor = System.Drawing.Color.White;
+ closeButton.Font = new System.Drawing.Font("Segoe UI", 9F);
+ closeButton.Location = new System.Drawing.Point(218, 0);
+ closeButton.Name = "closeButton";
+ closeButton.Size = new System.Drawing.Size(30, 28);
+ closeButton.TabIndex = 1;
+ closeButton.TabStop = false;
+ closeButton.Text = "✕";
+ closeButton.Click += CloseButton_Click;
+ //
// button1
//
button1.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right;
- button1.AutoSize = true;
button1.DialogResult = System.Windows.Forms.DialogResult.OK;
- button1.Location = new System.Drawing.Point(11, 67);
- button1.MinimumSize = new System.Drawing.Size(0, 24);
+ button1.Location = new System.Drawing.Point(16, 80);
button1.Name = "button1";
- button1.Size = new System.Drawing.Size(75, 24);
+ button1.Size = new System.Drawing.Size(75, 28);
button1.TabIndex = 2;
button1.Text = "OK";
- button1.UseVisualStyleBackColor = true;
+ button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ button1.FlatAppearance.BorderSize = 0;
+ button1.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(60, 65, 80);
+ button1.BackColor = System.Drawing.Color.FromArgb(42, 45, 58);
+ button1.ForeColor = System.Drawing.Color.White;
+ button1.Font = new System.Drawing.Font("Segoe UI", 9F);
+ button1.Cursor = System.Windows.Forms.Cursors.Hand;
button1.Visible = false;
//
// richTextBoxMessage
@@ -314,16 +217,17 @@ namespace JR.Utils.GUI.Forms
richTextBoxMessage.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom
| System.Windows.Forms.AnchorStyles.Left
| System.Windows.Forms.AnchorStyles.Right;
- richTextBoxMessage.BackColor = System.Drawing.Color.White;
+ richTextBoxMessage.BackColor = System.Drawing.Color.FromArgb(20, 24, 29);
+ richTextBoxMessage.ForeColor = System.Drawing.Color.White;
richTextBoxMessage.BorderStyle = System.Windows.Forms.BorderStyle.None;
richTextBoxMessage.DataBindings.Add(new System.Windows.Forms.Binding("Text", FlexibleMessageBoxFormBindingSource, "MessageText", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
richTextBoxMessage.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 0);
- richTextBoxMessage.Location = new System.Drawing.Point(50, 26);
+ richTextBoxMessage.Location = new System.Drawing.Point(52, 6);
richTextBoxMessage.Margin = new System.Windows.Forms.Padding(0);
richTextBoxMessage.Name = "richTextBoxMessage";
richTextBoxMessage.ReadOnly = true;
richTextBoxMessage.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
- richTextBoxMessage.Size = new System.Drawing.Size(200, 20);
+ richTextBoxMessage.Size = new System.Drawing.Size(190, 20);
richTextBoxMessage.TabIndex = 0;
richTextBoxMessage.TabStop = false;
richTextBoxMessage.Text = "";
@@ -334,18 +238,18 @@ namespace JR.Utils.GUI.Forms
panel1.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom
| System.Windows.Forms.AnchorStyles.Left
| System.Windows.Forms.AnchorStyles.Right;
- panel1.BackColor = System.Drawing.Color.White;
+ panel1.BackColor = System.Drawing.Color.FromArgb(20, 24, 29);
panel1.Controls.Add(pictureBoxForIcon);
panel1.Controls.Add(richTextBoxMessage);
- panel1.Location = new System.Drawing.Point(-3, -4);
+ panel1.Location = new System.Drawing.Point(6, 34);
panel1.Name = "panel1";
- panel1.Size = new System.Drawing.Size(268, 59);
+ panel1.Size = new System.Drawing.Size(248, 59);
panel1.TabIndex = 1;
//
// pictureBoxForIcon
//
pictureBoxForIcon.BackColor = System.Drawing.Color.Transparent;
- pictureBoxForIcon.Location = new System.Drawing.Point(15, 19);
+ pictureBoxForIcon.Location = new System.Drawing.Point(15, 15);
pictureBoxForIcon.Name = "pictureBoxForIcon";
pictureBoxForIcon.Size = new System.Drawing.Size(32, 32);
pictureBoxForIcon.TabIndex = 8;
@@ -355,80 +259,273 @@ namespace JR.Utils.GUI.Forms
//
button2.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right;
button2.DialogResult = System.Windows.Forms.DialogResult.OK;
- button2.Location = new System.Drawing.Point(92, 67);
- button2.MinimumSize = new System.Drawing.Size(0, 24);
+ button2.Location = new System.Drawing.Point(97, 80);
button2.Name = "button2";
- button2.Size = new System.Drawing.Size(75, 24);
+ button2.Size = new System.Drawing.Size(75, 28);
button2.TabIndex = 3;
button2.Text = "OK";
- button2.UseVisualStyleBackColor = true;
+ button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ button2.FlatAppearance.BorderSize = 0;
+ button2.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(60, 65, 80);
+ button2.BackColor = System.Drawing.Color.FromArgb(42, 45, 58);
+ button2.ForeColor = System.Drawing.Color.White;
+ button2.Font = new System.Drawing.Font("Segoe UI", 9F);
+ button2.Cursor = System.Windows.Forms.Cursors.Hand;
button2.Visible = false;
//
// button3
//
button3.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right;
- button3.AutoSize = true;
button3.DialogResult = System.Windows.Forms.DialogResult.OK;
- button3.Location = new System.Drawing.Point(173, 67);
- button3.MinimumSize = new System.Drawing.Size(0, 24);
+ button3.Location = new System.Drawing.Point(178, 80);
button3.Name = "button3";
- button3.Size = new System.Drawing.Size(75, 24);
+ button3.Size = new System.Drawing.Size(75, 28);
button3.TabIndex = 0;
button3.Text = "OK";
- button3.UseVisualStyleBackColor = true;
+ button3.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ button3.FlatAppearance.BorderSize = 0;
+ button3.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(60, 65, 80);
+ button3.BackColor = System.Drawing.Color.FromArgb(42, 45, 58);
+ button3.ForeColor = System.Drawing.Color.White;
+ button3.Font = new System.Drawing.Font("Segoe UI", 9F);
+ button3.Cursor = System.Windows.Forms.Cursors.Hand;
button3.Visible = false;
//
// FlexibleMessageBoxForm
//
AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- ClientSize = new System.Drawing.Size(260, 102);
+ BackColor = System.Drawing.Color.FromArgb(25, 25, 30);
+ ForeColor = System.Drawing.Color.White;
+ FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+ ClientSize = new System.Drawing.Size(260, 115);
+ Padding = new System.Windows.Forms.Padding(5);
+ Controls.Add(titlePanel);
Controls.Add(button3);
Controls.Add(button2);
Controls.Add(panel1);
Controls.Add(button1);
- DataBindings.Add(new System.Windows.Forms.Binding("Text", FlexibleMessageBoxFormBindingSource, "CaptionText", true));
MaximizeBox = false;
MinimizeBox = false;
- MinimumSize = new System.Drawing.Size(276, 140);
+ MinimumSize = new System.Drawing.Size(276, 120);
Name = "FlexibleMessageBoxForm";
ShowIcon = false;
- SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show;
+ SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
Text = "";
Shown += new System.EventHandler(FlexibleMessageBoxForm_Shown);
((System.ComponentModel.ISupportInitialize)FlexibleMessageBoxFormBindingSource).EndInit();
panel1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)pictureBoxForIcon).EndInit();
+ titlePanel.ResumeLayout(false);
ResumeLayout(false);
- PerformLayout();
+
+ // Apply rounded corners and custom painting
+ this.Paint += FlexibleMessageBoxForm_Paint;
+ button1.Paint += RoundedButton_Paint;
+ button2.Paint += RoundedButton_Paint;
+ button3.Paint += RoundedButton_Paint;
+
+ // Setup hover effects for buttons
+ SetupButtonHover(button1);
+ SetupButtonHover(button2);
+ SetupButtonHover(button3);
Activate();
}
- private System.Windows.Forms.Button button1;
- private System.Windows.Forms.BindingSource FlexibleMessageBoxFormBindingSource;
- private System.Windows.Forms.RichTextBox richTextBoxMessage;
- private System.Windows.Forms.Panel panel1;
- private System.Windows.Forms.PictureBox pictureBoxForIcon;
- private System.Windows.Forms.Button button2;
- private System.Windows.Forms.Button button3;
+ private Button button1;
+ private BindingSource FlexibleMessageBoxFormBindingSource;
+ private RichTextBox richTextBoxMessage;
+ private Panel panel1;
+ private PictureBox pictureBoxForIcon;
+ private Button button2;
+ private Button button3;
+ private Panel titlePanel;
+ private Label titleLabel;
+ private Button closeButton;
+
+ #endregion
+
+ #region Custom Painting
+
+ private Dictionary _buttonHoverState = new Dictionary();
+ private const int SHADOW_SIZE = 2;
+ private const int CONTENT_RADIUS = 10;
+
+ private void FlexibleMessageBoxForm_Paint(object sender, PaintEventArgs e)
+ {
+ e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
+ e.Graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
+
+ int w = this.Width;
+ int h = this.Height;
+
+ // Draw shadow gradient layers around the content area
+ for (int i = SHADOW_SIZE; i >= 1; i--)
+ {
+ int alpha = (SHADOW_SIZE - i + 1) * 12; // 12, 24, 36, 48, 60
+ Rectangle shadowRect = new Rectangle(
+ SHADOW_SIZE - i,
+ SHADOW_SIZE - i,
+ w - (SHADOW_SIZE - i) * 2 - 1,
+ h - (SHADOW_SIZE - i) * 2 - 1);
+
+ using (Pen shadowPen = new Pen(Color.FromArgb(alpha, 0, 0, 0), 1))
+ using (GraphicsPath shadowPath = GetRoundedRectPath(shadowRect, CONTENT_RADIUS + i))
+ {
+ e.Graphics.DrawPath(shadowPen, shadowPath);
+ }
+ }
+
+ // Draw content background
+ Rectangle contentRect = new Rectangle(SHADOW_SIZE, SHADOW_SIZE, w - SHADOW_SIZE * 2, h - SHADOW_SIZE * 2);
+ using (GraphicsPath contentPath = GetRoundedRectPath(contentRect, CONTENT_RADIUS))
+ {
+ using (SolidBrush bgBrush = new SolidBrush(Color.FromArgb(20, 24, 29)))
+ {
+ e.Graphics.FillPath(bgBrush, contentPath);
+ }
+
+ // Draw thin border
+ using (Pen borderPen = new Pen(Color.FromArgb(70, 80, 100), 1f))
+ {
+ e.Graphics.DrawPath(borderPen, contentPath);
+ }
+ }
+
+ // Apply rounded region to form (with shadow area)
+ using (GraphicsPath regionPath = GetRoundedRectPath(new Rectangle(0, 0, w, h), CONTENT_RADIUS + SHADOW_SIZE))
+ {
+ this.Region = new Region(regionPath);
+ }
+ }
+
+ private void SetupButtonHover(Button btn)
+ {
+ _buttonHoverState[btn] = false;
+
+ btn.MouseEnter += (s, e) =>
+ {
+ _buttonHoverState[btn] = true;
+ btn.Invalidate();
+ };
+
+ btn.MouseLeave += (s, e) =>
+ {
+ _buttonHoverState[btn] = false;
+ btn.Invalidate();
+ };
+ }
+
+ private void RoundedButton_Paint(object sender, PaintEventArgs e)
+ {
+ Button btn = sender as Button;
+ if (btn == null) return;
+
+ e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
+ e.Graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
+
+ bool isHovered = _buttonHoverState.ContainsKey(btn) && _buttonHoverState[btn];
+
+ int radius = 4;
+
+ // Use a rect that's 1 pixel smaller to avoid edge clipping
+ Rectangle drawRect = new Rectangle(1, 1, btn.Width - 2, btn.Height - 2);
+
+ // Fill entire button area with parent background first to clear previous state
+ using (SolidBrush clearBrush = new SolidBrush(Color.FromArgb(20, 24, 29)))
+ {
+ e.Graphics.FillRectangle(clearBrush, 0, 0, btn.Width, btn.Height);
+ }
+
+ using (GraphicsPath path = GetRoundedRectPath(drawRect, radius))
+ {
+ // Determine colors based on hover state
+ Color bgColor = isHovered
+ ? Color.FromArgb(93, 203, 173) // Accent color on hover
+ : btn.BackColor;
+
+ Color textColor = isHovered
+ ? Color.FromArgb(20, 20, 20) // Dark text on accent
+ : btn.ForeColor;
+
+ // Draw background
+ using (SolidBrush brush = new SolidBrush(bgColor))
+ {
+ e.Graphics.FillPath(brush, path);
+ }
+
+ // Draw subtle border on normal state
+ if (!isHovered)
+ {
+ using (Pen borderPen = new Pen(Color.FromArgb(70, 75, 90), 1))
+ {
+ e.Graphics.DrawPath(borderPen, path);
+ }
+ }
+
+ // Draw text centered in original button bounds
+ TextRenderer.DrawText(e.Graphics, btn.Text, btn.Font,
+ new Rectangle(0, 0, btn.Width, btn.Height), textColor,
+ TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter);
+ }
+
+ // Set region to full button size (not the draw rect)
+ using (GraphicsPath regionPath = GetRoundedRectPath(new Rectangle(0, 0, btn.Width, btn.Height), radius))
+ {
+ btn.Region = new Region(regionPath);
+ }
+ }
+
+ private GraphicsPath GetRoundedRectPath(Rectangle rect, int radius)
+ {
+ GraphicsPath path = new GraphicsPath();
+
+ if (radius <= 0)
+ {
+ path.AddRectangle(rect);
+ return path;
+ }
+
+ int diameter = radius * 2;
+
+ // Ensure diameter doesn't exceed rect dimensions
+ diameter = Math.Min(diameter, Math.Min(rect.Width, rect.Height));
+ radius = diameter / 2;
+
+ Rectangle arcRect = new Rectangle(rect.Location, new Size(diameter, diameter));
+
+ // Top left arc
+ path.AddArc(arcRect, 180, 90);
+
+ // Top right arc
+ arcRect.X = rect.Right - diameter;
+ path.AddArc(arcRect, 270, 90);
+
+ // Bottom right arc
+ arcRect.Y = rect.Bottom - diameter;
+ path.AddArc(arcRect, 0, 90);
+
+ // Bottom left arc
+ arcRect.X = rect.Left;
+ path.AddArc(arcRect, 90, 90);
+
+ path.CloseFigure();
+ return path;
+ }
#endregion
#region Private constants
- //These separators are used for the "copy to clipboard" standard operation, triggered by Ctrl + C (behavior and clipboard format is like in a standard MessageBox)
private static readonly string STANDARD_MESSAGEBOX_SEPARATOR_LINES = "---------------------------\n";
private static readonly string STANDARD_MESSAGEBOX_SEPARATOR_SPACES = " ";
- //These are the possible buttons (in a standard MessageBox)
private enum ButtonID { OK = 0, CANCEL, YES, NO, ABORT, RETRY, IGNORE };
- //These are the buttons texts for different languages.
- //If you want to add a new language, add it here and in the GetButtonText-Function
private enum TwoLetterISOLanguageID { en, de, es, it };
- private static readonly string[] BUTTON_TEXTS_ENGLISH_EN = { "OK", "Cancel", "&Yes", "&No", "&Abort", "&Retry", "&Ignore" }; //Note: This is also the fallback language
+ private static readonly string[] BUTTON_TEXTS_ENGLISH_EN = { "OK", "Cancel", "&Yes", "&No", "&Abort", "&Retry", "&Ignore" };
private static readonly string[] BUTTON_TEXTS_GERMAN_DE = { "OK", "Abbrechen", "&Ja", "&Nein", "&Abbrechen", "&Wiederholen", "&Ignorieren" };
private static readonly string[] BUTTON_TEXTS_SPANISH_ES = { "Aceptar", "Cancelar", "&Sí", "&No", "&Abortar", "&Reintentar", "&Ignorar" };
private static readonly string[] BUTTON_TEXTS_ITALIAN_IT = { "OK", "Annulla", "&Sì", "&No", "&Interrompi", "&Riprova", "&Ignora" };
@@ -445,16 +542,10 @@ namespace JR.Utils.GUI.Forms
#region Private constructor
- ///
- /// Initializes a new instance of the class.
- ///
private FlexibleMessageBoxForm()
{
InitializeComponent();
-
- //Try to evaluate the language. If this fails, the fallback language English will be used
_ = Enum.TryParse(CultureInfo.CurrentUICulture.TwoLetterISOLanguageName, out languageID);
-
KeyPreview = true;
KeyUp += FlexibleMessageBoxForm_KeyUp;
}
@@ -463,120 +554,104 @@ namespace JR.Utils.GUI.Forms
#region Private helper functions
- ///
- /// Gets the string rows.
- ///
- /// The message.
- /// The string rows as 1-dimensional array
private static string[] GetStringRows(string message)
{
if (string.IsNullOrEmpty(message))
{
return null;
}
-
- string[] messageRows = message.Split(new char[] { '\n' }, StringSplitOptions.None);
- return messageRows;
+ return message.Split(new char[] { '\n' }, StringSplitOptions.None);
}
- ///
- /// Gets the button text for the CurrentUICulture language.
- /// Note: The fallback language is English
- ///
- /// The ID of the button.
- /// The button text
private string GetButtonText(ButtonID buttonID)
{
int buttonTextArrayIndex = Convert.ToInt32(buttonID);
-
switch (languageID)
{
case TwoLetterISOLanguageID.de: return BUTTON_TEXTS_GERMAN_DE[buttonTextArrayIndex];
case TwoLetterISOLanguageID.es: return BUTTON_TEXTS_SPANISH_ES[buttonTextArrayIndex];
case TwoLetterISOLanguageID.it: return BUTTON_TEXTS_ITALIAN_IT[buttonTextArrayIndex];
-
default: return BUTTON_TEXTS_ENGLISH_EN[buttonTextArrayIndex];
}
}
- ///
- /// Ensure the given working area factor in the range of 0.2 - 1.0 where:
- ///
- /// 0.2 means: 20 percent of the working area height or width.
- /// 1.0 means: 100 percent of the working area height or width.
- ///
- /// The given working area factor.
- /// The corrected given working area factor.
private static double GetCorrectedWorkingAreaFactor(double workingAreaFactor)
{
const double MIN_FACTOR = 0.2;
const double MAX_FACTOR = 1.0;
-
return workingAreaFactor < MIN_FACTOR ? MIN_FACTOR : workingAreaFactor > MAX_FACTOR ? MAX_FACTOR : workingAreaFactor;
}
- ///
- /// Set the dialogs start position when given.
- /// Otherwise center the dialog on the current screen.
- ///
- /// The FlexibleMessageBox dialog.
- /// The owner.
private static void SetDialogStartPosition(FlexibleMessageBoxForm flexibleMessageBoxForm, IWin32Window owner)
{
- //If no owner given: Center on current screen
- if (owner == null)
+ flexibleMessageBoxForm.StartPosition = FormStartPosition.Manual;
+
+ // Try to get owner form, fallback to active form if owner is null
+ Form ownerForm = null;
+ if (owner != null)
{
- Screen screen = Screen.FromPoint(Cursor.Position);
- flexibleMessageBoxForm.StartPosition = FormStartPosition.Manual;
- flexibleMessageBoxForm.Left = screen.Bounds.Left + (screen.Bounds.Width / 2) - (flexibleMessageBoxForm.Width / 2);
- flexibleMessageBoxForm.Top = screen.Bounds.Top + (screen.Bounds.Height / 2) - (flexibleMessageBoxForm.Height / 2);
+ ownerForm = owner as Form;
+ if (ownerForm == null)
+ {
+ Control ownerControl = Control.FromHandle(owner.Handle);
+ ownerForm = ownerControl?.FindForm();
+ }
+ }
+
+ // Fallback to active form if no owner specified
+ if (ownerForm == null)
+ {
+ ownerForm = Form.ActiveForm;
+ }
+
+ if (ownerForm != null && ownerForm.Visible)
+ {
+ // Center relative to owner window
+ int x = ownerForm.Left + (ownerForm.Width - flexibleMessageBoxForm.Width) / 2;
+ int y = ownerForm.Top + (ownerForm.Height - flexibleMessageBoxForm.Height) / 2;
+
+ // Ensure the dialog stays within screen bounds
+ Screen screen = Screen.FromControl(ownerForm);
+ x = Math.Max(screen.WorkingArea.Left, Math.Min(x, screen.WorkingArea.Right - flexibleMessageBoxForm.Width));
+ y = Math.Max(screen.WorkingArea.Top, Math.Min(y, screen.WorkingArea.Bottom - flexibleMessageBoxForm.Height));
+
+ flexibleMessageBoxForm.Left = x;
+ flexibleMessageBoxForm.Top = y;
+ }
+ else
+ {
+ // No owner found: center on current screen
+ CenterOnScreen(flexibleMessageBoxForm);
}
}
- ///
- /// Calculate the dialogs start size (Try to auto-size width to show longest text row).
- /// Also set the maximum dialog size.
- ///
- /// The FlexibleMessageBox dialog.
- /// The text (the longest text row is used to calculate the dialog width).
- /// The caption (this can also affect the dialog width).
+ private static void CenterOnScreen(FlexibleMessageBoxForm form)
+ {
+ Screen screen = Screen.FromPoint(Cursor.Position);
+ form.Left = screen.WorkingArea.Left + (screen.WorkingArea.Width - form.Width) / 2;
+ form.Top = screen.WorkingArea.Top + (screen.WorkingArea.Height - form.Height) / 2;
+ }
+
private static void SetDialogSizes(FlexibleMessageBoxForm flexibleMessageBoxForm, string text, string caption)
{
- //First set the bounds for the maximum dialog size
flexibleMessageBoxForm.MaximumSize = new Size(Convert.ToInt32(SystemInformation.WorkingArea.Width * FlexibleMessageBoxForm.GetCorrectedWorkingAreaFactor(MAX_WIDTH_FACTOR)),
Convert.ToInt32(SystemInformation.WorkingArea.Height * FlexibleMessageBoxForm.GetCorrectedWorkingAreaFactor(MAX_HEIGHT_FACTOR)));
- //Get rows. Exit if there are no rows to render...
string[] stringRows = GetStringRows(text);
- if (stringRows == null)
- {
- return;
- }
+ if (stringRows == null) return;
- //Calculate whole text height
int textHeight = TextRenderer.MeasureText(text, FONT).Height;
-
- //Calculate width for longest text line
const int SCROLLBAR_WIDTH_OFFSET = 15;
int longestTextRowWidth = stringRows.Max(textForRow => TextRenderer.MeasureText(textForRow, FONT).Width);
int captionWidth = TextRenderer.MeasureText(caption, SystemFonts.CaptionFont).Width;
int textWidth = Math.Max(longestTextRowWidth + SCROLLBAR_WIDTH_OFFSET, captionWidth);
- //Calculate margins
int marginWidth = flexibleMessageBoxForm.Width - flexibleMessageBoxForm.richTextBoxMessage.Width;
int marginHeight = flexibleMessageBoxForm.Height - flexibleMessageBoxForm.richTextBoxMessage.Height;
- //Set calculated dialog size (if the calculated values exceed the maximums, they were cut by windows forms automatically)
- flexibleMessageBoxForm.Size = new Size(textWidth + marginWidth,
- textHeight + marginHeight);
+ flexibleMessageBoxForm.Size = new Size(textWidth + marginWidth, textHeight + marginHeight);
}
- ///
- /// Set the dialogs icon.
- /// When no icon is used: Correct placement and width of rich text box.
- ///
- /// The FlexibleMessageBox dialog.
- /// The MessageBoxIcon.
private static void SetDialogIcon(FlexibleMessageBoxForm flexibleMessageBoxForm, MessageBoxIcon icon)
{
switch (icon)
@@ -594,7 +669,6 @@ namespace JR.Utils.GUI.Forms
flexibleMessageBoxForm.pictureBoxForIcon.Image = SystemIcons.Question.ToBitmap();
break;
default:
- //When no icon is used: Correct placement and width of rich text box.
flexibleMessageBoxForm.pictureBoxForIcon.Visible = false;
flexibleMessageBoxForm.richTextBoxMessage.Left -= flexibleMessageBoxForm.pictureBoxForIcon.Width;
flexibleMessageBoxForm.richTextBoxMessage.Width += flexibleMessageBoxForm.pictureBoxForIcon.Width;
@@ -602,93 +676,68 @@ namespace JR.Utils.GUI.Forms
}
}
- ///
- /// Set dialog buttons visibilities and texts.
- /// Also set a default button.
- ///
- /// The FlexibleMessageBox dialog.
- /// The buttons.
- /// The default button.
private static void SetDialogButtons(FlexibleMessageBoxForm flexibleMessageBoxForm, MessageBoxButtons buttons, MessageBoxDefaultButton defaultButton)
{
- //Set the buttons visibilities and texts
switch (buttons)
{
case MessageBoxButtons.AbortRetryIgnore:
flexibleMessageBoxForm.visibleButtonsCount = 3;
-
flexibleMessageBoxForm.button1.Visible = true;
flexibleMessageBoxForm.button1.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.ABORT);
flexibleMessageBoxForm.button1.DialogResult = DialogResult.Abort;
-
flexibleMessageBoxForm.button2.Visible = true;
flexibleMessageBoxForm.button2.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.RETRY);
flexibleMessageBoxForm.button2.DialogResult = DialogResult.Retry;
-
flexibleMessageBoxForm.button3.Visible = true;
flexibleMessageBoxForm.button3.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.IGNORE);
flexibleMessageBoxForm.button3.DialogResult = DialogResult.Ignore;
-
flexibleMessageBoxForm.ControlBox = false;
break;
case MessageBoxButtons.OKCancel:
flexibleMessageBoxForm.visibleButtonsCount = 2;
-
flexibleMessageBoxForm.button2.Visible = true;
flexibleMessageBoxForm.button2.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.OK);
flexibleMessageBoxForm.button2.DialogResult = DialogResult.OK;
-
flexibleMessageBoxForm.button3.Visible = true;
flexibleMessageBoxForm.button3.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.CANCEL);
flexibleMessageBoxForm.button3.DialogResult = DialogResult.Cancel;
-
flexibleMessageBoxForm.CancelButton = flexibleMessageBoxForm.button3;
break;
case MessageBoxButtons.RetryCancel:
flexibleMessageBoxForm.visibleButtonsCount = 2;
-
flexibleMessageBoxForm.button2.Visible = true;
flexibleMessageBoxForm.button2.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.RETRY);
flexibleMessageBoxForm.button2.DialogResult = DialogResult.Retry;
-
flexibleMessageBoxForm.button3.Visible = true;
flexibleMessageBoxForm.button3.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.CANCEL);
flexibleMessageBoxForm.button3.DialogResult = DialogResult.Cancel;
-
flexibleMessageBoxForm.CancelButton = flexibleMessageBoxForm.button3;
break;
case MessageBoxButtons.YesNo:
flexibleMessageBoxForm.visibleButtonsCount = 2;
-
flexibleMessageBoxForm.button2.Visible = true;
flexibleMessageBoxForm.button2.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.YES);
flexibleMessageBoxForm.button2.DialogResult = DialogResult.Yes;
-
flexibleMessageBoxForm.button3.Visible = true;
flexibleMessageBoxForm.button3.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.NO);
flexibleMessageBoxForm.button3.DialogResult = DialogResult.No;
-
flexibleMessageBoxForm.ControlBox = false;
break;
case MessageBoxButtons.YesNoCancel:
flexibleMessageBoxForm.visibleButtonsCount = 3;
-
flexibleMessageBoxForm.button1.Visible = true;
flexibleMessageBoxForm.button1.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.YES);
flexibleMessageBoxForm.button1.DialogResult = DialogResult.Yes;
-
flexibleMessageBoxForm.button2.Visible = true;
flexibleMessageBoxForm.button2.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.NO);
flexibleMessageBoxForm.button2.DialogResult = DialogResult.No;
-
flexibleMessageBoxForm.button3.Visible = true;
flexibleMessageBoxForm.button3.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.CANCEL);
flexibleMessageBoxForm.button3.DialogResult = DialogResult.Cancel;
-
flexibleMessageBoxForm.CancelButton = flexibleMessageBoxForm.button3;
break;
@@ -698,12 +747,9 @@ namespace JR.Utils.GUI.Forms
flexibleMessageBoxForm.button3.Visible = true;
flexibleMessageBoxForm.button3.Text = flexibleMessageBoxForm.GetButtonText(ButtonID.OK);
flexibleMessageBoxForm.button3.DialogResult = DialogResult.OK;
-
flexibleMessageBoxForm.CancelButton = flexibleMessageBoxForm.button3;
break;
}
-
- //Set default button (used in FlexibleMessageBoxForm_Shown)
flexibleMessageBoxForm.defaultButton = defaultButton;
}
@@ -711,17 +757,9 @@ namespace JR.Utils.GUI.Forms
#region Private event handlers
- ///
- /// Handles the Shown event of the FlexibleMessageBoxForm control.
- ///
- /// The source of the event.
- /// The instance containing the event data.
private void FlexibleMessageBoxForm_Shown(object sender, EventArgs e)
{
- Button buttonToFocus;
-
int buttonIndexToFocus;
- //Set the default button...
switch (defaultButton)
{
case MessageBoxDefaultButton.Button1:
@@ -737,20 +775,12 @@ namespace JR.Utils.GUI.Forms
}
if (buttonIndexToFocus > visibleButtonsCount)
- {
buttonIndexToFocus = visibleButtonsCount;
- }
-
- buttonToFocus = buttonIndexToFocus == 3 ? button3 : buttonIndexToFocus == 2 ? button2 : button1;
+ Button buttonToFocus = buttonIndexToFocus == 3 ? button3 : buttonIndexToFocus == 2 ? button2 : button1;
_ = buttonToFocus.Focus();
}
- ///
- /// Handles the LinkClicked event of the richTextBoxMessage control.
- ///
- /// The source of the event.
- /// The instance containing the event data.
private void richTextBoxMessage_LinkClicked(object sender, LinkClickedEventArgs e)
{
try
@@ -758,33 +788,20 @@ namespace JR.Utils.GUI.Forms
Cursor.Current = Cursors.WaitCursor;
_ = Process.Start(e.LinkText);
}
- catch (Exception)
- {
- //Let the caller of FlexibleMessageBoxForm decide what to do with this exception...
- throw;
- }
finally
{
Cursor.Current = Cursors.Default;
}
-
}
- ///
- /// Handles the KeyUp event of the richTextBoxMessage control.
- ///
- /// The source of the event.
- /// The instance containing the event data.
private void FlexibleMessageBoxForm_KeyUp(object sender, KeyEventArgs e)
{
- //Handle standard key strikes for clipboard copy: "Ctrl + C" and "Ctrl + Insert"
if (e.Control && (e.KeyCode == Keys.C || e.KeyCode == Keys.Insert))
{
string buttonsTextLine = (button1.Visible ? button1.Text + STANDARD_MESSAGEBOX_SEPARATOR_SPACES : string.Empty)
+ (button2.Visible ? button2.Text + STANDARD_MESSAGEBOX_SEPARATOR_SPACES : string.Empty)
+ (button3.Visible ? button3.Text + STANDARD_MESSAGEBOX_SEPARATOR_SPACES : string.Empty);
- //Build same clipboard text like the standard .Net MessageBox
string textForClipboard = STANDARD_MESSAGEBOX_SEPARATOR_LINES
+ Text + Environment.NewLine
+ STANDARD_MESSAGEBOX_SEPARATOR_LINES
@@ -793,75 +810,47 @@ namespace JR.Utils.GUI.Forms
+ buttonsTextLine.Replace("&", string.Empty) + Environment.NewLine
+ STANDARD_MESSAGEBOX_SEPARATOR_LINES;
- //Set text in clipboard
Clipboard.SetText(textForClipboard);
}
}
#endregion
- #region Properties (only used for binding)
+ #region Properties
- ///
- /// The text that is been used for the heading.
- ///
public string CaptionText { get; set; }
-
- ///
- /// The text that is been used in the FlexibleMessageBoxForm.
- ///
public string MessageText { get; set; }
#endregion
#region Public show function
- ///
- /// Shows the specified message box.
- ///
- /// The owner.
- /// The text.
- /// The caption.
- /// The buttons.
- /// The icon.
- /// The default button.
- /// The dialog result.
public static DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton)
{
- //Create a new instance of the FlexibleMessageBox form
FlexibleMessageBoxForm flexibleMessageBoxForm = new FlexibleMessageBoxForm
{
ShowInTaskbar = false,
-
- //Bind the caption and the message text
CaptionText = caption,
MessageText = text
};
flexibleMessageBoxForm.FlexibleMessageBoxFormBindingSource.DataSource = flexibleMessageBoxForm;
+ flexibleMessageBoxForm.titleLabel.Text = caption;
- //Set the buttons visibilities and texts. Also set a default button.
SetDialogButtons(flexibleMessageBoxForm, buttons, defaultButton);
-
- //Set the dialogs icon. When no icon is used: Correct placement and width of rich text box.
SetDialogIcon(flexibleMessageBoxForm, icon);
- //Set the font for all controls
flexibleMessageBoxForm.Font = FONT;
flexibleMessageBoxForm.richTextBoxMessage.Font = FONT;
- //Calculate the dialogs start size (Try to auto-size width to show longest text row). Also set the maximum dialog size.
SetDialogSizes(flexibleMessageBoxForm, text, caption);
-
- //Set the dialogs start position when given. Otherwise center the dialog on the current screen.
SetDialogStartPosition(flexibleMessageBoxForm, owner);
- //Show the dialog
return flexibleMessageBoxForm.ShowDialog(owner);
}
#endregion
- } //class FlexibleMessageBoxForm
+ }
#endregion
}
-}
+}
\ No newline at end of file
diff --git a/GalleryView.cs b/GalleryView.cs
index 58c838e..85853f2 100644
--- a/GalleryView.cs
+++ b/GalleryView.cs
@@ -1,4 +1,5 @@
using AndroidSideloader;
+using AndroidSideloader.Utilities;
using System;
using System.Collections.Generic;
using System.Drawing;
@@ -53,6 +54,11 @@ public class FastGalleryPanel : Control
private int _selectedIndex = -1;
private bool _isHoveringDeleteButton = false;
+ // Context Menu & Favorites
+ private ContextMenuStrip _contextMenu;
+ private int _rightClickedIndex = -1;
+ private HashSet _favoritesCache;
+
// Rendering
private Bitmap _backBuffer;
@@ -68,8 +74,9 @@ public class FastGalleryPanel : Control
// Theme colors
private static readonly Color TileBorderHover = Color.FromArgb(93, 203, 173);
private static readonly Color TileBorderSelected = Color.FromArgb(200, 200, 200);
+ private static readonly Color TileBorderFavorite = Color.FromArgb(255, 215, 0);
+ private static readonly Color BadgeFavoriteBg = Color.FromArgb(200, 255, 180, 0);
private static readonly Color TextColor = Color.FromArgb(245, 255, 255, 255);
- private static readonly Color BadgeUpdateBg = Color.FromArgb(180, 76, 175, 80);
private static readonly Color BadgeInstalledBg = Color.FromArgb(180, 60, 145, 230);
private static readonly Color DeleteButtonBg = Color.FromArgb(200, 180, 50, 50);
private static readonly Color DeleteButtonHoverBg = Color.FromArgb(255, 220, 70, 70);
@@ -80,6 +87,7 @@ public class FastGalleryPanel : Control
public event EventHandler TileClicked;
public event EventHandler TileDoubleClicked;
public event EventHandler TileDeleteClicked;
+ public event EventHandler TileRightClicked;
public event EventHandler SortChanged;
private class TileAnimationState
@@ -96,6 +104,8 @@ public class FastGalleryPanel : Control
public float TargetTooltipOpacity = 0f;
public float DeleteButtonOpacity = 0f;
public float TargetDeleteButtonOpacity = 0f;
+ public float FavoriteOpacity = 0f;
+ public float TargetFavoriteOpacity = 0f;
}
public FastGalleryPanel(List items, int tileWidth, int tileHeight, int spacing, int initialWidth, int initialHeight)
@@ -109,6 +119,11 @@ public class FastGalleryPanel : Control
_cacheOrder = new Queue();
_tileStates = new Dictionary();
_sortButtons = new List();
+ RefreshFavoritesCache();
+
+ // Avoid any implicit padding from the control container
+ Padding = Padding.Empty;
+ Margin = Padding.Empty;
Size = new Size(initialWidth, initialHeight);
@@ -124,6 +139,9 @@ public class FastGalleryPanel : Control
for (int i = 0; i < _items.Count; i++)
_tileStates[i] = new TileAnimationState();
+ // Create context menu
+ CreateContextMenu();
+
// Create sort panel
_sortPanel = CreateSortPanel();
Controls.Add(_sortPanel);
@@ -446,7 +464,8 @@ public class FastGalleryPanel : Control
_targetScrollY = 0;
_isScrolling = false;
- // Re-apply current sort
+ // Refresh favorites cache and re-apply sort
+ RefreshFavoritesCache();
ApplySort();
}
@@ -460,10 +479,10 @@ public class FastGalleryPanel : Control
private bool IsItemInstalled(ListViewItem item)
{
if (item == null) return false;
- // Check if the item has the installed or update available color
- bool hasUpdate = item.ForeColor.ToArgb() == ColorTranslator.FromHtml("#4daa57").ToArgb();
- bool installed = item.ForeColor.ToArgb() == ColorTranslator.FromHtml("#3c91e6").ToArgb();
- return installed || hasUpdate;
+
+ return item.ForeColor.ToArgb() == MainForm.ColorInstalled.ToArgb() ||
+ item.ForeColor.ToArgb() == MainForm.ColorUpdateAvailable.ToArgb() ||
+ item.ForeColor.ToArgb() == MainForm.ColorDonateGame.ToArgb();
}
private Rectangle GetDeleteButtonRect(int index, int row, int col, int scrollY)
@@ -535,6 +554,9 @@ public class FastGalleryPanel : Control
bool isHovered = index == _hoveredIndex;
bool isSelected = index == _selectedIndex;
bool isInstalled = IsItemInstalled(_items[index]);
+ string pkgName = _items[index].SubItems.Count > 2 ? _items[index].SubItems[1].Text : "";
+ bool isFavorite = _favoritesCache.Contains(pkgName);
+ state.TargetFavoriteOpacity = isFavorite ? 1.0f : 0f;
state.TargetScale = isHovered ? HOVER_SCALE : 1.0f;
state.TargetBorderOpacity = isHovered ? 1.0f : 0f;
@@ -584,6 +606,10 @@ public class FastGalleryPanel : Control
needsRedraw = true;
}
else state.DeleteButtonOpacity = state.TargetDeleteButtonOpacity;
+
+ if (Math.Abs(state.FavoriteOpacity - state.TargetFavoriteOpacity) > 0.01f)
+ { state.FavoriteOpacity += (state.TargetFavoriteOpacity - state.FavoriteOpacity) * 0.35f; needsRedraw = true; }
+ else state.FavoriteOpacity = state.TargetFavoriteOpacity;
}
}
@@ -756,6 +782,13 @@ public class FastGalleryPanel : Control
using (var borderPen = new Pen(Color.FromArgb((int)(200 * state.BorderOpacity), TileBorderHover), 2f))
g.DrawPath(borderPen, tilePath);
}
+
+ // Favorite border (golden)
+ if (state.FavoriteOpacity > 0.5f)
+ {
+ using (var favPen = new Pen(Color.FromArgb((int)(180 * state.FavoriteOpacity), TileBorderFavorite), 1.0f))
+ g.DrawPath(favPen, tilePath);
+ }
}
// Thumbnail
@@ -795,15 +828,31 @@ public class FastGalleryPanel : Control
// Status badges (left side)
int badgeY = y + thumbPadding + 4;
- bool hasUpdate = item.ForeColor.ToArgb() == ColorTranslator.FromHtml("#4daa57").ToArgb();
- bool installed = item.ForeColor.ToArgb() == ColorTranslator.FromHtml("#3c91e6").ToArgb();
+
+ // Favorite badge
+ if (state.FavoriteOpacity > 0.5f)
+ {
+ DrawBadge(g, "★", x + thumbPadding + 4, badgeY, BadgeFavoriteBg);
+ badgeY += 18;
+ }
+
+ bool hasUpdate = item.ForeColor.ToArgb() == MainForm.ColorUpdateAvailable.ToArgb();
+ bool installed = item.ForeColor.ToArgb() == MainForm.ColorInstalled.ToArgb();
+ bool canDonate = item.ForeColor.ToArgb() == MainForm.ColorDonateGame.ToArgb();
if (hasUpdate)
{
- DrawBadge(g, "UPDATE AVAILABLE", x + thumbPadding + 4, badgeY, BadgeUpdateBg);
+ DrawBadge(g, "UPDATE AVAILABLE", x + thumbPadding + 4, badgeY, Color.FromArgb(180, MainForm.ColorUpdateAvailable.R, MainForm.ColorUpdateAvailable.G, MainForm.ColorUpdateAvailable.B));
badgeY += 18;
}
- if (installed || hasUpdate)
+
+ if (canDonate)
+ {
+ DrawBadge(g, "NEWER THAN LIST", x + thumbPadding + 4, badgeY, Color.FromArgb(180, MainForm.ColorDonateGame.R, MainForm.ColorDonateGame.G, MainForm.ColorDonateGame.B));
+ badgeY += 18;
+ }
+
+ if (installed || hasUpdate || canDonate)
DrawBadge(g, "INSTALLED", x + thumbPadding + 4, badgeY, BadgeInstalledBg);
// Right-side badges (top-right of thumbnail)
@@ -1088,6 +1137,13 @@ public class FastGalleryPanel : Control
protected override void OnMouseClick(MouseEventArgs e)
{
base.OnMouseClick(e);
+
+ // Take focus to unfocus any other control (like search text box)
+ if (!Focused)
+ {
+ Focus();
+ }
+
if (e.Button == MouseButtons.Left)
{
int i = GetIndexAtPoint(e.X, e.Y);
@@ -1111,6 +1167,19 @@ public class FastGalleryPanel : Control
TileClicked?.Invoke(this, i);
}
}
+ else if (e.Button == MouseButtons.Right)
+ {
+ int i = GetIndexAtPoint(e.X, e.Y);
+ if (i >= 0)
+ {
+ _rightClickedIndex = i;
+ _selectedIndex = i;
+ Invalidate();
+ TileClicked?.Invoke(this, i);
+ TileRightClicked?.Invoke(this, i);
+ _contextMenu.Show(this, e.Location);
+ }
+ }
}
protected override void OnMouseDoubleClick(MouseEventArgs e)
@@ -1139,12 +1208,64 @@ public class FastGalleryPanel : Control
_isScrolling = true;
}
+ private void CreateContextMenu()
+ {
+ _contextMenu = new ContextMenuStrip();
+ _contextMenu.BackColor = Color.FromArgb(40, 42, 48);
+ _contextMenu.ForeColor = Color.White;
+ _contextMenu.ShowImageMargin = false;
+ _contextMenu.Renderer = new MainForm.CenteredMenuRenderer();
+
+ var favoriteItem = new ToolStripMenuItem("★ Add to Favorites");
+ favoriteItem.Click += ContextMenu_FavoriteClick;
+ _contextMenu.Items.Add(favoriteItem);
+ _contextMenu.Opening += ContextMenu_Opening;
+ }
+
+ private void ContextMenu_Opening(object sender, System.ComponentModel.CancelEventArgs e)
+ {
+ if (_rightClickedIndex < 0 || _rightClickedIndex >= _items.Count) { e.Cancel = true; return; }
+ var item = _items[_rightClickedIndex];
+ string packageName = item.SubItems.Count > 2 ? item.SubItems[1].Text : "";
+ if (string.IsNullOrEmpty(packageName)) { e.Cancel = true; return; }
+
+ bool isFavorite = _favoritesCache.Contains(packageName);
+ ((ToolStripMenuItem)_contextMenu.Items[0]).Text = isFavorite ? "Remove from Favorites" : "★ Add to Favorites";
+ }
+
+ private void ContextMenu_FavoriteClick(object sender, EventArgs e)
+ {
+ if (_rightClickedIndex < 0 || _rightClickedIndex >= _items.Count) return;
+ var item = _items[_rightClickedIndex];
+ string packageName = item.SubItems.Count > 1 ? item.SubItems[1].Text : "";
+ if (string.IsNullOrEmpty(packageName)) return;
+
+ var settings = SettingsManager.Instance;
+ if (_favoritesCache.Contains(packageName))
+ {
+ settings.RemoveFavoriteGame(packageName);
+ _favoritesCache.Remove(packageName);
+ }
+ else
+ {
+ settings.AddFavoriteGame(packageName);
+ _favoritesCache.Add(packageName);
+ }
+ Invalidate();
+ }
+
+ public void RefreshFavoritesCache()
+ {
+ _favoritesCache = new HashSet(SettingsManager.Instance.FavoritedGames, StringComparer.OrdinalIgnoreCase);
+ }
+
protected override void Dispose(bool disposing)
{
if (disposing)
{
_animationTimer?.Stop();
_animationTimer?.Dispose();
+ _contextMenu?.Dispose();
foreach (var img in _imageCache.Values) { try { img?.Dispose(); } catch { } }
_imageCache.Clear();
diff --git a/MainForm.Designer.cs b/MainForm.Designer.cs
index 7f75e6c..4d328e7 100644
--- a/MainForm.Designer.cs
+++ b/MainForm.Designer.cs
@@ -1,4 +1,4 @@
-using AndroidSideloader.Properties;
+using AndroidSideloader.Properties;
using System.Drawing;
using System.Windows.Forms;
@@ -49,19 +49,13 @@ namespace AndroidSideloader
this.ReleaseAPKPathIndex = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.VersionNameIndex = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.DownloadsIndex = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
- this.searchTextBox = new System.Windows.Forms.TextBox();
this.gamesQueueLabel = new System.Windows.Forms.Label();
- this.ProgressText = new System.Windows.Forms.Label();
this.notesRichTextBox = new System.Windows.Forms.RichTextBox();
this.DragDropLbl = new System.Windows.Forms.Label();
this.lblNotes = new System.Windows.Forms.Label();
this.adbCmd_background = new System.Windows.Forms.Label();
- this.lblUpdateAvailable = new System.Windows.Forms.Label();
- this.lblUpToDate = new System.Windows.Forms.Label();
- this.lblMirror = new System.Windows.Forms.Label();
this.adbCmd_CommandBox = new System.Windows.Forms.TextBox();
this.adbCmd_Label = new System.Windows.Forms.Label();
- this.lblNeedsDonate = new System.Windows.Forms.Label();
this.gamesPictureBox = new System.Windows.Forms.PictureBox();
this.startsideloadbutton_Tooltip = new System.Windows.Forms.ToolTip(this.components);
this.startsideloadbutton = new System.Windows.Forms.Button();
@@ -93,10 +87,8 @@ namespace AndroidSideloader
this.btnOpenDownloads = new System.Windows.Forms.Button();
this.btnRunAdbCmd_Tooltip = new System.Windows.Forms.ToolTip(this.components);
this.btnRunAdbCmd = new System.Windows.Forms.Button();
- this.ADBWirelessDisable_Tooltip = new System.Windows.Forms.ToolTip(this.components);
- this.ADBWirelessDisable = new System.Windows.Forms.Button();
- this.ADBWirelessEnable_Tooltip = new System.Windows.Forms.ToolTip(this.components);
- this.ADBWirelessEnable = new System.Windows.Forms.Button();
+ this.ADBWirelessToggle_Tooltip = new System.Windows.Forms.ToolTip(this.components);
+ this.ADBWirelessToggle = new System.Windows.Forms.Button();
this.UpdateGamesButton_Tooltip = new System.Windows.Forms.ToolTip(this.components);
this.UpdateGamesButton = new System.Windows.Forms.Button();
this.listApkButton_Tooltip = new System.Windows.Forms.ToolTip(this.components);
@@ -104,94 +96,66 @@ namespace AndroidSideloader
this.speedLabel_Tooltip = new System.Windows.Forms.ToolTip(this.components);
this.etaLabel_Tooltip = new System.Windows.Forms.ToolTip(this.components);
this.progressDLbtnContainer = new System.Windows.Forms.Panel();
- this.bottomContainer = new System.Windows.Forms.Panel();
this.diskLabel = new System.Windows.Forms.Label();
+ this.questStorageProgressBar = new System.Windows.Forms.Panel();
+ this.batteryLevImg = new System.Windows.Forms.PictureBox();
this.deviceDrop = new System.Windows.Forms.Button();
this.deviceDropContainer = new System.Windows.Forms.Panel();
+ this.mountDeviceButton = new System.Windows.Forms.Button();
+ this.selectDeviceButton = new System.Windows.Forms.Button();
this.sideloadDrop = new System.Windows.Forms.Button();
this.sideloadContainer = new System.Windows.Forms.Panel();
+ this.btnNoDevice = new System.Windows.Forms.Button();
this.installedAppsMenu = new System.Windows.Forms.Button();
this.installedAppsMenuContainer = new System.Windows.Forms.Panel();
this.backupDrop = new System.Windows.Forms.Button();
this.backupContainer = new System.Windows.Forms.Panel();
this.otherDrop = new System.Windows.Forms.Button();
this.otherContainer = new System.Windows.Forms.Panel();
+ this.selectMirrorButton = new System.Windows.Forms.Button();
this.questInfoPanel = new System.Windows.Forms.Panel();
- this.questStorageProgressBar = new System.Windows.Forms.Panel();
this.batteryLabel = new System.Windows.Forms.Label();
- this.batteryLevImg = new System.Windows.Forms.PictureBox();
this.questInfoLabel = new System.Windows.Forms.Label();
this.ULLabel = new System.Windows.Forms.Label();
- this.verLabel = new System.Windows.Forms.Label();
this.leftNavContainer = new System.Windows.Forms.Panel();
+ this.sidebarMediaPanel = new System.Windows.Forms.Panel();
+ this.selectedGameLabel = new System.Windows.Forms.Label();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.webView21 = new Microsoft.Web.WebView2.WinForms.WebView2();
this.favoriteGame = new System.Windows.Forms.ContextMenuStrip(this.components);
this.favoriteButton = new System.Windows.Forms.ToolStripMenuItem();
- this.favoriteSwitcher = new AndroidSideloader.RoundButton();
+ this.gamesGalleryView = new System.Windows.Forms.FlowLayoutPanel();
+ this.btnViewToggle_Tooltip = new System.Windows.Forms.ToolTip(this.components);
+ this.webViewPlaceholderPanel = new System.Windows.Forms.Panel();
this.adbCmd_btnSend = new AndroidSideloader.RoundButton();
this.adbCmd_btnToggleUpdates = new AndroidSideloader.RoundButton();
+ this.searchPanel = new AndroidSideloader.RoundButton();
+ this.searchIconPictureBox = new System.Windows.Forms.PictureBox();
+ this.searchTextBox = new System.Windows.Forms.TextBox();
+ this.btnViewToggle = new AndroidSideloader.RoundButton();
+ this.favoriteSwitcher = new AndroidSideloader.RoundButton();
+ this.btnInstalled = new AndroidSideloader.RoundButton();
+ this.btnUpdateAvailable = new AndroidSideloader.RoundButton();
+ this.btnNewerThanList = new AndroidSideloader.RoundButton();
this.downloadInstallGameButton = new AndroidSideloader.RoundButton();
- this.MountButton = new AndroidSideloader.RoundButton();
- this.btnNoDevice = new AndroidSideloader.RoundButton();
- this.gamesGalleryView = new System.Windows.Forms.FlowLayoutPanel();
- this.btnViewToggle = new RoundButton();
- this.btnViewToggle_Tooltip = new System.Windows.Forms.ToolTip(this.components);
- //
- // gamesGalleryView
- //
- this.gamesGalleryView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
- | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.gamesGalleryView.AutoScroll = false;
- this.gamesGalleryView.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(15)))), ((int)(((byte)(15)))), ((int)(((byte)(15)))));
- this.gamesGalleryView.Location = new System.Drawing.Point(224, 98);
- this.gamesGalleryView.Name = "gamesGalleryView";
- this.gamesGalleryView.Padding = new System.Windows.Forms.Padding(0);
- this.gamesGalleryView.Size = new System.Drawing.Size(1145, 350);
- this.gamesGalleryView.TabIndex = 102;
- this.gamesGalleryView.Visible = false;
- //
- // btnViewToggle
- //
- this.btnViewToggle.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.btnViewToggle.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.btnViewToggle.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.btnViewToggle.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
- this.btnViewToggle.Cursor = System.Windows.Forms.Cursors.Default;
- this.btnViewToggle.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.btnViewToggle.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.btnViewToggle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
- this.btnViewToggle.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.btnViewToggle.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.btnViewToggle.Location = new System.Drawing.Point(960, 34);
- this.btnViewToggle.Name = "btnViewToggle";
- this.btnViewToggle.Radius = 5;
- this.btnViewToggle.Size = new System.Drawing.Size(75, 28);
- this.btnViewToggle.Stroke = true;
- this.btnViewToggle.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
- this.btnViewToggle.TabIndex = 103;
- this.btnViewToggle.Text = "Gallery";
- this.btnViewToggle.Transparency = false;
- this.btnViewToggle.Click += new System.EventHandler(this.btnViewToggle_Click);
-
- // Ensure proper z-order
- this.gamesGalleryView.BringToFront();
- this.btnViewToggle.BringToFront();
-
((System.ComponentModel.ISupportInitialize)(this.gamesPictureBox)).BeginInit();
+ this.gamesPictureBox.SuspendLayout();
this.progressDLbtnContainer.SuspendLayout();
+ this.questStorageProgressBar.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.batteryLevImg)).BeginInit();
this.deviceDropContainer.SuspendLayout();
this.sideloadContainer.SuspendLayout();
this.installedAppsMenuContainer.SuspendLayout();
this.backupContainer.SuspendLayout();
this.otherContainer.SuspendLayout();
this.questInfoPanel.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.batteryLevImg)).BeginInit();
this.leftNavContainer.SuspendLayout();
+ this.sidebarMediaPanel.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.webView21)).BeginInit();
this.favoriteGame.SuspendLayout();
+ this.searchPanel.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.searchIconPictureBox)).BeginInit();
this.SuspendLayout();
//
// m_combo
@@ -202,36 +166,36 @@ namespace AndroidSideloader
this.m_combo.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.m_combo.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.m_combo.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.m_combo.Location = new System.Drawing.Point(224, 9);
+ this.m_combo.Location = new System.Drawing.Point(253, 9);
this.m_combo.Name = "m_combo";
- this.m_combo.Size = new System.Drawing.Size(374, 23);
+ this.m_combo.Size = new System.Drawing.Size(374, 24);
this.m_combo.TabIndex = 0;
- this.m_combo.Text = "Select an Installed App to Uninstall or Share...";
+ this.m_combo.Text = "Select an Installed App...";
+ this.m_combo.Visible = false;
//
// progressBar
//
this.progressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.progressBar.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
- this.progressBar.ForeColor = System.Drawing.Color.Purple;
- this.progressBar.Location = new System.Drawing.Point(2, 0);
+ this.progressBar.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.progressBar.Location = new System.Drawing.Point(1, 18);
this.progressBar.MinimumSize = new System.Drawing.Size(200, 13);
this.progressBar.Name = "progressBar";
- this.progressBar.Size = new System.Drawing.Size(765, 13);
+ this.progressBar.Size = new System.Drawing.Size(983, 13);
+ this.progressBar.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
this.progressBar.TabIndex = 7;
//
// speedLabel
//
this.speedLabel.AutoSize = true;
this.speedLabel.BackColor = System.Drawing.Color.Transparent;
- this.speedLabel.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.speedLabel.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.speedLabel.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.speedLabel.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.speedLabel.Location = new System.Drawing.Point(2, 14);
+ this.speedLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold);
+ this.speedLabel.ForeColor = System.Drawing.Color.White;
+ this.speedLabel.Location = new System.Drawing.Point(-2, -3);
this.speedLabel.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.speedLabel.Name = "speedLabel";
- this.speedLabel.Size = new System.Drawing.Size(124, 15);
+ this.speedLabel.Size = new System.Drawing.Size(152, 16);
this.speedLabel.TabIndex = 76;
this.speedLabel.Text = "DLS: Speed in MBPS";
this.speedLabel_Tooltip.SetToolTip(this.speedLabel, "Current download speed, updates every second, in mbps");
@@ -240,11 +204,9 @@ namespace AndroidSideloader
//
this.etaLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.etaLabel.BackColor = System.Drawing.Color.Transparent;
- this.etaLabel.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.etaLabel.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.etaLabel.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.etaLabel.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.etaLabel.Location = new System.Drawing.Point(571, 14);
+ this.etaLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.etaLabel.ForeColor = System.Drawing.Color.White;
+ this.etaLabel.Location = new System.Drawing.Point(790, -3);
this.etaLabel.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.etaLabel.Name = "etaLabel";
this.etaLabel.Size = new System.Drawing.Size(196, 18);
@@ -256,38 +218,36 @@ namespace AndroidSideloader
//
// freeDisclaimer
//
- this.freeDisclaimer.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.freeDisclaimer.AutoSize = true;
- this.freeDisclaimer.BackColor = System.Drawing.Color.Black;
- this.freeDisclaimer.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.freeDisclaimer.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.freeDisclaimer.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.freeDisclaimer.Location = new System.Drawing.Point(289, 582);
+ this.freeDisclaimer.BackColor = System.Drawing.Color.Transparent;
+ this.freeDisclaimer.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.freeDisclaimer.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.freeDisclaimer.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Bold);
+ this.freeDisclaimer.ForeColor = System.Drawing.Color.White;
+ this.freeDisclaimer.Location = new System.Drawing.Point(0, 0);
this.freeDisclaimer.Name = "freeDisclaimer";
- this.freeDisclaimer.Size = new System.Drawing.Size(246, 40);
- this.freeDisclaimer.TabIndex = 79;
- this.freeDisclaimer.Text = "This app is FREE!! \r\nClick here to go to the github.";
- this.freeDisclaimer.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+ this.freeDisclaimer.Size = new System.Drawing.Size(238, 136);
+ this.freeDisclaimer.TabIndex = 0;
+ this.freeDisclaimer.Text = "THIS APP IS FREE!\r\nClick here to go to GitHub";
+ this.freeDisclaimer.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.freeDisclaimer.Click += new System.EventHandler(this.freeDisclaimer_Click);
//
// gamesQueListBox
//
- this.gamesQueListBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.gamesQueListBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.gamesQueListBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
- this.gamesQueListBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.gamesQueListBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.gamesQueListBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.gamesQueListBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
+ this.gamesQueListBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.gamesQueListBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(26)))), ((int)(((byte)(30)))));
+ this.gamesQueListBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.gamesQueListBox.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
+ this.gamesQueListBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F);
+ this.gamesQueListBox.ForeColor = System.Drawing.Color.White;
this.gamesQueListBox.FormattingEnabled = true;
- this.gamesQueListBox.ItemHeight = 15;
- this.gamesQueListBox.Location = new System.Drawing.Point(983, 493);
+ this.gamesQueListBox.ItemHeight = 24;
+ this.gamesQueListBox.Location = new System.Drawing.Point(654, 496);
this.gamesQueListBox.Margin = new System.Windows.Forms.Padding(2);
this.gamesQueListBox.Name = "gamesQueListBox";
- this.gamesQueListBox.Size = new System.Drawing.Size(386, 122);
+ this.gamesQueListBox.Size = new System.Drawing.Size(266, 192);
this.gamesQueListBox.TabIndex = 9;
this.gamesQueListBox.MouseClick += new System.Windows.Forms.MouseEventHandler(this.gamesQueListBox_MouseClick);
+ this.gamesQueListBox.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.gamesQueListBox_DrawItem);
this.gamesQueListBox.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
this.gamesQueListBox.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);
//
@@ -300,12 +260,13 @@ namespace AndroidSideloader
this.devicesComboBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.devicesComboBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.devicesComboBox.FormattingEnabled = true;
- this.devicesComboBox.Location = new System.Drawing.Point(224, 39);
+ this.devicesComboBox.Location = new System.Drawing.Point(253, 39);
this.devicesComboBox.Margin = new System.Windows.Forms.Padding(2);
this.devicesComboBox.Name = "devicesComboBox";
- this.devicesComboBox.Size = new System.Drawing.Size(164, 23);
+ this.devicesComboBox.Size = new System.Drawing.Size(164, 24);
this.devicesComboBox.TabIndex = 1;
this.devicesComboBox.Text = "Select your device";
+ this.devicesComboBox.Visible = false;
this.devicesComboBox.SelectedIndexChanged += new System.EventHandler(this.devicesComboBox_SelectedIndexChanged);
//
// remotesList
@@ -317,11 +278,12 @@ namespace AndroidSideloader
this.remotesList.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.remotesList.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.remotesList.FormattingEnabled = true;
- this.remotesList.Location = new System.Drawing.Point(531, 40);
+ this.remotesList.Location = new System.Drawing.Point(567, 40);
this.remotesList.Margin = new System.Windows.Forms.Padding(2);
this.remotesList.Name = "remotesList";
- this.remotesList.Size = new System.Drawing.Size(67, 23);
+ this.remotesList.Size = new System.Drawing.Size(67, 24);
this.remotesList.TabIndex = 3;
+ this.remotesList.Visible = false;
this.remotesList.SelectedIndexChanged += new System.EventHandler(this.remotesList_SelectedIndexChanged);
//
// gamesListView
@@ -329,7 +291,8 @@ namespace AndroidSideloader
this.gamesListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- this.gamesListView.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
+ this.gamesListView.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(26)))), ((int)(((byte)(30)))));
+ this.gamesListView.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.gamesListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.GameNameIndex,
this.ReleaseNameIndex,
@@ -343,10 +306,10 @@ namespace AndroidSideloader
this.gamesListView.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.gamesListView.HideSelection = false;
this.gamesListView.ImeMode = System.Windows.Forms.ImeMode.Off;
- this.gamesListView.Location = new System.Drawing.Point(224, 98);
+ this.gamesListView.Location = new System.Drawing.Point(258, 44);
this.gamesListView.Name = "gamesListView";
this.gamesListView.ShowGroups = false;
- this.gamesListView.Size = new System.Drawing.Size(1145, 350);
+ this.gamesListView.Size = new System.Drawing.Size(984, 409);
this.gamesListView.TabIndex = 6;
this.gamesListView.UseCompatibleStateImageBehavior = false;
this.gamesListView.View = System.Windows.Forms.View.Details;
@@ -394,69 +357,37 @@ namespace AndroidSideloader
this.DownloadsIndex.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
this.DownloadsIndex.Width = 80;
//
- // searchTextBox
- //
- this.searchTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.searchTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
- this.searchTextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
- this.searchTextBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.searchTextBox.ForeColor = System.Drawing.Color.LightGray;
- this.searchTextBox.Location = new System.Drawing.Point(224, 70);
- this.searchTextBox.MinimumSize = new System.Drawing.Size(231, 26);
- this.searchTextBox.Name = "searchTextBox";
- this.searchTextBox.Size = new System.Drawing.Size(1145, 21);
- this.searchTextBox.TabIndex = 5;
- this.searchTextBox.Text = "Search...";
- this.searchTextBox.Click += new System.EventHandler(this.searchTextBox_Click);
- this.searchTextBox.TextChanged += new System.EventHandler(this.searchTextBox_TextChanged);
- this.searchTextBox.Enter += new System.EventHandler(this.searchTextBox_Enter);
- this.searchTextBox.Leave += new System.EventHandler(this.searchTextBox_Leave);
- //
// gamesQueueLabel
//
this.gamesQueueLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.gamesQueueLabel.AutoSize = true;
- this.gamesQueueLabel.BackColor = System.Drawing.Color.Transparent;
- this.gamesQueueLabel.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.gamesQueueLabel.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.gamesQueueLabel.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.gamesQueueLabel.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.gamesQueueLabel.Location = new System.Drawing.Point(984, 603);
+ this.gamesQueueLabel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(26)))), ((int)(((byte)(30)))));
+ this.gamesQueueLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.gamesQueueLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(140)))), ((int)(((byte)(145)))), ((int)(((byte)(150)))));
+ this.gamesQueueLabel.Location = new System.Drawing.Point(669, 689);
this.gamesQueueLabel.Name = "gamesQueueLabel";
this.gamesQueueLabel.Size = new System.Drawing.Size(103, 15);
this.gamesQueueLabel.TabIndex = 86;
this.gamesQueueLabel.Text = "Download Queue";
//
- // ProgressText
- //
- this.ProgressText.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.ProgressText.AutoSize = true;
- this.ProgressText.BackColor = System.Drawing.Color.Transparent;
- this.ProgressText.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.ProgressText.ForeColor = System.Drawing.Color.White;
- this.ProgressText.Location = new System.Drawing.Point(225, 710);
- this.ProgressText.Name = "ProgressText";
- this.ProgressText.Size = new System.Drawing.Size(0, 18);
- this.ProgressText.TabIndex = 88;
- //
// notesRichTextBox
//
this.notesRichTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- this.notesRichTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.notesRichTextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
- this.notesRichTextBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.notesRichTextBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
+ this.notesRichTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(26)))), ((int)(((byte)(30)))));
+ this.notesRichTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.notesRichTextBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F);
+ this.notesRichTextBox.ForeColor = System.Drawing.Color.White;
this.notesRichTextBox.HideSelection = false;
- this.notesRichTextBox.Location = new System.Drawing.Point(984, 626);
+ this.notesRichTextBox.Location = new System.Drawing.Point(954, 496);
this.notesRichTextBox.Name = "notesRichTextBox";
this.notesRichTextBox.ReadOnly = true;
- this.notesRichTextBox.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
+ this.notesRichTextBox.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.None;
this.notesRichTextBox.ShowSelectionMargin = true;
- this.notesRichTextBox.Size = new System.Drawing.Size(385, 81);
+ this.notesRichTextBox.Size = new System.Drawing.Size(265, 192);
this.notesRichTextBox.TabIndex = 10;
- this.notesRichTextBox.Text = "\n\n\n TIP: PRESS F1 TO SEE A LIST OF SHORTCUTS";
+ this.notesRichTextBox.Text = "Tip: Press F1 to see all shortcuts";
+ this.notesRichTextBox.LinkClicked += new System.Windows.Forms.LinkClickedEventHandler(this.notesRichTextBox_LinkClicked);
//
// DragDropLbl
//
@@ -466,7 +397,7 @@ namespace AndroidSideloader
this.DragDropLbl.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.DragDropLbl.Font = new System.Drawing.Font("Microsoft Sans Serif", 36F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.DragDropLbl.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.DragDropLbl.Location = new System.Drawing.Point(984, 533);
+ this.DragDropLbl.Location = new System.Drawing.Point(620, 561);
this.DragDropLbl.Name = "DragDropLbl";
this.DragDropLbl.Size = new System.Drawing.Size(320, 55);
this.DragDropLbl.TabIndex = 25;
@@ -477,14 +408,12 @@ namespace AndroidSideloader
//
this.lblNotes.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.lblNotes.AutoSize = true;
- this.lblNotes.BackColor = System.Drawing.Color.Transparent;
- this.lblNotes.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.lblNotes.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.lblNotes.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.lblNotes.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.lblNotes.Location = new System.Drawing.Point(984, 689);
+ this.lblNotes.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(26)))), ((int)(((byte)(30)))));
+ this.lblNotes.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.lblNotes.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(140)))), ((int)(((byte)(145)))), ((int)(((byte)(150)))));
+ this.lblNotes.Location = new System.Drawing.Point(966, 689);
this.lblNotes.Name = "lblNotes";
- this.lblNotes.Size = new System.Drawing.Size(88, 15);
+ this.lblNotes.Size = new System.Drawing.Size(86, 15);
this.lblNotes.TabIndex = 86;
this.lblNotes.Text = "Release Notes";
//
@@ -492,58 +421,12 @@ namespace AndroidSideloader
//
this.adbCmd_background.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
this.adbCmd_background.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
- this.adbCmd_background.Location = new System.Drawing.Point(462, 196);
+ this.adbCmd_background.Location = new System.Drawing.Point(462, 138);
this.adbCmd_background.Name = "adbCmd_background";
this.adbCmd_background.Size = new System.Drawing.Size(322, 103);
this.adbCmd_background.TabIndex = 89;
this.adbCmd_background.Visible = false;
//
- // lblUpdateAvailable
- //
- this.lblUpdateAvailable.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.lblUpdateAvailable.AutoSize = true;
- this.lblUpdateAvailable.BackColor = System.Drawing.Color.Transparent;
- this.lblUpdateAvailable.Cursor = System.Windows.Forms.Cursors.Hand;
- this.lblUpdateAvailable.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblUpdateAvailable.ForeColor = System.Drawing.SystemColors.ControlLightLight;
- this.lblUpdateAvailable.Location = new System.Drawing.Point(72, 20);
- this.lblUpdateAvailable.Name = "lblUpdateAvailable";
- this.lblUpdateAvailable.Size = new System.Drawing.Size(151, 20);
- this.lblUpdateAvailable.TabIndex = 90;
- this.lblUpdateAvailable.Text = "𝖴𝖯𝖣𝖠𝖳𝖤 𝖠𝖵𝖠𝖨𝖫𝖠𝖡𝖫𝖤";
- this.lblUpdateAvailable.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
- this.lblUpdateAvailable.Click += new System.EventHandler(this.updateAvailable_Click);
- //
- // lblUpToDate
- //
- this.lblUpToDate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.lblUpToDate.AutoSize = true;
- this.lblUpToDate.BackColor = System.Drawing.Color.Transparent;
- this.lblUpToDate.Cursor = System.Windows.Forms.Cursors.Hand;
- this.lblUpToDate.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblUpToDate.ForeColor = System.Drawing.SystemColors.ControlLightLight;
- this.lblUpToDate.Location = new System.Drawing.Point(127, 0);
- this.lblUpToDate.Name = "lblUpToDate";
- this.lblUpToDate.RightToLeft = System.Windows.Forms.RightToLeft.No;
- this.lblUpToDate.Size = new System.Drawing.Size(96, 20);
- this.lblUpToDate.TabIndex = 90;
- this.lblUpToDate.Text = "𝖴𝖯 𝖳𝖮 𝖣𝖠𝖳𝖤";
- this.lblUpToDate.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
- this.lblUpToDate.Click += new System.EventHandler(this.lblUpToDate_Click);
- //
- // lblMirror
- //
- this.lblMirror.AutoSize = true;
- this.lblMirror.BackColor = System.Drawing.Color.Transparent;
- this.lblMirror.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
- this.lblMirror.ForeColor = System.Drawing.SystemColors.ControlLightLight;
- this.lblMirror.Location = new System.Drawing.Point(475, 44);
- this.lblMirror.Name = "lblMirror";
- this.lblMirror.Size = new System.Drawing.Size(51, 17);
- this.lblMirror.TabIndex = 90;
- this.lblMirror.Text = "Mirror";
- this.lblMirror.TextAlign = System.Drawing.ContentAlignment.TopCenter;
- //
// adbCmd_CommandBox
//
this.adbCmd_CommandBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
@@ -556,11 +439,11 @@ namespace AndroidSideloader
this.adbCmd_CommandBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.adbCmd_CommandBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
this.adbCmd_CommandBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.adbCmd_CommandBox.Location = new System.Drawing.Point(477, 231);
+ this.adbCmd_CommandBox.Location = new System.Drawing.Point(477, 173);
this.adbCmd_CommandBox.MaximumSize = new System.Drawing.Size(290, 24);
this.adbCmd_CommandBox.MinimumSize = new System.Drawing.Size(290, 24);
this.adbCmd_CommandBox.Name = "adbCmd_CommandBox";
- this.adbCmd_CommandBox.Size = new System.Drawing.Size(290, 21);
+ this.adbCmd_CommandBox.Size = new System.Drawing.Size(290, 23);
this.adbCmd_CommandBox.TabIndex = 5;
this.adbCmd_CommandBox.Visible = false;
this.adbCmd_CommandBox.TextChanged += new System.EventHandler(this.searchTextBox_TextChanged);
@@ -575,8 +458,8 @@ namespace AndroidSideloader
| System.Windows.Forms.AnchorStyles.Right)));
this.adbCmd_Label.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
this.adbCmd_Label.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
- this.adbCmd_Label.ForeColor = System.Drawing.SystemColors.ControlLightLight;
- this.adbCmd_Label.Location = new System.Drawing.Point(500, 205);
+ this.adbCmd_Label.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.adbCmd_Label.Location = new System.Drawing.Point(500, 147);
this.adbCmd_Label.MaximumSize = new System.Drawing.Size(247, 20);
this.adbCmd_Label.MinimumSize = new System.Drawing.Size(247, 20);
this.adbCmd_Label.Name = "adbCmd_Label";
@@ -586,47 +469,35 @@ namespace AndroidSideloader
this.adbCmd_Label.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
this.adbCmd_Label.Visible = false;
//
- // lblNeedsDonate
- //
- this.lblNeedsDonate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.lblNeedsDonate.AutoSize = true;
- this.lblNeedsDonate.BackColor = System.Drawing.Color.Transparent;
- this.lblNeedsDonate.Cursor = System.Windows.Forms.Cursors.Hand;
- this.lblNeedsDonate.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblNeedsDonate.ForeColor = System.Drawing.SystemColors.ControlLightLight;
- this.lblNeedsDonate.Location = new System.Drawing.Point(81, 40);
- this.lblNeedsDonate.Name = "lblNeedsDonate";
- this.lblNeedsDonate.Size = new System.Drawing.Size(142, 20);
- this.lblNeedsDonate.TabIndex = 90;
- this.lblNeedsDonate.Text = "𝖭𝖤𝖶𝖤𝖱 𝖳𝖧𝖠𝖭 𝖫𝖨𝖲𝖳";
- this.lblNeedsDonate.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
- this.lblNeedsDonate.Click += new System.EventHandler(this.lblNeedsDonate_Click);
- //
// gamesPictureBox
//
- this.gamesPictureBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.gamesPictureBox.BackColor = System.Drawing.Color.Black;
+ this.gamesPictureBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(35)))), ((int)(((byte)(35)))), ((int)(((byte)(40)))));
this.gamesPictureBox.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
- this.gamesPictureBox.Location = new System.Drawing.Point(224, 493);
+ this.gamesPictureBox.Controls.Add(this.freeDisclaimer);
+ this.gamesPictureBox.Location = new System.Drawing.Point(6, 34);
+ this.gamesPictureBox.Margin = new System.Windows.Forms.Padding(0);
this.gamesPictureBox.Name = "gamesPictureBox";
- this.gamesPictureBox.Size = new System.Drawing.Size(374, 214);
+ this.gamesPictureBox.Size = new System.Drawing.Size(238, 136);
+ this.gamesPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.gamesPictureBox.TabIndex = 84;
this.gamesPictureBox.TabStop = false;
this.gamesPictureBox.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
this.gamesPictureBox.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);
+ this.gamesPictureBox.Paint += new System.Windows.Forms.PaintEventHandler(this.gamesPictureBox_Paint);
//
// startsideloadbutton
//
this.startsideloadbutton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.startsideloadbutton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.startsideloadbutton.Cursor = System.Windows.Forms.Cursors.Hand;
this.startsideloadbutton.Dock = System.Windows.Forms.DockStyle.Top;
this.startsideloadbutton.FlatAppearance.BorderSize = 0;
this.startsideloadbutton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.startsideloadbutton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
- this.startsideloadbutton.Location = new System.Drawing.Point(0, 56);
+ this.startsideloadbutton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.startsideloadbutton.Location = new System.Drawing.Point(0, 84);
this.startsideloadbutton.Name = "startsideloadbutton";
this.startsideloadbutton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.startsideloadbutton.Size = new System.Drawing.Size(221, 28);
+ this.startsideloadbutton.Size = new System.Drawing.Size(233, 28);
this.startsideloadbutton.TabIndex = 5;
this.startsideloadbutton.Text = "SIDELOAD APK";
this.startsideloadbutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -637,173 +508,180 @@ namespace AndroidSideloader
// devicesbutton
//
this.devicesbutton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.devicesbutton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.devicesbutton.Cursor = System.Windows.Forms.Cursors.Hand;
this.devicesbutton.Dock = System.Windows.Forms.DockStyle.Top;
this.devicesbutton.FlatAppearance.BorderSize = 0;
this.devicesbutton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.devicesbutton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
- this.devicesbutton.Location = new System.Drawing.Point(0, 0);
+ this.devicesbutton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.devicesbutton.Location = new System.Drawing.Point(0, 56);
this.devicesbutton.Name = "devicesbutton";
this.devicesbutton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.devicesbutton.Size = new System.Drawing.Size(221, 28);
+ this.devicesbutton.Size = new System.Drawing.Size(233, 28);
this.devicesbutton.TabIndex = 0;
this.devicesbutton.Text = "RECONNECT DEVICE";
this.devicesbutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.devicesbutton_Tooltip.SetToolTip(this.devicesbutton, "Rookie will attempt to reconnect to your Device");
+ this.devicesbutton_Tooltip.SetToolTip(this.devicesbutton, "Rookie will attempt to reconnect to your device");
this.devicesbutton.UseVisualStyleBackColor = false;
this.devicesbutton.Click += new System.EventHandler(this.devicesbutton_Click);
//
// obbcopybutton
//
this.obbcopybutton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.obbcopybutton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.obbcopybutton.Cursor = System.Windows.Forms.Cursors.Hand;
this.obbcopybutton.Dock = System.Windows.Forms.DockStyle.Top;
this.obbcopybutton.FlatAppearance.BorderSize = 0;
this.obbcopybutton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.obbcopybutton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
- this.obbcopybutton.Location = new System.Drawing.Point(0, 0);
+ this.obbcopybutton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.obbcopybutton.Location = new System.Drawing.Point(0, 28);
this.obbcopybutton.Name = "obbcopybutton";
this.obbcopybutton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.obbcopybutton.Size = new System.Drawing.Size(221, 28);
+ this.obbcopybutton.Size = new System.Drawing.Size(233, 28);
this.obbcopybutton.TabIndex = 0;
this.obbcopybutton.Text = "COPY OBB";
this.obbcopybutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.obbcopybutton_Tooltip.SetToolTip(this.obbcopybutton, "Copies an obb folder to the Android/obb folder from the device (Not all games use" +
- " obb files)");
+ this.obbcopybutton_Tooltip.SetToolTip(this.obbcopybutton, "Copies an OBB folder to the Android/obb folder from the device (Not all games use" +
+ " OBB files)");
this.obbcopybutton.UseVisualStyleBackColor = false;
this.obbcopybutton.Click += new System.EventHandler(this.obbcopybutton_Click);
//
// backupadbbutton
//
this.backupadbbutton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.backupadbbutton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.backupadbbutton.Cursor = System.Windows.Forms.Cursors.Hand;
this.backupadbbutton.Dock = System.Windows.Forms.DockStyle.Top;
this.backupadbbutton.FlatAppearance.BorderSize = 0;
this.backupadbbutton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.backupadbbutton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
+ this.backupadbbutton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
this.backupadbbutton.Location = new System.Drawing.Point(0, 28);
this.backupadbbutton.Name = "backupadbbutton";
this.backupadbbutton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.backupadbbutton.Size = new System.Drawing.Size(221, 28);
+ this.backupadbbutton.Size = new System.Drawing.Size(233, 28);
this.backupadbbutton.TabIndex = 1;
this.backupadbbutton.Text = "BACKUP WITH ADB";
this.backupadbbutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.backupadbbutton_Tooltip.SetToolTip(this.backupadbbutton, "Uses ADB-Backup to Save Game Data (Pick app within the Dropdown)");
+ this.backupadbbutton_Tooltip.SetToolTip(this.backupadbbutton, "Save game data via ADB-Backup");
this.backupadbbutton.UseVisualStyleBackColor = false;
this.backupadbbutton.Click += new System.EventHandler(this.backupadbbutton_Click);
//
// backupbutton
//
this.backupbutton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.backupbutton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.backupbutton.Cursor = System.Windows.Forms.Cursors.Hand;
this.backupbutton.Dock = System.Windows.Forms.DockStyle.Top;
this.backupbutton.FlatAppearance.BorderSize = 0;
this.backupbutton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.backupbutton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
+ this.backupbutton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
this.backupbutton.Location = new System.Drawing.Point(0, 0);
this.backupbutton.Name = "backupbutton";
this.backupbutton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.backupbutton.Size = new System.Drawing.Size(221, 28);
+ this.backupbutton.Size = new System.Drawing.Size(233, 28);
this.backupbutton.TabIndex = 1;
this.backupbutton.Text = "BACKUP GAMEDATA";
this.backupbutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.backupbutton_Tooltip.SetToolTip(this.backupbutton, "Saves the game and apps data to the sideloader folder (Does not save APKs or OBBs" +
- ")");
+ this.backupbutton_Tooltip.SetToolTip(this.backupbutton, "Save game and apps data to the sideloader folder (Does not save APKs or OBBs)");
this.backupbutton.UseVisualStyleBackColor = false;
this.backupbutton.Click += new System.EventHandler(this.backupbutton_Click);
//
// restorebutton
//
this.restorebutton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.restorebutton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.restorebutton.Cursor = System.Windows.Forms.Cursors.Hand;
this.restorebutton.Dock = System.Windows.Forms.DockStyle.Top;
this.restorebutton.FlatAppearance.BorderSize = 0;
this.restorebutton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.restorebutton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
+ this.restorebutton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
this.restorebutton.Location = new System.Drawing.Point(0, 56);
this.restorebutton.Name = "restorebutton";
this.restorebutton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.restorebutton.Size = new System.Drawing.Size(221, 28);
+ this.restorebutton.Size = new System.Drawing.Size(233, 28);
this.restorebutton.TabIndex = 0;
this.restorebutton.Text = "RESTORE GAMEDATA";
this.restorebutton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.restorebutton_Tooltip.SetToolTip(this.restorebutton, "Restores the game and apps data to the device (Use the Backup Game Data button fi" +
- "rst!)");
+ this.restorebutton_Tooltip.SetToolTip(this.restorebutton, "Restore game and apps data to the device (Use BACKUP GAMEDATA first)");
this.restorebutton.UseVisualStyleBackColor = false;
this.restorebutton.Click += new System.EventHandler(this.restorebutton_Click);
//
// getApkButton
//
this.getApkButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.getApkButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.getApkButton.Cursor = System.Windows.Forms.Cursors.Hand;
this.getApkButton.Dock = System.Windows.Forms.DockStyle.Top;
this.getApkButton.FlatAppearance.BorderSize = 0;
this.getApkButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.getApkButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
this.getApkButton.Location = new System.Drawing.Point(0, 0);
this.getApkButton.Name = "getApkButton";
this.getApkButton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.getApkButton.Size = new System.Drawing.Size(221, 28);
+ this.getApkButton.Size = new System.Drawing.Size(233, 28);
this.getApkButton.TabIndex = 2;
- this.getApkButton.Text = "SHARE SELECTED APP";
+ this.getApkButton.Text = "SHARE APP";
this.getApkButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.getApkButton_Tooltip.SetToolTip(this.getApkButton, "Uploads the selected app to our Servers (Pick app within the Dropdown)");
+ this.getApkButton_Tooltip.SetToolTip(this.getApkButton, "Upload an app to our servers");
this.getApkButton.UseVisualStyleBackColor = false;
this.getApkButton.Click += new System.EventHandler(this.getApkButton_Click);
//
// uninstallAppButton
//
this.uninstallAppButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.uninstallAppButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.uninstallAppButton.Cursor = System.Windows.Forms.Cursors.Hand;
this.uninstallAppButton.Dock = System.Windows.Forms.DockStyle.Top;
this.uninstallAppButton.FlatAppearance.BorderSize = 0;
this.uninstallAppButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.uninstallAppButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
+ this.uninstallAppButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
this.uninstallAppButton.Location = new System.Drawing.Point(0, 28);
this.uninstallAppButton.Name = "uninstallAppButton";
this.uninstallAppButton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.uninstallAppButton.Size = new System.Drawing.Size(221, 28);
+ this.uninstallAppButton.Size = new System.Drawing.Size(233, 28);
this.uninstallAppButton.TabIndex = 3;
- this.uninstallAppButton.Text = "UNINSTALL SELECTED APP";
+ this.uninstallAppButton.Text = "UNINSTALL APP";
this.uninstallAppButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.uninstallAppButton_Tooltip.SetToolTip(this.uninstallAppButton, "Uninstalls the selected app (Select within the Dropdown)");
+ this.uninstallAppButton_Tooltip.SetToolTip(this.uninstallAppButton, "Uninstall an app");
this.uninstallAppButton.UseVisualStyleBackColor = false;
this.uninstallAppButton.Click += new System.EventHandler(this.uninstallAppButton_Click);
//
// pullAppToDesktopBtn
//
this.pullAppToDesktopBtn.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.pullAppToDesktopBtn.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.pullAppToDesktopBtn.Cursor = System.Windows.Forms.Cursors.Hand;
this.pullAppToDesktopBtn.Dock = System.Windows.Forms.DockStyle.Top;
this.pullAppToDesktopBtn.FlatAppearance.BorderSize = 0;
this.pullAppToDesktopBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.pullAppToDesktopBtn.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
+ this.pullAppToDesktopBtn.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
this.pullAppToDesktopBtn.Location = new System.Drawing.Point(0, 56);
this.pullAppToDesktopBtn.Name = "pullAppToDesktopBtn";
this.pullAppToDesktopBtn.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.pullAppToDesktopBtn.Size = new System.Drawing.Size(221, 28);
+ this.pullAppToDesktopBtn.Size = new System.Drawing.Size(233, 28);
this.pullAppToDesktopBtn.TabIndex = 4;
this.pullAppToDesktopBtn.Text = "PULL APP TO DESKTOP";
this.pullAppToDesktopBtn.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.pullAppToDesktopBtn_Tooltip.SetToolTip(this.pullAppToDesktopBtn, "Extracts APK and OBB to your Desktop (Select within the Dropdown)");
+ this.pullAppToDesktopBtn_Tooltip.SetToolTip(this.pullAppToDesktopBtn, "Extract APK and OBB to your desktop");
this.pullAppToDesktopBtn.UseVisualStyleBackColor = false;
this.pullAppToDesktopBtn.Click += new System.EventHandler(this.pullAppToDesktopBtn_Click);
//
// copyBulkObbButton
//
this.copyBulkObbButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.copyBulkObbButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.copyBulkObbButton.Cursor = System.Windows.Forms.Cursors.Hand;
this.copyBulkObbButton.Dock = System.Windows.Forms.DockStyle.Top;
this.copyBulkObbButton.FlatAppearance.BorderSize = 0;
this.copyBulkObbButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.copyBulkObbButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
- this.copyBulkObbButton.Location = new System.Drawing.Point(0, 28);
+ this.copyBulkObbButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.copyBulkObbButton.Location = new System.Drawing.Point(0, 56);
this.copyBulkObbButton.Name = "copyBulkObbButton";
this.copyBulkObbButton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.copyBulkObbButton.Size = new System.Drawing.Size(221, 28);
+ this.copyBulkObbButton.Size = new System.Drawing.Size(233, 28);
this.copyBulkObbButton.TabIndex = 1;
this.copyBulkObbButton.Text = "RECURSIVE COPY OBB";
this.copyBulkObbButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.copyBulkObbButton_Tooltip.SetToolTip(this.copyBulkObbButton, "Copies an multiple OBB folders to your device.");
+ this.copyBulkObbButton_Tooltip.SetToolTip(this.copyBulkObbButton, "Copy multiple OBB folders to your device");
this.copyBulkObbButton.UseVisualStyleBackColor = false;
this.copyBulkObbButton.Click += new System.EventHandler(this.copyBulkObbButton_Click);
//
@@ -813,36 +691,37 @@ namespace AndroidSideloader
this.aboutBtn.Cursor = System.Windows.Forms.Cursors.Hand;
this.aboutBtn.Dock = System.Windows.Forms.DockStyle.Top;
this.aboutBtn.FlatAppearance.BorderSize = 0;
+ this.aboutBtn.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(47)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
this.aboutBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.aboutBtn.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
this.aboutBtn.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
- this.aboutBtn.Location = new System.Drawing.Point(0, 697);
+ this.aboutBtn.Location = new System.Drawing.Point(0, 991);
this.aboutBtn.Name = "aboutBtn";
this.aboutBtn.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.aboutBtn.Size = new System.Drawing.Size(221, 28);
+ this.aboutBtn.Size = new System.Drawing.Size(233, 28);
this.aboutBtn.TabIndex = 5;
this.aboutBtn.Text = "ABOUT";
this.aboutBtn.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.aboutBtn_Tooltip.SetToolTip(this.aboutBtn, "About the Rookie App and it\'s amazing creators and contributors");
+ this.aboutBtn_Tooltip.SetToolTip(this.aboutBtn, "About Rookie, it\'s amazing creators and contributors");
this.aboutBtn.UseVisualStyleBackColor = false;
this.aboutBtn.Click += new System.EventHandler(this.aboutBtn_Click);
//
// settingsButton
//
- this.settingsButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.settingsButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
this.settingsButton.Cursor = System.Windows.Forms.Cursors.Hand;
this.settingsButton.Dock = System.Windows.Forms.DockStyle.Top;
this.settingsButton.FlatAppearance.BorderSize = 0;
this.settingsButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.settingsButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
- this.settingsButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.settingsButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
+ this.settingsButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
this.settingsButton.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.settingsButton.Location = new System.Drawing.Point(0, 669);
+ this.settingsButton.Location = new System.Drawing.Point(0, 140);
this.settingsButton.Name = "settingsButton";
this.settingsButton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.settingsButton.Size = new System.Drawing.Size(221, 28);
- this.settingsButton.TabIndex = 4;
- this.settingsButton.Text = "SETTINGS";
+ this.settingsButton.Size = new System.Drawing.Size(233, 28);
+ this.settingsButton.TabIndex = 8;
+ this.settingsButton.Text = "ROOKIE SETTINGS";
this.settingsButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.settingsButton_Tooltip.SetToolTip(this.settingsButton, "Rookie App Settings");
this.settingsButton.UseVisualStyleBackColor = false;
@@ -851,133 +730,120 @@ namespace AndroidSideloader
// QuestOptionsButton
//
this.QuestOptionsButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.QuestOptionsButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.QuestOptionsButton.Cursor = System.Windows.Forms.Cursors.Hand;
this.QuestOptionsButton.Dock = System.Windows.Forms.DockStyle.Top;
this.QuestOptionsButton.FlatAppearance.BorderSize = 0;
this.QuestOptionsButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.QuestOptionsButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
- this.QuestOptionsButton.Location = new System.Drawing.Point(0, 56);
+ this.QuestOptionsButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.QuestOptionsButton.Location = new System.Drawing.Point(0, 112);
this.QuestOptionsButton.Name = "QuestOptionsButton";
this.QuestOptionsButton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.QuestOptionsButton.Size = new System.Drawing.Size(221, 28);
+ this.QuestOptionsButton.Size = new System.Drawing.Size(233, 28);
this.QuestOptionsButton.TabIndex = 2;
- this.QuestOptionsButton.Text = "QUEST OPTIONS";
+ this.QuestOptionsButton.Text = "QUEST SETTINGS";
this.QuestOptionsButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.QuestOptionsButton_Tooltip.SetToolTip(this.QuestOptionsButton, "Additional Quest Settings and Utilities");
+ this.QuestOptionsButton_Tooltip.SetToolTip(this.QuestOptionsButton, "Quest Settings and Utilities");
this.QuestOptionsButton.UseVisualStyleBackColor = false;
this.QuestOptionsButton.Click += new System.EventHandler(this.QuestOptionsButton_Click);
//
// btnOpenDownloads
//
this.btnOpenDownloads.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.btnOpenDownloads.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.btnOpenDownloads.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnOpenDownloads.Dock = System.Windows.Forms.DockStyle.Top;
this.btnOpenDownloads.FlatAppearance.BorderSize = 0;
this.btnOpenDownloads.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnOpenDownloads.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
- this.btnOpenDownloads.Location = new System.Drawing.Point(0, 84);
+ this.btnOpenDownloads.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.btnOpenDownloads.Location = new System.Drawing.Point(0, 28);
this.btnOpenDownloads.Name = "btnOpenDownloads";
this.btnOpenDownloads.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.btnOpenDownloads.Size = new System.Drawing.Size(221, 28);
+ this.btnOpenDownloads.Size = new System.Drawing.Size(233, 28);
this.btnOpenDownloads.TabIndex = 7;
this.btnOpenDownloads.Text = "OPEN DOWNLOADS FOLDER";
this.btnOpenDownloads.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.btnOpenDownloads_Tooltip.SetToolTip(this.btnOpenDownloads, "Opens your set Rookie Download Folder");
+ this.btnOpenDownloads_Tooltip.SetToolTip(this.btnOpenDownloads, "Open your set Rookie Download Folder");
this.btnOpenDownloads.UseVisualStyleBackColor = false;
this.btnOpenDownloads.Click += new System.EventHandler(this.btnOpenDownloads_Click);
//
// btnRunAdbCmd
//
this.btnRunAdbCmd.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.btnRunAdbCmd.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.btnRunAdbCmd.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnRunAdbCmd.Dock = System.Windows.Forms.DockStyle.Top;
this.btnRunAdbCmd.FlatAppearance.BorderSize = 0;
this.btnRunAdbCmd.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnRunAdbCmd.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
- this.btnRunAdbCmd.Location = new System.Drawing.Point(0, 112);
+ this.btnRunAdbCmd.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.btnRunAdbCmd.Location = new System.Drawing.Point(0, 56);
this.btnRunAdbCmd.Name = "btnRunAdbCmd";
this.btnRunAdbCmd.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.btnRunAdbCmd.Size = new System.Drawing.Size(221, 28);
+ this.btnRunAdbCmd.Size = new System.Drawing.Size(233, 28);
this.btnRunAdbCmd.TabIndex = 6;
this.btnRunAdbCmd.Text = "RUN ADB COMMAND";
this.btnRunAdbCmd.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.btnRunAdbCmd_Tooltip.SetToolTip(this.btnRunAdbCmd, "Opens the Run ADB Command Prompt");
+ this.btnRunAdbCmd_Tooltip.SetToolTip(this.btnRunAdbCmd, "Open the \'Run ADB Command\' prompt");
this.btnRunAdbCmd.UseVisualStyleBackColor = false;
this.btnRunAdbCmd.Click += new System.EventHandler(this.btnRunAdbCmd_Click);
//
- // ADBWirelessDisable
+ // ADBWirelessToggle
//
- this.ADBWirelessDisable.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.ADBWirelessDisable.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
- this.ADBWirelessDisable.Dock = System.Windows.Forms.DockStyle.Top;
- this.ADBWirelessDisable.FlatAppearance.BorderSize = 0;
- this.ADBWirelessDisable.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.ADBWirelessDisable.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
- this.ADBWirelessDisable.Location = new System.Drawing.Point(0, 28);
- this.ADBWirelessDisable.Name = "ADBWirelessDisable";
- this.ADBWirelessDisable.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.ADBWirelessDisable.Size = new System.Drawing.Size(221, 28);
- this.ADBWirelessDisable.TabIndex = 1;
- this.ADBWirelessDisable.Text = "DISABLE WIRELESS ADB";
- this.ADBWirelessDisable.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.ADBWirelessDisable_Tooltip.SetToolTip(this.ADBWirelessDisable, "Removes Wireless ADB settings and disconnects any Wireless devices");
- this.ADBWirelessDisable.UseVisualStyleBackColor = false;
- this.ADBWirelessDisable.Click += new System.EventHandler(this.ADBWirelessDisable_Click);
- //
- // ADBWirelessEnable
- //
- this.ADBWirelessEnable.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.ADBWirelessEnable.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
- this.ADBWirelessEnable.Dock = System.Windows.Forms.DockStyle.Top;
- this.ADBWirelessEnable.FlatAppearance.BorderSize = 0;
- this.ADBWirelessEnable.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.ADBWirelessEnable.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
- this.ADBWirelessEnable.Location = new System.Drawing.Point(0, 0);
- this.ADBWirelessEnable.Name = "ADBWirelessEnable";
- this.ADBWirelessEnable.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.ADBWirelessEnable.Size = new System.Drawing.Size(221, 28);
- this.ADBWirelessEnable.TabIndex = 0;
- this.ADBWirelessEnable.Text = "ENABLE WIRELESS ADB";
- this.ADBWirelessEnable.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.ADBWirelessEnable_Tooltip.SetToolTip(this.ADBWirelessEnable, "Enables Wireless sideloading. Requires a connected device to activate!");
- this.ADBWirelessEnable.UseVisualStyleBackColor = false;
- this.ADBWirelessEnable.Click += new System.EventHandler(this.ADBWirelessEnable_Click);
+ this.ADBWirelessToggle.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
+ this.ADBWirelessToggle.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.ADBWirelessToggle.Dock = System.Windows.Forms.DockStyle.Top;
+ this.ADBWirelessToggle.FlatAppearance.BorderSize = 0;
+ this.ADBWirelessToggle.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.ADBWirelessToggle.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
+ this.ADBWirelessToggle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.ADBWirelessToggle.Location = new System.Drawing.Point(0, 0);
+ this.ADBWirelessToggle.Name = "ADBWirelessToggle";
+ this.ADBWirelessToggle.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
+ this.ADBWirelessToggle.Size = new System.Drawing.Size(233, 28);
+ this.ADBWirelessToggle.TabIndex = 0;
+ this.ADBWirelessToggle.Text = "TOGGLE WIRELESS ADB";
+ this.ADBWirelessToggle.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.ADBWirelessToggle_Tooltip.SetToolTip(this.ADBWirelessToggle, "Enable or disable wireless ADB connection");
+ this.ADBWirelessToggle.UseVisualStyleBackColor = false;
+ this.ADBWirelessToggle.Click += new System.EventHandler(this.ADBWirelessToggle_Click);
//
// UpdateGamesButton
//
this.UpdateGamesButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.UpdateGamesButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.UpdateGamesButton.Cursor = System.Windows.Forms.Cursors.Hand;
this.UpdateGamesButton.Dock = System.Windows.Forms.DockStyle.Top;
this.UpdateGamesButton.FlatAppearance.BorderSize = 0;
this.UpdateGamesButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.UpdateGamesButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
- this.UpdateGamesButton.Location = new System.Drawing.Point(0, 28);
+ this.UpdateGamesButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.UpdateGamesButton.Location = new System.Drawing.Point(0, 84);
this.UpdateGamesButton.Name = "UpdateGamesButton";
this.UpdateGamesButton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.UpdateGamesButton.Size = new System.Drawing.Size(221, 29);
+ this.UpdateGamesButton.Size = new System.Drawing.Size(233, 29);
this.UpdateGamesButton.TabIndex = 7;
this.UpdateGamesButton.Text = "REFRESH APP LIST";
this.UpdateGamesButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.UpdateGamesButton_Tooltip.SetToolTip(this.UpdateGamesButton, "Refresh Game List and available updates");
+ this.UpdateGamesButton_Tooltip.SetToolTip(this.UpdateGamesButton, "Refresh game list and available updates");
this.UpdateGamesButton.UseVisualStyleBackColor = false;
this.UpdateGamesButton.Click += new System.EventHandler(this.UpdateGamesButton_Click);
//
// listApkButton
//
this.listApkButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
- this.listApkButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.listApkButton.Cursor = System.Windows.Forms.Cursors.Hand;
this.listApkButton.Dock = System.Windows.Forms.DockStyle.Top;
this.listApkButton.FlatAppearance.BorderSize = 0;
this.listApkButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.listApkButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
- this.listApkButton.Location = new System.Drawing.Point(0, 57);
+ this.listApkButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.listApkButton.Location = new System.Drawing.Point(0, 113);
this.listApkButton.Name = "listApkButton";
this.listApkButton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.listApkButton.Size = new System.Drawing.Size(221, 28);
+ this.listApkButton.Size = new System.Drawing.Size(233, 28);
this.listApkButton.TabIndex = 6;
this.listApkButton.Text = "REFRESH ALL";
this.listApkButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.listApkButton_Tooltip.SetToolTip(this.listApkButton, "Refresh connected devices, installed apps, and update game list");
+ this.listApkButton_Tooltip.SetToolTip(this.listApkButton, "Refresh connected devices, installed apps and game list");
this.listApkButton.UseVisualStyleBackColor = false;
this.listApkButton.Click += new System.EventHandler(this.listApkButton_Click);
//
@@ -987,44 +853,68 @@ namespace AndroidSideloader
| System.Windows.Forms.AnchorStyles.Right)));
this.progressDLbtnContainer.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.progressDLbtnContainer.BackColor = System.Drawing.Color.Transparent;
- this.progressDLbtnContainer.Controls.Add(this.downloadInstallGameButton);
this.progressDLbtnContainer.Controls.Add(this.progressBar);
this.progressDLbtnContainer.Controls.Add(this.etaLabel);
this.progressDLbtnContainer.Controls.Add(this.speedLabel);
- this.progressDLbtnContainer.Location = new System.Drawing.Point(224, 454);
+ this.progressDLbtnContainer.Location = new System.Drawing.Point(258, 459);
this.progressDLbtnContainer.MinimumSize = new System.Drawing.Size(600, 34);
this.progressDLbtnContainer.Name = "progressDLbtnContainer";
- this.progressDLbtnContainer.Size = new System.Drawing.Size(1145, 34);
+ this.progressDLbtnContainer.Size = new System.Drawing.Size(984, 34);
this.progressDLbtnContainer.TabIndex = 96;
//
- // bottomContainer
+ // diskLabel
//
- this.bottomContainer.AutoSize = true;
- this.bottomContainer.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.bottomContainer.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
- this.bottomContainer.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.bottomContainer.Dock = System.Windows.Forms.DockStyle.Top;
- this.bottomContainer.Location = new System.Drawing.Point(0, 725);
- this.bottomContainer.Margin = new System.Windows.Forms.Padding(2);
- this.bottomContainer.Name = "bottomContainer";
- this.bottomContainer.Size = new System.Drawing.Size(221, 0);
- this.bottomContainer.TabIndex = 73;
- this.bottomContainer.Visible = false;
+ this.diskLabel.BackColor = System.Drawing.Color.Transparent;
+ this.diskLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.diskLabel.ForeColor = System.Drawing.Color.LightGray;
+ this.diskLabel.Location = new System.Drawing.Point(8, 24);
+ this.diskLabel.Name = "diskLabel";
+ this.diskLabel.Size = new System.Drawing.Size(150, 12);
+ this.diskLabel.TabIndex = 7;
+ this.diskLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.diskLabel.Visible = false;
+ //
+ // questStorageProgressBar
+ //
+ this.questStorageProgressBar.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
+ this.questStorageProgressBar.Controls.Add(this.batteryLevImg);
+ this.questStorageProgressBar.Location = new System.Drawing.Point(4, 4);
+ this.questStorageProgressBar.Margin = new System.Windows.Forms.Padding(0);
+ this.questStorageProgressBar.Name = "questStorageProgressBar";
+ this.questStorageProgressBar.Size = new System.Drawing.Size(243, 44);
+ this.questStorageProgressBar.TabIndex = 100;
+ this.questStorageProgressBar.Visible = false;
+ this.questStorageProgressBar.Paint += new System.Windows.Forms.PaintEventHandler(this.questStorageProgressBar_Paint);
+ //
+ // batteryLevImg
+ //
+ this.batteryLevImg.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.batteryLevImg.BackColor = System.Drawing.Color.Transparent;
+ this.batteryLevImg.BackgroundImage = global::AndroidSideloader.Properties.Resources.battery;
+ this.batteryLevImg.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
+ this.batteryLevImg.Location = new System.Drawing.Point(184, 8);
+ this.batteryLevImg.Margin = new System.Windows.Forms.Padding(2);
+ this.batteryLevImg.Name = "batteryLevImg";
+ this.batteryLevImg.Size = new System.Drawing.Size(55, 29);
+ this.batteryLevImg.TabIndex = 85;
+ this.batteryLevImg.TabStop = false;
+ this.batteryLevImg.Visible = false;
//
// deviceDrop
//
this.deviceDrop.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
- this.deviceDrop.Cursor = System.Windows.Forms.Cursors.Default;
+ this.deviceDrop.Cursor = System.Windows.Forms.Cursors.Hand;
this.deviceDrop.Dock = System.Windows.Forms.DockStyle.Top;
this.deviceDrop.FlatAppearance.BorderSize = 0;
+ this.deviceDrop.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(47)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
this.deviceDrop.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.deviceDrop.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
this.deviceDrop.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
- this.deviceDrop.Location = new System.Drawing.Point(0, 52);
+ this.deviceDrop.Location = new System.Drawing.Point(0, 262);
this.deviceDrop.Margin = new System.Windows.Forms.Padding(2);
this.deviceDrop.Name = "deviceDrop";
this.deviceDrop.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.deviceDrop.Size = new System.Drawing.Size(221, 28);
+ this.deviceDrop.Size = new System.Drawing.Size(233, 28);
this.deviceDrop.TabIndex = 1;
this.deviceDrop.Text = "DEVICE";
this.deviceDrop.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -1039,29 +929,70 @@ namespace AndroidSideloader
this.deviceDropContainer.Controls.Add(this.listApkButton);
this.deviceDropContainer.Controls.Add(this.UpdateGamesButton);
this.deviceDropContainer.Controls.Add(this.devicesbutton);
+ this.deviceDropContainer.Controls.Add(this.mountDeviceButton);
+ this.deviceDropContainer.Controls.Add(this.selectDeviceButton);
this.deviceDropContainer.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.deviceDropContainer.Dock = System.Windows.Forms.DockStyle.Top;
- this.deviceDropContainer.Location = new System.Drawing.Point(0, 80);
+ this.deviceDropContainer.Location = new System.Drawing.Point(0, 290);
this.deviceDropContainer.Margin = new System.Windows.Forms.Padding(2);
this.deviceDropContainer.Name = "deviceDropContainer";
- this.deviceDropContainer.Size = new System.Drawing.Size(221, 85);
+ this.deviceDropContainer.Size = new System.Drawing.Size(233, 141);
this.deviceDropContainer.TabIndex = 73;
this.deviceDropContainer.Visible = false;
//
+ // mountDeviceButton
+ //
+ this.mountDeviceButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
+ this.mountDeviceButton.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.mountDeviceButton.Dock = System.Windows.Forms.DockStyle.Top;
+ this.mountDeviceButton.FlatAppearance.BorderSize = 0;
+ this.mountDeviceButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.mountDeviceButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
+ this.mountDeviceButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.mountDeviceButton.Location = new System.Drawing.Point(0, 28);
+ this.mountDeviceButton.Name = "mountDeviceButton";
+ this.mountDeviceButton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
+ this.mountDeviceButton.Size = new System.Drawing.Size(233, 28);
+ this.mountDeviceButton.TabIndex = 9;
+ this.mountDeviceButton.Text = "MOUNT DEVICE";
+ this.mountDeviceButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.mountDeviceButton.UseVisualStyleBackColor = false;
+ this.mountDeviceButton.Click += new System.EventHandler(this.MountButton_Click);
+ //
+ // selectDeviceButton
+ //
+ this.selectDeviceButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
+ this.selectDeviceButton.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.selectDeviceButton.Dock = System.Windows.Forms.DockStyle.Top;
+ this.selectDeviceButton.FlatAppearance.BorderSize = 0;
+ this.selectDeviceButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.selectDeviceButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
+ this.selectDeviceButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.selectDeviceButton.Location = new System.Drawing.Point(0, 0);
+ this.selectDeviceButton.Name = "selectDeviceButton";
+ this.selectDeviceButton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
+ this.selectDeviceButton.Size = new System.Drawing.Size(233, 28);
+ this.selectDeviceButton.TabIndex = 8;
+ this.selectDeviceButton.Text = "SELECT DEVICE";
+ this.selectDeviceButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.selectDeviceButton.UseVisualStyleBackColor = false;
+ this.selectDeviceButton.Click += new System.EventHandler(this.selectDeviceButton_Click);
+ //
// sideloadDrop
//
this.sideloadDrop.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
- this.sideloadDrop.Cursor = System.Windows.Forms.Cursors.Default;
+ this.sideloadDrop.Cursor = System.Windows.Forms.Cursors.Hand;
this.sideloadDrop.Dock = System.Windows.Forms.DockStyle.Top;
this.sideloadDrop.FlatAppearance.BorderSize = 0;
+ this.sideloadDrop.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(47)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
this.sideloadDrop.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.sideloadDrop.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
this.sideloadDrop.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
- this.sideloadDrop.Location = new System.Drawing.Point(0, 165);
+ this.sideloadDrop.Location = new System.Drawing.Point(0, 431);
this.sideloadDrop.Margin = new System.Windows.Forms.Padding(2);
this.sideloadDrop.Name = "sideloadDrop";
this.sideloadDrop.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.sideloadDrop.Size = new System.Drawing.Size(221, 28);
+ this.sideloadDrop.Size = new System.Drawing.Size(233, 28);
this.sideloadDrop.TabIndex = 1;
this.sideloadDrop.Text = "SIDELOAD";
this.sideloadDrop.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -1076,29 +1007,50 @@ namespace AndroidSideloader
this.sideloadContainer.Controls.Add(this.startsideloadbutton);
this.sideloadContainer.Controls.Add(this.copyBulkObbButton);
this.sideloadContainer.Controls.Add(this.obbcopybutton);
+ this.sideloadContainer.Controls.Add(this.btnNoDevice);
this.sideloadContainer.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.sideloadContainer.Dock = System.Windows.Forms.DockStyle.Top;
- this.sideloadContainer.Location = new System.Drawing.Point(0, 193);
+ this.sideloadContainer.Location = new System.Drawing.Point(0, 459);
this.sideloadContainer.Margin = new System.Windows.Forms.Padding(2);
this.sideloadContainer.Name = "sideloadContainer";
- this.sideloadContainer.Size = new System.Drawing.Size(221, 84);
+ this.sideloadContainer.Size = new System.Drawing.Size(233, 112);
this.sideloadContainer.TabIndex = 74;
this.sideloadContainer.Visible = false;
//
+ // btnNoDevice
+ //
+ this.btnNoDevice.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
+ this.btnNoDevice.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.btnNoDevice.Dock = System.Windows.Forms.DockStyle.Top;
+ this.btnNoDevice.FlatAppearance.BorderSize = 0;
+ this.btnNoDevice.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btnNoDevice.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
+ this.btnNoDevice.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.btnNoDevice.Location = new System.Drawing.Point(0, 0);
+ this.btnNoDevice.Name = "btnNoDevice";
+ this.btnNoDevice.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
+ this.btnNoDevice.Size = new System.Drawing.Size(233, 28);
+ this.btnNoDevice.TabIndex = 6;
+ this.btnNoDevice.Text = "DISABLE SIDELOADING";
+ this.btnNoDevice.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.btnNoDevice.UseVisualStyleBackColor = false;
+ this.btnNoDevice.Click += new System.EventHandler(this.btnNoDevice_Click);
+ //
// installedAppsMenu
//
this.installedAppsMenu.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
- this.installedAppsMenu.Cursor = System.Windows.Forms.Cursors.Default;
+ this.installedAppsMenu.Cursor = System.Windows.Forms.Cursors.Hand;
this.installedAppsMenu.Dock = System.Windows.Forms.DockStyle.Top;
this.installedAppsMenu.FlatAppearance.BorderSize = 0;
+ this.installedAppsMenu.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(47)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
this.installedAppsMenu.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.installedAppsMenu.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
this.installedAppsMenu.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
- this.installedAppsMenu.Location = new System.Drawing.Point(0, 277);
+ this.installedAppsMenu.Location = new System.Drawing.Point(0, 571);
this.installedAppsMenu.Margin = new System.Windows.Forms.Padding(2);
this.installedAppsMenu.Name = "installedAppsMenu";
this.installedAppsMenu.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.installedAppsMenu.Size = new System.Drawing.Size(221, 28);
+ this.installedAppsMenu.Size = new System.Drawing.Size(233, 28);
this.installedAppsMenu.TabIndex = 1;
this.installedAppsMenu.Text = "INSTALLED APPS";
this.installedAppsMenu.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -1115,27 +1067,28 @@ namespace AndroidSideloader
this.installedAppsMenuContainer.Controls.Add(this.getApkButton);
this.installedAppsMenuContainer.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.installedAppsMenuContainer.Dock = System.Windows.Forms.DockStyle.Top;
- this.installedAppsMenuContainer.Location = new System.Drawing.Point(0, 305);
+ this.installedAppsMenuContainer.Location = new System.Drawing.Point(0, 599);
this.installedAppsMenuContainer.Margin = new System.Windows.Forms.Padding(2);
this.installedAppsMenuContainer.Name = "installedAppsMenuContainer";
- this.installedAppsMenuContainer.Size = new System.Drawing.Size(221, 84);
+ this.installedAppsMenuContainer.Size = new System.Drawing.Size(233, 84);
this.installedAppsMenuContainer.TabIndex = 73;
this.installedAppsMenuContainer.Visible = false;
//
// backupDrop
//
this.backupDrop.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
- this.backupDrop.Cursor = System.Windows.Forms.Cursors.Default;
+ this.backupDrop.Cursor = System.Windows.Forms.Cursors.Hand;
this.backupDrop.Dock = System.Windows.Forms.DockStyle.Top;
this.backupDrop.FlatAppearance.BorderSize = 0;
+ this.backupDrop.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(47)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
this.backupDrop.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.backupDrop.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
this.backupDrop.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
- this.backupDrop.Location = new System.Drawing.Point(0, 389);
+ this.backupDrop.Location = new System.Drawing.Point(0, 683);
this.backupDrop.Margin = new System.Windows.Forms.Padding(2);
this.backupDrop.Name = "backupDrop";
this.backupDrop.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.backupDrop.Size = new System.Drawing.Size(221, 28);
+ this.backupDrop.Size = new System.Drawing.Size(233, 28);
this.backupDrop.TabIndex = 2;
this.backupDrop.Text = "BACKUP / RESTORE";
this.backupDrop.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -1152,27 +1105,28 @@ namespace AndroidSideloader
this.backupContainer.Controls.Add(this.backupbutton);
this.backupContainer.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.backupContainer.Dock = System.Windows.Forms.DockStyle.Top;
- this.backupContainer.Location = new System.Drawing.Point(0, 417);
+ this.backupContainer.Location = new System.Drawing.Point(0, 711);
this.backupContainer.Margin = new System.Windows.Forms.Padding(2);
this.backupContainer.Name = "backupContainer";
- this.backupContainer.Size = new System.Drawing.Size(221, 84);
+ this.backupContainer.Size = new System.Drawing.Size(233, 84);
this.backupContainer.TabIndex = 76;
this.backupContainer.Visible = false;
//
// otherDrop
//
this.otherDrop.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
- this.otherDrop.Cursor = System.Windows.Forms.Cursors.Default;
+ this.otherDrop.Cursor = System.Windows.Forms.Cursors.Hand;
this.otherDrop.Dock = System.Windows.Forms.DockStyle.Top;
this.otherDrop.FlatAppearance.BorderSize = 0;
+ this.otherDrop.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(47)))), ((int)(((byte)(51)))), ((int)(((byte)(65)))));
this.otherDrop.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.otherDrop.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);
this.otherDrop.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
- this.otherDrop.Location = new System.Drawing.Point(0, 501);
+ this.otherDrop.Location = new System.Drawing.Point(0, 795);
this.otherDrop.Margin = new System.Windows.Forms.Padding(2);
this.otherDrop.Name = "otherDrop";
this.otherDrop.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
- this.otherDrop.Size = new System.Drawing.Size(221, 28);
+ this.otherDrop.Size = new System.Drawing.Size(233, 28);
this.otherDrop.TabIndex = 3;
this.otherDrop.Text = "OTHER";
this.otherDrop.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
@@ -1184,85 +1138,68 @@ namespace AndroidSideloader
this.otherContainer.AutoSize = true;
this.otherContainer.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.otherContainer.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
+ this.otherContainer.Controls.Add(this.settingsButton);
+ this.otherContainer.Controls.Add(this.QuestOptionsButton);
+ this.otherContainer.Controls.Add(this.selectMirrorButton);
this.otherContainer.Controls.Add(this.btnRunAdbCmd);
this.otherContainer.Controls.Add(this.btnOpenDownloads);
- this.otherContainer.Controls.Add(this.QuestOptionsButton);
- this.otherContainer.Controls.Add(this.ADBWirelessDisable);
- this.otherContainer.Controls.Add(this.ADBWirelessEnable);
+ this.otherContainer.Controls.Add(this.ADBWirelessToggle);
this.otherContainer.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.otherContainer.Dock = System.Windows.Forms.DockStyle.Top;
- this.otherContainer.Location = new System.Drawing.Point(0, 529);
+ this.otherContainer.Location = new System.Drawing.Point(0, 823);
this.otherContainer.Margin = new System.Windows.Forms.Padding(2);
this.otherContainer.Name = "otherContainer";
- this.otherContainer.Size = new System.Drawing.Size(221, 140);
+ this.otherContainer.Size = new System.Drawing.Size(233, 168);
this.otherContainer.TabIndex = 80;
this.otherContainer.Visible = false;
//
- // questStorageProgressBar
+ // selectMirrorButton
//
- this.questStorageProgressBar.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
- this.questStorageProgressBar.Location = new System.Drawing.Point(2, 2);
- this.questStorageProgressBar.Margin = new System.Windows.Forms.Padding(0);
- this.questStorageProgressBar.Name = "questStorageProgressBar";
- this.questStorageProgressBar.Size = new System.Drawing.Size(217, 44);
- this.questStorageProgressBar.TabIndex = 100;
- this.questStorageProgressBar.Paint += new System.Windows.Forms.PaintEventHandler(this.questStorageProgressBar_Paint);
+ this.selectMirrorButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(45)))), ((int)(((byte)(58)))));
+ this.selectMirrorButton.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.selectMirrorButton.Dock = System.Windows.Forms.DockStyle.Top;
+ this.selectMirrorButton.FlatAppearance.BorderSize = 0;
+ this.selectMirrorButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.selectMirrorButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
+ this.selectMirrorButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.selectMirrorButton.Location = new System.Drawing.Point(0, 84);
+ this.selectMirrorButton.Name = "selectMirrorButton";
+ this.selectMirrorButton.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
+ this.selectMirrorButton.Size = new System.Drawing.Size(233, 28);
+ this.selectMirrorButton.TabIndex = 9;
+ this.selectMirrorButton.Text = "SELECT MIRROR";
+ this.selectMirrorButton.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.selectMirrorButton.UseVisualStyleBackColor = false;
+ this.selectMirrorButton.Click += new System.EventHandler(this.selectMirrorButton_Click);
//
// questInfoPanel
//
this.questInfoPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
this.questInfoPanel.Controls.Add(this.batteryLabel);
- this.questInfoPanel.Controls.Add(this.batteryLevImg);
this.questInfoPanel.Controls.Add(this.diskLabel);
this.questInfoPanel.Controls.Add(this.questInfoLabel);
this.questInfoPanel.Controls.Add(this.questStorageProgressBar);
this.questInfoPanel.Dock = System.Windows.Forms.DockStyle.Top;
- this.questInfoPanel.Location = new System.Drawing.Point(2, 2);
+ this.questInfoPanel.Location = new System.Drawing.Point(0, 0);
this.questInfoPanel.Margin = new System.Windows.Forms.Padding(0);
this.questInfoPanel.Name = "questInfoPanel";
- this.questInfoPanel.Size = new System.Drawing.Size(217, 48);
+ this.questInfoPanel.Size = new System.Drawing.Size(233, 48);
this.questInfoPanel.TabIndex = 0;
//
- // diskLabel
- //
- this.diskLabel.BackColor = System.Drawing.Color.Transparent;
- this.diskLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.diskLabel.ForeColor = System.Drawing.Color.LightGray;
- this.diskLabel.Location = new System.Drawing.Point(8, 24);
- this.diskLabel.Name = "diskLabel";
- this.diskLabel.Size = new System.Drawing.Size(150, 12);
- this.diskLabel.TabIndex = 7;
- this.diskLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.diskLabel.Parent = this.questStorageProgressBar;
- //
- // batteryLevImg
- //
- this.batteryLevImg.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.batteryLevImg.BackColor = System.Drawing.Color.Transparent;
- this.batteryLevImg.BackgroundImage = global::AndroidSideloader.Properties.Resources.battery;
- this.batteryLevImg.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
- this.batteryLevImg.Location = new System.Drawing.Point(158, 8);
- this.batteryLevImg.Margin = new System.Windows.Forms.Padding(2);
- this.batteryLevImg.Name = "batteryLevImg";
- this.batteryLevImg.Size = new System.Drawing.Size(55, 29);
- this.batteryLevImg.TabIndex = 85;
- this.batteryLevImg.TabStop = false;
- this.batteryLevImg.Parent = this.questStorageProgressBar;
- //
// batteryLabel
//
- this.batteryLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.batteryLabel.AutoSize = true;
this.batteryLabel.BackColor = System.Drawing.Color.Transparent;
- this.batteryLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.batteryLabel.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.batteryLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.batteryLabel.ForeColor = System.Drawing.SystemColors.ControlLightLight;
- this.batteryLabel.Location = new System.Drawing.Point(3, 6);
- this.batteryLabel.Margin = new System.Windows.Forms.Padding(2);
+ this.batteryLabel.Location = new System.Drawing.Point(0, 0);
+ this.batteryLabel.Margin = new System.Windows.Forms.Padding(0);
this.batteryLabel.Name = "batteryLabel";
- this.batteryLabel.Size = new System.Drawing.Size(0, 13);
+ this.batteryLabel.Padding = new System.Windows.Forms.Padding(0, 0, 8, 4);
+ this.batteryLabel.Size = new System.Drawing.Size(233, 48);
this.batteryLabel.TabIndex = 84;
- this.batteryLabel.Parent = this.batteryLevImg;
- this.batteryLabel.BringToFront();
+ this.batteryLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ this.batteryLabel.Visible = false;
//
// questInfoLabel
//
@@ -1275,40 +1212,26 @@ namespace AndroidSideloader
this.questInfoLabel.Size = new System.Drawing.Size(150, 20);
this.questInfoLabel.TabIndex = 1;
this.questInfoLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.questInfoLabel.Parent = this.questStorageProgressBar;
+ this.questInfoLabel.Visible = false;
//
// ULLabel
//
this.ULLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.ULLabel.AutoSize = true;
this.ULLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.ULLabel.ForeColor = System.Drawing.Color.Snow;
- this.ULLabel.Location = new System.Drawing.Point(635, 11);
+ this.ULLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.ULLabel.Location = new System.Drawing.Point(1109, 701);
this.ULLabel.Name = "ULLabel";
- this.ULLabel.Size = new System.Drawing.Size(120, 13);
+ this.ULLabel.Size = new System.Drawing.Size(130, 13);
this.ULLabel.TabIndex = 87;
- this.ULLabel.Text = "Uploading to VRP...";
+ this.ULLabel.Text = "Uploading to server...";
this.ULLabel.Visible = false;
//
- // verLabel
- //
- this.verLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
- this.verLabel.BackColor = System.Drawing.Color.Transparent;
- this.verLabel.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Bold);
- this.verLabel.ForeColor = System.Drawing.SystemColors.Control;
- this.verLabel.Location = new System.Drawing.Point(1313, 721);
- this.verLabel.Name = "verLabel";
- this.verLabel.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
- this.verLabel.Size = new System.Drawing.Size(68, 20);
- this.verLabel.TabIndex = 88;
- //
// leftNavContainer
//
this.leftNavContainer.AutoScroll = true;
this.leftNavContainer.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
- this.leftNavContainer.Controls.Add(this.bottomContainer);
this.leftNavContainer.Controls.Add(this.aboutBtn);
- this.leftNavContainer.Controls.Add(this.settingsButton);
this.leftNavContainer.Controls.Add(this.otherContainer);
this.leftNavContainer.Controls.Add(this.otherDrop);
this.leftNavContainer.Controls.Add(this.backupContainer);
@@ -1319,88 +1242,116 @@ namespace AndroidSideloader
this.leftNavContainer.Controls.Add(this.sideloadDrop);
this.leftNavContainer.Controls.Add(this.deviceDropContainer);
this.leftNavContainer.Controls.Add(this.deviceDrop);
+ this.leftNavContainer.Controls.Add(this.sidebarMediaPanel);
this.leftNavContainer.Controls.Add(this.questInfoPanel);
this.leftNavContainer.Dock = System.Windows.Forms.DockStyle.Left;
this.leftNavContainer.Location = new System.Drawing.Point(0, 0);
this.leftNavContainer.Margin = new System.Windows.Forms.Padding(2);
this.leftNavContainer.Name = "leftNavContainer";
- this.leftNavContainer.Size = new System.Drawing.Size(221, 747);
+ this.leftNavContainer.Size = new System.Drawing.Size(250, 721);
this.leftNavContainer.TabIndex = 73;
//
+ // sidebarMediaPanel
+ //
+ this.sidebarMediaPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
+ this.sidebarMediaPanel.Controls.Add(this.gamesPictureBox);
+ this.sidebarMediaPanel.Controls.Add(this.downloadInstallGameButton);
+ this.sidebarMediaPanel.Controls.Add(this.selectedGameLabel);
+ this.sidebarMediaPanel.Dock = System.Windows.Forms.DockStyle.Top;
+ this.sidebarMediaPanel.Location = new System.Drawing.Point(0, 48);
+ this.sidebarMediaPanel.Margin = new System.Windows.Forms.Padding(0);
+ this.sidebarMediaPanel.Name = "sidebarMediaPanel";
+ this.sidebarMediaPanel.Size = new System.Drawing.Size(233, 214);
+ this.sidebarMediaPanel.TabIndex = 101;
+ //
+ // selectedGameLabel
+ //
+ this.selectedGameLabel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
+ this.selectedGameLabel.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Bold);
+ this.selectedGameLabel.ForeColor = System.Drawing.Color.White;
+ this.selectedGameLabel.Location = new System.Drawing.Point(8, 6);
+ this.selectedGameLabel.Margin = new System.Windows.Forms.Padding(0);
+ this.selectedGameLabel.Name = "selectedGameLabel";
+ this.selectedGameLabel.Size = new System.Drawing.Size(217, 20);
+ this.selectedGameLabel.TabIndex = 99;
+ this.selectedGameLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
// tableLayoutPanel1
//
- this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
this.tableLayoutPanel1.BackColor = System.Drawing.Color.Transparent;
- this.tableLayoutPanel1.ColumnCount = 1;
+ this.tableLayoutPanel1.ColumnCount = 6;
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
- this.tableLayoutPanel1.Controls.Add(this.lblUpToDate, 0, 0);
- this.tableLayoutPanel1.Controls.Add(this.lblUpdateAvailable, 0, 1);
- this.tableLayoutPanel1.Controls.Add(this.lblNeedsDonate, 0, 2);
- this.tableLayoutPanel1.Location = new System.Drawing.Point(1143, 2);
+ this.tableLayoutPanel1.Controls.Add(this.searchPanel, 0, 0);
+ this.tableLayoutPanel1.Controls.Add(this.btnViewToggle, 1, 0);
+ this.tableLayoutPanel1.Controls.Add(this.favoriteSwitcher, 2, 0);
+ this.tableLayoutPanel1.Controls.Add(this.btnInstalled, 3, 0);
+ this.tableLayoutPanel1.Controls.Add(this.btnUpdateAvailable, 4, 0);
+ this.tableLayoutPanel1.Controls.Add(this.btnNewerThanList, 5, 0);
+ this.tableLayoutPanel1.Location = new System.Drawing.Point(258, 6);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
- this.tableLayoutPanel1.RightToLeft = System.Windows.Forms.RightToLeft.No;
- this.tableLayoutPanel1.RowCount = 3;
+ this.tableLayoutPanel1.RowCount = 1;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
- this.tableLayoutPanel1.Size = new System.Drawing.Size(226, 64);
+ this.tableLayoutPanel1.Size = new System.Drawing.Size(984, 34);
this.tableLayoutPanel1.TabIndex = 97;
//
// webView21
//
this.webView21.AllowExternalDrop = true;
this.webView21.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.webView21.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(26)))), ((int)(((byte)(30)))));
this.webView21.CreationProperties = null;
- this.webView21.DefaultBackgroundColor = System.Drawing.Color.White;
- this.webView21.Location = new System.Drawing.Point(604, 493);
+ this.webView21.DefaultBackgroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(26)))), ((int)(((byte)(30)))));
+ this.webView21.Location = new System.Drawing.Point(259, 496);
this.webView21.Name = "webView21";
- this.webView21.Size = new System.Drawing.Size(374, 214);
+ this.webView21.Size = new System.Drawing.Size(384, 216);
this.webView21.TabIndex = 98;
this.webView21.ZoomFactor = 1D;
//
// favoriteGame
//
+ this.favoriteGame.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(42)))), ((int)(((byte)(48)))));
this.favoriteGame.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.favoriteButton});
this.favoriteGame.Name = "favoriteGame";
- this.favoriteGame.Size = new System.Drawing.Size(117, 26);
+ this.favoriteGame.ShowImageMargin = false;
+ this.favoriteGame.Size = new System.Drawing.Size(149, 26);
//
// favoriteButton
//
- this.favoriteButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
+ this.favoriteButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(42)))), ((int)(((byte)(48)))));
this.favoriteButton.ForeColor = System.Drawing.Color.White;
this.favoriteButton.Name = "favoriteButton";
- this.favoriteButton.Size = new System.Drawing.Size(116, 22);
- this.favoriteButton.Text = "Favorite";
+ this.favoriteButton.Size = new System.Drawing.Size(148, 22);
+ this.favoriteButton.Text = "★ Add to Favorites";
this.favoriteButton.Click += new System.EventHandler(this.favoriteButton_Click);
//
- // favoriteSwitcher
+ // gamesGalleryView
//
- this.favoriteSwitcher.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.favoriteSwitcher.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.favoriteSwitcher.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.favoriteSwitcher.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
- this.favoriteSwitcher.Cursor = System.Windows.Forms.Cursors.Default;
- this.favoriteSwitcher.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.favoriteSwitcher.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.favoriteSwitcher.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.favoriteSwitcher.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.favoriteSwitcher.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.favoriteSwitcher.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.favoriteSwitcher.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.favoriteSwitcher.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.favoriteSwitcher.Location = new System.Drawing.Point(786, 34);
- this.favoriteSwitcher.Name = "favoriteSwitcher";
- this.favoriteSwitcher.Radius = 5;
- this.favoriteSwitcher.Size = new System.Drawing.Size(168, 28);
- this.favoriteSwitcher.Stroke = true;
- this.favoriteSwitcher.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
- this.favoriteSwitcher.TabIndex = 101;
- this.favoriteSwitcher.Text = "Games List";
- this.favoriteSwitcher.Transparency = false;
- this.favoriteSwitcher.Click += new System.EventHandler(this.favoriteSwitcher_Click);
+ this.gamesGalleryView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.gamesGalleryView.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(15)))), ((int)(((byte)(15)))), ((int)(((byte)(15)))));
+ this.gamesGalleryView.Location = new System.Drawing.Point(258, 44);
+ this.gamesGalleryView.Name = "gamesGalleryView";
+ this.gamesGalleryView.Size = new System.Drawing.Size(984, 409);
+ this.gamesGalleryView.TabIndex = 102;
+ //
+ // webViewPlaceholderPanel
+ //
+ this.webViewPlaceholderPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.webViewPlaceholderPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(26)))), ((int)(((byte)(30)))));
+ this.webViewPlaceholderPanel.Location = new System.Drawing.Point(259, 496);
+ this.webViewPlaceholderPanel.Name = "webViewPlaceholderPanel";
+ this.webViewPlaceholderPanel.Size = new System.Drawing.Size(384, 217);
+ this.webViewPlaceholderPanel.TabIndex = 103;
+ this.webViewPlaceholderPanel.Paint += new System.Windows.Forms.PaintEventHandler(this.webViewPlaceholderPanel_Paint);
//
// adbCmd_btnSend
//
@@ -1413,11 +1364,14 @@ namespace AndroidSideloader
this.adbCmd_btnSend.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.adbCmd_btnSend.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.adbCmd_btnSend.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.adbCmd_btnSend.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.adbCmd_btnSend.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.adbCmd_btnSend.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
this.adbCmd_btnSend.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
this.adbCmd_btnSend.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.adbCmd_btnSend.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
this.adbCmd_btnSend.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.adbCmd_btnSend.Location = new System.Drawing.Point(478, 262);
+ this.adbCmd_btnSend.Location = new System.Drawing.Point(478, 204);
this.adbCmd_btnSend.Name = "adbCmd_btnSend";
this.adbCmd_btnSend.Radius = 5;
this.adbCmd_btnSend.Size = new System.Drawing.Size(126, 28);
@@ -1440,11 +1394,14 @@ namespace AndroidSideloader
this.adbCmd_btnToggleUpdates.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.adbCmd_btnToggleUpdates.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.adbCmd_btnToggleUpdates.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.adbCmd_btnToggleUpdates.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.adbCmd_btnToggleUpdates.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.adbCmd_btnToggleUpdates.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
this.adbCmd_btnToggleUpdates.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
this.adbCmd_btnToggleUpdates.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
this.adbCmd_btnToggleUpdates.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
this.adbCmd_btnToggleUpdates.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.adbCmd_btnToggleUpdates.Location = new System.Drawing.Point(627, 262);
+ this.adbCmd_btnToggleUpdates.Location = new System.Drawing.Point(627, 204);
this.adbCmd_btnToggleUpdates.Name = "adbCmd_btnToggleUpdates";
this.adbCmd_btnToggleUpdates.Radius = 5;
this.adbCmd_btnToggleUpdates.Size = new System.Drawing.Size(143, 28);
@@ -1456,125 +1413,242 @@ namespace AndroidSideloader
this.adbCmd_btnToggleUpdates.Visible = false;
this.adbCmd_btnToggleUpdates.Click += new System.EventHandler(this.adbCmd_btnToggleUpdates_Click);
//
+ // searchPanel
+ //
+ this.searchPanel.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(56)))), ((int)(((byte)(70)))));
+ this.searchPanel.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(56)))), ((int)(((byte)(70)))));
+ this.searchPanel.BackColor = System.Drawing.Color.Transparent;
+ this.searchPanel.Controls.Add(this.searchIconPictureBox);
+ this.searchPanel.Controls.Add(this.searchTextBox);
+ this.searchPanel.Cursor = System.Windows.Forms.Cursors.IBeam;
+ this.searchPanel.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.searchPanel.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(56)))), ((int)(((byte)(70)))));
+ this.searchPanel.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(56)))), ((int)(((byte)(70)))));
+ this.searchPanel.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.searchPanel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.searchPanel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.searchPanel.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(56)))), ((int)(((byte)(70)))));
+ this.searchPanel.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(56)))), ((int)(((byte)(70)))));
+ this.searchPanel.Location = new System.Drawing.Point(0, 3);
+ this.searchPanel.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
+ this.searchPanel.Name = "searchPanel";
+ this.searchPanel.Radius = 5;
+ this.searchPanel.Size = new System.Drawing.Size(340, 28);
+ this.searchPanel.Stroke = false;
+ this.searchPanel.StrokeColor = System.Drawing.Color.Gray;
+ this.searchPanel.TabIndex = 104;
+ this.searchPanel.Transparency = false;
+ this.searchPanel.Click += new System.EventHandler(this.searchTextBox_Click);
+ //
+ // searchIconPictureBox
+ //
+ this.searchIconPictureBox.BackColor = System.Drawing.Color.Transparent;
+ this.searchIconPictureBox.Image = global::AndroidSideloader.Properties.Resources.SearchGlass;
+ this.searchIconPictureBox.Location = new System.Drawing.Point(9, 6);
+ this.searchIconPictureBox.Name = "searchIconPictureBox";
+ this.searchIconPictureBox.Size = new System.Drawing.Size(16, 16);
+ this.searchIconPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
+ this.searchIconPictureBox.TabIndex = 0;
+ this.searchIconPictureBox.TabStop = false;
+ this.searchIconPictureBox.Click += new System.EventHandler(this.searchTextBox_Click);
+ //
+ // searchTextBox
+ //
+ this.searchTextBox.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.searchTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(56)))), ((int)(((byte)(70)))));
+ this.searchTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.searchTextBox.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Italic);
+ this.searchTextBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
+ this.searchTextBox.Location = new System.Drawing.Point(32, 7);
+ this.searchTextBox.Name = "searchTextBox";
+ this.searchTextBox.Size = new System.Drawing.Size(300, 16);
+ this.searchTextBox.TabIndex = 5;
+ this.searchTextBox.Text = "Search...";
+ this.searchTextBox.Click += new System.EventHandler(this.searchTextBox_Click);
+ this.searchTextBox.TextChanged += new System.EventHandler(this.searchTextBox_TextChanged);
+ this.searchTextBox.Enter += new System.EventHandler(this.searchTextBox_Enter);
+ this.searchTextBox.Leave += new System.EventHandler(this.searchTextBox_Leave);
+ //
+ // btnViewToggle
+ //
+ this.btnViewToggle.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(45)))), ((int)(((byte)(55)))));
+ this.btnViewToggle.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(45)))), ((int)(((byte)(55)))));
+ this.btnViewToggle.BackColor = System.Drawing.Color.Transparent;
+ this.btnViewToggle.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.btnViewToggle.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.btnViewToggle.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnViewToggle.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.btnViewToggle.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnViewToggle.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.btnViewToggle.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.btnViewToggle.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnViewToggle.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnViewToggle.Location = new System.Drawing.Point(346, 3);
+ this.btnViewToggle.Name = "btnViewToggle";
+ this.btnViewToggle.Radius = 5;
+ this.btnViewToggle.Size = new System.Drawing.Size(75, 28);
+ this.btnViewToggle.Stroke = true;
+ this.btnViewToggle.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.btnViewToggle.TabIndex = 103;
+ this.btnViewToggle.Text = "LIST";
+ this.btnViewToggle.Transparency = false;
+ this.btnViewToggle.Click += new System.EventHandler(this.btnViewToggle_Click);
+ //
+ // favoriteSwitcher
+ //
+ this.favoriteSwitcher.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(45)))), ((int)(((byte)(55)))));
+ this.favoriteSwitcher.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(45)))), ((int)(((byte)(55)))));
+ this.favoriteSwitcher.BackColor = System.Drawing.Color.Transparent;
+ this.favoriteSwitcher.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.favoriteSwitcher.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.favoriteSwitcher.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.favoriteSwitcher.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.favoriteSwitcher.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.favoriteSwitcher.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.favoriteSwitcher.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.favoriteSwitcher.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.favoriteSwitcher.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.favoriteSwitcher.Location = new System.Drawing.Point(427, 3);
+ this.favoriteSwitcher.Name = "favoriteSwitcher";
+ this.favoriteSwitcher.Radius = 5;
+ this.favoriteSwitcher.Size = new System.Drawing.Size(88, 28);
+ this.favoriteSwitcher.Stroke = true;
+ this.favoriteSwitcher.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.favoriteSwitcher.TabIndex = 101;
+ this.favoriteSwitcher.Text = "FAVORITES";
+ this.favoriteSwitcher.Transparency = false;
+ this.favoriteSwitcher.Click += new System.EventHandler(this.favoriteSwitcher_Click);
+ //
+ // btnInstalled
+ //
+ this.btnInstalled.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(45)))), ((int)(((byte)(55)))));
+ this.btnInstalled.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(45)))), ((int)(((byte)(55)))));
+ this.btnInstalled.BackColor = System.Drawing.Color.Transparent;
+ this.btnInstalled.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.btnInstalled.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.btnInstalled.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnInstalled.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.btnInstalled.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnInstalled.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.btnInstalled.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.btnInstalled.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnInstalled.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnInstalled.Location = new System.Drawing.Point(521, 3);
+ this.btnInstalled.Name = "btnInstalled";
+ this.btnInstalled.Radius = 5;
+ this.btnInstalled.Size = new System.Drawing.Size(150, 28);
+ this.btnInstalled.Stroke = true;
+ this.btnInstalled.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.btnInstalled.TabIndex = 90;
+ this.btnInstalled.Text = "INSTALLED";
+ this.btnInstalled.Transparency = false;
+ this.btnInstalled.Click += new System.EventHandler(this.btnInstalled_Click);
+ //
+ // btnUpdateAvailable
+ //
+ this.btnUpdateAvailable.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(45)))), ((int)(((byte)(55)))));
+ this.btnUpdateAvailable.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(45)))), ((int)(((byte)(55)))));
+ this.btnUpdateAvailable.BackColor = System.Drawing.Color.Transparent;
+ this.btnUpdateAvailable.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.btnUpdateAvailable.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.btnUpdateAvailable.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnUpdateAvailable.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.btnUpdateAvailable.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnUpdateAvailable.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.btnUpdateAvailable.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.btnUpdateAvailable.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnUpdateAvailable.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnUpdateAvailable.Location = new System.Drawing.Point(677, 3);
+ this.btnUpdateAvailable.Name = "btnUpdateAvailable";
+ this.btnUpdateAvailable.Radius = 5;
+ this.btnUpdateAvailable.Size = new System.Drawing.Size(150, 28);
+ this.btnUpdateAvailable.Stroke = true;
+ this.btnUpdateAvailable.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.btnUpdateAvailable.TabIndex = 91;
+ this.btnUpdateAvailable.Text = "UPDATE AVAILABLE";
+ this.btnUpdateAvailable.Transparency = false;
+ this.btnUpdateAvailable.Click += new System.EventHandler(this.btnUpdateAvailable_Click);
+ //
+ // btnNewerThanList
+ //
+ this.btnNewerThanList.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(45)))), ((int)(((byte)(55)))));
+ this.btnNewerThanList.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(45)))), ((int)(((byte)(55)))));
+ this.btnNewerThanList.BackColor = System.Drawing.Color.Transparent;
+ this.btnNewerThanList.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.btnNewerThanList.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.btnNewerThanList.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnNewerThanList.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.btnNewerThanList.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnNewerThanList.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.btnNewerThanList.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(107)))), ((int)(((byte)(128)))), ((int)(((byte)(159)))));
+ this.btnNewerThanList.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnNewerThanList.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnNewerThanList.Location = new System.Drawing.Point(833, 3);
+ this.btnNewerThanList.Name = "btnNewerThanList";
+ this.btnNewerThanList.Radius = 5;
+ this.btnNewerThanList.Size = new System.Drawing.Size(148, 28);
+ this.btnNewerThanList.Stroke = true;
+ this.btnNewerThanList.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.btnNewerThanList.TabIndex = 92;
+ this.btnNewerThanList.Text = "NEWER THAN LIST";
+ this.btnNewerThanList.Transparency = false;
+ this.btnNewerThanList.Click += new System.EventHandler(this.btnNewerThanList_Click);
+ //
// downloadInstallGameButton
//
- this.downloadInstallGameButton.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.downloadInstallGameButton.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.downloadInstallGameButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.downloadInstallGameButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.downloadInstallGameButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.downloadInstallGameButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.downloadInstallGameButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.downloadInstallGameButton.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(110)))), ((int)(((byte)(215)))), ((int)(((byte)(190)))));
+ this.downloadInstallGameButton.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(110)))), ((int)(((byte)(215)))), ((int)(((byte)(190)))));
+ this.downloadInstallGameButton.BackColor = System.Drawing.Color.Transparent;
+ this.downloadInstallGameButton.Cursor = System.Windows.Forms.Cursors.Hand;
this.downloadInstallGameButton.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.downloadInstallGameButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.downloadInstallGameButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.downloadInstallGameButton.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.downloadInstallGameButton.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.downloadInstallGameButton.Location = new System.Drawing.Point(781, 0);
+ this.downloadInstallGameButton.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(18)))), ((int)(((byte)(22)))));
+ this.downloadInstallGameButton.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(18)))), ((int)(((byte)(22)))));
+ this.downloadInstallGameButton.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.downloadInstallGameButton.Enabled = false;
+ this.downloadInstallGameButton.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.downloadInstallGameButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(59)))), ((int)(((byte)(67)))), ((int)(((byte)(82)))));
+ this.downloadInstallGameButton.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.downloadInstallGameButton.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.downloadInstallGameButton.Location = new System.Drawing.Point(6, 177);
this.downloadInstallGameButton.Margin = new System.Windows.Forms.Padding(0);
this.downloadInstallGameButton.Name = "downloadInstallGameButton";
- this.downloadInstallGameButton.Radius = 5;
- this.downloadInstallGameButton.Size = new System.Drawing.Size(364, 34);
+ this.downloadInstallGameButton.Radius = 4;
+ this.downloadInstallGameButton.Size = new System.Drawing.Size(238, 30);
this.downloadInstallGameButton.Stroke = true;
- this.downloadInstallGameButton.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.downloadInstallGameButton.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
this.downloadInstallGameButton.TabIndex = 94;
- this.downloadInstallGameButton.Text = "Download and Install / Add To Queue ⮩ ";
+ this.downloadInstallGameButton.Text = "DOWNLOAD AND INSTALL";
this.downloadInstallGameButton.Transparency = false;
this.downloadInstallGameButton.Click += new System.EventHandler(this.downloadInstallGameButton_Click);
this.downloadInstallGameButton.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
this.downloadInstallGameButton.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);
//
- // MountButton
- //
- this.MountButton.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.MountButton.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.MountButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.MountButton.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
- this.MountButton.Cursor = System.Windows.Forms.Cursors.Default;
- this.MountButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.MountButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.MountButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.MountButton.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.MountButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.MountButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.MountButton.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.MountButton.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.MountButton.Location = new System.Drawing.Point(393, 39);
- this.MountButton.Name = "MountButton";
- this.MountButton.Radius = 5;
- this.MountButton.Size = new System.Drawing.Size(76, 26);
- this.MountButton.Stroke = true;
- this.MountButton.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
- this.MountButton.TabIndex = 95;
- this.MountButton.Text = "MOUNT";
- this.MountButton.Transparency = false;
- this.MountButton.Click += new System.EventHandler(this.MountButton_Click);
- this.MountButton.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
- //
- // btnNoDevice
- //
- this.btnNoDevice.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.btnNoDevice.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.btnNoDevice.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.btnNoDevice.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
- this.btnNoDevice.Cursor = System.Windows.Forms.Cursors.Default;
- this.btnNoDevice.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.btnNoDevice.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.btnNoDevice.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.btnNoDevice.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.btnNoDevice.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.btnNoDevice.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.btnNoDevice.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.btnNoDevice.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.btnNoDevice.Location = new System.Drawing.Point(612, 34);
- this.btnNoDevice.Name = "btnNoDevice";
- this.btnNoDevice.Radius = 5;
- this.btnNoDevice.Size = new System.Drawing.Size(168, 28);
- this.btnNoDevice.Stroke = true;
- this.btnNoDevice.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
- this.btnNoDevice.TabIndex = 99;
- this.btnNoDevice.Text = "Disable Sideloading";
- this.btnNoDevice.Transparency = false;
- this.btnNoDevice.Click += new System.EventHandler(this.btnNoDevice_Click);
- //
// MainForm
//
this.AllowDrop = true;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(31)))), ((int)(((byte)(34)))), ((int)(((byte)(42)))));
+ this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
- this.ClientSize = new System.Drawing.Size(1387, 747);
- this.Controls.Add(this.favoriteSwitcher);
+ this.ClientSize = new System.Drawing.Size(1254, 721);
this.Controls.Add(this.adbCmd_btnSend);
this.Controls.Add(this.adbCmd_btnToggleUpdates);
this.Controls.Add(this.ULLabel);
- this.Controls.Add(this.verLabel);
- this.Controls.Add(this.webView21);
this.Controls.Add(this.tableLayoutPanel1);
this.Controls.Add(this.progressDLbtnContainer);
- this.Controls.Add(this.MountButton);
- this.Controls.Add(this.ProgressText);
- this.Controls.Add(this.lblMirror);
this.Controls.Add(this.adbCmd_CommandBox);
- this.Controls.Add(this.searchTextBox);
this.Controls.Add(this.adbCmd_Label);
- this.Controls.Add(this.freeDisclaimer);
this.Controls.Add(this.DragDropLbl);
this.Controls.Add(this.lblNotes);
this.Controls.Add(this.gamesQueueLabel);
- this.Controls.Add(this.gamesPictureBox);
- this.Controls.Add(this.remotesList);
- this.Controls.Add(this.devicesComboBox);
this.Controls.Add(this.gamesQueListBox);
this.Controls.Add(this.leftNavContainer);
- this.Controls.Add(this.m_combo);
this.Controls.Add(this.notesRichTextBox);
this.Controls.Add(this.adbCmd_background);
this.Controls.Add(this.gamesListView);
this.Controls.Add(this.gamesGalleryView);
- this.Controls.Add(this.btnViewToggle);
- this.Controls.Add(this.btnNoDevice);
+ this.Controls.Add(this.webViewPlaceholderPanel);
+ this.Controls.Add(this.webView21);
this.DoubleBuffered = true;
this.ForeColor = System.Drawing.Color.White;
this.HelpButton = true;
@@ -1589,29 +1663,29 @@ namespace AndroidSideloader
this.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);
this.DragLeave += new System.EventHandler(this.Form1_DragLeave);
((System.ComponentModel.ISupportInitialize)(this.gamesPictureBox)).EndInit();
+ this.gamesPictureBox.ResumeLayout(false);
this.progressDLbtnContainer.ResumeLayout(false);
this.progressDLbtnContainer.PerformLayout();
+ this.questStorageProgressBar.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.batteryLevImg)).EndInit();
this.deviceDropContainer.ResumeLayout(false);
this.sideloadContainer.ResumeLayout(false);
this.installedAppsMenuContainer.ResumeLayout(false);
this.backupContainer.ResumeLayout(false);
this.otherContainer.ResumeLayout(false);
this.questInfoPanel.ResumeLayout(false);
- this.questInfoPanel.PerformLayout();
- ((System.ComponentModel.ISupportInitialize)(this.batteryLevImg)).EndInit();
this.leftNavContainer.ResumeLayout(false);
this.leftNavContainer.PerformLayout();
+ this.sidebarMediaPanel.ResumeLayout(false);
this.tableLayoutPanel1.ResumeLayout(false);
- this.tableLayoutPanel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.webView21)).EndInit();
this.favoriteGame.ResumeLayout(false);
+ this.searchPanel.ResumeLayout(false);
+ this.searchPanel.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.searchIconPictureBox)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
- this.questStorageProgressBar.Visible = false;
- this.batteryLevImg.Visible = false;
- this.batteryLabel.Visible = false;
- this.questInfoLabel.Visible = false;
- this.diskLabel.Visible = false;
+
}
#endregion
@@ -1627,18 +1701,13 @@ namespace AndroidSideloader
private System.Windows.Forms.TextBox searchTextBox;
private System.Windows.Forms.PictureBox gamesPictureBox;
private System.Windows.Forms.Label gamesQueueLabel;
- private System.Windows.Forms.Label ProgressText;
private System.Windows.Forms.RichTextBox notesRichTextBox;
private System.Windows.Forms.Label DragDropLbl;
private System.Windows.Forms.Label lblNotes;
private System.Windows.Forms.Label adbCmd_background;
- private System.Windows.Forms.Label lblUpdateAvailable;
- private System.Windows.Forms.Label lblUpToDate;
- private System.Windows.Forms.Label lblMirror;
private System.Windows.Forms.TextBox adbCmd_CommandBox;
private System.Windows.Forms.Label adbCmd_Label;
public System.Windows.Forms.ComboBox remotesList;
- private System.Windows.Forms.Label lblNeedsDonate;
public System.Windows.Forms.ColumnHeader GameNameIndex;
public System.Windows.Forms.ColumnHeader ReleaseNameIndex;
private System.Windows.Forms.ColumnHeader PackageNameIndex;
@@ -1647,7 +1716,6 @@ namespace AndroidSideloader
public System.Windows.Forms.ColumnHeader VersionNameIndex;
public System.Windows.Forms.ColumnHeader DownloadsIndex;
private RoundButton downloadInstallGameButton;
- private RoundButton MountButton;
private RoundButton btnViewToggle;
private ToolTip startsideloadbutton_Tooltip;
private ToolTip devicesbutton_Tooltip;
@@ -1664,8 +1732,7 @@ namespace AndroidSideloader
private ToolTip QuestOptionsButton_Tooltip;
private ToolTip btnOpenDownloads_Tooltip;
private ToolTip btnRunAdbCmd_Tooltip;
- private ToolTip ADBWirelessDisable_Tooltip;
- private ToolTip ADBWirelessEnable_Tooltip;
+ private ToolTip ADBWirelessToggle_Tooltip;
private ToolTip UpdateGamesButton_Tooltip;
private ToolTip listApkButton_Tooltip;
private ToolTip speedLabel_Tooltip;
@@ -1673,7 +1740,6 @@ namespace AndroidSideloader
private ToolTip btnViewToggle_Tooltip;
private Panel progressDLbtnContainer;
private Microsoft.Web.WebView2.WinForms.WebView2 webView21;
- private Panel bottomContainer;
private Button devicesbutton;
private Button deviceDrop;
private Panel deviceDropContainer;
@@ -1697,19 +1763,17 @@ namespace AndroidSideloader
private Button otherDrop;
private Panel otherContainer;
private Button QuestOptionsButton;
- private Button ADBWirelessDisable;
- private Button ADBWirelessEnable;
+ private Button ADBWirelessToggle;
private Button settingsButton;
private Button aboutBtn;
private PictureBox batteryLevImg;
private Label batteryLabel;
private Label ULLabel;
- private Label verLabel;
private Panel leftNavContainer;
private TableLayoutPanel tableLayoutPanel1;
private Button btnOpenDownloads;
private Button btnRunAdbCmd;
- private RoundButton btnNoDevice;
+ private Button btnNoDevice;
private RoundButton adbCmd_btnToggleUpdates;
private RoundButton adbCmd_btnSend;
private ContextMenuStrip favoriteGame;
@@ -1719,6 +1783,18 @@ namespace AndroidSideloader
private Panel questStorageProgressBar;
private Label questInfoLabel;
private Label diskLabel;
- private System.Windows.Forms.PictureBox searchIconPictureBox;
+ private PictureBox searchIconPictureBox;
+ private Panel sidebarMediaPanel;
+ private Label selectedGameLabel;
+ private Button selectDeviceButton;
+ private Button mountDeviceButton;
+ private Button selectMirrorButton;
+ private RoundButton btnInstalled;
+ private RoundButton btnUpdateAvailable;
+ private RoundButton btnNewerThanList;
+ private RoundButton searchPanel;
+ private Panel notesPanel;
+ private Panel queuePanel;
+ private System.Windows.Forms.Panel webViewPlaceholderPanel;
}
-}
+}
\ No newline at end of file
diff --git a/MainForm.cs b/MainForm.cs
index 1cc0793..223cf82 100755
--- a/MainForm.cs
+++ b/MainForm.cs
@@ -21,6 +21,7 @@ using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.InteropServices;
+using System.Configuration;
namespace AndroidSideloader
{
@@ -47,23 +48,18 @@ namespace AndroidSideloader
public static string currremotesimple = "";
#endif
private Task _adbInitTask;
- private static readonly Color ColorInstalled = ColorTranslator.FromHtml("#3c91e6");
- private static readonly Color ColorUpdateAvailable = ColorTranslator.FromHtml("#4daa57");
- private static readonly Color ColorDonateGame = ColorTranslator.FromHtml("#cb9cf2");
+ public static readonly Color ColorInstalled = ColorTranslator.FromHtml("#3c91e6");
+ public static readonly Color ColorUpdateAvailable = ColorTranslator.FromHtml("#4daa57");
+ public static readonly Color ColorDonateGame = ColorTranslator.FromHtml("#cb9cf2");
private static readonly Color ColorError = ColorTranslator.FromHtml("#f52f57");
private Panel _listViewUninstallButton;
private bool _listViewUninstallButtonHovered = false;
- private bool isGalleryView = false;
+ private bool isGalleryView; // Will be set from settings in constructor
private List _galleryDataSource;
private FastGalleryPanel _fastGallery;
private const int TILE_WIDTH = 180;
private const int TILE_HEIGHT = 125;
private const int TILE_SPACING = 10;
- private const int EM_SETMARGINS = 0xD3;
- private const int EC_LEFTMARGIN = 0x0001;
- private const int EC_RIGHTMARGIN = 0x0002;
- [DllImport("user32.dll", CharSet = CharSet.Auto)]
- private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);
private string freeSpaceText = "";
private string freeSpaceTextDetailed = "";
private int _questStorageProgress = 0;
@@ -92,12 +88,24 @@ namespace AndroidSideloader
storedIpPath = Path.Combine(Environment.CurrentDirectory, "platform-tools", "StoredIP.txt");
aaptPath = Path.Combine(Environment.CurrentDirectory, "platform-tools", "aapt.exe");
InitializeComponent();
+ InitializeModernPanels(); // Initialize modern rounded panels for notes and queue
Logger.Initialize();
InitializeTimeReferences();
CheckCommandLineArguments();
- CreateSearchIcon();
- searchTextBox.HandleCreated += (s, e) => ApplySearchTextMargins();
+ // Load user's preferred view from settings
+ isGalleryView = settings.UseGalleryView;
+
+ // Always start with ListView visible so selections work properly
+ // We'll switch to gallery view after initListView completes if needed
+ gamesListView.Visible = true;
+ gamesGalleryView.Visible = false;
+ btnViewToggle.Text = isGalleryView ? "LIST" : "GALLERY";
+
+ favoriteGame.Renderer = new CenteredMenuRenderer();
+
+ // Set initial wireless ADB button text based on current state
+ UpdateWirelessADBButtonText();
_debounceTimer = new System.Windows.Forms.Timer { Interval = 100, Enabled = false };
_debounceTimer.Tick += async (sender, e) => await RunSearch();
@@ -107,10 +115,7 @@ namespace AndroidSideloader
lvwColumnSorter = new ListViewColumnSorter();
gamesListView.ListViewItemSorter = lvwColumnSorter;
- if (searchTextBox.Visible) { _ = searchTextBox.Focus(); }
-
- this.questInfoPanel.MouseEnter += this.QuestInfoHoverEnter;
- this.questInfoPanel.MouseLeave += this.QuestInfoHoverLeave;
+ SubscribeToHoverEvents(questInfoPanel);
// Create an uninstall button overlay for list view
_listViewUninstallButton = new Panel
@@ -144,9 +149,10 @@ namespace AndroidSideloader
return;
}
- // Check if item is installed (blue or green color)
- bool isInstalled = item.ForeColor.ToArgb() == ColorTranslator.FromHtml("#3c91e6").ToArgb() ||
- item.ForeColor.ToArgb() == ColorTranslator.FromHtml("#4daa57").ToArgb();
+ // Check if item is installed
+ bool isInstalled = item.ForeColor.ToArgb() == ColorInstalled.ToArgb() ||
+ item.ForeColor.ToArgb() == ColorUpdateAvailable.ToArgb() ||
+ item.ForeColor.ToArgb() == ColorDonateGame.ToArgb();
if (!isInstalled)
{
@@ -194,6 +200,16 @@ namespace AndroidSideloader
_listViewUninstallButton.Visible = false;
}
};
+
+ // Set data that apparently can't be set in designer
+ // We do it here so it doesn't get overwritten by designer
+ batteryLevImg.Parent = questStorageProgressBar;
+ batteryLabel.Parent = batteryLevImg;
+ diskLabel.Parent = questStorageProgressBar;
+ questInfoLabel.Parent = questStorageProgressBar;
+
+ // Subscribe to click events to unfocus search text box
+ this.Click += UnfocusSearchTextBox;
}
private void CheckCommandLineArguments()
@@ -363,7 +379,6 @@ namespace AndroidSideloader
etaLabel.Text = String.Empty;
speedLabel.Text = String.Empty;
diskLabel.Text = String.Empty;
- verLabel.Text = Updater.LocalVersion;
settings.MainDir = Environment.CurrentDirectory;
settings.Save();
@@ -426,7 +441,7 @@ namespace AndroidSideloader
}
DialogResult dialogResult = FlexibleMessageBox.Show(Program.form,
- $"Sideloader crashed during your last use.\nPress OK if you'd like to send us your crash log.\n\n NOTE: THIS CAN TAKE UP TO 30 SECONDS.",
+ $"Sideloader crashed during your last use.\nPress OK if you'd like to send us your crash log.\n\nNOTE: THIS CAN TAKE UP TO 30 SECONDS.",
"Crash Detected", MessageBoxButtons.OKCancel);
if (dialogResult == DialogResult.OK)
@@ -460,13 +475,15 @@ namespace AndroidSideloader
}
}
+ webView21.Visible = settings.TrailersEnabled;
+
// Continue with Form1_Shown
this.Form1_Shown(sender, e);
}
private async void Form1_Shown(object sender, EventArgs e)
{
- searchTextBox.Enabled = false;
+ //searchTextBox.Enabled = false;
// Disclaimer thread
new Thread(() =>
@@ -550,13 +567,12 @@ namespace AndroidSideloader
}
if (isOffline)
{
- lblMirror.Text = " Offline Mode";
remotesList.Size = System.Drawing.Size.Empty;
_ = Logger.Log($"Using Offline Mode");
}
if (settings.NodeviceMode)
{
- btnNoDevice.Text = "Enable Sideloading";
+ btnNoDevice.Text = "ENABLE SIDELOADING";
}
progressBar.Style = ProgressBarStyle.Marquee;
@@ -664,7 +680,7 @@ namespace AndroidSideloader
changeTitle("Updating Game Notes...");
SideloaderRCLONE.UpdateGameNotes(currentRemote);
- changeTitle("Updating Game Thumbnails (This may take a minute or two)...");
+ changeTitle("Updating Game Thumbnails...");
SideloaderRCLONE.UpdateGamePhotos(currentRemote);
SideloaderRCLONE.UpdateNouns(currentRemote);
@@ -705,7 +721,6 @@ namespace AndroidSideloader
Task.Run(() => listAppsBtn())
);
- downloadInstallGameButton.Enabled = true;
isLoading = false;
// Initialize list view
@@ -732,7 +747,6 @@ namespace AndroidSideloader
if (isOffline)
{
- lblMirror.Text = " Offline Mode";
remotesList.Size = System.Drawing.Size.Empty;
_ = Logger.Log($"Using Offline Mode");
}
@@ -750,50 +764,24 @@ namespace AndroidSideloader
keyheld = false;
}
- public async void changeTitle(string txt, bool reset = true)
+ public async void changeTitle(string txt, bool reset = false)
{
try
{
- if (ProgressText.IsDisposed)
- {
- return;
- }
+ string titleSuffix = string.IsNullOrWhiteSpace(txt) ? "" : " | " + txt;
+ this.Invoke(() => { Text = "Rookie Sideloader " + Updater.LocalVersion + titleSuffix; });
- this.Invoke(() => { oldTitle = txt; Text = "Rookie Sideloader v" + Updater.LocalVersion + " | " + txt; });
- ProgressText.Invoke(() =>
- {
- if (!ProgressText.IsDisposed)
- {
- var states = new[] { "Sideloading", "Installing", "Copying", "Comparing", "Deleting" };
- if (ProgressText.ForeColor == Color.LimeGreen)
- {
- ProgressText.ForeColor = Color.White;
- }
- if (states.Any(txt.Contains))
- {
- ProgressText.ForeColor = Color.LimeGreen;
- }
- ProgressText.Text = txt;
- }
- });
if (!reset)
{
return;
}
await Task.Delay(TimeSpan.FromSeconds(5));
- this.Invoke(() => { Text = "Rookie Sideloader v" + Updater.LocalVersion + " | " + oldTitle; });
- ProgressText.Invoke(() =>
- {
- if (!ProgressText.IsDisposed)
- {
- ProgressText.Text = oldTitle;
- }
- });
+ // Reset to base title without any status message
+ this.Invoke(() => { Text = "Rookie Sideloader " + Updater.LocalVersion; });
}
catch
{
-
}
}
@@ -839,7 +827,7 @@ namespace AndroidSideloader
public void ShowPrcOutput(ProcessOutput prcout)
{
- string message = $"Output: {prcout.Output}";
+ string message = $"{prcout.Output}";
if (prcout.Error.Length != 0)
{
message += $"\nError: {prcout.Error}";
@@ -896,9 +884,9 @@ namespace AndroidSideloader
battery = Utilities.StringUtilities.RemoveEverythingBeforeFirst(battery, "level:");
battery = Utilities.StringUtilities.RemoveEverythingAfterFirst(battery, "\n");
battery = Utilities.StringUtilities.KeepOnlyNumbers(battery);
- batteryLabel.Text = battery + "%";
+ batteryLabel.Text = battery;
- //UpdateQuestInfoPanel();
+ UpdateQuestInfoPanel();
return devicesComboBox.SelectedIndex;
}
@@ -935,7 +923,7 @@ namespace AndroidSideloader
{
progressBar.Style = ProgressBarStyle.Marquee;
string path = dialog.FileName;
- changeTitle($"Copying {path} obb to device...");
+ changeTitle($"Copying {path} OBB to device...");
Thread t1 = new Thread(() =>
{
output += output += ADB.CopyOBB(path);
@@ -953,7 +941,7 @@ namespace AndroidSideloader
showAvailableSpace();
ShowPrcOutput(output);
- Program.form.changeTitle(String.Empty);
+ Program.form.changeTitle("");
}
}
@@ -1037,22 +1025,43 @@ namespace AndroidSideloader
{
string deviceId = string.Empty;
int index = -1;
- devicesComboBox.Invoke(() => { index = devicesComboBox.SelectedIndex; });
+ int itemCount = 0;
+
+ devicesComboBox.Invoke(() =>
+ {
+ index = devicesComboBox.SelectedIndex;
+ itemCount = devicesComboBox.Items.Count;
+ });
+
if (index != -1)
{
devicesComboBox.Invoke(() => { deviceId = devicesComboBox.SelectedItem.ToString(); });
}
+ else if (itemCount > 1)
+ {
+ // Multiple devices but none selected - prompt user
+ deviceId = ShowDeviceSelector("Multiple devices detected - Select a Device");
+ }
+ else if (itemCount == 1)
+ {
+ // Only one device, select it automatically
+ devicesComboBox.Invoke(() =>
+ {
+ devicesComboBox.SelectedIndex = 0;
+ deviceId = devicesComboBox.SelectedItem.ToString();
+ });
+ }
- return deviceId;
+ return deviceId ?? string.Empty;
}
public static string taa = String.Empty;
private async void backupadbbutton_Click(object sender, EventArgs e)
{
- if (m_combo.SelectedIndex == -1)
+ string selectedApp = ShowInstalledAppSelector("Select an app to backup with ADB");
+ if (selectedApp == null)
{
- notify("Please select an App from the Dropdown");
return;
}
@@ -1078,7 +1087,7 @@ namespace AndroidSideloader
}));
_ = Directory.CreateDirectory(CurrBackups);
- string GameName = m_combo.SelectedItem.ToString();
+ string GameName = selectedApp;
string packageName = Sideloader.gameNameToPackageName(GameName);
string InstalledVersionCode = ADB.RunAdbCommandToString($"shell \"dumpsys package {packageName} | grep versionCode -F\"").Output;
@@ -1086,7 +1095,7 @@ namespace AndroidSideloader
_ = FlexibleMessageBox.Show(Program.form, "Click OK on this Message...\r\nThen on your Quest, Unlock your device and confirm the backup operation by clicking on 'Back Up My Data'");
output = ADB.RunAdbCommandToString($"adb backup -f \"{CurrBackups}\\{packageName}.ab\" {packageName}").Output;
- changeTitle(" \n\n");
+ changeTitle("");
}
private async void backupbutton_Click(object sender, EventArgs e)
@@ -1140,7 +1149,7 @@ namespace AndroidSideloader
changeTitle("Backing up Game Data in SD/Android/data...");
}
ShowPrcOutput(output);
- changeTitle(" \n\n");
+ changeTitle("");
}
private async void restorebutton_Click(object sender, EventArgs e)
@@ -1283,12 +1292,13 @@ namespace AndroidSideloader
return;
}
- if (m_combo.SelectedIndex == -1)
+ string selectedApp = ShowInstalledAppSelector("Select an app to share/upload");
+ if (selectedApp == null)
{
- notify("Please select an App from the Dropdown");
return;
}
- DialogResult dialogResult1 = FlexibleMessageBox.Show(Program.form, $"Do you want to upload {m_combo.SelectedItem} now?", "Upload app?", MessageBoxButtons.YesNo);
+
+ DialogResult dialogResult1 = FlexibleMessageBox.Show(Program.form, $"Do you want to upload {selectedApp} now?", "Upload app?", MessageBoxButtons.YesNo);
if (dialogResult1 == DialogResult.No)
{
return;
@@ -1317,7 +1327,7 @@ namespace AndroidSideloader
isworking = true;
progressBar.Style = ProgressBarStyle.Marquee;
string HWID = SideloaderUtilities.UUID();
- string GameName = m_combo.SelectedItem.ToString();
+ string GameName = selectedApp;
string packageName = Sideloader.gameNameToPackageName(GameName);
string InstalledVersionCode = ADB.RunAdbCommandToString($"shell \"dumpsys package {packageName} | grep versionCode -F\"").Output;
InstalledVersionCode = Utilities.StringUtilities.RemoveEverythingBeforeFirst(InstalledVersionCode, "versionCode=");
@@ -1357,7 +1367,7 @@ namespace AndroidSideloader
await Task.Delay(100);
}
- changeTitle("Extracting obb if it exists....");
+ changeTitle("Extracting OBB if it exists....");
Thread t2 = new Thread(() =>
{
output += ADB.RunAdbCommandToString($"pull \"/sdcard/Android/obb/{packageName}\" \"{settings.MainDir}\\{packageName}\"");
@@ -1391,14 +1401,14 @@ namespace AndroidSideloader
await Task.Delay(100);
}
- changeTitle("Uploading to server, you can continue to use Rookie while it uploads in the background.");
+ changeTitle("Uploading to server, you can continue to use Rookie while it uploads.");
ULLabel.Visible = true;
isworking = false;
isuploading = true;
Thread t3 = new Thread(() =>
{
string currentlyUploading = GameName;
- changeTitle("Uploading to server, you can continue to use Rookie while it uploads in the background.");
+ changeTitle("Uploading to server, you can continue to use Rookie while it uploads.");
// Get size of pending zip upload and write to text file
long zipSize = new FileInfo($"{settings.MainDir}\\{gameZipName}").Length;
@@ -1426,7 +1436,7 @@ namespace AndroidSideloader
await Task.Delay(100);
}
- changeTitle(" \n\n");
+ changeTitle("");
isuploading = false;
ULLabel.Visible = false;
}
@@ -1443,6 +1453,12 @@ namespace AndroidSideloader
private async void uninstallAppButton_Click(object sender, EventArgs e)
{
+ string selectedApp = ShowInstalledAppSelector("Select an app to uninstall");
+ if (selectedApp == null)
+ {
+ return;
+ }
+
if (!settings.CustomBackupDir)
{
backupFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), $"Rookie Backups");
@@ -1451,13 +1467,9 @@ namespace AndroidSideloader
{
backupFolder = Path.Combine((settings.BackupDir), $"Rookie Backups");
}
+
string packagename;
- if (m_combo.SelectedIndex == -1)
- {
- _ = FlexibleMessageBox.Show(Program.form, "Please select an app first");
- return;
- }
- string GameName = m_combo.SelectedItem.ToString();
+ string GameName = selectedApp;
DialogResult dialogresult = FlexibleMessageBox.Show($"Are you sure you want to uninstall {GameName}?", "Proceed with uninstall?", MessageBoxButtons.YesNo);
if (dialogresult == DialogResult.No)
{
@@ -1485,10 +1497,8 @@ namespace AndroidSideloader
ShowPrcOutput(output);
showAvailableSpace();
progressBar.Style = ProgressBarStyle.Continuous;
- m_combo.Items.RemoveAt(m_combo.SelectedIndex);
}
-
private async void copyBulkObbButton_Click(object sender, EventArgs e)
{
FolderSelectDialog dialog = new FolderSelectDialog
@@ -1525,7 +1535,7 @@ namespace AndroidSideloader
_ = await CheckForDevice();
changeTitlebarToDevice();
showAvailableSpace();
- changeTitle("Device now detected... refreshing update list.");
+ changeTitle("Device detected... refreshing update list.");
listAppsBtn();
initListView(false);
}
@@ -1576,13 +1586,15 @@ namespace AndroidSideloader
await Task.Delay(100);
}
- Program.form.changeTitle(String.Empty);
+ Program.form.changeTitle("");
settings.CurrPckg = dir;
settings.Save();
}
- Program.form.changeTitle(String.Empty);
+
+ Program.form.changeTitle("");
string extension = Path.GetExtension(data);
string[] files = Directory.GetFiles(data);
+
foreach (string file2 in files)
{
if (File.Exists(file2))
@@ -1608,7 +1620,7 @@ namespace AndroidSideloader
};
t3.Tick += timer_Tick4;
t3.Start();
- Program.form.changeTitle($"Sideloading apk ({filename})");
+ Program.form.changeTitle($"Sideloading APK ({filename})");
Thread t2 = new Thread(() =>
{
@@ -1626,8 +1638,8 @@ namespace AndroidSideloader
t3.Stop();
if (Directory.Exists($"{pathname}\\{cmdout}"))
{
- _ = Logger.Log($"Copying obb folder to device- {cmdout}");
- Program.form.changeTitle($"Copying obb folder to device...");
+ _ = Logger.Log($"Copying OBB folder to device- {cmdout}");
+ Program.form.changeTitle($"Copying OBB folder to device...");
Thread t1 = new Thread(() =>
{
if (!string.IsNullOrEmpty(cmdout))
@@ -1736,8 +1748,7 @@ namespace AndroidSideloader
await Task.Delay(100);
}
- changeTitle(" \n\n");
-
+ changeTitle("");
}
}
else
@@ -1779,8 +1790,8 @@ namespace AndroidSideloader
if (Directory.Exists($"{pathname}\\{cmdout}"))
{
- _ = Logger.Log($"Copying obb folder to device- {cmdout}");
- Program.form.changeTitle($"Copying obb folder to device...");
+ _ = Logger.Log($"Copying OBB folder to device- {cmdout}");
+ Program.form.changeTitle($"Copying OBB folder to device...");
Thread t2 = new Thread(() =>
{
if (!string.IsNullOrEmpty(cmdout))
@@ -1798,7 +1809,7 @@ namespace AndroidSideloader
await Task.Delay(100);
}
- changeTitle(" \n\n");
+ changeTitle("");
}
}
}
@@ -1821,8 +1832,8 @@ namespace AndroidSideloader
{
IsBackground = true
};
- _ = Logger.Log($"Copying obb folder to device- {path}");
- Program.form.changeTitle($"Copying obb folder to device ({filename})");
+ _ = Logger.Log($"Copying OBB folder to device- {path}");
+ Program.form.changeTitle($"Copying OBB folder to device ({filename})");
t1.Start();
while (t1.IsAlive)
@@ -1831,7 +1842,7 @@ namespace AndroidSideloader
}
Directory.Delete(foldername, true);
- changeTitle(" \n\n");
+ changeTitle("");
}
// BMBF Zip extraction then push to BMBF song folder on Quest.
else if (extension == ".zip" && settings.BMBFChecked)
@@ -1881,7 +1892,7 @@ namespace AndroidSideloader
await Task.Delay(100);
}
- changeTitle(" \n\n");
+ changeTitle("");
}
}
}
@@ -1904,7 +1915,7 @@ namespace AndroidSideloader
}
DragDropLbl.Visible = true;
- DragDropLbl.Text = "Drag apk or obb";
+ DragDropLbl.Text = "Drag APK or OBB";
changeTitle(DragDropLbl.Text);
}
@@ -1913,7 +1924,7 @@ namespace AndroidSideloader
DragDropLbl.Visible = false;
DragDropLbl.Text = String.Empty;
- changeTitle(" \n\n");
+ changeTitle("");
}
private List newGamesList = new List();
@@ -2220,7 +2231,7 @@ namespace AndroidSideloader
if (either && !updatesNotified && !noAppCheck)
{
- changeTitle("\n\n");
+ changeTitle("");
DonorsListViewForm donorForm = new DonorsListViewForm();
_ = donorForm.ShowDialog(this);
_ = Focus();
@@ -2230,12 +2241,14 @@ namespace AndroidSideloader
this.Invoke(() =>
{
changeTitle("Populating update list...\n\n");
- lblUpToDate.Text = $"[{upToDateCount}] INSTALLED";
- lblUpToDate.ForeColor = ColorInstalled;
- lblUpdateAvailable.Text = $"[{updateAvailableCount}] UPDATE AVAILABLE";
- lblUpdateAvailable.ForeColor = ColorUpdateAvailable;
- lblNeedsDonate.Text = $"[{newerThanListCount}] NEWER THAN LIST";
- lblNeedsDonate.ForeColor = ColorDonateGame;
+ int installedTotal = upToDateCount + updateAvailableCount;
+ btnInstalled.Text = $"{installedTotal} INSTALLED";
+ btnInstalled.ForeColor = ColorInstalled;
+ if (updateAvailableCount != 1) btnUpdateAvailable.Text = $"{updateAvailableCount} UPDATES AVAILABLE";
+ else btnUpdateAvailable.Text = $"{updateAvailableCount} UPDATE AVAILABLE";
+ btnUpdateAvailable.ForeColor = ColorUpdateAvailable;
+ btnNewerThanList.Text = $"{newerThanListCount} NEWER THAN LIST";
+ btnNewerThanList.ForeColor = ColorDonateGame;
ListViewItem[] arr = GameList.ToArray();
gamesListView.BeginUpdate();
@@ -2247,7 +2260,7 @@ namespace AndroidSideloader
Logger.Log($"UI updated in {sw.ElapsedMilliseconds}ms");
sw.Restart();
- changeTitle("\n\n");
+ changeTitle("");
if (!_allItemsInitialized)
{
@@ -2283,11 +2296,19 @@ namespace AndroidSideloader
loaded = true;
Logger.Log($"initListView total completed in {sw.ElapsedMilliseconds}ms");
- if (isGalleryView && gamesGalleryView.Visible)
+ // Now that ListView is fully populated and _allItems is initialized,
+ // switch to the user's preferred view
+ this.Invoke(() =>
{
- _galleryDataSource = null;
- PopulateGalleryView();
- }
+ if (isGalleryView)
+ {
+ // Now it's safe to switch - ListView has been visible and populated
+ gamesListView.Visible = false;
+ gamesGalleryView.Visible = true;
+ _galleryDataSource = null;
+ PopulateGalleryView();
+ }
+ });
}
private async Task ProcessNewApps(List newGamesList, List blacklistItems)
@@ -2309,7 +2330,7 @@ namespace AndroidSideloader
{
try
{
- changeTitle("Unrecognized App Found. Downloading APK to take a closer look. (This may take a minute)");
+ changeTitle("Unrecognized App found. Downloading APK to take a closer look. (This may take a minute)");
bool onapplist = false;
string NewApp = settings.NonAppPackages + "\n" + settings.AppPackages;
if (NewApp.Contains(newGamesToUpload))
@@ -2387,7 +2408,7 @@ namespace AndroidSideloader
private static readonly HttpClient HttpClient = new HttpClient();
public static async void doUpload()
{
- Program.form.changeTitle("Uploading to server, you can continue to use Rookie while it uploads in the background.");
+ Program.form.changeTitle("Uploading to server, you can continue to use Rookie while it uploads.");
Program.form.ULLabel.Visible = true;
isworking = true;
string deviceCodeName = ADB.RunAdbCommandToString("shell getprop ro.product.device").Output.ToLower().Trim();
@@ -2433,7 +2454,7 @@ namespace AndroidSideloader
{
Directory.Delete($"{settings.MainDir}\\{game.Pckgcommand}", true);
}
- Program.form.changeTitle("Uploading to server, you may continue to use Rookie while it uploads.");
+ Program.form.changeTitle("Uploading to server, you can continue to use Rookie while it uploads.");
// Get size of pending zip upload and write to text file
long zipSize = new FileInfo($"{settings.MainDir}\\{gameZipName}").Length;
@@ -2475,7 +2496,7 @@ namespace AndroidSideloader
isworking = false;
isuploading = false;
Program.form.ULLabel.Visible = false;
- Program.form.changeTitle(" \n\n");
+ Program.form.changeTitle("");
}
else
{
@@ -2532,7 +2553,7 @@ namespace AndroidSideloader
await Task.Delay(100);
}
- changeTitle("Extracting obb if it exists....");
+ changeTitle("Extracting OBB if it exists....");
Thread t2 = new Thread(() =>
{
_ = ADB.RunAdbCommandToString($"pull \"/sdcard/Android/obb/{packagename}\" \"{settings.MainDir}\\{packagename}\"");
@@ -2700,45 +2721,119 @@ namespace AndroidSideloader
ToggleContainer(otherContainer, otherDrop);
}
- private void ToggleContainer(Panel containerToToggle, Button dropButton)
+ private async void AnimateContainerHeight(Panel container, bool expand)
{
- // Collapse all other containers
- CollapseAllContainers(containerToToggle);
+ // Disable AutoSize during animation
+ container.AutoSize = false;
- // Toggle the clicked container
- bool isExpanding = !containerToToggle.Visible;
- containerToToggle.Visible = isExpanding;
+ // Store the target height before any changes
+ int targetHeight = expand ? container.PreferredSize.Height : 0;
+ int startHeight = expand ? 0 : container.Height;
+
+ // For collapsing: hide immediately if already at 0
+ if (!expand && container.Height == 0)
+ {
+ container.Visible = false;
+ container.AutoSize = true;
+ return;
+ }
+
+ // Set height before making visible to prevent flicker on expand
+ container.Height = startHeight;
+
+ // Only show if expanding (collapsing container is already visible)
+ if (expand)
+ {
+ container.Visible = true;
+ }
+
+ // Suspend layout to prevent child controls from flickering
+ container.SuspendLayout();
+
+ // Stopwatch for consistent timing, 1.5ms per pixel height
+ int durationMs = (int)Math.Round(container.PreferredSize.Height * 1.5);
+ var stopwatch = Stopwatch.StartNew();
+
+ while (stopwatch.ElapsedMilliseconds < durationMs)
+ {
+ float progress = (float)stopwatch.ElapsedMilliseconds / durationMs;
+ progress = Math.Min(1f, progress);
+
+ // Ease-out curve
+ float easedProgress = 1f - (1f - progress) * (1f - progress);
+
+ int newHeight = (int)(startHeight + (targetHeight - startHeight) * easedProgress);
+ container.Height = Math.Max(0, newHeight);
+
+ // Yield to UI thread, but don't rely on delay accuracy
+ await Task.Delay(1);
+ }
+
+ // Ensure final state
+ container.Height = targetHeight;
+
+ // Resume layout before hiding to ensure clean state
+ container.ResumeLayout(false);
+
+ if (!expand)
+ {
+ container.Visible = false;
+ }
+
+ container.AutoSize = true;
}
- private void CollapseAllContainers(Panel exceptThis = null)
+ private void CollapseAllContainersInstant(Panel exceptThis = null)
{
var containers = new[]
{
- deviceDropContainer,
- sideloadContainer,
- installedAppsMenuContainer,
- backupContainer,
- otherContainer
- };
+ deviceDropContainer,
+ sideloadContainer,
+ installedAppsMenuContainer,
+ backupContainer,
+ otherContainer
+ };
- var buttons = new[]
+ foreach (var container in containers)
{
- deviceDrop,
- sideloadDrop,
- installedAppsMenu,
- backupDrop,
- otherDrop
- };
-
- for (int i = 0; i < containers.Length; i++)
- {
- if (containers[i] != exceptThis && containers[i].Visible)
+ if (container != exceptThis && container.Visible)
{
- containers[i].Visible = false;
+ // Hide before any layout changes to prevent flicker
+ container.Visible = false;
+ container.SuspendLayout();
+ container.AutoSize = false;
+ container.Height = 0;
+ container.ResumeLayout(false);
+ container.AutoSize = true;
}
}
}
+ private void ToggleContainer(Panel containerToToggle, Button dropButton)
+ {
+ // Collapse all other containers instantly
+ CollapseAllContainersInstant(containerToToggle);
+
+ // Check if we're collapsing (container is currently visible and has height)
+ bool isExpanding = !containerToToggle.Visible || containerToToggle.Height == 0;
+
+ if (isExpanding)
+ {
+ // Animate expansion
+ AnimateContainerHeight(containerToToggle, true);
+ }
+ else
+ {
+ // Close instantly without animation - hide before any layout changes
+ containerToToggle.Visible = false;
+ containerToToggle.SuspendLayout();
+ containerToToggle.AutoSize = false;
+ containerToToggle.Height = 0;
+ containerToToggle.ResumeLayout(false);
+ containerToToggle.AutoSize = true;
+ }
+ }
+
private void settingsButton_Click(object sender, EventArgs e)
{
SettingsForm settingsForm = new SettingsForm();
@@ -2749,85 +2844,26 @@ namespace AndroidSideloader
{
string about = $@"Version: {Updater.LocalVersion}
- - Software orignally coded by rookie.wtf
- - Thanks to the VRP Mod Staff, data team, and anyone else we missed!
- - Thanks to VRP staff of the present and past: fenopy, Maxine, JarJarBlinkz
- pmow, SytheZN, Roma/Rookie, Flow, Ivan, Kaladin, HarryEffinPotter, John, Sam Hoque
+Credits & Acknowledgements
+-----------------------------------------
+• Software originally developed by: rookie.wtf
+• Special thanks to the VRP Mod Staff, Data Team, and all contributors
+• VRP Staff (past & present):
+ fenopy, Maxine, JarJarBlinkz, pmow, SytheZN, Roma/Rookie,
+ Flow, Ivan, Kaladin, HarryEffinPotter, John, Sam Hoque, JP
- - Additional Thanks and Credits:
- - -- rclone https://rclone.org/
- - -- 7zip https://www.7-zip.org/
- - -- ErikE: https://stackoverflow.com/users/57611/erike
- - -- Serge Weinstock (SergeUtils)
- - -- Mike Gold https://www.c-sharpcorner.com/members/mike-gold2
- ";
+Additional Thanks & Resources
+-----------------------------------------
+• rclone - https://rclone.org
+• 7-Zip - https://www.7-zip.org
+• ErikE - https://stackoverflow.com/users/57611/erike
+• Serge Weinstock (SergeUtils)
+• Mike Gold - https://www.c-sharpcorner.com/members/mike-gold2
+";
_ = FlexibleMessageBox.Show(Program.form, about);
}
- private async void ADBWirelessEnable_Click(object sender, EventArgs e)
- {
- bool Manual;
- DialogResult res = FlexibleMessageBox.Show(Program.form, "Do you want Rookie to find the IP or enter it manually\nYes = Automatic\nNo = Manual", "Automatic/Manual", MessageBoxButtons.YesNo);
- Manual = res == DialogResult.No;
- if (Manual)
- {
- adbCmd_CommandBox.Visible = true;
- adbCmd_CommandBox.Clear();
- adbCmd_Label.Visible = true;
- adbCmd_Label.Text = "Enter your Quest IP Address";
- adbCmd_background.Visible = true;
- manualIP = true;
- _ = adbCmd_CommandBox.Focus();
- Program.form.changeTitle("Attempting manual connection...", false);
- }
- else
- {
- DialogResult dialogResult = FlexibleMessageBox.Show(Program.form, "Make sure your Quest is plugged in VIA USB then press OK, if you need a moment press Cancel and come back when you're ready.", "Connect Quest now.", MessageBoxButtons.OKCancel);
- if (dialogResult == DialogResult.Cancel)
- {
- return;
- }
-
- _ = ADB.RunAdbCommandToString("devices");
- _ = ADB.RunAdbCommandToString("tcpip 5555");
-
- _ = FlexibleMessageBox.Show(Program.form, "Press OK to get your Quest's local IP address.", "Obtain local IP address", MessageBoxButtons.OKCancel);
- await Task.Delay(1000);
- string input = ADB.RunAdbCommandToString("shell ip route").Output;
-
- settings.WirelessADB = true;
- settings.Save();
- _ = new string[] { String.Empty };
- string[] strArrayOne = input.Split(' ');
- if (strArrayOne[0].Length > 7)
- {
- string IPaddr = strArrayOne[8];
- string IPcmnd = "connect " + IPaddr + ":5555";
- _ = FlexibleMessageBox.Show(Program.form, $"Your Quest's local IP address is: {IPaddr}\n\nPlease disconnect your Quest then wait 2 seconds.\nOnce it is disconnected hit OK", "", MessageBoxButtons.OK);
- await Task.Delay(2000);
- _ = ADB.RunAdbCommandToString(IPcmnd);
- _ = await Program.form.CheckForDevice();
- Program.form.changeTitlebarToDevice();
- Program.form.showAvailableSpace();
- settings.IPAddress = IPcmnd;
- settings.Save();
- try
- {
- File.WriteAllText(storedIpPath, IPcmnd);
- }
- catch (Exception ex) { Logger.Log($"Unable to write to StoredIP.txt due to {ex.Message}", LogLevel.ERROR); }
- ADB.wirelessadbON = true;
- _ = ADB.RunAdbCommandToString("shell settings put global wifi_wakeup_available 1");
- _ = ADB.RunAdbCommandToString("shell settings put global wifi_wakeup_enabled 1");
- }
- else
- {
- _ = FlexibleMessageBox.Show(Program.form, "No device connected! Connect quest via USB and start again!");
- }
- }
- }
-
private async void listApkButton_Click(object sender, EventArgs e)
{
string titleMessage = "Refreshing connected devices, installed apps and update list...";
@@ -2870,7 +2906,7 @@ namespace AndroidSideloader
initListView(false);
isLoading = false;
- changeTitle(" \n\n");
+ changeTitle("");
}
private static readonly HttpClient client = new HttpClient();
@@ -2980,7 +3016,7 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
if (gamesListView.SelectedItems.Count == 0)
{
progressBar.Style = ProgressBarStyle.Continuous;
- changeTitle("You must select a game from the Game List!");
+ changeTitle("You must select a game from the game list!");
return;
}
string namebox = gamesListView.SelectedItems[0].ToString();
@@ -3151,7 +3187,7 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
t1.IsBackground = true;
t1.Start();
- changeTitle("Downloading game " + gameName, false);
+ changeTitle("Downloading game " + gameName);
speedLabel.Text = "Starting download...";
etaLabel.Text = "Please wait...";
@@ -3221,18 +3257,18 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
if (removedownloading)
{
- changeTitle("Keep game files?", false);
+ changeTitle("Keep game files?");
try
{
cleanupActiveDownloadStatus();
DialogResult res = FlexibleMessageBox.Show(
- $"{gameName} already has some downloaded files, do you want to delete them?\n\nClick NO to keep the files if you wish to resume your download later.",
+ $"{gameName} exists in destination directory, do you want to delete it?\n\nClick NO to keep the files if you wish to resume your download later.",
"Delete Temporary Files?", MessageBoxButtons.YesNo);
if (res == DialogResult.Yes)
{
- changeTitle("Deleting game files", false);
+ changeTitle("Deleting game files");
if (UsingPublicConfig)
{
if (Directory.Exists($"{settings.DownloadDir}\\{gameNameHash}"))
@@ -3302,7 +3338,7 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
}));
try
{
- changeTitle("Extracting " + gameName, false);
+ changeTitle("Extracting " + gameName);
Zip.ExtractFile($"{settings.DownloadDir}\\{gameNameHash}\\{gameNameHash}.7z.001", $"{settings.DownloadDir}", PublicConfigFile.Password);
Program.form.changeTitle("");
}
@@ -3339,7 +3375,7 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
quotaTries = 0;
progressBar.Value = 0;
progressBar.Style = ProgressBarStyle.Continuous;
- changeTitle("Installing game apk " + gameName, false);
+ changeTitle("Installing game APK " + gameName);
etaLabel.Text = "ETA: Wait for install...";
speedLabel.Text = "DLS: Finished";
if (File.Exists(Path.Combine(settings.DownloadDir, gameName, "install.txt")))
@@ -3364,7 +3400,7 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
Thread installtxtThread = new Thread(() =>
{
output += Sideloader.RunADBCommandsFromFile(installTxtPath);
- changeTitle(" \n\n");
+ changeTitle("");
});
installtxtThread.Start();
while (installtxtThread.IsAlive)
@@ -3396,7 +3432,8 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
t.Start();
Thread apkThread = new Thread(() =>
{
- Program.form.changeTitle($"Sideloading apk...");
+ Program.form.changeTitle($"Sideloading APK...");
+ etaLabel.Text = "Sideloading APK...";
output += ADB.Sideload(apkFile, packagename);
})
{
@@ -3415,7 +3452,7 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
deleteOBB(packagename);
Thread obbThread = new Thread(() =>
{
- changeTitle($"Copying {packagename} obb to device...");
+ changeTitle($"Copying {packagename} OBB to device...");
ADB.RunAdbCommandToString($"shell mkdir \"/sdcard/Android/obb/{packagename}\"");
output += ADB.RunAdbCommandToString($"push \"{settings.DownloadDir}\\{gameName}\\{packagename}\" \"/sdcard/Android/obb\"");
Program.form.changeTitle("");
@@ -3450,10 +3487,10 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
}
if (settings.DeleteAllAfterInstall)
{
- changeTitle("Deleting game files", false);
+ changeTitle("Deleting game files");
try { Directory.Delete(settings.DownloadDir + "\\" + gameName, true); } catch (Exception ex) { _ = FlexibleMessageBox.Show(Program.form, $"Error deleting game files: {ex.Message}"); }
}
- //Remove current game
+ // Remove current game
cleanupActiveDownloadStatus();
}
}
@@ -3486,11 +3523,10 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
progressBar.Style = ProgressBarStyle.Continuous;
etaLabel.Text = "ETA: Finished Queue";
speedLabel.Text = "DLS: Finished Queue";
- ProgressText.Text = "";
gamesAreDownloading = false;
isinstalling = false;
- changeTitle("\n\n");
+ changeTitle("");
}
}
}
@@ -3516,7 +3552,7 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
try
{
- changeTitle("Comparing obbs...");
+ changeTitle("Comparing OBBs...");
Logger.Log("Comparing OBBs");
DirectoryInfo localFolder = new DirectoryInfo(localFolderPath);
@@ -3539,8 +3575,8 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
}
catch (FormatException ex)
{
- _ = FlexibleMessageBox.Show(Program.form, "The OBB Folder on the Quest seems to not exist or be empty\nPlease redownload the game or sideload the obb manually.", "OBB Size Undetectable!", MessageBoxButtons.OK);
- Logger.Log($"Unable to compare obbs with the exception: {ex.Message}", LogLevel.ERROR);
+ _ = FlexibleMessageBox.Show(Program.form, "The OBB Folder on the Quest seems to not exist or be empty\nPlease redownload the game or sideload the OBB manually.", "OBB Size Undetectable!", MessageBoxButtons.OK);
+ Logger.Log($"Unable to compare OBBs with the exception: {ex.Message}", LogLevel.ERROR);
FlexibleMessageBox.Show($"Error comparing OBB sizes: {ex.Message}");
return false;
}
@@ -3580,7 +3616,7 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
await Task.Run(() =>
{
- changeTitle($"Copying {packageName} obb to device...");
+ changeTitle($"Copying {packageName} OBB to device...");
output += ADB.RunAdbCommandToString($"push \"{obbFolderPath}\" \"{OBBFolderPath}\"");
Program.form.changeTitle("");
});
@@ -3606,11 +3642,10 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
progressBar.Style = ProgressBarStyle.Continuous;
etaLabel.Text = "ETA: Finished Queue";
speedLabel.Text = "DLS: Finished Queue";
- ProgressText.Text = string.Empty;
gamesAreDownloading = false;
isinstalling = false;
- changeTitle(" \n\n");
+ changeTitle("");
}
static long localFolderSize(DirectoryInfo localFolder)
@@ -3669,7 +3704,7 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
_ = ADB.RunAdbCommandToString("devices");
_ = ADB.RunAdbCommandToString($"pull /sdcard/Android/data/{CurrPCKG} \"{Environment.CurrentDirectory}\"");
_ = Sideloader.UninstallGame(CurrPCKG);
- changeTitle("Reinstalling Game");
+ changeTitle("Reinstalling game");
_ = ADB.RunAdbCommandToString($"install -g \"{CurrAPK}\"");
_ = ADB.RunAdbCommandToString($"push \"{Environment.CurrentDirectory}\\{CurrPCKG}\" /sdcard/Android/data/");
@@ -3679,16 +3714,16 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
Directory.Delete(Path.Combine(Environment.CurrentDirectory, CurrPCKG), true);
}
- changeTitle(" \n\n");
+ changeTitle("");
return;
}
else
{
- DialogResult dialogResult2 = FlexibleMessageBox.Show(Program.form, "This install is taking an unusual amount of time, you can keep waiting or cancel the install.\n" +
+ DialogResult dialogResult2 = FlexibleMessageBox.Show(Program.form, "This installation is taking an unusual amount of time, you can keep waiting or abort the installation.\n" +
"Would you like to cancel the installation?", "Cancel install?", MessageBoxButtons.YesNo);
if (dialogResult2 == DialogResult.Yes)
{
- changeTitle("Stopping Install...");
+ changeTitle("Stopping installation...");
_ = ADB.RunAdbCommandToString("kill-server");
_ = ADB.RunAdbCommandToString("devices");
}
@@ -3741,16 +3776,20 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
}
- private async void ADBWirelessDisable_Click(object sender, EventArgs e)
+ private async void ADBWirelessToggle_Click(object sender, EventArgs e)
{
- DialogResult dialogResult = FlexibleMessageBox.Show(Program.form, "Are you sure you want to delete your saved Quest IP address/command?", "Remove saved IP address?", MessageBoxButtons.YesNo);
- if (dialogResult == DialogResult.No)
- {
- _ = FlexibleMessageBox.Show(Program.form, "Saved IP data reset cancelled.");
- return;
- }
- else
+ // Check if wireless ADB is currently enabled
+ bool isWirelessEnabled = File.Exists(storedIpPath) && !string.IsNullOrEmpty(settings.IPAddress);
+
+ if (isWirelessEnabled)
{
+ // Disable wireless ADB
+ DialogResult dialogResult = FlexibleMessageBox.Show(Program.form, "Are you sure you want to disable wireless ADB and remove your saved IP address?", "Disable Wireless ADB?", MessageBoxButtons.YesNo);
+ if (dialogResult == DialogResult.No)
+ {
+ return;
+ }
+
ADB.wirelessadbON = false;
_ = FlexibleMessageBox.Show(Program.form, "Make sure your device is not connected to USB and press OK.");
_ = ADB.RunAdbCommandToString("devices");
@@ -3765,12 +3804,83 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
settings.Save();
_ = Program.form.GetDeviceID();
Program.form.changeTitlebarToDevice();
- _ = FlexibleMessageBox.Show(Program.form, "Relaunch Rookie to complete the process and switch back to USB adb.");
+ _ = FlexibleMessageBox.Show(Program.form, "Wireless ADB disabled. Relaunch Rookie to switch back to USB.");
if (File.Exists(storedIpPath))
{
File.Delete(storedIpPath);
}
}
+ else
+ {
+ // Enable wireless ADB
+ DialogResult res = FlexibleMessageBox.Show(Program.form, "Do you want Rookie to find the IP automatically or enter it manually?\nYes = Automatic\nNo = Manual", "Automatic/Manual", MessageBoxButtons.YesNo);
+ bool manual = res == DialogResult.No;
+
+ if (manual)
+ {
+ adbCmd_CommandBox.Visible = true;
+ adbCmd_CommandBox.Clear();
+ adbCmd_Label.Visible = true;
+ adbCmd_Label.Text = "Enter your Quest IP Address";
+ adbCmd_background.Visible = true;
+ manualIP = true;
+ _ = adbCmd_CommandBox.Focus();
+ Program.form.changeTitle("Attempting manual connection...", true);
+ }
+ else
+ {
+ DialogResult dialogResult = FlexibleMessageBox.Show(Program.form, "Make sure your Quest is plugged in VIA USB then press OK.", "Connect Quest now.", MessageBoxButtons.OKCancel);
+ if (dialogResult == DialogResult.Cancel)
+ {
+ return;
+ }
+
+ _ = ADB.RunAdbCommandToString("devices");
+ _ = ADB.RunAdbCommandToString("tcpip 5555");
+
+ _ = FlexibleMessageBox.Show(Program.form, "Press OK to get your Quest's local IP address.", "Obtain local IP address", MessageBoxButtons.OKCancel);
+ await Task.Delay(1000);
+ string input = ADB.RunAdbCommandToString("shell ip route").Output;
+
+ settings.WirelessADB = true;
+ settings.Save();
+ string[] strArrayOne = input.Split(' ');
+ if (strArrayOne[0].Length > 7)
+ {
+ string IPaddr = strArrayOne[8];
+ string IPcmnd = "connect " + IPaddr + ":5555";
+ _ = FlexibleMessageBox.Show(Program.form, $"Your Quest's local IP address is: {IPaddr}\n\nPlease disconnect your Quest then wait 2 seconds.\nOnce it is disconnected hit OK", "", MessageBoxButtons.OK);
+ await Task.Delay(2000);
+ _ = ADB.RunAdbCommandToString(IPcmnd);
+ _ = await Program.form.CheckForDevice();
+ Program.form.changeTitlebarToDevice();
+ Program.form.showAvailableSpace();
+ settings.IPAddress = IPcmnd;
+ settings.Save();
+ try
+ {
+ File.WriteAllText(storedIpPath, IPcmnd);
+ }
+ catch (Exception ex) { Logger.Log($"Unable to write to StoredIP.txt: {ex.Message}", LogLevel.ERROR); }
+ ADB.wirelessadbON = true;
+ _ = ADB.RunAdbCommandToString("shell settings put global wifi_wakeup_available 1");
+ _ = ADB.RunAdbCommandToString("shell settings put global wifi_wakeup_enabled 1");
+ }
+ else
+ {
+ _ = FlexibleMessageBox.Show(Program.form, "No device connected! Connect Quest via USB and try again.");
+ }
+ }
+ }
+
+ // Update button text to reflect new state
+ UpdateWirelessADBButtonText();
+ }
+
+ private void UpdateWirelessADBButtonText()
+ {
+ bool isWirelessEnabled = File.Exists(storedIpPath) && !string.IsNullOrEmpty(settings.IPAddress);
+ ADBWirelessToggle.Text = isWirelessEnabled ? "DISABLE WIRELESS ADB" : "ENABLE WIRELESS ADB";
}
private void gamesQueListBox_MouseClick(object sender, MouseEventArgs e)
@@ -3852,7 +3962,7 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
{
changeTitle($"Entered command: ADB {adbCmd_CommandBox.Text}");
_ = ADB.RunAdbCommandToString(adbCmd_CommandBox.Text);
- changeTitle(" \n\n");
+ changeTitle("");
}
adbCmd_CommandBox.Visible = false;
adbCmd_Label.Visible = false;
@@ -3968,15 +4078,35 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
}
if (keyData == Keys.F5)
{
- _ = GetDeviceID();
- _ = FlexibleMessageBox.Show(Program.form, "If your device is not Connected, hit reconnect first or it won't work!\nNOTE: THIS MAY TAKE UP TO 60 SECONDS.\nThere will be a Popup text window with all updates available when it is done!", "Is device connected?", MessageBoxButtons.OKCancel);
+ if (!DeviceConnected && Devices.Count == 0)
+ {
+ FlexibleMessageBox.Show(Program.form,
+ "No device connected. Please connect your Quest and click 'RECONNECT DEVICE' first.",
+ "Device Required",
+ MessageBoxButtons.OK);
+ return true;
+ }
+
+ changeTitle("Refreshing games list...");
listAppsBtn();
initListView(false);
}
bool dialogIsUp = false;
if (keyData == Keys.F1 && !dialogIsUp)
{
- _ = FlexibleMessageBox.Show(Program.form, "Shortcuts:\nF1 -------- Shortcuts List\nF3 -------- Quest Options\nF4 -------- Rookie Settings\nF5 -------- Refresh Gameslist\n\nCTRL+R - Run custom ADB command.\nCTRL+L - Copy entire list of Game Names to clipboard seperated by new lines.\nALT+L - Copy entire list of Game Names to clipboard seperated by commas(in a paragraph).CTRL+P - Copy packagename to clipboard on game select.\nCTRL + F4 - Instantly relaunch Rookie Sideloader.");
+ _ = FlexibleMessageBox.Show(Program.form,
+@"Keyboard Shortcuts
+
+F1 - Show shortcuts list
+F3 - Open Quest Settings
+F4 - Open Rookie Settings
+F5 - Refresh games list
+
+CTRL + R - Run custom ADB command
+CTRL + L - Copy all game names (one per line)
+ALT + L - Copy all game names (comma-separated in a single line)
+CTRL + P - Copy package name of selected game
+CTRL + F4 - Instantly relaunch Rookie Sideloader");
}
if (keyData == (Keys.Control | Keys.P))
{
@@ -4114,31 +4244,6 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
_ = adbCmd_CommandBox.Focus();
}
- private bool fullScreen = false;
- [DefaultValue(false)]
- public bool FullScreen
- {
- get { return fullScreen; }
- set
- {
- fullScreen = value;
- if (value)
- {
- MainForm.ActiveForm.FormBorderStyle = FormBorderStyle.None;
- webView21.Anchor = (AnchorStyles.Top | AnchorStyles.Left);
- webView21.Location = new System.Drawing.Point(0, 0);
- webView21.Size = MainForm.ActiveForm.Size;
- }
- else
- {
- MainForm.ActiveForm.FormBorderStyle = FormBorderStyle.Sizable;
- webView21.Anchor = (AnchorStyles.Left | AnchorStyles.Bottom);
- webView21.Location = gamesPictureBox.Location;
- webView21.Size = new System.Drawing.Size(374, 214);
- }
- }
- }
-
static string ExtractVideoId(string html)
{
// We want the first strict 11-char YouTube video ID after /watch?v=
@@ -4148,12 +4253,20 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
private async Task CreateEnvironment()
{
+ if (!settings.TrailersEnabled) return;
+
// Fast path: already initialized
if (webView21.CoreWebView2 != null) return;
- // Download WebView2 Runtime if not present
+ // Check if WebView2 runtime DLLs are present
string runtimesPath = Path.Combine(Environment.CurrentDirectory, "runtimes");
- if (!Directory.Exists(runtimesPath))
+ string webView2LoaderArm64 = Path.Combine(runtimesPath, "win-arm64", "native", "WebView2Loader.dll");
+ string webView2LoaderX86 = Path.Combine(runtimesPath, "win-x86", "native", "WebView2Loader.dll");
+ string webView2LoaderX64 = Path.Combine(runtimesPath, "win-x64", "native", "WebView2Loader.dll");
+
+ bool runtimeExists = File.Exists(webView2LoaderX86) || File.Exists(webView2LoaderX64) || File.Exists(webView2LoaderArm64);
+
+ if (!runtimeExists)
{
try
{
@@ -4200,15 +4313,19 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
var s = webView21.CoreWebView2.Settings;
s.IsScriptEnabled = true; // allow IFrame API
s.IsWebMessageEnabled = true; // allow PostWebMessageAsString from host
+
+ ApplyWebViewRoundedCorners();
}
- catch (Exception ex)
+ catch (Exception /* ex */)
{
+ /*
Logger.Log($"Failed to initialize WebView2: {ex.Message}", LogLevel.ERROR);
_ = FlexibleMessageBox.Show(Program.form,
$"WebView2 Runtime is not installed on this system.\n\n" +
"Please download from: https://go.microsoft.com/fwlink/p/?LinkId=2124703\n\n" +
"Trailer playback will be disabled.",
"WebView2 Runtime Required");
+ */
enviromentCreated = true;
webView21.Hide();
}
@@ -4216,6 +4333,7 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
private void InitializeTrailerPlayer()
{
+ if (!settings.TrailersEnabled) return;
if (_trailerPlayerInitialized) return;
string webroot = Path.Combine(Environment.CurrentDirectory, "webroot");
Directory.CreateDirectory(webroot);
@@ -4229,7 +4347,7 @@ Please visit our Telegram (https://t.me/VRPirates) or Discord (https://discord.g
Trailer Player
@@ -4286,12 +4404,23 @@ function onYouTubeIframeAPIReady() {
// Ensure environment + initial navigation
private async Task EnsureTrailerEnvironmentAsync()
{
+ if (!settings.TrailersEnabled) return;
+
if (webView21.CoreWebView2 == null)
{
await CreateEnvironment();
}
+
+ // Check again after CreateEnvironment - it may have failed
+ if (webView21.CoreWebView2 == null)
+ {
+ Logger.Log("WebView2 CoreWebView2 is null after CreateEnvironment", LogLevel.WARNING);
+ return;
+ }
+
InitializeTrailerPlayer();
- if (!_trailerHtmlLoaded)
+
+ if (!_trailerHtmlLoaded && webView21.CoreWebView2 != null)
{
webView21.CoreWebView2.NavigationCompleted += (s, e) =>
{
@@ -4303,22 +4432,46 @@ function onYouTubeIframeAPIReady() {
private async Task ShowVideoAsync(string videoId)
{
+ if (!settings.TrailersEnabled) return;
if (string.IsNullOrEmpty(videoId)) return;
- await EnsureTrailerEnvironmentAsync();
- // If first load still in progress, small retry loop
- int tries = 0;
- while (!_trailerHtmlLoaded && tries < 50)
+ try
{
- await Task.Delay(50);
- tries++;
+ await EnsureTrailerEnvironmentAsync();
+
+ // Check if WebView2 was successfully initialized
+ if (webView21.CoreWebView2 == null)
+ {
+ return;
+ }
+
+ // If first load still in progress, small retry loop
+ int tries = 0;
+ while (!_trailerHtmlLoaded && tries < 50)
+ {
+ await Task.Delay(50);
+ tries++;
+ }
+
+ // Double-check after waiting
+ if (webView21.CoreWebView2 == null || !_trailerHtmlLoaded)
+ {
+ return;
+ }
+
+ // Post the raw ID; page builds final URL
+ webView21.CoreWebView2.PostWebMessageAsString(videoId);
+ HideVideoPlaceholder(); // Video is loading, hide placeholder
+ }
+ catch (Exception ex)
+ {
+ Logger.Log($"ShowVideoAsync error: {ex.Message}", LogLevel.WARNING);
}
- // Post the raw ID; page builds final URL
- webView21.CoreWebView2.PostWebMessageAsString(videoId);
}
private async Task ResolveVideoIdAsync(string gameName)
{
+ if (!settings.TrailersEnabled) return string.Empty;
if (string.IsNullOrWhiteSpace(gameName)) return string.Empty;
if (_videoIdCache.TryGetValue(gameName, out var cached))
@@ -4348,7 +4501,6 @@ function onYouTubeIframeAPIReady() {
return string.Empty;
}
- private static CancellationTokenSource VideoDownloadTokenSource { get; set; }
public async void gamesListView_SelectedIndexChanged(object sender, EventArgs e)
{
// Hide the uninstall button initially
@@ -4359,6 +4511,9 @@ function onYouTubeIframeAPIReady() {
if (gamesListView.SelectedItems.Count < 1)
{
+ selectedGameLabel.Text = "";
+ downloadInstallGameButton.Enabled = false;
+ downloadInstallGameButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(59)))), ((int)(((byte)(67)))), ((int)(((byte)(82)))));
return;
}
@@ -4368,9 +4523,16 @@ function onYouTubeIframeAPIReady() {
string CurrentGameName = selectedItem.SubItems[SideloaderRCLONE.GameNameIndex].Text;
Console.WriteLine(CurrentGameName);
- // Show uninstall button only for installed games (blue or green color)
- bool isInstalled = selectedItem.ForeColor.ToArgb() == ColorTranslator.FromHtml("#3c91e6").ToArgb() ||
- selectedItem.ForeColor.ToArgb() == ColorTranslator.FromHtml("#4daa57").ToArgb();
+ downloadInstallGameButton.Enabled = true;
+ downloadInstallGameButton.ForeColor = System.Drawing.Color.Black;
+
+ // Update the selected game label in the sidebar
+ selectedGameLabel.Text = CurrentGameName;
+
+ // Show uninstall button only for installed games
+ bool isInstalled = selectedItem.ForeColor.ToArgb() == ColorInstalled.ToArgb() ||
+ selectedItem.ForeColor.ToArgb() == ColorUpdateAvailable.ToArgb() ||
+ selectedItem.ForeColor.ToArgb() == ColorDonateGame.ToArgb();
if (isInstalled && _listViewUninstallButton != null)
{
@@ -4412,38 +4574,61 @@ function onYouTubeIframeAPIReady() {
}
}
- if (gamesPictureBox.BackgroundImage != null)
+ // Dispose the old image first
+ var oldImage = gamesPictureBox.BackgroundImage;
+ gamesPictureBox.BackgroundImage = null;
+
+ if (oldImage != null)
{
- gamesPictureBox.BackgroundImage.Dispose();
+ oldImage.Dispose();
}
- gamesPictureBox.BackgroundImage = File.Exists(ImagePath) ? Image.FromFile(ImagePath) : new Bitmap(367, 214);
+ if (File.Exists(ImagePath))
+ {
+ gamesPictureBox.BackgroundImage = Image.FromFile(ImagePath);
+ }
+
+ // If no image exists, BackgroundImage stays null and the Paint handler draws the placeholder
+ gamesPictureBox.Invalidate(); // Force repaint to show placeholder
// Fast trailer loading path
- webView21.Enabled = true;
- webView21.Show();
-
- try
+ if (settings.TrailersEnabled)
{
- var videoId = await ResolveVideoIdAsync(CurrentGameName);
- if (string.IsNullOrEmpty(videoId))
+ webView21.Enabled = true;
+ webView21.Show();
+
+ try
{
- changeTitle("No Trailer found");
+ var videoId = await ResolveVideoIdAsync(CurrentGameName);
+ if (string.IsNullOrEmpty(videoId))
+ {
+ changeTitle("No Trailer found");
+ ShowVideoPlaceholder();
+ }
+ else
+ {
+ await ShowVideoAsync(videoId);
+ }
}
- else
+ catch (Exception ex)
{
- await ShowVideoAsync(videoId);
+ Logger.Log("Error loading Trailer");
+ Logger.Log(ex.Message);
+ ShowVideoPlaceholder();
}
}
- catch (Exception ex)
+ else
{
- changeTitle($"Error loading Trailer: {ex.Message}");
- Logger.Log("Error loading Trailer");
- Logger.Log(ex.Message);
+ ShowVideoPlaceholder();
}
string NotePath = $"{SideloaderRCLONE.NotesFolder}\\{CurrentReleaseName}.txt";
- notesRichTextBox.Text = File.Exists(NotePath) ? File.ReadAllText(NotePath) : "";
+
+ if (!isGalleryView)
+ {
+ notesRichTextBox.Text = File.Exists(NotePath) ? File.ReadAllText(NotePath) : "";
+ UpdateNotesScrollBar();
+ }
}
private async void ListViewUninstallButton_Click(object sender, EventArgs e)
@@ -4524,21 +4709,25 @@ function onYouTubeIframeAPIReady() {
public void UpdateGamesButton_Click(object sender, EventArgs e)
{
- _ = GetDeviceID();
- _ = FlexibleMessageBox.Show(Program.form, "If your device is not Connected, hit reconnect first or it won't work!\nNOTE: THIS MAY TAKE UP TO 60 SECONDS.\nThere will be a Popup text window with all updates available when it is done!", "Is device connected?", MessageBoxButtons.OKCancel);
+ if (!DeviceConnected && Devices.Count == 0)
+ {
+ FlexibleMessageBox.Show(Program.form,
+ "No device connected. Please connect your Quest and click 'RECONNECT DEVICE' first.",
+ "Device Required",
+ MessageBoxButtons.OK);
+ return;
+ }
+
+ changeTitle("Refreshing installed apps and checking for updates...");
listAppsBtn();
initListView(false);
if (SideloaderRCLONE.games.Count < 1)
{
- _ = FlexibleMessageBox.Show(Program.form, "There are no games in rclone, please check your internet connection and check if the config is working properly");
+ FlexibleMessageBox.Show(Program.form,
+ "There are no games in rclone, please check your internet connection and verify the config is working properly.");
return;
}
-
- // if (gamesToUpdate.Length > 0)
- // FlexibleMessageBox.Show(Program.form, gamesToUpdate);
- // else
- // FlexibleMessageBox.Show(Program.form, "All your games are up to date!");
}
private void gamesListView_MouseDoubleClick(object sender, MouseEventArgs e)
@@ -4561,11 +4750,13 @@ function onYouTubeIframeAPIReady() {
private void searchTextBox_Enter(object sender, EventArgs e)
{
- if (searchTextBox.Text == "Search..." && searchTextBox.ForeColor == Color.LightGray)
+ if (searchTextBox.Text == "Search...")
{
searchTextBox.Text = "";
- searchTextBox.ForeColor = Color.White;
}
+
+ searchTextBox.Font = new Font("Segoe UI", 9F, FontStyle.Bold);
+ searchTextBox.ForeColor = Color.FromArgb(((int)(((byte)(218)))), ((int)(((byte)(218)))), ((int)(((byte)(218)))));
}
private void searchTextBox_Leave(object sender, EventArgs e)
@@ -4573,8 +4764,10 @@ function onYouTubeIframeAPIReady() {
if (string.IsNullOrWhiteSpace(searchTextBox.Text))
{
searchTextBox.Text = "Search...";
- searchTextBox.ForeColor = Color.LightGray;
+ searchTextBox.Font = new Font("Segoe UI", 9F, FontStyle.Italic);
}
+
+ searchTextBox.ForeColor = Color.FromArgb(((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
if (searchTextBox.Visible)
{
@@ -4598,11 +4791,11 @@ function onYouTubeIframeAPIReady() {
}
bool updateAvailableClicked = false;
- private void updateAvailable_Click(object sender, EventArgs e)
+ private void btnUpdateAvailable_Click(object sender, EventArgs e)
{
- lblUpToDate.Click -= lblUpToDate_Click;
- lblUpdateAvailable.Click -= updateAvailable_Click;
- lblNeedsDonate.Click -= lblNeedsDonate_Click;
+ btnInstalled.Click -= btnInstalled_Click;
+ btnUpdateAvailable.Click -= btnUpdateAvailable_Click;
+ btnNewerThanList.Click -= btnNewerThanList_Click;
if (upToDate_Clicked || NeedsDonation_Clicked)
{
@@ -4614,7 +4807,7 @@ function onYouTubeIframeAPIReady() {
if (!updateAvailableClicked)
{
updateAvailableClicked = true;
- FilterListByColor(ColorTranslator.FromHtml("#4daa57")); // Update available color
+ FilterListByColor(ColorUpdateAvailable); // Update available color
}
else
{
@@ -4622,15 +4815,18 @@ function onYouTubeIframeAPIReady() {
RestoreFullList();
}
+ // Update button visual states
+ UpdateFilterButtonStates();
+
// Refresh gallery view if active
if (isGalleryView)
{
PopulateGalleryView();
}
- lblUpToDate.Click += lblUpToDate_Click;
- lblUpdateAvailable.Click += updateAvailable_Click;
- lblNeedsDonate.Click += lblNeedsDonate_Click;
+ btnInstalled.Click += btnInstalled_Click;
+ btnUpdateAvailable.Click += btnUpdateAvailable_Click;
+ btnNewerThanList.Click += btnNewerThanList_Click;
}
private async void ADBcommandbox_KeyPress(object sender, KeyPressEventArgs e)
@@ -4648,7 +4844,7 @@ function onYouTubeIframeAPIReady() {
string errorChecker = ADB.RunAdbCommandToString(IPcmnd).Output;
if (errorChecker.Contains("cannot resolve host") | errorChecker.Contains("cannot connect to"))
{
- changeTitle(String.Empty);
+ changeTitle("");
_ = FlexibleMessageBox.Show(Program.form, "Manual ADB over WiFi Connection failed\nExiting...", "Manual IP Connection Failed!", MessageBoxButtons.OK);
manualIP = false;
adbCmd_CommandBox.Visible = false;
@@ -4685,16 +4881,16 @@ function onYouTubeIframeAPIReady() {
else
{
string sentCommand = adbCmd_CommandBox.Text.Replace("adb", "");
- Program.form.changeTitle($"Running adb command: ADB {sentCommand}");
+ Program.form.changeTitle($"Running ADB command: ADB {sentCommand}");
string output = ADB.RunAdbCommandToString(adbCmd_CommandBox.Text).Output;
- _ = FlexibleMessageBox.Show(Program.form, $"Ran adb command: ADB {sentCommand}\r\nOutput:\r\n{output}");
+ _ = FlexibleMessageBox.Show(Program.form, $"Ran ADB command: ADB {sentCommand}\r\nOutput:\r\n{output}");
adbCmd_CommandBox.Visible = false;
adbCmd_btnToggleUpdates.Visible = false;
adbCmd_btnSend.Visible = false;
adbCmd_Label.Visible = false;
adbCmd_background.Visible = false;
_ = gamesListView.Focus();
- Program.form.changeTitle(String.Empty);
+ changeTitle("");
}
}
if (e.KeyChar == (char)Keys.Escape)
@@ -4734,12 +4930,13 @@ function onYouTubeIframeAPIReady() {
private async void pullAppToDesktopBtn_Click(object sender, EventArgs e)
{
- if (m_combo.SelectedIndex == -1)
+ string selectedApp = ShowInstalledAppSelector("Select an app to pull to desktop");
+ if (selectedApp == null)
{
- notify("Please select an App from the Dropdown");
return;
}
- DialogResult dialogResult1 = FlexibleMessageBox.Show(Program.form, $"Do you want to extract {m_combo.SelectedItem}'s apk and obb to a folder on your desktop now?", "Extract app?", MessageBoxButtons.YesNo);
+
+ DialogResult dialogResult1 = FlexibleMessageBox.Show(Program.form, $"Do you want to extract {selectedApp}'s APK and OBB to a folder on your desktop now?", "Extract app?", MessageBoxButtons.YesNo);
if (dialogResult1 == DialogResult.No)
{
return;
@@ -4750,7 +4947,7 @@ function onYouTubeIframeAPIReady() {
isworking = true;
progressBar.Style = ProgressBarStyle.Marquee;
string HWID = SideloaderUtilities.UUID();
- string GameName = m_combo.SelectedItem.ToString();
+ string GameName = selectedApp;
string packageName = Sideloader.gameNameToPackageName(GameName);
string InstalledVersionCode = ADB.RunAdbCommandToString($"shell \"dumpsys package {packageName} | grep versionCode -F\"").Output;
InstalledVersionCode = Utilities.StringUtilities.RemoveEverythingBeforeFirst(InstalledVersionCode, "versionCode=");
@@ -4780,7 +4977,7 @@ function onYouTubeIframeAPIReady() {
await Task.Delay(100);
}
- changeTitle("Extracting obb if it exists....");
+ changeTitle("Extracting OBB if it exists....");
Thread t2 = new Thread(() =>
{
output += ADB.RunAdbCommandToString($"pull \"/sdcard/Android/obb/{packageName}\" \"{settings.MainDir}\\{packageName}\"");
@@ -4826,18 +5023,18 @@ function onYouTubeIframeAPIReady() {
File.Delete($"{settings.MainDir}\\{GameName} v{VersionInt} {packageName}.zip");
Directory.Delete($"{settings.MainDir}\\{packageName}", true);
isworking = false;
- Program.form.changeTitle(" \n\n");
+ Program.form.changeTitle("");
progressBar.Style = ProgressBarStyle.Continuous;
_ = FlexibleMessageBox.Show(Program.form, $"{GameName} pulled to:\n\n{GameName} v{VersionInt} {packageName}.zip\n\nOn your desktop!");
}
}
bool upToDate_Clicked = false;
- private void lblUpToDate_Click(object sender, EventArgs e)
+ private void btnInstalled_Click(object sender, EventArgs e)
{
- lblUpToDate.Click -= lblUpToDate_Click;
- lblUpdateAvailable.Click -= updateAvailable_Click;
- lblNeedsDonate.Click -= lblNeedsDonate_Click;
+ btnInstalled.Click -= btnInstalled_Click;
+ btnUpdateAvailable.Click -= btnUpdateAvailable_Click;
+ btnNewerThanList.Click -= btnNewerThanList_Click;
if (updateAvailableClicked || NeedsDonation_Clicked)
{
@@ -4849,7 +5046,8 @@ function onYouTubeIframeAPIReady() {
if (!upToDate_Clicked)
{
upToDate_Clicked = true;
- FilterListByColor(ColorTranslator.FromHtml("#3c91e6")); // Up to date color
+ // Filter to show installed, update available and newer than list entries
+ FilterListByColors(new[] { ColorInstalled, ColorUpdateAvailable, ColorDonateGame });
}
else
{
@@ -4857,23 +5055,26 @@ function onYouTubeIframeAPIReady() {
RestoreFullList();
}
+ // Update button visual states
+ UpdateFilterButtonStates();
+
// Refresh gallery view if active
if (isGalleryView)
{
PopulateGalleryView();
}
- lblUpToDate.Click += lblUpToDate_Click;
- lblUpdateAvailable.Click += updateAvailable_Click;
- lblNeedsDonate.Click += lblNeedsDonate_Click;
+ btnInstalled.Click += btnInstalled_Click;
+ btnUpdateAvailable.Click += btnUpdateAvailable_Click;
+ btnNewerThanList.Click += btnNewerThanList_Click;
}
bool NeedsDonation_Clicked = false;
- private void lblNeedsDonate_Click(object sender, EventArgs e)
+ private void btnNewerThanList_Click(object sender, EventArgs e)
{
- lblUpToDate.Click -= lblUpToDate_Click;
- lblUpdateAvailable.Click -= updateAvailable_Click;
- lblNeedsDonate.Click -= lblNeedsDonate_Click;
+ btnInstalled.Click -= btnInstalled_Click;
+ btnUpdateAvailable.Click -= btnUpdateAvailable_Click;
+ btnNewerThanList.Click -= btnNewerThanList_Click;
if (updateAvailableClicked || upToDate_Clicked)
{
@@ -4885,7 +5086,7 @@ function onYouTubeIframeAPIReady() {
if (!NeedsDonation_Clicked)
{
NeedsDonation_Clicked = true;
- FilterListByColor(ColorTranslator.FromHtml("#cb9cf2")); // Needs donation color
+ FilterListByColor(ColorDonateGame); // Needs donation color
}
else
{
@@ -4893,15 +5094,49 @@ function onYouTubeIframeAPIReady() {
RestoreFullList();
}
+ // Update button visual states
+ UpdateFilterButtonStates();
+
// Refresh gallery view if active
if (isGalleryView)
{
PopulateGalleryView();
}
- lblUpToDate.Click += lblUpToDate_Click;
- lblUpdateAvailable.Click += updateAvailable_Click;
- lblNeedsDonate.Click += lblNeedsDonate_Click;
+ btnInstalled.Click += btnInstalled_Click;
+ btnUpdateAvailable.Click += btnUpdateAvailable_Click;
+ btnNewerThanList.Click += btnNewerThanList_Click;
+ }
+
+ private void FilterListByColors(Color[] targetColors)
+ {
+ changeTitle("Filtering Game List...");
+
+ if (_allItems == null || _allItems.Count == 0)
+ {
+ changeTitle("No games to filter");
+ return;
+ }
+
+ var targetArgbs = new HashSet(targetColors.Select(c => c.ToArgb()));
+
+ var filteredItems = _allItems
+ .Where(item => targetArgbs.Contains(item.ForeColor.ToArgb()))
+ .ToList();
+
+ gamesListView.BeginUpdate();
+ gamesListView.Items.Clear();
+ gamesListView.Items.AddRange(filteredItems.ToArray());
+ gamesListView.EndUpdate();
+
+ // Refresh gallery view if active - set data source before calling PopulateGalleryView
+ if (isGalleryView)
+ {
+ _galleryDataSource = filteredItems;
+ PopulateGalleryView();
+ }
+
+ changeTitle("");
}
private void FilterListByColor(Color targetColor)
@@ -4930,7 +5165,7 @@ function onYouTubeIframeAPIReady() {
PopulateGalleryView();
}
- changeTitle(" \n\n");
+ changeTitle("");
}
private void RestoreFullList()
@@ -4953,7 +5188,7 @@ function onYouTubeIframeAPIReady() {
PopulateGalleryView();
}
- changeTitle(" \n\n");
+ changeTitle("");
}
public static void OpenDirectory(string directoryPath)
@@ -5001,17 +5236,17 @@ function onYouTubeIframeAPIReady() {
{
// No Device Mode is currently On. Toggle it Off
settings.NodeviceMode = false;
- btnNoDevice.Text = "Disable Sideloading";
+ btnNoDevice.Text = "DISABLE SIDELOADING";
- changeTitle($"Sideloading has been Enabled");
+ changeTitle($"Sideloading ENABLED");
}
else
{
settings.NodeviceMode = true;
settings.DeleteAllAfterInstall = false;
- btnNoDevice.Text = "Enable Sideloading";
+ btnNoDevice.Text = "ENABLE SIDELOADING";
- changeTitle($"Sideloading Disabled. Games will only Download.");
+ changeTitle($"Sideloading DISABLED. Games will only download");
}
settings.Save();
@@ -5062,11 +5297,11 @@ function onYouTubeIframeAPIReady() {
ToolStripMenuItem favoriteMenuItem = favoriteGame.Items[0] as ToolStripMenuItem;
if (SettingsManager.Instance.FavoritedGames.Contains(packageName))
{
- favoriteButton.Text = "Unfavorite"; // If it's already favorited, show "Unfavorite"
+ favoriteButton.Text = "Remove from Favorites"; // If it's already favorited, show "Unfavorite"
}
else
{
- favoriteButton.Text = "Favorite"; // If it's not favorited, show "Favorite"
+ favoriteButton.Text = "★ Add to Favorites"; // If it's not favorited, show "Favorite"
}
// Show the context menu at the mouse position
@@ -5081,13 +5316,13 @@ function onYouTubeIframeAPIReady() {
string packageName = _rightClickedItem.SubItems[1].Text;
// Check the menu item's text to decide whether to add or remove the game from favorites
- if ((sender as ToolStripMenuItem).Text == "Favorite")
+ if ((sender as ToolStripMenuItem).Text == "★ Add to Favorites")
{
// Add to favorites
settings.AddFavoriteGame(packageName);
Console.WriteLine($"{packageName} has been added to favorites.");
}
- else if ((sender as ToolStripMenuItem).Text == "Unfavorite")
+ else if ((sender as ToolStripMenuItem).Text == "Remove from Favorites")
{
// Remove from favorites
settings.RemoveFavoriteGame(packageName);
@@ -5098,26 +5333,70 @@ function onYouTubeIframeAPIReady() {
ToolStripMenuItem favoriteMenuItem = sender as ToolStripMenuItem;
if (settings.FavoritedGames.Contains(packageName))
{
- favoriteMenuItem.Text = "Unfavorite";
+ favoriteMenuItem.Text = "Remove from Favorites";
}
else
{
- favoriteMenuItem.Text = "Favorite";
+ favoriteMenuItem.Text = "★ Add to Favorites";
}
}
}
private void favoriteSwitcher_Click(object sender, EventArgs e)
{
- if (favoriteSwitcher.Text == "Games List")
+ // Guard: ensure _allItems is populated
+ if (_allItems == null || _allItems.Count == 0)
{
- favoriteSwitcher.Text = "Favorited Games";
- initListView(true);
+ Logger.Log("favoriteSwitcher_Click: _allItems is null or empty");
+ return;
+ }
+
+ bool showFavoritesOnly = favoriteSwitcher.Text == "FAVORITES";
+
+ if (showFavoritesOnly)
+ {
+ favoriteSwitcher.Text = "ALL";
+
+ var favSet = new HashSet(settings.FavoritedGames, StringComparer.OrdinalIgnoreCase);
+
+ // DEBUG: Check if favorites exist
+ if (favSet.Count == 0)
+ {
+ changeTitle("No favorites saved yet!");
+ return;
+ }
+
+ var favoriteItems = _allItems
+ .Where(item => item.SubItems.Count > 1 && favSet.Contains(item.SubItems[1].Text))
+ .ToList();
+
+ gamesListView.BeginUpdate();
+ gamesListView.Items.Clear();
+ gamesListView.Items.AddRange(favoriteItems.ToArray());
+ gamesListView.EndUpdate();
+
+ _galleryDataSource = favoriteItems;
+ if (isGalleryView && _fastGallery != null)
+ {
+ _fastGallery.RefreshFavoritesCache();
+ _fastGallery.UpdateItems(favoriteItems);
+ }
}
else
{
- favoriteSwitcher.Text = "Games List";
- initListView(false);
+ favoriteSwitcher.Text = "FAVORITES";
+
+ gamesListView.BeginUpdate();
+ gamesListView.Items.Clear();
+ gamesListView.Items.AddRange(_allItems.ToArray());
+ gamesListView.EndUpdate();
+
+ _galleryDataSource = _allItems;
+ if (isGalleryView && _fastGallery != null)
+ {
+ _fastGallery.RefreshFavoritesCache();
+ _fastGallery.UpdateItems(_allItems);
+ }
}
}
@@ -5175,8 +5454,8 @@ function onYouTubeIframeAPIReady() {
}
}
- // Calculate storage percentage used
- int storagePercentUsed = totalSpace > 0 ? (int)((usedSpace * 100) / totalSpace) : 0;
+ // Calculate storage percentage used - clamped to 1%..100%
+ int storagePercentUsed = Math.Min(100, Math.Max(1, (100 - (totalSpace > 0 ? (int)((usedSpace * 100) / totalSpace) : 0))));
// Update UI on main thread
questInfoPanel.Invoke(() =>
@@ -5352,63 +5631,17 @@ function onYouTubeIframeAPIReady() {
}
}
- private void CreateSearchIcon()
- {
- if (this.searchIconPictureBox == null)
- {
- this.searchIconPictureBox = new PictureBox
- {
- Name = "searchIconPictureBox",
- SizeMode = PictureBoxSizeMode.Zoom,
- Size = new Size(16, 16),
- BackColor = searchTextBox.BackColor, // blend with textbox
- TabStop = false,
- Enabled = false // let clicks go to the textbox
- };
-
- this.searchIconPictureBox.Image = Properties.Resources.SearchGlass;
- }
-
- // Parent the icon to the same container as the textbox
- var host = searchTextBox.Parent ?? this;
- if (this.searchIconPictureBox.Parent != host)
- {
- host.Controls.Add(this.searchIconPictureBox);
- this.searchIconPictureBox.BringToFront();
- }
-
- // 6px left padding inside the textbox area
- int leftInset = 6;
- var pt = new Point(
- searchTextBox.Left + leftInset,
- searchTextBox.Top + (searchTextBox.Height - searchIconPictureBox.Height) / 2
- );
- searchIconPictureBox.Location = pt;
- }
-
- private void ApplySearchTextMargins()
- {
- if (searchTextBox == null) return;
-
- // icon width + left inset + small gap
- int leftInset = 6;
- int leftMarginPixels = (searchIconPictureBox?.Width ?? 16) + leftInset + 2;
- int rightMarginPixels = 2;
-
- if (searchTextBox.IsHandleCreated)
- {
- int lParam = (rightMarginPixels << 16) | (leftMarginPixels & 0xFFFF);
- SendMessage(searchTextBox.Handle, EM_SETMARGINS, (IntPtr)(EC_LEFTMARGIN | EC_RIGHTMARGIN), (IntPtr)lParam);
- }
- }
-
private void btnViewToggle_Click(object sender, EventArgs e)
{
isGalleryView = !isGalleryView;
+ // Save user preference
+ settings.UseGalleryView = isGalleryView;
+ settings.Save();
+
if (isGalleryView)
{
- btnViewToggle.Text = "List";
+ btnViewToggle.Text = "LIST";
gamesListView.Visible = false;
gamesGalleryView.Visible = true;
@@ -5420,7 +5653,7 @@ function onYouTubeIframeAPIReady() {
}
else
{
- btnViewToggle.Text = "Gallery";
+ btnViewToggle.Text = "GALLERY";
gamesGalleryView.Visible = false;
gamesListView.Visible = true;
CleanupGalleryView();
@@ -5581,20 +5814,32 @@ function onYouTubeIframeAPIReady() {
var item = _fastGallery.GetItemAtIndex(itemIndex);
if (item == null || item.SubItems.Count <= 2) return;
- string packageName = item.SubItems[2].Text;
+ string packageName = item.SubItems[SideloaderRCLONE.PackageNameIndex].Text;
+ string releaseName = item.SubItems[SideloaderRCLONE.ReleaseNameIndex].Text;
+ string gameName = item.SubItems[SideloaderRCLONE.GameNameIndex].Text;
+
+ // Clear all selections first - must deselect each item individually
+ // because SelectedItems.Clear() doesn't work reliably when ListView is hidden
+ foreach (ListViewItem listItem in gamesListView.Items)
+ {
+ listItem.Selected = false;
+ }
// Find and select the matching item in gamesListView
foreach (ListViewItem listItem in gamesListView.Items)
{
if (listItem.SubItems.Count > 2 && listItem.SubItems[2].Text == packageName)
{
- gamesListView.SelectedItems.Clear();
listItem.Selected = true;
listItem.EnsureVisible();
- gamesListView_SelectedIndexChanged(gamesListView, EventArgs.Empty);
break;
}
}
+
+ // Load release notes
+ string notePath = Path.Combine(SideloaderRCLONE.NotesFolder, $"{releaseName}.txt");
+ notesRichTextBox.Text = File.Exists(notePath) ? File.ReadAllText(notePath) : "";
+ UpdateNotesScrollBar();
}
private void FastGallery_TileDoubleClicked(object sender, int itemIndex)
@@ -5607,12 +5852,18 @@ function onYouTubeIframeAPIReady() {
string packageName = item.SubItems[2].Text;
+ // Clear all selections first - must deselect each item individually
+ // because SelectedItems.Clear() doesn't work reliably when ListView is hidden
+ foreach (ListViewItem listItem in gamesListView.Items)
+ {
+ listItem.Selected = false;
+ }
+
// Find and select the matching item in gamesListView, then trigger download
foreach (ListViewItem listItem in gamesListView.Items)
{
if (listItem.SubItems.Count > 2 && listItem.SubItems[2].Text == packageName)
{
- gamesListView.SelectedItems.Clear();
listItem.Selected = true;
downloadInstallGameButton_Click(downloadInstallGameButton, EventArgs.Empty);
break;
@@ -5620,7 +5871,6 @@ function onYouTubeIframeAPIReady() {
}
}
-
private void ListViewUninstallButton_Paint(object sender, PaintEventArgs e)
{
var g = e.Graphics;
@@ -5684,6 +5934,778 @@ function onYouTubeIframeAPIReady() {
}
}
}
+
+ private void gamesPictureBox_Paint(object sender, PaintEventArgs e)
+ {
+ // Only draw placeholder if no image is loaded
+ if (gamesPictureBox.BackgroundImage != null &&
+ gamesPictureBox.BackgroundImage.Width > 1 &&
+ gamesPictureBox.BackgroundImage.Height > 1)
+ {
+ return;
+ }
+
+ var g = e.Graphics;
+ g.SmoothingMode = SmoothingMode.AntiAlias;
+
+ var thumbRect = new Rectangle(0, 0, gamesPictureBox.Width, gamesPictureBox.Height);
+
+ // Draw placeholder background
+ using (var brush = new SolidBrush(Color.FromArgb(35, 35, 40)))
+ {
+ g.FillRectangle(brush, thumbRect);
+ }
+
+ // When disclaimer is gone
+ if (freeDisclaimer.Enabled == false)
+ {
+ // Draw emoji placeholder
+ using (var textBrush = new SolidBrush(Color.FromArgb(70, 70, 80)))
+ {
+ var sf = new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center };
+ g.DrawString("🎮", new Font("Segoe UI Emoji", 32f), textBrush, thumbRect, sf);
+ }
+ }
+ }
+
+ private void webViewPlaceholderPanel_Paint(object sender, PaintEventArgs e)
+ {
+ var g = e.Graphics;
+ g.SmoothingMode = SmoothingMode.AntiAlias;
+ g.PixelOffsetMode = PixelOffsetMode.HighQuality;
+
+ int radius = 8;
+ var rect = new Rectangle(0, 0, webViewPlaceholderPanel.Width - 1, webViewPlaceholderPanel.Height - 1);
+ Color panelColor = Color.FromArgb(24, 26, 30);
+ Color cornerBgColor = Color.FromArgb(32, 35, 45);
+
+ // Clear with corner background color first
+ g.Clear(cornerBgColor);
+
+ using (var path = CreateRoundedRectPath(rect, radius))
+ {
+ // Draw rounded background
+ using (var brush = new SolidBrush(panelColor))
+ {
+ g.FillPath(brush, path);
+ }
+ }
+
+ // Apply rounded region to clip the panel
+ using (var regionPath = CreateRoundedRectPath(new Rectangle(0, 0, webViewPlaceholderPanel.Width, webViewPlaceholderPanel.Height), radius))
+ {
+ webViewPlaceholderPanel.Region = new Region(regionPath);
+ }
+
+ // Draw emoji placeholder
+ using (var textBrush = new SolidBrush(Color.FromArgb(60, 65, 70)))
+ {
+ var sf = new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center };
+ g.DrawString("🎮", new Font("Segoe UI Emoji", 32f), textBrush, rect, sf);
+ }
+ }
+
+ public void ShowVideoPlaceholder()
+ {
+ webViewPlaceholderPanel.Visible = true;
+ webViewPlaceholderPanel.BringToFront();
+ }
+
+ public void HideVideoPlaceholder()
+ {
+ webViewPlaceholderPanel.Visible = false;
+ }
+
+ private void SubscribeToHoverEvents(Control parent)
+ {
+ parent.MouseEnter += QuestInfoHoverEnter;
+ parent.MouseLeave += QuestInfoHoverLeave;
+
+ foreach (Control child in parent.Controls)
+ {
+ SubscribeToHoverEvents(child);
+ }
+ }
+
+ private string ShowInstalledAppSelector(string promptText = "Select an Installed App...")
+ {
+ // Refresh the list of installed apps
+ listAppsBtn();
+
+ if (m_combo.Items.Count == 0)
+ {
+ FlexibleMessageBox.Show(Program.form, "No installed apps found on the device.");
+ return null;
+ }
+
+ // Create a dialog to show the combo selection
+ using (Form dialog = new Form())
+ {
+ dialog.Text = promptText;
+ dialog.Size = new Size(450, 150);
+ dialog.StartPosition = FormStartPosition.CenterParent;
+ dialog.FormBorderStyle = FormBorderStyle.FixedDialog;
+ dialog.MaximizeBox = false;
+ dialog.MinimizeBox = false;
+ dialog.BackColor = Color.FromArgb(20, 24, 29);
+ dialog.ForeColor = Color.White;
+
+ var label = new Label
+ {
+ Text = promptText,
+ ForeColor = Color.White,
+ AutoSize = true,
+ Location = new Point(15, 15)
+ };
+
+ var comboBox = new ComboBox
+ {
+ Location = new Point(15, 40),
+ Size = new Size(400, 24),
+ DropDownStyle = ComboBoxStyle.DropDown,
+ BackColor = Color.FromArgb(42, 45, 58),
+ ForeColor = Color.White,
+ FlatStyle = FlatStyle.Flat
+ };
+
+ // Copy items from m_combo
+ foreach (var item in m_combo.Items)
+ {
+ comboBox.Items.Add(item);
+ }
+
+ var okButton = CreateStyledButton("OK", DialogResult.OK, new Point(255, 75));
+ var cancelButton = CreateStyledButton("Cancel", DialogResult.Cancel, new Point(340, 75), false);
+
+ dialog.Controls.AddRange(new Control[] { label, comboBox, okButton, cancelButton });
+ dialog.AcceptButton = okButton;
+ dialog.CancelButton = cancelButton;
+
+ if (dialog.ShowDialog(this) == DialogResult.OK && comboBox.SelectedIndex != -1)
+ {
+ return comboBox.SelectedItem.ToString();
+ }
+ }
+
+ return null;
+ }
+
+ private string ShowDeviceSelector(string promptText = "Select a Device")
+ {
+ // Refresh the list of devices first
+ string output = ADB.RunAdbCommandToString("devices").Output;
+ string[] lines = output.Split('\n');
+
+ var deviceList = new List();
+ for (int i = 1; i < lines.Length; i++)
+ {
+ string line = lines[i].Trim();
+ if (line.Length > 0 && !string.IsNullOrWhiteSpace(line))
+ {
+ string deviceId = line.Split('\t')[0];
+ if (!string.IsNullOrEmpty(deviceId))
+ {
+ deviceList.Add(deviceId);
+ }
+ }
+ }
+
+ if (deviceList.Count == 0)
+ {
+ FlexibleMessageBox.Show(Program.form, "No devices found. Please connect a device and try again.");
+ return null;
+ }
+
+ // If only one device, return it directly
+ if (deviceList.Count == 1)
+ {
+ // Update internal combo for compatibility
+ devicesComboBox.Items.Clear();
+ devicesComboBox.Items.Add(deviceList[0]);
+ devicesComboBox.SelectedIndex = 0;
+ return deviceList[0];
+ }
+
+ // Create a dialog to show the device selection
+ using (Form dialog = new Form())
+ {
+ dialog.Text = promptText;
+ dialog.Size = new Size(400, 150);
+ dialog.StartPosition = FormStartPosition.CenterParent;
+ dialog.FormBorderStyle = FormBorderStyle.FixedDialog;
+ dialog.MaximizeBox = false;
+ dialog.MinimizeBox = false;
+ dialog.BackColor = Color.FromArgb(20, 24, 29);
+ dialog.ForeColor = Color.White;
+
+ var label = new Label
+ {
+ Text = promptText,
+ ForeColor = Color.White,
+ AutoSize = true,
+ Location = new Point(15, 15)
+ };
+
+ var comboBox = new ComboBox
+ {
+ Location = new Point(15, 40),
+ Size = new Size(350, 24),
+ DropDownStyle = ComboBoxStyle.DropDownList,
+ BackColor = Color.FromArgb(42, 45, 58),
+ ForeColor = Color.White,
+ FlatStyle = FlatStyle.Flat
+ };
+
+ // Add devices to combo
+ foreach (var device in deviceList)
+ {
+ comboBox.Items.Add(device);
+ }
+
+ if (comboBox.Items.Count > 0)
+ {
+ comboBox.SelectedIndex = 0;
+ }
+
+ var okButton = CreateStyledButton("OK", DialogResult.OK, new Point(205, 75));
+ var cancelButton = CreateStyledButton("Cancel", DialogResult.Cancel, new Point(290, 75), false);
+
+ dialog.Controls.AddRange(new Control[] { label, comboBox, okButton, cancelButton });
+ dialog.AcceptButton = okButton;
+ dialog.CancelButton = cancelButton;
+
+ if (dialog.ShowDialog(this) == DialogResult.OK && comboBox.SelectedIndex != -1)
+ {
+ string selectedDevice = comboBox.SelectedItem.ToString();
+
+ // Update internal combo for compatibility
+ devicesComboBox.Items.Clear();
+ foreach (var device in deviceList)
+ {
+ devicesComboBox.Items.Add(device);
+ }
+ devicesComboBox.SelectedItem = selectedDevice;
+
+ return selectedDevice;
+ }
+ }
+
+ return null;
+ }
+
+ private void selectDeviceButton_Click(object sender, EventArgs e)
+ {
+ string selectedDevice = ShowDeviceSelector("Select a Device");
+ if (selectedDevice != null)
+ {
+ ADB.DeviceID = selectedDevice;
+ changeTitlebarToDevice();
+ showAvailableSpace();
+ changeTitle($"Selected device: {selectedDevice}", true);
+ }
+ }
+
+ private void selectMirrorButton_Click(object sender, EventArgs e)
+ {
+ string selectedMirror = ShowMirrorSelector("Select a Mirror");
+ if (selectedMirror != null)
+ {
+ // Find and select the mirror in the hidden remotesList
+ for (int i = 0; i < remotesList.Items.Count; i++)
+ {
+ if (remotesList.Items[i].ToString() == selectedMirror)
+ {
+ remotesList.SelectedIndex = i;
+ break;
+ }
+ }
+ }
+ }
+
+ private string ShowMirrorSelector(string promptText = "Select a Mirror")
+ {
+ if (remotesList.Items.Count == 0)
+ {
+ FlexibleMessageBox.Show(this, "No mirrors available.");
+ return null;
+ }
+
+ // If only one mirror, just inform the user
+ if (remotesList.Items.Count == 1)
+ {
+ string onlyMirror = remotesList.Items[0].ToString();
+ FlexibleMessageBox.Show(this, $"Currently using '{onlyMirror}' mirror. No other mirrors available.");
+ return onlyMirror;
+ }
+
+ using (Form dialog = new Form())
+ {
+ dialog.Text = promptText;
+ dialog.Size = new Size(350, 150);
+ dialog.StartPosition = FormStartPosition.CenterParent;
+ dialog.FormBorderStyle = FormBorderStyle.FixedDialog;
+ dialog.MaximizeBox = false;
+ dialog.MinimizeBox = false;
+ dialog.BackColor = Color.FromArgb(20, 24, 29);
+ dialog.ForeColor = Color.White;
+
+ var label = new Label
+ {
+ Text = $"{promptText} (Current: {remotesList.SelectedItem ?? "None"})",
+ ForeColor = Color.White,
+ AutoSize = true,
+ Location = new Point(15, 15)
+ };
+
+ var comboBox = new ComboBox
+ {
+ Location = new Point(15, 40),
+ Size = new Size(300, 24),
+ DropDownStyle = ComboBoxStyle.DropDownList,
+ BackColor = Color.FromArgb(42, 45, 58),
+ ForeColor = Color.White,
+ FlatStyle = FlatStyle.Flat
+ };
+
+ // Add mirrors to combo
+ foreach (var item in remotesList.Items)
+ {
+ comboBox.Items.Add(item.ToString());
+ }
+
+ // Select current mirror
+ if (remotesList.SelectedIndex >= 0)
+ {
+ comboBox.SelectedIndex = remotesList.SelectedIndex;
+ }
+ else if (comboBox.Items.Count > 0)
+ {
+ comboBox.SelectedIndex = 0;
+ }
+
+ var okButton = CreateStyledButton("OK", DialogResult.OK, new Point(155, 75));
+ var cancelButton = CreateStyledButton("Cancel", DialogResult.Cancel, new Point(240, 75), false);
+
+ dialog.Controls.AddRange(new Control[] { label, comboBox, okButton, cancelButton });
+ dialog.AcceptButton = okButton;
+ dialog.CancelButton = cancelButton;
+
+ if (dialog.ShowDialog(this) == DialogResult.OK && comboBox.SelectedIndex != -1)
+ {
+ return comboBox.SelectedItem.ToString();
+ }
+ }
+
+ return null;
+ }
+
+ private Button CreateStyledButton(string text, DialogResult dialogResult, Point location, bool isPrimary = true)
+ {
+ var button = new Button
+ {
+ Text = text,
+ DialogResult = dialogResult,
+ Location = location,
+ Size = new Size(75, 28),
+ FlatStyle = FlatStyle.Flat,
+ BackColor = Color.FromArgb(42, 45, 58),
+ ForeColor = Color.White,
+ Font = new Font("Segoe UI", 9F),
+ Cursor = Cursors.Hand
+ };
+
+ button.FlatAppearance.BorderSize = 0;
+
+ // Track hover state
+ bool isHovered = false;
+
+ button.MouseEnter += (s, e) => { isHovered = true; button.Invalidate(); };
+ button.MouseLeave += (s, e) => { isHovered = false; button.Invalidate(); };
+
+ button.Paint += (s, e) =>
+ {
+ var btn = s as Button;
+ var g = e.Graphics;
+ g.SmoothingMode = SmoothingMode.AntiAlias;
+ g.PixelOffsetMode = PixelOffsetMode.HighQuality;
+
+ int radius = 4;
+ Rectangle drawRect = new Rectangle(1, 1, btn.Width - 2, btn.Height - 2);
+
+ // Clear with parent background
+ using (SolidBrush clearBrush = new SolidBrush(btn.Parent?.BackColor ?? Color.FromArgb(20, 24, 29)))
+ {
+ g.FillRectangle(clearBrush, 0, 0, btn.Width, btn.Height);
+ }
+
+ using (GraphicsPath path = CreateRoundedRectPath(drawRect, radius))
+ {
+ // Hover: accent color, Normal: dark button color
+ Color bgColor = isHovered
+ ? Color.FromArgb(93, 203, 173)
+ : btn.BackColor;
+
+ Color textColor = isHovered
+ ? Color.FromArgb(20, 20, 20)
+ : btn.ForeColor;
+
+ using (SolidBrush brush = new SolidBrush(bgColor))
+ {
+ g.FillPath(brush, path);
+ }
+
+ // Subtle border on normal state
+ if (!isHovered)
+ {
+ using (Pen borderPen = new Pen(Color.FromArgb(70, 75, 90), 1))
+ {
+ g.DrawPath(borderPen, path);
+ }
+ }
+
+ TextRenderer.DrawText(g, btn.Text, btn.Font,
+ new Rectangle(0, 0, btn.Width, btn.Height), textColor,
+ TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter);
+ }
+
+ // Set rounded region
+ using (GraphicsPath regionPath = CreateRoundedRectPath(new Rectangle(0, 0, btn.Width, btn.Height), radius))
+ {
+ btn.Region = new Region(regionPath);
+ }
+ };
+
+ return button;
+ }
+
+ private GraphicsPath CreateRoundedRectPath(Rectangle rect, int radius)
+ {
+ GraphicsPath path = new GraphicsPath();
+
+ if (radius <= 0)
+ {
+ path.AddRectangle(rect);
+ return path;
+ }
+
+ int diameter = radius * 2;
+ diameter = Math.Min(diameter, Math.Min(rect.Width, rect.Height));
+ radius = diameter / 2;
+
+ Rectangle arcRect = new Rectangle(rect.Location, new Size(diameter, diameter));
+
+ path.AddArc(arcRect, 180, 90);
+ arcRect.X = rect.Right - diameter;
+ path.AddArc(arcRect, 270, 90);
+ arcRect.Y = rect.Bottom - diameter;
+ path.AddArc(arcRect, 0, 90);
+ arcRect.X = rect.Left;
+ path.AddArc(arcRect, 90, 90);
+
+ path.CloseFigure();
+ return path;
+ }
+
+ private void UpdateFilterButtonStates()
+ {
+ Color inactiveStroke = Color.FromArgb(74, 74, 74);
+ Color activeBg = Color.FromArgb(40, 45, 55);
+ Color inactiveBg = Color.FromArgb(32, 35, 45);
+
+ // btnInstalled state
+ if (upToDate_Clicked)
+ {
+ btnInstalled.StrokeColor = ColorInstalled;
+ btnInstalled.Inactive1 = activeBg;
+ btnInstalled.Inactive2 = activeBg;
+ }
+ else
+ {
+ btnInstalled.StrokeColor = inactiveStroke;
+ btnInstalled.Inactive1 = inactiveBg;
+ btnInstalled.Inactive2 = inactiveBg;
+ }
+
+ // btnUpdateAvailable state
+ if (updateAvailableClicked)
+ {
+ btnUpdateAvailable.StrokeColor = ColorUpdateAvailable;
+ btnUpdateAvailable.Inactive1 = activeBg;
+ btnUpdateAvailable.Inactive2 = activeBg;
+ }
+ else
+ {
+ btnUpdateAvailable.StrokeColor = inactiveStroke;
+ btnUpdateAvailable.Inactive1 = inactiveBg;
+ btnUpdateAvailable.Inactive2 = inactiveBg;
+ }
+
+ // btnNewerThanList state
+ if (NeedsDonation_Clicked)
+ {
+ btnNewerThanList.StrokeColor = ColorDonateGame;
+ btnNewerThanList.Inactive1 = activeBg;
+ btnNewerThanList.Inactive2 = activeBg;
+ }
+ else
+ {
+ btnNewerThanList.StrokeColor = inactiveStroke;
+ btnNewerThanList.Inactive1 = inactiveBg;
+ btnNewerThanList.Inactive2 = inactiveBg;
+ }
+
+ // Force repaint
+ btnInstalled.Invalidate();
+ btnUpdateAvailable.Invalidate();
+ btnNewerThanList.Invalidate();
+ }
+
+ private void UnfocusSearchTextBox(object sender, EventArgs e)
+ {
+ // Only unfocus if the search text box currently has focus
+ if (searchTextBox.Focused)
+ {
+ // Move focus to the appropriate view
+ if (isGalleryView && gamesGalleryView.Visible)
+ {
+ gamesGalleryView.Focus();
+ }
+ else
+ {
+ gamesListView.Focus();
+ }
+ }
+ }
+
+ private void UpdateNotesScrollBar()
+ {
+ // Check if content height exceeds visible height
+ int contentHeight = notesRichTextBox.GetPositionFromCharIndex(notesRichTextBox.TextLength).Y
+ + notesRichTextBox.Font.Height;
+
+ if (contentHeight > notesRichTextBox.ClientSize.Height)
+ {
+ notesRichTextBox.ScrollBars = RichTextBoxScrollBars.Vertical;
+ }
+ else
+ {
+ notesRichTextBox.ScrollBars = RichTextBoxScrollBars.None;
+ }
+ }
+
+ public class CenteredMenuRenderer : ToolStripProfessionalRenderer
+ {
+ protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e)
+ {
+ var rect = new Rectangle(Point.Empty, e.Item.Size);
+ Color bgColor = e.Item.Selected ? Color.FromArgb(55, 58, 65) : Color.FromArgb(40, 42, 48);
+ using (var brush = new SolidBrush(bgColor))
+ e.Graphics.FillRectangle(brush, rect);
+ }
+
+ protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e)
+ {
+ // Use the full item bounds for centered text
+ var textRect = new Rectangle(0, 0, e.Item.Width, e.Item.Height);
+ TextRenderer.DrawText(e.Graphics, e.Text, e.TextFont, textRect, e.TextColor,
+ TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter);
+ }
+
+ protected override void OnRenderToolStripBackground(ToolStripRenderEventArgs e)
+ {
+ using (var brush = new SolidBrush(Color.FromArgb(40, 42, 48)))
+ e.Graphics.FillRectangle(brush, e.AffectedBounds);
+ }
+
+ protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
+ {
+ using (var pen = new Pen(Color.FromArgb(60, 63, 70)))
+ e.Graphics.DrawRectangle(pen, 0, 0, e.AffectedBounds.Width - 1, e.AffectedBounds.Height - 1);
+ }
+ }
+
+ public void SetTrailerVisibility(bool visible)
+ {
+ webView21.Enabled = visible;
+ webView21.Visible = visible;
+
+ if (!visible) ShowVideoPlaceholder();
+ }
+
+ private void InitializeModernPanels()
+ {
+ Color panelColor = Color.FromArgb(24, 26, 30);
+
+ // Create rounded panel for notesRichTextBox
+ notesPanel = CreateRoundedPanel(notesRichTextBox, panelColor, 8, true);
+
+ // Create rounded panel for gamesQueListBox
+ queuePanel = CreateRoundedPanel(gamesQueListBox, panelColor, 8, false);
+
+ // Bring labels to front so they appear above the panels
+ gamesQueueLabel.BringToFront();
+ lblNotes.BringToFront();
+ }
+
+ private Panel CreateRoundedPanel(Control childControl, Color panelColor, int radius, bool bNotes)
+ {
+ // Create wrapper panel
+ var panel = new Panel
+ {
+ Location = childControl.Location,
+ Size = new Size(childControl.Width + 24, childControl.Height + 25),
+ Anchor = childControl.Anchor,
+ BackColor = Color.Transparent,
+ Padding = new Padding(12, 10, 12, 10)
+ };
+
+ // Enable double buffering
+ typeof(Panel).InvokeMember("DoubleBuffered",
+ System.Reflection.BindingFlags.SetProperty | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic,
+ null, panel, new object[] { true });
+
+ // Add paint handler for rounded corners
+ panel.Paint += (sender, e) =>
+ {
+ var p = sender as Panel;
+ e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
+ e.Graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
+
+ var rect = new Rectangle(0, 0, p.Width - 1, p.Height - 1);
+
+ using (var path = CreateRoundedRectPath(rect, radius))
+ {
+ // Fill background
+ using (var brush = new SolidBrush(panelColor))
+ {
+ e.Graphics.FillPath(brush, path);
+ }
+ }
+
+ // Apply rounded region
+ using (var regionPath = CreateRoundedRectPath(new Rectangle(0, 0, p.Width, p.Height), radius))
+ {
+ p.Region = new Region(regionPath);
+ }
+ };
+
+ // Move child control into panel
+ var parent = childControl.Parent;
+ parent.Controls.Add(panel);
+ parent.Controls.Remove(childControl);
+
+ // Update child control properties
+ childControl.Location = new Point(bNotes ? 6 : 12, 10);
+ childControl.Size = new Size(bNotes ? panel.Width - 18 : panel.Width - 24, panel.Height - 49);
+ childControl.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+ childControl.BackColor = panelColor;
+
+ panel.Controls.Add(childControl);
+ panel.BringToFront();
+
+ return panel;
+ }
+
+ private void notesRichTextBox_LinkClicked(object sender, LinkClickedEventArgs e)
+ {
+ try
+ {
+ Process.Start(e.LinkText);
+ }
+ catch (Exception ex)
+ {
+ Logger.Log($"Failed to open link: {ex.Message}", LogLevel.WARNING);
+ }
+ }
+
+ private void gamesQueListBox_DrawItem(object sender, DrawItemEventArgs e)
+ {
+ if (e.Index < 0) return;
+
+ // Determine colors based on selection state
+ Color backColor = (e.State & DrawItemState.Selected) == DrawItemState.Selected
+ ? Color.FromArgb(93, 203, 173) // Accent color for selected
+ : gamesQueListBox.BackColor;
+
+ Color foreColor = (e.State & DrawItemState.Selected) == DrawItemState.Selected
+ ? Color.FromArgb(20, 20, 20) // Dark text on accent
+ : gamesQueListBox.ForeColor;
+
+ Font font = (e.State & DrawItemState.Selected) == DrawItemState.Selected
+ ? new Font("Microsoft Sans Serif", 10F, FontStyle.Bold)
+ : new Font("Microsoft Sans Serif", 10F, FontStyle.Regular);
+
+ // Clear the item background first
+ using (SolidBrush clearBrush = new SolidBrush(gamesQueListBox.BackColor))
+ {
+ e.Graphics.FillRectangle(clearBrush, e.Bounds);
+ }
+
+ // Draw rounded background
+ e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
+ e.Graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
+ int radius = 1;
+ int margin = 4;
+ Rectangle roundedRect = new Rectangle(
+ e.Bounds.X,
+ e.Bounds.Y,
+ e.Bounds.Width - (margin * 2),
+ e.Bounds.Height
+ );
+
+ using (GraphicsPath path = CreateRoundedRectPath(roundedRect, radius))
+ using (SolidBrush backgroundBrush = new SolidBrush(backColor))
+ {
+ e.Graphics.FillPath(backgroundBrush, path);
+ }
+
+ // Draw text with padding
+ string text = gamesQueListBox.Items[e.Index].ToString();
+ Rectangle textRect = new Rectangle(
+ roundedRect.X + 4,
+ roundedRect.Y,
+ roundedRect.Width - 8,
+ roundedRect.Height
+ );
+
+ using (SolidBrush textBrush = new SolidBrush(foreColor))
+ {
+ var sf = new StringFormat
+ {
+ Alignment = StringAlignment.Near,
+ LineAlignment = StringAlignment.Center,
+ Trimming = StringTrimming.EllipsisCharacter,
+ FormatFlags = StringFormatFlags.NoWrap
+ };
+ e.Graphics.DrawString(text, font, textBrush, textRect, sf);
+ }
+ }
+
+ private void ApplyWebViewRoundedCorners()
+ {
+ if (webView21 == null) return;
+
+ int radius = 8;
+ using (var path = CreateRoundedRectPath(new Rectangle(0, 0, webView21.Width, webView21.Height), radius))
+ {
+ webView21.Region = new Region(path);
+ }
+
+ // Re-apply on resize
+ webView21.SizeChanged -= WebView21_SizeChanged;
+ webView21.SizeChanged += WebView21_SizeChanged;
+ }
+
+ private void WebView21_SizeChanged(object sender, EventArgs e)
+ {
+ if (webView21 == null || webView21.Width <= 0 || webView21.Height <= 0) return;
+
+ int radius = 8;
+ using (var path = CreateRoundedRectPath(new Rectangle(0, 0, webView21.Width, webView21.Height), radius))
+ {
+ webView21.Region = new Region(path);
+ }
+ }
}
public static class ControlExtensions
@@ -5700,6 +6722,4 @@ function onYouTubeIframeAPIReady() {
}
}
}
-
-
}
diff --git a/MainForm.resx b/MainForm.resx
index d8f7f90..5f0ed55 100644
--- a/MainForm.resx
+++ b/MainForm.resx
@@ -118,72 +118,72 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- 798, 17
+ 1165, 17
- 428, 56
+ 428, 54
- 596, 17
+ 966, 17
- 539, 95
+ 705, 91
- 359, 95
+ 526, 91
- 17, 17
+ 390, 17
- 187, 95
+ 355, 91
- 17, 95
+ 187, 91
- 1363, 56
+ 17, 91
- 1163, 56
+ 1157, 54
- 948, 56
+ 945, 54
- 743, 56
+ 741, 54
- 711, 95
+ 876, 91
- 569, 56
+ 568, 54
- 221, 56
+ 223, 54
- 392, 17
+ 764, 17
- 209, 17
+ 581, 17
-
- 17, 56
-
-
- 1333, 17
+
+ 17, 17
- 1124, 17
+ 17, 54
- 955, 17
+ 1320, 17
- 855, 95
+ 1021, 91
+
+
+ 215, 17
- 159
+ 113
\ No newline at end of file
diff --git a/Properties/Settings.Designer.cs b/Properties/Settings.Designer.cs
index cbba1d8..25683fc 100644
--- a/Properties/Settings.Designer.cs
+++ b/Properties/Settings.Designer.cs
@@ -109,7 +109,7 @@ namespace AndroidSideloader.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Configuration.DefaultSettingValueAttribute("Microsoft Sans Serif, 9pt")]
+ [global::System.Configuration.DefaultSettingValueAttribute("Microsoft Sans Serif, 10pt")]
public global::System.Drawing.Font FontStyle {
get {
return ((global::System.Drawing.Font)(this["FontStyle"]));
@@ -516,7 +516,7 @@ namespace AndroidSideloader.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Configuration.DefaultSettingValueAttribute("DarkGray")]
+ [global::System.Configuration.DefaultSettingValueAttribute("White")]
public global::System.Drawing.Color FontColor {
get {
return ((global::System.Drawing.Color)(this["FontColor"]));
@@ -540,7 +540,7 @@ namespace AndroidSideloader.Properties {
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Configuration.DefaultSettingValueAttribute("25, 25, 25")]
+ [global::System.Configuration.DefaultSettingValueAttribute("42, 45, 58")]
public global::System.Drawing.Color SubButtonColor {
get {
return ((global::System.Drawing.Color)(this["SubButtonColor"]));
diff --git a/Properties/Settings.settings b/Properties/Settings.settings
index f839a12..75c1c92 100644
--- a/Properties/Settings.settings
+++ b/Properties/Settings.settings
@@ -24,7 +24,7 @@
True
- Microsoft Sans Serif, 9pt
+ Microsoft Sans Serif, 10pt
@@ -126,13 +126,13 @@
False
- DarkGray
+ White
25, 25, 25
- 25, 25, 25
+ 42, 45, 58
25, 25, 25
diff --git a/QuestForm.Designer.cs b/QuestForm.Designer.cs
index 94148b0..e8a2d02 100644
--- a/QuestForm.Designer.cs
+++ b/QuestForm.Designer.cs
@@ -7,8 +7,6 @@ namespace AndroidSideloader
///
/// Required designer variable.
///
- ///
-
private System.ComponentModel.IContainer components = null;
///
@@ -33,378 +31,426 @@ namespace AndroidSideloader
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(QuestForm));
- this.label1 = new System.Windows.Forms.Label();
- this.label2 = new System.Windows.Forms.Label();
- this.label11 = new System.Windows.Forms.Label();
- this.label12 = new System.Windows.Forms.Label();
- this.DeleteShots = new System.Windows.Forms.CheckBox();
- this.splitter1 = new System.Windows.Forms.Splitter();
- this.label10 = new System.Windows.Forms.Label();
- this.label14 = new System.Windows.Forms.Label();
- this.label16 = new System.Windows.Forms.Label();
- this.CPUComboBox = new System.Windows.Forms.ComboBox();
- this.GPUComboBox = new System.Windows.Forms.ComboBox();
- this.ResolutionLabel = new System.Windows.Forms.Label();
+ this.lblUsernameSection = new System.Windows.Forms.Label();
+ this.lblMediaSection = new System.Windows.Forms.Label();
+ this.lblPerformanceSection = new System.Windows.Forms.Label();
this.GlobalUsername = new System.Windows.Forms.TextBox();
- this.TextureResTextBox = new System.Windows.Forms.TextBox();
- this.RefreshRateComboBox = new System.Windows.Forms.ComboBox();
- this.btnApplyTempSettings = new AndroidSideloader.RoundButton();
- this.questVids = new AndroidSideloader.RoundButton();
- this.questPics = new AndroidSideloader.RoundButton();
this.btnApplyUsername = new AndroidSideloader.RoundButton();
- this.label3 = new System.Windows.Forms.Label();
+ this.questPics = new AndroidSideloader.RoundButton();
+ this.questVids = new AndroidSideloader.RoundButton();
+ this.lblScreenshotsPath = new System.Windows.Forms.Label();
+ this.lblRecordingsPath = new System.Windows.Forms.Label();
+ this.toggleDeleteAfterTransfer = new AndroidSideloader.ToggleSwitch();
+ this.lblDeleteAfterTransfer = new System.Windows.Forms.Label();
+ this.lblPerformanceNote = new System.Windows.Forms.Label();
+ this.lblRefreshRate = new System.Windows.Forms.Label();
+ this.RefreshRateComboBox = new System.Windows.Forms.ComboBox();
+ this.lblGpuLevel = new System.Windows.Forms.Label();
+ this.GPUComboBox = new System.Windows.Forms.ComboBox();
+ this.lblCpuLevel = new System.Windows.Forms.Label();
+ this.CPUComboBox = new System.Windows.Forms.ComboBox();
+ this.lblResolution = new System.Windows.Forms.Label();
+ this.TextureResTextBox = new System.Windows.Forms.TextBox();
+ this.btnApplyTempSettings = new AndroidSideloader.RoundButton();
+ this.separator1 = new System.Windows.Forms.Panel();
+ this.separator2 = new System.Windows.Forms.Panel();
+ this.btnClose = new AndroidSideloader.RoundButton();
this.SuspendLayout();
//
- // label1
+ // lblUsernameSection
//
- this.label1.AutoSize = true;
- this.label1.BackColor = System.Drawing.Color.Transparent;
- this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.label1.ForeColor = System.Drawing.Color.LightCyan;
- this.label1.Location = new System.Drawing.Point(72, 276);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(165, 20);
- this.label1.TabIndex = 6;
- this.label1.Text = "Temporary Settings";
- this.label1.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+ this.lblUsernameSection.AutoSize = true;
+ this.lblUsernameSection.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Bold);
+ this.lblUsernameSection.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.lblUsernameSection.Location = new System.Drawing.Point(20, 15);
+ this.lblUsernameSection.Name = "lblUsernameSection";
+ this.lblUsernameSection.Size = new System.Drawing.Size(80, 20);
+ this.lblUsernameSection.TabIndex = 0;
+ this.lblUsernameSection.Text = "Username";
//
- // label2
+ // lblMediaSection
//
- this.label2.AutoSize = true;
- this.label2.BackColor = System.Drawing.Color.Transparent;
- this.label2.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.label2.ForeColor = System.Drawing.Color.LightSteelBlue;
- this.label2.Location = new System.Drawing.Point(83, 303);
- this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(143, 16);
- this.label2.TabIndex = 6;
- this.label2.Text = "Reboot Quest to Reset";
- this.label2.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+ this.lblMediaSection.AutoSize = true;
+ this.lblMediaSection.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Bold);
+ this.lblMediaSection.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.lblMediaSection.Location = new System.Drawing.Point(20, 97);
+ this.lblMediaSection.Name = "lblMediaSection";
+ this.lblMediaSection.Size = new System.Drawing.Size(114, 20);
+ this.lblMediaSection.TabIndex = 3;
+ this.lblMediaSection.Text = "Media Transfer";
//
- // label11
+ // lblPerformanceSection
//
- this.label11.AutoSize = true;
- this.label11.BackColor = System.Drawing.Color.Transparent;
- this.label11.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.label11.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.label11.ForeColor = System.Drawing.Color.LightCyan;
- this.label11.Location = new System.Drawing.Point(18, 94);
- this.label11.Name = "label11";
- this.label11.Size = new System.Drawing.Size(272, 20);
- this.label11.TabIndex = 6;
- this.label11.Text = "Transfer screenshots to Desktop";
- this.label11.TextAlign = System.Drawing.ContentAlignment.TopCenter;
- //
- // label12
- //
- this.label12.AutoSize = true;
- this.label12.BackColor = System.Drawing.Color.Transparent;
- this.label12.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.label12.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.label12.ForeColor = System.Drawing.Color.LightCyan;
- this.label12.Location = new System.Drawing.Point(92, 9);
- this.label12.Name = "label12";
- this.label12.Size = new System.Drawing.Size(124, 20);
- this.label12.TabIndex = 6;
- this.label12.Text = "Set Username";
- this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- //
- // DeleteShots
- //
- this.DeleteShots.AutoSize = true;
- this.DeleteShots.BackColor = System.Drawing.Color.Transparent;
- this.DeleteShots.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
- this.DeleteShots.Cursor = System.Windows.Forms.Cursors.Default;
- this.DeleteShots.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.DeleteShots.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F);
- this.DeleteShots.ForeColor = System.Drawing.Color.LightSkyBlue;
- this.DeleteShots.Location = new System.Drawing.Point(33, 232);
- this.DeleteShots.Name = "DeleteShots";
- this.DeleteShots.Size = new System.Drawing.Size(242, 21);
- this.DeleteShots.TabIndex = 7;
- this.DeleteShots.Text = "Delete files on Quest after transfer";
- this.DeleteShots.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- this.DeleteShots.UseVisualStyleBackColor = false;
- this.DeleteShots.CheckedChanged += new System.EventHandler(this.DeleteShots_CheckedChanged);
- //
- // splitter1
- //
- this.splitter1.Location = new System.Drawing.Point(0, 0);
- this.splitter1.Name = "splitter1";
- this.splitter1.Size = new System.Drawing.Size(3, 486);
- this.splitter1.TabIndex = 14;
- this.splitter1.TabStop = false;
- //
- // label10
- //
- this.label10.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.label10.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
- this.label10.Location = new System.Drawing.Point(-4, 261);
- this.label10.Name = "label10";
- this.label10.Size = new System.Drawing.Size(394, 3);
- this.label10.TabIndex = 15;
- //
- // label14
- //
- this.label14.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
- this.label14.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
- this.label14.Location = new System.Drawing.Point(-4, 80);
- this.label14.Name = "label14";
- this.label14.Size = new System.Drawing.Size(394, 3);
- this.label14.TabIndex = 17;
- //
- // label16
- //
- this.label16.AutoSize = true;
- this.label16.BackColor = System.Drawing.Color.Transparent;
- this.label16.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.label16.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.label16.ForeColor = System.Drawing.Color.LightSteelBlue;
- this.label16.Location = new System.Drawing.Point(34, 153);
- this.label16.Name = "label16";
- this.label16.Size = new System.Drawing.Size(240, 16);
- this.label16.TabIndex = 6;
- this.label16.Text = "Exports to: Desktop\\Quest Screenshots";
- this.label16.TextAlign = System.Drawing.ContentAlignment.TopCenter;
- //
- // CPUComboBox
- //
- this.CPUComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.CPUComboBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.CPUComboBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.CPUComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.CPUComboBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.CPUComboBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.CPUComboBox.FormattingEnabled = true;
- this.CPUComboBox.Items.AddRange(new object[] {
- "0",
- "1",
- "2",
- "3",
- "4"});
- this.CPUComboBox.Location = new System.Drawing.Point(38, 383);
- this.CPUComboBox.Name = "CPUComboBox";
- this.CPUComboBox.Size = new System.Drawing.Size(232, 26);
- this.CPUComboBox.TabIndex = 2;
- this.CPUComboBox.Text = "Select CPU level (0 for default)";
- //
- // GPUComboBox
- //
- this.GPUComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.GPUComboBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.GPUComboBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.GPUComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.GPUComboBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.GPUComboBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.GPUComboBox.FormattingEnabled = true;
- this.GPUComboBox.Items.AddRange(new object[] {
- "0",
- "1",
- "2",
- "3",
- "4"});
- this.GPUComboBox.Location = new System.Drawing.Point(38, 354);
- this.GPUComboBox.Name = "GPUComboBox";
- this.GPUComboBox.Size = new System.Drawing.Size(232, 26);
- this.GPUComboBox.TabIndex = 1;
- this.GPUComboBox.Text = "Select GPU level (0 for default)";
- //
- // ResolutionLabel
- //
- this.ResolutionLabel.AutoSize = true;
- this.ResolutionLabel.BackColor = System.Drawing.Color.Transparent;
- this.ResolutionLabel.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.ResolutionLabel.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.ResolutionLabel.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.ResolutionLabel.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.ResolutionLabel.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.ResolutionLabel.Location = new System.Drawing.Point(38, 413);
- this.ResolutionLabel.Name = "ResolutionLabel";
- this.ResolutionLabel.Size = new System.Drawing.Size(153, 18);
- this.ResolutionLabel.TabIndex = 3;
- this.ResolutionLabel.Text = "Resolution (0=default)";
+ this.lblPerformanceSection.AutoSize = true;
+ this.lblPerformanceSection.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Bold);
+ this.lblPerformanceSection.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.lblPerformanceSection.Location = new System.Drawing.Point(20, 232);
+ this.lblPerformanceSection.Name = "lblPerformanceSection";
+ this.lblPerformanceSection.Size = new System.Drawing.Size(147, 20);
+ this.lblPerformanceSection.TabIndex = 9;
+ this.lblPerformanceSection.Text = "Temporary Settings";
//
// GlobalUsername
//
- this.GlobalUsername.BackColor = global::AndroidSideloader.Properties.Settings.Default.TextBoxColor;
- this.GlobalUsername.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "TextBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.GlobalUsername.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.GlobalUsername.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.GlobalUsername.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.GlobalUsername.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.GlobalUsername.Location = new System.Drawing.Point(33, 39);
+ this.GlobalUsername.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.GlobalUsername.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.GlobalUsername.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.GlobalUsername.ForeColor = System.Drawing.Color.White;
+ this.GlobalUsername.Location = new System.Drawing.Point(24, 45);
this.GlobalUsername.Name = "GlobalUsername";
- this.GlobalUsername.Size = new System.Drawing.Size(142, 24);
- this.GlobalUsername.TabIndex = 12;
+ this.GlobalUsername.Size = new System.Drawing.Size(200, 24);
+ this.GlobalUsername.TabIndex = 1;
this.GlobalUsername.TextChanged += new System.EventHandler(this.GlobalUsername_TextChanged);
//
- // TextureResTextBox
- //
- this.TextureResTextBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.TextBoxColor;
- this.TextureResTextBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "TextBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.TextureResTextBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.TextureResTextBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.TextureResTextBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.TextureResTextBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.TextureResTextBox.Location = new System.Drawing.Point(38, 436);
- this.TextureResTextBox.Name = "TextureResTextBox";
- this.TextureResTextBox.Size = new System.Drawing.Size(111, 24);
- this.TextureResTextBox.TabIndex = 3;
- this.TextureResTextBox.Text = "0";
- //
- // RefreshRateComboBox
- //
- this.RefreshRateComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.RefreshRateComboBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.RefreshRateComboBox.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.RefreshRateComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.RefreshRateComboBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.RefreshRateComboBox.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.RefreshRateComboBox.FormattingEnabled = true;
- this.RefreshRateComboBox.Items.AddRange(new object[] {
- "72",
- "90",
- "120"});
- this.RefreshRateComboBox.Location = new System.Drawing.Point(38, 325);
- this.RefreshRateComboBox.Name = "RefreshRateComboBox";
- this.RefreshRateComboBox.Size = new System.Drawing.Size(232, 26);
- this.RefreshRateComboBox.TabIndex = 0;
- this.RefreshRateComboBox.Text = "Select refresh rate";
- //
- // btnApplyTempSettings
- //
- this.btnApplyTempSettings.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
- this.btnApplyTempSettings.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
- this.btnApplyTempSettings.BackColor = System.Drawing.Color.Transparent;
- this.btnApplyTempSettings.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.btnApplyTempSettings.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.btnApplyTempSettings.ForeColor = System.Drawing.Color.White;
- this.btnApplyTempSettings.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.btnApplyTempSettings.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.btnApplyTempSettings.Location = new System.Drawing.Point(185, 434);
- this.btnApplyTempSettings.Name = "btnApplyTempSettings";
- this.btnApplyTempSettings.Radius = 5;
- this.btnApplyTempSettings.Size = new System.Drawing.Size(85, 25);
- this.btnApplyTempSettings.Stroke = true;
- this.btnApplyTempSettings.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
- this.btnApplyTempSettings.TabIndex = 19;
- this.btnApplyTempSettings.Text = "APPLY";
- this.btnApplyTempSettings.Transparency = false;
- this.btnApplyTempSettings.Click += new System.EventHandler(this.btnApplyTempSettings_Click);
- //
- // questVids
- //
- this.questVids.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
- this.questVids.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
- this.questVids.BackColor = System.Drawing.Color.Transparent;
- this.questVids.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.questVids.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.questVids.ForeColor = System.Drawing.Color.White;
- this.questVids.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.questVids.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.questVids.Location = new System.Drawing.Point(72, 178);
- this.questVids.Name = "questVids";
- this.questVids.Radius = 5;
- this.questVids.Size = new System.Drawing.Size(165, 25);
- this.questVids.Stroke = true;
- this.questVids.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
- this.questVids.TabIndex = 21;
- this.questVids.Text = "RECORDINGS";
- this.questVids.Transparency = false;
- this.questVids.Click += new System.EventHandler(this.questVids_Click);
- //
- // questPics
- //
- this.questPics.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
- this.questPics.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
- this.questPics.BackColor = System.Drawing.Color.Transparent;
- this.questPics.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.questPics.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.questPics.ForeColor = System.Drawing.Color.White;
- this.questPics.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.questPics.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.questPics.Location = new System.Drawing.Point(72, 124);
- this.questPics.Name = "questPics";
- this.questPics.Radius = 5;
- this.questPics.Size = new System.Drawing.Size(165, 25);
- this.questPics.Stroke = true;
- this.questPics.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
- this.questPics.TabIndex = 22;
- this.questPics.Text = "SCREENSHOTS";
- this.questPics.Transparency = false;
- this.questPics.Click += new System.EventHandler(this.questPics_Click);
- //
// btnApplyUsername
//
- this.btnApplyUsername.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
- this.btnApplyUsername.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
+ this.btnApplyUsername.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(113)))), ((int)(((byte)(223)))), ((int)(((byte)(193)))));
+ this.btnApplyUsername.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(113)))), ((int)(((byte)(223)))), ((int)(((byte)(193)))));
this.btnApplyUsername.BackColor = System.Drawing.Color.Transparent;
+ this.btnApplyUsername.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnApplyUsername.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.btnApplyUsername.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.btnApplyUsername.ForeColor = System.Drawing.Color.White;
- this.btnApplyUsername.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.btnApplyUsername.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.btnApplyUsername.Location = new System.Drawing.Point(194, 38);
+ this.btnApplyUsername.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnApplyUsername.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.btnApplyUsername.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnApplyUsername.Enabled = false;
+ this.btnApplyUsername.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.btnApplyUsername.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
+ this.btnApplyUsername.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.btnApplyUsername.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.btnApplyUsername.Location = new System.Drawing.Point(234, 45);
this.btnApplyUsername.Name = "btnApplyUsername";
this.btnApplyUsername.Radius = 5;
- this.btnApplyUsername.Size = new System.Drawing.Size(81, 25);
- this.btnApplyUsername.Stroke = true;
- this.btnApplyUsername.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
- this.btnApplyUsername.TabIndex = 27;
+ this.btnApplyUsername.Size = new System.Drawing.Size(80, 25);
+ this.btnApplyUsername.Stroke = false;
+ this.btnApplyUsername.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.btnApplyUsername.TabIndex = 1;
this.btnApplyUsername.Text = "APPLY";
this.btnApplyUsername.Transparency = false;
this.btnApplyUsername.Click += new System.EventHandler(this.btnApplyUsername_Click);
//
- // label3
+ // questPics
//
- this.label3.AutoSize = true;
- this.label3.BackColor = System.Drawing.Color.Transparent;
- this.label3.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.label3.ForeColor = System.Drawing.Color.LightSteelBlue;
- this.label3.Location = new System.Drawing.Point(37, 206);
- this.label3.Name = "label3";
- this.label3.Size = new System.Drawing.Size(235, 16);
- this.label3.TabIndex = 28;
- this.label3.Text = "Exports to: Desktop\\Quest Recordings";
- this.label3.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+ this.questPics.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.questPics.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.questPics.BackColor = System.Drawing.Color.Transparent;
+ this.questPics.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.questPics.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.questPics.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.questPics.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.questPics.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.questPics.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.questPics.ForeColor = System.Drawing.Color.White;
+ this.questPics.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.questPics.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.questPics.Location = new System.Drawing.Point(24, 127);
+ this.questPics.Name = "questPics";
+ this.questPics.Radius = 5;
+ this.questPics.Size = new System.Drawing.Size(140, 28);
+ this.questPics.Stroke = true;
+ this.questPics.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.questPics.TabIndex = 2;
+ this.questPics.Text = "Screenshots";
+ this.questPics.Transparency = false;
+ this.questPics.Click += new System.EventHandler(this.questPics_Click);
+ //
+ // questVids
+ //
+ this.questVids.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.questVids.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.questVids.BackColor = System.Drawing.Color.Transparent;
+ this.questVids.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.questVids.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.questVids.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.questVids.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.questVids.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.questVids.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.questVids.ForeColor = System.Drawing.Color.White;
+ this.questVids.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.questVids.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.questVids.Location = new System.Drawing.Point(174, 127);
+ this.questVids.Name = "questVids";
+ this.questVids.Radius = 5;
+ this.questVids.Size = new System.Drawing.Size(140, 28);
+ this.questVids.Stroke = true;
+ this.questVids.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.questVids.TabIndex = 3;
+ this.questVids.Text = "Recordings";
+ this.questVids.Transparency = false;
+ this.questVids.Click += new System.EventHandler(this.questVids_Click);
+ //
+ // lblScreenshotsPath
+ //
+ this.lblScreenshotsPath.AutoSize = true;
+ this.lblScreenshotsPath.Font = new System.Drawing.Font("Segoe UI", 8F);
+ this.lblScreenshotsPath.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.lblScreenshotsPath.Location = new System.Drawing.Point(24, 158);
+ this.lblScreenshotsPath.Name = "lblScreenshotsPath";
+ this.lblScreenshotsPath.Size = new System.Drawing.Size(161, 13);
+ this.lblScreenshotsPath.TabIndex = 4;
+ this.lblScreenshotsPath.Text = "→ Desktop\\Quest Screenshots";
+ //
+ // lblRecordingsPath
+ //
+ this.lblRecordingsPath.AutoSize = true;
+ this.lblRecordingsPath.Font = new System.Drawing.Font("Segoe UI", 8F);
+ this.lblRecordingsPath.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.lblRecordingsPath.Location = new System.Drawing.Point(174, 158);
+ this.lblRecordingsPath.Name = "lblRecordingsPath";
+ this.lblRecordingsPath.Size = new System.Drawing.Size(157, 13);
+ this.lblRecordingsPath.TabIndex = 5;
+ this.lblRecordingsPath.Text = "→ Desktop\\Quest Recordings";
+ //
+ // toggleDeleteAfterTransfer
+ //
+ this.toggleDeleteAfterTransfer.BackColor = System.Drawing.Color.Transparent;
+ this.toggleDeleteAfterTransfer.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.toggleDeleteAfterTransfer.Location = new System.Drawing.Point(27, 189);
+ this.toggleDeleteAfterTransfer.Name = "toggleDeleteAfterTransfer";
+ this.toggleDeleteAfterTransfer.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.toggleDeleteAfterTransfer.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.toggleDeleteAfterTransfer.Size = new System.Drawing.Size(36, 18);
+ this.toggleDeleteAfterTransfer.TabIndex = 6;
+ this.toggleDeleteAfterTransfer.ThumbColor = System.Drawing.Color.White;
+ this.toggleDeleteAfterTransfer.CheckedChanged += new System.EventHandler(this.toggleDeleteAfterTransfer_CheckedChanged);
+ //
+ // lblDeleteAfterTransfer
+ //
+ this.lblDeleteAfterTransfer.AutoSize = true;
+ this.lblDeleteAfterTransfer.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblDeleteAfterTransfer.ForeColor = System.Drawing.Color.White;
+ this.lblDeleteAfterTransfer.Location = new System.Drawing.Point(72, 188);
+ this.lblDeleteAfterTransfer.Name = "lblDeleteAfterTransfer";
+ this.lblDeleteAfterTransfer.Size = new System.Drawing.Size(195, 17);
+ this.lblDeleteAfterTransfer.TabIndex = 7;
+ this.lblDeleteAfterTransfer.Text = "Delete from Quest after transfer";
+ //
+ // lblPerformanceNote
+ //
+ this.lblPerformanceNote.AutoSize = true;
+ this.lblPerformanceNote.Font = new System.Drawing.Font("Segoe UI", 8F);
+ this.lblPerformanceNote.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(120)))), ((int)(((byte)(120)))), ((int)(((byte)(120)))));
+ this.lblPerformanceNote.Location = new System.Drawing.Point(21, 254);
+ this.lblPerformanceNote.Name = "lblPerformanceNote";
+ this.lblPerformanceNote.Size = new System.Drawing.Size(120, 13);
+ this.lblPerformanceNote.TabIndex = 10;
+ this.lblPerformanceNote.Text = "Reboot Quest to reset";
+ //
+ // lblRefreshRate
+ //
+ this.lblRefreshRate.AutoSize = true;
+ this.lblRefreshRate.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.lblRefreshRate.ForeColor = System.Drawing.Color.White;
+ this.lblRefreshRate.Location = new System.Drawing.Point(24, 280);
+ this.lblRefreshRate.Name = "lblRefreshRate";
+ this.lblRefreshRate.Size = new System.Drawing.Size(72, 15);
+ this.lblRefreshRate.TabIndex = 11;
+ this.lblRefreshRate.Text = "Refresh Rate";
+ //
+ // RefreshRateComboBox
+ //
+ this.RefreshRateComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.RefreshRateComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.RefreshRateComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.RefreshRateComboBox.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.RefreshRateComboBox.ForeColor = System.Drawing.Color.White;
+ this.RefreshRateComboBox.FormattingEnabled = true;
+ this.RefreshRateComboBox.Items.AddRange(new object[] {
+ "72 Hz",
+ "90 Hz",
+ "120 Hz"});
+ this.RefreshRateComboBox.Location = new System.Drawing.Point(24, 298);
+ this.RefreshRateComboBox.Name = "RefreshRateComboBox";
+ this.RefreshRateComboBox.Size = new System.Drawing.Size(130, 23);
+ this.RefreshRateComboBox.TabIndex = 12;
+ //
+ // lblGpuLevel
+ //
+ this.lblGpuLevel.AutoSize = true;
+ this.lblGpuLevel.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.lblGpuLevel.ForeColor = System.Drawing.Color.White;
+ this.lblGpuLevel.Location = new System.Drawing.Point(170, 280);
+ this.lblGpuLevel.Name = "lblGpuLevel";
+ this.lblGpuLevel.Size = new System.Drawing.Size(60, 15);
+ this.lblGpuLevel.TabIndex = 13;
+ this.lblGpuLevel.Text = "GPU Level";
+ //
+ // GPUComboBox
+ //
+ this.GPUComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.GPUComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.GPUComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.GPUComboBox.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.GPUComboBox.ForeColor = System.Drawing.Color.White;
+ this.GPUComboBox.FormattingEnabled = true;
+ this.GPUComboBox.Items.AddRange(new object[] {
+ "0 (Default)",
+ "1",
+ "2",
+ "3",
+ "4"});
+ this.GPUComboBox.Location = new System.Drawing.Point(170, 298);
+ this.GPUComboBox.Name = "GPUComboBox";
+ this.GPUComboBox.Size = new System.Drawing.Size(130, 23);
+ this.GPUComboBox.TabIndex = 14;
+ //
+ // lblCpuLevel
+ //
+ this.lblCpuLevel.AutoSize = true;
+ this.lblCpuLevel.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.lblCpuLevel.ForeColor = System.Drawing.Color.White;
+ this.lblCpuLevel.Location = new System.Drawing.Point(24, 330);
+ this.lblCpuLevel.Name = "lblCpuLevel";
+ this.lblCpuLevel.Size = new System.Drawing.Size(60, 15);
+ this.lblCpuLevel.TabIndex = 15;
+ this.lblCpuLevel.Text = "CPU Level";
+ //
+ // CPUComboBox
+ //
+ this.CPUComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.CPUComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.CPUComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.CPUComboBox.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.CPUComboBox.ForeColor = System.Drawing.Color.White;
+ this.CPUComboBox.FormattingEnabled = true;
+ this.CPUComboBox.Items.AddRange(new object[] {
+ "0 (Default)",
+ "1",
+ "2",
+ "3",
+ "4"});
+ this.CPUComboBox.Location = new System.Drawing.Point(24, 348);
+ this.CPUComboBox.Name = "CPUComboBox";
+ this.CPUComboBox.Size = new System.Drawing.Size(130, 23);
+ this.CPUComboBox.TabIndex = 16;
+ //
+ // lblResolution
+ //
+ this.lblResolution.AutoSize = true;
+ this.lblResolution.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.lblResolution.ForeColor = System.Drawing.Color.White;
+ this.lblResolution.Location = new System.Drawing.Point(170, 330);
+ this.lblResolution.Name = "lblResolution";
+ this.lblResolution.Size = new System.Drawing.Size(63, 15);
+ this.lblResolution.TabIndex = 17;
+ this.lblResolution.Text = "Resolution";
+ //
+ // TextureResTextBox
+ //
+ this.TextureResTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.TextureResTextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.TextureResTextBox.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.TextureResTextBox.ForeColor = System.Drawing.Color.White;
+ this.TextureResTextBox.Location = new System.Drawing.Point(170, 348);
+ this.TextureResTextBox.Name = "TextureResTextBox";
+ this.TextureResTextBox.Size = new System.Drawing.Size(130, 23);
+ this.TextureResTextBox.TabIndex = 18;
+ this.TextureResTextBox.Text = "0";
+ //
+ // btnApplyTempSettings
+ //
+ this.btnApplyTempSettings.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(113)))), ((int)(((byte)(223)))), ((int)(((byte)(193)))));
+ this.btnApplyTempSettings.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(113)))), ((int)(((byte)(223)))), ((int)(((byte)(193)))));
+ this.btnApplyTempSettings.BackColor = System.Drawing.Color.Transparent;
+ this.btnApplyTempSettings.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.btnApplyTempSettings.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.btnApplyTempSettings.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnApplyTempSettings.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.btnApplyTempSettings.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnApplyTempSettings.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.btnApplyTempSettings.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
+ this.btnApplyTempSettings.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.btnApplyTempSettings.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.btnApplyTempSettings.Location = new System.Drawing.Point(24, 385);
+ this.btnApplyTempSettings.Name = "btnApplyTempSettings";
+ this.btnApplyTempSettings.Radius = 5;
+ this.btnApplyTempSettings.Size = new System.Drawing.Size(130, 30);
+ this.btnApplyTempSettings.Stroke = false;
+ this.btnApplyTempSettings.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.btnApplyTempSettings.TabIndex = 10;
+ this.btnApplyTempSettings.Text = "APPLY SETTINGS";
+ this.btnApplyTempSettings.Transparency = false;
+ this.btnApplyTempSettings.Click += new System.EventHandler(this.btnApplyTempSettings_Click);
+ //
+ // separator1
+ //
+ this.separator1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.separator1.Location = new System.Drawing.Point(20, 85);
+ this.separator1.Name = "separator1";
+ this.separator1.Size = new System.Drawing.Size(295, 1);
+ this.separator1.TabIndex = 2;
+ //
+ // separator2
+ //
+ this.separator2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.separator2.Location = new System.Drawing.Point(20, 220);
+ this.separator2.Name = "separator2";
+ this.separator2.Size = new System.Drawing.Size(295, 1);
+ this.separator2.TabIndex = 8;
+ //
+ // btnClose
+ //
+ this.btnClose.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.btnClose.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.btnClose.BackColor = System.Drawing.Color.Transparent;
+ this.btnClose.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.btnClose.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.btnClose.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnClose.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.btnClose.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnClose.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.btnClose.ForeColor = System.Drawing.Color.White;
+ this.btnClose.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnClose.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnClose.Location = new System.Drawing.Point(170, 385);
+ this.btnClose.Name = "btnClose";
+ this.btnClose.Radius = 5;
+ this.btnClose.Size = new System.Drawing.Size(130, 30);
+ this.btnClose.Stroke = true;
+ this.btnClose.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.btnClose.TabIndex = 11;
+ this.btnClose.Text = "Close";
+ this.btnClose.Transparency = false;
+ this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
//
// QuestForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(45)))));
- this.ClientSize = new System.Drawing.Size(309, 486);
- this.Controls.Add(this.label3);
+ this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
+ this.CancelButton = this.btnClose;
+ this.ClientSize = new System.Drawing.Size(340, 435);
+ this.Controls.Add(this.lblUsernameSection);
+ this.Controls.Add(this.GlobalUsername);
this.Controls.Add(this.btnApplyUsername);
+ this.Controls.Add(this.separator1);
+ this.Controls.Add(this.lblMediaSection);
this.Controls.Add(this.questPics);
this.Controls.Add(this.questVids);
- this.Controls.Add(this.btnApplyTempSettings);
- this.Controls.Add(this.label14);
- this.Controls.Add(this.label10);
- this.Controls.Add(this.splitter1);
- this.Controls.Add(this.DeleteShots);
- this.Controls.Add(this.label16);
- this.Controls.Add(this.label2);
- this.Controls.Add(this.label11);
- this.Controls.Add(this.label12);
- this.Controls.Add(this.label1);
- this.Controls.Add(this.CPUComboBox);
- this.Controls.Add(this.GPUComboBox);
- this.Controls.Add(this.ResolutionLabel);
- this.Controls.Add(this.GlobalUsername);
- this.Controls.Add(this.TextureResTextBox);
+ this.Controls.Add(this.lblScreenshotsPath);
+ this.Controls.Add(this.lblRecordingsPath);
+ this.Controls.Add(this.toggleDeleteAfterTransfer);
+ this.Controls.Add(this.lblDeleteAfterTransfer);
+ this.Controls.Add(this.separator2);
+ this.Controls.Add(this.lblPerformanceSection);
+ this.Controls.Add(this.lblPerformanceNote);
+ this.Controls.Add(this.lblRefreshRate);
this.Controls.Add(this.RefreshRateComboBox);
+ this.Controls.Add(this.lblGpuLevel);
+ this.Controls.Add(this.GPUComboBox);
+ this.Controls.Add(this.lblCpuLevel);
+ this.Controls.Add(this.CPUComboBox);
+ this.Controls.Add(this.lblResolution);
+ this.Controls.Add(this.TextureResTextBox);
+ this.Controls.Add(this.btnApplyTempSettings);
+ this.Controls.Add(this.btnClose);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
- this.MaximumSize = new System.Drawing.Size(325, 525);
- this.MinimumSize = new System.Drawing.Size(325, 525);
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
this.Name = "QuestForm";
this.ShowIcon = false;
- this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
- this.Text = "Quest settings";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "Quest Settings";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.QuestForm_FormClosed);
this.Load += new System.EventHandler(this.QuestForm_Load);
this.ResumeLayout(false);
@@ -414,26 +460,40 @@ namespace AndroidSideloader
#endregion
- private System.Windows.Forms.ComboBox RefreshRateComboBox;
- private System.Windows.Forms.TextBox TextureResTextBox;
- private System.Windows.Forms.Label ResolutionLabel;
- private System.Windows.Forms.ComboBox GPUComboBox;
- private System.Windows.Forms.ComboBox CPUComboBox;
- private Label label1;
- private Label label2;
- private Label label11;
- private Label label12;
- private CheckBox DeleteShots;
- private Splitter splitter1;
- private Label label10;
- private Label label14;
- private Label label16;
- private TextBox GlobalUsername;
- private RoundButton btnApplyTempSettings;
- private RoundButton questVids;
- private RoundButton questPics;
- private RoundButton btnApplyUsername;
- private Label label3;
- }
+ // Section Labels
+ private System.Windows.Forms.Label lblUsernameSection;
+ private System.Windows.Forms.Label lblMediaSection;
+ private System.Windows.Forms.Label lblPerformanceSection;
-}
+ // Username controls
+ private System.Windows.Forms.TextBox GlobalUsername;
+ private RoundButton btnApplyUsername;
+
+ // Media controls
+ private RoundButton questPics;
+ private RoundButton questVids;
+ private System.Windows.Forms.Label lblScreenshotsPath;
+ private System.Windows.Forms.Label lblRecordingsPath;
+ private ToggleSwitch toggleDeleteAfterTransfer;
+ private System.Windows.Forms.Label lblDeleteAfterTransfer;
+
+ // Performance controls
+ private System.Windows.Forms.Label lblPerformanceNote;
+ private System.Windows.Forms.Label lblRefreshRate;
+ private System.Windows.Forms.ComboBox RefreshRateComboBox;
+ private System.Windows.Forms.Label lblGpuLevel;
+ private System.Windows.Forms.ComboBox GPUComboBox;
+ private System.Windows.Forms.Label lblCpuLevel;
+ private System.Windows.Forms.ComboBox CPUComboBox;
+ private System.Windows.Forms.Label lblResolution;
+ private System.Windows.Forms.TextBox TextureResTextBox;
+ private RoundButton btnApplyTempSettings;
+
+ // Separators
+ private System.Windows.Forms.Panel separator1;
+ private System.Windows.Forms.Panel separator2;
+
+ // Close button
+ private RoundButton btnClose;
+ }
+}
\ No newline at end of file
diff --git a/QuestForm.cs b/QuestForm.cs
index 0341b77..96ff3f4 100644
--- a/QuestForm.cs
+++ b/QuestForm.cs
@@ -11,164 +11,167 @@ namespace AndroidSideloader
public static int length = 0;
public static string[] result;
public bool settingsexist = false;
- public bool delsh = false;
+ private bool delsh = false;
+
public QuestForm()
{
InitializeComponent();
}
-
private void btnApplyTempSettings_Click(object sender, EventArgs e)
{
bool ChangesMade = false;
- //Quest 2 settings, might remove them in the future since some of them are broken
if (RefreshRateComboBox.SelectedIndex != -1)
{
- _ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.refreshRate {RefreshRateComboBox.SelectedItem}");
+ string refreshRate = RefreshRateComboBox.SelectedItem.ToString().Replace(" Hz", "");
+ _ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.refreshRate {refreshRate}");
_ = ADB.RunAdbCommandToString($"shell settings put global 90hz_global {RefreshRateComboBox.SelectedIndex}");
_ = ADB.RunAdbCommandToString($"shell settings put global 90hzglobal {RefreshRateComboBox.SelectedIndex}");
ChangesMade = true;
}
- if (TextureResTextBox.Text.Length > 0)
+ if (TextureResTextBox.Text.Length > 0 && TextureResTextBox.Text != "0")
{
- _ = int.TryParse(TextureResTextBox.Text, out _);
- _ = ADB.RunAdbCommandToString($"shell settings put global texture_size_Global {TextureResTextBox.Text}");
- _ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.textureWidth {TextureResTextBox.Text}");
- _ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.textureHeight {TextureResTextBox.Text}");
- ChangesMade = true;
+ if (int.TryParse(TextureResTextBox.Text, out _))
+ {
+ _ = ADB.RunAdbCommandToString($"shell settings put global texture_size_Global {TextureResTextBox.Text}");
+ _ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.textureWidth {TextureResTextBox.Text}");
+ _ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.textureHeight {TextureResTextBox.Text}");
+ ChangesMade = true;
+ }
}
if (CPUComboBox.SelectedIndex != -1)
{
- _ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.cpuLevel {CPUComboBox.SelectedItem}");
+ _ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.cpuLevel {CPUComboBox.SelectedIndex}");
ChangesMade = true;
}
if (GPUComboBox.SelectedIndex != -1)
{
- _ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.gpuLevel {GPUComboBox.SelectedItem}");
+ _ = ADB.RunAdbCommandToString($"shell setprop debug.oculus.gpuLevel {GPUComboBox.SelectedIndex}");
ChangesMade = true;
}
if (ChangesMade)
{
- _ = MessageBox.Show("Settings applied!");
+ _ = MessageBox.Show("Settings applied!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
-
public static void setLength(int value)
{
result = new string[value];
}
-
- private void DeleteShots_CheckedChanged(object sender, EventArgs e)
+ private void toggleDeleteAfterTransfer_CheckedChanged(object sender, EventArgs e)
{
- delsh = DeleteShots.Checked;
+ delsh = toggleDeleteAfterTransfer.Checked;
}
private static readonly Random random = new Random();
private static readonly object syncLock = new object();
+
public static int RandomNumber(int min, int max)
{
lock (syncLock)
- { // synchronize
+ {
return random.Next(min, max);
}
}
-
-
-
private void QuestForm_FormClosed(object sender, FormClosedEventArgs e)
{
- if (DeleteShots.Checked)
- {
- settings.Delsh = true;
- settings.Save();
- }
- if (!DeleteShots.Checked)
- {
- settings.Delsh = false;
- settings.Save();
- }
+ settings.Delsh = toggleDeleteAfterTransfer.Checked;
+ settings.Save();
}
private void QuestForm_Load(object sender, EventArgs e)
{
- DeleteShots.Checked = settings.Delsh;
+ CenterToParent();
+ toggleDeleteAfterTransfer.SetCheckedSilent(settings.Delsh);
+ delsh = settings.Delsh;
GlobalUsername.Text = settings.GlobalUsername;
}
- private void DeleteButton_Click(object sender, EventArgs e)
- {
- _ = MessageBox.Show("Ok, Deleted your custom settings file.\nIf you would like to re-enable return here and apply settings again");
- File.Delete($"{settings.MainDir}\\Config.Json");
- }
private void questPics_Click(object sender, EventArgs e)
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
- if (!Directory.Exists($"{path}\\Quest ScreenShots"))
+ if (!Directory.Exists($"{path}\\Quest Screenshots"))
{
- _ = Directory.CreateDirectory($"{path}\\Quest ScreenShots");
+ _ = Directory.CreateDirectory($"{path}\\Quest Screenshots");
}
- _ = MessageBox.Show("Please wait until you get the message that the transfer has finished.");
+ _ = MessageBox.Show("Please wait until you get the message that the transfer has finished.",
+ "Transfer Starting", MessageBoxButtons.OK, MessageBoxIcon.Information);
+
Program.form.changeTitle("Pulling files...");
- _ = ADB.RunAdbCommandToString($"pull \"/sdcard/Oculus/Screenshots\" \"{path}\\Quest ScreenShots\"");
+ _ = ADB.RunAdbCommandToString($"pull \"/sdcard/Oculus/Screenshots\" \"{path}\\Quest Screenshots\"");
+
if (delsh)
{
- DialogResult dialogResult = MessageBox.Show("You have chosen to delete files from headset after transferring, so be sure to move them from your desktop to somewhere safe!", "Warning!", MessageBoxButtons.OKCancel);
+ DialogResult dialogResult = MessageBox.Show(
+ "You have chosen to delete files from headset after transferring.\n\nMake sure to move them from your desktop to somewhere safe!",
+ "Warning", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
+
if (dialogResult == DialogResult.OK)
{
_ = ADB.RunAdbCommandToString("shell rm -r /sdcard/Oculus/Screenshots");
_ = ADB.RunAdbCommandToString("shell mkdir /sdcard/Oculus/Screenshots");
}
}
- _ = MessageBox.Show("Transfer finished! ScreenShots can be found in a folder named Quest Screenshots on your desktop!");
+
+ _ = MessageBox.Show("Transfer finished!\n\nScreenshots can be found in:\nDesktop\\Quest Screenshots",
+ "Complete", MessageBoxButtons.OK, MessageBoxIcon.Information);
Program.form.changeTitle("Done!");
}
+
private void questVids_Click(object sender, EventArgs e)
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
+
if (!Directory.Exists($"{path}\\Quest Recordings"))
{
_ = Directory.CreateDirectory($"{path}\\Quest Recordings");
}
- _ = MessageBox.Show("Please wait until you get the message that the transfer has finished.");
+ _ = MessageBox.Show("Please wait until you get the message that the transfer has finished.",
+ "Transfer Starting", MessageBoxButtons.OK, MessageBoxIcon.Information);
+
Program.form.changeTitle("Pulling files...");
_ = ADB.RunAdbCommandToString($"pull \"/sdcard/Oculus/Videoshots\" \"{path}\\Quest Recordings\"");
+
if (delsh)
{
- DialogResult dialogResult = MessageBox.Show("You have chosen to delete files from headset after transferring, so be sure to move them from your desktop to somewhere safe!", "Warning!", MessageBoxButtons.OKCancel);
+ DialogResult dialogResult = MessageBox.Show(
+ "You have chosen to delete files from headset after transferring.\n\nMake sure to move them from your desktop to somewhere safe!",
+ "Warning", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
+
if (dialogResult == DialogResult.OK)
{
_ = ADB.RunAdbCommandToString("shell rm -r /sdcard/Oculus/Videoshots");
_ = ADB.RunAdbCommandToString("shell mkdir /sdcard/Oculus/Videoshots");
}
}
- _ = MessageBox.Show("Transfer finished! Recordings can be found in a folder named Quest Recordings on your desktop!");
+
+ _ = MessageBox.Show("Transfer finished!\n\nRecordings can be found in:\nDesktop\\Quest Recordings",
+ "Complete", MessageBoxButtons.OK, MessageBoxIcon.Information);
Program.form.changeTitle("Done!");
}
private void btnApplyUsername_Click(object sender, EventArgs e)
{
_ = ADB.RunAdbCommandToString($"shell settings put global username {GlobalUsername.Text}");
- _ = MessageBox.Show($"Username set as {GlobalUsername.Text}", "Success");
+ _ = MessageBox.Show($"Username set to: {GlobalUsername.Text}", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
- private void Form_KeyDown(object sender, KeyEventArgs e)
+ private void btnClose_Click(object sender, EventArgs e)
{
- if (e.KeyCode == Keys.Escape)
- {
- Close();
- }
+ Close();
}
+
protected override bool ProcessDialogKey(Keys keyData)
{
if (Form.ModifierKeys == Keys.None && keyData == Keys.Escape)
@@ -182,8 +185,12 @@ namespace AndroidSideloader
private void GlobalUsername_TextChanged(object sender, EventArgs e)
{
btnApplyUsername.Enabled = GlobalUsername.TextLength > 0;
+ btnApplyUsername.ForeColor = System.Drawing.Color.FromArgb(
+ ((int)(((byte)(btnApplyUsername.Enabled ? 30 : 80)))),
+ ((int)(((byte)(btnApplyUsername.Enabled ? 24 : 80)))),
+ ((int)(((byte)(btnApplyUsername.Enabled ? 29 : 80)))));
+
settings.GlobalUsername = GlobalUsername.Text;
- settings.Save();
}
}
-}
+}
\ No newline at end of file
diff --git a/RoundButton.cs b/RoundButton.cs
index f6071b8..0eec832 100644
--- a/RoundButton.cs
+++ b/RoundButton.cs
@@ -36,6 +36,39 @@ namespace AndroidSideloader
Invalidate();
}
}
+
+ private Color disabled1, disabled2;
+ private Color disabledStrokeColor;
+
+ public Color Disabled1
+ {
+ get => disabled1;
+ set
+ {
+ disabled1 = value;
+ Invalidate();
+ }
+ }
+
+ public Color Disabled2
+ {
+ get => disabled2;
+ set
+ {
+ disabled2 = value;
+ Invalidate();
+ }
+ }
+
+ public Color DisabledStrokeColor
+ {
+ get => disabledStrokeColor;
+ set
+ {
+ disabledStrokeColor = value;
+ Invalidate();
+ }
+ }
#endregion
#region RoundButton
public RoundButton()
@@ -48,7 +81,9 @@ namespace AndroidSideloader
inactive2 = Color.FromArgb(33, 167, 188);
active1 = Color.FromArgb(64, 168, 183);
active2 = Color.FromArgb(36, 164, 183);
-
+ disabled1 = Color.FromArgb(32, 35, 45);
+ disabled2 = Color.FromArgb(25, 28, 35);
+ disabledStrokeColor = Color.FromArgb(50, 55, 65);
radius = 10;
roundedRect = new RoundedRectangleF(Width, Height, radius);
@@ -123,12 +158,18 @@ namespace AndroidSideloader
}
else
{
- Color linear1 = Color.FromArgb(190, 190, 190);
- Color linear2 = Color.FromArgb(210, 210, 210);
- using (LinearGradientBrush inactiveGB = new LinearGradientBrush(rect, linear1, linear2, 90f))
+ using (LinearGradientBrush disabledGB = new LinearGradientBrush(rect, disabled1, disabled2, 90f))
{
- e.Graphics.FillPath(inactiveGB, roundedRect.Path);
- e.Graphics.DrawPath(new Pen(inactiveGB), roundedRect.Path);
+ e.Graphics.FillPath(disabledGB, roundedRect.Path);
+ }
+
+ if (stroke)
+ {
+ using (Pen pen = new Pen(disabledStrokeColor, 1))
+ using (GraphicsPath path = new RoundedRectangleF(Width - (radius > 0 ? 0 : 1), Height - (radius > 0 ? 0 : 1), radius).Path)
+ {
+ e.Graphics.DrawPath(pen, path);
+ }
}
}
diff --git a/SettingsForm.Designer.cs b/SettingsForm.Designer.cs
index c0dccf3..d629c55 100644
--- a/SettingsForm.Designer.cs
+++ b/SettingsForm.Designer.cs
@@ -1,5 +1,4 @@
-
-namespace AndroidSideloader
+namespace AndroidSideloader
{
partial class SettingsForm
{
@@ -30,156 +29,56 @@ namespace AndroidSideloader
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SettingsForm));
- this.checkForUpdatesCheckBox = new System.Windows.Forms.CheckBox();
- this.enableMessageBoxesCheckBox = new System.Windows.Forms.CheckBox();
- this.deleteAfterInstallCheckBox = new System.Windows.Forms.CheckBox();
- this.updateConfigCheckBox = new System.Windows.Forms.CheckBox();
- this.userJsonOnGameInstall = new System.Windows.Forms.CheckBox();
- this.crashlogID = new System.Windows.Forms.Label();
- this.nodevicemodeBox = new System.Windows.Forms.CheckBox();
- this.bmbfBox = new System.Windows.Forms.CheckBox();
- this.AutoReinstBox = new System.Windows.Forms.CheckBox();
this.downloadDirectorySetter = new System.Windows.Forms.FolderBrowserDialog();
this.backupDirectorySetter = new System.Windows.Forms.FolderBrowserDialog();
- this.chkSingleThread = new System.Windows.Forms.CheckBox();
- this.setBackupDirectory = new AndroidSideloader.RoundButton();
+ this.crashlogID = new System.Windows.Forms.Label();
+ this.lblGeneralSection = new System.Windows.Forms.Label();
+ this.lblDownloadSection = new System.Windows.Forms.Label();
+ this.lblAdvancedSection = new System.Windows.Forms.Label();
+ this.lblDirectoriesSection = new System.Windows.Forms.Label();
+ this.lblDebugSection = new System.Windows.Forms.Label();
+ this.toggleCheckForUpdates = new AndroidSideloader.ToggleSwitch();
+ this.toggleUpdateConfig = new AndroidSideloader.ToggleSwitch();
+ this.toggleNoDeviceMode = new AndroidSideloader.ToggleSwitch();
+ this.toggleDeleteAfterInstall = new AndroidSideloader.ToggleSwitch();
+ this.toggleSingleThread = new AndroidSideloader.ToggleSwitch();
+ this.toggleUseDownloadedFiles = new AndroidSideloader.ToggleSwitch();
+ this.toggleAutoReinstall = new AndroidSideloader.ToggleSwitch();
+ this.toggleMessageBoxes = new AndroidSideloader.ToggleSwitch();
+ this.toggleUserJson = new AndroidSideloader.ToggleSwitch();
+ this.toggleBMBF = new AndroidSideloader.ToggleSwitch();
+ this.toggleVirtualFilesystem = new AndroidSideloader.ToggleSwitch();
+ this.toggleTrailers = new AndroidSideloader.ToggleSwitch();
+ this.lblCheckForUpdates = new System.Windows.Forms.Label();
+ this.lblUpdateConfig = new System.Windows.Forms.Label();
+ this.lblNoDeviceMode = new System.Windows.Forms.Label();
+ this.lblDeleteAfterInstall = new System.Windows.Forms.Label();
+ this.lblSingleThread = new System.Windows.Forms.Label();
+ this.lblUseDownloadedFiles = new System.Windows.Forms.Label();
+ this.lblAutoReinstall = new System.Windows.Forms.Label();
+ this.lblMessageBoxes = new System.Windows.Forms.Label();
+ this.lblUserJson = new System.Windows.Forms.Label();
+ this.lblBMBF = new System.Windows.Forms.Label();
+ this.lblVirtualFilesystem = new System.Windows.Forms.Label();
+ this.lblTrailers = new System.Windows.Forms.Label();
+ this.bandwidthLabel = new System.Windows.Forms.Label();
+ this.bandwidthLimitTextBox = new System.Windows.Forms.TextBox();
+ this.lblBandwidthUnit = new System.Windows.Forms.Label();
this.setDownloadDirectory = new AndroidSideloader.RoundButton();
+ this.setBackupDirectory = new AndroidSideloader.RoundButton();
+ this.openDownloadDirectory = new AndroidSideloader.RoundButton();
+ this.openBackupDirectory = new AndroidSideloader.RoundButton();
this.btnOpenDebug = new AndroidSideloader.RoundButton();
this.btnResetDebug = new AndroidSideloader.RoundButton();
this.btnUploadDebug = new AndroidSideloader.RoundButton();
- this.resetSettingsButton = new AndroidSideloader.RoundButton();
this.applyButton = new AndroidSideloader.RoundButton();
- this.virtualFilesystemCompatibilityCheckbox = new System.Windows.Forms.CheckBox();
- this.openBackupDirectory = new AndroidSideloader.RoundButton();
- this.openDownloadDirectory = new AndroidSideloader.RoundButton();
- this.chkUseDownloadedFiles = new System.Windows.Forms.CheckBox();
- this.bandwidthLabel = new System.Windows.Forms.Label();
- this.bandwidthLimitTextBox = new System.Windows.Forms.TextBox();
- this.label1 = new System.Windows.Forms.Label();
+ this.resetSettingsButton = new AndroidSideloader.RoundButton();
+ this.separator1 = new System.Windows.Forms.Panel();
+ this.separator2 = new System.Windows.Forms.Panel();
+ this.separator3 = new System.Windows.Forms.Panel();
+ this.separator4 = new System.Windows.Forms.Panel();
this.SuspendLayout();
//
- // checkForUpdatesCheckBox
- //
- this.checkForUpdatesCheckBox.AutoSize = true;
- this.checkForUpdatesCheckBox.BackColor = System.Drawing.Color.Transparent;
- this.checkForUpdatesCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.checkForUpdatesCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.checkForUpdatesCheckBox.Location = new System.Drawing.Point(13, 11);
- this.checkForUpdatesCheckBox.Name = "checkForUpdatesCheckBox";
- this.checkForUpdatesCheckBox.Size = new System.Drawing.Size(226, 22);
- this.checkForUpdatesCheckBox.TabIndex = 0;
- this.checkForUpdatesCheckBox.Text = "Check for Application Updates";
- this.checkForUpdatesCheckBox.UseVisualStyleBackColor = false;
- this.checkForUpdatesCheckBox.CheckedChanged += new System.EventHandler(this.checkForUpdatesCheckBox_CheckedChanged);
- //
- // enableMessageBoxesCheckBox
- //
- this.enableMessageBoxesCheckBox.AutoSize = true;
- this.enableMessageBoxesCheckBox.BackColor = System.Drawing.Color.Transparent;
- this.enableMessageBoxesCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.enableMessageBoxesCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.enableMessageBoxesCheckBox.Location = new System.Drawing.Point(13, 201);
- this.enableMessageBoxesCheckBox.Name = "enableMessageBoxesCheckBox";
- this.enableMessageBoxesCheckBox.Size = new System.Drawing.Size(309, 22);
- this.enableMessageBoxesCheckBox.TabIndex = 1;
- this.enableMessageBoxesCheckBox.Text = "Enable Message Boxes on task completed";
- this.enableMessageBoxesCheckBox.UseVisualStyleBackColor = false;
- this.enableMessageBoxesCheckBox.CheckedChanged += new System.EventHandler(this.enableMessageBoxesCheckBox_CheckedChanged);
- //
- // deleteAfterInstallCheckBox
- //
- this.deleteAfterInstallCheckBox.AutoSize = true;
- this.deleteAfterInstallCheckBox.BackColor = System.Drawing.Color.Transparent;
- this.deleteAfterInstallCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.deleteAfterInstallCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.deleteAfterInstallCheckBox.Location = new System.Drawing.Point(13, 92);
- this.deleteAfterInstallCheckBox.Name = "deleteAfterInstallCheckBox";
- this.deleteAfterInstallCheckBox.Size = new System.Drawing.Size(288, 22);
- this.deleteAfterInstallCheckBox.TabIndex = 3;
- this.deleteAfterInstallCheckBox.Text = "Delete games after download and install";
- this.deleteAfterInstallCheckBox.UseVisualStyleBackColor = false;
- this.deleteAfterInstallCheckBox.CheckedChanged += new System.EventHandler(this.deleteAfterInstallCheckBox_CheckedChanged);
- //
- // updateConfigCheckBox
- //
- this.updateConfigCheckBox.AutoSize = true;
- this.updateConfigCheckBox.BackColor = System.Drawing.Color.Transparent;
- this.updateConfigCheckBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.updateConfigCheckBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.updateConfigCheckBox.Location = new System.Drawing.Point(13, 38);
- this.updateConfigCheckBox.Name = "updateConfigCheckBox";
- this.updateConfigCheckBox.Size = new System.Drawing.Size(256, 22);
- this.updateConfigCheckBox.TabIndex = 6;
- this.updateConfigCheckBox.Text = "Update Public Config Automatically";
- this.updateConfigCheckBox.UseVisualStyleBackColor = false;
- this.updateConfigCheckBox.CheckedChanged += new System.EventHandler(this.updateConfigCheckBox_CheckedChanged);
- //
- // userJsonOnGameInstall
- //
- this.userJsonOnGameInstall.AutoSize = true;
- this.userJsonOnGameInstall.BackColor = System.Drawing.Color.Transparent;
- this.userJsonOnGameInstall.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.userJsonOnGameInstall.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.userJsonOnGameInstall.Location = new System.Drawing.Point(13, 228);
- this.userJsonOnGameInstall.Name = "userJsonOnGameInstall";
- this.userJsonOnGameInstall.Size = new System.Drawing.Size(243, 22);
- this.userJsonOnGameInstall.TabIndex = 9;
- this.userJsonOnGameInstall.Text = "Push random user.json on install";
- this.userJsonOnGameInstall.UseVisualStyleBackColor = false;
- this.userJsonOnGameInstall.CheckedChanged += new System.EventHandler(this.userJsonOnGameInstall_CheckedChanged);
- //
- // crashlogID
- //
- this.crashlogID.AutoSize = true;
- this.crashlogID.Location = new System.Drawing.Point(13, 413);
- this.crashlogID.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
- this.crashlogID.Name = "crashlogID";
- this.crashlogID.Size = new System.Drawing.Size(0, 13);
- this.crashlogID.TabIndex = 15;
- //
- // nodevicemodeBox
- //
- this.nodevicemodeBox.AutoSize = true;
- this.nodevicemodeBox.BackColor = System.Drawing.Color.Transparent;
- this.nodevicemodeBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.nodevicemodeBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.nodevicemodeBox.Location = new System.Drawing.Point(13, 65);
- this.nodevicemodeBox.Name = "nodevicemodeBox";
- this.nodevicemodeBox.Size = new System.Drawing.Size(226, 22);
- this.nodevicemodeBox.TabIndex = 9;
- this.nodevicemodeBox.Text = "Disable Sideloading (Installing)";
- this.nodevicemodeBox.UseVisualStyleBackColor = false;
- this.nodevicemodeBox.CheckedChanged += new System.EventHandler(this.nodevicemodeBox_CheckedChanged);
- //
- // bmbfBox
- //
- this.bmbfBox.AutoSize = true;
- this.bmbfBox.BackColor = System.Drawing.Color.Transparent;
- this.bmbfBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.bmbfBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.bmbfBox.Location = new System.Drawing.Point(13, 255);
- this.bmbfBox.Name = "bmbfBox";
- this.bmbfBox.Size = new System.Drawing.Size(281, 22);
- this.bmbfBox.TabIndex = 9;
- this.bmbfBox.Text = "Enable BMBF song zips drag and drop";
- this.bmbfBox.UseVisualStyleBackColor = false;
- this.bmbfBox.CheckedChanged += new System.EventHandler(this.bmbfBox_CheckedChanged);
- //
- // AutoReinstBox
- //
- this.AutoReinstBox.AutoSize = true;
- this.AutoReinstBox.BackColor = System.Drawing.Color.Transparent;
- this.AutoReinstBox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.AutoReinstBox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.AutoReinstBox.Location = new System.Drawing.Point(13, 174);
- this.AutoReinstBox.Name = "AutoReinstBox";
- this.AutoReinstBox.Size = new System.Drawing.Size(280, 22);
- this.AutoReinstBox.TabIndex = 9;
- this.AutoReinstBox.Text = "Enable auto reinstall upon install failure";
- this.AutoReinstBox.UseVisualStyleBackColor = false;
- this.AutoReinstBox.CheckedChanged += new System.EventHandler(this.AutoReinstBox_CheckedChanged);
- this.AutoReinstBox.Click += new System.EventHandler(this.AutoReinstBox_Click);
- //
// downloadDirectorySetter
//
this.downloadDirectorySetter.RootFolder = System.Environment.SpecialFolder.MyComputer;
@@ -188,315 +87,711 @@ namespace AndroidSideloader
//
this.backupDirectorySetter.RootFolder = System.Environment.SpecialFolder.MyComputer;
//
- // chkSingleThread
+ // crashlogID
//
- this.chkSingleThread.AutoSize = true;
- this.chkSingleThread.BackColor = System.Drawing.Color.Transparent;
- this.chkSingleThread.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.chkSingleThread.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.chkSingleThread.Location = new System.Drawing.Point(13, 120);
- this.chkSingleThread.Name = "chkSingleThread";
- this.chkSingleThread.Size = new System.Drawing.Size(186, 22);
- this.chkSingleThread.TabIndex = 25;
- this.chkSingleThread.Text = "Enable Single-Threading";
- this.chkSingleThread.UseVisualStyleBackColor = false;
- this.chkSingleThread.CheckedChanged += new System.EventHandler(this.chkSingleThread_CheckedChanged);
+ this.crashlogID.AutoSize = true;
+ this.crashlogID.Location = new System.Drawing.Point(24, 725);
+ this.crashlogID.Name = "crashlogID";
+ this.crashlogID.Size = new System.Drawing.Size(0, 13);
+ this.crashlogID.TabIndex = 36;
+ this.crashlogID.Visible = false;
//
- // setBackupDirectory
+ // lblGeneralSection
//
- this.setBackupDirectory.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.setBackupDirectory.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.setBackupDirectory.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.setBackupDirectory.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.setBackupDirectory.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.setBackupDirectory.ForeColor = System.Drawing.Color.White;
- this.setBackupDirectory.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.setBackupDirectory.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.setBackupDirectory.Location = new System.Drawing.Point(26, 572);
- this.setBackupDirectory.Name = "setBackupDirectory";
- this.setBackupDirectory.Radius = 5;
- this.setBackupDirectory.Size = new System.Drawing.Size(285, 31);
- this.setBackupDirectory.Stroke = true;
- this.setBackupDirectory.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
- this.setBackupDirectory.TabIndex = 24;
- this.setBackupDirectory.Text = "Set Backup Directory";
- this.setBackupDirectory.Transparency = false;
- this.setBackupDirectory.Click += new System.EventHandler(this.setBackupDirectory_Click);
+ this.lblGeneralSection.AutoSize = true;
+ this.lblGeneralSection.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Bold);
+ this.lblGeneralSection.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.lblGeneralSection.Location = new System.Drawing.Point(20, 15);
+ this.lblGeneralSection.Name = "lblGeneralSection";
+ this.lblGeneralSection.Size = new System.Drawing.Size(63, 20);
+ this.lblGeneralSection.TabIndex = 0;
+ this.lblGeneralSection.Text = "General";
+ //
+ // lblDownloadSection
+ //
+ this.lblDownloadSection.AutoSize = true;
+ this.lblDownloadSection.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Bold);
+ this.lblDownloadSection.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.lblDownloadSection.Location = new System.Drawing.Point(20, 180);
+ this.lblDownloadSection.Name = "lblDownloadSection";
+ this.lblDownloadSection.Size = new System.Drawing.Size(144, 20);
+ this.lblDownloadSection.TabIndex = 10;
+ this.lblDownloadSection.Text = "Download && Install";
+ //
+ // lblAdvancedSection
+ //
+ this.lblAdvancedSection.AutoSize = true;
+ this.lblAdvancedSection.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Bold);
+ this.lblAdvancedSection.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.lblAdvancedSection.Location = new System.Drawing.Point(20, 380);
+ this.lblAdvancedSection.Name = "lblAdvancedSection";
+ this.lblAdvancedSection.Size = new System.Drawing.Size(78, 20);
+ this.lblAdvancedSection.TabIndex = 23;
+ this.lblAdvancedSection.Text = "Advanced";
+ //
+ // lblDirectoriesSection
+ //
+ this.lblDirectoriesSection.AutoSize = true;
+ this.lblDirectoriesSection.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Bold);
+ this.lblDirectoriesSection.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.lblDirectoriesSection.Location = new System.Drawing.Point(20, 547);
+ this.lblDirectoriesSection.Name = "lblDirectoriesSection";
+ this.lblDirectoriesSection.Size = new System.Drawing.Size(85, 20);
+ this.lblDirectoriesSection.TabIndex = 33;
+ this.lblDirectoriesSection.Text = "Directories";
+ //
+ // lblDebugSection
+ //
+ this.lblDebugSection.AutoSize = true;
+ this.lblDebugSection.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Bold);
+ this.lblDebugSection.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.lblDebugSection.Location = new System.Drawing.Point(20, 662);
+ this.lblDebugSection.Name = "lblDebugSection";
+ this.lblDebugSection.Size = new System.Drawing.Size(55, 20);
+ this.lblDebugSection.TabIndex = 35;
+ this.lblDebugSection.Text = "Debug";
+ //
+ // toggleCheckForUpdates
+ //
+ this.toggleCheckForUpdates.BackColor = System.Drawing.Color.Transparent;
+ this.toggleCheckForUpdates.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.toggleCheckForUpdates.Location = new System.Drawing.Point(28, 48);
+ this.toggleCheckForUpdates.Name = "toggleCheckForUpdates";
+ this.toggleCheckForUpdates.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.toggleCheckForUpdates.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.toggleCheckForUpdates.Size = new System.Drawing.Size(36, 18);
+ this.toggleCheckForUpdates.TabIndex = 1;
+ this.toggleCheckForUpdates.ThumbColor = System.Drawing.Color.White;
+ this.toggleCheckForUpdates.CheckedChanged += new System.EventHandler(this.toggleCheckForUpdates_CheckedChanged);
+ //
+ // toggleUpdateConfig
+ //
+ this.toggleUpdateConfig.BackColor = System.Drawing.Color.Transparent;
+ this.toggleUpdateConfig.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.toggleUpdateConfig.Location = new System.Drawing.Point(28, 78);
+ this.toggleUpdateConfig.Name = "toggleUpdateConfig";
+ this.toggleUpdateConfig.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.toggleUpdateConfig.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.toggleUpdateConfig.Size = new System.Drawing.Size(36, 18);
+ this.toggleUpdateConfig.TabIndex = 3;
+ this.toggleUpdateConfig.ThumbColor = System.Drawing.Color.White;
+ this.toggleUpdateConfig.CheckedChanged += new System.EventHandler(this.toggleUpdateConfig_CheckedChanged);
+ //
+ // toggleNoDeviceMode
+ //
+ this.toggleNoDeviceMode.BackColor = System.Drawing.Color.Transparent;
+ this.toggleNoDeviceMode.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.toggleNoDeviceMode.Location = new System.Drawing.Point(28, 213);
+ this.toggleNoDeviceMode.Name = "toggleNoDeviceMode";
+ this.toggleNoDeviceMode.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.toggleNoDeviceMode.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.toggleNoDeviceMode.Size = new System.Drawing.Size(36, 18);
+ this.toggleNoDeviceMode.TabIndex = 11;
+ this.toggleNoDeviceMode.ThumbColor = System.Drawing.Color.White;
+ this.toggleNoDeviceMode.CheckedChanged += new System.EventHandler(this.toggleNoDeviceMode_CheckedChanged);
+ //
+ // toggleDeleteAfterInstall
+ //
+ this.toggleDeleteAfterInstall.BackColor = System.Drawing.Color.Transparent;
+ this.toggleDeleteAfterInstall.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.toggleDeleteAfterInstall.Location = new System.Drawing.Point(28, 243);
+ this.toggleDeleteAfterInstall.Name = "toggleDeleteAfterInstall";
+ this.toggleDeleteAfterInstall.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.toggleDeleteAfterInstall.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.toggleDeleteAfterInstall.Size = new System.Drawing.Size(36, 18);
+ this.toggleDeleteAfterInstall.TabIndex = 13;
+ this.toggleDeleteAfterInstall.ThumbColor = System.Drawing.Color.White;
+ this.toggleDeleteAfterInstall.CheckedChanged += new System.EventHandler(this.toggleDeleteAfterInstall_CheckedChanged);
+ //
+ // toggleSingleThread
+ //
+ this.toggleSingleThread.BackColor = System.Drawing.Color.Transparent;
+ this.toggleSingleThread.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.toggleSingleThread.Location = new System.Drawing.Point(28, 413);
+ this.toggleSingleThread.Name = "toggleSingleThread";
+ this.toggleSingleThread.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.toggleSingleThread.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.toggleSingleThread.Size = new System.Drawing.Size(36, 18);
+ this.toggleSingleThread.TabIndex = 24;
+ this.toggleSingleThread.ThumbColor = System.Drawing.Color.White;
+ this.toggleSingleThread.CheckedChanged += new System.EventHandler(this.toggleSingleThread_CheckedChanged);
+ //
+ // toggleUseDownloadedFiles
+ //
+ this.toggleUseDownloadedFiles.BackColor = System.Drawing.Color.Transparent;
+ this.toggleUseDownloadedFiles.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.toggleUseDownloadedFiles.Location = new System.Drawing.Point(28, 273);
+ this.toggleUseDownloadedFiles.Name = "toggleUseDownloadedFiles";
+ this.toggleUseDownloadedFiles.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.toggleUseDownloadedFiles.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.toggleUseDownloadedFiles.Size = new System.Drawing.Size(36, 18);
+ this.toggleUseDownloadedFiles.TabIndex = 15;
+ this.toggleUseDownloadedFiles.ThumbColor = System.Drawing.Color.White;
+ this.toggleUseDownloadedFiles.CheckedChanged += new System.EventHandler(this.toggleUseDownloadedFiles_CheckedChanged);
+ //
+ // toggleAutoReinstall
+ //
+ this.toggleAutoReinstall.BackColor = System.Drawing.Color.Transparent;
+ this.toggleAutoReinstall.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.toggleAutoReinstall.Location = new System.Drawing.Point(28, 303);
+ this.toggleAutoReinstall.Name = "toggleAutoReinstall";
+ this.toggleAutoReinstall.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.toggleAutoReinstall.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.toggleAutoReinstall.Size = new System.Drawing.Size(36, 18);
+ this.toggleAutoReinstall.TabIndex = 17;
+ this.toggleAutoReinstall.ThumbColor = System.Drawing.Color.White;
+ this.toggleAutoReinstall.CheckedChanged += new System.EventHandler(this.toggleAutoReinstall_CheckedChanged);
+ this.toggleAutoReinstall.Click += new System.EventHandler(this.toggleAutoReinstall_Click);
+ //
+ // toggleMessageBoxes
+ //
+ this.toggleMessageBoxes.BackColor = System.Drawing.Color.Transparent;
+ this.toggleMessageBoxes.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.toggleMessageBoxes.Location = new System.Drawing.Point(28, 108);
+ this.toggleMessageBoxes.Name = "toggleMessageBoxes";
+ this.toggleMessageBoxes.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.toggleMessageBoxes.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.toggleMessageBoxes.Size = new System.Drawing.Size(36, 18);
+ this.toggleMessageBoxes.TabIndex = 5;
+ this.toggleMessageBoxes.ThumbColor = System.Drawing.Color.White;
+ this.toggleMessageBoxes.CheckedChanged += new System.EventHandler(this.toggleMessageBoxes_CheckedChanged);
+ //
+ // toggleUserJson
+ //
+ this.toggleUserJson.BackColor = System.Drawing.Color.Transparent;
+ this.toggleUserJson.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.toggleUserJson.Location = new System.Drawing.Point(28, 443);
+ this.toggleUserJson.Name = "toggleUserJson";
+ this.toggleUserJson.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.toggleUserJson.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.toggleUserJson.Size = new System.Drawing.Size(36, 18);
+ this.toggleUserJson.TabIndex = 26;
+ this.toggleUserJson.ThumbColor = System.Drawing.Color.White;
+ this.toggleUserJson.CheckedChanged += new System.EventHandler(this.toggleUserJson_CheckedChanged);
+ //
+ // toggleBMBF
+ //
+ this.toggleBMBF.BackColor = System.Drawing.Color.Transparent;
+ this.toggleBMBF.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.toggleBMBF.Location = new System.Drawing.Point(28, 473);
+ this.toggleBMBF.Name = "toggleBMBF";
+ this.toggleBMBF.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.toggleBMBF.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.toggleBMBF.Size = new System.Drawing.Size(36, 18);
+ this.toggleBMBF.TabIndex = 28;
+ this.toggleBMBF.ThumbColor = System.Drawing.Color.White;
+ this.toggleBMBF.CheckedChanged += new System.EventHandler(this.toggleBMBF_CheckedChanged);
+ //
+ // toggleVirtualFilesystem
+ //
+ this.toggleVirtualFilesystem.BackColor = System.Drawing.Color.Transparent;
+ this.toggleVirtualFilesystem.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.toggleVirtualFilesystem.Location = new System.Drawing.Point(28, 503);
+ this.toggleVirtualFilesystem.Name = "toggleVirtualFilesystem";
+ this.toggleVirtualFilesystem.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.toggleVirtualFilesystem.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.toggleVirtualFilesystem.Size = new System.Drawing.Size(36, 18);
+ this.toggleVirtualFilesystem.TabIndex = 30;
+ this.toggleVirtualFilesystem.ThumbColor = System.Drawing.Color.White;
+ this.toggleVirtualFilesystem.CheckedChanged += new System.EventHandler(this.toggleVirtualFilesystem_CheckedChanged);
+ //
+ // toggleTrailers
+ //
+ this.toggleTrailers.BackColor = System.Drawing.Color.Transparent;
+ this.toggleTrailers.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.toggleTrailers.Location = new System.Drawing.Point(28, 138);
+ this.toggleTrailers.Name = "toggleTrailers";
+ this.toggleTrailers.OffColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.toggleTrailers.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.toggleTrailers.Size = new System.Drawing.Size(36, 18);
+ this.toggleTrailers.TabIndex = 7;
+ this.toggleTrailers.ThumbColor = System.Drawing.Color.White;
+ this.toggleTrailers.CheckedChanged += new System.EventHandler(this.toggleTrailers_CheckedChanged);
+ //
+ // lblCheckForUpdates
+ //
+ this.lblCheckForUpdates.AutoSize = true;
+ this.lblCheckForUpdates.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblCheckForUpdates.ForeColor = System.Drawing.Color.White;
+ this.lblCheckForUpdates.Location = new System.Drawing.Point(72, 47);
+ this.lblCheckForUpdates.Name = "lblCheckForUpdates";
+ this.lblCheckForUpdates.Size = new System.Drawing.Size(185, 17);
+ this.lblCheckForUpdates.TabIndex = 2;
+ this.lblCheckForUpdates.Text = "Check for Application Updates";
+ //
+ // lblUpdateConfig
+ //
+ this.lblUpdateConfig.AutoSize = true;
+ this.lblUpdateConfig.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblUpdateConfig.ForeColor = System.Drawing.Color.White;
+ this.lblUpdateConfig.Location = new System.Drawing.Point(72, 77);
+ this.lblUpdateConfig.Name = "lblUpdateConfig";
+ this.lblUpdateConfig.Size = new System.Drawing.Size(212, 17);
+ this.lblUpdateConfig.TabIndex = 4;
+ this.lblUpdateConfig.Text = "Update Public Config Automatically";
+ //
+ // lblNoDeviceMode
+ //
+ this.lblNoDeviceMode.AutoSize = true;
+ this.lblNoDeviceMode.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblNoDeviceMode.ForeColor = System.Drawing.Color.White;
+ this.lblNoDeviceMode.Location = new System.Drawing.Point(72, 212);
+ this.lblNoDeviceMode.Name = "lblNoDeviceMode";
+ this.lblNoDeviceMode.Size = new System.Drawing.Size(187, 17);
+ this.lblNoDeviceMode.TabIndex = 12;
+ this.lblNoDeviceMode.Text = "Disable Sideloading (Installing)";
+ //
+ // lblDeleteAfterInstall
+ //
+ this.lblDeleteAfterInstall.AutoSize = true;
+ this.lblDeleteAfterInstall.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblDeleteAfterInstall.ForeColor = System.Drawing.Color.White;
+ this.lblDeleteAfterInstall.Location = new System.Drawing.Point(72, 242);
+ this.lblDeleteAfterInstall.Name = "lblDeleteAfterInstall";
+ this.lblDeleteAfterInstall.Size = new System.Drawing.Size(222, 17);
+ this.lblDeleteAfterInstall.TabIndex = 14;
+ this.lblDeleteAfterInstall.Text = "Delete Games After Download/Install";
+ //
+ // lblSingleThread
+ //
+ this.lblSingleThread.AutoSize = true;
+ this.lblSingleThread.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblSingleThread.ForeColor = System.Drawing.Color.White;
+ this.lblSingleThread.Location = new System.Drawing.Point(72, 412);
+ this.lblSingleThread.Name = "lblSingleThread";
+ this.lblSingleThread.Size = new System.Drawing.Size(128, 17);
+ this.lblSingleThread.TabIndex = 25;
+ this.lblSingleThread.Text = "Single-Thread Mode";
+ //
+ // lblUseDownloadedFiles
+ //
+ this.lblUseDownloadedFiles.AutoSize = true;
+ this.lblUseDownloadedFiles.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblUseDownloadedFiles.ForeColor = System.Drawing.Color.White;
+ this.lblUseDownloadedFiles.Location = new System.Drawing.Point(72, 272);
+ this.lblUseDownloadedFiles.Name = "lblUseDownloadedFiles";
+ this.lblUseDownloadedFiles.Size = new System.Drawing.Size(185, 17);
+ this.lblUseDownloadedFiles.TabIndex = 16;
+ this.lblUseDownloadedFiles.Text = "Don\'t Prompt to Re-Download";
+ //
+ // lblAutoReinstall
+ //
+ this.lblAutoReinstall.AutoSize = true;
+ this.lblAutoReinstall.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblAutoReinstall.ForeColor = System.Drawing.Color.White;
+ this.lblAutoReinstall.Location = new System.Drawing.Point(72, 302);
+ this.lblAutoReinstall.Name = "lblAutoReinstall";
+ this.lblAutoReinstall.Size = new System.Drawing.Size(185, 17);
+ this.lblAutoReinstall.TabIndex = 18;
+ this.lblAutoReinstall.Text = "Auto Reinstall on Install Failure";
+ //
+ // lblMessageBoxes
+ //
+ this.lblMessageBoxes.AutoSize = true;
+ this.lblMessageBoxes.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblMessageBoxes.ForeColor = System.Drawing.Color.White;
+ this.lblMessageBoxes.Location = new System.Drawing.Point(72, 107);
+ this.lblMessageBoxes.Name = "lblMessageBoxes";
+ this.lblMessageBoxes.Size = new System.Drawing.Size(224, 17);
+ this.lblMessageBoxes.TabIndex = 6;
+ this.lblMessageBoxes.Text = "Show Message Boxes on Completion";
+ //
+ // lblUserJson
+ //
+ this.lblUserJson.AutoSize = true;
+ this.lblUserJson.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblUserJson.ForeColor = System.Drawing.Color.White;
+ this.lblUserJson.Location = new System.Drawing.Point(72, 442);
+ this.lblUserJson.Name = "lblUserJson";
+ this.lblUserJson.Size = new System.Drawing.Size(200, 17);
+ this.lblUserJson.TabIndex = 27;
+ this.lblUserJson.Text = "Push Random user.json on Install";
+ //
+ // lblBMBF
+ //
+ this.lblBMBF.AutoSize = true;
+ this.lblBMBF.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblBMBF.ForeColor = System.Drawing.Color.White;
+ this.lblBMBF.Location = new System.Drawing.Point(72, 472);
+ this.lblBMBF.Name = "lblBMBF";
+ this.lblBMBF.Size = new System.Drawing.Size(195, 17);
+ this.lblBMBF.TabIndex = 29;
+ this.lblBMBF.Text = "BMBF Song Zips Drag and Drop";
+ //
+ // lblVirtualFilesystem
+ //
+ this.lblVirtualFilesystem.AutoSize = true;
+ this.lblVirtualFilesystem.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblVirtualFilesystem.ForeColor = System.Drawing.Color.White;
+ this.lblVirtualFilesystem.Location = new System.Drawing.Point(72, 502);
+ this.lblVirtualFilesystem.Name = "lblVirtualFilesystem";
+ this.lblVirtualFilesystem.Size = new System.Drawing.Size(188, 17);
+ this.lblVirtualFilesystem.TabIndex = 31;
+ this.lblVirtualFilesystem.Text = "Virtual Filesystem Compatibility";
+ //
+ // lblTrailers
+ //
+ this.lblTrailers.AutoSize = true;
+ this.lblTrailers.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblTrailers.ForeColor = System.Drawing.Color.White;
+ this.lblTrailers.Location = new System.Drawing.Point(72, 137);
+ this.lblTrailers.Name = "lblTrailers";
+ this.lblTrailers.Size = new System.Drawing.Size(123, 17);
+ this.lblTrailers.TabIndex = 8;
+ this.lblTrailers.Text = "Show Game Trailers";
+ //
+ // bandwidthLabel
+ //
+ this.bandwidthLabel.AutoSize = true;
+ this.bandwidthLabel.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.bandwidthLabel.ForeColor = System.Drawing.Color.White;
+ this.bandwidthLabel.Location = new System.Drawing.Point(24, 335);
+ this.bandwidthLabel.Name = "bandwidthLabel";
+ this.bandwidthLabel.Size = new System.Drawing.Size(102, 17);
+ this.bandwidthLabel.TabIndex = 19;
+ this.bandwidthLabel.Text = "Bandwidth Limit:";
+ //
+ // bandwidthLimitTextBox
+ //
+ this.bandwidthLimitTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.bandwidthLimitTextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.bandwidthLimitTextBox.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.bandwidthLimitTextBox.ForeColor = System.Drawing.Color.White;
+ this.bandwidthLimitTextBox.Location = new System.Drawing.Point(132, 333);
+ this.bandwidthLimitTextBox.Name = "bandwidthLimitTextBox";
+ this.bandwidthLimitTextBox.Size = new System.Drawing.Size(60, 23);
+ this.bandwidthLimitTextBox.TabIndex = 20;
+ this.bandwidthLimitTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+ this.bandwidthLimitTextBox.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.bandwidthLimitTextBox_KeyPress);
+ //
+ // lblBandwidthUnit
+ //
+ this.lblBandwidthUnit.AutoSize = true;
+ this.lblBandwidthUnit.Font = new System.Drawing.Font("Segoe UI", 9.5F);
+ this.lblBandwidthUnit.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(150)))), ((int)(((byte)(150)))), ((int)(((byte)(150)))));
+ this.lblBandwidthUnit.Location = new System.Drawing.Point(198, 335);
+ this.lblBandwidthUnit.Name = "lblBandwidthUnit";
+ this.lblBandwidthUnit.Size = new System.Drawing.Size(38, 17);
+ this.lblBandwidthUnit.TabIndex = 21;
+ this.lblBandwidthUnit.Text = "MB/s";
//
// setDownloadDirectory
//
- this.setDownloadDirectory.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.setDownloadDirectory.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.setDownloadDirectory.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
+ this.setDownloadDirectory.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.setDownloadDirectory.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.setDownloadDirectory.BackColor = System.Drawing.Color.Transparent;
+ this.setDownloadDirectory.Cursor = System.Windows.Forms.Cursors.Hand;
this.setDownloadDirectory.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.setDownloadDirectory.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
+ this.setDownloadDirectory.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.setDownloadDirectory.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.setDownloadDirectory.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.setDownloadDirectory.Font = new System.Drawing.Font("Segoe UI", 9F);
this.setDownloadDirectory.ForeColor = System.Drawing.Color.White;
- this.setDownloadDirectory.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.setDownloadDirectory.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.setDownloadDirectory.Location = new System.Drawing.Point(26, 535);
+ this.setDownloadDirectory.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.setDownloadDirectory.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.setDownloadDirectory.Location = new System.Drawing.Point(24, 575);
this.setDownloadDirectory.Name = "setDownloadDirectory";
this.setDownloadDirectory.Radius = 5;
- this.setDownloadDirectory.Size = new System.Drawing.Size(285, 31);
+ this.setDownloadDirectory.Size = new System.Drawing.Size(150, 28);
this.setDownloadDirectory.Stroke = true;
- this.setDownloadDirectory.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.setDownloadDirectory.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
this.setDownloadDirectory.TabIndex = 23;
- this.setDownloadDirectory.Text = "Set Download Directory";
+ this.setDownloadDirectory.Text = "Set Download Dir";
this.setDownloadDirectory.Transparency = false;
this.setDownloadDirectory.Click += new System.EventHandler(this.setDownloadDirectory_Click);
//
+ // setBackupDirectory
+ //
+ this.setBackupDirectory.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.setBackupDirectory.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.setBackupDirectory.BackColor = System.Drawing.Color.Transparent;
+ this.setBackupDirectory.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.setBackupDirectory.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.setBackupDirectory.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.setBackupDirectory.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.setBackupDirectory.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.setBackupDirectory.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.setBackupDirectory.ForeColor = System.Drawing.Color.White;
+ this.setBackupDirectory.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.setBackupDirectory.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.setBackupDirectory.Location = new System.Drawing.Point(24, 610);
+ this.setBackupDirectory.Name = "setBackupDirectory";
+ this.setBackupDirectory.Radius = 5;
+ this.setBackupDirectory.Size = new System.Drawing.Size(150, 28);
+ this.setBackupDirectory.Stroke = true;
+ this.setBackupDirectory.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.setBackupDirectory.TabIndex = 24;
+ this.setBackupDirectory.Text = "Set Backup Dir";
+ this.setBackupDirectory.Transparency = false;
+ this.setBackupDirectory.Click += new System.EventHandler(this.setBackupDirectory_Click);
+ //
+ // openDownloadDirectory
+ //
+ this.openDownloadDirectory.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.openDownloadDirectory.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.openDownloadDirectory.BackColor = System.Drawing.Color.Transparent;
+ this.openDownloadDirectory.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.openDownloadDirectory.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.openDownloadDirectory.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.openDownloadDirectory.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.openDownloadDirectory.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.openDownloadDirectory.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.openDownloadDirectory.ForeColor = System.Drawing.Color.White;
+ this.openDownloadDirectory.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.openDownloadDirectory.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.openDownloadDirectory.Location = new System.Drawing.Point(184, 575);
+ this.openDownloadDirectory.Name = "openDownloadDirectory";
+ this.openDownloadDirectory.Radius = 5;
+ this.openDownloadDirectory.Size = new System.Drawing.Size(150, 28);
+ this.openDownloadDirectory.Stroke = true;
+ this.openDownloadDirectory.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.openDownloadDirectory.TabIndex = 27;
+ this.openDownloadDirectory.Text = "Open Download Dir";
+ this.openDownloadDirectory.Transparency = false;
+ this.openDownloadDirectory.Click += new System.EventHandler(this.openDownloadDirectory_Click);
+ //
+ // openBackupDirectory
+ //
+ this.openBackupDirectory.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.openBackupDirectory.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.openBackupDirectory.BackColor = System.Drawing.Color.Transparent;
+ this.openBackupDirectory.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.openBackupDirectory.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.openBackupDirectory.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.openBackupDirectory.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.openBackupDirectory.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.openBackupDirectory.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.openBackupDirectory.ForeColor = System.Drawing.Color.White;
+ this.openBackupDirectory.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.openBackupDirectory.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.openBackupDirectory.Location = new System.Drawing.Point(184, 610);
+ this.openBackupDirectory.Name = "openBackupDirectory";
+ this.openBackupDirectory.Radius = 5;
+ this.openBackupDirectory.Size = new System.Drawing.Size(150, 28);
+ this.openBackupDirectory.Stroke = true;
+ this.openBackupDirectory.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.openBackupDirectory.TabIndex = 28;
+ this.openBackupDirectory.Text = "Open Backup Dir";
+ this.openBackupDirectory.Transparency = false;
+ this.openBackupDirectory.Click += new System.EventHandler(this.openBackupDirectory_Click);
+ //
// btnOpenDebug
//
- this.btnOpenDebug.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.btnOpenDebug.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.btnOpenDebug.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
+ this.btnOpenDebug.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnOpenDebug.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnOpenDebug.BackColor = System.Drawing.Color.Transparent;
+ this.btnOpenDebug.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnOpenDebug.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.btnOpenDebug.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
+ this.btnOpenDebug.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnOpenDebug.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.btnOpenDebug.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnOpenDebug.Font = new System.Drawing.Font("Segoe UI", 9F);
this.btnOpenDebug.ForeColor = System.Drawing.Color.White;
- this.btnOpenDebug.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.btnOpenDebug.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.btnOpenDebug.Location = new System.Drawing.Point(25, 408);
+ this.btnOpenDebug.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.btnOpenDebug.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.btnOpenDebug.Location = new System.Drawing.Point(24, 690);
this.btnOpenDebug.Name = "btnOpenDebug";
this.btnOpenDebug.Radius = 5;
- this.btnOpenDebug.Size = new System.Drawing.Size(285, 31);
+ this.btnOpenDebug.Size = new System.Drawing.Size(100, 28);
this.btnOpenDebug.Stroke = true;
- this.btnOpenDebug.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.btnOpenDebug.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
this.btnOpenDebug.TabIndex = 21;
- this.btnOpenDebug.Text = "Open Debug Log";
+ this.btnOpenDebug.Text = "Open Log";
this.btnOpenDebug.Transparency = false;
this.btnOpenDebug.Click += new System.EventHandler(this.btnOpenDebug_Click);
//
// btnResetDebug
//
- this.btnResetDebug.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.btnResetDebug.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.btnResetDebug.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
+ this.btnResetDebug.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnResetDebug.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnResetDebug.BackColor = System.Drawing.Color.Transparent;
+ this.btnResetDebug.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnResetDebug.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.btnResetDebug.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
+ this.btnResetDebug.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnResetDebug.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.btnResetDebug.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnResetDebug.Font = new System.Drawing.Font("Segoe UI", 9F);
this.btnResetDebug.ForeColor = System.Drawing.Color.White;
- this.btnResetDebug.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.btnResetDebug.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.btnResetDebug.Location = new System.Drawing.Point(25, 445);
+ this.btnResetDebug.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.btnResetDebug.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.btnResetDebug.Location = new System.Drawing.Point(130, 690);
this.btnResetDebug.Name = "btnResetDebug";
this.btnResetDebug.Radius = 5;
- this.btnResetDebug.Size = new System.Drawing.Size(285, 31);
+ this.btnResetDebug.Size = new System.Drawing.Size(100, 28);
this.btnResetDebug.Stroke = true;
- this.btnResetDebug.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.btnResetDebug.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
this.btnResetDebug.TabIndex = 20;
- this.btnResetDebug.Text = "Reset Debug Log";
+ this.btnResetDebug.Text = "Reset Log";
this.btnResetDebug.Transparency = false;
this.btnResetDebug.Click += new System.EventHandler(this.btnResetDebug_click);
//
// btnUploadDebug
//
- this.btnUploadDebug.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.btnUploadDebug.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.btnUploadDebug.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
+ this.btnUploadDebug.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnUploadDebug.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnUploadDebug.BackColor = System.Drawing.Color.Transparent;
+ this.btnUploadDebug.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnUploadDebug.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.btnUploadDebug.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
+ this.btnUploadDebug.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.btnUploadDebug.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.btnUploadDebug.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.btnUploadDebug.Font = new System.Drawing.Font("Segoe UI", 9F);
this.btnUploadDebug.ForeColor = System.Drawing.Color.White;
- this.btnUploadDebug.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.btnUploadDebug.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.btnUploadDebug.Location = new System.Drawing.Point(25, 482);
+ this.btnUploadDebug.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.btnUploadDebug.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(44)))), ((int)(((byte)(52)))));
+ this.btnUploadDebug.Location = new System.Drawing.Point(236, 690);
this.btnUploadDebug.Name = "btnUploadDebug";
this.btnUploadDebug.Radius = 5;
- this.btnUploadDebug.Size = new System.Drawing.Size(285, 31);
+ this.btnUploadDebug.Size = new System.Drawing.Size(100, 28);
this.btnUploadDebug.Stroke = true;
- this.btnUploadDebug.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.btnUploadDebug.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
this.btnUploadDebug.TabIndex = 19;
- this.btnUploadDebug.Text = "Upload Debug Log";
+ this.btnUploadDebug.Text = "Upload Log";
this.btnUploadDebug.Transparency = false;
this.btnUploadDebug.Click += new System.EventHandler(this.btnUploadDebug_click);
//
- // resetSettingsButton
- //
- this.resetSettingsButton.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.resetSettingsButton.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.resetSettingsButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.resetSettingsButton.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.resetSettingsButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.resetSettingsButton.ForeColor = System.Drawing.Color.White;
- this.resetSettingsButton.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.resetSettingsButton.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.resetSettingsButton.Location = new System.Drawing.Point(178, 355);
- this.resetSettingsButton.Name = "resetSettingsButton";
- this.resetSettingsButton.Radius = 5;
- this.resetSettingsButton.Size = new System.Drawing.Size(133, 31);
- this.resetSettingsButton.Stroke = true;
- this.resetSettingsButton.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
- this.resetSettingsButton.TabIndex = 18;
- this.resetSettingsButton.Text = "Reset Settings";
- this.resetSettingsButton.Transparency = false;
- this.resetSettingsButton.Click += new System.EventHandler(this.resetSettingsButton_Click);
- //
// applyButton
//
- this.applyButton.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.applyButton.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.applyButton.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
- this.applyButton.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.applyButton.DataBindings.Add(new System.Windows.Forms.Binding("ForeColor", global::AndroidSideloader.Properties.Settings.Default, "FontColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.applyButton.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.applyButton.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(113)))), ((int)(((byte)(223)))), ((int)(((byte)(193)))));
+ this.applyButton.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(113)))), ((int)(((byte)(223)))), ((int)(((byte)(193)))));
+ this.applyButton.BackColor = System.Drawing.Color.Transparent;
+ this.applyButton.Cursor = System.Windows.Forms.Cursors.Hand;
this.applyButton.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.applyButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.applyButton.ForeColor = global::AndroidSideloader.Properties.Settings.Default.FontColor;
- this.applyButton.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.applyButton.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.applyButton.Location = new System.Drawing.Point(26, 355);
+ this.applyButton.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.applyButton.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.applyButton.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.applyButton.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Bold);
+ this.applyButton.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
+ this.applyButton.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.applyButton.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.applyButton.Location = new System.Drawing.Point(24, 740);
this.applyButton.Name = "applyButton";
this.applyButton.Radius = 5;
- this.applyButton.Size = new System.Drawing.Size(133, 31);
- this.applyButton.Stroke = true;
- this.applyButton.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.applyButton.Size = new System.Drawing.Size(150, 36);
+ this.applyButton.Stroke = false;
+ this.applyButton.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
this.applyButton.TabIndex = 17;
- this.applyButton.Text = "Apply Settings";
+ this.applyButton.Text = "SAVE & CLOSE";
this.applyButton.Transparency = false;
this.applyButton.Click += new System.EventHandler(this.applyButton_Click);
//
- // virtualFilesystemCompatibilityCheckbox
+ // resetSettingsButton
//
- this.virtualFilesystemCompatibilityCheckbox.AutoSize = true;
- this.virtualFilesystemCompatibilityCheckbox.BackColor = System.Drawing.Color.Transparent;
- this.virtualFilesystemCompatibilityCheckbox.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.virtualFilesystemCompatibilityCheckbox.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.virtualFilesystemCompatibilityCheckbox.Location = new System.Drawing.Point(13, 282);
- this.virtualFilesystemCompatibilityCheckbox.Name = "virtualFilesystemCompatibilityCheckbox";
- this.virtualFilesystemCompatibilityCheckbox.Size = new System.Drawing.Size(279, 22);
- this.virtualFilesystemCompatibilityCheckbox.TabIndex = 26;
- this.virtualFilesystemCompatibilityCheckbox.Text = "Enable Virtual Filesystem Compatibility";
- this.virtualFilesystemCompatibilityCheckbox.UseVisualStyleBackColor = true;
- this.virtualFilesystemCompatibilityCheckbox.CheckedChanged += new System.EventHandler(this.virtualFilesystemCompatibilityCheckbox_CheckedChanged);
+ this.resetSettingsButton.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.resetSettingsButton.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(65)))), ((int)(((byte)(75)))));
+ this.resetSettingsButton.BackColor = System.Drawing.Color.Transparent;
+ this.resetSettingsButton.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.resetSettingsButton.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.resetSettingsButton.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.resetSettingsButton.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.resetSettingsButton.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.resetSettingsButton.Font = new System.Drawing.Font("Segoe UI", 10F);
+ this.resetSettingsButton.ForeColor = System.Drawing.Color.White;
+ this.resetSettingsButton.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.resetSettingsButton.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.resetSettingsButton.Location = new System.Drawing.Point(184, 740);
+ this.resetSettingsButton.Name = "resetSettingsButton";
+ this.resetSettingsButton.Radius = 5;
+ this.resetSettingsButton.Size = new System.Drawing.Size(150, 36);
+ this.resetSettingsButton.Stroke = true;
+ this.resetSettingsButton.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
+ this.resetSettingsButton.TabIndex = 18;
+ this.resetSettingsButton.Text = "CANCEL";
+ this.resetSettingsButton.Transparency = false;
+ this.resetSettingsButton.Click += new System.EventHandler(this.resetSettingsButton_Click);
//
- // openBackupDirectory
+ // separator1
//
- this.openBackupDirectory.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.openBackupDirectory.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.openBackupDirectory.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.openBackupDirectory.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.openBackupDirectory.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.openBackupDirectory.ForeColor = System.Drawing.Color.White;
- this.openBackupDirectory.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.openBackupDirectory.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.openBackupDirectory.Location = new System.Drawing.Point(26, 646);
- this.openBackupDirectory.Name = "openBackupDirectory";
- this.openBackupDirectory.Radius = 5;
- this.openBackupDirectory.Size = new System.Drawing.Size(285, 31);
- this.openBackupDirectory.Stroke = true;
- this.openBackupDirectory.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
- this.openBackupDirectory.TabIndex = 28;
- this.openBackupDirectory.Text = "Open Backup Directory";
- this.openBackupDirectory.Transparency = false;
- this.openBackupDirectory.Click += new System.EventHandler(this.openBackupDirectory_Click);
+ this.separator1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.separator1.Location = new System.Drawing.Point(20, 168);
+ this.separator1.Name = "separator1";
+ this.separator1.Size = new System.Drawing.Size(320, 1);
+ this.separator1.TabIndex = 9;
//
- // openDownloadDirectory
+ // separator2
//
- this.openDownloadDirectory.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.openDownloadDirectory.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.openDownloadDirectory.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.openDownloadDirectory.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.openDownloadDirectory.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.openDownloadDirectory.ForeColor = System.Drawing.Color.White;
- this.openDownloadDirectory.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.openDownloadDirectory.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.openDownloadDirectory.Location = new System.Drawing.Point(26, 609);
- this.openDownloadDirectory.Name = "openDownloadDirectory";
- this.openDownloadDirectory.Radius = 5;
- this.openDownloadDirectory.Size = new System.Drawing.Size(285, 31);
- this.openDownloadDirectory.Stroke = true;
- this.openDownloadDirectory.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
- this.openDownloadDirectory.TabIndex = 27;
- this.openDownloadDirectory.Text = "Open Download Directory";
- this.openDownloadDirectory.Transparency = false;
- this.openDownloadDirectory.Click += new System.EventHandler(this.openDownloadDirectory_Click);
+ this.separator2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.separator2.Location = new System.Drawing.Point(20, 368);
+ this.separator2.Name = "separator2";
+ this.separator2.Size = new System.Drawing.Size(320, 1);
+ this.separator2.TabIndex = 22;
//
- // chkUseDownloadedFiles
+ // separator3
//
- this.chkUseDownloadedFiles.AutoSize = true;
- this.chkUseDownloadedFiles.BackColor = System.Drawing.Color.Transparent;
- this.chkUseDownloadedFiles.DataBindings.Add(new System.Windows.Forms.Binding("Font", global::AndroidSideloader.Properties.Settings.Default, "FontStyle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.chkUseDownloadedFiles.Font = global::AndroidSideloader.Properties.Settings.Default.FontStyle;
- this.chkUseDownloadedFiles.Location = new System.Drawing.Point(13, 147);
- this.chkUseDownloadedFiles.Name = "chkUseDownloadedFiles";
- this.chkUseDownloadedFiles.Size = new System.Drawing.Size(227, 22);
- this.chkUseDownloadedFiles.TabIndex = 29;
- this.chkUseDownloadedFiles.Text = "Don\'t Prompt to Re-Download";
- this.chkUseDownloadedFiles.UseVisualStyleBackColor = false;
- this.chkUseDownloadedFiles.CheckedChanged += new System.EventHandler(this.chkUseDownloadedFiles_CheckedChanged);
+ this.separator3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.separator3.Location = new System.Drawing.Point(20, 535);
+ this.separator3.Name = "separator3";
+ this.separator3.Size = new System.Drawing.Size(320, 1);
+ this.separator3.TabIndex = 32;
//
- // bandwidthLabel
+ // separator4
//
- this.bandwidthLabel.AutoSize = true;
- this.bandwidthLabel.BackColor = System.Drawing.Color.Transparent;
- this.bandwidthLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.bandwidthLabel.Location = new System.Drawing.Point(8, 314);
- this.bandwidthLabel.Name = "bandwidthLabel";
- this.bandwidthLabel.Size = new System.Drawing.Size(115, 18);
- this.bandwidthLabel.TabIndex = 30;
- this.bandwidthLabel.Text = "Bandwidth Limit:";
- this.bandwidthLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- //
- // bandwidthLimitTextBox
- //
- this.bandwidthLimitTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.bandwidthLimitTextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
- this.bandwidthLimitTextBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.bandwidthLimitTextBox.ForeColor = System.Drawing.Color.White;
- this.bandwidthLimitTextBox.Location = new System.Drawing.Point(129, 312);
- this.bandwidthLimitTextBox.Name = "bandwidthLimitTextBox";
- this.bandwidthLimitTextBox.Size = new System.Drawing.Size(46, 21);
- this.bandwidthLimitTextBox.TabIndex = 31;
- this.bandwidthLimitTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
- this.bandwidthLimitTextBox.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.bandwidthLimitTextBox_KeyPress);
- //
- // label1
- //
- this.label1.AutoSize = true;
- this.label1.BackColor = System.Drawing.Color.Transparent;
- this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.label1.Location = new System.Drawing.Point(181, 314);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(43, 18);
- this.label1.TabIndex = 32;
- this.label1.Text = "MB/s";
+ this.separator4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.separator4.Location = new System.Drawing.Point(20, 650);
+ this.separator4.Name = "separator4";
+ this.separator4.Size = new System.Drawing.Size(320, 1);
+ this.separator4.TabIndex = 34;
//
// SettingsForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
- this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage")));
- this.ClientSize = new System.Drawing.Size(339, 694);
- this.Controls.Add(this.label1);
- this.Controls.Add(this.bandwidthLimitTextBox);
+ this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
+ this.ClientSize = new System.Drawing.Size(360, 795);
+ this.Controls.Add(this.lblGeneralSection);
+ this.Controls.Add(this.toggleCheckForUpdates);
+ this.Controls.Add(this.lblCheckForUpdates);
+ this.Controls.Add(this.toggleUpdateConfig);
+ this.Controls.Add(this.lblUpdateConfig);
+ this.Controls.Add(this.toggleMessageBoxes);
+ this.Controls.Add(this.lblMessageBoxes);
+ this.Controls.Add(this.toggleTrailers);
+ this.Controls.Add(this.lblTrailers);
+ this.Controls.Add(this.separator1);
+ this.Controls.Add(this.lblDownloadSection);
+ this.Controls.Add(this.toggleNoDeviceMode);
+ this.Controls.Add(this.lblNoDeviceMode);
+ this.Controls.Add(this.toggleDeleteAfterInstall);
+ this.Controls.Add(this.lblDeleteAfterInstall);
+ this.Controls.Add(this.toggleUseDownloadedFiles);
+ this.Controls.Add(this.lblUseDownloadedFiles);
+ this.Controls.Add(this.toggleAutoReinstall);
+ this.Controls.Add(this.lblAutoReinstall);
this.Controls.Add(this.bandwidthLabel);
- this.Controls.Add(this.chkUseDownloadedFiles);
- this.Controls.Add(this.openBackupDirectory);
- this.Controls.Add(this.openDownloadDirectory);
- this.Controls.Add(this.virtualFilesystemCompatibilityCheckbox);
- this.Controls.Add(this.chkSingleThread);
- this.Controls.Add(this.setBackupDirectory);
+ this.Controls.Add(this.bandwidthLimitTextBox);
+ this.Controls.Add(this.lblBandwidthUnit);
+ this.Controls.Add(this.separator2);
+ this.Controls.Add(this.lblAdvancedSection);
+ this.Controls.Add(this.toggleSingleThread);
+ this.Controls.Add(this.lblSingleThread);
+ this.Controls.Add(this.toggleUserJson);
+ this.Controls.Add(this.lblUserJson);
+ this.Controls.Add(this.toggleBMBF);
+ this.Controls.Add(this.lblBMBF);
+ this.Controls.Add(this.toggleVirtualFilesystem);
+ this.Controls.Add(this.lblVirtualFilesystem);
+ this.Controls.Add(this.separator3);
+ this.Controls.Add(this.lblDirectoriesSection);
this.Controls.Add(this.setDownloadDirectory);
+ this.Controls.Add(this.openDownloadDirectory);
+ this.Controls.Add(this.setBackupDirectory);
+ this.Controls.Add(this.openBackupDirectory);
+ this.Controls.Add(this.separator4);
+ this.Controls.Add(this.lblDebugSection);
this.Controls.Add(this.btnOpenDebug);
this.Controls.Add(this.btnResetDebug);
this.Controls.Add(this.btnUploadDebug);
- this.Controls.Add(this.resetSettingsButton);
- this.Controls.Add(this.applyButton);
this.Controls.Add(this.crashlogID);
- this.Controls.Add(this.bmbfBox);
- this.Controls.Add(this.AutoReinstBox);
- this.Controls.Add(this.nodevicemodeBox);
- this.Controls.Add(this.userJsonOnGameInstall);
- this.Controls.Add(this.updateConfigCheckBox);
- this.Controls.Add(this.deleteAfterInstallCheckBox);
- this.Controls.Add(this.enableMessageBoxesCheckBox);
- this.Controls.Add(this.checkForUpdatesCheckBox);
- this.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "BackColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
+ this.Controls.Add(this.applyButton);
+ this.Controls.Add(this.resetSettingsButton);
this.ForeColor = System.Drawing.Color.White;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
+ this.MinimizeBox = false;
this.Name = "SettingsForm";
this.ShowIcon = false;
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Settings";
this.Load += new System.EventHandler(this.SettingsForm_Load);
this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.SettingsForm_KeyPress);
@@ -508,31 +803,68 @@ namespace AndroidSideloader
#endregion
- private System.Windows.Forms.CheckBox checkForUpdatesCheckBox;
- private System.Windows.Forms.CheckBox enableMessageBoxesCheckBox;
- private System.Windows.Forms.CheckBox deleteAfterInstallCheckBox;
- private System.Windows.Forms.CheckBox updateConfigCheckBox;
- private System.Windows.Forms.CheckBox userJsonOnGameInstall;
- private System.Windows.Forms.Label crashlogID;
- private System.Windows.Forms.CheckBox nodevicemodeBox;
- private System.Windows.Forms.CheckBox bmbfBox;
- private System.Windows.Forms.CheckBox AutoReinstBox;
- private RoundButton applyButton;
- private RoundButton resetSettingsButton;
- private RoundButton btnResetDebug;
- private RoundButton btnUploadDebug;
- private RoundButton btnOpenDebug;
- private RoundButton setDownloadDirectory;
- private System.Windows.Forms.FolderBrowserDialog downloadDirectorySetter;
- private RoundButton setBackupDirectory;
- private System.Windows.Forms.FolderBrowserDialog backupDirectorySetter;
- private System.Windows.Forms.CheckBox chkSingleThread;
- private System.Windows.Forms.CheckBox virtualFilesystemCompatibilityCheckbox;
- private RoundButton openBackupDirectory;
- private RoundButton openDownloadDirectory;
- private System.Windows.Forms.CheckBox chkUseDownloadedFiles;
+ // Section Labels
+ private System.Windows.Forms.Label lblGeneralSection;
+ private System.Windows.Forms.Label lblDownloadSection;
+ private System.Windows.Forms.Label lblAdvancedSection;
+ private System.Windows.Forms.Label lblDirectoriesSection;
+ private System.Windows.Forms.Label lblDebugSection;
+
+ // Toggle Switches
+ private ToggleSwitch toggleCheckForUpdates;
+ private ToggleSwitch toggleUpdateConfig;
+ private ToggleSwitch toggleNoDeviceMode;
+ private ToggleSwitch toggleDeleteAfterInstall;
+ private ToggleSwitch toggleSingleThread;
+ private ToggleSwitch toggleUseDownloadedFiles;
+ private ToggleSwitch toggleAutoReinstall;
+ private ToggleSwitch toggleMessageBoxes;
+ private ToggleSwitch toggleUserJson;
+ private ToggleSwitch toggleBMBF;
+ private ToggleSwitch toggleVirtualFilesystem;
+ private ToggleSwitch toggleTrailers;
+
+ // Toggle Labels
+ private System.Windows.Forms.Label lblCheckForUpdates;
+ private System.Windows.Forms.Label lblUpdateConfig;
+ private System.Windows.Forms.Label lblNoDeviceMode;
+ private System.Windows.Forms.Label lblDeleteAfterInstall;
+ private System.Windows.Forms.Label lblSingleThread;
+ private System.Windows.Forms.Label lblUseDownloadedFiles;
+ private System.Windows.Forms.Label lblAutoReinstall;
+ private System.Windows.Forms.Label lblMessageBoxes;
+ private System.Windows.Forms.Label lblUserJson;
+ private System.Windows.Forms.Label lblBMBF;
+ private System.Windows.Forms.Label lblVirtualFilesystem;
+ private System.Windows.Forms.Label lblTrailers;
+
+ // Bandwidth
private System.Windows.Forms.Label bandwidthLabel;
private System.Windows.Forms.TextBox bandwidthLimitTextBox;
- private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label lblBandwidthUnit;
+
+ // Buttons
+ private RoundButton setDownloadDirectory;
+ private RoundButton setBackupDirectory;
+ private RoundButton openDownloadDirectory;
+ private RoundButton openBackupDirectory;
+ private RoundButton btnOpenDebug;
+ private RoundButton btnResetDebug;
+ private RoundButton btnUploadDebug;
+ private RoundButton applyButton;
+ private RoundButton resetSettingsButton;
+
+ // Dialogs
+ private System.Windows.Forms.FolderBrowserDialog downloadDirectorySetter;
+ private System.Windows.Forms.FolderBrowserDialog backupDirectorySetter;
+
+ // Other
+ private System.Windows.Forms.Label crashlogID;
+
+ // Separators
+ private System.Windows.Forms.Panel separator1;
+ private System.Windows.Forms.Panel separator2;
+ private System.Windows.Forms.Panel separator3;
+ private System.Windows.Forms.Panel separator4;
}
-}
+}
\ No newline at end of file
diff --git a/SettingsForm.cs b/SettingsForm.cs
index 99d6014..3764406 100644
--- a/SettingsForm.cs
+++ b/SettingsForm.cs
@@ -11,6 +11,7 @@ namespace AndroidSideloader
public partial class SettingsForm : Form
{
private static readonly SettingsManager _settings = SettingsManager.Instance;
+
public SettingsForm()
{
InitializeComponent();
@@ -25,35 +26,79 @@ namespace AndroidSideloader
private void initSettings()
{
- checkForUpdatesCheckBox.Checked = _settings.CheckForUpdates;
- enableMessageBoxesCheckBox.Checked = _settings.EnableMessageBoxes;
- deleteAfterInstallCheckBox.Checked = _settings.DeleteAllAfterInstall;
- updateConfigCheckBox.Checked = _settings.AutoUpdateConfig;
- userJsonOnGameInstall.Checked = _settings.UserJsonOnGameInstall;
- nodevicemodeBox.Checked = _settings.NodeviceMode;
- bmbfBox.Checked = _settings.BMBFChecked;
- AutoReinstBox.Checked = _settings.AutoReinstall;
- chkSingleThread.Checked = _settings.SingleThreadMode;
- virtualFilesystemCompatibilityCheckbox.Checked = _settings.VirtualFilesystemCompatibility;
+ // Use SetCheckedSilent to avoid triggering events during initialization
+ toggleCheckForUpdates.SetCheckedSilent(_settings.CheckForUpdates);
+ toggleMessageBoxes.SetCheckedSilent(_settings.EnableMessageBoxes);
+ toggleDeleteAfterInstall.SetCheckedSilent(_settings.DeleteAllAfterInstall);
+ toggleUpdateConfig.SetCheckedSilent(_settings.AutoUpdateConfig);
+ toggleUserJson.SetCheckedSilent(_settings.UserJsonOnGameInstall);
+ toggleNoDeviceMode.SetCheckedSilent(_settings.NodeviceMode);
+ toggleBMBF.SetCheckedSilent(_settings.BMBFChecked);
+ toggleAutoReinstall.SetCheckedSilent(_settings.AutoReinstall);
+ toggleSingleThread.SetCheckedSilent(_settings.SingleThreadMode);
+ toggleVirtualFilesystem.SetCheckedSilent(_settings.VirtualFilesystemCompatibility);
+ toggleUseDownloadedFiles.SetCheckedSilent(_settings.UseDownloadedFiles);
+ toggleTrailers.SetCheckedSilent(_settings.TrailersEnabled);
bandwidthLimitTextBox.Text = _settings.BandwidthLimit.ToString();
- if (nodevicemodeBox.Checked)
+
+ // Handle no device mode disabling delete after install
+ if (toggleNoDeviceMode.Checked)
{
- deleteAfterInstallCheckBox.Checked = false;
- deleteAfterInstallCheckBox.Enabled = false;
+ toggleDeleteAfterInstall.SetCheckedSilent(false);
+ toggleDeleteAfterInstall.Enabled = false;
+ lblDeleteAfterInstall.ForeColor = System.Drawing.Color.FromArgb(100, 100, 100);
}
- chkUseDownloadedFiles.Checked = _settings.UseDownloadedFiles;
}
private void initToolTips()
{
- ToolTip checkForUpdatesToolTip = new ToolTip();
- checkForUpdatesToolTip.SetToolTip(checkForUpdatesCheckBox, "If this is checked, the software will check for available updates");
- ToolTip enableMessageBoxesToolTip = new ToolTip();
- enableMessageBoxesToolTip.SetToolTip(enableMessageBoxesCheckBox, "If this is checked, the software will display message boxes after every completed task");
- ToolTip deleteAfterInstallToolTip = new ToolTip();
- deleteAfterInstallToolTip.SetToolTip(deleteAfterInstallCheckBox, "If this is checked, the software will delete all game files after downloading and installing a game from a remote server");
- ToolTip chkUseDownloadedFilesTooltip = new ToolTip();
- chkUseDownloadedFilesTooltip.SetToolTip(chkUseDownloadedFiles, "If this is checked, Rookie will always install Downloaded files without Re-Downloading or Asking to Re-Download");
+ ToolTip toolTip = new ToolTip();
+ toolTip.SetToolTip(toggleCheckForUpdates, "Check for available application updates on startup");
+ toolTip.SetToolTip(lblCheckForUpdates, "Check for available application updates on startup");
+ toolTip.SetToolTip(toggleMessageBoxes, "Show message boxes after every completed task");
+ toolTip.SetToolTip(lblMessageBoxes, "Show message boxes after every completed task");
+ toolTip.SetToolTip(toggleDeleteAfterInstall, "Delete game files after downloading and installing");
+ toolTip.SetToolTip(lblDeleteAfterInstall, "Delete game files after downloading and installing");
+ toolTip.SetToolTip(toggleUseDownloadedFiles, "Always install downloaded files without prompting to re-download");
+ toolTip.SetToolTip(lblUseDownloadedFiles, "Always install downloaded files without prompting to re-download");
+ toolTip.SetToolTip(toggleTrailers, "Show game trailers in the sidebar when selecting a game");
+ toolTip.SetToolTip(lblTrailers, "Show game trailers in the sidebar when selecting a game");
+ }
+
+ private void SaveAllSettings()
+ {
+ string input = bandwidthLimitTextBox.Text;
+ Regex regex = new Regex(@"^\d+(\.\d+)?$");
+
+ if (regex.IsMatch(input) && float.TryParse(input, out float bandwidthLimit))
+ {
+ _settings.BandwidthLimit = bandwidthLimit;
+ }
+
+ _settings.CheckForUpdates = toggleCheckForUpdates.Checked;
+ _settings.EnableMessageBoxes = toggleMessageBoxes.Checked;
+ _settings.DeleteAllAfterInstall = toggleDeleteAfterInstall.Checked;
+ _settings.AutoUpdateConfig = toggleUpdateConfig.Checked;
+ _settings.UserJsonOnGameInstall = toggleUserJson.Checked;
+ _settings.NodeviceMode = toggleNoDeviceMode.Checked;
+ _settings.BMBFChecked = toggleBMBF.Checked;
+ _settings.AutoReinstall = toggleAutoReinstall.Checked;
+ _settings.SingleThreadMode = toggleSingleThread.Checked;
+ _settings.VirtualFilesystemCompatibility = toggleVirtualFilesystem.Checked;
+ _settings.UseDownloadedFiles = toggleUseDownloadedFiles.Checked;
+ _settings.TrailersEnabled = toggleTrailers.Checked;
+
+ if (Program.form != null)
+ {
+ Program.form.SetTrailerVisibility(toggleTrailers.Checked);
+ }
+
+ if (_settings.AutoUpdateConfig)
+ {
+ _settings.CreatePubMirrorFile = true;
+ }
+
+ _settings.Save();
}
public void btnUploadDebug_click(object sender, EventArgs e)
@@ -89,74 +134,54 @@ namespace AndroidSideloader
string input = bandwidthLimitTextBox.Text;
Regex regex = new Regex(@"^\d+(\.\d+)?$");
- if (regex.IsMatch(input) && float.TryParse(input, out float bandwidthLimit))
- {
- _settings.BandwidthLimit = bandwidthLimit;
- _settings.Save();
- this.Close();
- }
- else
+ if (!regex.IsMatch(input) || !float.TryParse(input, out _))
{
MessageBox.Show("Please enter a valid number for the bandwidth limit.");
+ return;
}
+
+ SaveAllSettings();
+ this.Close();
}
- private void checkForUpdatesCheckBox_CheckedChanged(object sender, EventArgs e)
+ private void toggleCheckForUpdates_CheckedChanged(object sender, EventArgs e)
{
- _settings.CheckForUpdates = checkForUpdatesCheckBox.Checked;
- _settings.Save();
+ // Settings saved on form close
}
- private void chkUseDownloadedFiles_CheckedChanged(object sender, EventArgs e)
+ private void toggleUseDownloadedFiles_CheckedChanged(object sender, EventArgs e)
{
- _settings.UseDownloadedFiles = chkUseDownloadedFiles.Checked;
- _settings.Save();
+ // Settings saved on form close
}
- private void enableMessageBoxesCheckBox_CheckedChanged(object sender, EventArgs e)
+ private void toggleMessageBoxes_CheckedChanged(object sender, EventArgs e)
{
- _settings.EnableMessageBoxes = enableMessageBoxesCheckBox.Checked;
- _settings.Save();
+ // Settings saved on form close
+ }
+
+ private void toggleTrailers_CheckedChanged(object sender, EventArgs e)
+ {
+ // Settings saved on form close
}
private void resetSettingsButton_Click(object sender, EventArgs e)
{
- // Reset the specific properties
- _settings.CustomDownloadDir = false;
- _settings.CustomBackupDir = false;
-
- // Set backup folder and download directory
- MainForm.backupFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Rookie Backups");
- _settings.DownloadDir = Environment.CurrentDirectory;
- _settings.CreatePubMirrorFile = true;
-
- // Optionally, call initSettings if it needs to initialize anything based on these settings
- initSettings();
-
- // Save the updated settings
- _settings.Save();
+ this.Close();
}
- private void deleteAfterInstallCheckBox_CheckedChanged(object sender, EventArgs e)
+ private void toggleDeleteAfterInstall_CheckedChanged(object sender, EventArgs e)
{
- _settings.DeleteAllAfterInstall = deleteAfterInstallCheckBox.Checked;
- _settings.Save();
+ // Settings saved on form close
}
- private void updateConfigCheckBox_CheckedChanged(object sender, EventArgs e)
+ private void toggleUpdateConfig_CheckedChanged(object sender, EventArgs e)
{
- _settings.AutoUpdateConfig = updateConfigCheckBox.Checked;
- if (_settings.AutoUpdateConfig)
- {
- _settings.CreatePubMirrorFile = true;
- }
- _settings.Save();
+ // Settings saved on form close
}
- private void userJsonOnGameInstall_CheckedChanged(object sender, EventArgs e)
+ private void toggleUserJson_CheckedChanged(object sender, EventArgs e)
{
- _settings.UserJsonOnGameInstall = userJsonOnGameInstall.Checked;
- _settings.Save();
+ // Settings saved on form close
}
private void SettingsForm_KeyPress(object sender, KeyPressEventArgs e)
@@ -190,48 +215,50 @@ namespace AndroidSideloader
return base.ProcessDialogKey(keyData);
}
- private void nodevicemodeBox_CheckedChanged(object sender, EventArgs e)
+ private void toggleNoDeviceMode_CheckedChanged(object sender, EventArgs e)
{
- _settings.NodeviceMode = nodevicemodeBox.Checked;
- if (!nodevicemodeBox.Checked)
+ // Update UI state only - settings saved on form close
+ if (!toggleNoDeviceMode.Checked)
{
- deleteAfterInstallCheckBox.Checked = true;
- _settings.DeleteAllAfterInstall = true;
- deleteAfterInstallCheckBox.Enabled = true;
+ toggleDeleteAfterInstall.Checked = true;
+ toggleDeleteAfterInstall.Enabled = true;
+ lblDeleteAfterInstall.ForeColor = System.Drawing.Color.White;
}
else
{
- deleteAfterInstallCheckBox.Checked = false;
- _settings.DeleteAllAfterInstall = false;
- deleteAfterInstallCheckBox.Enabled = false;
+ toggleDeleteAfterInstall.SetCheckedSilent(false);
+ toggleDeleteAfterInstall.Enabled = false;
+ lblDeleteAfterInstall.ForeColor = System.Drawing.Color.FromArgb(100, 100, 100);
}
- _settings.Save();
}
- private void bmbfBox_CheckedChanged(object sender, EventArgs e)
+ private void toggleBMBF_CheckedChanged(object sender, EventArgs e)
{
- _settings.BMBFChecked = bmbfBox.Checked;
- _settings.Save();
+ // Settings saved on form close
}
- private void AutoReinstBox_CheckedChanged(object sender, EventArgs e)
+ private void toggleAutoReinstall_CheckedChanged(object sender, EventArgs e)
{
- _settings.AutoReinstall = AutoReinstBox.Checked;
- _settings.Save();
+ // Settings saved on form close
}
- private void AutoReinstBox_Click(object sender, EventArgs e)
+ private void toggleAutoReinstall_Click(object sender, EventArgs e)
{
- if (AutoReinstBox.Checked)
+ if (toggleAutoReinstall.Checked)
{
- DialogResult dialogResult = FlexibleMessageBox.Show(this, "WARNING: This box enables automatic reinstall when installs fail,\ndue to some games not allowing " +
- "access to their save data (less than 5%) this\noption can lead to losing your progress." +
- " However with this option\nchecked when installs fail you won't have to agree to a prompt to perform\nthe reinstall. " +
- "(ideal when installing from a queue).\n\nNOTE: If your usb/wireless adb connection is extremely slow this option can\ncause larger" +
- "apk file installations to fail. Enable anyway?", "WARNING", MessageBoxButtons.OKCancel);
+ DialogResult dialogResult = FlexibleMessageBox.Show(this,
+ "WARNING: This enables automatic reinstall when installs fail.\n\n" +
+ "Some games (less than 5%) don't allow access to their save data, " +
+ "which can lead to losing your progress.\n\n" +
+ "However, with this option enabled, you won't have to confirm reinstalls manually " +
+ "(ideal for queue installations).\n\n" +
+ "NOTE: If your USB/wireless ADB connection is slow, this may cause " +
+ "larger APK installations to fail.\n\nEnable anyway?",
+ "WARNING", MessageBoxButtons.OKCancel);
+
if (dialogResult == DialogResult.Cancel)
{
- AutoReinstBox.Checked = false;
+ toggleAutoReinstall.SetCheckedSilent(false);
}
}
}
@@ -250,7 +277,6 @@ namespace AndroidSideloader
{
_settings.CustomDownloadDir = true;
_settings.DownloadDir = downloadDirectorySetter.SelectedPath;
- _settings.Save();
}
}
@@ -261,20 +287,17 @@ namespace AndroidSideloader
_settings.CustomBackupDir = true;
_settings.BackupDir = backupDirectorySetter.SelectedPath;
MainForm.backupFolder = _settings.BackupDir;
- _settings.Save();
}
}
- private void chkSingleThread_CheckedChanged(object sender, EventArgs e)
+ private void toggleSingleThread_CheckedChanged(object sender, EventArgs e)
{
- _settings.SingleThreadMode = chkSingleThread.Checked;
- _settings.Save();
+ // Settings saved on form close
}
- private void virtualFilesystemCompatibilityCheckbox_CheckedChanged(object sender, EventArgs e)
+ private void toggleVirtualFilesystem_CheckedChanged(object sender, EventArgs e)
{
- _settings.VirtualFilesystemCompatibility = virtualFilesystemCompatibilityCheckbox.Checked;
- _settings.Save();
+ // Settings saved on form close
}
private void openDownloadDirectory_Click(object sender, EventArgs e)
diff --git a/SettingsForm.resx b/SettingsForm.resx
index 60a1fe2..1cb04e2 100644
--- a/SettingsForm.resx
+++ b/SettingsForm.resx
@@ -127,3052 +127,6 @@
25
-
-
- iVBORw0KGgoAAAANSUhEUgAAB4AAAAQ4CAYAAADo08FDAAAABGdBTUEAALGPC/xhBQAA/8dJREFUeF7s
- 3FFqbNnZNetqwrncBS6Kv/+N9EECGbNkMpR+GHMbvnkRqMjcsUa8dbuQ/vj169c//7//7/87ysfmq93/
- 9//+37fPvvjzzz//a7d2V9Tuq+Z778/d2l1Ru6+a770/d2t3Re2+ar73/tyt3RW1+6r53vtzt3ZX1O6r
- 5nvvz93aXVG7r5rvvT93a3dF7b5qvvf+3K3dFbX7qvne+3O3dlfU7qvme+/P3dpdUbuvmu+9P3drd0Xt
- vmq+9/7crd0Vtfuq+d77c7d2V9Tuq+Z778/d2l1Ru6+a770/d2t3Re2+ar73/tyt3RW1+6pZ7/3j4z/+
- +OOPo3wFPD//4iP6+dkJd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF
- 7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7ora
- lWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUr
- zeXeF8AHqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gr
- aleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfU
- rjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqW53PsC+AC1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7ui
- dqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNJd7XwAfoHalWdwVtSvN4q6oXWkW
- d0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izu
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pXmcu8L4APUrjSLu6J2pVncFbUrzeKuqF1pFndF7Uqz
- uCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZx
- V9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKu
- qF1pFndF7UqzuCtqV5rFXVG70lzufQF8gNqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gralea
- xV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSL
- u6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3
- Re1Ks7graleay/3j4x/8DiRa3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ
- 3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ
- 3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ
- 3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3PsbwAeoXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSL
- u6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3
- Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K
- 2pVmcVfUrjSLu6J2pbnc+wL4ALUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ
- 3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4
- 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
- onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF
- 7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7ora
- lWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsv94+Mf/A4kWtxnxymkWdxnxymkWdxnxymk
- WdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymk
- WdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymk
- WdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdz7G8AHqF1pFndF
- 7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7ora
- lWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUr
- zeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqW53PsC+AC1K83irqhdaRZ3Re1Ks7gr
- aleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfU
- rjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhd
- aRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNJd7XwAfoHalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7ui
- dqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0Xt
- SrO4K2pXmsVdUbvSLO6K2pXmcu8L4APUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izu
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70lzufQF8gNqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZx
- V9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKu
- qF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleay70v
- gA9Qu9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSL
- u6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3
- Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSnO5f/zjH//4569fv/75
- 559/fv78dz6+++uvvz5//jc8n/fvz/34+RX/5CP6+dkXX894fv5T92v73nvvfZfn8+6935t+0izu1/a9
- 9977Ls/n3Xu/N/2kWdyv7Xvvvfddns+7935v+kmzuF/b995777s8n3fv/d70k2Zxv7bvvffed3k+7977
- veknzeJ+bd97773v8nzevfd700+axf3avvfee9/l+bx77/emnzSL+7V97733vsvzef8L9/7xcdAz6IsP
- +eP7/8Tff//9yfPzLz7cj/+J/4mvzWfQmo/Ne++99z9x7733Pu+8935vWnLvvfc+77j3fv/u3nvvvffu
- uffee5933Hu/f3fvvffee/fce++9zzvuvd+/u/fee++9e+69997nHffe79/9L9/78k9Af0Q/P/v3Xx9e
- uStqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZx
- V9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKu
- 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
- tSvN4q6oXWkWd0XtSrO4Kz43Xw1LtLgraleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkW
- d0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izu
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd8Xn5qthiRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkW
- d0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izu
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q743Hw1LNHl/vr161/POMXX5rPnp83i3nv33Hvfaxb33rvn3vtes7j33j333veaxb337rn3vtcs
- 7r13z733vWZx77177r3vNYt7791z732vWdx7755773vN4t5799x732sW99675977XrO4v+ve+wL4jWZx
- 77177r3vNYt7791z732vWdx7755773vN4t5799x732sW99675977XrO499499973msW99+65977XLO69
- d8+9971mce+9e+697zWLe+/dc+99r1nc33Xvb3sB/MpdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKu
- qF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1R
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCs+N18NS7S4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKu
- qF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1R
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFnfF5+arYYkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKu
- qF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1R
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKu+Nx8NSzR4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKu
- qF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1R
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFZ+br4YlWtwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKu
- qF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1R
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu+Jz
- 89WwRIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKu
- qF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1R
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVd8br4aluhy
- P77/HUizuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0iz
- uM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0iz
- uM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0iz
- uM+OU0izuM+OU/y2F8Cv3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu74nPz1bBEi7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV3xu
- vhqWaHFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7orPzVfDEi3u
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV3xuflqWKLFXVG70izu
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7grPjdfDUu0uCtqV5rFXVG70izu
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3xefmr1+//hXw5CP6+dkXH97KXVG70izu
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7grPjZfvgBeUQe/+p/1559//tdu
- 7a6o3VfN996fu7W7onZfNd97f+7W7orafdV87/25W7sravdV8733527trqjdV8333p+7tbuidl8133t/
- 7tbuitp91Xzv/blbuytq91Xzvffnbu2uqN1Xzffen7u1u6J2XzXfe3/u1u6K2n3VfO/9uVu7K2r3VfO9
- 9+du7a6o3VfN996fu7W7onZfNd97f+7W7orafdV87/25W7sravdVs9778k9Ar/gKeH7+xUf087MT7ora
- lWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUr
- zeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gralea
- xV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsu9L4APULvSLO6K2pVmcVfU
- rjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhd
- aRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvS
- LO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UpzufcF8AFqV5rFXVG70izuitqVZnFX1K40i7ui
- dqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0Xt
- SrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqV
- ZnFX1K40i7uidqVZ3BW1K83irqhdaS73vgA+QO1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVtSvN5d4XwAeoXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKu
- qF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1R
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pbnc+wL4ALUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3
- Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K
- 2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40l/vHxz/4HUi0
- uM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0iz
- uM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0iz
- uM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0izuM+OU0iz
- uM+OU0izuPc3gA9Qu9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K
- 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
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKu+Nx8NSzR4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKu
- qF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1R
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFZ+br4YlutyP738H0izus+MU0izus+MU0izus+MU0izus+MU0izus+MU0izus+MU0izus+MU0izu
- s+MU0izus+MU0izus+MU0izus+MU0izus+MU0izus+MU0izus+MU0izus+MU0izus+MU0izus+MU0izu
- s+MU0izus+MU0izus+MU0izus+MU0izus+MU0izus+MU0izus+MU0izus+MU0izus+MU0izus+MU0izu
- s+MU0izus+MU0izus+MU0izus+MUv+0F8Ct3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVtSvN4q743Hw1LNHirqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVn5uvhiVa3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu74nPz1bBEi7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV3xu
- vhqWaHFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7orPzVfDEi3u
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV3xuflqWKLL/fXr17+e
- cYqvzWfPT5vFvffuufe+1yzuvXfPvfe9ZnHvvXvuve81i3vv3XPvfa9Z3Hvvnnvve83i3nv33Hvfaxb3
- 3rvn3vtes7j33j333veaxb337rn3vtcs7r13z733vWZxf9e99wXwG83i3nv33Hvfaxb33rvn3vtes7j3
- 3j333veaxb337rn3vtcs7r13z733vWZx77177r3vNYt7791z732vWdx7755773vN4t5799x732sW9967
- 5977XrO4v+ve3/YC+JW7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVd8br4almhxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6Kz81X
- wxIt7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd8bn5aliixV1R
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4Kz43Xw1LtLgraleaxV1R
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd8Xn5qthiRZ3Re1Ks7graleaxV1R
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q743Hw1LNHlfnz/O5BmcZ8dp5BmcZ8dp5Bm
- cZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5Bm
- cZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5Bm
- cZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp/htL4BfuStq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3xefmq2GJFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irvjcfDUs0eKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BWfm6+GJVrcFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- 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
- cZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5Bm
- cZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5Bm
- cZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5BmcZ8dp5Bmce9vAB+gdqVZ3BW1
- K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pX
- msVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40
- i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oraleZy7wvgA9SuNIu7onalWdwVtSvN4q6o
- XWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG7
- 0izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onal
- WdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSXO59AXyA2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF
- 7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7ora
- lWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUr
- zeKuqF1pFndF7UqzuCtqV5rLvS+AD1C70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gr
- aleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfU
- rjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhd
- aRZ3Re1Kc7n3BfABaleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7ui
- dqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWku974A
- PkDtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izu
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeX+8evXr3895BRfm8+g
- n0aLe+/dc+99r1nce++ee+97zeLee/fce99rFvfeu+fe+16zuPfePffe95rFvffuufe+1yzuvXfPvfe9
- ZnHvvXvuve81i3vv3XPvfa9Z3Hvvnnvve83i/l+7974APsC9971mce+9e+697zWLe+/dc+99r1nce++e
- e+97zeLee/fce99rFvfeu+fe+16zuPfePffe95rFvffuufe+1yzuvXfPvfe9ZnHvvXvuve81i3vv3fM7
- 771/AvoAtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF
- 7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7ora
- lWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSXe18AH6B2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gr
- aleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfU
- rjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqV5nLvC+AD1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7ui
- dqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Jc7n0BfIDalWZxV9SuNIu7onalWdwVtSvN4q6oXWkW
- d0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izu
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsu9L4APULvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7Uqz
- uCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZx
- V9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKu
- qF1pFndF7UpzufcF8AFqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gralea
- xV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSL
- u6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaS73
- j49/8DuQaHGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQ
- ZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQ
- ZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQ
- ZnGfHaeQZnGfHaeQZnHvbwAfoHalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSL
- u6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3
- Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K
- 2pXmcu8L4APUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ
- 3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4
- K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70lzufQF8gNqV
- ZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN
- 4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rF
- XVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleay70vgA9Qu9Is7oralWZxV9Su
- NIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSnO59wXwAWpXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSLu6J2pVncFbUrzeKuqF1pLve+AD5A7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1
- K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pX
- msVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40
- i7uidqVZ3BW1K83l/vGPf/zjn79+/frnn3/++fnz3/n47q+//vr8+d/wfN6/P/fj51f8k4/o52dffD3j
- +flP3a/te++9912ez7v3fm/6SbO4X9v33nvvuzyfd+/93vSTZnG/tu+99953eT7v3vu96SfN4n5t33vv
- ve/yfN6993vTT5rF/dq+99573+X5vHvv96afNIv7tX3vvfe+y/N5997vTT9pFvdr+957732X5/Puvd+b
- ftIs7tf2vffe+y7P5/0v3PvHx0HPoC8+5I/v/xN///33J8/Pv/hwP/4n/ie+Np9Baz4277333v/Evffe
- +7zz3vu9acm99977vOPe+/27e++999675957733ece/9/t299957791z7733Pu+4937/7t5777337rn3
- 3nufd9x7v3/3v3zvyz8B/RH9/Ozff3145a6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSLu6J2pVncFZ+br4YlWtwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSLu+Jz89WwRIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVd8br4almhxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6Kz81X
- wxIt7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd8bn5aliixV1R
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4Kz43Xw1LdLkf3/8OpFnc
- Z8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFnc
- Z8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFnc
- Z8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFncZ8cppFnc
- Z8cpftsL4FfuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV3xuflq
- WKLFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7grPjdfDUu0uCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3xefmq2GJFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irvjcfDUs0eKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BWfm6+GJVrcFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7vic/PVsESX++vXr3894xRfm8+enzaLe+/dc+99r1nc
- e++ee+97zeLee/fce99rFvfeu+fe+16zuPfePffe95rFvffuufe+1yzuvXfPvfe9ZnHvvXvuve81i3vv
- 3XPvfa9Z3Hvvnnvve83i/q577wvgN5rFvffuufe+1yzuvXfPvfe9ZnHvvXvuve81i3vv3XPvfa9Z3Hvv
- nnvve83i3nv33Hvfaxb33rvn3vtes7j33j333veaxb337rn3vtcs7r13z733vWZxf9e9v+0F8Ct3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q743Hw1LNHirqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVn5uvhiVa3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu74nPz1bBEi7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV3xuvhqWaHFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7orPzVfDEi3uitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV3xuflqWKLL/fj+dyDN4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN
- 4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN
- 4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN
- 4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TvHbXgC/clfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuis/NV8MSLe6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXfG5+WpYosVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCs+N18NS7S4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFnfF5+arYYkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKu+Nx8NSzR4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FZ+bv379+lfAk4/o52dffHgrd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKu+Nh8+QJ4RR386n/Wn3/++V+7tbuidl8133t/7tbuitp91Xzv/blbuytq91Xzvffnbu2uqN1X
- zffen7u1u6J2XzXfe3/u1u6K2n3VfO/9uVu7K2r3VfO99+du7a6o3VfN996fu7W7onZfNd97f+7W7ora
- fdV87/25W7sravdV8733527trqjdV8333p+7tbuidl8133t/7tbuitp91Xzv/blbuytq91Xzvffnbu2u
- qN1XzXrvyz8BveIr4Pn5Fx/Rz89OuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3
- Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K
- 2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1
- K83irqhdaS73vgA+QO1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4
- K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX
- 1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN5d4X
- wAeoXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rF
- XVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7
- onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pbnc+wL4ALUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40l3tfAB+gdqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oraleZy7wvgA9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pX
- msVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40
- i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkW
- d0XtSrO4K2pXmsVdUbvSXO4fH//gdyDR4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN
- 4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN
- 4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN
- 4j47TiHN4j47TiHN4j47TiHN4j47TiHN4j47TiHN4t7fAD5A7UqzuCtqV5rFXVG70izuitqVZnFX1K40
- i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkW
- d0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izu
- itqVZnFX1K40i7uidqVZ3BW1K83l3hfAB6hdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onal
- WdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7Uqz
- uCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZx
- V9SuNIu7onaludz7AvgAtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUr
- zeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gralea
- xV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSX
- e18AH6B2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhd
- aRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvS
- LO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqV5nLvC+AD1K40i7ui
- dqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0Xt
- SrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqV
- ZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Jc7n0BfIDalWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsv949evX/96yCm+Np9BP40W99675977XrO499499973
- msW99+65977XLO69d8+9971mce+9e+697zWLe+/dc+99r1nce++ee+97zeLee/fce99rFvfeu+fe+16z
- uPfePffe95rF/b92730BfIB773vN4t5799x732sW99675977XrO499499973msW99+65977XLO69d8+9
- 971mce+9e+697zWLe+/dc+99r1nce++ee+97zeLee/fce99rFvfeu+d33nv/BPQBaleaxV1Ru9Is7ora
- lWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUr
- zeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gralea
- xV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWku974APkDtSrO4K2pXmsVdUbvSLO6K2pVmcVfU
- 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
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSXO59AXyA2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40
- i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkW
- d0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rL/eMf//jH
- P3/9+vXPP//88/Pnv/Px3V9//fX587/h+bx/f+7Hz6/4Jx/Rz8+++HrG8/Oful/b995777s8n3fv/d70
- k2Zxv7bvvffed3k+7977veknzeJ+bd97773v8nzevfd700+axf3avvfee9/l+bx77/emnzSL+7V97733
- vsvzeffe700/aRb3a/vee+99l+fz7r3fm37SLO7X9r333vsuz+fde783/aRZ3K/te++9912ez/tfuPeP
- j4OeQV98yB/f/yf+/vvvT56ff/HhfvxP/E98bT6D1nxs3nvvvf+Je++993nnvfd705J77733ece99/t3
- 99577713z7333vu84977/bt777333rvn3nvvfd5x7/3+3b333nvv3XPvvfc+77j3fv/uf/nel38C+iP6
- +dm///rwyl1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4Kz43Xw1L
- tLgraleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd8Xn5qthiRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q743Hw1LNHirqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVn5uvhiVa3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu74nPz1bBEi7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVm
- cVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV3xuvhqW6HI/vv8dSLO4z45TSLO4z45TSLO4z45TSLO4
- z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4
- z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4
- z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45TSLO4z45T/LYXwK/cFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7vic/PVsESLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFXfG6+GpZocVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuis/NV8MSLe6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXfG5+WpYosVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCs+N18NS7S4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFnfF5+arYYku99evX/96xim+Np89P20W99675977XrO499499973msW99+65977XLO69
- d8+9971mce+9e+697zWLe+/dc+99r1nce++ee+97zeLee/fce99rFvfeu+fe+16zuPfePffe95rF/V33
- 3hfAbzSLe+/dc+99r1nce++ee+97zeLee/fce99rFvfeu+fe+16zuPfePffe95rFvffuufe+1yzuvXfP
- vfe9ZnHvvXvuve81i3vv3XPvfa9Z3Hvvnnvve83i/q57f9sL4FfuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7ui
- dqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV3xuflqWKLFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7ui
- dqVZ3BW1K83irqhdaRZ3Re1Ks7grPjdfDUu0uCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7ui
- dqVZ3BW1K83irqhdaRZ3xefmq2GJFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7ui
- dqVZ3BW1K83irvjcfDUs0eKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7ui
- dqVZ3BWfm6+GJVrcFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7vi
- c/PVsESX+/H970CaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKa
- xX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKa
- xX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKa
- xX12nEKaxX12nEKaxX12nOK3vQB+5a6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gr
- aleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfU
- rjSLu6J2pVncFZ+br4YlWtwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gr
- aleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfU
- rjSLu+Jz89WwRIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gr
- aleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVd8
- br4almhxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gr
- aleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6Kz81XwxIt
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gr
- aleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd8bn5aliixV1Ru9Is
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gr
- aleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4Kz43f/369a+AJx/Rz8+++PBW
- 7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gr
- aleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd8bH58gXwijr41f+s
- P//88792a3dF7b5qvvf+3K3dFbX7qvne+3O3dlfU7qvme+/P3dpdUbuvmu+9P3drd0Xtvmq+9/7crd0V
- tfuq+d77c7d2V9Tuq+Z778/d2l1Ru6+a770/d2t3Re2+ar73/tyt3RW1+6r53vtzt3ZX1O6r5nvvz93a
- XVG7r5rvvT93a3dF7b5qvvf+3K3dFbX7qvne+3O3dlfU7qvme+/P3dpdUbuvmvXel38CesVXwPPzLz6i
- n5+dcFfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1
- K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pX
- msVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70lzufQF8gNqVZnFX
- 1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6o
- XWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG7
- 0izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleay70vgA9Qu9Is7oralWZxV9SuNIu7
- onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF
- 7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7ora
- lWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSnO59wXwAWpXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVnc
- FbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gr
- aleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfU
- rjSLu6J2pVncFbUrzeKuqF1pLve+AD5A7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7ui
- dqVZ3BW1K83l3hfAB6hdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkW
- d0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izu
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onaludw/
- Pv7B70CixX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKa
- xX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKa
- xX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKaxX12nEKa
- xX12nEKaxX12nEKaxb2/AXyA2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izu
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtq
- V5rLvS+AD1C70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZx
- V9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKu
- qF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Kc7n3BfABalea
- xV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSL
- u6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3
- Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWku974APkDtSrO4K2pXmsVdUbvS
- LO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ
- 3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4
- K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeXeF8AHqF1pFndF7UqzuCtqV5rFXVG70izuitqV
- ZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN
- 4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rF
- XVG70izuitqVZnFX1K40i7uidqW53PsC+AC1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is
- 7oralWZxV9SuNJf7x69fv/71kFN8bT6Dfhot7r13z733vWZx77177r3vNYt7791z732vWdx7755773vN
- 4t5799x732sW99675977XrO499499973msW99+65977XLO69d8+9971mce+9e+697zWL+3/t3vsC+AD3
- 3veaxb337rn3vtcs7r13z733vWZx77177r3vNYt7791z732vWdx7755773vN4t5799x732sW99675977
- XrO499499973msW99+65977XLO69d8/vvPf+CegD1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gralea
- xV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSL
- u6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3
- Re1Ks7graleaxV1Ru9Jc7n0BfIDalWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvS
- LO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ
- 3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4
- K2pXmsu9L4APULvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqV
- ZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN
- 4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UpzufcF8AFq
- V5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9Su
- NIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1p
- FndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaS73vgA+QO1Ks7graleaxV1R
- u9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2
- pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1K
- s7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN5d4XwAeoXWkWd0XtSrO4K2pXmsVdUbvSLO6K
- 2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1
- K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pX
- msVdUbvSLO6K2pVmcVfUrjSLu6J2pbncPz7+we9AosV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxC
- msV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxC
- msV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxC
- msV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsV9dpxCmsW9vwF8gNqVZnFX1K40i7uidqVZ3BW1
- K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pX
- msVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40
- i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleay70vgA9Qu9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6o
- XWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG7
- 0izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onal
- WdwVtSvN4q6oXWkWd0XtSnO59wXwAWpXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF
- 7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7ora
- lWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUr
- zeKuqF1pLve+AD5A7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7gr
- aleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfU
- rjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7uidqVZ3BW1K83l3hfA
- B6hdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7ui
- dqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onaludz7AvgAtSvN4q6oXWkW
- d0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izu
- itqVZnFX1K40i7uidqVZ3BW1K83irqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwV
- tSvN4q6oXWkWd0XtSrO4K2pXmsVdUbvSLO6K2pVmcVfUrjSX+8c//vGPf/769euff/755+fPf+fju7/+
- +uvz53/D83n//tyPn1/xTz6in5998fWM5+c/db+277333nd5Pu/e+73pJ83ifm3fe++97/J83r33e9NP
- msX92r733nvf5fm8e+/3pp80i/u1fe+9977L83n33u9NP2kW92v73nvvfZfn8+6935t+0izu1/a99977
- Ls/n3Xu/N/2kWdyv7Xvvvfddns+7935v+kmzuF/b995777s8n/e/cO8fHwc9g774kD++/0/8/fffnzw/
- /+LD/fif+J/42nwGrfnYvPfee/8T99577/POe+/3piX33nvv84577/fv7r333nvvnnvvvfd5x733+3f3
- 3nvvvXfPvffe+7zj3vv9u3vvvffeu+fee+993nHv/f7d//K9L/8E9Ef087N///XhlbuidqVZ3BW1K83i
- rqhdaRZ3Re1Ks7graleaxV1Ru9Is7oralWZxV9SuNIu7onalWdwVtSvN4q6oXWkWd0XtSrO4K2pXmsVd
- UbvSLO6K2pVmcVfUrjSLu6J2pVncFbUrzeKuqF1pFndF7UqzuCtqV5rFXVG70izuitqVZnFX1K40i7ui
- dqVZ3BW1+/+zc0cpkmZXtoRrGFkgofmPsi/hEEKcFL7C+8P+bLjnwUhwL/Nlu14PmdIsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt+K1+W5YosWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBWvzXfDEi1uxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa14bb4blmhxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- LG7Fa/PdsESLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- msWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnErXpvv
- hiVa3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2Lt
- SrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb8dp8NyzRy/36
- /k8gzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKe
- HU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKe
- HU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKeHU8hzeKe
- HU8hzeKeHU/xxx6A37kVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- msWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t+K1+W5YosWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBWvzXfD
- Ei1uxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa14bb4blmhxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9Is
- 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
- 4AdYu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSL
- W7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSvNy7wPwA6xdaRa3Yu1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalebn3AfgB1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- LG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9K83PsA/ABrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- msWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaV7uX1//wZ9AosU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55C
- msU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55C
- msU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55C
- msU9O55CmsU9O55CmsU9O55CmsU9O55CmsU9O55CmsW9fwP4AdauNItbsXalWdyKtSvN4lasXWkWt2Lt
- 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
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvNy70PwA+wdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalebl3gfgB1i7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K83L/+voP/gQSLe7Z8RTSLO7Z
- 8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z
- 8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z
- 8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO79
- G8APsHalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pXm5d4H4AdYu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSvNy7wPwA6xdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalebn3AfgB1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9K83PsA/ABrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaV7ufQB+gLUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40L/ev
- f/zjH//z69ev//n7779ff/4nX9/985//fP35v+H8vf/83a8/v+NPvqLPz775/o3z85+639v33nvvp5y/
- d+/9veknzeJ+b997772fcv7evff3pp80i/u9fe+9937K+Xv33t+bftIs7vf2vffe+ynn7917f2/6SbO4
- 39v33nvvp5y/d+/9veknzeJ+b997772fcv7evff3pp80i/u9fe+9937K+Xv33t+bftIs7vf2vffe+ynn
- 7/1fuPevr4POoG++5K/v/xv/+te/Xpyff/Plfv1P/G98b55BNV+b995773/j3nvvPe+89/7eVHLvvfee
- d9x7f//u3nvvvff23Hvvvecd997fv7v33nvvvT333nvvece99/fv7r333ntvz7333nvece/9/bv/y/e+
- /Segv6LPz/7zrw9XbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- eG2+G5ZocSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxWvz3bBE
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK16b74YlWtyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW/HafDcs0eJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZx
- K9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3IrX5rthiRa3Yu1Ks7gVa1eaxa1Yu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4la8Nt8NS/Ryv77/E0izuGfHU0izuGfHU0izuGfH
- U0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfH
- U0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfH
- U0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU/yxB+B3bsXalWZx
- K9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWteG2+G5ZocSvWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxWvz3bBEi1uxdqVZ3Iq1K83iVqxdaRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 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
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK16b
- 74Ylerlf3/8JpFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFnc
- s+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFnc
- s+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFnc
- s+MppFncs+MppFncs+Mp/tgD8Du3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4la8Nt8NS7S4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- FrfitfluWKLFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVr813
- wxItbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- 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
- 13/wJ5Bocc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bm
- cc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bm
- cc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bmcc+Op5Bm
- cc+Op5Bmcc+Op5Bmce/fAH6AtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjQv9z4AP8DalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSL
- W7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmpd7H4AfYO1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvNy70PwA+wdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- LG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalebl3gfgB1i70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- 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
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83L/esf//jH//z6
- 9et//v7779ef/8nXd//85z9ff/5vOH/vP3/368/v+JOv6POzb75/4/z8p+739r333vsp5+/de39v+kmz
- uN/b995776ecv3fv/b3pJ83ifm/fe++9n3L+3r3396afNIv7vX3vvfd+yvl7997fm37SLO739r333vsp
- 5+/de39v+kmzuN/b995776ecv3fv/b3pJ83ifm/fe++9n3L+3r3396afNIv7vX3vvfd+yvl7/xfu/evr
- oDPomy/56/v/xr/+9a8X5+fffLlf/xP/G9+bZ1DN1+a9997737j33nvPO++9vzeV3Hvvvecd997fv7v3
- 3nvvvT333nvvece99/fv7r333ntvz7333nvece/9/bt777333ttz7733nnfce3//7v/yvW//Ceiv6POz
- //zrw5VbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcStem++GJVrc
- irUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1vx2nw3LNHiVqxdaRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK1+a7YYkWt2LtSrO4FWtXmsWt
- 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
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- LG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1vx2nw3
- LNHiVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- msWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK1+a7YYle7tf3
- fwJpFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfs
- eAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfs
- eAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfs
- eAppFvfseIo/9gD8zq1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- LG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- Fa/Nd8MSLW7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrXhtvhuW
- aHEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 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
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- y70PwA+wdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalebl/vX1H/wJJFrc
- s+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFnc
- s+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFnc
- s+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFncs+MppFnc
- s+MppFnc+zeAH2DtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzcu9D8AP
- sHalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pXm5d4H4AdYu9IsbsXalWZx
- K9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- 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
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalebl3gfgB1i70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K83L/+sc//vE/v379+p+///779ed/8vXdP//5z9ef
- /xvO3/vP3/368zv+5Cv6/Oyb7984P/+p+7197733fsr5e/fe35t+0izu9/a99977Kefv3Xt/b/pJs7jf
- 2/fee++nnL937/296SfN4n5v33vvvZ9y/t699/emnzSL+7197733fsr5e/fe35t+0izu9/a99977Kefv
- 3Xt/b/pJs7jf2/fee++nnL937/296SfN4n5v33vvvZ9y/t7/hXv/+jroDPrmS/76/r/xr3/968X5+Tdf
- 7tf/xP/G9+YZVPO1ee+99/437r333vPOe+/vTSX33nvvece99/fv7r333ntvz7333nvece/9/bt77733
- 3ttz7733nnfce3//7t5777339tx7773nHffe37/7v3zv238C+iv6/Ow///pw5VasXWkWt2LtSrO4FWtX
- msWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncitfmu2GJFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVrw23w1LtLgVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZx
- K9auNItbsXalWdyKtSvN4lasXWkWt+K1+W5YosWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBWvzXfDEi1uxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSL
- W7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3
- Yu1Ks7gVa1eaxa14bb4blmhxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7Fa/PdsEQv9+v7P4E0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0
- i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0
- i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0i3t2PIU0
- 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
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncitfmu2GJFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVrw23w1LtLgVa1eaxa1Yu9IsbsXalWZx
- K9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt+K1+W5Yopf79f2fQJrFPTueQprFPTueQprFPTue
- QprFPTueQprFPTueQprFPTueQprFPTueQprFPTueQprFPTueQprFPTueQprFPTueQprFPTueQprFPTue
- QprFPTueQprFPTueQprFPTueQprFPTueQprFPTueQprFPTueQprFPTueQprFPTueQprFPTueQprFPTue
- QprFPTueQprFPTueQprFPTueQprFPTueQprFPTueQprFPTueQprFPTueQprFPTue4o89AL9zK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7Fa/PdsESLW7F2pVncirUrzeJW
- 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
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pXm5d4H4AdYu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSvNy7wPwA6xdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSL
- W7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalebl/ff0HfwKJFvfseAppFvfseAppFvfseAppFvfs
- eAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfs
- eAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfs
- eAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvfseAppFvf+DeAHWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Urzcu8D8AOsXWkWt2LtSrO4FWtXmsWtWLvS
- LG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 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
- SrO4FWtXmpd7H4AfYO1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvNy/3r
- 6z/4E0i0uGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0iz
- uGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0iz
- uGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0izuGfHU0iz
- uGfHU0izuGfHU0izuPdvAD/A2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5qXex+AH2DtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzcu9D8APsHal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZx
- K9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pXm5d4H4AdYu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSvNy7wPwA6xdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalebn3AfgB1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa1Yu9K83L/+8Y9//M+vX7/+5++//379+Z98fffPf/7z9ef/hvP3/vN3v/78jj/5ij4/++b7
- N87Pf+p+b997772fcv7evff3pp80i/u9fe+9937K+Xv33t+bftIs7vf2vffe+ynn7917f2/6SbO439v3
- 3nvvp5y/d+/9veknzeJ+b997772fcv7evff3pp80i/u9fe+9937K+Xv33t+bftIs7vf2vffe+ynn7917
- f2/6SbO439v33nvvp5y/93/h3r++DjqDvvmSv77/b/zrX/96cX7+zZf79T/xv/G9eQbVfG3ee++9/417
- 7733vPPe+3tTyb333nvece/9/bt777333ttz7733nnfce3//7t5777339tx7773nHffe37+799577709
- 995773nHvff37/4v3/v2n4D+ij4/+8+/Ply5FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrfitfluWKLFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVr813wxItbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- msWteG2+G5ZocSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2Lt
- SrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxWvz
- 3bBEi1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK16b74YlWtyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW/HafDcs0cv9+v5PIM3i
- nh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3i
- nh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3i
- nh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3i
- nh1P8ccegN+5FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrfitflu
- WKLFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVr813wxItbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWteG2+G5ZocSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- 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
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40L/e+AD7A2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5qXe18AH2DtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzcu9L4APsHalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSL
- W7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pXm5d4XwAdYu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSvNy//j4B78D
- iRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEK
- aRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEK
- aRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEK
- 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
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1vxuflqWKLFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSL
- W7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3
- Yu1Ks7gVn5uvhiV6uR/f/w6kWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymk
- WdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymk
- WdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymk
- WdxnxymkWdxnxymkWdxnxymkWdxnxyl+2wvgV27F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZx
- K9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrfjcfDUs0eJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3IrPzVfDEi1uxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9Is
- 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
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa34nPz1bBEL/fj+9+BNIv77DiFNIv77DiFNIv7
- 7DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv7
- 7DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv7
- 7DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DiFNIv77DjFb3sB/MqtWLvS
- LG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBWfm6+GJVrcirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1vxuflqWKLFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVn5uvhiVa3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSL
- W7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb8bn5aliixa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FZ+br4YlWtyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7F2pVmcSvWrjSLW/G5+evXr38HPPmIfn72xYdXuRVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa34mPz5QvginXwq/+sP//88792127F2n3VfO/9ubt2K9buq+Z778/d
- tVuxdl8133t/7q7dirX7qvne+3N37Vas3VfN996fu2u3Yu2+ar73/txduxVr91Xzvffn7tqtWLuvmu+9
- P3fXbsXafdV87/25u3Yr1u6r5nvvz921W7F2XzXfe3/urt2Ktfuq+d77c3ftVqzdV8333p+7a7di7b5q
- vvf+3F27FWv3VfO99+fu2q1Yu6+a9d6XfwK64ivg+fkXH9HPz064FWtXmsWtWLvSLG7F2pVmcSvWrjSL
- W7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pXu59AXyAtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7F2pVmcSvWrjQv974APsDalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- LG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmpd7XwAfYO1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- msWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvNy70vgA+w
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2Lt
- SrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalebl3hfAB1i70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K83L/+PgHvwOJFvfZcQppFvfZcQppFvfZcQpp
- FvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQpp
- FvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQpp
- FvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvf+BvAB1q40i1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2Lt
- SrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9K83PsC+ABrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaV7ufQF8gLUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40L/e+AD7A2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5qXe18AH2DtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZx
- K9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzcu9
- L4APsHalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pXm5f7x69evfz/kFF+b
- z6CfRot77+25977XLO69t+fe+16zuPfennvve83i3nt77r3vNYt77+25977XLO69t+fe+16zuPfennvv
- e83i3nt77r3vNYt77+25977XLO69t+fe+16zuP/f7r0vgA9w732vWdx7b8+9971mce+9Pffe95rFvff2
- 3Hvfaxb33ttz732vWdx7b8+9971mce+9Pffe95rFvff23Hvfaxb33ttz732vWdx7b8+9971mce+9Pb/z
- 3vsnoA+wdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalebl3hfAB1i70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K83LvC+ADrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqV5ufcF8AHWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZx
- K9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70rzc+wL4AGtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzeJWrF1pXu59AXyAtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjQv
- 94+Pf/A7kGhxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2n
- kGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2n
- kGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2nkGZxnx2n
- kGZxnx2nkGZxnx2nkGZx728AH2DtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzcu9L4APsHalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pXm5d4XwAdY
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSvNy7wvgA6xdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalebn3BfAB1q40i1uxdqVZ3Iq1K83iVqxdaRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9K83PsC+ABrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1ux
- dqVZ3Iq1K83iVqxdaV7uH//4xz/+9evXr3/9+eefnz//zsd3f/311+fP/4bn8/7+3I+fX/FPPqKfn33x
- 9Yzn5z91v7bvvffed3k+7977veknzeJ+bd97773v8nzevfd700+axf3avvfee9/l+bx77/emnzSL+7V9
- 7733vsvzeffe700/aRb3a/vee+99l+fz7r3fm37SLO7X9r333vsuz+fde783/aRZ3K/te++9912ez7v3
- fm/6SbO4X9v33nvvuzyf979w7x8fBz2DvviQP77/T/zzn//85Pn5Fx/ux3/if+Jr8xlU87F57733/ifu
- vffe55333u9NJffee+/zjnvv9+/uvffee2/Pvffe+7zj3vv9u3vvvffe23Pvvfc+77j3fv/u3nvvvff2
- 3Hvvvc877r3fv/tfvvfln4D+iH5+9vdfH67cirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1vxuflqWKLFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVn5uvhiVa3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItb8bn5aliixa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FZ+b
- r4YlWtyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW/G5+WpYosWt
- WLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2Lt
- SrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBWfm6+GJXq5H9//DqRZ
- 3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ
- 3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ
- 3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ3GfHKaRZ
- 3GfHKX7bC+BXbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt+Nx8
- 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
- ZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQ
- ZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQ
- ZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnGfHaeQZnHvbwAf
- YO1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvNy70vgA+wdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalebl3hfAB1i70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K83LvC+ADrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqV5ufcF8AHWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70rzc+wL4AGtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pXu4f//jH
- P/7169evf/3555+fP//Ox3d//fXX58//hufz/v7cj59f8U8+op+fffH1jOfnP3W/tu+99953eT7v3vu9
- 6SfN4n5t33vvve/yfN6993vTT5rF/dq+99573+X5vHvv96afNIv7tX3vvfe+y/N5997vTT9pFvdr+957
- 732X5/Puvd+bftIs7tf2vffe+y7P5917vzf9pFncr+177733XZ7Pu/d+b/pJs7hf2/fee++7PJ/3v3Dv
- Hx8HPYO++JA/vv9P/POf//zk+fkXH+7Hf+J/4mvzGVTzsXnvvff+J+69997nnffe700l99577/OOe+/3
- 7+699957b8+99977vOPe+/27e++9997bc++99z7vuPd+/+7ee++99/bce++9zzvuvd+/+1++9+WfgP6I
- fn72918frtyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW/G5+WpY
- osWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- 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
- rVi70ixuxdqVZnErPjdfDUu0uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa34nPz1bBEi1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZx
- Kz43Xw1LtLgVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- LG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt+Jz89Ww
- RC/34/vfgTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4
- hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4
- hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4hTSL++w4
- hTSL++w4hTSL++w4xW97AfzKrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSL
- W7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3
- 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
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzcu9L4APsHalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- LG7F2pXm5d4XwAdYu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSvNy//j4
- B78DiRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb3
- 2XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb3
- 2XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb32XEKaRb3
- 2XEKaRb32XEKaRb3/gbwAdauNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- vNz7AvgAa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 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
- Frdi7Urzcu8L4AOsXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pXm59wXw
- AdauNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSvNz7AvgAa1eaxa1Yu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWle7h//+Mc//vXr169//fnnn58//87Hd3/9
- 9dfnz/+G5/P+/tyPn1/xTz6in5998fWM5+c/db+277333nd5Pu/e+73pJ83ifm3fe++97/J83r33e9NP
- msX92r733nvf5fm8e+/3pp80i/u1fe+9977L83n33u9NP2kW92v73nvvfZfn8+6935t+0izu1/a99977
- Ls/n3Xu/N/2kWdyv7Xvvvfddns+7935v+kmzuF/b995777s8n/e/cO8fHwc9g774kD++/0/885///OT5
- +Rcf7sd/4n/ia/MZVPOxee+99/4n7r333ued997vTSX33nvv84577/fv7r333ntvz7333vu84977/bt7
- 77333ttz7733Pu+4937/7t5777339tx7773PO+6937/7X7735Z+A/oh+fvb3Xx+u3Iq1K83iVqxdaRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb8bn5aliixa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FZ+br4YlWtyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2Lt
- SrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW/G5+WpYosWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBWfm6+GJVrcirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1vxuflqWKLFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVn5uvhiV6uR/f/w6kWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxn
- xymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxn
- xymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxnxymkWdxn
- xymkWdxnxymkWdxnxymkWdxnxymkWdxnxyl+2wvgV27F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrfjcfDUs0eJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2Lt
- SrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3IrPzVfDEi1uxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa343Hw1LNHiVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 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
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjQv974APsDalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmpd7XwAfYO1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvNy70vgA+wdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalebl
- 3hfAB1i70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K83L/+PgHvwOJFvfZ
- cQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZ
- cQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZ
- cQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZcQppFvfZ
- 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
- tLgVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt+K1+W5YosWtWLvS
- LG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBWvzXfDEr3cr+//BNIs7tnx
- FNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnx
- FNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnx
- FNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnx
- FH/sAfidW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnErXpvvhiVa
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb8dp8NyzR4lasXWkW
- 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
- irUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncitfmu2GJXu7X938CaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb3
- 7HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb3
- 7HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb3
- 7HgKaRb37HgKaRb37HgKaRb37HgKaRb37HiKP/YA/M6tWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBWvzXfDEi1uxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa14bb4blmhxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- msWtWLvSLG7Fa/PdsESLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1ux
- 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
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7F2pXm5f719R/8CSRa3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ
- 3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ
- 3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ
- 3LPjKaRZ3LPjKaRZ3LPjKaRZ3LPjKaRZ3Ps3gB9g7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83LvQ/AD7B2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqV5uXeB+AHWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Urzcu8D8AOs
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pXm59wH4AdauNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSvNz7APwAa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWle7l+/fv369488xffmGfTTaHHvvT333s+axb339tx7P2sW997b
- c+/9rFnce2/PvfezZnHvvT333s+axb339tx7P2sW997bc+/9rFnce2/PvfezZnHvvT333s+axb339tx7
- P2sW9/+3e+8D8APcez9rFvfe23Pv/axZ3Htvz733s2Zx7709997PmsW99/bcez9rFvfe23Pv/axZ3Htv
- z733s2Zx7709997PmsW99/bcez9rFvfe23Pv/axZ3Htvz5+89/4T0A+wdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalebl3gfgB1i70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- LG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1K83LvA/ADrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- msWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqV5ufcB+AHWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2Lt
- SrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70rzc+wD8
- AGtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pXu59AH6AtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjQv96+v/+BPINHinh1PIc3inh1PIc3inh1P
- Ic3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1P
- Ic3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1P
- Ic3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3inh1PIc3i3r8B/ABrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaV7ufQB+gLUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZx
- K9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40L/c+AD/A2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBVrV5qXex+AH2DtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSL
- W7F2pVncirUrzcu9D8APsHalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pXm
- 5d4H4AdYu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSvNy//rHP/7xP79+
- /fqfv//++/Xnf/L13T//+c/Xn/8bzt/7z9/9+vM7/uQr+vzsm+/fOD//qfu9fe+9937K+Xv33t+bftIs
- 7vf2vffe+ynn7917f2/6SbO439v33nvvp5y/d+/9veknzeJ+b997772fcv7evff3pp80i/u9fe+9937K
- +Xv33t+bftIs7vf2vffe+ynn7917f2/6SbO439v33nvvp5y/d+/9veknzeJ+b997772fcv7e/4V7//o6
- 6Az65kv++v6/8a9//evF+fk3X+7X/8T/xvfmGVTztXnvvff+N+69997zznvv700l995773nHvff37+69
- 9957b8+999573nHv/f27e++9997bc++995533Ht//+7ee++99/bce++95x333t+/+79879t/Avor+vzs
- P//6cOVWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3IrX5rthiRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4la8Nt8NS7S4FWtXmsWt
- WLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2Lt
- SrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrfitfluWKLFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVr813wxItbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWteG2+G5ZocSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxWvz3bBEL/fr+z+BNIt7djyFNIt7djyFNIt7djyFNIt7djyF
- NIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyF
- NIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyF
- NIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djzFH3sAfudWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- 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
- 3IrX5rthiRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- msWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4la8Nt8N
- S7S4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrfitfluWKKX+/X9
- n0CaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07
- nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07
- nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07
- nkKaxT07nuKPPQC/cyvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xWvz3bBEi1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK16b74Yl
- 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
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Urz
- cu8D8AOsXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pXm5f339B38CiRb3
- 7HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb3
- 7HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb3
- 7HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb37HgKaRb3
- 7HgKaRb3/g3gB1i70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K83LvA/AD
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqV5ufcB+AHWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- 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
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pXm59wH4AdauNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSvNy//vGPf/zPr1+//ufvv/9+/fmffH33z3/+8/Xn
- /4bz9/7zd7/+/I4/+Yo+P/vm+zfOz3/qfm/fe++9n3L+3r3396afNIv7vX3vvfd+yvl7997fm37SLO73
- 9r333vsp5+/de39v+kmzuN/b995776ecv3fv/b3pJ83ifm/fe++9n3L+3r3396afNIv7vX3vvfd+yvl7
- 997fm37SLO739r333vsp5+/de39v+kmzuN/b995776ecv/d/4d6/vg46g775kr++/2/861//enF+/s2X
- +/U/8b/xvXkG1Xxt3nvvvf+Ne++997zz3vt7U8m999573nHv/f27e++9997bc++995533Ht//+7ee++9
- 9/bce++95x333t+/u/fee++9Pffee+95x7339+/+L9/79p+A/oo+P/vPvz5cuRVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa34rX5bliixa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- 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
- 83LvA/ADrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqV5ufcB+AHWrjSL
- W7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70rzc+wD8AGtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pXu5fX//Bn0CixT07nkKaxT07nkKaxT07nkKaxT07
- nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07
- nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07
- nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxT07nkKaxb1/A/gB1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9K83PsA/ABrV5rFrVi70ixuxdqVZnEr1q40
- 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
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqV5uXeB+AHWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Urzcv/6
- +g/+BBIt7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs
- 7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs
- 7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs7tnxFNIs
- 7tnxFNIs7tnxFNIs7v0bwA+wdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lebl3gfgB1i70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZx
- K9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K83LvA/ADrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqV5ufcB+AHWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSL
- W7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70rzc+wD8AGtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pXu59AH6AtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- LG7F2pVmcSvWrjQv969//OMf//Pr16//+fvvv19//idf3/3zn/98/fm/4fy9//zdrz+/40++os/Pvvn+
- jfPzn7rf2/fee++nnL937/296SfN4n5v33vvvZ9y/t699/emnzSL+7197733fsr5e/fe35t+0izu9/a9
- 9977Kefv3Xt/b/pJs7jf2/fee++nnL937/296SfN4n5v33vvvZ9y/t699/emnzSL+7197733fsr5e/fe
- 35t+0izu9/a99977Kefv/V+496+vg86gb77kr+//G//6179enJ9/8+V+/U/8b3xvnkE1X5v33nvvf+Pe
- e+8977z3/t5Ucu+995533Ht//+7ee++99/bce++95x333t+/u/fee++9Pffee+95x7339+/uvffee2/P
- vffee95x7/39u//L9779J6C/os/P/vOvD1duxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa14bb4blmhxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F
- 2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- msWtWLvSLG7Fa/PdsESLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2Lt
- SrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnErXpvvhiVa3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb8dp8
- NyzR4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncitfmu2GJFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVrw23w1L9HK/vv8TSLO4
- Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4
- Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4
- Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4Z8dTSLO4
- Z8dT/LEH4HduxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa14bb4b
- lmhxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUr
- zeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7Fa/PdsESLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnErXpvvhiVa3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- 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
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalebn3AfgB1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkW
- t2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9K83PsA/ABrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaV7ufQB+gLUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40L/c+AD/A2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5qX+9fXf/AnkGhxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46n
- kGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46n
- kGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46nkGZxz46n
- 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
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K83Lv
- A/ADrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSL
- W7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqV5ufcB+AHWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70rzcv77+gz+BRIt7djyFNIt7djyFNIt7
- djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7
- djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7
- djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7djyFNIt7/wbwA6xd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvS
- LG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalebn3AfgB1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- msWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40
- i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9K83PsA/ABrV5rFrVi70ixuxdqVZnEr1q40i1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2Lt
- SrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaV7ufQB+gLUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40L/c+AD/A2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5qXex+AH2DtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzcv96x//+Mf/
- /Pr163/+/vvv15//ydd3//znP19//m84f+8/f/frz+/4k6/o87Nvvn/j/Pyn7vf2vffe+ynn7917f2/6
- SbO439v33nvvp5y/d+/9veknzeJ+b997772fcv7evff3pp80i/u9fe+9937K+Xv33t+bftIs7vf2vffe
- +ynn7917f2/6SbO439v33nvvp5y/d+/9veknzeJ+b997772fcv7evff3pp80i/u9fe+9937K+Xv/F+79
- 6+ugM+ibL/nr+//Gv/71rxfn5998uV//E/8b35tnUM3X5r333vvfuPfee887772/N5Xce++95x333t+/
- u/fee++9Pffee+95x7339+/uvffee2/Pvffee95x7/39u3vvvffe23Pvvfeed9x7f//u//K9b/8J6K/o
- 87P//OvDlVuxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN
- 4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rF
- rVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK16b74Yl
- WtyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZx
- K9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW/HafDcs0eJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9Is
- bsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVnc
- irUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3IrX5rthiRa3Yu1Ks7gVa1ea
- xa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSL
- W7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3
- Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4la8Nt8NS7S4FWtXmsWtWLvSLG7F2pVm
- cSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrfitfluWKLFrVi70ixuxdqVZnEr1q40i1uxdqVZ
- 3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVr813wxK93K/v/wTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z
- 8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z
- 8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z
- 8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RTSLO7Z8RR/7AH4nVuxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK16b74YlWtyKtSvN4lasXWkWt2LtSrO4
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW/HafDcs0eJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3IrX5rthiRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK9auNItbsXalWdyKtSvN4la8Nt8NS7S4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrfitfluWKLFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVr813wxK93F+/fv37N57ie/Ps+WmzuPfennvvZ83i3nt77r2fNYt77+25937WLO69t+fe
- +1mzuPfennvvZ83i3nt77r2fNYt77+25937WLO69t+fe+1mzuPfennvvZ83i3nt77r2fNYv7p+69D8Af
- NIt77+25937WLO69t+fe+1mzuPfennvvZ83i3nt77r2fNYt77+25937WLO69t+fe+1mzuPfennvvZ83i
- 3nt77r2fNYt77+25937WLO69t+fe+1mzuH/q3j/2APzOrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83i
- VqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWt
- WLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVr813wxItbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4
- FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr
- 1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4las
- XWkWt2LtSrO4FWtXmsWteG2+G5ZocSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixu
- xdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyK
- tSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxWvz3bBEi1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItb
- sXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi
- 7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXa
- lWZxK16b74YlWtyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJW
- rF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW/Ha
- fDcs0eJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gV
- a1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3IrX5rthiV7u
- 1/d/AmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW
- 9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW
- 9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW9+x4CmkW
- 9+x4CmkW9+x4ij/2APzOrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Y
- u9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2
- pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1K
- s7gVr813wxItbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvW
- rjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxd
- aRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWteG2+
- G5ZocSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1
- K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtX
- msWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxWvz3bBEi1ux
- dqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXalWdyKtSvN4lasXWkWt2Lt
- SrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi70ixuxdqV
- ZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK16b74YlWtyKtSvN4las
- XWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7UqzuBVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW/HafDcs0eJWrF1pFrdi7UqzuBVr
- V5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9au
- NItbsXalWdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1p
- Frdi7UqzuBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3IrX5q9fv/4dcPIVfX72zZdXuRVrV5rFrVi7
- 0ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa3Yu1Ks7gVa1eaxa1Yu9IsbsXalWZxK9auNItbsXal
- WdyKtSvN4lasXWkWt2LtSrO4FWtXmsWtWLvSLG7F2pVmcSvWrjSLW7F2pVncirUrzeJWrF1pFrdi7Uqz
- uBVrV5rFrVi70ixuxdqVZnEr1q40i1uxdqVZ3Iq1K83iVqxdaRa34mvz/wHi+Li5P80SZQAAAABJRU5E
- rkJggg==
-
-
AAABAAgAEBAAAAEAIABoBAAAhgAAABgYAAABACAAiAkAAO4EAAAgIAAAAQAgAKgQAAB2DgAAMDAAAAEA
diff --git a/ToggleSwitch.cs b/ToggleSwitch.cs
new file mode 100644
index 0000000..3629e23
--- /dev/null
+++ b/ToggleSwitch.cs
@@ -0,0 +1,264 @@
+using System;
+using System.ComponentModel;
+using System.Drawing;
+using System.Drawing.Drawing2D;
+using System.Windows.Forms;
+
+namespace AndroidSideloader
+{
+ ///
+ /// An iOS-style toggle switch control with smooth animation.
+ ///
+ public class ToggleSwitch : Control
+ {
+ private bool _checked;
+ private bool _isHovered;
+ private float _animationProgress; // 0 = off, 1 = on
+ private Timer _animationTimer;
+ private const int AnimationDuration = 80; // ms
+ private const int AnimationInterval = 8; // ~120fps
+ private float _animationStep;
+
+ // Colors
+ private Color _onColor = Color.FromArgb(93, 203, 173);
+ private Color _offColor = Color.FromArgb(60, 65, 75);
+ private Color _thumbColor = Color.White;
+ private Color _onHoverColor = Color.FromArgb(110, 215, 190);
+ private Color _offHoverColor = Color.FromArgb(75, 80, 90);
+
+ public event EventHandler CheckedChanged;
+
+ public ToggleSwitch()
+ {
+ SetStyle(ControlStyles.AllPaintingInWmPaint |
+ ControlStyles.UserPaint |
+ ControlStyles.OptimizedDoubleBuffer |
+ ControlStyles.ResizeRedraw |
+ ControlStyles.SupportsTransparentBackColor |
+ ControlStyles.StandardClick |
+ ControlStyles.StandardDoubleClick, true);
+
+ // Disable double-click so rapid clicks are treated as separate clicks
+ SetStyle(ControlStyles.StandardDoubleClick, false);
+
+ Size = new Size(44, 24);
+ Cursor = Cursors.Hand;
+ BackColor = Color.Transparent;
+
+ _animationTimer = new Timer { Interval = AnimationInterval };
+ _animationTimer.Tick += AnimationTimer_Tick;
+ _animationStep = (float)AnimationInterval / AnimationDuration;
+ }
+
+ [Category("Appearance")]
+ [Description("Gets or sets whether the toggle is in the 'on' state.")]
+ [DefaultValue(false)]
+ public bool Checked
+ {
+ get => _checked;
+ set
+ {
+ if (_checked != value)
+ {
+ _checked = value;
+ StartAnimation();
+ OnCheckedChanged(EventArgs.Empty);
+ }
+ }
+ }
+
+ ///
+ /// Sets the checked state without triggering animation or events.
+ /// Using this for initial state setup.
+ ///
+ public void SetCheckedSilent(bool value)
+ {
+ _checked = value;
+ _animationProgress = value ? 1f : 0f;
+ _animationTimer.Stop();
+ Invalidate();
+ }
+
+ [Category("Appearance")]
+ [Description("The color of the toggle when it is on.")]
+ public Color OnColor
+ {
+ get => _onColor;
+ set { _onColor = value; Invalidate(); }
+ }
+
+ [Category("Appearance")]
+ [Description("The color of the toggle when it is off.")]
+ public Color OffColor
+ {
+ get => _offColor;
+ set { _offColor = value; Invalidate(); }
+ }
+
+ [Category("Appearance")]
+ [Description("The color of the thumb (circle).")]
+ public Color ThumbColor
+ {
+ get => _thumbColor;
+ set { _thumbColor = value; Invalidate(); }
+ }
+
+ protected virtual void OnCheckedChanged(EventArgs e)
+ {
+ CheckedChanged?.Invoke(this, e);
+ }
+
+ private void StartAnimation()
+ {
+ if (!_animationTimer.Enabled)
+ {
+ _animationTimer.Start();
+ }
+ }
+
+ private void AnimationTimer_Tick(object sender, EventArgs e)
+ {
+ float target = _checked ? 1f : 0f;
+
+ if (_animationProgress < target)
+ {
+ _animationProgress += _animationStep;
+ if (_animationProgress >= target)
+ {
+ _animationProgress = target;
+ _animationTimer.Stop();
+ }
+ }
+ else if (_animationProgress > target)
+ {
+ _animationProgress -= _animationStep;
+ if (_animationProgress <= target)
+ {
+ _animationProgress = target;
+ _animationTimer.Stop();
+ }
+ }
+ else
+ {
+ _animationTimer.Stop();
+ }
+
+ Invalidate();
+ }
+
+ protected override void OnPaint(PaintEventArgs e)
+ {
+ base.OnPaint(e);
+
+ Graphics g = e.Graphics;
+ g.SmoothingMode = SmoothingMode.AntiAlias;
+ g.PixelOffsetMode = PixelOffsetMode.HighQuality;
+
+ int width = Width;
+ int height = Height;
+ int padding = 2;
+ int thumbDiameter = height - (padding * 2);
+ int trackRadius = height / 2;
+
+ Color trackColor;
+ if (_isHovered)
+ {
+ trackColor = InterpolateColor(_offHoverColor, _onHoverColor, _animationProgress);
+ }
+ else
+ {
+ trackColor = InterpolateColor(_offColor, _onColor, _animationProgress);
+ }
+
+ Rectangle trackRect = new Rectangle(0, 0, width, height);
+ using (GraphicsPath trackPath = CreateRoundedRectPath(trackRect, trackRadius))
+ using (SolidBrush trackBrush = new SolidBrush(trackColor))
+ {
+ g.FillPath(trackBrush, trackPath);
+ }
+
+ int thumbMinX = padding;
+ int thumbMaxX = width - thumbDiameter - padding;
+ float easedProgress = EaseOutQuad(_animationProgress);
+ int thumbX = (int)(thumbMinX + (thumbMaxX - thumbMinX) * easedProgress);
+ int thumbY = padding;
+
+ Rectangle shadowRect = new Rectangle(thumbX + 1, thumbY + 1, thumbDiameter, thumbDiameter);
+ using (SolidBrush shadowBrush = new SolidBrush(Color.FromArgb(40, 0, 0, 0)))
+ {
+ g.FillEllipse(shadowBrush, shadowRect);
+ }
+
+ Rectangle thumbRect = new Rectangle(thumbX, thumbY, thumbDiameter, thumbDiameter);
+ using (SolidBrush thumbBrush = new SolidBrush(_thumbColor))
+ {
+ g.FillEllipse(thumbBrush, thumbRect);
+ }
+ }
+
+ private float EaseOutQuad(float t)
+ {
+ return t * (2 - t);
+ }
+
+ private Color InterpolateColor(Color from, Color to, float progress)
+ {
+ int r = (int)(from.R + (to.R - from.R) * progress);
+ int g = (int)(from.G + (to.G - from.G) * progress);
+ int b = (int)(from.B + (to.B - from.B) * progress);
+ int a = (int)(from.A + (to.A - from.A) * progress);
+ return Color.FromArgb(a, r, g, b);
+ }
+
+ private GraphicsPath CreateRoundedRectPath(Rectangle rect, int radius)
+ {
+ GraphicsPath path = new GraphicsPath();
+ int diameter = radius * 2;
+
+ path.AddArc(rect.X, rect.Y, diameter, diameter, 180, 90);
+ path.AddArc(rect.Right - diameter, rect.Y, diameter, diameter, 270, 90);
+ path.AddArc(rect.Right - diameter, rect.Bottom - diameter, diameter, diameter, 0, 90);
+ path.AddArc(rect.X, rect.Bottom - diameter, diameter, diameter, 90, 90);
+ path.CloseFigure();
+
+ return path;
+ }
+
+ protected override void OnMouseEnter(EventArgs e)
+ {
+ base.OnMouseEnter(e);
+ _isHovered = true;
+ Invalidate();
+ }
+
+ protected override void OnMouseLeave(EventArgs e)
+ {
+ base.OnMouseLeave(e);
+ _isHovered = false;
+ Invalidate();
+ }
+
+ protected override void OnMouseDown(MouseEventArgs e)
+ {
+ base.OnMouseDown(e);
+
+ if (e.Button == MouseButtons.Left)
+ {
+ // Toggle immediately on mouse down for responsive feel
+ _checked = !_checked;
+ StartAnimation();
+ OnCheckedChanged(EventArgs.Empty);
+ }
+ }
+
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing)
+ {
+ _animationTimer?.Stop();
+ _animationTimer?.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+ }
+}
\ No newline at end of file
diff --git a/UpdateForm.Designer.cs b/UpdateForm.Designer.cs
index 5430551..8602835 100644
--- a/UpdateForm.Designer.cs
+++ b/UpdateForm.Designer.cs
@@ -1,5 +1,4 @@
-
-namespace AndroidSideloader
+namespace AndroidSideloader
{
partial class UpdateForm
{
@@ -40,123 +39,133 @@ namespace AndroidSideloader
this.panel1.SuspendLayout();
this.panel3.SuspendLayout();
this.SuspendLayout();
- //
+ //
// panel1
- //
- this.panel1.BackColor = global::AndroidSideloader.Properties.Settings.Default.BackColor;
+ //
+ this.panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
this.panel1.Controls.Add(this.YesUpdate);
this.panel1.Controls.Add(this.panel3);
this.panel1.Controls.Add(this.UpdateVerLabel);
this.panel1.Controls.Add(this.CurVerLabel);
this.panel1.Controls.Add(this.SkipUpdate);
- this.panel1.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "BackColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.panel1.Location = new System.Drawing.Point(-6, -6);
+ this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1";
- this.panel1.Size = new System.Drawing.Size(474, 305);
+ this.panel1.Padding = new System.Windows.Forms.Padding(20, 50, 20, 20);
+ this.panel1.Size = new System.Drawing.Size(480, 320);
this.panel1.TabIndex = 5;
this.panel1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseDown);
this.panel1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseMove);
this.panel1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseUp);
- //
+ //
// YesUpdate
- //
- this.YesUpdate.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
- this.YesUpdate.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
+ //
+ this.YesUpdate.Active1 = System.Drawing.Color.FromArgb(((int)(((byte)(113)))), ((int)(((byte)(223)))), ((int)(((byte)(193)))));
+ this.YesUpdate.Active2 = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.YesUpdate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.YesUpdate.BackColor = System.Drawing.Color.Transparent;
this.YesUpdate.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.YesUpdate.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F);
- this.YesUpdate.ForeColor = System.Drawing.Color.White;
- this.YesUpdate.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.YesUpdate.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(25)))), ((int)(((byte)(25)))));
- this.YesUpdate.Location = new System.Drawing.Point(339, 245);
+ this.YesUpdate.Disabled1 = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(35)))), ((int)(((byte)(45)))));
+ this.YesUpdate.Disabled2 = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(28)))), ((int)(((byte)(35)))));
+ this.YesUpdate.DisabledStrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(55)))), ((int)(((byte)(65)))));
+ this.YesUpdate.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Bold);
+ this.YesUpdate.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
+ this.YesUpdate.Inactive1 = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.YesUpdate.Inactive2 = System.Drawing.Color.FromArgb(((int)(((byte)(73)))), ((int)(((byte)(183)))), ((int)(((byte)(153)))));
+ this.YesUpdate.Location = new System.Drawing.Point(340, 259);
this.YesUpdate.Name = "YesUpdate";
- this.YesUpdate.Radius = 5;
- this.YesUpdate.Size = new System.Drawing.Size(111, 31);
- this.YesUpdate.Stroke = true;
+ this.YesUpdate.Radius = 6;
+ this.YesUpdate.Size = new System.Drawing.Size(120, 36);
+ this.YesUpdate.Stroke = false;
this.YesUpdate.StrokeColor = System.Drawing.Color.FromArgb(((int)(((byte)(74)))), ((int)(((byte)(74)))), ((int)(((byte)(74)))));
this.YesUpdate.TabIndex = 2;
this.YesUpdate.Text = "Update Now";
this.YesUpdate.Transparency = false;
this.YesUpdate.Click += new System.EventHandler(this.YesUpdate_Click);
- //
+ //
// panel3
- //
- this.panel3.BackColor = global::AndroidSideloader.Properties.Settings.Default.SubButtonColor;
+ //
+ this.panel3.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.panel3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(28)))), ((int)(((byte)(32)))), ((int)(((byte)(38)))));
this.panel3.Controls.Add(this.UpdateTextBox);
- this.panel3.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "SubButtonColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.panel3.Location = new System.Drawing.Point(21, 19);
+ this.panel3.Location = new System.Drawing.Point(20, 50);
this.panel3.Name = "panel3";
- this.panel3.Size = new System.Drawing.Size(432, 218);
+ this.panel3.Padding = new System.Windows.Forms.Padding(12, 10, 12, 10);
+ this.panel3.Size = new System.Drawing.Size(440, 200);
this.panel3.TabIndex = 0;
- //
+ //
// UpdateTextBox
- //
- this.UpdateTextBox.BackColor = global::AndroidSideloader.Properties.Settings.Default.ComboBoxColor;
+ //
+ this.UpdateTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(28)))), ((int)(((byte)(32)))), ((int)(((byte)(38)))));
this.UpdateTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.UpdateTextBox.DataBindings.Add(new System.Windows.Forms.Binding("BackColor", global::AndroidSideloader.Properties.Settings.Default, "ComboBoxColor", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
- this.UpdateTextBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.25F);
+ this.UpdateTextBox.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.UpdateTextBox.Font = new System.Drawing.Font("Segoe UI", 9.5F);
this.UpdateTextBox.ForeColor = System.Drawing.Color.White;
- this.UpdateTextBox.Location = new System.Drawing.Point(12, 8);
+ this.UpdateTextBox.Location = new System.Drawing.Point(12, 10);
this.UpdateTextBox.Margin = new System.Windows.Forms.Padding(6);
this.UpdateTextBox.Name = "UpdateTextBox";
this.UpdateTextBox.ReadOnly = true;
this.UpdateTextBox.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
- this.UpdateTextBox.Size = new System.Drawing.Size(408, 200);
+ this.UpdateTextBox.Size = new System.Drawing.Size(416, 180);
this.UpdateTextBox.TabIndex = 1;
this.UpdateTextBox.Text = "";
this.UpdateTextBox.TextChanged += new System.EventHandler(this.UpdateTextBox_TextChanged);
this.UpdateTextBox.MouseDown += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseDown);
this.UpdateTextBox.MouseMove += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseMove);
this.UpdateTextBox.MouseUp += new System.Windows.Forms.MouseEventHandler(this.UpdateForm_MouseUp);
- //
+ //
// UpdateVerLabel
- //
+ //
+ this.UpdateVerLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.UpdateVerLabel.AutoSize = true;
this.UpdateVerLabel.BackColor = System.Drawing.Color.Transparent;
- this.UpdateVerLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);
- this.UpdateVerLabel.ForeColor = System.Drawing.SystemColors.Control;
- this.UpdateVerLabel.Location = new System.Drawing.Point(21, 261);
+ this.UpdateVerLabel.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
+ this.UpdateVerLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(93)))), ((int)(((byte)(203)))), ((int)(((byte)(173)))));
+ this.UpdateVerLabel.Location = new System.Drawing.Point(20, 285);
this.UpdateVerLabel.Name = "UpdateVerLabel";
- this.UpdateVerLabel.Size = new System.Drawing.Size(94, 15);
+ this.UpdateVerLabel.Size = new System.Drawing.Size(95, 15);
this.UpdateVerLabel.TabIndex = 3;
this.UpdateVerLabel.Text = "Update Version:";
- //
+ //
// CurVerLabel
- //
+ //
+ this.CurVerLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.CurVerLabel.AutoSize = true;
this.CurVerLabel.BackColor = System.Drawing.Color.Transparent;
- this.CurVerLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);
- this.CurVerLabel.ForeColor = System.Drawing.SystemColors.Control;
- this.CurVerLabel.Location = new System.Drawing.Point(21, 245);
+ this.CurVerLabel.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.CurVerLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(160)))), ((int)(((byte)(165)))), ((int)(((byte)(175)))));
+ this.CurVerLabel.Location = new System.Drawing.Point(20, 266);
this.CurVerLabel.Name = "CurVerLabel";
- this.CurVerLabel.Size = new System.Drawing.Size(94, 15);
+ this.CurVerLabel.Size = new System.Drawing.Size(91, 15);
this.CurVerLabel.TabIndex = 2;
this.CurVerLabel.Text = "Current Version:";
- //
+ //
// SkipUpdate
- //
+ //
+ this.SkipUpdate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.SkipUpdate.AutoSize = true;
this.SkipUpdate.BackColor = System.Drawing.Color.Transparent;
- this.SkipUpdate.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.SkipUpdate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
- this.SkipUpdate.ForeColor = System.Drawing.Color.Silver;
- this.SkipUpdate.Location = new System.Drawing.Point(374, 279);
+ this.SkipUpdate.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.SkipUpdate.Font = new System.Drawing.Font("Segoe UI", 8.5F);
+ this.SkipUpdate.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(160)))), ((int)(((byte)(165)))), ((int)(((byte)(175)))));
+ this.SkipUpdate.Location = new System.Drawing.Point(380, 297);
this.SkipUpdate.Name = "SkipUpdate";
- this.SkipUpdate.Size = new System.Drawing.Size(76, 13);
+ this.SkipUpdate.Size = new System.Drawing.Size(73, 15);
this.SkipUpdate.TabIndex = 4;
- this.SkipUpdate.Text = "𝖲𝖪𝖨𝖯 𝖥𝖮𝖱 𝖭𝖮𝖶";
+ this.SkipUpdate.Text = "Skip for now";
this.SkipUpdate.Click += new System.EventHandler(this.SkipUpdate_Click);
- //
+ //
// UpdateForm
- //
+ //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.AutoValidate = System.Windows.Forms.AutoValidate.EnablePreventFocusChange;
- this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(29)))), ((int)(((byte)(29)))), ((int)(((byte)(29)))));
- this.ClientSize = new System.Drawing.Size(462, 291);
+ this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(24)))), ((int)(((byte)(29)))));
+ this.ClientSize = new System.Drawing.Size(480, 320);
this.ControlBox = false;
this.Controls.Add(this.panel1);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "UpdateForm";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
@@ -180,4 +189,4 @@ namespace AndroidSideloader
private System.Windows.Forms.Panel panel1;
private RoundButton YesUpdate;
}
-}
+}
\ No newline at end of file
diff --git a/UpdateForm.cs b/UpdateForm.cs
index 33b885e..ff6d47c 100644
--- a/UpdateForm.cs
+++ b/UpdateForm.cs
@@ -1,5 +1,6 @@
using System;
using System.Drawing;
+using System.Drawing.Drawing2D;
using System.Windows.Forms;
namespace AndroidSideloader
@@ -9,15 +10,203 @@ namespace AndroidSideloader
private bool mouseDown;
private Point lastLocation;
+ // Modern theme colors
+ private static readonly Color BackgroundColor = Color.FromArgb(20, 24, 29);
+ private static readonly Color PanelColor = Color.FromArgb(28, 32, 38);
+ private static readonly Color TextColor = Color.White;
+ private static readonly Color SecondaryTextColor = Color.FromArgb(160, 165, 175);
+ private static readonly Color BorderColor = Color.FromArgb(60, 65, 75);
+
public UpdateForm()
{
InitializeComponent();
+ ApplyModernTheme();
CenterToScreen();
- CurVerLabel.Text += " " + Updater.LocalVersion;
- UpdateVerLabel.Text += " " + Updater.currentVersion;
+ CurVerLabel.Text = $"Current Version: {Updater.LocalVersion}";
+ UpdateVerLabel.Text = $"Update Version: {Updater.currentVersion}";
UpdateTextBox.Text = Updater.changelog;
}
+ private void ApplyModernTheme()
+ {
+ // Form settings
+ this.FormBorderStyle = FormBorderStyle.None;
+ this.BackColor = BackgroundColor;
+ this.DoubleBuffered = true;
+
+ // Enable double buffering on panels for smooth rounded corners
+ EnableDoubleBuffering(panel1);
+ EnableDoubleBuffering(panel3);
+
+ // Add custom paint handler for rounded panel1 (main container)
+ panel1.Paint += Panel1_Paint;
+ panel1.BackColor = Color.Transparent;
+
+ // Add custom paint handler for rounded panel3 (changelog container)
+ panel3.Paint += Panel3_Paint;
+ panel3.BackColor = Color.Transparent;
+
+ // Update textbox to have matching background
+ UpdateTextBox.BackColor = PanelColor;
+
+ // Add title label
+ var titleLabel = new Label
+ {
+ Text = "Update Available",
+ Font = new Font("Segoe UI", 12F, FontStyle.Bold),
+ ForeColor = TextColor,
+ BackColor = Color.Transparent,
+ AutoSize = true,
+ Location = new Point(20, 15)
+ };
+ panel1.Controls.Add(titleLabel);
+ titleLabel.BringToFront();
+
+ // Add close button
+ var closeButton = new Label
+ {
+ Text = "✕",
+ Font = new Font("Segoe UI", 10F),
+ ForeColor = SecondaryTextColor,
+ BackColor = Color.Transparent,
+ AutoSize = true,
+ Cursor = Cursors.Hand,
+ Location = new Point(this.ClientSize.Width - 30, 10),
+ Anchor = AnchorStyles.Top | AnchorStyles.Right
+ };
+ closeButton.Click += (s, e) => Close();
+ closeButton.MouseEnter += (s, e) => closeButton.ForeColor = Color.FromArgb(220, 80, 80);
+ closeButton.MouseLeave += (s, e) => closeButton.ForeColor = SecondaryTextColor;
+ panel1.Controls.Add(closeButton);
+ closeButton.BringToFront();
+
+ // Apply custom painting for form rounded corners and border
+ this.Paint += UpdateForm_Paint;
+ }
+
+ private void EnableDoubleBuffering(Panel panel)
+ {
+ typeof(Panel).InvokeMember("DoubleBuffered",
+ System.Reflection.BindingFlags.SetProperty | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic,
+ null, panel, new object[] { true });
+ }
+
+ private void Panel1_Paint(object sender, PaintEventArgs e)
+ {
+ var panel = sender as Panel;
+ e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
+ e.Graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
+
+ int radius = 12;
+ var rect = new Rectangle(0, 0, panel.Width - 1, panel.Height - 1);
+
+ using (var path = CreateRoundedRectPath(rect, radius))
+ {
+ // Fill background
+ using (var brush = new SolidBrush(BackgroundColor))
+ {
+ e.Graphics.FillPath(brush, path);
+ }
+
+ // Draw border
+ using (var pen = new Pen(BorderColor, 1f))
+ {
+ e.Graphics.DrawPath(pen, path);
+ }
+ }
+
+ // Apply rounded region to clip children
+ using (var regionPath = CreateRoundedRectPath(new Rectangle(0, 0, panel.Width, panel.Height), radius))
+ {
+ panel.Region = new Region(regionPath);
+ }
+ }
+
+ private void Panel3_Paint(object sender, PaintEventArgs e)
+ {
+ var panel = sender as Panel;
+ e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
+ e.Graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
+
+ int radius = 10;
+ var rect = new Rectangle(0, 0, panel.Width - 1, panel.Height - 1);
+
+ using (var path = CreateRoundedRectPath(rect, radius))
+ {
+ // Fill background
+ using (var brush = new SolidBrush(PanelColor))
+ {
+ e.Graphics.FillPath(brush, path);
+ }
+
+ // Draw border
+ using (var pen = new Pen(BorderColor, 1f))
+ {
+ e.Graphics.DrawPath(pen, path);
+ }
+ }
+
+ // Apply rounded region to clip children
+ using (var regionPath = CreateRoundedRectPath(new Rectangle(0, 0, panel.Width, panel.Height), radius))
+ {
+ panel.Region = new Region(regionPath);
+ }
+ }
+
+ private void UpdateForm_Paint(object sender, PaintEventArgs e)
+ {
+ e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
+
+ int w = this.ClientSize.Width;
+ int h = this.ClientSize.Height;
+ int radius = 12;
+
+ // Draw border
+ using (var borderPen = new Pen(BorderColor, 1f))
+ using (var path = CreateRoundedRectPath(new Rectangle(0, 0, w - 1, h - 1), radius))
+ {
+ e.Graphics.DrawPath(borderPen, path);
+ }
+
+ // Apply rounded region
+ using (var regionPath = CreateRoundedRectPath(new Rectangle(0, 0, w, h), radius))
+ {
+ this.Region = new Region(regionPath);
+ }
+ }
+
+ private GraphicsPath CreateRoundedRectPath(Rectangle rect, int radius)
+ {
+ GraphicsPath path = new GraphicsPath();
+
+ if (radius <= 0)
+ {
+ path.AddRectangle(rect);
+ return path;
+ }
+
+ int diameter = radius * 2;
+ diameter = Math.Min(diameter, Math.Min(rect.Width, rect.Height));
+ radius = diameter / 2;
+
+ Rectangle arcRect = new Rectangle(rect.Location, new Size(diameter, diameter));
+
+ // Top left arc
+ path.AddArc(arcRect, 180, 90);
+ // Top right arc
+ arcRect.X = rect.Right - diameter;
+ path.AddArc(arcRect, 270, 90);
+ // Bottom right arc
+ arcRect.Y = rect.Bottom - diameter;
+ path.AddArc(arcRect, 0, 90);
+ // Bottom left arc
+ arcRect.X = rect.Left;
+ path.AddArc(arcRect, 90, 90);
+
+ path.CloseFigure();
+ return path;
+ }
+
private void YesUpdate_Click(object sender, EventArgs e)
{
Updater.doUpdate();
@@ -31,7 +220,6 @@ namespace AndroidSideloader
private void UpdateTextBox_TextChanged(object sender, EventArgs e)
{
-
}
private void UpdateForm_MouseDown(object sender, MouseEventArgs e)
@@ -46,7 +234,6 @@ namespace AndroidSideloader
{
Location = new Point(
Location.X - lastLocation.X + e.X, Location.Y - lastLocation.Y + e.Y);
-
Update();
}
}
@@ -56,4 +243,4 @@ namespace AndroidSideloader
mouseDown = false;
}
}
-}
+}
\ No newline at end of file
diff --git a/Updater.cs b/Updater.cs
index b57b7e3..322d814 100644
--- a/Updater.cs
+++ b/Updater.cs
@@ -13,7 +13,7 @@ namespace AndroidSideloader
private static readonly string RawGitHubUrl = "https://raw.githubusercontent.com/VRPirates/rookie";
private static readonly string GitHubUrl = "https://github.com/VRPirates/rookie";
- public static readonly string LocalVersion = "2.35.0";
+ public static readonly string LocalVersion = "3.0";
public static string currentVersion = string.Empty;
public static string changelog = string.Empty;
@@ -38,7 +38,7 @@ namespace AndroidSideloader
return CompareVersions(currentVersion, LocalVersion.Trim()) > 0;
}
- // Compares two semantic version strings (e.g., "2.35.0")
+ // Compares two semantic version strings (e.g., "2.35")
// returns: 1 if version1 > version2, -1 if version1 < version2, 0 if equal
private static int CompareVersions(string version1, string version2)
{
diff --git a/Utilities/SettingsManager.cs b/Utilities/SettingsManager.cs
index ce25367..f505d84 100644
--- a/Utilities/SettingsManager.cs
+++ b/Utilities/SettingsManager.cs
@@ -132,7 +132,8 @@ namespace AndroidSideloader.Utilities
public bool UseDownloadedFiles { get; set; } = false;
public float BandwidthLimit { get; set; } = 0f;
public string[] FavoritedGames { get; set; } = new string[0];
-
+ public bool TrailersEnabled { get; set; } = true;
+ public bool UseGalleryView { get; set; } = true;
private SettingsManager()
{
Load();
@@ -252,8 +253,10 @@ namespace AndroidSideloader.Utilities
UseDownloadedFiles = false;
BandwidthLimit = 0f;
FavoritedGames = new string[0];
+ TrailersEnabled = true;
+ UseGalleryView = true;
- Save();
+ Save();
Debug.WriteLine("Default settings created.");
}
diff --git a/changelog.txt b/changelog.txt
index 2c29117..f686232 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,11 +1,28 @@
-RSL 2.35
+RSL 3.0
-- Feature: Restructure and project file organization
-- Feature: Renamed 'ADB' to 'AdbManager'
-- Fix: Remove hideAdultContent toggle (no longer needed)
-- Fix: WebView2 "too many automatic redirections" error
-- Fix: Donor window only displays unique entries
-- Fix: Cleanup packages listing
-- Chore: Changed C:\RSL\platform-tools path to platform-tools in working dir
-- Chore: Minor Main file organization
-- Chore: Minor MainForm field cleanup
\ No newline at end of file
+Major Rookie overhaul with modernized UI, performance boosts and UX improvements
+
+- Gallery View:
+ - Introduced high-performance Gallery View
+ - Hover animations, smooth scrolling, dynamic scaling, status badges
+ - Toggle to switch seamlessly between List and Gallery view
+ - Optimized for smooth performance, even on very low-end hardware
+
+- Performance:
+ - Reduced game list initialization time by 95%
+ - Instant list filtering through caching + optimized filter logic
+ - Major startup improvements via asynchronous initialization
+ - Improved search bar responsiveness
+ - Reduced application size by removing splash screen & unused assets
+ - Faster trailer loading via per-game video ID caching + WebView2 performance tweaks
+
+- UI & UX:
+ - Complete UI redesign with new theme and accent color
+ - New UI components with animations for a cohesive, modern look
+ - Refined sizing, layout, and color consistency across the board
+ - Added uninstall buttons directly in list & gallery views
+
+- General:
+ - Fix: Resolved trailer playback issues
+ - Fix: Resolved several connection errors on startup
+ - Feature: Added local blacklist support. Users can permanently suppress donation prompts for selected apps
\ No newline at end of file
diff --git a/version b/version
index 2786ac5..f398a20 100644
--- a/version
+++ b/version
@@ -1 +1 @@
-2.35.0
\ No newline at end of file
+3.0
\ No newline at end of file