Changed: UI base design

This commit is contained in:
Ray 2020-11-08 23:24:40 +00:00
parent f7db100148
commit 264b39e9b2
20 changed files with 781 additions and 353 deletions

View File

@ -229,5 +229,20 @@
<ItemGroup>
<None Include="Resources\16\plus2.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\20\close3.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\20\empty.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\20\empty2.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\20\empty3.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\20\minimise3.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@ -80,6 +80,46 @@ namespace AppLauncher.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap close3 {
get {
object obj = ResourceManager.GetObject("close3", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap empty {
get {
object obj = ResourceManager.GetObject("empty", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap empty2 {
get {
object obj = ResourceManager.GetObject("empty2", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap empty3 {
get {
object obj = ResourceManager.GetObject("empty3", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
@ -129,5 +169,15 @@ namespace AppLauncher.Properties {
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap minimise3 {
get {
object obj = ResourceManager.GetObject("minimise3", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}

View File

@ -124,6 +124,18 @@
<data name="close2" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\20\close2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="close3" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\20\close3.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="empty" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\20\empty.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="empty2" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\20\empty2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="empty3" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\20\empty3.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="maximise" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\20\maximise.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -139,4 +151,7 @@
<data name="minimise2" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\20\minimise2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="minimise3" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\20\minimise3.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 522 B

After

Width:  |  Height:  |  Size: 493 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 514 B

After

Width:  |  Height:  |  Size: 525 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 514 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 289 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 319 B

After

Width:  |  Height:  |  Size: 303 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 290 B

After

Width:  |  Height:  |  Size: 320 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 315 B

After

Width:  |  Height:  |  Size: 315 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 320 B

After

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 294 B

After

Width:  |  Height:  |  Size: 320 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 B

View File

@ -1,36 +1,54 @@
using System;
using RyzStudio.Windows.Forms;
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using Resources = AppLauncher.Properties.Resources20;
namespace AppLauncher.Windows.Forms
{
public class TForm : Form
{
protected readonly Color borderColour = Color.FromArgb(232, 231, 236);
protected readonly Color borderColour = Color.FromArgb(235, 234, 233);
protected readonly int borderWidth = 1;
protected readonly Color backColour = Color.FromArgb(254, 254, 254);
protected readonly int resizeBorderWidth = 3;
protected readonly Color titleBarColour = Color.FromArgb(237, 240, 247);
protected readonly Color titleBorderColour = Color.FromArgb(232, 231, 236);
protected readonly Color titleColour = Color.FromArgb(32, 32, 33);
protected readonly int titleBarHeight = 56;
protected readonly Color backColour = Color.FromArgb(255, 255, 255);
private bool isDragging = false;
private Point startPosition = new Point();
protected readonly Color titleBackColour = Color.FromArgb(235, 234, 233);
protected readonly Color titleBorderColour = Color.FromArgb(200, 198, 196);
protected readonly Color titleColour = Color.FromArgb(102, 102, 102);
protected readonly int titleBarHeight = 54;
protected Font titleFont = null;
protected int titleFontTop = 0;
protected readonly int titleBarIconSize = 20;
protected readonly int titleBarIconMargin = 8;
protected bool isDragging = false;
protected Point startPosition = new Point();
protected Point startWindowSize = new Point();
protected bool isBusy = false;
protected internal RyzStudio.Windows.Forms.TImageBox imageBox3;
protected internal RyzStudio.Windows.Forms.TImageBox imageBox2;
protected internal RyzStudio.Windows.Forms.TImageBox imageBox1;
private NotifyIcon notifyIcon1;
private Panel panel1;
private ContextMenuStrip contextMenuStrip1;
private ToolStripMenuItem exitToolStripMenuItem;
protected Image appIcon = null;
protected int appIconTop = 0;
protected bool isMinimiseEnabled = true;
protected bool isMaximiseEnabled = true;
protected bool closeOnMinimise = false;
protected bool enableMinimiseMenu = true;
protected bool enableMaximiseMenu = true;
protected bool enableCloseMenu = true;
protected MouseEventHandler minimiseMenuEvent = null;
protected MouseEventHandler maximiseMenuEvent = null;
protected MouseEventHandler closeMenuEvent = null;
private IContainer components;
public TForm() : base()
{
InitializeComponent();
@ -41,42 +59,29 @@ namespace AppLauncher.Windows.Forms
this.StartPosition = FormStartPosition.Manual;
}
this.AutoScaleMode = AutoScaleMode.None;
this.BackColor = backColour;
this.Padding = new Padding(0);
this.DoubleBuffered = true;
notifyIcon1.Text = Application.ProductName;
this.MouseDown += new MouseEventHandler(form_MouseDown);
this.MouseMove += new MouseEventHandler(form_MouseMove);
this.MouseUp += new MouseEventHandler(form_MouseUp);
this.PreviewKeyDown += new PreviewKeyDownEventHandler(form_PreviewKeyDown);
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
this.SuspendLayout();
this.Text = Application.ProductName;
imageBox3.Left = this.DisplayRectangle.Width - imageBox3.Width - 17;
imageBox3.Top = 18;
imageBox3.Anchor = (AnchorStyles.Top | AnchorStyles.Right);
initialiseLoadComponent();
imageBox2.Left = imageBox3.Left - imageBox2.Width - 8;
imageBox2.Top = 18;
imageBox2.Anchor = (AnchorStyles.Top | AnchorStyles.Right);
if (appIcon != null) appIconTop = (int)Math.Floor((decimal)(titleBarHeight - appIcon.Height) / 2) + borderWidth;
titleFont = new Font(this.Font.FontFamily, 10F);
titleFontTop = (int)Math.Floor((decimal)(titleBarHeight - TextRenderer.MeasureText("#", titleFont).Height) / 2) + borderWidth;
imageBox1.Left = imageBox2.Left - imageBox1.Width - 8;
imageBox1.Top = 18;
imageBox1.Anchor = (AnchorStyles.Top | AnchorStyles.Right);
panel1.Left = this.DisplayRectangle.Left;
panel1.Top = this.DisplayRectangle.Height - panel1.Height;
panel1.Width = this.DisplayRectangle.Width;
panel1.Anchor = (AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom);
if (this.DesignMode)
{
imageBox1.Visible = imageBox2.Visible = imageBox3.Visible = false;
panel1.Visible = false;
}
this.ResumeLayout();
}
protected override void OnMouseClick(MouseEventArgs e)
@ -112,40 +117,6 @@ namespace AppLauncher.Windows.Forms
}
}
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
if (e.Button != MouseButtons.Left)
{
return;
}
isDragging = true;
startPosition = e.Location;
}
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
if (isDragging)
{
int x = (this.Location.X + (e.Location.X - startPosition.X));
int y = (this.Location.Y + (e.Location.Y - startPosition.Y));
//this.Location = validateFormLocation(x, y);
this.Location = new Point(x, y);
}
}
protected override void OnMouseUp(MouseEventArgs e)
{
base.OnMouseUp(e);
isDragging = false;
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
@ -158,13 +129,15 @@ namespace AppLauncher.Windows.Forms
area.Inflate((-1 * borderWidth), (-1 * borderWidth));
g.FillRectangle(new SolidBrush(titleBarColour), area.X, area.Y, (area.Width + area.X), titleBarHeight);
g.FillRectangle(new SolidBrush(titleBackColour), area.X, area.Y, (area.Width + area.X), titleBarHeight);
g.DrawLine(new Pen(titleBorderColour, 1), area.X, (titleBarHeight + 1), (area.Width + area.X), (titleBarHeight + 1));
if (!DesignMode) g.DrawImageUnscaled(this.AppIcon, 17, 13);
if (!DesignMode) TextRenderer.DrawText(g, Application.ProductName, new Font(this.Font.FontFamily, 14F), new Point(58, 17), titleColour);
if (!DesignMode)
{
g.DrawImageUnscaled(appIcon, 17, appIconTop);
TextRenderer.DrawText(g, this.Text, titleFont, new Point(58, titleFontTop), titleColour);
}
}
protected override void OnResize(EventArgs e)
@ -186,224 +159,313 @@ namespace AppLauncher.Windows.Forms
[Category("Appearance")]
public ContextMenuStrip TitleContextMenuStrip { get; set; } = null;
[Browsable(false)]
public Image AppIcon { get; set; } = null;
//[Browsable(false)]
//public Image AppIcon { get; set; } = null;
protected Point DefaultLocation
{
get
{
Point newPosition = new Point(Cursor.Position.X, Cursor.Position.Y);
newPosition.X -= (this.Width / 2);
newPosition.Y -= (this.Height / 2);
//[Browsable(false)]
//public bool IsMaximiseEnabled { get; set; } = false;
newPosition.X = Math.Max(newPosition.X, Screen.PrimaryScreen.WorkingArea.Left);
newPosition.Y = Math.Max(newPosition.Y, Screen.PrimaryScreen.WorkingArea.Top);
//protected Point DefaultLocation
//{
// get
// {
// Point newPosition = new Point(Cursor.Position.X, Cursor.Position.Y);
// newPosition.X -= (this.Width / 2);
// newPosition.Y -= (this.Height / 2);
return newPosition;
}
}
// newPosition.X = Math.Max(newPosition.X, Screen.PrimaryScreen.WorkingArea.Left);
// newPosition.Y = Math.Max(newPosition.Y, Screen.PrimaryScreen.WorkingArea.Top);
// return newPosition;
// }
//}
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TForm));
this.imageBox3 = new RyzStudio.Windows.Forms.TImageBox();
this.imageBox2 = new RyzStudio.Windows.Forms.TImageBox();
this.imageBox1 = new RyzStudio.Windows.Forms.TImageBox();
this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.panel1 = new System.Windows.Forms.Panel();
((System.ComponentModel.ISupportInitialize)(this.imageBox3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.imageBox2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.imageBox1)).BeginInit();
this.contextMenuStrip1.SuspendLayout();
this.SuspendLayout();
//
// imageBox3
//
this.imageBox3.BackColor = System.Drawing.Color.Transparent;
this.imageBox3.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
this.imageBox3.ErrorImage = null;
this.imageBox3.Image = global::AppLauncher.Properties.Resources20.close;
this.imageBox3.ImageHover = global::AppLauncher.Properties.Resources20.close2;
this.imageBox3.ImageNormal = global::AppLauncher.Properties.Resources20.close;
this.imageBox3.ImageSelected = null;
this.imageBox3.InitialImage = null;
this.imageBox3.IsSelected = false;
this.imageBox3.Location = new System.Drawing.Point(169, 12);
this.imageBox3.Name = "imageBox3";
this.imageBox3.Size = new System.Drawing.Size(20, 20);
this.imageBox3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
this.imageBox3.TabIndex = 146;
this.imageBox3.TabStop = false;
this.imageBox3.MouseClick += new System.Windows.Forms.MouseEventHandler(this.imageBox3_MouseClick);
//
// imageBox2
//
this.imageBox2.BackColor = System.Drawing.Color.Transparent;
this.imageBox2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
this.imageBox2.ErrorImage = null;
this.imageBox2.Image = global::AppLauncher.Properties.Resources20.maximise;
this.imageBox2.ImageHover = global::AppLauncher.Properties.Resources20.maximise;
this.imageBox2.ImageNormal = global::AppLauncher.Properties.Resources20.maximise;
this.imageBox2.ImageSelected = global::AppLauncher.Properties.Resources20.maximise2;
this.imageBox2.InitialImage = null;
this.imageBox2.IsSelected = false;
this.imageBox2.Location = new System.Drawing.Point(139, 12);
this.imageBox2.Name = "imageBox2";
this.imageBox2.Size = new System.Drawing.Size(20, 20);
this.imageBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
this.imageBox2.TabIndex = 147;
this.imageBox2.TabStop = false;
this.imageBox2.MouseClick += new System.Windows.Forms.MouseEventHandler(this.imageBox2_MouseClick);
//
// imageBox1
//
this.imageBox1.BackColor = System.Drawing.Color.Transparent;
this.imageBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
this.imageBox1.ErrorImage = null;
this.imageBox1.Image = global::AppLauncher.Properties.Resources20.minimise;
this.imageBox1.ImageHover = global::AppLauncher.Properties.Resources20.minimise2;
this.imageBox1.ImageNormal = global::AppLauncher.Properties.Resources20.minimise;
this.imageBox1.ImageSelected = null;
this.imageBox1.InitialImage = null;
this.imageBox1.IsSelected = false;
this.imageBox1.Location = new System.Drawing.Point(109, 12);
this.imageBox1.Name = "imageBox1";
this.imageBox1.Size = new System.Drawing.Size(20, 20);
this.imageBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
this.imageBox1.TabIndex = 148;
this.imageBox1.TabStop = false;
this.imageBox1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.imageBox1_MouseClick);
//
// notifyIcon1
//
this.notifyIcon1.ContextMenuStrip = this.contextMenuStrip1;
this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon")));
this.notifyIcon1.Visible = true;
this.notifyIcon1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseClick);
this.notifyIcon1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseClick);
//
// contextMenuStrip1
//
this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.exitToolStripMenuItem});
this.contextMenuStrip1.Name = "contextMenuStrip1";
this.contextMenuStrip1.Size = new System.Drawing.Size(94, 26);
//
// exitToolStripMenuItem
//
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
this.exitToolStripMenuItem.Size = new System.Drawing.Size(93, 22);
this.exitToolStripMenuItem.Text = "E&xit";
this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
//
// panel1
//
this.panel1.BackColor = System.Drawing.Color.Transparent;
this.panel1.Cursor = System.Windows.Forms.Cursors.SizeNS;
this.panel1.Location = new System.Drawing.Point(109, 114);
this.panel1.Margin = new System.Windows.Forms.Padding(0);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(200, 2);
this.panel1.TabIndex = 149;
this.panel1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseDown);
this.panel1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseMove);
this.panel1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseUp);
//
// AForm
//
this.ClientSize = new System.Drawing.Size(421, 321);
this.Controls.Add(this.panel1);
this.Controls.Add(this.imageBox1);
this.Controls.Add(this.imageBox2);
this.Controls.Add(this.imageBox3);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Name = "AForm";
((System.ComponentModel.ISupportInitialize)(this.imageBox3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.imageBox2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.imageBox1)).EndInit();
this.contextMenuStrip1.ResumeLayout(false);
this.Name = "Form";
this.ResumeLayout(false);
}
private void imageBox1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
//this.WindowState = FormWindowState.Minimized;
this.Visible = false;
//notifyIcon1.Visible = true;
}
}
private void imageBox2_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
//this.WindowState = ((this.WindowState == FormWindowState.Maximized) ? FormWindowState.Normal : FormWindowState.Maximized);
//imageBox2.IsSelected = (this.WindowState == FormWindowState.Maximized);
}
else if (e.Button == MouseButtons.Right)
{
this.TopMost = !this.TopMost;
if (this.TopMost)
{
imageBox2.Image = imageBox2.ImageNormal = Properties.Resources20.maximise3;
}
else
{
imageBox2.Image = imageBox2.ImageNormal = Properties.Resources20.maximise;
}
}
}
protected virtual void imageBox3_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
this.Close();
}
}
private void panel1_MouseDown(object sender, MouseEventArgs e)
private void form_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
isDragging = true;
startPosition = e.Location;
startWindowSize = new Point(this.Width, this.Height);
}
}
private void panel1_MouseUp(object sender, MouseEventArgs e)
private void form_MouseMove(object sender, MouseEventArgs e)
{
if (isDragging)
{
int x = (this.Location.X + (e.Location.X - startPosition.X));
int y = (this.Location.Y + (e.Location.Y - startPosition.Y));
//this.Location = validateFormLocation(x, y);
this.Location = new Point(x, y);
}
}
private void form_MouseUp(object sender, MouseEventArgs e)
{
isDragging = false;
}
private void panel1_MouseMove(object sender, MouseEventArgs e)
private void form_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (isDragging)
if (e.KeyCode == Keys.Escape)
{
this.Size = new Size(this.Width, e.Y - startPosition.Y + this.Height);
Application.Exit();
}
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e) => this.Close();
private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
protected virtual void initialiseLoadComponent()
{
if (e.Button == MouseButtons.Left)
if (DesignMode) return;
// close
TImageBox closeBox = generateToolbarImageBox();
if (enableCloseMenu)
{
this.Visible = !this.Visible;
closeBox.Image = closeBox.ImageNormal = Resources.close;
closeBox.ImageHover = Resources.close3;
//closeBox.ImageSelected = null;
closeBox.MouseClick += delegate (object sender, MouseEventArgs e)
{
if (e.Button != MouseButtons.Left) return;
if (closeMenuEvent != null)
{
closeMenuEvent(sender, e);
return;
}
this.Close();
};
}
else
{
closeBox.Image = closeBox.ImageNormal = closeBox.ImageHover = closeBox.ImageSelected = Resources.close;
}
//notifyIcon1.Visible = !this.Visible;
closeBox.Left = this.DisplayRectangle.Width - closeBox.Width - 17;
this.Controls.Add(closeBox);
// maximise
TImageBox maximiseBox = generateToolbarImageBox();
if (enableMaximiseMenu)
{
maximiseBox.Image = maximiseBox.ImageNormal = (isMaximiseEnabled) ? Resources.maximise : Resources.empty;
maximiseBox.ImageHover = (isMaximiseEnabled) ? Resources.maximise2 : Resources.empty;
maximiseBox.ImageSelected = Resources.maximise3;
maximiseBox.MouseClick += delegate (object sender, MouseEventArgs e)
{
if (!(sender is TImageBox)) return;
TImageBox imageBox2 = (sender as TImageBox);
if (imageBox2 == null) return;
if (maximiseMenuEvent != null)
{
maximiseMenuEvent(sender, e);
return;
}
if (e.Button == MouseButtons.Left)
{
if (isMaximiseEnabled)
{
if (this.WindowState == FormWindowState.Maximized)
{
this.WindowState = FormWindowState.Normal;
imageBox2.Image = imageBox2.ImageNormal = Resources.maximise;
}
else
{
this.WindowState = FormWindowState.Maximized;
imageBox2.Image = imageBox2.ImageNormal = Resources.maximise2;
}
}
}
else if (e.Button == MouseButtons.Right)
{
this.TopMost = !this.TopMost;
if (this.TopMost)
{
imageBox2.Image = imageBox2.ImageNormal = Resources.maximise3;
imageBox2.ImageHover = (isMaximiseEnabled) ? Resources.maximise2 : Resources.maximise3;
}
else
{
imageBox2.Image = imageBox2.ImageNormal = (isMaximiseEnabled) ? Resources.maximise : Resources.empty;
imageBox2.ImageHover = (isMaximiseEnabled) ? Resources.maximise2 : Resources.empty;
}
}
};
}
else
{
maximiseBox.Image = maximiseBox.ImageNormal = maximiseBox.ImageHover = maximiseBox.ImageSelected = Resources.maximise;
}
maximiseBox.Left = closeBox.Left - maximiseBox.Width - titleBarIconMargin;
this.Controls.Add(maximiseBox);
// minimise
TImageBox minimiseBox = generateToolbarImageBox();
if (enableMinimiseMenu)
{
minimiseBox.Image = minimiseBox.ImageNormal = (isMinimiseEnabled) ? Resources.minimise : Resources.empty;
minimiseBox.ImageHover = (isMinimiseEnabled) ? Resources.minimise2 : Resources.empty;
//minimiseBox.ImageSelected = null;
minimiseBox.MouseClick += delegate (object sender, MouseEventArgs e)
{
if (!isMinimiseEnabled) return;
if (e.Button != MouseButtons.Left) return;
if (minimiseMenuEvent != null)
{
minimiseMenuEvent(sender, e);
return;
}
if (closeOnMinimise)
{
this.Close();
}
else
{
this.WindowState = FormWindowState.Minimized;
}
};
}
else
{
minimiseBox.Image = minimiseBox.ImageNormal = minimiseBox.ImageHover = minimiseBox.ImageSelected = Resources.minimise;
}
minimiseBox.Left = maximiseBox.Left - minimiseBox.Width - titleBarIconMargin;
this.Controls.Add(minimiseBox);
// resize
UserControl uc1 = new UserControl()
{
Anchor = (AnchorStyles.Left | AnchorStyles.Bottom | AnchorStyles.Right),
Height = resizeBorderWidth,
Width = this.DisplayRectangle.Width - resizeBorderWidth,
Left = 0,
Top = this.DisplayRectangle.Height - resizeBorderWidth,
BackColor = Color.Transparent,
Cursor = Cursors.SizeNS
};
uc1.MouseDown += form_MouseDown;
uc1.MouseUp += form_MouseUp;
uc1.MouseMove += delegate (object sender, MouseEventArgs e)
{
if (isDragging)
{
this.Size = new Size(startWindowSize.X, e.Y - startPosition.Y + this.Height);
}
};
uc1.BringToFront();
this.Controls.Add(uc1);
UserControl uc2 = new UserControl()
{
Anchor = (AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom),
Height = this.DisplayRectangle.Height - resizeBorderWidth,
Width = resizeBorderWidth,
Left = this.DisplayRectangle.Width - resizeBorderWidth,
Top = 0,
BackColor = Color.Transparent,
Cursor = Cursors.SizeWE
};
uc2.MouseDown += form_MouseDown;
uc2.MouseUp += form_MouseUp;
uc2.MouseMove += delegate (object sender, MouseEventArgs e)
{
if (isDragging)
{
this.Size = new Size(e.X - startPosition.X + this.Width, startWindowSize.Y);
}
};
uc2.BringToFront();
this.Controls.Add(uc2);
UserControl uc3 = new UserControl()
{
Anchor = (AnchorStyles.Bottom | AnchorStyles.Right),
Height = resizeBorderWidth,
Width = resizeBorderWidth,
Left = this.DisplayRectangle.Width - resizeBorderWidth,
Top = this.DisplayRectangle.Height - resizeBorderWidth,
BackColor = Color.Transparent,
Cursor = Cursors.SizeNWSE
};
uc3.MouseDown += form_MouseDown;
uc3.MouseUp += form_MouseUp;
uc3.MouseMove += delegate (object sender, MouseEventArgs e)
{
if (isDragging)
{
this.Size = new Size((e.X - startPosition.X + this.Width), (e.Y - startPosition.Y + this.Height));
}
};
uc3.BringToFront();
this.Controls.Add(uc3);
}
protected TImageBox generateToolbarImageBox()
{
TImageBox imageBox = new TImageBox();
imageBox.BackColor = Color.Transparent;
imageBox.BackgroundImageLayout = ImageLayout.Center;
imageBox.ErrorImage = null;
//imageBox.Image = Resources.close;
//imageBox.ImageHover = Resources.close2;
//imageBox.ImageNormal = Resources.close;
imageBox.ImageSelected = null;
imageBox.IsSelected = false;
//closeBox.Location = new System.Drawing.Point(169, 12);
imageBox.Size = new System.Drawing.Size(titleBarIconSize, titleBarIconSize);
imageBox.SizeMode = PictureBoxSizeMode.CenterImage;
//imageBox.MouseClick += new MouseEventHandler(closeBox_MouseClick);
//imageBox.Left = this.DisplayRectangle.Width - imageBox.Width - 17;
imageBox.Top = (int)Math.Floor((decimal)(titleBarHeight - titleBarIconSize) / 2);
imageBox.Anchor = (AnchorStyles.Top | AnchorStyles.Right);
return imageBox;
}
//private void exitToolStripMenuItem_Click(object sender, EventArgs e) => this.Close();
//private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
//{
// if (e.Button == MouseButtons.Left)
// {
// this.Visible = !this.Visible;
// }
// //notifyIcon1.Visible = !this.Visible;
//}
}
}

81
MainForm.Designer.cs generated
View File

@ -47,35 +47,18 @@
this.optionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.viewHelpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
((System.ComponentModel.ISupportInitialize)(this.imageBox3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.imageBox2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.imageBox1)).BeginInit();
this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
this.contextMenuStrip2 = new System.Windows.Forms.ContextMenuStrip(this.components);
this.exitToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.contextMenuStrip1.SuspendLayout();
this.contextMenuStrip2.SuspendLayout();
this.SuspendLayout();
//
// imageBox3
//
this.imageBox3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.imageBox3.Image = ((System.Drawing.Image)(resources.GetObject("imageBox3.Image")));
this.imageBox3.Location = new System.Drawing.Point(-71, 18);
//
// imageBox2
//
this.imageBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.imageBox2.Image = ((System.Drawing.Image)(resources.GetObject("imageBox2.Image")));
this.imageBox2.Location = new System.Drawing.Point(-99, 18);
//
// imageBox1
//
this.imageBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.imageBox1.Image = ((System.Drawing.Image)(resources.GetObject("imageBox1.Image")));
this.imageBox1.Location = new System.Drawing.Point(-127, 18);
//
// contextMenuStrip1
//
this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
@ -84,7 +67,7 @@
this.toolStripMenuItem9,
this.helpToolStripMenuItem});
this.contextMenuStrip1.Name = "contextMenuStrip1";
this.contextMenuStrip1.Size = new System.Drawing.Size(181, 114);
this.contextMenuStrip1.Size = new System.Drawing.Size(102, 92);
this.contextMenuStrip1.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip1_Opening);
//
// toolStripMenuItem4
@ -100,7 +83,7 @@
this.toolStripMenuItem10,
this.exitToolStripMenuItem});
this.toolStripMenuItem4.Name = "toolStripMenuItem4";
this.toolStripMenuItem4.Size = new System.Drawing.Size(180, 22);
this.toolStripMenuItem4.Size = new System.Drawing.Size(101, 22);
this.toolStripMenuItem4.Text = "&File";
//
// toolStripMenuItem5
@ -165,7 +148,7 @@
this.toolStripMenuItem3.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripMenuItem1});
this.toolStripMenuItem3.Name = "toolStripMenuItem3";
this.toolStripMenuItem3.Size = new System.Drawing.Size(180, 22);
this.toolStripMenuItem3.Size = new System.Drawing.Size(101, 22);
this.toolStripMenuItem3.Text = "&View";
//
// toolStripMenuItem1
@ -180,7 +163,7 @@
this.toolStripMenuItem9.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.optionToolStripMenuItem});
this.toolStripMenuItem9.Name = "toolStripMenuItem9";
this.toolStripMenuItem9.Size = new System.Drawing.Size(180, 22);
this.toolStripMenuItem9.Size = new System.Drawing.Size(101, 22);
this.toolStripMenuItem9.Text = "&Tools";
//
// optionToolStripMenuItem
@ -197,20 +180,25 @@
this.toolStripSeparator1,
this.aboutToolStripMenuItem});
this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
this.helpToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.helpToolStripMenuItem.Size = new System.Drawing.Size(101, 22);
this.helpToolStripMenuItem.Text = "&Help";
//
// viewHelpToolStripMenuItem
//
this.viewHelpToolStripMenuItem.Name = "viewHelpToolStripMenuItem";
this.viewHelpToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.viewHelpToolStripMenuItem.Size = new System.Drawing.Size(127, 22);
this.viewHelpToolStripMenuItem.Text = "&View Help";
this.viewHelpToolStripMenuItem.Click += new System.EventHandler(this.viewHelpToolStripMenuItem_Click);
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(124, 6);
//
// aboutToolStripMenuItem
//
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(127, 22);
this.aboutToolStripMenuItem.Text = "&About";
this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click);
//
@ -239,10 +227,27 @@
this.openFileDialog1.Filter = "Session files|*.jsonfig";
this.openFileDialog1.Title = "Choose session file";
//
// toolStripSeparator1
// notifyIcon1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(177, 6);
this.notifyIcon1.ContextMenuStrip = this.contextMenuStrip2;
this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon")));
this.notifyIcon1.Text = "notifyIcon1";
this.notifyIcon1.Visible = true;
this.notifyIcon1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseClick);
//
// contextMenuStrip2
//
this.contextMenuStrip2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.exitToolStripMenuItem1});
this.contextMenuStrip2.Name = "contextMenuStrip2";
this.contextMenuStrip2.Size = new System.Drawing.Size(181, 48);
//
// exitToolStripMenuItem1
//
this.exitToolStripMenuItem1.Name = "exitToolStripMenuItem1";
this.exitToolStripMenuItem1.Size = new System.Drawing.Size(180, 22);
this.exitToolStripMenuItem1.Text = "E&xit";
this.exitToolStripMenuItem1.Click += new System.EventHandler(this.exitToolStripMenuItem1_Click);
//
// MainForm
//
@ -252,20 +257,13 @@
this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
this.ClientSize = new System.Drawing.Size(633, 400);
this.Controls.Add(this.flowLayoutPanel1);
this.DoubleBuffered = true;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MinimumSize = new System.Drawing.Size(633, 280);
this.Name = "MainForm";
this.Text = "Launcher";
this.TitleContextMenuStrip = this.contextMenuStrip1;
this.Controls.SetChildIndex(this.flowLayoutPanel1, 0);
this.Controls.SetChildIndex(this.imageBox3, 0);
this.Controls.SetChildIndex(this.imageBox2, 0);
this.Controls.SetChildIndex(this.imageBox1, 0);
((System.ComponentModel.ISupportInitialize)(this.imageBox3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.imageBox2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.imageBox1)).EndInit();
this.contextMenuStrip1.ResumeLayout(false);
this.contextMenuStrip2.ResumeLayout(false);
this.ResumeLayout(false);
}
@ -293,6 +291,9 @@
private System.Windows.Forms.ToolStripMenuItem viewHelpToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
private System.Windows.Forms.NotifyIcon notifyIcon1;
private System.Windows.Forms.ContextMenuStrip contextMenuStrip2;
private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem1;
}
}

View File

@ -29,13 +29,19 @@ namespace AppLauncher
protected OptionsForm optionsForm = null;
protected string sessionFilename = null;
protected bool requestExit = false;
public MainForm() : base()
{
InitializeComponent();
this.AppIcon = Properties.Resources.app_icon_32;
notifyIcon1.Text = Application.ProductName;
this.StartPosition = FormStartPosition.WindowsDefaultBounds;
appIcon = Properties.Resources.app_icon_32;
enableMaximiseMenu = false;
closeOnMinimise = true;
}
protected override void OnLoad(EventArgs e)
@ -67,6 +73,15 @@ namespace AppLauncher
if (this.CurrentSession == null) this.CurrentSession = new LauncherSession();
if (this.CurrentSession.HideOnClose && !requestExit)
{
this.Visible = !this.Visible;
e.Cancel = true;
return;
}
requestExit = false;
if (string.IsNullOrWhiteSpace(sessionFilename))
{
// do nothing
@ -243,7 +258,11 @@ namespace AppLauncher
private void toolStripMenuItem1_Click(object sender, EventArgs e) => this.TopMost = !this.TopMost;
private void exitToolStripMenuItem_Click(object sender, EventArgs e) => this.Close();
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
requestExit = true;
this.Close();
}
private void optionToolStripMenuItem_Click(object sender, EventArgs e)
{
@ -253,28 +272,6 @@ namespace AppLauncher
invalidateHotKey();
}
protected override void imageBox3_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
if (this.CurrentSession == null)
{
this.Close();
}
else
{
if (this.CurrentSession.HideOnClose)
{
this.Visible = !this.Visible;
}
else
{
this.Close();
}
}
}
}
protected async Task collapseWindow(int width, int increment = 6)
{
await Task.Run(() =>
@ -542,5 +539,19 @@ namespace AppLauncher
private void aboutToolStripMenuItem_Click(object sender, EventArgs e) => MessageBox.Show(Application.ProductName + " v" + Application.ProductVersion, "About", MessageBoxButtons.OK, MessageBoxIcon.Information);
private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
this.Visible = !this.Visible;
}
}
private void exitToolStripMenuItem1_Click(object sender, EventArgs e)
{
requestExit = true;
this.Close();
}
}
}

View File

@ -117,36 +117,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="imageBox3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wwAADsMBx2+oZAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAD9SURBVDhP1ZVN
CsIwEIWz0hMoehX1fv4s3Ui1ScTlpHXpBdyJKwsKuq7XqJl0HLREobEbHzx4mUk+WhqmYj7ftVc6mcXa
3GNliiCXZ6cA0BIO5tsU5ol4PtlSmYEIVLxOhwTMBYWCesFizv8CbW1vfVxstl0qCcxYwx6VWMhAfwRK
BYeyBxmCShhkWMMebWMxh0NFSkFnpcypBJhrrJIz5YvW0KNtLOZw8MhBJTiQszQ3HwzFHA4eVYFSwi2K
0j6138QcDhV9e2UflDkcKmr8o9has9emrv4J+BysdgRRr7bsdRoR0I2vKS1+ttTJ2P0C7AKh+WuzpvHs
BABaDyfvLuW63njGAAAAAElFTkSuQmCC
</value>
</data>
<data name="imageBox2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wwAADsMBx2+oZAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAACTSURBVDhPY5g0
aRv77PlruubMX/1szrzV/8nCEL2dq1atYmMAG4ZNEXm4gwHmslnzVlsxkAnmLFhrDTXwKQOU8R8qRzaA
m0MXA4H8wzBxPPgwVDkYwMTpYyA5YNTAUQPJAEPJQFjBCiyCoHIkg7lzV9lADQQXX51QDsV47vw17eAq
AMgBGfoUWZJEDNLbsWrVKjYA+HjZeiQ05EUAAAAASUVORK5CYII=
</value>
</data>
<data name="imageBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wwAADsMBx2+oZAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAACTSURBVDhPY5g0
aRv77PlruubMX/1szrzV/8nCEL2dq1atYmMAG4ZNEXm4gwHmslnzVlsxkAnmLFhrDTXwKQOU8R8qRzaA
mzNqINlg1MChZiCQfxgmjgcfhioHA5g4fQwkB9DQQFjBCiyCoHIkg7lzV9lADQQXX51QDsV47vw17eAq
AMgBGfoUWZJEDNLbsWrVKjYA+QjZeove9ZMAAAAASUVORK5CYII=
</value>
</data>
<metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
@ -156,6 +126,310 @@
<metadata name="openFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>308, 17</value>
</metadata>
<metadata name="notifyIcon1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>448, 17</value>
</metadata>
<metadata name="contextMenuStrip2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>561, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="notifyIcon1.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAQAMDAAAAEAIACoJQAARgAAACAgAAABACAAqBAAAO4lAAAYGAAAAQAgAIgJAACWNgAAEBAAAAEA
IABoBAAAHkAAACgAAAAwAAAAYAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGxc
VU5rW1Tna1tU22paU5BsXVVCgEBABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAaltTZWtbVPxrW1T/a1tU/2tbVP9rW1T/a1tU7mtbU6VrXFNWbVtbDgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABqWlR/a1tU/2tbVP9rW1T/a1tU/2tbVP9rW1T/a1tU/2tbVP9rW1T/a1tU+Wta
VLprW1Nrb15VHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAVVVVA2tbVJhrW1T/a1tU/2tbVP+NgXz/2NPR/6+mov+Bc23/a1tU/2tb
VP9rW1T/a1tU/2tbVP9rW1T/a1tU/2tbVc1sXFSAa1xSMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtSUkHa1xUqmtbVP9rW1T/a1tU/5iNiP/6+fn/////////
////////6+no/7+4tf+Sh4L/bV5X/2tbVP9rW1T/a1tU/2tbVP9rW1T/a1tU/2tbVOFrXFOZallTTW1J
SQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGlaWhFqW1TCa1tU/2tbVP9rW1T/o5mV//38
/P//////////////////////////////////////9PPy/8jDwP+cko3/c2Nd/2tbVP9rW1T/a1tU/2tb
VP9rW1T/a1tU/2tbVPVrW1SzalxUXmlaWhEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAalhYHWtbVNRrW1T/a1tU/2tb
VP+1rar/////////////////////////////////////////////////////////////////+vn5/9LN
y/+lm5f/eGpj/2tbVP9rW1T/a1tU/2tbVP9rW1T/a1tU/2tbVPtrWlS9bFxVb2xdVSEAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABrWVMra1tU42tb
VP9rW1T/bV1W/8S9u///////////////////////////////////////////////////////////////
/////////////////////////v7+/97a2f+xqKT/g3Zw/2tbVP9rW1T/a1tU/2tbVP9rW1T/a1tU/2tb
VP5qW1V4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpZ
VTxrW1Tua1tU/2tbVP9wYVr/0czK////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////+ro5/+8tbL/j4N+/21d
Vv9rW1T/a1tU/2tbVP9rW1TpAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAbFxTUGtbVPZrW1T/a1tU/3VnYP/d2df/////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////Tz8v/Iw8D/dmdh/2tbVP9rW1T/blpTJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABsXFRha1tU+2tbVP9rW1T/emxl/+Th4P//////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////m5CL/2tbVP9rW1T/a1tTXwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGtaVHdrW1T/a1tU/2tbVP+DdnD/7uzs/////////////Pvw//z6
7v/8+u7//Pru//z67v/8+u7//Pru//z67v/9/PT///////////////////////z4+f/79fX/+/X1//v1
9f/79fX/+/X1//v19f/79fX//Pb2////////////////////////////vLWy/2tbVP9rW1T/a1xTmQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVVVUDa1tUmGtbVP9rW1T/a1tU/4t/ev/08/L/////////
///cyT7/0bcA/9G3AP/RtwD/0bcA/9G3AP/RtwD/0bcA/9G3AP/RtwD/6Nt+////////////4bG1/8Rl
bP/EZWz/xGVs/8RlbP/EZWz/xGVs/8RlbP/EZWz/xGVs/9KKkP//////////////////////3tvZ/2tb
VP9rW1T/a1tU1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1JSQdrW1Sra1tU/2tbVP9rW1T/mY6J//r5
+f////////////389f/RtwD/0bcA/9G3AP/RtwD/0bcA/9G3AP/RtwD/0bcA/9G3AP/RtwD/28Y1////
////////0IWL/8RlbP/EZWz/xGVs/8RlbP/EZWz/xGVs/8RlbP/EZWz/xGVs/8RlbP/9+fn/////////
/////////Pz8/3BhWv9rW1T/a1tU/nFVVRIAAAAAAAAAAAAAAAAAAAAAaVpaEWtcVMNrW1T/a1tU/2tb
VP+kmpb//fz8//////////////////389P/RtwD/0bcA/+TVbP/w56r/8Oeq//Dnqv/w56r/8Oeq/93K
Qv/RtwD/28Y1////////////0IWL/8RlbP/TjZL/68zO/+vMzv/rzM7/68zO/+vMzv/dpqr/xGVs/8Rl
bP/8+Pn//////////////////////46CfP9rW1T/a1tU/2xbVEkAAAAAAAAAAAAAAABsWFgaa1xU0Wtb
VP9rW1T/a1tU/7CopP////////////////////////////389P/RtwD/0bcA/+7lov//////////////
/////////////+PTY//RtwD/28Y1////////////0IWL/8RlbP/boaX/////////////////////////
///px8n/xGVs/8RlbP/8+Pn//////////////////////7CopP9rW1T/a1tU/2tbVIMAAAAAAAAAAAAA
AABqXFTOa1tU/2tbVP9tXlf/xr+9//////////////////////////////////389P/RtwD/0bcA/+7l
ov///////////////////////////+PTY//RtwD/28Y1////////////0IWL/8RlbP/boaX/////////
///////////////////px8n/xGVs/8RlbP/8+Pn//////////////////////9LNy/9rW1T/a1tU/2tb
VL8AAAAAAAAAAAAAAABrW1Tva1tU/2tbVP/KxML///////////////////////////////////////38
9P/RtwD/0bcA/+7lov///////////////////////////+PTY//RtwD/28Y1////////////0IWL/8Rl
bP/boaX////////////////////////////px8n/xGVs/8RlbP/8+Pn///////////////////////Py
8v9sXFX/a1tU/2tbVPRmZmYFAAAAAAAAAABrW1W4a1tU/2tbVP/Oycf/////////////////////////
//////////////389P/RtwD/0bcA/+7lov///////////////////////////+PTY//RtwD/28Y1////
////////0IWL/8RlbP/boaX////////////////////////////px8n/xGVs/8RlbP/8+Pn/////////
//////////////////+CdG7/a1tU/2tbVP9sXVM0AAAAAAAAAABqWlR/a1tU/2tbVP+tpKD/////////
//////////////////////////////389P/RtwD/0bcA/+7lov///////////////////////////+PT
Y//RtwD/28Y1////////////0IWL/8RlbP/boaX////////////////////////////px8n/xGVs/8Rl
bP/8+Pn///////////////////////////+jmZX/a1tU/2tbVP9rWlNuAAAAAAAAAABtWlNEa1tU/2tb
VP+Lfnn///////////////////////////////////////389P/RtwD/0bcA/93JQf/j1Gb/49Rm/+PU
Zv/j1Gb/49Rm/9jCJ//RtwD/28Y1////////////0IWL/8RlbP/NfYL/3KOn/9yjp//co6f/3KOn/9yj
p//TjJH/xGVs/8RlbP/8+Pn////////////////////////////Fv7z/a1tU/2tbVP9qW1OoAAAAAAAA
AABqVVUMa1tU+2tbVP9uXlf/+fn4//////////////////////////////////389P/RtwD/0bcA/9G3
AP/RtwD/0bcA/9G3AP/RtwD/0bcA/9G3AP/RtwD/28c5////////////0IWL/8RlbP/EZWz/xGVs/8Rl
bP/EZWz/xGVs/8RlbP/EZWz/xGVs/8Rmbf/9+vr////////////////////////////n5eT/a1tU/2tb
VP9rW1TkAAAAAAAAAAAAAAAAa1tUz2tbVP9rW1T/3NjW//////////////////////////////////38
9v/axTP/2sUz/9rFM//axTP/2sUz/9rFM//axTP/2sUz/9rFM//bxzj/8Ois////////////2p2i/9CE
if/QhIn/0ISJ/9CEif/QhIn/0ISJ/9CEif/QhIn/0ISJ/+GwtP//////////////////////////////
///+/v7/dWdg/2tbVP9rW1T/alhYHQAAAAAAAAAAa1tUlGtbVP9rW1T/ubKv////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////l4uG/2tbVP9rW1T/a1pUWAAAAAAAAAAAbFtVWmtbVP9rW1T/mI2I////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////uLGt/2tbVP9rW1T/a1tUkgAAAAAAAAAAa1pSH2tb
VP9rW1T/dmdh//7+/v////////////////////////////////+rnPH/fGTp/3xk6f98ZOn/fGTp/3xk
6f98ZOn/fGTp/3xk6f9/aOr/ysD2////////////rOH9/zi4+v8ztvr/M7b6/zO2+v8ztvr/M7b6/zO2
+v8ztvr/M7b6/33R/P//////////////////////////////////////2tbV/2tbVP9rW1T/a1tVzQAA
AAAAAAAAAAAAAGtbVONrW1T/a1tU/+jm5f////////////////////////////r5/v9cPuT/Wz3k/1s9
5P9bPeT/Wz3k/1s95P9bPeT/Wz3k/1s95P9bPeT/gGjq////////////Obj6/wCk+f8ApPn/AKT5/wCk
+f8ApPn/AKT5/wCk+f8ApPn/AKT5/wGk+f/3/P//////////////////////////////////+vn5/25f
WP9rW1T/a1tU/GpVVQwAAAAAAAAAAGtcVKprW1T/a1tU/8bAvf////////////////////////////j3
/v9bPeT/Wz3k/4Vu6/+di+//nYvv/52L7/+di+//nYvv/3Rb6P9bPeT/fWXq////////////Nbf6/wCk
+f8nsvr/Zsj7/2bI+/9myPv/Zsj7/2bI+/9Bu/v/AKT5/wCk+f/0+///////////////////////////
/////////////4p9eP9rW1T/a1tU/2xdVUIAAAAAAAAAAGtbVHBrW1T/a1tU/6Sblv//////////////
//////////////j3/v9bPeT/Wz3k/8O49f///////////////////////////5uI7v9bPeT/fWXq////
////////Nbf6/wCk+f9jx/v///////////////////////////+i3v3/AKT5/wCk+f/0+///////////
/////////////////////////////6yjn/9rW1T/a1tU/2pcVH0AAAAAAAAAAGxdUzRrW1T/a1tU/4J0
bv////////////////////////////j3/v9bPeT/Wz3k/8O49f///////////////////////////5uI
7v9bPeT/fWXq////////////Nbf6/wCk+f9jx/v///////////////////////////+i3v3/AKT5/wCk
+f/0+////////////////////////////////////////87Jx/9rW1T/a1tU/2tbVbgAAAAAAAAAAGZm
ZgVrW1T0a1tU/2xcVf/z8vL///////////////////////j3/v9bPeT/Wz3k/8O49f//////////////
/////////////5uI7v9bPeT/fWXq////////////Nbf6/wCk+f9jx/v/////////////////////////
//+i3v3/AKT5/wCk+f/0+////////////////////////////////////////8rEwv9rW1T/a1tU/2tb
VO8AAAAAAAAAAAAAAABrW1S/a1tU/2tbVP/Szcv///////////////////////j3/v9bPeT/Wz3k/8O4
9f///////////////////////////5uI7v9bPeT/fWXq////////////Nbf6/wCk+f9jx/v/////////
//////////////////+i3v3/AKT5/wCk+f/0+///////////////////////////////////xr+9/21e
V/9rW1T/a1tU/2pcVM4AAAAAAAAAAAAAAABrWlSFa1tU/2tbVP+xqaX///////////////////////j3
/v9bPeT/Wz3k/8O49f///////////////////////////5uI7v9bPeT/fWXq////////////Nbf6/wCk
+f9jx/v///////////////////////////+i3v3/AKT5/wCk+f/0+///////////////////////////
//+6sq//bFxV/2tbVP9rW1T/a1tT1m9eVR4AAAAAAAAAAAAAAABpXFVLa1tU/2tbVP+Pg37/////////
//////////////j3/v9bPeT/Wz3k/6CP7//Ivvb/yL72/8i+9v/Ivvb/yL72/4Vv6/9bPeT/fWXq////
////////Nbf6/wCk+f9CvPv/quH9/6rh/f+q4f3/quH9/6rh/f9sy/z/AKT5/wCk+f/0+///////////
/////////f39/6ifmv9rW1T/a1tU/2tbVP9rW1TIZllZFAAAAAAAAAAAAAAAAAAAAABpWloRa1tU/Wtb
VP9wYVr//Pv7//////////////////j3/v9bPeT/Wz3k/1s95P9bPeT/Wz3k/1s95P9bPeT/Wz3k/1s9
5P9bPeT/fWXq////////////Nbf6/wCk+f8ApPn/AKT5/wCk+f8ApPn/AKT5/wCk+f8ApPn/AKT5/wCk
+f/1+//////////////7+vr/nZKO/2tbVP9rW1T/a1tU/2tcVbJmZk0KAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAa1tT1mtbVP9rW1T/4Nzb//////////////////j3/v9bPeT/Wz3k/1s95P9bPeT/Wz3k/1s9
5P9bPeT/Wz3k/1s95P9bPeT/rJ3x////////////Nbf6/wCk+f8ApPn/AKT5/wCk+f8ApPn/AKT5/wCk
+f8ApPn/AKT5/z66+v////////////b19P+Pg37/a1tU/2tbVP9rW1T/a1tTn4BAQAQAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAa1pUm2tbVP9rW1T/vbaz//////////////////7+///08v3/9PL9//Ty
/f/08v3/9PL9//Ty/f/08v3/9PL9//Ty/f/49/7/////////////////8vr//+75///u+f//7vn//+75
///u+f//7vn//+75///u+f//8Pr/////////////8O/u/4Z5dP9rW1T/a1tU/2tbVP9rXFSIAAAAAQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbFxUYWtbVP9rW1T/nJGM////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////n5eT/fG5o/2tbVP9rW1T/a1tU/Gta
VWkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAblpTJWtbVP9rW1T/dmdh/8jD
wP/08/L/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////93Z1/91Z2D/a1tU/2tb
VP9rW1T2bFxTUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWtb
VOlrW1T/a1tU/2tbVP9tXVb/j4N+/7y1sv/q6Of/////////////////////////////////////////
////////////////////////////////////////////////////////////////////////0czK/3Bh
Wv9rW1T/a1tU/2tbVO5qWVU8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAGpbVXhrW1T+a1tU/2tbVP9rW1T/a1tU/2tbVP9rW1T/g3Zw/7GopP/e2tn//v7+////
////////////////////////////////////////////////////////////////////////////////
///Evbv/bV1W/2tbVP9rW1T/a1tU42tZUysAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsXVUhbFxVb2taVL1rW1T7a1tU/2tbVP9rW1T/a1tU/2tb
VP9rW1T/eGpj/6Wbl//Szcv/+vn5////////////////////////////////////////////////////
/////////////7Wtqv9rW1T/a1tU/2tbVP9rW1TUalhYHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABpWloRbFpUVWtb
U6JrW1Twa1tU/2tbVP9rW1T/a1tU/2tbVP9rW1T/cGFa/5KHgv+/uLX/8O/u////////////////////
///////////////////9/f3/p56a/2tbVP9rW1T/a1tU/2pbVcdmWVkUAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABVVVUDallVPGtbVJFrW1Pia1tU/2tbVP9rW1T/a1tU/2tbVP9rW1T/bFxV/4l8
dv+1ran/4d7d//////////////////v6+v+cko3/a1tU/2tbVP9rW1T/a1tUsXFVVQkAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa1xSMmxcVIBrW1XNa1tU/2tb
VP9rW1T/a1tU/2tbVP9rW1T/a1tU/4Fzbf+vpqL/2NPR/42BfP9rW1T/a1tU/2tbVP9rW1SYVVVVAwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAb15VHmtbU2trWlS6a1tU+WtbVP9rW1T/a1tU/2tbVP9rW1T/a1tU/2tbVP9rW1T/a1tU/2pa
VH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbVtbDmtcU1ZrW1Ola1tU7mtbVP9rW1T/a1tU/2tb
VP9rW1T8altTZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgEBABGxd
VUJqWlOQa1tU22tbVOdsXFVOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//4H///+sEP//AD///6wQ//4AB///rBD/+AAA//+sEP/w
AAAP/6wQ/+AAAAH/rBD/wAAAAD+sEP+AAAAAH6wQ/wAAAAAPrBD+AAAAAA+sEPwAAAAAD6wQ+AAAAAAP
rBDgAAAAAA+sEMAAAAAAB6wQgAAAAAAHrBAAAAAAAAesEAAAAAAAB6wQAAAAAAADrBAAAAAAAAOsEAAA
AAAAA6wQAAAAAAADrBAAAAAAAAOsEIAAAAAAAawQgAAAAAABrBCAAAAAAAGsEIAAAAAAAawQwAAAAAAA
rBDAAAAAAACsEMAAAAAAAKwQwAAAAAAArBDAAAAAAACsEOAAAAAAAKwQ4AAAAAAArBDgAAAAAAGsEOAA
AAAAA6wQ8AAAAAAHrBDwAAAAAA+sEPAAAAAAP6wQ8AAAAAB/rBDwAAAAAP+sEPgAAAAB/6wQ/AAAAAP/
rBD/gAAAB/+sEP/wAAAP/6wQ//8AAB//rBD//+AAf/+sEP///AD//6wQ////gf//rBAoAAAAIAAAAEAA
AAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABsXFRha1tU7GtbVcFqW1RzalxVJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAbFtVe2tbVP5rW1T/a1tU/2tbVP9rW1T/a1tT1mtcVIhrWVU5gICAAgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAVVVVA2xbVJVrW1T/bV5X/8K7uf/RzMr/pJqW/3hpY/9rW1T/a1tU/2tb
VP9rW1TpalxTnGxcVU5mZk0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1JSQdrW1Spa1tU/29fWf/Oycf//////////////////v7+/+He
3f+1ran/iXx2/2tbVP9rW1T/a1tU/2tbVPZqW1W7bFxVb2xYWBoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwYFAQbFxUwGtbVP91ZmD+3trZ////////////////////
////////////////////////6efm/7y0sf+Ogn3/bV1W/2tbVP9rW1T/a1tU/WtbVMZrWlR3ZlVVDwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaF5VG2tbVNJrW1T/fW9p/+fl5P//////////////
///////////////////////////////////////////////////z8vL/x8G//5uQi/9xYlv/a1tU/2tb
VP9rW1SPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpdVylrW1Tha1tU/4V4cv/w7u7/////////
//////////////////////////////////////////////////////////////////////////////r6
+v/Evbv/a1tU/2xbVMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABrXVM3a1tU62tbVP+MgHr/9PPy////
////////////////////////////////////////////////////////////////////////////////
//////////////v6+v9vX1n/a1tU+2pVVQwAAAAAAAAAAAAAAAAAAAAAallTTWtbVPVrW1T/mY6K//r5
+f///v3/1r8d/9G3AP/RtwD/0bcA/9G3AP/RtwD/07oL//r34//57u//x2xy/8RlbP/EZWz/xGVs/8Rl
bP/EZWz/y3d9///+/v///////////4yAev9rW1T/alpSQQAAAAAAAAAAAAAAAGpaVWBrW1T7a1tU/6mg
nP/+/v7///////799//RtwD/2cMr/+PUZv/j1Gb/49Rm/9zIPP/RtwD/9vHM//Pg4v/EZWz/0omP/9yj
p//co6f/3KOn/85/hf/EZWz//fr6////////////rqai/2tbVP9sW1V7AAAAAAAAAABrW1R5a1tU/2xc
Vf+4sa3//////////////////v33/9G3AP/k1Wz/////////////////7OGW/9G3AP/28cz/8+Di/8Rl
bP/nwML/////////////////3aaq/8RlbP/9+vr////////////RzMn/a1tU/2pbVLYAAAAAAAAAAGtb
VO5rW1T/w726///////////////////////+/ff/0bcA/+TVbP/////////////////s4Zb/0bcA//bx
zP/z4OL/xGVs/+fAwv/////////////////dpqr/xGVs//36+v////////////Lw8P9rW1T/a1tU74CA
gAIAAAAAa1tUxWtbVP/Z1dP///////////////////////799//RtwD/5NVs/////////////////+zh
lv/RtwD/9vHM//Pg4v/EZWz/58DC/////////////////92mqv/EZWz//fr6/////////////////4By
bP9rW1T/aF1RLAAAAABqXFSLa1tU/7iwrf///////////////////////v33/9G3AP/dyUH/7eKZ/+3i
mf/t4pn/4dBa/9G3AP/28cz/8+Di/8RlbP/Zm6D/58HE/+fBxP/nwcT/04yR/8RlbP/9+vr/////////
////////opeT/2tbVP9qW1NlAAAAAGtbVVFrW1T/louG///////////////////////+/ff/0bcA/9G3
AP/RtwD/0bcA/9G3AP/RtwD/0bcB//n12//z4OL/xGVs/8RlbP/EZWz/xGVs/8RlbP/EZWz/x2xy//79
/f/////////////////Dvbr/a1tU/2tbU58AAAAAaF1RFmtbVP90ZV///v7+///////////////////+
/f/28cz/9vHM//bxzP/28cz/9vHM//bxzP/49dr///////35+f/z4OL/8+Di//Pg4v/z4OL/8+Di//Pg
4v/47e7//////////////////////+Xi4f9rW1T/altU2gAAAAAAAAAAa1xT3GtbVP/m4+L/////////
/////////////+zp/P/e2Pr/3tj6/97Y+v/e2Pr/3tj6/+fj+////////////9ry/v/M7f7/zO3+/8zt
/v/M7f7/zO3+/+L1/v///////////////////////v7+/3VmX/9rW1T+aF1RFgAAAABsWlSha1tU/8S+
u//////////////////8/P//YkXl/1s95P9bPeT/Wz3k/1s95P9bPeT/XD7k/+jk+//b8v7/AaT5/wCk
+f8ApPn/AKT5/wCk+f8ApPn/C6j5//v+////////////////////////lYmE/2tbVP9rWlRPAAAAAGpc
VGdrW1T/o5mU//////////////////r5/v9bPeT/hW7r/72x9P+9sfT/vbH0/5WB7v9bPeT/3tj6/8zt
/v8ApPn/WsT7/5nb/f+Z2/3/mdv9/0G7+/8ApPn/9/z///////////////////////+2r6v/a1tU/2pb
VIkAAAAAaF1RLGtbVP+Acmz/////////////////+vn+/1s95P+gj+//////////////////u6/0/1s9
5P/e2Pr/zO3+/wCk+f+W2v3/////////////////bMv8/wCk+f/3/P///////////////////////9nV
0/9rW1T/a1tUxQAAAACAgIACa1tU72tbVP/y8PD////////////6+f7/Wz3k/6CP7///////////////
//+7r/T/Wz3k/97Y+v/M7f7/AKT5/5ba/f////////////////9sy/z/AKT5//f8////////////////
////////w726/2tbVP9rW1TuAAAAAAAAAABqW1S2a1tU/9HMyf////////////r5/v9bPeT/oI/v////
/////////////7uv9P9bPeT/3tj6/8zt/v8ApPn/ltr9/////////////////2zL/P8ApPn/9/z/////
/////////////7ixrf9sXFX/a1tU/2tbVHkAAAAAAAAAAGpcVH1rW1T/r6ej////////////+vn+/1s9
5P93Xun/nYvv/52L7/+di+//gmvq/1s95P/e2Pr/zO3+/wCk+f88ufr/Zsj7/2bI+/9myPv/K7P6/wCk
+f/3/P////////7+/v+upaH/a1tU/2tbVPxqXFRnAAAAAAAAAAAAAAAAa1tUQ2tbVP+NgXz/////////
///6+f7/Wz3k/1s95P9bPeT/Wz3k/1s95P9bPeT/YkXl/+3q/P/M7f7/AKT5/wCk+f8ApPn/AKT5/wCk
+f8ApPn/Ha76//3+///7+vr/nZOO/2tbVP9rWlT4altVVAAAAAAAAAAAAAAAAAAAAAB0XV0La1tU+29f
Wf/7+vr/////////////////////////////////////////////////////////////////////////
////////////////////////9vX0/5CEfv9rW1T/bFxU72pZVTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABsW1TMa1tU/8S9u//6+vr/////////////////////////////////////////////////////////
//////////////////////////////Du7v+FeHL/a1tU/2tbVOFqXVcpAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAGtbVI9rW1T/a1tU/3FiW/+bkIv/x8G///Py8v//////////////////////////////
///////////////////////////////////n5eT/fW9p/2tbVP9rW1TSaF5VGwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAZlVVD2taVHdrW1TGa1tU/WtbVP9rW1T/bV1W/46Cff+8tLH/6efm////
////////////////////////////////////////3trZ/3ZnYf9rW1T/bFxUwHBgUBAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmWVkUalxUXmtcVKprW1Tya1tU/2tb
VP9rW1T/f3Fr/6uinv/Y09H//fz8/////////////////9LNy/9xYVv/a1tU/2paVa9xVVUJAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZm
TQpsXFVOalxTnGtbVOlrW1T/a1tU/2tbVP94aWP/pJqW/9HMyv/Cu7n/bV5X/2tbVP9sW1SVVVVVAwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAgICAAmtZVTlrXFSIa1tT1mtbVP9rW1T/a1tU/2tbVP9rW1T+bFtVewAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAalxVJGpbVHNrW1XBa1tU7Gxc
VGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/g////wA///wAB//4A
AD/8AAAH+AAAB/AAAAfgAAADwAAAA4AAAAMAAAADAAAAAQAAAAEAAAABAAAAAQAAAAGAAAAAgAAAAIAA
AACAAAAAgAAAAMAAAADAAAABwAAAA8AAAAfgAAAP4AAAH+AAAD/8AAB//4AA///wA////wf/KAAAABgA
AAAwAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAa1tTa2xcVfBsXFW1bFpVZmZcUhkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFrWlSFa1tU/4+Dfv+AcWv8a1tU/2tb
VP5tXlbMa1xUemxbVS0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAVVVVA2xbVJprW1T/qqCc//7+/v//////6+no/7+4tf+RhoH9bF1W/mtbVP9tXlbia1xTmWpZ
U02AVVUGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0XV0LbFxVtWxcVf+5sq//////////
////////////////////////8/Hx/8bAvf+Zjor/cGBa/WtbVP9tXVbxaltUo2heVRsAAAAAAAAAAAAA
AAAAAAAAAAAAAGZZWRRtXFbKbV1W/sjCv///////////////////////////////////////////////
////////+vn5/9LNy/+mnJj/bV1W/WtbVIMAAAAAAAAAAAAAAAAAAAAAaFhYIG1eV9pvYFn808/N////
////////////////////////////////////////////////////////////////////////in55/W1d
Vr4AAAAAAAAAAAAAAABoXVEsbV5X53NlXvzd2tj//v78/9S8EP/RtwD/0bcA/9G3AP/RtwD/8Oit/+zN
0P/EZWz/xGVs/8RlbP/EZWz/yG91//79/f//////raSg/2xcVfaAQEAEAAAAAGxcVEBtXVbzfG5n++jm
5f///////v35/9G3AP/v5qf/9vHM//bxzP/Ywij/7eKZ/+fBxP/NfYP/8+Di//Pg4v/rysz/xGVs//77
/P//////z8rH/2tbVP9rXFIyAAAAAG1dVe2CdW/98O/u/////////////v35/9G3AP/38tH/////////
///axTL/7eKZ/+fBxP/Qg4n////////////04+T/xGVs//77/P//////8fDv/2tbVP9sW1RtAAAAAG5e
Vs+ViYT+/////////////////v35/9G3AP/38tH////////////axTL/7eKZ/+fBxP/Qg4n/////////
///04+T/xGVs//77/P///////////31waftqW1OoAAAAAGxaU5NyY138/v7+/////////////v35/9G3
AP/Zwyr/2sUz/9rFM//Tugr/7eOb/+fBxP/Ga3L/0ISJ/9CEif/OfoT/xGVs//78/P///////////6CW
kv9tXlflAAAAAGpcU1lrW1T/5ePh//////////////79/+3imf/t4pn/7eKZ/+3imf/t4pr/+/nr//bm
5//nwcT/58HE/+fBxP/nwcT/7M3P/////////////////8K7uf9rW1T/alhYHW9eVR5rW1T/w726////
/////////////8rA9v+9sfT/vbH0/72x9P++svT/8vD9/+v4//+a2/3/mdv9/5nb/f+Z2/3/rOH9////
/////////////+Th4P9rW1T/bFtVVwAAAABtXlfnopeT/////////////Pv+/1s95P92Xej/fGTp/3xk
6f9hReX/v7P0/5vb/f8KqPn/M7b6/zO2+v8qs/r/AKT5//r9//////////////7+/v9yY1z8a1tUkQAA
AABqW1OofXBp+///////////+/r+/1s95P/h3Pr///////////97Y+n/vbH0/5nb/f8ytvr/////////
///R7/7/AKT5//n9//////////////////+ViYT+bl5WzwAAAABsW1Rta1tU//Hw7///////+/r+/1s9
5P/h3Pr///////////97Y+n/vbH0/5nb/f8ytvr////////////R7/7/AKT5//n9//////////////Dv
7v+CdW/9bV1V7QAAAABsXVM0a1tU/9DLyf//////+/r+/1s95P/GvPb/3tj6/97Y+v91W+j/vbH0/5nb
/f8osvr/zO3+/8zt/v+n4P3/AKT5//n9////////6+no/35wavxsXVX1altURgAAAACAQEAEbV1W9q6m
ov//////+/r+/1s95P9bPeT/Wz3k/1s95P9bPeT/ysH2/5nb/f8ApPn/AKT5/wCk+f8ApPn/EKr5//z+
///g3dv/dmdh/G1dVuptWFMxAAAAAAAAAAAAAAAAbFxVv4x/ev3/////////////////////////////
/////////////////////////////////////////////9jT0f9xYVv8bV5W32pcVSQAAAAAAAAAAAAA
AAAAAAAAa1tUg21dVv2mnJj/0s3L//r5+f//////////////////////////////////////////////
////////yMK//21dVv5tXFbKZllZFAAAAAAAAAAAAAAAAAAAAAAAAAAAaF5VG2pbVKNsXFXwa1tU/3Bg
Wv2Zjor+xsC9//Px8f////////////////////////////////+5sq//bFxV/2xcVbV0XV0LAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVVVUDallVPGtcVIhtXVbba1tU/2tbVP6Ie3X9ta2p/+He
3f///////v7+/66mov9rW1T/bFpUoWZmZgUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAbFtVLWtcVHpsXVXLa1tU/mtbVP9/cWv7j4N+/2tbVP9rWlSFAAAAAQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAZlxSGWxaVWZsXFW1bFxV8GtbU2sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8H
/0H8AP9B+AAPQfAAA0HgAANBwAADQYAAAUEAAAFBAAABQQAAAUEAAAFBAAAAQQAAAEGAAABBgAAAQYAA
AEGAAABBgAABQcAAA0HAAAdBwAAPQfAAH0H/AD9B/+D/QSgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJhW3tvYFn0dWZgsmxbVVdmVVUPAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAAnFiW5eCdG705OHg/8a/vf+UiYT0cWFa+Xdo
YcptXFVsb15VHgAAAAAAAAAAAAAAAAAAAAAAAAAAbUlJB3NkXbKMgHr09/b2//////////////////r5
+f/Szcv/oJeS9XNlXfZzZV7baVxVJwAAAAAAAAAAbVtbDnNjXciZj4n1+/r6////////////////////
///////////////////+/v7/pJqW+WxdVnYAAAAAamBVGHJkXdmnnpn2/f37/9S8E//axTP/2MIo/+XX
cP/eqa3/zX2D/9CEif/IcHf//v39/83Ixf92Z2C8AAAAAHJjXOC5sK36//////7++//bxjb///////Xw
yv/k1Gf/3KOn//Pf4P//////0IaL//79/f/w7u7/cWFb8gAAAAF0Zl/i4+Df///////+/vv/2cMr//bx
zP/u5aL/5NRn/9yjp//px8n/8+Di/85/hf/+/f3//////3hpYvNuWlMldGReo8K7uf////////79/+PU
Zv/j1Gb/49Rm//Dorv/qyMv/3KOn/9yjp//eqKz///7+//////+ajoryalxUXmpaVWCbkYzz//////7+
//+ikfD/nYvv/52L7//Lwfb/ruL9/2bI+/9myPv/b8z8//7/////////wbq3/3RlXqJuWlMleGli8///
///8/P//d17p/97Y+v/DuPX/nYvv/2fJ+/+i3v3/zO3+/yuz+v/7/v///////+Pg3/90Zl/iAAAAAXFh
W/Lw7u7//Pz//35m6v//////3df5/52L7/9nyfv/yuz+//////82t/r/+/7///////+5sK36cmNc4AAA
AAB2Z2G+zsnH//z8//9iReX/fGTp/3Vb6P+jkvD/Z8n7/yiy+v8ztvr/E6v5//v9/v+to5/4c2Nd3m1b
UhwAAAAAbF1WdqSalvn+/v7///////////////////////////////////////v6+v+Zj4r2c2ReyW1b
Ww4AAAAAAAAAAGlcVSdzZV7bc2Vd9qCXkvXSzcv/+vn5//////////////////f29v+MgHr0c2Rdsm1J
SQcAAAAAAAAAAAAAAAAAAAAAAAAAAG9eVR5rW1NrdGRexnBhWfiShoHvxr+9/uTh4P+CdG70c2RdmYCA
gAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmVVUPbFtVV3VmYLJvYFn0cmFbewAA
AAAAAAAAAAAAAAAAAAAAAAAA+D+sQeAHrEHAAaxBgAGsQQABrEEAAKxBAACsQQAArEEAAKxBAACsQQAA
rEGAAKxBgAGsQYADrEHgB6xB/B+sQQ==
</value>
</data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAQAMDAAAAEAIACoJQAARgAAACAgAAABACAAqBAAAO4lAAAYGAAAAQAgAIgJAACWNgAAEBAAAAEA

View File

@ -33,4 +33,4 @@ using System.Runtime.InteropServices;
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("0.1.1.113")]
[assembly: AssemblyFileVersion("0.1.1.144")]