From 02d4bbf3ff4c173e32bfae2254ba3979c7e7cba0 Mon Sep 17 00:00:00 2001 From: FlightControl Date: Tue, 13 Dec 2016 13:05:21 +0100 Subject: [PATCH] Getting somewhere, with the new schedulers, the TASK logic works now much better! - Schedulers are stopped when the parent object is destroyed. - Parent objects are garbage cleaned. - Destructors are called. Jippie! Results!!! --- Moose Development/Moose/Core/Base.lua | 4 ++-- Moose Development/Moose/Core/Timer.lua | 11 ++++++----- Moose Development/Moose/Moose.lua | 8 +++++--- .../l10n/DEFAULT/Moose.lua | 2 +- Moose Mission Setup/Moose.lua | 2 +- .../SCH-310 - GC Object Repeat Scheduling.miz | Bin 17605 -> 18246 bytes .../TSK-010 - Task Modelling - SEAD.miz | Bin 28592 -> 28591 bytes 7 files changed, 15 insertions(+), 12 deletions(-) diff --git a/Moose Development/Moose/Core/Base.lua b/Moose Development/Moose/Core/Base.lua index ebbfb67dd..194f44154 100644 --- a/Moose Development/Moose/Core/Base.lua +++ b/Moose Development/Moose/Core/Base.lua @@ -132,7 +132,7 @@ function BASE:_SetDestructor() -- TODO: Okay, this is really technical... -- When you set a proxy to a table to catch __gc, weak tables don't behave like weak... -- Therefore, I am parking this logic until I've properly discussed all this with the community. - --[[ + -- local proxy = newproxy(true) local proxyMeta = getmetatable(proxy) @@ -147,7 +147,7 @@ function BASE:_SetDestructor() -- table is about to be garbage-collected - then the __gc hook -- will be invoked and the destructor called rawset( self, '__proxy', proxy ) - --]] + -- end --- This is the worker method to inherit from a parent class. diff --git a/Moose Development/Moose/Core/Timer.lua b/Moose Development/Moose/Core/Timer.lua index 3a8254e52..662506fc6 100644 --- a/Moose Development/Moose/Core/Timer.lua +++ b/Moose Development/Moose/Core/Timer.lua @@ -69,7 +69,7 @@ function TIMER:AddSchedule( Scheduler, ScheduleFunction, ScheduleArguments, Star self:T3( self.Schedule[Scheduler][self.CallID] ) self.Schedule[Scheduler][self.CallID].CallHandler = function( CallID ) - self:F3( CallID ) + self:F( CallID ) local ErrorHandler = function( errmsg ) env.info( "Error in timer function: " .. errmsg ) @@ -84,15 +84,16 @@ function TIMER:AddSchedule( Scheduler, ScheduleFunction, ScheduleArguments, Star Scheduler = self.PersistentSchedulers[CallID] end - self:T3( { Scheduler = Scheduler } ) + self:T( { Scheduler = Scheduler } ) if Scheduler then local Schedule = self.Schedule[Scheduler][CallID] - self:T3( { Schedule = Schedule } ) + self:T( { Schedule = Schedule } ) local ScheduleObject = Scheduler.TimeEventObject + --local ScheduleObjectName = Scheduler.TimeEventObject:GetNameAndClassID() local ScheduleFunction = Schedule.Function local ScheduleArguments = Schedule.Arguments local Start = Schedule.Start @@ -127,7 +128,7 @@ function TIMER:AddSchedule( Scheduler, ScheduleFunction, ScheduleArguments, Star ( Randomize * Repeat / 2 ) ) + 0.01 - self:T( { ScheduleArguments, "Repeat:", CurrentTime, ScheduleTime } ) + self:T3( { ScheduleArguments, "Repeat:", CurrentTime, ScheduleTime } ) return ScheduleTime -- returns the next time the function needs to be called. else timer.removeFunction( ScheduleID ) @@ -138,7 +139,7 @@ function TIMER:AddSchedule( Scheduler, ScheduleFunction, ScheduleArguments, Star ScheduleID = nil end else - self:E( "Scheduled obscolete call ..." ) + --self:E( "Scheduled obscolete call for CallID: " .. CallID ) end return nil diff --git a/Moose Development/Moose/Moose.lua b/Moose Development/Moose/Moose.lua index 5d79c3bca..b14d40bea 100644 --- a/Moose Development/Moose/Moose.lua +++ b/Moose Development/Moose/Moose.lua @@ -64,9 +64,11 @@ Include.File( "Tasking/Task_A2G" ) --- Declare the event dispatcher based on the EVENT class _EVENTDISPATCHER = EVENT:New() -- Core.Event#EVENT ---- Declare the main database object, which is used internally by the MOOSE classes. -_DATABASE = DATABASE:New() -- Database#DATABASE - --- Declare the timer dispatcher based on the TIMER class _TIMERDISPATCHER = TIMER:New() -- Core.Timer#TIMER +--- Declare the main database object, which is used internally by the MOOSE classes. +_DATABASE = DATABASE:New() -- Database#DATABASE + + + diff --git a/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua b/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua index 696b2b92e..d990a8dfe 100644 --- a/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua +++ b/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua @@ -1,5 +1,5 @@ env.info( '*** MOOSE DYNAMIC INCLUDE START *** ' ) -env.info( 'Moose Generation Timestamp: 20161209_1413' ) +env.info( 'Moose Generation Timestamp: 20161213_1239' ) local base = _G diff --git a/Moose Mission Setup/Moose.lua b/Moose Mission Setup/Moose.lua index 696b2b92e..d990a8dfe 100644 --- a/Moose Mission Setup/Moose.lua +++ b/Moose Mission Setup/Moose.lua @@ -1,5 +1,5 @@ env.info( '*** MOOSE DYNAMIC INCLUDE START *** ' ) -env.info( 'Moose Generation Timestamp: 20161209_1413' ) +env.info( 'Moose Generation Timestamp: 20161213_1239' ) local base = _G diff --git a/Moose Test Missions/SCH - Scheduler/SCH-310 - GC Object Repeat Scheduling/SCH-310 - GC Object Repeat Scheduling.miz b/Moose Test Missions/SCH - Scheduler/SCH-310 - GC Object Repeat Scheduling/SCH-310 - GC Object Repeat Scheduling.miz index af44132dffb05689fb5f27c8bb648c5ce770942f..b1883f6dd5bd1f5771bb2b7764e67d23eef51cc8 100644 GIT binary patch delta 15229 zcmZ{L1y~*1&M0oh-QAty?k>f(NO36cJ~+kQio3f*Dehj}-Q67?=bU%%|KIz*xAx5J zomoj%l4aTXvid?n`=db76lK97&_O^zU_d}Wo-9=*iP!Niykx+t?Gg_<02TVaS&XDn zA?C0h1L1ZcI$JqCt8R@u+m19H2+y*?Kt5={G!^#lJunUp3Kqb)>aCTJiI&Cme9t>D zfDQFBvPjlz)P?mqSbds#gGZYlGHaYXU0>hVT1x?MZPKE1!xZNaH_?D;nR|~B58Q$? z8x)q%ymdiDgY_3%8Gvbe(C{FJBAIPRfxfG z(@48w&j6EuO@+neD$5R4IM29#_E(`J*!!$78)%5etoF~GJ9%g2SBAx$p z>yPe*nRCPI?Y8G{t_O=f&#WeY&PMmMi|)P$hyECQUxQ0ax3Kfs>iT_^PGWCuO(aN% z4^Kp|%Jw6!SvE5hdETun1?jrOh)d(V?i>w;#yae`7wzGX{*zoQvu;Q{I9i;a*Yp?} z2Jup(B?-kqyFs^<2x9}|AdCe3UM$k(=OnABe(q1N1|>99W_-c015y{P5yU^bY0wUM zWx(`lK4;OTnG+PBU)#Zv)ViS3V?g^kuwXio<{)s+gJ*|EFvAG+4<<8b)?9L8OZsD! z`8wKsMk6$X*JsRw@Z#9aAq;C^*%4w%TAG+APiiR#a$kIu`CC4*X2kPD#PgJSzL>@w+v?gi_rQ+oGzY4@ zp!L>HkD6yi{FGw`ZgE~+k)M;r{U_@YC)rlpq!XiFQP?!3qg?;8fzz+f{4&nq1S^wm zk9KVZz_acvYeLXyLHzUA?t-5OJ2f#UuPTM#mKVi%G#kVN$>pZYcb;fratET!LZy@& z7J~1}lH1xT9x+XGauyq>bj~Rj+4v@VjSM@ps`&~`SyDKP(^Dmp;3Z-^R3Sv7_%7W^ z%`Suj#8~iYC}us&aRt)g`VH%wy9EV6Qx#~ifUx0T1T;wuF{Uiapf6HmY%#D|k62D6 z9fnC8l27`~sXr8z3T9_)W#H4uyEMtKufrQw>ee9W8$QYPjNH%(cs4(zOaInzk~{R} ziCUzvHe70FKcU;rjjgdMyn=;0rr7nWl14NeIN6h%w^Jr!eCat>NBZB6UnPhKu2$j3(~vY5w|j9H-` z0N>}uEp!1bOqz(3u!ciugN&`C@9uuQ0rGvKkE;vgcD4gTcl4hYGxFDCy=je4S8RBS zW5(b_OFow~Ca6lpTSd>heD61AD>0BJ1bAy_%9aLHq+0u?ULIH<>2EavT4YGZrdGe$XKJ>&#=J0wAArhG4nxL}Y*2PfT+v%& zO3sCI;~_x!LSa?0hxD;0ApfsT;Y(Ie{6l;@5d&ati#LEWpugUOI-CM{OP+w=kJ6tn4yNy53$_Z#?2!2feoFnxBRcqq!M+^I~RZ2Jk+2 zwyupb&8N-Rt=jk~wWr!1rOg^@=#IM7SvFPbjhD?Ihg*8Kt&ZtyB&YRxIoJHE$mFX$ zUIlIqb#xh%uEXBHR+Q~}IJ2*-E+5~HU6Hoi`_xEf4Q1(#F*0J7m07X_8oG?OW=xOr zb$xrYrYj!JT_~{64Ghop+k9L#Mc< zbWL~Sk<(_LbGGlrp=Rm5`SD>We0Ctq6?pEr(dS%VeLa8smD0hRb?#!d(D<{0vGjWO zMBc;x`7ODr;|p!sn3reWirTU4TXWgs@qKL^cB3(`=Lp!M{Qfgh=JodJBGH@ATT#c` zWrTPJzfKh+mWJ7(=!Ae*tM=MxCg0mbvbVJ`$5tA3mL!L)dS=S02qj_ z(VI05b&T9r`cp*{t@3YX5w`Dg3h3(Abe_{n%ACJHHdX=;*As`Aw{MGNKE>x*r|Y+y zyGzX>NN=wbtEP=hjcayk?yrKW^PI=KS8L@VNIvrK?%%|&S!m7D@7qVCwYfi08ZLXm z;2K%|)V~HlZs;j|ed(O^11qQQ1T0O+ECThw6t&PI5v@Vz@Q{R&vtikl+CUK-iNv2n z6Ked@-<1)B{37_9K|L0})V_!G3Rb^D_ys;R_467*JVzo)c+&VHzv>P;f3m9uiGsAz zifG3bnwoi?&&qxFbQ2srWVL&PrQ{j%@fmEN`Pm4fc+lR*mGf={JhQ&-0|_P((aZ(6 z+0SYEyj7iP2bbtCNcUvd4()FRKTk_{)4B6J+83SYHJhv%eo|780b zR7}z#YM9`ba)g&1uOh46N)Oe#)?&YzhVI8jB&7=<7*i$Jy*C9#Ou&7{G^QWajHw|u z67KhpfW-Oq@nV#08;N}quruBv^Lku3N3+50Tq6bO74PlNy;e&%)p^}{;5r-zM*adx6 zISZ!nn9aTUr9`N|9~nKsMJNFsgpQcNKQ9=pI-(|fN}fijUjhOHkk2;v3_><)>$ez7 zZmF4mzqMfZm5a)N1EUViBv6`MoI@a32#(F+ot3$n4<}E6ZNU*CDh`~q=_nwA%RWf z!klvae8sUcKDp`|S{U3Q>=H6p!E$AEf_lxlD{5v9gn|HF!`+5*%xfC90Bh0wSsFGc z9KqlqN$64!NoPmKd@M;tbCGm*RHh$?M@AhEn#<)1Mvw?lffsV01Z=IC2B4fo(`0-? z2^@@1EPO19kXc&mJ0P}V3rnedqF_WM-g80jmm{7zwY)W-?N>OT&vxGumS{S1ez}wz z7A{r4cK~P&C1<$OakvG3?N?GrL~jctAB<-p$s+3E5RgsoQ)a751R0$1ECfy#PubPM zob8hbRM-QyzZ}TK?~Gxt@=Nx#xLpxGF_@BLRs_6Ry#o}3T$#m2sM~I(h+zGdnOVA2 zB;r$UsQvA+GxdI#MSa&xy_-6?{H)=dF2gesiL6Old5Kr)r2C}ui%~eHV*Ru~uCCIB z_i&`j=H>T3({6?cq_jvFN!*b`jDm)L`(wmrl}H1i)?J@yX=f9Ty~&lZTqS^8qrYZt z^y}`4PMyDc6)eE-C z+wEAazq@rDN{mXSKRVZs5pH7O5Kca8FcVDi=YZ++LwTJ(v1+mnVR^hv{8cA6i6vKGEVctNeE zd5tQj=j4{YrT;l}ogudBLT(6>!0MjW=UN&cJ-p%K1&g;LQ^G|b91Q3dV4bMTD;1r0 z?89X5i>!=1&K{Quh%sMu%GwU*;lWhrQ%0tiS&Y!|!An6(X$rSNLMntnX|lzXxJd(O3#f=H z{plNAKnQd$f@U_2EZt`shX+sSLp#gp^j)rphC3C^Srg@x8}G4kR}@l?Q%Ui_>3*NR zt3Jl-p$qy>?e()Z+QKxkqVnRA?1M9!6m>Rb)R1G#8G!I4U2e!M8N&JLZa3Ga&|hRfo$ zVQl=26q`@!pG}Ni=&xpIj(oRF=AE_0IiZAT$3PdUbv-$NpS~x3;XILC4!9ezWM9Or zj!Q%8_earUQ$HgatLL=w2u0BPhR;M~$JqEYe;XcBF034M zWTne;{`@n8$jB*YNJrAnr?EVRGfO9!N(NgSkNIos50tHhy^(tCSc1d$Ge>8I;dH2o zRENS?COQ`g0Lfh(6TZIkjK}}^xkC863EK#2l`5HxXMe8sl;H-b{B%9?`gfF8S+y}% zIveTSz5EyITEv__uKa44=Lis&*5C1YeOYjfm|yu28MPHU#8UY>nGXj^Lz|1O?NrY2 zX`40eYBmhJ`uxKov4D~0gODsc&_0^6K0R5jIqH05pc@w7uIBJ=-=Hr@QBLO%bt6_T zi**bY=b?<@9UB|&7k*py;Q9!>f^#RFu@`vS+}bJ4M=vEfG?}uQiZXi!8ng<*7l+GB z#VI1XHUXO`~QwaL6K z!(?9rK-KQB3?%JMu=}3bl!L(~H7k@bbFClUPK8G>Bs^oY=S(uWyNKP~v27#7NTp~n zoDUp6N>p-9rs9t;^jI;^BN?NTAK75Fw=xF((%#!eXDCPaA%i&5A-8TDreBECI(q!? z7!jji&ugVj65(^0+Vu4w>%(7*RV)Ph2Y~Ydk(5qu%?pLUga1e1q^=4V6cX`YQIs*b zzF$J9@yxW;0L6fP@Hy7Pdo@=RER`W-`}ECG*4f$fW&Zu6tLx)3puP3&ndp6IdZerj zOVAA^Q?Tvnp(pE1(0700r)kfwu1x1=fVWL7 zM>)Pob32S*l(k@or?=PQ;Xxt{k4dXw@ehvwHZ-g=pK7O&XOKMB;4YB#YWDE86q;8^$ ziAVv8bk|M*=Ms;PXX|$C^|oVW?d`cmc2Pv08*1B_aozj1Z2lDWl;YHS&)>4ekngA&dmbCK%jRQ~F0ExoiU~$;k zh@WOD=AzbV_vZU#*hTRd>+ zCFX?N0M)w;ccBrI231h>m4rLMJ~Rcdr!ioo?!fGAen5Gd5@Xx0fiUz<| zevp9SNuDXiG>#@3a*XSfgIhhaH#mOQ7U<5N8NiO|^`&IaCWG>dz-NBgJj7PT-ih>M zgR1ujMTi4UQts=^DKZjL!JZ_>3B+9Eg*olUH zffC^M7mwv>7V~dH#Vi{b@C$vufQ)I}7c@Zv@Jw8^g)Wd~X8mPk6a3~c!o}<{znVT= z`iecpa5=UUVPpyjdoX{uKw<*2)o$V?NW;!-k{@))VnkrWHN)M+0tEhCiJx)>$?XO! z?%1MEFn$ym#9@nlmjkJ!(2+cMh#`lz@DFg>AtoZzMU3kc&f`04=<)$BfQ7pueDbUS zDFzKV#5hhR^II=i3Jew{DV0TH1R>%uand9x;(R&K2mwn~Uv+ngP`N9iLDWD#P!R!t z#i&?tnB*cOMZZZ?2lEIxcgVmK{}}i8T}YV6Ls*h86oDspAUdHf)#V7ayh>83;6uh) z6;6}ItNY=tCdvM!G}LJ5Kmr-$E%u?Z;)#=DahwdaNs#}RatyI#Qjdr`52Q)hUy$Pn z(Uk;76Gtb9ij+gJ7CqdL?*XIciv`&-a7Pf3YQ>V9*gOUoc^`I7_(9^Q0ObrBa6}cr zp`>`FR>O1jo|w!Z`AFWY>w;&{{iatd0SVfDMBaXAjJIUrLqyU?wB;pFt7s zZH<>;F6doAZKNP!un64<4K*pNp&-&C^DUyhQze&`pW*YRqH09R(m5@%!FBT|wdQWD z(-27^q3*_9{xR~I-M5O`Qrccd1wEHE=7%#R1+#M>$0b9buc5r=O=4ddH|3*hcUV1F z34_O$p-n^~`VN4Gl-b-IjhR@AZy;0_UV)1wS4s@3p$AdG)E&_YBk~Obvqk{5aB$&| z8GApxrZP@fGR|^7aajw58_)I`Pl6N?Wv-fDseSH6e!q*kd8({Mcjip<1g4QRbrD*2 zUw<=;!5;nLYU+LE{|86V-BV*NE0{Y@8 zW-8upAyzz)+@4}@&`EMZkh79TYm^xM_lp;QsW^A>iwvVk{GQ09e?@^sA{Ldz!{%!#}}`BISEoJ zv82N0u`z&nxvk1ihn>m{t$=|zLfGHLsoiHAL&q)IQvMXuxN`7p(!-rn%#z2!@B7fL2ma_&)R)BOn zGL8=Ac1DG|BJa~StQjAmp+?o1sl#AUJi}Fo=TQQh!6>MMP)*5YkZ~zgQI4tLR0{L& z9&kTX&>tpjd`hgTk5*RO^H+v-RHks#-bL)wQ!3U9EK)yHlk$(5t(fzmsP74ZFdY#< zm#GfK=|c@P4i)ZwO6^urDV-N|moWt|X*{Ya-W2_wO2lS8xf@bunybueFEJ*T zV@evP$*GoIV(QS=(T|J$Rhe~49~XxkDv=hj6CUg3W=GRyuan1-EtZZlhSBKCC>dDlEXh}#? za${Io!ZhazBvr<(<|$3vwV{%e6t|?t1AS?g=m%4|sLXPy%(|0mX1N@sKY3X0g*Y!z zr0wTr50+4}MX!g59Hw&RndMFbtSq6Lzzy^5sLL6CU9h3_gqZ$>6<8zVzc^8Q3A4_j$KwiOLdd7<7=>nLFJ=Z0YVY)Sk&bWxGKuCcaqQw7 z`B+!EbmqCJZ1xh9VkG8OrRsqJ6b6-Z@% zMhe-VTl*|DA=dAGTQnuDz%K(AIy=)d%c}H$wPURb(*!OK=-YOT<@vq%9raVYS!gJ| z`0Ee|g7S+aK6y|A+8%{0E^Z#CX&!cKSVOo)+X<<#T%{Ql=JXvqk+Pn4qucj6iXN2X z2dUIIa&V+`U(gFPweDBNq0nVLD4#qiCCg=6yMuyK{xNu?m>-SW?I_aB=-owt3}ezy zSnD03lI*+^Q=j+yt*viN7jGRGTg!rPcO4(z&-wcm5Mujw-uM3Ywk-I1_HjQl0k2y~ z>u(dl>t!02-KATMq73z2!en%oow@lrlmt!i@Ip^lCE(@=IDVekSjhFB6nwkB-6nu! zN8s_gx_dotIJl5ijz;2UnKC z4?{AF#65^NQ zC4&dOeppOif;tI=77855R263GRS04IWDiwDa>Dkn)G?owC2(REDk7ceVb;U*ggW?b zw+6n7HtsrEBcX*e>2IeX!_~xnA9&sG4yT1dumijQ3>PU*|M`?nhmq+)`wL8$`jTFRf6^YN)#jV=%|PP0)viPHX(7R6r6C(F*43#m zp>HOE-S~l$EscIPxYQyj$3Z4RHPsDjn9O)49!Q%g#1J0=yKIk4iBxDbJnIIsO1hEv z#!Jkk{a}j^jp&4iV)`drk}$<+M_j<+Lyz$;L1U_%yaQwFm#vFV?(qIE`zx$m#00EOY& zn(G#`#q>`%xTDjD``4&TH+r)S!6wsiB35WhG<|X37V!;RZD>wgOT5NK#}l7L`R^s| z8S%3}%rw3o;l(Qm`y8c~7hN=zuwWXZ9Iteirn}^JrsIh& z17k^r>wdQUTih2ur_XH}))taE8&?Vb{uDV4jc7uCOmcI}ACS=Y`t9}$J|baTl7HX} zKdS?lC}zz-G(>31yVL<@um_o-P2s|XlGA6GJ1R%Ji}ryvvQ77BB0|^(YG2G>lFDm& z{9JBpWY#A7{-&7<@2kE!y?0sZB|mL_O1SZOqQCJI8Ya1c?@L>Ag%<9iT^2`Pv6So^ z(ar=VKe}OINdrvrVxy9}P0Wh-NQ=T5A6@h;dF*Vq!&}M^!7q6m!4o&!_$i8(Msil+ zEiUlv*`w7C(b>l<1@gzgg^?Fw=J2ihgjVQ!!fi-gN3r&l0BZ>(l>wGN4Y#E1j zqcKIPGJ)WMC0d`{KnE6HZbG_LLb@&RgG2J4t=V-~n(lK(CWkdpD966zqVcol-+a%A z{wN$qYY;gF-n2pgM6 z6)xyK0@O;P28Ig?jc5QdI-!ptalj@~3YRATetIV4MNFl{hS zS=Ep_tqMWHkDoMm8#gtXFy+r1A0{%KFtt|WL5I*xPhP6;`x9%D`~ku9j?45QUET!6mpK z>7F1mTGGkkbcg$|v5AvhBG|I|6CO7`2NU;$;UnjZUmL?$>2xCjV}9%hpL;n?WG#@K zk12RYEBwp`Voj!F*=@43E)y|E>eT5+I13?BjzRwxTC{WjmwMSe+lH(u9e^~Z4t^1o z5oP6G0kx4izXZBcr)?oyBGZYG)d1bRT~~Wphs!w${q?bs?>MdYMqaqr!xzb0C9e

?pI%-WwT5s*G=9dM1;T5bvcW?h{P#}$RVNiYsQ!ht z`#6=!1l1|X*<${4H+^E){(VmEc5Llo?1wIpe6)^i<3ID1e01T$0Zr%&E;h+XOtQ`~ zM$t~A0U~zLXxTS&{Kq_~4f`&lNXIwxn-?X#i-X0yZ{gIeZfy5iKYb+!@FEL2Emwqy z>`cP?wN%)Kt9(NL(#kySZ><({|5nOtit9?8p%d%ldp}%a0_#H_020A(bYrSo%+r@Q z$()VBT4@{V$(N3aZQLVA$tPC+Z>5<2Q3~O2rHn)RV+kxle^(!}jkn}XIg0Z7KAV~s z(+1!vm?PN@z(y9LeF%bfQ8scsZwuHjzrD_mmEAW@Wa;XK61@oiXB0{h#{v}LUs0&^ zu{lSNcw%%iK=^w%GrB<2hpfdfywvn=Og!5{)-`5tlj(v2vFdf;!614FDCrD3})3|CkV6lNqUEFXh1X0g^BR- zh{Dy=ld&;VzWEuCoU9!^Tw!HBkW*XX+G-{iYjap8gvukn&psy(zorb?qdE}FH(7w zL!#D?0c=BPDgX%DnlOx=j%L4dQ!OGeEizTV3m1h3FFX`dRF*JW`>J;?Qg~NGBqbUM z{n8FIv1BdNimFuW}qAX?>q1<^Ia-`xZAuk@!bFTeD4{1Xg0pfB6Q zjNZ5YOvAW10)_bV5eb5*wW7FKv=N@@1SY2?pn4&J+$3t#wds2iWSixh0}$dkF&3#> zqCtt~0^Njs0!}@Fmzp#yxpFzbGSSO>^}Uvsg~Y6*Su9yQkq95#$4%jVKGNAwt{Fk_ ze3HkgUBqX~FFCc8b;_s?s~|E2(8KjE+P^S;rlLp z6EaQO_gE6uhbr$;CG}(T%mcJw(M~ykt$>$D!Y-`;7`E|va5=!gMyYqjbQE;kA~hq0vBvu>Ei&7DcgDwIiT9*^MjFw}`9xMCnc`;?nrq*~s*c zzxO`z4zp%C)O9kkS*Ed$@a2e&>g64B3qS1T-uU9_ z*0*5FSAUtK_N3oNt5kao3PN>s?u9u%tcrKM3P`DVoY%s2Nw?NKZGqKoC8!kZXRab~ z>W~h>zKLsmj2hXIBFcVhb9Q9dm%q|L=a}l&x^oXZ`oL%>6C$Z-#h*UhRbzy@9fhtoBVf5>$ic7!U@?OGG;OAQ395 zz!%XzBIM+DO5Yx=xX|Sgwm&}N*acs`3P|Ay36&jp=Q=r2egp~pa4rke{7iDW(E)5* zcnX0(QrIqItL$&UM<=mNx7?zN#rSULJuMIWEceJ zX*w-x?fN6&uZeD7*x?IWo(odPSq?S&ve?wW3@f)vY1)k?yLlu=$Yc`U{W3g8Kx3== zr0IV4o!?D;>m)#m(AJM2y`lM;mmQ$$KeUL%x9QpW;azLiWSsA0eSrvstMv5_5x);l zIuYA8ih5QIbDTcyuNS3#ZSDPfW8#K4;)X(1^V!VA77T|pY1qc?w^idDS0& z5o|dA#M<0Mxy0K1@91$2J_2Hr_5MaMf#wJU2;|y*m)LO)QQOmVitEqA4%u~$(@!Wc z@@3E{59&A_WR|lq`3fgsK9aLxDCV*iSZt{-tMJ$OUHtRexC1#p-`#*|PTo(>Y4gNs zomOts%@ti0v)8z>xfuAIG3FTUT4nLkjIyvv+WeE9Q({IC=8oI?2ZYvOL}xa2oZl9( z!G-kl1aG3%0eJV3_QeI1{=U1x?bYD@^pb=Bp0sCca>J z1*!A`307aZ_+98s7zwV{2R`gCx^fI5uep7JXy2(^Ao9nck~I$KKy+`fXi=-zc9_6B ze(AMfdl+mnu0XK=j*-{rXq6OqZAX74k&WwK?UK5HYwx|^Ao<{Ex7_7TVZJ~(pNTR5 z=J-`7ZrS1Ng?oQZf1EuzzGCXIiGxwRLT@c&@}hOd+oWMIPOO&U7+q3y+K-E3ngxgR z^vUF5EMa~vJ%Shj=gU5ygY;GQz_W5&aeJH$ggEB;ZYXLxJN^gCPlskltF-s-y*hF0 zDlDn~)R(`OHHm)PDl+i63ueafmq0c$w1`}mAlIfF41Nbvx(a7HQL5&&({b+(SxSHV z%N#5^)<_DEa3qRiyk52!XR#~2u8RFO1iP?M#vK^DeSinR1ZfhAHcjJiu>?K6f^g^{ zx;+zW9!C80R+!C^jHieua%GB5lz7aOd)(3JNph=Y$T`=GKk?Mq@N+2U;6 zG$p9om3gcH6~l`)x}Q#VG+2!J4 zB+W}#^&+Wv{O$6EgbnC^5MOyC0B9dvOH~e(Pdim+MME?+oU$>qAwpwH7G(n`R zbW#2K@Z^uel}z78x&B{}l=e&{&qb=o!eJg#$1fQM{D+gZz#5Eb<5; zCve9eJP49cEgzn8;L1?797!R-BNS_oma?cG(Ym%`70tSzAik0{~AzZ49wVL z91glAf}sSJO&%x0;ExODwUaDs(HQxYXc}f4rmx2*ZE}AQH8-a`I?kJ#hwWKj9?w1k zkh+c!9U--qSiR~V=h13x@T>u~ZzDRFw-$xdVDnSM7A97^nGXFZ?W|FqpU0n`ENr?y zUgKJtOo~pOJzQ_;f6sooJPUsZ`486$#BzC*ARh_@BF0H9Mh6_+~PuR zpQw_uCv5bkX9b47Awh^pA&}D;d=9B#&@kfE#M5#ZQkF9P{`TA$3$i>Ib29pkTf0IX zXrH$vQ5nl09Dn0_zL*GMeR^G#;{KJ}8UTR@Ox^cm^>df@OE#rf(~FG@XR|Fz7}goM z>cnD`$n4auRwZ^t2lci1UmUvNZiGuv_(D&>&!=iQEdmG-{@rrW$WIhYrv@d+0WqU$ z8;LkB9Fh>tUk!^-r88>d)Iq+(yh_{@sG^`{vtU=#BSj&MVBaiihNam#G_C+?F3FW+OfrjT@j#q8T<_H#ZwZw7E`BI{>p=1XdESo z&XRa4$C|v@Q-REKC^*ygP=nc*;NWUbCS0MZ8J07oC@;kSc+b-`K&%d>9u=cl&XpIF zEF(x^6_9lFRL}3UB`4H6Vygy{N%KlSI$VSb&YWBC;G>c{mCAcgY8qDy0m_j!kaChZ z7zYS}mCOgTi^%AFw~KlT9tol=KblLV;PK2B$<{p7oungI3~V#<9Vj7sL~kS}Dec7d zwZ$GqVtq7ph00M%Rn^N$XeUPc!OObWTy)yN#W|tXsvOf#Uv43CzmqgnXr&bptmt4S zv;9kDcqk>JnUO908dVYb216r6H*i6fs}Z1Ls~FyGDZJZUydM4Bn4+B8a)qsSZ*gQT zCPv=(z`>YdQ>L~>w}9RexoDg9sUsYfcfWVz&?m2}9^2;G{`2uIqPXat+$wKX3NELp zP5t=gi%5lX08EAcsm-DRs#0ffdb80y2`ns=iLs(uEi7m(2#2UOy#lWF{Nac<5-HG< zsZ#!u4AJvQpRcxA75Kx%{q#;zx}$T$$8CW^gfa4%uwasb`=G_yuCZo>tghg#`w5g} zJ8F<=WJ;$_YT0M{O;v9Q?#ZWWr9~`hyiuB;9KF@>L8&B0_D3-ltLx&kmyi7vgIbnB zYQC)WlZPfVi`RhYxiiZ-g*%^^E+p{gIeKnWX4)r)0Da^6e7?)x_C_9$UQ2IB&|z7M zp-p2UhHkD%Hv@_$t4~HB3MT81?H(pjN+{KR=M6TUT ztjm=XWQ&_<$?fA+YdcrLlr_Zt-=Awlu7w4Q^-l#OOklj^4w~#D?O-8xB-DV5%^a-J z^L?ati}u=;%(aKRy|X3HnliUvjx`%DRf__Eaeq&%X$6>@OkSWwZ2ld@~-yrFmqPb z*4qUstG4SFty?C<7xaH9ngQs-6ZDM4biX?Ir2M27Ie$^DnN3wcLG5|3YS38@OHWFc zc@8rfVEBzWL-Z?Iy-i@5rD_64^!_>DcGav_~vnr4r^p_isqO(`4-?7WG^6!<2)LX zi1PZHCtpTbKX)&}#u3Q=K3o5LR=c!%ug~~xf!k*$PR9Av(^H#{CVx7UPB@aE>0IbL}PW38eCM>avt#YV$QO z$gt=)@tsyljBr~UmpA~$y&r+n`}Iy!#B*tN$qt`OYyP(a`4RRC--fFKde?i!;%_Si z#`mn=Urm(;SMy4B{5gMh$&L~JeXe{pHEofIG^2w_RdXyeVjyoW{W;d# z&Y+CCdRwi`$!vlY?pAxB_CYh@)(PKQA+sn5*SWA#&1YNEzFG5F-#zwsFN;FKaESv`EFD6McT?ak@EYT1F$mazb~tsYkZ=r(Fk^O()K`%B#Low^+{> z25XW!$4?=|a<1%XF|Fk3Rhlm2>hYaHvae7BTnS=gO{Q)2kF4#UPdnC7&QJQ9D=L40mpt`izi&PMwmK2D^NJmSFr)E0>lyGHy)31e*4r0*x=6e#q+ zu-Rh4VnhGpl`RYzmuj9Y#|B1%42D1(Gb+|*oQrbM0O!OlD4Eq%7(FW5wv#ip-*D9P zp2hi5{}=d|yyl92#)L~0NRfZF5dcSiJ;~^9{{1g`a8-#@LtKVL$&kTFCbPkY`06DI zasSdO7=19_-8`D_-))I{{+rhk-;Is!?Z`<*Yr$T|{c`2mT}1*~g(pirLG>G$qAcjg zDE;sAmA+yapdj%+yg2m#UH|t{n~woa6axZ6{4uWoDu12J1OcIfiU$>=CI45LOxj#e zd=3HxMD8Q$@Gtg%m46U*QQ|v93IC1wPc9+|h=V@}$cGR3clig=1T+4N82Lwx?eC+X z@w%dTV5`*e3OG0_|1H(uk>n2|GjI?P%>UpaPYVKK#lmdEBqlB)tR|<*ByVf$Xu@da z{O!MZ#6ODQfj!g3V~Ps>TeQCepdajLKTL%6A8Z|&;+KR;{*4$pF6Qg-fsp)hWB&(Y z8go362cX!tioZxQ3U4sO7cip(VyGw8j5}e@f7Tg_zTY!%{ckaCZ%vyh+ zK4(?;uBW=XSDn49*M52+2CP3E3{aGTfW!oWgJ3}*5Gg1gNaX$bE?NkIKrrt;HWp4! z7IwC0U-V;FKA{5}3I-2!U|HQs#-juID9ex^19WB#-Da)gp}{{o*cehxODbn_33qu> zDb>?i8c&bpw7I4FTqX2w*}d9xi7LZk1=Ks=^d4@X^wYjQGpA%#4+12SDcit&xu-p? zleWX5HF}cRw?o1mQbT`O?zNH4l!4vhj3Ir8toRS)nggPaKfFX;6<%=<-VOuq$0aw##xj+19tNG9WD4?bUAL zfC=O7Ni3!KL1vLyaHTPyz2mRu8dT$yRWsYOc(!vwd~nkA2o6-Q&V3Wk1J}j6C1-#m zy!E9?OXZ)y%nx6`~$9f3ODw4v{l4 z;&!|?xMH2yW8gNR$Yjv7B!cdxY#Bn1AP=juyARoKQRHkvMP)+cO93o3+WL ze_pesdB)5=>2`9NV*{>5Ehkrx9!4O@7CF6jE65ju5SD<)uG*v}>OL%+MdWJgGSe3^ z`yAHaF<0W$vewtO=tFBM-|vGJ*w5fRG#N`~%d-9ZQo1F+p(BsjsH<}rAPg!LFHA-h z<f=nn-lKN?+1b_k8@)yQPN8py|1Kl|cFBr-L3&96jEtET5IDCwap2 zmpopx-iuctyF6+-mouYR7dN+79(fl(7Lx}4;z6H1IY>d`kuh*KzGWr)_J`$~^Jwmc zf*ZFR7~Wy;Lk@gv0ZTGHm8&VWu$Z#a{nHvZua&wlebcJ3cXB@^l0S!)>}t4Rfyj1- zXkAI`S!u)EI9dY(da3zvx_oR|{``-hB3n)?5JxFMqWy>2lvg>XZ;B#Yju(C|QR}-% z$%3)^+YEi=7(1=7QrE>#DdJibw-4}_Hj3vmnI8#*MU@}6F3QEOu#vBFDJHeXyxB9^ zUBiz1AUJH)*dD4*z4v)$iv_*TKVTzkIwmVJ9%o?&lJna7x>nAyL5;v~^5fra zJPaC{LOx-(&d}yvAFQ1s_+Xym2X=LHzUbUqBiUTt-K0L^cl2ymV~EJ1ws_%cUtopD z05R215T!C9qqD{>)^l8hzerGGmeT2PcPb~STbg>02brZ3?82pA0an83b=DLbbW><0 zJ%&CH{36;fFCGDC)3pN7RaO;Okd5M29JKr;N-?LXA77bnHmss(&z58#^(d$R9#5z|J9qp4-&XY_lmtQ^k_-%JH>+c)(W2%oLe$vs5m)Y)G$%sF@LV8;FfYpL~C79ln zI{U4Z{Vw7V9M~ z6oY*>gC1QJqfQ#1{1))j*w5bJ8ls1b^r-c|u%JuoCx1&~KVMjJ7x*OQ3bwu;pR@tW zp?r!uhHNaa)(uyoJT_7ox7M`*C-&CP_X1d$B?b1b_PtzUGp>*ChIQTzuNuX0dE57G zDfUU(k{qD_HJ$+-VjAYzY;L4rW6bf+T4WdK-+2$>zZ0JUb>YCP#1JM*KuM;T88dj} z`2*wfC^P{(4=1YkVN-z-kMZd59%66lz2x5(<(&OxTZp=>r+JJz zLD%qsL#Ur|J|gvaS{nQQW%QiaMqV z<#j&%;Zv!oeqt_h0~ZMPmAc1T_|-dh6XCxzz{E1l#b2}F&6Q{FP8HE)g%#bY~-{3u$Z|DTz44Pt=^lAa>B4_Yw@mLC9le~xl z8Y#vP*$-opC4V_F6|%}Wm;Vu-w>A0lA~3(NTbxkh$&(%h!_jPHXE&*0acXiRY-Ke; zFLxtBfR(G}BA8u#HX^4~R;Sjgv`;VHVEkixLsqT5kJYWTcHuXRhPbh_r$>2bxiR;m z_~N3Tb*0*}+>>3Z`^Hj6%~*283UmV}(6DdDR5m9#x1*x-aNFdJeUkiXBQwFiw4m~e zZ@QcoXr{61*ygL)p^r@1PvInbL5ZBqoj54%9k!NECF)d>(Ah zy{@Ba_NCJh|NaT^I_vXLAFPVFdUo5Je7-f~@6vU6$yvSdt}Wgw32j(7g!LBzAVo;u zYbtoKa-PpW@|lc3GAgY9d)0w=CWXo%Lj`}YKQPUyp?JjpQipV;o65(0$N!}@R4gQ^ zoM-e8m`p#6m?6Jo_6iVK$@g#<)MOTmX_orS3J z{a-cwCvfbh4;qgsuBX5}%x|{dP{6sdKJVv4Tus3S3Bm5FlBS0u4~bIzWn9JIn3#tY zC0gkHiab<;$Dtn|`(MNU3n2P$fO4MVe*Qm=f1!u}LAUbVoUgY6vCD4y%^P+w`{@rWzh5X-H#qjYLy%o1F%g$w8>!G>;R37~N0OYPIe znQn0l2S%v}M?r*5xxn2Zs2WW55jy;PaAdK788Emt^c=0`E)4YQLT`;gAe+2bd)?`GjUmH~L-Vb-u2 zVEcMfbfr5rqW1+Q>AZ~y^o54SDz6OivV2CPrYSUj%d(eVRR!A#fWjXKt?9&w3`39*4jtT#`L~9 zAq@ULAA4Xjnsy**Mf3}uxfIYVjTjBiO?B1ZvDnH_=4~-FgO2{2su1@|`p7KIrXaYT z-xek3&?&*@`U?(eO`0!$`El702$QZVV?&mf&*?;0OinvlsJq+){763h8*CA!)2~|a zgslbWtiVnqLj#10P8TgyU57l#fV!ELyv5IXh;E~xNjAPBz*W6()EE7R|u%$8~zEk7>kwkN&T1MVaVu~ zj~tPsk(PF|oU-R`XvQkG%f!>)D^m{OS3->@Kd3pg^s+YWu~c8oF0I6cDMr-G>9lsp zm;Tf+*8L+s=KHMkq^kxjannFc-V>mh?b+jyl=^mcG2zc>oUVKHv$x=}7P`b7a9Ss4 z{I2~ydZLCTfhI+pOW|hCOG&;}6@geO%_B}q-t9eA(k(UGklp#~{xhYzQ&jSE!dKjD zQJuYW>9B7jR?R5NEl?q`g)fX~tOnNi-+~xT#U>G8UK(|g(~)k0)P;Lkye2VU-RSiQ ziPl5T_0r=A`lII#*Mn{PYfh;(8q9XX79~1=ICKMrlDqo*$E)LVjWPlGG&SFM>Qr^;w`REtzO_rRMxV@w#>v}f-W zScO4}?OlE`Kc~m|BHb%I)z0Id5f)bqSJ35W1<4{z+I$?Kpz!kbl?ynY%t+q5yP>&v zLusCf)E(ccill0Owz)`~rP0*k9iso(#SEQFLxLXlOV7?8;Nmj5r0cM9t9gmFJ=qPbex9hgoB^k-1JLj1sP&i&#p%6VD zG<8|c`9c^e2n)4=4%)W@Nj=UC(x3$re7@pLiVq#r#1~jXvf&xe`{>OiZX~C9tuJ>% zP?ZdCr7w3dxz;NwcQmiFtwOSv8z3*H>Sq37VK4&Fk2Q;+Ebc~`Q#JDbq%m|$`Ry~+ zv8{TNAk~3Ltv6ylnllyTB0N`h$0OCPaGI;+U>UZ!Wb7mqW?MD{>auaM1hk%=LlmOp zL^^28X}Xl|{L(XeYssm;%!f#7j;w{d+b)|n@a@Y=+c{#*TW()_L$&eMqQeRS$q(z8 zGg4dt!@qHQOx=7;B_>@WTxZtd!GMkj3aIWLUE=w=siZR>V7a3aafmZ>?h>O4nk{|0 z55D1f!#a7MZO*t{P+dH+dDi4zk?*e?z>B0Jr6PS3gi&gCC~?;*yvi+7gSUPAz;_8x8`V{Qz~p!P4ml4 zH;IudgN&72zI>ec6k?W1H*1R7iZkuVhmY`~SlKotYXUzWl?@T!23J$PwEQ+cL(L$r z3zj7F5YpYc%JtE<#?CA7xqN3r-$jAdndZ2!stvw4lcal&pR-qx#zB zzik~x&WBpA;mZE*v7q_+z1|hYD9qS~6~ThsqBXVdt&`HFq1E;w!QO4dXJc(IV7V=q z?I-`?jVHgRgc9M;Qx6U;#*$i1Ig%VxvcBP67BHd<8f+iqW<%|+bhNBTC z)bG-bXk`SBnK3_{Nnc)(AdYtobB+g!gPDM8nwjHnDc373O6T_rhN(%b5F}F`-qm72 z7o2Kk{AxOSRjYo1n4*>;8UJjX0{2MR_N6x4m+#)%WE$gBapeP8zz(jaJb?eb7FEaZ zK;A=~jScssqq}ky)VW|^iJkU##_@ux6U`& zmJANxv41BSF#pbh8(({5?inleO~_ z6VPD&-FHrXN3K8irc(2_roMIS?Kx+z*Vo76-YWVv*low&O_^$KF1L<)9eTMME174u zudS_14Eq(=dvdoAO1c+7HTKG}VO^HS)4iqc$Hj`#$C6)qRW+#xM}gPZ;;p6Y9U0lV zOzNrgmao;Vn(JeF$DyW?;}zqlh8jL9KKG}U8M+q>mVMjv)@ApA3kPuPbZgm>e(}+R zdu8JOe)(hpi8szj){}xqFvL+yJH1-n*ns~+}s48XANJ^ ztvgrB3|1_gcxoop8#s@~&z?!vUj@o4KV6^QI%-rg-MFSUEMAyUu~-hf-l;=bvSpv? z^DU09&;Sq5%ek*lgEaKV!wt8`h7OOEYd6E8ZJB$wr7dZNYRXqYP zPb5b_cO;p( zUw=gPOed+jgk@Bo^+uIpAvt*(zNR~hOQ9+*AOzlaH<+8+-0L$S>MiisBx%+q;M~KTTDJk^@M)JY zjCQqErx}!slh>KYFH@%hgG=oBCxq@35WA4-{eT%QxLq*0T!Z71RA2=U5+x(;2U`)m zYwjw3;Q)-eamW!Z_?KSy7X@%(8KE;oo_p8E+I4DxYST7LZjFg=dQ6`(Z}$~7YKeM( zHr_;jmmfKFDwrt}^26;EOXgK<)Y8#Ai&0Wjkj7pgQGUpz%8_BkcZ?CCA=H_8Re-?D z#WH3X(u}JkH4+{Oh=RgHV8wp#Sc-|-SnM980190TVPGkjZ6T4$7NFc{38&5bTz}-9 z@%nDTy3V_+pk#bMgLzm}GEc)vp6-c6 z0B0#79D+A?Z=Tvjq%T;oxC#LR>m;ir6R%4fub&)?zIWe!7R}fQh*=}1Tp{Pc|HS%e1vwgnQ29(G#8z+vn+f)P?f0!kLwIiY59^g+ldW#1zD)xeJ{!C*1h1^X@7wr@AGoe#kWVjN!y^H;svhs>j7fm&J`0mXyAA_H3?Q`?)AMNX5it(u5LKWM?D zH#ANGu~?LcT-3ZM*!oxaDa@L3N~kzawA1ITwX~p~I5F2~{%KkX$cz1Rmg|V57;@v> zP%J7q5n<%?-Y8Ii|7FFLJkAA+A}~55K!i*ilNqig+x8@eD>?b$$$W}u$jwizaOOOQ z`N3KAI|Srip&8cvOJL}C?ncS6tK&ZlAS*ZecPh}P^iqq_1Uo)nNdoX)&GbUG_SjPPJ(lB4}@eKq_I$WkE6F{uA5hKxV zU^Y*Q%M_(KQ$o8=MNRH2cs>O$l-7N@h})yypsRT|D31GccT<&pj{xYy>zNE|XUjo}CR*W91{`zmtj9`ov5~#n1XX8GutA z${%cf#qIIW6uQ2z5dN}LIWj_AHjtHr7m1r$3|^lS8vLLqe#ofSSPfKur%88!uRj-! zyiDsOKcxWwid%>Hl7kH}v}oEp5bB5_b&Y*=5HgryLpO7nE^w!P@2=Z4?CB4Pgu+2! zL=K4DdLUx_%3k!iRFM=sff_jk`KjeA&x;oG7ue#P&-jC;WEnFMSEn#lluhR$)Hp2% z!y|DcEz=5L0R+4#WZ?QaG9lBxT$wXwK>QPX%Qr;zm7>`#2GC2JjA3 z+P0&wDXN+>%PYP#PLj|$LR75{wc`7Bga9R3X?T5a?)c^}N-n`8kTC zK>|F?p27US>L117v^%$3UvFo8`xC3*ZQ*R`=lH%Jka#<^KFx=Qt~}4G z-&A(^WGet3Z+mCYgFLlNkHgPQ7sR&feAwBq``?-VOrI<^+mWnqbaZ+>%o|0!4~&ro ztwf@l>)&6uJ+GX&>FeshZsXXU>uq>@-0vI3WpR9PYGFDh8edz<3_|kfwA2hER!&rjUQhS8E?orLo}ctds+k0nhy_A)iW($j!J5-_e8k=!mJb$F6|%wd zF^PFqIs(l;>TU4pyv?4Sb@7KBa_^>5a%KPUe!FG57?u3)a#-4Yanae?@lwrZFTXU56PJRB;0y9WUI6B1Ixggr z#Sd{|KAH*2;Ugd!v37S+^J#a^JH&tg09P>@Ozx|Y7oxjSLLYFa zNb&M4s|5&oV!-4KgaVCG>ysvyQoi7JbCZYnq%lA{BWpryJL21!LR7PC!XdiH`k%_U z;{Lg{&_6T~GH2PuLTrfy11t>7bEySlz!ak4R(n9B%(l@MtaR}t&Iv-Y_h zsv1iIhS31zX63L|$FOiEcNhj?A3uzR{>(0^Cn4sDNhX2y2Fm#fK)g?S$Bjz=qkfz8 z4jbM?phmb*9U+)28EG2?Nj{BV#|0vzhTrTGZFG;WkOQJti4x0Dh7-pOl`bqU=)^!cRwYjb(>ygGN%|GFbn9*v zG%8J2fMG~WIswI6YML0JqY_6$JCy8+c_+?`=6`b$O#JBTq_@Qs2If&#(G79?y<#ymmkgeR zR>%H|qNbFCv`VFzcwTuW9j$-Ghm_!&a)|zn+9eHaHtO(O6}S&G+eJ-F7&s~h>;tIn z=Qk3OvRduuz?=m+BsCkEe|0;ognkg7KN@{7S_{1u#a2WVm5-^}m>*R#+7qjh7A9pw z3W%@;nf_)?gnf}@o=fR#DqL{FkEs&{CvGM6$O5#JJxI+ur3pk_8|fZKObMGHydP-v z9cV@LRw%@C+G_3|1vT6$P^zYC5aRmImNq1ewTOt@rhxH5XHm85MH;_mg$x*|yt{kSLt zr{BkufRk`MWV(@Io|H29#Jdap!-yu+Nz0LCG?*rvLZ9`TNfO{ zCw;|~PK&3_pP?nwFgX*8|IoE=an*PcgZXE%>QWazw90GvT8!OnQLPr^33sRALV{ zR*{aIv_wYXXVq^hSY_@+mNk-P-g;l}2EQfJxzAbzYP{Q-W-^fI4wCK>`!@1RCiYYY zSXQJKl^6-3Lc@5Xrw-&f>4L(;*mss4dMSpnoN#?pIY%M+F-FYcDV$S+#9RHn(YwVD=?N z$ra<&i6Xym(w1m{)pE$szm0T=0}18zcXwRoLR%iWEk&k=`r}bQDnaAO4S(A>tw?8~ z9$7w-|5CJ>Rp1~rU7qd?y=VMg`P44udmB}0lZ?70wWHbsAwR0m7CfiQ6lqIcI>sQxzDxBv4+P7+d$nc2pxgxB-Z@$ z2~%RS504+?13!k5+5$2EQfL8U{IEz}k(r_XBm+WtAGPjv_XBO8h|enc0i@h+Cmy!U zeuN&Nt$Nr*j@95#3@r0HhZ25OI7m_EWP zj!EVNu~5Po2X~qUH*CSRSU((UhwG!1>1`GHOJNDmB=k<Ps&D z>wb`{jrJwvg*()C&?h~*kM{+<%Q4|goC28Q!&a>gq~ZgB&3!3`Dic3@$k5@uHJibW zY}Pbe-3%Mcd!Y6d)}193Hs2hcq_0e1rkJO_3nqt(<>DqfQ*12b(L`lkH=EyW5?oqm z(@iD5ve3v(E&C3eEnIE3oHge&ds0svrfVLhW0u#u7EBFn_s+68NKN*2<_rfcf7WQJ zMZ-AQl?CQ}3%YR|JmuWx#;$%tc(62Pz?tj{U0UK(zW%x2-acaZeb@E-cxB^lzw7m3 z-0tnB&F=ML{_XW{MexskGw`sJ`+7Bh(fN}5_UDDOW^?pBU)oR>+n_k-UVcLh-A<6*Q7vQJ z@k_a`_@FHlj{Ss^!j7gSDEh;pb5E(oePEMmewA@<4K3{KoN_9cR6Le=mhcPB*v%xj zy{)UutL4?>QK(Z!&VU!&nQE%WN=bI2+Ly=T4cDdpV#+sl*pV(D04}8@$6&|FSdQ??A3$(ql4A7d&_sGl4gWy3F4uzZIKmjM5 zk~;C_8n7~$1S3ij3I#h%6YoeX42>{|aRLsVh(%cwkpp^=k*Gcug8VB&O+FuYu3;Z; z2231)2oBxL%kP9a>G`%84wnS#V~D04V0k8towd?_oOZh2uz8}I?TfTP^2D&VE>Y|u zxPrC_54k=c;$ya#tiWYE1su8#R?aZ1%xP~^oZ80_AEf1SZBRKAI@&UsvV8 z-+H-`xJ%(Cz@WiwMF#1Icpv&nVuPLD1OI?s`q1)@U~1$e+OGY%4u&uSTt}BKufx#p zK-x!)027umy?N||T?gbFc87cwwZ_RGb<$yG+z0!O5Pd`w9z)y;_QYRNH}{>Y1G2nx z3OGd%s3ts;CZ|v5N`v_i`Z4X+OCo$XiXG*RDnx{I^j7ovON;QfK_jcsKq5ta+=NTJ85m}NJJp8c(F)wr*co2 z6t%=<3(0Wi+DSea5Exav54A+=|K;blW6lJsW&d8CWvzWhv zBP5jVfgRR97qT*-9nbqFC#dCyvTr)EHe1uh&@&@ST8n5QLpCe(SKn)49$8wVIVQ}a zP8`K|F+2DgKd?fL##`Dxi_6Qp@@HBdovF`}3OJL^{_zffXvYQE%6wMCEf-_U>t8A2 zP3JP%VSiIUOO=xz7z55QKvxx7yr?y zQC-W_ca)BqNaRrvvkc?>-SQ2ow7mRTjIYATTXsfkuF)qV@_S$_veF{noCWG;!NmK@ zy!5x7M>)f}5aq`ty~oF?uwy9k-x=qy$=mDc-*Oax5Dg~m0%|sO)r==sl$+gU z<-c-a@gkE=KdO(M6EbTYAbnaqN|@$#5vcR+=$Aas!kMCp#p~{ zY3%fvZHwr_B}2m%zd+f#vB{foHwVg8?=F5K{xIoTiFig4gh(_MO8sFntr8CgjPXzz zihK6v47V`7`1rbwb#ZX{P{{H11_&y_SP zp*Q)HBPs$P02J_5EzjzJ_Ki_tJ$d~rt#pY7XXXZHz292t`$DBX4B71OYs*$T%dN=h zzQCQ`PGlG+y^qg)j$0*Ll~sMqo*gRjVddn-ELwg44o!U@`AD=h*(^&vPuNeURb6=9 zbFNJwDK$%dAMHric1&sJ;9uf0p{K!lVh(B|KH$BaS!yTIoL%WsslM+q^P{S5N62jw zXR;>D$Y}Vgl4^9O{a1#S40c8RD+G(daE`!B&$W>+pV^3~Qp5A6$8fRm^JYvbtx$v>RnQW`OvRz&LH`CR>Yj z+KM%k8$l$k#g&6#i&WjWu$wX=bifJtCPE0^3E`$E;qM%M?S(93)|Lr~^-F0j8W2fF zk+rOH4u=$XGvEL^K;9HhOuBaHzDD1aoG7?TP#8flQ}XDc+2hXrtJ?{`2zT$hXlA?t|!9X&~>z;D}2RlLZ7U>o;Hco_E)oRDW}Awm@)Aht~4{;>=u?S|_lj5{MGvX(1UZ&&KjVxZh6x}qr zr^}Z7ysS3|(j`D?pdClxmT{b{7H)Z&6W0$jXJX0l;ti^W1C-{#iEcOOW}1CHa_flga(5Zm0p1bo%Ga95YVnWIxVBnt46Ru5;@flL7!`||aJ zjX`qtUzk2nsxxGAOUtdYg+zZ_Z=2_Z-N zKTp*`LR2$83#s54p?U|!Gks+@DI{Tzfcl^TR=R44y{drMsnbUXX+1{4kNLr9$lsBn zG55lP96<{Ze-ubWH*L z_$*utd4Gv^UpPG!R$Xb)>a)uhGh9|eM491>xQ*RgTsJd(^g|kHZhCoEs1>(Ed8MhH zW6cfWj(a~oXdK2xsb|)xP*FFUbxje5^LLGauH6yvs`@5tLgsdaEr4TRP5n!pff9I& zv*MB$h(}5Z35yTX%BcF$3ETV7dA35HqWZBZ|K)hk)=sJ}*u&g>fw`@sgEBMZIm2D{ z<`E*Lbc_Mo$ZsTF%X{!EE)0S=>Fy9jZm}c08@nu4Z@jW{$6z^HZTMFP;YgW3J4SKK zNsjrzx3Or=I_nsAnK*dVKFbn+*@uy?e3=)l21vpBw}4?)u?YIA65ob_S_k|XF&9@mC?GfE`CzTOrkkjT4<9%NRPFoWPWusE*`ZI?xBW`7Ydn##UjoiK zL_bLy7Lw-$@9kIA(BM$lG0AuC)!A-eC4alWjUUD-{XN|9*VPvq_M%< z{X#qU;sQdO+UorF@CFjK{3xTS;toK&n#6RVUyi?@KxllzUXQ~2b2q+I_rC4|in9$U z*x`c_XV#~ZB{uQ4oRKYS6?y7aDT^L}@~G8=m3V*E!pbp%hFqh;lOD^eB`=EWXou*0 zr9_R6bEl16p&GR~5_#wQv7JPDmTB%OdZt{p=&5!|XDmnf?GCCHpNdS6`*J!bzNU@e z_a(EVo(+uxtKb!w(2ZiUl`Ym44+1Lh27gT*7dMd?WdN$$GIq0j>{~n`uN0u-JOYs&aA;zDz5>WOX@o&slG(^XD#mEN~ljRr;@R zWB7WhTPy6E1p`411woasKIi7vf}Iz=))$07a9t{M7Do@y6V^ZIQ0a~i6MnCoJnL|w z6H(Pk(4|_-ShosP0aIwJ+A0gGn*Rf(Ck56p%ome^X%p7xaJhqC^*QRB$BB#87e4e|Rj3)#3!;tyqbp z;zF|jOat~v$e8!t9g258(tppF6%PbbF>t2wMT^T+2!2yrrdNPp9^JVg}VkgA%(eyM+t zRxG7ersL1AR_s6IR3DOxrJCAk>=M{g=Ok=c2^Q2k}I!!dh#y2f-O?7Ppv;xkq>4PP( ztONt%)lw`|n_10rdi8eY6x=u!`B9cbGiXCsBmds+vgn_i^e?BY?3_8pYt&3v9Q%G2 zhm%C06h|x~!~-cRGk>`2@BI9kaI-EKtzy^|wvGy(dPSZ_1|!;_6~9R_J^00000 Do|M;5 delta 461 zcmV;;0W$ut-vO}S0kB&t1)R;+b9$3tDlvcBZ44%OaN3D5t*qT)43Vr&W+6=^O?Mgl z?@Q8dR@Z@-gqQcd@5}e{g4u_kGr~RS4F&^PMNu5W{AE2|EoZP?&mN!WA;ih_DFL1D zK_46&AB$F;mlzh9VS!}M86