From b58125455fe3e8ebb10f19f02383f9e0bd7884f2 Mon Sep 17 00:00:00 2001 From: mjjo Date: Fri, 27 Jan 2017 01:22:11 +0900 Subject: [PATCH] =?UTF-8?q?-=20=EC=A0=9C3=EC=9E=90=EB=B0=B0=EC=A0=95=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20-=20=EC=98=81=EC=97=85=EC=8B=A4=EC=A0=81?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Config.cs | 16 +++- ConfigForm.Designer.cs | 86 ++++++++++++++------ ConfigForm.cs | 13 +++ Crawler.cs | 176 +++++++++++++++++++++++++++++++++++++++-- ExcelLibrary.dll | Bin 118784 -> 0 bytes NewsForm.cs | 92 +++++++++++++++++++++ configure/config.ini | 3 +- 7 files changed, 352 insertions(+), 34 deletions(-) delete mode 100644 ExcelLibrary.dll diff --git a/Config.cs b/Config.cs index 6bfd1d5..4cce9cf 100644 --- a/Config.cs +++ b/Config.cs @@ -20,7 +20,8 @@ namespace NewsCrawler { m_Data.Add("manual-price", "100000"); m_Data.Add("buy-price", "1000000"); - m_Data.Add("supply-contract-rate", "5.0"); + m_Data.Add("supply-contract-rate", "50.0"); + m_Data.Add("revenue-rate", "50.0"); Load(); int iIdx = 1; @@ -126,6 +127,19 @@ namespace NewsCrawler return fRate; } + public static void SetRevenueRate(float fRate) + { + m_Data["revenue-rate"] = fRate.ToString(); + Save(); + } + + public static float GetRevenueRate() + { + float fRate; + float.TryParse(m_Data["revenue-rate"], out fRate); + return fRate; + } + public static string GetDartAPIKey() { if(m_iDartAPIKeyCnt <= 0) diff --git a/ConfigForm.Designer.cs b/ConfigForm.Designer.cs index 8e1b685..259b08b 100644 --- a/ConfigForm.Designer.cs +++ b/ConfigForm.Designer.cs @@ -63,9 +63,12 @@ this.groupBox11 = new System.Windows.Forms.GroupBox(); this.btnAccountApply = new System.Windows.Forms.Button(); this.groupBox12 = new System.Windows.Forms.GroupBox(); - this.label5 = new System.Windows.Forms.Label(); - this.tbSupplyContractRate = new System.Windows.Forms.TextBox(); this.label6 = new System.Windows.Forms.Label(); + this.tbSupplyContractRate = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.tbRevenueRate = new System.Windows.Forms.TextBox(); + this.label8 = new System.Windows.Forms.Label(); this.groupBox1.SuspendLayout(); this.groupBox2.SuspendLayout(); this.groupBox6.SuspendLayout(); @@ -433,36 +436,19 @@ // // groupBox12 // + this.groupBox12.Controls.Add(this.label7); + this.groupBox12.Controls.Add(this.tbRevenueRate); + this.groupBox12.Controls.Add(this.label8); this.groupBox12.Controls.Add(this.label6); this.groupBox12.Controls.Add(this.tbSupplyContractRate); this.groupBox12.Controls.Add(this.label5); this.groupBox12.Location = new System.Drawing.Point(280, 316); this.groupBox12.Name = "groupBox12"; - this.groupBox12.Size = new System.Drawing.Size(262, 57); + this.groupBox12.Size = new System.Drawing.Size(262, 82); this.groupBox12.TabIndex = 19; this.groupBox12.TabStop = false; this.groupBox12.Text = "공시"; // - // label5 - // - this.label5.AutoSize = true; - this.label5.Location = new System.Drawing.Point(28, 23); - this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(77, 12); - this.label5.TabIndex = 0; - this.label5.Text = "공급계약체결"; - // - // tbSupplyContractRate - // - this.tbSupplyContractRate.Location = new System.Drawing.Point(111, 20); - this.tbSupplyContractRate.Name = "tbSupplyContractRate"; - this.tbSupplyContractRate.Size = new System.Drawing.Size(100, 21); - this.tbSupplyContractRate.TabIndex = 1; - this.tbSupplyContractRate.Text = "5.0"; - this.tbSupplyContractRate.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; - this.tbSupplyContractRate.TextChanged += new System.EventHandler(this.tbSupplyContractRate_TextChanged); - this.tbSupplyContractRate.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tbSupplyContractRate_KeyPress); - // // label6 // this.label6.AutoSize = true; @@ -472,11 +458,60 @@ this.label6.TabIndex = 2; this.label6.Text = "%"; // + // tbSupplyContractRate + // + this.tbSupplyContractRate.Location = new System.Drawing.Point(136, 20); + this.tbSupplyContractRate.Name = "tbSupplyContractRate"; + this.tbSupplyContractRate.Size = new System.Drawing.Size(73, 21); + this.tbSupplyContractRate.TabIndex = 1; + this.tbSupplyContractRate.Text = "5.0"; + this.tbSupplyContractRate.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.tbSupplyContractRate.TextChanged += new System.EventHandler(this.tbSupplyContractRate_TextChanged); + this.tbSupplyContractRate.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tbSupplyContractRate_KeyPress); + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(28, 23); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(77, 12); + this.label5.TabIndex = 0; + this.label5.Text = "공급계약체결"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(217, 50); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(15, 12); + this.label7.TabIndex = 5; + this.label7.Text = "%"; + // + // tbRevenueRate + // + this.tbRevenueRate.Location = new System.Drawing.Point(136, 47); + this.tbRevenueRate.Name = "tbRevenueRate"; + this.tbRevenueRate.Size = new System.Drawing.Size(73, 21); + this.tbRevenueRate.TabIndex = 4; + this.tbRevenueRate.Text = "5.0"; + this.tbRevenueRate.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + this.tbRevenueRate.TextChanged += new System.EventHandler(this.tbRevenueRate_TextChanged); + this.tbRevenueRate.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tbRevenueRate_KeyPress); + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(28, 50); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(87, 12); + this.label8.TabIndex = 3; + this.label8.Text = "영업(잠정)실적"; + // // ConfigForm // this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(548, 385); + this.ClientSize = new System.Drawing.Size(548, 441); this.Controls.Add(this.groupBox12); this.Controls.Add(this.groupBox11); this.Controls.Add(this.groupBox10); @@ -548,5 +583,8 @@ private System.Windows.Forms.Label label6; private System.Windows.Forms.TextBox tbSupplyContractRate; private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.TextBox tbRevenueRate; + private System.Windows.Forms.Label label8; } } \ No newline at end of file diff --git a/ConfigForm.cs b/ConfigForm.cs index 88f0bad..3d1a93b 100644 --- a/ConfigForm.cs +++ b/ConfigForm.cs @@ -156,5 +156,18 @@ namespace NewsCrawler if(char.IsDigit(e.KeyChar) == false && e.KeyChar != '.') e.Handled = true; } + + private void tbRevenueRate_TextChanged(object sender, EventArgs e) + { + float fRevenueRate; + float.TryParse(tbRevenueRate.Text, out fRevenueRate); + m_Listener.OnRevenueRateChanged(fRevenueRate); + } + + private void tbRevenueRate_KeyPress(object sender, KeyPressEventArgs e) + { + if (char.IsDigit(e.KeyChar) == false && e.KeyChar != '.') + e.Handled = true; + } } } diff --git a/Crawler.cs b/Crawler.cs index 22f6564..e601a47 100644 --- a/Crawler.cs +++ b/Crawler.cs @@ -41,6 +41,9 @@ namespace NewsCrawler return; ReadSupplyContract(false, "강스템바이오텍", "http://m.dart.fss.or.kr/viewer/main.st?rcpNo=20170111900149"); + ReadRevenue(false, "제일기획", "http://m.dart.fss.or.kr/viewer/main.st?rcpNo=20170126800508"); + ReadRevenue(false, "LS산전", "http://m.dart.fss.or.kr/viewer/main.st?rcpNo=20170126800581"); + ReadRightsIssue(false, "옴니텔", "http://m.dart.fss.or.kr/viewer/main.st?rcpNo=20170126000525"); } void ResponseAsiaE(IAsyncResult result) @@ -53,9 +56,9 @@ namespace NewsCrawler try { string strServerURL = "http://www.asiae.co.kr"; - using(HttpWebResponse response = (HttpWebResponse)HttpReq.GetResponse()) + using (HttpWebResponse response = (HttpWebResponse)HttpReq.GetResponse()) { - using(Stream dataStream = response.GetResponseStream()) + using (Stream dataStream = response.GetResponseStream()) { using(StreamReader reader = new StreamReader(dataStream, Encoding.GetEncoding("EUC-KR"))) { @@ -396,7 +399,7 @@ namespace NewsCrawler float fRate; float.TryParse(strRate, out fRate); m_Listener.OnReceivedSupplyContract(State.m_strCodeName, fRate); - break; + return; } } } @@ -437,6 +440,161 @@ namespace NewsCrawler } } + void ResponseRevenue(IAsyncResult result) + { + REQUEST_STATUS State = (REQUEST_STATUS)result.AsyncState; + HttpWebRequest HttpReq = State.m_HTTPReq; + bool bInitial = State.m_bInitial; + State.m_Timer.Stop(); + + try + { + using (HttpWebResponse response = (HttpWebResponse)HttpReq.GetResponse()) + { + using (Stream dataStream = response.GetResponseStream()) + { + using (StreamReader reader = new StreamReader(dataStream, Encoding.GetEncoding("utf-8"))) + { + string responseFromServer = WebUtility.HtmlDecode(reader.ReadToEnd()); + + dynamic jObj = Newtonsoft.Json.JsonConvert.DeserializeObject(responseFromServer); + string strBody = jObj["reportBody"]; + strBody = strBody.Replace("\\\"", "\""); + strBody = strBody.Replace("\r\n", ""); + HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); + doc.LoadHtml(strBody); + + string strXPath = "//tr"; + var lists = doc.DocumentNode.SelectNodes(strXPath); + foreach (var item in lists) + { + var cols = item.SelectNodes(".//td"); + foreach (var col in cols) + { + if (col.InnerText.Contains("당기순이익") == true) + { + string strRate = cols[cols.Count - 1].InnerText; + strRate = strRate.Replace("%", ""); + strRate = strRate.Replace(" ", ""); + float fRate; + float.TryParse(strRate, NumberStyles.Float, CultureInfo.InvariantCulture, out fRate); + m_Listener.OnReceivedRevenue(State.m_strCodeName, fRate); + return; + } + } + } + } + } + } + + HttpReq.EndGetResponse(result); + } + catch (Exception ex) + { + Console.WriteLine(ex.Message + Environment.NewLine + ex.StackTrace); + } + } + + private void ReadRevenue(bool bInitial, string strCodeName, string strURL) + { + if (m_iDartAPIRetry <= 0) + return; + + try + { + HttpWebRequest HttpReq = WebRequest.Create(strURL) as HttpWebRequest; + HttpReq.Credentials = CredentialCache.DefaultCredentials; + HttpReq.Timeout = 2000; + + REQUEST_STATUS State = new REQUEST_STATUS(); + State.m_HTTPReq = HttpReq; + State.m_bInitial = bInitial; + State.m_Timer.Start(); + State.m_strCodeName = strCodeName; + + HttpReq.BeginGetResponse(new AsyncCallback(ResponseRevenue), State); + } + catch (Exception ex) + { + Console.WriteLine(ex.Message + Environment.NewLine + ex.StackTrace); + } + } + + void ResponseRightsIssue(IAsyncResult result) + { + REQUEST_STATUS State = (REQUEST_STATUS)result.AsyncState; + HttpWebRequest HttpReq = State.m_HTTPReq; + bool bInitial = State.m_bInitial; + State.m_Timer.Stop(); + + try + { + using (HttpWebResponse response = (HttpWebResponse)HttpReq.GetResponse()) + { + using (Stream dataStream = response.GetResponseStream()) + { + using (StreamReader reader = new StreamReader(dataStream, Encoding.GetEncoding("utf-8"))) + { + string responseFromServer = WebUtility.HtmlDecode(reader.ReadToEnd()); + + dynamic jObj = Newtonsoft.Json.JsonConvert.DeserializeObject(responseFromServer); + string strBody = jObj["reportBody"]; + strBody = strBody.Replace("\\\"", "\""); + strBody = strBody.Replace("\r\n", ""); + HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); + doc.LoadHtml(strBody); + + string strXPath = "//tr"; + var lists = doc.DocumentNode.SelectNodes(strXPath); + foreach (var item in lists) + { + var cols = item.SelectNodes(".//td"); + for(int i=0; i6uKHX~;s;Ju@L0z>q)^maxexTP6r$aRY$^(*%{K zL)=gi*+i})igHB}1w~v?L_|^ax<*u75K$EO^?LQH5dNR%8(oM;}){H+o0zLYaz-De`#;+ zt37Xq{cpb`)Oqn9cp~MUWU%jjM~ayESN6RwXouo&-bA+@;bqSw1+Bjv_@OP#^M)^c z{!1?eU-V#_ddO_NzBdSap;O zvFa1xD-JcJxoVN#Ws0h|YOVa4psQv>U9s4leuL9qmt@PI(tA<1{1$nA(!AaaIJypB zUJZPa*#5yBzHJVu$(sd!Ex)bN@2k+V<;QrgT5Mi_0XVu&Uc12G&2JZe6@E+kt#~Jo zYr6*r}Ao%x{z!6*-1Mf*U0M?(KA?<{Xhmf=6({W{T%=kU-9 zm*~v|UiEXMFM$0jWns3QC-2q{00wo6P*4r(dEZ`WTG$h~@Vd=mOC0tt_xiYdt#_{u z7w%OK`>}gbpcMRO7yKmWAKf z(YP{N4QQ$w_~{1ulWFP!To9}Wu!6X7L6v%x@opwF$dsaQPT_3TYYSakeYu=0^p$6o z%Vp17*05Khc5wZr2-#^^>?0VhlnC6Fb%Y>Sp`Ha6Z#K8p$zpM2!(RLax%Gu04!isV zzVULt9JOSWHWRD&X>T8d!fq7(dLLX0bt+`gnGM1@V3zn8R^qck*3uI8%T+4K!p576 zJzB?`5?Jhasa;R1rJHarKD%l?GyMt~Ug!+^9f$Sn3y|hR8v4nj(`NeHO8A}|l8=Q) z&?L5qCdl_@d*!{nX`sa6d;3RmxG2WQP;A8zMbP5^#18oPcng-b`JV@WYIK};1ClOM zf7P#aqnUacTCC@A7m#tuoYfX0MC!nN#OZu|k{sc#Fd(rmtt-4;Mx87@=#ys2!#o%L z-i^K6QU$+nV`*EeGdsA%A9!-(c?0D$x^fj%6m$oJUHOH0=5KWE$=&%Yo(03IeD$5# zlL-dr6f+gv3j@!qFXB~M%;Sm`@>9%QLGGtiZhdb$;mLdKKlXqmmMXjPuA1Jj!i{=R zO#4y~PK= zR!qKx`clbaQjPR>h_}y{w%*W*hhRlNT|bkmUI;Sb^Hk;4W}bta{xSzk z`dBJBj$O4x4GHP-1nn9)RSj`vGVd+e&G9_kuOniiNyv;}k(H<(l_aGrNN+aK)l-C~ zEU6OImlKZSppfARaBWUdIUR@2Z1^Hx&Ltb}iBk~nWzW5NF8?m7K{pvsO&R8)SSL{w z%{ryG&>1nL1Q&XO+U%J@WhG!&E<6jKxor4iUJzG79QrX@3$~SzCNeR85bleEv*NMU zOd8d3hTCj<(r~Z78p+I_cGpg}cg!R2taeYv3~5hCvBT9FGo{6jV#Y-xG8)R{shlmd z?&?Uf!|XXO>$~$Y+vPVr6NB#Ztl!&p-?$v4ykn6R&12I{|58_1Z2>k(+A0K_sP}UR zr@8knLOLH^h^wjXyUt>@)iyJ|ZMOX6t7i9Id|h7cSuQ?$s1;g~K+P&`Qs9?=MeLUJ zs@$xET;xiRUuNLs-2D1}$_t{QGb-D63@%t(WR{Lx`3bCj>h!a&Wx_e*H}vfCbM@76 z_)>Rmw%-t^Yz1oN%d4w6o6bFuzfltBv`9*7>B^cph2*4a2X0Usi`dOaO1`3MifFR*;LJW4m@!{Bzw zS{;?Ff!$q^vv#c<>vzhs1ouJ{^=GQe3ktnQmQE@g@(>bvVMk^o%4L<`Yv40ec{*jB zmROuKaam^UM_E>DI&XB|$tuqzuFynV8Q?<&BUOg7J?u(X>%of1rI-m1lXMLQ z!G0VL5*7Nd63Mg0fsSaVt*TZfycbbTTYjCASZLA@mM&adNuBs7(;#-PP6~2TC&l~O zIPp|JUxz>_WKteTVV2+2RVgg0t701-iR7-X9tA{QwE{z3JsLEwtN4tJKOCfu5Hs^k zax`vVmwEG!boEw!30f}ui$@DhI_nGw(v63BH&&+L&)_m>Vh1y|KEI*2dxpmnZ|`XM z97S(*qm-7-oyym7_?kU@pXCWA+anp|iMUxP5-_l>vYa~QHzYy$Y$A1_NwT=H3Q>C3 zH}#ScQr=Q#9G}V_s*HX*Fb-y;l5-1m=UNdho#v2qCOjUIs!6wzZs(Q>=`j_mV>hYa zbRyuz7bm?fjl88pC8|2G4RKm^lpHD6Pl8@Zch;r{S!3mAD5|H*~m4YYo#&Qez`m(9(7d#-nVS1xCQs)YHGAz8>Mb^VT_u^fn5m!e~CqkcnLK)&~hocyRq}s=Wut z;@3&w+{y+*cV_D+^Xl>|&*e2(_Uotc?#|`IQ+eMae}zY9=Ldtl8#>L*Y@01&F;j)7 zYoB-Vrtjg=1VN^LQB*wIXvTXR;ZSHtWf5uQ*W%puXdxI30>?Q=W;uRYZ(xbzr?Nzi z^RQ@1nbY;tU`;iw)5|M#N3st%*?ZLIX~$6jIRjs{&Y2yN=p7Q>%BjkGKfI^Y?^mic zS647O3x4H!f}hW$Gus=!fOn8hUtzvp2x48!0&{0Jvu6B!Pi@d#_{}P$U1}rIdYx!8 z97=p4=S1>nA&JsB9LbU1sQ_UjZkL9=3Cqa0=#)~(7>mF()0s#_SI#9Oo68uFoVv#2 z){j(EI+Uo-hkqW{M65Paa_Qwt2PbwjR6Ir;klvT#j&g2qIb_^FS(qnTO{f5 zLJQ#%B7c&@`ODO&_M=&W$WLWc#O0y{7wIFxr+0gN(jJ=f%E}u?`KGUG{Uu`PTM9aB zM`qKNmqHksSumx5V6Y+eQ=f= zYh(VrUD|nNkz$sd;<{@~@)?VEsGJ+jW%J>sVv>(U@q1%``JsoMf^&n}tc%ns{?PXK*h|^7q=7V z3gS$ZzjW#NOeqT2S?fzLJ{&fg#fN82i805{?9fjgzgA7{*`vc-3NNNCkl$Io`W7@$ z@aOdQ)?W_PN$cyElYs6w@pQgiGESaKtGFtC{c%Dps%wyoQ#L`AH+MZ`G4VSa?M%Sfr zMF?3vl@O-CXOAol>KC{v%o8P6P(N7>Mo_=eVQ;pVNlUp3sw@49Wb;cC#$B!6ad*@^ zRz2}m{@wUv`+Ze}*>V3^9$bHH2g7RDKW-Uhjq8_^+})H{v(S5?ehKMf#X-|v%{*;y zc3?)cpm+HmdZNuv1HVk(G?{YGWal-f@uDnXGU!O%0Mht{B*7R2J;mC=#bWpxoVw~h z>g&!ks%7j^XwbtfG}q(1MY&v*(TMVTAsfUwZ=B(B1*D-nAMGj@2eY6Q^TH!_3RBQS z|G?sXT=BjEdTH5F#hCaLh|RS;T9luHyr{_tvQ2sdgznk?N!rhh_M+y2yaOtw5;#z< zU&*Vd!<5wnxgpj)*%b>@>io3CC}zW}@VHMfiF~!f=j#88ntSrad@;MVN!ScfuJLMs ztxc9f9C{f*@A|Dx);b*FH2}>ehLye4bg#L);ErOXBgdepP}^9{6$|0HD7>e$*tz*c zd=0NFc80$v(!qU;o$1P{(py)tOVRJERCg5%TbuhCl*Z>@@EKw}gRRZgA_m1Smk)*B z^*x1R0bwQGvg;Y>P}xz;$bta)8sMN9*c+5Kq5x*EEFrT+%v(chUh}nWPd^<6E@8$e zg!RK$Abof(;Y+KxP&*i(ijwv#8$nE#-k$E-X#LYl$+Y^I5<9&(z1ZD+os=?tLG!it zE*DRutX?j7S_2TL@Qo77Ve0J$MhJ@2ToSv{c~5t-J0ZieH`gClJjgl2Jhl3DCwRx* z>Xt5h_Q-k{k=+&96;m}6I~c6gP+zbKV~`q}5p2RZq=s_ACd^K1u&@4lq^7r5xekH) z&geU>`EKOQR)b9#^3>p&!7X}M-h^xU>8GC_D3wZm_3ObZ|H5N%cMIQ@bKc^qWlT|_ z@)jO_XUuU7b5&ViDqqC!1{}|6u0a=hqI#C1GMi3KDrSOPL@-zNUpK9i^ZfcYl~*Rx z(!qtIsId*2CrPXH6gQQeC&fag2-1N%#VIw1f#Za!+;pNmEvkP_oG1vT=3xq+4Q`P` z<*f+SJk%)o-9T-M{pO0fUgtL#TquV|8E?*St~z$7#yOZ_njV{{e3S2ayUU)PN<@YF zG^seSc{ew^Sx-Y(Pw)9im-DTRQTHD}9l5e*YaMBQ^K($Ljn9g1)1vj8VAbs?c}IC# z2}Wt=tBwT=9Q_QHMzm%8nlCXm&27Ha-hJv?%5sP^#ePpj&pRYzh#$TUQuuZrJ)JAw zPm!A0S-DAAkZw>QsEv&aVHLgu+R)7Lw0AqsoZN4&O-BN?yF z<4DHq(s3l?^>QPX-k?g_e1(um@`B}0gw;PEXLpo)u6U7G?;_1B55>MQKiRphG@wC~ zHCO89d;8C$i18-4cOUwCHOMqz{lyKl`UFqlhJX5BXA=>70d^tl)iVEHOVwq3|D4~S z`TdUHQ~acT+Gkr$Tnl~(zoYn_!0);I&g2I#n|*yL?@Rez#*Ze`!vc9!L0dU}FYgcX zn+dPO`OV=+mGgGvH_UG@e*5yvmV5soSqk`_4*p8sm-C|$@EA|q4{PMz#P8kwZs)h6 zh(l0EtLit4Qly$%W%L!dmLZCIr1c z>Rz-7!bquJ4>{}+hrQTg)1A*7-0N27R&*FeN#VL3*5h7pcdu>Er{}zocKM{oq}QVk z3moDx$YuZ58zz|>jAt_upZSaR*`rAnOm9n z_bV@edAk3M)3zFi>acSin7;8FEEqW?4Hmmg0*$fPkwZ0=xu}1A25egE(BdDjLrWIm z11aeyi`JwilUtLPM7B1OrW_v*PyP9u*6Rv+DeWYLgG`b+>^)%Ub{S3tkdA2CrV5t{DKZ7LYXQ@lI<=?}TJYzLqjflsv{h*j3*!w* z1`8D4rXcU*;TDJ94@AAES`^ZIbh8|LInW-Np!3mP=tfhU3PaK25W0y>Oge25voz%9 ziHcq=T8BC~isTN$U9pG&)rUAyL&(`SrU5(g_0mu)vi9-3U)MZf**TV&(0>oqzo_DpnyVe*y8E zzarY8)cmzx<)^WG&EFV!HSsrp>m0G7^7DJWdYgaLYYeH*Z~h6e)LA>Kjt@ExwvVWJ z55!#gPfrv6V*&@(hC~wN%C8{45bi;))clBCvdxe3@*7f9E`(H|C%l!})Y;2#_sjn( z@m9&h<}^=DSOiP_`hW0hE{9MZ^BZ~(&UEj_XF$>+EDP0HR%eff!z?R9^0&D0X`b|F z^coigF)2;6M;48v-VHTD2tN+qJF3Y)w6pFSLFY=HFs7{#Kepxu$aWKn8ffJ!3V=`=j&yyNfr!h))J;3N|Z3kam)_Wb-!d@ zOLU~m;Qbx^Y|#%$zy~H^RORL~Uc8+&ieX4;FOWttjA1dfRU_zP7{g-t3|EulhG23- zlBfE+hQ!K$J3kk~ec~FprS(u8;&dODfDcc=D8i-n)a|5IOycy3Neqig42y}uaehi9 z+H$?FJj?Y6G$rlk%+8F;=^2)ty{%-CbdlQaq;zm~@6$UL1g=wh0n zgMk^=;@3Z`tUf{lWy1#q6ACy8v3k*dlF_qV=in$@s_;~~I%#TsTp~^tx^-?}4;d|X zwzmgZ4BY0XXrk*MP()8FZOJmgsJuO8w;)mO%dNB*h;%~Q-GVt`cRVjA4^}7Rd=o43 zO|L7@inhDBc{%09I9cZZW3n8-Gg;)}ACLvh7SKzGY{IoD!{qU8iLiO1Vsm|>V{q!W zGBTB(%nqD@Z@;0Z*496-G9m_UU0RT{9k${)X|D*~l1VmDtXzF>D0uiFEZzF^7l5>k zB;&#Q^A~x=>(9s=b(D6V8>Gqgq1t;zCL79E$4bFoXFSa94($Jd2-2j;w<^i{1UxF( z&n~FUMCr{9V3BT5gXdIjfEd{lJ5@rA;_4wrF)TI<)ZGepp4`dCaNrNIF>LRR|2NXW z-uN%^s$MqsQ~F1KLo{3T^BbaHF^G~YUzU$+{Y&H+EgXIY(7!}pww2^36k&b!)byqr z7@dXmg#s#HgI82iR2`R?x> z>zRT)w{MIo-buda^^LKQU=n$L-x%{BlgJDD#@;stc_2T3>}ONa3-iZ*GZnp)vk8Bl z%Asq)7-R8C@eXt^80(#iKCORjx2fpU`^Wa0iaw)%?2xJG#r`oiq)(1_=G-x63MSKg z=8m!deKLL4+%bBUlj*bPj=gOvdTHL+?NiYg&l&sNRP-ft#(p*xeYZJdJ?Sapt;`wQ ze=7R!ePb`1ieBv-``lFYTHjc2W(xj;ePb6)MIV|wwsk7{@Z7Niw>y?P#2D})XLtljU#2c|TOuoX0ap|fp zVW9mTph9}4SNSf04RYLibOF-$Aay=EfUoZZ4Q+LMHHT%~7C?B!207#RX^yOM(|xVB zWOck_?u4kdcYUKW^0yGwl5Qt3cAM_e%G(_@sYDs|9p-quu5$U!M(xMo z(^Lv*lB{oac9Q10Sp%m;r9ksTH^66a$^2o)!wlpuc`tL_75X(nSCDJo29jemPUoA& zo$yC+XA|~w*l+z~ff=7g2K5ro3m*p$*vIuD=0vnE5j3x-B55adLtTXCzr>h256w4& z1&v$b&ho@h2nt79`ohpH6mNELQ;QQ5+OCgO^EO`Y(y8+DKIDFufO-#^4yX0YbR&zXv4t1Bhzw;Q#G}H9i0LHuV6f~D1FROF`eDi zLD*xXrRQ2HeM~Y46Oy)2mu1(Mi`ua+jJ!1t(K)tJCg4UyyqLKR>HA|e?<!Ni++O8kZeZ6{HzOp#vQ;Yx5IGI6vBP3u zkKwvkKftvBtL`(uM&vx%d>7zJh{H$XMaRh?Gk@#_*-g8V-tcG0vf@ARKzb<}ne3+h zME;1#6kd_hJmf1x{ty9IJZR+XrqxhvQfURgz3iqpfOq8@x1oJ4?yU2nqEqcm^HxZ@ z^f6u2-m2C1T z3VFCc(I^${3$(Kwn|MzH*PrOK`EiECdryL%90;C?TKPentN8K^aQ4qBy#7+id9Bs+F*40;?Q|+(Lt zp|OztT8{ioMHWki+HUFKI*z$0GTZCxBv@K_$6ccg(M^8FjupPdU2fai+KlyME^ z2g=x$g`{sFZ9;RVXy>6R&E^Nr9d$yVq8U`nY71V>^l!+82f|bPZY))!BQ?iQJLcOy zoooLF+8TNHiyg`MzJn;afv3Vx&;TaVu-Hlx$yI^M**y3Q5gk*wBOSV^mj4b;l4xLC zq=S}1t=PCIpPU@!e#AwTdgZDwpy<&WxzTRp*D=H(bG*xM5-xFFo80wtr#xG$fEuT6 zlELE7um2Vn&6^N7s!|QXrONLhhrj3H8==?s&?N|cl|PL4F{kp!@r3@$zmF%(t^8>` zVP1u%CK=28%Ady*7O*L$@|W?nfxMk7YCk4) z~Q%MPAds9S;SSanS#8p<1&TIev!)*F{~CZbDkvE8aWM&Oro!?{O1In?O*xp z1j>PxzfGVVS^4_}%25?M3&{)`IC^5i7&xZ#)C51rR<@0&*rHflfa+zgOr=Bez?N}T zpz(a_ zUhV#x-%xbVa0Lc=+_<5Ao~LCLTZ>TK84xW(sZCx%nCUy#-G>k$*4S6+h|O^ z-{ar|Rkl8vfbVti9MMf^$@QM?=vucT)2dZ zVF~jL^A9`JVY{KoBl-|i)zABtzE8uFGG;Ij^+5HiGe#>kKhq|>;gvMq&HK!^9fI$o z$}aS6{XRD^!*9qbf0cZNXVLEoNwYgI=ol{lCN@K3Qf#-kc4C<&R>ft@^-aZ31(sy- zVxdTGvCv%rF&pMSJw^+})U+lFLdH}%K-f3b^IlZ}F;w*M_W%C0wYzczsD655`*FHMC7;IudkFlSE&dNKLF^WcI z8K<%xOhNh4QP`H99XLkYMBLmW@@cE*xHVnh_MlFEH^66A!ff;7xI@m--2lG#Jop_j zG0hRfeTd4I>mguxDy0d}#rIw$467-b`cvS-4Hvwz9Bj#f>Y&uI#gRJz?XNl8y7s~}lbet~vOl3HW1zBk}G|z#nhJmwW=ay$uLv_aq!YDMxls7ee-)6VoO4P9QWs z)%M-EF9Cl#hHc)cP6`fE+mWu!A!UW2uPK=WH8=_tSXh^}4JmKwqQF=)L)I1emBR_t zR8+nrXDWSC&^SMbO!CA2c$BC<=QoLe9q|ur%LH93#lXGBR6WaI80ZTR_r^3 z2*P`qY3t14Wz9vLIYN@*6-Y8X61fj-vx%|V0*7bKzvliFIy>7Oi=0zH_#dF(z)lp< z9u(8#W8eaSzKM}W3FuPb$8(vbr(|-P!$d=wJUcWyt~{%l*<+d?itK!OyY?VcL&<``L(~zEOww-3j@j{+t9VD?hk@0r!k9 zkRnr%O;`{v6H3mojYB!}Jqg^(ly8B>nIacuifAEr!ZO7XU8aZ@xv#fOaS@Ct0?U*O zCS;1alPSybp-d5;RWHuYMH)8S99x+}dNijV@;*f6zJkRG3hC|==aJWQFTf2PmwJHm zoDI2uu`smU&(`m=?YMs95s5t;YV&>-c*AoI!8zTa!2NgOr|}wx?}fxpTCMXGGkGSk z-)Uvu*BvzD>Ks|YR`7t4GrM)+#!FQ%-S{j|6DA!#0OOFVRal~Wld?eo(;>)@HKf{x z3wZ@0rY?|qn&5|d;wk;4y&vQEF!NTN-zc*k-;*PY9mBHNf#2uC z$z;b4GTAXKlMTOu^ChE=i}j!otp&?y2Y$cvB&!{JlHrMAS?w5>)sA6V?HHETCc1Mg zN06$f?6#Dme5d1Ry071hLRl3aD2Ld+LQ@8u&~q@=O&M@tx@!ez3?og!ksv!B`<7jeVKc^&&Sb)^ETwhM-0gqA@+_8MhW%2N zRU3@NHR<3QVYWEqQ}}+}i#^KN82@mU8^#q6QJ$@#tn7}Otbg15J~Y3fXJskrug^os zf?uC6Syldn$^d>lvwrh42*EMNc2(d;64e5>@mT|rwU(n&ZLwBG_c`lqf^H-hjp6d#B*Ms9Be z*MqEVjo(O@o8K#XyNv;Qay+SBK^*yGdaT$6DJ_qX94C$IIREHI$LwlK01DytDoX z;zOoFX4&*CcHY3zumUB!13A)mPuh`_(tQ#Mn>yWEW(}!YJ4kml=1rzIZR2^TUo~K9 z%{=T-zexVyq~HI(`2JD-YVDkUsQtNabKl55=}Dc>9=gG@iq54nq*6JaBzwczAk7_~ z3b&)kue7zH8Eeo7yJJkvbJZasfeN}Si+K}W6FUgRej`jE%sL;P3yGLo*TnAIDz~$2 zbDOK{gI@WFcn?t8ZqFb+*jejfq>UAK8F47!eyR%+?(NJ>Da4*22)4O3Ua})%T(zws z7Is=MJCfLx1xSZTRTwNq4$e%|AQzhI-m*JcX5DAT!v5AqW?qf)ITEFCR#QF7NgmWf z#~#!_V*~NtljbI2XB?*as`yN2P@!Q_XVpTp)s0?5FvKlOxe#+7SSJGdUrRt+?ekG3ztzIzHIraxF zx!g$Liz6RsD6{!TgpYmf9>hMhUq$*k7k*Yw-QETpZ#C5qOSJj^*r>v(8(awHx-L;~ z)Afd20PCo@UTajU1J@U@DRS4TaG+Y4I6u!LZrYNl4_{9V_hHLcL@hp2#SOGpVX zYMrxIZ7Q=!xor@M+HCdCmp_v1+c=JP&6ykc+#C&J_M)&vwbM+BYwi*r&v4n1j;1)Q zJyw_1+D_H4@olcMF37A;HrCd|Wk-Z%Ys|+6p*Hr9^{{AXycDFv1yPBN)?uS!OW)c!Ohc8Nu7Q$A=SQ8BIEiL&Yu4tTZY1%qS0|Wun{yql}_xBlY1vJq}>H~lVg_cvB9ca2RRdd&rx}cIyNec zX5^wAmf5qEsGxNPoY5q}jjjDhzm57wY<_ADV4Zc3iVpH(UDZ){@|OvI9Py=F8=ATU zZuwFfYVT_LjXQhZhhOCpy?0K61lL(^w{}+j#`5I9V*ggb_jvgBxr7C!@-`?p2E8tE z!4{bZ=h&Go#VK~4vRfD(+DXtJ6?^g|Roqoee&w?H_KFTw^ ziz?RHk*)uRLes^#Uhd5kFfN+Uc@D(zZ#?{TCRc%q^>sE$<(qhlb&P|?XpZlm1Ws!k zWDt^ZfnApsR6pc59yf=p5OIjCHLQL<#Vy2)A(V4wBDPSyJjUdCa2kE>s(#=i>T0qn%A{$jRm9?Pt z{oAyTnH`k_L_3g2^UDf5$GG+u9$ghh5OF^UA4Au%`H%R0CnFP9g_X}{Hpj1g9crnd z*77SrT)nThGDCVeB5iFY^EzT*?XMp~sEZkc`1ais%66o)LeT3jE<=;-(s93Ptj|98 zp$*1gwwbe*S6q_i5dn(+k!ot59QX44XSq0iZcJRXc6|I?Yo>}o$4vQwU5_%xQnanK zI_?(Y;&R0$e_Ls7%Y{1R=6}{Bd#V04;?_`B8SCr-bH(1M+^|91QL&*bliPY+mg=&e zlB$FAxjni$RX@7*IE=&ALhUC(_3h(IHJyldiEq4y%7z}OHIYr)C&~Yug&xtdzNupSVNm^>UuPz^&{QN`p#AjIm%5taK&ukE>@R5k!aUHG_L_>`>CP79 zu!-#hr}Nxq4lUwg18otnm$zU3HIlX6a&l`O&R7=h0Fk}Ocvs?cx|M|j5lvjDV?iuZm%SOUd+KO|5LOQ0B*Krt+Fp6NNrF$(ox@ZT!x{~;vP{4+0- zWctpKryES)qS_oqbmpXu?~Uek*@E$Eh>6>ZF#x@HbZO47yodr_qvxGoFwCT}g`9(9 zjqS#UNcY&E7R(*1`u;>$wtr*)wp4d^!NvvKQazbcPe(~t(do8@7L%Tid<(xHK0VCa zmE#X$f~j zT|yx1U!90vPDUS@!4*!1w9T<}va`BxL)4+@s?7>=eH*g5Yi`uLcYW!`*5$uX)TT$_ z`Zid|f(`0|ki`{uw`#^~5XW<$iO$hzLTMOA`)G%s&RX&r@hGk7rF*!vnliYV-X$^b zr=5E;-FcT#8fW#%)*{C#Eje653+&GB%%+#_?s%px$z4P_YP#y?G7#MfUC48$Nbg*9 z-_E}9I#s+DTQQ-}IH9z-;uA87TS#n4^4;C^u1Ko>GYHTg7uo_V0GcwKx;*Z-)AHDn znRV>{(jwWD=g3o@<(;!BpT{Q4=Nj~U8v4o9FH(C$=XN+~TuIB2&h~Fm-??D>CxgaS z5v^~1n`+(P%<``$E=_1%Jk*c%Y3?G+AoG1@WWLWZ^PR;?IX5deHz9+w(X=^}Y_!?g z|HJ_sZSY?W9=HDRH|H!H(fqrE4;1{QgH_F&PbFabxh-~2Ct&&qEqW>e`@kyWzV|U? zoyulQz}TirzzDuXlC>9V+3Y0oVq-1w;thEc&pP(_k$5pI@nXgjFNP&v3`;zNx4${a z?qs&HlW+G$pH4E;I*P8tbCu^STY{!(IcS=K8(4B?^j|L9f4 zvU$E)OH^vA>!%!;;cTXrxWva?mL7l>&`GeVOkc05wEL!kK{}Yi+^1k1Z1-$5JD~Cr zp0G7-GLByt{O(70P4>ve?LCV+R(2weOkFd{VBGC8uLbK}d2L8ICVYGY%qD-MDf!3k zDI`t*kCeGc*QKoKI+A)=s%8;^R$A(F-@BQzcy3Kz(9*t6fq{?u7Fk}JDA2p|5)^9X zFm3mBV@#MIItm+A@GD32s=O2rT)$ku&^)TX9zlKGNB$cVA z`&aU_I(EA~KW5L*+Vd;+d{|HM)!Z0Hjr&ZGA>ze_!P5f^>Tbr~J1`CoSsILqkwYrM znD{wlmtah69nxQ0U?~ZRL4fRssB}!@c62^Y4J$z5jXW8&FhZ;{t#w9u^CY}R=S3e&5OrUkec*Y zbOxHD6;y9d(xUtPf;faxLDk|3dNVTHR|wqT;g*Tc9!Bg;-{&YG@enUadRfNF|0^qSdkjc=TihS z=M$Z=I1xyDe&M3UvXgklXDkkGX*|wlC7fK=Yy8bmZjSvhZ{G9U>o6DpH|ndM8@0Jk zzg+(=l{55Ep7KcyM(NRoPi`mq@`uSdtwnttIbN`1y;WX|MT>Q{9la@ytP51)%Kqu}9-IN0vnO!C0-PL+%NPQTCfhNH9Y z9D*`=PJw&x`YHN=rMMuwe%0adI9+9zU1sgGwX)GvE6skIeJ=B^Eh>LAEdyEd^*o?M z&$BanJ{IVCD-%N)OX=3voUXn%V0Rv?nRq|F+|H~W;SV<=8=9F*!cPO_i-mN2`C?&s zI#@nDgC|aB@)~-C9m(kAkXC_HJLJ;b@A1to32E^i%lk!2hsDGlmAWjzV(P99P<#~; z@&5~|PwUHn1-@%w(RQ(vNWE8N-*J1s+mW#ZMRZYoJ>Fn+Plonny%jng3GCJlu%xvW z=Q^X=f<7d(TQ+2n%GVNes;xozM;>3tW~J=wEg_@T!V(*51~xCb?CZVVwRL=(1iFo$ zYxA{5EMVl&4zDvAoL*q-lCDc|;l7&<8CmFKDKF+_Mj^1d&t)Itw$r)DN&iJR>~a^P zlpCJIV`#?M&uIO|_Rq3_bS{L8-DM7um-C?XbgXy>2_$;D1BDA|qWQ*T7y{Q{PDbkB z$XPi{c`5Ibnh(#%HM~Gxex)R9@>u(~hMhm{xx#BC?HJzjVSSwEcvqJ5WRfobtR>0C z;3%(iIh(UvAdv40YR<~zneyTYM~6F)z;)l8M~J>p!&aR;kT_b?-^07>ad%eZ|JMy4 zRQ1EVrqWG(C|Lcir4$2OpQ&6(ZVmdqRr^khZ{N7ou$ASLYdBoSwx-si%x_r8RM`21 zeX;6D+B*LXcq|mt5|#alSIlHCo|#`h)#?0ZyhjOh4t(pI5UJokV={IurMb(u+Oy(% zJg5SN7vZ5hXKvQn8yw-n@MU~1jV6e1GRzOm$$cfIPA|6*(vvM@OX16Sjh!NvwbeNT zT=->#-(xTlUVgS0-bBLeUktM)am}T!l8(Zf=W5qvB*#qM>~aazwhZh%WXW3cm!D=> zIy^1LwlOdr$+6Vkz^&@H4rrSm-FJKGBNy3T*0({Q&cOJpy3WnzujyoW)Y!QQTxmj& zrkCs^i0noCVf39Eo zVbFHXufZ?;8wPq#wm1Ja z1}v|Hj+n3F6~3BBZ`Xu;TK@6C?LUeuMSG-F#^N(l+JzUn(6G1dK|ck#^jE(Oj$3xc zy)^bpsr{X3WB%ARF*q=N?42#RckIpwQ?odSWm_iZ7up)|KMHIt|D25eL4DT-ZAfk*rPzBdJ)oa2SWb%={ zhY`*+ux*KbklnEherXFKCMM(XDTDu2y+|mg-3K zJzM&VV(QYXlJs>!!wk{%EC(0bb<0}3oV(J3$KSkI=JL5yefB56PXUlR6Y#Q zR0lC=$i1Qav9j)yG*+g3uY>;CnE24u9(ONQ*R1ZG-6Q61rrJl1UgC19ff;L=MD$kN zC31X672m+=q>Q_JrdC|ja?)mZTe};s0%WlPBkS^;7Tbx*qcYVBH@!RY!cb?vRsdLq6V z>K8ShLbvJW&sBfjombOWEWmZ<^eOJVno*olz84mI%_+{9x9ZC%HX^J#7I?)Ij_?#d zR&C*dqgpSwMy+sK`oJv7fp0r_tDXQ}@j*gmH__7g+;3*LT<7e5>s?fx7+S zUx_Jg*RR`Y?a1#9O$>ErMaH>44q{I?-)jb`#`Ohwes3CjgKNV)*=8NP^#%E-f#n=j_4s!9K*C z4lh?jnx4Cyqq#5Vd{uqbs;MGx!ewDT8ny758>HM$0w<(7YOVid8KTP>4 zxL1}CQz4jljcphld2TR2f}RtUuIbFKqdm5*Rwdqx_$}vGW5c^z`$0a(qj!T5HJ@1P zyQcC+M7`ofDoxc!6p+H}AXPWNNzb5E*^St&Ik8a&qSz>7v)QB$3~E%8)IU3hn08W* z)Bwi$wO;~On*;p;BD2q{#qeR0Q@m+Ir|esbVXR{@jA3iUqC7biCh=0P7>--YEhy$G z*DY@L8}dCwiy#iY+foTdIhxaz3iO$gV$Lwd^!*_=)~q|wBP=uzhePa*uivz3(Yixt z+q_%9b1CV4DM_w3t>2k$QmonH+$3`{LAtCiz_wJAg2pgJyn~R5Nj9u#zMBR^=ej5_ zSjh?NQ06&&GkzHz(>^I|w$dOHV_=h&_Fdv&`H!7zNLQDMLM|lksL;jb8`ljAO=hr^ zZ%7#K-qfWa{mMDYOa@;}2Dl4}JGPZrAB@f!#owbo(i_?0nqlU!m8!HoMOGr7WiTran3EdVs8LXo=Z-N52U#6iHTUCye{e5_hOLjcwQC5&By~eMc zQ1|Ak#-8lWdx_JF?_KNdevgB>Vut<|rvPt4;O0A&mO9f5h33sXs+;4jV*09Q|C3#Zi+K36W)RM>NjG?4}dvNPBTMuA}qm- zj+qi!JvE{+K#0PGcZyC-62&n{#PlIKy17mab+m`R?NePphba@ZH-tfCK@+4b!b@0F zRtsTZS!f~D`3cAi;{0zuhl1!nnW+xD0lV?Ujqqu&@!=+|G7>h62}MILz%@!;bmhJJCVY@>|~BCqJL#eA(wd z(dh{|*hik)SN^IyTo~*Ns4e_$IdbjZT@md4e$8kU=8_TWQc(G*ROC3iPli&K6_;Hu zWfus?uC$1$L5h%E?K7d(FhRGKkt_n)~M3j%#HAysvq-A+Dsdo zenysOr+t)Ge{OYroqW@!O8NiXou`R)+g6`oGyyYsZqZLpz$~b?=q!J_w9-GCGOc1B z_X)&2hQ&OF#XN?^Jch;G;Qxva4ruG3ymK9#N>r9-+nYm^hksO-R*zrPGESVyU6rm@ z$3t!u$;9>vf1KNy(U#`Dx34>yjT9Bx+24cn3O?m%yJG__{Et`ivh zXSYB1^4^u-5Wf}t4&-+fzfpeA;}`O)j=hhnz2#i#b*v-b0#9j!54FMb3M~(*&KCI5 zHaM-TMZKpD_I9_ZFKL0!_8*B1O!XBvhswB*VWaGv1Pis+Ij7cJ`;M1rV^rmC*|EyU z?fD6N-eb>Cwx7eBS+vcB_lk0=!G8ED5R1ft)yU6%Nk5-%`w>|E+t^JK_r)+9`=X$8 z1ho`azaLLq6jl8*f|LY{trUJ%!FB(Rbgn<6Zx*NU0o)uat%skB(Ng&N7z`f->K*Ac zZ=uP^{K{m0l4ra8dbh{#3oz$!?~hF#37Jg(woH~Iu^@&-f-Ltdd{2gBsyt|Pt?ko3uB`CzJ97E1TsYdv%Ra%> z_@1cW7q!p)b1Z3b6f_EV1x?G)C;ZAIcyb4jegMP)B*f7g1x>AYX%EC)h(q+CPKfeP8W%{4gk9~k3P@ucl>DF#m_z*r9;Qo!A?5`v~}K;%IW(=nz7^# z(#N%AFHl!Z?Hlc@w*@%{w#B&+Wx$mvL<;1?9*Rr(>`H=x+fw={)XH&wj347DD;pJ3 zQ7Z)IIo*^#X@nk=L@GmReV^Isd3&69RNe%-^7a!TmA9YrZt4O2gy5eE)>8G)0j%sjk954;@=3uddjXNj3NFXt zGTxtv;6CsbLp)Hp#nccpr#Fkps*&NV0(o=MbKo!bW>=vn%Ihz1pwNj~Z8_eByYl)= zxo|RzSMyhb`^;Bw;Rhc>nkY;ZzzXX9e&yFLjACr>mtz0MKCvtfU4sHM7~X;2dqyXRh{1xhN`na<4DyT{hf@8^kag}{^+$T zrQ_<*LAcQ0pbkk#tvaN7q@O#hr*uE!d~{~}-Dy7fwrkn%m+G5ko7FefMdv21$<4Ias*8PyrE*MNj7q30oav?t zCmTzsH|iVcFYQWJyHE|!aimLB*Vu~2SYU4W2jC$;U7gP0KsDG5Tf(ihluI$3%dg4j zjMa56#c(8LeMGXckoLgJ?mOp1E!EWU7m2FMkh;s&c`M9OeQw|JpA7S`*-F*le~7Py ziunqjsE3g@U*?b!@;0XOJv=j+SPdXagiHOe6j5z@Fe4SE$OsNjq+__x`HwucA{qXC zD}58>kftX}-IhbHm4E-IIggVV*0-vOXHPg8ZX;3BiPiSB;Qf>Qd5rIBLU8oIAhg1e9=tj|u*NxO-3@2uEl69<`Rw?)&(anEsM>mRfD&3gQChA6>pOJ3T z-gnRujRb34s^oO$)Gz3)t<6RZ%;aQUt&#N^XJDp94ibW!5h6^ncRDzszmeOMS>qI) zbmokqu=kS|P(Fr=!S|>RF<)S-t4WO{_&+eVKJ?+MOPHqB>1; zUbC(eMFF#k3h&Z4T#9m`oujS;7in$Ov=&tRH~&T2+d!iK6M&ls|H=#OZz4za>bdCk z)#!D_N`Q3Z?>L1|^4RAscyPE88&5%GJG58~?agQ81vvL4Y<^utiNG^bE50vw;Wh#d zPIoRdQi$^O&bV*^lw`6;g>FN^wxcA7jTA(7WSd|k*`zQ@czc4?)}<}IPe#3`{3vK;w^?~V*>JB(|i)alxBe?^Ui~BPS9qtWGm?18sm%eLk z46)=nz4y|NXDcj<(bteoq-W&v?kmbWmu)|7XInDIYU6S&E(uPn3HhTSiqq24JF;tF zl0?|7AepyhEAy7@RZy_V$CAJ#b}5g1GYQ?+XjG7*98|7NDoT!_V-acE3W`%IvHqZ) z$Yk!<#^wI_L?#4?f+P|-kWD6`$jyiC(mf+pyC7?6ic{!3JMki~WJ^MeE`lAU&@mjJ zLP;2>kdJDq{0#HqPf60dY5`>`?fh%_6X2-5(H$OROLc;a(d9N=FH_3cZLk4f-LQKj z8Ox`EDhFr=A=)RMwlCpnd^^RBl9}bd)qRp_Zw|bVQ<-hual=QuvhI2tfBB!R|D-b- z>gT`4c=;il!nkN{Ue0a!X9q=!4QwIXMGH%_?#+>wE3lIs$tdP*qkVUNFvz=G|Kt7j zd9Sj}hQ6%XxjPVF8}ZK@|4u$3008UtF}vS9TF4D@ORIY8(LE!+m-l+hHXVYl++Glk zM@ofEXKh+KSj-ZVpS{LyInJ=%Vg2%7$}TESt!gXIGVd+aRu?Z@>7sa-`q?<kK?CXHKyRV>>uPej9jlnzS;2NHBTKbH5DUbI-E{b;i?Sya!@prKr>{p6XD)nF{Z_plIb_UMhRysqy>8Q{W-pwU- zd-Ha8>$6mLO&?Xq{7c4|v~0YOou3i-en7jlM;5_6X~sJj&7xxz*r%;Mn(-2l)q#b? zvAs1QKmPVda}!a?zNGctxhdB@uz}&Nq-ezw%scVY- z8@EZ5pOhz;ceA~D%Us@RuLSp}>JFP?Z=F#lH+^Dr3!OSo!KGPceRr~%N9x?%W5_`4g4}W*z6KGuQ`nurI>|@LLJ*5bm#4?b~u}ew>GtQ!|@PveGRU*P1jpX@SAX9 zr>?ZCwSC~;=DQqiy-LO{1`n)gvgDu9HVfnNFXF*2(cb25kb?=IMdg-p=Z*7wx_qU5 zLawK$ws2;T9g)-bZ-UAxBv~6fE3*NL0ryrg|6Rb#nKWuc-()L8Px4G&HfXR(Efe

7b*jt1-F~L4t+mlbmIjeTa%vmnZLj4v+*jel>HP;hP?@@af3wExqxgnySq<6m9 zY2Td9@>aTGV{&~Exn?Eh3K|p)wxA#d+wc%dXysJ2WZ|-wysYjG3wpY6rtNT=jNoEd z<&@ZS{bBj)&ay*QagGZ+t<*EUwhFnXhjWRmIIS7U>2UjWGg_P;&coG3H={VMIAeX! zwBmHm^Gz?ZmB`L3&d0;@k6K~tDHgf#<{IMCQ8ws3vuiVF&aSY!Q0SS7<4kjeQid}0 zQxZRWTj_bN(p@Z8Qx#3vJ>l(9N=>860B=Yge@6^o;SapeH@a-#ow#2m8#q8Z3&DaW z1v;bauDaHD4RotEm1-<=&= zT&Fb-xD1G|L$8BHG01OiQi0hKPu%*5?i#7nz9-sHoFjgzGY6k8G3zEG>vUYn@xH7( z-bcCQcwei-fZVSBF7htAAwJv39qM#&uU2}f`&8eTQ*r6EcM*a6YLHI;=>EHK7qr)$ zNqvc62Cqe7Wlfo~OBr~*9pBE`!P;I&3U?(~*3PWw>?=fdYzfud@!M)QclhB#hFLQDmd~pJ9Bw!lN*1n8p0^Xc}FHOK(5-`Pz zuv6{JeFZL2U+~@A(UXLW_iRYG7?yA`Ea75U!o{$Ji(v^D!xAorC0q3JN(;VjEJG-z{;K1r8%fhSs=qD-yG39nyLaxnYt(M~;K z^x}VB^}hbK;$!c;v;Rk@F0dFDfBkWKvXv#6u`Lo`pJ;s*?{v5uB<(76SOqM)$@AYR znXi@?cUh-ED3=)pc?(T}Q8?78fGo<2O;{E3Rli>2-4rFd=+JnSDFItt;BpGX(|nCQ zv^&>~hV7=p=cslL%#M1ns+-SXAJS{ZD?0!9x&(Z=gAY_aczpuCA_2bv*y{32wo^vM zJT60G9>ZcD!(txq5f}3q7V~G=Z*FZD^`+%22^bx3yb3U}UGz{T#+=i2gU!7)K3N^_ zy^iHzFp-)lJve38v~(kK7!Fv-8(Lj@U9Eb1m3lJ}{oAZG|8XMt~s%ZZ)ouRwiu3 z&a^mgICf@~Dre8TTZWPE-wmn+-bkpZfL%L@#B}<<$lVUG+4(=lfsMC98tV2duck?1 zEm^4F5FeM8w6~ZvU5l>LZg^PmE3d$75DpO`)hWV;RS{-Yk8)wt;j#GP{&`Ueud&OU zsR3`4ZE3s(?)y+=JO^^utTqqqgE6EJoCe`m2f8^mE-gWqg`WJ1196&}uW&4i4c%b} zZfxY{t}Wj5O7>ZVbFpKe`Fdp%o2LsaeoN#t3$}k+y*=BzZQIe;eiIi6(sS=9cRfA_ zfi=3Yfib-snc$|z$8D0VbyMTyHc3XidHXn$>~-@FN2&wEOXfM|6_I4gV_p$S20i8# zkz~swUcQ~xr001jf;KP2!Ks=)l61{W%C2>hTJo^4GEkps+Dw*bj%fA1QQ>ktt-O=@ zKiu-$N@us+s{7LkA}4f*fhTKqE zZAwW5zdZqKuo=_ek$~TsfNxH~|C)f`m4G!UHCy*qWSOepA^~EXCIMnt0>rQch+zp3 z!xA8dB|r>IfEbnl2FHD&g6j+EHO0B_OQR~jnYV98J`?T2K|9yyzTzI~bH4=4G?(aR ztKN-Brjw1^(TSME@{36fi%ATN$uqR`DkkI8#d1Y#kTsWj$Um8`_FU6@lr-zhoc>Rw zOr8UK`QBDK4%<#T6d=wE`Tob{ZMB=b#=@%Y zD(^5ao~@=>6FF9Xwl{Ys56|!m=PDcHo3#ahKzqAT(v**`E#1jDMPoF|_WhDgW3(97 z7%hf1Ml+dD-HtxRBp$zrNeqig42y}uaa~@Bm{X2xlq^QiiS5bhR%6FSrWbG6slAZxd48J*XuuOZyU@!SA=hu11Sx067kw0btg`+9}1(2ruW zZK!i>_i6E@LNInTa7Z-Vmu7cGR;XwFi|Dg8`n2A(Z zu4FuJW&)h-Dd_Wv^dcGT1&i5SqLp`VkGC&X{84j zv~P^;=9ay*edGE<^y5?7GMJA+-Pq6}J8~c)@qlvNEqmiW>>aON?(Gdf&y@p>TTVir zwhSuGX%HDSM)1M>`=2(bB_kyJDPHmDd z#I0ql_y|6tE5NL zIxS9uXwhZm8rL^Q;q7&oIJpOrE7AVY^S#QO<2pFU`@)ane8_muA|hArj`}Z@JI1AT zs%W99+4X3+b}^$fTa9z00>8sX0{%4D{kPN1<6FtuEo(aFSis-|;+MAX?DU`9{2&;W zTjiz~d1qOk%1d~#g!cJPYvmKFplW9`w(fp8e$u6-ontq7)ch0C_{EGx#pq-WN(G$4 zMpiMg?`Q?#*U>(Q)I`Z~M>wS#-n6r>ZvNB!!u`e0>{FREu<}#1RaHI#%x2B3t;Awy z?jafWDcxTO_OT87)MWh-=~zuiq+_1^l5i?*@r%9sXqsAzjCN} zeNw#qhF;Bk1<$tDftT6@UTVQKg{7}t@ePVhirwhvHNKk7cy%E83bWmgBCcAKA7 z7;8@4w_DTUVJd=5TYV0fA>I6}4`_0?9ja)G=3MLqpHR&ZJU~2_*B!Q=?ehBb3cu91 z&rJ87+&jvi>5*>Vjy^W!R_lScK4)4A>W3?RBKi$I;idh@%;DQ#+U{E$7+BUh_P$n| zkPe?spooKA*Y9BGx%4(J*nwKX??QWCW6$gDd0*~b&>yttx9s`n+~ZLEy!_9w=g0E5=L7E>dHGyd z5WL==pEcKxuD^B$-t4a1^9Aqlu2o%u_xvvTyr5gpOYM1Ax48Xanx4b6Z_iKjruV1& zr+JHc68k*yykNfk&sy+!uHfA@aO1#C?__ZEA8)Sln6=Wp$qT_e|B?YW;lPh6u=XWR3oM!CkGUtM#@n!tN%%`ewH=oQzB ze|fDaYwdaJ+GBDfQM}gy2i{xld5=Bsx94N_{G&aO-(P;t=UMXZ-v6fk1Ml@VgI`|M%PTE_>c>&%f9+IOrI3ID_JOX3A-@cF_5&kM<6L5=N9! z`~=>02fd42$gERtzGj^$cdb+GPZ+%P&|jjTLk<=FltZPfHy^4z{n(+(({J1JFZT2g z6QyX+L7sv4?!&G*Ebu;kn8GeR{FvNKZ{y+0PMV$MBu&S2>JQpkt&U& zM=6#U9VNbumiZ+Sli>*M=#a{G0JtupLS5w^y# zCnM}A!!jw!*~dJz!c9v_vVLy16xIi}FW8BO&5PXD8@3p%gH%4(uo1(`d}T%94oV%H z>hQ|6Z^FjFj^Rd?a}2vI!p<}7jplQacfMh7Gg_y%hZ;N4HG`F?vqn6t@E!;YGxe5D`#dj!s%7p#eup`(VBWzoQU1eC_KQ^_6@xwKS z%>g?G>`jL4?n~E4)6-J8Azykqj{dl?RfZk!-Dude!MYeHy~D8M3_Hntmtm(G&y&4d z4Li?Qj-Bk?X4octcA&pI4ZGaJo$7tWu!8*v3FL^I#L%=T$d#(3nbNhEo-__n%3@fB1*_*tF3>!!*MQ`!G zZP-Gv4zTYSHf-2U-ggaKm6p!l;XPv5v%$82J!*5fr>B=t#^2%n*xb%Ho_9pp%MAMv zJ28~LOAY&o_e;ZGVc30)!{v6F#qe40KMlJc>`CtdZ<}GaMwp_T;eE<{KH&L=JqWhN z`@9zz_Gp9^4Es}rO-q4#e&*OzH$G>Y+q8`G{hh+{{hWD+^;~8pd z>I(Du`;79voVwPqry}glV6^QWlDeFFySYsV>+%++ZZ@pPuxjevhV>gZn7Yldg@z5K z?l7zh*1@-0K4jRc4&};l>Tbi1?vSpBQ=c?!Lx*Hple*Wi7aEr}sm~d<$*{GlFB;Ya zdy#i&>Z^vm8lJ~^ho>Gg?9CDOEyHd$o=2pQb0X|B#`C1q zQ|9(1i*J1@@jTL$ZfU?uXlLxL*(3;>h)g^b{tp-rKQ(=o@Utjsoe~F3D^Sc?MlNgGq^)!|-b+#^8}>1i zy;r4PnR>BdPgo4EN}X%iFX6JU_uAA2hW*`mUYXitSRt#}uTH(hu$~BenPL4|mCvhF z4Z|v6$9UJLHXF8YR%y6CwZ*W5E!^8uml<{x*o(Y(r!F__Si|0vy3(+d%;&ACYYjWq zu-j7C8}>qr;eDwa3~Pct>3tyecEhd#+XD6u%ZGP^b%VXj+&&1G4sWyXuzQTl&FNdn zqZ!^;vMR|pr{7~fA2#gP2>Yp};nwu~{X9N@3%0xWzVt`T=U2htxktdJ9z52Wul zo^uVmGkveQEjH{fVU&rvIhBwH(_b*RJ;9cE{|1&OhQF;-zx>PTe=}?)ljhj7^fwIq z_z}XsoBlrid;S<%V9(M&g-iecN7|dfRaLG3|IgY7I5UGXPvUS(%S_G6sgg-SK?shD zMJd8jDFlS$m>HzktgNeMW<_abrRS1aSy@?{QCV4OS!vh0RyNx=Gqb#T>;HM4wa?~Q z_ukj<_4?bZH|w+J@!4yyz1cWxU{n9%ti^t!*0~6rDV#051{~kg=3GHh^pbFw@J;8v z@HybTAAHUA8~C-0;~aN+R1}@#?g^gfJ_8);J_pQpbLePch4@#w2cbdr?hC;=?%{}2 z>iG%$HR>dI4q}dPNmk5@BACMr<~hP|qByr!Pk5~^HKK@XHNNFFPrw-8^0x3j;Xj36 z3XckZ6-IhFX0$L_*i+aKw9zo{6UcLvmrJ>i|LQGm^WuYs)X(MyU-rg=?|M_f&%8ar z@4aV&C%gk}ih4(vfEPt`THW?5#64B0`=>rSfc)nOuZtdpR^KdKExae1TeL~yZx_BQ zF?S312;Uce8hr)I{UW*w{4Sb%;Ai-cZ#gBT7BIc{nbK%|-y#Q^wHfA&2JT4)&#q70>Z@E`S=M0R<_?DxQ%xmq;)i&k^ z;bRhKw(te<`9wzcX-Tz4Qhh4yEoqlX=yT%UA#t|IxHpM^inxc1|4E7SoaB5&LY)%& zv6M1K_^NP)#2hB2yex5!i~nE6XPCIBNj`?;JWb+XDKX>4=SB3-_?B0NZwucQejq$3 z{6zRU7@FHB(esKNvCLFq?^y2hH=W$K8)FxMucC)_KaX$uCYJl{U&7&12TvUPbP;BN zQFM0P#)zn>^Wu19Yq5T@I^vi)!ZE^`;y+vXgqK6di+`2yD&Z{QeBt$AXs+sYdSe`~ zTwbRk|L{5do7BY7h3gY9?Ae89&N;#hgck`5y725O6ZVwVbW@j~BckY@E<7i{b}`$# z{2M;nl5~jwTTHZ(+x}sfn8@)h|0n#nFrq8_c!hZ7815`#nS}NecTX?-UnK5PppAZy ze+P_8;ME-mD(WuoAB_*-?{XXj@1{>86%9-H94r-1PWT%BtqCXLb4$X%!Bq(=O3~8^ z(NP!BKNIhT%{&5P?I%u%f(1+D7L9f@ok`3pxNW%0sY2*I$`1}r;(og}iTif3xR(p> z7Tzy>B#Ha;Y2gdP?Xt$-NUDX!-jnn^>hM7l*XLs?Wq2~jA1%~2p(2?}sZ8en_a}2r zYK4swXST3ac%v|)E3f($$)BKxY)PW1Et&baV(-i@5YuQF9)slH6*daf4x`GdGmrgA-h7e=S?4DXi4afS(7(zw01rLjf5Uwj@D zZWsSI#r=`+nE3pf#x0FbXP%SJY0nq;DB(=u65(UQ-mynePiF>~_~+|FdPXKr9Q1tX znZfluD}(dAAfr3{&vA2mW1Y;28D}}-sQ>7QG(|NT!yJmP%gA+vY{GE+4UX|Go;c>e zVsAj`fXrp!;LJssIU_Rv=Fqe80veTh8*+AcF5_eGetZ=vR95>fc_m#HQf5T2MiuU(p%kxoBuHj+fx58sg)9Rk=`KfDs%fE%L zUhIw+_7t8iJWrS>EE7%^UL|Z2&KF)MTr9jvc)M_|aJ{fy_?YlX;j_XQg)a-=5WX+` zRQP|wUxex}Tu+xUQP^ELNSG@u6IKZug{{Js!Uu#~gwG3K5xy<_Soodrl+b+!mzXN- zBfMBxE}SlG5Y7=^CtNCADO@95D||@!wD2|IN5W5q-wRI)ZD(@1ZegnM4B`30JYkuz zLg*JZ2wQ|Jh4%>`7w!`NLwH1ZO!%A7-J45H5M~Mc3I_{wgoVP(g)@Y+g{{Kn!uy1e z3Oj^v3l9m83V#zu_u&%LgnfjAg@wY)g^j|Sh3kb+3EvccB0M2^T4 z3zrD*5I!h;O8BzyBjItO>uk;~OL&2BlyJPTMmR$_U-&oS-NHwOF9_cfek?pHq`sVU ztgxG~zwi>_Sm9;D>B8B$=#5f%$42^)p2!aIeJ311g}C_E~( zoy++r3(pb`7ZwOhg}-HS9N)RTqnIUo{%$sQuQr(Ja_>+np;LwR!hmq0aEb75!qvii zgd2rV3ZE7368=MYRQQwdcj1+?tM~Tja+8JKg?)vCg-dZZjs3j1ON3VneR78~P24ku z^M#9qHwjk>T~f+OVNYpqoA|#g?)$|3kg#3&wD2Y2o5KCV&xGF!e-xe)MhxH@dW3Pp z6yZ(MpFPBVmaw02pzvbhI*Bt{+~vY6h0}y@NDXI+dx5Z3xKy}YxJFnm`K%LnP`FvR zMYvVCL->;L4dJ`OL&C3x|0f(Hxg8Vtufm9d+(wshn$#*<+^NF92nPzYg+;9xL^2@@N?l0!hZ=P z&XZ9SCJMU=&k_z44i@GLM++|%u9dssuF?+^#ivG?Dn5?*T#rnIh5X801}ZV7!)cu@F>@GIf>!e4~H3!?^c>#mowc1o>UCC?b~PZVYe z&lC<64ikMSq6Ydv&B>Y_XweYy`UqajY zTyw85RhS|Ci|{qEPV;oT#C@ss*tOEeH8L(S;_fH$4~lz`xbua@!m*NSoVX{5`*Lwt z3+sf}2=9{qUn=fZ!u7%}!fnD1;hVw_gvq)=VRwQ>q$gsH+agoA`R!XjaXutr!f zoG)A~TrRvzxIy@&aEI`1;fKO6gg*&?6Gq@GK;v8Dgqgy=!ePSE!g0bYg|)(2!s~^% z2-}1k2lLs~qr#_ghd93FX>q?OygrNX8BY%G7ZZhFg1Hck8^R~I;dh{8hw%NyrC{jf zichO>#T>%9Re(`+<&eopTPrc&w6jl|gE@N$-$yJGt`M#t!gtV5ihKJIJ~iDf{6u`d z7p|7m%Twa!b6`FVt3m$152=m8GnJuyFLvfo+^v}Ro4z5p#&At;MV!%|TVpPu-?DB) z%;=GKB`NxGB-f$Os5aayoj2Qh?Zn-5^hmzz{BxW=7jc~8V&(*)U)Wr{6FDpcyQ=)L`!Y(i_<(&$@<1m)1)r*w zW3V%T_hsr$HOe_3YPP8=oC~2^M6F1EH}ye#1nm*EnqF|;fp=Js&v;@giSt!W3Hy& zuIHilm}-D)Cw|NMh^Qr0=6V(1rdfk`FHtk{yWYgxKU+ktrbgF3JoV{|-zwu=7Pt=L z_i;*1wcPayo|mmN)xEB7DUObd((S{$8Tq>Q|;`Vi=4g6Xa zO8>wWrMgn`*`m-(n-JFBQbD}EG{{n$pf0jh5O4QYYDK49thSoU=4MrZ7v@5xC(t@m zap?)vpI=_a^~L3mR|z!TRB7%sl}NXW;udYf8y9z2Du^!5^26D{R^qKogl|@@ERinBSUSKlA zu2wy$##A4>n^Z3fiqa!}25qro&QoX55i4d3KG)EDkj~{}_Y!p$T_sAVJBI>h*jMgb z)H$@=R4+JJs($pirS4GY(hgI7@4iP3pgmUD!|FUbZiQ`9=Tm=tw}V?$=6Xh5NEMda zu7=P8Q$>58QNwASrM9b!sl!xRo>x^i4ZlF=lI3|zK;HAis`7lSMw3sJ zZc#B+nqeA+n7M{csrU^lV_kYk@k&XrF){14vOM>jy5Xkt(?xVE9iYo`HU+l znqN$$C5|PY%Zw{2#Zu7v7qs&$@fV-gKERl8>zRFNocF(=blQ*j$6Q>iHKv(d(6 zS}#i5x+?mYR_HUIF@n%ZHhp|%NGmf^8;M6-Z1ep^0iOwF!T*vnfn9(>0a~ z;x`$Vi_-HYK!;4leI1}Ng`qq*LHR5d#9ytOE=s4HMIEN%bhBvK=ukRVxt8)7v#7{Y zL7GjIMd@5-(`Hj~F0(0hOehzhF`If?Du}-$cEM@tVoUjqIW#Iv&81RH1@ZT!YDDSs z=FtvQae4EoC!WCTS?)9DQC~|1@jmV)r>Rkv`c2KJQcDHt8k#Ihmv9X&GZmL`4ZUl{ z{7qd$2Q3xEUlTeKmTmzh7js=+!P?}oNuqfDZGxI^sUZF;%~CTaUwyBo!(r*JrNG!w zi#8#QKfMxK#S3YTRk9sK3%6QQF$vK<(vH z7rHU#8QTri(t`3W~m^)<91M#ZtczF7{|Hj-o2Sh zMCsnWnJO$5#CO)Fn=!d}m(i-Qbj#@AX<>cGcjmc_HjC1EE~5@h1@X4yAyKQbUpipB zh1N{qbSvoLm``lCQfY-&PsDt0TTTU+vC=)Ul1eS*Ggi_>O9k=!^L3W;8Mo0aO9k=! za!W<&wy&bYrsA2kibh@DS;8tR6}6haj=3RX6|J(ua@Fnhm8e$Aiw)u$RZ+?5TIs6T zWf7}swWuXDD|WQHgLau}aqJenmFc-sN}$!EuG7k~Id)~l8oJX|J48L9l~}Mf^qi$O zA(swI1@XS)zSGpf)6^AJQXXc=;}Lh#b*8HDZjHE$Zq*7U_>4BX!%{)Ihk};!8TZf= zmI~6nv`duk!F#FK6fQx}o_pyAQF^5BrRA0i(puVV#^l+vmiYHsL+RGi9#J|S-r2NN zkk-)=GbX27NBwI$)2*YwiCW@V8Mg&tcbRHK+_8vt^rER=K-hh>*Hj-P>^}NZD_I@) z(@{$W=>dxH>k_!U2dK?dJVPF!(y8HLhfSr!@RAq)={7t-PD=&xj%{zPWcRzCR+)-- zzw2pmZD*eAX{o6=&-LWEO7fIDhV?YpR8Mz_j9gELwUQaKo_@BJ&sb0Ht3!4184pst zrGoSjooOkb@euX5RFEE~Tub?khpEU?LA)6}S(G044YbBoT+a>kjTO^pY@i=46{L;i zsOxOsMyfFtr`t%cisC-=85?PjrGj|(_;6UdAdQ%zbK!It2~j#-klHO3#MgOtm@#?$ z{!Z!jo$3Bg*NJMS@~#}VPSgsh!I6KbmIjWwf+ls%j(mjj8d)u&=B}e7AEgdai=fIP zAEWg%Ijofyb)6Xb1o@g+EuvKjdy0lP>#&Vot0K43R#8jnrLMJ+&(Jrjq*gTp#5F{8u>g8n#Ex&=(Dc3M7}@~v$Z5 zp$FfmJ*K)lVRqyPbkqvFHgZ4p!tW<>%)1k=jXXdVqEI^4--k5ERO=F0T_@@b^^mCL zqB>}ks2y4%Y^d!+Ix4D_b|kFCuQTN>mDk(8B>LC5yRAsL8sE=uvsrn@Lh&n{SSgKFdXVkle^ISxI5(h+mL6xSuFmVgs z=H6hcLQz{yRhc+ieM^U|n8TuuP>)u^zeN;4%_1+fsZ`x<7F-aSt+)H#=Wzy!T-)WGk zY7s_io>o#bLv6LxZ+Kz)MN0+AruJBB6Vw4q1t~%uvD7B0pDcybE#E4d=sNTzT%$~{nqoP%_C~XyE)dEWeDNg;(Qa&S2t+7-Pzd_Khm0X>= zsES*334C?xqS9|=wTK={zS2OLDBaqwYSrI3OkexEs^^xo;?lo}>Z2gRFXO%igUq9l={?CIBiltS!xs1ZaP3^K&kkZw0 zt)!RIRbZ9mDJNLzs@LtTbm{4;-Bet9x>~$i$9yAY3)F2|N$KgT%~C>0{&2d7(2NvT8ZnQE@7&P~0<-c5ZaY6V@AI?~=K1|(czd)@JrDxAzb(f`rG(>F{rN?N9 z>a~`0(Q|i*dP0;=H$-i-RFH4vKJEES|->MJuQryHi? z@9RuAOkFNYryHhfEES~TDqzOsbi>uUuyn)KSEBfC=~4S|)&G9Zlkb+c*)LIf4`@}I z_J%!Mbv&rmm1zg;x$3B>)l`@EsXbp^{t$<8=|LK$sx9R+MyWbW1@W6JEuwUv6{v%z z;(1-5E_t{!mjYEF3Trz3sJ%eVG}V{sC+vl)#Z)T!H~Sd%sHINWi`5QO9ZQdLl&GVo zI+gBql&ZW9T*7KPm7d@zQxA&LwH~J)vD79Sr=GG@5Z~Y0ElSsVy!ypdT1dTGQH`)v5MKhGtQAfH&U0L*+C=H{DpkcJ zoTr}Gm8wA03W^>5uhdFaw<%O!kgilWS?XBCl`1Ie3w3Kokze@S~jW z3w2M%v4|<^Zmpap-ieNCwb4`+-ZDpx+G@tUF=mous`}1U4`l>tnu^@4b7{};JEp0w zrg}2tYR7cd%T(JCc9j~hmGh;HE%<$+YE!+Lu`=Rn)hOx{bugpZakaYEOn0ky0n|;R zcpTP1t+&)Yjyko&QV%%l)%&8fMQKzY>oCWqnJXh2)mNsvBJ&JKqdID;X_;%FJda5a zI%a0hrZqys*;$kN%~TI&KIv#yQIG39H)lQz z6=SOBGIuxvD#=tYXTA)Tr4_xM`G#Yb>LW_q!P)8p9VRn!wz|YpI3H9#QF?~VQR_{` zGjfiKc|uB;baPa)rGhk9^%kYm%~i`y#p&j%u3I|O%~k1^!r7tfD@v!Erz%Xv>E@}m zR?JOM8!Ux$MfIGee8zm$VJVyzst+vXGp2>aYpE7f9k%t{yI{HyxiQc2Dw%Cl9MaCw%)d4o!^)JnBfogqrwvm4cL zQLi{}$?EI8QI+X1$L(2L@RdWyvz*Hkx;JY8!v10^Ug0;YLQ`$Z8tS}BRhWt`!_BJ2 zRNFEpIhLuXOvQHM7Pad6P@dV&ThvxlJ&{%9yj2Z)L5Dq?HO{$QEi=_ls1@q4sKxX; z)Jj#iontPheNeZl4Rq0%%Vqer@-$LE4`tD@)idvmf>0GU1U()Jlq`O0n>Ja6) zC2N{{+t#jU|7Mp57_l?f=s@+sOvmSLms64N6o~vn8_oti>DW9pv zbl>iLShbjHXVxxfQ0+0*vrvCmS+DDK&t~m)wyQc*jYBSvsCH9Lf!d^wSn5OPqbmIk zovxw#A?Ic_-Bi~?J*Kvp>gMj>IUiS^-5gW5_6ZfQm1A>vx9bTt;IyzImfA#5s2ocL zX^W~5rESO-wbWE>L$;{BR?JOMA6hC%PpYF~>7G>SZ*pDq)$mDGBZ{B#b#pzbc8OX+ z?{@F)dRlGW!!cLTr`-p+wyLFjwfesMMXqPn(s#8w)xFU5oH{B>w{M&J#Zo>4zaPAh zW9qQyRlF$OhUZn0skjZ#t9x}!M?#M>*YoNjQ}ygo0rjX>u*p8-1+~>uLE5f%i_&>+ zSAqAqJl($Ss`vYyrEgbXiP9EjJAU;>!f0}j2G@4g!&K9I%y#Wi<4kp{ccE*inxYj- z57JJx+ETx%oocP6g7lKwEK1kqC6&Ctvo0^GyG7}qcu75Dsbdi@sRNeUL>=l=O9km= zb<9$mpnkPf5GyqH0GGhK-os76ssFq*H@t7?Z5%6pD8HqG z^p=_{O83%RD&ixKsYmQB^>E2e0MCo*It7Vo7 z(jK+WjLGTtsN-Sj_Nc0VcGh!`y2?^P+N)Yb>3Z%}+f2o?b+3v$)R}ItO0`sw-cfx; z>2&X?3R7{qchp)drq6gsZLn03-c{Se(!HxZpAi1(etB2T7RBxJ8Skp=EEU8zG*(*5 zXY5mVTPjHJsm-EvUEWikPdoE`Pc?|rGx9w($5KAyJ=J2VAib|{6SbONAMA~JUu_n( zg7yrKkNH6D{*3d4ofw=JvtJ!H)sewx#vD+d!yKkd_)x`*;uGCrF(0a4mcnl}tI0Yh zP9PW3LABpfIWZrp!JkVmlrp3s=3}+XRA&yk6sqqR9JYuC4LKI^PgVM*j+s3qC+3j4 zO)Ht#pQwi{RT1-vdf8Gw<8$?vrGnVie`2Xz^@XCZbe{b7&6lc|srY@HFIB)){JzcC zs>4+LzRfr4s3^UvzEz&DB^T6XA$_anS*khah`LcLvJY*D{6F=yR*r){~wQCWpPt^PoD9{(sm3m}kkdCWUrrIy6?yoxL zZzIoe99IERJnqMk%OX*D#xN>KKdF06RVS))t1ho}Ota%Bwcb?A#w>tpHx<|AC)N0j zF5#ImAH@8m=4vH%`AM~yitF-|+F{1zy8NWx6s7C(lR6@*l`@Nh_-@wjXLads7dg{U zsI2F-;?hs3-lpQxPpB>1bm=k0eVr%NHm#)e6RN{hT>1&s|9KsgOFyA55~WK&p(;hS z(!$~({jBDi>JCx-J)-eL`Kw=-gNh~z{lYy-?4#Yh&mg5+-@4xtSd>h^x z<(ho-2O9LL<@5jM)~)7zLcI~5!+#6aJ^5`|S>MBLqhJ1mkAe3(e>eRNlycrM12KmT z(VzlxhmTtb#4%{R#Po-`<9mkuZNzaxb3mukGeJ}5spmuZ*j**5n1(r{ zn#J8J{+(`{8LH#oDxs@|y03I8ZQ>K2|NnpY!^qR1cF9@y)#KvcD*k_V>k_v~oWD4^ zPySp7-5Y*!X=UEa{&;J2%+vt4p z>0@vX!^7O+K6>pl4a$}{+NVI=%#gpX1Jj@~39S@zeGJmA4qx@55#-XRNz9qT`Jh4C z%`~Xx5B_))`%gYg|K!8{89_X#ThWB|g{67P7Zu8OBPUe3cB@ zVYU^9%n(>zaaT$lozGNp>((`gx%DV$|9O_bw%eGimXCJZ=mzomZ?)C_D-g$^Hi?-r zn%!BTqM-OZA=Eai)2+;!hubb4s<~D2d?74{P77w>YeJkq`xwN19@>p`#yQ<5yl4J* zTmD<;vNZE1vQV|BTm``G`qgVk-}I0k-eiF4N1tnitscOz4!l&hs~ zKaS*>A@;#<>5QT{y!aN4|GVJ-MEu{K?xr4iPw)i(pN0S9@U~wf{_l?e%hX!0MooB0) z+P(;06H`ZA=Q^qFL^?D3^4N*=<%r91w9W0R1#=LG>l~0e2c*s~qHbGpD$a43$08O> z4vQt`GKslNV$P&N*)K{xUyq$hmt?;!?ssEXNvbxJ+*hm29vhwgt%UNMv|R3b$!)#l z#;sFv?b286#Lp4iiJu>~6F)a>mmI#9wzo^&xD_0SdvYFKpWQ$1Bti$rDdUaoE9_2# zd+DV5Ci~(zcIU*Tm_7rYlj7nGev`{d_MG`~trU|}65Ac2*Tr==2IMS3KBIGPi5nns zl;O+S5;w$j&&k;ycOxB3pN}uHat^K3lJjOTnkAV zx9faz7E&SN2kC&Sj`=R`Qllg1cSoVY<6CHK%lI+QDes0KPnmN(V?6LV zKi-2{1*xxakT60xT$pG2bGb#xc_PS9u#2Q7MT*zvV>Bi2y7;e+nR#!==1Cp$qz-*0 z&LD}C2X~8YCf>=@EAd#wGpO4&umIQPRU6OH(!8z2Gn3~e&uyR7(E(D&VQx6-R~rR1&YUX zf#R_aNLfc@)gO^MES5SfHvPGmmLcuSF{{LXB5lkYn9wF|TqSXqN$JbP=P`OdwJ~7@ zJ(V{*VYv9j%eUR)<=bxYGNaZ@{1vo4uei&4sq+eY4ek}RSNIR%Vd3|}UxiQQy`FH= zh|4eTa?(f_o-G_E93z|{oD8m)epoO4uwMFsZA%c}EatYfOIzBd{za(Iu?UPWp7no? zS$76TnPakTS%~LA?A{`6VV@z1kI{_$%f)I9OsJ)~`T2?LKRQv_ZpptaaiX}lN$DLj z2RfvU+oUGj6u*fulUC-pCC;QayC|(!4QNt^` z?nBM{I`>J>HzagRJ*LlZIbGsq&h6A4oj*IsmVloJAY*a+w%>H z8`Z)50ZGcZJK;inf$2~_-s`h{onMjUl=o8yA^t?HbY58-Rq45#an{PK>1%oiCv^wW zpXbLPhtI+IQ!=k24DIIG5aYq>XWR#g=_yClw3ogu7@v}j&`S8Y3jHaU+A6$P!`-uRX39kP&q=AWan5`dUIsVMw7oQ{ za6V<*O1vvm3T@-yo(T7yNL%7vmvTVW6kcJ^lNKFNO@+HsilpE2q+Nx^g2H1FZ0FxY z%o_?XvGLUbI}l@3%n#y2srMPrr$(g~8c!5PgCFE1rp~mzTzF>c0n}kgB3s?QsWoD& zeNu`KIk(tWNk6vaUh4-hn()Wd1@#Slt^O$?ihf^oQj%}ft^lRaB zsk{odr*1T&Mt7w8q(2X+jrb*mO3A-cYF=sZ?xIr0rAGR;M*6c-dcF=ZlhP`U#|tv> zJvkoJ1qOfBZL#U*Z@aNSb{E2B23!7RQdT;io|nPRtw@*pFVkZ!>mptD2Fq}*^gGgJ zZ_rEH-b?J>Dyda3;&+A?7`%(`MTj&RxKl%s94|Kio zX5nqZyTMl51EcX9TDGmDac#AomBsE0v#_I(8Kq=(x7ywuJ=E4}`&8l_0Z-D;@VU{} zeavc<(sxW-TARV|M6?0AK!?HK z2k1clOg^jcF!=ib9R`0fpu^zv`VJ{^5M4a92({(6FWL-#>mr``cbDRce`l%9;5RRJ z8~l}n;TYvgxcR#W`wV_VqDZbUMH0VAt}jKBYB=#b8TdXqSR_}U;l%wp9B)#LgFpB1 zK7-$*7%rpZ6#KtX*6Bg%vBT0=N5p+x+@~nkPplDRzy zq0Nrr68a4NQoJeSG21m`Kgh_l@mk13K0}>(usQSw6|lCuMDuI#f!k8mV)Qjr*;}#&fAoN)Jf<1vdV6>tY*^#R40DyLEw$_bQ8R zJW_1y@ST6-=CKDemq~7QdR0oEK3R`#66ZyP4(zr~+>gh@zjyUl9ZLMG% zEdkfj&ER@k4sM{^!FIX}+)Qi1EwmooN*lp#vqL^#ymR zb3yC~z+LKmaJL!^?oq?Qed=Oxzsd#=syy(J8U-F!qrtCKF?d9kf=5+3cwCJKe^C>` zQ>qdqV-gr)OaUE+AM_a0!C2#JFy5#KlZ}~Rx)IF*SHq!Z(Iis zGFrjG#v*XI@mHj(G42AV8$2#`#yxO18tcG-@c=m2cqqa_i;b7Tr3R1DGK0rxx$!!D zRvA1}YmB$yZZr0Q>x={7dV|MqgYhxk?Z#)|X5%Yxi}4-uOt-~H+9}JH1opC}g1v1S zU|(An*x%L@9ArBK9Bk_Y4!89MN7&8*Vt^g9C6e1UB9dE_7s>T+5ue48+|s4uzbuklx;&Cw zx+;=ex<+EQMRH5mMRH5mM{-LyL~=_4(9M}iS{9xsR8 z0k_BQ24n5fV7xsJOtvQ>w{&|v+*$S{u$Mg*>}}5g``WX>{`Q{WAp05MV0#~MxV^u~k^OwI)IJ#W*@uA@_KU$vdp0=Po(I<0M}gDrqrp0RG1zD?1q1eS zaISqkxWGOUY_V5@i|v!ZrS>V{GP@sKZl4aWvR@6ZvDbrb_L<;1djMQ-p95~N&j;J> z*MghvE#MaWB5&y9`wH>0-Wx!gLMuU*y!+r0Y@x2*U=SR;79~p94X*p zM>@FF(G6VY=m9Qw`~_U)=nbxMoDH@)`hn{l1Hko;LEr|*gT-0!FW4>~Rf4>_&`4?C*BuN*bt5yv#} zsN*W|xMK$Ri=z=dsrp-vsA6_katW?}9DP_rb-^1K?8UL2#M#pWt%m zr{F5*=inOWS74j-TX3E8|G@RmAHWUH<6yh5oa&(sPjzlxbrOV7bjb= zQ%<&5e_UdJTw;G*Y;ESc*v>3)v4v@Iv29uGVym*$#a3mRi|xsB7u%CnF19CYTx?I; zTx>(ux!8uRcd-rG;9~31?qch)*~Qjli;JztRu@~3Z7#MRJ6vo%I$Uf$cDdMk>~^vB z*yCdBvCqZUW50{7$3Yick3%lD9*13QF}`xKl{n&JD{<7tR^qset;8=bwi2gYY$eFe zRwBa9R>I+CE8%goWr%h28jN@I>PvR>>PvU?>dSKT>g(m^)z{n2tFNz{S6_cOuf9QU zUVVezy!wW_dG(EO^XkiU^Xe;b^Xe;d^Xe;g^Xl`tdG%GedG%GgdG$?p^XjW{^SYbv z=5<%+=5^QT<`oxk^NO46<`uWV%`2|O%`0xPn^)XYH?O#5ZeDB4-MrRTxp|eXar0_w zbMtCi=jL^^-py-ggPYe*yPMa}W;d^$EpA>rTiv{Bwz+xL>~Qm{>2ULU+2!W-vfIt8 zV~?9x$38c&i2ZI}5eMD8A`ZEEEgW|9TKLM%YvG8S*TPXZuZ81oUJJjtc`clBp97Mo zKN#UT4|I4g06m@|V610281K0RO!nk}>7INr%ToaM@{9p{d&Yu&J(q(0Jw9-dX976b za~U|?a|JlUGa1bDRD%VcsbG<(7A*DDfj&LKfoiNkHMp!Pr&1z!{9HTFTqouZ$R>X2S#|0f)4MGpvQXx zjP;%bM@lFKWyp`ZO?<8=&cM7<{>j&Gt)4|Q& ztHCYadT^_ECb-QT0C#xjfF0iX;4bgA;BIdVxW~H)+~-{a?)TmZ9`r5)4|)Fv9`>#T zzw+J=9`UXLk9zM0k9+S0fAQW2p7O2-Df(eBB02~Ks=x4z6 z=xtzD^medU^iHsM^vhu1=v`p{=r_PY(Qko+qxXWtqxXR$qCWuhqCW%+qCWzQq7Q+k z(Vv07=r6#E=&!-b=p*3d=B2Fi93ya@aaiY!CYDcUM~K_#J`$0!)FZKHrv^e zJGcj34!58Q4q}rs0q}fTWNf#zp zCQnJ8p1dG=aq{iSYm?U}KbO2S`IY3|$$OH2OjapZ7SoroNW?LFyN&z0+#au1Z^$wmj|cY5z<+nUrTx=4YATW}eFI(k-oOt2;t6;uo}!oIYmn0s^D6um&e@cS?|b#YSxGONPk+JR zm^_1)(wTU|-WyNW&%%@RzBnW4hgWbHJ8uC0=DY>mV@wnUK+)zo&;42=RYk4mjw8M*)}Ex9Ih>ko&=6&WHW^{V*GP zKLT&Qv5V=!d6a>kcY@Iv1-!2WW#HKib1KEaXPU4HV}keZK!sDQu5dRCpTPGt4gB@R zByb<4fFDvC;`~GSEoH#x8{rY^2LJCsg9fPXpilLL&p6P)-?{q>c%3>EJf!--{}a%_ zoA+mfU#WAz@71~BQ8fUeKY#`uQ|Ey{;wzAN{{_Swh3Z1MPY8ceL*VnX@TB6uv-&S# zl5r9IlZ{Kj6eAn{sh~k=MlRgxpn(&ke6Wu(3LI(_f|nX&K)+FpI8#A`t~W~H-f3J4 z_lv>~qZ~djg9g1}j04{?CV=l56T$t)<>1Ho0-`~m7?Uu!-?7;+dsjy`8~5T&B}Ltf zGnH9z-xYZg{M#bqjI|VuyxX>x9*VpZ+<-W1amr%Dd~Zk0wX_K_@kJ@bTt`nuK4M!( zTM=^|J&Ty@Xj|lCaKC_<>u3jJuA`lZ>B7qEfxl_jAFJ+SD#kY-H^#gj^L30bc4};2 z_sZD&WB(cZdF;Pp;@5W8)(%9wNE`RNEYnOYv6nCxdIQuHScc#%ITu#7~Hy z6hAF~Zu~v*kH>F|eb(~hNe zNgtd(B7H&n_310q*Q9Sq-<1Ax`kr)GMncBwjC(U4%J?M1o0*V#S!Q)+AhR{|*37k; zKV=@mZ+v}bi)i6@bi)6AhP8>sZv9g<3hU)`zawgx=Z}7{S*d^ad%N48{Z?hO-@UM5 zYhka};eY-YPghDg7t$wKw?t($4S&^#f6fs9>C`HEI^7_858W?6|4;n!HwaDtqtKjw zsM0?##!q~4nJ!j3-3U{UF!fJLm-n;zb8W=^j_tOH^b6?MjN?jWo>2D8<0=#X_sTS2 zbE9C59h3@t;KF~Yun(!Q1TNTyR9FEQN-8C`&GGg=0sJDk~XRO8FJO@^T;Ll=yrl#l_iWqYB4T@wlS0F;qUip(#-A zuMRXcW!Kd;R96LR8|qIlDz{-qW5cZan!JYUSu_0g0kgo08FhJ8fvU*^=+fE(f4|&@ z8b2CF@a9^PZ*D+-qN4JX8(JQihmi7FQ$j7Ouc6%RqTJ$=y!=jY-@HaYO=xJkT3Vl9 zUyYobD8IRSy1yxuFuWUeSL8KS&8e-Q7V3@WhN)8mxefL8(zG&kJ{5~!c6~LPjCNNw z`bXAPO{3g~x>+;oC)Cyirn7I8zoyLJ+%T)D+Ao7MzN&7PpT>?W&OyKC6&B}@EiWt? zTTc2<)|X73+Kds>S(i6XYcid=Rp`uFfv|FO>S`O!Kz5b~s+vOSvg>N6)l1ZJ{F(dG z+UmfpCVxqzj6^QtPHCuWsxcc@nq8Fd^W|eG$BoS^FUZgLnVFW<`Aeo;h1ODORc+Jc zfnhTXEv!QT4{Tok$lQ{m359vS0_pi&WP_*gIisb+r!+KNorlTB{jHmX;xXbp&S7=W zsSV7iYRoIlIc-p6*tlupD6VP__?!MTvGiE^n*9E;C?%(=*^ip$myG1@^jFQ0q^NE~ zQ)yM5KM)8FTDd>e09`FErq~~-nu?h=p?G9iTXo^%igJpw$BrS*3S^JjZ?>qRK2TL# zZ?&+z5wqlUpN6{G{-!_r=1mLhfl%3{g}I@8!>g2!Ds@&gAG5r)siD!|6qr|-*Nh2w z`g)?Ac>#Y(6FR-Ps_ANkW2J-**{G(5S&baRRkqeOjl^O%C*dE4jJvP6Y+R@Y<@r=N zqiPzu(n?&OUzDHg!!*V;3e_}k+O$76In?IdBA%HtZ!uM?czzO3igJITz+Z=!on|q} z=bsypb&CZ_81jJy{<)Oj)YO1pt?^S?$pp&F$;~e+Lir_Q@IM^cxnp3cc-c3z(L23O zT(X{ZrDI1C+mixVM-;24jai3sU-sC%?6N#Py+@Xm!Ng^A5k>iBu!*w#%ly;0KMMo? z8O^3wNvV%UV!D?5tD35(7u7ZgVAI6*=;?^zprY)Y{34!2SUrVfN0#7cUVdrzsC>#U zE6bi}=EUuu(lFOld4KLuOyhvRrnI@S&Ws~-y&RTpMrf+%G{Y48|2P!cP1Rx`xam?W zcIZ_BW2RS?u0O9Wb6u7BYjWzUs;_1*G%34oT0>K9VET-ZiJ@{|87>i2X8z>PXA=-I zxw^;7LuO0c0@HqmCUMwUlr_xZxjmzyUK=8@8fCTB)45wr^Tn5_!m;CEzY2ZD*`?YH zhZaYuPsHYg`qG*agv(i8$%FxftCkE0mOxo?wvY0%efe?)3Dvi*Hc;%ZpCx@88f3Q3 zf9%xGSv9&ef0V9^bgsV2Xj7suB-3l_YRs1B*9V&BNmyQOlU!ZqaR*xlRMxK1AnZ!ZW>6|hR&G)NF8ZB=$B{6AGn%mvsKYh3d>)MJ3^MIK_p{W;SLC0HPfVB9 zPMaQ}!u*-D5HO{VQ~G$mlaK4kc~O4-tQl08SKHj!(9BWrKC;dem+{cGqPgEFKg?up zH5Hm`qOda%c@}ae{wA}8KPL~5Ku9{Hu__c4_sT zI;9y4mtHg6^pF}?)v;|tn`*JB^6RI;*uzqU<)fWulH#hlJTGvSEArP*<2`_MZok43 z)3{(Hs%l6oP+mJ<+dVRSgj3em&*CiuZ_%1bn=O>e7g0&cYf(337B)bf0XM_f5UA=@ zm=Cg8bZX3R3{+KMTw#6Sfjy9XVYW#^tu6^@7nfi* zQCBZi=Ui;=M$J?s`w8-Q z_K1#Q?wrD^YWnC6SJ@cuVyYM^KVVu4>uYck8Cl!ZjBQ<=Ruv=7XhksJmTzdEiUs{2 z_O?Em@8$}G36+U{x_0T2 z27l?*(}=+nRkWt&4H?VY;AezSb}Hdcz;tf?+`g4x5=!<8GuP&;2-*jEM626I;~@lYGyk8_jw z%8ZUFsA`sM0(>7(9kx5q^G~gsRTt0=VS^@(V28{^iCI=vkF8F~Ho=I%QjPJ?lSyT6 zjM3Ys>0%ormQnBf^~BT@ge`~|5MIAxPPEksEt>qfFc~#|b6c)AZ8}D?-fm%ez&JGX z%+dLdY-*UnI|%kD_vs0&hsi1n%V&zeNoP|r5>aX~QZP{A{yHHtkqB54*1QjS$Qt2` zF|P{#8Co>B%@IGOVCT5{an1f3%AV2;9q^YnG}p>KLYcn~cY(7zJ;pW!B&NQ+G&GXF z!sIjr0u3{0)U4VX8izGv?onm4$;O68@?|lCg}Vbx)LZFB9ET3pEI>7CfvD%f&ggYHT0LQInBvYF(|TwOCYG)@v1r+~Y#-p~H5 z>ae4k)o3pJni@{5dsz3RbvN297Bn=zrYSbfI`)qxWi)Q=n6V`j#u9Ju`L08D|FU)9 zT`AuW@fb_{bqU-|3~0$z*bUkF&uVJIg@(JrG&~ZJTh&-q%~k!+H%+?gh4mO6v}nHn zf5p;ULYO8!@j~TbbSx7W^0R!xs#99U_0tQinTK01^=WJ@nq}0rM`2jtX#t@vn%Szz|UJr+`Q`hzS(@+J!z8JgOn>hS3Qri ztE>5P#dfsRk9&07x?#PKY^u`tx8>D*zgjyLyB4vi<&FMo^cvD*TRj7p6LV2bb!7|gZ;-MqR4na(hc)~W6H0i7OAM(@JxIcLE<=dK^C)z$E_*H60*AFqwBBh-IBwYdGa8!a>6&5mc@HOLcHX{O`J0g} zosWAn?%HWs$Yl);NZ8OM_JQw~O*i*nXb0UyCD@BmZe0U5>H2nv=ViUvS*nryBV4U= zr~9j~He1nYhyPS6Zv_9NXILZjfS^~;8z=)NuEKgfZhBj9sgTJY>z`wWhkSSx|ErhY zzJ{WPb+u*jIm6B=p(i3w){?2ZVzM@5`i6Y;nvgAwj0LPzXYUr(1_E_{9COuH)#ILI zn(4yUgYOZrVYjyL=8i;LL!GDWUA0q88<&9tJ4`p;x|mx&I1Bu8TdVyggPeKTE|?KJ zLt#;{xe1G42I=!uKJhj89J&${bhfy$ft3;aI}T*mQ73zru@&4h8{ zjYyNe+iB7>$+`*DIr99nyf8u8B(k4gUgdLY12_?Buws~ZPUe2&w9^tX&ulmO=5s=A zJ*G@Z6<1Z4l#>s~*X$!}sLVgryy>EG%{=M3s^%@-xcXVx>J7w}kAI#giOhnrk!`9H z&jvN!LRWgYQlS$4Z}d%(jZ7itWI-szkcJbG5mG=C^gSgO+^VJnA|mKu3>61o%N75>MgvOj93NMFS%~xJ;)!EqBj`iZU`}`wBAY?0 zL(NkK>1e%raU+BY6yTc+tmS~5r|PX$VqhYq6XR37`jSWTr&ULL-s&6d@;+~I}TgV2O7chN0g6)si7!H^c3J&s`L@> zWo9*&)FYbg{LBtv+aboDw^-(U#>8NStrqVzW!=h@;x$yr8!BuL`MwmhEKHX9XXB2e zp&nz44Lg~$%v7iMhqk-CA22>VJ6%(_Go~fAG+eW@94Dhe=7HX-A07chsO!sqshg= zJb^mBXCy?MIW~B{23!b8pGt==)cOuy+i3mB4Y!1RPp>VL*d5GuZI8ruo^Bs?WGq5` zN@SiK^CiC)+aNuAu!Y3YX4qkf6(o0pBxbr~Dt_W-l%KBhoX^H`tYh{pASAm=cfHarw};38}7Rp-lv^Agq=a?jImNfnNE`1ADT2( zKN+6XEDuieXEX-p$@LPG95-a5r9Qeh`1VD+I9xCDPK`d56OGQer~7ak^R|^UGMzdn zer(I0`sQQQe^_Fn+Ju*Sdj2}Cb@ZV}pUp}sE>>Yn5f6^3EHIS{0yFCPX)=}OjpUO~ zx(p9c3unNx@x$LC7wVq_`}e<)_cb`}#U7*_)&Wn%v9`4?#?-1631EImBUpD{nnH$I zKR)iq*EBXU;dk-e2jSXGf-76i9YfR=i!qSsLz~r3zzf z>*S}HmBM-)UHhASIIWpbRd+Q^qqS^9Mu-og*cjmOWbllT8;|vsuUl>=C5ID zs9suVi+NfI&ORlc4uTQHg%k%#jdHlr(8SMy^*NS4-OxTf3cSvEe;N9z*8^|K%4XF! zn+L4c6jH*dnrX@OmZV1aKW{+f(SoclOYwCRO|2V1c@=oz)i4K+ zi38YYAbfD=&@cy%iTWYG?19BBl=}nnGt9K;XGBtjc4Ds;I)y{d=6M|7i|CWN^JKd# zCK5)~I=X;6^pp-66gKm|MjZTHrw*r(p-^pIOkWs)Ds*qd)f76v#&$!l$u-odUvtp+ zYSuwD)+L9VnzCzZLeA4eP@Pcv0zO^F6~BsyOP^rk@*SwH4)f4URht~`Ht!1bQAFo6 zM!Cew;Uk{2R^dsTym;WZA~a*qJte2ANoR#4E#4X72t&rEp$P-R3Z2M5lzjf?x%dyYjI#B&Vq&+{!-pn;&5yV z9xoxk2Bg6Cx(<=6<**6qt7hW$mt5S~A=85O_ zQru~tp;AusJP+scQ>I`D^$%2dx_@>PPXg3dX2aNq@)`eMd*2!z*L9t@?*;}l0Epqt zr6^H0K#y$FqFsRmNKgbNh~fY*H=om$`8Nyhmyw{qW+0ieHl= zRxjr73}R)S&ogEai&%BXT&Zd@Jz!vA?HVaxS7$wN3Qj+smri+VkZ=I@!d2knQ7>Gq zLOHIs-6}=o^1|dLw=TxV$Cc-7zW}2Pry5lNo@DKLtqK`lUcI$3erp5QD$ph=*RhsU z+EoKqy6kx&S{AIdRoOnSKx`IS^4^ct$|vX7matUFO~gu8G`I@WY?GJ@aCCMVn;?c@ zHKzk&*0?iw#cWmc7H(ma6zT;xz+J#enEomdQzYPY<0%xV$6>q%NeoVA_bUh%vBp}h zBk#uGDqwVeje9H+Gw|5X<*{9a!{g9i;L+I|%kz-FdPE~A7F{vpjH<3c*D%$qK)Eox zID4lCfE~&^HkM#~T3F_wVlkk!YJti)$)qSUy!nsiq~0gk416;uGOd?o6NSE5$$lc@7+Ppo)d9EnPI;0*{6## zG(Iu>wsH8~*8;~-u~eOG;WIilItJJ4?9|AlZ_jG4xMGjw2PeH-{>1Qwp(s2#UhvQY z95p8$-bHj7kqZ;UIk=+ci!wMo0$0?chZl$628Um`sKTwaD3jU#k^Fc8lRLCughO;5 zuKys}pybDLb}wYdkbinGFL~!uJT!i}I505|=iDNKkryp|YbU3Q{n-gZCnn(rKUI`m zE}tJ`3ve%(nuJH}fH2|d{1qvT6ldNxK0ayyxT?$O_@z8ZB00E#+J#6kVw9MKlP)Wt z2A>8d#;i}pp{%*5UY-CivjYQpba85o=LOJSF$-qo84-AY7DnI$N;h`!IbzoEC>%qx za$yQ&xLhO8 zq2XMf?(!xhMI^F5iwxyJ8<0kdC^<3&X!lwth_?|_Jj ztp__nBspE0c^g-wQXBwd@{{nD2EtEq#bJnt0C3#nLT+Nb07TL3$S@s^1}-Caerz;5 zW_M6?T#D0|hVy_=Ujhvg#%0)oBMcUXB{vS{Pl1}$D~IIhXpw{=YjJ>J#O}rE91G<7 zaTy%WkFYlQ=jNxaX(WtKK`sC^_iJJ>?VMkfWa0lTmXyNYsA3FNkVZj!yR!cPTSqcHIb*LA{FGBDP$+IqZh$C(jpQLxP+Uc zOhJT;17=Jn2D1ZsGLiUM1S*0$E)^le6BqJ1I;=y>^QjLHd~k#)j!Q4WXq%W8H;N zD%3=F3@+%^a!3{PjkW}+OOZM^2u&>x%Jj%-2-@)A6)WJ4AaYFfn@BKJWXNm;i@GSO zaIpwxPZhw+ry*ctxxrDO2=%>`bqd`NrJ0-_rwN|OLvLX`hG3kSIR^`2j2+DNPhKhH zDYlb6;EKQv*)y*M>I z@bu&`P7vh#!E9&<{LC*v^DSy-u;}!3Bzpz&?ZRFhZ1f;0YvKb#Q)9z09RouHutVes z2r>+FJ1|7M;#oPsZo+VyBl^G)to757ohX{c7*UB7hO7Cqlatwjp?uEyv7>6|i0|8~ z6dAz?2kJ*nn`#XV(N4N{aYL=RvLR+0K*g|Yz8<2+#OYyT4VeW$hQP9^iriFX#pm-y z90rbqL!J|pP$pL6ZZ=j73^|kQGvX)&PIeF*<64%O4?_8fgcBC zXachdIvS0kTCflxC+grJZ+r&Boo#_E6!SS>hO{gUUmBm}0A{R#g`sL%7|<~rml3UC zhE7$Y6H_=mhOFaL)N9ibN|qT%hrN@tO5szvI(Z}E`?EOIW4w3Fz%{Z2%xlulbWj-` zxXiO&CcUOu;6V|;s+2;6PysbY+>TQ8WJl*Nx1ATQ?z(MyclEjQJPtuG3?3|i_WF=5 zfL4$5z%$-$u-L9MmqD@cg;jL-sOgu=Yh%d5Z8?|Gc2dmy6I-EJ0LRid(&|cFPC`ZvH*6JqpecxpKO4V$87~>Wwi*8VC?f?2kq8I#n;iwtjjg?foD^Oz{=da z1(kcV$)!2xr)t$6ji%r~)_i#o8J2mNr&u{}AX4$10Z zUQFibtk*4e!`2Rxv5thYIJtQ|d0b`My8{lvejPC2= z_-#VRT>(%HuCb0Dx33F8t_ydhbO$eyDBUKmsMn)$4SPOoSdN1Ru3@7VM}+K%mopV> z+#QQ(!(+|l+$#4vDTZ^{<)}!FBL`3W8T#-RBd4JbKnUwDj`EHq@b$%>ml)qX7rbep zh&XH=J-vH^5mM%ySuh1zm!;X;z6Yz7^KPT4HUES=)q)ir^>a2I)* z=*`L;q;!2l*0I)FqT{M@R&MZo;kwDGp}WqM^$q9j;wa+@B+K4C+{s^MZ*djg%hWMv zTGyT5qKmL)XIjA|$1pI@1ep|0gIkk zxLCNxBVlv5Zrqr~@=Z0HgF&OXgNOmfnlSqE@WpKltyi;qi^*(Aa_1tdsiRabx{gc% zGi>K@1i_l1Sr4qC%)1qxQpp{SnOwmdJ*3*LC;_``P}W5|Gl5;b1)M`*IJe;Zq2NtG zPu2bfuEE&y=^96Pr|Od{zLKIFkl3&{XW6wI_O1Z>YB+~&CYpzu;fK-Ibllff^{lDv z;YJ-o>kRsq7<9diTEM6=e%-oOZOhY(yWT^y%O#9YXooR+CVGhH6dg>e!Q)`E9kMVE z(EB6;K+$M17e1~qH+?25@I>2v7en8fRlg}coFPp_dCi9)(x-Kg;pZeS^a#0)%1BZyy zf0W-%Aj(}u1F0;~vN@~GO|@AsC*HhYz~tGr)Xz6$5Of7|DU8w#VkZZ46gSHqxC0Cw z=WOh9J|E5x!!o;|i6YCosN2>>dmA{GJyr*Kv+M zMiTBUI^ux4kM@|qZl!2(e*T$p3{pJbi69Et5v@gadZ)vbc%$Hn>Nv z+RO-ZDR+dR??SE9-?`GvOqcYXJ2^9R%^PSh&{gJEj$K#W2QmKl)xKioIQIqifcUCR zR3E90oO^_#S9$GB&8uaO4}fFm&KY*$XbZB7i*5k72{PO_HO={HT9pOnBtuDh9vXM{VYxbPk~+B>Ibb5q4emmSh}1B$uC z!6R#gZ=_ipU(3NPZ1^z@+jBeuO=K!VEGUW%vsuiy;pG8(lk~7Ju)cmk=(DWz=jLb* zR=Z^tzB-)Stu3stEaSlPK=DZ5xwA7f1GC)r&n~Yl-&w-$8{Rr|bEQOo$s5osI0ltU zX5VSFyxS@9Kon@Y2NuRJEL=DIo?4y1;SgPNfc~Xbix=?3$c)}|wBnF%(~v!ZP=DBh z>R~6#Y0nmJ>QZ&KwSjTnyy)0R__ldW-3=Ad`x}1h&(-(9JYZo4b~vXx3%Z9M?bK@X zx#rpKoqpGQl#O%{Wp+4e?~!?DL$uEJdX0K3+IMboW(H2DJhMA_6Vgz^8OT09zIm$_ znKD|nswq2luNKQU8JP@^sB4KU04`)~^?7O_@IArsT&m#3UDs#Lk;VD3!tueqC15Y| z-;+@_@=yBZwR>Q}o>Z-tr*uYL?K^jBX2zbt`_^yGMHD?FwXxpnh;X)!zO&VYxw-_n zOWoU0QF)2Vx#JN=HSa}n1P7Pt)J|(>r{nwJ01Eof57TdwvuQIpIlRDXVR8N3d;5D& z51cyFb*i)b)L?gKPj`2JXaC9G-p*{Ux2Gr9f9h24;OQ6S$dM(}|E}AQc6D`~oJV%? z4?6DsN0`gF>G$Bm{9?&J=6LnRX%#p7;WGhk5*I1)a6U47XQg)8&BdR_f`avA47M6) z)i671&GQ|1`!C>qn9KOBVQFMhm??ufo;JuL2(1q^`bRj3Pme!~z2&b!IpL+Bd-pE>o&Y=9`cqeNu3^ksp zhqzpC$NLZGL4$YvnfYB?yK9c%@_2py4*vaHsg#X%;eE2w8ub_9bQI3x{lyUtGV-LH zz)$wS3G{r@#}IE@0=$IZ9sEhU1eu^5Ea6T_&{~BA$XkN>hgBh=B=gjZa8W_vm3gb zC)N5Z9C>;M67kkucspoqos2|I7$;3C6EUZXa`_o|QZ*R1i1YjG#u z)t2k)jCvJe>hPreR7-eV@p6crxYp7*O0C7XzINjMed=$e?0I=P@OH?^JG_*5*#2rd z>!r5833rB_CP>41f%^&Ul`R!RdoyN#GI&?;0-&^K>-e@6?b3q5t^rcDLf6e!VHFys z@Ug)imhiHrJ_CEVg1={IsSb9-?w!S7Cv4M6Tu=0R%(Yjp!Ltajtg<14U>&T>}roEZexw8zvRE{C%$EiP6g%o1bo1HHl1IUoyo z4>he9uso4RyadQB?$z82p!TZOw}hO_sKMtyIDtA`jVy^B8d{E1!^n^21?0-0A9sw7 z85#3A*D)Tf;*U62YHB`?+)JReAoQFIwI0VCv&n-S23aZ|qQqjss7WeIY#RKP{Tz!P6NX%BFE(o4W$FN|+m+T(_=3olmM*(>dyTiyK0X$Zl{o{io%bRsgj*z;y6mW`-4_AEtn z5T!?DYhm|}+K(2XLxX!ZvI=diQrg9y$7~_WPn$q_-ObDEbtPTw-ckBw)=W-SJr=CD zwGBBDqhicsFs6W&Ot2za>`r-J`XQnmLTL7C>xu-H)8OR_!(Hs2k-q#klwRGl-uGBa zgqe%obG@4%xq#x=y-wY*a8#9xJugpryX%NTD}1BU4HtVJ_K5a6A{)a|EzXjYJhTWd zhqKvH4i_WmY13T}XWye7-rB!C4~95vvKN7GgGK9=c3teA2{Cgob>H4m`)ydCd$c$Y z-($YF6wnLWW?ER<&YKX<6(5_e5deAk`{k_ajGU<*fota~)iHg~QTXUiTfG;BB)xNf zgERe*A~&aS^OZZ0j%Yrxd-UNbOsmemt(y9{Sq1F>=_b#;v)zZ*5Ekd%yQgy)RP zQI86V*I@9;R~pV-{miQeUZ4HM4}a{%(NFgNPf2|GJy$P1*z?N!+YW}!!NG9zLwZ0C z1kDJ2$wEyB!-K&A!Ru|TDxFrvU<*y;v!EkE>(fGmeXb^5K0&ImnxUng{`E_kd z#xoiql#FErw}y-)8#6(WY-kD-v10~0hOehK#Wj;@k|5j{b~ZHOyP0UY8!_Y$V#sfy zL}NxeVvQ2CH{;UQY6+*CGMWs}CgRc%gr}1Uq$HBf5};SC0HK7h>X;-NkD&rzcOljl z;5#Hfw!y|X!n62<2C4}+w5hGhaApnK@i|%61Xc7MhLl+$uQdz z0m7^m#7BQvFw8PN%p+R^GA9%Ga1s8c5(y@!5-F0RJ(>9UlQTb<{z}VZ4Nd7`^k8dW zjHvgqzkOjRKA@ne2i;Df8GIkW8V4J;GGPg*gg3+T-LUk4G=%#OhNDP@tRxa)`Ric` zd00yUwKO$btp)HaPX5Lbh%pdrI3{uYV%n5w3?Pe*Xi*yR=>~jfl9v=O8D7rwvdIfS z^w7v}J2c`C|BXGZ4^=!NK&D!Yy!sg(5VnNytHv z2otFF9oiIY{2u-_{wXit<>foLG&CI${DL?zr@o;MZQqBBAx#Lrzfu#4^peewYCLpO zx7CG)!h{ha89TvR1RXzNwzTs8Pyc$RV>IDr!V-O3Pf_Niz8(a*6 zjs(O-AtkDi@RTTG=fVHLbv%(CMy~WQx(`J|SexxzROA{|~UYdE~r#Tv1 zdEo~@$hSnSsRQCqT9rQ-B%7iBq{m?tO_vYp4~qV(Xk(zUK%We>9O$nG`uRY=hiHRt zHfXs4DnjE>e$fZE7RkwuWJk;}gK2>nCK9~UB6d(dkZiVMYmvHAZin{r7IxbGMOqx@ zHOr$Nv5r_X>VQ2145d40U4o7nyN+uD6?ept)SOWkg4MO;B;>XHB8B#gxNMbRU60^5 zO9>uTSC=3+U@))YS^Q2XfO^=8V%kKBPP9OuV8y6aEohD%L37rhL~|x){W5G49SN9= zj)WOq5~PEcoJd8jHKKmv@XqE;Bg{u4(N4s}-f;7qphdXVh^SgZ!WuyEpjTIle8tAx zMX%$Dlu3Fbe#{j?z57UZ*r>BWHknZLB$-HowFuw}I*}5a3!ZTEF~@uib+`h zB2g}X(OL5rr@@JYez`&KSM87KyBhVCCcPWiKWx(f+@u&fP&5`pUGucd;R3&~7laFD z17Xd>dC-LPoJU4}l}|OyqIDR2-ji78fUH^1V5CtGga%inz?vgW>!Cp`>1Y@W%Qqp} z0quP(xevw{=9r2dmXZ|<4b?6`0!?kW?ciuHTfEx{b!jIZ+LNrXJ%p8&^cB<;z*3_i zTZ6r0u-AgUl&5kRN0@dD?#KnUa+qh0>GGG+N1**>*oyEDnt6eOQ3hop4g$pl8;}Y{ zcJNMqfHw(Yi3Cd|I9q{PHtcN*gbo6A8)p#5A7qXhE((pnM5Toj)*>k`EW%}$EqgJwOV_>|eBqGv>VMez}{$3!0&?Gt{u?40n!W%yoM zzwk?CInli6pzup&L&7hWJth27*@*BPWn+SGlxacub+QTJcgZG&-zB>w{4UwF@VjJh z6MmQMs_?sHe^KyVGJU7$tmvHRHPMpjyy$h&8=^Nw7ewDB`i$tJ=#uEN=!)p7=(|PN zMAt<(L~n^cEBc)1ZP7cT?-6~k=<}j4i2i`+rf6AoOY|>^z9{-W(H|21%c4Il`hL;B zBKlWF|C;Du7yTQee^c~FM1NHDZ;Aex=m$jqw&;(G{vFYu5dBHfzbpFpL|+p9DZzKs z@If?u=}doG^zV!QjOd3%KP>tWME{}aUD20Ce^&G(q8}CgnCQ=m{v*+ki~hXmCqzFf z`U|3;68%NdPm6v=^dF1uU{1XEz#c={a2!268+brza#o@M86{XyQ2SA^xuhoRrL2n|GntfM1NoO zKZyQE(N{$OK=cnq|C8t+iT<(Ze-r(N=zkae6VYwaS4IDa=>HP^-=g0V{kG`;5&e$n zchN57HqbW)dM41`KpzkEi9pW>IvVIqpzjQHHqg01e>~8a1O3@RKN9H20{yu_KOX4M z2l|OXKNaXN2KwnhKNILL1^UZ@em2lw3G~+jg<1rv4XTZpaH+;s6RNGM52+qieN^?F z>JO;?nCjt1{cNK)B(yQ1%?X`L=#7NlOlXi&O=&|)n^GE2X>&?jQreo*eJO2A>3u0Z zn9}=G`ant#rS!p+zAmM&PicEfJ5qW$rEf@SCZ!Lh^o=P!lG39oeRE15PHAUKPo(r@ zN>8P60lvpVDkf2U40#X+EWcDIH4bQz?Bq zrDG`_PiY~g7gPH7l)fXSGbw#%N@r6#m(pt~Ev0lmrPot>BgG*ClNU3xTZ^!6Fq^Q? z4irmotwv*D1_Q`_$OcQrSr-O-8y31TikgKx4-41Grx1?04YX)}MwCP-4&%q!9}8N3 zo0Q?HD~Y+AZ^T9gTD0`$7h-Y6GzVso53w=i!(=SpfI_JRo|VJ1c(OG!`c;fPahTJu zA{&P)*~eV_JS4{Qv1U}s(Sc*KU@%U_8w_5_hEAn7{{WUTCQ|+yrJFYZ)Kfr z4vLXITuQRjOO(O#LrL})Hzs70hCaSVj{*-7drVI;wN7FZ3gN*r0$K^nM{U5wJqcOj zEztrRlpjJ+Q5LgK3nr3n5M<1VPN&Of)8!}7Z9K0eSR@;EwiA8a;%pvqa6dgvT+W7l zl-j;{YUhJDxL$n<$9fTF8SyyO%pOe|v2av7bURV#8;|3Iy4{@RmxpSLhvkolt1iV| zp%duCB4-of&3L%^3*i=KOJClJLn9Qs9rG0@-U)l4NocGY)Nvph0EBRB!wuPEdMMu9 z9&R1u|3&<9Hwo)96~-<92^Cswz}MX^PBEo?gA&d zECPAv6rB%$)_tyUrOUU{SJGF|n>GYt=#p_%fGi2vJgR8IYiGj6xH9S1C^6e^;(}Lu zJDRaY5$Z&O`QFbZk`|i9DZ>&*WQw2={c<6i70X33&O%hJ_OLH9Gkrepd-9TNJ=}bW z2BXD6w=!>pLBsU8R3n9(FCkO7m2u@a@wxd%mkRma7l(?buTW93Y;iQ+YAMK$MYf)B z^C!5P*5wM);#==whvHy3%uge(AR(UO>|ay7fg$TVmO}9Gh&rLxRxIv`=DHQ9a>JU! zLMPI3m@(MVeMt@>;jJ)Dbq6HLaMb;R!=hj+cv#YIoH#6DlmJT*bTq_3@U2CfvQ8Qq zKCxi9F!c6G4B`!$#*bJV5E)DoP$*LRMGys1j*K06^hJf`cDufaCOR58?4+->m}%?` zvotklkrh$^r9%%8qH-{lMB3J3C5j>~E$Q<64mbv&Jq&8`PhM7x`YA2fauJ%G``^D7WKjV^J$hF36$;f@$HZhjNuhzDJi z>^)#6igInjO)lHQX`#;i-jKON6bi!b~x5GU=_Oj#j5yX zWJ%bNXyo{6(Bd_t#j>=7PWUMtksvr3feK@e6qbLAk{&MHhkWzYbu7OuxZ1ZeumwOI zy0rst1%DcYe^~x77x`Jw%P|a=39M-#{4oyr0JUK{Qa%zckl`=evJaN}Gf4R`A7=?e z3+-6;GAqLsCgg;cqQ9V@Sr20jW{#Plfu;al@>LvdxX(=*J&=QZgDqBLV}WD+Q7$k5 zsU&n(GzMY*6d1s44#}e}=rSe>%m#7R28ccur+~9*Qb&WLI@4mVQJKo#jV)B{_uuT%IU@4u%Yg zK0sczA98CoNID?xR>Nsmz_b5QbT@+7_E-6XHVMaQgt;G(aqD708maLHzzztw_Mq)W zFbAg`82lh&=__rJ-!>r5wbm0f1LCZyJQoQ+xEMgpVT-;ZwB-~f6B-~eu-yaR{n0|(3 z%qfpxu#Q?p6_LCX^OA92J=-%#*kkgvjTgUt&?I7NkcU?H8IH1p96DkJ=CJD zRm|TxNZZp%J9bkrG+?)77K^>?LPzYNn;2l_o5b`Jz5*YWMAzuHn`#j^5&Zx8>^3KeX>cmfV{+!~b!0tqXJ&ojUNawdb<$Db8>OCU!cJz455&G($_oPV^Z zx3g#N%=ON*XHNBW&Ye0nTPk(;mS($q@iY)fy!&_;|3vN&BwdTrar=Cg;3MIf zD*heD&YVo@{g-icZER(kW$f%04q)KOlc6TR_dw4W^Rnm+ex?5sNa;5NnJDIp&4qV= z{WpFm$oRUEK?*ZjuH`qkRbUd8JOuGV686>rVBieu&TI6_sI zaD25iC-M!n6a7p6SA;WBY{#8xyZ+&9=2~uXaTIUibf2f4pSRE2GvoJ;O6L5o5`TUH zfpD+=kjQ3zAIW@y59V$-^9|uQ4X!`WomT(v`Gy{ZE=duRa0#9%c!d}|Imh9ZIfFai zj)yS+eXj9O{uH}d2t~YccldDHKd6%zMGwF&hhKnN>Ax}vj~aRf(IbZ*Jp6Y=SZWff z^tfC{Iz2s|E1PAIk2ih|LK*-k`r^|04Bvd)RnuoIPjr%l{>O8qf!vgbQI;OX^q+P< zIXD3V_y+z~;m>*ke{>3@r|WUlO+O{PM8;x-(|3OrzsNU-o|y}%ofy+e4(g77Irv%x z6})oDO>bJ_OaIYof2!U`BXzZ~jxOkLwT?@ugFZjivfaSXd3>7(IND4jKdDKdSb9#= zCpPjX5^yr|GplbaasymnDP0lfb77{@zjl ztMxdJlBV>VUV~3Fss7qHF>S>9Gw$0ar`ex~*Nl;auU$uNzxs?H1=K~(-U2W1F|A4s zuU!Z6=rKOjm)*&YoxJF^GFkMJ9&byKk41B!{Ikljy?g%m3I-))&YZdD68}HrpCbzV EUmm*G<^TWy diff --git a/NewsForm.cs b/NewsForm.cs index d64c86c..bf133ff 100644 --- a/NewsForm.cs +++ b/NewsForm.cs @@ -89,6 +89,7 @@ namespace NewsCrawler //ExcelHandler m_Excel = null; float m_fSupplyContractRate; + float m_fRevenueRate; object m_lvListLock = new object(); @@ -109,6 +110,7 @@ namespace NewsCrawler m_CybosHelper = new CybosHelper(this); m_Crawler = new Crawler(this); m_fSupplyContractRate = Config.GetSupplyContractRate(); + m_fRevenueRate = Config.GetRevenueRate(); Util.Log(Util.LOG_TYPE.VERVOSE, "========== NewsCrawler 실행 =========="); @@ -340,12 +342,102 @@ namespace NewsCrawler m_CodeList.AddDuplicatedList(Code.m_strCode, Code.m_strName); } + public void OnReceivedRevenue(string strCodeName, float fRate) + { + CodeList.CODE_VALUE Code = m_CodeList.GetCodeByName(strCodeName); + if (Code == null) + { + Util.Log(Util.LOG_TYPE.VERVOSE, string.Format("[DartAPI][영업실적] 종목을 찾을 수 없음({0}, {1}%", strCodeName, fRate)); + return; + } + + if (fRate < m_fRevenueRate) + { + Util.Log(Util.LOG_TYPE.VERVOSE, string.Format("[DartAPI][영업실적] 당기순이익률 낮음({0}, {1}% / {2}%)", strCodeName, fRate, m_fRevenueRate)); + return; + } + + string strRef = "DartAPI"; + string strTitle = string.Format("영업실적 - {0} {1:n2}%", strCodeName, fRate); + + if ((Code.m_enType & CodeList.CODE_TYPE.DENIAL) == CodeList.CODE_TYPE.DENIAL) + Util.Log(Util.LOG_TYPE.DENIAL, string.Format("[{0}] {1}", strRef, strTitle)); + else if ((Code.m_enType & CodeList.CODE_TYPE.DUPLICATED) == CodeList.CODE_TYPE.DUPLICATED) + Util.Log(Util.LOG_TYPE.DUPLICATED, string.Format("[{0}] {1}", strRef, strTitle)); + else if ((Code.m_enType & CodeList.CODE_TYPE.MANUAL) == CodeList.CODE_TYPE.MANUAL) + { + Util.Log(Util.LOG_TYPE.MANUAL_CODE, string.Format("[{0}] {1}", strRef, strTitle)); + + if (m_bBuy == true) + { + ModelessPopup ManualPopup = new ModelessPopup(this); + ManualPopup.SetMessage(string.Format("{0}\n[{1}] {2}\n\n매수하시겠습니까?", + DateTime.Now.ToString("[hh:mm:ss]"), + strRef, strTitle), Code); + ManualPopup.TopMost = true; + ManualPopup.Show(); + } + } + else + { + BuyItem(Code); + Util.Log(Util.LOG_TYPE.POSITIVE, string.Format("[{0}] {1}", strRef, strTitle)); + } + + m_CodeList.AddDuplicatedList(Code.m_strCode, Code.m_strName); + } + + public void OnReceivedRightsIssue(string strCodeName) + { + CodeList.CODE_VALUE Code = m_CodeList.GetCodeByName(strCodeName); + if (Code == null) + { + Util.Log(Util.LOG_TYPE.VERVOSE, string.Format("[DartAPI][제3자배정증자] 종목을 찾을 수 없음({0})", strCodeName)); + return; + } + + string strRef = "DartAPI"; + string strTitle = string.Format("제3자배정증자 - {0}", strCodeName); + + if ((Code.m_enType & CodeList.CODE_TYPE.DENIAL) == CodeList.CODE_TYPE.DENIAL) + Util.Log(Util.LOG_TYPE.DENIAL, string.Format("[{0}] {1}", strRef, strTitle)); + else if ((Code.m_enType & CodeList.CODE_TYPE.DUPLICATED) == CodeList.CODE_TYPE.DUPLICATED) + Util.Log(Util.LOG_TYPE.DUPLICATED, string.Format("[{0}] {1}", strRef, strTitle)); + else if ((Code.m_enType & CodeList.CODE_TYPE.MANUAL) == CodeList.CODE_TYPE.MANUAL) + { + Util.Log(Util.LOG_TYPE.MANUAL_CODE, string.Format("[{0}] {1}", strRef, strTitle)); + + if (m_bBuy == true) + { + ModelessPopup ManualPopup = new ModelessPopup(this); + ManualPopup.SetMessage(string.Format("{0}\n[{1}] {2}\n\n매수하시겠습니까?", + DateTime.Now.ToString("[hh:mm:ss]"), + strRef, strTitle), Code); + ManualPopup.TopMost = true; + ManualPopup.Show(); + } + } + else + { + BuyItem(Code); + Util.Log(Util.LOG_TYPE.POSITIVE, string.Format("[{0}] {1}", strRef, strTitle)); + } + + m_CodeList.AddDuplicatedList(Code.m_strCode, Code.m_strName); + } + public void OnSupplyContractRateChanged(float fRate) { m_fSupplyContractRate = fRate; Config.SetSupplyContractRate(fRate); } + public void OnRevenueRateChanged(float fRate) + { + m_fRevenueRate = fRate; + Config.SetRevenueRate(fRate); + } + public bool IsDuplicatedURL(string strURL) { if(strURL == "") diff --git a/configure/config.ini b/configure/config.ini index d6fbaa5..a118352 100644 --- a/configure/config.ini +++ b/configure/config.ini @@ -1,6 +1,7 @@ manual-price=100000 buy-price=100000 -supply-contract-rate=50 +supply-contract-rate=15 +revenue-rate=35.5 account=335261568 sub-account=10 dart-api-key1=840943e5370eb9037057beab35f4468fa9a6ce5c