From d21ded9f338704b860e8ebeca72ea056e97572ec Mon Sep 17 00:00:00 2001 From: BlubbFish Date: Sat, 12 Aug 2017 12:04:24 +0000 Subject: [PATCH] [NF] First Release [NF] Finish Switcher --- Mqtt-Dashboard/Dashboard.csproj | 2 + Mqtt-Dashboard/Form1.Designer.cs | 6 +- Mqtt-Dashboard/Form1.cs | 18 +++-- Mqtt-Dashboard/Sensor/ASensor.cs | 4 ++ Mqtt-Dashboard/Tracings/Meter.cs | 29 ++++---- Mqtt-Dashboard/Tracings/PowerMeter.cs | 44 ++++++++++++ Mqtt-Dashboard/Tracings/Switcher.cs | 81 ++++++++++++++++++++++ Mqtt-Dashboard/bin/Release/Dashboard.exe | Bin 0 -> 21504 bytes Mqtt-Dashboard/bin/Release/M2Mqtt.Net.dll | Bin 0 -> 52224 bytes Mqtt-Dashboard/bin/Release/Utils.dll | Bin 0 -> 24576 bytes Mqtt-Dashboard/bin/Release/sensor.ini | 24 +++++++ Mqtt-Dashboard/bin/Release/settings.ini | 2 + Mqtt-Dashboard/bin/Release/tracings.ini | 45 ++++++++++++ Mqtt-Dashboard/sensor.ini | 41 ++++++----- Mqtt-Dashboard/settings.ini | 2 +- Mqtt-Dashboard/tracings.ini | 55 ++++++++++----- 16 files changed, 297 insertions(+), 56 deletions(-) create mode 100644 Mqtt-Dashboard/Tracings/PowerMeter.cs create mode 100644 Mqtt-Dashboard/Tracings/Switcher.cs create mode 100644 Mqtt-Dashboard/bin/Release/Dashboard.exe create mode 100644 Mqtt-Dashboard/bin/Release/M2Mqtt.Net.dll create mode 100644 Mqtt-Dashboard/bin/Release/Utils.dll create mode 100644 Mqtt-Dashboard/bin/Release/sensor.ini create mode 100644 Mqtt-Dashboard/bin/Release/settings.ini create mode 100644 Mqtt-Dashboard/bin/Release/tracings.ini diff --git a/Mqtt-Dashboard/Dashboard.csproj b/Mqtt-Dashboard/Dashboard.csproj index f0d2bb4..94b8c73 100644 --- a/Mqtt-Dashboard/Dashboard.csproj +++ b/Mqtt-Dashboard/Dashboard.csproj @@ -64,6 +64,8 @@ + + Form1.cs diff --git a/Mqtt-Dashboard/Form1.Designer.cs b/Mqtt-Dashboard/Form1.Designer.cs index 787c2a1..489c590 100644 --- a/Mqtt-Dashboard/Form1.Designer.cs +++ b/Mqtt-Dashboard/Form1.Designer.cs @@ -29,7 +29,7 @@ // // statusStrip1 // - this.statusStrip1.Location = new System.Drawing.Point(0, 304); + this.statusStrip1.Location = new System.Drawing.Point(0, 370); this.statusStrip1.Name = "statusStrip1"; this.statusStrip1.Size = new System.Drawing.Size(843, 22); this.statusStrip1.TabIndex = 0; @@ -39,14 +39,14 @@ // this.flowLayoutPanel2.Location = new System.Drawing.Point(12, 12); this.flowLayoutPanel2.Name = "flowLayoutPanel2"; - this.flowLayoutPanel2.Size = new System.Drawing.Size(819, 289); + this.flowLayoutPanel2.Size = new System.Drawing.Size(819, 355); this.flowLayoutPanel2.TabIndex = 3; // // Dashboard // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(843, 326); + this.ClientSize = new System.Drawing.Size(843, 392); this.Controls.Add(this.flowLayoutPanel2); this.Controls.Add(this.statusStrip1); this.Name = "Dashboard"; diff --git a/Mqtt-Dashboard/Form1.cs b/Mqtt-Dashboard/Form1.cs index 9a46687..7df74d4 100644 --- a/Mqtt-Dashboard/Form1.cs +++ b/Mqtt-Dashboard/Form1.cs @@ -7,6 +7,7 @@ using Dashboard.Tracings; using BlubbFish.Utils; using System.Collections.Generic; using System.Threading; +using Dashboard.tracings; namespace Dashboard { public partial class Dashboard : Form { @@ -24,11 +25,17 @@ namespace Dashboard { this.updateThread.Start(); this.FormClosed += this.Dashboard_FormClosed; + this.SizeChanged += this.Dashboard_SizeChanged; Mqtt.Instance.MessageIncomming += this.Instance_MessageIncomming; } - private void GenerateSensors() { + private void Dashboard_SizeChanged(Object sender, EventArgs e) { + this.flowLayoutPanel2.Size = new System.Drawing.Size(this.Size.Width - 40, this.Size.Width - 76); + //this.Size.Height + } + + private void GenerateSensors() { InIReader ini = InIReader.GetInstance("sensor.ini"); List sensorini = ini.GetSections(); foreach(String sensor in sensorini) { @@ -47,10 +54,11 @@ namespace Dashboard { foreach(String tracing in tracingini) { ATracings t; switch(ini.GetValue(tracing, "type").ToLower()) { - case "graph": t = new Graph(this.sensors[ini.GetValue(tracing, "sensor").ToLower()],ini.GetSection(tracing)); break; - case "meter": t = new Meter(this.sensors[ini.GetValue(tracing, "sensor").ToLower()], ini.GetSection(tracing)); break; - default: - throw new ArgumentException("tracings.ini: " + tracing + " section has a missconfiguration in type"); + case "graph": t = new Graph(this.sensors[ini.GetValue(tracing, "sensor").ToLower()],ini.GetSection(tracing)); break; + case "meter": t = new Meter(this.sensors[ini.GetValue(tracing, "sensor").ToLower()], ini.GetSection(tracing)); break; + case "powermeter": t = new PowerMeter(this.sensors[ini.GetValue(tracing, "sensor").ToLower()], ini.GetSection(tracing)); break; + case "switcher": t = new Switcher(this.sensors[ini.GetValue(tracing, "sensor").ToLower()], ini.GetSection(tracing)); break; + default: throw new ArgumentException("tracings.ini: " + tracing + " section has a missconfiguration in type"); } this.flowLayoutPanel2.Controls.Add(t.GetPanel()); } diff --git a/Mqtt-Dashboard/Sensor/ASensor.cs b/Mqtt-Dashboard/Sensor/ASensor.cs index ca1a6cc..be70005 100644 --- a/Mqtt-Dashboard/Sensor/ASensor.cs +++ b/Mqtt-Dashboard/Sensor/ASensor.cs @@ -57,5 +57,9 @@ namespace Dashboard.Sensor { Dispose(true); GC.SuppressFinalize(this); } + + internal virtual void SetBool(Boolean v) { + Mqtt.Instance.Send(this.topic + "/set", v ? "on" : "off"); + } } } \ No newline at end of file diff --git a/Mqtt-Dashboard/Tracings/Meter.cs b/Mqtt-Dashboard/Tracings/Meter.cs index fbdf3ff..c7225c4 100644 --- a/Mqtt-Dashboard/Tracings/Meter.cs +++ b/Mqtt-Dashboard/Tracings/Meter.cs @@ -7,18 +7,22 @@ using System.Globalization; namespace Dashboard.Tracings { class Meter : ATracings { - private Int32 DisplayItems; - private Queue DisplayAverage = new Queue(); - private String DisplayUnit; - private Label label1; - private Label label2; + protected Int32 DisplayItems; + protected Queue DisplayAverage = new Queue(); + protected Label label1; + protected Label label2; public Meter(ASensor sensor, Dictionary settings) : base(sensor, settings) { - this.DisplayUnit = (settings.Keys.Contains("unit")) ? settings["unit"] : ""; this.DisplayItems = (settings.Keys.Contains("items")) ? Int32.Parse(settings["items"]) : 1000; + + this.label1 = new Label(); + this.label2 = new Label(); } public override Panel GetPanel() { - Panel panel = new Panel(); + Panel panel = new Panel() { + BorderStyle = BorderStyle.FixedSingle, + Size = new System.Drawing.Size(200, 100) + }; this.label1 = new Label() { Font = new System.Drawing.Font("Lucida Sans Typewriter", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((Byte)(0))), @@ -27,6 +31,7 @@ namespace Dashboard.Tracings { Text = "", TextAlign = System.Drawing.ContentAlignment.TopCenter }; + panel.Controls.Add(this.label1); this.label2 = new Label() { AutoSize = true, @@ -34,11 +39,9 @@ namespace Dashboard.Tracings { Size = new System.Drawing.Size(96, 13), Text = "" }; - - panel.BorderStyle = BorderStyle.FixedSingle; panel.Controls.Add(this.label2); - panel.Controls.Add(this.label1); - panel.Size = new System.Drawing.Size(200, 100); + + return panel; } protected override void SensorUpdate(Object sender, EventArgs e) { @@ -53,10 +56,10 @@ namespace Dashboard.Tracings { } Single average = this.DisplayAverage.Sum() / this.DisplayAverage.Count(); this.label1.BeginInvoke((MethodInvoker)delegate { - this.label1.Text = value+" "+this.DisplayUnit; + this.label1.Text = value; }); this.label2.BeginInvoke((MethodInvoker)delegate { - this.label2.Text = "Durchschnitt: " + Math.Round(average, 2) + " " + this.DisplayUnit; + this.label2.Text = "Durchschnitt: " + Math.Round(average, 2); }); } } diff --git a/Mqtt-Dashboard/Tracings/PowerMeter.cs b/Mqtt-Dashboard/Tracings/PowerMeter.cs new file mode 100644 index 0000000..816d97b --- /dev/null +++ b/Mqtt-Dashboard/Tracings/PowerMeter.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Dashboard.Sensor; + +namespace Dashboard.Tracings { + class PowerMeter : Meter { + public PowerMeter(ASensor sensor, Dictionary settings) : base(sensor, settings) { + } + protected override void SensorUpdate(Object sender, EventArgs e) { + String value = ""; + switch (this.sensor.Datatypes) { + case ASensor.Types.Bool: + this.DisplayAverage.Enqueue((this.sensor.GetBool) ? 1 : 0); + value = this.sensor.GetBool.ToString(new CultureInfo("de-DE")); + break; + case ASensor.Types.Int: + this.DisplayAverage.Enqueue(this.sensor.GetInt); + value = this.sensor.GetInt.ToString(); + break; + case ASensor.Types.Float: + this.DisplayAverage.Enqueue(this.sensor.GetFloat); + value = this.sensor.GetFloat.ToString(new CultureInfo("de-DE")); + break; + } + if (this.DisplayAverage.Count > this.DisplayItems) { + this.DisplayAverage.Dequeue(); + } + Single average = this.DisplayAverage.Sum() / this.DisplayAverage.Count(); + try { + this.label1.BeginInvoke((MethodInvoker)delegate { + this.label1.Text = value + " W"; + }); + this.label2.BeginInvoke((MethodInvoker)delegate { + this.label2.Text = "Durchschnitt: " + Math.Round(average, 2) + " W"; + }); + } catch (Exception) { } + } + } +} diff --git a/Mqtt-Dashboard/Tracings/Switcher.cs b/Mqtt-Dashboard/Tracings/Switcher.cs new file mode 100644 index 0000000..0fe31f1 --- /dev/null +++ b/Mqtt-Dashboard/Tracings/Switcher.cs @@ -0,0 +1,81 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Windows.Forms; +using Dashboard.Connector; +using Dashboard.Sensor; +using Dashboard.Tracings; + +namespace Dashboard.tracings { + class Switcher : ATracings { + private Label label; + private Button button1; + private Button button2; + + public Switcher(ASensor sensor, Dictionary settings) : base(sensor, settings) { + this.label = new Label(); + this.button1 = new Button(); + this.button2 = new Button(); + } + + public override Panel GetPanel() { + Panel panel = new Panel() { + BorderStyle = BorderStyle.FixedSingle, + Size = new System.Drawing.Size(200, 100) + }; + + this.label = new Label() { + AutoSize = true, + Location = new System.Drawing.Point(69, 16), + Size = new System.Drawing.Size(35, 13), + Text = "" + }; + panel.Controls.Add(this.label); + + this.button1 = new Button() { + BackColor = System.Drawing.Color.FromArgb(0, 192, 0), + Location = new System.Drawing.Point(94, 67), + Name = "on", + Size = new System.Drawing.Size(45, 23), + Text = "ON", + UseVisualStyleBackColor = false + }; + this.button1.Click += this.ButtonClicker; + panel.Controls.Add(this.button1); + + this.button2 = new Button() { + BackColor = System.Drawing.Color.Red, + Location = new System.Drawing.Point(145, 67), + Name = "off", + Size = new System.Drawing.Size(45, 23), + Text = "OFF", + UseVisualStyleBackColor = false + }; + this.button2.Click += this.ButtonClicker; + panel.Controls.Add(this.button2); + + return panel; + } + + private void ButtonClicker(Object sender, EventArgs e) { + Button b = (Button)sender; + if (b.Name == "on") { + this.sensor.SetBool(true); + } else if(b.Name == "off") { + this.sensor.SetBool(false); + } + } + + protected override void SensorUpdate(Object sender, EventArgs e) { + this.label.BeginInvoke((MethodInvoker)delegate { + this.label.Text = this.sensor.GetBool?"Eingeschaltet":"Ausgeschaltet"; + }); + this.button1.BeginInvoke((MethodInvoker)delegate { + this.button1.Enabled = !this.sensor.GetBool; + }); + this.button2.BeginInvoke((MethodInvoker)delegate { + this.button2.Enabled = this.sensor.GetBool; + }); + } + } +} \ No newline at end of file diff --git a/Mqtt-Dashboard/bin/Release/Dashboard.exe b/Mqtt-Dashboard/bin/Release/Dashboard.exe new file mode 100644 index 0000000000000000000000000000000000000000..5a27e58c26758fa47a8c4e07346d03b0d45dd8b6 GIT binary patch literal 21504 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 SmETMLdzJnF`v2KH@P7bI{ewmT literal 0 HcmV?d00001 diff --git a/Mqtt-Dashboard/bin/Release/M2Mqtt.Net.dll b/Mqtt-Dashboard/bin/Release/M2Mqtt.Net.dll new file mode 100644 index 0000000000000000000000000000000000000000..154580d98531857d97512f52694e035fa5e032a0 GIT binary patch literal 52224 zcmeIb3w&HvwLiYknVBEzL*nNZSBlQbkv!4?W6P0}`yHfbKEEyXlVhBh|I zgqcZcDS=d=fby2NRohyXhagWcA}T0y0Z|YUky~p~P*6kxLGUX4ziaJ%&YVe71ohs} z@BjP!rk!=xT6^uaUu&=ZJd+jct`IIEgd5-Y-xuOOJn2)<@PolPg0oBS&ldOiepq&& z*80P;uFV69@JKwiDc(C2?&}>MjwQnzqv81IaCl%i+|Lqadh&@zO07#u@#KmRK{!-Q)Dav0ZTzKNm4ka2{APal`qZ~=+Z|I|~F z#KLDe^ma0)iKnO{CVs-2$OJFv1tE$jhJ6qn7Q%Fdo1m9F=;~y2TN3pC?*br<%c}AX zia%i?HdMzG@jg&8Zzvlz)FT{hgL;&@IvyR2L6Gt)kY}!g$88Zt>V;U6&Jki9<);tj zO&1<pGTw^9A0sZeohc_u1GFm#cbW>me@=g z9}y#Y6aod1b61c8Mv%ZXG`B?}92#UeBPZyt2m}q?J;pQymRbUgfU(SCFaicjFI6xC zMvKK@1dNj`1|ve`*0{w{s3DXt5c0dindvo4&+ReRt;vvT*7;3V*E8>V zZw2B~`sd;alMN)Mqo(|ZD;C0Yw!3PRr>ftGBWEL$Ln&0&d(0cFKIW~;G~ymR#BiH8 z#_}na5l6~O-q0Z%ITAUMVfh(m{+dkFbJ@WB`;B;3N-kDFO~iS*7kP0bFRoFfJHu~O zog9Z9jAR&>4HT?P6hbaDlvO#`^cub^i~3?kV8mun!pte1*5hFL^4Dbf5OMyGO__pg z6je1N*Bx+Ib#P&GJpoVYsZv2G*Qh)qV1#P@;8jUpz!Pu>3{|v%k-sL_2p9o3R6Yx# z(<~vS-Dzy=tafGu4S%Y|UxDasjUqx-!2f^qz+QW0a!T$iH%oQldttHoghE4d@QBorJPN zxgJC`yaj7AD%}KqUUSWwtbD&O*FZV_0ckF$Qh`G?e=xjj%r%^DuA4H3Y9VXP^^}Hp zS7tgX-A7cU49Rg41$LmmgK{>{6{^(ocUNZE{LpS2mDL2gBDcm6^O0vS@~p?}U;_D< z!bUZ}5sEj0+Gj{Q!yA&3E+Na`=Z(xl!qnT(vFe)*8AyZ)lj9nIk5il;a7>s~%k;PyHjEgM>BbKS;Tc#phHJJiF zi9fn4FE5lI%FD|yU0f7_+c7E-?h+`q43~B$Bg5H^LpNL+Wk&amQ5N)U_ZSse&-RQ_ zIrVH~jEbjcd&j6$dbT-6h0(KpW0XTZ+doDb)3Y`cyrF<0D=uKzH5c$Ys*WtfF8=g@F)sj$ zGBwXE&9>@_d%&X4qar4zYzFMs$^|Y{_910oD4?1wkZQAlv(d=PCaUuX{B}WrOLZAg zmk|p1RYClzf@C-fLdFUY-!@TYW+2m630$g#Nd>Y(flQ?`Go>=ip^~~wz%yB8b|BkU z30$g#=>(>Q0@+Gsc1qp@ZM!n*U))k`y}nNXuqWWl1>ex89az)u+KO(Hv?vyK8V^wUTMzmv?0?D2ODk3#cXMKVm!7*3wKu@V-rOx9{WE#UXhAdtY|8QVA~2!sSqqnAy8@`pHmUcZz@G#+lt_JDQ93=ihz6r51w`FfOwgjDT^u#bD${J<z>kup;4FBQQA+s^llxvGxJh96X zDB$rA3k-@P$Hnj=gkgo?q$D2NZB!hq$3KTW=HX{ftpJKtBT>Cv zhxi8a;#kl9E33Hrv{hXFVTL5ReKCc@kO8*KfM=k2|7pl$HsvuRfq}=!Je(zE`J~}k zD_UzJX{`f(Ja!U{+$`tK6In}FZct2VgU+?$Pf>HJwc@WqrL7f7Ra!r_YPZDd0=!=S zH`nh-TK$gv`|5X^tlusFd-eO5k66F(QD3xt6eD2lw-}6AEl?<1U_LhSLZMJ(6lJRT zo$^pJ3=3FNfdwo@!~%91J+OdX&QH%+3q3<@FJyxrY_ae@t+SuV{FKg$&4!zsUYDcj zN=a9H3$4i{CB<{z{P{sC#FUzI7FlAHHl~_0B&}xd9G7NVxmXQgl7ZPH1_=_)uf{OK zaq4*EMb<`D2Il2dD2%O{sc9tkaj+NT4UeNMotjI_xXIJV(i)|B;|4iPx_l0Xq4F~b z$~{V+d(GVN^iE>Yv>;7_>Wn4wEeQ|p>`Xl?rLs)n0ElgO|HIF+CX~Nk`VA~F{j&1x zxz~sEG^*~(<&$STRxPT@ibYxz7V=A{V7`J)Me<7t*jTPx?MGlUFwGHRCoFwK0=tQl zu|c^kjB94d$4Pm8Sm(L9^-aezkL)1e){A@cu?;}Q54dIH+XjQsnb;)A$IcyDGsyfN zBB)uEaDKJlidHu-FmbIcJz>B-m46I)ylcs9a?MaKZOnPOfZTgvmu|MWfG=Qp*UI|B zO31r*Ef(<1Ta)XnoU6PtDg*UvN3g|}Fhm1psOD*!6;d5{!C<|pV?FNG#Ymw&B~<=6 zo)7LmqaZ$upE8`MaSs2Cxg1sBJ};(m)HNKtdtU;{Gb={mQNC<37{NI}egqRjqhhr+ z=^7(RI1Ua+gs)f;7y;uZi@^vOH(Lxwz_`U?FapM{7K4$y?4(E~k|IU$Q52ng6vd)V zHWs#g-i-gbF}*!)%xVAkjX5|Lp}zB}|GhD%4p#C}#&ong=DCJm%(biMbI;?wmWN@N z2IW7s5B{&rn>OyQTtrT*bi+sU!5`pZKcwqZd*o-MJlG4S_P~mO=UCI|)S#ex!m+`` zNtUayuE=!wB{R(neWWQE_4m|XeZxm=EA*qUqGxb#X2f0w`0T!6hzn6p9OO|sul}F1 zJ72+C=^iN?pLug}M`jak2?t4ZmgJ|yF6+!lmJ#Ph zzx(iGJEqG4dq50dfy8!KPMg4(dXWB*CPcX`v=z!M28=6rPs;RvrPlh5$c7hX*5hqx z=YmOo{WSLHl0St%rFJF0$vKK5 zYcC~4bMk#=0q^xf3r)AvJF3jm{OeL3)#ORIJU2g;>SMwrJiVi0?-Lz$G4(5+w*RXG z!@oL5My*lB4cQ%?Dh1`9Y8Ed;?1?;)avM`qIJ5istu z7>s~%x5Z#2ZqM^50u+%L=6M`w4_+D4XHmIn9|SiX$R8o^|C9S5Zt*#!^{>uv9HS2E zD1Fpn#=kV`qvNn@-aF>8=Op{QMo;8t*> zgxUpd_kYef@$VTRXh^ts!jM3f5X$w^sLvHhJsAVUJof)M4Wp%^{7(63p7%{LzoTYwxMbYsk}jDMOy`b-rJ*x2 ziB9}=E1VH9{=;H0l5*J;4o}Nm^j(+06i5`I@9I0SqI3I=46iG46qF~i?$a~%vx#eZ zBe2{`TqLObB_>ISjaU023xWJIFv$qkEW-GhNbj~ zi}XBGr8hAir+2t`FsdIz7f%cr0pn?l!3Y>Xu^5bi@r=b_1dN|r3`W3s)?zRM#?LGU zBVasdF&F{kN5ojFyTYe>u|UDSt;hikJ9J;mCs2p{kq2|Si?0;AJ=yMTPqu*rvR{#8 zTHJ$nT+A)f;!cc4`g1KAmlc}r&5OKX>j*l+^YUb}Dwy+!zQ!Lbe<>~5rpz4fkRqM$ zT5?5^pF=tN`h6%hy6!jV5jjB<#u(LuXI`$X5Pb)Q#A*>x32UG*#i|2K4<+i*JIB67 zY=uAMz#kwyv4BJ#cd&8LY_Xq6p+6urZ|sNk(06dYIB`|W+1_k3F^4kv7$o2@Ts0XY zRWE3-ki2IX`3+awgmAZKs&Hq$b2wG4QZNJhb$F;!^aDq;WSiN(Y`-3X*%(hJmIGp# zr7Xp=fFI1ti2o9<*_$vxorS}W?@@X3$L^;`XzVF^yl4C!fr+D0FOd?eMkDer7|BfP zTxJY?(>V45v=q*wQ5y!X_C=oLrx8IP0qu>z&ha!Oux30x5%df^{o$A4a@LJKNU20L zQoV!lssPe_43kNS~k z(J05;l#j?C0V`YxKaZl|gOYOv?4YKv!W9&H#*RVc+4>H$65`R*;*k|uIE!WTL@g=L3X21vL=Oci=aYbqg;#%F$3e$BIG4Z`Q`IwT~$xyuaHZkEPCd_;*9)w zxeE=*T|Baq>X6Hmmw8ZNXUVDuLrk9`ie){x1O`qzmxrAsJ_lWX#DVD;G1v}THx&7A zJZH;ue(ZC)#4N}kLGp=v{*ib!pSMN+06BSPh8{=pkyZ#@BQbh71sUEduS&8sLoVD= z2f9G5Q+}~GpzojxE6)gu2r5RAuGq1_58`gO;f)*z^nkOqlpW}})m~CcO)o@T-$7Ol zkC89U+tIiczmhY6s-xr+o->C0x?*QAEMQo~uoy6LF+j|XnyY|T8nmn6hvS~2KA>s6%VOC**_V#9K{titgi4UoDk0V6bGITZE@Ikcf?@DQh; zvlvB<35f90IYQKVRfjlS-t`@noIBP?(Q$kGJD}#_>f*QY ztdQhc2~0GMvyeYo&P-7>TeMI)?Na=eO7W==D79M_6gsG^Pa^Vc)OEg}UvDr9>!L1t zRlq2yTOZ2OcRY^7%X7`3iw#vacYb09S_{Xv6zF}=KxZ@(9RQJ40Lf|WOsjItf>;L> znfb9UJVO418NMoPp-Iy=7M+Zgv6(DW!zr1s*@Zmm_+l2o@7Yx1Hom*k%m;84kYosY zX4V;{8Q^3~veaMaF3rq!C)Od1mT9h7J1{KQ+?;yA>*nNfLL6Je0l6ODL6ZgZ2MyH& ziHg8A)Ta2Q-hY9qeYbaM-)PRS3XlXdU$+jq~*5U~4g#LL)%L3sv+p5P|`VI^x zxOgj{u_e$9>9v#_Pplb9RxVJn^Xn?CSY;{}ZfH^LDPkSOE;=gIZ~2Op7e`Oh(5rRq z_O?ao3KHRe6p!4i!7s~pr`LvHlys2zYY8md`|`r(-v<5U-%9{sZVWFL%s5+GVw?yT7HcD75vXm z^bzU2r0ZqxCTA84@Bct8{U1_G(xGKiR?uyYER_wP%z-b0q8ba2N3==eXCfrm$~NvR z@bn|#&X*I2g}$lc3{V`8N(1lq$T%LE3g(BCQ@Mm<7*-5J#V}-yFHIHW3X0*iVt7>y zFUP3dI;j{#ByL*brV=-$_%f^ECPllQqWP?7s=5NQzAAI9Xx0;J1sahv(MF&uLS(p+^E&s_8!-vhB0 z6Vx3K0-2wqM_xf$Aw*OU`CGzUSflX?!V+zT{{Y?gp@o z%X;eGB$`5xynzHO&oN@l$#VR}p_!JnoM}40sDo+#>m;=Xaq>w5F3+euNd@N1z~j;a z=cNbEOr^@BSL997VA@<+Jv2M8>KeW11SSEENJ81oA{_ytT-?ci94%FzTO2InmO~sw z&dbEU@cZXl<0Cg@uDS3M)DTW5arua4WWE-iL-odLV%)?uL&IdX4LQ#+Vyp1TEeVt~ zgUtg2Dp*u#LOhRe877?XVYFC=Nm(w`?1B~0lfEQJUy`Hm!fY@NISumZULN}^^Ccs{ zF58>Hrh$Q%a3inbiBa-1wAy1AweT6Jm4e4!4~+(Qnb>MzMtKajgq>NQzDb)atSdAM zd3tBaz}jkWeyk8;mE}@mW}V+C&0>+tpk!gDXd0#2%u|_DQ@vw(LN*_hj7oIAA5p&` zmQ}X~&-xbD+F8u6F9*(dcWK@#ZBR~l;4|MwHa@7Rub_jeO4@wbavDWx#q+A-{WJOA zZl{-DKLnibC*|VZF-N|Q8M0b1nWXGXTT$g+WXC_Y8Yt{4l#7MI57;PY2D2RVpOibH z&{zwMIZ4)?iJ4CpWV-9s#|4vsm~IaS(h$QsRT0W zk(hEurT%)%KA@VWpi)u&ZD2TNY^7;4Htr9zvBJp5ARCT<4HhW}O*L05RXJ99#oZNp zKibHu^qOhbY?a{{HEXYS%-Ri}>c>t(ZP2prhg3DR22lKy!B6W90r#=rH!#CH9sx$I z8_BJerxLbho_Id>5jK5guM45?s2N7SY)0^*ivsTw%ES3z6<93J)q+Is%BsTx`?t)2ap8u~J*`u8+$6Kgtb>t{)U^Anzp$9`H4+?A2%&FsALke zg1OElRMSrC&$-Y)OSS73D9#NAFf@>-P`*3J&6n=G|D7Fs;cJ*oI@@gFFD5dc07LbX zhk$Y~!7X1|&Le{b&T@W0RTiMAM_N^hX`phpCH1#YtV$O=aVQs;g=7-t!RgK@?wRiAY9GwRkk{d!$%C>P#TW_xxp^kK5?ta~{45Q;Ec76JVb zdsiR5AI_Z8;Tll&@9BpRpuL>Ap5SEj1NnA8%tt@G6ynN!J_%I1ufjl~!_1Az?kjDE zB^UICb-3=p^R8MmP$=hCdZ6&5`!_Rm{NP*fzmGd#G+nK8VbW_>mEd(^>}yfm$pIMS z-($|9w+Jm$EL%oRt)Kt%`|lsD%$;G-c}2=E$-UIT49B9A&kPRILa70J(da}1C-(fl z+&g$?f~F7gx4R_&7CfE&Y>ZE}2tN@|C;tq^-#3B(3PwVbFTxzzDc=gZ8vL^+@E2ej zMe2)|WI%ixPpABR@ZR)euRJ5g2aDd}5c9x00pCjCaL78HKj6em zR3TW8V1P1?eGfs>N*BEVG=x!#Dz-c`sHx6mPgP>AaNDsJ09lpi_+l%8@HVg7UXv35 zxuD>gQeoX1X@>LK6}Jc}=GO(~YNN2ur=}{EHIDFtx+7$G5yIsNSD7O@#dTgo_B9_Z zTl~kK33ED_=NrZPL*pN=p$*@5gd8~N$NThZm)W`dR-x;WCy5x$3y`kvjucVybhft$d6+VQt5?)e8})G-w)99o zqTnYvc*&(lFsnA+(<(w0^Yz3ksE%|1&^xWzy-U5@ii}`z<)4oFt$Myp&&%{3zr&OI z7uL_bYwkx4y+Sx9q5jZ&I-Qk-@^IK2DW|+XZIxh*gm9Kk@p0krReIpXj@S6<8GDhR z#@I`EQvK3-_%uA}LuYI_L54~?VWzV}o%aOLZ(yfXL3#KQtJQe=54vU_#0LBEt_U2H zABSuaFU`B~)^(`11i!%Kru(Xrg`Z-2!@~TP8S&TQToP*`dlnAfsr0%rMukV7sqDxz zXB~O|J&|}B)SM#ZHGDe)Yo@!A^w% zo4-Zn02RgNy9wc{5E7+SVw=Im`M5{GqWGg?t@w!bE;Z{r$kdUdqgn?jg_(Nn6ZE7y z(nLK{g1--7&!rhd2ai4Q$$ZY0g=a3lmHDBH(wd6!gTO1o^s{4tnSk+TH*9wcw4H^X z`!3RBpTYiacNa7;y_Di#RZ64g&Ez29V>!*P|Jw zIYI>c^ZZLy*mITHVg%X3wF=2lNM59wL{GQeP^5vBBnDAekwywxspm;vgx1@!A!-u* z(4CCdagHDQsxtY3gKQk58WopG<_!HD?D)HTuu@@$E5sN3qzv2rT$CB(uMDm#v*q)p zynSicz0XjwWPh2L7O&inH$%p=FBT$RzGp&Q8t+qSR@iaFGOm4bT*WQOb|g-Ibur@C zksZ=i0Dop>p2;J*--Q7Lg|BiO83#*D9$)9Zcrak{;F{&bMz9=N^D4Z2zOKV^!*h6= zA(nKWgu2DV0w0*G*t(#)rn;`Cu9gNd>?Wcy#1+S2Pxu@hG~u}!6*sFh86Ozllpu-z z4MJRv&M>RHQ@jI5kpteWW!)`Jc$)A9kqppF2FVfeM~9O;rS$7QpC9C3%j@Wc7D~Mp z--Y<1P5C{SU3d~7CFS1)=*1IdXCC#z0(>dXjrf}Qk}Py{pQLbTVjhNB@uvG#w;}${ zQ1=k-W0=eE+Rz0dLtInv$pXKqDJ(BE#OA_d3;p7f!fk+e02<=RVv1GE@UG$uLVmHj zq_M;=9xox8gN%n~66fPHPn>Cp?PZ@VFvOZ!6zkSmSI#oTv$Gxs`~yS(k%Z4>xP;-U z47W18lHn~3zsK;+BM%*Uq41VdS&k_Wl^bF;!z9D2$|;pEFubFDKSG~m{CUQ`vng~M z!_aJsd+O}^*@oE2@EnGhbLgJgR1e={{HKh+!tiel^XI(k_KT0rX)H0soJ`WWj5+5r z=Ld7ByuV`j8pDzZ$<#)ut~w&+sHN2m&y7$meTw0A%-IKMhTNA8f$QVVgNDsHpQ4WpLPM73JjPS#W!rSMvcjwlmel)K~CJnUvmomi#JmO4KJ5bs1CJ6m=C- zyO_F7T+h^XpaSA+s7;D@7gKkNFEjN7OWq@HW9opS?quqZEO{?}QbQ%hVP{WiWNIqNXu*v!Ze}4^nspR2H=4YgF_9 zg%o_^zp$zz>W@qvBnpzkO{u@AD3_wb+D=RxLrlGnBX^?aDC#JVcZ{NHw4Kn>=x%dk zexTKJSOV0eD9tiX?*jJ~Zdj|foT+<2O&2~;r1LwVvOu+Jev09>4EHm%0VHd*zhUYT8j^S4sKEm)94Buqv_mPHK3{POVmSK|NWejg(_+5s- zVE9*td47sp$FPmzCm8MmTs^*@;WrungyHW1JICD_2LPutoSktm>g}rx@65Or_%|5; zF5{0uX7%{WOwzWVVS?f148O+kM}Vuwf5$K*i|`7D%?v-za2vy`8Q#wD2Y{NW$i5YD zQ8wjjD7#wg93N+RP4-N1ZejjI41dn>O@_W{Bwx(1mflW zKFjd;4BumzmqXgB7%pMh&F~Wp#~5D1@N*2m%J5-^2N}N2&=(**GXXVmbFdmV|Mei@ zj{tXzCxcYC&ok$@z%}tFmia3~BbVf-F)YZX(DK{^fDh&F1plF2vg*ZoHv{j?yA5z4 zZzeeB16qCR+u*Mre-zN-JPY~N<1a9LmEm6)dZrUUmth&h8ivO)T*|P6;b{!FFxN_w>I3l7+|~m(C|!(%6S zKa=5=Gsp(M#{9<_{&vRW*a%-&OmV3-t@au%e%!Tsd?%pAxxBc|y?Xp=hBq?Y$M6=w zGVyG258yk+eYi77aGojI2KZ{p z*+^wMud zumk52&$cvboT=->Bz!*S%rEvZwadK5xC-%ZQq*4KI#72?3X<31GUbCR>>J2grg)U8 z^UTMLFN6BAEqOb}{}+_xF&QsmKKP2FPRw`()EkOgo-u}z{;!Ja%J?!USDCj;d5Ss<@q(gQQ5PUyP?Rg`ij3DV$DF6A&u6^BI}D`r5zkLD{(?E@LJm7$ z9LV@PW&=s4t`=`(c(ej>p9(WGGqgg{ghjj%J4JqG9q;eg)J~lH!^#74=MAE1I&)v{JE~sYe9m^9a$-v-U^C zN!b-SJcDMIY<0jQ9nhzi1@vteua1u@n=Q-5$Vkpe^b=o zk=|V4!77Z}HX~S}RfsG_%?Ngb3Mr}*VU=R0q81{oQp{0QGs3FGQHtt7Se00)sGi^$ zRwng|8VPcxCp@+#3Fj#U)( zxCYUvsONJ(r7aOBE9%AE%RzN1>b2Z!v_`RBQGdz35mZ!BB5#k@B!(1~owpyt(6a zyUZJ=S7__R5sLca^lngc8_FU0(!s5q|F{>b(_Q>Q@c#^e47Nlc!8USCV9S1VoZgRzuqh^P+{b+H;c<; z81nLl7!cRnRH^<6al48~@o3%3M0=xBL1qv$g^XtmjsIjR*u~pPFC2MJ`c#$cx ztaANK(S9uDMYh;k;xeXWOP?k7t1xQmvqbVZlB9UJx+MO_l#F+dIF>dJQKE;YzpkAl zmMH4k>2HHNSyJ4Z=Zf`Ak(Q6?=ZZfuC3E&k@gf~zs=S;h>Q0b4vqJUydEz)l6@;2W zH7ROV=ymOU(WFOd}Wl~0Rt zrlh@mT3p1Gw3kndD^(bk_7ZV}3Zv3qBKFBJq#o5T756DgvbxK~gG!RD?sD;%3ZwE} zA%3jFsC-w5=T#V$?@IA26-MQ|Qv6{RVNaq*&*T;&Pj6)^8MdFhwbxtAAEJ*DQ6Cg?wH-yeyT% z7ewxI&KdW(FNhgT$r}8EI8ufog*U_=QRk4{D~@wW?iEccjPkipw5l-5=RVOb!=UA2 z{flByNgkj7IsHpwzoOQF`m#8ns0;IN*1sb1T4c_4gSttyD(aE^d-a>e`HDIK>K5^U zqI?Ap>9>kME2<3CS4GuHQp<{hAL_S>eno8rb-TDhQSTIt(XJI!J596j%b;#iVKmpc zL)@jpXs&UG_@)Y@ar#d2Jrzdd^qt}f6-M)kyTmgpjOG(}iC?HNnupviUQ%H+54l^s zrow2hagTUgh0$E&9`U{kqq)Yt!h156Xs1bYjeA87Q@hO0z;E=givmS$3cL!cOi=}e zZ|eUc=1L0f@GhvuHub)KpNQI2xAtwZ&8D(l-x0fQs@U~?@qkTLxtwvd}yN$wjieDARTyKf>OzjfCElh&CL{YC7p6&XJ_@<)%UieAZJK|BBy4dws zVYW*xo}#NeI9*)=KILrk1ah)B&d4>m~IkrY_nnDPso3 zdul*Z(`UQ}ig2v$U@!mWvZzP2lHwO!0TuR$c4G0%u3Vcsx%f>NZZbIH;YI{g6z^RZ zE=DNo#A4y5SAQvmM>L8TPK#G&hm{m(xM$haiN!&8xlK{LxoPn#?68vJ5_gqNomgD% z#wordz4>YJaJs3&N{VaUIKx!biNy=uIPO#wrFWe64%gCo>@o3j;U_3mdd$U|Pf;|d zJzfhaisrP(YekYmeKxvJ&}t+lx{FV8*K4CpT`Rs_+~sc2KB=h3i`TiAXrE$Aj`oe( zRgyBVE~(HOwHp=nm6C+JQQN1eZKZ_*43)L%+zl*T6uSAUl=6G-)OW(@6rw^idOU8TFa0Oiy9Y-)!KlfsNb&9 zu2vMS*w<)pGj*+~p1Ie(M#FRppKHaInK!xDYOPG|GD}PMXzR2trp_}XrTamhrow6w zcB&RtVaFrvRBc#=wIFQ0wpE4oB5b{Ot_s_Zu+y{)RoE2>J59Sng?$BKAJ?u|Vc$g9 z$F;pG>`8?6Xg8~{LkR29?owf|BW#0qzoNY1{h+?b)U{?w_%U~{c7Um!sNF%)t1XOC zX?K}4uJmg4ilT9)S8Gw!d1XI!Z`4*P>iV+hL9LS%Yw6SaY^q!9)5e&3M7ynQQ1ok8 zI>P$XtUPL4a!K(!?oBpzV)6U#0h=N#AJT4QE!T=8kC^5e*1o2wiX%dv5$ze9n(2va znIp3ODvp@r8P%5CRIO*bb`evb5etr3>^UbbFXMK4CFlX4w5bz|n?2{*)XBvwJ@N#& z(nIHc3y&ap0>is;fnOK(jJMfP7praDlD`exP)=OODMpGTbxwv~50cEsp-mU0-zA1w z^H~MNPcnZy^Ur7gWDQra4C!%U&y!*;$^FOaPS$fc&Lf;df;w(NQ!3K{X+NA!?4JiT z#BTw;*bk@E@xKE4L;+;{*tw;@X&}ouIiHd*)BVz6O6Sbg;WQjh|3{TSoE~Q$Zex2O ztDxO-suRLp;?4}JlWzceuv<={A4c0_EJ^UgS<63{;s@vCaJA$t^@+GQp<~aV%JpI7 zWr=>zwdB+zaT!WFT^~v(N&cgBWlcKMN~L1;N@wW*9DW;HGC}NTa~bPq?6D*zSl9ZN*Lk*lYOf54pZ&I82Ps&g2G3XqPO6v3>y2j(L)sFKy4~rQ(^ZeoQR4+(x z%~t5tMJH=c;ZxZ_DpV7L9E&(k9Cb1!$1TqM0KP|@&7nI1b#Wo%PJ5GWK~QJQblH|! zjla5lv!FTVoq*liHyA#|@G*uzX83c4FED(C;p+_FWvFQs*9X|;DFocFl>rWlxeR@f z85FhJ4dvCit5ojUiknx&Y2eTX?c3#>JOqb5g?x%Y{QX+3_Wkm4=3n4x(SBO~4bLj= z*X54@zFPi-rxr3l0eq|c=ivM#}I2wIY%ajT z|I4*kdujHVxLNx%;37eD={q&|oR#Jx;h)oO-l+xWtTW5R4dqeu8``Wn1Lj_>cFvf1 zOj|oAZu-QQIXle9w8Wg9=0n=2=X}~EJy#+w$@17araKZ zeZB_pZ};sK&qnU`Ez*AIlZ5wHoT0v_C4z7MbqzwY3H1i|&< z0l*F7+kpMd*(@FeK8RoM^I#YLVZbDIusvcM<7eaNQ#@jv@$)&>MT}p<@CpvSn&V#2 z+IEY_A-{(;>=#b}zlrsKRs0C}9pWj#d&JX#_lai!9}v$1J}908e3PceLk z;d7kU0mct8{vzWqGyW>$e`5G&hVL-^8$+Q{x!f9+#nhh1tUpuxC18&BD{%6dUxnR0 zkEmhE1lxp`upcm6jG&)qi==jfW{PdN z+Xhd@`o}e@=kr_`4ls~XkqS6TiJtqnTw zVQu#@=K;D2Cm!THKg^s*wN7xJV4Y8~{%1Jd=NLc0GKUy{k@1%qzRK`VT&_O@hh6F4 zK`EB&WU=jxcQL+3C+l6Wll5-U$$I;Bvfj-)S?{1u);pq;^(J+)-fcQr@7X$8@3>CZ zd%jNAdy!7oJK`ceNf+rk+eImkyC}u;U6jg29C`_dKJ2=~ZHh--_X0lQx*zZ<4t>V; z9pKL~=YZ>B;F)gjWp3_eZqi)f-UL|eehr~v_nYo&ahw?PSBsOyO@MXccECpQUBF7_ zY!Pn(Pl)#bcL;ArHGb)%3}?)J;$?7h#Vo)XtYMbe?*FxiLVs-#9QV!8%ETUqhZqV! zal#Di8E#-W&TtRI2N@n>C^AUCAwaN~;ZBBo89v1D1%~y7B(s6xIKw>*A7prlp(x_i z8J01uXV}1S1H)d1;|zB)+{17$!v`5Y#PATq7Z{2eq*-GaW?06sf#HT3pV7|ojsxEB zEh{C-28O*1cQV||@F9jTFx0{%S;p|t5rm6b1j7vL89rD}^(K z!$SWh0 zy8++I-vhX~U_WL-8a#)NT@4rZG~C$H@L;6z_Xy-R_W0h@)KG7mp3dlA0xL0CzSc!({=1#6+- z-*mwY5ww`fEs2n^oBt$ApA1yEk`^C zsKM6oi??_aAOmU$&vHoIstSATnI6!)X zXb$k>0d;W#(!n~NVFUUF_EZ5i^niK5moRKX`kH8FxB|J*MJvNLq_1HHRtL^1%;YrD z!LSSIVEos-ppJ2<8Ti?N zI^IxN27DY)7dtUW)WjzN=@<7-27W%EE-nx&fbU{>5#F!BN{ZoC$fG7c!|(>=PRDx- z1aB1G;C~iS$K3T4;QIh|ym7G>_05b0?rQ^J}HL4`4ONdevBH@F{32- zH0lO7V*z!{D-*zf%J64m6r5)nJ}1ru|L1_Zcpmd~O%!N5fafzT)W*Om0@OuVI~TA_ z+X;Atb{^m??E=6W?Lx@Z0>Z|$i-Fex!n$zZLK8;=!p5{qfqx7T)}>tzd=a27j@7ON zejFfdO#2M*;{jn~+BJan+I8SG0K%@c8-OfBDx0BSFvG^9e z0avZ!*-{B-)Ob7=Z;bUvB`-EKG&(%c*GtN5c@;D~9POLT?;042#zq}kXrX+m)EhVV zBG%vsWlOXSC!_J<-ofUrD9Hy&R$G!{MPieM%UEEvk8T_sNNkSwPY6L~5W1u{5&b~j zE24=+@204%8boM}4G;JBZQ-IT5~ZI&a^ekfykkgZmSV~1Hd}1zVC+mQs59A{l$8v* zrh!Bs5^!j2M?-Z)&#G4?G_6dh>vgauYjy;t>z3WY%DS_-%X^3W2cz)` zK~brDLZF@TDMKBJr-zft$R5%-7)wm88Zu-cO9zJgRc6}bv1F_-Hn=((Pf!o0YVS-8 zTI_^ax{Y}gdQ?k$Lw|o9M%$en7#v7$x8kLd(PWa}fMuPK{YM_6Q^}CLtV)a174Pkf zwnn#pa9^&rQa>d=kc@I1A>pdg=xDTgTQWM#nP9R#9_=Sr6BR?~4e`N&jiPgVA{iYL zDbLe9JUS%WHhzM7ileDV2a|}INH#?Wqnk)Wbzd?T7g5`pZHgv)nr$kPMy2>$dk06O zJw4)-fx*F3;<4dP;^b&_q+xJiYgCe5v5|p3g!cFK#`^_RtI=O0s}sB?HNXMJvN2c8bRX18dTd607AIp< zDuPY3?5eiTp4R5o&8;$t6se?B3>NQb?rLaR>CoC_=yu~P)4s%z@N!{owQ&r?LSD|?DCtHuu-gleB6%u)BL(3Jf*z=qp8yL#GI zHa3eic58FPWPbCShQ_YewG+jcbu_H(YHsRT+R)P4-2u~VSku$h*51;HUbu2u*K)A} z-7B5Z+}YW%thuM9sfT+LIiIfWBT@D`jIh%i9U(8t%qE2s-*V3!U=tM55l!|E3^QM$ z#7#MAhx3E8O;U>eO7R(LAP{k>V@OUhA+{`>{W%5Lvy>*`tE+|ilN zZfR;>+11n0d=fg=#3-H39f;7=y|Q67TB>15Yjb*B=m^%+3;Q?~P;q(-l*;GeN6E1=&DbV_Rzvx5DbWo?0=P1!iMw3)L2S8+A?9 zDbppvlwC2MO*#+DpBO^cNUdX6t>xT1CF|to=JuY3)|S;6lv-eBEN7=@#ZE7VlZ%o# zRJ1pDw6rz#G&L`6=x)VK10_p^3fq=bCX&ulwvo=1Ia1c|ur8}ZNS2D4&g7`4w6wOO z^G%pfOyVj9llUnel(Ob(d4f;*p$O2f=BRfK5;cts2mEtl_~y zTA{WZrnnStGb{;vG@?)@tPox|aH13>DJ#sHVOwe~n!>viw3~uSJ_XtYg|zo364(-w zC9w$#X&j994qHn-SxyIoBi+GI^&PN@TY72CF~wCE0QdVEKKQs6MgG!<$5bR}s)6SpL}6qA@r!6bg4 z+P#;%a@CEo!9lsd3G1Q#JiB=2RWMOcg6k5v7mrN1#YO1u9swDiQu zE~tC8SbWqe`8Ov`;hmO7l|^il3VUbNGTP2)-zfGYw^ujDw~r)a=wu_Cw^y$@x@J*h zG@cwdo%bLUVgkd84VBfF25gfJ#gb7+wAHj9$EPKYy@P}7CR$^Cy@L*sPV7T^S=HWBQ6s*0<6fJGR+E|p1BelJ%XjH-o?S^s}S3Hc?eJ~hHqvFEXV23wq zO;VOclWJ7O%xtm4EGCUmi>=Xqs*uzyXL6`D379&>nk!5l$}W29AeHUOffHsalLQ=v zL<^{%gdJh*Ad8j;a;vB#Y>W%WZDU&!-82B>VKI13h0y_ouqGxg{gV7kS06K6` zD`UghChlzAS|_?%JGa*M)Tn2zdd?TJ$uKp*5W-NkVdo%bX$q(LoTHOW(T^rbOzuYH zwvthM+>&I=h&mTx-<*u{IF|Ab)t#}vEm3Tp%cn>%3Eu)25fy#ClqFE{tul8)PFp26 zbtuEWN%{gid2&aRmC8bjC$o_l!~#6pJ0ub|rjB(Kf0#FQNMeHaiJB$NT2*8%tN88ERS|umj;(quX*4QrhY+N|LXaA!?&fZ_+NV0^dZ6)v5#mreXa++}3nxC!6>wVZbZRU!6+ca0`a5#7q|z2o zu}NA@d=qWMSXIQgv*<(~$>G?lce_(4jX@HY_u~PybKoqwoSV#*vWaBxa32lF3Rz5L zpVX%ptBRN$U>7Il>OVlpF7srW35A_3;4J9m&`IT+B*KkqHRu%C7B&o7kM>(=lg@DE}?z-&Sm!NejU^1|+4`;!i5aL;=Bvl2~xWdAf~Y z^gy0hko(<;<7BZkPOEw{2(m(XAUlBL(qYV>nxY#=H{tvcr>?C7@XyOI55ln@rf6gp zkVu`VZX7-Rbi_!?jzC^AZSR>5rnd>+KscQisk9_W2u9(fM;YH1?O%>%Ks3H|AfDiz zY|*D~Gswk5$^#ChUG5l>cQiyoE~qf`m)qc{(>;lpJmnpVCO7j21D}v%DkW!C*b}9( z4Fwz$NnVA>@dZu~mmRQSKHQ&BZ7&AwF<>bDFkQ%66}@z21AC&qLk;nG?{-)%t~89| z7#rg-J6tND@ycqH5bGn zorn%?9NgYDkQ|Jr1TA(`l&(YYou0{o=%uF*Y#NQTeM}WRG}1flD3zrYGmQSxzT{Lf zMz+W4sCjY_?5rOq;w+4%t`QA_QFC$}RU?xFmJSR?Ck3jyX&UI=G>kPUEp6GHH&NG1 z>5x3sGHye`3auJdjevFF2$aV=F?0`L`iRqOVsH(0z}s$PERj;DT93pKw2|*nq(beR z3Mp3V@)hPZ^uyvp9`}<4Te<0?yFW5?$tZ3Opr192j9|9R69!y{iYEkH9I`jE9dl)z z^N=R;FWp^B7gE2KQq5m*~bqp!OJ5zG!?I^?%%e=uhPo=7C!k z@NDSGZKqp#bFAK~ITH3QTH!x7)QXl=7${61WOiw7CR&sXWwC`iAH1i$a)GMbNWO*_ zCWADO!p#Ay&Nwc5(9#hbAT&+Et%A0V31mL$Xic8*J9Y&yq2=8cwQoQnZP2|UhNTiN zb~N)UQLQy_Jp}8g=HaaaxUw-sCnc1*u7SQSyqrX$7^2k#FXi`CgVQmYN(7Zn)Y5ot zD4io>BR$*zbgxEE6s3EnbR0CF!EnW-yV$0vbQ$f@=oVDTFl`YhXfw=F(VS=HQCn!L zg;u1C7#2>YMg~;~QIt^QXgp2@UV&O&NygSfE2vn4qe>LJPV64#%v znn*j%Tv4x>rXZaZLCL5YBsIM%Kc6mID-0u#I#1-++B%(4dCHE{&ZYH!n<3eB95O8X~eBq>}cV~yjS2(Zwv0i_Twh8 z@DbI8f2r6wG$p!l1o2{sAH%)e7~Th4i94Y~q@i?T$ZBxo&^Q3OVf?LyK1dIMH;mXV zNJj+D1U-m2Pz*)4a(ej5uMBDrRsLz|@h$C?dZV2dQLUglohg@XLV2j{N#vj(c}=hF z1nOJLQyDvu_7Z3jS*f&1;*80$0^KNoT1xpTPMWUfX1q_>$MuY96f_NsFx%NMFf4tM zGqQ+H;8LmtH-jI>yNqO&)JAdq;i0LtkiGV?)sy}A<88?>ZpGJ#F||hO~RiHMJV)wxtWHZ%wIZ&f!ABC`TM^xtUu+bgtxb_ChOm za#b2(aXPr8$RnjicpOiwE=Xz!JZi--^iV4%f!TJyq7$vriZ>Cu06P&fvFC=_zEgdd z;*!2FG>t-fgj1AOg1>3<>6U3fKOwv2x`H>~+WzQccMJ1B&RV~^aKWLAJz-4?WV(z% zraLSEA^^H!x-~d5H{OxK-#Q{dx6a)j0tNxPP>$D40DJ`e1n|QK!ktMVi$FGkX#lRU z&?uFl#|Z0McF+Tc4u)Am3_ueOQ%CB-Di*798Nn*#0|2pf-OwpsunL$*`xAa>3_sJQ znVJiKO2E)`{FwkRUgh>{8Cs^6rDbd5y5ZH|e_z)qVGpUG1igfKp})lA@rGR{CF_Bj zV6ho?WoP4ew2C27T#T%E@b#L)6|C`ig2jlNtsB{yPTy-I%YVFS?AgXO{U!1x_mAhT_1TG;ELf^$_U<-rA89cg}mDWoB2F2e1zT|9EoNeGhHR6t6lp!OJ zUt~)KlvF@*yhuN+>BW?ZJ3ImSsoa%sx27H@2GsjP(W;hx#`buc?7qrNsv-l#hOLh;KtltM`{7XwcegAC;vLonNm2gI{s#{7hxx+PNV$4?qkP;oK3 zn_e6&3639vVN>OD)#^c1E!o+{_vfytVyMl=_oA)oQS9}?{`cypUP5lk#VtC% z*QJ*fPxGRmWFyc-o&X_P;tAH6eyJurhBuL<`R$f&-56=MJ055HFy>z=rIXxCD3kq-JpYA zrb5<`gEC#2oI{nsG_PN#6kJc*Ez!*uGHCj|NX`t7m}Z6@5rvx`9RG%vEgv3wd`n~Z zk}D*^yoZ>VD_Hy?%~Rm@snn7tq9B-|$ISNnC~*XuB>+B|^YL*r*Q+ub96w)0G4U#6 zaQyr7e`b#6nkjN-;*G_b!s90|ltGPlwfxVV>zQ*sd=vgNXE$?p!$aXebM`Q25BwDV zGiN_@_QPA@KmL&1F}V8?PHrAZgz1HYFdewbwM!(yn*!nV!}Pgf+LOh?7{5RuwtTd> zRfwBZ`e@s;D!dU}0AYDlQ5BxBvBb^y-wYy zI0r+xrWL!<|BJ!agC*#M0Zbm)hA=ch{-wb9E9{3~@(D z(Db-5qL~<2i~U|tFpT*G^q%0I1N~L_hna|}!@Pr=(LsZQ1lH*IFcHiNmLM}KrPPzl z@;bwJv!E5Zg=2U(IR1C4qs8ot7I{$evTQiC;7%WmT9jbqK~S{K_cHiLFMhq$?{yc$15pWD@CIe|%H}S6 z7qUw2xE+r_nup&G?aI!xgJ{P9ClR#A8>Bd4J0uL*4E&~)-1WjA7{>d)bmSA3)*e=G z8HTZ;8iq``&-vmY-j1eeDE=;)$ZqeA4aUOl*ki-BH2gASxhBH2`Ni9f;qTszAg4fh zeogHH{Ea`nIKQB}4u9mY28O8NjZFFgp}DINGcl7CU3%yg9OdIY(%$63&PVLb1g9;; zd-eURNtoi&uenyefbaM4-gReF=co4j7u$a?HngO44#L{zc(z08sRjg;p9Uq2(iO6B}A z!ow-riH$qtB)_LI7H`58Ic#;w*SVrmeo2)=-!F$A8q5FR=YORJ_;17E-F`8io*eZW z{yVyp_#}tD4!i-ciEXrSRG)1wbVjinE7=~vX6#IKVsC=>yn1-&Whrp_e9QgE_XOg) z)SJ-OlYbl^;ck3&5_Ei;fYY1zy;xx{#ohz$4z*x4OlxlX9Lce|5K8+d3554zovikZ zSmF-%b5M%Er360h7SZm-WKH+5ObzxUj(STQhz6!*pUAiIOWuv_r?6P1NNbb*t z5tiCj3u8S$z}s=at3%wt|9u3om9LDyM~Zh zfZuPZ!?%XNLdbklE6@&v+|P6DL!z8iR;j-lC7_+eYV4HIP9uG2&qPB_;T1!aVvuWh zgno|;Io*W)63P|TLOL%jZdTh3V{IuhulmcC?IMA2@nbQfS?f=k|7zH%p2Z!f&_#n z6}7gg)n2S_Ytd>~TXpNIRlC-zrCPha=ytcRy;$7s#qOo8-Aik~Eq?!Vo_8(*YPb9Q ze&27u-?tOyyyx~j&w0*sp7UI0hBcRekPIR+@qXtWq9^g>SDV0h2V)S2XM7<{j|IOm z^GU7y8#8+b({6m&u?L*wP`odh&Dy#6u2kF^$;Q*!c*nX;@gciE)l^Xtn(bA+zLTh1 zGw7~=zIj`|wG%WeUZyn@Z3V|t-0(g;<9LtZO%xGaS9UYQQzLp71o-?iXym0<2rqy#I`XYJW!Y8UGi$fa5Xupj15J$m5$-fb#2GH4O^aQ}F4sqVttp+j(`sVAa9>$V?;&1PfBMV;0dZ+Pe`UK2?VpMlyTs3-TR)^}}qaWl(>?-i|gItkyX9AD^EtW^2pjLdlw~b3%6}9H`V=ZZ%3A&<}FMe!B() zbVI0?8@)MwiTlnw@6^p#a(fEIbwpE}by^`lh22upJ`0ji{nQvG&IVQ%(-K)!ZzQII zYA|ccUuO|wEY$e@*TXS7S&i;ZwQIrnesx^{b!zaejuB3@QkX}E+qeQx=uK>+`OIxp zp~+!1*%0!O^4Dj&(^3C{e8VrE+VCW9IN$C?UBz}UL%SFtv@3%!1GR+e8&FRi824=^ zp6unTxWOtNoLS%`Fi)*Uv${e$dk#2_f2rC;WnO1%>Vm~K7kB2{^wEXzHzFkJ;5lqK z2(ID8Y*Z0)E&*C5u)M^eiuyG%Lky}iW2RVC<%{{0N%Q?+u}Mxl3YUr{E}HyKC;0U~ zr;D4J1I02_CKi7N78@t4ix&H(>BL+pHB?v*#$?#9EIYF`R?M1cP2>CkSVe0}#J|s) z^51JsV4^iQz?y)v#)4lFU^>mC%db^_)#(YkJgP}NS#?|V#JT8%ZX_x(PP&<>z@u)u zeh|ZE*3H7y6a)-^o*~GRLOIM(DGOBF^MeQm%x;;^svcOKuQJkr367U zp*%wnFv{`_LBK%5QsnZ6Da(^Pu!^}R>2~HHBxR`yRG4|`b`J%+s>4jAV z*^pNiOi62u@xu(1&n?=C`Z)#?%TT|)93Z4yhdc0eF|R{1!iK$q(Uky)G2-T&#+tc@ z5d-E)3#+2#u7Y6B7)ug5))n!H^A`7sv(6#pAG7YHevqFMRtMGTOpI9*Iq)}Hb>l;R!_X^0R%y)bmT3C(p90}cc9>w&~BpoHzfb<4|b#3wW=T*Um zGWE3ALdk1zT@mHLuRf{OZ8wmPrKJf4>Xzs=HgqgKu^yVrj|R2DHh$@e4d6Ow!8Ugz zutSriZ|FO+#UadU1dp&zTJWIdZi2w>VJW-Xs(a=z7E#mQEF9$T`o^emblt@yv}|mH zLW*HyX$c|csB%*=pEp21$o_G$Aq*YDf{(_yNp~CQkc;h5$jkoqO_q)H8!8Vp%nrzu zsBW1WsIIYl!F1-ZXXgTI@cRSyl|TZG-?HrOK-?Vw6*4!gu*mNORpnd6GZza+k|`@{ zIrC6KO=1^F-fM*#nuB&fKc_{_lB65f53-F>GiawEjapTvs=j^=>fp6X8F9&kQY}%d zI%>_h$llG>v%OXRC>r%RHCttBR|SGme>7kZKn}|W@mO*>_8(Z1d?%}s1HDD`KVuk= zv0B^r(nHhL8n8myZl_Uk!oWDy-C4ph)CQ|Uu?%|;wCbd9`FMfjep)n@7 z;S90+dFn*4KVuI`D_)%qrFGgv&@xqH2v*irjhS|qo17%`=619cLR|dOZ7naYvb3$q zr2^Au+i0M^`4lF*zJ99odJc4$#B>uIEg5hZ@!A4@KB+0j<8O+RlNRt8B1GfS1)@g$>s}VC5F}U{?c? z3=MogaR6AAX<`3!5SX(ULj?R9;4)IGl#w_DM&rwB--DIH3o^?-3_eox&U>I$c6ne_r9dP9nL<>yI8!&bw*=WK>E9 zp(Y=fUH`?p8;f<@W9ZFXHMrGv7aN>DIpx{o;7j_%>Y7iVP40Wa9pj{jT*fP?Ro8U* zTJY>6te$-t0W&pm9q^jO^?)Nx-^ZYCt$y$Za18r>0+A0bRPXU_1aEHL!-_ooeo(S( zeE`Tw>nNam6Z6JcV&4o8s-N42@@G2Wce5TFz@FxmHWsaRSt{Y8QNp+ySG;?SK8hm zE{C8zLwn49_x6hAO56Lx<#3=oLwn49_x6hAO56Lx<))vpJ?6f9d&P34?fv0$GtSr^ zbKkwaV!6`x&Qy-`B=#tTOcRyGAL;ij)Ng+jfmT*O6A1}RgPcAwH7#R)C6b`&OJL$z zvg$+OV^C=Pj>=dln@?zUYCVimQ=7_57vnhKligUNhv#8cvyc89Z6kq2Aqkr|v4BJItY*xnS?9&^#2b*A=CEhp{$zH-<|Zsvj8emIUQabCC*)EMK! zsJll$cn%2rPvDn^e=!z~QuTPF2s*nPv-@iz^k#Dm~_t+Th~NSJsCO#5L5e+J-w zjLSw)@yzmWXP2IkjrakTSMb`Jz70 zcj@`}2JF8;>r1ZWUHzoM2r_`ihmQuF2Gnh!zu_!3P4yb*6YSM8)MR58Sg)V|dTo_o zKghF3(m{nD_49?S%zx|k8n0Zn^Q8&p>ZrXH9f4Ce;*AlZ|G*ndec=@XHXGy7gf}cA zq&RIV_6ZAtBLhYaTu>zX(GW6Fbt1*K)MB^_hLr18(T?h}*Y%n@KgSm5TYgQNM73Ne z=htsD&2y|qDw0W9?LG~sge>PDVYuu{E$4SdbcRvjcI8p!(X#6D`aS-DOsxuRcyEJg z4O=YdJx~M5Q^)xP@ZxsYa_%n5)V0SYXxnl=TVy*=6mhv66q5oqTgwA}Os88c=ZjEK zcFG|=zYFGEdky+GnfoX4fKaW!%JPeWd|@gEZdQ>Fk_|jlta~D(QC&XbqVgQmn-wY% zRRrxX!t9_-=Ag}!* zWlY#ygPFkb#KNxCqg8Sc9tzdx3kd>7L!KeX7Ng`q>_-(+uF1`z%CSaPJ- zgC5j1xnII#>;sHXH~6l=syjRJERzRN8m?u74)ep87~==77vIZTXu2iev>;&2&ocx8 zV?mxF2pE_as?UOOF7y%nMws`}={KE+h@Dd{$J=}6)aZPMvT$qTG_t*IFzTK;Q=AqM z_slsq^wK|`wta}pAbKj(0bVu4X z^JBh#>i;Z1(c-%ceu2jSH*4W9`{ zfp5w=>Fj{Z8ec`cwwd5<-b4XJ6sNXxR&MU@hTa5^UX6TFY$4PAmG_`ZYs@rJ7K0(h3;&HCs%VP_|GzzpGYIc%cv zdM3zqGu7Z{f!`L+ zomPFoqSnePQ&!DusCdmAiS`?Q2F!*)s(MQU^8no!O@*`o3($HK@ z{{{!fXtMcWnMGY<&rE4|Fu-NY1RplJm6HL6mqi)gChg7&d?aGgtSI~EYofVdtZJ7Y zZPfk=(%B(~-;Ho>Pl)A{Mdv4|Aw(}mwuM9VYJlPGVTPYB+Xmar5VvwAUscl}eM@?JPs?-_%8x?OtO8Daj0$g;{1y~nq#GE9G0`BjA1 zBLZJE81IcRd_BbQQH%ZaB|o?Fl*#=%Bz^gy;OB>#^AMyQHxDyFZ1G=&eo#>xZZA;& zaBVn+9+ZjfSCFM}qa6|I$3g|MOW<<9DdTb#_$-~NZ$y}i&^bbVOJr44PvhVY0{*NZ0h>#^DTJ-Y_b}70#NEbj zDg$)@ljKUYmLX#%K8t~NJ2jG9LY+tZq};ictl2^bq|O>l?3=LjxlX7%q=kiaqi7Cb zGG0j+g5uUgD0dUJVJz+O1%}I0sar+hXJeft2B*# z2IDi0M*#m(IEw!l`s3g@`cqQsi-3=mv;K(r0`SL;uR;2jndfK}k9-rHq2TvCKDYHl zvxOcr9)($VmH#c^k;t2n9uNEyaLi!%zA}cZ1b(xe@%td z@RidCJk9Gu-Ixm>@-%P5r;-u+xF=&ove3L8Mi+z*`)1NH zkLp7U=TM|hwZ1=mo$nl)E(fb-yo%e?p>GSAE9`z`wI$Df<36bhUJ#`7C`p`gIg;E}DpnjpQrziZ_C2%3U zj{A59PYu|9UgTn zT37Sm&jqW1^x^(~<|jvc(4yEgDS-$m41pgMeQ^m9c?Z#yP^MnlKU`H`J}IdmU`6npgJk%QJ>MC@vWc-J?aafR?-_nskyR>ekK%;-*Mk6 z!cLUyq~6NO_+D6pM{O&6$=5}*aSmcxKlTl)>0?5T(-K6%YFc`}l6}|rif=W2P^fY0 zf~=c{FJRd?eK9f_)Nh31%=aDN8VW3ua-e?TTSrqA6)=K-?^{oCp~eH@;158}^JF(@ zH_!%Z@nj#?CWBg{WT@qNZ6jS;pd!>m+r4tjeBIh++U=EFjf}FHY)|$}d=GI8UG2%< zMi$&cV?tev)jL9$(MN?+F}T$mBkqHRFYn#sX`W4Q`nJ;NN;J1k(A-8(dzuUA9eo=e z_b3gw0+-WY3dME)v+r{H2So)qn{KCHc@$^U?exDqinI3)GUSAEeSov~4l4I3&fYs| zl1Fj&-bu9{bse&IlID06XYV963-to+4s>g~=zb*w^=scQ9w4lHY}vTh?@=#kVe@ys z-32OWn$}=}ddG-b8ERd^3@$gt8luM(6}a8(*0S`pP~(AP$jMpyiYFUFk8JveCmThN zZ2FETdllt|>2*)`Ba|DapL(({VEp#dFFe_oF@AgLH=gV($ny?iTgJ8ozKvWC3a@;R z%N+rQ{ZE)r zZBqa>`Zx1b_)rB)e~QaajZXNB@IOlMPlob32Hk`Gq)FfR6*WssDf}(8qSJDzvlRby zgiGCh3e;(xXe!%A1FXZP3J|+nos>NWaE%!1^rqBP#0}5>(mtx%J|~(Ao^I`bjl+J> z=?J`M(7oc@Q@y0oshoH7TO^{<6XMnHNzLoS%-LAUaC15L`ay8F>`<+$JyyIGNId z?-e*I@Hs#WpJOu|7dXk|)Ks=mQfmxf1Zi1l9qrXvXA-T&8Ze3GM0x>#T%N%>wJdTC zjcUp0IPjy98|Y`mEAP1ImqX{XG#fh4U>9`U{|ev<=+73-Q7vBiFDM(Y{4L-RYIsRn zXO5-as2P>z+O68J15rSn+_XD{bBA_Ov|4*WyPImYH=utG;Lie+sg>B~R#@1owTjK7 z+6JRddqk^_t^nkf;8yL)vh~_i8fWlP&A?e@RI>w{wCA)YtbC)|U}!7ws1?CE?JeAr zJf}^=8u%J={0`K~9(YMx9qQL!((0qEe=vHL_KNiM0qw<#A?-Eo2LV@G3e9ot4ein3 z4PqhJ@Ob1?+G}KBrQ+T_gjQ~cmu}QT)??bww14(Lh2E`+KBK*jvd?R8q0VvOJGHNB z9n!B3=~svJt6MD5pu=l7TlKb9CHC6^Q}2;6dRyx66={!*RKJXrroS4f(a+NV45zPN z8OLs^c~lDqX6e0x_si&XOS?(!P~=>_+wOaCD}#a6ig&3}hq*ax(fkiG*I^UnBe@!apMXYovAdyoFL6QQhvtG0>qq6Zey@1oUMcmUoR=Szv-5+*dy2>4lX2}{`c|OA zxL5r1Am;rw^tA9l3>Y^y=u3R9#y0&IMjP;-_*;$R;=`|t55F!}9hX*)OARgBZ+*8K zX?=C%c4INd8 zo$YJ^=SxP5wi>r)E!wfNzcFsq-|&4G@B_X#j9c}$;d73JpBis#i?N@%1Ep|xsed~d z0ergh=f(s2NX5SzkLW)x|E`a{5v`@6L+js48CX_h%t-&poj z<0YMA{z2*8Q8}rM%f5%Bx6Rz31*0p>N3;jbZu1qLcPp>xL!ph}95J_=ZwTjS`m@${ zGmSCg^ZLihH3M{v_5=Q{!0*!`;3w$4fIp%e0N{^#f*Y%zBC8Un80HKpA~pQAQ>!;3v3hEE^w#7 zq`+~3cME(@;2Vl>a@o5D&h#D=LG2SL{r@%3RR3SP7+XU_u_^iMa0x2vy0(Vw2 zJ|^&(z-I-X5J(Zx6xgO(GQJozUe8~dEIlOkzbW{O z#GF@s>#YE8k9F9#5|IB4>_S$d9}#>mV1h13f7mNN@Gr&Pb_6F}3;Zy8siAj%@VoJj z;CqV!@T2IvhR+s)pw_|%5&W(!1pXws6`u?kz_*szCmR5D_@n~*HGl!!P=~?491y1i z)U9C$R0;kS;6|_(;a32-`-*};6;Q|iq6+Y0e2T2&)1n%{L6p$213C-%RnXFq4W#ZEnF;s3fI8ib8*`0r0o3V(bRO_q0d=|!`!@w1ZImSCx`K=Eizs|+39>nd{wE1bep zpHocK`zrRnr|P-bZ}T^}boiJffXB{{kqg1AWinnoT0A~HI#clG8Yac*leT3#WM(9_KAC2+BP~Ue&M1h1RBp%So)wGOFj|UAM>464Y2|Ve z$cL3KGz8f+>gG~IOp+8QmP}FOA?n71l^S9%2cl1 z89*PhibfxkH01W#PA0tzt@n{v|8hH%Nr{DS)5=sf<)r(lXAmv+Q+t0uZCcg7ux0+5 zWHvdF>ZfFX|BmH@$t>eeYRKM~Dv(`S^d3Kg+yfE!a${=mNZJ9xrWFV$&*hpr9mjSy zCev=Qwo=wocEiPccI;S|?AwD+c~_)UnSNTz-8-F|Z{c*wnw0Cp_|pXv4yRSWBArQP zIZ#fM^o$OlfeUlaz+IJey|_B9n(kC~AUAk=_1&p`sm$r@Eh)!E#GNkaw)>JCi>FHp zjk~AII`{XbhI6O!H)6bd?9MEPcz8I4$51Lah+kK1Obus}eJQ%kN#|0R4Fb5sOv~`? zLvXFNb7|0CFm#r%I0*7FdrAlsqO%~{k@f>-b{2_XnUx1H=~L#Zp9&Iz)cDNME=dt?}x7@f?fccF| zg6ido=_=25*G&!W%8cfP9hf?t$P|OCR=*Cs(^Rb+zDdxu&l z`0|Vmj`F=~g3XmC1W6$%M{+4OW5k3)2#ZpYQmK&EjARgYNjKM#%A^LkF0otE)}|cO zEWktJR^kMXawNY&+TWhT_eOT1Nm@CQE}=S7yG8~EI6R6P@XVI9gh`Q?AFiHsu2i+a zc9Q+6p`^2?SfU5vmddTbFY{AZ+ob};dQod-Dz|*Z&DldmR=!RiaxWL0F2wS)J3TPs zNJ2PW+>vtoob)hfi=vPxPdXzdHl{Mk{erngdA{NG4pynY-06bl_VB2a9vD2M2op0q zS}fyDFqyEq^saO!ohy-c?oajcU@RL2;E|M=<2k4h1gt{#@w$hk#48VN8W|pTkO@|# zv&l^QfGXLAHFMo=OwRt)emuSCR0|p=Fj7RH-Oq?8@eFJ7T+0%P8TG{?g%`TvF?(ze z*)+1tl`kMszvLAzjYYE?zeV?`@h~!kfJ*ka414JPJ;f{qKZPP@MdE1fJp9?rmw9;seP(_82ws zh5=9>Ui5UNlLJ}X#bW8^9iGp4vSGJ}H^ENq;7${(>82vbmAOzt4i+UmWeTC~au0bafKADLDR?l4wp?01)X$lV zbBPS35UOs6Q^{$}A|uJ=mSskE?OKs`2b(0(aOTNjrlaDCOK#`>Tq?_ZZkI5E3h~^@ z5HZw;Ay*O`JAT1b zCY0FpP_D1Mh;cOMH-#VFM#>xf!?MNgALOzC9WzYK-INEs4+kaRC8d4sQpyJ*V@QfQzdq17!?g(Kv44 za3DpAB)-)NPW>{J&Czbhfts+v%{jbB#pfh0%!@usTf=p)XUVq?GZ zLs=c2RK zBcTpl)CKcgs@yW697R`n`s_&_Lkh0McXzt*4JbPAa@;SfR&ua11>&B~V(bfYPZ`XI(WjyJ~y%`9?e;X6wl z^(snRFq$sSBAPcWwGW_73(cnsFj~#ty9K;PX_>XPg{5_^Mhje0`6CX`tJqS0qp;qn}a39AQVa?^)##YDCw;_rD^JqD!|E%3{eBV2ca;l9p z#ieHKKzm!!doniSKccx(%?}@cZ=C38=+~>~fAcRpAAIuJ;IzJh6q#{N3m_?IJ|NL3 zlVJwBe{!r#4@Z~!{YD_#7F}vhj&*9$wz4=)j*UH}S5cK#f&c762lco%9bX_dLR#30 zYgPDmEZ0@VsV0Em)=!SELAhv~9zapxRb(la8ONoxk90j8hN@no8m{u2lcO8B`N`4E z{D>~qLtK1=H0<|;!rGi?i6U33P4oN1;qa+7cvaym&k%JKjO(1S)VI7F_NNkEfuA>uG8cG_zIF}T~*U*WuZW-`i7@wenU(25K zq(9cJFx*n>V;|M}YJKqMsO|$#*QQO0Ms&S)x>h?K&K=d^P0b8JX!^D25H9@z;s9*< zv}w~|BE|?{8ZPCf0$2=>$Hw0FOpKrH55~sEdBorb9!K`Z8W7=dnb3;q6AkV|AOL$< z&nJ5LQA%vw7Y;|qgXluQz}JH`)@A!-xWPpsKbTx-uHP5iEACdbcsh?_7|}Qe2c}YN zTtX}aABIBF@yTT+rGP_A6+?({IXqNB4TB5|6L36RI(8ipbXJ}a1$e+7h>q9#NuLHx z_d}^ui!~P?tMWx}1e?Xoz=$w~ikKS$C8*RrJ_iblC1}8J#Mbj)8R@a{dFo#|{@<vC_3K40XV)8 zLF$W*eIhn?cWrcQAi9+U4@0szh$kG0kd$E`Zx8ze9HIAx!-3dHEX}cj2!u|j@_Coi zi^>3O5V(!u*nNoEX+mEKmDqSP?DOlfv>x)CvAwEM4$v?rr>RKTV`2p+%dba=qCGxL zms)9L>@}$;EpSNSUh&juZ0t1*N#KbCy<5&|J#iz7<1;6XfzE(we1iZW0-$Nwqgb_J zHGt7JFD|1?4J#JV@e?~MmNu+t58gwbEH(wqy?9S6hqDonDulo|l-G!R)pdip9`9Du zLU-_g!;IYlsu%B_x)ng3i-2~pGS5v|77LW4|59OeX>Ax24vA7n>`UaNF)d^1VBEya ziuR~k+QSk!h9PFG9-9)@nW)7a<>BM`9GeEe#p1%57EAd#ry^v6ac@3BfSkh<2I0BB zEUqFd+N0}!5vb~8y&~Vq6}C!jaGx+Sb#5uTNSci<;?x0vEXRgMhuBn}@=9%5Y*KmL zjE&t2BsTVuX)2N2svZw;Mbl#Cd5v(Ot7zZHRy4S;MYd@$&fl&l8-}&f3Q8H za7P+{{(*RWesfD}yfHo>zie!60)g*g&(mo3`Mc*gFSy|RWaGlV3tAdm7hkZraq;2> z^BY?h^tCiE>~HBiKZS2|K(U=l_paCEc;yb~-YdHGIV=AIGLr za^uO;cjllD&M^P;`v1}cnhgFFqOpnH=LAGJ5uDCvy;XQ`9m8*s`TGyvYl_hdYzu9| z$#DzLL>qy1;Tth)L3aVJQ2*;PebM~INvs#p`L!6y}U0u=@NoVg!~MuSZ`Xz^KV;0!hOh)y&5t^QhZ zLW2+RjTZLDayaP4h&Qk0s-WRay zX0aL{VgPUE?OUPD7L+NTs#&+iJHaiKC%!4gHxTeNpF>$!-9QvADc0SDlTrqMgx>M@ zgSw%QkBz|L9uDI^f;}{VQzlaK8F+De07)Z`vs5#zXa&|NRI6CRP)Xz`Ke#tw{}kI$ zqr_*mA++h>1|#oD{yjVQVV&1Lj}lvz_Zw4k6Hwx(VqY4>$LmqnM*l|O-`s?8DE6Oy z#lD@Wd#Z;|_3t7n(++F-c3}v<%fM6o8{~;2b80yrtN&K7VfBB8N95O9|E(