diff --git a/Remontor/.vs/Remontor/FileContentIndex/179f1e71-12a2-4e4f-8260-627c639129ad.vsidx b/Remontor/.vs/Remontor/FileContentIndex/179f1e71-12a2-4e4f-8260-627c639129ad.vsidx deleted file mode 100644 index d12dab6..0000000 Binary files a/Remontor/.vs/Remontor/FileContentIndex/179f1e71-12a2-4e4f-8260-627c639129ad.vsidx and /dev/null differ diff --git a/Remontor/.vs/Remontor/FileContentIndex/6a10c53d-114a-42d6-9be8-dea699283021.vsidx b/Remontor/.vs/Remontor/FileContentIndex/6a10c53d-114a-42d6-9be8-dea699283021.vsidx new file mode 100644 index 0000000..8f812b7 Binary files /dev/null and b/Remontor/.vs/Remontor/FileContentIndex/6a10c53d-114a-42d6-9be8-dea699283021.vsidx differ diff --git a/Remontor/.vs/Remontor/FileContentIndex/9a61cb09-7211-4570-8adf-f890b657f684.vsidx b/Remontor/.vs/Remontor/FileContentIndex/9a61cb09-7211-4570-8adf-f890b657f684.vsidx deleted file mode 100644 index f2ec436..0000000 Binary files a/Remontor/.vs/Remontor/FileContentIndex/9a61cb09-7211-4570-8adf-f890b657f684.vsidx and /dev/null differ diff --git a/Remontor/.vs/Remontor/FileContentIndex/aa52844a-2ac0-4f7f-aafa-63730132a2b5.vsidx b/Remontor/.vs/Remontor/FileContentIndex/aa52844a-2ac0-4f7f-aafa-63730132a2b5.vsidx new file mode 100644 index 0000000..f191465 Binary files /dev/null and b/Remontor/.vs/Remontor/FileContentIndex/aa52844a-2ac0-4f7f-aafa-63730132a2b5.vsidx differ diff --git a/Remontor/.vs/Remontor/FileContentIndex/af207ab6-de44-447d-86a2-e2a02cfa55be.vsidx b/Remontor/.vs/Remontor/FileContentIndex/af207ab6-de44-447d-86a2-e2a02cfa55be.vsidx new file mode 100644 index 0000000..17b67d0 Binary files /dev/null and b/Remontor/.vs/Remontor/FileContentIndex/af207ab6-de44-447d-86a2-e2a02cfa55be.vsidx differ diff --git a/Remontor/.vs/Remontor/FileContentIndex/d0ce2c6b-7ad6-40c2-bd45-23e194891d3e.vsidx b/Remontor/.vs/Remontor/FileContentIndex/d0ce2c6b-7ad6-40c2-bd45-23e194891d3e.vsidx deleted file mode 100644 index 58385da..0000000 Binary files a/Remontor/.vs/Remontor/FileContentIndex/d0ce2c6b-7ad6-40c2-bd45-23e194891d3e.vsidx and /dev/null differ diff --git a/Remontor/.vs/Remontor/FileContentIndex/d850cd25-d807-47d1-b9b5-07931d365f47.vsidx b/Remontor/.vs/Remontor/FileContentIndex/d850cd25-d807-47d1-b9b5-07931d365f47.vsidx new file mode 100644 index 0000000..1f1bd18 Binary files /dev/null and b/Remontor/.vs/Remontor/FileContentIndex/d850cd25-d807-47d1-b9b5-07931d365f47.vsidx differ diff --git a/Remontor/.vs/Remontor/FileContentIndex/e679b517-87f7-412e-a799-c3ff5c600664.vsidx b/Remontor/.vs/Remontor/FileContentIndex/e679b517-87f7-412e-a799-c3ff5c600664.vsidx deleted file mode 100644 index 400574d..0000000 Binary files a/Remontor/.vs/Remontor/FileContentIndex/e679b517-87f7-412e-a799-c3ff5c600664.vsidx and /dev/null differ diff --git a/Remontor/.vs/Remontor/v17/.suo b/Remontor/.vs/Remontor/v17/.suo index 69ddcf4..754ecdd 100644 Binary files a/Remontor/.vs/Remontor/v17/.suo and b/Remontor/.vs/Remontor/v17/.suo differ diff --git a/Remontor/BarSessionControl.Designer.cs b/Remontor/BarSessionControl.Designer.cs index adaa612..8265bbe 100644 --- a/Remontor/BarSessionControl.Designer.cs +++ b/Remontor/BarSessionControl.Designer.cs @@ -37,6 +37,7 @@ this.ShowBar = new System.Windows.Forms.Button(); this.NewBtn = new System.Windows.Forms.Button(); this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); + this.button1 = new System.Windows.Forms.Button(); this.flowLayoutPanel1.SuspendLayout(); this.SuspendLayout(); // @@ -46,7 +47,7 @@ this.button2.FlatAppearance.BorderSize = 0; this.button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.button2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.button2.Location = new System.Drawing.Point(461, 0); + this.button2.Location = new System.Drawing.Point(431, 0); this.button2.Margin = new System.Windows.Forms.Padding(0); this.button2.Name = "button2"; this.button2.Size = new System.Drawing.Size(140, 21); @@ -60,7 +61,7 @@ this.button3.FlatAppearance.BorderSize = 0; this.button3.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.button3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.button3.Location = new System.Drawing.Point(352, 0); + this.button3.Location = new System.Drawing.Point(322, 0); this.button3.Margin = new System.Windows.Forms.Padding(0); this.button3.Name = "button3"; this.button3.Size = new System.Drawing.Size(109, 21); @@ -74,7 +75,7 @@ this.button4.FlatAppearance.BorderSize = 0; this.button4.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.button4.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.button4.Location = new System.Drawing.Point(243, 0); + this.button4.Location = new System.Drawing.Point(213, 0); this.button4.Margin = new System.Windows.Forms.Padding(0); this.button4.Name = "button4"; this.button4.Size = new System.Drawing.Size(109, 21); @@ -88,7 +89,7 @@ this.button7.FlatAppearance.BorderSize = 0; this.button7.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.button7.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.button7.Location = new System.Drawing.Point(134, 0); + this.button7.Location = new System.Drawing.Point(104, 0); this.button7.Margin = new System.Windows.Forms.Padding(0); this.button7.Name = "button7"; this.button7.Size = new System.Drawing.Size(109, 21); @@ -104,7 +105,7 @@ this.button6.FlatAppearance.BorderSize = 0; this.button6.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.button6.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.button6.Location = new System.Drawing.Point(631, 0); + this.button6.Location = new System.Drawing.Point(598, 0); this.button6.Name = "button6"; this.button6.Size = new System.Drawing.Size(21, 21); this.button6.TabIndex = 6; @@ -117,7 +118,7 @@ this.button5.FlatAppearance.BorderSize = 0; this.button5.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.button5.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); - this.button5.Location = new System.Drawing.Point(604, 0); + this.button5.Location = new System.Drawing.Point(571, 0); this.button5.Name = "button5"; this.button5.Size = new System.Drawing.Size(21, 21); this.button5.TabIndex = 5; @@ -141,7 +142,7 @@ this.NewBtn.BackgroundImage = global::Remontor.Properties.Resources.connect_min; this.NewBtn.FlatAppearance.BorderSize = 0; this.NewBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.NewBtn.Location = new System.Drawing.Point(103, 0); + this.NewBtn.Location = new System.Drawing.Point(73, 0); this.NewBtn.Margin = new System.Windows.Forms.Padding(10, 0, 10, 0); this.NewBtn.Name = "NewBtn"; this.NewBtn.Size = new System.Drawing.Size(21, 21); @@ -160,13 +161,27 @@ this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 0); this.flowLayoutPanel1.Margin = new System.Windows.Forms.Padding(0); this.flowLayoutPanel1.Name = "flowLayoutPanel1"; - this.flowLayoutPanel1.Size = new System.Drawing.Size(601, 21); + this.flowLayoutPanel1.Size = new System.Drawing.Size(571, 21); this.flowLayoutPanel1.TabIndex = 8; // + // button1 + // + this.button1.BackColor = System.Drawing.SystemColors.Control; + this.button1.BackgroundImage = global::Remontor.Properties.Resources.max_size; + this.button1.FlatAppearance.BorderSize = 0; + this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.button1.Location = new System.Drawing.Point(643, 0); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(21, 21); + this.button1.TabIndex = 9; + this.button1.UseVisualStyleBackColor = false; + // // BarSessionControl // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.button1); this.Controls.Add(this.flowLayoutPanel1); this.Controls.Add(this.button6); this.Controls.Add(this.button5); @@ -189,5 +204,6 @@ private System.Windows.Forms.Button button6; private System.Windows.Forms.Button button7; private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1; + private System.Windows.Forms.Button button1; } } diff --git a/Remontor/Comp/CompName.cs b/Remontor/Comp/CompName.cs new file mode 100644 index 0000000..81467b1 --- /dev/null +++ b/Remontor/Comp/CompName.cs @@ -0,0 +1,116 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Text; +using System.Threading.Tasks; + +namespace Reseter2 +{ + [Serializable] + internal class CompId : IComp + { + private int imgIndex=1; + private string Name { get; set; } + private string Description { get; set; } + private IPAddress Ip { get; set; } + private string netName; + + public CompId(string netname) + { + this.netName = netname; + //this.Name = netname; + + } + + + + + + public CompId(IPAddress ip) + { + this.Ip = ip; + } + public CompId(string name, string description) + { + this.Name = name; + this.Description = description; + } + + + + public CompId(string name, string description, IPAddress ip) + { + this.Name = name; + this.Description = description; + this.Ip = ip; + } + + + public string GetName() + { + return Name; + } + + public string GetNetNameStr() + { + if (netName == null) return GetIPStr(); + return netName; + } + public string GetNetName() + { + return netName; + } + public IPAddress GetIP() + { + return Ip; + } + + public string GetIPStr() + { + if (Ip != null) return Ip.ToString(); + return null; + } + public int GetImage() + { + return imgIndex; + } + + public void SetIP(IPAddress ip) + { + Ip = ip; + } + public void SetName(string name) + { + Name = name; + } + + public void SetNetName(string netname) + { + netName = netname; + } + + public void SetImage(int image) + { + imgIndex = image; + } + public void SetDescription(string description) + { + Description = description; + } + + public string GetResetName() + { + if (netName != null) return netName; + return GetIPStr(); + } + + public string GetDescription() + { + return Description; + } + + + + } +} diff --git a/Remontor/Comp/IComp.cs b/Remontor/Comp/IComp.cs new file mode 100644 index 0000000..7c4e4ac --- /dev/null +++ b/Remontor/Comp/IComp.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Text; +using System.Threading.Tasks; + +namespace Reseter2 +{ + internal interface IComp + { + string GetName(); + string GetNetName(); + string GetNetNameStr(); + string GetResetName(); + IPAddress GetIP(); + int GetImage(); + + void SetIP(IPAddress ip); + void SetName(string name); + void SetNetName(string netName); + void SetImage(int imdexImg); + void SetDescription(string description); + + string GetDescription(); + + } +} diff --git a/Remontor/Connector/Connect.cs b/Remontor/Connector/Connect.cs new file mode 100644 index 0000000..a8bf5f5 --- /dev/null +++ b/Remontor/Connector/Connect.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Remontor.Connector +{ + internal class Connect + { + } +} diff --git a/Remontor/Connector/SConnector.cs b/Remontor/Connector/SConnector.cs new file mode 100644 index 0000000..05379eb --- /dev/null +++ b/Remontor/Connector/SConnector.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Remontor.Connector +{ + internal class SConnector + { + } +} diff --git a/Remontor/Finder/Finder.Designer.cs b/Remontor/Finder/Finder.Designer.cs index be79a21..46a3505 100644 --- a/Remontor/Finder/Finder.Designer.cs +++ b/Remontor/Finder/Finder.Designer.cs @@ -30,22 +30,24 @@ { this.textBox1 = new System.Windows.Forms.TextBox(); this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); + this.label1 = new System.Windows.Forms.Label(); + this.ConnectBtn = new System.Windows.Forms.Button(); this.sessionItemControl1 = new Remontor.SessionItemControl(); this.sessionItemControl2 = new Remontor.SessionItemControl(); this.sessionItemControl3 = new Remontor.SessionItemControl(); this.sessionItemControl4 = new Remontor.SessionItemControl(); - this.sessionItemControl5 = new Remontor.SessionItemControl(); this.sessionItemControl6 = new Remontor.SessionItemControl(); - this.sessionItemControl7 = new Remontor.SessionItemControl(); - this.sessionItemControl8 = new Remontor.SessionItemControl(); this.sessionItemControl9 = new Remontor.SessionItemControl(); - this.label1 = new System.Windows.Forms.Label(); - this.ConnectBtn = new System.Windows.Forms.Button(); + this.sessionItemControl8 = new Remontor.SessionItemControl(); + this.sessionItemControl7 = new Remontor.SessionItemControl(); + this.sessionItemControl5 = new Remontor.SessionItemControl(); this.flowLayoutPanel1.SuspendLayout(); this.SuspendLayout(); // // textBox1 // + this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); this.textBox1.Location = new System.Drawing.Point(125, 12); this.textBox1.Name = "textBox1"; this.textBox1.Size = new System.Drawing.Size(328, 20); @@ -54,21 +56,42 @@ // // flowLayoutPanel1 // + this.flowLayoutPanel1.BackColor = System.Drawing.SystemColors.Window; this.flowLayoutPanel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; this.flowLayoutPanel1.Controls.Add(this.sessionItemControl1); this.flowLayoutPanel1.Controls.Add(this.sessionItemControl2); this.flowLayoutPanel1.Controls.Add(this.sessionItemControl3); this.flowLayoutPanel1.Controls.Add(this.sessionItemControl4); - this.flowLayoutPanel1.Controls.Add(this.sessionItemControl5); this.flowLayoutPanel1.Controls.Add(this.sessionItemControl6); - this.flowLayoutPanel1.Controls.Add(this.sessionItemControl7); - this.flowLayoutPanel1.Controls.Add(this.sessionItemControl8); this.flowLayoutPanel1.Controls.Add(this.sessionItemControl9); - this.flowLayoutPanel1.Location = new System.Drawing.Point(12, 47); + this.flowLayoutPanel1.Controls.Add(this.sessionItemControl8); + this.flowLayoutPanel1.Controls.Add(this.sessionItemControl7); + this.flowLayoutPanel1.Controls.Add(this.sessionItemControl5); + this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 52); this.flowLayoutPanel1.Name = "flowLayoutPanel1"; - this.flowLayoutPanel1.Size = new System.Drawing.Size(556, 391); + this.flowLayoutPanel1.Size = new System.Drawing.Size(592, 398); this.flowLayoutPanel1.TabIndex = 1; // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(31, 15); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(88, 13); + this.label1.TabIndex = 2; + this.label1.Text = "Введите запрос"; + // + // ConnectBtn + // + this.ConnectBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.ConnectBtn.Location = new System.Drawing.Point(459, 10); + this.ConnectBtn.Name = "ConnectBtn"; + this.ConnectBtn.Size = new System.Drawing.Size(91, 23); + this.ConnectBtn.TabIndex = 3; + this.ConnectBtn.Text = "Подключиться"; + this.ConnectBtn.UseVisualStyleBackColor = true; + // // sessionItemControl1 // this.sessionItemControl1.Location = new System.Drawing.Point(3, 3); @@ -97,64 +120,46 @@ this.sessionItemControl4.Size = new System.Drawing.Size(264, 55); this.sessionItemControl4.TabIndex = 3; // - // sessionItemControl5 - // - this.sessionItemControl5.Location = new System.Drawing.Point(3, 125); - this.sessionItemControl5.Name = "sessionItemControl5"; - this.sessionItemControl5.Size = new System.Drawing.Size(264, 55); - this.sessionItemControl5.TabIndex = 4; - // // sessionItemControl6 // - this.sessionItemControl6.Location = new System.Drawing.Point(273, 125); + this.sessionItemControl6.Location = new System.Drawing.Point(3, 125); this.sessionItemControl6.Name = "sessionItemControl6"; this.sessionItemControl6.Size = new System.Drawing.Size(264, 55); this.sessionItemControl6.TabIndex = 5; // - // sessionItemControl7 - // - this.sessionItemControl7.Location = new System.Drawing.Point(3, 186); - this.sessionItemControl7.Name = "sessionItemControl7"; - this.sessionItemControl7.Size = new System.Drawing.Size(264, 55); - this.sessionItemControl7.TabIndex = 6; - // - // sessionItemControl8 - // - this.sessionItemControl8.Location = new System.Drawing.Point(273, 186); - this.sessionItemControl8.Name = "sessionItemControl8"; - this.sessionItemControl8.Size = new System.Drawing.Size(264, 55); - this.sessionItemControl8.TabIndex = 7; - // // sessionItemControl9 // - this.sessionItemControl9.Location = new System.Drawing.Point(3, 247); + this.sessionItemControl9.Location = new System.Drawing.Point(273, 125); this.sessionItemControl9.Name = "sessionItemControl9"; this.sessionItemControl9.Size = new System.Drawing.Size(264, 55); this.sessionItemControl9.TabIndex = 8; // - // label1 + // sessionItemControl8 // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(31, 15); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(88, 13); - this.label1.TabIndex = 2; - this.label1.Text = "Введите запрос"; + this.sessionItemControl8.Location = new System.Drawing.Point(3, 186); + this.sessionItemControl8.Name = "sessionItemControl8"; + this.sessionItemControl8.Size = new System.Drawing.Size(264, 55); + this.sessionItemControl8.TabIndex = 7; // - // ConnectBtn + // sessionItemControl7 // - this.ConnectBtn.Location = new System.Drawing.Point(459, 10); - this.ConnectBtn.Name = "ConnectBtn"; - this.ConnectBtn.Size = new System.Drawing.Size(91, 23); - this.ConnectBtn.TabIndex = 3; - this.ConnectBtn.Text = "Подключиться"; - this.ConnectBtn.UseVisualStyleBackColor = true; + this.sessionItemControl7.Location = new System.Drawing.Point(273, 186); + this.sessionItemControl7.Name = "sessionItemControl7"; + this.sessionItemControl7.Size = new System.Drawing.Size(264, 55); + this.sessionItemControl7.TabIndex = 6; + // + // sessionItemControl5 + // + this.sessionItemControl5.Location = new System.Drawing.Point(3, 247); + this.sessionItemControl5.Name = "sessionItemControl5"; + this.sessionItemControl5.Size = new System.Drawing.Size(264, 55); + this.sessionItemControl5.TabIndex = 4; // // Finder // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(580, 450); + this.ClientSize = new System.Drawing.Size(592, 450); this.Controls.Add(this.ConnectBtn); this.Controls.Add(this.label1); this.Controls.Add(this.flowLayoutPanel1); diff --git a/Remontor/Properties/Resources.Designer.cs b/Remontor/Properties/Resources.Designer.cs index 9f5fda3..2630ac1 100644 --- a/Remontor/Properties/Resources.Designer.cs +++ b/Remontor/Properties/Resources.Designer.cs @@ -130,6 +130,26 @@ namespace Remontor.Properties { } } + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap max_size { + get { + object obj = ResourceManager.GetObject("max_size", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Person { + get { + object obj = ResourceManager.GetObject("Person", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Поиск локализованного ресурса типа System.Drawing.Bitmap. /// diff --git a/Remontor/Properties/Resources.resx b/Remontor/Properties/Resources.resx index 8a0a8db..130e665 100644 --- a/Remontor/Properties/Resources.resx +++ b/Remontor/Properties/Resources.resx @@ -118,6 +118,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\Resources\max_size.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\reconnect.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -136,6 +139,9 @@ ..\Resources\close.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\up_min1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\down_min11.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -145,7 +151,7 @@ ..\Resources\down_min1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\up_min1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Person.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/Remontor/Remontor.csproj b/Remontor/Remontor.csproj index 0954137..659e9ca 100644 --- a/Remontor/Remontor.csproj +++ b/Remontor/Remontor.csproj @@ -146,5 +146,11 @@ + + + + + + \ No newline at end of file diff --git a/Remontor/Resources/Person.png b/Remontor/Resources/Person.png new file mode 100644 index 0000000..d815c05 Binary files /dev/null and b/Remontor/Resources/Person.png differ diff --git a/Remontor/Resources/max_size.png b/Remontor/Resources/max_size.png new file mode 100644 index 0000000..6929a41 Binary files /dev/null and b/Remontor/Resources/max_size.png differ diff --git a/Remontor/SCCMsearch/AuthLogin.cs b/Remontor/SCCMsearch/AuthLogin.cs new file mode 100644 index 0000000..3374608 --- /dev/null +++ b/Remontor/SCCMsearch/AuthLogin.cs @@ -0,0 +1,46 @@ +using Remontor.Setting; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Remontor.SCCMsearch +{ + internal class AuthLogin : IAuthType + { + private string User = null; + private string Pass = null; + public AuthLogin() + { + + } + + public AuthLogin(string user, string pass) + { + User = user; + Pass = pass; + } + public string Name + { + get + { + if(User != null) return User; + return SGlobalSetting.settingSCCM.username; + } + } + public string Password + { + get + { + if(Pass != null) return Pass; + return SGlobalSetting.settingSCCM.password; + } + } + public string AuthString() + { + return "user=" + Name + ";password=" + Password + ";"; + } + } +} diff --git a/Remontor/SCCMsearch/AuthWin.cs b/Remontor/SCCMsearch/AuthWin.cs new file mode 100644 index 0000000..f25bba0 --- /dev/null +++ b/Remontor/SCCMsearch/AuthWin.cs @@ -0,0 +1,39 @@ +using Remontor.Setting; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Principal; +using System.Text; +using System.Threading.Tasks; + +namespace Remontor.SCCMsearch +{ + internal class AuthWin : IAuthType + { + private static System.Security.Principal.WindowsIdentity user = WindowsIdentity.GetCurrent(); + public static string uid; + public AuthWin() + { + uid = user.User.AccountDomainSid.Value; + } + public string Name + { + get + { + return ""; + } + } + public string Password + { + get + { + return uid; + } + } + public string AuthString() + { + Console.WriteLine(Password); + return "Integrated Security=true;"; + } + } +} diff --git a/Remontor/SCCMsearch/IAuthType.cs b/Remontor/SCCMsearch/IAuthType.cs new file mode 100644 index 0000000..84d7281 --- /dev/null +++ b/Remontor/SCCMsearch/IAuthType.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Remontor.SCCMsearch +{ + internal interface IAuthType + { + public string Name { get; } + public string Password { get; } + public string AuthString(); + } +} diff --git a/Remontor/Seacher/ISeaherMetod.cs b/Remontor/Seacher/ISeaherMetod.cs new file mode 100644 index 0000000..9fbd75b --- /dev/null +++ b/Remontor/Seacher/ISeaherMetod.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static Remontor.Seacher.SeahcLocal; + +namespace Remontor.Seacher +{ + internal interface ISeaherMetod + { + public void Change(ResultUpdate sender, string seach); + public IComp Result(int index); + public string ResultString(int index); + + } +} diff --git a/Remontor/Seacher/SSeaher.cs b/Remontor/Seacher/SSeaher.cs new file mode 100644 index 0000000..cf65323 --- /dev/null +++ b/Remontor/Seacher/SSeaher.cs @@ -0,0 +1,25 @@ +using Remontor.Setting; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Remontor.Seacher +{ + internal static class SSeaher + { + public static ISeaherMetod seaherMetod; + public static void LoadSetting() + { + if(SGlobalSetting.settingSCCM.on) + { + seaherMetod = new SeachSCCM(); + } + else + { + seaherMetod = new SeahcLocal(); + } + } + } +} diff --git a/Remontor/Seacher/SeachSCCM.cs b/Remontor/Seacher/SeachSCCM.cs new file mode 100644 index 0000000..c8d95f0 --- /dev/null +++ b/Remontor/Seacher/SeachSCCM.cs @@ -0,0 +1,263 @@ +using System.Data.SqlClient; +using Remontor.SCCMsearch; +using Remontor.Setting; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using System.Xml.Linq; +using static Remontor.Seacher.SeahcLocal; +using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel; +using System.Threading; + +namespace Remontor.Seacher +{ + internal class SeachSCCM : ISeaherMetod + { + private SqlConnection Connection; + private IAuthType AuthType; + private List comps = new List(); + private ResultUpdate Update; + private bool enable; + private string error; + private Mode mode; + private Timer TimerDisconnect; + + private enum Mode{ + PCname, + Login, + Username + } + + public SeachSCCM() + { + if (SGlobalSetting.settingSCCM.windowsAuth) + { + AuthType = new AuthWin(); + } + else + { + AuthType = new AuthLogin(); + } + + } + + public SeachSCCM(bool AuthMetod, string User = "", string Pass = "") + { + if (AuthMetod) + { + AuthType = new AuthWin(); + } + else + { + AuthType = new AuthLogin(User, Pass); + } + + } + public void Change(ResultUpdate sender, string seach) + { + Activate(); + Update = sender; + if (Connection != null && Connection.State == ConnectionState.Open) + { + List result; + if (seach.Length > 2) + { + result = ResultSeach(seach); + int itemHeight = 14; + if(enable) itemHeight = 40; + Update(result, enable, itemHeight); + } + else + { + result = new List(); + result.Add("Введите запрос, к бд подключенно"); + Update(result, false, 14); + } + } + else + { + List result = new List(); + result.Add(error); + Update(result, false,14); + } + + } + + private string QueryBilder(string query) + { + string result; + Regex regexCyrillic = new(@"\p{IsCyrillic}+", RegexOptions.IgnoreCase); + Regex regexNumrable = new(@"\d+", RegexOptions.IgnoreCase); + MatchCollection jjj = regexNumrable.Matches(query); + if (regexCyrillic.Matches(query).Count > 0) + { + result = "SELECT TOP (15) " + + "dbo._RES_COLL_SMS00001.Name," + + " dbo._RES_COLL_SMS00001.UserName," + + " dbo.v_R_User.Full_User_Name0," + + " dbo._RES_COLL_SMS00001.LastActiveTime" + + " FROM dbo.v_R_User " + + "JOIN dbo._RES_COLL_SMS00001 ON dbo.v_R_User.User_Name0=dbo._RES_COLL_SMS00001.UserName" + + " WHERE LOWER(dbo.v_R_User.Full_User_Name0) LIKE LOWER(N'%" + query + "%')"; + mode = Mode.Username; + } + else if(regexNumrable.Matches(query).Count > 0) + { + result = "SELECT TOP (15) dbo._RES_COLL_SMS00001.Name, dbo._RES_COLL_SMS00001.UserName, dbo.v_R_User.Full_User_Name0, dbo._RES_COLL_SMS00001.LastActiveTime FROM dbo._RES_COLL_SMS00001 LEFT JOIN dbo.v_R_User ON dbo._RES_COLL_SMS00001.UserName = dbo.v_R_User.User_Name0 WHERE LOWER(dbo._RES_COLL_SMS00001.Name) LIKE LOWER(N'%" + query + "%')"; + mode = Mode.PCname; + } + else + { + result = "SELECT TOP (15) dbo._RES_COLL_SMS00001.Name, dbo._RES_COLL_SMS00001.UserName, dbo.v_R_User.Full_User_Name0, dbo._RES_COLL_SMS00001.LastActiveTime FROM dbo._RES_COLL_SMS00001 LEFT JOIN dbo.v_R_User ON dbo._RES_COLL_SMS00001.UserName = dbo.v_R_User.User_Name0 WHERE LOWER(dbo._RES_COLL_SMS00001.Name) LIKE LOWER(N'%" + query + "%') OR LOWER(dbo._RES_COLL_SMS00001.UserName) LIKE LOWER(N'%" + query + "%')" + + ""; ; + mode = Mode.Login; + } + return result; + } + public List ResultSeach(string seach) + { + int y = 0; + comps.Clear(); + List result = new List(); + if (Connection.State == ConnectionState.Open && Connection != null) + { + try + { + string sql = QueryBilder(seach); + SqlCommand sqlCom = new SqlCommand(sql, Connection); + // Connection.Open(); + sqlCom.ExecuteNonQuery(); + SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlCom); + DataTable dt = new DataTable(); + dataAdapter.Fill(dt); + + DataRow[] myData = dt.Select(); + for (int i = 0; i < myData.Length; i++) + { + IComp comp = new CompId(myData[i].ItemArray[0].ToString()); + comp.SetName(myData[i].ItemArray[1].ToString()); + comp.SetDescription(myData[i].ItemArray[2].ToString()); + comps.Add(comp); + result.Add("ПК:"+ comp.GetNetNameStr() + " Логин:" + comp.GetName() + "\r\n" + comp.GetDescription() + "\r\nLastLogin:" + myData[i].ItemArray[3].ToString()); + ++y; + } + enable = true; + } + catch + { + y = 1; + enable = false; + result.Clear(); + result.Add("Ошибка выполнения запроса"); + } + + } + if (y == 0) + { + enable = false; + result.Add("Ничего не найдено"); + } + TimerDisconnect.Change(90000, 90000); + return result; + } + public void Activate() + { + if (Connection == null) + { + + string stringConnect = "server=" + SGlobalSetting.settingSCCM.server + ";database=" + SGlobalSetting.settingSCCM.dataBase + ";" + AuthType.AuthString(); + try + { + Connection = new SqlConnection(stringConnect); + Connection.Open(); + Console.WriteLine("Подключились"); + error = "Подключенно"; + TimerCallback TimerDelegate = new TimerCallback(Deactivate); + TimerDisconnect = new Timer(TimerDelegate, null, 90000,90000); + } + catch + { + Console.WriteLine("Повторное бы подключение"); + error = "Не удалось подключиться к базе"; + } + } + + } + + public void Deactivate(object obj) + { + Connection.Close(); + Connection = null; + TimerDisconnect.Dispose(); + List result = new List(); + result.Add("Введите запрос"); + Update(result, false, 14); + } + + public IComp Result(int index) + { + return comps[index]; + } + public string ResultString(int index) + { + switch (mode) + { + case Mode.Login: + return comps[index].GetName(); + case Mode.Username: + return comps[index].GetDescription(); + case Mode.PCname: + return comps[index].GetNetNameStr(); + } + return ""; + } + public string CheckConnect(string server, string basa) + { + if (Connection == null) + { + string stringConnect = "server=" + server + ";database=" + basa + ";" + AuthType.AuthString(); + try + { + Connection = new SqlConnection(stringConnect); + Connection.Open(); + error = "Подключенно"; + } + catch + { + error = "Не удалось подключиться к серверу"; + } + } + if (Connection.State == ConnectionState.Open && Connection != null) + { + try + { + string sql = "SELECT TOP (1) * FROM dbo._RES_COLL_SMS00001"; + SqlCommand sqlCom = new SqlCommand(sql, Connection); + sqlCom.ExecuteNonQuery(); + SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlCom); + DataTable dt = new DataTable(); + dataAdapter.Fill(dt); + + DataRow[] myData = dt.Select(); + if(myData.Length > 0) + { + error = "Соединие успешно установленно"; + } + + } + catch + { + error = "Ошибка выполнения запроса \nКакая то не правильная базаю"; + } + + } + return error; + } + + } +} diff --git a/Remontor/Seacher/SeahcLocal.cs b/Remontor/Seacher/SeahcLocal.cs new file mode 100644 index 0000000..574169c --- /dev/null +++ b/Remontor/Seacher/SeahcLocal.cs @@ -0,0 +1,86 @@ +using Remontor.History; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Remontor.Seacher +{ + internal class SeahcLocal : ISeaherMetod + { + internal delegate void ResultUpdate(List Item, bool eneble, int itemHeight); + private ResultUpdate Update; + private List comps = new List(); + private bool enable; + public void Change(ResultUpdate sender, string seach) + { + Update = sender; + if (seach.Length > 2) + { + + Update(ResultSeach(seach), enable,14); + } + else + { + List result = new List(); + result.Add("Введите запрос"); + Update(result,false, 14); + } + + } + public List ResultSeach(string seach) + { + int i = 0; + comps.Clear(); + List result = new List(); + foreach(HistoryItem item in HistoryList.Hitem) + { + if (item.NameNode().ToUpper().Contains(seach.ToUpper())) + { + int y = 0; + foreach(string itemOk in result) + { + if (itemOk.ToUpper() == item.NameNode().ToUpper()) ++y; + } + if(y == 0) + { + result.Add(item.NameNode()); + comps.Add(item.GetComp()); + ++i; + enable = true; + if (i>6) return result; + } + + } + + } + if (i == 0) + { + enable = false; + result.Add("Ничего не найдено"); + } + return result; + } + public IComp Result(int index) + { + return comps[index]; + } + + public string ResultString(int index) + { + string buf; + if (comps[index].GetName() == null) + { + buf = comps[index].GetNetNameStr(); + } + else + { + buf = comps[index].GetName(); + if (comps[index].GetNetNameStr() != null) buf += "(" + comps[index].GetNetNameStr() + ")"; + + } + return buf; + } + } +} diff --git a/Remontor/SessionItemControl.Designer.cs b/Remontor/SessionItemControl.Designer.cs index 315e9be..69f9a0f 100644 --- a/Remontor/SessionItemControl.Designer.cs +++ b/Remontor/SessionItemControl.Designer.cs @@ -64,7 +64,7 @@ // // pictureBox1 // - this.pictureBox1.Image = global::Remontor.Properties.Resources.apple_touch_icon; + this.pictureBox1.Image = global::Remontor.Properties.Resources.Person; this.pictureBox1.Location = new System.Drawing.Point(3, 3); this.pictureBox1.Name = "pictureBox1"; this.pictureBox1.Size = new System.Drawing.Size(48, 48); diff --git a/Remontor/Setting/SGlobalSetting.cs b/Remontor/Setting/SGlobalSetting.cs new file mode 100644 index 0000000..abe7896 --- /dev/null +++ b/Remontor/Setting/SGlobalSetting.cs @@ -0,0 +1,276 @@ +using Remontor.History; +using Remontor.Seacher; +using Remontor.Words; +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Linq; +using System.Runtime.Serialization.Formatters.Binary; +using System.Security.Policy; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using static System.Net.WebRequestMethods; + +namespace Remontor.Setting +{ + [Serializable] + internal static class SGlobalSetting + { + + public static SettingWords settingWords = new SettingWords(); + public static SettingExpand settingExpand = new SettingExpand(); + public static SettingSCCM settingSCCM = new SettingSCCM(); + public static SettingReboot settingReboot = new SettingReboot(); + + //public static void LoadSetting() + // { + + + // } + + + + public static void LoadSetting() + { + SSetting setting; + object output = Load("res.dat"); + if (!(output is SSetting)) + { + setting = new SSetting(); + } + else + { + setting = (SSetting)output; + } + + if (setting.settingWords != null) settingWords = setting.settingWords; + if (setting.settingExpand != null) settingExpand = setting.settingExpand; + if (setting.settingSCCM != null) settingSCCM = setting.settingSCCM; + if (setting.settingReboot != null) settingReboot = setting.settingReboot; + if (setting.historyItems != null) HistoryList.Hitem = setting.historyItems; + SSeaher.LoadSetting(); + // return output; + } + + public static bool SaveSettig() + { + SSetting sSetting = new SSetting(); + sSetting.settingWords = settingWords; + sSetting.historyItems = HistoryList.Hitem; + sSetting.settingExpand = settingExpand; + sSetting.settingSCCM = settingSCCM; + sSetting.settingReboot = settingReboot; + if (Save("res.dat", sSetting)) + { + return true; + } + else + { + return false; + } + + } + + public static WordsCategory LoadWords() + { + WordsCategory output = (WordsCategory)Load(settingWords.PathBase); + if (output == null) + { + output = new WordsCategory("Main"); + } + return output; + } + private static object Load(string path) + { + object obj = null; + GZipStream compressStream = null; + BinaryFormatter binaryFormatter = new BinaryFormatter(); + FileStream file = null; + try + { + file = new FileStream(path, FileMode.Open); + compressStream = new GZipStream(file, CompressionMode.Decompress); + obj = binaryFormatter.Deserialize(compressStream); + compressStream.Close(); + compressStream.Dispose(); + file.Close(); + file.Dispose(); + return obj; + } + catch + { + if (compressStream != null) + { + compressStream.Close(); + compressStream.Dispose(); + } + if (file != null) + { + file.Close(); + file.Dispose(); + } + return null; + } + + } + + private static object Clone(object input) + { + object output; + BinaryFormatter binaryFormatter = new BinaryFormatter(); + MemoryStream Memory = new MemoryStream(); + binaryFormatter.Serialize(Memory, input); + Memory.Position = 0; + if (input is WordsCategory) settingWords.HashSumm(Memory); + Memory.Position = 0; + output = binaryFormatter.Deserialize(Memory); + Memory.Dispose(); + Memory.Close(); + + return output; + } + + public static WordsCategory Clone(WordsCategory input) + { + return (WordsCategory)Clone((object)input); + } + + public static IComp Clone(IComp input) + { + return (IComp)Clone((object)input); + } + + public static bool SaveClose(WordsCategory output, DialogResult ok = DialogResult.No) + { + GZipStream compressStream = null; + BinaryFormatter binaryFormatter = new BinaryFormatter(); + MemoryStream Memory = new MemoryStream(); + binaryFormatter.Serialize(Memory, output); + FileStream file = null; + Memory.Position = 0; + if (settingWords.HashCheck(Memory) ) + { + if (ok == DialogResult.OK) + { + Memory.Close(); + Memory.Dispose(); + + bool save = Save(output); + if (save) { + WordsList.MainCategory = output; + return true; + } + else + { + return false; + } + } + else + { + DialogResult result = MessageBox.Show("Сохранить внесенные изменения?", "Сохранение измененний", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning); + switch (result) + { + case DialogResult.Yes: + + try + { + file = new FileStream(settingWords.PathBase, FileMode.Create); + compressStream = new GZipStream(file, CompressionMode.Compress); + Memory.Position = 0; + Memory.CopyTo(compressStream); + Memory.Close(); + Memory.Dispose(); + compressStream.Close(); + compressStream.Dispose(); + file.Close(); + file.Dispose(); + } + catch + { + Memory.Close(); + Memory.Dispose(); + compressStream.Close(); + compressStream.Dispose(); + file.Close(); + file.Dispose(); + + + bool save = SaveCheck(settingWords.PathBase, output); ; + if (save) + { + WordsList.MainCategory = output; + return true; + } + else + { + return false; + } + } + + WordsList.MainCategory = output; + return true; + case DialogResult.No: + return true; + case DialogResult.Cancel: + return false; + } + } + + } + return true; + } + public static bool Save(WordsCategory output) + { + return Save(settingWords.PathBase, output); + } + public static bool Save(string path, object output) + { + GZipStream compressStream = null; + BinaryFormatter binaryFormatter = new BinaryFormatter(); + FileStream file = null; + try + { + file = new FileStream(path, FileMode.Create); + compressStream = new GZipStream(file, CompressionMode.Compress); + binaryFormatter.Serialize(compressStream, output); + compressStream.Close(); + compressStream.Dispose(); + file.Close(); + file.Dispose(); + return true; + } + catch + { + if (compressStream != null) + { + compressStream.Close(); + compressStream.Dispose(); + } + if (file != null) + { + file.Close(); + file.Dispose(); + } + + return SaveCheck(path, output); + + } + } + public static bool SaveCheck(string path, object output) + { + DialogResult result1 = MessageBox.Show("Файл занят другой программой.\nПовторить еще раз?", "Ошибка сохранения", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Error); + switch (result1) + { + case (DialogResult.Retry): + return Save(path, output); + case (DialogResult.Abort): + return true; + } + return false; + } + + + } +} diff --git a/Remontor/Setting/SSetting.cs b/Remontor/Setting/SSetting.cs new file mode 100644 index 0000000..f48f587 --- /dev/null +++ b/Remontor/Setting/SSetting.cs @@ -0,0 +1,19 @@ +using Remontor.History; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Remontor.Setting +{ + [Serializable] + internal struct SSetting + { + public SettingWords settingWords; + public List historyItems; + public SettingExpand settingExpand; + public SettingSCCM settingSCCM; + public SettingReboot settingReboot; + } +} diff --git a/Remontor/Setting/SettingExpand.cs b/Remontor/Setting/SettingExpand.cs new file mode 100644 index 0000000..b6e6a4e --- /dev/null +++ b/Remontor/Setting/SettingExpand.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Remontor.Setting +{ + [Serializable] + internal class SettingExpand + { + private List nodePathes; + public SettingExpand() + { + nodePathes = new List(); + } + + public void ExpendAll(TreeNodeCollection nodes) + { + + foreach (string path in nodePathes) + { + string[] folder = path.Split('/'); + Expand(nodes, folder, 0); + } + nodePathes.Clear(); + } + + private void Expand(TreeNodeCollection nodes, string[] folder, int number) + { + + int i = nodes.IndexOfKey(folder[number]); + if (i == -1) return; + if (folder.Count() == number+1) + { + nodes[i].Expand(); + } + else + { + Expand(nodes[i].Nodes, folder, ++number); + } + + } + + public void SaveExpand(TreeNodeCollection nodes, string path = "") + { + + foreach(TreeNode node in nodes) + { + if(node.Nodes.Count > 0) + { + if (node.IsExpanded) + { + nodePathes.Add(path + node.Name); + } + SaveExpand(node.Nodes, path + node.Name + "/" ); + } + } + } + + } +} diff --git a/Remontor/Setting/SettingReboot.cs b/Remontor/Setting/SettingReboot.cs new file mode 100644 index 0000000..5982552 --- /dev/null +++ b/Remontor/Setting/SettingReboot.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Remontor.Setting +{ + [Serializable] + internal class SettingReboot + { + public int checkConnect; + public int timeOutReboot; + public int timeCheckBeforReboot; + public int sizeHistoryItem; + public SettingReboot() + { + this.checkConnect = 5; + this.timeOutReboot = 5; + this.timeCheckBeforReboot = 50; + this.sizeHistoryItem = 200; + } + } +} diff --git a/Remontor/Setting/SettingRebootControl.Designer.cs b/Remontor/Setting/SettingRebootControl.Designer.cs new file mode 100644 index 0000000..58c35f7 --- /dev/null +++ b/Remontor/Setting/SettingRebootControl.Designer.cs @@ -0,0 +1,185 @@ +namespace Remontor.Setting +{ + partial class SettingRebootControl + { + /// + /// Обязательная переменная конструктора. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Освободить все используемые ресурсы. + /// + /// истинно, если управляемый ресурс должен быть удален; иначе ложно. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Код, автоматически созданный конструктором компонентов + + /// + /// Требуемый метод для поддержки конструктора — не изменяйте + /// содержимое этого метода с помощью редактора кода. + /// + private void InitializeComponent() + { + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.label15 = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.label12 = new System.Windows.Forms.Label(); + this.nb_checkConnect = new System.Windows.Forms.NumericUpDown(); + this.nb_timeOutReboot = new System.Windows.Forms.NumericUpDown(); + this.nb_timeCheckBeforReboot = new System.Windows.Forms.NumericUpDown(); + this.nb_sizeHistoryItem = new System.Windows.Forms.NumericUpDown(); + this.groupBox3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nb_checkConnect)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nb_timeOutReboot)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nb_timeCheckBeforReboot)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nb_sizeHistoryItem)).BeginInit(); + this.SuspendLayout(); + // + // groupBox3 + // + this.groupBox3.Controls.Add(this.nb_sizeHistoryItem); + this.groupBox3.Controls.Add(this.nb_timeCheckBeforReboot); + this.groupBox3.Controls.Add(this.nb_timeOutReboot); + this.groupBox3.Controls.Add(this.nb_checkConnect); + this.groupBox3.Controls.Add(this.label15); + this.groupBox3.Controls.Add(this.label14); + this.groupBox3.Controls.Add(this.label13); + this.groupBox3.Controls.Add(this.label12); + this.groupBox3.Location = new System.Drawing.Point(3, 3); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Size = new System.Drawing.Size(386, 124); + this.groupBox3.TabIndex = 4; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "Параметры перезагрузки"; + // + // label15 + // + this.label15.AutoSize = true; + this.label15.Location = new System.Drawing.Point(7, 99); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(130, 13); + this.label15.TabIndex = 11; + this.label15.Text = "Кол-во записей истории"; + // + // label14 + // + this.label14.AutoSize = true; + this.label14.Location = new System.Drawing.Point(7, 73); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(196, 13); + this.label14.TabIndex = 9; + this.label14.Text = "Время контроля после перезагрузки"; + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Location = new System.Drawing.Point(7, 47); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(166, 13); + this.label13.TabIndex = 7; + this.label13.Text = "Время ожидание перезагрузки"; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Location = new System.Drawing.Point(7, 21); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(171, 13); + this.label12.TabIndex = 5; + this.label12.Text = "Кол-во попыток проверки связи"; + // + // nb_checkConnect + // + this.nb_checkConnect.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.nb_checkConnect.Location = new System.Drawing.Point(184, 18); + this.nb_checkConnect.Maximum = new decimal(new int[] { + 1000000, + 0, + 0, + 0}); + this.nb_checkConnect.Name = "nb_checkConnect"; + this.nb_checkConnect.Size = new System.Drawing.Size(182, 20); + this.nb_checkConnect.TabIndex = 13; + // + // nb_timeOutReboot + // + this.nb_timeOutReboot.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.nb_timeOutReboot.Location = new System.Drawing.Point(184, 44); + this.nb_timeOutReboot.Maximum = new decimal(new int[] { + 100000, + 0, + 0, + 0}); + this.nb_timeOutReboot.Name = "nb_timeOutReboot"; + this.nb_timeOutReboot.Size = new System.Drawing.Size(182, 20); + this.nb_timeOutReboot.TabIndex = 14; + // + // nb_timeCheckBeforReboot + // + this.nb_timeCheckBeforReboot.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.nb_timeCheckBeforReboot.Location = new System.Drawing.Point(208, 70); + this.nb_timeCheckBeforReboot.Maximum = new decimal(new int[] { + 100000, + 0, + 0, + 0}); + this.nb_timeCheckBeforReboot.Name = "nb_timeCheckBeforReboot"; + this.nb_timeCheckBeforReboot.Size = new System.Drawing.Size(158, 20); + this.nb_timeCheckBeforReboot.TabIndex = 15; + // + // nb_sizeHistoryItem + // + this.nb_sizeHistoryItem.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.nb_sizeHistoryItem.Location = new System.Drawing.Point(184, 96); + this.nb_sizeHistoryItem.Maximum = new decimal(new int[] { + 10000, + 0, + 0, + 0}); + this.nb_sizeHistoryItem.Name = "nb_sizeHistoryItem"; + this.nb_sizeHistoryItem.Size = new System.Drawing.Size(182, 20); + this.nb_sizeHistoryItem.TabIndex = 16; + // + // SettingRebootControl + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.groupBox3); + this.Name = "SettingRebootControl"; + this.Size = new System.Drawing.Size(391, 130); + this.groupBox3.ResumeLayout(false); + this.groupBox3.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nb_checkConnect)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nb_timeOutReboot)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nb_timeCheckBeforReboot)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nb_sizeHistoryItem)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.GroupBox groupBox3; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.NumericUpDown nb_timeOutReboot; + private System.Windows.Forms.NumericUpDown nb_checkConnect; + private System.Windows.Forms.NumericUpDown nb_sizeHistoryItem; + private System.Windows.Forms.NumericUpDown nb_timeCheckBeforReboot; + } +} diff --git a/Remontor/Setting/SettingRebootControl.cs b/Remontor/Setting/SettingRebootControl.cs new file mode 100644 index 0000000..80d5df3 --- /dev/null +++ b/Remontor/Setting/SettingRebootControl.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Runtime; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Remontor.Setting +{ + public partial class SettingRebootControl : UserControl + { + public SettingRebootControl() + { + InitializeComponent(); + UpdateSetting(); + + } + public void UpdateSetting() + { + if (SGlobalSetting.settingReboot != null) + { + nb_checkConnect.Value = SGlobalSetting.settingReboot.checkConnect; + nb_timeOutReboot.Value = SGlobalSetting.settingReboot.timeOutReboot; + nb_timeCheckBeforReboot.Value = SGlobalSetting.settingReboot.timeCheckBeforReboot; + nb_sizeHistoryItem.Value = SGlobalSetting.settingReboot.sizeHistoryItem; + } + } + + + public void Save() + { + SGlobalSetting.settingReboot.checkConnect = (int)nb_checkConnect.Value; + SGlobalSetting.settingReboot.timeOutReboot = (int)nb_timeOutReboot.Value; + SGlobalSetting.settingReboot.timeCheckBeforReboot = (int)nb_timeCheckBeforReboot.Value; + SGlobalSetting.settingReboot.sizeHistoryItem = (int)nb_sizeHistoryItem.Value; + + } + + public bool edited() + { + return (SGlobalSetting.settingReboot.checkConnect != (int)nb_checkConnect.Value || + SGlobalSetting.settingReboot.timeOutReboot != (int)nb_timeOutReboot.Value || + SGlobalSetting.settingReboot.timeCheckBeforReboot != (int)nb_timeCheckBeforReboot.Value || + SGlobalSetting.settingReboot.sizeHistoryItem != (int)nb_sizeHistoryItem.Value); + + } + + + } +} diff --git a/Remontor/Setting/SettingRebootControl.resx b/Remontor/Setting/SettingRebootControl.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Remontor/Setting/SettingRebootControl.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Remontor/Setting/SettingSCCM.cs b/Remontor/Setting/SettingSCCM.cs new file mode 100644 index 0000000..0d845a7 --- /dev/null +++ b/Remontor/Setting/SettingSCCM.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Remontor.Setting +{ + [Serializable] + internal class SettingSCCM + { + public string server; + public string dataBase; + public string username; + public string password; + public bool on; + public bool windowsAuth; + + public SettingSCCM() + { + server = string.Empty; + dataBase = string.Empty; + username = string.Empty; + password = string.Empty; + on = false; + windowsAuth = false; + } + + } +} diff --git a/Remontor/Setting/SettingSCCMControl.Designer.cs b/Remontor/Setting/SettingSCCMControl.Designer.cs new file mode 100644 index 0000000..786e97a --- /dev/null +++ b/Remontor/Setting/SettingSCCMControl.Designer.cs @@ -0,0 +1,191 @@ +namespace Remontor.Setting +{ + partial class SettingSCCMControl + { + /// + /// Обязательная переменная конструктора. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Освободить все используемые ресурсы. + /// + /// истинно, если управляемый ресурс должен быть удален; иначе ложно. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Код, автоматически созданный конструктором компонентов + + /// + /// Требуемый метод для поддержки конструктора — не изменяйте + /// содержимое этого метода с помощью редактора кода. + /// + private void InitializeComponent() + { + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.bt_checkConnect = new System.Windows.Forms.Button(); + this.label10 = new System.Windows.Forms.Label(); + this.ib_password = new System.Windows.Forms.TextBox(); + this.label11 = new System.Windows.Forms.Label(); + this.ib_username = new System.Windows.Forms.TextBox(); + this.cb_windowsAuth = new System.Windows.Forms.CheckBox(); + this.label9 = new System.Windows.Forms.Label(); + this.ib_dataBase = new System.Windows.Forms.TextBox(); + this.label8 = new System.Windows.Forms.Label(); + this.ib_server = new System.Windows.Forms.TextBox(); + this.cb_on = new System.Windows.Forms.CheckBox(); + this.groupBox2.SuspendLayout(); + this.SuspendLayout(); + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.bt_checkConnect); + this.groupBox2.Controls.Add(this.label10); + this.groupBox2.Controls.Add(this.ib_password); + this.groupBox2.Controls.Add(this.label11); + this.groupBox2.Controls.Add(this.ib_username); + this.groupBox2.Controls.Add(this.cb_windowsAuth); + this.groupBox2.Controls.Add(this.label9); + this.groupBox2.Controls.Add(this.ib_dataBase); + this.groupBox2.Controls.Add(this.label8); + this.groupBox2.Controls.Add(this.ib_server); + this.groupBox2.Controls.Add(this.cb_on); + this.groupBox2.Location = new System.Drawing.Point(3, 3); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(386, 173); + this.groupBox2.TabIndex = 3; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Параметры поиска"; + // + // bt_checkConnect + // + this.bt_checkConnect.Location = new System.Drawing.Point(263, 143); + this.bt_checkConnect.Name = "bt_checkConnect"; + this.bt_checkConnect.Size = new System.Drawing.Size(112, 23); + this.bt_checkConnect.TabIndex = 11; + this.bt_checkConnect.Text = "Проверить связь"; + this.bt_checkConnect.UseVisualStyleBackColor = true; + this.bt_checkConnect.Click += new System.EventHandler(this.bt_checkConnect_Click); + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(193, 102); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(45, 13); + this.label10.TabIndex = 10; + this.label10.Text = "Пароль"; + // + // ib_password + // + this.ib_password.Location = new System.Drawing.Point(193, 117); + this.ib_password.Name = "ib_password"; + this.ib_password.PasswordChar = '•'; + this.ib_password.Size = new System.Drawing.Size(182, 20); + this.ib_password.TabIndex = 9; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(6, 102); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(38, 13); + this.label11.TabIndex = 8; + this.label11.Text = "Логин"; + // + // ib_username + // + this.ib_username.Location = new System.Drawing.Point(6, 117); + this.ib_username.Name = "ib_username"; + this.ib_username.Size = new System.Drawing.Size(181, 20); + this.ib_username.TabIndex = 7; + // + // cb_windowsAuth + // + this.cb_windowsAuth.AutoSize = true; + this.cb_windowsAuth.Location = new System.Drawing.Point(10, 82); + this.cb_windowsAuth.Name = "cb_windowsAuth"; + this.cb_windowsAuth.Size = new System.Drawing.Size(157, 17); + this.cb_windowsAuth.TabIndex = 6; + this.cb_windowsAuth.Text = "Аутентификация Windows"; + this.cb_windowsAuth.UseVisualStyleBackColor = true; + this.cb_windowsAuth.CheckedChanged += new System.EventHandler(this.cb_windowsAuth_CheckedChanged); + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(193, 40); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(72, 13); + this.label9.TabIndex = 5; + this.label9.Text = "База данных"; + // + // ib_dataBase + // + this.ib_dataBase.Location = new System.Drawing.Point(193, 55); + this.ib_dataBase.Name = "ib_dataBase"; + this.ib_dataBase.Size = new System.Drawing.Size(182, 20); + this.ib_dataBase.TabIndex = 4; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(6, 40); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(113, 13); + this.label8.TabIndex = 3; + this.label8.Text = "Сервер базы данных"; + // + // ib_server + // + this.ib_server.Location = new System.Drawing.Point(6, 55); + this.ib_server.Name = "ib_server"; + this.ib_server.Size = new System.Drawing.Size(181, 20); + this.ib_server.TabIndex = 1; + // + // cb_on + // + this.cb_on.AutoSize = true; + this.cb_on.Location = new System.Drawing.Point(10, 20); + this.cb_on.Name = "cb_on"; + this.cb_on.Size = new System.Drawing.Size(215, 17); + this.cb_on.TabIndex = 0; + this.cb_on.Text = "Связь с SCCM (помощь в поиске ПК)"; + this.cb_on.UseVisualStyleBackColor = true; + this.cb_on.CheckedChanged += new System.EventHandler(this.cb_on_CheckedChanged); + // + // SettingSCCMControl + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.groupBox2); + this.Name = "SettingSCCMControl"; + this.Size = new System.Drawing.Size(391, 178); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.Button bt_checkConnect; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.TextBox ib_password; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.TextBox ib_username; + private System.Windows.Forms.CheckBox cb_windowsAuth; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.TextBox ib_dataBase; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.TextBox ib_server; + private System.Windows.Forms.CheckBox cb_on; + } +} diff --git a/Remontor/Setting/SettingSCCMControl.cs b/Remontor/Setting/SettingSCCMControl.cs new file mode 100644 index 0000000..1560d16 --- /dev/null +++ b/Remontor/Setting/SettingSCCMControl.cs @@ -0,0 +1,89 @@ +using Remontor.Seacher; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Remontor.Setting +{ + public partial class SettingSCCMControl : UserControl + { + public SettingSCCMControl() + { + InitializeComponent(); + UpdateSetting(); + } + + public void UpdateSetting() + { + if (SGlobalSetting.settingSCCM != null) + { + ib_server.Text = SGlobalSetting.settingSCCM.server; + ib_dataBase.Text = SGlobalSetting.settingSCCM.dataBase; + ib_username.Text = SGlobalSetting.settingSCCM.username; + ib_password.Text = SGlobalSetting.settingSCCM.password; + cb_on.Checked = SGlobalSetting.settingSCCM.on; + + cb_windowsAuth.Checked = SGlobalSetting.settingSCCM.windowsAuth; + SearchControl(cb_on.Checked); + } + } + private void AuthControl(bool enable) + { + ib_username.Enabled = enable; + ib_password.Enabled = enable; + } + private void SearchControl(bool enable) + { + ib_server.Enabled = enable; + ib_dataBase.Enabled = enable; + cb_windowsAuth.Enabled = enable; + bt_checkConnect.Enabled = enable; + AuthControl(!cb_windowsAuth.Checked && enable); + } + + private void cb_on_CheckedChanged(object sender, EventArgs e) + { + SearchControl(cb_on.Checked); + } + + private void cb_windowsAuth_CheckedChanged(object sender, EventArgs e) + { + AuthControl(!cb_windowsAuth.Checked); + } + + public bool edited() + { + return (SGlobalSetting.settingSCCM.server != ib_server.Text || + SGlobalSetting.settingSCCM.dataBase != ib_dataBase.Text || + SGlobalSetting.settingSCCM.username != ib_username.Text || + SGlobalSetting.settingSCCM.password != ib_password.Text || + SGlobalSetting.settingSCCM.on != cb_on.Checked || + SGlobalSetting.settingSCCM.windowsAuth != cb_windowsAuth.Checked); + + } + + public void Save() + { + SGlobalSetting.settingSCCM.server = ib_server.Text; + SGlobalSetting.settingSCCM.dataBase = ib_dataBase.Text; + SGlobalSetting.settingSCCM.username = ib_username.Text; + SGlobalSetting.settingSCCM.password = ib_password.Text; + SGlobalSetting.settingSCCM.on = cb_on.Checked; + SGlobalSetting.settingSCCM.windowsAuth = cb_windowsAuth.Checked; + + } + + private void bt_checkConnect_Click(object sender, EventArgs e) + { + SeachSCCM SeacherCheck = new(cb_windowsAuth.Checked, ib_username.Text, ib_password.Text); + MessageBox.Show(SeacherCheck.CheckConnect(ib_server.Text,ib_dataBase.Text)); + } + } +} diff --git a/Remontor/Setting/SettingSCCMControl.resx b/Remontor/Setting/SettingSCCMControl.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Remontor/Setting/SettingSCCMControl.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Remontor/Setting/SettingWords.cs b/Remontor/Setting/SettingWords.cs new file mode 100644 index 0000000..c1e4549 --- /dev/null +++ b/Remontor/Setting/SettingWords.cs @@ -0,0 +1,47 @@ +using Remontor.Words; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.Serialization.Formatters.Binary; +using System.Security.Cryptography; +using System.Security.Policy; +using System.Text; +using System.Threading.Tasks; +using static System.Net.WebRequestMethods; + +namespace Remontor.Setting +{ + [Serializable] + internal class SettingWords + { + public string PathBase { get; set; } + [NonSerialized] + private MD5 Hash = MD5.Create(); + [NonSerialized] + private byte[] hash; + public SettingWords() + { + PathBase = "base.wb"; + } + + public SettingWords(string pathBase) + { + PathBase = pathBase; + } + + public void HashSumm(MemoryStream memory) + { + if(Hash == null) Hash = MD5.Create(); + hash = Hash.ComputeHash(memory); + } + + public bool HashCheck(MemoryStream memory) + { + byte[] hashSave = Hash.ComputeHash(memory); + return !hash.SequenceEqual(hashSave); + } + + + } +} \ No newline at end of file diff --git a/Remontor/Setting/SettingWordsControl.Designer.cs b/Remontor/Setting/SettingWordsControl.Designer.cs new file mode 100644 index 0000000..d5ed989 --- /dev/null +++ b/Remontor/Setting/SettingWordsControl.Designer.cs @@ -0,0 +1,119 @@ +namespace Remontor.Setting +{ + partial class SettingWordsControl + { + /// + /// Обязательная переменная конструктора. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Освободить все используемые ресурсы. + /// + /// истинно, если управляемый ресурс должен быть удален; иначе ложно. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Код, автоматически созданный конструктором компонентов + + /// + /// Требуемый метод для поддержки конструктора — не изменяйте + /// содержимое этого метода с помощью редактора кода. + /// + private void InitializeComponent() + { + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.bt_path_open = new System.Windows.Forms.Button(); + this.path = new System.Windows.Forms.TextBox(); + this.label7 = new System.Windows.Forms.Label(); + this.bt_wordsBilder = new System.Windows.Forms.Button(); + this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); + this.groupBox1.SuspendLayout(); + this.SuspendLayout(); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.bt_path_open); + this.groupBox1.Controls.Add(this.path); + this.groupBox1.Controls.Add(this.label7); + this.groupBox1.Controls.Add(this.bt_wordsBilder); + this.groupBox1.Location = new System.Drawing.Point(3, 3); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(386, 98); + this.groupBox1.TabIndex = 2; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Параметры справочника"; + // + // bt_path_open + // + this.bt_path_open.Location = new System.Drawing.Point(348, 36); + this.bt_path_open.Name = "bt_path_open"; + this.bt_path_open.Size = new System.Drawing.Size(27, 23); + this.bt_path_open.TabIndex = 3; + this.bt_path_open.Text = "..."; + this.bt_path_open.UseVisualStyleBackColor = true; + this.bt_path_open.Click += new System.EventHandler(this.bt_path_open_Click); + // + // path + // + this.path.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.path.Location = new System.Drawing.Point(10, 37); + this.path.Name = "path"; + this.path.Size = new System.Drawing.Size(339, 20); + this.path.TabIndex = 2; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(7, 20); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(105, 13); + this.label7.TabIndex = 1; + this.label7.Text = "Файл базы данных"; + // + // bt_wordsBilder + // + this.bt_wordsBilder.Location = new System.Drawing.Point(220, 65); + this.bt_wordsBilder.Name = "bt_wordsBilder"; + this.bt_wordsBilder.Size = new System.Drawing.Size(155, 23); + this.bt_wordsBilder.TabIndex = 0; + this.bt_wordsBilder.Text = "Редактор справочника"; + this.bt_wordsBilder.UseVisualStyleBackColor = true; + this.bt_wordsBilder.Click += new System.EventHandler(this.bt_wordsBilder_Click); + // + // openFileDialog1 + // + this.openFileDialog1.CheckFileExists = false; + this.openFileDialog1.DefaultExt = "*.wb"; + this.openFileDialog1.Filter = "База справочника|*.wb"; + // + // SettingWordsControl + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.groupBox1); + this.Name = "SettingWordsControl"; + this.Size = new System.Drawing.Size(391, 103); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Button bt_path_open; + private System.Windows.Forms.TextBox path; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Button bt_wordsBilder; + private System.Windows.Forms.OpenFileDialog openFileDialog1; + } +} diff --git a/Remontor/Setting/SettingWordsControl.cs b/Remontor/Setting/SettingWordsControl.cs new file mode 100644 index 0000000..6ca1d2e --- /dev/null +++ b/Remontor/Setting/SettingWordsControl.cs @@ -0,0 +1,70 @@ +using Remontor.Words; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using static System.Windows.Forms.VisualStyles.VisualStyleElement; + +namespace Remontor.Setting +{ + + partial class SettingWordsControl : UserControl + { + + + public delegate void DUpdateTree(); + public DUpdateTree UpdateTree; + public SettingWordsControl() + { + InitializeComponent(); + UpdateSetting(); + } + + public void UpdateSetting() + { + if (SGlobalSetting.settingWords != null) + { + path.Text = SGlobalSetting.settingWords.PathBase; + } + } + + private void bt_wordsBilder_Click(object sender, EventArgs e) + { + BilderWords bilderWords = new BilderWords(); + DialogResult result = bilderWords.ShowDialog(); + if (result == DialogResult.OK) + { + UpdateTree(); + } + } + + private void bt_path_open_Click(object sender, EventArgs e) + { + openFileDialog1.ShowDialog(); + if(openFileDialog1.FileName != null) + { + path.Text = openFileDialog1.FileName; + } + } + + public bool edited() + { + return (SGlobalSetting.settingWords.PathBase != path.Text); + + } + + public void Save() + { + if(SGlobalSetting.settingWords.PathBase != path.Text) + { + SGlobalSetting.settingWords.PathBase = path.Text; + } + + } + } +} diff --git a/Remontor/Setting/SettingWordsControl.resx b/Remontor/Setting/SettingWordsControl.resx new file mode 100644 index 0000000..9bad2f5 --- /dev/null +++ b/Remontor/Setting/SettingWordsControl.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/Remontor/Words/BilderWords.Designer.cs b/Remontor/Words/BilderWords.Designer.cs new file mode 100644 index 0000000..33fd1d0 --- /dev/null +++ b/Remontor/Words/BilderWords.Designer.cs @@ -0,0 +1,230 @@ +namespace Remontor.Words +{ + partial class BilderWords + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BilderWords)); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.panel1 = new System.Windows.Forms.Panel(); + this.bt_close = new System.Windows.Forms.Button(); + this.bt_saveClose = new System.Windows.Forms.Button(); + this.bt_save = new System.Windows.Forms.Button(); + this.bt_deleteItem = new System.Windows.Forms.Button(); + this.treeView1 = new System.Windows.Forms.TreeView(); + this.imageList1 = new System.Windows.Forms.ImageList(this.components); + this.bt_newPC = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.bt_newCat = new System.Windows.Forms.Button(); + this.label2 = new System.Windows.Forms.Label(); + this.groupBox1.SuspendLayout(); + this.SuspendLayout(); + // + // groupBox1 + // + this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox1.Controls.Add(this.panel1); + this.groupBox1.Location = new System.Drawing.Point(225, 13); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(268, 502); + this.groupBox1.TabIndex = 3; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Параметры"; + // + // panel1 + // + this.panel1.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.panel1.Location = new System.Drawing.Point(3, 19); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(262, 480); + this.panel1.TabIndex = 0; + // + // bt_close + // + this.bt_close.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.bt_close.Location = new System.Drawing.Point(417, 521); + this.bt_close.Name = "bt_close"; + this.bt_close.Size = new System.Drawing.Size(75, 23); + this.bt_close.TabIndex = 4; + this.bt_close.Text = "Закрыть"; + this.bt_close.UseVisualStyleBackColor = true; + this.bt_close.Click += new System.EventHandler(this.bt_close_Click); + // + // bt_saveClose + // + this.bt_saveClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.bt_saveClose.Location = new System.Drawing.Point(280, 521); + this.bt_saveClose.Name = "bt_saveClose"; + this.bt_saveClose.Size = new System.Drawing.Size(131, 23); + this.bt_saveClose.TabIndex = 5; + this.bt_saveClose.Text = "Сохранить и закрыть"; + this.bt_saveClose.UseVisualStyleBackColor = true; + this.bt_saveClose.Click += new System.EventHandler(this.bt_saveClose_Click); + // + // bt_save + // + this.bt_save.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.bt_save.Location = new System.Drawing.Point(199, 521); + this.bt_save.Name = "bt_save"; + this.bt_save.Size = new System.Drawing.Size(75, 23); + this.bt_save.TabIndex = 6; + this.bt_save.Text = "Сохранить"; + this.bt_save.UseVisualStyleBackColor = true; + this.bt_save.Click += new System.EventHandler(this.bt_save_Click); + // + // bt_deleteItem + // + this.bt_deleteItem.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.bt_deleteItem.Location = new System.Drawing.Point(12, 521); + this.bt_deleteItem.Name = "bt_deleteItem"; + this.bt_deleteItem.Size = new System.Drawing.Size(112, 23); + this.bt_deleteItem.TabIndex = 9; + this.bt_deleteItem.Text = "Удалить элемент"; + this.bt_deleteItem.UseVisualStyleBackColor = true; + this.bt_deleteItem.Click += new System.EventHandler(this.bt_deleteItem_Click); + // + // treeView1 + // + this.treeView1.AllowDrop = true; + this.treeView1.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.treeView1.HideSelection = false; + this.treeView1.ImageIndex = 0; + this.treeView1.ImageList = this.imageList1; + this.treeView1.ItemHeight = 16; + this.treeView1.Location = new System.Drawing.Point(9, 42); + this.treeView1.Name = "treeView1"; + this.treeView1.SelectedImageIndex = 1; + this.treeView1.ShowLines = false; + this.treeView1.Size = new System.Drawing.Size(207, 470); + this.treeView1.TabIndex = 4; + this.treeView1.BeforeSelect += new System.Windows.Forms.TreeViewCancelEventHandler(this.treeView1_BeforeSelect); + this.treeView1.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterSelect); + this.treeView1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.treeView1_MouseClick); + // + // imageList1 + // + this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream"))); + this.imageList1.TransparentColor = System.Drawing.Color.Transparent; + this.imageList1.Images.SetKeyName(0, "11favicon.ico"); + this.imageList1.Images.SetKeyName(1, "16favicon.ico"); + this.imageList1.Images.SetKeyName(2, "12favicon.ico"); + this.imageList1.Images.SetKeyName(3, "13favicon.ico"); + this.imageList1.Images.SetKeyName(4, "14favicon.ico"); + this.imageList1.Images.SetKeyName(5, "15favicon.ico"); + this.imageList1.Images.SetKeyName(6, "17favicon.ico"); + this.imageList1.Images.SetKeyName(7, "18favicon.ico"); + this.imageList1.Images.SetKeyName(8, "40favicon.ico"); + // + // bt_newPC + // + this.bt_newPC.Location = new System.Drawing.Point(76, 13); + this.bt_newPC.Name = "bt_newPC"; + this.bt_newPC.Size = new System.Drawing.Size(34, 23); + this.bt_newPC.TabIndex = 10; + this.bt_newPC.Tag = "pc"; + this.bt_newPC.Text = "+"; + this.bt_newPC.UseVisualStyleBackColor = true; + this.bt_newPC.Click += new System.EventHandler(this.bt_new_Click); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(9, 18); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(65, 13); + this.label1.TabIndex = 0; + this.label1.Text = "Компьютер"; + // + // bt_newCat + // + this.bt_newCat.Location = new System.Drawing.Point(180, 13); + this.bt_newCat.Name = "bt_newCat"; + this.bt_newCat.Size = new System.Drawing.Size(34, 23); + this.bt_newCat.TabIndex = 12; + this.bt_newCat.Tag = "cat"; + this.bt_newCat.Text = "+"; + this.bt_newCat.UseVisualStyleBackColor = true; + this.bt_newCat.Click += new System.EventHandler(this.bt_new_Click); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(120, 18); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(60, 13); + this.label2.TabIndex = 11; + this.label2.Text = "Категория"; + // + // BilderWords + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(504, 556); + this.Controls.Add(this.bt_newCat); + this.Controls.Add(this.label2); + this.Controls.Add(this.bt_newPC); + this.Controls.Add(this.label1); + this.Controls.Add(this.treeView1); + this.Controls.Add(this.bt_deleteItem); + this.Controls.Add(this.bt_save); + this.Controls.Add(this.bt_saveClose); + this.Controls.Add(this.bt_close); + this.Controls.Add(this.groupBox1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MinimumSize = new System.Drawing.Size(520, 595); + this.Name = "BilderWords"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Редактор справочника"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.BilderWords_FormClosing); + this.Load += new System.EventHandler(this.BilderWords_Load); + this.groupBox1.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Button bt_close; + private System.Windows.Forms.Button bt_saveClose; + private System.Windows.Forms.Button bt_save; + private System.Windows.Forms.Button bt_deleteItem; + private System.Windows.Forms.TreeView treeView1; + public System.Windows.Forms.ImageList imageList1; + private System.Windows.Forms.Button bt_newPC; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Button bt_newCat; + private System.Windows.Forms.Label label2; + } +} \ No newline at end of file diff --git a/Remontor/Words/BilderWords.cs b/Remontor/Words/BilderWords.cs new file mode 100644 index 0000000..9a154db --- /dev/null +++ b/Remontor/Words/BilderWords.cs @@ -0,0 +1,420 @@ +using Remontor.History; +using Remontor.Setting; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Data.Odbc; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Runtime.Serialization.Formatters.Binary; +using System.Security.Cryptography; +using System.Security.Policy; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + + +namespace Remontor.Words +{ + internal partial class BilderWords : Form + { + private Control control; + private bool DragOn; + WordsCategory ChangeCategory; + //private byte[] hash; + //MD5 Hash = MD5.Create(); + public BilderWords() + { + LoadForm(); + treeView1.Nodes.AddRange(WordsList.ListNodes(ChangeCategory)); + + + } + + public BilderWords(IComp comp) + { + LoadForm(); + CompId compId = (CompId)SGlobalSetting.Clone(comp); + WordsComp item = new WordsComp(compId); + WordsList.AddItem(item, ChangeCategory); + treeView1.Nodes.AddRange(WordsList.ListNodes(ChangeCategory)); + treeView1.SelectedNode = treeView1.Nodes[treeView1.Nodes.Count-1]; + } + + private void LoadForm() + { + ChangeCategory = SGlobalSetting.Clone(WordsList.MainCategory); + InitializeComponent(); + + //cb_create.SelectedIndex = 1; + treeView1.ItemDrag += new ItemDragEventHandler(TreeView1_ItemDrag); + treeView1.DragEnter += new DragEventHandler(TreeView1_DragEnter); + treeView1.DragOver += new DragEventHandler(TreeView1_DragOver); + treeView1.DragDrop += new DragEventHandler(TreeView1_DragDrop); + } + private void TreeView1_ItemDrag(object sender, ItemDragEventArgs e) + { + DragOn = true; + if (e.Button == MouseButtons.Left) + { + DoDragDrop(e.Item, DragDropEffects.Move); + } + } + + private void TreeView1_DragEnter(object sender, DragEventArgs e) + { + DragOn = true; + e.Effect = e.AllowedEffect; + } + private void TreeView1_DragOver(object sender, DragEventArgs e) + { + Point targetPoint = treeView1.PointToClient(new Point(e.X, e.Y)); + treeView1.SelectedNode = treeView1.GetNodeAt(targetPoint); + } + private void TreeView1_DragDrop(object sender, DragEventArgs e) + { + DragOn = false; + int indexMod = 0; + int index = 0; + Point targetPoint = treeView1.PointToClient(new Point(e.X, e.Y)); + TreeNode selectNode = treeView1.GetNodeAt(targetPoint); + TreeNode moveNode = (TreeNode)e.Data.GetData(typeof(TreeNode)); + if(selectNode == null) + { + // indexMod = 1; + } + else + { + int PointH = targetPoint.Y - selectNode.Bounds.Y; + if (PointH > 6) indexMod = 1; + } + + //if (!((IWordsItem)moveNode.Tag).ChekMove((IWordsItem)selectNode.Tag)) return; + + WordsCategory DstCategory; + TreeNodeCollection DstNodes; + + if (selectNode == null) + { + DstCategory = ChangeCategory; + DstNodes = treeView1.Nodes; + if(targetPoint.Y < 5) + { + index = 0; + } + else + { + index = treeView1.Nodes.Count; + } + + } + else if (selectNode.Tag is WordsCategory) + { + DstCategory = (WordsCategory)selectNode.Tag; + DstNodes = selectNode.Nodes; + selectNode.Expand(); + // index = 1; + } + else if (selectNode.Parent == null) + { + DstCategory = ChangeCategory; + DstNodes = treeView1.Nodes; + index = selectNode.Index + indexMod; + } + else + { + DstCategory = (WordsCategory)selectNode.Parent.Tag; + DstNodes = selectNode.Parent.Nodes; + index = selectNode.Index + indexMod; + } + + WordsCategory SrcCategory; + TreeNodeCollection SrcNodes; + if (moveNode == null) + { + SrcCategory = ChangeCategory; + SrcNodes = treeView1.Nodes; + } + else if (moveNode.Parent == null) + { + SrcCategory = ChangeCategory; + SrcNodes = treeView1.Nodes; + + } + else + { + SrcCategory = (WordsCategory)moveNode.Parent.Tag; + SrcNodes = moveNode.Parent.Nodes; + + } + if(SrcCategory == DstCategory) + { + if (selectNode == null) + { + if (targetPoint.Y > 5) index--; + } + else if(selectNode.Tag == DstCategory) + { + index = 0; + } + else if(selectNode.Tag == moveNode.Tag) + { + return; + } + else if(moveNode.Index < selectNode.Index) + { + index--; + } + } + + IWordsItem MoveItem = (IWordsItem)moveNode.Tag; + if (!MoveItem.ChekMove(DstCategory)) return; + WordsList.MoveItem(index, MoveItem, SrcCategory, DstCategory); + + // treeView1.Nodes.Clear(); + // treeView1.Nodes.AddRange(WordsList.ListNodes()); + + SrcNodes.Remove(moveNode); + DstNodes.Insert(index, moveNode); + + + + } + + public BilderWords(WordsCategory category):base() + { + + } + public BilderWords(WordsComp item) : base() + { + + } + + + + private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) + { + + if (e.Node != null && !DragOn) + { + if (e.Node.Tag is WordsComp) + { + WordsComp wordsComp = (WordsComp)e.Node.Tag; + control = new WordsEditCompControl(wordsComp, e.Node, imageList1); + panel1.Controls.Add(control); + } + if (e.Node.Tag is WordsCategory) + { + WordsCategory wordsCategory = (WordsCategory)e.Node.Tag; + control = new WordsEditCategoryControl(wordsCategory, e.Node); + panel1.Controls.Add(control); + } + } + + } + + private void treeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e) + { + + if(control != null && !DragOn) + { + control.Visible = false; + control.Dispose(); + } + + + } + + private void bt_new_Click(object sender, EventArgs e) + { + WordsCategory ParentCategory; + TreeNode selectNode = treeView1.SelectedNode; + TreeNodeCollection ParentNodes; + int index = 0; + if(selectNode == null) + { + ParentCategory = ChangeCategory; + ParentNodes = treeView1.Nodes; + } + else if(selectNode.Tag is WordsCategory) + { + ParentCategory = (WordsCategory)selectNode.Tag; + ParentNodes = selectNode.Nodes; + selectNode.Expand(); + } + else if (selectNode.Parent == null) + { + ParentCategory = ChangeCategory; + ParentNodes = treeView1.Nodes; + // index = selectNode.Index+1; + } + else + { + ParentCategory = (WordsCategory)selectNode.Parent.Tag; + ParentNodes = selectNode.Parent.Nodes; + // index = selectNode.Index+1; + } + + + + object item = null; + TreeNode treeNode = new TreeNode(); + Button sendBt = (Button)sender; + switch (sendBt.Tag) + { + case "cat": + item = new WordsCategory("Новая категория"); + index = 0; + WordsList.InsertItem(index, (WordsCategory)item, ParentCategory); + treeNode.ImageIndex = 0; + treeNode.SelectedImageIndex = 0; + treeNode.Text = "Новая категория"; + break; + case "pc": + item = new WordsComp(new CompId("Новый ПК")); + index = ParentCategory.Count(); + WordsList.InsertItem(index, (WordsComp)item, ParentCategory); + treeNode.ImageIndex = 1; + treeNode.SelectedImageIndex = 1; + treeNode.Text = "Новый ПК"; + break; + } + + treeNode.Tag = item; + ParentNodes.Insert(index,treeNode); + + + + } + + private void BilderWords_FormClosing(object sender, FormClosingEventArgs e) + { + if (control != null) + { + control.Visible = false; + control.Visible = true; + } + + if (!SGlobalSetting.SaveClose(ChangeCategory, this.DialogResult)) + { + e.Cancel = true; + } + else + { + // WordsList.MainCategory = ChangeCategory; + this.DialogResult = DialogResult.OK; + } + + } + + private void bt_deleteItem_Click(object sender, EventArgs e) + { + + TreeNode selectNode = treeView1.SelectedNode; + if (selectNode == null) return; + WordsCategory ParentCategory; + TreeNodeCollection ParentNodes; + treeView1.SelectedNode = null; + control.Visible = false; + control.Dispose(); + if (selectNode.Parent == null) + { + ParentCategory = ChangeCategory; + ParentNodes = treeView1.Nodes; + } + else + { + ParentCategory = (WordsCategory)selectNode.Parent.Tag; + ParentNodes = selectNode.Parent.Nodes; + } + + + if (selectNode.Tag == null) return; + IWordsItem wordsItem = (IWordsItem)selectNode.Tag; + + if(selectNode.NextNode != null) + { + treeView1.SelectedNode = selectNode.NextNode; + }else if(selectNode.PrevNode != null) + { + treeView1.SelectedNode = selectNode.PrevNode; + }else if(selectNode.Parent != null) treeView1.SelectedNode = selectNode.Parent ; + + ParentCategory.DeleteItem(wordsItem); + ParentNodes.Remove(selectNode); + + } + + + + private void treeView1_MouseClick(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + + TreeNode tr = treeView1.GetNodeAt(e.X, e.Y); + if (tr == null || !(tr.Bounds.X < e.X && (tr.Bounds.Width + tr.Bounds.X) > e.X)) + { + if (control != null && !DragOn) + { + control.Visible = false; + control.Dispose(); + } + treeView1.SelectedNode = null; + } + + } + else if (e.Button == MouseButtons.Right) + { + if (control != null && !DragOn) + { + control.Visible = false; + control.Dispose(); + } + treeView1.SelectedNode = null; + } + + } + + private void treeView1_KeyDown(object sender, KeyEventArgs e) + { + + } + + private void panel2_MouseDown(object sender, MouseEventArgs e) + { + + } + + private void bt_saveClose_Click(object sender, EventArgs e) + { + + this.DialogResult = DialogResult.OK; + + } + + private void bt_save_Click(object sender, EventArgs e) + { + if (control != null) + { + control.Visible = false; + control.Visible = true; + } + if(SGlobalSetting.Save(ChangeCategory)) WordsList.MainCategory = ChangeCategory; + SGlobalSetting.Clone(WordsList.MainCategory); + } + + private void bt_close_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void BilderWords_Load(object sender, EventArgs e) + { + + } + } +} diff --git a/Remontor/Words/BilderWords.resx b/Remontor/Words/BilderWords.resx new file mode 100644 index 0000000..75f4de0 --- /dev/null +++ b/Remontor/Words/BilderWords.resx @@ -0,0 +1,1150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACQ + JAAAAk1TRnQBSQFMAgEBCQEAAZgBAAGYAQABEAEAARABAAT/AREBAAj/AUIBTQE2BwABNgMAASgDAAFA + AwABMAMAAQEBAAEQBgABGBIAAf8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/ + AX8B/wF/Af8BfwH/AX8B/wF/Af8Bf2AAAf8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8Bf2AAAf8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/ + AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8Bf2AAAf8BfwH/AX8B/wF/Af8BfwH/AX8BjAEx + AYwBMQGMATEBjAExAYwBMQGMATEBzgE5Af8BfwH/AX8B/wF/Af8Bf2AAAf8BfwH/AX8B/wF/Af8BfwH/ + AX8BjAExAf8BfwH/AX8B/wF/Af8BfwG1AVYBzgE5Af8BfwH/AX8B/wF/Af8Bf2AAAf8BfwH/AX8B/wF/ + AYwBMQGMATEBjAExAf8BfwH/AX8B/wF/Af8BfwG1AVYBjAExAYwBMQGMATEB/wF/Af8Bf2AAAf8BfwH/ + AX8B/wF/AYwBMQGMATEBjAExAd4BewHeAXsB3gF7Ad4BewGUAVIBjAExAYwBMQGMATEB/wF/Af8Bf2AA + Af8BfwH/AX8B/wF/AYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEB/wF/ + Af8Bf2AAAf8BfwH/AX8B/wF/AYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBrQE1Ab0BdwGM + ATEB/wF/Af8Bf2AAAf8BfwH/AX8B/wF/Aa0BNQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAEx + AYwBMQGcAXMB/wF/Af8Bf2AAAf8BfwH/AX8B/wF/Af8BfwH/AX8BOQFnATkBZwE5AWcBOQFnATkBZwE5 + AWcBWgFrAf8BfwH/AX8B/wF/Af8Bf2AAAf8BfwH/AX8B/wF/Af8BfwH/AX8BjAExAYwBMQGMATEBjAEx + AYwBMQGMATEBzgE5Af8BfwH/AX8B/wF/Af8Bf2AAAf8BfwH/AX8B/wF/Af8BfwH/AX8BjAExAYwBMQGM + ATEBjAExAYwBMQGMATEBzgE5Af8BfwH/AX8B/wF/Af8Bf2AAAf8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8Bf2AAAf8BfwH/AX8B/wF/Af8BfwH/ + AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8Bf2AAAf8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8Bf2AAAf8BfwH/ + AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/ + AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/ + AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/ + AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/ + AX8B/wF/Af8BfwH/AX8BEAFCAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGM + ATEBjAExAYwBMQH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/ + AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/ + AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/ + AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/AYwBMQF7AW8BewFvAXsBbwF7AW8BewFvAXsBbwF7 + AW8BewFvAXsBbwF7AW8BewFvAXsBbwGMATEBcwFOAf8BfwEQAUIBEAFCAZQBUgH/AX8BEAFCARABQgEQ + AUIBEAFCARABQgEQAUIBEAFCAd4BewGcAXMB/wF/Af8BfwH/AX8B/wF/AYwBMQGMATEBjAExAYwBMQGM + ATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAf8BfwH/AX8B/wF/Af8BfwGMATEBjAExAYwBMQGM + ATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQH/AX8B/wF/Af8BfwGMATEB/wF/Af8BfwH/ + AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8BjAExARABQgH/AX8BjAExAYwBMQEQ + AUIB/wF/AYwBMQGMATEBjAExAYwBMQGMATEBjAExAd4BewH/AX8BMQFGAZQBUgH/AX8B/wF/Af8BfwGM + ATEBEAFCAf8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/AYwBMQH/AX8B/wF/Af8BfwH/ + AX8BjAExARABQgH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwGMATEB/wF/Af8BfwH/ + AX8BjAExAf8BfwH/AX8B/wF/Af8BfwGMATEBcwFOAf8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/AYwBMQEQ + AUIB/wF/AYwBMQGMATEBEAFCAf8BfwGMATEBjAExAYwBMQGMATEBjAExAe8BPQH/AX8BzgE5Ad4BewHe + AXsBrQE1Af8BfwH/AX8BjAExARABQgH/AX8BEAFCAf8BfwGcAXMBEAFCARABQgEQAUIBlAFSAf8BfwGM + ATEB/wF/Af8BfwH/AX8B/wF/AYwBMQEQAUIB/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/ + AX8BjAExAf8BfwH/AX8B/wF/AYwBMQH/AX8B/wF/Af8BfwH/AX8BjAExAYwBMQGMATEBOQFnAf8BfwH/ + AX8B/wF/Af8BfwGMATEBEAFCAf8BfwExAUYBjAExAa0BNQH/AX8BMQFGAYwBMQGMATEBjAExAYwBMQEQ + AUIBewFvAd4BewGMATEBrQE1AVoBawH/AX8B/wF/AYwBMQEQAUIB/wF/AYwBMQH/AX8BewFvAYwBMQGM + ATEBjAExARABQgH/AX8BjAExAf8BfwH/AX8B/wF/Af8BfwGMATEBEAFCAf8BfwH/AX8B/wF/Af8BfwH/ + AX8B/wF/Af8BfwH/AX8B/wF/AYwBMQH/AX8B/wF/Af8BfwGMATEB/wF/Af8BfwH/AX8B/wF/AYwBMQGM + ATEBjAExAYwBMQFSAUoB/wF/Af8BfwH/AX8BjAExARABQgH/AX8B/wF/AZwBcwEQAUIB1gFaAf8BfwG9 + AXcBEAFCAYwBMQGMATEBzgE5Af8BfwH/AX8BjAExAYwBMQH/AX8B/wF/Af8BfwGMATEBEAFCAf8BfwH/ + AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/AYwBMQH/AX8B/wF/Af8BfwH/AX8BjAExARABQgH/ + AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwGMATEB/wF/Af8BfwH/AX8BjAExAf8BfwH/ + AX8B/wF/Af8BfwGMATEBjAExAa0BNQG9AXcB/wF/Af8BfwH/AX8B/wF/AYwBMQEQAUIB/wF/Af8BfwH/ + AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/AYwBMQGMATEB/wF/Af8BfwH/ + AX8BjAExARABQgH/AX8BjAExAf8BfwF7AW8BjAExAYwBMQGMAjEBRgH/AX8BjAExAf8BfwH/AX8B/wF/ + Af8BfwGMATEBEAFCAf8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/AYwBMQH/AX8B/wF/ + Af8BfwGMATEB/wF/Af8BfwH/AX8B/wF/AYwBMQF7AW8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8BjAEx + ARABQgH/AX8B/wF/Af8BfwH/AX8BcwFOAYwBMQHOATkB/wF/AXMBTgGMATEBjAExAYwBMQH/AX8BnAFz + Ab0BdwH/AX8B/wF/Af8BfwGMATEBEAFCAf8BfwF7AW8B/wF/Ad4CewFvAXsBbwF7AW8BnAFzAf8BfwGM + ATEB/wF/Af8BfwH/AX8B/wF/AYwBMQEQAUIB/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/ + AX8BjAExAf8BfwH/AX8B/wF/AYwBMQH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/ + AX8B/wF/Af8BfwGMATEBEAFCAf8BfwH/AX8B/wF/Ab0BdwGMATEBjAExAXsBbwG9AXcBjAExAYwBMQGM + ATEBjAExAc4BOQH/AX8B/wF/Af8BfwH/AX8B/wF/AYwBMQEQAUIB/wF/Af8BfwH/AX8B/wF/Af8BfwH/ + AX8B/wF/Af8BfwH/AX8BjAExAf8BfwH/AX8B/wF/Af8BfwGMATEBEAFCAf8BfwH/AX8B/wF/Af8BfwH/ + AX8B/wF/Af8BfwH/AX8B/wF/AYwBMQH/AX8B/wF/Af8BfwGMATEBEAFCARABQgEQAUIBEAFCARABQgEQ + AUIBEAFCARABQgEQAUIBEAFCARABQgEQAUIBjAIxAUYB/wF/Af8BfwH/AX8BewFvAYwBMQGMATEB/wF/ + AXsBbwGMATEBjAExAYwBMQGMATEBjAExAf8BfwH/AX8B/wF/Af8BfwH/AX8BjAExARABQgH/AX8BjAEx + Af8BfwF7AW8BjAExAYwBMQGMATEBEAFCAf8BfwGMATEB/wF/Af8BfwH/AX8B/wF/AYwBMQEQAUIB/wF/ + AYwBMQH/AX8BewFvAYwBMQGMATEBjAExARABQgH/AX8BjAExAf8BfwH/AX8B/wF/AdYBWgGMATEBjAEx + AYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGtATUB/wF/Af8BfwH/AX8B/wF/ + Ad4BewGMATEBjAExATkBZwHeAXsBjAExAYwBMQGMATEBjAExAe8BPQH/AX8B/wF/Af8BfwH/AX8B/wF/ + AYwBMQEQAUIB/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8BjAExAf8BfwH/AX8B/wF/ + Af8BfwGMATEBEAFCAf8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/AYwBMQH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ARgBYwHWAVoB/wF/Aa0BNQH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8BOQFnAYwBMQGtATUB/wF/ATkBZwGMATEBjAExAa0BNQH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwGMATEBrQE1ARABQgEQAUIBEAFCARABQgEQAUIBEAFCARABQgEQAUIBEAFC + AYwBMQH/AX8B/wF/Af8BfwH/AX8BjAExAa0BNQEQAUIBEAFCARABQgEQAUIBEAFCARABQgEQAUIBEAFC + ARABQgGMATEB/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ARgBYwHWAVoB/wF/Af8BfwH/AX8BrQE1 + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8BMQFGAYwBMQGMATEBjAExAYwBMQGMATEBjAEx + AYwBMQGMATEBjAExAYwBMQGMATEB/wF/Af8BfwH/AX8B/wF/ATEBRgGMATEBjAExAYwBMQGMATEBjAEx + AYwBMQGMATEBjAExAYwBMQGMATEBjAExAf8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwG9AXcB/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8BlAFSARABQgEQAUIBEAFC + ARABQgEQAUIBEAFCARABQgEQAUIBEAFCARABQgExAUYB3gF7Af8BfwH/AX8B/wF/Af8BfwH/AX8BjAEx + AYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQH/AX8B/wF/Af8BfwH/AX8B/wF/ARABQgEQAUIBEAFC + ARABQgEQAUIBEAFCARABQgEQAUIBEAFCARABQgEQAUIBEAFCARABQgEQAUIBGAFjAf8BfwGMATEBjAEx + AYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBEAFCAf8BfwH/AX8B/wF/Af8BfwH/AX8BewFv + AYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQH/AX8B/wF/ + Af8BfwH/AX8B/wF/AVoBawGMATEBjAExAYwBMQGMATEBjAExAYwBMQGtATUB/wF/Af8BfwH/AX8B/wF/ + AYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAEx + AYwBMQH/AX8BjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAXMBTgH/AX8B/wF/ + Af8BfwH/AX8B/wF/AXsBbwGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAEx + AYwBMQGMATEB/wF/Af8BfwG9AXcBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAEx + AYwBMQGMATEBzgE5Af8BfwH/AX8BvQF3AYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAEx + AYwBMQGMATEBjAExAc4BOQH/AX8B/wF/AZwBcwGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAEx + ARABQgH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwF7AW8BjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAEx + AYwBMQGMATEBjAExAYwBMQGMATEBjAExAf8BfwH/AX8BewFvAYwBMQH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8BewFvAYwBMQH/AX8B/wF/AXsBbwGMATEB/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/AXsBbwGMATEB/wF/Af8BfwH/AX8B/wF/AZwBcwGUAVIBrQE1 + AYwBMQEQAUIBOQFnAf8BfwH/AX8B/wF/Af8BfwHvAT0B/wF/Af8BfwH/AX8BewFvAYwBMQGMATEBjAEx + AYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQH/AX8B/wF/AXsBbwGMATEB/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/AXsBbwGMATEB/wF/Af8BfwF7AW8BjAEx + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwF7AW8BjAExAf8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwHeAXsBjAExAe8BPQH/AX8B/wF/ + AXsBbwGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEB/wF/ + Af8BfwF7AW8BjAExAf8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwF7AW8BjAEx + Af8BfwH/AX8BewFvAYwBMQH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8BewFv + AYwBMQH/AX8B/wF/Af8BfwH/AX8B/wF/Ab0BdwGtATUBjAExAVIBSgH/AX8B/wF/Af8BfwGUAVIB/wF/ + AXMBTgGMATEB/wF/Af8BfwF7AW8BjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAEx + AYwBMQGMATEBjAExAf8BfwH/AX8BewFvAYwBMQH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8BewFvAYwBMQH/AX8B/wF/AXsBbwGMATEB/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/AXsBbwGMATEB/wF/Af8BfwH/AX8B/wF/Af8BfwGMATEBjAExAYwBMQGMATEBUgFK + Af8BfwGUAVIBjAExAf8BfwG9AXcBjAExAdYBWgH/AX8BewFvAYwBMQGMATEBjAExAYwBMQGMATEBjAEx + AYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQH/AX8B/wF/AXsBbwGMATEB/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/AXsBbwGMATEB/wF/Af8BfwF7AW8BjAExAf8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwF7AW8BjAExAf8BfwH/AX8B/wF/Af8BfwF7AW8BjAEx + AYwBMQGMATEBjAExAYwBMQH/AX8BvQF3AYwBMQEYAWMB/wF/AYwBMQFSAUoB/wF/AXsBbwGMATEBjAEx + AYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEB/wF/Af8BfwF7AW8BjAEx + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwF7AW8BjAExAf8BfwH/AX8BewFv + AYwBMQH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8BewFvAYwBMQH/AX8B/wF/ + Af8BfwH/AX8BnAFzAYwBMQGMATEBjAExAYwBMQGtATUB/wF/AVoBawGMATEBewFvAf8BfwGMATEBlAFS + Af8BfwF7AW8BjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBWgFr + Af8BfwH/AX8BewFvAYwBMQH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8BewFv + AYwBMQH/AX8B/wF/AXsBbwGMATEB/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + AXsBbwGMATEB/wF/Af8BfwH/AX8B/wF/Af8BfwHvAT0BjAExAYwBMQGMATEBvQF3Af8BfwGcAXMBjAEx + Af8BfwF7AW8BjAExAb0BdwH/AX8B3gF7AYwBMQGMATEBjAExAYwBMQGMATEB1gFaAf8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/AXsBbwGMATEBEAFCARABQgEQAUIBEAFCARABQgEQAUIBEAFC + ARABQgEQAUIBEAFCAe8BPQGMATEB/wF/Af8BfwHeAXsBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAEx + AYwBMQGMATEBjAExAYwBMQGMATEBEAFCAf8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/AZwBcwF7AW8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8BjAExAYwBMQH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B7wE9AYwBMQGMATEBjAEx + AYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBWgFrAf8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8BvQF3AYwBMQFaAWsB/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ + Af8BfwH/AX8B/wF/Af8BfwH/AX8BQgFNAT4HAAE+AwABKAMAAUADAAEwAwABAQEAAQEFAAGAAQEWAAP/ + /wCCAAs= + + + + + + AAABAAwAICAQAAEABADoAgAAxgAAABAQEAABAAQAKAEAAK4DAAAwMAAAAQAIAKgOAADWBAAAICAAAAEA + CACoCAAAfhMAABAQAAABAAgAaAUAACYcAABAQAAAAQAgAChCAACOIQAAMDAAAAEAIACoJQAAtmMAACgo + AAABACAAaBoAAF6JAAAgIAAAAQAgAKgQAADGowAAGBgAAAEAIACICQAAbrQAABQUAAABACAAuAYAAPa9 + AAAQEAAAAQAgAGgEAACuxAAAKAAAACAAAABAAAAAAQAEAAAAAACAAgAAAAAAAAAAAAAQAAAAAAAAAAAA + AAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP// + /wCZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZeXl5l5l5l5l5mZmZmZmZmP//////////iZmZmZmZmZ///4///////4mZmZmZmZl/+ZeX + l5eXl5eZmZmZmZmZn/eZmZmZmZmZmZmZmZmZmX/5GYiIiIiIiIiImZmZmZmf+Zj//////////4eZmZmZ + f/kY///////////3mZmZmZ/5mP/4iIiP////95mZmZl/95j/iRkZmP////mZmZmZn/mY/4mZeZj////3 + mZmZmX/5GP//////////+ZmZmZmf+Zj///////////eZmZmZf/kf/4l5eXl5d//5mZmZmZ/5mP+JmZmZ + mZn/95mZmZl/+Rj/+IiIiIiI//mZmZmZn/eY///////////3mZmZmX/5mP/4iIiIiIj/+ZmZmZmYiZj/ + gZmZmZmX//cZmZmZmZmf/4l5eXl5d//5mZmZmZmZmP//////////95mZmZmZmZj///////////mZmZmZ + mZmZ//////////+JmZmZmZmZmXl3l3l3l3l5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ + mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAABAAAAAgAAAAAQAEAAAA + AADAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA + /wAA/wAAAP//AP8AAAD/AP8A//8AAP///wCZmZmZmZmZmZmZmZmZmZmZmZiIiIiHmZmZiIiIiImZmZmI + mYmJiXmZmYif////+JmZiH+HmP/4mZmIn4iI//iZmYh/iIiI+JmZiJ+JeXj4mZmIn/j4j/iZmXmPiZl5 + +JmZmZ/////4mZmZmIiIiImZmZmZmZmZmZmZmZmZmZmZmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAMAAAAGAAAAABAAgAAAAAAIAK + AAAAAAAAAAAAAAABAAAAAAAAGBi/AC0tvgATE8IAExPEABQUxgAYGMIAHBzCABwcxQAUFMoAFBTNABkZ + yAAdHcgAGRnOAB4ezQAVFdEAFRXVABoa0QAdHdMAGhrVAB4e1QAWFtkAFhbdABoa2AAeHtkAGRndAB8f + 3AAuLsEALi7EACMjyQAuLskAKSnNAC8vzQAyMsMAMjLGADo6xQAzM84AOzvIADo6zgAvL9AAOzvRADw8 + 0QAwMNoAMDDcABYW4QAWFuUAGBjjABcX6QAXF+wAGhroABgY7gAYGPIAHBzxACsr5gAgIOgAICDvACws + 7gA9PeEAPT3kAD096AAhIfEALCzyADQ08gA/P/MARUXBAFlZxQBHR9YAQUHYAEhI2QBbW9MAW1vXAFdX + 2wBbW9gAX1/bAGxsyQBtbdIAZ2fYAEJC4ABDQ+4ARETyAFlZ8wB8fOMAfHzmAGpq8wCMjNcAhYXYAIaG + 3ACOjt8AlpbdAKqq3wCKiuIAjo7hAIOD6wCDg+8Aj4/pAI+P7QCXl+wAj4/wAJiY9wCqquAAo6PqAKSk + 6gCsrOgArKzuALS04gC5ueUAvLzmALW17QC8vOgAvb3vAKys8ACurvcApqb4ALq68AC8vPAAu7v0AL6+ + 9QC7u/oAvb36AMrK7QDV1e8AxcXyAMnJ8QDLy/kA0dHyANbW8wDd3fEA3t71ANPT+gDe3vkA4eHyAOLi + 9gDm5vUA6Oj2AOLi+ADm5voA5+f9AOjo+QDt7foA6Oj9APPz+gDz8/wA9vb8APj4/AD+/v4AAAAAAC8U + AABQIgAAcDAAAJA+AACwTQAAz1sAAPBpAAD/eREA/4oxAP+dUQD/r3EA/8GRAP/SsQD/5dEA////AAAA + AAAvAwAAUAQAAHAGAACQCQAAsAoAAM8MAADwDgAA/yASAP8+MQD/XFEA/3pxAP+XkQD/trEA/9TRAP// + /wAAAAAALwAOAFAAFwBwACEAkAArALAANgDPAEAA8ABJAP8RWgD/MXAA/1GGAP9xnAD/kbIA/7HIAP/R + 3wD///8AAAAAAC8AIABQADYAcABMAJAAYgCwAHgAzwCOAPAApAD/EbMA/zG+AP9RxwD/cdEA/5HcAP+x + 5QD/0fAA////AAAAAAAsAC8ASwBQAGkAcACHAJAApQCwAMQAzwDhAPAA8BH/APIx/wD0Uf8A9nH/APeR + /wD5sf8A+9H/AP///wAAAAAAGwAvAC0AUAA/AHAAUgCQAGMAsAB2AM8AiADwAJkR/wCmMf8AtFH/AMJx + /wDPkf8A3LH/AOvR/wD///8AAAAAAAgALwAOAFAAFQBwABsAkAAhALAAJgDPACwA8AA+Ef8AWDH/AHFR + /wCMcf8AppH/AL+x/wDa0f8A////ADIyMjIyMjIyMjIyMjIyMjEsKywsLCwwLC4uLi4uLi4uLy4vLy8v + MTExMTIxMjIyMjIyMjIyMjIyMjIyMjIyMiwrLCwsLC0tLiwwLi4uLi4uLi4uLy8vLzExMTExMTIyMjIy + MjIyMjIyMjIyMjIvKy0rLSstLCwsLCwsLC4uLi4uLi4vLi8vLy8xMTEyMTIxMjIyMjIyMjIyMjIyMjEt + KysrKyssLCwsLSwuLC4uLi4uLi4uLi4vLy8vMTExMTEyMTIyMjIyMjIyMjIyLhUVFRUVKxUVKysrKyss + KywsLC0sLi4uLi8uLy8vLy8xMTEyMTIyMjIyMjIyMi4rDw8PDw8PFA8UFBQUFBQUFBQUFBUVFSsuLi4u + Li8vLy8xMTExMTIyMjIyMjIvLBILBgYHBwcHBwsHBwsLCwsLCwsNCw0NDRMYLC4uLy4vLy8vLzExMTIy + MjIyMjItQldoaWlpaWtraWtraWtra2tra2tra2tra2UqLi4uLi4vLy8vLy8xMTIyMjIyMi9Me4+fn5+f + n5+fn5+fn5+fn5+fn5+fn5+fn4g4LS4uLi4vLi8vLy8vMTIyMjIyMjBfj5+fj4+fn5+Pn5+fn4+Pj4+P + j5+fn5+fn4g5LC4uLi4uLi4vLy8vLzIyMjIyMjVyn595XV5eXl5eXl5eXl5eXmBeYGBgYGBgYFw0LC4u + Li4uLi8uLy8vLzIyMjIyMjV1n49aEhQUFBQUFBQUGBQVGBUYFRUrFSsVKy0rKywtLC4uLi4uLi8vLzIy + MjIyMjVzn59dDhQUFA8OCQkJDgkODg4ODg4ODw8PDw8UDw8UFSssLi4uLy4vLzIyMjIyMjVzn49aDxQU + DgobIiIiIiIiIiQiJCQkJCQkJCQkJCUlHg8YLi4uLi4uLzIyMjIyMjVzn59aDg8OHFV3hIOEg4SEhIiE + hISEhISIhIiEhISGdksWLC4uLi4vLjIyMjIyMjZzn49aDhQMVY2fn5+fn5+fn5+fn5+fn5+fn5+fn5+f + n4hGKywwLi4uLjIyMjIyMTVzn59aDg8mfJ+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn59kGCwuLi4uLjIy + MjIyMjZzn49aDg4ohp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn59xGSwuLi4uLjIyMjIyMjVzn49aDg8o + iJ+fn4+FgICAgICAgICFj5+fn5+fn5+fn59xGS0uLi4uLjIyMjIyMjVzn49aDA4oiJ+fn4JDKSkqKioq + KipDhZ+fn5+fn5+fn59zGS0uLi4uLjIyMjIyMjVzn59aDA4oiJ+fn34fCQ4ODg8ODw4mgJ+fn5+fn5+f + n59xGSwsMCwuLjIyMjIyMjZzn59aDg4oiJ+fn34gAAUFBQUFBQUhfp+fn5+fn5+fn59xGS0sLC4uLjIy + MjIyMjVzn59aCQ4oiJ+fn4tnYmJiYmJiYmJnjJ+fn5+fn5+fn59sGSswLCwuLjIyMjIyMjVzn59aDA4o + iJ+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn59xGS0tLCwuMDIyMjIyMjVzn59aCQ4oiJ+fn5+fn5+fn5+f + n5+fn5+fn5+fn5+fn59sFyssLSwsLDIyMjIyMjZzn59aCQ4oiJ+fn4xqZmZtbW1tbW1tbW1tbW1teI+P + n59xGS0sLCwtLjIyMjIyMjVzn59WCQkoiJ+fn34jEBISEhIWEhYWFhYWFhYSSI6fn59sFysrLCwtLDIy + MjIyMjVzn59WCQkoiJ+fn34dBAgICQgJCQkJCQkOCQ4JRY6fn59xFyssLCwsLDIyMjIyMjVzn59aCAko + iJ+fn4I/AQEBARoaGhoaGhoaGhsaSo6fn59sFysrLCwsLDIyMjIyMjZzn59WCAkliJ+fn46BfX2BfYF9 + gX2BfYF+gX59hI+fn59sFxUrKywrLDIyMjIyMTVzn49WCAkoiJ+fn5+fn5+fn5+fn5+fn5+fn5+fn5+f + n59sFxUrLCssKzIyMjIyMjtzn59aCA84iJ+fn5+Pj4+Pj4+Pj4+Pj4+Pj4+Pj5+fn59sExUrKysrLDIy + MjIyMjZ1n49aDy46iJ+fn4lZUFBRUVFRUVFRUVFRUVFRY4+fn59xExUrKyssMTIyMjIyMjtuiopcMTE6 + ip+fn4AfCA4ODg4ODg4PDg8OFA4OR46fn59sExUrKywxMjIyMjIyMjI9Pj48MjE6ip+fn34bAgIEBAQE + BAQECAgICAgERI6fn59sExUrLDIyMjIyMjIyMjIyMjIyMjI6ip+fn4hJQEBAQEBAQEBAQEBAQEBAU4+P + n59sExUrMTIyMjIyMjIyMjIyMjIyMjE6ip+fn5+Ojo6Ojo6Ojo6Ojo6Ojo6Oj5+fn59sEysyMjIyMjIy + MjIyMjIyMjIyMjI+h5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn59wGS4yMjIyMjIyMjIyMjIyMjIyMjI8 + ep+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn49fMzIyMjIyMjIyMjIyMjIyMjIyMjIyUoqfn5+fn5+fn5+f + n5+fn5+fn5+fn5+fj39OMjIyMjIyMjIyMjIyMjIyMjIyMjIyM09vdXV1dXV1dXV1dXV1dXV1dXV1dXV0 + YU4yMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIzOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MzIyMjIyMjIyMjIy + MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy + MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy + MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy + MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy + MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAACgAAAAgAAAAQAAAAAEACAAAAAAAgAQAAAAAAAAAAAAAAAEAAAAAAAAWFsYAGRnCABkZ + xwAXF8kAFxfNABkZygAaGs0AFhbQABUV1gAaGtEAGBjUABUV2QAWFt0AICDOADMzzgA/P8kALCzeADMz + 0QAzM9QANDTVADw81AA1Nd4AOTnaABYW4QAWFuUAHBziABkZ5AAXF+kAFxfsAB4e6QAYGO4AHh7sABgY + 8gAeHvEALCzjACws6gA2NuEAPj7mAD8/6QAvL/IAPT3xAEFBxwBJScYAQUHKAElJyABISM0AQ0PXAElJ + 0ABOTtIASUnUAE5O1gBCQtkAQkLdAEpK3QBQUNsAdXXVAHd33ABKSuAATU3rAE1N7QBAQPMAR0fyAE1N + 8wBLS/QAb2/hAImJ5wCenuQAior1AKio4QCqquYApaXrAKSk7QCqquoArKzuALCw5QC0tOYAtLToALKy + 7AC2tuwAubnpALy86AC5ue0Ao6PyAKGh9QCkpPYAq6vwAKys8ACvr/kAt7f1ALq68ADHx/EAysr7AN/f + 8wDe3vYA4uL3AObm9gDs7PcA4eH4AOTk+gDn5/0A7Oz6AO3t/ADx8fkA9fX7APHx/AD19fwA+fn8AP7+ + /gDA/5EA0v+xAOT/0QD///8AAAAAACYvAABAUAAAWnAAAHSQAACOsAAAqc8AAMLwAADR/xEA2P8xAN7/ + UQDj/3EA6f+RAO//sQD2/9EA////AAAAAAAvJgAAUEEAAHBbAACQdAAAsI4AAM+pAADwwwAA/9IRAP/Y + MQD/3VEA/+RxAP/qkQD/8LEA//bRAP///wAAAAAALxQAAFAiAABwMAAAkD4AALBNAADPWwAA8GkAAP95 + EQD/ijEA/51RAP+vcQD/wZEA/9KxAP/l0QD///8AAAAAAC8DAABQBAAAcAYAAJAJAACwCgAAzwwAAPAO + AAD/IBIA/z4xAP9cUQD/enEA/5eRAP+2sQD/1NEA////AAAAAAAvAA4AUAAXAHAAIQCQACsAsAA2AM8A + QADwAEkA/xFaAP8xcAD/UYYA/3GcAP+RsgD/scgA/9HfAP///wAAAAAALwAgAFAANgBwAEwAkABiALAA + eADPAI4A8ACkAP8RswD/Mb4A/1HHAP9x0QD/kdwA/7HlAP/R8AD///8AAAAAACwALwBLAFAAaQBwAIcA + kAClALAAxADPAOEA8ADwEf8A8jH/APRR/wD2cf8A95H/APmx/wD70f8A////AAAAAAAbAC8ALQBQAD8A + cABSAJAAYwCwAHYAzwCIAPAAmRH/AKYx/wC0Uf8AwnH/AM+R/wDcsf8A69H/AP///wAAAAAACAAvAA4A + UAAVAHAAGwCQACEAsAAmAM8ALADwAD4R/wBYMf8AcVH/AIxx/wCmkf8Av7H/ANrR/wD///8AICAgICAg + ICAgIBsXGBgaGBsbGxsbHBscHBweHh4gHiAgICAgICAgICAbFxcYGBgaGxsbGxsbGxwcHBwcHh4gHiAg + ICAgICAeGxcXFxcXFxgYGhgbGxsbHBscHhwcHiAeICAgICAgGwwICAgLCwsLDAwMDAwMDBgbGxscHB4c + Hh4gICAgHhkULS0tLS8vLy8vLy8xLzExFhobHBscHBwcHiAgICAdQV9mZmZoZmZnZmZoaGhmaGhWGRsb + GxscHB4cICAgICZja2NiYmJiYmJiYmJiY2JjYlIaGxsbHBscHBwgICAgO2ljNhUVFRUVFSQkJCQkJCQk + IhoaGxsbGxscHCAgICA7aF4TCwgHBQUFBgYGBgYJCQkJCQkKFxsbHBscICAgIDtoYRMIDThKS0tLS0xM + TExLTExMTEIuFxsbGxsgICAgOmheEwo4aW9vb29vb29vb29vb29va1oQGxsbGyAgICA7aF4TCU1vb29v + b29vb29vb29vb29vaDkYGxsbICAgIDpoXhMJTm9vYUlVVVVWVl5vb29vb29oORgbGxsgICAgO2heEglR + b29IBgoKCgoJSW9vb29vb2g5GhsbGyAgICA6aF4TCU5vb08pDysPKytRb29vb29vaDkYGhsbICAgIDtp + YhEGTm9vamBgYGBgYGpvb29vb29oORcYGBsgICAgOmheEgZOb29qZWVlZWVlZWVlZWhvb2k5FxgaGCAg + ICA7aGIRBk5vb1EuNDQ0NDQ0NDQ0QGlvaDkXGBgYICAgIDtoXg4GTm9vRQEAAAADAwMFBAMwaG9oORcY + GBggICAgO2hhEQZOb29cRERERERFREVERFBrb2g5DBcYGCAgICA7aF4OCU5vb29vb29vb29vb29vb29v + aTUXFxcXICAgID5oYhMZWG9vYUdHR0dHR0dHR0dZam9oNQwXFxwgICAgPFdUIx9Yb29IAgQEBAQECQcJ + CjJpb2g1DBcbICAgICAgISEgIVhvb1AsKiwsLC0sLC0sN2lvaDUMGyAgICAgICAgICAhWG9vamlpaGlo + aWhpaGlpb29oNRsgICAgICAgICAgICBUa29vb29vb29vb29vb29vb2MmICAgICAgICAgICAgID1baGho + aGhoaGhoaGhoaGhjQyEgICAgICAgICAgICAgICc/Pj4+Pj4+Pj4+Pj4+PjwhICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAKAAAABAAAAAgAAAAAQAIAAAAAABAAQAAAAAAAAAAAAAAAQAAAAAAAB8f1QAWFtoAFhbdABcX + 4QAWFuUAGBjjABgY5QAXF+kAFxfsABgY6AAYGO4AGBjyACoq4QA/P+oALS3zAD8/8wBISNEAWFjYAFlZ + 3ABjY9YAY2PYAGJi3wBoaNoAamrdAH9/3gBBQeYAR0flAEJC8ABKSvQAZmbhAGxs5QBlZfIAbW3wAIWF + 3QCJieMAiYnlAIWF6wCMjOsAi4vuAIyM7ACVleEAkpLmAJub5QCcnOYAlpbqAJOT7wCXl+wAmZnoAJyc + 7QCIiPcAlZXzAJ6e9QCVlfgAn5/5AKmp7gC4uOoAubnvAMPD8gDFxfMAzs70ANfX9QDr6/gA7u75APHx + +gD29v0A+fn9AP39/gAAcCIAAJAsAACwNgAAz0AAAPBKABH/WwAx/3EAUf+HAHH/nQCR/7IAsf/JANH/ + 3wD///8AAAAAAAIvAAAEUAAABnAAAAiQAAAKsAAAC88AAA7wAAAg/xIAPf8xAFv/UQB5/3EAmP+RALX/ + sQDU/9EA////AAAAAAAULwAAIlAAADBwAAA9kAAATLAAAFnPAABn8AAAeP8RAIr/MQCc/1EArv9xAMD/ + kQDS/7EA5P/RAP///wAAAAAAJi8AAEBQAABacAAAdJAAAI6wAACpzwAAwvAAANH/EQDY/zEA3v9RAOP/ + cQDp/5EA7/+xAPb/0QD///8AAAAAAC8mAABQQQAAcFsAAJB0AACwjgAAz6kAAPDDAAD/0hEA/9gxAP/d + UQD/5HEA/+qRAP/wsQD/9tEA////AAAAAAAvFAAAUCIAAHAwAACQPgAAsE0AAM9bAADwaQAA/3kRAP+K + MQD/nVEA/69xAP/BkQD/0rEA/+XRAP///wAAAAAALwMAAFAEAABwBgAAkAkAALAKAADPDAAA8A4AAP8g + EgD/PjEA/1xRAP96cQD/l5EA/7axAP/U0QD///8AAAAAAC8ADgBQABcAcAAhAJAAKwCwADYAzwBAAPAA + SQD/EVoA/zFwAP9RhgD/cZwA/5GyAP+xyAD/0d8A////AAAAAAAvACAAUAA2AHAATACQAGIAsAB4AM8A + jgDwAKQA/xGzAP8xvgD/UccA/3HRAP+R3AD/seUA/9HwAP///wAAAAAALAAvAEsAUABpAHAAhwCQAKUA + sADEAM8A4QDwAPAR/wDyMf8A9FH/APZx/wD3kf8A+bH/APvR/wD///8AAAAAABsALwAtAFAAPwBwAFIA + kABjALAAdgDPAIgA8ACZEf8ApjH/ALRR/wDCcf8Az5H/ANyx/wDr0f8A////AAAAAAAIAC8ADgBQABUA + cAAbAJAAIQCwACYAzwAsAPAAPhH/AFgx/wBxUf8AjHH/AKaR/wC/sf8A2tH/AP///wALCwsLCgUEBgkJ + BwcICgoKCwsLCQIBAgIDAwUGCAgKCgsLDSkrKisrKysvGgcICAgLCzI6JScnJycnJhkGBwcICws1IwAR + FhcXFxcXFQwHBwsLMyUSP0FBQUFCQkEkCQcLCzMlF0EvHR0wQk9PMAYHCwszIxdCNygoOEJPTzAGCQsL + MyMXQjguLi4uNkAwBQQLCzMjF0IoExQUFBg/MAMECws1Ix5CPDk6OTk7QTADBAsLHBsgQSEQEBAQFz8w + AwoLCwsLH0E/PT09PT5PLQoLCwsLCw4xNTU1NTU1NA8LCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsL + CwsLCwsLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAACgAAABAAAAAgAAAAAEAIAAAAAAAAEIAAAAAAAAAAAAAAAAAAAAAAAAYGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8f8XF+f/Fhbj/xYW4/8WFuT/Fhbk/xYW5P8XF+X/Fxfl/xcX5v8XF+b/Fxfm/xcX + 5/8XF+f/Fxfo/xcX6P8XF+j/Fxfp/xcX6f8XF+n/Fxfp/xcX6f8XF+r/Fxfq/xcX6v8XF+v/Fxfr/xcX + 6/8XF+z/Fxfs/xcX7f8XF+3/Fxft/xgY7v8YGO7/GBjv/xgY7/8YGO//GBjw/xgY8P8YGPD/GBjx/xgY + 8f8YGPL/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8f8XF+j/Fhbi/xYW4/8WFuP/Fhbj/xYW5P8WFuT/Fhbk/xcX + 5f8XF+X/Fxfm/xcX5v8XF+b/Fxfn/xcX5/8XF+j/Fxfo/xcX6P8XF+n/Fxfp/xcX6f8XF+n/Fxfp/xcX + 6v8XF+r/Fxfq/xcX6/8XF+v/Fxfr/xcX7P8XF+z/Fxft/xcX7f8XF+3/GBju/xgY7v8YGO//GBjv/xgY + 7/8YGPD/GBjw/xgY8P8YGPH/GBjx/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8f8WFuf/Fhbi/xYW4v8WFuL/Fhbj/xYW + 4/8WFuP/Fhbk/xYW5P8WFuT/Fxfl/xcX5f8XF+b/Fxfm/xcX5v8XF+f/Fxfn/xcX6P8XF+j/Fxfo/xcX + 6f8XF+n/Fxfp/xcX6f8XF+n/Fxfq/xcX6v8XF+r/Fxfr/xcX6/8XF+v/Fxfs/xcX7P8XF+3/Fxft/xcX + 7f8YGO7/GBju/xgY7/8YGO//GBjv/xgY8P8YGPD/GBjw/xgY8f8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8f8WFub/Fhbh/xYW + 4f8WFuH/Fhbi/xYW4v8WFuP/Fhbj/xYW4/8WFuT/Fhbk/xYW5P8XF+X/Fxfl/xcX5v8XF+b/Fxfm/xcX + 5/8XF+f/Fxfo/xcX6P8XF+j/Fxfp/xcX6f8XF+n/Fxfp/xcX6f8XF+r/Fxfq/xcX6v8XF+v/Fxfr/xcX + 6/8XF+z/Fxfs/xcX7f8XF+3/Fxft/xgY7v8YGO7/GBjv/xgY7/8YGO//GBjw/xgY8P8YGPD/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8f8WFub/Fhbg/xYW4P8WFuH/Fhbh/xYW4f8WFuL/Fhbi/xYW4/8WFuP/Fhbj/xYW5P8WFuT/Fhbk/xcX + 5f8XF+X/Fxfm/xcX5v8XF+b/Fxfn/xcX5/8XF+j/Fxfo/xcX6P8XF+n/Fxfp/xcX6f8XF+n/Fxfp/xcX + 6v8XF+r/Fxfq/xcX6/8XF+v/Fxfr/xcX7P8XF+z/Fxft/xcX7f8XF+3/GBju/xgY7v8YGO//GBjv/xgY + 7/8YGPD/GBjw/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8v8YGPL/GBjy/xgY7/8WFuX/Fhbe/xYW3v8WFt//Fhbf/xYW4P8WFuD/Fhbg/xYW4f8WFuH/Fhbi/xYW + 4v8WFuL/Fhbj/xYW4/8WFuP/Fhbk/xYW5P8XF+X/Fxfl/xcX5f8XF+b/Fxfm/xcX5v8XF+f/Fxfn/xcX + 6P8XF+j/Fxfo/xcX6f8XF+n/Fxfq/xcX6v8XF+r/Fxfr/xcX6/8XF+v/Fxfs/xcX7P8XF+3/Fxft/xcX + 7f8YGO7/GBju/xgY7/8YGO//GBjv/xgY8P8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjy/xgY8f8YGPD/GBjv/xgY7P8WFuH/Fhba/xYW2v8WFtr/Fhbb/xYW2/8WFtv/Fhbc/xYW + 3P8WFt3/Fhbd/xYW3f8WFt7/Fhbe/xYW3/8WFt//Fhbf/xYW4P8WFuD/Fhbg/xYW4f8WFuH/Fhbh/xYW + 4v8WFuL/Fhbj/xYW4/8WFuT/Fxfl/xcX5f8XF+f/Fxfp/xcX6f8XF+r/Fxfq/xcX6v8XF+v/Fxfr/xcX + 6/8XF+z/Fxfs/xcX7f8XF+3/Fxft/xgY7v8YGO7/GBjv/xgY7/8YGO//GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjy/xgY8P8XF+z/Fxfq/xcX5f8VFdn/FRXS/xUV0v8VFdL/FRXS/xUV + 0/8VFdP/FRXT/xUV1P8VFdT/FRXV/xUV1f8VFdX/FRXV/xUV1v8VFdb/FRXW/xUV1/8VFdf/FRXX/xUV + 2P8VFdj/FRXZ/xUV2f8VFdn/Fhba/xYW2v8WFtv/Fhbb/xYW3P8WFt//Fhbj/xcX5v8XF+n/Fxfp/xcX + 6v8XF+r/Fxfq/xcX6/8XF+v/Fxfr/xcX7P8XF+z/Fxft/xcX7f8XF+3/GBju/xgY7v8YGO//GBjv/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjy/xgY7/8XF+v/Fxfk/xYW3P8UFM3/FBTF/xQU + xP8UFMT/FBTF/xQUxf8UFMb/FBTG/xQUxv8UFMf/FBTH/xQUx/8UFMf/FBTH/xQUyP8UFMj/FBTJ/xQU + yf8UFMn/FBTK/xQUyv8VFcr/FRXL/xUVy/8VFcv/FRXM/xUVzP8VFcz/FRXN/xUVzf8VFc//FRXU/xYW + 3P8WFuP/Fxfn/xcX6f8XF+n/Fxfq/xcX6v8XF+r/Fxfr/xcX6/8XF+v/Fxfs/xcX7P8XF+3/Fxft/xcX + 7f8YGO7/GBju/xgY7/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjy/xgY8P8XF+v/Fhbj/xwc + 1v89Pcr/Xl7I/2dnyf9nZ8n/Z2fJ/2dnyv9nZ8r/Z2fK/2dnyv9nZ8r/Z2fK/2dny/9nZ8v/Z2fL/2dn + y/9oaMz/aGjM/2hozP9oaMz/aGjM/2hozP9oaM3/aGjN/2hozf9oaM3/aGjN/2hozv9oaM7/aGjO/2ho + zv9oaM7/aGjQ/2ho1P85Odf/Fhbg/xcX5v8XF+n/Fxfp/xcX6f8XF+r/Fxfq/xcX6v8XF+v/Fxfr/xcX + 6/8XF+z/Fxfs/xcX7f8XF+3/Fxft/xgY7v8YGO7/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8v8YGO7/Fxfm/yYm2f+Jid7/3t7y//b2+//5+fz/+vr9//r6/f/6+v3/+vr9//r6/f/6+v3/+vr9//r6 + /f/6+v3/+vr9//r6/f/6+v3/+vr9//r6/f/6+v3/+vr9//r6/f/6+v3/+vr9//r6/f/6+v3/+vr9//r6 + /f/6+v3/+vr9//r6/f/6+v3/+vr9//r6/f/4+Pz/eHjl/xcX3/8XF+b/Fxfo/xcX6f8XF+n/Fxfp/xcX + 6v8XF+r/Fxfq/xcX6/8XF+v/Fxfr/xcX7P8XF+z/Fxft/xcX7f8XF+3/GBju/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPH/Fxfr/x4e4f+JieP/9fX8//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////f3+/3p65/8XF9//Fxfm/xcX + 6P8XF+n/Fxfp/xcX6f8XF+n/Fxfq/xcX6v8XF+r/Fxfr/xcX6/8XF+v/Fxfs/xcX7P8XF+3/Fxft/xcX + 7f8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjw/xcX6v9AQOL/39/2//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////39 + /v96eun/Fxfi/xcX5v8XF+j/Fxfp/xcX6f8XF+n/Fxfp/xcX6f8XF+r/Fxfq/xcX6v8XF+v/Fxfr/xcX + 6/8XF+z/Fxfs/xcX7f8XF+3/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8P8XF+n/YmLn//b2 + /f////////////v7/v/m5vn/4uL5/+Li+v/i4vr/4uL6/+Li+v/i4vr/4uL6/+Li+v/i4vr/4uL6/+Li + +v/i4vr/4uL6/+Li+v/i4vr/4uL6/+Li+v/i4vr/4uL6/+Li+v/i4vr/4uL6/+Li+v/i4vv/4uL7/+Li + +//i4vv/4uL7/+Li+//h4fv/bm7r/xcX5P8XF+f/Fxfo/xcX6P8XF+n/Fxfp/xcX6f8XF+n/Fxfp/xcX + 6v8XF+r/Fxfq/xcX6/8XF+v/Fxfr/xcX7P8XF+z/Fxft/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPD/Fxfp/2xs6v/6+v7////////////m5vf/V1fX/zo62f86Otz/Ojre/zo63v86Ot7/Ojrf/zo6 + 3v86Ot//Ojrf/zo63/87O+D/Ozvg/zs74P87O+H/Ozvh/zs74f87O+H/Ozvh/zs74v87O+L/Ozvj/zs7 + 4/87O+P/Ozvk/zs75P87O+T/Ozvl/zs75f87O+X/Ojrm/yYm5f8XF+X/Fxfl/xcX5v8XF+f/Fxfn/xcX + 6P8XF+n/Fxfp/xcX6f8XF+n/Fxfq/xcX6v8XF+r/Fxfr/xcX6/8XF+v/Fxfs/xcX7P8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjw/xcX6f9sbOr/+vr+////////////4eH2/zg40f8VFdT/FRXY/xYW + 2v8WFtr/Fhba/xYW2f8WFtn/FRXY/xUV2P8VFdj/FRXY/xYW2f8WFtn/Fhba/xYW2v8WFtr/Fhbb/xYW + 2/8WFtz/Fhbc/xYW3P8WFt3/Fhbd/xYW3f8WFt7/Fhbe/xYW3/8WFt//Fhbf/xYW4P8WFuD/Fhbh/xYW + 4v8WFuL/Fhbj/xYW5P8XF+X/Fxfn/xcX6P8XF+n/Fxfp/xcX6f8XF+r/Fxfq/xcX6v8XF+v/Fxfr/xcX + 6/8XF+z/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8P8XF+n/bGzq//r6/v///////////+Hh + 9v84ONL/FRXU/xUV2f8WFtr/Fhba/xUV2f8VFdb/FRXT/xUV0v8VFdH/FRXR/xUV0f8VFdH/FRXR/xUV + 0v8VFdL/FRXS/xUV0/8VFdP/FRXT/xUV1P8VFdT/FRXU/xUV1f8VFdX/FRXV/xUV1v8VFdb/FRXW/xUV + 1/8VFdf/FRXY/xUV2P8VFdj/FRXZ/xYW2f8WFtv/Fhbe/xYW4v8XF+X/Fxfo/xcX6f8XF+n/Fxfp/xcX + 6v8XF+r/Fxfq/xcX6/8XF+v/Fxfr/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/Fxfp/2xs + 6v/6+v7////////////h4fb/ODjR/xUV1P8VFdj/FRXZ/xUV2P8VFdP/FBTO/xQUyf8UFMX/FBTD/xQU + w/8UFMP/FBTD/xQUw/8UFMT/FBTE/xQUxf8UFMX/FBTF/xUVxf8VFcb/FRXG/xUVx/8VFcf/FRXH/xUV + x/8VFcj/FRXI/xUVyP8VFcn/FRXJ/xUVyf8VFcr/FRXK/xUVyv8VFcz/FRXO/xUV0/8VFdn/Fhbg/xcX + 5f8XF+j/Fxfp/xcX6f8XF+n/Fxfq/xcX6v8XF+r/Fxfr/xcX6/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjw/xcX6f9sbOr/+vr+////////////4eH2/zg40f8VFdP/FRXX/xUV1/8VFdT/FBTM/xwc + w/9FRcT/bGzM/3d3zv93d87/d3fO/3d3z/93d8//d3fP/3d3z/93d8//d3fP/3h4z/94eM//eHjQ/3h4 + 0P94eND/eHjQ/3h40P94eND/eHjQ/3h40P94eNH/eHjR/3h40f94eNH/eHjR/3h40v94eNL/d3fS/21t + 0f9GRsv/HR3N/xUV2P8WFuD/Fxfm/xcX6P8XF+n/Fxfp/xcX6f8XF+r/Fxfq/xcX6v8XF+v/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8P8XF+n/bGzq//r6/v///////////+Hh9v84ONH/FRXT/xUV + 1v8VFdX/FBTO/yUlxv+Pj9n/5OT0//n5/P/8/P7//Pz+//z8/v/8/P7//Pz+//z8/v/8/P7//Pz+//z8 + /v/8/P7//Pz+//z8/v/8/P7//Pz+//z8/v/8/P7//Pz+//z8/v/8/P7//Pz+//z8/v/8/P7//Pz+//z8 + /v/8/P7//Pz+//z8/v/5+f3/5OT1/46O3P8lJdD/Fhbb/xYW4/8XF+j/Fxfp/xcX6f8XF+n/Fxfp/xcX + 6v8XF+r/Fxfq/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/Fxfp/2xs6v/6+v7///////// + ///h4fb/ODjQ/xUV0/8VFdX/FRXS/x0dyv+Pj9z/9/f8//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////29vz/iYnf/x0d1/8WFuH/Fxfm/xcX + 6f8XF+n/Fxfp/xcX6f8XF+n/Fxfq/xcX6v8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjw/xcX + 6f9sbOr/+vr+////////////4eH2/zg40P8VFdL/FRXV/xUV0P9HR9D/5OT2//////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////93d + 9f8+Ptn/Fhbf/xcX5f8XF+j/Fxfp/xcX6f8XF+n/Fxfp/xcX6f8XF+r/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8P8XF+n/bGzq//r6/v///////////+Hh9v84OND/FRXS/xUV1P8VFdD/b2/a//n5 + /f////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////29vz/YGDg/xYW3f8XF+X/Fxfo/xcX6P8XF+n/Fxfp/xcX6f8XF+n/Fxfp/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/Fxfp/2xs6v/6+v7////////////h4fb/ODjQ/xUV + 0f8VFdT/FRXP/3p63f/9/f7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////+vr9/2pq4f8WFt3/Fhbk/xcX5/8XF+j/Fxfo/xcX + 6f8XF+n/Fxfp/xcX6f8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjw/xcX6f9sbOr/+vr+//// + ////////4eH2/zg40P8VFdH/FRXU/xUVz/96et3//f3+////////////////////////////+/v+//n5 + /v/5+f7/+fn+//n5/v/5+f7/+fn+//n5/v/5+f7/+fn+//n5/v/5+f7/+fn+//v7/v////////////// + //////////////////////////////////////////////////////////////r6/f9qauH/Fhbd/xYW + 5P8XF+f/Fxfo/xcX6P8XF+j/Fxfp/xcX6f8XF+n/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8P8XF+n/bGzq//r6/v///////////+Hh9v84OM//FRXR/xUV0/8VFc7/enrd//39/v////////////// + ////////+/v+/5SU5f9iYt7/YmLi/2Ji4/9iYuT/YmLk/2Ji5f9iYuX/YmLl/2Ji5f9iYuX/YmLk/2Ji + 4f+Vlef/+/v+//////////////////////////////////////////////////////////////////// + ///6+v3/amrh/xYW3P8WFuP/Fxfm/xcX5/8XF+j/Fxfo/xcX6P8XF+n/Fxfp/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPD/Fxfp/2xs6v/6+v7////////////h4fb/ODjP/xUV0P8VFdP/FRXO/3p6 + 3f/9/f7///////////////////////n5/f9fX9j/FRXO/xUV1P8VFdb/FRXX/xUV1/8VFdf/FRXY/xUV + 2P8VFdj/FRXY/xUV1/8VFdL/YWHb//n5/f////////////////////////////////////////////// + ////////////////////////+vr9/2pq4f8WFtz/Fhbj/xcX5v8XF+f/Fxfn/xcX6P8XF+j/Fxfo/xcX + 6f8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjw/xcX6f9sbOr/+vr+////////////4eH2/zg4 + z/8VFdD/FRXS/xUVzv96et3//f3+///////////////////////5+f3/X1/W/xQUyf8UFM7/FRXQ/xUV + 0P8VFdH/FRXR/xUV0f8VFdL/FRXS/xUV0v8VFdH/FBTN/2Fh2f/5+f3///////////////////////// + //////////////////////////////////////////////r6/f9qauH/Fhbc/xYW4/8XF+b/Fxfm/xcX + 5/8XF+f/Fxfo/xcX6P8XF+j/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8P8XF+n/bGzq//r6 + /v///////////+Hh9v84OM7/FRXP/xUV0v8VFc3/enrd//39/v//////////////////////+fn9/19f + 0P8TE7//ExPC/xMTxP8TE8T/ExPE/xMTxf8TE8X/ExPG/xQUxv8UFMb/ExPF/xMTw/9gYNP/+fn9//// + ///////////////////////////////////////////////////////////////////6+v3/amrh/xYW + 3P8WFuL/Fxfl/xcX5v8XF+b/Fxfn/xcX5/8XF+j/Fxfo/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPD/Fxfp/2xs6v/6+v7////////////h4fb/ODjO/xUVz/8VFdL/FRXN/3p63P/9/f7///////// + //////////////v7/f+JidP/UVHB/1FRwv9RUcP/UVHD/1FRw/9RUcP/UVHE/1FRxP9RUcT/UVHE/1FR + xP9RUcP/iorV//v7/f////////////////////////////////////////////////////////////// + ////////+vr9/2pq4P8WFtv/Fhbi/xcX5f8XF+b/Fxfm/xcX5v8XF+f/Fxfn/xcX6P8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjw/xcX6f9sbOr/+vr+////////////4eH2/zc3zv8VFc//FRXR/xUV + zP96etz//f3+////////////////////////////9vb7//Ly+f/y8vn/8vL5//Ly+f/y8vn/8vL5//Ly + +f/y8vn/8vL5//Ly+f/y8vn/8vL5//b2+/////////////////////////////////////////////// + //////////////////////////////r6/f9qauD/Fhbb/xYW4f8XF+X/Fxfl/xcX5v8XF+b/Fxfm/xcX + 5/8XF+f/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8P8XF+n/bGzq//r6/v///////////+Hh + 9v83N83/FBTO/xUV0f8VFcz/enrc//39/v////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////6+v3/amrg/xYW2v8WFuH/Fhbk/xcX + 5f8XF+X/Fxfm/xcX5v8XF+b/Fxfn/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/Fxfp/2xs + 6v/6+v7////////////h4fb/NzfN/xQUzv8VFdH/FRXM/3p63P/9/f7///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////+vr9/2pq + 4P8WFtr/Fhbh/xYW5P8WFuT/Fxfl/xcX5f8XF+b/Fxfm/xcX5v8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjw/xcX6f9sbOr/+vr+////////////4eH2/zc3zf8UFM7/FRXQ/xUVy/96etz//f3+//// + ////////////////////////9/f9//Pz/P/z8/z/8/P8//Pz/f/z8/3/8/P9//Pz/f/z8/3/8/P9//Pz + /f/z8/3/8/P9//Pz/f/z8/3/8/P9//Pz/f/z8/3/8/P9//Pz/f/z8/3/8/P8//f3/f////////////// + //////////////r6/f9qauD/Fhba/xYW4P8WFuT/Fhbk/xYW5P8XF+X/Fxfl/xcX5v8XF+b/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8P8XF+n/bGzq//r6/v///////////+Hh9v83N83/FBTN/xUV + 0P8VFcv/enrb//39/v//////////////////////+/v9/4uL4f9VVdn/VVXe/1VV3/9VVeD/VVXg/1VV + 4P9VVeD/VVXh/1VV4f9VVeH/VVXh/1VV4f9VVeL/VVXi/1VV4v9VVeL/VVXj/1VV4/9VVeP/VVXi/1VV + 3v+Wluf//f3+///////////////////////6+v3/amrf/xYW2f8WFuD/Fhbj/xYW5P8WFuT/Fhbk/xcX + 5f8XF+X/Fxfm/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/Fxfp/2xs6v/6+v7///////// + ///h4fb/NzfM/xQUzf8VFc//FRXK/3p62//9/f7///////////////////////n5/f9fX9b/FBTL/xUV + 0f8VFdP/FRXT/xUV1P8VFdT/FRXU/xUV1f8VFdX/FRXV/xUV1v8VFdb/FRXW/xUV1/8VFdf/FRXY/xUV + 2P8VFdj/FRXY/xUV1v8VFdH/bm7d//z8/v//////////////////////+vr9/2lp3/8WFtn/Fhbg/xYW + 4/8WFuP/Fhbk/xYW5P8WFuT/Fxfl/xcX5f8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjw/xcX + 6f9sbOr/+vr+////////////4eH2/zc3zP8UFMz/FRXP/xUVyv96etv//f3+//////////////////// + ///5+f3/X1/T/xQUxf8UFMr/FBTM/xQUzP8UFM3/FBTN/xQUzf8UFM7/FBTO/xQUzv8VFc//FRXP/xUV + z/8VFdD/FRXQ/xUV0f8VFdH/FRXR/xUV0f8VFdD/FBTM/21t2//8/P7///////////////////////r6 + /f9pad//FhbZ/xYW3/8WFuL/Fhbj/xYW4/8WFuT/Fhbk/xYW5P8XF+X/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8P8XF+n/bGzq//r6/v///////////+Hh9f83N8z/FBTM/xQUz/8VFcr/enrb//39 + /v//////////////////////+fn9/15ezv8TE7v/ExO//xMTwP8TE8D/ExPA/xMTwP8TE8H/ExPB/xMT + wf8TE8L/ExPC/xMTw/8TE8P/ExPD/xMTxP8TE8T/ExPE/xMTxf8TE8T/ExPE/xMTwv9tbdb//Pz+//// + ///////////////////6+v3/aWnf/xYW2P8WFt//Fhbi/xYW4/8WFuP/Fhbj/xYW5P8WFuT/Fhbk/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/Fxfp/2xs6v/6+v7////////////h4fX/NzfL/xQU + zP8UFM7/FRXJ/3p62//9/f7///////////////////////v7/f+RkdT/XV3C/11dw/9dXcP/XV3D/11d + xP9dXcT/XV3E/11dxf9dXcX/XV3F/11dxf9dXcX/Xl7G/15exv9eXsb/Xl7G/15exv9eXsb/Xl7G/15e + xv9eXsb/m5va//39/v//////////////////////+vr9/2lp3/8WFtj/Fhbe/xYW4v8WFuL/Fhbj/xYW + 4/8WFuP/Fhbk/xYW5P8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjw/xcX6f9sbOr/+vr+//// + ////////4eH1/zc3y/8UFMv/FBTO/xUVyf96etr//f3+////////////////////////////+/v9//n5 + /P/5+fz/+fn8//n5/P/5+fz/+fn8//n5/P/5+fz/+fn8//n5/P/5+fz/+fn8//n5/P/5+fz/+fn8//n5 + /P/5+fz/+fn8//n5/P/5+fz/+fn8//v7/f////////////////////////////r6/f9pad7/FhbX/xYW + 3v8WFuH/Fhbi/xYW4v8WFuP/Fhbj/xYW4/8WFuT/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8P8XF+n/bGzq//r6/v///////////+Hh9f83N8v/FBTL/xQUzf8VFcn/enrc//39/v////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///6+v3/aWne/xYW1/8WFt7/Fhbh/xYW4f8WFuL/Fhbi/xYW4/8WFuP/Fhbj/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPD/Fxfp/2xs6v/6+v7////////////h4fX/NzfK/xQUy/8UFM7/FRXS/3x8 + 5//9/f////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////+vr9/2lp3v8WFtf/Fhbd/xYW4P8WFuH/Fhbh/xYW4v8WFuL/Fhbj/xYW + 4/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjw/xcX6v9sbOv/+vr+////////////4eH2/zc3 + zP8UFMz/FRXY/xgY5P98fOv//f3/////////////////////////////9/f9//Pz/P/z8/z/8/P8//Pz + /P/z8/3/8/P9//Pz/f/z8/3/8/P9//Pz/f/z8/3/8/P9//Pz/f/z8/3/8/P9//Pz/f/z8/3/8/P9//Pz + /f/z8/3/8/P8//j4/f////////////////////////////r6/f9pad3/FhbW/xYW3f8WFuD/Fhbh/xYW + 4f8WFuH/Fhbi/xYW4v8XF+j/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8f8YGOz/bGzt//r6 + /v///////////+Hh9v83N87/FRXX/xcX6v8YGOj/fHzr//39////////////////////////+/v9/46O + 4f9ZWdj/WVnc/1lZ3v9ZWd7/WVne/1lZ3/9ZWd//Wlrf/1pa3/9aWt//Wlrg/1pa4P9aWuD/Wlrh/1pa + 4f9aWuH/Wlrh/1pa4f9aWuL/Wlrg/1lZ3P+YmOb//f3+///////////////////////6+v3/aWnd/xUV + 1v8WFtz/Fhbg/xYW4P8WFuH/Fhbh/xYW4v8XF+j/GBjx/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPL/GBjv/2xs8P/4+P7//f3///39///f3/f/OTnc/xgY6/8YGO//GBjo/3x86//9/f////////// + //////////////n5/f9fX9T/FBTH/xQUzf8VFc//FRXQ/xUV0P8VFdH/FRXR/xUV0f8VFdL/FRXS/xUV + 0/8VFdP/FRXT/xUV1P8VFdT/FRXU/xUV1P8VFdX/FRXV/xUV0/8VFc7/bW3c//z8/v////////////// + ////////+vr9/2lp3f8VFdb/Fhbc/xYW3/8WFuD/Fhbg/xYW4f8WFuf/GBjx/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8f89PfL/e3v2/3199v99ffb/cHD0/ycn7/8YGPH/GBjv/xgY + 6P98fOv//f3////////////////////////5+f3/X1/R/xMTwv8UFMb/FBTI/xQUyf8UFMn/FBTJ/xQU + yv8UFMr/FBTK/xQUy/8UFMv/FBTL/xQUzP8UFMz/FBTM/xQUzf8UFM3/FBTO/xQUzf8UFMz/FBTI/21t + 2f/8/P7///////////////////////r6/f9pad3/FRXV/xYW3P8WFt//Fhbf/xYW4P8WFub/GBjx/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjy/xkZ8v8ZGfH/GRnx/xkZ + 8v8YGPL/GBjy/xgY7/8YGOj/fHzr//39////////////////////////+fn9/15ezP8TE7f/ExO6/xMT + vP8TE7z/ExO8/xMTvf8TE73/ExO+/xMTvv8TE77/ExO//xMTv/8TE7//ExO//xMTv/8TE8D/ExPA/xMT + wP8UFMH/ExPA/xMTvv9tbdT//Pz+///////////////////////6+v3/aWnd/xUV1f8WFtv/Fhbf/xYW + 3/8WFub/GBjx/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8v8YGO//GBjo/3x86//9/f////////////////////////v7 + /f+amtb/aWnE/2pqxf9qasX/amrG/2pqxv9qasb/amrG/2pqxv9qasf/amrH/2pqx/9qasf/amrH/2pq + x/9qasj/amrI/2pqyP9qasj/amrI/2pqyP9qasj/o6Pc//39/v//////////////////////+vr9/2lp + 3f8VFdX/Fhbb/xYW3v8WFub/GBjx/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjw/xgY6f98fOv//f3///// + /////////////////////////f3+//z8/f/8/P3//Pz9//z8/f/8/P3//Pz9//z8/f/8/P3//Pz+//z8 + /v/8/P7//Pz+//z8/v/8/P7//Pz+//z8/v/8/P7//Pz+//z8/v/8/P7//Pz+//39/v////////////// + //////////////r6/f9pad3/FRXV/xYW2/8WFuX/GBjx/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8P8YGOr/fHzt//39//////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////6+v3/aWne/xYW1v8WFuL/GBjx/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPH/GBjs/3Jy7v/5+f7///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////9vb8/2Bg3v8WFt7/GBjv/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjy/xgY7/9LS+7/5ub7//////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////97e + +P8/P+P/GBjt/xgY8v8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPH/ISHu/5OT + 9f/29v7///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////b2/v+KivH/Hx/t/xgY8f8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8f8pKfD/jY32/9/f/P/29v7/+vr+//r6/v/6+v7/+vr+//r6/v/6+v7/+vr+//r6 + /v/6+v7/+vr+//r6/v/6+v7/+vr+//r6/v/6+v7/+vr+//r6/v/6+v7/+vr+//r6/v/6+v7/+vr+//r6 + /v/6+v7/+vr+//r6/v/6+v7/9vb+/9/f/P+Li/T/KCjv/xgY8f8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjy/x8f8P9BQfL/ZGT0/21t9P9tbfT/bW30/21t + 9P9tbfT/bW30/21t9P9tbfT/bW30/21t9P9tbfT/bW30/21t9P9tbfT/bW30/21t9P9tbfT/bW30/21t + 9P9tbfT/bW30/21t9P9tbfT/bW30/21t9P9tbfT/bW30/2Rk9P9CQvH/Hx/w/xgY8v8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPL/GBjy/xgY + 8v8YGPH/GBjx/xgY8f8YGPH/GBjx/xgY8f8YGPH/GBjx/xgY8f8YGPH/GBjx/xgY8f8YGPH/GBjx/xgY + 8f8YGPH/GBjx/xgY8f8YGPH/GBjx/xgY8f8YGPH/GBjx/xgY8f8YGPH/GBjx/xgY8f8YGPL/GBjy/xgY + 8v8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAMAAAAGAAAAABACAAAAAAAIAlAAAAAAAAAAAAAAAA + AAAAAAAAGBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/Fxft/xYW5P8WFuP/Fhbk/xYW5P8XF+X/Fxfl/xcX5v8XF+b/Fxfn/xcX5/8XF+j/Fxfo/xcX + 6f8XF+n/Fxfp/xcX6f8XF+r/Fxfq/xcX6/8XF+v/Fxfs/xcX7P8XF+3/GBju/xgY7v8YGO//GBjv/xgY + 8P8YGPD/GBjx/xgY8f8YGPL/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8XF+7/Fhbk/xYW4v8WFuP/Fhbj/xYW5P8WFuT/Fxfl/xcX5f8XF+b/Fxfm/xcX + 5/8XF+f/Fxfo/xcX6P8XF+n/Fxfp/xcX6f8XF+n/Fxfq/xcX6v8XF+v/Fxfr/xcX7P8XF+z/Fxft/xgY + 7v8YGO7/GBjv/xgY7/8YGPD/GBjw/xgY8f8YGPH/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xcX7f8WFuP/Fhbh/xYW4v8WFuL/Fhbj/xYW4/8WFuT/Fhbk/xcX + 5f8XF+X/Fxfm/xcX5v8XF+f/Fxfn/xcX6P8XF+j/Fxfp/xcX6f8XF+n/Fxfp/xcX6v8XF+r/Fxfr/xcX + 6/8XF+z/Fxfs/xcX7f8YGO7/GBju/xgY7/8YGO//GBjw/xgY8P8YGPH/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/Fxft/xYW4v8WFuD/Fhbh/xYW4f8WFuL/Fhbi/xYW + 4/8WFuP/Fhbk/xYW5P8XF+X/Fxfl/xcX5v8XF+b/Fxfn/xcX5/8XF+j/Fxfo/xcX6f8XF+n/Fxfp/xcX + 6f8XF+r/Fxfq/xcX6/8XF+v/Fxfs/xcX7P8XF+3/GBju/xgY7v8YGO//GBjv/xgY8P8YGPD/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPL/GBjx/xgY8f8XF+r/Fhbf/xYW3f8WFt3/Fhbe/xYW + 3v8WFt//Fhbf/xYW4P8WFuD/Fhbh/xYW4f8WFuL/Fhbi/xYW4/8WFuP/Fhbj/xcX5P8XF+X/Fxfl/xcX + 5v8XF+f/Fxfn/xcX6f8XF+n/Fxfq/xcX6v8XF+v/Fxfr/xcX7P8XF+z/Fxft/xgY7v8YGO7/GBjv/xgY + 7/8YGPD/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8f8YGO7/Fxfq/xYW4v8VFdX/FRXT/xUV + 1P8VFdT/FRXV/xUV1f8VFdb/FRXW/xUV1/8VFdf/FRXX/xUV2P8VFdj/FRXZ/xUV2f8VFdr/FRXa/xUV + 2v8WFtv/Fhbc/xYW3P8WFt3/Fhbh/xcX5f8XF+j/Fxfp/xcX6v8XF+r/Fxfr/xcX6/8XF+z/Fxfs/xcX + 7f8YGO7/GBju/xgY7/8YGO//GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjx/xgY7P8XF+P/GRnV/xwc + xv8cHML/HBzD/xwcw/8dHcP/HR3E/x0dxP8dHcX/HR3F/x0dxf8dHcb/HR3G/x0dx/8dHcf/HR3I/x0d + yP8dHcj/HR3I/x0dyf8dHcn/HR3K/x0dyv8eHs3/HR3T/xgY3v8XF+b/Fxfp/xcX6f8XF+r/Fxfq/xcX + 6/8XF+v/Fxfs/xcX7P8XF+3/GBju/xgY7v8YGO//GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPL/GBju/xgY + 4/9BQdj/lpbd/7m55f+8vOb/vLzm/7y85v+8vOb/vLzn/7y85/+8vOf/vLzn/7y85/+8vOf/vLzn/7y8 + 5/+8vOf/vLzo/7y86P+8vOj/vLzo/7y86P+9vej/vb3o/7296P+9ven/rKzo/zIy3v8XF+X/Fxfp/xcX + 6f8XF+n/Fxfq/xcX6v8XF+v/Fxfr/xcX7P8XF+z/Fxft/xgY7v8YGO7/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPH/Fxfr/0JC4P/R0fL//f3+//////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////6Oj6/z09 + 4f8XF+X/Fxfo/xcX6f8XF+n/Fxfp/xcX6v8XF+r/Fxfr/xcX6/8XF+z/Fxfs/xcX7f8YGO7/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPH/Gxvo/5eX7P/9/f7////////////+/v///v7///7+///+/v///v7///7+ + ///+/v///v7///7+///+/v///v7///7+///+/v///v7///7+///+/v///v7///7+///+/v///v7///7+ + ///+/v//6Oj7/z095P8XF+b/Fxfo/xcX6f8XF+n/Fxfp/xcX6f8XF+r/Fxfq/xcX6/8XF+v/Fxfs/xcX + 7P8XF+3/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/ICDo/7u79P///////////8nJ8f+Pj+j/j4/r/4+P + 7P+Pj+z/j4/s/4+P7P+Pj+z/j4/t/4+P7f+Pj+3/j4/t/4+P7f+Pj+7/j4/u/4+P7v+Pj+//j4/v/4+P + 7/+Pj+//j4/w/4+P8P+Pj/D/g4Pv/ysr5v8XF+b/Fxfn/xcX6P8XF+n/Fxfp/xcX6f8XF+n/Fxfq/xcX + 6v8XF+v/Fxfr/xcX7P8XF+z/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+9f///////v7//4+P + 4/8XF9L/FxfY/xcX2v8XF9r/Fxfa/xYW2f8XF9n/FxfZ/xcX2f8XF9r/Fxfa/xcX2/8XF9v/Fxfc/xcX + 3P8XF93/Fxfd/xcX3v8XF97/Fxff/xcX3/8XF+D/Fxfg/xYW4f8WFuL/Fhbj/xcX5P8XF+X/Fxfn/xcX + 6f8XF+n/Fxfp/xcX6v8XF+r/Fxfr/xcX6/8XF+z/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+ + 9f///////v7//46O4/8WFtL/FhbZ/xYW2v8VFdj/FRXU/xUV0f8UFM//FBTO/xQUz/8UFM//FBTP/xQU + 0P8VFdD/FRXR/xUV0f8VFdL/FRXS/xUV0/8VFdP/FRXU/xUV1P8VFdX/FRXV/xUV1v8VFdb/FRXX/xUV + 2P8WFtz/Fhbh/xcX5v8XF+j/Fxfp/xcX6f8XF+r/Fxfq/xcX6/8XF+v/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPD/ICDo/76+9f///////v7//46O4/8WFtL/FRXY/xUV1/8VFdH/GRnI/y4uxP86OsX/OjrE/zo6 + xf86OsX/OjrF/zo6xf87O8b/OzvG/zs7xv87O8f/OzvH/zs7x/87O8j/OzvI/zs7yP87O8n/OzvJ/zs7 + yf87O8r/OzvK/zk5zP8pKc3/FxfV/xYW3/8XF+b/Fxfp/xcX6f8XF+n/Fxfq/xcX6v8XF+v/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+9f///////v7//46O4/8WFtH/FRXW/xUV0v8jI8n/hYXY/9XV + 7//n5/X/5+f1/+fn9f/n5/X/5+f2/+fn9v/n5/b/6Oj2/+jo9v/o6Pb/6Oj2/+jo9v/o6Pb/6Oj2/+jo + 9v/o6Pb/6Oj2/+jo9v/o6Pb/6Oj2/+Xl9v/Kyu3/Z2fY/xsb1/8WFuP/Fxfo/xcX6f8XF+n/Fxfp/xcX + 6v8XF+r/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+9f///////v7//46O4/8WFtH/FRXV/xkZ + zv+Ghtz/9vb8//////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////6Oj4/1dX2/8WFt//Fxfm/xcX + 6f8XF+n/Fxfp/xcX6f8XF+r/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+9f///////v7//46O + 4v8WFtD/FRXU/y8v0P/W1vP///////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////v7//6Sk + 6v8bG9z/Fxfm/xcX6P8XF+n/Fxfp/xcX6f8XF+n/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+ + 9f///////v7//46O4v8WFtD/FRXT/zs70//n5/n///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////7y88f8fH93/Fxfl/xcX6P8XF+j/Fxfp/xcX6f8XF+n/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPD/ICDo/76+9f///////v7//46O4v8WFs//FRXT/zw80//o6Pn/////////////////+vr+/+Li + +P/e3vn/3t75/97e+f/e3vn/3t75/97e+v/e3vn/3t75/+Li+f/6+v7///////////////////////// + /////////////////////////////7298f8fH9z/Fxfk/xcX5/8XF+j/Fxfo/xcX6f8XF+n/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+9f///////v7//46O4v8WFs//FRXS/zw80v/o6Pn///////// + ////////4uL3/0dH1v8wMNn/MDDb/zAw3P8wMNz/MDDc/zAw3f8wMN3/MDDb/0hI2f/i4vj///////// + /////////////////////////////////////////////7298f8fH9z/Fhbj/xcX5/8XF+f/Fxfo/xcX + 6P8XF+n/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+9f///////v7//46O4v8WFs7/FRXS/zw8 + 0v/o6Pn/////////////////3t72/y8vzf8UFM7/FRXR/xUV0v8VFdL/FRXT/xUV0/8VFdP/FRXR/y8v + 0f/e3vb//////////////////////////////////////////////////////7298f8fH9v/Fhbj/xcX + 5v8XF+f/Fxfn/xcX6P8XF+j/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+9f///////v7//46O + 4f8WFs7/FRXR/zw80v/o6Pn/////////////////39/1/zIyw/8YGL//GBjB/xgYwf8YGML/GBjC/xgY + w/8YGMP/GBjC/zIyxv/f3/X//////////////////////////////////////////////////////729 + 8f8fH9v/Fhbj/xcX5v8XF+b/Fxfn/xcX5/8XF+j/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+ + 9f///////v7//46O4f8WFs7/FRXR/zw80f/o6Pj/////////////////8/P6/7S04v+qqt//qqrg/6qq + 4P+qquD/qqrg/6qq4P+qquH/qqrg/7S04//z8/r///////////////////////////////////////// + /////////////7298f8fH9r/Fhbi/xcX5f8XF+b/Fxfm/xcX5/8XF+f/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPD/ICDo/76+9f///////v7//46O4f8WFs3/FRXQ/zw80f/o6Pj///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////7298f8fH9r/Fhbi/xcX5f8XF+X/Fxfm/xcX5v8XF+f/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+9f///////v7//46O4f8VFc3/FRXQ/zw80P/o6Pj///////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////7298f8fH9n/Fhbh/xYW5P8XF+X/Fxfl/xcX + 5v8XF+b/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+9f///////v7//46O4f8VFcz/FRXP/zw8 + 0P/o6Pj/////////////////8/P8/7W17f+srO7/rKzv/6ys8P+srPD/rKzw/6ys8P+srPD/rKzw/6ys + 8P+srPH/rKzx/6ys8f+srPH/rKzx/6ys8P/FxfL//f3+/////////////////7298P8fH9n/Fhbh/xYW + 5P8WFuT/Fxfl/xcX5f8XF+b/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+9f///////v7//46O + 4P8VFcz/FBTP/zs70P/o6Pj/////////////////39/2/zMzzv8aGtH/GhrU/xoa1f8aGtX/GhrV/xoa + 1v8aGtb/GhrW/xoa1/8aGtf/GhrY/xoa2P8aGtn/GhrZ/xoa1f9fX9v/+Pj9/////////////////729 + 8P8fH9j/Fhbg/xYW4/8WFuT/Fhbk/xcX5f8XF+X/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+ + 9f///////v7//46O4P8VFcv/FBTO/zs7z//o6Pj/////////////////3t71/y4uyP8UFMf/FBTK/xQU + yv8UFMv/FBTL/xQUzP8UFMz/FBTN/xQUzf8UFM7/FBTO/xQUz/8UFM//FBTP/xQUzP9bW9f/+Pj9//// + /////////////7298P8fH9j/Fhbg/xYW4/8WFuP/Fhbk/xYW5P8XF+X/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPD/ICDo/76+9f///////v7//46O4P8VFcv/FBTO/zs7z//o6Pj/////////////////4uL1/0VF + wf8tLb3/Li6+/y4uvv8uLr//Li6//y4uwP8uLsD/Li7A/y4uwf8uLsH/Li7B/y4uwv8uLsL/Li7C/y4u + wf9tbdL/+fn9/////////////////7298P8fH9j/Fhbf/xYW4v8WFuP/Fhbj/xYW5P8WFuT/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+9f///////v7//46O3/8VFcr/FBTN/zs7zv/o6Pj///////// + ////////+vr9/+Hh8v/d3fH/3t7x/97e8f/e3vH/3t7x/97e8f/e3vH/3t7x/97e8f/e3vH/3t7x/97e + 8v/e3vL/3t7y/97e8v/o6Pb//v7//////////////////7298P8fH9f/Fhbf/xYW4v8WFuL/Fhbj/xYW + 4/8WFuT/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+9f///////v7//46O3/8VFcr/FBTN/zw8 + 0f/o6Pn///////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////7298P8fH9b/Fhbe/xYW + 4f8WFuL/Fhbi/xYW4/8WFuP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPH/ICDp/76+9f///////v7//46O + 4P8VFcr/FRXU/z094f/o6Pv///////////////////////39/v/9/f7//f3+//39///9/f///f3///39 + ///9/f///f3///39///9/f///f3///39///9/f///f3///39///9/f///////////////////////729 + 7/8eHtb/Fhbe/xYW4f8WFuH/Fhbi/xYW4v8WFuT/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPH/ISHr/76+ + 9v///////v7//46O4v8WFtP/Fxfn/z4+6P/o6Pv/////////////////7e36/4qK4v98fOP/fHzk/3x8 + 5f98fOX/fHzl/3x85v98fOb/fHzm/3x85/98fOf/fHzn/3x85/98fOf/fHzn/3x85f+jo+r/+/v+//// + /////////////7297/8eHtb/Fhbd/xYW4P8WFuH/Fhbh/xYW5P8XF+7/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPL/ICDv/66u9//o6P3/5+f9/4OD6/8YGOn/GBju/z4+6P/o6Pv/////////////////3t72/y8v + yv8UFMv/FRXO/xUVz/8VFdD/FRXQ/xUV0f8VFdH/FRXS/xUV0v8VFdL/FRXT/xUV0/8VFdT/FRXT/xUV + 0P9bW9j/+Pj9/////////////////7297/8eHtX/Fhbd/xYW4P8WFuD/Fhbj/xcX7v8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/Ghry/zQ08v8/P/P/Pz/z/yws8v8YGPL/GBju/z4+6P/o6Pv///////// + ////////3t70/y4uwv8TE8D/ExPC/xMTw/8TE8P/ExPE/xMTxP8TE8X/ExPF/xQUxf8UFMb/FBTG/xQU + x/8UFMf/FBTH/xQUxf9bW9P/+Pj9/////////////////7297/8eHtX/Fhbc/xYW3/8WFuL/Fxft/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPL/GBju/z4+ + 6P/o6Pv/////////////////6Oj2/2xsyf9ZWcT/WVnE/1paxf9aWsX/WlrF/1paxv9aWsb/WlrG/1pa + xv9aWsf/WlrH/1pax/9aWsf/WlrH/1pax/+MjNf/+vr9/////////////////7297/8eHtX/Fhbc/xYW + 4f8XF+3/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjv/z4+6f/o6Pv//////////////////v7///n5/P/4+Pz/+Pj8//j4/P/4+Pz/+Pj8//j4 + /P/4+Pz/+Pj8//j4/P/4+Pz/+Pj8//j4/P/4+Pz/+Pj8//j4/P/6+v3//////////////////////729 + 7/8eHtX/Fhbe/xcX7P8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjw/zw86//m5vv///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////7q68P8eHtn/Fxfq/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjx/yws7v/Ly/n///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////f3//5eX7f8bG+j/GBjy/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xoa8P9qavP/6en9//7+ + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////9/f//09P6/0ND7v8YGPH/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8v8dHfH/WVnz/6am+P+9vfr/vr76/76++v++vvr/vr76/76++v++vvr/vr76/76++v++vvr/vr76/76+ + +v++vvr/vr76/76++v++vvr/vr76/76++v++vvr/vr76/7u7+v+YmPf/RETy/xkZ8f8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjy/x0d8f8hIfL/ISHx/yEh8f8hIfH/ISHx/yEh8f8hIfH/ISHx/yEh + 8f8hIfH/ISHx/yEh8f8hIfH/ISHx/yEh8f8hIfH/ISHx/yEh8f8hIfH/ISHx/yEh8v8cHPL/GBjy/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAKAAAACgAAABQAAAAAQAgAAAAAABAGgAAAAAAAAAAAAAAAAAAAAAAABgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8P8WFub/Fhbj/xYW5P8WFuT/Fxfl/xcX + 5f8XF+b/Fxfn/xcX5/8XF+j/Fxfp/xcX6f8XF+n/Fxfp/xcX6v8XF+v/Fxfr/xcX7P8XF+z/Fxft/xgY + 7v8YGO7/GBjv/xgY8P8YGPD/GBjx/xgY8f8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8P8WFub/Fhbi/xYW4v8WFuP/Fhbk/xYW5P8XF+X/Fxfl/xcX5v8XF+f/Fxfn/xcX + 6P8XF+n/Fxfp/xcX6f8XF+n/Fxfq/xcX6/8XF+v/Fxfs/xcX7P8XF+3/GBju/xgY7v8YGO//GBjw/xgY + 8P8YGPH/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8P8WFuX/Fhbh/xYW + 4f8WFuL/Fhbi/xYW4/8WFuT/Fhbk/xcX5f8XF+X/Fxfm/xcX5/8XF+f/Fxfo/xcX6f8XF+n/Fxfp/xcX + 6f8XF+r/Fxfr/xcX6/8XF+z/Fxfs/xcX7f8YGO7/GBju/xgY7/8YGO//GBjw/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPL/GBjy/xgY7v8WFuL/Fhbe/xYW3v8WFt//Fhbg/xYW4P8WFuH/Fhbi/xYW + 4v8WFuP/Fhbj/xcX5P8XF+T/Fxfl/xcX5v8XF+b/Fxfn/xcX6P8XF+n/Fxfp/xcX6v8XF+v/Fxfr/xcX + 7P8XF+z/Fxft/xgY7v8YGO7/GBjv/xgY7/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/Fxft/xcX + 5v8VFdn/FRXU/xUV1f8VFdX/FRXW/xUV1v8VFdf/FRXY/xUV2P8VFdn/FRXZ/xUV2v8WFtv/Fhbb/xYW + 2/8WFtz/Fhbd/xYW3f8WFuD/Fhbk/xcX6P8XF+n/Fxfq/xcX6/8XF+v/Fxfs/xcX7P8XF+3/GBju/xgY + 7v8YGO//GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/Fxfo/xwc2/8qKsv/LS3F/y0txv8tLcb/LS3H/y0t + x/8tLcf/LS3I/y0tyP8tLcn/LS3J/y0tyv8uLsr/Li7L/y4uy/8uLsv/Li7M/y4uzP8uLs3/Li7R/yAg + 2/8XF+X/Fxfp/xcX6f8XF+r/Fxfr/xcX6/8XF+z/Fxfs/xcX7f8YGO7/GBju/xgY8/8YGPP/GBjz/xgY + 8/8YGPL/Fxfr/zEx3/+dneT/1dXv/9vb8f/b2/H/29vx/9vb8v/b2/L/29vy/9vb8v/b2/L/29vy/9vb + 8v/b2/L/29vy/9vb8v/b2/L/29vy/9vb8v/b2/L/29vy/9ra8v9kZOP/Fxfk/xcX6P8XF+n/Fxfp/xcX + 6v8XF+v/Fxfr/xcX7P8XF+z/Fxft/xgY7v8YGPP/GBjz/xgY8/8YGPP/GBjx/x4e6P+enuz//Pz+//// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////9/f7/c3Pp/xcX5P8XF+j/Fxfp/xcX6f8XF+n/Fxfq/xcX6/8XF+v/Fxfs/xcX + 7P8XF+3/GBjz/xgY8/8YGPP/GBjz/xgY8P8tLej/19f4///////t7fr/w8Py/8DA9P/BwfT/wcH0/8HB + 9P/BwfT/wcH1/8HB9f/BwfX/wcH1/8HB9f/BwfX/wcH1/8HB9v/Bwfb/wcH2/8HB9v/Bwfb/v7/3/1pa + 6f8XF+b/Fxfo/xcX6f8XF+n/Fxfp/xcX6f8XF+r/Fxfr/xcX6/8XF+z/Fxfs/xgY8/8YGPP/GBjz/xgY + 8/8YGPD/MTHp/93d+f//////wcHv/ygo1P8gINn/ICDb/yAg2/8gINr/Hx/a/x8f2v8gINv/ICDb/yAg + 3P8gINz/ICDd/yAg3v8gIN7/ICDf/yAg3/8gIOD/ICDg/yAg4f8aGuL/Fhbi/xYW4/8XF+X/Fxfn/xcX + 6P8XF+n/Fxfp/xcX6v8XF+v/Fxfr/xcX7P8YGPP/GBjz/xgY8/8YGPP/GBjw/zEx6f/d3fn//////76+ + 7/8eHtP/FhbZ/xUV2f8VFdX/FRXQ/xQUzf8UFMz/FBTN/xQUzf8UFM7/FBTO/xUVz/8VFc//FRXQ/xUV + 0P8VFdH/FRXS/xUV0v8VFdP/FRXT/xUV1P8VFdX/FRXX/xYW3f8XF+T/Fxfo/xcX6f8XF+n/Fxfq/xcX + 6/8XF+v/GBjz/xgY8/8YGPP/GBjz/xgY8P8xMen/3d35//////++vu7/Hh7S/xUV1/8VFdT/Hh7K/09P + zP9ubtH/cHDR/3Bw0f9wcNL/cHDS/3Bw0v9xcdL/cXHT/3Fx0/9xcdP/cXHU/3Fx1P9xcdT/cXHU/3Fx + 1f9xcdX/cXHV/2ho1f87O9L/GBjZ/xcX5P8XF+j/Fxfp/xcX6f8XF+r/Fxfr/xgY8/8YGPP/GBjz/xgY + 8/8YGPD/MTHp/93d+f//////vr7u/x4e0v8VFdX/Hh7O/4+P3v/u7vj//Pz+//z8/v/8/P7//Pz+//z8 + /v/8/P7//Pz+//z8/v/8/P7//Pz+//z8/v/8/P7//Pz+//z8/v/8/P7//Pz+//z8/v/6+v3/2dnz/1VV + 2v8XF9//Fxfn/xcX6f8XF+n/Fxfp/xcX6v8YGPP/GBjz/xgY8/8YGPP/GBjw/zEx6f/d3fn//////76+ + 7v8eHtH/FRXT/1FR1f/u7vr///////////////////////////////////////////////////////// + //////////////////////////////////////////////////+8vO//IiLd/xcX5v8XF+n/Fxfp/xcX + 6f8XF+n/GBjz/xgY8/8YGPP/GBjz/xgY8P8xMen/3d35//////++vu7/Hh7Q/xUV0v9wcN3//Pz+//// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////2tr3/y4u3v8XF+X/Fxfo/xcX6f8XF+n/Fxfp/xgY8/8YGPP/GBjz/xgY + 8/8YGPD/MTHp/93d+f//////vb3u/x4e0P8VFdL/c3Pe//39/v////////////Ly/P/Ly/T/yMj1/8jI + 9f/IyPb/yMj2/8jI9v/IyPb/y8v1//Ly/P///////////////////////////////////////////9zc + 9/8vL97/Fxfk/xcX5/8XF+j/Fxfp/xcX6f8YGPP/GBjz/xgY8/8YGPP/GBjw/zEx6f/d3fn//////729 + 7v8eHs//FRXR/3Nz3f/9/f7////////////JyfH/KyvS/yEh1v8hIdj/ISHY/yEh2f8hIdr/ISHZ/yws + 1f/Ly/P////////////////////////////////////////////c3Pf/Ly/d/xYW5P8XF+f/Fxfn/xcX + 6P8XF+n/GBjz/xgY8/8YGPP/GBjz/xgY8P8xMen/3d35//////+9ve3/Hh7P/xUV0P9zc93//f3+//// + ////////xsbv/x8fxv8UFMn/FBTK/xQUy/8UFMv/FBTM/xQUy/8gIMr/x8fw//////////////////// + ////////////////////////3Nz3/y8v3f8WFuP/Fxfm/xcX5/8XF+f/Fxfo/xgY8/8YGPP/GBjz/xgY + 8/8YGPD/MTHp/93d+f//////vb3t/x4ezv8VFdD/c3Pd//39/v///////////9zc8v92dtD/b2/P/29v + 0P9vb9D/b2/Q/29v0P9vb9H/dnbS/93d8////////////////////////////////////////////9zc + 9/8vL9z/Fhbj/xcX5f8XF+b/Fxfn/xcX5/8YGPP/GBjz/xgY8/8YGPP/GBjw/zEx6f/d3fn//////729 + 7f8eHs7/FRXP/3Nz3f/9/f7////////////+/v///Pz+//z8/v/8/P7//Pz+//z8/v/8/P7//Pz+//z8 + /v/+/v/////////////////////////////////////////////c3Pf/Ly/c/xYW4v8XF+X/Fxfm/xcX + 5v8XF+f/GBjz/xgY8/8YGPP/GBjz/xgY8P8xMen/3d35//////+9ve3/Hh7N/xUVz/9zc9z//f3+//// + /////////v7///z8/v/8/P7//Pz+//z8/v/8/P7//Pz+//z8/v/8/P7//Pz+//z8/v/8/P7//Pz+//z8 + /v/9/f7/////////////////3Nz3/y8v2/8WFuL/Fhbk/xcX5f8XF+X/Fxfm/xgY8/8YGPP/GBjz/xgY + 8/8YGPD/MTHp/93d+f//////vb3t/x0dzP8VFc7/c3Pc//39/v///////////93d9v96euH/c3Pk/3Nz + 5f9zc+X/c3Pm/3Nz5v9zc+b/c3Pn/3Nz5/9zc+f/c3Po/3Nz6P9zc+f/mZnp//r6/v///////////9zc + 9/8vL9v/Fhbh/xYW5P8WFuT/Fxfl/xcX5f8YGPP/GBjz/xgY8/8YGPP/GBjw/zEx6f/d3fn//////729 + 7f8dHcz/FBTN/3Nz2//9/f7////////////Gxu//Hx/K/xQUzv8VFdD/FRXR/xUV0f8VFdL/FRXS/xUV + 0/8VFdP/FRXU/xUV1P8VFdX/FRXS/1RU2f/29v3////////////c3Pf/Ly/a/xYW4P8WFuP/Fhbk/xYW + 5P8XF+X/GBjz/xgY8/8YGPP/GBjz/xgY8P8xMen/3d35//////+9ve3/HR3L/xQUzf9zc9v//f3+//// + ////////ycnt/ykpv/8eHr//Hh7A/x4ewP8fH8H/Hx/C/x8fwv8fH8P/Hx/D/x8fxP8fH8T/Hx/F/x8f + xP9bW9D/9vb8////////////3Nz3/y8v2v8WFuD/Fhbi/xYW4/8WFuT/Fhbk/xgY8/8YGPP/GBjz/xgY + 8/8YGPD/MTHp/93d+f//////vb3s/x0dy/8UFMz/c3Pb//39/v////////////Hx+f/IyOn/xcXp/8XF + 6f/Fxen/xcXp/8XF6f/Fxer/xcXq/8XF6v/Fxer/xcXq/8XF6v/Fxer/1dXv//39/v///////////9zc + 9/8vL9n/Fhbf/xYW4v8WFuP/Fhbj/xYW5P8YGPP/GBjz/xgY8/8YGPP/GBjw/zEx6f/d3fr//////729 + 7P8dHcr/FBTN/3Nz3//9/f7///////////////////////////////////////////////////////// + ///////////////////////////////////////////////////c3Pf/Ly/Z/xYW3v8WFuH/Fhbi/xYW + 4v8WFuP/GBjz/xgY8/8YGPP/GBjz/xgY8f8xMer/3d36//////+9ve3/HR3M/xYW2v91der//f3///// + ////////+Pj9/+Tk+f/j4/n/4+P5/+Pj+f/j4/n/4+P5/+Pj+v/j4/r/4+P6/+Pj+v/j4/r/4+P6/+Pj + +v/r6/r//v7/////////////3Nz2/y8v2P8WFt7/Fhbg/xYW4f8WFuL/Fhbm/xgY8/8YGPP/GBjz/xgY + 8/8YGPL/MjLu/9vb+//9/f//vLzv/x8f3f8XF+r/dXXt//39/////////////87O8f9AQNL/NzfV/zc3 + 1/83N9j/NzfY/zc32f83N9n/Nzfa/zc32v83N9r/Nzfb/zc32/83N9n/bW3e//f3/f///////////9zc + 9v8vL9j/Fhbd/xYW4P8WFuH/Fhbl/xgY8P8YGPP/GBjz/xgY8/8YGPP/GBjz/yMj8v9oaPX/dnb2/1xc + 8v8cHPD/GBjt/3V17f/9/f/////////////Gxu7/Hx/D/xQUxv8UFMf/FBTI/xQUyP8UFMn/FBTJ/xQU + yv8UFMr/FBTL/xQUy/8UFMz/FBTK/1NT0//29vz////////////c3Pb/Ly/X/xYW3f8WFt//Fhbl/xgY + 8P8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjy/xgY8v8YGPL/GBjy/xgY7f91de3//f3///// + ////////1dXv/1lZxf9QUMT/UVHF/1FRxf9RUcb/UVHG/1FRxv9RUcf/UVHH/1FRx/9RUcj/UVHI/1FR + yP+AgNX/+Pj9////////////3Nz2/y8v1/8WFtz/Fhbk/xgY8P8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGO7/dXXt//39//////////////39/v/29vv/9fX7//X1 + +//19fv/9fX7//X1+//19fv/9fX7//X1+//19fv/9fX7//X1+//19fv/+Pj8/////////////////9zc + 9v8vL9f/Fhbh/xgY7/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjw/21t7//7+/7///////////////////////////////////////////////////////// + ///////////////////////////////////////////////////W1vb/LCze/xgY7v8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8f9AQPD/29v8//// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////8/P//np7z/x4e7P8YGPL/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/Ghrx/1lZ8/+/v/r/3Nz8/93d/P/d3fz/3d38/93d + /P/d3fz/3d38/93d/P/d3fz/3d38/93d/P/d3fz/3d38/93d/P/d3fz/3d38/93d/P/X1/z/n5/3/zMz + 8f8YGPL/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8ZGfL/JSXy/zIy8v8yMvL/MjLy/zIy8v8yMvL/MjLy/zIy8v8yMvL/MjLy/zIy + 8v8yMvL/MjLy/zIy8v8yMvL/MjLy/zIy8v8yMvL/Ly/y/x8f8v8YGPL/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAgAAAAQAAAAAEA + IAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAYGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPL/Fxfp/xYW4/8WFuT/Fhbk/xcX5f8XF+b/Fxfn/xcX6P8XF+j/Fxfp/xcX6f8XF+r/Fxfq/xcX + 6/8XF+z/Fxft/xcX7f8YGO7/GBjv/xgY8P8YGPD/GBjx/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjy/xcX6P8WFuL/Fhbi/xYW4/8WFuT/Fhbk/xcX5f8XF+b/Fxfn/xcX6P8XF+j/Fxfp/xcX + 6f8XF+r/Fxfq/xcX6/8XF+z/Fxft/xcX7f8YGO7/GBjv/xgY8P8YGPD/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjy/xgY8f8XF+f/Fhbg/xYW4P8WFuH/Fhbi/xYW4v8WFuP/Fhbk/xcX5f8XF+X/Fxfm/xcX + 5/8XF+j/Fxfo/xcX6f8XF+r/Fxfq/xcX6/8XF+z/Fxft/xcX7f8YGO7/GBjv/xgY8P8YGPP/GBjz/xgY + 8/8YGPP/GBjy/xgY7/8XF+r/Fhbe/xUV1v8VFdb/FRXX/xUV2P8VFdj/FRXZ/xYW2v8WFtr/Fhbb/xYW + 3P8WFt3/Fhbd/xYW3v8WFt//Fhbj/xcX6P8XF+r/Fxfq/xcX6/8XF+z/Fxft/xcX7f8YGO7/GBjv/xgY + 8/8YGPP/GBjz/xgY8/8YGO7/HR3i/zw81P9ISMz/SEjM/0hIzf9JSc3/SUnO/0lJzv9JSc//SUnP/0lJ + 0P9JSdD/SUnR/0lJ0f9JSdH/SUnS/0lJ1P85Odr/GBjk/xcX6f8XF+r/Fxfq/xcX6/8XF+z/Fxft/xcX + 7f8YGO7/GBjz/xgY8/8YGPP/GBjy/x4e6P+Jief/5ub2//Hx+f/x8fn/8fH5//Hx+v/x8fr/8fH6//Hx + +v/x8fr/8fH6//Hx+v/x8fr/8fH6//Hx+v/x8fr/8fH6/62t7/8cHOP/Fxfo/xcX6f8XF+r/Fxfq/xcX + 6/8XF+z/Fxft/xcX7f8YGPP/GBjz/xgY8/8YGPH/Pz/p/+fn+v/8/P7/5+f6/+Tk+v/k5Pr/5OT6/+Tk + +v/k5Pr/5OT6/+Tk+//k5Pv/5OT7/+Tk+//k5Pv/5OT7/+Tk+//k5Pv/o6Py/xsb5f8XF+j/Fxfp/xcX + 6f8XF+r/Fxfq/xcX6/8XF+z/Fxft/xgY8/8YGPP/GBjz/xgY8f9NTev/8vL9/+bm+f9QUNv/NTXd/zY2 + 3v81Nd7/NTXd/zU13v82Nt7/Njbf/zY23/82NuD/Njbh/zY24f82NuL/Njbj/zY24/8sLOP/Fxfj/xcX + 5P8XF+b/Fxfo/xcX6f8XF+r/Fxfq/xcX6/8XF+z/GBjz/xgY8/8YGPP/GBjx/01N6//y8v3/4uL4/zQ0 + 1v8VFdj/FRXX/xYW0P8ZGcv/GhrK/xoay/8aGsv/GhrM/xoazf8aGs3/GhrO/xoaz/8aGs//GhrQ/xoa + 0f8aGtH/GhrS/xgY1v8WFuD/Fxfn/xcX6f8XF+r/Fxfq/xcX6/8YGPP/GBjz/xgY8/8YGPH/TU3r//Ly + /f/i4vj/NDTV/xUV1v8gIM7/dnbX/7Cw5f+0tOb/tLTm/7S05v+0tOb/tLTn/7S05/+0tOf/tLTn/7S0 + 5/+0tOf/tbXo/7W16P+0tOj/np7k/0ND2P8XF+H/Fxfo/xcX6f8XF+r/Fxfq/xgY8/8YGPP/GBjz/xgY + 8f9NTev/8vL9/+Li9/80NNT/FhbT/3d33P/29vz///////////////////////////////////////// + ///////////////////////////////////+/v//x8fx/yws3v8XF+f/Fxfp/xcX6f8XF+r/GBjz/xgY + 8/8YGPP/GBjx/01N6//y8v3/4uL3/zMz1P8aGtL/srLs//////////////////////////////////// + ///////////////////////////////////////////////////w8Pv/SEjh/xcX5f8XF+j/Fxfp/xcX + 6f8YGPP/GBjz/xgY8/8YGPH/TU3r//Ly/f/i4vf/MzPT/xsb0f+3t+3////////////g4Pj/rKzv/6ur + 8P+rq/H/q6vx/6ur8f+srPD/4eH4//////////////////////////////////Ly/P9LS+L/Fxfk/xcX + 5/8XF+j/Fxfp/xgY8/8YGPP/GBjz/xgY8f9NTev/8vL9/+Li9/8zM9P/GxvR/7e37f///////////6qq + 6v8aGs7/GBjT/xgY1P8YGNT/GBjV/xsb0v+srOz/////////////////////////////////8vL8/0tL + 4f8WFuT/Fxfn/xcX6P8XF+j/GBjz/xgY8/8YGPP/GBjx/01N6//y8v3/4uL3/zMz0v8bG9D/t7ft//// + ////////ubnp/0FBx/8/P8n/Pz/J/z8/yv8/P8r/QUHK/7q66v////////////////////////////// + ///y8vz/Skrg/xYW4/8XF+b/Fxfn/xcX6P8YGPP/GBjz/xgY8/8YGPH/TU3r//Ly/f/i4vf/MzPR/xsb + z/+2tu3////////////4+Pz/7Oz3/+zs9//s7Pf/7Oz3/+zs9//s7Pj/+Pj8//////////////////// + //////////////Ly/P9KSuD/Fhbi/xcX5f8XF+b/Fxfn/xgY8/8YGPP/GBjz/xgY8f9NTev/8vL9/+Li + 9/8zM9H/GxvO/7a27f////////////j4/f/t7fv/7e37/+3t/P/t7fz/7e38/+3t/P/t7fz/7e38/+3t + /P/t7fz/8fH8//7+////////8vL8/0pK3/8WFuL/Fhbk/xcX5f8XF+b/GBjz/xgY8/8YGPP/GBjx/01N + 6//y8v3/4uL3/zMz0P8aGs7/trbs////////////ubnt/0ND1/9CQtv/QkLc/0JC3P9CQt3/QkLd/0JC + 3v9CQt//QkLf/0JC3v9vb+H/9fX9///////y8vz/Skrf/xYW4f8WFuT/Fhbk/xcX5f8YGPP/GBjz/xgY + 8/8YGPH/TU3r//Ly/f/i4vf/MzPP/xoazf+2tuz///////////+qqub/GRnC/xYWxf8WFsb/FxfH/xcX + yP8XF8j/FxfJ/xcXyv8XF8r/FxfK/05O0v/z8/z///////Ly/P9KSt7/Fhbg/xYW4/8WFuT/Fhbk/xgY + 8/8YGPP/GBjz/xgY8f9NTev/8vL9/+Li9/8zM8//GhrM/7a27P///////////9/f8/+pqeD/qKjh/6io + 4f+oqOH/qKji/6io4v+pqeL/qani/6mp4v+pqeL/vb3p//v7/f//////8vL8/0pK3v8WFt//Fhbi/xYW + 4/8WFuT/GBjz/xgY8/8YGPP/GBjx/01N6//y8v3/4uL3/zMzzv8aGs//t7fv//////////////////// + ///////////////////////////////////////////////////////////////////y8vz/Skrd/xYW + 3/8WFuH/Fhbi/xYW4/8YGPP/GBjz/xgY8/8YGPH/TU3t//Ly/f/i4vf/MzPU/xwc4f+3t/X///////// + ///e3vb/paXr/6Sk7f+kpO3/pKTt/6Sk7v+kpO7/pKTu/6Sk7v+kpO7/pKTu/7q68P/6+v7///////Ly + /P9KSt3/Fhbe/xYW4P8WFuL/Fxfp/xgY8/8YGPP/GBjz/xgY8v89PfH/r6/5/6Sk9v8sLOr/Hh7r/7e3 + 9f///////////6qq5/8ZGcf/FxfM/xcXzf8XF83/FxfO/xcXz/8XF8//FxfQ/xcX0f8XF9D/Tk7W//Pz + /P//////8vL8/0pK3P8WFt3/Fhbg/xcX6P8YGPL/GBjz/xgY8/8YGPP/GBjz/xkZ8/8eHvL/HR3y/xkZ + 8v8eHuz/t7f1////////////vLzo/0tLxf9JScb/SUnH/0lJx/9JScj/SUnI/0pKyP9KSsn/SkrJ/0pK + yf91ddT/9vb8///////y8vz/Skrc/xYW3f8XF+f/GBjy/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/x4e7f+3t/X////////////6+v3/8/P6//Ly+v/y8vr/8vL6//Ly+v/y8vr/8vL6//Ly + +v/y8vr/8vL6//X1+//+/v////////Ly/P9KSt3/Fxfl/xgY8f8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/Gxvv/6Gh9f/+/v////////////////////////////////////////// + ////////////////////////////////////////5ub6/z4+5v8YGPD/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPL/R0fy/8rK+//w8P7/8vL+//Ly/v/y8v7/8vL+//Ly + /v/y8v7/8vL+//Ly/v/y8v7/8vL+//Ly/v/y8v7/8vL+/+fn/f+KivX/Hx/w/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8ZGfL/Ly/y/0tL9P9OTvP/Tk7z/05O + 8/9OTvP/Tk7z/05O8/9OTvP/Tk7z/05O8/9OTvP/Tk7z/05O8/9NTfP/QEDz/x8f8v8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAGAAAADAA + AAABACAAAAAAAGAJAAAAAAAAAAAAAAAAAAAAAAAAGBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xcX + 7P8WFuP/Fhbk/xcX5f8XF+b/Fxfn/xcX6P8XF+n/Fxfp/xcX6v8XF+v/Fxfs/xcX7f8YGO7/GBjv/xgY + 8P8YGPH/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPL/Fxfr/xYW4v8WFuH/Fhbj/xYW5P8XF+X/Fxfm/xcX + 5/8XF+j/Fxfp/xcX6f8XF+r/Fxfr/xcX7P8XF+3/GBju/xgY7/8YGPD/GBjz/xgY8/8YGPP/GBjy/xcX + 7v8XF+P/FRXY/xUV2P8VFdn/FRXa/xYW2/8WFtz/Fhbd/xYW3v8WFt//Fhbg/xYW4v8XF+f/Fxfq/xcX + 6/8XF+z/Fxft/xgY7v8YGO//GBjz/xgY8/8YGPL/Gxvr/0lJ3/9tbdj/b2/W/29v1/9vb9j/b2/Y/29v + 2f9vb9n/b2/a/29v2v9vb9v/b2/b/2Vl3v8jI+P/Fxfp/xcX6v8XF+v/Fxfs/xcX7f8YGO7/GBjz/xgY + 8/8YGPH/Skrq/+Pj+P/39/3/9vb9//b2/f/29v3/9vb9//b2/f/29v3/9vb9//b2/f/29v3/9vb9/93d + +f83N+b/Fxfo/xcX6f8XF+r/Fxfr/xcX7P8XF+3/GBjz/xgY8/8YGPH/b2/v//j4/f+Jieb/Wlrj/1pa + 5P9aWuP/Wlrj/1pa5P9aWuX/Wlrl/1pa5v9aWuf/Wlro/1JS5/8gIOP/Fxfl/xcX5/8XF+n/Fxfq/xcX + 6/8XF+z/GBjz/xgY8/8YGPH/cXHv//b2/f9ZWd3/FRXX/xsb0v8xMc//NjbP/zY2z/82NtD/NjbR/zY2 + 0f82NtL/NjbT/zY21P82NtX/NTXW/yQk2v8XF+T/Fxfp/xcX6v8XF+v/GBjz/xgY8/8YGPH/cXHv//b2 + /f9ZWdz/GxvT/4aG3//e3vT/5eX2/+Xl9v/l5fb/5eX2/+Xl9v/l5fb/5eX2/+Xl9v/l5fb/5OT2/7e3 + 7f8yMt//Fxfo/xcX6f8XF+r/GBjz/xgY8/8YGPH/cXHv//b2/f9ZWdv/MTHV/9/f9/////////////// + //////////////////////////////////////////////v7/v9oaOb/Fxfm/xcX6f8XF+n/GBjz/xgY + 8/8YGPH/cXHv//b2/f9ZWdv/NjbW/+Xl+f//////wsLx/4eH6f+Hh+r/h4fr/4eH6v/CwvL///////// + //////////////39/v9wcOj/Fxfl/xcX6P8XF+n/GBjz/xgY8/8YGPH/cXHv//b2/P9ZWdr/NjbV/+Xl + +P//////jY3h/yEhyv8hIcz/ISHN/yEhzP+NjeL///////////////////////39/v9wcOf/Fxfk/xcX + 5/8XF+j/GBjz/xgY8/8YGPH/cXHv//b2/P9YWNn/NjbU/+Xl+P//////5OT1/8rK7f/Kyu3/ysrt/8rK + 7f/k5Pb///////////////////////39/v9wcOb/Fhbj/xcX5v8XF+f/GBjz/xgY8/8YGPH/cXHv//b2 + /P9YWNn/NjbT/+Xl+P//////5OT5/8rK9f/KyvX/ysr2/8rK9v/Kyvb/ysr2/8rK9v/V1ff/+/v+//39 + /v9wcOb/Fhbi/xcX5f8XF+b/GBjz/xgY8/8YGPH/cXHv//b2/P9YWNj/NjbS/+Xl+P//////jo7i/yIi + zv8iItD/IiLR/yIi0v8iItP/IiLU/yIi1P9PT9n/8PD7//39/v9wcOX/Fhbh/xYW5P8XF+X/GBjz/xgY + 8/8YGPH/cXHv//b2/P9YWNf/NjbR/+Xl+P//////wcHq/4aG2P+Ghtn/hoba/4aG2v+Ghtv/hobb/4aG + 2/+fn+H/9/f8//39/v9wcOX/Fhbg/xYW4/8WFuT/GBjz/xgY8/8YGPH/cXHw//b2/P9YWNj/NzfY/+Xl + +v//////+vr+//X1/f/19f3/9fX9//X1/f/19f3/9fX9//X1/f/39/3//v7///39/v9wcOT/Fhbf/xYW + 4v8WFuT/GBjz/xgY8/8YGPL/aGjy/97e+/9SUuT/OTnp/+bm+///////pqbo/1FR2f9RUdv/UVHc/1FR + 3f9RUd3/UVHe/1FR3v90dOH/8/P8//39/v9wcOT/Fhbe/xYW4v8XF+z/GBjz/xgY8/8YGPP/JSXz/zg4 + 8/8iIvH/OTnt/+bm+///////n5/g/0NDyP9DQ8r/Q0PK/0NDy/9DQ8v/Q0PM/0NDzP9padX/8vL7//39 + /v9wcOP/Fhbe/xcX6/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/ODju/+Xl+///////9/f8/+/v + +f/v7/n/7+/5/+/v+f/v7/n/7+/5/+/v+f/y8vr//v7///39/v9ubuX/Fxfp/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/Jibx/7i4+f/7+////f3///39///9/f///f3///39///9/f///f3///39 + ///9/f///f3//+Pj/P9LS+7/GBjy/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/zQ0 + 8/9pafb/cnL2/3Jy9v9ycvb/cnL2/3Jy9v9ycvb/cnL2/3Jy9v9ycvb/cHD2/0tL9P8cHPL/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAABQAAAAoAAAAAQAgAAAAAACQBgAAAAAAAAAA + AAAAAAAAAAAAABgY8/8YGPP/GBjz/xgY8/8YGPP/GBjx/xcX5/8WFuP/Fhbk/xcX5f8XF+f/Fxfo/xcX + 6f8XF+n/Fxfr/xcX7P8XF+3/GBju/xgY7/8YGPH/GBjz/xgY8/8YGPP/GBjy/xgY8P8XF+X/Fhbg/xYW + 4f8WFuL/Fhbj/xcX5P8XF+X/Fxfn/xcX6P8XF+n/Fxfq/xcX7P8XF+3/GBju/xgY7/8YGPP/GBjz/xgY + 8v8eHuj/Li7Z/y8v0v8wMNL/MDDT/zAw1P8wMNX/MDDW/zAw1/8wMNj/Ly/b/x0d5P8XF+n/Fxfr/xcX + 7P8XF+3/GBju/xgY8/8YGPP/Hx/u/5OT7P/b2/T/3d30/93d9P/d3fT/3d30/93d9f/d3fX/3d31/93d + 9f/U1PT/Rkbm/xcX6P8XF+n/Fxfr/xcX7P8XF+3/GBjz/xgY8/8xMe7/3Nz6/6io7f9zc+f/c3Pn/3Jy + 5/9zc+f/c3Po/3Nz6f9zc+r/c3Pq/25u6v8tLeT/Fxfl/xcX6P8XF+n/Fxfr/xcX7P8YGPP/GBjz/zMz + 7v/e3vr/b2/h/xYW1v8wMNL/S0vT/0xM1P9MTNX/TU3V/01N1v9NTdf/TU3Y/01N2f9KStr/KSnd/xcX + 5/8XF+n/Fxfr/xgY8/8YGPP/MzPu/97e+v9vb+D/MTHV/8jI7//z8/r/8/P7//Pz+//z8/v/8/P7//Pz + +//z8/v/8/P7//Ly+v+srO3/IiLj/xcX6f8XF+n/GBjz/xgY8/8zM+7/3t76/29v4P9NTdr/8/P8//j4 + /f/a2vj/1tb4/9bW+P/a2vj/+Pj9/////////////////97e+f8wMOT/Fxfo/xcX6f8YGPP/GBjz/zMz + 7v/e3vr/b2/f/05O2v/09Pz/2dn1/z4+0/8tLdP/LS3U/z8/1v/a2vb/////////////////39/5/zEx + 4/8XF+f/Fxfo/xgY8/8YGPP/MzPu/97e+v9vb97/Tk7Z//T0/P/x8fr/t7fo/7Gx5/+xsef/t7fp//Hx + +//////////////////f3/n/MTHi/xcX5f8XF+f/GBjz/xgY8/8zM+7/3t76/29v3f9OTtj/9PT8//Hx + /P+6uvD/tLTx/7S08f+0tPH/tLTy/7S08v/CwvP/+fn+/9/f+f8xMeH/Fhbk/xcX5f8YGPP/GBjz/zMz + 7v/e3vr/b2/d/05O1//09Pz/2dn0/z09zf8sLM3/LCzO/ywsz/8sLND/LCzR/1RU1//w8Pv/39/4/zEx + 4P8WFuP/Fhbk/xgY8/8YGPP/MzPu/97e+v9vb9z/Tk7Y//T0/P/39/z/2Njx/9XV8f/V1fH/1dXx/9XV + 8f/V1fH/3d30//z8/v/f3/j/MTHf/xYW4v8WFuP/GBjz/xgY8/8yMvD/1dX6/2tr4/9PT+f/9PT9/+vr + +v+Xl+f/jo7o/46O6P+Ojun/jo7q/46O6v+kpOz/9/f9/9/f+P8xMd3/Fhbh/xcX6P8YGPP/GBjz/x8f + 8v9JSfT/Li7x/1BQ7//09P3/3d30/09Pzf9AQMz/QEDM/0BAzf9AQM7/QEDP/2Vl1v/x8fv/39/4/zEx + 3f8XF+b/GBjx/xgY8/8YGPP/GBjz/xgY8/8YGPP/TU3w//Ly/f/8/P7/7u74/+3t+P/t7fj/7e34/+3t + +P/t7fj/8PD6//7+/v/c3Pj/MDDl/xgY8f8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8sLPL/r6/5/9/f + /f/g4P3/4OD9/+Dg/f/g4P3/4OD9/+Dg/f/g4P3/3t79/5SU9v8fH/H/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8kJPP/MzPz/zQ08/80NPP/NDTz/zQ08/80NPP/NDTz/zQ08/8yMvP/ICDz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAYGPP/GBjz/xgY + 8/8YGPP/GBjv/xYW5P8WFuT/Fxfl/xcX5/8XF+j/Fxfp/xcX6v8XF+z/Fxft/xgY7/8YGPD/GBjz/xgY + 8/8YGPH/GBjo/xcX3P8WFtr/Fhbc/xcX3f8XF9//Fxfg/xcX4v8XF+b/Fxfq/xcX7P8XF+3/GBjv/xgY + 8/8YGPL/Pz/q/5KS5v+bm+T/m5vl/5ub5f+bm+b/nJzm/5yc5/+amuj/R0fl/xcX6f8XF+r/Fxfs/xcX + 7f8YGPP/GRnx/5WV8//FxfP/jIzr/4yM6/+MjOv/jIzs/4yM7P+MjO3/i4vu/0FB5v8XF+X/Fxfo/xcX + 6v8XF+z/GBjz/xkZ8f+fn/X/iorn/x8f1f9YWNj/aWna/2lp2/9qatz/amrc/2pq3f9qat7/YmLf/yoq + 4f8XF+n/Fxfq/xgY8/8ZGfH/n5/1/4qK5v9ZWdz/8fH6//r6/f/5+f3/+fn9//r6/f/8/P7//Pz+//n5 + /f+Fhev/Fxfn/xcX6f8YGPP/GRnx/5+f9f+KiuX/a2vf//r6/f+Zmej/Zmbh/2Zm4v+amur//Pz+//// + ////////nJzv/xgY5f8XF+j/GBjz/xkZ8f+fn/X/iork/2tr3//7+/3/uLjq/5WV4v+VleL/ubnr//39 + /v///////////5yc7/8YGOP/Fxfn/xgY8/8ZGfH/n5/1/4mJ5P9ra93/+/v9/7m57/+Wlur/l5fr/5eX + 7P+Xl+z/qanu//b2/f+cnO7/Fxfi/xcX5f8YGPP/GRnx/5+f9f+JieP/a2vd//r6/f+Xl+H/Y2PV/2Nj + 1/9jY9f/Y2PY/39/3v/y8vv/nJzt/xcX4P8WFuT/GBjz/xkZ8f+envX/iIjm/2xs5f/8/P7/19f1/8PD + 8v/Dw/L/w8Pz/8PD8//OzvT/+vr+/5yc7f8XF9//Fhbk/xgY8/8YGPP/Skr0/0JC8P9tbfD/+vr9/4WF + 3f9ISND/SEjR/0hI0v9ISNP/aGjZ//Dw+/+cnOz/Fxfh/xgY7v8YGPP/GBjz/xgY8/8YGPP/ZWXy//n5 + /v/x8fr/6+v4/+vr+P/r6/j/6+v4/+7u+f/9/f7/k5Pv/xgY7f8YGPP/GBjz/xgY8/8YGPP/GBjz/y0t + 8/+IiPf/n5/5/5+f+f+fn/n/n5/5/5+f+f+fn/n/lZX4/z8/8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GRnz/xkZ8/8ZGfP/GRnz/xkZ8/8ZGfP/GRnz/xkZ8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY + 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + + \ No newline at end of file diff --git a/Remontor/Words/IWordsContol.cs b/Remontor/Words/IWordsContol.cs new file mode 100644 index 0000000..28fb57b --- /dev/null +++ b/Remontor/Words/IWordsContol.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Reseter2.Words +{ + internal interface IWordsContol + { + + } +} diff --git a/Remontor/Words/IWordsItem.cs b/Remontor/Words/IWordsItem.cs new file mode 100644 index 0000000..ff16c94 --- /dev/null +++ b/Remontor/Words/IWordsItem.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Reseter2.Words +{ + [Serializable] + internal abstract class IWordsItem + { + + + public abstract List CategoryList(); + + public abstract void Delete(); + public abstract TreeNode NodeList(); + public abstract bool ChekMove(IWordsItem wordsItem); + + + + + + } +} diff --git a/Remontor/Words/WordsCategory.cs b/Remontor/Words/WordsCategory.cs new file mode 100644 index 0000000..c0fa054 --- /dev/null +++ b/Remontor/Words/WordsCategory.cs @@ -0,0 +1,126 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Reseter2.Words +{ + [Serializable] + internal class WordsCategory : IWordsItem + { + private string Name; + private List items; + + public WordsCategory(string name) + { + Name = name; + items = new List(); + + } + public WordsCategory(string name, List Items) + { + Name = name; + items = Items; + + } + + public void Add(IWordsItem newitem) + { + items.Add(newitem); + } + public void Insert(int index, IWordsItem newitem) + { + //if (index > items.Count) index = items.Count; + items.Insert(index, newitem); + } + + public void Move(int index, IWordsItem item, WordsCategory wordsdst) + { + items.Remove(item); + wordsdst.Insert(index, item); + } + + public string GetName() + { + return Name; + } + public void SetName(string name) + { + Name = name; + } + + public IWordsItem Items(int item) + { + return items[item]; + } + + public List Items() + { + return items; + } + + public int Count() + { + return items.Count; + } + + public void DeleteItem(IWordsItem wordsItem) + { + wordsItem.Delete(); + items.Remove(wordsItem); + } + + public override bool ChekMove(IWordsItem wordsItem) + { + if(this == wordsItem) return false; + foreach (var item in items) + { + if(!item.ChekMove(wordsItem)) return false; + + } + return true; + } + + public override void Delete() { + foreach(IWordsItem item in items) + { + item.Delete(); + } + items.Clear(); + } + + public override List CategoryList() + { + List itemsCatrgory = new List(); + itemsCatrgory.Add(this); + foreach (var item in items) + { + itemsCatrgory.AddRange(item.CategoryList()); + } + return itemsCatrgory; + + } + + public override TreeNode NodeList() + { + TreeNode treeNode = new TreeNode(GetName()); + treeNode.Name = GetName(); + treeNode.Tag = this; + treeNode.ImageIndex = 0; + treeNode.SelectedImageIndex = 0; + treeNode.StateImageIndex = 0; + + foreach (var item in items) + { + int i = treeNode.Nodes.Add(item.NodeList()); + treeNode.Nodes[i].Name += treeNode.Nodes[i].Index; + } + return treeNode; + } + + + } +} diff --git a/Remontor/Words/WordsCategoryControl.Designer.cs b/Remontor/Words/WordsCategoryControl.Designer.cs new file mode 100644 index 0000000..72d0d74 --- /dev/null +++ b/Remontor/Words/WordsCategoryControl.Designer.cs @@ -0,0 +1,103 @@ +namespace Remontor.Words +{ + partial class WordsCategoryControl + { + /// + /// Обязательная переменная конструктора. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Освободить все используемые ресурсы. + /// + /// истинно, если управляемый ресурс должен быть удален; иначе ложно. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Код, автоматически созданный конструктором компонентов + + /// + /// Требуемый метод для поддержки конструктора — не изменяйте + /// содержимое этого метода с помощью редактора кода. + /// + private void InitializeComponent() + { + this.Select = new System.Windows.Forms.CheckBox(); + this.lb_name = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.flow_wordsItem = new System.Windows.Forms.FlowLayoutPanel(); + this.SuspendLayout(); + // + // Select + // + this.Select.AutoSize = true; + this.Select.Location = new System.Drawing.Point(6, 2); + this.Select.Name = "Select"; + this.Select.Size = new System.Drawing.Size(15, 14); + this.Select.TabIndex = 1; + this.Select.UseVisualStyleBackColor = true; + // + // lb_name + // + this.lb_name.AutoSize = true; + this.lb_name.Location = new System.Drawing.Point(47, 3); + this.lb_name.Name = "lb_name"; + this.lb_name.Size = new System.Drawing.Size(88, 13); + this.lb_name.TabIndex = 2; + this.lb_name.Text = "Вебинарные ПК"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.label1.Location = new System.Drawing.Point(21, -4); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(30, 29); + this.label1.TabIndex = 3; + this.label1.Text = "⟱"; + this.label1.Click += new System.EventHandler(this.label1_Click); + // + // flow_wordsItem + // + this.flow_wordsItem.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.flow_wordsItem.AutoSize = true; + this.flow_wordsItem.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; + this.flow_wordsItem.Location = new System.Drawing.Point(5, 20); + this.flow_wordsItem.Name = "flow_wordsItem"; + this.flow_wordsItem.Size = new System.Drawing.Size(395, 5); + this.flow_wordsItem.TabIndex = 4; + this.flow_wordsItem.WrapContents = false; + // + // WordsCategoryControl + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; + this.AutoSize = true; + this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.Controls.Add(this.flow_wordsItem); + this.Controls.Add(this.Select); + this.Controls.Add(this.label1); + this.Controls.Add(this.lb_name); + this.Name = "WordsCategoryControl"; + this.Size = new System.Drawing.Size(401, 25); + this.Load += new System.EventHandler(this.WordsCategoryControl_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.CheckBox Select; + private System.Windows.Forms.Label lb_name; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.FlowLayoutPanel flow_wordsItem; + } +} diff --git a/Remontor/Words/WordsCategoryControl.cs b/Remontor/Words/WordsCategoryControl.cs new file mode 100644 index 0000000..dbef8ab --- /dev/null +++ b/Remontor/Words/WordsCategoryControl.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Remontor.Words +{ + [DefaultEvent(nameof(WordsCategoryControl))] + partial class WordsCategoryControl : UserControl, IWordsContol + { + public WordsCategoryControl() + { + InitializeComponent(); + } + public WordsCategoryControl(WordsCategory wordsCategoty) + { + InitializeComponent(); + lb_name.Text = wordsCategoty.GetName(); + foreach (IWordsItem item in wordsCategoty.Items()) + { + if(item is WordsCategory) + { + flow_wordsItem.Controls.Add(new WordsCategoryControl((WordsCategory)item)); + }else if(item is WordsComp) + { + flow_wordsItem.Controls.Add(new WordsItemControl((WordsComp)item)); + } + } + } + + public void Add(WordsItemControl wic) + { + flow_wordsItem.Controls.Add(wic); + } + + private void label1_Click(object sender, EventArgs e) + { + flow_wordsItem.Visible = !flow_wordsItem.Visible; + + } + + private void WordsCategoryControl_Load(object sender, EventArgs e) + { + + } + } +} diff --git a/Remontor/Words/WordsCategoryControl.resx b/Remontor/Words/WordsCategoryControl.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Remontor/Words/WordsCategoryControl.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Remontor/Words/WordsComp.cs b/Remontor/Words/WordsComp.cs new file mode 100644 index 0000000..9eefb95 --- /dev/null +++ b/Remontor/Words/WordsComp.cs @@ -0,0 +1,124 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Xml.Linq; + +namespace Remontor.Words +{ + [Serializable] + internal class WordsComp : IWordsItem + { + private IComp Comp; + + public WordsComp(IComp comp) + { + Comp = comp; + + } + public WordsComp(String name, String ip, String description) + { + IPAddress iPAddress; + try + { + iPAddress = IPAddress.Parse(ip); + } + catch + { + iPAddress = null; + } + Comp = new CompId(name,description, iPAddress); + + } + + public void Set(String name, String ip, String description, int imgIndex, string netname) + { + IPAddress iPAddress; + try + { + iPAddress = IPAddress.Parse(ip); + } + catch + { + iPAddress = null; + } + Comp.SetIP(iPAddress); + Comp.SetName(name); + Comp.SetDescription(description); + Comp.SetImage(imgIndex); + Comp.SetNetName(netname); + } + + public string GetName() + { + return Comp.GetName(); + } + + public string GetNetName() + { + return Comp.GetNetName(); + } + public override bool ChekMove(IWordsItem wordsItem) + { + return true ; + } + public string GetDescription() + { + return Comp.GetDescription(); + } + public string GetIP() + { + if(Comp.GetIP() != null) + { + return Comp.GetIP().ToString(); + } + return null; + } + public IComp GetComp() + { + return Comp; + } + + public override void Delete() + { + + Comp = null; + } + + public override List CategoryList() + { + return new List(); + } + + public string NameNode() + { + string buf; + if (Comp.GetName() == null) + { + buf = Comp.GetNetNameStr(); + } + else + { + buf = Comp.GetName(); + if (Comp.GetNetNameStr() != null) buf += "(" + Comp.GetNetNameStr() + ")"; + + } + return buf; + } + public override TreeNode NodeList() + { + TreeNode treeNode = new TreeNode(); + treeNode.Text = NameNode(); + treeNode.Name = NameNode(); + treeNode.Tag = this; + treeNode.ImageIndex = Comp.GetImage(); + treeNode.SelectedImageIndex = Comp.GetImage(); + treeNode.StateImageIndex = 0; + return treeNode; + } + + } +} diff --git a/Remontor/Words/WordsEditCategoryControl.Designer.cs b/Remontor/Words/WordsEditCategoryControl.Designer.cs new file mode 100644 index 0000000..af5e7c6 --- /dev/null +++ b/Remontor/Words/WordsEditCategoryControl.Designer.cs @@ -0,0 +1,75 @@ +namespace Remontor.Words +{ + partial class WordsEditCategoryControl + { + /// + /// Обязательная переменная конструктора. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Освободить все используемые ресурсы. + /// + /// истинно, если управляемый ресурс должен быть удален; иначе ложно. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Код, автоматически созданный конструктором компонентов + + /// + /// Требуемый метод для поддержки конструктора — не изменяйте + /// содержимое этого метода с помощью редактора кода. + /// + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.lb_name = new System.Windows.Forms.TextBox(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(3, 10); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(112, 13); + this.label1.TabIndex = 0; + this.label1.Text = "Название категории"; + this.label1.Click += new System.EventHandler(this.label1_Click); + // + // lb_name + // + this.lb_name.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lb_name.Location = new System.Drawing.Point(6, 26); + this.lb_name.Name = "lb_name"; + this.lb_name.Size = new System.Drawing.Size(245, 20); + this.lb_name.TabIndex = 3; + // + // WordsEditCategoryControl + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoSize = true; + this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.Controls.Add(this.lb_name); + this.Controls.Add(this.label1); + this.Name = "WordsEditCategoryControl"; + this.Size = new System.Drawing.Size(254, 49); + this.VisibleChanged += new System.EventHandler(this.WordsEditCategoryControl_VisibleChanged); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox lb_name; + } +} diff --git a/Remontor/Words/WordsEditCategoryControl.cs b/Remontor/Words/WordsEditCategoryControl.cs new file mode 100644 index 0000000..5a0e6e0 --- /dev/null +++ b/Remontor/Words/WordsEditCategoryControl.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Remontor.Words +{ + [DefaultEvent(nameof(WordsEditCategoryControl))] + internal partial class WordsEditCategoryControl : UserControl + { + private WordsCategory wordsCategory; + private TreeNode treeNode; + public WordsEditCategoryControl() + { + InitializeComponent(); + } + + public WordsEditCategoryControl(WordsCategory wordscategory, TreeNode treenode) + { + InitializeComponent(); + lb_name.Text = wordscategory.GetName(); + wordsCategory = wordscategory; + treeNode = treenode; + + } + + private void label1_Click(object sender, EventArgs e) + { + + } + + private void WordsEditCategoryControl_VisibleChanged(object sender, EventArgs e) + { + treeNode.Text = lb_name.Text; + wordsCategory.SetName(lb_name.Text); + } + } +} diff --git a/Remontor/Words/WordsEditCategoryControl.resx b/Remontor/Words/WordsEditCategoryControl.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Remontor/Words/WordsEditCategoryControl.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Remontor/Words/WordsEditCompControl.Designer.cs b/Remontor/Words/WordsEditCompControl.Designer.cs new file mode 100644 index 0000000..ffe26ff --- /dev/null +++ b/Remontor/Words/WordsEditCompControl.Designer.cs @@ -0,0 +1,176 @@ +namespace Remontor.Words +{ + partial class WordsEditCompControl + { + /// + /// Обязательная переменная конструктора. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Освободить все используемые ресурсы. + /// + /// истинно, если управляемый ресурс должен быть удален; иначе ложно. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Код, автоматически созданный конструктором компонентов + + /// + /// Требуемый метод для поддержки конструктора — не изменяйте + /// содержимое этого метода с помощью редактора кода. + /// + private void InitializeComponent() + { + this.lb_name = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.lb_ip = new System.Windows.Forms.TextBox(); + this.lb_description = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.comboBox1 = new System.Windows.Forms.ComboBox(); + this.label1 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.tb_netName = new System.Windows.Forms.TextBox(); + this.SuspendLayout(); + // + // lb_name + // + this.lb_name.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lb_name.Location = new System.Drawing.Point(6, 30); + this.lb_name.Name = "lb_name"; + this.lb_name.Size = new System.Drawing.Size(245, 20); + this.lb_name.TabIndex = 2; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(3, 14); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(47, 13); + this.label2.TabIndex = 3; + this.label2.Text = "Имя ПК"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(3, 92); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(50, 13); + this.label3.TabIndex = 5; + this.label3.Text = "IP-адрес"; + // + // lb_ip + // + this.lb_ip.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lb_ip.Location = new System.Drawing.Point(6, 108); + this.lb_ip.Name = "lb_ip"; + this.lb_ip.Size = new System.Drawing.Size(245, 20); + this.lb_ip.TabIndex = 4; + // + // lb_description + // + this.lb_description.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lb_description.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.lb_description.Location = new System.Drawing.Point(6, 147); + this.lb_description.MaxLength = 350; + this.lb_description.Multiline = true; + this.lb_description.Name = "lb_description"; + this.lb_description.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.lb_description.Size = new System.Drawing.Size(245, 134); + this.lb_description.TabIndex = 6; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(3, 131); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(57, 13); + this.label4.TabIndex = 7; + this.label4.Text = "Описание"; + // + // comboBox1 + // + this.comboBox1.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable; + this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBox1.FormattingEnabled = true; + this.comboBox1.Location = new System.Drawing.Point(209, 3); + this.comboBox1.Name = "comboBox1"; + this.comboBox1.Size = new System.Drawing.Size(42, 21); + this.comboBox1.TabIndex = 8; + this.comboBox1.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.comboBox1_DrawItem); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(160, 6); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(43, 13); + this.label1.TabIndex = 9; + this.label1.Text = "Значок"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(3, 53); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(72, 13); + this.label5.TabIndex = 11; + this.label5.Text = "Сетевое имя"; + // + // tb_netName + // + this.tb_netName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.tb_netName.Location = new System.Drawing.Point(6, 69); + this.tb_netName.Name = "tb_netName"; + this.tb_netName.Size = new System.Drawing.Size(245, 20); + this.tb_netName.TabIndex = 10; + this.tb_netName.VisibleChanged += new System.EventHandler(this.WordsEditCompControl_VisibleChanged); + // + // WordsEditCompControl + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoSize = true; + this.AutoValidate = System.Windows.Forms.AutoValidate.Disable; + this.Controls.Add(this.label5); + this.Controls.Add(this.tb_netName); + this.Controls.Add(this.label1); + this.Controls.Add(this.comboBox1); + this.Controls.Add(this.label4); + this.Controls.Add(this.lb_description); + this.Controls.Add(this.label3); + this.Controls.Add(this.lb_ip); + this.Controls.Add(this.label2); + this.Controls.Add(this.lb_name); + this.Name = "WordsEditCompControl"; + this.Size = new System.Drawing.Size(254, 284); + this.VisibleChanged += new System.EventHandler(this.WordsEditCompControl_VisibleChanged); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.TextBox lb_name; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox lb_ip; + private System.Windows.Forms.TextBox lb_description; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.ComboBox comboBox1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.TextBox tb_netName; + } +} diff --git a/Remontor/Words/WordsEditCompControl.cs b/Remontor/Words/WordsEditCompControl.cs new file mode 100644 index 0000000..04ea35b --- /dev/null +++ b/Remontor/Words/WordsEditCompControl.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Remontor.Words +{ + + [DefaultEvent(nameof(WordsEditCompControl))] + internal partial class WordsEditCompControl : UserControl + { + private WordsComp wordsComp; + private TreeNode treeNode; + private ImageList imageList; + public WordsEditCompControl() + { + InitializeComponent(); + } + public WordsEditCompControl(WordsComp wordscomp, TreeNode treenode, ImageList imagelist) + { + InitializeComponent(); + imageList = imagelist; + comboBox1.DataSource = imageList.Images; + lb_name.Text = wordscomp.GetName(); + lb_ip.Text = wordscomp.GetIP(); + lb_description.Text = wordscomp.GetDescription(); + tb_netName.Text = wordscomp.GetNetName(); + wordsComp = wordscomp; + treeNode = treenode; + comboBox1.SelectedIndex = treeNode.ImageIndex; + + } + public void Save() + { + // lb_description. + } + + private void WordsEditCompControl_VisibleChanged(object sender, EventArgs e) + { + wordsComp.Set(lb_name.Text.Length > 0 ? lb_name.Text : null, + lb_ip.Text.Length > 0 ? lb_ip.Text : null, + lb_description.Text.Length > 0 ? lb_description.Text : null, + comboBox1.SelectedIndex, + tb_netName.Text.Length > 0 ? tb_netName.Text : null); + treeNode.Text = wordsComp.NameNode(); + treeNode.ImageIndex = comboBox1.SelectedIndex; + treeNode.SelectedImageIndex = comboBox1.SelectedIndex; + + } + + private void comboBox1_DrawItem(object sender, DrawItemEventArgs e) + { + if(e.Index != -1) + { + e.Graphics.DrawImage(imageList.Images[e.Index],e.Bounds.Left, e.Bounds.Top, imageList.Images[e.Index].Width, imageList.Images[e.Index].Height); + } + + } + } +} diff --git a/Remontor/Words/WordsEditCompControl.resx b/Remontor/Words/WordsEditCompControl.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Remontor/Words/WordsEditCompControl.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Remontor/Words/WordsItemControl.Designer.cs b/Remontor/Words/WordsItemControl.Designer.cs new file mode 100644 index 0000000..058dcf0 --- /dev/null +++ b/Remontor/Words/WordsItemControl.Designer.cs @@ -0,0 +1,130 @@ +namespace Remontor.Words +{ + partial class WordsItemControl + { + /// + /// Обязательная переменная конструктора. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Освободить все используемые ресурсы. + /// + /// истинно, если управляемый ресурс должен быть удален; иначе ложно. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Код, автоматически созданный конструктором компонентов + + /// + /// Требуемый метод для поддержки конструктора — не изменяйте + /// содержимое этого метода с помощью редактора кода. + /// + private void InitializeComponent() + { + this.checkBox1 = new System.Windows.Forms.CheckBox(); + this.label1 = new System.Windows.Forms.Label(); + this.lb_name = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.lb_ip = new System.Windows.Forms.Label(); + this.lb_dsp = new System.Windows.Forms.Label(); + this.pb_icon = new System.Windows.Forms.PictureBox(); + ((System.ComponentModel.ISupportInitialize)(this.pb_icon)).BeginInit(); + this.SuspendLayout(); + // + // checkBox1 + // + this.checkBox1.AutoSize = true; + this.checkBox1.Location = new System.Drawing.Point(8, 6); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.Size = new System.Drawing.Size(15, 14); + this.checkBox1.TabIndex = 0; + this.checkBox1.UseVisualStyleBackColor = true; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(50, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(47, 13); + this.label1.TabIndex = 1; + this.label1.Text = "Имя ПК"; + // + // lb_name + // + this.lb_name.AutoSize = true; + this.lb_name.Location = new System.Drawing.Point(103, 0); + this.lb_name.Name = "lb_name"; + this.lb_name.Size = new System.Drawing.Size(0, 13); + this.lb_name.TabIndex = 2; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(183, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(50, 13); + this.label2.TabIndex = 3; + this.label2.Text = "IP-адрес"; + // + // lb_ip + // + this.lb_ip.AutoSize = true; + this.lb_ip.Location = new System.Drawing.Point(239, 0); + this.lb_ip.Name = "lb_ip"; + this.lb_ip.Size = new System.Drawing.Size(0, 13); + this.lb_ip.TabIndex = 4; + // + // lb_dsp + // + this.lb_dsp.AutoSize = true; + this.lb_dsp.Location = new System.Drawing.Point(50, 13); + this.lb_dsp.Name = "lb_dsp"; + this.lb_dsp.Size = new System.Drawing.Size(0, 13); + this.lb_dsp.TabIndex = 6; + // + // pb_icon + // + this.pb_icon.Location = new System.Drawing.Point(27, 3); + this.pb_icon.Name = "pb_icon"; + this.pb_icon.Size = new System.Drawing.Size(20, 20); + this.pb_icon.TabIndex = 7; + this.pb_icon.TabStop = false; + // + // WordsItemControl + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.pb_icon); + this.Controls.Add(this.lb_dsp); + this.Controls.Add(this.lb_ip); + this.Controls.Add(this.label2); + this.Controls.Add(this.lb_name); + this.Controls.Add(this.label1); + this.Controls.Add(this.checkBox1); + this.Name = "WordsItemControl"; + this.Size = new System.Drawing.Size(371, 27); + this.Load += new System.EventHandler(this.WordsItemControl_Load); + ((System.ComponentModel.ISupportInitialize)(this.pb_icon)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.CheckBox checkBox1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label lb_name; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label lb_ip; + private System.Windows.Forms.Label lb_dsp; + private System.Windows.Forms.PictureBox pb_icon; + } +} diff --git a/Remontor/Words/WordsItemControl.cs b/Remontor/Words/WordsItemControl.cs new file mode 100644 index 0000000..71995d2 --- /dev/null +++ b/Remontor/Words/WordsItemControl.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Remontor.Words +{ + + [DefaultEvent(nameof(WordsItemControl))] + internal partial class WordsItemControl : UserControl, IWordsContol + { + + public WordsItemControl() + { + InitializeComponent(); + } + + public WordsItemControl(WordsComp wordsComp) + { + InitializeComponent(); + lb_ip.Text = wordsComp.GetIP(); + lb_name.Text = wordsComp.GetName(); + lb_dsp.Text = wordsComp.GetDescription(); + + } + + private void WordsItemControl_Load(object sender, EventArgs e) + { + + } + + } +} diff --git a/Remontor/Words/WordsItemControl.resx b/Remontor/Words/WordsItemControl.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Remontor/Words/WordsItemControl.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Remontor/Words/WordsList.cs b/Remontor/Words/WordsList.cs new file mode 100644 index 0000000..1810b88 --- /dev/null +++ b/Remontor/Words/WordsList.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Remontor.Words +{ + [Serializable] + static class WordsList + { + public static WordsCategory MainCategory = new WordsCategory("Main"); + public static void AddItem(IWordsItem item, WordsCategory wordsCategory) + { + wordsCategory.Add(item); + } + public static void InsertItem(int index,IWordsItem item, WordsCategory wordsCategory) + { + wordsCategory.Insert(index, item); + } + + public static void MoveItem(int index, IWordsItem item, WordsCategory SrcCategory, WordsCategory DstCategory) + { + SrcCategory.Move(index, item, DstCategory); + } + + public static TreeNode[] ListNodes() + { + TreeNode[] treeNodes = new TreeNode[MainCategory.Count()]; + for(int i = 0; i < MainCategory.Count(); i++) + { + treeNodes[i] = MainCategory.Items(i).NodeList(); + treeNodes[i].Name += i; + } + + return treeNodes; + } + + + + public static TreeNode[] ListNodes(WordsCategory ChangeCategory) + { + TreeNode[] treeNodes = new TreeNode[ChangeCategory.Count()]; + for (int i = 0; i < ChangeCategory.Count(); i++) + { + treeNodes[i] = ChangeCategory.Items(i).NodeList(); + } + + return treeNodes; + } + } +} diff --git a/Remontor/bin/Debug/Remontor.exe b/Remontor/bin/Debug/Remontor.exe index 4b1a72b..a5de831 100644 Binary files a/Remontor/bin/Debug/Remontor.exe and b/Remontor/bin/Debug/Remontor.exe differ diff --git a/Remontor/bin/Debug/Remontor.pdb b/Remontor/bin/Debug/Remontor.pdb index 9a7ef80..433831d 100644 Binary files a/Remontor/bin/Debug/Remontor.pdb and b/Remontor/bin/Debug/Remontor.pdb differ diff --git a/Remontor/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/Remontor/obj/Debug/DesignTimeResolveAssemblyReferences.cache index 37ae34f..3ca7d05 100644 Binary files a/Remontor/obj/Debug/DesignTimeResolveAssemblyReferences.cache and b/Remontor/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ diff --git a/Remontor/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/Remontor/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache index 26cf969..b151148 100644 Binary files a/Remontor/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and b/Remontor/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/Remontor/obj/Debug/Remontor.Properties.Resources.resources b/Remontor/obj/Debug/Remontor.Properties.Resources.resources index e081f0f..8fc7438 100644 Binary files a/Remontor/obj/Debug/Remontor.Properties.Resources.resources and b/Remontor/obj/Debug/Remontor.Properties.Resources.resources differ diff --git a/Remontor/obj/Debug/Remontor.csproj.GenerateResource.cache b/Remontor/obj/Debug/Remontor.csproj.GenerateResource.cache index 094e9a5..73653db 100644 Binary files a/Remontor/obj/Debug/Remontor.csproj.GenerateResource.cache and b/Remontor/obj/Debug/Remontor.csproj.GenerateResource.cache differ diff --git a/Remontor/obj/Debug/Remontor.exe b/Remontor/obj/Debug/Remontor.exe index 4b1a72b..a5de831 100644 Binary files a/Remontor/obj/Debug/Remontor.exe and b/Remontor/obj/Debug/Remontor.exe differ diff --git a/Remontor/obj/Debug/Remontor.pdb b/Remontor/obj/Debug/Remontor.pdb index 9a7ef80..433831d 100644 Binary files a/Remontor/obj/Debug/Remontor.pdb and b/Remontor/obj/Debug/Remontor.pdb differ diff --git a/Remontor/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll b/Remontor/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll index ff11fbf..3c3477b 100644 Binary files a/Remontor/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll and b/Remontor/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll differ