From 9e11932adef576da64df6c2e18d85efcb99b9f95 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Tue, 13 Apr 2010 20:35:03 +1200 Subject: [PATCH] hacked victory conditions --- OpenRA.Game/Graphics/Renderer.cs | 6 +- OpenRA.Game/OpenRA.Game.csproj | 2 + .../Traits/Player/VictoryConditions.cs | 40 +++++++++++++ OpenRA.Game/Widgets/PostGameWidget.cs | 56 ++++++++++++++++++ mods/ra/menus.yaml | 8 +++ mods/ra/system.yaml | 2 + titles.ttf | Bin 0 -> 61524 bytes 7 files changed, 110 insertions(+), 4 deletions(-) create mode 100644 OpenRA.Game/Traits/Player/VictoryConditions.cs create mode 100644 OpenRA.Game/Widgets/PostGameWidget.cs create mode 100644 titles.ttf diff --git a/OpenRA.Game/Graphics/Renderer.cs b/OpenRA.Game/Graphics/Renderer.cs index 0a3cbe7ed2..cd6d0119ba 100644 --- a/OpenRA.Game/Graphics/Renderer.cs +++ b/OpenRA.Game/Graphics/Renderer.cs @@ -47,7 +47,7 @@ namespace OpenRA.Graphics public ITexture PaletteTexture; - public readonly SpriteFont RegularFont, BoldFont; + public readonly SpriteFont RegularFont, BoldFont, TitleFont; public Size Resolution { get { return device.WindowSize; } } @@ -64,11 +64,9 @@ namespace OpenRA.Graphics RgbaSpriteRenderer = new SpriteRenderer( this, RgbaSpriteShader ); WorldSpriteRenderer = new SpriteRenderer( this, WorldSpriteShader ); -// RegularFont = device.CreateFont( "FreeSans.ttf" ); -// BoldFont = device.CreateFont( "FreeSansBold.ttf" ); - RegularFont = new SpriteFont(this, "FreeSans.ttf", 14); BoldFont = new SpriteFont(this, "FreeSansBold.ttf", 14); + TitleFont = new SpriteFont(this, "titles.ttf", 48); } IGraphicsDevice CreateDevice( Assembly rendererDll, int width, int height, bool windowed, bool vsync ) diff --git a/OpenRA.Game/OpenRA.Game.csproj b/OpenRA.Game/OpenRA.Game.csproj index fbe5be43b1..6e750f90b5 100755 --- a/OpenRA.Game/OpenRA.Game.csproj +++ b/OpenRA.Game/OpenRA.Game.csproj @@ -82,6 +82,7 @@ + @@ -90,6 +91,7 @@ + diff --git a/OpenRA.Game/Traits/Player/VictoryConditions.cs b/OpenRA.Game/Traits/Player/VictoryConditions.cs new file mode 100644 index 0000000000..f38c6b4fee --- /dev/null +++ b/OpenRA.Game/Traits/Player/VictoryConditions.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace OpenRA.Traits +{ + class VictoryConditionsInfo : ITraitInfo + { + public readonly string[] ShortGameUnits = { "mcv" }; + public object Create(Actor self) { return new VictoryConditions( self ); } + } + + interface IVictoryConditions { bool HasLost { get; } bool HasWon { get; } } + + class VictoryConditions : ITick, IVictoryConditions + { + public bool HasLost { get; private set; } + public bool HasWon { get; private set; } + + public VictoryConditions(Actor self) + { + } + + public void Tick(Actor self) + { + var info = self.Info.Traits.Get(); + var hasAnyBuildings = self.World.Queries.OwnedBy[self.Owner] + .WithTrait().Any(); + var hasAnyShortGameUnits = self.World.Queries.OwnedBy[self.Owner] + .Any(a => info.ShortGameUnits.Contains(a.Info.Name)); + + var hasLost = !(hasAnyBuildings || hasAnyShortGameUnits); + if (hasLost && !HasLost) + Game.Debug("{0} is defeated.".F(self.Owner.PlayerName)); + + HasLost = hasLost; + } + } +} diff --git a/OpenRA.Game/Widgets/PostGameWidget.cs b/OpenRA.Game/Widgets/PostGameWidget.cs new file mode 100644 index 0000000000..3e997df497 --- /dev/null +++ b/OpenRA.Game/Widgets/PostGameWidget.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using OpenRA.Traits; +using System.Drawing; + +namespace OpenRA.Widgets +{ + class PostGameWidget : Widget + { + string text; + + public override void Draw(World world) + { + base.Draw(world); + + if (world.LocalPlayer == null) text = null; + + else if (world.players.Count > 2) /* more than just us + neutral */ + { + var conds = world.Queries.WithTrait() + .Where(c => c.Actor.Owner != world.NeutralPlayer); + + if (conds.Any(c => c.Actor.Owner == world.LocalPlayer && c.Trait.HasLost)) + text = "YOU ARE DEFEATED"; + else if (conds.All(c => c.Actor.Owner == world.LocalPlayer || c.Trait.HasLost)) + text = "YOU ARE VICTORIOUS"; + else + text = null; + } + else + text = null; + + if (text != null) + DrawText(text); + } + + void DrawText(string s) + { + var size = Game.chrome.renderer.TitleFont.Measure(s); + + WidgetUtils.DrawPanel("dialog4", new Rectangle( + (Game.viewport.Width - size.X - 40) / 2, + (Game.viewport.Height - size.Y - 10) / 2, + size.X + 40, + size.Y + 13), null); + + Game.chrome.renderer.TitleFont.DrawText(s, + new float2((Game.viewport.Width - size.X) / 2, + (Game.viewport.Height - size.Y) / 2 - .2f * size.Y), Color.White); + + Game.chrome.renderer.RgbaSpriteRenderer.Flush(); + } + } +} diff --git a/mods/ra/menus.yaml b/mods/ra/menus.yaml index 1dc039de55..268a8a2ced 100644 --- a/mods/ra/menus.yaml +++ b/mods/ra/menus.yaml @@ -1,6 +1,14 @@ Container: ClickThrough:true Children: + PostGame@POSTGAME_TEXT: + Id:POSTGAME_TEXT + X:0 + Y:0 + Width: WINDOW_RIGHT + Height: WINDOW_BOTTOM + ClickThrough: true + Visible: true Background@MAINMENU_BG: Id:MAINMENU_BG X:(WINDOW_RIGHT - WIDTH)/2 diff --git a/mods/ra/system.yaml b/mods/ra/system.yaml index 65b0b5fec9..704c0ce04e 100644 --- a/mods/ra/system.yaml +++ b/mods/ra/system.yaml @@ -76,6 +76,8 @@ Player: OneShot: yes UnitType: badr.bomber SelectTargetSound: slcttgt1.aud + VictoryConditions: + ShortGameUnits: mcv World: diff --git a/titles.ttf b/titles.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8b2806395723a658c29c7b6bd67fd3b2c3d061bf GIT binary patch literal 61524 zcmeFad7PY8l{bE$=c#?)tGarv?sRv$Dodv;orZL?1cDn;P(TSuSV9t(Bpo&(QFNGb zK_id_0v*Lr)g!1gE~pH~jA9nn>J|bWUco_RX53~~ffx*3PyN2%d!MJe6M{PaKJ)(d zR(IWJzxSMT&pqedbIx;1XhMiM3Ww-@=i;;8A^so?A-)~K*`{}%cflEvedm1v$Fqbu zb>@=u&wJN_D|f|&a2~?-*UmX_Zr>yMyDkty+l}K(Ke+h47p~a5dVvtGCvnd!m#@F< znlo;GPh5!hd(ps`F2C`HHj&4jVkYm`*IaYOde_o>2ZZQ89d%rP#bwuDBhtc)_IOj| ziglaTc!Ep5gZsZP#D{OWa@G2cH=OmI>xBq>MTq3m4uD_vh?`xkF;;S=-@cj6i>sDU_zzcxqA>8i}q@4~(TL0>n zOTt5kMWY8NgxJ6SwJW(j@IXSJynphLbCs)%L$AD_7x0{`Jb6g8yO&PhU;CnSRs9OD z^79*c<~QQY!XsL+&z6Mnu{rH}d2Hzap=}jT;cv|LZFv5O=;PfQse2i| zvqYa>5Jh9J=+zI1K4Tfaw}~Ro7quruAHO(XDzD(b@RSs zwm2v2npLae9(A2td>t2}UOvMw&)NHS9qQRWeMQZb^{Qw3jC}oG34_%hVHAXkU(_wP z+?TKe58_6Aj8|oQLc3GpBkNwF?mK>;^wDP3cE~!gFP|lR)4zOn8*t&*!sVFzNSlJB z18J@B#4|!nJ}~WjzvB^}Gts}*x$1oNeC&hyYUp|sW3`GgU_OfP=N-4BzB|>|YP(m` z@Ch)m9E*IeI*NK8IZ>TD_{O3e`)#gGH`2($t;jycK5^;=Y`tvLzE9s)GjV+`&pTTb z9VM-CuT69CRMEP>mpp}UFX+OrT@TwP+-i%q>}Pr2ZXf65b2vxZv7d{iBk*#QclCm~ z3%IVczU#5Y*SrtgGH8cUbnJ(9lXkM*LTwzljOm5iD%3R>=RkYXSTop5s;2g1tdLhMMsyvf!uKj@#SiQ|bf`7Z1p%@LUl)OBNT|G#*>Lc&@B( zkl^sb;sHPeSY?&g<7@;cWsSuaf+?Y2tj%Q=sANfTfbHV||LizONq$5?yy2-qZn|re zkhva|KH){_7rxq?xXLmp{I#PZBmyYIB8V~~LbX4Ls0gEsp?pKcMFeF+L{TP1tae1C zL>y&WBx=7G8Cf=nB=)l+RfF^wX_QSOQ+r)Biw2Y}vTPOE+G~)hjVN=XsrIU97tJU; zL<`CpD1Rq9MJviK(N_Dd=oUGYGetYf9+ba<&g?*05Ho83EoO;Ml(R(_$~mID_Fv#b zmc3$T?LWml(Sx#2Crto=%yD(0g+P4uHYT`Z{mQY@0?8DgOJ3vs463FTsOGRm{W!rITpJH#N$ zccT1P@h&lh^4;PTl+Kb{c@qUym#RpJcF3zjHAXdq8wK%`_W3fhDfbt6QL6ldD z57qvUxJq1z@@kaNi?w1Y%5~x*luM69VjBR(q2o5dBir^Uy_l_)m=hB5sxCXT-JG|E##K_LSHx zu1EPfaYOA%ahv!s%G+gmhq$r!gxDf(Lb+9JtUWHaiA^ZC%koa~k=kS8F7Z*6JH*Yk zN5$RZV<_(tA4fTY@_^VW{tD&i#Vxh{;tS%hQQj;52IUvUCu;k|E?M3uK3Ur2jVN@Hk4l#x7WTe{!W&EFYdtp z*Tk0EKZ>u5tth`CwxRr{*k0Qs9+c&`#GSS8!F;?6<#)smln;r!YrDli$ns%vPwl(n zyJ7_8Zm|>P_r&LG4~sqG3n>2)|qkKY^Pl^X>4~nP6mr+*4S8CrBW8$kQ$Hm{F{1M7; zh^NKhqkKkut@d?sP<$Qbv*H^lpA+A#eN9Zr@{oA2_V?m>@hz19M|>OQkHvRte+E>L-#6O_?C-E@Km&A8#UlBhQyHUQ3^2_39;(I7x5qnVnv-ro_1L9xA_fh_< z_(AP{@pD=JLOg=~Uy2{rz9fDn_M-f?*oX4p#Qxgfihq~oe~1IMQSqPRQI!8B9z*%x z;_+G;w(1ioe~YptekYzp`Kovd#!wy>9%HTwT{4y1b5x)OABcrPL<0p5>=jbISG%r+o&u;^Smt zxLB!^CARoF@!`JwU=RPOPgQ9>?*PaIfrqsk%rHKs3MXta8162oL%5tS!*IdChuL3q zNSvM1aRwgzptN!3KJP$@3S`SpC-#W5^N-^UY7iPX3w~-f*Ks(rEgLnr+ld<8E;NBH zKY*ARuuYsp`Bt293N%)g14q^-t8_Rq-viEW;OuruoJo2=a5i*ZR!2~PmX20cBTn=P z_wbBt(#azLg%9iHY2qwN!TUfWyPx@h>@3zvXpX^I)?e>=*|@9|wWE56)9sc-z&RH_ zyhL=lApwr-XFw&njIFSraR>N>h0}$ZoN&28Lg7Z84wq!NKpkh76I{s7)m@}8X>|ge zof2oZOq|ia3(PJ_Mk?sK6HgO3i8Hr0&g3%rsR=jF5diCh2k}wQd045-;hTpIJ*>A5eY))^vFhe z2=aLd2?29qPvLB^8*H2jqQqI!MACx*PRALv#RK)8=L4!colcJjeWY+ENcf;}#O;_Lwl1qvJIaLpwseq7)uf`TsAUF0l006+|4@A8sl@(@Q} zz<>`OUP`%RwoY@BW(c|&5LV1WS*c1&Ni?bVa2hR1Of_pu{7v1ajgn=Sz z^C+CrByoxUANl{oarO<`21eC@cVou zGubU(bCb6LpBFe&U;=6nwrl}pKo`2)egMN-JUsGaWUx+;2YYUZ*Xad&vm?+?>}Sab zU`LPS12CRjLc@_|ef;1jJW%I$*^&p?pw<8?b$J5;RPO;u=wGcPEZV~YNU2d-=eKPK$LIeAHy%-Y;XRnj^@=N6bK;%9T zQD1fX2)sL#EaWK4uZ&$0-S*d#)?Nm6SN@2CP3P{-SwX5175GHHW&oF z-e3?-c-d?=)!|w;M0l(Lu!byK96!eNvDCF@3;3^QJvB3wk%mK9g0g7U78DVPph>cQ6(!ygR=Ld`fCj>W@45s$}w{xIBK0xqY3fIS7A zLtz`|5O5~O5@%unoUsoufV2NNoI{?7-_4%lzthH9l8o5baZcDEiCP@OgfQ7>SUa$j zXeA`hiKLBlI4p4nFd#K>j^O6wadu0b>mm_%gu{3s8V-b8h;uv<35rA_hS3P;o)Dew zAptWBn1mycT*06_=!}Ft7)C+-gbqgPJ~0DaELsY2#3+jo>;(*zLEbf zXV8V-$36fIU@w5N0>;9J(!}~Cp$Wh%^`2+dz%3Yz1VgDLcsY{F1jC_lFd7a=qw#n+ zjOK%3+!PGQaI;VN>Ya)zLvFAE28LZd?ubSKLp&Oaw&P?ZnTmx)DwPZbBXD90k?)QO z*i-&^I2wm!35VTbCpaHX0E}?hj`W zB%Z)1i$pvTXCmf{grX7rMcr=V+7OL`;5-B<4Y6nx0s+u8#9|R&!j}$vBM}a}NW|@q zxYH4QzzNYX_QC;oAS$7uG?5=oWJ%j_gw4wjtB%Fukw_vEZOq1Ep?G6+Bo>WFQn6Sv znNG)IXg(5);7lxqn*$;~YZQzVm&Ch|B=WE)d4(b(7!jwIlY z7I5OmMZoJ0W}?XyhGjJBiMo;re>4&YVzC&I0D6r8D25X;H`;DY06yTINHiuAQGe3k z5b;Txgh-;O8wA2(Bpi!iF9NY1mr9A!M1E?b3Bo@TiL!b5L2a=_A{mV)qw(gZL?V)G zZi~iaiD){JNTtwAi5N(bh{k|K1_TI-V7*gOLClB#4}ov-q3wz4QXowfNQKZ znTjVz%aoJ$1(a3-Bd zXMDbluOov`B9+XhIx^{0+!t$*YHFqpk`P@G?p!#>lH%``MNHfJ);nTDC&jg86X znT1SaLu0zNv9YD4y&Xdl;525k&6&m=WKkT-)_xY-hF}sL60eIyRM*l17&=-ST296F z=I)ufte82oGnH;ZSV)Mo&uS7d%@Xa|wj4%tHXF?PTAQQUOj8zrO@4nSo5}PvHD#LQ zVJe&HX>Mw2Y074sn|qpDveDLPXC|D@rm`fF-=Fn&X7Rx&Y|3CSlkg{+=wL;Bss1U1 z!vHBunJPc5x}~Kxn{CZD%__9CG_=m@&9*c(XFFP2a=FgVmKHRhZOJyZWm`INa}r%? zKZ|Ws7!(H+*r#wuE(aL8b4~4M;bbm9tFu|mnw8IF+nHp+58aaZ8fPH7$4?WEu&2Eu zT-u{JZiA=WKqiJ04m3A>JYGyf{g|KxVX%i0(~H8mi6e%Wgbq$a88kpRHlmhh#O7M@ zbPln&4#eO(LF8`4+hWd7IsP8;irt7f91!~vQ+ON^g(na_7(?t}9MOVj5Gy!{=)eRb0f!I= zcmYv>m*DaLDSZ4_B3|=JM1Vev$kGTR6k8GL`6yyFn^E^y5Ze&qPJ9L8Lifn6DsDrh zMu;a7J18TPbO-iV%L}(7c5?+HOrwa&d>0X}k0VmG3Gu5N5zo3oyoh`L8Br*KSkrn$ zsrb1HQJ__bovlSI=WB@Sd>!$cZz3M^EyQR3K|G8*9zs;*2Z*l-MAANj7?b*ZUO2Rs z*gX~f;6Q(TTw+tx&eJZ_HfkT&w(F1UFNK!1`P&k0*|wIp_O`CJ-nNBpU(2<(H*}64 zaU2OBNgv4``Rp6J=ypRbw}2Wy(>|bGiswIOJumQlye-q#)Yc}SKe_(AIO04KIg&YY z%Nw7p)oTBW*rebWB`j%kqWY!ku2=u&m4A6f(M7zn=#@bse)jOsmcD$;Kec&RdN220 z?S0%!3^YCk&Jf@bmi$hAdci*@$wO66UEv;O%oa)Kb>e135pR)nUL`5M27P-KdX<#^ zh`1b7UJW|mjHC6q@^L(M6{3S1K-F9D29s|soi36^Yo-wQK9S<6v z@A$xl9ZTCbw{3p+s?BZhXuI;VRS!BkPxHsCq+O6GkE-J&OBiG0i9l4Gi;9R;GZF^^(ecpv< z0n*&k*$|VE(X@JX=DO$yjD64nVaRPcx~#4DB{q(moRC;X zp?6-q80|>*7n6OJO2s%(U0AJDBwR&(yLME<w@HVk~Vc~3oMqM3c>v)Wu_?h*f9=*BI8y%E~%z;4loI^FoXSTCw* zLlu5({W#~tIX{lWJjOPTtqp`lntin|=-VC3p!cue!!#ZV zU=$4rG?>8F07bZUTE_&KJw?&ljO;>UoWwpcOko>; z37nD4McoRE+(3UWIv{aK<|ehfM|;L9+PWTdZ7C0Ucj!+Kn~Tb;S62#U?Y8pB$QY;! zzBcmc*A(oP7O`oMG-=p0O&m5&E)oa#05GIDMPn!L7D3tY9;P!1%;~H%1c~=12qv~| zib3N}ZVK$O;duBxP<{2Mv(2kl1M{)5# zvn_$Lv(cYzZ)`RWm=BcT%ZLPS+xodeC7q16yS(j@ymtFvHE6rWR>L_lXnv}(DKzYA z^ks6*atf>=zi_Ll8he3R7p8AJl=H&A~(4Z`-5d{K}Td#{zt`_{wt1dP|;<5*UjY#bejr^*;Y zF~%`g)PAYo3HW1dD=LQtU{>{^F`VSIj(y1yPEkb83d)h5c6YnG7Yv{^Ymn=AmOruO zlb_gyD?0`7?Wiv+E`dVABN2Q_M=B>TFd+Nbnwk25V}@Fin9}pqz3i(fJszry2wO9h6BO{R26Dd%053?yiSi&`77R)EKJ4%Ctl~Kf~ zeD2C{eyn8v7!xAf273$ug~Sz#KWHA1f)w853o1z3KmnYiEfIv~3ZX-tQt6Ps;1t}> z$E48W7*j0d#-kKo0r`j%u290OMU|P5i)u!)7}YOXwQ9`VrJXc9VmwxT7UNjk2d#Ad zsCM$PeI68NL;j%|aXh^%_mFNJ-IM{E>{~bJMGdcS zhpM}K)I395+heXX4vdXJtwX8nvk8MurvsouhKo5*lTVgr#)Lf$5@9+XJ8txK2M{?pUrpaUVvRccL&3$d(TQH2pV+suSad z^7Jv`6KPwnqCX7uh0hwb;N@rsv_FsqqGMHao%RQ?>vdIV{oAXV;*I z6dzJ@idb@d5hKc~x|F~%X`IA0V#$7>y~6P&`8Hx%m-On8?m=i1N%yE5B81u=UPfRT z?eE4o(;poitPX=k3tuVVpTG?cnv1j_BDwsIvEh7vxcb~^K0j*r1>y9gF90R`f;>wo zY5m##K!|A)g)F|M?M&!oKRD%RCxrqMy0D}aP{9pCSt%B04CI`!Mf&we4}m$>EjLdp zX}6nC7EH_-A`_JrgWA5*SiV$2eYA|K&~KcJ6sN2Rj%ZE^*fy!ht(-H^??uYgH4TOZ zhXyPR=(IN~=Dl)00{_Mr#H6g(Ck8lup#i9<&oRng(19bRANK>~Gu8997Nteo(H~b@ zZ?aNZzqN?^E7j+wbYJa9`X$B+P$LZ9p)6Lmi`2JnbX2lK>(`3D#hg}Gyoxnm44unKF8UIM;|f_s-u8KjyNn92a9grFhH{-BPd z#N}}UTTXkZDe4?d?<4ys0^TLTBe=oh4JrZ}s^DCz1Ough$;jAgnfbx>g-S`ASsbG} z7}>D@)Xe-)IbS+ls=DR$64U{oIA#J)r<@_Ir#_&_q*SG7BH@&253&gjB9k)*zX(Zr zOX#HjN?9BXjUgWjTHNHp7Ey6bAt-dn6x?zUWGudp4uGJPFgZxy9MoDgr-8#AGbbir zp3vtE4Vu>vYq$4RCzJD1y2Jd#8p-OEI14cvFWOMm=0drfbF|)h^K80vJbC~&#v?Vd zZjDEhj9S>%DfZZu7A?+`Uun@2t0=VyjS^}R=D(2?&~?~SXLQKFfw)q{`lA)IGI4km zAQ}fIPtoR?&j3JkzyxHY7B486QsN2@2eP0V-r7r)l0He-t!q0mWM#)}Ay?>sH;-4>V8OE3F@2&SVj{)}$zmoHa` zE2g`-t=VN9c&ds52x%|5(hVt>g$w&2Dc;E*P=iPbST)o2NjBy9izrGfSxlclDGqx~ zZZQ~yE-8$8c``?17@Oz-u*G&#yWD(I8ampO)F378Rr7L8%PW$wqZOzSt*10L4W6(# zlT!gIVns@JqZh|62@g9~&O}_`L&hSe!$N+X28&dy)8HsnrU8(Ln6w(N_w51DBca+? zW@lI`AZ2M$n$zM+QG&azajp8CkdQj6&*Q4kIdtWGxdRpq2Q=QAGe4i~PnT1@>7Clj z3G<8>$pgv0lsPxmm)uY>uZMj;F^v|GluFOjqebaR7>=Klu+M@x&oMzQN=Zo@l@e6W zRme)5(2#w+pju20H;f3VdK&YROx@rbDEw%Vx}JI-w2~XWU#j|bc||ZNeDjHXp4Oin z50-!Lt@CmKi}vK40UkDZ@hAy|Rx`oud>7U)S}9AFtxX9NRCX%I6K#D;721EW?xT94 zWL~eGEcpo4yj%wRz;@Q3wrIsUM?$<48UjsDrxopV3R%uOICG*5A$=%ANFVei*a;Wo z_>w*z&gm?=fH+0;AZ8cvIez9dV_OF+m0^FTG3^=C@BPfJfas)c<^VLwL4T$pKvtOY%|SP z+HTOzi}AqDRC`KFOMED$iEs#QCM?lPEfWCJ32Y-6P~-tiE&@%uBor^;AeZjXIcAPS zcHiV3TfrIAIxVmNrW)1nh4}VzyS(Z#4h#?1@#P%WPwhfGpWRMtkK&I~i@=axtHQrrGM^#srse@| zNd5EB%cz*0O8bk>5!!d0L$l`z5%n8q^*rXtpg9?F< ztQhUqXWaLc`9cZmgL6vvAu5l_pQ0`P@2R1eU&J_|nM}A#y35I6-_#B}x<< zE(eaOI7l5iYjc1i3I>X3H3P20g3$qsH0P8;CaQx9FOKVT%v}?7BOR!Ibrd5GGdHAL zVX!LNC|^TboV^FGTjgH1?Ju@TI*|_CZy+7iteY^v2m(Fm)A!5X30r#{rII9Cu^Zmx z7HC=M9?aN|RLuKJ`V8~go30u6WTQxH^tsGG7#)&4Rrm1z_1=c4c7r@$ty=I=9|h2N znCr6drbaSH65y2@fIT^VOmjR_{&6Vcf*F2 zGo4CdqN2T8!bW>)h@(7j?n1{NF6HUNf_*4`90~f#T(W9gPpPfc564>gT;x|Won1-p;T)eFgE0hcLoTWQ6X>kLHkmvH z!v=y-|HHI4!lH;iMg8_Xmli8$2jmPl+GHEjGFAQ!$`RJDb-;@u$0&5i5%cIC^UX@I zduCTChKNq}O!KJb(tl9BC)C-~722v_B`E~Fq}+{hc4E6Frfhy?56~enW$7nu>?qm- zz%T+n<~YGiWym9=l~0kv;Z4B3_RJN=02B*!ZPbktmc9AHuz7uDc*U6arsdL{A0EcW zy+XgY8u6mE^$O{pqhxDGgHxje$Eco`I_VSyU1%{zaZKxtwgAUSE4CaP9fX?0s|{a@ z$6#IO(M@Gr14)WFrTmVR%j3b$p3Y!wYo%1OC@D{j>-Ub9%m*}Au#2PwVJ|9;YTbuI zoin?Gpm=8pT5*bJlJqmeHzkQ=8<0rN!m;F4Wv9qKBpBe5=}=V1CuQ5n1nvSbXxlVb zYP-x6w?`eErkxH)9O_qkC`C(_c`WQDx@BR$cVXXHG&V5 z*Ni)5k`U{?(m*@{IHAiJD5S2<;L+4UWg~J7QrG&ih4jWa#|?h^Y?Cccq+VebJjdDH zW%N%PjXeuaJF|V`jxp|?y14zO9gbxmbIyI|#aDlL;WK9Kp_^TE-nC*a_BHJx*?)DM zq~}B_B91+3EV8%@Fz^`uV#WPRTUfJ_Xs(|s9C(?#?zv~uvFzxJ_cBM zVy0jwPlm~pMMM(_vz*6k+OFN&+KRucx39O$A3I#p-iL0uYu~W1dv39}+xPnLKJ9(r zHGHswL@euzu{)977! z76SmGsnzqnG_UM7(C@Tq7O8C-f@&O@Il8KN=;WLmXr$Yw8U2ZO_3~n6^bz#Jg_85igjb*G}bJx%q23dE|JX)~E zZvl9EIexuzxTt<7&pA1!l#a3I!i?ca4+f+OmIiT8Xk8P_;WhivAcV+WxW#L!GK-aSQ z4$PSh&(reZR%$`| zW{#Z`TMy$V5>RR&rU5{>G9JMwn6?t3{ne{Wzb_kWhT(M7=Tr`0LXHpk+x#MIodRH# zUV<1ZCzNziAORUXMja$|KfE@6jwE@O{yO%L^fcSPT;>c~QWoNXiiLCHG?@_o{j&MO z^D-{OF>yg*aH~<6jF-oxjQuKmX$&2-RdW$8rB9fD;1_2rIcRgvTjv@S_ihU=!X#&z z(qsYXw2t6vl3{*1N~2Q!6{8pzV}n~Ol|g{b2owXh27p*$|^i4DKfIO#6eYK@+&iZ*y;@}4C zYSdA}cl6VmpeJ^6e0=n=>k!RE0>nYm5HpbJG>b87hSOc!eu$&S>GrhES+*@LtsEM9 z_4#qKK34=nl8N-f6=OZ4mCBmZ)*-$B%+;3F>{wQvSY9SG$v(4i{4;z79GvPI=!ODv z7XF~j6{ad=<}Pv~3o?M!BLYHS0S0&pC(gmaCGrFg_G0IteQ*vK`4W72tIk`$iGv@? z6Y^Fax2mh;WDXP3nbfhhDXGJKT3FnYGPFvmebab`e(5y!vyi`yNQGtK4eN<&ux?F-rx#Gbf>fD8R$ zYK#+?dX|Hn%t}0X%ZVTdyhsNCAkZ@PVKp5r07ZSOLEg;500?kovs#jd{X$FD?iWHs zi-T4zy*h*?M9V|Xk*S50`;f}QnzyTIJ16bhZ%5&E(RPd#NV4+3fMGU03fW&Y(G$wCyj7aq8a~uv0dX zqu#G>ieV6DN*9m54%$rV;@Q;?m(7EY<%5IcFsQpi=FuMZ9p$oukv0KFGmUw>_on+f z$jj6ZBtz7qlbjiAQg+aHs-zwzah#4e>T6|}tPXbfbcRX=WA>Y0($)>>n@6knp})F9 zniCd_9GjXx8*~bB9<2ORpcGnSZ_yXYurduH@(ZjGdZd&^%G1aL#%Z*UnWy4ya>(rA zNdL(T!f>-0v&TaV7WRiUbEPqB!v?g+dH1D~Upr(^A0Mfm^1mJvsZ{}F_+BrC+fuu{ zY~CQ}^QF8|7%L2#Uq%>tNLyM~V?wqeb@B>^^3^=Wz*dcD3PAD!WxV^K+R_%W<%870 z^f)NFOfRuYaZyfd#jpX)0y~*!1Yr%CO=X}}hN#kn6xh3suooikM1N;=*;f|;w_oKeJW2F+L2SB4=} zx`UJ>gM-7EDc={ugex?p?U4O05R0Tu@R!Za-9WuQH@~FxU!{t4cASY0!BE6ltf~_Q zeSxGS=H*fcM8)?M{t9O)$NiAw@KHgq`;`vxL(=nv6zqNocI)6Ah`CE>1mo6-(g6`X z%MeDYPmOcToWGyG zUzt3^puhCs$)E*H<>6sEfn)eq)~~O?BNU@oNOufxFkhTV%}b}}r6#oQ4a1m!BchS+ zO{uv)Vtuq3rNwAZgdC6qD(q=nj4sfb!{aR$pEO@-1EM+q043;ExV`3(QS7;4$ z|BFi_d2MC&x$;QCyw@n0_up3-s=&ih7?k$0n(H5hyvR@nGB{7GjTQp?hn>&NV9wCE zPb-1fvbJtWqc5cI1-XYwcZ=4lSs94k{R>XhU{`5J2MeEx&Pf$v50~$0ZC+NE35nHP zV{?-8&1aF8sP&HAnrm8SmK2^CD~QJwfKS{OLXf;v4Ki~Z+6L(bxGv=i=JbTUl@=%8 zR3_|%Qv;mbGOsm@eQK0uJ71Da7@?;T7XHLtt z1R63)cX`WTzL=a7y){1wmqy797aLBwwXHdjZAiM2Av&Jd=FU&fiQQUd78z)YV8d>` z2!PmEN^dIRMv+TkR7@4z0J0&zUrfX6j1JRxZ~E4?^IJzYetS;5Gf-^Ni`zC{+j8Ev zjdS8%zSa-evXrtbs(dpl)mTb%_7kd>@{+SCzC}lUt)pA1CF7Xd*%_SukYKswWL|TY z_7B6^zNMtk)-Uz;nAevpp-6B&9AJt+CLe%@;#tQX=nwiL2!YhN$y~qrZ1s7^9b?n( zJLq@~b`LW%T+&uhI6Il^mSh~P-#oa%JWIR8@!Em)V@!z@x>f&cP*Aj1>=u-ma>y(> zOtt#cNGfJ~Z+^??g)>q)gsp+|Fz3f(2+nSep%i<<|B z%`-0_>r;TNUJdN%JH1`{T(Dw^INMfyw)=(lfy#=ZU4YpO-T70wt89mYl@gO%PWNd< zv7gZ>s8vjMa;AE;f{3>M*tkq9Rrwm4=`wzA9(1BB$@3~cR;PrrZp?!fXUP1umLbm7 zxyDxWStnK{V787Oe^kC}#@j4=Ws392arBml&?}tu%Kqr+A4Gl$b6(O(W}2AK9{5?e zyQO8$x=sFs+v$J!v5~f5>pdI00&(|7(wcp>z2*X(d|7-hAY^?Ua?};Xm@Zo%+QDQ& zx|sK%N7Y{MJY=wRGjE?6NQllQ)13%a6pyak)Op>{e>zL^x0;(eV2W#}dWb!9 ze5S8?@Vb%ft{ZXOJ96!{BiCOq+x39X2Oaw$BiyO({J0a22AI^adhjiH2FHbX3jFU;{N|X{c11+>)3wnd-UZlS6kbx zwdhvQ@!hId_ZZtn_Al&H%-K)Sr`ffey3nVyHD9awxi(kV3H#K1)VNbDl6`u?pWmmd z3+3qhQ+*5AAX&lP70K){^Yg}I;&R99=u4Sful%RvAelM$c71GqzAXFr zu`Q)ao_#Fk#!|@Rq&SaaPdV?Ra$r!HF)pBNFX@+!;R!Nt*s`iQGN}_NGrZUm08U(` z@}iZEX-zk*Ylse7+sM3yk}5iuK4`wbP|go+Dfc1DSI$>pboLiuZA;U;Y@SZblX~c| zwi15nKifzA93msp;NTkVa7ml<6D-<5;XYN5hu%ar{uIc}=OF0PXAWs7k+nw`-WTYw zROuM>rg5NbPP|ZHo=j1D6Z4=)L4|iKF9c`EA(=I0$EK#|by1L0v|w(+dDoQ8q15H1 z+8WE1q3F#D~idI+;m*izaX$bs66_Axs?KAVi)VaNH| zfO3Z0xjV#G!l5i?CHrX3v&U3KQWvzKrQBvXR?#4h1dNL-1wz+0u|U50(Hg%ml}QZKVoA z2d4lWp;t$ZZLkgY10MI=XfC93NzH9O`>kTpvEO_~n|BLR`h+q02xRLUSerh89K}Yw z-$T5W1D4|h%fZPgy&4g8QiQBC)Lk8va&SEi^HbVK zd4F{-?td2d|1auZSLwTtjci(6Ru5Ymb%y3S#zP?|2^I7{K3e^wbxy%eRTHh z$698!p3Qcld!6l|&#wO)y4N)uiWllvw(D_rq1_AqXS&zfHC-+vU!?%Jk*z{MAbkw> zyoN)J^I{p##Fi3<9wzCPrfZCEFXG1(q&(x0_dpiMrTk^KS+rwSpZ2@bQ-yLxzjO@l zHwfQqNzzNs)3%}AAlX^PxQ&>qn+A_3rFkdN|_oMxxp+n~NoYn&ZIR6L(>}BLo6rkXczrho1Tcwd= zD5FKHGmlHFp8 zgHj%LktSq9~#k44fx^{3iSS#4*?FEk($;Fq^)J537!0H^`o zW8SIlE$D8#wL2rn$ZB`2z=p{9vEhb zrZK8KV3IT#QgJ~9Ffk{T9KpA=*%vK@Pvy??_Jo|3De7S97!4zyGrwXI*`k0jPI`5K zQ0Y{(%Qx&x`<@ya0<9{b+Ys0ylZ?;s4f;~PYaSgOGT#GX1dCG(GdO4G2X2R6%!m*1 zjRO@8hA6;DRHID?RLo{|0(L*4m$35;J^U$b=?j!RL|+Z3by3ijL0K%gMT<(oDd((! z8V-{pvV9=4^aF!~kd(_Up#{?%eEhTm(y<)ktC+vWye@CvOQ(VCXUA>e)uUgJVIyfH3OoI;J^Ga8KC`mv=DBw`dS9EA*0HeeLm zKT0M{pE1xM<0Ldn^hu3Q&y-%6S(Z*d?NvyJ>$Qc0`ZWdlf}XZ^ ztUUS4GTzLUw3h8Rhz)#Q(te3Ry?4NvBi%pTGSh)u$_Z*=#(Z^b8wnTrnVlmf<0-&7 zgJ74qv88Zh0-Oi?L?#WGk&_B%AtZ_PUrk3q|6qB;e+*SCw5Hcg__dYquuXi9+%e@nhk4|Lt7wjaX8)GBJJak)^+DR|eEmL+9B@cUw1C?897phH}IbiEnT51fW zMj(|K4xsJCiq)Q_bpWn3WMB%wDv);6u+~-a?i-hyb$FOI%>MQ03RqH8vZ!6$Pu5T@ zo3><8lW35#h(k(1YI6Ki;!~KbJphAiw6T~bue3oE&dgx1*m*Qb7(nDW4O-MoWt=u^jVfUtTsJTQvY+v zWF$Ql&cM(n6yH^*(59_MHA8~YkHTYitu3P%{-zApY^{8(5LV8WkxKRgb5VY@FtoK? z)LtuLMGmc7>gN-QB~X>NFm0ot%6w5iAT>S5h(eQggkReHjA8N}7BDAZ1}tEcDPkga zT`Ck7ZYh;i4n&<&Ry(x0lVUBMyUGS*LOwg!iR~0Wd%+Pj1JxPYO|%xt+0t74AKAEE zPvRIGmmU9Hsr33O(zr!G!@I(+lt!)Hy8w?dE6%~f%AR5u*YC{t0`t+L(Hm$J??8c>Q6;M-Q`2tb;H8eBnC0jui%?CIHuAj_zSh80 z1U|&I5ilcBvHb?Q;zb%GTc157Q-jBPhPEJZc#(c7ate@UK;MSuD2#D{!ydAEg6{&H zP0g%kfE-Q&t+FS)^ifBxvFRf}fP<+vm?$OH2yW!KqbA_QDJ)lxVH5`$whZ84HIspU zzJr7J%1b5W2V6bcV+loVC1W_|NMSuH23=rR8^}ll+Z3nfineveM%=U&IWwfq6_x_X z9#6-N7kiSbzkzY`LGz3}4C~Q+Wom?2vsJ4v$ggr-*sl}VVH47y87SmUIWBCT#Hst^p{;)6Hc;cD!r+!NqLgv)({tmtiEdK@s74-5mQ$`BmT$H8Rm1o>>3nExjI<900FHq8_- zPgZUWON+pyl|CzTk&+E^{GiP^V;E6O z*Q&lzf=J3tR84tF!9=s4**UcyvIM}GLC!NF}q zdG=9HS>@@-c@BmkCOA@N+4>{NxL?E)lr~%xh#Xb41t{AIPn~0^U#H%H!}@P^hEFi2 zEF}wG6r!gI-eXw|Xn%mWD~K5{n0jP5KcTorTYAdtjORU7AW%xy(7z`$t7-ZXWo0o! znsZvq!DheYNTp0!#x;KI@H<}W@9xzvGq28TC*Ak^a^V259~&&FJg$;#1ID4!n~3k) zF{KmP6Osp*31`QXXqYoQi#Ek{(?&l~v6bel`sT^Aj5YQ7Bw(HLx#0ar3IQ^;{l=jm zwB-P#4MT~+DJ^XpTFUHd>3@M3lz7{78j3$MDj$&9Lrk~rkgGgEZ*dVB8u7R*9Kp!+#(@8}&v zGx5@$OblZ)cp;B#dRjV5`gpL;5YuSvYEpH5?A`B(Bo3;Rui( zDC!d~QbP4-J6`-4F1C!Me~0{_T&sj^AUA*^ctLw5|5fzC&>iDtZC;PD{kDtRrC^|o zb;~dumGtdMSS_FAwYHm!bg|zrN3>H8FB(tmblNxcs@m3F9LJ=Z9Gx`5=q(G?hqICz z>_*x-ypgQMWBM%VOGWZX-40M8UH$j-=R;Lfc$9lquO8DctsJgv>vF~7AH~<(F-y1! zl#&EO#emR(259$DLo)-KQv|xn$WJ^^0LbHnoE9718U)CCCyByHIg3*081_Gfko|fC zg(Ty;2?f2R{WR9^fV*Kpdjd|WF^Cn(|3g@_aV^NdV_@i*QIN0mNdXfd$Y%V|sN_kt zM4ys78k(bh%W=vrT?dp$GDpjPtIrl5q;3>95*hgpr<8q)JHR4yl$D#rYBX0sW2_$Q zDUV_K{!{Px+trX!g?duFz7RiRFt&5may3pNr==ck7Ppc#$|l0kp-Nai*rp_ZaQZAG zE`X4{tAVrm)`;S4_KB3`Rv&OOYI~)4x6J>OiK4P2xej1fHeg`ej0V)CxX$xVua$5S#H_OnWgl<{Xd202j*@iIk$DPg?INRX3FOtt(*Ztjm?~yB&V7Vfw)pP071_S28J1o3d$@ zI#K;g89};OI&W%3CC~*nPpT0VKDK$ufv~5w^K;c}=!2^kyyklC8LZ^6{{jdAyuW3E z!r>3x3Cms3d1=Oa>~#o$J{m$a35{PFecNJaJ1spKUJbG(bVwER?I z!j$Yoo&{YDa~C@7s1=issQfU+iukc2Ng=vI`Es_f*&EmsRh>=wd7KzNgAjNY4g5OC>)a`SbzRc=Lo94Vr-$m zZ`cg(oR%Vp{=TpJ%i7cUwO5%Bc5EIDY(G#RH0+&6fzP}bB-7*vmmuloMQd%rYT0@| z$ebg&8h~Xw$Q8A0zXxq6+ReyGg{6dkW+1D-4=EU&J9zR-%!x9pEMH!D5jkeXT61j- zzcFj&F8~PUa@h2T3%=t=BO~wQi-88$uG9}8UzR_7(k$+qvT?AGhU5*7T8!a*t#)golj%S86;y)yq{47-cRQt>x10hgZ7m3Cu+&;X2>^_ zSOl?UTp_{{*?|aE3dDrl8$lj+N*duFEGfkTAs^CLhXG=WbB`B0P@GVf(-%4FDaUkCGoEx+a@QkF}QKo$AQBV`Wf zBeeY~a}a^>NNF&cNy(s)an{Gsw#&-2H~W7LN^%nG~@cEXj*+y~KzU@=1U%bv_~! zumZkWOWN4yy0feHBUkxtqH^;_YW%E;zzZW~Z@MEH7H3t5oyyqz4J~lu0v7dIj zReEgP<0{L{tG0WPc@=jf^9uQ~Xfum8|B}3`I5@B$;_KL)=i~EZosX!TXO(wl>Nh`4DyZ(8PYsSV9VJ8G>Te{#*W6Tse=lG!BM2f zg_L%3Ss0lTijX3rR!r75e}P|o9N8FZh{ZRJoLAj+-keR^xz71W7!R_3l>2`pmK3AqAu=eWr$|ppr51R^KgL$0~S3feM zeX!H~z2-A!S2yXm?lk{S`=EJHV-}|Jd#wPD^>y?(@!@-WoQ)djYkFwx*($sdbm^;B zX(P!Q2Un=cxjCbQ7{;<~p|W;(7IHWzdJf@rxHHT8_g}}6xe`*3a?g%e1eq_#xiIAt zeL!rHYMB`*lu^`jY?<69TZS5y_)hnQ(4wXL;8D>s<-nQTJkStzmL%+Cq!dZ+j7r7_O=16M0to z3gp6*15;j8HGzXK1CfZqLV3#&UZEc{zg#-(xTE?U9gM3mT^PbDeDEYq$D>tzl^us> z(KuIsBTeZtA%}CTJOe&!g$AA>=Mi=%wmc?B@|e~su}sK(1^Wq}VGx^kDDxKhg!R@s zdqz1XvX;-Be(D$+_Q)#Y7L)O8iv0#ziBZdV%<+gz<6L@jZ2aLdQ469Bt)@4@eDOFU zc$F_f`lTelpFzs~iH&%x%A#IyaaG>!tanPnoE<<@5Q z8{#4Gv|>RnhL6h3e*;&^ls8Tu!T5MpU=EgUkTQV0|2lX-E$~hT1DEU{+YaLdg7C2^ z$_3hfe4jpHjR9B^bXg_=ovnA+LF_0gDnLuT0VRXE$~TQc011U0w6w8or};%W5b#18 z=KtEV!Pm=JYXz?~$dSPJ8uZPu(bQNlmOEww#tl>gDhKEIm>>H;fQA)^kjLPumwJv%0kj6` zHRVK$em%t`7Oa>rNpT~sZ!U6y2#5JZ&wfspM$CKHl=lP7wfPN9hjbOLsAxwIlmLj# zKQxxXW=$g*4jy0S@!11aoRLueIi4R-86Y8F4lsc$viLH-%RmAhv1D)xFLsi>2oxuh zX*oNBjrJDr5K>G!PT(OrIx=D@lVhDk+GKq#%YNr7eGhzC2ln6#Hl39AN<$VQ4@pIrCR>UIFS@qU|_+Z*4LuB z+zUbucV{26dU222)zLdgmsit$_`SoxFW^7sjR2cUFoy2sU&IXRGt<5xp7fn~bp@-7P`lYx_iL5HE4^G<1NTogu`fL<468)7jvnK=>a|$z>M>@yv|urIEnmV5$*kL%A?kxeLWSAJB9Mez{#UaNyQ_ zu~Z_Y{lS6XpZ9uoLv!L6)qRHJOqbzs{!Kg-O!yM%U|TQ~^S3zx@CTB?HvH17+vU6b z%(m=Ic`@5_W+;L4!DKRc;U3pT*$ZviN`@+hlawTejamzuBSzX| z%nD;}gId%S1`jS!1#nBrPF{#ZLL?!M$xDz0(+o=GXkj`l7QVd@KNo;NKZ9dPUmMnD zT9MAl4b#HDa_L*@Q^0-u6x?(fG1jVbYi+pwXgu=20k@R&GEV_;-#*?0d)UsyJsxf= zOl!kUTV00Vlw8W62z&`n0`sK zRC@ZP^$0AdMKEQG3Z?>hBk+WAC}Ue?$V^R(L*chdzEIH4oCz18QH6${=HIUyTl7Xw z_wPdzoye~*=b)I6)&2VBLFw2xJSTSSYt>&Evujs59)bS+x7}hsNTGA>s-M70_;-A< z_DCaI)?pjy_<2+vKY^-4QtJ3AQyo7)spH2%b^P?GjvoQl@iV5n_#VDb;Tyy%CMj?f z%?%YDoDZ_~foy$fqvIu1>w;WP;oF7p0({?r?+5W+gYS*_ej4Aq@qGZ_hw*(J-yqjQ zc^*5zz*k=ZP1FUQOqQn4mI9n+Ym02yEi;p;kJX->xyVQQF*oSv~AY>s=`{$ddHOx5q-7^}Cjge$qHXBJVnB96>vPtthVl$d!b2`py zb}xt)E^nFFk#P7DO-=J=#NA%c0*~M62xgii@rbLS$ME~i*%`%9=X)b9J()A1y)Ykl z+=e-V7jWmqIZVh`V^jS)2V;UXIbc!%A(=4++Ht;vwNcfAUBsHdRPojU4Gdv?t93#; zp;=);p}i9!d94) zk0Gu^!y|igRkyGf%V`at86^r0fN4r!I=eLHBOj$tMtM7?VF5FU7#PU$m1(~8zwuY;9JeVv9`bNG z;MbNf*Mr!ZkUt88MN#HmafR`Z)r>;q1wg-|x^D$G`c>->}R+ z$NS5ENS|lvog>_Ym-aEI5K0Q!RwY+NR9-uZ5&P{Il|0^vd(}FGv?*n*1i65yMoj|b zL<@*dpAc|@PYc1GS#d3NW|1l>#4GjbqID-NYu3OJ4Hb@B$_Iz|JJSCoi8vSK^oJl?{X?IsvkB@6l;eU*=Ne|=PnD^vSJ^3mOs5t{_70+;npt6CKMx+{65i=6a z0SGwpa-k#ml9hU|i2)yGVMp+!HKD{AX7tbsV0Hs%73`7(w(J0AZ_r!8Sp~cm6pqTL zXAcm2)m{E>H5tubvWyQ<^Kkf6^RVIswsd=>u;qYa0~|&zoQH!7aeV39;Ho5XYil3t zzFTj-ReS%fw^lFt^ru&0_k~+;HD{_VuIPXJna`Nt;4RmoFu#ccpyF4St#^@h7k;yt zpLXkSiMT}zY3sC?^>^r(>YMew$Z*UX?=qGfHyYnIUUg(0H#+t^6V4AhzvO(<)#SR; zb(iaL*RNq8&UD}G{<&w4XR~Lw=eORIyc@lb_+q|UzVm(e`o8Z^_%HH5;Qw{tq`+-~ zr-OmuslkoGCqrGKi$nK@o(#Lf^TW%-!{P1WMIGg8v@4 zdSLXVi%;5r@~o5hp8WHLnT5OYw-^1}s(l0;sy=66qxSjxr}i(hGjMUPb>6_Q@_xwL zci^7Cw)UOik}cLgW0v2t_TBhh>>pbD9#{fLtbMOYX>#3nwCEE@wGQjNUo_~=)_wr{ zTmgfhAokC(_Cwge(%O%Skp9;g>zV@-TJcGJi?y$bCIbRop2zAn#$0RP5a%1GSo;p# zv(4Ifip9p)t$i2H|L*^5?|fjJO7cAa%K7Iwwv#yi7u&I)9Vc;2;y8a`a+z#zn$FNH zlV#Frn$9vTiy;m%IJVny0%RG6VYyz^LL7$>LWtw~5JDV>5TY5DWjKToVi}fU5aL=0 zAvWR|hUGX8A%svL>b`H)dk%iT=^f4O?c6_YtXHqzr+!uSt9tdTSFiHwJ=I?(Wr{JS zC(_YNEyX`l{pIlgd)04XFN^<^>aUPGN`J2Ujqv|>)o+qI$}olz>6qdFv-i@OjoHMS zv78)Q-7I%Rqu-HNZIqX#(omvx--%TcEAw3~y;|QFJk3_ia zP%O1(JT}%5X&;KOnM}sA9IEkWqxXnp--`B#?6lFB#_G zJQ@Z0HE;c&KMc*5XZH%Q*3qzB!@zrCoY&xDY85YGSVk5Ds$(#(u znr^H<<*@##WDQjL9D+QaHJ3q#hebRyfY(5{Q^X zwkE^7sS$Bb$K&IxQ1fyuC$C?>J~A3j!HBtohU3{`WiT&HOC&W=)jX8z* zBaqCeJ0#LrBaLG}hTJ1kJ5r7#wMnECLppg$ZT`QRdk^x-%YIv`JUm~z-zK+IlyCy2 zE=MJ%+l9i@M25>%h{u znR;8w-|d{_^ZQ+-|7T>E;Cw0Cj*6P%t!Pq|p0^fW+lz52;cg6a8OS81C89JLab|Py zD{{2PyVM%*z@@-|c9((V>e-s+`SNzRPSjM7keM&dMZ4*g`XTL?-bbEF%HM-j47p7r zKCiz)q{QQ9gd3CAW6$+a^2y<7RMfDN>U$!mjY3vw3qwdLhV!vngk({sI8x)W7r{4y zun}xikm9wW)Hs(|Bf@xY+|T6)MSaL(8Z(U)*Q0zn{9>>=E;R{#xdkY)ye05Fc^FTX zw?4&k)2i-VE2UIQI8Q4f%Ev8~rx+8G@50B=Pu@<)q4zj!om;ii^0?;f#V>-oh(bPx z^RXKGjza^UZU$$!4Zpn9G{SfvF@dm2?78Lq<6|s9>@0NP{RBU6{0u3!$n|^M!uT0U zqDCVB2(54nDE_{AUs|a6i2L6#IMOlv0}Z#n{GNpWQ;m<_`62^;o5=qW#7Fh~%XIuZ z^88kkkNPpognLYWqb#E#1~91+lo~Ln(S#1R8RMxrQVZrcBB;D58f*ueY!{mDJao9- zn2PC0|G*`RqN`&%VbNu=m+Q_D5_H z`#u|Bf6NxMAFx680UKf;vL);zwv>I$hS{I6W$cG+Ir~$#g8dm=$zp63Tg^sToQ<+I zY>Xw?TDA^%DB~=}(k#P1VOci8a%_@KvGr^N+sLNbpR-NuM{G0uG26m^!nU%%VB6Tg zWS_FXWZO$3smWxr3fF%=hQZ}K8_!K#L6vGK=TPWj2A#lISXEFzo*oy{99HCUQd z$olkpjKR5#0o52&)POfTIU!DAIjE9G`B-`^k>QdRNmM9qj<{c+R!^G|6^Ii*DQd=) zi6to~V6#Hnj1sFYTFH_Jh!6v}>)1G_<)Q~N&CA_M12n-kuwk`!pZi{kQ?aQJCL@`^R( zI|3ePL?*~t(W?S?c({iZ=Ttu(&kFU+(0aLKS#G`3oO5H@xFGt`^kkL?=|>Y&ip)e} z0|(_3@hP>*$N7!55K1MKgv>bYyr?+ioEu=nS3vJ z^J&VWEzQ=ODXBeDnp$K6eMC-N8e-%5ZmlX`>^!Jkou34l*f_o_ovg~n*CZx#@oaoV z0hP12)XK4Wd@`9!WRe?|L*qzdDlrmQ4tUqrG55XqikE%-;b1{`!Ur*Yffl|5hbMKv z;d2lm{7nUX7M%P4t2&p$i4x|;|792qCWUz7RdI;NLs&AgCI%*9w8CZiqjbNIu}}|& z%Uh+-rAyKblQ7EY#}$4%JI1cFXF8XzS2tF)v*>kkfAR9-T=AyjZNX3WOQaGb<{~{M(UR_xzLFIs(P z>CMsyr7tnd=`0JE^_DFzTUnMZ+or@X%awgvwy*41+4-^?Wiw?j^u>C+KBVsvp(f0T z_UVW8Bl;=*cKv?+as37TP5lG?%koksef{flL%F9sQr=fSR6bHZRldD^fBEt93*|S< zA1D^)uzcT0zF3hIBV;D57GUN=O8ul5E8O|#bhU10{hMR^5hL;tk70!xqMQ_F8 zij@`Fift8p6^V*ZEA~|!t2keAqhhAwg|XOZH-?No#sT9BV@8oMt~6$i+l+gSM~&x< z*Nyj$&rLd$)zoO}HZ4*lOg*Ln(+X3@wAHl7bi{Plbj@_n^vo=oEoP-w&1NfRbi2)q z%*)Lw^A_`N^I`KD^HuX*^HcNJB8?jJvr4JbQW>nASGllqS!J?vbLFneLzSm1uTU!1vs^`@@CAF#-)y38J>QHr0 z^+5HC>P+?4>OIv*s?SzmtG-wL%pzGVmY`*xklkhRSR$4_%aCQnGG*Cr*>5>+xnQ|z zd0=^2Q(EJ!3D@-2EUsBuldaiSv$y7G&AFQEHTP?tTXj~ewb9ybU1VKuOT)zqVD`0=6#O0^6`{t!J9eK z><8>8>=*5~><{g)9D0Y#(c*Z=G3Z$3$T>cB>~kD*oOj%C%wYDq81vU5XODBhxx$%o zZguW)9&w&^UUS}aKC6{#Ew#bgd9@2`m(?a~H`nf}Jyd(T_Db!Y+9$PdFvl%pmb>4z z)HUXscI|K-be(iva@}@4a=msN+#Ywt-RB;1kGQAY+ui%!$K4m)H{B21FFkmy!xI*@ z)Zw%Qi`=YHmqFjpS*%=0YtEb}Bin?1WQYkt~u#dF8= z#Pg=kj1PZz)b-abtsASGuG>*}ufPY|%zMy#%6r9o*Za(;^Vxl2-#fk`->7fex6^mXcgAko;elKLa{=jw0NKd67H#&{+6ML{WO2`c)sV2kL7Sx{-S zWx?gaRB%ghckpoVZ1B1ortX`RT#QW{nm%hf&~&2dV$-drhfS|S`j9Ks5_(6ZUJ>dD z^@o;*#zNDf9ifAvlc7tY+o4B_2BCXmuM0g2y%xR_{J+B59BS@u9#oH)G>>&4s%nDTZ`h2iQq zH#k>W8;{2tA;pPhu2+qhClc~jQc_9RGiaqH_qx6! zt_y@@x=s2-()LfskxRl8}`h zhX`5Rv4oJ`4nDh8a0WZV9sE;lg~Zu`C$lu9v?Hh`?Jql=ggodl5^|GQYGFF<7usJE za=iU9A)mMJBxGm%Rzfzl+p7q<+s;SM1+^Nz8huU3ndnnOjzxD9vM>56A)iLi6OxOL5wa?}oRGojAR+HW z`w3}@b`#=?wh*F^%39L)DrzON{5i7uqw^JJ{@~q8B$UQ7a)wG1jwFt3-$c4y$ zB6B=KtRS*Ka+%0%k7Nj$ii{945+PO)8Hx-LnZ8ILA(05Nf`}(VtRP~Dc(k!vUq`A4 zc@!xoLMhg+`_ncb~9LbkMy5t3>pR?xbqWTGH~oRZqzM7Gec0w^~S#-Ey&oSV7B)mg^*)11%c}`K%>L$cC1c zgp9TEMtpPOXhslVkG2o3qWCiIOpCRGH${1FT@Jw zoW;rvZLA}6HW9LCPKJ=JbBGnp$;=rhGArf`5Hc{QkC2`@#0utw=7flheU68a;yG1X z5`Hmu$ zKTND3+!5xdu;7Xomcue3<}evGHNOdyQB(7iFc~#9-wBgZQ}dN(GHPl*-F!})SM#Cf z6NKz-CM~>qTQh0l&DrM7B-YC2Fd>VZy@d2OTL=j^mlEO(eMLxV=$V#;UWOhJ@*wmj zAvZ(U2)PitK*;gXDMCIEkrp1>86qt_v?)Z!QK7Y=2uWu+6d+_l$WBOC$UsP->1#r& znqFv0)7MRp2zlCcmyo+nHwd}fM696cOw&~&bGYd|A-kJS60)V~Fd?ZXVkvk+k622R zzDci*)%d27w9LlmjSq>;!^T^L+-bZ>$n{3jdK)h`9w0KO8$ToDXyXP#4m6Guva69; zLF2Z@`9vn#IFFEEV~`MMBWd%EMsD1NJwT(>Kw5ai%Z7VenTE#=q&+v>YdA|}ZZ;et zT{$MvD-I#UK zoaJCk&`O9L)DdE>e@=+L{=Syfzp1}Y$kFxo^|FR3SXQNOT0N@De5Mo&{4_0f7GA;AFY`2#lt#4ZAt@s52>I)SqRVi%ZC zBz6(_JV5LsuqQz5BCtI`>>{u!KF519|573& z`-xp(u9(<`U+*V&A;0kxyWq3T+LYyoGO-K!j!f(V^V7sGq@D2EgUHJNZ#4dbYK4KTXkdN4f&*LL@;j8l5iH60# zVlDB$_P!wGsdt8ueO_W0-W^_I7v3#iVi(?=m)M1O%uDRTyWC6c!aL|CcH!;!61(tr zd;5uoE#3}7WUow!)oa$0x{F?77j>uWh+Whjts{0(cc6~gMcuACVi$GW>WE#`ZKxx5 zfwddNF6vg+Wr>DM>Q)l6ux>FSy>-2W%&VJ6NVqOYh_}u{h@}poa2!=v>LJ$)&ppor zt&HcU=O!VSJr@W$>p4!yanF82wt99FGUeGs$Xd@@LRNT&2^sP%ASC1=mg4bvh^2U{ zJj7Bw#U5fQ?$>T&DefEYN7}sHm)yis+-KaxQrySf#8TV`-NaJdyWKgG@~7@qgiN~! z2}!x%A!L=ig^+HyOh}8H*o9kmy&*DI*AqhYt~*-dy6+-(;kxA_cHz3>B6i_A=OT9D zI^iOA;o9aR*9+GM7r9=zlCC90pOvopge-AI2?@K1UAVk1Vizup3y})#!c|&J?4tH7 zthCq2)b6i6MacGAa&@Sks@+dyMrw%_)DG2d)yNcyHDdWz9~J*0EUIm(T~wPNE99B8 zwzoFlGvrxuZKO7$rl&IJbF4d)3A%3Z9?3^L&wDXlyd)AAbpF1Br&l0&E z&b!XTgl%x1aB9zek#hvGNqL=v&fU%wiQDVk=3GWt$T{WI+J2GK>RjaPCUTOq*Qq`0 zMUJP=h_gy7=eXmP9a=jma$I&=9FK|INyj6{UBV7H?l`Uxw%u{fp=}dIc$(t8Lu>m* zj+KrRj?YNk0moLyCc?TAdyKH4W7MIwgCa+jW7yHBm9xKbEOL;Z!TzQFOO2Gye%XGF zkW+Tjx7&}{KPNJK?0X2=YTr)ClzlBBBlZ=94B3YY2(#~(n7vCS{Qu|p&$xZ3Jy0OS z$yR&ed1Uqx#40AShHWoMtO46h0bzFhU*2|`#0uCh70B?s?6#8ygxOXgR=x*TG-NhB zGhkDmH^`G`lEL=O_7czBNcK`ZcVofPGg}W*;$2+Kxb^jH3Oj5&YzJ-oupPD?vz^4z4owOMJpZ%Sma$FYDWI*k z?RXLh#}c!i5xtz!FBtHg5Pwo=2-^zV2qbU}nccH8qFmOzW%AN7ltO2HW!+Vf8?!Zn zJ+|gsFHfD>EMRx7`PM6#^=q(m)ge!7~ktv!(Q6v#1aqr@yT8mT*$XJGl(!S&MB zT(;arOhZ9To#jf+N#yXVfU%kbh`C!OqC_=#7jVr@jm(CE97TC*MnSG>WR@US7F20F ziWF+Wa!4Zud$R1EC9Ecir!);%fx@4RGfEGzKP}w9QOSQ6gu8!(QlZV)pzT?d=Wlo( zoOFTcXX~1i0LU8+!PBLduL}u|bk*lAPc;m!ta^L(1r0+htIkx=~$Lw;69&{x#OYc(JO6uYXyN z^)CZrWz5G|O*4d*G2K`#Glcaq%fLUzuOBk~SS>S*bu+^V55oUGVt;=&WC&y~!uk;tfF5$ApQI&l00XvX6`#)={@G+2mo42ab{Jl%Y%N+>`6w$NW=J<_+;1yA?yMHqiq zRzGxEh|=}LzZfB0R~~Nx^wQSh+jt*;YrH3DSzeqkUX#3BAI_FS2^svBkpF^K>BSnT z0o2ui(1hor(Dw=bd$e6I)pMlLEOR$Xta~?gc?w zkWurh+y=5w5H+t#^djaRf~a{_t^`5qh{bhAUX_bMa)RXZdI@R~MD#u8Zb;-ud|ZZ^ zTf~Ogs)o!ggUCF+S%R7~TQvkdi#gvXE9rbGG1GljhL?+(uYugs5cDCY{J2k%IR$b~ zBXb1ggodDhG0jtnQi|O-jlh`&0#?xaJmvKCdZLMJ65e)sa zu^$_*#z?bUFkIP;QEW=R{0pwLv9AI(YRr!ng?`443bZ6+{;Vr3Sg{hUv_L-{-q|*Q z-1+E==b^~yE4sn*=YAe?crD4&kEG4gkEJcrPq5H4A+5#2*d!K+u96-~(;&aX5>dWL zdQ`eE{hc%;ZNf6u6qb-?@It^pmmVQDGtS_e_zuW^>9X_;s~hLD!#cZegYF65XmX>t zulQ6+uw-wkzU)BRm9po0m%d-0($ADnm+vXZXa_xz2k*P!Jy$?m7gvpO#J>i8bkg5KC!KU1TIi%-KsTLq1AWu~8Y?X1vY{6Bl8#URF z@(nb=dHN9c=vNVSkPH;^?sb4DQdQ^Kj3L7mEE{`X&6o z#8(h>*!cA?i1o2iw1i%)dtHdD)Dm35SK_=Tu{Kr5*Qdh$0wWqes`+2f@&Cs%{qL{E zf6npu(Ki3NR(~J0+JgRM6|NsyTsO8#pW#KZ`=vwDG4w3wu=?zpbPI1ue1K8q3%sL9 zht={Htbq?;t$PIP+Iv_ZR;~|VmHIGNq>o_rc?K)ZH(^!zcD56}d=WO@&+|R+>G_`b z^?c8Jd%nMctq3xTTuPNosd6b*E~Uz)Rk^e(msaJ{s$5!?%cyc0RW75-WmLJ0D))&h z_lYX^i7NMrD)$NG{;6vHw_o)N`~AWz;5GE@*PtE0R$hmD9h&iLX#g(iEcbXC0CG<#rxS!*9n!|Vl#0Xk?25T!fp{;M1c1nBx51d`T7S)XVr~4@B zIgHNu2w(>8dDwvx!r8Zna5-%VE9$|0m>H$aVMM5m%d+1(E>q~YjmxYU%LOrx;g)z! zwTQn}E#kUr5x-C^;s#nBzw=YHf9uofETNjPQQqSF=BzZVIEs6xxaMW73gteg>^R|K>d0{onjY z)I+iK7ZRUoJBXhPD``K+EW{z{q?iX{$XB_4C>P^2K0f2)GCum^BQJ(JJ}<`L4DAC` zFp%QzPlbC%xPK+wv%>vr;o>eAKduKuZ0`PCxW5$cP2rvvF7D;<EB5IR{D3s_k}1wFa0#^19Q&sjp2MKz8~REL-CzKO)0+B7>6pparEZ=o<*mo z%cK+Hh`;=X=l(0<;;sX~&BFb$aJLBeC&HZ;?wD{B!sT~g4DE!wd={?^`tW@ImAJ>) zjdE8YpA)!W_yRR=myGF9^Rs;`431 Y*Lm9>e}xp3o=6g{h1W(2WK@a&0qDi_ZU6uP literal 0 HcmV?d00001