diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1871401 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.vs +packages +NHB3/bin +NHB3/obj \ No newline at end of file diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..0d634dc --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2020 NiceHash.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/NHB3.sln b/NHB3.sln new file mode 100644 index 0000000..75c41ae --- /dev/null +++ b/NHB3.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29806.167 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NHB3", "NHB3\NHB3.csproj", "{544DB7FC-334D-4C5D-A298-61508693EB31}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {544DB7FC-334D-4C5D-A298-61508693EB31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {544DB7FC-334D-4C5D-A298-61508693EB31}.Debug|Any CPU.Build.0 = Debug|Any CPU + {544DB7FC-334D-4C5D-A298-61508693EB31}.Release|Any CPU.ActiveCfg = Release|Any CPU + {544DB7FC-334D-4C5D-A298-61508693EB31}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {ACE18268-A609-422C-8625-55B261915EF9} + EndGlobalSection +EndGlobal diff --git a/NHB3/Api.cs b/NHB3/Api.cs new file mode 100644 index 0000000..125c83d --- /dev/null +++ b/NHB3/Api.cs @@ -0,0 +1,194 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NHB3 +{ + class Api + { + private string urlRoot; + private string orgId; + private string apiKey; + private string apiSecret; + + public string time; + + public Api(string urlRoot, string orgId, string apiKey, string apiSecret) + { + this.urlRoot = urlRoot; + this.orgId = orgId; + this.apiKey = apiKey; + this.apiSecret = apiSecret; + } + + private static string HashBySegments(string key, string apiKey, string time, string nonce, string orgId, string method, string encodedPath, string query, string bodyStr) + { + List segments = new List(); + segments.Add(apiKey); + segments.Add(time); + segments.Add(nonce); + segments.Add(null); + segments.Add(orgId); + segments.Add(null); + segments.Add(method); + segments.Add(encodedPath == null ? null : encodedPath); + segments.Add(query == null ? null : query); + + if (bodyStr != null && bodyStr.Length > 0) + { + segments.Add(bodyStr); + } + return Api.CalcHMACSHA256Hash(Api.JoinSegments(segments), key); + } + private static string getPath(string url) + { + var arrSplit = url.Split('?'); + return arrSplit[0]; + } + private static string getQuery(string url) + { + var arrSplit = url.Split('?'); + + if (arrSplit.Length == 1) + { + return null; + } + else + { + return arrSplit[1]; + } + } + + private static string JoinSegments(List segments) + { + var sb = new System.Text.StringBuilder(); + bool first = true; + foreach (var segment in segments) + { + if (!first) + { + sb.Append("\x00"); + } + else + { + first = false; + } + + if (segment != null) + { + sb.Append(segment); + } + } + Console.Out.WriteLine("req: [" + sb.ToString() + "]"); + return sb.ToString(); + } + + private static string CalcHMACSHA256Hash(string plaintext, string salt) + { + string result = ""; + var enc = Encoding.Default; + byte[] + baText2BeHashed = enc.GetBytes(plaintext), + baSalt = enc.GetBytes(salt); + System.Security.Cryptography.HMACSHA256 hasher = new System.Security.Cryptography.HMACSHA256(baSalt); + byte[] baHashedText = hasher.ComputeHash(baText2BeHashed); + result = string.Join("", baHashedText.ToList().Select(b => b.ToString("x2")).ToArray()); + return result; + } + + private string srvrTime() + { + string timeResponse = this.get("/api/v2/time", false); + ServerTime serverTimeObject = Newtonsoft.Json.JsonConvert.DeserializeObject(timeResponse); + time = serverTimeObject.serverTime; + return time; + } + + public string get(string url, bool auth) + { + var client = new RestSharp.RestClient(this.urlRoot); + var request = new RestSharp.RestRequest(url); + + if (auth) + { + string time = this.srvrTime(); + string nonce = Guid.NewGuid().ToString(); + string digest = Api.HashBySegments(this.apiSecret, this.apiKey, time, nonce, this.orgId, "GET", getPath(url), getQuery(url), null); + + request.AddHeader("X-Time", time); + request.AddHeader("X-Nonce", nonce); + request.AddHeader("X-Auth", this.apiKey + ":" + digest); + request.AddHeader("X-Organization-Id", this.orgId); + } + + var response = client.Execute(request, RestSharp.Method.GET); + //Console.Out.WriteLine("res: [" + response.Content + "]"); + var content = response.Content; + return content; + } + + public string post(string url, string payload, bool requestId) + { + string time = this.srvrTime(); + var client = new RestSharp.RestClient(this.urlRoot); + var request = new RestSharp.RestRequest(url); + request.AddHeader("Accept", "application/json"); + request.AddHeader("Content-type", "application/json"); + + string nonce = Guid.NewGuid().ToString(); + string digest = Api.HashBySegments(this.apiSecret, this.apiKey, time, nonce, this.orgId, "POST", getPath(url), getQuery(url), payload); + + if (payload != null) + { + request.AddJsonBody(payload); + } + + request.AddHeader("X-Time", time); + request.AddHeader("X-Nonce", nonce); + request.AddHeader("X-Auth", this.apiKey + ":" + digest); + request.AddHeader("X-Organization-Id", this.orgId); + + if (requestId) + { + request.AddHeader("X-Request-Id", Guid.NewGuid().ToString()); + } + + var response = client.Execute(request, RestSharp.Method.POST); + //Console.Out.WriteLine("res: [" + response.Content + "]"); + var content = response.Content; + return content; + } + + public string delete(string url, bool requestId) + { + string time = this.srvrTime(); + var client = new RestSharp.RestClient(this.urlRoot); + var request = new RestSharp.RestRequest(url); + + string nonce = Guid.NewGuid().ToString(); + string digest = Api.HashBySegments(this.apiSecret, this.apiKey, time, nonce, this.orgId, "DELETE", getPath(url), getQuery(url), null); + + request.AddHeader("X-Time", time); + request.AddHeader("X-Nonce", nonce); + request.AddHeader("X-Auth", this.apiKey + ":" + digest); + request.AddHeader("X-Organization-Id", this.orgId); + + if (requestId) + { + request.AddHeader("X-Request-Id", Guid.NewGuid().ToString()); + } + + var response = client.Execute(request, RestSharp.Method.DELETE); + //Console.Out.WriteLine("res: [" + response.Content + "]"); + var content = response.Content; + return content; + } + } + + public class ServerTime + { + public string serverTime { get; set; } + } +} \ No newline at end of file diff --git a/NHB3/ApiConnect.cs b/NHB3/ApiConnect.cs new file mode 100644 index 0000000..3fc7236 --- /dev/null +++ b/NHB3/ApiConnect.cs @@ -0,0 +1,263 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.Data; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace NHB3 +{ + public class ApiConnect + { + Api api; + public JArray algorithms; //hold algo settings + public JArray pools = new JArray(); + public bool connected = false; + public string currency; + + public void setup(ApiSettings settings) { + this.api = new Api(getApiUrl(settings.Enviorment), settings.OrganizationID, settings.ApiID, settings.ApiSecret); + this.connected = true; + + //read algo settings + string algosResponse = api.get("/main/api/v2/mining/algorithms", false); + JObject aslgoObject = JsonConvert.DeserializeObject(algosResponse); + if (aslgoObject["error_id"] == null) + { + algorithms = aslgoObject["miningAlgorithms"] as JArray; + } + } + + public JArray getMarket() { + string marketResponse = api.get("/main/api/v2/public/orders/active2", false); + JObject marektObject = JsonConvert.DeserializeObject(marketResponse); + if (marektObject["error_id"] == null) + { + return marektObject["list"] as JArray; + } + return new JArray(); + } + + public bool settingsOk() { + string accountsResponse = api.get("/main/api/v2/accounting/accounts2", true); + JObject accountsObject = JsonConvert.DeserializeObject(accountsResponse); + + if (accountsObject["error_id"] == null) + { + return true; + } + return false; + } + + public JObject getBalance(string currency) { + string accountsResponse = api.get("/main/api/v2/accounting/accounts2", true); + JObject accountsObject = JsonConvert.DeserializeObject(accountsResponse); + + if (accountsObject["error_id"] != null) + { + //api call failed + Console.WriteLine("Error reading API ... {0}", accountsObject); + } + JArray currencies = accountsObject["currencies"] as JArray; + foreach (JObject obj in currencies) + { + string curr = obj["currency"].ToString(); + if (curr.Equals(currency)) { + return obj; + } + } + return null; + } + + public JArray getPools(bool force) { + if (force) + { + string poolsResponse = api.get("/main/api/v2/pools?size=1000", true); + JObject poolsObject = JsonConvert.DeserializeObject(poolsResponse); + + if (poolsObject["error_id"] == null) + { + this.pools = poolsObject["list"] as JArray; + } + } + return this.pools; + } + + public void deletePool(string id) { + api.delete("/main/api/v2/pool/"+id, false); + } + + public void editPool(string name, string algorithm, string url, string port, string username, string password, string id) { + Dictionary pool = new Dictionary + { + { "id", id }, + { "algorithm", algorithm }, + { "name", name }, + { "username", username }, + { "password", password }, + { "stratumHostname", url }, + { "stratumPort", port } + }; + api.post("/main/api/v2/pool", JsonConvert.SerializeObject(pool), false); + } + + public void addPool(string name, string algorithm, string url, string port, string username, string password) { + Dictionary pool = new Dictionary + { + { "algorithm", algorithm }, + { "name", name }, + { "username", username }, + { "password", password }, + { "stratumHostname", url }, + { "stratumPort", port } + }; + api.post("/main/api/v2/pool", JsonConvert.SerializeObject(pool), false); + } + + public JArray getOrders() { + long ts = Convert.ToInt64(api.time) + (24 * 60 * 1000); //in case of stratum "refresh" + + string ordersResponse = api.get("/main/api/v2/hashpower/myOrders?active=true&op=LE&limit=1000&ts="+ts, true); + JObject ordersObject = JsonConvert.DeserializeObject(ordersResponse); + + if (ordersObject["error_id"] == null) + { + return ordersObject["list"] as JArray; + } + return new JArray(); + } + + public JObject getFixedPrice(string algo, string limit, string market) { + Dictionary reqParams = new Dictionary + { + { "algorithm", algo }, + { "limit", limit }, + { "market", market } + }; + string fixedResponse = api.post("/main/api/v2/hashpower/orders/fixedPrice", JsonConvert.SerializeObject(reqParams), false); + JObject fixedObject = JsonConvert.DeserializeObject(fixedResponse); + + if (fixedObject["error_id"] == null) + { + return fixedObject; + } + return new JObject(); + } + + public JObject createOrder(string algo, string market, string type, string pool, string price, string limit, string amount) { + JObject selAlgo = getAlgo(algo); + + Dictionary order = new Dictionary { + { "algorithm", algo }, + { "amount", amount }, + { "displayMarketFactor", (string)selAlgo["displayMarketFactor"] }, + { "limit", limit }, + { "market", market }, + { "marketFactor", (string)selAlgo["marketFactor"] }, + { "poolId", pool }, + { "price", price }, + { "type", type } + }; + string newOrderResponse = api.post("/main/api/v2/hashpower/order", JsonConvert.SerializeObject(order), true); + JObject orderObject = JsonConvert.DeserializeObject(newOrderResponse); + + if (orderObject["error_id"] == null) + { + return orderObject; + } + return new JObject(); + } + + public JObject refillOrder(string id, string amount) { + Dictionary order = new Dictionary { + { "amount", amount } + }; + + string refillOrderResponse = api.post("/main/api/v2/hashpower/order/"+id+"/refill", JsonConvert.SerializeObject(order), true); + JObject orderObject = JsonConvert.DeserializeObject(refillOrderResponse); + + if (orderObject["error_id"] == null) + { + return orderObject; + } + return new JObject(); + } + + public JObject updateOrder(string algo, string id, string price, string limit) + { + JObject selAlgo = getAlgo(algo); + Dictionary order = new Dictionary { + { "price", price }, + { "limit", limit }, + { "displayMarketFactor", (string)selAlgo["displayMarketFactor"] }, + { "marketFactor", (string)selAlgo["marketFactor"] } + }; + + string editOrderResponse = api.post("/main/api/v2/hashpower/order/" + id + "/updatePriceAndLimit", JsonConvert.SerializeObject(order), true); + JObject orderObject = JsonConvert.DeserializeObject(editOrderResponse); + + if (orderObject["error_id"] == null) + { + return orderObject; + } + return new JObject(); + } + + public JObject cancelOrder(string id) + { + string deleteOrderResponse = api.delete("/main/api/v2/hashpower/order/" + id, true); + JObject orderObject = JsonConvert.DeserializeObject(deleteOrderResponse); + + if (orderObject["error_id"] == null) + { + return orderObject; + } + return new JObject(); + } + + public ApiSettings readSettings() { + String fileName = Path.Combine(Directory.GetCurrentDirectory(), "settings.json"); + if (File.Exists(fileName)) + { + ApiSettings saved = JsonConvert.DeserializeObject(File.ReadAllText(@fileName)); + return saved; + } + return new ApiSettings(); + } + + public JObject getAlgo(string algo) { + foreach (JObject obj in algorithms) + { + if (algo.Equals(""+obj["algorithm"])) + { + return obj; + } + } + return new JObject(); + } + + private string getApiUrl(int Enviorment) + { + if (Enviorment == 1) + { + return "https://api2.nicehash.com"; + } + return "https://api-test.nicehash.com"; + } + + public class ApiSettings + { + public string OrganizationID { get; set; } + + public string ApiID { get; set; } + + public string ApiSecret { get; set; } + + public int Enviorment { get; set; } + } + + } +} diff --git a/NHB3/ApiForm.Designer.cs b/NHB3/ApiForm.Designer.cs new file mode 100644 index 0000000..203921f --- /dev/null +++ b/NHB3/ApiForm.Designer.cs @@ -0,0 +1,223 @@ +namespace NHB3 +{ + partial class ApiForm + { + /// + /// 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.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.radioButton1 = new System.Windows.Forms.RadioButton(); + this.radioButton2 = new System.Windows.Forms.RadioButton(); + this.linkLabel1 = new System.Windows.Forms.LinkLabel(); + this.button1 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.label5 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(13, 13); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(116, 20); + this.label1.TabIndex = 0; + this.label1.Text = "OrganizationID"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(13, 46); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(49, 20); + this.label2.TabIndex = 1; + this.label2.Text = "ApiID"; + // + // textBox1 + // + this.textBox1.Location = new System.Drawing.Point(135, 10); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(653, 26); + this.textBox1.TabIndex = 2; + // + // textBox2 + // + this.textBox2.Location = new System.Drawing.Point(135, 43); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(653, 26); + this.textBox2.TabIndex = 3; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(13, 82); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(79, 20); + this.label3.TabIndex = 4; + this.label3.Text = "ApiSecret"; + // + // textBox3 + // + this.textBox3.Location = new System.Drawing.Point(135, 76); + this.textBox3.Name = "textBox3"; + this.textBox3.Size = new System.Drawing.Size(653, 26); + this.textBox3.TabIndex = 5; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(13, 113); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(89, 20); + this.label4.TabIndex = 6; + this.label4.Text = "Enviorment"; + // + // radioButton1 + // + this.radioButton1.AutoSize = true; + this.radioButton1.Location = new System.Drawing.Point(135, 111); + this.radioButton1.Name = "radioButton1"; + this.radioButton1.Size = new System.Drawing.Size(61, 24); + this.radioButton1.TabIndex = 7; + this.radioButton1.TabStop = true; + this.radioButton1.Text = "test"; + this.radioButton1.UseVisualStyleBackColor = true; + // + // radioButton2 + // + this.radioButton2.AutoSize = true; + this.radioButton2.Location = new System.Drawing.Point(203, 111); + this.radioButton2.Name = "radioButton2"; + this.radioButton2.Size = new System.Drawing.Size(109, 24); + this.radioButton2.TabIndex = 8; + this.radioButton2.TabStop = true; + this.radioButton2.Text = "production"; + this.radioButton2.UseVisualStyleBackColor = true; + // + // linkLabel1 + // + this.linkLabel1.AutoSize = true; + this.linkLabel1.Location = new System.Drawing.Point(642, 113); + this.linkLabel1.Name = "linkLabel1"; + this.linkLabel1.Size = new System.Drawing.Size(146, 20); + this.linkLabel1.TabIndex = 9; + this.linkLabel1.TabStop = true; + this.linkLabel1.Text = "How to get API Key"; + this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked); + // + // button1 + // + this.button1.Location = new System.Drawing.Point(500, 158); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(141, 39); + this.button1.TabIndex = 10; + this.button1.Text = "Test credentials"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // button2 + // + this.button2.Enabled = false; + this.button2.Location = new System.Drawing.Point(647, 158); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(141, 39); + this.button2.TabIndex = 11; + this.button2.Text = "Save credentials"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // label5 + // + this.label5.AutoSize = true; + this.label5.ForeColor = System.Drawing.Color.Firebrick; + this.label5.Location = new System.Drawing.Point(13, 176); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(44, 20); + this.label5.TabIndex = 12; + this.label5.Text = "Error"; + this.label5.Visible = false; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.ForeColor = System.Drawing.Color.Green; + this.label6.Location = new System.Drawing.Point(18, 177); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(70, 20); + this.label6.TabIndex = 13; + this.label6.Text = "Success"; + this.label6.Visible = false; + // + // ApiForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 210); + this.Controls.Add(this.label6); + this.Controls.Add(this.label5); + this.Controls.Add(this.button2); + this.Controls.Add(this.button1); + this.Controls.Add(this.linkLabel1); + this.Controls.Add(this.radioButton2); + this.Controls.Add(this.radioButton1); + this.Controls.Add(this.label4); + this.Controls.Add(this.textBox3); + this.Controls.Add(this.label3); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Name = "ApiForm"; + this.Text = "Api settings"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox textBox3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.RadioButton radioButton1; + private System.Windows.Forms.RadioButton radioButton2; + private System.Windows.Forms.LinkLabel linkLabel1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label6; + } +} \ No newline at end of file diff --git a/NHB3/ApiForm.cs b/NHB3/ApiForm.cs new file mode 100644 index 0000000..ff95d77 --- /dev/null +++ b/NHB3/ApiForm.cs @@ -0,0 +1,90 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +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; +using static NHB3.ApiConnect; + +namespace NHB3 +{ + public partial class ApiForm : Form + { + ApiConnect ac; + + public ApiForm(ApiConnect ac) + { + InitializeComponent(); + this.Show(); + this.ac = ac; + + //load current settings + ApiSettings saved = this.ac.readSettings(); + this.textBox1.Text = saved.OrganizationID; + this.textBox2.Text = saved.ApiID; + this.textBox3.Text = saved.ApiSecret; + + if (saved.Enviorment == 0) + { + this.radioButton1.Checked = true; + } + else if (saved.Enviorment == 1) + { + this.radioButton2.Checked = true; + } + } + + private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + System.Diagnostics.Process.Start("https://github.com/nicehash/rest-clients-demo"); + } + + private void button1_Click(object sender, EventArgs e) + { + this.button2.Enabled = false; + this.label5.Visible = false; //error + this.label6.Visible = false; //success + + ApiSettings current = formSettings(); + ac.setup(current); + if (ac.settingsOk()) { + this.label6.Visible = true; + this.button2.Enabled = true; + } else { + this.label5.Visible = true; + } + } + + private void button2_Click(object sender, EventArgs e) + { + String fileName = Path.Combine(Directory.GetCurrentDirectory(), "settings.json"); + ApiSettings current = formSettings(); + File.WriteAllText(fileName, JsonConvert.SerializeObject(current)); + this.Close(); + } + + private ApiSettings formSettings() { + ApiSettings current = new ApiSettings(); + + current.OrganizationID = this.textBox1.Text; + current.ApiID = this.textBox2.Text; + current.ApiSecret = this.textBox3.Text; + + if (this.radioButton1.Checked == true) + { + current.Enviorment = 0; + } + else if (this.radioButton2.Checked == true) + { + current.Enviorment = 1; + } + return current; + } + } +} diff --git a/NHB3/ApiForm.resx b/NHB3/ApiForm.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/NHB3/ApiForm.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/NHB3/App.config b/NHB3/App.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/NHB3/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/NHB3/BotForm.Designer.cs b/NHB3/BotForm.Designer.cs new file mode 100644 index 0000000..af17a1f --- /dev/null +++ b/NHB3/BotForm.Designer.cs @@ -0,0 +1,100 @@ +namespace NHB3 +{ + partial class BotForm + { + /// + /// 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.checkBox1 = new System.Windows.Forms.CheckBox(); + this.checkBox2 = new System.Windows.Forms.CheckBox(); + this.checkBox3 = new System.Windows.Forms.CheckBox(); + this.button1 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // checkBox1 + // + this.checkBox1.AutoSize = true; + this.checkBox1.Location = new System.Drawing.Point(13, 13); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.Size = new System.Drawing.Size(254, 24); + this.checkBox1.TabIndex = 0; + this.checkBox1.Text = "Refill order when spent hit 90%"; + this.checkBox1.UseVisualStyleBackColor = true; + // + // checkBox2 + // + this.checkBox2.AutoSize = true; + this.checkBox2.Location = new System.Drawing.Point(13, 44); + this.checkBox2.Name = "checkBox2"; + this.checkBox2.Size = new System.Drawing.Size(467, 24); + this.checkBox2.TabIndex = 1; + this.checkBox2.Text = "Lower order price for one step if cheaper hashpower available"; + this.checkBox2.UseVisualStyleBackColor = true; + // + // checkBox3 + // + this.checkBox3.AutoSize = true; + this.checkBox3.Location = new System.Drawing.Point(13, 75); + this.checkBox3.Name = "checkBox3"; + this.checkBox3.Size = new System.Drawing.Size(441, 24); + this.checkBox3.TabIndex = 2; + this.checkBox3.Text = "Increase order price for one step if order run out of miners"; + this.checkBox3.UseVisualStyleBackColor = true; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(485, 105); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(75, 32); + this.button1.TabIndex = 3; + this.button1.Text = "Save"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // BotForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(581, 151); + this.Controls.Add(this.button1); + this.Controls.Add(this.checkBox3); + this.Controls.Add(this.checkBox2); + this.Controls.Add(this.checkBox1); + this.Name = "BotForm"; + this.Text = "Bot settings"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.CheckBox checkBox1; + private System.Windows.Forms.CheckBox checkBox2; + private System.Windows.Forms.CheckBox checkBox3; + private System.Windows.Forms.Button button1; + } +} \ No newline at end of file diff --git a/NHB3/BotForm.cs b/NHB3/BotForm.cs new file mode 100644 index 0000000..f6bfc22 --- /dev/null +++ b/NHB3/BotForm.cs @@ -0,0 +1,72 @@ +using Newtonsoft.Json; +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 NHB3 +{ + public partial class BotForm : Form + { + + public bool refill; + public bool lower; + public bool increase; + + public BotForm() + { + InitializeComponent(); + this.Show(); + loadSettings(); + } + + public void loadSettings() { + String fileName = Path.Combine(Directory.GetCurrentDirectory(), "bot.json"); + if (File.Exists(fileName)) + { + BotSettings saved = JsonConvert.DeserializeObject(File.ReadAllText(@fileName)); + this.checkBox1.Checked = saved.reffilOrder; + this.checkBox2.Checked = saved.lowerPrice; + this.checkBox3.Checked = saved.increasePrice; + } + } + + private void button1_Click(object sender, EventArgs e) + { + String fileName = Path.Combine(Directory.GetCurrentDirectory(), "bot.json"); + BotSettings current = formSettings(); + File.WriteAllText(fileName, JsonConvert.SerializeObject(current)); + this.Close(); + } + + private BotSettings formSettings() + { + BotSettings current = new BotSettings(); + + current.reffilOrder = false; + current.lowerPrice = false; + current.increasePrice = false; + + if (this.checkBox1.Checked) current.reffilOrder = true; + if (this.checkBox2.Checked) current.lowerPrice = true; + if (this.checkBox3.Checked) current.increasePrice = true; + + return current; + } + } + + public class BotSettings + { + public bool reffilOrder { get; set; } + + public bool lowerPrice { get; set; } + + public bool increasePrice { get; set; } + } +} diff --git a/NHB3/BotForm.resx b/NHB3/BotForm.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/NHB3/BotForm.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/NHB3/Home.Designer.cs b/NHB3/Home.Designer.cs new file mode 100644 index 0000000..89757a6 --- /dev/null +++ b/NHB3/Home.Designer.cs @@ -0,0 +1,248 @@ +namespace NHB3 +{ + partial class Home + { + /// + /// 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() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Home)); + this.menuStrip1 = new System.Windows.Forms.MenuStrip(); + this.refreshToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.newOrderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.editSelectedOrderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.ordersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.balanceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripMenuItem(); + this.botToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.toolStripSplitButton1 = new System.Windows.Forms.ToolStripSplitButton(); + this.autoPilotOffToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.autoPilotONToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel2 = new System.Windows.Forms.ToolStripStatusLabel(); + this.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.menuStrip1.SuspendLayout(); + this.statusStrip1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); + this.SuspendLayout(); + // + // menuStrip1 + // + this.menuStrip1.ImageScalingSize = new System.Drawing.Size(24, 24); + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.refreshToolStripMenuItem, + this.toolStripMenuItem1}); + this.menuStrip1.Location = new System.Drawing.Point(0, 0); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.Size = new System.Drawing.Size(1406, 36); + this.menuStrip1.TabIndex = 0; + this.menuStrip1.Text = "menuStrip1"; + // + // refreshToolStripMenuItem + // + this.refreshToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.newOrderToolStripMenuItem, + this.editSelectedOrderToolStripMenuItem, + this.ordersToolStripMenuItem, + this.balanceToolStripMenuItem}); + this.refreshToolStripMenuItem.Name = "refreshToolStripMenuItem"; + this.refreshToolStripMenuItem.Size = new System.Drawing.Size(87, 32); + this.refreshToolStripMenuItem.Text = "Actions"; + // + // newOrderToolStripMenuItem + // + this.newOrderToolStripMenuItem.Name = "newOrderToolStripMenuItem"; + this.newOrderToolStripMenuItem.Size = new System.Drawing.Size(261, 34); + this.newOrderToolStripMenuItem.Text = "New order"; + this.newOrderToolStripMenuItem.Click += new System.EventHandler(this.newOrderToolStripMenuItem_Click); + // + // editSelectedOrderToolStripMenuItem + // + this.editSelectedOrderToolStripMenuItem.Name = "editSelectedOrderToolStripMenuItem"; + this.editSelectedOrderToolStripMenuItem.Size = new System.Drawing.Size(261, 34); + this.editSelectedOrderToolStripMenuItem.Text = "Edit selected order"; + this.editSelectedOrderToolStripMenuItem.Click += new System.EventHandler(this.editSelectedOrderToolStripMenuItem_Click); + // + // ordersToolStripMenuItem + // + this.ordersToolStripMenuItem.Name = "ordersToolStripMenuItem"; + this.ordersToolStripMenuItem.Size = new System.Drawing.Size(261, 34); + this.ordersToolStripMenuItem.Text = "Refresh orders"; + this.ordersToolStripMenuItem.Click += new System.EventHandler(this.ordersToolStripMenuItem_Click); + // + // balanceToolStripMenuItem + // + this.balanceToolStripMenuItem.Name = "balanceToolStripMenuItem"; + this.balanceToolStripMenuItem.Size = new System.Drawing.Size(261, 34); + this.balanceToolStripMenuItem.Text = "Refresh balance"; + this.balanceToolStripMenuItem.Click += new System.EventHandler(this.balanceToolStripMenuItem_Click); + // + // toolStripMenuItem1 + // + this.toolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenuItem2, + this.toolStripMenuItem3, + this.botToolStripMenuItem}); + this.toolStripMenuItem1.Name = "toolStripMenuItem1"; + this.toolStripMenuItem1.Size = new System.Drawing.Size(92, 32); + this.toolStripMenuItem1.Text = "Settings"; + // + // toolStripMenuItem2 + // + this.toolStripMenuItem2.Name = "toolStripMenuItem2"; + this.toolStripMenuItem2.Size = new System.Drawing.Size(157, 34); + this.toolStripMenuItem2.Text = "API"; + this.toolStripMenuItem2.Click += new System.EventHandler(this.api_Click); + // + // toolStripMenuItem3 + // + this.toolStripMenuItem3.Name = "toolStripMenuItem3"; + this.toolStripMenuItem3.Size = new System.Drawing.Size(157, 34); + this.toolStripMenuItem3.Text = "Pools"; + this.toolStripMenuItem3.Click += new System.EventHandler(this.pools_Click); + // + // botToolStripMenuItem + // + this.botToolStripMenuItem.Name = "botToolStripMenuItem"; + this.botToolStripMenuItem.Size = new System.Drawing.Size(157, 34); + this.botToolStripMenuItem.Text = "Bot"; + this.botToolStripMenuItem.Click += new System.EventHandler(this.botToolStripMenuItem_Click); + // + // statusStrip1 + // + this.statusStrip1.ImageScalingSize = new System.Drawing.Size(24, 24); + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripSplitButton1, + this.toolStripStatusLabel1, + this.toolStripStatusLabel2}); + this.statusStrip1.Location = new System.Drawing.Point(0, 693); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(1406, 32); + this.statusStrip1.TabIndex = 1; + this.statusStrip1.Text = "statusStrip1"; + // + // toolStripSplitButton1 + // + this.toolStripSplitButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripSplitButton1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.autoPilotOffToolStripMenuItem, + this.autoPilotONToolStripMenuItem}); + this.toolStripSplitButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripSplitButton1.Image"))); + this.toolStripSplitButton1.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None; + this.toolStripSplitButton1.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripSplitButton1.Name = "toolStripSplitButton1"; + this.toolStripSplitButton1.Size = new System.Drawing.Size(37, 29); + this.toolStripSplitButton1.Text = "toolStripSplitButton1"; + // + // autoPilotOffToolStripMenuItem + // + this.autoPilotOffToolStripMenuItem.Name = "autoPilotOffToolStripMenuItem"; + this.autoPilotOffToolStripMenuItem.Size = new System.Drawing.Size(172, 34); + this.autoPilotOffToolStripMenuItem.Text = "Bot Off"; + this.autoPilotOffToolStripMenuItem.Click += new System.EventHandler(this.autoPilotOffToolStripMenuItem_Click); + // + // autoPilotONToolStripMenuItem + // + this.autoPilotONToolStripMenuItem.Name = "autoPilotONToolStripMenuItem"; + this.autoPilotONToolStripMenuItem.Size = new System.Drawing.Size(172, 34); + this.autoPilotONToolStripMenuItem.Text = "Bot On"; + this.autoPilotONToolStripMenuItem.Click += new System.EventHandler(this.autoPilotONToolStripMenuItem_Click); + // + // toolStripStatusLabel1 + // + this.toolStripStatusLabel1.Name = "toolStripStatusLabel1"; + this.toolStripStatusLabel1.Size = new System.Drawing.Size(80, 25); + this.toolStripStatusLabel1.Text = "Stopped"; + // + // toolStripStatusLabel2 + // + this.toolStripStatusLabel2.Name = "toolStripStatusLabel2"; + this.toolStripStatusLabel2.Size = new System.Drawing.Size(75, 25); + this.toolStripStatusLabel2.Text = "Balance:"; + // + // dataGridView1 + // + this.dataGridView1.AllowUserToAddRows = false; + this.dataGridView1.AllowUserToDeleteRows = false; + this.dataGridView1.AllowUserToOrderColumns = true; + this.dataGridView1.AllowUserToResizeRows = false; + this.dataGridView1.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.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView1.Location = new System.Drawing.Point(12, 36); + this.dataGridView1.Name = "dataGridView1"; + this.dataGridView1.RowHeadersWidth = 62; + this.dataGridView1.RowTemplate.Height = 20; + this.dataGridView1.Size = new System.Drawing.Size(1382, 645); + this.dataGridView1.TabIndex = 2; + // + // Home + // + this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1406, 725); + this.Controls.Add(this.dataGridView1); + this.Controls.Add(this.statusStrip1); + this.Controls.Add(this.menuStrip1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MainMenuStrip = this.menuStrip1; + this.Name = "Home"; + this.Text = "NHB3"; + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.MenuStrip menuStrip1; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem2; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem3; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel2; + private System.Windows.Forms.ToolStripMenuItem refreshToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem balanceToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem ordersToolStripMenuItem; + private System.Windows.Forms.DataGridView dataGridView1; + private System.Windows.Forms.ToolStripMenuItem newOrderToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem editSelectedOrderToolStripMenuItem; + private System.Windows.Forms.ToolStripSplitButton toolStripSplitButton1; + private System.Windows.Forms.ToolStripMenuItem autoPilotOffToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem autoPilotONToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem botToolStripMenuItem; + } +} + diff --git a/NHB3/Home.cs b/NHB3/Home.cs new file mode 100644 index 0000000..b8b5de4 --- /dev/null +++ b/NHB3/Home.cs @@ -0,0 +1,299 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using static NHB3.ApiConnect; + +namespace NHB3 +{ + public partial class Home : Form + { + ApiConnect ac; + string currency = "TBTC"; + bool botRunning = false; + JArray orders; + JArray market; + + System.Threading.Timer timer; + + public Home() + { + InitializeComponent(); + ac = new ApiConnect(); + + ApiSettings saved = ac.readSettings(); + if (saved.OrganizationID != null) { + ac.setup(saved); + + if (saved.Enviorment == 1) { + currency = "BTC"; + } + ac.currency = currency; + refreshBalance(); + refreshOrders(false); + ac.getPools(true); + + timer = new System.Threading.Timer( + e => runBot(), + null, + TimeSpan.Zero, + TimeSpan.FromSeconds(60)); + } + } + + private void api_Click(object sender, EventArgs e) + { + ApiForm af = new ApiForm(ac); + af.FormBorderStyle = FormBorderStyle.FixedSingle; + } + + private void pools_Click(object sender, EventArgs e) + { + PoolsForm pf = new PoolsForm(ac); + pf.FormBorderStyle = FormBorderStyle.FixedSingle; + } + + private void botToolStripMenuItem_Click(object sender, EventArgs e) + { + BotForm bf = new BotForm(); + bf.FormBorderStyle = FormBorderStyle.FixedSingle; + } + + private void newOrderToolStripMenuItem_Click(object sender, EventArgs e) + { + OrderForm of = new OrderForm(ac); + of.FormBorderStyle = FormBorderStyle.FixedSingle; + of.FormClosed += new FormClosedEventHandler(f_FormClosed); //refresh orders + } + + private void ordersToolStripMenuItem_Click(object sender, EventArgs e) + { + refreshOrders(false); + } + + private void balanceToolStripMenuItem_Click(object sender, EventArgs e) + { + refreshBalance(); + } + + private void refreshBalance() { + if (ac.connected) + { + JObject balance = ac.getBalance(currency); + if (balance != null) + { + this.toolStripStatusLabel2.Text = "Balance: " + balance["available"] + " " + currency; + } + } else { + this.toolStripStatusLabel2.Text = "Balance: N/A " + currency; + } + } + + private void refreshOrders(bool fromThread) + { + if (ac.connected) + { + orders = ac.getOrders(); + + //filter out data + JArray cleanOrders = new JArray(); + foreach (JObject order in orders) + { + JObject cleanOrder = new JObject(); + cleanOrder.Add("id", ""+order["id"]); + cleanOrder.Add("market", "" + order["market"]); + cleanOrder.Add("pool", "" + order["pool"]["name"]); + cleanOrder.Add("type", (""+order["type"]["code"]).Equals("STANDARD") ? "standard" : "fixed"); + cleanOrder.Add("algorithm", "" + order["algorithm"]["algorithm"]); + cleanOrder.Add("amount", "" + order["amount"]); + cleanOrder.Add("payedAmount", "" + order["payedAmount"]); + cleanOrder.Add("availableAmount", "" + order["availableAmount"]); + + float payed = float.Parse("" + order["payedAmount"], CultureInfo.InvariantCulture); + float available = float.Parse("" + order["availableAmount"], CultureInfo.InvariantCulture); + float spent_factor = payed / available * 100; + + cleanOrder.Add("spentPercent", "" + spent_factor.ToString("0.00")+ "%"); + cleanOrder.Add("limit", "" + order["limit"]); + cleanOrder.Add("price", "" + order["price"]); + cleanOrder.Add("rigsCount", "" + order["rigsCount"]); + cleanOrder.Add("acceptedCurrentSpeed", "" + order["acceptedCurrentSpeed"]); + cleanOrders.Add(cleanOrder); + } + + if (fromThread) + { + dataGridView1.Invoke((MethodInvoker)delegate + { + dataGridView1.DataSource = cleanOrders; + }); + } else + { + dataGridView1.DataSource = cleanOrders; + } + + dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None; + dataGridView1.AllowUserToOrderColumns = true; + dataGridView1.AllowUserToResizeColumns = true; + } + } + + private void refreshMarket() { + if (ac.connected) + { + market = ac.getMarket(); + } + } + + private void autoPilotOffToolStripMenuItem_Click(object sender, EventArgs e) + { + toolStripStatusLabel1.Text = "Stopped"; + botRunning = false; + } + + private void autoPilotONToolStripMenuItem_Click(object sender, EventArgs e) + { + toolStripStatusLabel1.Text = "Idle"; + botRunning = true; + runBot(); + } + + private void editSelectedOrderToolStripMenuItem_Click(object sender, EventArgs e) + { + if (dataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected) == 1) + { + OrderForm of = new OrderForm(ac); + of.FormBorderStyle = FormBorderStyle.FixedSingle; + of.setEditMode((JObject)orders[dataGridView1.SelectedRows[0].Index]); + of.FormClosed += new FormClosedEventHandler(f_FormClosed); //refresh orders + } + } + + private void f_FormClosed(object sender, FormClosedEventArgs e) + { + refreshOrders(false); + } + + private void runBot() { + if (!botRunning) { + return; + } + + //read needed data + String fileName = Path.Combine(Directory.GetCurrentDirectory(), "bot.json"); + if (!File.Exists(fileName)) + { + return; + } + + toolStripStatusLabel1.Text = "Working"; + BotSettings saved = JsonConvert.DeserializeObject(File.ReadAllText(@fileName)); + Console.WriteLine("bot iteration tasks {0} {1} {2}", saved.reffilOrder, saved.lowerPrice, saved.increasePrice); + + Control.CheckForIllegalCrossThreadCalls = false; + refreshOrders(true); + + if (saved.lowerPrice || saved.increasePrice) { + refreshMarket(); + } + + //do refill?? + Console.WriteLine("orders to process: {0}", orders.Count); + + if (saved.reffilOrder) { + foreach (JObject order in orders) + { + float payed = float.Parse("" + order["payedAmount"], CultureInfo.InvariantCulture); + float available = float.Parse("" + order["availableAmount"], CultureInfo.InvariantCulture); + float spent_factor = payed/available*100; + Console.WriteLine("?refill?; order {0}, payed {1}, available {2}, percent {3}", order["id"], payed, available, spent_factor.ToString("0.00")); + + if (spent_factor > 90) + { + JObject algo = ac.getAlgo(""+order["algorithm"]["algorithm"]); + Console.WriteLine("===> refill order for {0}", algo["minimalOrderAmount"]); + ac.refillOrder(""+order["id"], ""+algo["minimalOrderAmount"]); + } + } + } + + //do speed adjust?? + if (saved.lowerPrice || saved.increasePrice) { + foreach (JObject order in orders) { + string order_type = "" + order["type"]["code"]; + if (order_type.Equals("STANDARD")) + { + JObject algo = ac.getAlgo("" + order["algorithm"]["algorithm"]); + float order_speed = float.Parse("" + order["acceptedCurrentSpeed"], CultureInfo.InvariantCulture); + float order_price = float.Parse("" + order["price"], CultureInfo.InvariantCulture); + float price_step_down = float.Parse("" + algo["priceDownStep"], CultureInfo.InvariantCulture); + Console.WriteLine("?adjust price?; order {0}, speed {1}, price {2}, step_down {3}", order["id"], order_speed, order_price, price_step_down); + + if (saved.increasePrice && order_speed == 0) { + float new_price = (float)Math.Round(order_price + (price_step_down * -1), 4); + Console.WriteLine("===> price up order to {0}", new_price); + ac.updateOrder("" + order["algorithm"]["algorithm"], "" + order["id"], new_price.ToString(new CultureInfo("en-US")), "" + order["limit"]); + } else if (saved.lowerPrice && order_speed > 0) { + Dictionary market = getOrderPriceRangesForAlgoAndMarket("" + order["algorithm"]["algorithm"], "" + order["market"]); + var list = market.Keys.ToList(); + list.Sort(); + + int idx = 0; + foreach (var key in list) + { + float curr_tier_price = float.Parse(key, CultureInfo.InvariantCulture); + if (key.Equals(""+order_price)) { + break; + } + idx++; + } + + if (idx > 1) { + float new_price = (float)Math.Round(order_price + price_step_down, 4); + Console.WriteLine("===> price down order to {0}", new_price); + ac.updateOrder("" + order["algorithm"]["algorithm"], "" + order["id"], new_price.ToString(new CultureInfo("en-US")), "" + order["limit"]); + } + } + } + } + } + toolStripStatusLabel1.Text = "Idle"; + } + + private Dictionary getOrderPriceRangesForAlgoAndMarket(string oa, string om) + { + var prices = new Dictionary(); + + foreach (JObject order in market) + { + string order_type = "" + order["type"]; + string order_algo = "" + order["algorithm"]; + string order_market = "" + order["market"]; + float order_speed = float.Parse("" + order["acceptedCurrentSpeed"], CultureInfo.InvariantCulture); + string order_price = "" + order["price"]; + + if (order_type.Equals("STANDARD") && order_algo.Equals(oa) && order_market.Equals(om) && order_speed > 0) { + if (prices.ContainsKey(order_price)) + { + prices[order_price] = prices[order_price] + order_speed; + } + else + { + prices[order_price] = order_speed; + } + } + } + return prices; + } + } +} diff --git a/NHB3/Home.resx b/NHB3/Home.resx new file mode 100644 index 0000000..d9aaa13 --- /dev/null +++ b/NHB3/Home.resx @@ -0,0 +1,1733 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 173, 17 + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAADOSURBVDhPjVLBDcIwDExJ84j6YR6+SDyYpDMwFwuwAE9e + rMHb9FIfcoMT9aRTY/vuIjkNPRxTElDLfaAJvN4vhbanMh+1qXVW+RYYgKfbubB3BtW2Ao359RSRzy5C + uwlB4Ql7dAPwtbTiuo+v2rcBWNTjPf+E7KPHJXYDsCgrZB89LrEZwAGJZXFhpNWpfQ3wXqE2kX+vALRC + arpmgjd6QTQ2zQQE9V9na5X5gIC32RtZY9YMwSDnLDHGwsM4yhBCYZomSWmph+WsoasrhC+GoqmHdCHi + xgAAAABJRU5ErkJggg== + + + + + AAABAAEAmJgAAAEAIAAIdQEAFgAAACgAAACYAAAAMAEAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAA + AAAAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAA + AAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAIAAAAAAAAAAgAA + AAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAgAA + AAAAAAACAAAAAAAAAAILERMGFzA7Kh5GVk4qY3tyMn2cjzOLsKlCpdDDO6XS003G+uVLxvr3R8T6/UTD + +v9Cw/r/QsP6/0TD+v9HxPr9S8b6903G+uU7pdLTQqXQwzOLsKkyfZyPKmN7ch5GVk4XMDsqCxETBgAA + AAIAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAA + AAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAACAAAAAAAA + AAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAA + AAIAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAA + AAAAAAAAAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAALERQKHz5LOixngHI6jbGlRrPi1UXD+PtCw/r/QcL5/0LD+v9Bwvn/QsP6/0HD+f9Cw/n/QsP6/0HD + +f9Cw/r/QsP5/0LD+v9Cw/r/QcL5/0LD+v9Bw/n/QsL5/0HD+f9Bw/n/QsP5/0HC+f9Cw/r/QcL5/0LD + +v9Fw/j7RrPi1TqNsaUsZ4ByHz5LOgsRFAoAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAA + AAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAgAA + AAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQ0OBiI/ + TDoxco2BQqXQwUbC9/dCw/r/QsP5/0HD+f9Cw/n/QsP5/0LD+f9Bw/n/QsP5/0HD+f9Cw/n/QcP5/0HD + +f9Bw/n/QsP5/0LD+f9Cw/n/QcP5/0LD+f9Cw/n/QsP5/0LD+f9Bw/n/QsP5/0LD+f9Cw/n/QcP5/0LD + +f9Bw/n/QcP5/0LD+f9Bw/n/QsP5/0LD+f9Cw/r/RsL390Kl0MExco2BIj9MOgkNDgYAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAgAA + AAIAAAACAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAIQFhkMLldoUjqM + r6VKwPLrQsP6/0LC+v9Cwvr/QsL6/0LD+v9Cwvr/QsL6/0LD+v9Cw/r/QsP6/0LC+v9Bwvr/QsL6/0LC + +v9Cw/r/QsL6/0LC+v9Cw/r/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cw/r/QsP6/0LC+v9Cwvr/QsP6/0LC + +v9Cw/r/QcL6/0LC+v9Cw/r/QsP6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cw/r/SsDy6zqM + r6UvV2hSEBYZDAAAAAAAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAAAAAAIAAAACAAAAAAAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAIAAAAAAAAAAgAA + AAAAAAACAAAAAgAAAAAAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAIAAAACAAAAAgAA + AAAAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAA + AAAAAAACAAAAAgAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAAAAAAIAAAACAAAAAAAAAAAAAAACAAAAAAAA + AAIAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAIAAAACAAAAAAAAAAAAAAACAAAAAgAA + AAIAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgYJCgYoS1pGQJG0o0jB + 9fFCw/r/QsP6/0LD+v9Bwvn/QsL6/0LC+v9Bwvr/QsP6/0LD+f9Cwvr/QcL5/0LD+v9Cw/n/QsL5/0HC + +v9Cw/n/QcL6/0LD+v9Bwvn/QsL6/0LC+v9Cw/r/QcL5/0LC+v9Cwvr/QcL6/0LD+f9Cwvn/QsL6/0HC + +f9Cw/r/QsP6/0LD+f9Bwvr/QsL5/0LD+v9Bwvn/QsL6/0HD+f9Cwvr/QsP6/0HC+f9Cwvr/QsL6/0HC + +v9Cw/r/QsL6/0LD+f9IwfXxQJG0oyhLWkYGCQoGAAAAAgAAAAAAAAACAAAAAAAAAAAAAAACAAAAAgAA + AAAAAAAAAAAAAAAAAAIAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAA + AAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA + AAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgnLR42dpF+Sbnp4ULD + +v9Cw/r/QsP5/0LD+v9Cwvn/QsP6/0LD+v9Cw/r/QsP6/0LC+f9Cw/r/QsL5/0LD+v9Cwvn/QsP6/0LD + +v9Cw/n/QsP6/0LC+f9Cw/r/QsP6/0LD+v9Cw/r/QsL6/0LD+v9Cwvr/QsP6/0LD+v9Cwvr/QsP6/0LD + +v9Cw/r/QsL5/0LD+v9Cw/r/QsL5/0LD+v9Cwvn/QsP6/0LD+f9Cw/r/QsL6/0LC+v9Cwvr/QsP6/0LD + +v9Cw/r/QsL5/0LD+v9Cwvr/QsL6/0LD+v9Cwvn/QsP6/0m56eE2dpF+GCctHgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAQEBAiA7RzhEl7qnRcL3+UHD + +v9Bw/n/QcP6/0HD+v9Bw/n/QcP5/0HD+f9Bw/r/QcP5/0HC+v9Bwvr/QcP5/0LD+v9Bw/n/QcP6/0HD + +f9Bw/r/QcP6/0HD+f9Bw/r/QcP5/0HD+v9Bw/n/QcP5/0HD+v9Bw/n/QcP6/0HC+v9Bw/r/QcP5/0HC + +v9Bw/r/QcP5/0HD+v9Bw/n/QcP5/0HD+f9Bw/n/QcP6/0HD+f9Cw/r/QcP5/0HD+v9Bw/n/QcP6/0HD + +v9Bw/n/QcL6/0HC+v9Bw/n/QcP6/0HD+f9Bw/n/QcP6/0HD+f9Bw/r/QcP5/0HD+v9Fwvf5RJe6pyA7 + RzgBAQECAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAgAA + AAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAA + AAIAAAACAAAAAgAAAAAAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAwQEAi5PXUJLqdG9Q8P6/0LD + +f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+v9Cw/r/QsP5/0LD + +f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +f9Cw/r/QsP5/0LD+f9Cw/n/QsP6/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP6/0LD + +f9Cw/n/QsP5/0LD+f9Cw/n/QsP6/0LD+v9Cw/r/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +f9Cw/n/Q8P6/0up0b0uT11CAwQEAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAgAA + AAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAA + AAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAQEBAixJVj5NrdXBQsP6/0HC + +v9Bw/r/QcP6/0HC+v9Bwvr/QcL5/0HC+v9Bwvr/QcL5/0HC+v9Bwvr/QcL5/0HC+v9Bwvr/QcL6/0HC + +v9Bwvr/QcP6/0HC+v9Bwvn/QcP6/0HC+v9Bwvr/QcL6/0HC+f9Bwvr/QcL6/0HC+f9Bwvr/QcL6/0HC + +v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HD+v9Bwvr/QcL6/0HD+v9Bw/r/QcL6/0HC+v9Bwvn/QcL6/0HD + +v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC + +v9Bwvr/QcL5/0HC+v9Bwvr/QcL6/0LD+v9NrdXBLElWPgEBAQIAAAACAAAAAAAAAAAAAAAAAAAAAgAA + AAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAgAA + AAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAA + AAIAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAACQ4QCpEncOzQ8P6/0LD + +v9Cwvr/QsP6/0LD+v9Cw/r/QsP6/0LC+v9Cwvn/QsP6/0LD+v9Cwvn/QsL6/0LC+f9Cw/r/QsL6/0LC + +v9Cwvr/QsL6/0LD+v9Cwvn/QsL6/0LD+v9Cw/r/QsP6/0LD+v9Cwvr/QsL5/0LC+f9Cw/r/QsL5/0LC + +v9Cwvn/QsP6/0LC+v9Cwvr/QsL6/0LC+v9Cw/r/QsL5/0LC+v9Cw/r/QsP6/0LD+v9Cw/r/QsL6/0LC + +f9Cw/r/QsP5/0LC+v9Cw/r/QsL5/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsP6/0LD+v9Cw/n/QsL6/0LD + +v9Cw/r/QsP6/0LC+v9Cwvn/QsL6/0LD+f9Cwvr/QsL6/0LC+f9Dw/r/RJ3DsyQ4QCoAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAgAA + AAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAA + AAIAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAACAAAAAgAA + AAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAhceIRA9g6GPRsT6+0HD + +v9Bw/r/QcP5/0HD+v9Bw/n/QcP5/0HD+f9Bw/n/QcP6/0HD+f9Bw/r/QsP6/0HD+f9Bw/n/QcP5/0HD + +v9Bw/r/QcP5/0HC+f9Bw/n/QcP5/0HD+f9Bw/r/QcP5/0HD+f9Cw/n/QcP5/0HD+v9Bw/n/QsP6/0HD + +v9Bw/n/QcL5/0HD+f9Bw/r/QcP6/0HD+v9Bwvn/QcP5/0HD+v9Bw/n/QcP6/0HD+f9Bw/n/QcP5/0HD + +f9Bw/r/QcP5/0HD+v9Bw/n/QcL5/0HD+f9Bw/r/QcP5/0HD+v9Bw/n/QcL5/0HD+f9Bw/r/QcP6/0HD + +f9Bwvr/QcP5/0HD+f9Bw/n/QcP6/0HD+f9Cw/r/QcP5/0HC+f9Bw/n/QcP6/0HD+f9Bw/r/RsT6+z2D + oY8XHiEQAAAAAgAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAAAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAA + AAIAAAACAAAAAgAAAAAAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAA + AAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAgAAAAAAAAACAAAAAAAA + AAIAAAACAAAAAgAAAAAAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAECAgI1X3FWS73u50LD + +v9Cw/r/QsP6/0LD+v9Cw/n/QsP5/0LD+f9Cw/n/QsP6/0LD+f9Cw/r/QsP5/0LD+f9Cw/n/QsP5/0LD + +v9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+v9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+v9Cw/n/QsP6/0LD + +f9Cw/n/QsP5/0LD+f9Cw/r/QsP6/0PD+v9Dw/r/RMP6/0TD+v9Dw/r/Q8P6/0LD+v9Cw/r/QsP5/0LD + +f9Cw/r/QsP5/0LD+v9Cw/n/QsP6/0LD+f9Cw/r/QsP6/0LD+v9Cw/r/QsP5/0LD+f9Cw/n/QsP6/0LD + +f9Cw/r/QsP5/0LD+v9Cw/n/QsP6/0LD+f9Cw/r/QsP5/0LD+v9Cw/n/QsP6/0LD+v9Cw/r/QsP6/0LD + +f9Cw/r/QsP6/0u97uc1X3FWAQICAgAAAAAAAAACAAAAAAAAAAIAAAACAAAAAgAAAAAAAAACAAAAAAAA + AAIAAAAAAAAAAgAAAAAAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAgAA + AAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAIAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAIXJCocTaTJs0LD + +v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC+f9Bwvr/QcL5/0HC+v9Cwvr/QcL5/0HC+v9Bwvn/QcL6/0HC + +v9Bwvn/QcL6/0HC+f9Cwvr/QcP6/0HC+f9Bwvr/QcL6/0HC+v9Bwvn/QcL6/0HC+v9Bwvr/RsT6/2DM + +v9+1vv/mN78/7Dl/P/E7P3/1fH9/+T2/v/v+v7/9/z+//3+/v/+/v7//v7+//3+/v/3/P7/7/r+/+T2 + /v/V8f3/xOz9/6/l/P+Y3vz/ftb7/2DM+v9GxPr/QcL5/0HC+v9Bwvr/QsL6/0HC+v9Bw/r/QcL5/0HC + +v9Bwvr/QcL5/0HC+v9Bwvr/QcL6/0HC+f9Bwvr/QcL5/0HC+v9Bwvn/QcP6/0HC+f9Bwvr/QcL6/0LC + +v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0LD+f9NpMmzFyQqHAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAA + AAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAACAAAAAAAA + AAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgMCNF9xWkzD + 9e1Cwvr/QsP6/0LC+f9Cwvr/QsL6/0LC+v9Cw/r/QsL5/0LD+v9Cw/r/QsP6/0LC+v9Cw/r/QsL6/0LC + +v9Cwvr/QsP6/0LD+v9Cwvr/QsL6/0LC+f9Cwvr/QsP6/0LD+v9Cwvr/QsP6/1zL+v+J2fv/s+b9/9nz + /v/5/f7//v7+//////////////////////////////////////////////////////////////////// + /////////////////////////v7+/////////////v7+//n9/v/Z8/7/s+b9/4nZ+/9cy/r/QsP6/0LC + +v9Cw/r/QsP6/0LC+v9Cw/r/QsP6/0LD+f9Cwvr/QsP6/0LD+v9Cw/r/QsL6/0LD+v9Cw/r/QsP5/0LC + +v9Cwvr/QsP6/0LC+v9Cw/r/QsL6/0LC+v9Cw/r/QsL6/0LD+v9Mw/XvNF9xWgICAwIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACEBcaDkaW + t6NCw/r/QcL5/0HD+f9Bw/r/QcP5/0HC+f9Bwvn/QsP6/0HD+v9Bw/n/QcL5/0HC+f9Bw/n/QcP5/0HD + +f9Bwvn/QcP6/0HC+f9Bw/n/QcP5/0HC+v9Bwvn/QcP5/0HD+f9Mxvr/ftb7/7Xn/f/o9/7//v7+//7+ + /v///////v7+//7+/v///////v7+///////+/v7//v7+///////+/v7//v7+/////////////v7+//7+ + /v///////v7+//7+/v/+/v7///////7+/v/+/v7//v7+//7+/v///////v7+//7+/v/+/v7//v7+//7+ + /v/o9/7/tef9/37W+/9Mxvr/QcP5/0HC+f9Bwvn/QcP5/0HC+f9Cw/r/QcP5/0HD+f9Bwvn/QcP5/0HD + +f9Bw/n/QcL6/0HD+f9Bw/r/QcL5/0HD+v9Bwvn/QcL5/0HD+v9Bwvn/QcP6/0HD+f9Cw/r/Rpa3oxAX + Gg4AAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAAAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAACAAAAAAAAAAIAAAAAAAAAAiM5 + QjBKtOLZQsP6/0LD+v9Bw/r/QsL6/0LD+v9Cwvn/QsP6/0LC+v9Cwvr/QsP6/0LD+v9Bwvr/QsP6/0LD + +v9Cw/n/QcP5/0LD+v9Bw/n/QsL6/0LD+f9Cw/r/QcL6/0rF+v+C1/v/w+z9//b8/v/+/v7//v7+//// + ///+/v7//v7+///////+/v7//v7+//7+/v///////v7+//7+/v/+/v7//v7+//7+/v/+/v7///////7+ + /v/+/v7//v7+///////+/v7//v7+//7+/v///////v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//b8/v/D7P3/gtf7/0rF+v9Cw/r/QcL6/0LD+v9Cw/r/QcP5/0LD + +v9Bwvn/QsP6/0LD+f9Bwvr/QsP6/0HC+v9Cwvr/QsP6/0LD+v9Cwvr/QsL6/0LD+f9Bwvr/QsP6/0HC + +v9Cw/n/SrTi2SM5QjAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAACAAAAAgAA + AAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAA + AAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAIAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAA5ZHdcR8H19UHD+f9Cw/n/QsP5/0HD+f9Cw/n/QsP5/0LD+f9Cw/n/QcP5/0LD+f9Bw/n/QsP5/0LD + +f9Cw/n/QsP5/0LD+f9Cw/n/QsP6/0LD+f9Cwvn/QsP5/2fO+v+y5vz/8vr+//////////////////// + /////////////////////////////////////////////////////////////////////////v7+//// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////8vr+/7Lm/P9nzvr/QsP5/0LD + +f9Cw/n/QsP6/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QcP5/0LD+f9Bw/n/QsP5/0HD+f9Cw/n/QcP5/0LD + +f9Cw/n/QsP5/0LD+f9Cw/n/R8H19Tlkd1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAAMDQ4EQoShiUPD+f9Cwvr/QsP6/0LC+v9Bwvr/QsL6/0LC+v9Bwvr/QsL6/0LC+v9Cwvr/QsL6/0HC + +v9Cwvr/QsL6/0LD+v9Cw/r/QsL6/0HC+v9Cwvr/RcT6/3/W+//S8P3//f7+//7+/v/+/v7//v7+//7+ + /v///////v7+//7+/v/+/v7//v7+//7+/v///////v7+//7+/v///////v7+//7+/v/+/v7///////// + ///+/v7//v7+///////+/v7//v7+//7+/v/+/v7///////7+/v/+/v7//v7+///////+/v7//v7+//7+ + /v////////////7+/v///////v7+//7+/v/+/v7//v7+///////+/v7//v7+///////+/v7//v7+//3+ + /v/S8P3/f9b7/0XE+v9Cwvr/QcL6/0LC+v9Bwvr/QsL6/0LC+v9Cwvr/QsL6/0HC+v9Cwvr/QsL6/0HC + +v9Cwvr/QsL6/0HC+v9Cwvr/QcL6/0LC+v9Bwvr/Q8P5/0KEoYkMDQ4EAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAgAA + AAIAAAACCw8RDEidwq9Cw/r/QcL6/0LC+v9Cw/r/QcP6/0HC+v9Bwvr/QsL6/0LD+v9Cwvr/QcL6/0LC + +v9Cwvr/QsP6/0LD+v9Cwvr/QsL5/0LD+v9Cwvr/RsT6/4jZ+//h9f7//v////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////+////4fX+/4jZ+/9GxPr/QcL6/0HC+f9Cwvr/QsL6/0LC+v9Bwvr/QsP6/0HC + +v9Cwvr/QsL6/0LC+v9Bwvr/QsL6/0LC+v9Bwvn/QcL6/0LD+v9Bwvr/QsP6/0idwq8LDxEMAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAgAA + AAAAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAgAA + AAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAgAA + AAAAAAAAAAAAABEbHxRQsdrHQsP6/0LD+v9Cwvr/QsP6/0HD+v9Bw/n/QsL6/0HD+f9Cw/n/QcP5/0LD + +v9Cwvr/QsL6/0LC+v9Bw/r/QsP6/0HD+v9Cw/n/RMP6/4LX+//h9f7///////7+/v///////v7+//// + /////////v7+/////////////v7+//7+/v////////////7+/v///////////////////////v7+//// + ///+/v7///////7+/v////////////7+/v////////////7+/v/+/v7////////////+/v7///////// + //////////////7+/v///////v7+//7+/v/+/v7////////////+/v7////////////+/v7//v7+//// + /////////v7+//////////////////7+/v/+/v7//////+H1/v+C1/v/RMP6/0LC+v9Bwvr/QsL5/0HC + +f9Cwvr/QsL6/0LC+v9Bwvn/QsP6/0LC+v9Bwvr/QsP6/0HD+f9Cw/r/QcP5/0LC+v9Bw/n/QsP6/1Cx + 28cRGx8UAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAIAAAAAAAAAAgAA + AAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAfKzAeRK3a1ULD+f9Cw/n/QsP5/0LD+v9Cw/n/QcP5/0LD+f9Cw/n/QsP6/0LD + +f9Cw/n/QsP5/0LD+v9Cw/r/QsP5/0LD+v9Bw/n/QsP6/2zQ+//U8f3//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7///////7+/v/+/v7//v7+///////+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+///////+/v7//v7+//7+/v/+/v7//v7+//7+/v///////v7+//7+/v/U8f3/bND7/0LD + +v9Cw/r/QsP6/0HD+f9Cw/r/QsP6/0LD+f9Cw/n/QsP6/0LD+f9Cw/r/QsP5/0LD+v9Cw/n/QsP6/0LD + +f9Cw/r/QsP5/0Wt2tUmMjceAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAIzI4IlK+7N1Cw/r/QcP5/0LD+f9Cw/r/QsP5/0LD+f9Cw/r/QcP5/0LD + +f9Cw/n/QcP5/0LD+v9Cw/n/QcP5/0HD+f9Cw/n/QsP6/1DH+v+15/3//P7+//////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////v7+//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///8/v7/tef9/1DH+v9Bw/n/QsP5/0HD+f9Bw/n/QsP5/0HD+v9Cw/n/QcP5/0LD+f9Bw/n/QsP5/0HD + +f9Cw/n/QcP5/0LD+v9Bw/n/QsP6/1K+7N0jMjgiAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAA + AAIAAAACAAAAAAAAAAIAAAACAAAAAgAAAAAAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAgAA + AAIAAAAAAAAAAgAAAAIAAAACAAAAAiIxOCBOvOzfQsL6/0LC+v9Cw/r/QsP6/0LD+v9Cwvr/QsL5/0LD + +v9Bwvr/QsL6/0HC+v9Cwvr/QsP6/0LD+v9Bwvr/QsL6/0LD+v+B1/v/7fn+//////////////////// + //////////////7+/v/+/v7//v7+///////+/v7//v7+/////////////v7+//////////////////7+ + /v/////////////////////////////////+/v7//v7+//7+/v///////v7+//7+/v////////////7+ + /v/////////////////+/v7//////////////////////////////////v7+//7+/v/+/v7///////7+ + /v/+/v7////////////+/v7//////////////////v7+//7+/v////////////////////////////7+ + /v/+/v7//v7+///////+/v7/7fn+/4HX+/9Cw/r/QcL6/0LC+v9Bwvr/QsP6/0HC+v9Cwvr/QsL6/0LD + +v9Cw/r/QsP6/0HC+v9Bwvn/QcP6/0HC+f9Bwvr/QcL6/0697N8iMTggAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAgAA + AAIAAAAAAAAAAAAAAAIAAAACAAAAAAAAAAAfKzAeUb7s3ULD+f9Cw/r/QsP6/0LD+f9Bw/r/QsP5/0LC + +v9Cw/n/QsP6/0HC+f9Cwvn/QcL6/0LD+v9Cw/r/QsP6/0LC+v9Px/r/ver9//7+/v////////////// + /////////v7+//////////////////////////////////////////////////////////////////// + //////////////////////////////7+/v/////////////////+/v7///////////////////////// + ///////////////////////////////////////////////////+/v7///////////////////////// + /////////v7+//////////////////////////////////////////////////////////////////// + /////////////////////////////////////////v7+/73q/f9Px/r/QcL6/0LC+v9Cwvr/QcL5/0LD + +f9Cwvr/QsL5/0LD+v9Bwvn/QsL6/0LD+v9Cwvr/QsP5/0LD+v9Cw/r/QsL6/1G+7N0fKzAeAAAAAAAA + AAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAA + AAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAERsfFESt2tVCwvr/QsP6/0LD+v9Cwvr/QsP6/0LD + +v9Cw/n/QsL6/0LC+v9Cw/r/QsP5/0LC+v9Cwvr/QsL6/0LD+v9Cw/r/bdD7/+j3/v////////////// + //////////////////////////////////////////////////////////////7+/v////////////// + ///////////////////+/v7///////////////////////////////////////////////////////// + /////////////////////////////////////////v7+//////////////////////////////////// + /////////////////////////v7+//////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////+j3/v9t0Pv/QsP6/0LC + +v9Cwvr/QsL6/0LD+v9Cw/r/QsP6/0LD+f9Cwvr/QsP5/0LD+v9Cw/n/QsL6/0LC+v9Cwvr/QsL6/0St + 2tURGx8UAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAA + AAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAAsPEQxQsdvHQcP5/0HD+v9Cw/r/QcP5/0HD + +v9Bw/n/QcP6/0HD+f9Bw/n/QcP6/0HD+v9Bw/n/QsL6/0HC+f9Cw/r/QsP6/5Xd/P/7/f7//v7+//// + ///+/v7//v7+//7+/v///////v7+//7+/v/+/v7////////////+/v7//v7+//7+/v/+/v7//v7+//// + /////////v7+//7+/v/+/v7//v7+//7+/v/+/v7///////7+/v/+/v7//v7+/////////////v7+//7+ + /v/+/v7/+Pz+/+r4/v/g9f7/2vP+/9fy/f/Y8v7/3fT+/+T2/v/w+v7//P7+///////+/v7//v7+//7+ + /v////////////7+/v/+/v7//v7+//7+/v/+/v7////////////+/v7//v7+//7+/v///////v7+//7+ + /v///////v7+//7+/v/+/v7////////////+/v7//v7+//7+/v/+/v7//v7+/////////////v7+//v9 + /v+V3fz/QsP6/0LD+v9Bw/n/QsP6/0HD+f9Bw/r/QcP5/0HD+v9Bw/n/QcP6/0HD+f9Bw/n/QcP5/0HD + +f9Bw/n/QcP6/1Cx28cLDxEMAAAAAgAAAAIAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAAAA + AAIAAAACAAAAAgAAAAAAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAACAAAAAgAAAAAAAAACAAAAAAAA + AAIAAAACAAAAAgAAAAAAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAAMDQ4ESJ3CrULD+f9Cw/n/QsP5/0LD + +f9Cw/r/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0jF+v+76f3//v7+//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////7+/v/l9/7/v+r9/53f + /P9+1vv/ZM76/07G+v9Dw/r/QsP6/0LD+v9Cw/n/QsP5/0LD+f9Cw/n/QsP6/0LD+v9FxPr/V8n6/27R + +/+K2vv/quT8/87v/f/y+/7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////7+/v+76f3/SMX6/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/r/QsP5/0LD + +f9Cw/n/QsP5/0LD+f9Cw/n/QsP6/0idwq0MDQ4EAAAAAAAAAAIAAAACAAAAAgAAAAAAAAACAAAAAAAA + AAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEKEoYlCw/r/QcL6/0LC + +v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HD+v9Bwvr/QcL6/0HC+v9Bw/r/QcL6/0HC+v9SyPr/1PH9//// + /////////////////////////v7+//7+/v/////////////////+/v7//////////////////v7+//// + //////////////7+/v//////////////////////////////////////7vn+/7np/f+F2Pv/Vcn6/0LD + +v9Bwvr/QcL6/0HC+v9Bw/r/QcL6/0HC+v9Bwvr/QsL6/0HC+v9Bwvr/QcL6/0HC+v9Cwvr/QcL6/0HC + +v9Bwvr/QcP6/0HC+v9Bwvr/QsP6/0XE+v9lzvr/lt38/8zu/f/5/f7//v7+//////////////////// + //////////////7+/v/+/v7///////////////////////////////////////////////////////7+ + /v/////////////////////////////////U8f3/Usj6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC + +v9Bw/r/QcL6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/QsP6/0KEoYkAAAAAAAAAAgAAAAAAAAACAAAAAAAA + AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5ZHdcQ8P5/0LC + +v9Cwvr/QsP6/0LD+v9Cw/r/QsP6/0LC+v9Cwvn/QsP6/0LC+v9Cwvr/QsL6/0LD+f9Cwvn/XMv6/+P2 + /v/+/v7//v7+///////+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+///////+/v7//v7+//7+/v/0+/7/uOj9/3TT+/9GxPr/QsP6/0LD + +v9Cw/r/QsL5/0LC+v9Cwvr/QsP6/0LD+f9Cw/r/QsP6/0LD+f9Cw/r/QsP6/0LC+v9Cwvr/QsL6/0LD + +v9Cw/n/QsP6/0LD+v9Cw/r/QsP6/0LC+f9Cwvr/QsL6/0LD+v9Cw/r/QsP6/0/H+v+I2fv/zO/9//z+ + /v/+/v7//v7+//7+/v///////v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v///////v7+///////+/v7//v7+//7+/v/+/v7///////7+/v/j9v7/XMv6/0LD+v9Cw/r/QsL5/0LC + +v9Cwvr/QsP6/0LD+v9Cwvr/QsP6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/Q8P5/zlkd1wAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACIzlCMEfB + 9fVCw/r/QcP5/0HD+v9Cw/r/QcP5/0HD+f9Bwvn/QcL6/0HD+f9Bw/n/QcP5/0HD+v9Bw/n/QcP5/2PN + +v/r+P7//v7+//////////////////////////////////////////////////////////////////// + //////////////////////////////7+/v/////////////////h9f7/kdz8/03G+v9Bw/n/QcP5/0HC + +f9Bwvn/QcP5/0HD+f9Bw/n/QcP6/0HD+f9Cw/r/QcP5/0HD+f9Bwvn/QcL5/0LD+v9Bw/r/QcP5/0HD + +f9Bw/r/QsP5/0HD+f9Bwvn/QcP5/0HD+f9Bw/n/QcP5/0HD+v9Bw/n/QcP5/0HC+f9Bw/n/QcP5/0HD + +f9Cw/r/W8v6/6fj/P/w+v7////////////////////////////+/v7//v7+//////////////////// + ///+/v7////////////////////////////////////////////////////////////r+P7/Y836/0HD + +f9Bw/n/QcP6/0HD+f9Bw/n/QcL5/0HD+f9Bw/n/QcP5/0HC+f9Bw/r/QcP5/0HD+f9Bw/r/R8H19SM5 + QjAAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAAAAAAAAgAAAAIAAAACAAAAAAAAAAIAAAACAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAABAX + Gg5KtOLZQsP6/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +f9mzvr/7vn+///////+/v7//v7+/////////////v7+//7+/v////////////7+/v/+/v7///////7+ + /v/+/v7////////////+/v7//////////////////v7+///////c9P7/gdf7/0XE+v9Cw/n/QsP5/0LD + +f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +v9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0zG+v+X3vz/7Pn+///////+/v7///////7+/v/+/v7//v7+//// + //////////////7+/v/////////////////+/v7///////7+/v/+/v7///////////////////////// + ///u+f7/Zs76/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP6/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +f9Cw/n/SrTi2RAXGg4AAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAIAAAAAAAAAAgAA + AAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAACAgMCRpa3o0HC+v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC + +v9Cwvr/Y836/+75/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/p+P7/iNn7/0XE+v9Bwvr/QcL6/0HC + +v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HD+v9Bwvr/QcL6/0LC+v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC + +v9Cwvr/QcL6/0HC+v9Bwvr/QcL6/0LC+v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC+v9Cwvr/QcL5/0HC + +v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC+v9Lxvr/nuD8//T7/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/u+f7/Y836/0LC+v9Bwvn/QcL6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC + +v9Bwvr/QcL6/0HC+v9Bwvr/Rpa3owICAwIAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAA + AAAAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAADRfcVpCw/r/QsL5/0LD+v9Cw/n/QsL6/0LC+v9Cwvn/QsP6/0LC+f9Cwvr/QsL6/0LC + +f9Cw/r/QsL6/1zL+v/r+P7//v7+//////////////////////////////////////////////////// + ///////////////////////////////////////////////////7/f7/qeP8/0zG+v9Cw/n/QsP6/0LC + +v9Cwvr/QsP6/0LD+v9Cw/r/QsP5/0LC+v9Cw/n/QsP6/0LD+v9Cw/r/QsL6/0LC+f9Cwvr/QsP6/0LD + +f9Cw/r/QsP6/0LC+v9Cwvr/QsL6/0LD+v9Cwvr/QsP6/0LD+f9Cwvr/QsP5/0LD+v9Cw/r/QsP5/0LC + +v9Cwvn/QsP6/0LD+f9Cwvr/QsL5/0LC+v9Cwvn/QsL6/0LC+v9Cw/r/QsP6/0LD+v9Cwvr/Vsn6/73q + /f/9/v7///////////////////////7+/v////////////////////////////////////////////// + ///////////////////////////////////r+P7/XMv6/0LC+f9Cw/r/QsP5/0LC+v9Cwvn/QsL6/0LC + +f9Cwvr/QsL6/0LD+v9Cw/r/QsP6/0LC+v9Cw/r/NF9xWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIXJCocTMP17UHD+v9Bw/n/QcP6/0HD+f9Bwvr/QcP6/0LD+f9Bw/r/QcP5/0HC + +f9Cw/n/QcL6/0HD+v9SyPr/4/b+//7+/v///////v7+/////////////v7+//7+/v///////v7+//7+ + /v///////v7+//7+/v/+/v7////////////+/v7//v7+///////+/v7/3/T+/2nP+/9Cw/n/QcL6/0HC + +f9Bwvn/QcP6/0HC+v9Bwvn/QcP6/0HD+v9Bw/n/QcL5/0HD+f9Bw/r/QcP5/0HD+f9Bwvn/QcP5/0HC + +v9Bw/n/QcP5/0HC+v9Bw/n/QcL5/0HD+v9Bwvr/QcL5/0HD+v9Bw/n/QcP5/0HC+v9Bw/r/QcP6/0HD + +v9Bw/n/QcL5/0HD+f9Bw/r/QcP5/0HC+v9Bw/n/QcP6/0HD+v9Bw/r/QcL6/0HC+f9Bw/r/QcL5/0HD + +v9Bw/n/QsP6/3rV+//q+P7///////7+/v///////v7+/////////////v7+//7+/v////////////7+ + /v/+/v7////////////+/v7//v7+//7+/v/+/v7//v7+//7+/v/j9v7/Usj6/0HD+v9Bw/n/QcL6/0HD + +f9Bw/r/QcP6/0HD+v9Bwvr/QcL5/0HD+v9Bwvn/QcP6/0HD+f9Mw/XvFyQqHAAAAAIAAAAAAAAAAgAA + AAAAAAACAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAgAA + AAAAAAACAAAAAAAAAAIAAAACAQICAk2kybNCw/n/QsP6/0HC+f9Cw/r/QsP5/0LC+v9Cwvr/QsP5/0LD + +v9Cw/n/QsL6/0LD+v9Bwvn/SMX6/9Tx/f/+/v7//v7+//7+/v/+/v7///////7+/v/+/v7//v7+//// + ///+/v7//v7+//7+/v///////v7+//7+/v/+/v7///////7+/v/+/v7//f7+/7Hm/f9Jxfr/QcP6/0HD + +f9Cw/r/QcL5/0LD+f9Cw/r/QsL6/0HC+f9Cw/r/QsP6/0LD+v9Cwvr/QsP5/0LD+v9Cw/r/QcP5/0LD + +v9Cwvn/QsP6/0HD+v9Bwvn/QsP6/0HD+f9Cwvn/QsP6/0LC+v9Bwvr/QsP6/0LD+v9Cw/r/QsL6/0LC + +f9Cw/r/QsP6/0HD+f9Cw/r/QsP5/0LD+v9Cw/n/QsL6/0LD+v9Cwvr/QsL5/0LD+v9Cwvr/QcL5/0LD + +v9Bw/r/QcL6/0LD+v9Bwvr/QsP5/1DH+v/B6/3//v7+//7+/v/+/v7///////7+/v/+/v7//v7+//7+ + /v///////v7+//7+/v///////v7+//7+/v/+/v7///////7+/v/+/v7//v7+///////U8f3/SMX6/0LD + +f9Cwvr/QsP6/0LC+v9Cwvn/QsP6/0LC+v9Bwvn/QsP6/0HD+v9Bwvr/QsP6/0HC+v9NpMmzAQICAgAA + AAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAgAAAAAAAAACAAAAAgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAA1X3FWQsP5/0LD+f9Cw/r/QsP5/0LD+f9Cw/n/QsP5/0LD + +v9Cw/n/QsP5/0LD+f9Cw/n/QcP6/0LD+v+76f3//v7+/////////////v7+//////////////////// + ///+/v7////////////+/v7////////////+/v7////////////+/v7//v7+//b8/v+F2Pv/QsP5/0LD + +f9Bw/n/QsP5/0LD+f9Cw/n/QsP6/0HD+f9Cw/n/QsP5/0LD+f9Cw/n/QcP5/0LD+f9Cw/n/QcL5/0LD + +f9Bw/n/QsP6/0LD+f9Cw/n/QcP5/0LD+f9Cw/n/QsP5/0LD+v9Bw/n/QsP5/0LD+f9Cw/n/QsP5/0HD + +f9Cw/n/QsP5/0HD+f9Cw/n/QcL5/0LD+v9Cw/n/QsP6/0LD+f9Cw/r/QsP6/0LD+f9Bw/n/QcP5/0LD + +f9Cw/n/QsP5/0HD+f9Cw/n/QsP5/0HC+f9Bw/n/QcP5/0PD+v+U3fz/+v3+//////////////////// + /////////////////////////v7+/////////////v7+/////////////v7+//7+/v/+/v7///////// + //+76f3/QsP6/0LD+v9Cw/r/QsP5/0HD+f9Bw/n/QsP5/0LD+f9Cw/n/QcP5/0LD+f9Cw/n/QcL5/0LD + +f81X3FWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAACAAAAAAAA + AAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACFx4hEEu+7udCwvn/QsL5/0LC+v9Cw/r/QsL6/0LC + +v9Cwvr/QsL6/0LC+v9Cwvr/QsL5/0LC+v9Cw/r/ld38//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v///////v7+//7+/v///////v7+//7+/v///////v7+//7+/v/+/v7///////7+/v/q+P7/aM/6/0LC + +v9Cwvn/QsL6/0LC+v9Cwvr/QsL6/0HC+f9Cwvr/QcL6/0HC+v9Cwvr/QcL6/0LC+f9Bwvn/QsL6/0LC + +v9Cw/r/QcL5/0HC+f9Cwvr/QsL5/0LC+v9Bwvr/QcL6/0LC+v9Bwvn/QsL6/0LC+v9Cwvr/QsL6/0LC + +f9Cwvn/QcL5/0LC+v9Cwvr/QcL6/0HC+f9Bwvr/QsL6/0LC+f9Cwvr/QsP5/0LC+v9Cwvr/QcL6/0LC + +v9Bwvr/QcL6/0LC+v9Bwvr/QcL6/0LC+v9Bwvr/QcL6/0HC+f9Bwvr/QcL5/0LC+v9y0vv/8Pr+//7+ + /v/+/v7//v7+//7+/v////////////7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v///////v7+//7+/v+V3fz/QsP6/0LC+v9Bwvr/QsL6/0HC+v9Bwvr/QsL6/0HC+v9Bwvr/QsL6/0HC + +v9Bwvr/QcL5/0u+7ucXHiEQAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAgAA + AAIAAAAAAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAI9g6GPQsP6/0LD+v9Cw/r/QsL6/0LC + +v9Cwvr/QsP6/0LC+v9Cwvr/QsL6/0LD+v9Cw/r/QsL6/23Q+//7/f7//v7+//////////////////// + /////////////////////////////////////////v7+////////////////////////////4PX+/1nK + +v9Bwvn/QcL6/0LD+v9Cwvr/QsP6/0LD+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0HC+v9Cwvr/QsP6/0LD + +v9Cwvr/QcL6/0LD+v9Cwvr/QcL5/0LC+v9Cw/r/QsL6/0LD+v9TyPr/as/7/33V+/+L2vv/k9z8/5fe + /P+W3fz/kNv8/4XY+/910/v/YMz6/0fE+v9Cwvr/QsL6/0HC+f9Bwvr/QsP6/0LD+v9Cwvn/QsL6/0LC + +v9Cwvr/QcL6/0LC+v9Cwvr/QcL6/0LC+v9Cw/r/QsL6/0HC+v9Cwvr/QsL5/0HC+v9Bwvn/QsL6/0LD + +v9fzPr/5fb+//////////////////////////////////7+/v////////////////////////////// + ///+/v7///////////////////////v9/v9t0Pv/QsL6/0LC+v9Bwvr/QsL6/0LC+v9Bwvr/QsL6/0LD + +v9Cwvr/QcL6/0LC+v9Cwvn/QcL6/z2DoY8AAAACAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAJDhAKkbE+vtCw/r/QsL6/0LD + +f9Cwvr/QcL5/0LD+v9Cw/n/QsL6/0LC+v9Cwvn/QcP6/0LD+f9Px/r/6Pf+//7+/v/+/v7///////// + ///+/v7///////7+/v///////v7+//7+/v/+/v7///////7+/v/+/v7////////////+/v7//v7+/9vz + /v9SyPr/QsP6/0LD+f9Cwvr/QsL5/0LD+v9Bw/r/QcP5/0HC+v9Bw/n/QsP6/0HC+f9Cwvr/QcL6/0LC + +f9Cw/r/QsP5/0LC+v9Cw/n/QsP5/0LD+v9Jxfr/eNT7/6fj/P/P7/3/8vr+///////+/v7//v7+//// + /////////v7+//7+/v/+/v7///////7+/v/+/v7//P7+/+L2/v+96v3/ktz8/2DM+v9Cw/n/QsP6/0LD + +f9Cwvr/QsP5/0HC+v9Cwvn/QcL5/0LC+v9Bwvr/QsL5/0HD+v9Cwvr/QsP5/0LC+v9Cw/n/QsP6/0LD + +f9Cwvr/QsL5/0LD+v9Vyfr/3vT+//7+/v/+/v7////////////+/v7//v7+//7+/v///////v7+//// + /////////v7+//7+/v////////////7+/v///////v7+/+j3/v9Px/r/QcL6/0LC+f9Bwvn/QsL6/0HC + +v9Cwvn/QcP6/0LC+v9Cw/n/QsL6/0LD+f9Cw/r/RsT6+yQ4QCoAAAAAAAAAAgAAAAAAAAACAAAAAAAA + AAIAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgEBAQJEncOzQsP5/0HD + +f9Cw/n/QsP5/0LD+f9Cw/n/QcP5/0LD+f9Cw/n/QsP5/0LD+f9Bw/n/QsP6/73q/f/+/v7//v7+//7+ + /v/+/v7///////7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/c9P7/Ucf6/0HD+f9Cw/n/QcL5/0LD+v9Bwvn/QsP6/0HC+f9Cw/n/QsP6/0LC+f9Cw/r/QcP5/0LD + +v9Cw/r/QcL5/0LD+v9Cw/n/QcL5/0jF+v+C1/v/xOz9//f8/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7///////7+/v/+/v7//v7+//7+/v///////v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+/+X2 + /v+n4/z/ZM36/0LD+v9Cw/n/QsP6/0LD+f9Bw/n/QsP6/0LD+v9Bwvn/QsP6/0LD+v9Cw/n/QsP5/0HD + +f9Cw/n/QcL5/0LD+v9Bwvn/QsP6/0HD+f9SyPr/3vT+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//// + ///+/v7//v7+//7+/v/+/v7//v7+//7+/v///////v7+//7+/v/+/v7//v7+/73q/f9Cw/r/QsP5/0HD + +f9Cw/r/QsP6/0HC+f9Cw/r/QsP6/0LD+f9Cw/n/QcP5/0LD+f9Bwvn/RJ3DswEBAQIAAAAAAAAAAAAA + AAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALElWPkPD + +v9Bw/n/QsP5/0LD+f9Cw/n/QsP5/0HD+f9Cw/n/QcL5/0LD+f9Cw/n/QcP5/0LD+f+B1/v//v7+//// + ///+/v7///////////////////////////////////////////////////////////////////////// + ////////5fb+/1XJ+v9Cw/n/QsP5/0LD+f9Bw/n/QsP5/0HD+f9Cw/n/QcP5/0HD+f9Bw/n/QsP5/0LD + +f9Cw/n/QcP5/0LD+f9Cw/n/QsP5/1XJ+v+m4vz/7/r+//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////+/v7/1fH9/4PX+/9FxPr/QcP5/0LD+f9Bw/n/QsP5/0LD+f9Cw/n/QcP5/0LD + +f9Bw/n/QsP5/0HD+f9Bw/n/QsP5/0HD+f9Bw/n/QsP5/0HD+f9Vyfr/5Pb+//////////////////// + /////////////////////////////////////////////////////////////////////////v7+/4HX + +/9Bw/n/QsP5/0HD+f9Cw/n/QsP5/0LD+f9Bw/n/QsP5/0HD+f9Cw/n/QcP5/0HD+f9Dw/r/LElWPgAA + AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgME + BAJNrdXBQsP6/0HC+v9Bwvr/QsL6/0HC+v9Cwvr/QsL6/0LD+v9Cwvr/QsL6/0LC+v9Cw/r/UMf6/+35 + /v/////////////////+/v7//v7+//7+/v/+/v7//v7+//7+/v///////v7+//7+/v////////////7+ + /v////////////H6/v9gzPr/QsL6/0LC+v9Cw/r/QsL6/0LD+v9Bwvr/QsL6/0LC+v9Cw/r/QsL6/0LC + +v9Cwvr/QsP6/0LC+v9Cwvr/QsL6/1HH+v+r5Pz/9/z+//////////////////7+/v///////v7+//// + ///+/v7////////////+/v7//v7+/////////////v7+//////////////////////////////////// + ///+/v7//v7+//7+/v///////v7+//7+/v///////v7+/+L2/v+F2Pv/RMP6/0LC+v9Cwvr/QsL6/0LD + +v9Cwvr/QsL6/0LC+v9Cw/r/QsP6/0LC+v9Bwvr/QsL6/0LD+v9Cw/r/QsL6/0HC+v9fzPr/8Pr+//// + ///+/v7//////////////////v7+//7+/v///////v7+//7+/v/+/v7//v7+///////+/v7//v7+//// + ///+/v7/7fn+/1DH+v9Cwvr/QsL6/0LC+v9Cwvr/QsP6/0LC+v9Cwvr/QsL6/0LD+v9Cw/r/QsL6/0HC + +v9NrdXBAwQEAgAAAAIAAAACAAAAAAAAAAIAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAA + AAIAAAAALk9dQkLD+v9Cw/r/QcL6/0LD+v9Cw/r/QcP5/0LD+v9Bwvn/QsP6/0LD+v9Cw/r/QsP6/0LD + +v+15/3///////////////////////////////////////////////////////////////////////// + ///////////////////8/v7/d9P7/0LD+f9Cwvr/QcL5/0LD+v9Cw/r/QsP5/0HC+v9Cwvn/QcL6/0LD + +v9Bwvn/QsL6/0LD+v9Cw/r/QcL5/0TD+v+O2/z/8Pr+//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////7+/v/W8f3/ac/7/0LC + +v9Bwvr/QsP6/0LC+v9Bw/n/QsL6/0HC+f9Cw/r/QsL5/0HC+v9Cw/n/QsP6/0HC+f9Cwvr/QcP5/0LC + +v9z0vv/+/3+//////////////////////////////////////////////////////////////////// + ////////////////////////tef9/0LD+v9Cwvr/QsL6/0HC+v9Cw/r/QsL6/0HD+f9Cwvr/QcL5/0LD + +v9Cwvn/QcL6/0LD+v8uT11CAAAAAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAEBAQJLqdG9QsP6/0LD+v9Cwvn/QsP6/0LD+v9Cw/n/QsL6/0LD+v9Cw/r/QsP6/0LC + +v9Cwvr/bND7//z+/v////////////////////////////////////////////////////////////// + /////////////////////////////6Hh/P9Cw/r/QsL6/0LD+v9Cwvn/QsP6/0LD+v9Cwvn/QsP6/0LC + +f9Cw/r/QsP6/0LD+f9Cw/r/QsL5/0LD+v9Zyvr/ze/9//7+/v////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///7/f7/p+P8/0jE+v9Cw/r/QsL6/0LC+v9Cw/r/QsL5/0LD+v9Cw/n/QsP6/0LC+f9Cw/r/QsP5/0LC + +v9Cwvr/QsL6/0LD+v+c3/z///////////////////////////////////////////////////////// + ///////////////////////////////////8/v7/bND7/0LD+v9Cw/r/QsL5/0LD+v9Cwvr/QsL6/0LD + +v9Cwvn/QsP6/0LD+f9Cw/r/QsL5/0up0b0BAQECAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACIDtHNkPD+v9Bw/n/QcP6/0HC+f9Bw/n/QsP6/0HD+f9Bw/n/QcP5/0HD + +v9Bw/n/QcP6/0TD+v/U8f3///////7+/v/+/v7///////7+/v/+/v7//v7+///////+/v7//v7+//7+ + /v///////v7+//7+/v/+/v7///////7+/v/X8v3/RcT6/0HD+v9Bw/n/QcP6/0HD+f9Bw/n/QcP5/0HD + +f9Bw/r/QcP5/0HD+v9Bw/r/QcP5/0HD+f9Bw/n/edT7//D6/v/+/v7//v7+//7+/v///////v7+//7+ + /v///////v7+//7+/v/+/v7///////7+/v/+/v7//v7+///////+/v7//v7+///////+/v7//v7+//7+ + /v////////////7+/v/+/v7///////7+/v/+/v7//v7+///////+/v7//v7+//7+/v///////v7+//7+ + /v///////v7+//7+/v/+/v7/2PL9/1zL+v9Bw/n/QcP5/0HD+v9Bw/n/QcP6/0HD+f9Bw/r/QcP5/0HD + +v9Bw/n/QcP5/0HD+f9Bw/n/QcP6/0TD+v/W8v3//v7+/////////////v7+//7+/v///////v7+//7+ + /v/+/v7///////7+/v/+/v7//v7+///////+/v7//v7+///////U8f3/RMP6/0HC+v9Bw/n/QcP6/0HD + +f9Bw/n/QcP6/0HD+f9Bw/r/QcP5/0HD+v9Bw/n/Q8P6/yA7RzYAAAACAAAAAAAAAAIAAAACAAAAAgAA + AAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAJEl7qnQsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LC + +f9Cw/n/QsP6/0LD+f9Cw/n/gtf7//7+//////////////////////////////////////////////// + /////////////////////////////////////////////3rU+/9Cw/n/QsP5/0LD+f9Cw/r/QsP5/0LD + +f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP6/5Xd/P/7/v7///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////8Pr+/3TT+/9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/3nU+/////////////////////////////// + //////////////////////////////////////////////////////////////7+//+C1/v/QsP6/0LD + +v9Cw/r/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/RJe6pwAAAAIAAAAAAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAGCctHkXC9/lBwvr/QcL6/0HC+v9Bwvn/QsP6/0LC + +v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0bE+v/h9f7///////7+/v/+/v7///////////////////////// + ///////////////////+/v7////////////+/v7////////////7/f7/R8T6/0HC+v9Bwvr/QcL6/0HC + +v9Bwvr/QcP6/0HD+v9Bwvr/QcL6/0HC+f9Bwvr/QcL6/0LD+v+l4vz//v7+/////////////v7+//// + ///////////////////////////////////////////////////+/v7//v7+//7+/v////////////7+ + /v////////////7+/v////////////////////////////////////////////////////////////7+ + /v////////////7+/v/+/v7////////////+/v7/////////////////+f3+/4XY+/9Bwvr/QcL6/0HC + +v9Bwvr/QcL6/0HC+f9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/RsT6//j8/v////////////7+ + /v/////////////////+/v7//////////////////v7+/////////////v7+//7+/v///////////+H1 + /v9GxPr/QcL6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/QcL5/0HC+v9Fwvf5GCctHgAA + AAAAAAACAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAA2dpF+QsL6/0LD+v9Cwvn/QsP6/0LD + +v9Cw/r/QsL6/0LC+f9Cwvr/QsL5/0LD+v9Cw/r/iNn7//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+///////+/v7//////+35/v9Cwvr/QsL6/0LD + +v9Cw/r/QsL6/0LD+v9Cw/r/QsP6/0LD+v9Cwvr/QsL5/0LD+v9Cw/r/peL8//7+/v/+/v7///////// + ///+/v7//v7+//7+/v///////v7+//7+/v///////v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+/////////////v7+//7+/v/+/v7///////7+/v/////////////////+/v7///////7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7///////7+/v/+/v7//v7+/////////////P7+/4nZ + +/9Cw/r/QsP6/0LD+v9Cwvr/QsL5/0LC+v9Cw/n/QsL6/0LC+v9Cwvn/QsL5/0LC+v9Cwvr/4vX+//7+ + /v///////v7+//7+/v////////////7+/v///////v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v///////v7+/4jZ+/9Cwvr/QsP6/0LD+v9Cw/n/QsL6/0LD+v9Cw/r/QsP6/0LC+v9Cwvn/QsL6/0LD + +f82dpF+AAAAAAAAAAIAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACBgkKBkm66uFBw/n/QcP6/0HD + +f9Bw/r/QcP5/0HD+v9Cw/r/QsP5/0HD+v9Bw/n/QcP6/0XE+v/h9f7///////////////////////// + //////////////7+/v//////////////////////////////////////////////////////9/z+/0PD + +v9Bw/r/QcP6/0HD+f9Bw/r/QcP5/0HD+f9Bw/n/QcP5/0HD+v9Bw/n/QsP6/5Lc/P/+/v7//v7+//// + /////////////////////////////////////////////////////////v7+//////////////////// + /////////////////////////////////////////v7+//////////////////////////////////7+ + /v///////////////////////v7+//////////////////////////////////////////////////// + /////////P7+/3/W+/9Cw/n/QcP5/0HD+v9Bw/n/QsP6/0HD+f9Bwvn/QcP5/0HD+v9Bw/n/QcP6/0HD + +v/n9/7//////////////////////////////////v7+///////////////////////+/v7///////// + ////////////////////////4fX+/0XE+v9Bw/r/QcP6/0HD+f9Bwvr/QcP5/0HD+f9Bw/n/QcP6/0HD + +f9Cw/r/QcP5/0m66uEGCQoGAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAIoS1pGQsP6/0LD + +v9Cw/n/QsP5/0LD+v9Cw/n/QsP6/0LD+v9Cw/n/QsP6/0LD+f9Cw/r/f9b7//7////+/v7///////7+ + /v/+/v7//v7+/////////////v7+//7+/v////////////////////////////////////////////// + ///+/v7/Zs76/0LD+v9Cw/r/QsP5/0LD+f9Cw/n/QsP5/0LD+v9Cw/n/QsP6/0LD+f9x0vv/+/7+//// + /////////////////////////v7+//7+/v/////////////////+/v7////////////+/v7//v7+//// + ///+/v7///////7+/v////////////////////////////7+/v/+/v7////////////+/v7//v7+//// + ///+/v7///////7+/v/////////////////////////////////////////////////+/v7//v7+//// + /////////v7+////////////9/z+/2jP+/9Cw/n/QsP6/0LD+f9Cw/r/QsP5/0LD+v9Cw/r/QsP6/0LD + +v9Cw/n/UMf6//3+/v////////////7+/v/+/v7///////7+/v/+/v7//v7+//////////////////// + //////////////////////////////7+/v/+/v7/f9b7/0LD+f9Cw/r/QsP5/0LD+v9Cw/n/QsP6/0LD + +f9Cw/r/QsP5/0LD+v9Cw/n/QsP6/yhLWkYAAAACAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAECS + tKNBwvn/QcL5/0HC+v9Bwvr/QcL6/0HC+f9Cw/r/QcL6/0LC+v9Bwvr/QcL5/0LD+v/S8P3//v7+//7+ + /v///////v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+///////+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v+36P3/QsP6/0HC+v9Bwvn/QcL6/0HC+f9Bwvr/QsL6/0HC+f9Bwvr/S8X6/+n4 + /v/+/v7///////7+/v/+/v7////////////+/v7//v7+///////+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7///////7+/v/+/v7//v7+///////+/v7//v7+/////////////v7+//7+/v///////v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+///////+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7///////7+ + /v/+/v7///////7+/v/+/v7//v7+//7+/v/+/v7/5fb+/0vF+v9Bwvr/QcL5/0HD+v9Bwvn/QcL6/0HC + +v9Cwvr/QcL6/0HC+v+X3vz//v7+///////+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7///////7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v///////v7+//7+/v/S8P3/QsP5/0HC+v9Bwvr/QcL6/0HC + +f9Bwvr/QcL5/0HC+v9Bwvn/QcP6/0HC+f9Bwvr/QJK0pQAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAA + AAAPFhkMSMH18ULC+v9Cwvr/QsL6/0LD+f9Cwvr/QsL6/0LD+v9Cwvr/QsP6/0LC+v9Cwvr/Z876//3+ + /v////////////////////////////////////////////////////////////7+/v////////////// + //////////////////////////////3+/v981fv/QsP6/0LC+f9Cw/r/QsP6/0LD+v9Cwvr/QsP6/0LD + +v+x5vz///////7+/v////////////////////////////////////////////////////////////// + ///+/v7///////////////////////////////////////////////////////////////////////// + //////////////////////////////7+/v////////////////////////////////////////////// + ////////////////////////////////////////////////////////uej9/0PD+v9Cw/r/QsP6/0LD + +f9Cwvr/QsL6/0LD+v9Cwvr/X8z6//P7/v////////////////////////////////////////////// + //////////////////////////////////////////////////////////////3+/v9nzvr/QsP6/0LD + +f9Cwvr/QsP6/0LD+v9Cw/r/QsL6/0LD+v9Cw/r/QsP5/0LC+v9IwfXxDxYZDAAAAAAAAAAAAAAAAAAA + AAIAAAACAAAAAi1XaFJCw/n/QsP6/0HC+v9Bw/r/QsP5/0HD+f9Bw/r/QcP5/0HC+f9Bw/n/QcP6/0HC + +f+y5vz///////7+/v////////////7+/v/+/v7//v7+///////+/v7//v7+///////+/v7//v7+//7+ + /v/+/v7///////7+/v/+/v7//v7+///////+/v7//v7+//n9/v+S3Pz/RMP6/0HC+f9Bwvn/QcP5/0HD + +f9Jxfr/reX8//7+/v/+/v7//v7+///////+/v7//v7+//7+/v///////v7+//7+/v/+/v7//v7+//// + ///+/v7///////7+/v/+/v7///////7+/v///////v7+//7+/v///////v7+//7+/v////////////7+ + /v/+/v7///////7+/v/+/v7//v7+///////+/v7//v7+//7+/v/+/v7///////7+/v/+/v7//v7+//7+ + /v/+/v7//v7+///////+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7/ver9/1DH + +v9Bw/n/QcP5/0HC+v9Bw/n/QsP6/3fT+//s+f7//v7+//7+/v////////////7+/v/+/v7///////// + ///+/v7//v7+//7+/v///////v7+//7+/v/+/v7//v7+//7+/v/+/v7///////7+/v/+/v7//v7+/7Lm + /P9Bwvn/QcP5/0HC+f9Cw/r/QcP5/0HD+f9Bwvn/QcP5/0HD+f9Bw/n/QcL6/0LD+f8tV2hSAAAAAgAA + AAIAAAACAAAAAAAAAAAAAAAAOoyvpUHC+f9Cw/r/QsL6/0LD+v9Cw/n/QsP6/0HC+f9Cw/n/QsP6/0LC + +f9Bwvr/SsX6//L6/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//// + ///+/v7//v7+//7+/v/+/v7//v7+//7+/v///////v7+//7+/v/+/v7///////7+/v/f9f7/nuD8/3/W + +/+C1/v/puL8/+n4/v/+/v7//v7+//7+/v/+/v7///////7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v///////v7+//7+/v///////v7+//7+/v/+/v7///////7+/v/+/v7//v7+//7+/v/+/v7//v7+//// + ///+/v7//v7+//7+/v///////v7+//7+/v/+/v7///////7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v//////8vv+/7Hm/P+G2Pv/fNX7/5Pd/P/O7/3//v7+//7+/v/+/v7//v7+///////+/v7//v7+//// + /////////v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7/8vr+/0rF+v9Cw/r/QcL6/0LD+v9Cw/r/QcP5/0LD+v9Bwvn/QsP6/0LD+f9Bwvr/QsP6/zqM + r6UAAAACAAAAAAAAAAIAAAAAAAAAAAkMDgZJwPLrQcL5/0LD+v9Cwvn/QsP5/0LD+f9Cw/r/QcP5/0LD + +f9Cwvn/QcP5/0LC+f+C1/v///////7+/v/+/v7///////7+/v////////////////////////////7+ + /v////////////7+/v/////////////////+/v7///////////////////////////////////////// + /////////////////////////////////////////////////////////v7+//////////////////// + //////////////////////////////////////////////////////////////////////////////7+ + /v////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///+/v7///////////////////////////////////////////////////////////////////////// + /////////////////////////v7+//////////////////////////////////////////////////// + ////////////////////////gtf7/0HD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP6/0LD+f9Cw/n/QsP5/0LD + +f9Cw/n/ScDy6wkMDgYAAAAAAAAAAAAAAAIAAAACIT9MOkLD+v9Bwvr/QsL6/0LC+v9Bwvr/QsL6/0LD + +v9Cwvr/QcP6/0LC+v9Cwvr/QsL6/8Ps/f/+/v7///////7+/v/+/v7///////7+/v/+/v7//v7+//7+ + /v///////v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7///////7+/v/+/v7//v7+///////+/v7//v7+///////+/v7//v7+//7+ + /v/+/v7///////7+/v/+/v7//v7+//7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7//v7+//// + /////////v7+//7+/v///////v7+//7+/v/+/v7//v7+///////+/v7//v7+//7+/v///////v7+//7+ + /v/+/v7////////////+/v7///////7+/v/+/v7//v7+//7+/v///////v7+//7+/v///////v7+//7+ + /v/+/v7//v7+//7+/v///////v7+//7+/v/+/v7//v7+///////+/v7//v7+///////+/v7//v7+//7+ + /v/+/v7////////////+/v7///////7+/v/+/v7//v7+//7+/v////////////7+/v///////v7+//7+ + /v/+/v7//v7+///////+/v7//v7+///////D7P3/QcL6/0LC+v9Bwvr/QsP6/0HC+v9Cwvr/QcL6/0LC + +v9Bwvr/QsL6/0LC+v9Cw/r/Ij9MOgAAAAIAAAACAAAAAgAAAAAxco2BQcL6/0HC+v9Cwvn/QsL6/0LC + +v9Cwvr/QsP6/0HC+v9Cw/r/QsL6/0LC+f9Mxvr/9vz+//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////b8/v9Mxvr/QsL6/0HC+f9Bwvr/QsP6/0HC + +v9Cwvr/QcL6/0HC+f9Cwvr/QsL6/0LC+v8xco2BAAAAAgAAAAIAAAAAAAAAAEKl0MFBwvn/QsP6/0LC + +f9Cwvr/QsL6/0LD+f9Bw/r/QsP6/0LD+v9Bw/r/QsP6/37W+//+/v7//v7+///////+/v7//v7+//// + ///+/v7//v7+//////////////////7+/v////////////7+/v/+/v7//v7+/////////////v7+//7+ + /v///////v7+//7+/v///////v7+//7+/v///////////////////////v7+///////+/v7///////7+ + /v////////////7+/v////////////7+/v/+/v7////////////+/v7///////////////////////7+ + /v///////v7+///////+/v7////////////+/v7////////////+/v7//v7+/////////////v7+//// + ///////////////////+/v7///////7+/v/+/v7//v7+/////////////v7+/////////////v7+//7+ + /v////////////7+/v/////////////////+/v7//v7+///////+/v7//v7+//7+/v////////////7+ + /v////////////7+/v/+/v7////////////+/v7//////////////////v7+//7+/v///////v7+//7+ + /v/+/v7////////////+/v7////////////+/v7//v7+/////////////v7+/37W+/9Cw/r/QcP5/0LD + +v9Bw/n/QsL6/0HD+f9Cw/r/QcP5/0LC+v9Bwvr/QsL5/0Kl0MEAAAACAAAAAgAAAAALERQKRsL390HD + +f9Cw/n/QsP5/0LD+v9Cw/r/QsP5/0LD+v9Cw/n/QsP5/0LD+v9Cw/n/tef9//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v///////v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+///////+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+///////+/v7//v7+//7+/v///////v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v///////v7+//7+/v/+/v7//v7+//7+/v/+/v7///////7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7///////7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+///////+/v7/tef9/0LD + +f9Cw/n/QsP6/0LD+f9Cw/r/QsP5/0LD+v9Cw/n/QsP5/0LD+f9Cw/r/RsL39wsRFAoAAAAAAAAAAB4+ + SzpCw/r/QsP5/0LD+f9Bw/n/QsP5/0LD+f9Cw/n/QsP5/0HD+f9Cw/n/QsP6/0LD+v/o9/7///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////7+/v////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////7+/v////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///o9/7/QsP6/0HD+f9Cw/n/QcP5/0LD+f9Cw/n/QsP6/0HD+f9Cw/n/QcP5/0LD+f9Cw/r/Hz5LOgAA + AAAAAAACLGeAckLC+v9Cwvr/QcL6/0LC+v9Cwvr/QsL6/0LC+v9Cw/r/QsL5/0LD+v9Cw/r/XMv6//7+ + /v/////////////////+/v7//v7+///////+/v7//v7+//////////////////////////////////7+ + /v/+/v7//v7+//7+/v/+/v7//v7+/////////////v7+/////////////v7+//7+/v///////v7+//v+ + /v/+/v7////////////+/v7//v7+//7+/v///////v7+//7+/v/9/v7//P7+//7+/v////////////// + ///+/v7//////////////////////////////////v7+//7+/v/+/v7///////7+/v/+/v7///////// + ///+/v7//////////////////v7+//////////////////////////////////7+/v/+/v7//v7+//// + ///+/v7//v7+/////////////v7+///////9/v7//P7+//7+/v/+/v7///////////////////////// + ///+/v7//v7+//z+/v/9/v7//v7+//7+/v////////////7+/v/////////////////+/v7//v7+//// + /////////////////////////v7+//7+/v/+/v7///////7+/v/+/v7////////////+/v7///////// + /////////v7+//7+/v9cy/r/QsP6/0LD+v9Cw/r/QsL6/0LC+v9Cw/r/QsL6/0HC+v9Bwvr/QsL6/0HC + +v8sZ4ByAAAAAgAAAAI6jbGlQsP6/0HC+v9Bwvn/QcP5/0HC+v9Cw/r/QsP6/0HC+v9Cw/r/QsP6/0HC + +f+J2fv///////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////+f3 + /v961fv/Tsb6/2HN+v/C6/3//v7////////////////////////+/v7/vOn9/1/M+v9Ox/r/ftb7/+v4 + /v/////////////////////////////////+/v7//////////////////v7+//////////////////// + /////////////////////////////////////////////////////////v7+//////////////////// + //////////////7+/v/////////////////+/v7/seb8/1vL+v9Qx/r/htj7//H6/v////////////// + /////////////+/6/v+D1/v/T8f6/1zL+v+15/3//v7+//////////////////////////////////// + /////////////////////////////////////////////////////////v7+//////////////////// + /////////////////////////////4nZ+/9Cw/n/QsP6/0HD+f9Cwvr/QsL5/0LD+v9Cw/n/QsP6/0HD + +f9Cwvr/QsP6/zqNsaUAAAAAAAAAAkaz4tVCwvr/QsP6/0LC+v9Cwvn/QsL6/0LC+v9Cwvn/QsP6/0LC + +v9Cw/r/QsP6/7Pm/f///////v7+//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///6/f7/Ycz6/0LC+f9Cw/r/QsP6/0TD+v/S8P3//////////////////////8ru/f9Dw/r/QsP6/0LD + +v9Cwvr/aM/6//z+/v///////v7+//////////////////////////////////////////////////// + //////////////////////////////////////////////7+/v////////////////////////////// + //////////////////////////////7+/v///////////7vp/f9Cw/r/QsL6/0LD+v9Cwvr/ddP7//7+ + /v/////////////////+/v7/cNH7/0LD+v9Cw/n/QsL6/0LD+v/B6/3///////////////////////// + /////////////////////////////////////////////////////////////////////////v7+//// + ////////////////////////////////////////s+b9/0LD+v9Cw/r/QsP5/0LC+v9Cw/n/QsP6/0LD + +f9Cwvr/QsL6/0LC+v9Cwvr/RrPi1QAAAAAMERMIRsP4+0HC+v9Bw/n/QcP6/0HC+f9Bwvn/QcP6/0HC + +f9Cw/r/QcP5/0HD+v9Cw/r/2fP+//7+/v/+/v7//v7+///////+/v7//v7+///////+/v7//v7+//7+ + /v///////v7+//7+/v/+/v7////////////+/v7//v7+///////+/v7//v7+//7+/v///////v7+//7+ + /v///////v7+/87v/f9Bw/n/QcP5/0HD+f9Cw/r/QcP5/4va+////////v7+//7+/v/+/v7/gtf7/0HD + +v9Bw/n/QcP6/0HC+v9Cw/r/2PL9//7+/v/+/v7//v7+///////+/v7//v7+//7+/v////////////7+ + /v/+/v7//v7+//7+/v/+/v7////////////+/v7//v7+//7+/v/+/v7//v7+//7+/v///////v7+//7+ + /v/+/v7////////////+/v7//v7+//7+/v/+/v7//v7+////////////ctL7/0HC+v9Bw/n/QcP6/0HD + +v9Cw/r/5/f+//7+/v/+/v7//v7+/+H1/v9Cw/r/QcP6/0HD+f9Bw/r/QsP6/3fU+/////////////7+ + /v/+/v7//v7+///////+/v7//v7+///////+/v7//v7+//7+/v////////////7+/v/+/v7//v7+//7+ + /v/+/v7////////////+/v7//v7+//7+/v///////v7+//7+/v/Z8/7/QcP5/0HD+v9Bw/n/QcP5/0HD + +f9Bw/r/QcP5/0HD+v9Cw/r/QcL6/0HD+f9Gw/j7DBETCBkxOypCw/r/QsP5/0LD+f9Cw/n/QsP5/0LD + +f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0bE+v/5/f7///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////x+39/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/ftb7//////////////////// + //910/v/QsP5/0LD+f9Cw/n/QsP6/0LD+v/M7/3///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////9lzvr/QsP6/0LD + +f9Cw/r/QsP5/0LD+f/c9P7/////////////////1vL9/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/a9D7//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////n9/v9GxPr/QsP5/0LD + +f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+v8ZMTsqH0ZWTkHC+v9Cwvr/QcL6/0HC + +v9Bwvr/QsL6/0HC+v9Bwvr/QcL6/0HC+v9Bw/r/YMz6//7+/v////////////////////////////// + /////////v7+//////////////////7+/v/////////////////+/v7///////7+/v////////////7+ + /v////////////////////////////7+/v/R8P3/QcL6/0HC+v9Bw/r/QcL6/0HC+v9+1vv///////7+ + /v///////////3XT+/9Bwvr/QcL6/0HC+v9Bwvr/QcL6/8zv/f////////////////////////////7+ + /v/////////////////+/v7//////////////////v7+//////////////////////////////////// + ///////////////////+/v7//////////////////v7+//////////////////7+/v///////////2XO + +v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/9z0/v/////////////////W8v3/QcL6/0HC+v9Bwvr/QcL6/0HC + +v9r0Pv//////////////////////////////////v7+//////////////////////////////////// + ///+/v7//////////////////v7+//////////////////////////////////7+/v/+/v7//v7+/2DM + +v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/x9GVlAqY3tyQsP6/0LD + +v9Cwvn/QsP6/0LC+f9Cwvr/QsL6/0LC+f9Cwvr/QsL6/0LD+v9+1vv//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//// + ///+/v7//v7+//7+/v///////v7+//7+/v/+/v7//v7+/9rz/v9Cw/r/QsP6/0LD+v9Cw/r/QsL5/37W + +//+/v7//v7+//7+/v/+/v7/ddP7/0LD+v9Cw/r/QsL6/0LC+v9Cwvr/zO/9///////+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7///////7+/v/+/v7//v7+//7+ + /v///////v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//// + ///+/v7/Zc76/0LC+v9Cwvr/QsP6/0LC+v9Cw/n/3PT+//7+/v/+/v7//v7+/9by/f9Cwvr/QsP6/0LD + +v9Cwvr/QsP6/2vQ+////////v7+//7+/v/+/v7//v7+///////+/v7//v7+///////+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7///////7+/v/+/v7//v7+//7+/v///////v7+//7+ + /v/+/v7/ftb7/0LD+v9Cwvn/QsL6/0LC+v9Cw/r/QsP6/0LC+v9Cw/r/QsL6/0LC+v9Cw/r/KmN7cjJ9 + nI9Bw/n/QcL5/0HC+f9Bw/r/QcP5/0HC+v9Bw/n/QsP5/0HD+f9Bwvn/QcP6/5je/P////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////7+/v//////////////////////////////////////5Pb+/0LD+f9Bw/n/QcP5/0HD + +f9Bw/n/edT7/+/6/v/v+v7/7/r+/+/6/v9x0fv/QcP5/0HD+v9Bw/r/QcP5/0HD+f/B6/3/7/r+/+/6 + /v/1+/7//////////////////////////////////////////////////v7+//////////////////// + ///////////////////////////////////////////////////////////////////+/v7///////v+ + /v/w+v7/7/r+/+/6/v9izfr/QcP5/0HD+v9Bwvn/QcP5/0HD+f/P8P3/7/r+/+/6/v/v+v7/yu79/0HD + +f9Bw/n/QcL5/0HC+v9Bw/n/a9D7//////////////////////////////////////////////////7+ + /v////////////////////////////7+/v////////////////////////////////////////////// + //////////////////+Y3vz/QcP5/0HD+f9Bw/r/QcP5/0HD+f9Bwvn/QcL6/0HD+f9Bw/n/QcL5/0HD + +v80fZyPNoywqULD+f9Cw/n/QsP5/0LD+v9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/sOX8//// + ///+/v7//v7+///////////////////////////////////////+/v7///////7+/v/+/v7///////// + /////////v7+/////////////v7+//7+/v////////////7+/v/+/v7/7Pn+/77q/f+R3Pz/QsP6/0LD + +f9Cw/n/QsP5/0LD+f9Cw/r/RMP6/0TD+v9Ew/r/RMP6/0LD+v9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0TD + +v9Ew/r/RMP6/0jF+v971fv/6vj+///////+/v7////////////+/v7//v7+///////+/v7//v7+//// + /////////v7+//7+/v/////////////////+/v7///////7+/v/+/v7////////////+/v7//v7+//7+ + /v+v5fz/Vcn6/0XE+v9Ew/r/RMP6/0LD+v9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0TD+v9Ew/r/RMP6/0TD + +v9Ew/r/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Jxfr/d9T7/6Dh/P/X8v3//f7+///////+/v7//v7+//7+ + /v///////v7+//7+/v////////////7+/v/+/v7//v7+///////+/v7///////7+/v///////v7+//// + /////////v7+///////+/v7//////6/l/P9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +f9Cw/n/QsP5/zaMsKlCpdDDQsP5/0LD+f9Bw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +f/E7P3//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/9/v7/yO39/3XT+/9GxPr/QsP5/0LD + +f9Cwvn/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsL5/0LD+f9Cw/n/QsP5/0LD + +f9Cw/n/QsP5/0LD+f9Cw/n/QsL5/0LD+f9hzPr/+P3+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7/seb8/0LD+v9Cw/n/QsP5/0LC+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +f9Bw/n/QsP5/0LD+f9Cw/n/QcP5/0LD+f9Cw/n/QsP5/0LD+f9Cwvn/QsP5/0LD+v9lzvr/v+r9//3+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7/xOz9/0HD+f9Cw/n/QsP5/0LD+f9Bw/n/QsP5/0LD + +f9Cw/n/QsP5/0LC+f9Cw/n/QqXQwzul0tNCw/r/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC + +v9Cwvr/QsP6/9Xx/f/////////////////+/v7///////////////////////////////////////// + ////////////////////////////////////////////////////////5/f+/3XT+/9Cw/r/QsL6/0LC + +v9Cwvr/QsL6/0LC+v9Cw/r/QsL6/0LD+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LD+v9Cwvr/QsL6/0LC + +v9Cwvr/QsL6/0LC+v9Cwvr/QsP6/0LC+v9Cwvr/QsP6/0LC+v+96v3//v7+//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////7+/v9Yyvr/QsL6/0LC+f9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC + +v9Cwvr/QsL5/0LC+v9Cwvn/QsL6/0LC+f9Cw/r/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC + +v9Cw/r/d9T7/+35/v////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////V8f3/QsL6/0LC+f9Cwvr/QsL5/0LD + +v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v88pdLTTcb65ULD+v9Cwvr/QsL5/0LD+v9Cw/n/QsL6/0LD + +v9Cw/r/QsP6/0LC+v9Cw/r/5Pb+///////+/v7//v7+//7+/v///////v7+//7+/v///////v7+//7+ + /v/+/v7///////7+/v/+/v7//v7+///////+/v7//v7+//7+/v/+/v7//v7+/9Tx/f9SyPr/QsP6/0LC + +f9Cwvr/QsP6/0LC+v9Cw/r/QsL5/0LC+f9Cw/r/QsP6/0LC+f9Cw/r/QsL5/0LC+v9Cw/r/QsP5/0LC + +v9Cw/n/QsL6/0LD+v9Cwvn/QsL6/0LD+v9Cw/r/QsP5/0LC+v9Cw/n/QsP6/6Lh/P/+/v7///////// + ///+/v7///////7+/v/+/v7//v7+/////////////v7+//7+/v/+/v7///////7+/v/+/v7//v7+//7+ + /v/+/v7//v7+///////+/v7/+v3+/0LD+f9Cwvr/QsP6/0LD+v9Cwvr/QsP6/0LC+f9Cwvr/QsP6/0LC + +f9Cwvn/QsP5/0LC+v9Cw/n/QsP6/0LC+f9Cw/r/QsP5/0LD+v9Cw/n/QsL6/0LC+f9Cw/r/QsP6/0LC + +f9Cwvn/QsL6/0LC+v9Cwvn/Xcv6/+j3/v///////v7+//7+/v/+/v7///////7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v///////v7+//7+/v/+/v7///////7+/v/+/v7//v7+/+T2/v9Cw/r/QsL5/0LD + +v9Cw/n/QsP6/0LD+f9Cwvr/QsL5/0LD+v9Cw/r/QsL5/07G+uVLxvr3QsP6/0LD+v9Cw/n/QsP6/0LD + +f9Cwvn/QsP6/0LD+f9Cw/r/QsP5/0LD+v/v+v7///////////////////////////////////////// + ///////////////////////////////////////////////////////////////////d9P7/Tsb6/0LD + +f9Cw/n/QsP5/0LD+v9Cw/n/QsP6/0LD+f9Cw/n/QsP5/0LD+v9Cw/r/QsP5/0LD+f9Cw/n/QsL5/0LD + +v9Cw/n/QsP5/0LD+f9Cw/r/QsP5/0LD+f9Cw/r/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/r/oeH8//// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////5/f7/QsP5/0LC+f9Cw/n/QsL5/0LD+v9Cw/n/QsP5/0LD + +v9Cw/n/QsP5/0LD+v9Cw/n/QsL5/0LD+f9Cw/r/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/r/QsP5/0LD + +f9Cw/r/QsP5/0LD+f9Cw/r/QsL5/0LD+f9Cw/r/ZM36//b8/v////////////////////////////// + ////////////////////////////////////////////////////////////////////////7/r+/0LD + +v9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+v9Cw/n/QsP5/0LD+v9Cw/n/S8b690fE+v1Cw/n/QsP6/0LD + +f9Bw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/Q8P6//f8/v////////////7+/v////////////// + /////////////////////////////////////////v7+///////////////////////+/v7/+Pz+/2LN + +v9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+v9Cw/n/QsP5/0LD+v9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +f9Cw/n/QsP6/0LD+f9Cwvn/QsP5/0LD+f9Cw/r/QsP6/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +f+h4fz//////////////////////////////////v7+//7+/v/////////////////+/v7///////// + ///////////////////+/v7///////////////////////n9/v9Cw/n/QsP6/0LD+f9Cw/n/QsP5/0LD + +v9Cw/r/QsP5/0LD+f9Cw/n/QsP6/0LD+f9Cw/r/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +v9Cw/n/QsP5/0LD+f9Cw/r/QsP5/0LD+f9Cw/n/QsP5/0LD+v9Cw/n/ld38//7+/v/+/v7///////// + /////////v7+//7+/v///////v7+//7+/v/////////////////+/v7//////////////////v7+//// + ///3/P7/Q8P6/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP6/0LD+f9Cw/n/QsP5/0LD+v9HxPr9RMP6/0LC + +v9Cwvr/QsL5/0LD+v9Bwvn/QsL6/0HC+v9Cwvr/QsL6/0LC+v9Dw/r//f7+//7+/v/+/v7//v7+//7+ + /v///////v7+//7+/v///////v7+//7+/v/+/v7//v7+///////+/v7//v7+//7+/v/+/v7//v7+//7+ + /v+n4/z/QsL6/0LD+v9Bwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Bwvr/QsL6/0LC+v9Bwvr/QcL5/0HC + +v9Cwvr/QsL5/0LC+v9Cwvr/QsL6/0LC+v9Bwvn/QsL6/0HC+v9Bwvr/QsL6/0HC+v9Cwvn/QcL5/0LC + +v9Cwvr/QsP6/6Hh/P/+/v7//v7+//7+/v/+/v7//v7+//7+/v///////v7+/////////////v7+//7+ + /v/+/v7//v7+//7+/v/+/v7///////7+/v/+/v7//v7+///////+/v7/+f3+/0LD+f9Cwvr/QsL6/0HC + +v9Cwvr/QcL6/0HC+v9Cwvr/QcL6/0HC+v9Cwvr/QcL6/0HC+v9Bwvn/QcL6/0HC+f9Cwvr/QsL5/0LC + +v9Cwvn/QsL6/0LC+v9Cwvr/QsP6/0LC+v9Cwvr/QsL6/0LC+f9Cwvn/QsL6/0LC+v9HxPr/5vf+//7+ + /v/+/v7///////7+/v/+/v7//v7+//7+/v/+/v7//v7+///////+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//3+/v9Dw/r/QcL5/0LC+v9Cwvn/QsL6/0LC+f9Cwvr/QsL6/0LC+v9Cw/r/QsL6/0TD + +v9Cw/r/QsP6/0LD+v9Bwvr/QsL6/0LC+v9Bwvr/QsL6/0LC+v9Cw/r/QsL6/0TD+v////////////// + ///+/v7///////////////////////////////////////////////////////7+/v////////////// + ////////+f3+/1XJ+v9Cwvr/QcL6/0LC+v9Cw/r/QsL6/0LC+v9Cwvr/QsP6/0rF+v+G2Pv/seb8/8Hr + /f/D7P3/w+z9/8Ps/f/D7P3/w+z9/8Ps/f/D7P3/w+z9/8Ps/f/D7P3/uun9/0TD+v9Bwvr/QsL6/0LD + +v9Cw/r/QsL6/0HC+v9Cw/r/oeH8//////////////////////////////////////////////////// + /////////v7+//////////////////////////////////7+/v/////////////////5/f7/QsL5/0LC + +v9Cwvr/QsL6/0HC+v9Cwvr/QsL6/0HC+v+C1/v/w+z9/8Ps/f/D7P3/w+z9/8Ps/f/D7P3/w+z9/8Ps + /f/D7P3/w+z9/8Ps/f+66f3/md78/1rK+v9Bwvr/QcL6/0LC+v9Cwvr/QsL6/0LD+v9Cwvr/QcL5/0LC + +v+c3/z//v7+//////////////////////////////////////////////////////////////////// + //////////////7+/v///////////0TD+v9Bwvn/QsL6/0LD+v9Cw/r/QcP5/0LC+v9Cwvr/QsL6/0HC + +v9Bwvr/QsP6/0LD+f9Cw/r/QsL6/0HC+f9Bw/r/QsP6/0LC+v9Cw/r/QsP5/0LD+v9Bwvn/RMP6//// + /////////v7+//7+/v/+/v7////////////+/v7////////////+/v7//v7+///////+/v7//v7+//// + /////////v7+///////I7f3/QsL6/0HC+v9Cw/r/QsP6/0LC+f9Cwvr/QcL6/0LC+v971fv/7vn+//7+ + /v///////v7+//7+/v////////////7+/v///////v7+///////+/v7//v7+///////y+v7/RsT6/0HC + +v9Cwvn/QsP6/0LD+f9Cwvr/QsP5/0LD+f+h4fz////////////+/v7///////7+/v///////v7+//7+ + /v////////////7+/v/+/v7//v7+///////+/v7//v7+///////+/v7//v7+/////////////v7+//n9 + /v9Cw/n/QsL6/0LD+f9Bwvr/QsL5/0HC+f9Cwvr/QcL6/6Dg/P///////v7+/////////////v7+//7+ + /v////////////7+/v///////v7+///////+/v7/+/3+/6Ph/P9Dw/r/QsL6/0HC+v9Cwvn/QcP6/0LC + +v9Cw/n/QsL6/2DM+v/+/v7////////////+/v7///////7+/v///////v7+//7+/v////////////7+ + /v/+/v7//v7+///////+/v7////////////+/v7/RMP6/0LD+f9Cwvr/QsL5/0LD+v9Cw/n/QsL6/0LD + +f9Bwvr/QsL5/0HC+f9Cw/r/RMP6/0LD+f9Cwvn/QsP5/0LD+f9Cw/n/QsP6/0LD+f9Cw/n/QsP5/0LD + +f9Dw/r//f7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v///////v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+///////+/v7//v7+/5bd/P9Cw/n/QsP6/0LD+f9Bw/n/QsP5/0LD+v9Cw/r/ctL7//v9 + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v///////v7+//7+/v/+/v7///////7+/v/+/v7///////L6 + /v9GxPr/QsP6/0HC+f9Cw/r/QsP5/0HC+f9Cw/n/QcP5/6Hh/P/+/v7///////7+/v/+/v7//v7+//7+ + /v/+/v7//v7+///////+/v7//v7+//7+/v/+/v7///////7+/v/+/v7//v7+//7+/v/+/v7//v7+//// + ///+/v7/+f3+/0HD+f9Cw/n/QsP5/0LD+v9Cw/n/QcP5/0LD+v9Cw/r/oOD8///////+/v7//v7+//7+ + /v/+/v7//v7+//7+/v///////v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+/6bi/P9Cw/r/QsP6/0HC + +f9Cw/r/QsP6/0HD+f9Cw/n/RMP6/+35/v/+/v7///////7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7///////7+/v/+/v7//v7+//3+/v9Dw/r/QcL5/0LD+v9Bwvn/QsP6/0HD + +f9Cw/n/QcP5/0LD+v9Bw/n/QsP5/0TD+v9HxPr9QcP5/0LD+f9Bw/n/QcP5/0LD+f9Cw/n/QsP5/0HD + +f9Cw/n/QsL5/0PD+v/3/P7///////////////////////////////////////////////////////// + /////////v7+//7+/v//////////////////////ctL7/0LD+f9Bw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +v/c9P7///////////////////////7+/v////////////////////////////////////////////// + ////////8vr+/0bE+v9Cw/n/QsP5/0LD+f9Cw/n/QcP5/0LD+f9Cw/n/oeH8//////////////////// + /////////////////////////////////////////////////////////////////////////v7+//// + ///////////////////5/f7/QsP5/0LD+f9Bw/n/QsP5/0LC+f9Cw/n/QsP5/0LD+f+g4Pz///////7+ + /v///////////////////////////////////////////////////////////////////////P7+/2DM + +v9Cw/n/QsP5/0HD+f9Cw/n/QcP5/0LD+f9Cw/n/0fD9//////////////////////////////////// + /////////////////////////////////////////v7+////////////9/z+/0PD+v9Cw/n/QsP5/0LD + +f9Cw/n/QsP5/0LC+f9Bw/n/QsL5/0LD+f9Cw/n/R8T6/UvG+vdCwvr/QsL6/0HD+v9Bwvr/QcL6/0LC + +v9Bwvr/QsL6/0LC+v9Bwvr/QsP6/+/6/v///////v7+//7+/v/+/v7///////7+/v/+/v7//v7+//// + //////////////////////////////////////////////////9dy/r/QcL6/0HC+v9Bwvr/QcP6/0HC + +v9Bwvr/Xsz6//7+/v////////////7+/v///////v7+//7+/v////////////7+/v///////v7+//// + /////////v7+///////y+v7/RsT6/0HC+v9Bwvr/QsP6/0HC+v9Bwvr/QcL6/0HD+v+h4fz///////// + ///+/v7///////7+/v///////v7+//7+/v///////v7+/////////////v7+///////+/v7//v7+//// + ///+/v7//v7+/////////////v7+//n9/v9Bwvr/QcL6/0LC+v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/6Dg + /P///////v7+/////////////v7+//////////////////7+/v///////////////////////v7+//// + ///+/v7/pOL8/0HC+v9Bwvr/QcL6/0HC+v9Cw/r/QcL6/0HC+v+/6v3////////////+/v7///////// + //////////////7+/v///////v7+/////////////v7+///////+/v7////////////v+v7/QsP6/0HC + +v9Cwvr/QcL6/0LD+v9Bwvr/QcL6/0LD+v9Bwvr/QcL6/0HC+v9Lxvr3Tcb65ULD+v9Bwvn/QcP6/0HC + +v9Bw/r/QsL6/0HC+v9Cwvn/QcP6/0HC+v9Cw/r/5Pb+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+/1PI+v9Bwvr/QcL6/0LC + +v9Bw/r/QsP6/0HC+v931Pv//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//L6/v9GxPr/QcL6/0LD+v9Bwvr/QsP6/0HC+v9Bwvr/QcP6/6Hh + /P/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7/+f3+/0HC+f9Bwvr/QcL6/0HC+v9Bwvr/QsP6/0HC + +v9Bwvr/oOD8//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/K7v3/QcL6/0LC+v9Bw/r/QcL6/0HC+v9Bwvr/QcL5/7no/f/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+/+T2 + /v9Cw/r/QcL5/0HC+v9Bwvn/QcP6/0HC+f9Bwvr/QcL6/0HC+v9Bwvr/QsL6/07G+uU7pdLTQcP6/0LD + +v9Bw/n/QcP6/0HD+f9Cwvr/QcP6/0LD+f9Bw/r/QcP5/0HD+f/V8f3///////////////////////7+ + /v////////////7+/v//////////////////////////////////////////////////////Vsn6/0HD + +v9Bw/r/QsP6/0HD+v9Bw/r/QcP6/3PS+/////////////////////////////////////////////// + ////////////////////////////////////////8vr+/0bE+v9Bw/r/QcP6/0LD+v9Bw/n/QcP6/0HD + +f9Bw/r/oeH8//////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////5/f7/QsP5/0HD+v9Bw/n/QcP6/0HC + +v9Bw/r/QcP6/0HD+v+g4Pz///////////////////////////////////////////////////////// + /////////////////////////////8ru/f9Bw/r/QcL6/0HD+v9Bw/r/QcP5/0HD+v9Bw/r/vur9//// + //////////////////////////////////////////////////////////////////////////////// + ////////1fH9/0HD+v9Bw/n/QcP6/0HD+f9Bw/r/QcP6/0HD+v9Bw/n/QcP6/0HD+v9Bw/r/PKXS00Kl + 0MNCw/r/QcP6/0HD+f9Bw/n/QcP5/0LD+f9Bw/n/QsP5/0HD+v9Bw/n/QcP5/8Ts/f/+/v7//v7+//7+ + /v///////v7+/////////////v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+///////+/v7//v7+//7+ + /v9mzvr/QcP6/0HD+f9Bw/n/QsP5/0HD+f9Bw/n/VMj6//3+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+///////y+v7/RsT6/0HD+f9Bw/n/QsP5/0HD + +f9Bw/n/QcP5/0LD+v+h4fz//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+///////+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//n9/v9Cw/n/QsP6/0HD + +f9Bw/n/QsP5/0HD+f9Bw/r/QcP5/6Dg/P///////v7+//7+/v////////////7+/v/+/v7//v7+//7+ + /v/+/v7//v7+/////////////v7+///////+/v7/qeP8/0HD+v9Bw/n/QsP6/0HD+f9Bw/n/QsP6/0HD + +f/S8P3//v7+//7+/v/+/v7//v7+//////////////////7+/v///////v7+//7+/v/+/v7//v7+//// + ///+/v7//v7+///////E7P3/QcP5/0LD+f9Bw/n/QcP5/0HD+f9Bw/n/QsP6/0HD+f9Bw/n/QsP5/0HD + +f9CpdDDNoywqUHC+v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/QcP6/0HC+v9Bw/r/sOX8//// + //////////////////////////////////////////////////////////////////////////////// + /////////////4bY+/9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/ye39//////////////////// + //////////////////////////////////////////////////////////////L6/v9GxPr/QsL6/0HC + +v9Bwvr/QcL6/0LC+v9Cwvr/QsP6/6Hh/P////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////+f3+/0LD + +v9Bwvr/QsL6/0HC+v9Bwvr/QsL6/0HC+v9Cwvr/oOD8//////////////////////////////////// + //////////////////////////////////////////////z+/v9lzvr/QcL6/0HC+v9Bwvr/QcL6/0HC + +v9Bwvr/RsT6//D6/v////////////////////////////////////////////////////////////// + /////////////////////////////6/l/P9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC + +v9Bwvr/QsL6/zaMsKkyfZyPQcP6/0LC+v9Bwvn/QcL6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/QcL5/0LD + +v+Y3vz///////7+/v///////v7+///////+/v7////////////+/v7//v7+//////////////////// + ////////////////////////tuj9/0LC+v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC+v9cy/r/7fn+//7+ + /v///////////////////////////////////////v7+//7+/v////////////7+/v//////8vr+/0bE + +v9Bwvr/QcL6/0HC+v9Bw/r/QcL6/0HC+f9Bw/r/oeH8/////////////v7+//7+/v/+/v7///////// + ///+/v7////////////+/v7///////////////////////////////////////////////////////// + ///5/f7/QcP6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC+v+g4Pz///////7+/v////////////// + ///+/v7////////////+/v7//v7+//////////////////7+/v/+/v7/ouH8/0HC+v9Bwvr/QcL6/0HC + +v9Bwvr/QcL6/0HC+v9qz/v//v7+//////////////////7+/v////////////7+/v/+/v7///////// + ///+/v7//////////////////v7+////////////mN78/0HC+v9Bwvr/QcL6/0HC+f9Bwvr/QcL6/0HC + +v9Bwvr/QcL6/0HC+v9Bwvr/NH2cjypje3JCw/r/QsP6/0LC+f9Cw/r/QsL5/0LC+v9Cw/r/QsL5/0LD + +v9Cw/r/QsP6/37W+//+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/w+v7/S8X6/0LC+v9Cw/r/QsP6/0LD+v9Cwvr/QsL6/0LC + +v9ayvr/wuv9//r9/v////////////7+/v///////v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//// + ///y+v7/RsT6/0LC+v9Cwvr/QsP6/0LC+f9Cwvr/QsP6/0LD+v+h4fz//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v////////////7+/v/+/v7//v7+///////+/v7//////////////////v7+//// + ///+/v7//v7+//n9/v9Cw/n/QsL6/0LD+v9Cwvn/QsL6/0LC+v9Cwvr/QsL6/6Dg/P////////////7+ + /v/+/v7///////7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7/5vf+/4nZ+/9Cw/r/QsL6/0LC + +v9Cwvr/QsP6/0LD+v9Cwvn/QsL6/6/l/P/+/v7///////7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7///////7+/v/+/v7//v7+/////////////v7+//7+/v9+1vv/QsP6/0LD+v9Cwvr/QsL5/0LC + +v9Cw/n/QsL6/0LC+v9Cwvn/QsL5/0LC+v8qY3tyH0ZWTkHD+v9Bw/r/QcP5/0HD+f9Bwvn/QcP5/0HD + +v9Bw/n/QcP6/0HD+f9Bw/r/YMz6//7+/v///////v7+//////////////////////////////////// + ///////////////////+/v7///////////////////////////+V3fz/QcL5/0HC+f9Bw/r/QcP6/0HD + +v9Bwvn/QcP6/0HD+v9Bw/n/Ucj6/3XT+/+D1/v/hdj7/4XY+/+F2Pv/hdj7/4XY+/+F2Pv/hdj7/4XY + +/+F2Pv/hdj7/4DW+/9Dw/r/QcL5/0HD+f9Bw/n/QcP5/0HD+v9Bw/n/QcP5/6Hh/P////////////// + //////////////////////////////////////////////7+/v////////////////////////////// + ///+/v7/////////////////+f3+/0HD+f9Bwvn/QcP5/0HD+v9Bw/n/QcP6/0HD+f9Bwvn/Y836/4XY + +/+F2Pv/hdj7/4XY+/+F2Pv/hdj7/4XY+/+F2Pv/hdj7/4XY+/+F2Pv/ftb7/2PN+v9Ew/r/QcP5/0HD + +v9Bw/r/QcL5/0HD+f9Bw/r/QcP6/0HD+f9Wyfr/9fz+//7+/v///////////////////////v7+//// + /////////////////////////////////////////////////////////v7+/2DM+v9Bw/n/QcP5/0HD + +v9Bw/n/QsP6/0HD+f9Bwvn/QcP5/0HD+v9Bw/n/QcP6/x9GVlAZMTsqQsP6/0LD+v9Cw/n/QsP6/0LD + +f9Cw/r/QsL5/0LD+f9Cw/r/QsP5/0LD+v9GxPr/+f3+//7+/v/+/v7//////////////////v7+//// + /////////v7+//7+/v///////v7+//7+/v/+/v7////////////+/v7///////L6/v9Yyvr/QsP5/0LD + +v9Cw/n/QsP6/0LD+f9Cw/r/QsP6/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+v9Cw/n/QsP5/0LD + +v9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsL5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/oeH8//7+ + /v/////////////////+/v7//////////////////////////////////v7+/////////////v7+//7+ + /v///////v7+///////+/v7///////7+/v/5/f7/QsP5/0LD+v9Cw/n/QsP6/0LC+f9Cw/n/QsP5/0LD + +f9Cwvn/QsP5/0LD+v9Cw/n/QsP5/0LD+f9Cw/r/QsP5/0LC+f9Cw/n/QsP6/0LD+f9Cw/r/QsP5/0LD + +f9Cwvn/QsP5/0LD+v9Cw/n/QsL5/0LD+f9Cw/r/QsP6/8Hr/f/+/v7///////7+/v///////v7+//7+ + /v/+/v7///////7+/v///////////////////////v7+//////////////////7+/v/5/f7/RsT6/0LD + +v9Cw/n/QsL5/0LD+f9Cw/r/QsP5/0LD+v9Cw/n/QsP5/0LC+f9Cw/r/GTE7KgwREwhGw/j7QsP6/0LD + +f9Cw/r/QsP5/0LD+v9Cw/n/QsP5/0LD+f9Cw/n/QsP6/0LD+v/Z8/7//v7+//7+/v/+/v7///////7+ + /v/+/v7//v7+//7+/v///////v7+//7+/v/+/v7//v7+//7+/v///////v7+//7+/v/+/v7//////9Xx + /f9Kxfr/QsP6/0LD+f9Cw/n/QsP5/0LD+f9Cw/r/QsP6/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP6/0LD + +f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+v9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +v+h4fz//v7+/////////////v7+//7+/v/+/v7//v7+//7+/v///////v7+//7+/v/+/v7//v7+//// + ///+/v7//v7+///////+/v7//v7+//7+/v////////////n9/v9Cw/n/QsP6/0LD+f9Cw/r/QsP5/0LD + +f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/r/QsP5/0LD+f9Cw/n/QsP6/0LD+f9Cw/n/QsP5/0LD + +v9Cw/n/QsP6/0LD+f9Cw/n/QsP5/0LD+f9Cw/r/QsP6/0LD+v+c3/z//v7+//7+/v/+/v7//v7+//// + /////////v7+//7+/v///////v7+//7+/v////////////7+/v/+/v7//v7+//7+/v/+/v7//v7+/9nz + /v9Cw/n/QsP5/0LD+f9Cw/r/QsP5/0LD+f9Cw/n/QsP6/0LD+f9Cw/r/QsP5/0bD+PsMERMIAAAAAEaz + 4tVCwvr/QsP6/0HC+v9Cwvr/QsL6/0LD+v9Cwvr/QsP6/0LC+v9Cw/r/QsL6/7Pm/f/+/v7///////// + //////////////////////////////////////////////////////////////////////////////// + /////////v7+/9Dw/f9Qx/r/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cw/r/QsP6/0LC + +v9Cwvr/QsL6/0LC+v9Cw/r/QsP6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsP6/0LC + +v9Cw/r/QsP6/6Hh/P/////////////////////////////////+/v7///////////////////////// + ///////////////////+/v7/////////////////////////////////+f3+/0LC+v9Cwvr/QsL6/0LC + +v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsP6/0LC+v9Cwvr/QsL6/0LD + +v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9GxPr/qOP8//7+/v////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////s+b9/0LC+v9Cw/r/QsL6/0LC+v9Cwvr/QsP6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/RrPi1QAA + AAAAAAACOo2xpULC+v9Cwvn/QsL5/0LD+v9Cwvr/QsP6/0LC+f9Cw/r/QsL6/0LD+v9Cwvr/idn7//7+ + /v/////////////////+/v7////////////+/v7//v7+//7+/v///////v7+//7+/v/+/v7///////7+ + /v/+/v7//v7+///////+/v7//v7+/9Hw/f9Fw/r/QsL6/0LC+v9Cwvr/QsP6/0LC+f9Cwvr/QsP6/0LD + +v9Cw/r/QsP5/0LD+v9Cw/n/QsL6/0LD+v9Cwvn/QsL6/0LC+f9Cw/r/QsP6/0LC+v9Cwvn/QsP6/0LD + +v9Cwvn/QsP6/0LD+f9Cw/r/oeH8//7+/v///////v7+///////+/v7///////7+/v/+/v7///////7+ + /v/+/v7//v7+//7+/v///////v7+//7+/v///////v7+//7+/v/+/v7///////7+/v/5/f7/QsP5/0LC + +v9Cw/r/QsL6/0LD+v9Cw/r/QsL6/0LC+f9Cw/r/QsL5/0LC+v9Bw/r/QsL6/0LC+f9Cw/r/QsP5/0LD + +v9Cw/n/QsP6/0LD+f9Cwvr/QsP6/0LC+v9Cw/n/QsL6/0LC+v9Cwvr/QsL6/3jU+//3/P7//v7+//// + ///+/v7//v7+//7+/v///////v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+///////+/v7//v7+//// + ///+/v7//v7+//7+/v+J2fv/QsL5/0LD+v9Cw/n/QsP6/0LD+f9Cw/r/QsP5/0LC+v9Cw/r/QsL6/0LD + +f86jbGlAAAAAgAAAAAsZ4ByQsP5/0HD+f9Bwvn/QsP5/0LD+v9Cw/n/QsP5/0LD+v9Cw/n/QsP6/0LD + +f9cy/r//v7+//////////////////////////////////////////////////////////////////// + ///////////////////////////////////V8f3/Usj6/0LC+f9Cw/r/QsP6/0LC+f9Cw/r/QsP5/0LD + +v9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/r/QsP5/0LD+f9Cw/r/QsP5/0LD+v9Cw/n/QsP6/0LD + +v9Cw/n/QsP6/0LD+f9Cw/r/QsP5/0LD+v+h4fz///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////n9 + /v9Cw/n/QsP6/0LD+f9Cw/r/QsP6/0LD+f9Cw/r/QsP6/0LD+f9Cw/n/QsP6/0LD+f9Cw/r/QsP5/0LD + +v9Cw/n/QsP5/0LD+f9Cw/r/QsP5/0LD+f9Cw/n/QsP5/0LD+v9Cw/n/QsP6/0LD+v9Cwvn/QsP5/2zQ + +//y+/7///////////////////////////////////////////////////////////////////////// + /////////////////////////v7+/1zL+v9Cw/n/QsP6/0LD+f9Cw/n/QsP5/0LD+v9Cw/n/QsP5/0LD + +f9Cw/n/QsP6/yxngHIAAAACAAAAAB4+SzpCw/r/QsP5/0HD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +f9Cw/n/QsP5/0LD+v/o9/7//v7+/////////////v7+///////////////////////+/v7///////// + ///+/v7//////////////////v7+////////////3/X+/07H+v9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/6Hh/P/////////////////+/v7///////// + ///+/v7////////////////////////////////////////////+/v7////////////+/v7///////// + ////////+f3+/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +f9Cw/n/QsP5/3XT+//7/f7///////7+/v/////////////////+/v7////////////+/v7///////// + ///////////////////////////////////o9/7/QsP6/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +f9Cw/n/QsP5/0LD+f9Cw/r/Hj5LOgAAAAAAAAACCxEUCkbC9/dBwvr/QcL6/0LC+v9Cwvr/QcL6/0LC + +v9Cw/r/QsL6/0HD+v9Cwvr/QsL6/7Xn/f/+/v7//v7+///////+/v7//v7+///////+/v7//v7+//7+ + /v/+/v7///////7+/v/+/v7//v7+//7+/v/+/v7//v7+//r9/v9mzvr/QsL6/0HC+v9Cwvr/QsL6/0LC + +v9Cwvr/QcL6/0LC+v9Dw/r/WMr6/27Q+/900vv/dNL7/3TS+/900vv/dNL7/3TS+/900vv/dNL7/3TS + +/900vv/cdH7/0PD+v9Cwvr/QcL6/0LD+v9Bwvr/QsL6/0LC+v9Cw/r/oeH8///////+/v7//v7+//7+ + /v////////////7+/v/+/v7///////7+/v/+/v7//v7+//7+/v///////v7+//7+/v/+/v7///////7+ + /v/+/v7//v7+///////5/f7/QcL6/0LC+v9Cwvr/QsL6/0LC+v9Bwvr/QsL6/0LC+v9mzvr/dNL7/3TS + +/900vv/dNL7/3TS+/900vv/dNL7/3TS+/900vv/dNL7/3DR+/9ezPr/RcT6/0LC+v9Cwvr/QcL6/0LC + +v9Cwvr/QcL6/0LC+v9Cwvr/QsP6/6zk/P/+/v7//v7+//7+/v/+/v7////////////+/v7///////7+ + /v/+/v7//v7+//7+/v///////v7+//7+/v///////v7+/7Xn/f9Cwvr/QcL6/0LD+v9Bwvr/QsL6/0HC + +v9Cwvr/QcL6/0LC+v9Cwvr/QsL6/0bC9/cLERQKAAAAAgAAAAIAAAAAQqXQwUHC+v9Bwvr/QsL5/0LC + +v9Cwvr/QsL6/0LD+v9Bwvr/QsP6/0LC+v9Cwvn/ftb7//////////////////////////////////// + ////////////////////////////////////////////////////////tef9/0HC+v9Cwvr/QsP6/0LC + +v9Bwvr/QsL6/0LC+v9Cw/r/iNn7/+D1/v/9/v7///////////////////////////////////////// + ///////////////////y+v7/RsT6/0LC+v9Cwvr/QsL6/0LD+v9Cwvr/QsL6/0LD+v+h4fz///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////n9/v9Bwvn/QsL6/0LC+v9Cwvr/QcL6/0LD+v9Cwvr/QsL6/8ru + /f////////////////////////////////////////////////////////////7+/v/s+f7/oeH8/0jF + +v9Cw/r/QcL6/0LC+v9Cwvr/QsL6/0HC+v9Cwvr/Usj6//X8/v////////////////////////////// + ////////////////////////////////////////////////////////ftb7/0LC+v9Bwvn/QcL6/0LD + +v9Bwvr/QsL6/0HC+v9Bwvn/QsL6/0LC+v9Cwvr/QqXQwQAAAAIAAAACAAAAAAAAAAAxco2BQcL5/0LD + +v9Cwvn/QsL6/0LC+v9Cw/n/QcP6/0LD+v9Cw/r/QcP6/0LD+v9Mxvr/9vz+//7+/v///////v7+//7+ + /v///////v7+//7+/v/////////////////+/v7////////////+/v7//v7+//7+/v9mzvr/QcP5/0LD + +f9Bw/n/QsP6/0LC+v9Cwvr/QsL6/6Pi/P/+/v7///////////////////////7+/v///////v7+//// + ///+/v7////////////+/v7///////L6/v9GxPr/QsL6/0HC+f9Cw/r/QsP5/0HD+v9Cw/n/QcP6/6Hh + /P/+/v7///////7+/v///////v7+/////////////v7+/////////////v7+//7+/v////////////7+ + /v///////////////////////v7+///////+/v7/+f3+/0HD+f9Cwvr/QcL6/0LC+f9Bwvn/QsL6/0LC + +v9Cwvr/yu79///////+/v7//////////////////v7+//7+/v///////v7+//7+/v/+/v7///////// + ///+/v7/y+79/0XE+v9Cwvr/QsL6/0HC+f9Cw/r/QsL6/0HC+v9Cw/r/vOn9//7+/v/+/v7///////7+ + /v/+/v7//v7+/////////////v7+/////////////v7+//7+/v////////////b8/v9Mxvr/QsP6/0HD + +f9Cw/r/QcP5/0LC+v9Bw/n/QsP6/0HD+f9Cwvr/QcL6/0LC+f8xco2BAAAAAgAAAAIAAAAAAAAAACA/ + TDpCw/r/QsP5/0LD+f9Cw/r/QsP6/0LD+f9Cw/r/QsP5/0LD+f9Cw/r/QsP5/0LD+f/D7P3//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7///////7+/v/+/v7/5/f+/0PD + +v9Cw/r/QsP5/0LD+f9Cw/n/QsP6/0LD+v9gzPr//P7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7/8vr+/0bE+v9Cw/r/QsP5/0LD+f9Cw/n/QsP6/0LD + +f9Cw/n/oeH8//7+/v///////v7+//7+/v/+/v7///////7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/5/f7/QsP5/0LD+f9Cw/n/QsP6/0LD + +v9Bw/n/QsP5/0LD+v/K7v3///////7+/v/+/v7//v7+//7+/v/+/v7//v7+///////+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7/idn7/0LD+v9Cw/r/QsP5/0LD+f9Cw/r/QsP5/0LD+v+H2fv//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v//////w+z9/0LD + +f9Cw/n/QsP5/0LD+v9Cw/n/QsP6/0LD+f9Cw/r/QsP5/0LD+f9Cw/n/QsP6/yE/TDoAAAAAAAAAAAAA + AAAAAAAACQwOBknA8utCw/r/QcP5/0LD+f9Cw/n/QsP5/0LD+f9Bw/n/QcP5/0LD+v9Cw/n/QsP6/4LX + +/////////////////////////////////////////////////////////////////////////////// + ///D6/3/QsP5/0LD+f9Bw/n/QsP6/0LD+f9Cw/r/QcP5/5vf/P////////////////////////////// + ///////////////////////////////////////////////////y+v7/RsT6/0HD+f9Cw/n/QsP5/0LD + +v9Cw/r/QcP5/0LD+f+h4fz///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////n9/v9Cw/n/QsP6/0LD + +v9Cw/r/QcL5/0LD+f9Cw/r/QcP5/8ru/f////////////7+/v////////////////////////////// + ///////////////////////////////////G7f3/QsP6/0HD+f9Cw/n/QsP6/0LD+f9Cw/n/QsP6/2bO + +v////////////////////////////////////////////////////////////////////////////// + //+C1/v/QsP5/0LD+v9Cw/n/QsP5/0LD+f9Cw/r/QsP5/0LD+v9Cw/n/QsP5/0LD+v9JwPLrCQwOBgAA + AAAAAAAAAAAAAgAAAAAAAAACOoyvpUHC+v9Bwvn/QcL6/0HC+v9Bwvn/QsL6/0LC+v9Bwvr/QcL6/0HC + +v9Bwvr/SsX6//L6/v///////v7+//7+/v////////////7+/v////////////7+/v////////////// + /////////v7+/6/l/P9Cwvr/QsL6/0HC+v9Bwvr/QcL6/0HC+v9Cwvr/sub8///////+/v7//v7+//// + //////////////7+/v///////v7+//7+/v/+/v7///////7+/v////////////L6/v9GxPr/QsL6/0HC + +v9Cw/r/QcL5/0HC+v9Bwvr/QsP6/6Hh/P/+/v7///////7+/v/+/v7//v7+//////////////////// + /////////v7+//////////////////7+/v/+/v7//////////////////v7+///////+/v7/+f3+/0HD + +v9Bwvr/QcP6/0LC+v9Cwvr/QcL6/0HC+v9Cwvr/yu79///////+/v7///////////////////////7+ + /v///////v7+//7+/v/////////////////+/v7//////970/v9Bwvr/QsL6/0LC+v9Cwvr/QcL6/0LD + +v9Bwvr/Vcn6///////+/v7///////7+/v/+/v7//////////////////v7+/////////////v7+//// + ////////8vr+/0rF+v9Cw/r/QcL6/0LD+v9Bwvr/QcL6/0LC+v9Bwvr/QcL6/0HC+v9Bwvr/QsP6/zqM + r6UAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAtV2hSQsP6/0HD+v9Cw/r/QcP6/0LC+v9Cwvr/QsP6/0HC + +v9Cwvr/QcL5/0HC+v9Bwvr/sub8//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7/quT8/0LC+v9Bwvr/QcL6/0HD+v9Cw/r/QcL6/0HC+v+t5Pz//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7/8vr+/0bE + +v9Bwvr/QsP6/0LD+v9Bw/n/QcL6/0HC+f9Bw/r/oeH8//7+/v/+/v7///////7+/v/+/v7//v7+//7+ + /v/+/v7//v7+///////+/v7//v7+//7+/v///////v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/5/f7/QcP5/0LC+v9Bwvr/QcL6/0HC+v9Bw/r/QcL6/0HC+v/K7v3///////7+/v/+/v7///////7+ + /v/+/v7//v7+//7+/v///////v7+//7+/v/+/v7//v7+//7+/v/+/v7/2PL9/0HC+v9Bwvr/QcL6/0HD + +f9Bwvr/QcL6/0HC+v9UyPr//v7+//7+/v/+/v7//v7+//7+/v/+/v7///////7+/v/+/v7//v7+//// + ///+/v7//v7+//7+/v+y5vz/QcL6/0HC+v9Cwvr/QcL5/0HD+v9Bwvn/QcL6/0HD+v9Bwvr/QcP5/0LC + +v9Cw/r/LVdoUgAAAAIAAAAAAAAAAgAAAAIAAAAAAAAAAA8WGQxIwfXxQcP5/0LC+v9Bw/r/QsP5/0HD + +v9Bw/n/QsP6/0LD+v9Bw/n/QcL6/0HC+f9nzvr//f7+//7+/v////////////////////////////// + //////////////////////////////////+z5/3/QcP6/0HD+v9Bw/r/QcP6/0LD+v9Bw/n/QcP6/4jZ + +//+/v7///////////////////////////////////////7+/v/+/v7//v7+/////////////v7+//// + ///y+v7/RsT6/0LD+v9Bwvn/QsP6/0LD+f9Bwvn/QsP5/0LD+v+h4fz//////////////////v7+//// + //////////////////////////////////////////////////////////////////////////////// + /////////v7+//n9/v9Bw/n/QcP6/0HC+v9Bwvr/QcL6/0HD+v9Bwvr/QsP6/8ru/f////////////// + ///////////////////////////////////+/v7///////////////////////////+z5/3/QcP5/0HD + +v9Bwvr/QsP6/0LD+v9Bw/n/QcP6/2DM+v/////////////////+/v7//v7+//7+/v////////////7+ + /v////////////7+/v///////f7+/2fO+v9Cw/r/QcL5/0HD+f9Cw/n/QcP6/0HD+f9Bwvn/QcP5/0HD + +v9Bw/n/QsP6/0jB9fEPFhkMAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAkCStKNBw/n/QcP6/0HD + +v9Bw/n/QcP6/0HD+f9Bw/r/QsP6/0LD+f9Bw/r/QcP5/0LD+v/S8P3//v7+//7+/v////////////7+ + /v///////v7+///////+/v7//v7+///////+/v7//v7+/8nu/f9Bw/n/QcP6/0HD+f9Cw/r/QcL5/0HD + +f9Bw/r/S8X6/+v4/v/+/v7//v7+///////+/v7//v7+//7+/v///////v7+//7+/v///////v7+//7+ + /v/+/v7///////L6/v9GxPr/QcP6/0LD+v9Cw/r/QcP5/0LD+v9Bw/n/QcP6/6Hh/P/+/v7///////7+ + /v/+/v7//v7+//7+/v/+/v7//v7+///////+/v7//v7+//7+/v////////////7+/v/+/v7///////7+ + /v/+/v7//v7+///////+/v7/+f3+/0LD+v9Cw/r/QsP6/0HD+v9Cw/r/QcP6/0HD+v9Bw/r/yu79//// + ///+/v7//v7+/////////////v7+//7+/v///////v7+//7+/v/+/v7///////7+/v/+/v7/+/3+/2bO + +v9Bw/n/QcP6/0LD+v9Bw/r/QcP6/0HD+f9Cw/r/edT7//7+/v/+/v7///////7+/v/+/v7///////// + /////////v7+///////+/v7//v7+//7+/v/S8P3/QsP6/0HD+f9Bw/n/QcP6/0LD+v9Bw/r/QsP6/0LD + +v9Bw/n/QcP6/0LD+v9Bw/r/QJK0owAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAIAAAACKEtaRkLD + +v9Bwvr/QsL6/0HC+v9Bwvr/QsL6/0HD+v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/3/W+//+//////////// + ////////////////////////////////////////////////////////6/j+/0TD+v9Cwvr/QcL6/0LD + +v9Bwvr/QcL6/0HC+v9Bwvr/as/7/+35/v////////////////////////////////////////////// + ////////////////////////8vr+/0bE+v9Cwvr/QcL6/0HC+v9Bw/r/QsL6/0HC+v9Cw/r/oeH8//// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////5/f7/QcL6/0HC+v9Bwvr/QcL6/0LC+v9Bwvr/QsL6/0LC + +v/K7v3///////////////////////////////////////////////////////////////////////n9 + /v+J2fv/QsL6/0HC+v9Bwvr/QsL6/0LC+v9Bwvr/QcL6/0LC+v+i4fz///////////////////////// + /////////////////////////////////////////v///3/W+/9Cwvr/QcL6/0HC+v9Bwvr/QcL6/0LD + +v9Cwvr/QcL6/0HC+v9Cw/r/QsL6/0LD+v8oS1pGAAAAAgAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAAAA + AAAGCQoGSbrq4ULC+v9Bwvr/QcL6/0HC+v9Bwvr/QcP6/0HC+v9Bwvr/QcL6/0HD+v9Cw/r/RcT6/+H1 + /v////////////7+/v/////////////////+/v7//////////////////v7+///////+/v7/Z877/0HC + +v9Bwvr/QcP6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/Tsf6/5bd/P/I7f3/3/T+/+P2/v/j9v7/4/b+/+P2 + /v/j9v7/4/b+/+P2/v/j9v7/4/b+/+P2/v/Y8v7/RcT6/0HC+v9Bwvr/QsL6/0HC+v9Bwvr/QcL6/0HD + +v+h4fz//////////////////v7+//////////////////7+/v////////////////////////////// + /////////////////////////v7+//////////////////n9/v9Bw/r/QcL6/0HC+v9Bwvr/QcL6/0HC + +v9Bwvr/QcL6/7bo/f/j9v7/4/b+/+P2/v/j9v7/4/b+/+P2/v/j9v7/4/b+/+P2/v/j9v7/4fX+/8/v + /f+k4vz/W8v6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/QsP6/9rz/v////////////// + /////////v7+//////////////////7+/v/////////////////h9f7/RcT6/0HC+v9Bwvr/QcL6/0HC + +v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/Sbrq4QYJCgYAAAACAAAAAAAAAAIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAA2dpF+QsL6/0LC+v9Cwvn/QsL6/0LC+v9Cw/r/QsL6/0LC+f9Cw/r/QsL5/0LD + +v9Cwvr/iNn7//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v+u5fz/QsP6/0LC+v9Cw/r/QsL5/0LC+v9Cwvr/QsL6/0LD+v9Cw/r/QsP6/0LD+v9Cw/r/QsP6/0LC + +f9Cwvr/QsL6/0LC+v9Cw/n/QsP6/0LD+v9Cw/r/QsP6/0LC+v9Cwvr/QsL6/0LC+v9Cw/r/QsP6/0LD + +v9Cw/r/QsP6/6Hh/P/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+///////+/v7//v7+//7+ + /v/+/v7///////7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7/+f3+/0LD+v9Cwvr/QsP6/0LC + +v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LD+v9Cwvr/QsP5/0LC+v9Cw/r/QsP6/0LC+f9Cwvr/QsL6/0LD + +v9Cw/r/QsL6/0LD+v9Cwvr/QsL6/0LD+v9Cwvr/QsL6/0LC+v9Cw/r/QsL6/0LD+f9s0Pv//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+///////+/v7//v7+/4jZ+/9Cwvr/QsP6/0LC + +v9Cw/n/QsL6/0LD+v9Cw/r/QsL5/0LC+v9Cwvr/QsP6/0LD+v83dpGBAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAACAAAAAgAAAAIAAAACAAAAAhgnLR5Fwvf5QcP5/0LD+f9Bw/n/QcL5/0HD+v9Bw/r/QsP6/0HD + +f9Bw/n/QcP6/0LD+v9GxPr/4fX+//////////////////////////////////////////////////// + //////////////b8/v9Yyvr/QcL5/0HD+f9Bw/n/QcP5/0HD+f9Bwvr/QcP6/0HD+f9Bwvn/QcP5/0HD + +f9Bw/n/QcP5/0HD+v9Bw/n/QcP6/0HD+f9Bw/n/QcL5/0HD+f9Bw/r/QcP6/0HD+f9Bw/n/QcP6/0HD + +f9Bw/n/QcL5/0HC+f9Bw/n/oeH8//////////////////////////////////7+/v////////////// + ///////////////////////////////////////////////////////////////////5/f7/QcL5/0HD + +f9Bw/n/QcP5/0HC+f9Bw/r/QcP5/0HD+f9Bw/r/QcL5/0HD+f9Bw/n/QcL5/0HC+f9Bw/n/QcP5/0HD + +v9Bw/n/QcP5/0HC+f9Bwvr/QcP5/0HD+f9Bwvn/QcP6/0HD+f9Bw/n/QcP6/0HC+f9Bw/n/Q8P6/83v + /f/+/v7////////////////////////////+/v7////////////////////////////h9f7/RsT6/0HD + +v9Bwvn/QcP5/0HD+f9Bwvn/QcL5/0HD+f9Bw/n/QcP6/0HD+f9Bw/n/RcL3+RgnLR4AAAACAAAAAgAA + AAIAAAACAAAAAgAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAkSXuqdCw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f+C1/v//v7//////////////v7+///////+/v7//v7+//// + //////////////7+/v///////////8bs/f9Dw/r/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f+h4fz//v7+/////////////v7+//7+/v///////v7+//7+ + /v////////////7+/v/+/v7//////////////////v7+///////+/v7//v7+/////////////v7+//n9 + /v9Cw/n/QsP6/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/r/QsL5/0LD + +f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +f+R3Pz//v7+//7+/v/+/v7////////////+/v7//v7+//7+/v///////v7+///////+/v7//v7//4LX + +/9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+v9Cwvn/QsP5/0LD+f9Cw/n/QsP5/0LD+f9El7qnAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDtHNkPD+v9Cw/n/QsP5/0LD + +f9Cw/n/QsP6/0LD+f9Cw/n/QsP5/0LD+v9Cw/n/QsP5/0TD+v/U8f3//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+/6Ti/P9Cw/r/QsP5/0LD+f9Cw/n/QsP5/0LD + +f9Cw/n/QsL5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LC+f9Cw/n/QsP5/0LD + +f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LC+f9Cw/n/QsP5/6Hh/P/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7/+f3+/0LD+f9Cw/n/QsP5/0LD+f9Cwvn/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +f9Cw/n/QcP5/0LD+f9Cw/n/QsP5/0HD+f9Cw/n/QsP5/0LD+f9Cw/n/QsL5/0LD+f9Cw/n/QsP5/0LD + +f9Cw/n/fNX7//r9/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/U8f3/RMP6/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Bw/n/QsP5/0LD+f9Cw/n/Q8P6/yA7 + RzYAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQECS6nRvULC + +v9Cwvr/QsL6/0LD+v9Cwvr/QsP6/0LC+v9Cwvr/QsL6/0LD+v9Cwvr/QsL6/2zQ+//8/v7///////// + /////////////////////////////////////////////////////////v7+/6vk/P9GxPr/QsL6/0LC + +v9Cwvr/QsL6/0LC+v9Cwvr/QsP6/0LC+v9Cw/r/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cw/r/QsL6/0LC + +v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LD+v9Cwvr/QsL6/0LD+v9Cwvr/rOT8//7+/v////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////9/v7/UMf6/0LC+v9Cwvn/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC + +v9Cwvr/QsL6/0LC+f9Cwvr/QsL5/0LC+v9Cwvn/QsP6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC + +v9Cwvr/Q8P6/5Lc/P/6/f7///////////////////////////////////////////////////////// + /////////P7+/2zQ+/9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL5/0LC+v9Cwvn/QsL6/0LC + +f9LqdG9AQEBAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAACAAAAAgAA + AAAtT11CQsP6/0LD+v9Cwvr/QsP6/0LC+v9Cw/n/QsL6/0LD+f9Cw/r/QsP5/0LC+v9Cwvr/QsP6/7Xn + /f/+/v7//v7+///////+/v7//v7+//7+/v///////v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+/9by + /f9pz/v/QsP6/0LD+v9Cwvr/QsP6/0LC+f9Cwvn/QsP6/0LD+v9Cwvn/QsP6/0LC+f9Cwvr/QsP6/0LD + +f9Cwvr/QsP5/0LC+v9Cw/r/QsL5/0LC+v9Cw/r/QsP6/0LD+f9Cwvr/QsP5/0bE+v/l9v7//v7+//// + /////////v7+///////+/v7//v7+//7+/v////////////7+/v/+/v7//v7+///////+/v7//v7+//7+ + /v/+/v7//v7+//7+/v///////v7+//7+/v+c3/z/QsP6/0LD+v9Cw/r/QsL6/0LD+v9Cwvn/QsL6/0LD + +v9Cwvn/QsL5/0LD+f9Cwvr/QsP5/0LD+v9Cwvn/QsP6/0LD+f9Cw/r/QsP5/0LC+v9Cwvn/QsP6/0LD + +v9Cwvn/QsP6/2jP+//M7v3//v7+//7+/v/+/v7///////7+/v/+/v7//v7+///////+/v7//v7+//7+ + /v/+/v7//v7+//7+/v+15/3/QsP6/0LC+f9Cwvr/QsP6/0LC+f9Cwvn/QsP5/0LC+v9Cw/n/QsP6/0LC + +f9Cw/r/QsP6/y5PXUIAAAACAAAAAgAAAAAAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAgAA + AAAAAAACAAAAAgMEBAJNrdXBQsP6/0LD+f9Cw/r/QsP6/0LD+v9Cw/n/QsP5/0LD+f9Cw/n/QsP6/0LC + +v9Cw/n/UMf6/+35/v////////////////////////////////////////////7+/v////////////// + //////////////3+/v/J7f3/gNb7/0zG+v9Cw/r/QsL5/0LD+f9Cw/r/QsP6/0LD+f9Cw/r/QsL5/0LC + +v9Cw/r/QsP5/0LD+f9Cw/n/QsP6/0LD+f9Cw/r/QsL6/0LC+f9Cw/n/QsP5/0LC+f9HxPr/uOj9//7+ + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////r9/v+O2/z/RcP6/0LC+f9Cw/r/QsP5/0LD + +v9Cwvr/QsL5/0LD+v9Cwvr/QsP5/0LC+f9Cw/n/QsP6/0LD+f9Cw/r/QsP5/0LD+v9Cw/n/QsL6/0LD + +f9Dw/r/Xcv6/4/b/P/Q8P3//f7+//////////////////////////////////////////////////// + ////////////////////////7fn+/1DH+v9Cw/n/QsP6/0LC+v9Cwvn/QsP6/0LC+v9Cw/n/QsL5/0LD + +f9Cw/r/QsP5/0LD+v9NrdXBAwQEAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAACxJVj5Dw/r/QsP5/0LD+f9Cw/n/QsP5/0LD+v9Bw/n/QsP6/0LD + +f9Cw/r/QsP6/0LD+f9Cw/n/gdf7//7+/v////////////////////////////7+/v/+/v7///////// + /////////v7+/////////////v7+////////////+f3+/6zl/P9Bw/r/QsP5/0LD+f9Cw/r/QsP5/2LN + +v+m4/z/puP8/6bj/P+m4/z/Xcv6/0HD+f9Cw/r/QsP6/0LD+v9Cw/r/i9r7/6bj/P+m4/z/r+X8/+X3 + /v///////////////////////v7+///////////////////////+/v7////////////+/v7///////// + //////////////7+/v////////////7+/v///////////////////////v7+///////r+P7/0fD9/9Dw + /f/Q8P3/XMv6/0LD+v9Cw/n/QsP5/0LD+v9Cw/n/tuj9/9Dw/f/Q8P3/0PD9/7Hm/f9Cw/n/QsP6/0LD + +f9Cw/r/QcP5/2rP+//+/v////////7+/v///////////////////////////////////////v7+//// + ///////////////////+/v7///////7+/v+B1/v/QsP6/0LD+v9Cw/r/QsP6/0LD+f9Cw/n/QsP6/0LD + +f9Cw/r/QsP5/0LD+v9Cw/n/Q8P6/yxJVj4AAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAkSdw7NCwvn/QsL6/0HC+v9Bwvn/QsL5/0LC + +v9Cwvr/QsL5/0LC+v9Cwvr/QsL6/0LC+v9Cw/r/ver9///////+/v7//v7+///////+/v7///////7+ + /v/+/v7////////////+/v7////////////+/v7//v7+///////+/v7/w+z9/0LC+v9Cwvr/QsL6/0HC + +v9Cwvr/ftb7//7+/v/+/v7//v7+//7+/v910/v/QsL6/0LC+v9Cwvr/QsL6/0LC+v/M7/3///////7+ + /v////////////7+/v/+/v7///////7+/v///////v7+//7+/v/+/v7///////7+/v////////////7+ + /v/+/v7////////////////////////////+/v7//v7+//7+/v///////v7+//7+/v/+/v7///////// + ///+/v7//v7+//////9lzvr/QsL6/0LC+v9Cwvr/QcL6/0LC+v/c9P7/////////////////1vL9/0LC + +v9Cwvr/QsL6/0LC+v9Cwvr/a9D7//7+/v///////v7+//7+/v////////////7+/v////////////7+ + /v/+/v7//v7+///////+/v7//v7+//7+/v//////ver9/0LD+v9Bwvr/QsL6/0LC+v9Cwvr/QsL6/0LC + +v9Bwvr/QsL6/0LC+v9Cwvn/QsL6/0LC+f9EncOzAQEBAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAJDhAKkbE+vtCw/r/QsP6/0LD + +v9Cwvr/QsL6/0LC+v9Cw/r/QsL6/0LC+v9Cwvr/QsP6/0LD+v9Px/r/6Pf+///////+/v7///////// + ///////////////////////////////////////////////////+/v7////////////D7P3/QsP6/0LC + +v9Cwvr/QsL6/0HC+f9+1vv//////////////////////3XT+/9Cwvr/QsL6/0LC+v9Cwvr/QcL6/8zv + /f////////////////////////////////////////////////////////////////////////////// + //////////////7+/v/////////////////////////////////+/v7///////////////////////// + /////////////////////////////2XO+v9Bwvr/QsL6/0LD+v9Cwvr/QcL6/9z0/v////////////// + ///W8v3/QsP6/0LD+v9Bw/n/QsL6/0LC+v9r0Pv//////////////////v7+//////////////////// + //////////////7+/v///////////////////////////+j3/v9Px/r/QsL6/0HC+v9Cwvr/QsL6/0HC + +v9Cwvr/QsP6/0LC+v9Bwvr/QsL6/0LC+f9Bwvr/RsT6+yQ4QCoAAAAAAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACPYOhj0LD + +v9Cwvr/QsP5/0LC+v9Bwvn/QsP6/0LD+f9Cwvr/QsL6/0LC+f9Bw/r/QsP5/0LC+v9t0Pv/+/3+//7+ + /v////////////7+/v///////v7+///////+/v7//v7+//7+/v///////v7+//7+/v///////////8Ps + /f9Cwvr/QsP5/0LD+f9Cw/r/QsP5/3/W+//+/v7///////7+/v//////ddP7/0HD+f9Cw/r/QcL5/0LC + +v9Bwvr/zO/9///////+/v7//v7+///////+/v7//v7+/////////////v7+///////+/v7///////7+ + /v/+/v7////////////+/v7//v7+//7+/v///////v7+//7+/v///////v7+//7+/v////////////7+ + /v///////v7+///////+/v7//v7+////////////Z876/0HC+v9Cwvn/QcP6/0LC+v9Cw/n/3fT+//7+ + /v/+/v7//////9jy/f9Cwvn/QsP6/0LD+f9Cwvr/QsP5/23Q+/////////////7+/v/+/v7//v7+//// + ///+/v7////////////+/v7//v7+/////////////v7+///////7/f7/bdD7/0LD+f9Bwvr/QsL5/0HC + +f9Cwvr/QcL6/0LC+f9Bw/r/QsL6/0LD+f9Cwvr/QsP5/0LD+v89g6GPAAAAAgAAAAAAAAACAAAAAAAA + AAIAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAA + AAAXHiEQS73u50HD+f9Cw/n/QcP5/0LD+f9Bw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsL6/0LD + +v+V3fz//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7/2/P+/0LD+v9Cwvn/QsP5/0LD+f9Bw/n/mN78//7+/v/+/v7//v7+//////+P2/z/QsL5/0LD + +v9Bw/n/QsP6/0PD+v/j9v7///////7+/v/+/v7///////7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v///////v7+//7+/v/+/v7//v7+///////+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v+O2/z/QsP6/0HD+f9Cw/n/QcP6/07H + +v/3/P7//v7+//7+/v/+/v7/8/v+/0zG+v9Cw/n/QcP5/0HC+f9Cw/n/lN38//7+/v/+/v7//v7+//7+ + /v/+/v7///////7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+/5Xd/P9Cw/r/QsP5/0LD + +v9Cw/r/QcP5/0LD+v9Cw/r/QcP5/0LD+f9Bw/r/QsP5/0HC+f9Cw/n/S77u5xceIRAAAAAAAAAAAAAA + AAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAI1X3FWQsP5/0HD+f9Cw/n/QcP5/0HD+f9Cw/n/QcP5/0LD+f9Cw/n/QsP5/0LD + +f9Bw/n/QsP6/0LD+v+76f3///////////////////////////////////////////////////////// + ///////////////////+/v7/g9f7/0HD+f9Cw/n/QsP5/1TI+v/p+P7//////////////////////+T2 + /v9Qx/r/QsP5/0HD+f9Cw/n/jNr7//7+/v////////////7+/v////////////////////////////// + ///////////////////////////////////////////////////+/v7///////////////////////// + /////////////////////////////////////////////////////////////+z5/v9fzPr/QcL5/0HD + +f9HxPr/ver9////////////////////////////uOj9/0bE+v9Cw/n/QcP5/2LN+v/v+f7///////// + //////////////7+/v////////////////////////////////////////////////+76f3/QsP6/0HD + +f9Cw/n/QsP5/0LD+v9Bw/n/QsP5/0LD+f9Bwvn/QcP5/0LD+f9Bw/n/QcP5/0LD+f81X3FWAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAgAA + AAIAAAAAAAAAAgAAAAIAAAACAAAAAgECAgJNpMmzQcL6/0HC+v9Cwvr/QcL6/0HC+v9Cwvr/QsL6/0LC + +v9Bw/r/QsP6/0HC+v9Cwvr/QsL6/0jF+v/U8f3////////////+/v7//v7+///////+/v7//v7+//7+ + /v///////v7+//7+/v///////v7+///////6/f7/sOb8/4HX+/+W3fz/6fj+///////+/v7//v7+//7+ + /v///////v7+/+X2/v+U3fz/gdf7/7Tn/f/8/v7////////////+/v7//v7+///////+/v7//v7+//// + /////////v7+//7+/v/+/v7///////7+/v/+/v7////////////+/v7//v7+/////////////v7+//7+ + /v///////v7+//7+/v////////////7+/v///////v7+///////+/v7//v7+/////////////v7+//b8 + /v+76f3/ruX8/+L2/v/+/v7///////7+/v/+/v7////////////+/v7/4fX+/67l/P+96v3/9/z+//7+ + /v////////////7+/v/+/v7////////////+/v7//v7+///////+/v7//v7+////////////1PH9/0jF + +v9Bwvr/QsL6/0LC+v9Bwvr/QcL6/0LC+v9Cwvr/QsL6/0LC+v9Bwvr/QcL6/0LC+v9Cwvr/TaTJswEC + AgIAAAAAAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAgAA + AAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAhckKhxMw/XvQcL6/0HC+v9Cw/r/QcL6/0LC + +v9Bwvr/QsL6/0HD+v9Cw/r/QcL6/0HC+v9Bw/r/QcP6/1LI+v/j9v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+/+P2 + /v9SyPr/QcP6/0HC+f9Bwvr/QcL6/0HC+v9Bwvr/QsP6/0HC+v9Bwvr/QsP6/0HD+v9Bwvr/QcL6/0zD + 9e8XJCocAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRfcVpCw/r/QcL6/0HD + +v9Bwvn/QsL6/0LC+v9Bwvn/QcP6/0HD+f9Bw/r/QcL5/0LD+v9Bw/r/QsP5/1zL+v/r+P7///////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////+/v7///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////7+/v/////////////////+/v7///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///r+P7/XMv6/0HC+f9Bw/r/QsP5/0HD+v9Bw/n/QcP6/0HC+v9Bw/r/QcL6/0HC+v9Bwvr/QcL6/0HD + +v9Cw/r/NV9xWgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAgIDAkaW + t6NBw/n/QcP5/0HD+f9Bw/n/QcP5/0HD+f9Bw/r/QcP5/0HD+v9Cw/n/QsP5/0HD+v9Bw/n/QcP6/2PN + +v/u+f7///////7+/v/+/v7//v7+///////+/v7//v7+//7+/v/+/v7///////7+/v////////////7+ + /v/+/v7//v7+//7+/v/+/v7//v7+///////+/v7//v7+//7+/v/+/v7///////7+/v/+/v7///////7+ + /v/+/v7////////////+/v7//v7+//7+/v/+/v7//v7+//7+/v////////////7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+/////////////v7+//7+/v/+/v7//v7+//7+/v////////////// + ///+/v7//////////////////v7+//7+/v////////////7+/v/+/v7///////7+/v/+/v7//v7+//7+ + /v/+/v7///////7+/v///////v7+//7+/v///////v7+//7+/v/+/v7//v7+///////+/v7//v7+//// + ///+/v7/7vn+/2PN+v9Bw/n/QcP5/0HD+v9Cw/n/QsP6/0HD+f9Bw/r/QcP6/0HD+v9Bw/r/QcP6/0HD + +v9Bw/r/QcP6/0aWt6MCAgMCAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAA + AAAAAAACEBcaDkq04tlBw/r/QcP5/0HD+f9Bw/n/QcP5/0HD+f9Bw/n/QcP5/0HD+f9Bw/n/QcP5/0HD + +f9Bw/n/QcP5/2bO+v/u+f7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////+75/v9mzvr/QcP5/0HD+f9Bw/n/QcP5/0LD+f9Bw/n/QcP5/0HD+f9Bw/n/QcP5/0HD + +v9Bw/n/QcP5/0HD+v9KtOLZEBcaDgAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAA + AAAAAAACAAAAAAAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAA + AAAAAAAAAAAAAAAAAAIAAAAAIzlCMEfB9fVBw/r/QcL6/0HC+v9Bwvn/QcL6/0HD+v9Bwvr/QsL6/0HC + +v9Bwvr/QcL5/0HC+v9Bw/n/QcL6/2PN+v/r+P7///////////////////////7+/v////////////7+ + /v///////v7+//////////////////////////////////////////////////////////////////// + ///+/v7//v7+/////////////v7+///////////////////////+/v7////////////+/v7//v7+//// + /////////v7+/////////////v7+///////////////////////+/v7///////////////////////// + /////////v7+//////////////////7+/v////////////7+/v/+/v7///////////////////////// + //////////////7+/v////////////7+/v////////////7+/v/+/v7////////////+/v7///////// + ///////////////////r+P7/Y836/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/QcP6/0HD+v9Bwvr/QcL6/0HC + +v9Bwvr/QcL6/0HC+v9Bwvr/R8H19SM5QjAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAA + AAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACOWR3XEPD+f9Cwvr/QsL6/0LC+f9Cw/r/QsP6/0LC + +v9Cwvr/QsL5/0LC+v9Cw/r/QsL6/0LD+v9Cw/r/QsL5/1zL+v/j9v7///////7+/v///////v7+//7+ + /v/+/v7//v7+//7+/v/////////////////+/v7///////7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v////////////7+/v/+/v7//v7+///////+/v7//v7+///////+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7////////////+/v7//v7+//7+/v///////v7+//////////////////7+ + /v///////v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v///////v7+//7+/v/+/v7///////// + ///+/v7//v7+///////+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7///////7+ + /v/+/v7//v7+///////+/v7/4/b+/1zL+v9Cw/r/QsP6/0LD+v9Cwvr/QsL5/0LD+v9Cw/n/QsL6/0LD + +v9Cwvn/QsL6/0LC+v9Cwvr/QsL6/0PD+f85ZHdcAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAA + AAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAgAA + AAAAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAIAAAACQoShiULD+v9Bwvn/QcP5/0HD + +v9Bw/n/QcL6/0HD+v9Bw/n/QcP6/0LD+f9Bw/r/QsP5/0HD+v9Bw/n/QsP6/1LI+v/U8f3//v7+//// + /////////v7+//////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////+/v7//////////////////v7+//// + ///////////////////////////////////////////////////+/v7///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////v7+//7+/v/+/v7///////////////////////////////////////// + //////////////7+/v///////////9Tx/f9SyPr/QcL6/0HD+f9Bw/n/QcP5/0HD+v9Bw/n/QcP6/0HD + +f9Bwvr/QcP5/0HD+v9Bw/r/QcP6/0HD+v9Cw/r/QoShiQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAgAA + AAIAAAACAAAAAAAAAAIAAAACAAAAAAAAAAIAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAMDQ4ESJ3CrULD + +v9Cw/n/QsP6/0LD+f9Cw/n/QsP6/0LD+v9Cw/r/QsP5/0LC+v9Cw/n/QsP6/0LD+f9Cw/r/QsP6/0jF + +v+76f3//v7+//7+/v/+/v7////////////+/v7//v7+/////////////v7+//7+/v///////v7+//// + ///+/v7///////7+/v/+/v7//////////////////v7+/////////////v7+//////////////////// + ///+/v7//////////////////v7+///////+/v7//v7+/////////////v7+//7+/v////////////7+ + /v/+/v7////////////+/v7//v7+///////+/v7//////////////////v7+//////////////////// + ///+/v7////////////+/v7//////////////////v7+//7+/v////////////7+/v/+/v7///////// + ///////////////////+/v7//v7+//7+/v+76f3/SMX6/0LD+f9Cw/r/QsP5/0LD+v9Cw/n/QsL6/0LD + +f9Cw/r/QsP5/0LD+v9Cw/r/QsP6/0LD+v9Cw/r/QsP5/0idwq0MDQ4EAAAAAgAAAAIAAAAAAAAAAgAA + AAAAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAACAAAAAgAAAAIAAAACAAAAAAAA + AAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAA + AAALDxEMULHbx0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL5/0LC + +v9Cwvr/QsL6/0LD+v+V3fz/+/3+//7+/v///////v7+//7+/v/+/v7///////7+/v/+/v7//v7+//// + ///+/v7//v7+//7+/v///////v7+//7+/v////////////7+/v/+/v7////////////+/v7//v7+//7+ + /v/+/v7//v7+//7+/v///////v7+//7+/v/+/v7///////7+/v/+/v7////////////+/v7//v7+//// + /////////v7+//7+/v///////v7+//7+/v/+/v7///////7+/v/+/v7//v7+///////+/v7//v7+//// + /////////v7+//7+/v////////////7+/v/+/v7//v7+//7+/v/+/v7//v7+///////+/v7///////7+ + /v///////v7+//7+/v////////////7+/v/7/f7/ld38/0LD+v9Cwvr/QsL5/0LC+v9Cwvn/QsL6/0LC + +v9Cwvr/QsL6/0LC+v9Cwvn/QsL6/0LC+v9Cwvr/QsL6/0LC+v9QsdvHCw8RDAAAAAAAAAAAAAAAAgAA + AAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAARGx8URK3a1ULD+v9Cw/r/QsL6/0LC+v9Cwvr/QsP6/0LC+f9Cw/r/QsL6/0LD + +v9Cwvr/QsL6/0LC+v9Cw/r/QsP6/0LD+v9t0Pv/6Pf+//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////6Pf+/23Q+/9Cw/r/QsL6/0LC+v9Cw/r/QsL6/0LC + +v9Cw/r/QsL6/0LD+v9Cwvr/QsP6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/RK3a1REbHxQAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAgAAAAAAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIfKzAcUb7s3ULC+f9Cw/r/QsL6/0LC+v9Cw/n/QsL5/0LD + +v9Cwvn/QsP6/0LD+f9Cwvr/QsL6/0LC+f9Cw/r/QsL5/0LC+v9Px/r/ver9//7+/v/+/v7//v7+//// + ///+/v7//v7+//7+/v///////v7+///////+/v7///////7+/v/+/v7////////////+/v7//v7+//// + /////////v7+//7+/v///////v7+//7+/v/+/v7///////7+/v///////v7+///////+/v7//v7+//// + ///+/v7//v7+//7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7//v7+///////+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7///////7+/v/+/v7///////7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v///////v7+//7+/v/+/v7////////////+/v7//v7+/73q/f9Px/r/QsL6/0LC+v9Cwvn/QsL6/0LD + +v9Cwvr/QsP5/0LD+v9Cw/n/QsP6/0LD+f9Cw/r/QsP5/0LC+v9Cw/r/QsL6/1G+7N0fKzAeAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAgAAAAIAAAAAAAAAAAAA + AAAAAAACAAAAAAAAAAAAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAAiMTggTrzs30LD+v9Cw/r/QsL5/0LD + +v9Cw/n/QsL6/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsL5/0LD+f9Cwvn/QsP6/0LC+v9Cw/r/gdf7/+35 + /v////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////+35/v+B1/v/QsP6/0LD+v9Cwvr/QsL5/0LD + +v9Cw/n/QsP5/0LC+f9Cw/n/QsP6/0LD+v9Cwvr/QsP5/0LD+v9Cw/n/QsP5/0LD+f9OvOzfIjE4IAAA + AAIAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAA + AAIAAAAAAAAAAgAAAAAAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjMjgiUr7s3ULC + +f9Cw/n/QsP6/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0LD + +f9Cw/n/UMf6/7Xn/f/8/v7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////z+/v+15/3/UMf6/0LD+f9Cw/n/QsP5/0LD + +f9Cw/n/QsP5/0LD+f9Bw/n/QsP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP6/0LD+f9Cw/n/Ur7s3SMy + OCIAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAfKzAeRK3a1ULC+v9Cwvr/QsL6/0LC+v9Cwvr/QsP6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC + +v9Cwvr/QsL6/0LC+v9Cwvr/QsP6/2zQ+//U8f3//v7+///////+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+///////+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v///////v7+//// + ///+/v7//v7+//7+/v/+/v7//v7+//7+/v///////v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7///////7+/v/+/v7//v7+//7+/v///////v7+//7+/v/+/v7///////7+/v/+/v7//v7+//7+ + /v/+/v7//v7+///////+/v7//v7+///////+/v7///////7+/v/U8f3/bND7/0LD+v9Cwvr/QsL6/0LC + +v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0Wt + 2tUmMjceAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAACAAAAAAAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIRGx8UULHax0LD+v9Bwvn/QsL6/0LC+f9Cw/r/QsL6/0LC+v9Cwvr/QsL6/0LC + +v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LD+v9Cwvr/QsL6/0TD+v+C1/v/4fX+//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////h9f7/gtf7/0TD+v9Cwvr/QsP6/0LC + +v9Cwvr/QsP6/0LC+v9Cwvr/QsL6/0LD+v9Cwvr/QsP6/0LC+v9Cwvn/QsP6/0LC+v9Cwvr/QsL5/0LD + +v9QsdvHERsfFAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAgAA + AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAA + AAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAILDxEMSJ3Cr0LD+v9Cwvr/QsP5/0LD+v9Cw/r/QsL6/0LD + +v9Cw/n/QsP6/0LC+v9Cwvr/QsL6/0LC+v9Cw/r/QsP6/0LD+v9Cw/n/QsP6/0LD+v9GxPr/iNn7/+H1 + /v/+/////v7+/////////////v7+/////////////v7+//7+/v////////////7+/v////////////// + ///////////////////+/v7///////7+/v////////////7+/v////////////7+/v/+/v7///////// + ///+/v7///////////////////////7+/v///////v7+//7+/v/+/v7////////////+/v7///////// + ///+/v7//v7+/////////////v7+//////////////////7////h9f7/iNn7/0bE+v9Cw/r/QsP6/0LC + +v9Cw/r/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsP6/0LC+v9Cw/r/QsL6/0LD+f9Cw/r/QsP5/0LC + +v9Cw/r/SJ3CrwsPEQwAAAACAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDQ4EQoShi0PD+f9Cw/n/QcP6/0HD + +f9Cw/n/QsP6/0LD+f9Cw/n/QcP5/0LD+f9Cw/r/QcP5/0LD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP6/0HD + +f9Cw/r/RcT6/3/W+//S8P3//f7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+///////+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+/////////////v7+//7+ + /v/+/v7//v7+//7+/v/+/v7///////7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v///////v7+//7+ + /v/+/v7//v7+//7+/v/+/v7///////7+/v/+/v7//v7+//3+/v/S8P3/f9b7/0XE+v9Cw/r/QsP5/0LD + +v9Bw/n/QsP6/0LD+f9Cw/r/QsP5/0LD+f9Cw/n/QsP6/0LD+f9Cw/n/QsP5/0HD+f9Cw/r/QcP5/0LD + +v9Bw/n/Q8P5/0KEoYsMDQ4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAACAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACOGR3XEfB + 9fVCw/r/QcP5/0LD+f9Bw/n/QcP5/0LD+f9Cw/n/QcP5/0HD+f9Cw/n/QcP5/0HD+f9Bw/n/QcP5/0LD + +v9Cw/r/QcP5/0LD+v9Cw/n/QcP5/0LD+v9nzvr/sub8//L6/v////////////////////////////// + //////////////////////////////////////////////7+/v////////////////////////////// + //////////////////////////////7+/v////////////////////////////////////////////// + //////////////////////////////////////////////L6/v+y5vz/Z876/0LD+f9Bw/r/QsP5/0LD + +v9Bw/n/QcP6/0HD+f9Bw/n/QsP5/0LD+f9Cw/r/QsP5/0HD+f9Bw/n/QcP6/0LD+v9Cw/r/QsP5/0HD + +f9Bw/n/QcP6/0fB9fU5ZHdcAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAgAA + AAAAAAACIzlCLkq04tlBwvn/QsL6/0HC+v9Cwvr/QcL6/0LD+v9Bwvr/QcL6/0LC+v9Bwvr/QsL6/0LC + +v9Cwvr/QcL6/0HC+v9Cw/r/QcL6/0LC+v9Cwvr/QcL6/0HC+v9Bwvr/SsX6/4LX+//D7P3/9vz+//7+ + /v/+/v7//v7+//7+/v/+/v7//////////////////v7+/////////////v7+//7+/v///////v7+//7+ + /v////////////7+/v/+/v7////////////+/v7////////////+/v7//v7+//////////////////// + /////////v7+//7+/v//////////////////////9vz+/8Ps/f+C1/v/SsX6/0HC+v9Bwvr/QsP6/0HC + +v9Bwvn/QcL6/0LC+v9Bwvr/QcL6/0LC+v9Bwvr/QsL6/0LC+v9Cwvr/QcL6/0HC+v9Cwvr/QcL6/0HC + +v9Bwvr/QcL6/0HC+f9KtOLZIzlCMAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAACAAAAAAAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAAAAAAIAAAAAAAAAAgAA + AAAAAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAACAAAAAgAAAAAAAAACAAAAAgAAAAIAAAAAAAAAAgAA + AAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAA + AAAAAAACAAAAAAAAAAIAAAAAEBcaDkaWt6NCw/r/QcL6/0HC+f9Cw/r/QcP6/0HC+v9Bwvr/QcL5/0LD + +v9Cwvn/QcL6/0HC+v9Bw/r/QsP6/0LC+v9Cwvr/QsL5/0HD+v9Bw/r/QcP6/0HC+v9Bwvr/QsP6/0HC + +v9Mxvr/ftb7/7Xn/f/o9/7//v7+//7+/v/+/v7//v7+//7+/v/+/v7///////7+/v/+/v7//v7+//7+ + /v/+/v7//v7+///////+/v7//v7+//7+/v/+/v7///////7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/o9/7/tef9/37W+/9Mxvr/QcL6/0HD+v9Bwvr/QsP6/0LC + +v9Cwvn/QsP6/0LC+v9Cwvr/QsL6/0LC+v9Cw/n/QcL6/0LD+v9Cwvr/QcL6/0HC+v9Bwvr/QcL6/0HC + +v9Bw/r/QcL6/0LD+v9Cw/r/R5a3oxEXGg4AAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAA + AAAAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAA + AAAAAAACAAAAAAAAAAAAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAA + AAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAA + AAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAgIDAjRfcVpMw/XtQcP5/0LD+v9Bw/r/QcP6/0HD + +v9Bwvn/QcP6/0HD+f9Cw/r/QsP6/0LD+v9Bw/r/QsP6/0HC+v9Bw/n/QcP6/0HC+v9Bw/r/QcL6/0HD + +f9Cw/r/QcP6/0LC+v9Bwvr/QcL5/0LD+v9cy/r/idn7/7Pm/f/Z8/7/+f3+//7+/v////////////// + ///+/v7///////7+/v////////////////////////////////////////////////////////////// + //////////////7+/v/5/f7/2fP+/7Pm/f+J2fv/XMv6/0LD+v9Bw/r/QsL6/0HC+v9Bwvn/QcP6/0LC + +v9Bw/n/QcP6/0LD+f9Bw/r/QsP5/0HC+f9Bw/n/QcL5/0HD+f9Cw/r/QcP6/0HC+f9Cwvr/QcP6/0HD + +v9Bw/r/QsL6/0HD+v9Bw/r/TMP17TRfcVoCAgMCAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAA + AAAAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAA + AAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAgAA + AAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAhckKhxNpMmzQsP6/0HC + +f9Bw/r/QsP6/0HC+v9Cw/r/QsP5/0LD+v9Cw/n/QsP6/0HD+f9Bw/n/QsP6/0HD+f9Bw/r/QsP6/0HD + +f9Cw/r/QcP6/0LD+v9Cw/r/QcP6/0LD+v9Bw/r/QsP6/0HD+f9Bw/r/QcP5/0HD+v9GxPr/YMz6/37W + +/+Y3vz/sOX8/8Ts/f/V8f3/5Pb+/+/6/v/3/P7//f7+//7+/v/+/v7//f7+//f8/v/v+v7/5Pb+/9Xx + /f/E7P3/sOX8/5je/P9+1vv/YMz6/0bE+v9Cw/n/QcP6/0HD+f9Cw/r/QsP6/0LD+v9Bw/r/QsP6/0HD + +v9Cw/r/QcP6/0HD+f9Bw/r/QcP5/0LD+v9Bw/n/QsP6/0LD+v9Bw/r/QsP5/0LD+v9Cw/r/QcP6/0LD + +v9Bw/r/QcP6/0LD+v9Bw/r/QsP6/02kybMXJCocAAAAAgAAAAAAAAACAAAAAgAAAAIAAAAAAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAgAA + AAIAAAACAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAgAA + AAIAAAACAAAAAAAAAAIAAAACAAAAAgAAAAAAAAACAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAA + AAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAAEC + AgI1X3FWS73u50HD+f9Bw/n/QcP5/0HD+f9Bw/n/QcP5/0HD+f9Bw/n/QcP5/0HD+f9Bw/n/QcP5/0HD + +f9Bw/n/QsP5/0HD+f9Bw/n/QcP5/0HD+f9Cw/n/QsP5/0HD+f9Bw/n/QcP5/0HD+f9Cw/n/QcP5/0HD + +f9Bw/n/QcP5/0HD+f9Bw/n/QcP5/0HD+f9Cw/r/QsP6/0PD+v9Dw/r/RMP6/0TD+v9Dw/r/Q8P6/0LD + +v9Cw/r/QcP5/0HD+f9Bw/n/QcP5/0HD+f9Bw/n/QcP5/0HD+f9Bw/n/QsP5/0HD+f9Bw/n/QcP5/0LD + +f9Cw/n/QcP5/0HD+f9Bw/n/QcP5/0HD+f9Bw/n/QcP5/0HD+f9Bw/n/QcP5/0HD+f9Cw/n/QcP5/0LD + +f9Bw/n/QcP5/0HD+f9Bw/n/QcP5/0u97uc1X3FWAQICAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAA + AAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAAAAAAIAAAACAAAAAAAAAAIAAAACAAAAAgAA + AAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAAAA + AAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAA + AAIAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAA + AAAAAAAAAAAAAgAAAAAPFxoQPYOhj0bE+vtBwvr/QcP6/0HC+v9Bwvr/QcL6/0HD+v9Bwvr/QcL5/0HC + +v9Bwvr/QcL6/0HD+v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC + +v9Bw/r/QcL6/0HC+f9Bwvr/QcL6/0HC+v9Bw/r/QcL6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC + +v9Bwvr/QcL6/0HC+v9Bwvr/QcP6/0HC+v9Bwvn/QcL6/0HC+v9Bw/r/QcP6/0HC+v9Bwvr/QcL6/0HC + +v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0HD+v9Bw/r/QcL5/0HC+v9Bwvr/QcL6/0HC + +v9Bwvr/QcL6/0HC+v9Bwvr/QcL6/0bE+vs9g6GPFx4hEAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAA + AAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAA + AAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHTE5KkSdw7NDw/r/QcP6/0HD+v9Bw/n/QcP6/0HD + +v9Bw/n/QcP6/0HD+v9Bw/r/QcP5/0HD+v9Bw/r/QcP6/0HD+v9Bw/r/QcP6/0HD+v9Bw/r/QcP6/0HD + +v9Bw/r/QcP6/0HD+v9Bw/r/QcP5/0HD+v9Bw/n/QcP6/0HD+v9Bw/n/QcP6/0HD+v9Cw/r/QcP6/0HD + +v9Bw/r/QcP6/0HD+v9Bw/r/QcP6/0HD+f9Bw/r/QcP6/0HD+f9Bw/r/QcP6/0HD+v9Bw/r/QcP6/0HD + +v9Bw/r/QcP6/0HD+v9Bw/r/QcP6/0HD+v9Bw/n/QcP6/0HD+v9Bw/r/QcP6/0HD+v9Bw/n/QcP6/0HD + +f9Bw/r/QcP5/0LD+v9Bw/r/QcP6/0PD+v9EncOzJDhAKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAQEBAixJVj5NrNXBQsP6/0LC + +f9Cw/n/QsL5/0LC+f9Cwvr/QsL5/0LC+f9Cw/n/QsL5/0LC+f9Cwvn/QsL6/0LC+f9Cwvr/QsL6/0LC + +f9Cwvn/QsL5/0LC+v9Cwvn/QsP5/0LC+f9Cwvn/QsL6/0LC+f9Cwvn/QsP5/0LC+f9Cwvr/QsL6/0LC + +v9Cwvr/QsL5/0LC+f9Cwvr/QsL6/0LC+f9Cwvn/QsL5/0LD+f9Cwvn/QsL5/0LC+v9Cwvn/QsL6/0LC + +f9Cwvr/QsL6/0LC+f9Cwvn/QsL5/0LC+v9Cwvr/QsL5/0LC+f9Cwvn/QsP5/0LC+v9Cwvn/QsL6/0LC + +f9Cwvr/QsL5/0LC+v9Cwvn/QsL6/0LD+v9NrdXBLElWPgEBAQIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAACAAAAAAAA + AAIAAAACAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAgAA + AAIAAAAAAAAAAgAAAAAAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgME + BAItT11CS6nRvUPD+v9Cwvn/QsL5/0LC+f9Cwvn/QsL5/0LC+f9Cwvn/QsL5/0LC+f9Cwvn/QsL5/0LC + +f9Cwvn/QsL5/0LD+f9Cwvn/QsL5/0LC+f9Cw/n/QsL5/0LC+f9Cwvn/QsL5/0LC+f9Cw/n/QsL5/0LC + +f9Cwvn/QsL5/0LC+f9Cwvn/QsL5/0LC+f9Cw/n/QsL5/0LC+f9Cwvn/QsP5/0LC+f9Cwvn/QsL5/0LC + +f9Cw/n/QsL5/0LC+f9Cw/n/QsL5/0LC+f9Cwvn/QsL5/0LC+f9Cwvn/QsL5/0LC+f9Cw/n/QsL5/0LC + +f9Cw/n/QsL5/0LC+f9Cwvn/QsP5/0PD+v9LqdG9LU9dQgMEBAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAAAAAAIAAAACAAAAAgAAAAAAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAAAA + AAIAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAA + AAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAA + AAAAAAAAAAAAAgAAAAABAQECIDtHNkSXuqdFwvf5QsL6/0LC+v9Cwvr/QsP6/0LC+v9Cwvr/QsL6/0LC + +v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LD+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC + +v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC + +v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC + +v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0XC9/lEl7qnIDtHNgEBAQIAAAACAAAAAAAAAAIAAAAAAAAAAAAA + AAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA + AAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgnLR42dpF+Sbnp4ULD+v9Cwvr/QsL5/0LC + +v9Cwvn/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LD+v9Cwvr/QsL6/0LC + +f9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC + +v9Cwvr/QsL5/0LC+v9Cwvn/QsP6/0LC+f9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC+v9Cwvr/QsL6/0LC + +v9Cwvr/QsL6/0LC+v9Cwvn/QsP6/0m56eE2dpF+GCctHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAACAAAAAAAA + AAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAgAAAAIGCQoGKEtaRkCR + tKNIwfXxQsP5/0HC+f9Bwvn/QcL5/0HC+f9Bwvn/QcL5/0HC+f9Bwvn/QcL5/0HC+f9Bwvn/QcL5/0HC + +f9Bwvn/QcL5/0HC+f9Bwvn/QcL5/0HC+f9Bwvn/QcL5/0HC+f9Bwvn/QcL5/0HC+f9Bwvn/QcL5/0HC + +f9Bwvn/QcL5/0LC+f9Bwvn/QcL5/0HC+f9Bwvn/QcL5/0HC+f9Bwvn/QcL5/0HC+f9Bwvn/QcL5/0HC + +f9Bwvn/QcL5/0HC+f9Cw/n/SMH18UCRtKMoS1pGBgkKBgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAAAA + AAIAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAA + AAAAAAACAAAAAAAAAAAAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAgAA + AAIAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAACAAAAAgAA + AAIAAAAAAAAAAA8WGQwuV2hSOoyvpUnA8utCw/r/QcL5/0HC+v9Bwvn/QcL6/0HC+f9Bwvn/QcL5/0HC + +f9Bwvr/QcL5/0HC+f9Bwvn/QcL5/0HC+f9Bwvn/QcL5/0HC+f9Bwvn/QcL5/0HC+v9Bwvn/QcL5/0HC + +f9Bwvn/QcL6/0HC+f9Bwvn/QcL5/0HC+f9Bwvr/QcL5/0HC+v9Bwvn/QcL6/0HC+f9Bwvr/QcL5/0HC + +v9Bwvn/QcL6/0LD+v9JwPLrOoyvpS5XaFIQFhkMAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAAAAAAAAAAA + AAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAAAA + AAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA + AAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACCQwOBiE/TDoxco2BQqXPwUbC9/dCw/r/QsL5/0LC + +v9Bwvn/QsP6/0LC+v9Bwvn/QsL6/0LD+f9Cwvr/QsL6/0LD+f9Bwvn/QsP5/0LC+f9Cwvn/QsL5/0LC + +v9Cw/r/QsL5/0LD+f9Cwvr/QcL5/0LD+v9Cwvn/QcL5/0LC+v9Cw/n/QsP6/0HD+f9Bwvr/QsP5/0LC + +v9Cw/r/RsL390Klz8Exco2BIT9MOgkMDgYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAA + AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAA + AAAAAAACAAAAAgAAAAAAAAACAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAIAAAACAAAAAgAA + AAAAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACCxEUCh8+ + SzosZ4ByOo2xpUaz4tVFw/j7QsP6/0LD+f9Cw/r/QsP5/0LC+f9Cw/n/QcP5/0LD+v9Cw/n/QsL5/0LD + +f9Cw/n/QsP6/0HD+f9Cw/n/QsP5/0HD+f9Cw/n/QsP5/0LD+f9Cw/n/QsP5/0HC+f9Cw/r/RcP4+0az + 4tU6jbGlLGeAch8+SzoLERQKAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAA + AAIAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsREwYXMDsqHkZWTilje3IyfZyPM4uwqUKl0MM7pdLTTcb65UvG + +vdHxPr9RMP6/0LD+v9Cw/r/RMP6/0fE+v1Lxvr3Tcb65Tul0tNCpdDDM4uwqTJ9nI8pY3tyHkZWThcw + OyoLERMGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA7qolVUCqqhQAAAAgVVQKqoFVUAD+7n/9///fwAAAAAN+9u7//fvbAP// + //////wAAAAAAD/f/////38AAGgAQFCAgAAAAAAABESACpAREgCqYmm0xaoAAAAAAAAAWc2rufVnAP// + /////AAAAAAAAAA///////8AAAAAAAAAAAAAAAAAAAQAAAAAEADooDVUQIAAAAAAAAAAAAKqgVQQAHu7 + t/9yAAAAAAAAAAAAO7qnd1QA//r/93wAAAAAAAAAAAA//p3dUwBgLARUAAAAAAAAAAAAAAIIgAEQAGqq + lEVAAAAAAAAAAAAAAoqgUVQA+P6/TwAAAAAAAAAAAAAAqvDT2gD/v//+AAAAAAAAAAAAAAB/////AAAA + BAAAAAAAAAAAAAAAAAAAEAAA9sC2UAAAAAAAAAAAAAAACqNVUgD/97fwAAAAAAAAAAAAAAAP//f/ACAA + AEAAAAAAAAAAAAAAAAAAAAAAQACEAAAAAAAAAAAAAAAAAAAFEADKqLcAAAAAAAAAAAAAAAAAgFVQAO+r + /gAAAAAAAAAAAAAAAAB//98A+vv8AAAAAAAAAAAAAAAAADv/dwAiKIAAAAAAAAAAAAAAAAAAAFQAAGCj + MAAAAAAAAAAAAAAAAAAJ9XsAev7gAAAAAAAAAAAAAAAAAAd91wBAIMAAAAAAAAAAAAAAAAAAAFEQAEoi + gAAAAAAAAAAAAAAAAAABFVAA+v+AAAAAAAAAAAAAAAAAAAFX1QD//wAAAAAAAAAAAAAAAAAAAP//AAAA + AAAAAAAAAAAAAAAAAAAAAAAAiKwAAAAAAAAAAAAAAAAAAAAfEgD/+AAAAAAAAAAAAAAAAAAAABdTAP/4 + AAAAAAAAAAAAAAAAAAAAH/8AAAAAAAAAAAAAAAAAAAAAAAAFQABqgAAAAAAAAAAAAAAAAAAAAAdSAH7g + AAAAAAAAAAAAAAAAAAAAB/oAaoAAAAAAAAAAAAAAAAAAAAABVABggAAAAAAAAAAAAAAAAAAAAAEAAO6A + AAAAAAAAAAAAAAAAAAAAAVAA/gAAAAAAAAAAAAAAAAAAAAAA2wD/AAAAAAAAAAAAAAAAAAAAAAB/AAAA + AAAAAAAAAAAAAAAAAAAAABIAqgAAAAAAAAAAAAAAAAAAAAAAZwD8AAAAAAAAAAAAAAAAAAAAAAA/AAAA + AAAAAAAAAAAAAAAAAAAAABAA6AAAAAAAAAAAAAAAAAAAAAAAEAB4AAAAAAAAAAAAAAAAAAAAAAAUAPgA + AAAAAAAAAAAAAAAAAAAAABMAYAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAEAPAA + AAAAAAAAAAAAAAAAAAAAAAoA4AAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA + AAAAAAAAAAAAAAAAAAAAAAIAwAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAEAA + AAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAABAIAA + AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAA + AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAA + AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAIAA + AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAMAA + AAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAwDAAAAAAAAAAAAAAAAAAAAAAAADAEAA + AAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAgBgAAAAAAAAAAAAAAAAAAAAAAADAEAA + AAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAFAPgA + AAAAAAAAAAAAAAAAAAAAAB8AAAAAAAAAAAAAAAAAAAAAAAAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAPwA + AAAAAAAAAAAAAAAAAAAAABsA/AAAAAAAAAAAAAAAAAAAAAAAPwBiAAAAAAAAAAAAAAAAAAAAAAAQAOgA + AAAAAAAAAAAAAAAAAAAAAFQA/wAAAAAAAAAAAAAAAAAAAAAA3wD/AAAAAAAAAAAAAAAAAAAAAAD/AGCA + AAAAAAAAAAAAAAAAAAAAAQAA7oAAAAAAAAAAAAAAAAAAAAABUAD+wAAAAAAAAAAAAAAAAAAAAAPZAEAA + AAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAAGAADe4AAAAAAAAAAAAAAAAAAAAAdzAP/4 + AAAAAAAAAAAAAAAAAAAAHf8AAAAAAAAAAAAAAAAAAAAAAAAQAABzCAAAAAAAAAAAAAAAAAAAABVUAH96 + AAAAAAAAAAAAAAAAAAAAVXQA//oAAAAAAAAAAAAAAAAAAADdUwBqJgAAAAAAAAAAAAAAAAAAAAEAAGJK + gAAAAAAAAAAAAAAAAAAAUVgAeurAAAAAAAAAAAAAAAAAAANV3gD//+AAAAAAAAAAAAAAAAAAB///AEBA + AAAAAAAAAAAAAAAAAAAAAAAAcnY4AAAAAAAAAAAAAAAAAA8VVAD//vwAAAAAAAAAAAAAAAAAPf//AP// + /gAAAAAAAAAAAAAAAAB///8ASAAAAAAAAAAAAAAAAAAAAAAAAADPqrcAAAAAAAAAAAAAAAAAgBVQAH/7 + /8AAAAAAAAAAAAAAAAP/f/8AQIAAAAAAAAAAAAAAAAAAAAAAAABKAADQAAAAAAAAAAAAAAAKkFFQAEir + l1QAAAAAAAAAAAAAACqgdVgAfeq3VAAAAAAAAAAAAAAAKp11UwBqqBBgAAAAAAAAAAAAAACIABEAACIm + tVRAAAAAAAAAAAAAAqqJFVAA6/613dAAAAAAAAAAAAAOut3XUwD//////AAAAAAAAAAAAD//////AAIA + AAAAAAAAAAAAAAAAAAAAAAAAayawlAAAAAAAAAAAAAACiIAEUAD+7/9f3aAAAAAAAAAAAt3/W7/rAP// + /////AAAAAAAAAA///////8ASqAQQAAoAAAAAAAAAAQAAAAAEABvK6xnFKhgAAAAAAAFdV0HdFXVAPv6 + //3e6+gAAAAAAD/d9r7T/3cAKAAgEACICAAAAAAAAQAAAgAEAAB/+//////v/gAAAH//////////AA== + + + \ No newline at end of file diff --git a/NHB3/NHB3.csproj b/NHB3/NHB3.csproj new file mode 100644 index 0000000..669c43d --- /dev/null +++ b/NHB3/NHB3.csproj @@ -0,0 +1,141 @@ + + + + + Debug + AnyCPU + {544DB7FC-334D-4C5D-A298-61508693EB31} + Exe + NHB3 + NHB3 + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + NHB3.Program + + + + ..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll + + + ..\packages\RestSharp.106.10.1\lib\net452\RestSharp.dll + + + + + + + + + + + + + + + + + Form + + + ApiForm.cs + + + + + Form + + + BotForm.cs + + + Form + + + OrderForm.cs + + + Form + + + PoolForm.cs + + + Form + + + PoolsForm.cs + + + Form + + + Home.cs + + + + + ApiForm.cs + + + BotForm.cs + + + Home.cs + + + OrderForm.cs + + + PoolForm.cs + + + PoolsForm.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + \ No newline at end of file diff --git a/NHB3/OrderForm.Designer.cs b/NHB3/OrderForm.Designer.cs new file mode 100644 index 0000000..a4e24ce --- /dev/null +++ b/NHB3/OrderForm.Designer.cs @@ -0,0 +1,613 @@ +namespace NHB3 +{ + partial class OrderForm + { + /// + /// 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.label2 = new System.Windows.Forms.Label(); + this.comboAlgorithm = new System.Windows.Forms.ComboBox(); + this.rbStd = new System.Windows.Forms.RadioButton(); + this.rbFixed = new System.Windows.Forms.RadioButton(); + this.label3 = new System.Windows.Forms.Label(); + this.comboPools = new System.Windows.Forms.ComboBox(); + this.label4 = new System.Windows.Forms.Label(); + this.tbPrice = new System.Windows.Forms.TextBox(); + this.priceLbl = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.tbLimit = new System.Windows.Forms.TextBox(); + this.limitLbl = new System.Windows.Forms.Label(); + this.tbAmount = new System.Windows.Forms.TextBox(); + this.label8 = new System.Windows.Forms.Label(); + this.currencyLbl = new System.Windows.Forms.Label(); + this.priceDetailsLbl = new System.Windows.Forms.Label(); + this.limitDetailsLbl = new System.Windows.Forms.Label(); + this.amountDetailsLbl = new System.Windows.Forms.Label(); + this.btnCreate = new System.Windows.Forms.Button(); + this.rbUSA = new System.Windows.Forms.RadioButton(); + this.rbEU = new System.Windows.Forms.RadioButton(); + this.label14 = new System.Windows.Forms.Label(); + this.tbNewAmount = new System.Windows.Forms.TextBox(); + this.btnRefill = new System.Windows.Forms.Button(); + this.label15 = new System.Windows.Forms.Label(); + this.tbNewPrice = new System.Windows.Forms.TextBox(); + this.tbNewLimit = new System.Windows.Forms.TextBox(); + this.label16 = new System.Windows.Forms.Label(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.tbAvailableAmount = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.btnCancel = new System.Windows.Forms.Button(); + this.btnUpdate = new System.Windows.Forms.Button(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.lblCreate = new System.Windows.Forms.Label(); + this.lblPool = new System.Windows.Forms.Label(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.lblErrorCreate = new System.Windows.Forms.Label(); + this.amountDetailsLbl2 = new System.Windows.Forms.Label(); + this.priceDetailsLbl2 = new System.Windows.Forms.Label(); + this.limitDetailsLbl2 = new System.Windows.Forms.Label(); + this.tbId = new System.Windows.Forms.TextBox(); + this.tabControl1.SuspendLayout(); + this.tabPage1.SuspendLayout(); + this.tabPage2.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.SuspendLayout(); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(12, 12); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(76, 20); + this.label2.TabIndex = 3; + this.label2.Text = "Algorithm"; + // + // comboAlgorithm + // + this.comboAlgorithm.FormattingEnabled = true; + this.comboAlgorithm.Location = new System.Drawing.Point(101, 9); + this.comboAlgorithm.Name = "comboAlgorithm"; + this.comboAlgorithm.Size = new System.Drawing.Size(509, 28); + this.comboAlgorithm.TabIndex = 4; + this.comboAlgorithm.SelectedIndexChanged += new System.EventHandler(this.comboAlgorithm_SelectedIndexChanged); + // + // rbStd + // + this.rbStd.AutoSize = true; + this.rbStd.Checked = true; + this.rbStd.Location = new System.Drawing.Point(85, 14); + this.rbStd.Name = "rbStd"; + this.rbStd.Size = new System.Drawing.Size(97, 24); + this.rbStd.TabIndex = 5; + this.rbStd.TabStop = true; + this.rbStd.Text = "standard"; + this.rbStd.UseVisualStyleBackColor = true; + this.rbStd.CheckedChanged += new System.EventHandler(this.formChanged); + // + // rbFixed + // + this.rbFixed.AutoSize = true; + this.rbFixed.Location = new System.Drawing.Point(188, 14); + this.rbFixed.Name = "rbFixed"; + this.rbFixed.Size = new System.Drawing.Size(67, 24); + this.rbFixed.TabIndex = 6; + this.rbFixed.Text = "fixed"; + this.rbFixed.UseVisualStyleBackColor = true; + this.rbFixed.CheckedChanged += new System.EventHandler(this.formChanged); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(12, 143); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(40, 20); + this.label3.TabIndex = 7; + this.label3.Text = "Pool"; + // + // comboPools + // + this.comboPools.FormattingEnabled = true; + this.comboPools.Location = new System.Drawing.Point(101, 140); + this.comboPools.Name = "comboPools"; + this.comboPools.Size = new System.Drawing.Size(509, 28); + this.comboPools.TabIndex = 8; + this.comboPools.SelectedIndexChanged += new System.EventHandler(this.formChanged); + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(12, 178); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(44, 20); + this.label4.TabIndex = 9; + this.label4.Text = "Price"; + // + // tbPrice + // + this.tbPrice.Location = new System.Drawing.Point(101, 175); + this.tbPrice.Name = "tbPrice"; + this.tbPrice.Size = new System.Drawing.Size(308, 26); + this.tbPrice.TabIndex = 10; + // + // priceLbl + // + this.priceLbl.AutoSize = true; + this.priceLbl.Location = new System.Drawing.Point(415, 178); + this.priceLbl.Name = "priceLbl"; + this.priceLbl.Size = new System.Drawing.Size(146, 20); + this.priceLbl.TabIndex = 11; + this.priceLbl.Text = "currency/speed/day"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(12, 233); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(42, 20); + this.label6.TabIndex = 12; + this.label6.Text = "Limit"; + // + // tbLimit + // + this.tbLimit.Location = new System.Drawing.Point(101, 232); + this.tbLimit.Name = "tbLimit"; + this.tbLimit.Size = new System.Drawing.Size(308, 26); + this.tbLimit.TabIndex = 13; + this.tbLimit.TextChanged += new System.EventHandler(this.formChanged); + // + // limitLbl + // + this.limitLbl.AutoSize = true; + this.limitLbl.Location = new System.Drawing.Point(415, 233); + this.limitLbl.Name = "limitLbl"; + this.limitLbl.Size = new System.Drawing.Size(109, 20); + this.limitLbl.TabIndex = 14; + this.limitLbl.Text = "speed/second"; + // + // tbAmount + // + this.tbAmount.Location = new System.Drawing.Point(101, 289); + this.tbAmount.Name = "tbAmount"; + this.tbAmount.Size = new System.Drawing.Size(308, 26); + this.tbAmount.TabIndex = 15; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(12, 288); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(65, 20); + this.label8.TabIndex = 16; + this.label8.Text = "Amount"; + // + // currencyLbl + // + this.currencyLbl.AutoSize = true; + this.currencyLbl.Location = new System.Drawing.Point(415, 288); + this.currencyLbl.Name = "currencyLbl"; + this.currencyLbl.Size = new System.Drawing.Size(69, 20); + this.currencyLbl.TabIndex = 17; + this.currencyLbl.Text = "currency"; + // + // priceDetailsLbl + // + this.priceDetailsLbl.AutoSize = true; + this.priceDetailsLbl.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.priceDetailsLbl.ForeColor = System.Drawing.SystemColors.ControlDarkDark; + this.priceDetailsLbl.Location = new System.Drawing.Point(99, 206); + this.priceDetailsLbl.Name = "priceDetailsLbl"; + this.priceDetailsLbl.Size = new System.Drawing.Size(47, 17); + this.priceDetailsLbl.TabIndex = 18; + this.priceDetailsLbl.Text = "[price]"; + // + // limitDetailsLbl + // + this.limitDetailsLbl.AutoSize = true; + this.limitDetailsLbl.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.limitDetailsLbl.ForeColor = System.Drawing.SystemColors.ControlDarkDark; + this.limitDetailsLbl.Location = new System.Drawing.Point(99, 263); + this.limitDetailsLbl.Name = "limitDetailsLbl"; + this.limitDetailsLbl.Size = new System.Drawing.Size(55, 17); + this.limitDetailsLbl.TabIndex = 19; + this.limitDetailsLbl.Text = "[speed]"; + // + // amountDetailsLbl + // + this.amountDetailsLbl.AutoSize = true; + this.amountDetailsLbl.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.amountDetailsLbl.ForeColor = System.Drawing.SystemColors.ControlDarkDark; + this.amountDetailsLbl.Location = new System.Drawing.Point(99, 320); + this.amountDetailsLbl.Name = "amountDetailsLbl"; + this.amountDetailsLbl.Size = new System.Drawing.Size(63, 17); + this.amountDetailsLbl.TabIndex = 20; + this.amountDetailsLbl.Text = "[amount]"; + // + // btnCreate + // + this.btnCreate.Location = new System.Drawing.Point(12, 347); + this.btnCreate.Name = "btnCreate"; + this.btnCreate.Size = new System.Drawing.Size(140, 32); + this.btnCreate.TabIndex = 21; + this.btnCreate.Text = "Create"; + this.btnCreate.UseVisualStyleBackColor = true; + this.btnCreate.Click += new System.EventHandler(this.btnCreate_Click); + // + // rbUSA + // + this.rbUSA.AutoSize = true; + this.rbUSA.Location = new System.Drawing.Point(148, 14); + this.rbUSA.Name = "rbUSA"; + this.rbUSA.Size = new System.Drawing.Size(68, 24); + this.rbUSA.TabIndex = 23; + this.rbUSA.Text = "USA"; + this.rbUSA.UseVisualStyleBackColor = true; + this.rbUSA.CheckedChanged += new System.EventHandler(this.formChanged); + // + // rbEU + // + this.rbEU.AutoSize = true; + this.rbEU.Checked = true; + this.rbEU.Location = new System.Drawing.Point(85, 14); + this.rbEU.Name = "rbEU"; + this.rbEU.Size = new System.Drawing.Size(57, 24); + this.rbEU.TabIndex = 22; + this.rbEU.TabStop = true; + this.rbEU.Text = "EU"; + this.rbEU.UseVisualStyleBackColor = true; + this.rbEU.CheckedChanged += new System.EventHandler(this.formChanged); + // + // label14 + // + this.label14.AutoSize = true; + this.label14.Location = new System.Drawing.Point(6, 9); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(102, 20); + this.label14.TabIndex = 26; + this.label14.Text = "Refill amount"; + // + // tbNewAmount + // + this.tbNewAmount.Location = new System.Drawing.Point(142, 6); + this.tbNewAmount.Name = "tbNewAmount"; + this.tbNewAmount.Size = new System.Drawing.Size(251, 26); + this.tbNewAmount.TabIndex = 26; + // + // btnRefill + // + this.btnRefill.Location = new System.Drawing.Point(10, 72); + this.btnRefill.Name = "btnRefill"; + this.btnRefill.Size = new System.Drawing.Size(140, 32); + this.btnRefill.TabIndex = 26; + this.btnRefill.Text = "Refill"; + this.btnRefill.UseVisualStyleBackColor = true; + this.btnRefill.Click += new System.EventHandler(this.btnRefill_Click); + // + // label15 + // + this.label15.AutoSize = true; + this.label15.Location = new System.Drawing.Point(6, 9); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(78, 20); + this.label15.TabIndex = 27; + this.label15.Text = "New price"; + // + // tbNewPrice + // + this.tbNewPrice.Location = new System.Drawing.Point(142, 6); + this.tbNewPrice.Name = "tbNewPrice"; + this.tbNewPrice.Size = new System.Drawing.Size(251, 26); + this.tbNewPrice.TabIndex = 28; + // + // tbNewLimit + // + this.tbNewLimit.Location = new System.Drawing.Point(142, 38); + this.tbNewLimit.Name = "tbNewLimit"; + this.tbNewLimit.Size = new System.Drawing.Size(251, 26); + this.tbNewLimit.TabIndex = 29; + // + // label16 + // + this.label16.AutoSize = true; + this.label16.Location = new System.Drawing.Point(6, 41); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(71, 20); + this.label16.TabIndex = 30; + this.label16.Text = "New limit"; + // + // tabControl1 + // + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Controls.Add(this.tabPage2); + this.tabControl1.Enabled = false; + this.tabControl1.Location = new System.Drawing.Point(12, 392); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(610, 147); + this.tabControl1.TabIndex = 26; + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.tbId); + this.tabPage1.Controls.Add(this.amountDetailsLbl2); + this.tabPage1.Controls.Add(this.tbAvailableAmount); + this.tabPage1.Controls.Add(this.label1); + this.tabPage1.Controls.Add(this.label14); + this.tabPage1.Controls.Add(this.tbNewAmount); + this.tabPage1.Controls.Add(this.btnRefill); + this.tabPage1.Location = new System.Drawing.Point(4, 29); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(602, 114); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "Refill order"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // tbAvailableAmount + // + this.tbAvailableAmount.Enabled = false; + this.tbAvailableAmount.Location = new System.Drawing.Point(142, 38); + this.tbAvailableAmount.Name = "tbAvailableAmount"; + this.tbAvailableAmount.Size = new System.Drawing.Size(251, 26); + this.tbAvailableAmount.TabIndex = 28; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(6, 41); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(130, 20); + this.label1.TabIndex = 27; + this.label1.Text = "Available amount"; + // + // tabPage2 + // + this.tabPage2.Controls.Add(this.limitDetailsLbl2); + this.tabPage2.Controls.Add(this.priceDetailsLbl2); + this.tabPage2.Controls.Add(this.btnCancel); + this.tabPage2.Controls.Add(this.btnUpdate); + this.tabPage2.Controls.Add(this.label15); + this.tabPage2.Controls.Add(this.label16); + this.tabPage2.Controls.Add(this.tbNewPrice); + this.tabPage2.Controls.Add(this.tbNewLimit); + this.tabPage2.Location = new System.Drawing.Point(4, 29); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(3); + this.tabPage2.Size = new System.Drawing.Size(602, 114); + this.tabPage2.TabIndex = 1; + this.tabPage2.Text = "Edit order"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // btnCancel + // + this.btnCancel.ForeColor = System.Drawing.Color.DarkRed; + this.btnCancel.Location = new System.Drawing.Point(455, 72); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(139, 32); + this.btnCancel.TabIndex = 32; + this.btnCancel.Text = "Cancel Order"; + this.btnCancel.UseVisualStyleBackColor = true; + this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); + // + // btnUpdate + // + this.btnUpdate.Location = new System.Drawing.Point(10, 72); + this.btnUpdate.Name = "btnUpdate"; + this.btnUpdate.Size = new System.Drawing.Size(140, 32); + this.btnUpdate.TabIndex = 31; + this.btnUpdate.Text = "Update"; + this.btnUpdate.UseVisualStyleBackColor = true; + this.btnUpdate.Click += new System.EventHandler(this.btnUpdate_Click); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.rbEU); + this.groupBox1.Controls.Add(this.rbUSA); + this.groupBox1.Location = new System.Drawing.Point(16, 43); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(594, 44); + this.groupBox1.TabIndex = 27; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Market"; + // + // lblCreate + // + this.lblCreate.AutoSize = true; + this.lblCreate.ForeColor = System.Drawing.Color.DarkRed; + this.lblCreate.Location = new System.Drawing.Point(158, 353); + this.lblCreate.Name = "lblCreate"; + this.lblCreate.Size = new System.Drawing.Size(182, 20); + this.lblCreate.TabIndex = 28; + this.lblCreate.Text = "Fixed order params error"; + this.lblCreate.Visible = false; + // + // lblPool + // + this.lblPool.AutoSize = true; + this.lblPool.ForeColor = System.Drawing.Color.DarkRed; + this.lblPool.Location = new System.Drawing.Point(158, 353); + this.lblPool.Name = "lblPool"; + this.lblPool.Size = new System.Drawing.Size(127, 20); + this.lblPool.TabIndex = 29; + this.lblPool.Text = "No selected pool"; + this.lblPool.Visible = false; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.rbFixed); + this.groupBox2.Controls.Add(this.rbStd); + this.groupBox2.Location = new System.Drawing.Point(16, 90); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(594, 44); + this.groupBox2.TabIndex = 28; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Type"; + // + // lblErrorCreate + // + this.lblErrorCreate.AutoSize = true; + this.lblErrorCreate.ForeColor = System.Drawing.Color.DarkRed; + this.lblErrorCreate.Location = new System.Drawing.Point(464, 353); + this.lblErrorCreate.Name = "lblErrorCreate"; + this.lblErrorCreate.Size = new System.Drawing.Size(146, 20); + this.lblErrorCreate.TabIndex = 30; + this.lblErrorCreate.Text = "Error creating order"; + this.lblErrorCreate.Visible = false; + // + // amountDetailsLbl2 + // + this.amountDetailsLbl2.AutoSize = true; + this.amountDetailsLbl2.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.amountDetailsLbl2.ForeColor = System.Drawing.SystemColors.ControlDarkDark; + this.amountDetailsLbl2.Location = new System.Drawing.Point(399, 11); + this.amountDetailsLbl2.Name = "amountDetailsLbl2"; + this.amountDetailsLbl2.Size = new System.Drawing.Size(63, 17); + this.amountDetailsLbl2.TabIndex = 31; + this.amountDetailsLbl2.Text = "[amount]"; + // + // priceDetailsLbl2 + // + this.priceDetailsLbl2.AutoSize = true; + this.priceDetailsLbl2.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.priceDetailsLbl2.ForeColor = System.Drawing.SystemColors.ControlDarkDark; + this.priceDetailsLbl2.Location = new System.Drawing.Point(399, 11); + this.priceDetailsLbl2.Name = "priceDetailsLbl2"; + this.priceDetailsLbl2.Size = new System.Drawing.Size(47, 17); + this.priceDetailsLbl2.TabIndex = 31; + this.priceDetailsLbl2.Text = "[price]"; + // + // limitDetailsLbl2 + // + this.limitDetailsLbl2.AutoSize = true; + this.limitDetailsLbl2.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.limitDetailsLbl2.ForeColor = System.Drawing.SystemColors.ControlDarkDark; + this.limitDetailsLbl2.Location = new System.Drawing.Point(399, 43); + this.limitDetailsLbl2.Name = "limitDetailsLbl2"; + this.limitDetailsLbl2.Size = new System.Drawing.Size(55, 17); + this.limitDetailsLbl2.TabIndex = 31; + this.limitDetailsLbl2.Text = "[speed]"; + // + // tbId + // + this.tbId.Location = new System.Drawing.Point(156, 75); + this.tbId.Name = "tbId"; + this.tbId.Size = new System.Drawing.Size(237, 26); + this.tbId.TabIndex = 32; + this.tbId.Visible = false; + // + // OrderForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(629, 543); + this.Controls.Add(this.lblErrorCreate); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.lblPool); + this.Controls.Add(this.lblCreate); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.tabControl1); + this.Controls.Add(this.btnCreate); + this.Controls.Add(this.amountDetailsLbl); + this.Controls.Add(this.limitDetailsLbl); + this.Controls.Add(this.priceDetailsLbl); + this.Controls.Add(this.currencyLbl); + this.Controls.Add(this.label8); + this.Controls.Add(this.tbAmount); + this.Controls.Add(this.limitLbl); + this.Controls.Add(this.tbLimit); + this.Controls.Add(this.label6); + this.Controls.Add(this.priceLbl); + this.Controls.Add(this.tbPrice); + this.Controls.Add(this.label4); + this.Controls.Add(this.comboPools); + this.Controls.Add(this.label3); + this.Controls.Add(this.comboAlgorithm); + this.Controls.Add(this.label2); + this.Name = "OrderForm"; + this.Text = "Order"; + this.tabControl1.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + this.tabPage1.PerformLayout(); + this.tabPage2.ResumeLayout(false); + this.tabPage2.PerformLayout(); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.Label label2; + private System.Windows.Forms.ComboBox comboAlgorithm; + private System.Windows.Forms.RadioButton rbStd; + private System.Windows.Forms.RadioButton rbFixed; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.ComboBox comboPools; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox tbPrice; + private System.Windows.Forms.Label priceLbl; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.TextBox tbLimit; + private System.Windows.Forms.Label limitLbl; + private System.Windows.Forms.TextBox tbAmount; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label currencyLbl; + private System.Windows.Forms.Label priceDetailsLbl; + private System.Windows.Forms.Label limitDetailsLbl; + private System.Windows.Forms.Label amountDetailsLbl; + private System.Windows.Forms.Button btnCreate; + private System.Windows.Forms.RadioButton rbUSA; + private System.Windows.Forms.RadioButton rbEU; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.TextBox tbNewAmount; + private System.Windows.Forms.Button btnRefill; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.TextBox tbNewPrice; + private System.Windows.Forms.TextBox tbNewLimit; + private System.Windows.Forms.Label label16; + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.TabPage tabPage2; + private System.Windows.Forms.Button btnUpdate; + private System.Windows.Forms.Button btnCancel; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Label lblCreate; + private System.Windows.Forms.Label lblPool; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.Label lblErrorCreate; + private System.Windows.Forms.TextBox tbAvailableAmount; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label amountDetailsLbl2; + private System.Windows.Forms.Label limitDetailsLbl2; + private System.Windows.Forms.Label priceDetailsLbl2; + private System.Windows.Forms.TextBox tbId; + } +} \ No newline at end of file diff --git a/NHB3/OrderForm.cs b/NHB3/OrderForm.cs new file mode 100644 index 0000000..82ef5a8 --- /dev/null +++ b/NHB3/OrderForm.cs @@ -0,0 +1,272 @@ +using Newtonsoft.Json.Linq; +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 NHB3 +{ + public partial class OrderForm : Form + { + ApiConnect ac; + JObject algo; + + string lastFixedAlgo = ""; + string lastFixedMarket = ""; + string lastFixedLimit = ""; + bool edit = false; + + public OrderForm(ApiConnect ac) + { + InitializeComponent(); + this.Show(); + this.ac = ac; + + this.currencyLbl.Text = ac.currency; + + //pools dropdown + this.comboPools.DisplayMember = "name"; + this.comboPools.ValueMember = "id"; + + foreach (JObject obj in ac.algorithms) + { + this.comboAlgorithm.Items.Add(obj["algorithm"]); + } + this.comboAlgorithm.SelectedIndex = 0; + } + + private void comboAlgorithm_SelectedIndexChanged(object sender, EventArgs e) + { + //get algo settings + foreach (JObject obj in ac.algorithms) + { + if (this.comboAlgorithm.SelectedItem.Equals(obj["algorithm"])) + { + this.algo = obj; + } + } + + //set lbls + this.priceLbl.Text = ac.currency + "/" + this.algo["displayMarketFactor"] + "/day"; + this.limitLbl.Text = this.algo["displayMarketFactor"] + "/second"; + this.priceDetailsLbl.Text = "> 0"; + this.limitDetailsLbl.Text = "> " + this.algo["minSpeedLimit"] + " AND < " + this.algo["maxSpeedLimit"] + " OR 0 // no speed limit"; + this.amountDetailsLbl.Text = "> " + this.algo["minimalOrderAmount"]; + + this.tbLimit.Text = ""+this.algo["minSpeedLimit"]; + this.tbAmount.Text = ""+this.algo["minimalOrderAmount"]; + + //filter pools + this.comboPools.Items.Clear(); + this.comboPools.ResetText(); + this.comboPools.SelectedIndex = -1; + + foreach (JObject pool in ac.getPools(false)) + { + if (this.comboAlgorithm.SelectedItem.Equals(pool["algorithm"])) { + this.comboPools.Items.Add(pool); + } + } + + if (!edit) { + formDataUpdate(); + } + } + + private void formChanged(object sender, EventArgs e) + { + if (!edit) { + formDataUpdate(); + } + } + + private void formDataUpdate() { + this.tbPrice.Enabled = true; + this.btnCreate.Enabled = true; + this.lblPool.Visible = false; + this.lblCreate.Visible = false; + this.lblErrorCreate.Visible = false; + + if (this.comboPools.SelectedItem == null) { + this.btnCreate.Enabled = false; + this.lblPool.Visible = true; + return; + } + + string algo = "" + this.comboAlgorithm.SelectedItem; + string limit = "" + this.tbLimit.Text; + string market = "EU"; + if (this.rbUSA.Checked) { + market = "USA"; + } + + if (this.rbFixed.Checked) + { + JObject response = ac.getFixedPrice(algo, limit, market); + + this.btnCreate.Enabled = false; + this.lblCreate.Visible = true; + + if (response["fixedMax"] != null && response["fixedPrice"] != null) + { + this.tbPrice.Text = "" + response["fixedPrice"]; + this.tbPrice.Enabled = false; + this.limitDetailsLbl.Text = "> " + this.algo["minSpeedLimit"] + " AND < " + response["fixedMax"]; + + this.btnCreate.Enabled = true; + this.lblCreate.Visible = false; + } + } + } + + private void btnCreate_Click(object sender, EventArgs e) + { + string algo = ""+this.comboAlgorithm.SelectedItem; + string market = "EU"; + if (this.rbUSA.Checked) + { + market = "USA"; + } + string type = "STANDARD"; + if (this.rbFixed.Checked) + { + type = "FIXED"; + } + JObject pool = (JObject)this.comboPools.SelectedItem; + + string price = ""+this.tbPrice.Text; + string limit = ""+this.tbLimit.Text; + string amount = ""+this.tbAmount.Text; + + JObject order = ac.createOrder(algo, market, type, ""+pool["id"], price, limit, amount); + if (order["id"] != null) + { + this.lblErrorCreate.Visible = false; + setEditMode(order); + } + else + { + this.lblErrorCreate.Visible = true; + } + } + + public void setEditMode(JObject order) { + edit = true; + + this.Text = "Edit order " + order["id"]; + this.tabControl1.Enabled = true; + + this.lblErrorCreate.Visible = false; + this.lblPool.Visible = false; + this.lblCreate.Visible = false; + + this.btnCreate.Visible = false; + this.comboAlgorithm.Enabled = false; + this.comboPools.Enabled = false; + this.rbEU.Enabled = false; + this.rbUSA.Enabled = false; + this.rbStd.Enabled = false; + this.rbFixed.Enabled = false; + this.tbPrice.Enabled = false; + this.tbLimit.Enabled = false; + this.tbAmount.Enabled = false; + + if (order["type"]["code"].Equals("FIXED")) { + this.tbNewLimit.Enabled = false; + this.tbNewPrice.Enabled = false; + this.btnUpdate.Enabled = false; + } else { + this.tbNewLimit.Enabled = true; + this.tbNewPrice.Enabled = true; + this.btnUpdate.Enabled = true; + } + + //set values + this.tbId.Text = ""+order["id"]; + this.comboAlgorithm.SelectedItem = order["algorithm"]["algorithm"]; + if ((""+order["market"]).Equals("EU")) + { + this.rbEU.Checked = true; + this.rbUSA.Checked = false; + } else { + this.rbEU.Checked = false; + this.rbUSA.Checked = true; + } + + if ((""+order["type"]["code"]).Equals("STANDARD")) + { + this.rbStd.Checked = true; + this.rbFixed.Checked = false; + } else { + this.rbStd.Checked = false; + this.rbFixed.Checked = true; + } + + int idx = 0; + foreach (JObject pool in this.comboPools.Items) { + if (order["pool"]["id"].Equals(pool["id"])) { + break; + } + idx++; + } + this.comboPools.SelectedIndex = idx; + + this.tbPrice.Text = "" + order["price"]; + this.tbLimit.Text = "" + order["limit"]; + this.tbAmount.Text = "" + order["amount"]; + + this.tbNewAmount.Text = "" + this.algo["minimalOrderAmount"]; + this.tbAvailableAmount.Text = "" + order["availableAmount"]; + this.tbNewPrice.Text = "" + order["price"]; + this.tbNewLimit.Text = "" + order["limit"]; + + this.priceDetailsLbl2.Text = "step down < " + this.algo["priceDownStep"]; + this.amountDetailsLbl2.Text = "> " + this.algo["minimalOrderAmount"]; + this.limitDetailsLbl2.Text = "> " + this.algo["minSpeedLimit"] + " AND < " + this.algo["maxSpeedLimit"] + " OR 0"; + } + + private void btnRefill_Click(object sender, EventArgs e) + { + string amount = "" + this.tbNewAmount.Text; + string id = "" + this.tbId.Text; + + JObject order = ac.refillOrder(id, amount); + if (order["id"] != null) + { + this.lblErrorCreate.Visible = false; + setEditMode(order); + } + } + + private void btnUpdate_Click(object sender, EventArgs e) + { + string algo = "" + this.comboAlgorithm.SelectedItem; + string price = "" + this.tbNewPrice.Text; + string limit = "" + this.tbNewLimit.Text; + string id = "" + this.tbId.Text; + + JObject order = ac.updateOrder(algo, id, price, limit); + if (order["id"] != null) + { + this.lblErrorCreate.Visible = false; + setEditMode(order); + } + } + + private void btnCancel_Click(object sender, EventArgs e) + { + string id = "" + this.tbId.Text; + + JObject order = ac.cancelOrder(id); + if (order["id"] != null) + { + this.Close(); + } + } + } +} \ No newline at end of file diff --git a/NHB3/OrderForm.resx b/NHB3/OrderForm.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/NHB3/OrderForm.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/NHB3/PoolForm.Designer.cs b/NHB3/PoolForm.Designer.cs new file mode 100644 index 0000000..559d9c8 --- /dev/null +++ b/NHB3/PoolForm.Designer.cs @@ -0,0 +1,235 @@ +namespace NHB3 +{ + partial class PoolForm + { + /// + /// 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.label1 = new System.Windows.Forms.Label(); + this.textName = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.comboAlgorithm = new System.Windows.Forms.ComboBox(); + this.label3 = new System.Windows.Forms.Label(); + this.textUrl = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.textPort = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.textUsername = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.textPassword = new System.Windows.Forms.TextBox(); + this.buttonAdd = new System.Windows.Forms.Button(); + this.buttonEdit = new System.Windows.Forms.Button(); + this.buttonDelete = new System.Windows.Forms.Button(); + this.textId = new System.Windows.Forms.TextBox(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 12); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(51, 20); + this.label1.TabIndex = 0; + this.label1.Text = "Name"; + // + // textName + // + this.textName.Location = new System.Drawing.Point(121, 6); + this.textName.Name = "textName"; + this.textName.Size = new System.Drawing.Size(667, 26); + this.textName.TabIndex = 1; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(12, 41); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(76, 20); + this.label2.TabIndex = 2; + this.label2.Text = "Algorithm"; + // + // comboAlgorithm + // + this.comboAlgorithm.FormattingEnabled = true; + this.comboAlgorithm.Location = new System.Drawing.Point(121, 38); + this.comboAlgorithm.Name = "comboAlgorithm"; + this.comboAlgorithm.Size = new System.Drawing.Size(667, 28); + this.comboAlgorithm.TabIndex = 3; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(12, 76); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(83, 20); + this.label3.TabIndex = 4; + this.label3.Text = "Hostname"; + // + // textUrl + // + this.textUrl.Location = new System.Drawing.Point(121, 73); + this.textUrl.Name = "textUrl"; + this.textUrl.Size = new System.Drawing.Size(424, 26); + this.textUrl.TabIndex = 5; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(551, 76); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(38, 20); + this.label4.TabIndex = 6; + this.label4.Text = "Port"; + // + // textPort + // + this.textPort.Location = new System.Drawing.Point(595, 73); + this.textPort.Name = "textPort"; + this.textPort.Size = new System.Drawing.Size(193, 26); + this.textPort.TabIndex = 7; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(12, 108); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(83, 20); + this.label5.TabIndex = 8; + this.label5.Text = "Username"; + // + // textUsername + // + this.textUsername.Location = new System.Drawing.Point(121, 105); + this.textUsername.Name = "textUsername"; + this.textUsername.Size = new System.Drawing.Size(667, 26); + this.textUsername.TabIndex = 9; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(12, 140); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(78, 20); + this.label6.TabIndex = 10; + this.label6.Text = "Password"; + // + // textPassword + // + this.textPassword.Location = new System.Drawing.Point(121, 137); + this.textPassword.Name = "textPassword"; + this.textPassword.Size = new System.Drawing.Size(667, 26); + this.textPassword.TabIndex = 11; + // + // buttonAdd + // + this.buttonAdd.Location = new System.Drawing.Point(712, 170); + this.buttonAdd.Name = "buttonAdd"; + this.buttonAdd.Size = new System.Drawing.Size(75, 32); + this.buttonAdd.TabIndex = 12; + this.buttonAdd.Text = "Add"; + this.buttonAdd.UseVisualStyleBackColor = true; + this.buttonAdd.Visible = false; + this.buttonAdd.Click += new System.EventHandler(this.buttonAdd_Click); + // + // buttonEdit + // + this.buttonEdit.Location = new System.Drawing.Point(712, 170); + this.buttonEdit.Name = "buttonEdit"; + this.buttonEdit.Size = new System.Drawing.Size(75, 32); + this.buttonEdit.TabIndex = 13; + this.buttonEdit.Text = "Save"; + this.buttonEdit.UseVisualStyleBackColor = true; + this.buttonEdit.Visible = false; + this.buttonEdit.Click += new System.EventHandler(this.buttonEdit_Click); + // + // buttonDelete + // + this.buttonDelete.ForeColor = System.Drawing.Color.DarkRed; + this.buttonDelete.Location = new System.Drawing.Point(712, 170); + this.buttonDelete.Name = "buttonDelete"; + this.buttonDelete.Size = new System.Drawing.Size(75, 32); + this.buttonDelete.TabIndex = 14; + this.buttonDelete.Text = "Delete"; + this.buttonDelete.UseVisualStyleBackColor = true; + this.buttonDelete.Visible = false; + this.buttonDelete.Click += new System.EventHandler(this.buttonDelete_Click); + // + // textId + // + this.textId.Location = new System.Drawing.Point(121, 169); + this.textId.Name = "textId"; + this.textId.Size = new System.Drawing.Size(100, 26); + this.textId.TabIndex = 15; + this.textId.Visible = false; + // + // PoolForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 210); + this.Controls.Add(this.textId); + this.Controls.Add(this.buttonDelete); + this.Controls.Add(this.buttonEdit); + this.Controls.Add(this.buttonAdd); + this.Controls.Add(this.textPassword); + this.Controls.Add(this.label6); + this.Controls.Add(this.textUsername); + this.Controls.Add(this.label5); + this.Controls.Add(this.textPort); + this.Controls.Add(this.label4); + this.Controls.Add(this.textUrl); + this.Controls.Add(this.label3); + this.Controls.Add(this.comboAlgorithm); + this.Controls.Add(this.label2); + this.Controls.Add(this.textName); + this.Controls.Add(this.label1); + this.Name = "PoolForm"; + this.Text = "Pool"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox textName; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.ComboBox comboAlgorithm; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox textUrl; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox textPort; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.TextBox textUsername; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.TextBox textPassword; + private System.Windows.Forms.Button buttonAdd; + private System.Windows.Forms.Button buttonEdit; + private System.Windows.Forms.Button buttonDelete; + private System.Windows.Forms.TextBox textId; + } +} \ No newline at end of file diff --git a/NHB3/PoolForm.cs b/NHB3/PoolForm.cs new file mode 100644 index 0000000..3108bc2 --- /dev/null +++ b/NHB3/PoolForm.cs @@ -0,0 +1,75 @@ +using Newtonsoft.Json.Linq; +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 NHB3 +{ + public partial class PoolForm : Form + { + ApiConnect ac; + + public PoolForm(ApiConnect ac, int mode, JToken pool) + { + InitializeComponent(); + this.Show(); + this.ac = ac; + + if (mode == 1) + { + this.Text = "Add pool"; + this.buttonAdd.Visible = true; + } + else if (mode == 2) + { + this.Text = "Edit pool " + pool["id"]; + this.buttonEdit.Visible = true; + } + else if (mode == 3) + { + this.Text = "Delete pool" + pool["id"]; + this.buttonDelete.Visible = true; + } + + foreach (JObject obj in ac.algorithms) + { + this.comboAlgorithm.Items.Add(obj["algorithm"]); + } + this.comboAlgorithm.SelectedIndex = 0; + + if (mode == 2 || mode == 3) { + this.textName.Text = "" + pool["name"]; + this.comboAlgorithm.SelectedItem = pool["algorithm"]; + this.textUrl.Text = "" + pool["stratumHostname"]; + this.textPort.Text = "" + pool["stratumPort"]; + this.textUsername.Text = "" + pool["username"]; + this.textPassword.Text = "" + pool["password"]; + this.textId.Text = "" + pool["id"]; + } + } + + private void buttonDelete_Click(object sender, EventArgs e) + { + ac.deletePool(this.textId.Text); + this.Close(); + } + + private void buttonEdit_Click(object sender, EventArgs e) + { + ac.editPool(this.textName.Text, ""+this.comboAlgorithm.SelectedItem, this.textUrl.Text, this.textPort.Text, this.textUsername.Text, this.textPassword.Text, this.textId.Text); + this.Close(); + } + + private void buttonAdd_Click(object sender, EventArgs e) + { + ac.addPool(this.textName.Text, ""+this.comboAlgorithm.SelectedItem, this.textUrl.Text, this.textPort.Text, this.textUsername.Text, this.textPassword.Text); + this.Close(); + } + } +} diff --git a/NHB3/PoolForm.resx b/NHB3/PoolForm.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/NHB3/PoolForm.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/NHB3/PoolsForm.Designer.cs b/NHB3/PoolsForm.Designer.cs new file mode 100644 index 0000000..082f0dc --- /dev/null +++ b/NHB3/PoolsForm.Designer.cs @@ -0,0 +1,119 @@ +namespace NHB3 +{ + partial class PoolsForm + { + /// + /// 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.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.label1 = new System.Windows.Forms.Label(); + this.buttonAdd = new System.Windows.Forms.Button(); + this.buttonDelete = new System.Windows.Forms.Button(); + this.buttonEdit = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); + this.SuspendLayout(); + // + // dataGridView1 + // + this.dataGridView1.AllowUserToAddRows = false; + this.dataGridView1.AllowUserToDeleteRows = false; + this.dataGridView1.AllowUserToOrderColumns = true; + this.dataGridView1.AllowUserToResizeRows = false; + this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView1.Location = new System.Drawing.Point(12, 36); + this.dataGridView1.Name = "dataGridView1"; + this.dataGridView1.RowHeadersWidth = 62; + this.dataGridView1.RowTemplate.Height = 20; + this.dataGridView1.Size = new System.Drawing.Size(1322, 466); + this.dataGridView1.TabIndex = 0; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(13, 13); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(72, 20); + this.label1.TabIndex = 1; + this.label1.Text = "My Pools"; + // + // buttonAdd + // + this.buttonAdd.Location = new System.Drawing.Point(12, 509); + this.buttonAdd.Name = "buttonAdd"; + this.buttonAdd.Size = new System.Drawing.Size(200, 32); + this.buttonAdd.TabIndex = 2; + this.buttonAdd.Text = "Add new pool"; + this.buttonAdd.UseVisualStyleBackColor = true; + this.buttonAdd.Click += new System.EventHandler(this.buttonAdd_Click); + // + // buttonDelete + // + this.buttonDelete.ForeColor = System.Drawing.Color.DarkRed; + this.buttonDelete.Location = new System.Drawing.Point(1134, 508); + this.buttonDelete.Name = "buttonDelete"; + this.buttonDelete.Size = new System.Drawing.Size(200, 32); + this.buttonDelete.TabIndex = 4; + this.buttonDelete.Text = "Delete selected pool"; + this.buttonDelete.UseVisualStyleBackColor = true; + this.buttonDelete.Click += new System.EventHandler(this.buttonDelete_Click); + // + // buttonEdit + // + this.buttonEdit.Location = new System.Drawing.Point(928, 508); + this.buttonEdit.Name = "buttonEdit"; + this.buttonEdit.Size = new System.Drawing.Size(200, 32); + this.buttonEdit.TabIndex = 3; + this.buttonEdit.Text = "Edit selected pool"; + this.buttonEdit.UseVisualStyleBackColor = true; + this.buttonEdit.Click += new System.EventHandler(this.buttonEdit_Click); + // + // PoolsForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1346, 552); + this.Controls.Add(this.buttonEdit); + this.Controls.Add(this.buttonDelete); + this.Controls.Add(this.buttonAdd); + this.Controls.Add(this.label1); + this.Controls.Add(this.dataGridView1); + this.Name = "PoolsForm"; + this.Text = "Pools"; + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.DataGridView dataGridView1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Button buttonAdd; + private System.Windows.Forms.Button buttonDelete; + private System.Windows.Forms.Button buttonEdit; + } +} \ No newline at end of file diff --git a/NHB3/PoolsForm.cs b/NHB3/PoolsForm.cs new file mode 100644 index 0000000..c9305ab --- /dev/null +++ b/NHB3/PoolsForm.cs @@ -0,0 +1,72 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +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.Web.UI.WebControls; +using System.Windows.Forms; + +namespace NHB3 +{ + public partial class PoolsForm : Form + { + ApiConnect ac; + JArray pools; + + public PoolsForm(ApiConnect ac) + { + InitializeComponent(); + this.Show(); + this.ac = ac; + + loadPools(true); + } + + private void loadPools(bool force) { + if (ac.connected) { + pools = ac.getPools(force); + dataGridView1.DataSource = pools; + + dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None; + dataGridView1.AllowUserToOrderColumns = true; + dataGridView1.AllowUserToResizeColumns = true; + } + } + + private void buttonAdd_Click(object sender, EventArgs e) + { + PoolForm pf = new PoolForm(ac, 1, null); + pf.FormBorderStyle = FormBorderStyle.FixedSingle; + pf.FormClosed += new FormClosedEventHandler(f_FormClosed); + } + + private void buttonEdit_Click(object sender, EventArgs e) + { + if (dataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected) == 1) { + PoolForm pf = new PoolForm(ac, 2, pools[dataGridView1.SelectedRows[0].Index]); + pf.FormBorderStyle = FormBorderStyle.FixedSingle; + pf.FormClosed += new FormClosedEventHandler(f_FormClosed); + } + } + + private void buttonDelete_Click(object sender, EventArgs e) + { + if (dataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected) == 1) { + PoolForm pf = new PoolForm(ac, 3, pools[dataGridView1.SelectedRows[0].Index]); + pf.FormBorderStyle = FormBorderStyle.FixedSingle; + pf.FormClosed += new FormClosedEventHandler(f_FormClosed); + } + } + + private void f_FormClosed(object sender, FormClosedEventArgs e) + { + loadPools(true); //refresh + } + } +} diff --git a/NHB3/PoolsForm.resx b/NHB3/PoolsForm.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/NHB3/PoolsForm.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/NHB3/Program.cs b/NHB3/Program.cs new file mode 100644 index 0000000..5995d61 --- /dev/null +++ b/NHB3/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace NHB3 +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Home()); + } + } +} diff --git a/NHB3/Properties/AssemblyInfo.cs b/NHB3/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..1882f61 --- /dev/null +++ b/NHB3/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("NHB3")] +[assembly: AssemblyDescription("NiceHash BOT 3")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("NHB3")] +[assembly: AssemblyCopyright("Copyright © 2020")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("544db7fc-334d-4c5d-a298-61508693eb31")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("0.9.9.0")] +[assembly: AssemblyFileVersion("0.9.9.0")] diff --git a/NHB3/Properties/Resources.Designer.cs b/NHB3/Properties/Resources.Designer.cs new file mode 100644 index 0000000..4b329f6 --- /dev/null +++ b/NHB3/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace NHB3.Properties +{ + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("NHB3.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/NHB3/Properties/Resources.resx b/NHB3/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/NHB3/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/NHB3/Properties/Settings.Designer.cs b/NHB3/Properties/Settings.Designer.cs new file mode 100644 index 0000000..95e35cc --- /dev/null +++ b/NHB3/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace NHB3.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/NHB3/Properties/Settings.settings b/NHB3/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/NHB3/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/NHB3/packages.config b/NHB3/packages.config new file mode 100644 index 0000000..2e2e868 --- /dev/null +++ b/NHB3/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..b6bd659 --- /dev/null +++ b/README.md @@ -0,0 +1,43 @@ +# NiceHashBot +NHB3 bot for automatic order management. + +- [Features](#features) +- [How to run?](#run) +- [How to compile?](#compile) +- [Tips for programmers](#tips) + +![](C:\Users\bl4z\source\repos\NHB3\screenshots\00nhb3.png) + +# Features + +- Run on **test** and **production** environment (instructions on how to obtain API keys https://github.com/nicehash/rest-clients-demo/blob/master/README.md) +- Manage pools (create/edit/delete) +- Manage orders (create/refill/edit/delete) +- Automatically manage orders for **(Bot On mode)**: + * **price adjustment** - keep price as low as possible (increase and decrease prices) + * **refilling** - automatically refill order when 90% of available money is consumed +- Console window showing important events, API calls and errors + +# Instructions on how to run + +- Download binaries from here: https://github.com/nicehash/NiceHashBot/releases +- Extract zip archive +- Run NHB3.exe +- Note: .NET Framework 4.7 or higher is required. You can also run multiple instances of NHB3 - each in own folder with different API credentials. + +# Instructions on how to compile + +- Use Visual Studio 2019 or later +- Open project in Visual Studio +- Rebuild & run + +# Tips for programmers + +NHB3 is proof of concept (but working) application. It is some how extension of rest-clients-demo (https://github.com/nicehash/rest-clients-demo) and can be used *as is* or upgraded for further improvements in usability and functionality. +Main purpose is to demonstrate interaction with new NiceHash platform. + +NHB3 uses two classes for interaction with NiceHash platform **Api.cs** that prepares all required request headers (authorization - as described here - https://docs.nicehash.com/) and executes remote calls and **ApiConnect.cs** that exposes methods for actions used by NHB3. + +Majority of BOT logic is in function **runBot()** inside Home.cs class witch is executed once per minute and then check if order needs some sort of interaction (refill, increase speed or decrease speed). + + diff --git a/screenshots/00nhb3.png b/screenshots/00nhb3.png new file mode 100644 index 0000000..04d7ac2 Binary files /dev/null and b/screenshots/00nhb3.png differ diff --git a/screenshots/01api.png b/screenshots/01api.png new file mode 100644 index 0000000..2d202ba Binary files /dev/null and b/screenshots/01api.png differ diff --git a/screenshots/02pools.png b/screenshots/02pools.png new file mode 100644 index 0000000..a44b469 Binary files /dev/null and b/screenshots/02pools.png differ diff --git a/screenshots/03pool.png b/screenshots/03pool.png new file mode 100644 index 0000000..0e0bc82 Binary files /dev/null and b/screenshots/03pool.png differ diff --git a/screenshots/04order_create.png b/screenshots/04order_create.png new file mode 100644 index 0000000..56440e0 Binary files /dev/null and b/screenshots/04order_create.png differ diff --git a/screenshots/05order_refill.png b/screenshots/05order_refill.png new file mode 100644 index 0000000..b013c1b Binary files /dev/null and b/screenshots/05order_refill.png differ diff --git a/screenshots/06order_edit.png b/screenshots/06order_edit.png new file mode 100644 index 0000000..190f401 Binary files /dev/null and b/screenshots/06order_edit.png differ diff --git a/screenshots/07bot_settings.png b/screenshots/07bot_settings.png new file mode 100644 index 0000000..0045263 Binary files /dev/null and b/screenshots/07bot_settings.png differ diff --git a/screenshots/08bot_run.png b/screenshots/08bot_run.png new file mode 100644 index 0000000..d0ec828 Binary files /dev/null and b/screenshots/08bot_run.png differ diff --git a/screenshots/09_order.png b/screenshots/09_order.png new file mode 100644 index 0000000..74b4ab8 Binary files /dev/null and b/screenshots/09_order.png differ