From 4e45189e08599f28796dba98b90ccefd7b2a38bf Mon Sep 17 00:00:00 2001 From: NoblezDomain Date: Tue, 6 Oct 2026 16:09:08 -0400 Subject: [PATCH] fix(relationship-tracker): 0.6.3 match the built-in Tracker Panel sections Marinara's August UI pass (139e4811 here, Engine #5509) gave package tracker sections the same collapsible header as the built-in trackers. Relationship Tracker joined the catalog later, so it still drew its own card with a large title, which a user reported on Engine 2.5.0. - Tracker Panel: the section uses the built-in header (chevron, icon, uppercase title), drops its own card, remembers being collapsed, and shows a spinner while the tracker runs. Collapsing does not re-render, so unsaved editor text survives. - Desktop Trackers window: the host drawer already shows the title and arrow, so the package header is left out there. - The toolbar tile wears the host's toolbarButtonClass like Quartermaster, Beholder and Memory Nag; presses pass through to the drawer header. Runtime payloads come from the Relationship Tracker source tree, where 172 regression tests pass. No Marinara Engine changes; the Engine range and Capability API are unchanged. Co-Authored-By: Claude Opus 5.5 --- artifacts/relationship-tracker-0.6.3.zip | Bin 0 -> 206379 bytes catalog/catalog.json | 12 +- catalog/notes.json | 6 + catalog/v2/catalog.json | 12 +- catalog/v2/notes.json | 6 + catalog/v3/catalog.json | 12 +- catalog/v3/notes.json | 6 + packages/relationship-tracker/CHANGELOG.md | 5 + packages/relationship-tracker/README.md | 1 + packages/relationship-tracker/client.js | 155 +++++++++++++++++--- packages/relationship-tracker/manifest.json | 6 +- 11 files changed, 177 insertions(+), 44 deletions(-) create mode 100644 artifacts/relationship-tracker-0.6.3.zip diff --git a/artifacts/relationship-tracker-0.6.3.zip b/artifacts/relationship-tracker-0.6.3.zip new file mode 100644 index 0000000000000000000000000000000000000000..b1d4fb1a43e53d21ee5607abb419bfdc5132b83b GIT binary patch literal 206379 zcmeFaNpoCDwkDQluQ#3Dk{0TnOwuKkdJT4wk(dXvGAR&5RpKQF2w+xsiNr$&B5sgT z8Hj*lAd`;|X1(f_R&A1Lp}ovxl9|>r=?`eHRa>vxwA5Cut-kLJKHPgF01nkJ-;ici zMBMAw{rK^7j-SboAASEPfA1fCq5s`lKK#FT{(k2leDMYU_wV81MSIxqm6K`f50laG z{g*|tH0iu9FWSE=$CLhOxOA^ryThlQ_GSCLKj=^2?OpcqluhyYqWy=_7(Z9ph`;+o z{k?(TSMufgtUs9Uy=wP|lWF|09KPxg%Q(u?T5F@Vv1Hxo+x^kSMW5d+ZTHsKcDBm( zt<~MFvc29ZH+NUh*UmR~H#*(2x4OI1-sx>`taO&bsQoU#8<&Ij6w{cz?qA-Wj@zA| z%CU^GG;Cj#Y;l~lD4wS+-UJLRt+cjU>-t@{oOH(hOLof7<%>!2di1uKzAlT->o&TW z;>)5v>=y4vvvF~WU!!5W=#}N5XrGT})1qv5UKb;LFm4rl-L8DP_o^IDi~g|Kf8CxI zC*^e7AHJFt|K?x(%R*l1p9Y~n>W#+5@n}$94%+XEi&3|1DU^yo0O-rq7icpaU$lQd z__;HfP5N&H6C16S)=EU+PyHcL_(IpUP3ZXYRMr$f#_uji{o!;H2az`Xy`+B$N%@LS z$}teim-<)h;tvyl*BSKLJKpJE_%OoJ8DXsc`An8E4mKH#WNd{Gls7gsWXmixY3qLX zvOO#Z>=?5Mbkge&O2VxDD7w(wWqbOX0M%!Lmy_4+waqQQUhnm`x?4Nl&DHJga&>cS zW3#}+lBuB@-_Y;SeedON+f_49J8-QC^Xb$Umi=kKNh z$NKj6nt&+GQ`iC~5Y^C^0kpl@#h7Jhb9-m|d}n)oYjbmVr`KKE-R_p>o%7wbjq}~@ z&8?lyjop=<)s1p(dwa9f*=)DZ+vnT8a?_S10cdp%fG>t<+MbrldS(D^?ryKFt*>sc zlxthy)$>&h**;(GZmz7Yb~bz4-L2j3=GN*;cVn&BTi@B*UG0>+Tbu3fW)BTkdv$=; zw%69T76NoR9$j2c=Rvfwy0y8|UfXH6S9aG|S9%zEeP?yGySB2q*4f>~(zQ3s?n-xi zt-W#H2IS|v=jYv>t@Vxd^)5iKL$tNKLvd#UuVKxE0>RGnK!QA5+t}S&+1*;(=(IOh z%Wf9}t?aI@l&h<28}05n7V^BevA)(_Yp-DbYin5Jjm_SA*=w(!ck3Xn@2ssah6!S- z{|4fG9!%}^-Bl1xx3j(i@?Pm|t$=p7dY#RU-tOjhxz=m%bb1?|?X7a9+}zmQIS1f7 zI{>+hm0eqFf@ybk@w&b4Po|^sT!_jZFwov;uWj%4RyTLM>s!6;_6nxoS?O(_Z}rYM z*W0_@^PS$tCf2F5)&WuNtoF9oSGGGFot1VSOW@S)#k6h0`|e~Bjjw=I*ShVEPN(dx zbUWSkwf1hOjgj&HE34r8&PKc3*n+HBD|c4f9lt@%iS)P@4N}Hot?$Fa=@-7 zEt1aa#`#*eTwmSXY;T=!uWfIgudG8Vbh|5C+v^+W<>q;}+gmHow|CA<2%vR*Q-b)n zc2*k%!q&>_V#M{;++6K#t)Elg zuH&Eeb4Y!NoSiPIb9=43TZfbIFBEJMvrdmUMQUebWp#C@-0pyx0YZ0sb#1q^yR+8Y zhDa;7Hp>lc604i%>ziw!ld{uW-Pl-N-|23&cS~$%4dP{WZOecK$f~9QsEhuDdTiX{ zbxXfHo(-pcsDP$$LUEhk9hYtIcS-k7NqFr8&Cet$@wNqj}hOhkNa@al} zl--B#9%0#M11f>N_Fz&PhN0Z^>EZAXWoNoKIl=#{;+;0?K>c`yeS->_>3ZHhRpPzD zVDxr?tp)E@%L6i8TQqerAMW{RG!TLjDiYKQ7_O9~qo62ap#k9Ycb76tBbT$j08CJ| zXY^sOPWpermYd-@)bQt{pGu+7)vcA4@M2nCfPUN4*_a>1=iU))3m`Lrg@b^Mztde5 zFGzCUoxU{V1n&|AQgc}{{%v?8iULsFeLNbM=cCb22UN&q(U!%izEwhb zI#NZq`qozNQG42M0AgHr+5-^Elk#Ge4ldFOidQP7KBKIMZbhhDZg#OWGrE> z@jF;{L+lCYy8~;6y-o|$Xo}GgUA8CaRm4d_yA7R;25-O%1-W-}rvP^h(Fgvb?Z~G6 z;S3tu9e@PeiQl&gNw>T#@qZX&A~ayVbqEQ%yThJmV}PN*+TE@_y%=%0JB1AXrcXX( zk7f5&=@TK;cO7aHx9x#YJ%|akFHIDi-l6h6dR?#Z%)RSk55lF*xWAnTIGbsfWI}q_192fjRnVKyLW! zEqEROz{^3>1jFAcy8ZTG^a^6N=$0LDkUT`6gdTr`jnFGlJRZX#12SxLh`Z!4d@z`{ zG2sy?Cy19~GHhQ?UXMUlLdQbBfm6LlQA0c%8_u-vF zNxe{7mlRs0+Z;A`&j)BEapecQ(xR^?0l2rJZ|LRA1$gQI5H zVX*sRaYxvCL1tY@7?a+hr+t_KkQTNrsCePt3i|9*C zNgIG+>j0O%1C-DZu|OBli2HYAXRly3T~aF%rAc^kEZZt%5#%&T3j}iCw4A9aRG@dW zuL^I5B@m$<*T0}%-zpxBM67~Xv6o;UgYWuPAtGx6UCj6o6ylP~c7OmO`G|W0{`G~D ziFV(Cs{0+Vr;X4b_Na(KDhHaP!Uz45(jP$v9rdCF9UTvB(j#<_l>@delm<#&fk^4XYfB(t<`agXA#TWeF zmoRdp2fKg4Nr*9Zw738L-fs`i4j<8CIX>8XbhdYNc=o%4UtZ~gEw#SJf|?im{+9_{&@!>hs3~FC z!at@EO*l&0A|1z_uNQd5n$8bn@vX- zpwEuKJyy?05qox)5m#{1x8e_wn9)w`&L&UVLu_p0q&kl3H1(*@au1^*wj6)`X7y{x8u%aY@t?zP)@rg;>G1=q+rP(J|0dXrz(_B_MZN*_xSAi;PKvbaQ?}6hesa^^Ely+ z$=8T<&)S3PaK{HHKRh}3BMe6)9R9@$#=bi|dH(G9_h&yGJ)$(Di2H~YHqN*^6V9oQ zaRiz9>?vgA;mP5{!^elufB&)L7!Q3-Ux5byt7F+}`H&wuA0KDo5`CsI!n%A3_l|9D z;9hY@-A|smJo=`f!j-;J(Y%jsS>n>zJH5@9Jy;Ih&7mz~mz(aBIVHib`f)D!gs5I<-^x;gz_KNDcO@p>o#z!L=@10Uk8 zgA!Kdu|yF*Cx{Z4_;AQn69DaDujH~qMSjqtO8o??DmMAar@{zbzI#`kpTQoc69?{2 z?Vf(nTtycX$K+d~@@;Z01^7H(l}I##9uIEo^=q8u8FB_W|xb?WGl;+<|w!`wn3jed7&`j%ZZHuf*eWMRiT%0+g}~p>oCeda#hR zax+MlU|~Y-?;=tV)$=p=^({e74d6A-e-m+_>Xhdb1dLJaUyv~djZMzpK4?*keS+sivB4kSk=}}L zxGjVjTk)rV8oGJV(vY9<=|mdRVTLBcoO^Vfw)zwKciG2oskJKK9CjzS(+(@|T7C5t zPL`vJkNpD^H{IViD>IMcu3?)wa1hKxaaF;Y$Z5z%?!VWhUys(4i7be>x^esq3CvE@M zL6j9d?B1sN$^T3Ni}U2ii$6M*UD?4Ut76%sJ6j%*J`4%+d+uz*hTu~(ET=nDwlP&F zq9ZBlQl0~a%{S1O1*kh=JA$Xrz46gCluZ+Oa?`)k@sXOF_{SS88&VyO!87lZy}@ws zba4j0xKNSQn~=(1rC=Z=N*cJCnr7mw9lEIjZG8c9pGA%QWJy4di-tIDA*~YPXZax_ z>1BIpI5cjd|8~+EAV(F^p$Fp5owWXdWYXoOmqX}~_e|r4_!h=h?h1Sh$~+oVtuBw4 z&>8luNcjQgNYCQigyo$|wija4hQ_{5i})*!K?cdkSJU2D%GN#tkTF!!RM{wO0<9Kw z1L>@UbfaI=A~#mfO) zn-*r0O(sPy_an3i@ye^PO4^X@s?3UL8l6es@Fy)Jni(zUetpTt+{CTRL@g-3{ieWH zdArbt*juQ@JZR~Df2TRSyZFy1wp(Je6!3*Sq3e~QpSSHXw6^8uEf?R9ONN5W?mcwo zy}*a8qZ@xquVHrtvJCKsdE9Oh#o+~Y9ef@4tO^InZV3AK#ZbIoXL3fIM=B=X>2F`; zB=u3!m65sW0@f%!^l7wt!mS}P!ZqEwFERGg?0#HMK@iXAerAyCv_5!uZ=k|tAo1rR zws5REK!9JmP)JEj|?Ho?6{@~7>PnGPzzYZ&L_s{~9lpVY6){X>yq+IQw| z%^+-;JmT>5VMr9?y^Er_nAxyyz<*Ob(@crpxGevoTz)TF0Aiq+amiHzn=?5{<1~iL zR{maRiioW^&mlb!QmTKGzt?ZF<16X`}oZ@j-c9*?^$8DiIkJ>hv~#kX#6gC9GkvXM8q~}2MABV&1>D@AKUTf zcN0FamfG1^+_!7EA*8;R9Qvt&WN+%p?0a`>W z#>bzIj*k>^!NGxD?6aauX7*WdM00jVee{!%R1*S!JSqXpS!h|pv@6V$OWBMDgj^ZsgtH zM4muzyGG7>aQFkrMwD6#t-`!<3AxPM#OKjY6Om`Uhnae){Pov`y9^b`X!lHvPh~D&E9KiyVyk)URJE*bxLSWL7s$k)uM_?? z+wXI&(`OKW^>wO9!J`26-{hsL$-w%eee{-Pt~bxj`T*$%N!)C{<=(uyseRL>`eY5v z0J)x^ui)b3nTKBg=X=GEk`|fS>d1%u5#9mgbMZQa^iPKCBo9b+AblAP^_X#0GuP7( z;AW6x7|;M}+KgxgOgy2l0Re9F6BI~m2rh#$k9$nY<=eM|awpCN^*Vd9h8VIOmd6im z`ONf640N3WAhHxQZamdF$LR0;30K-M-?jsw#tzdbO-Und79!UvM;m>1X_ukxHdWCqIl zQ6A($q7cqqdoqLboMDfdLHRlLfBXOb7yojk`CLr2HzB`m1Z@J*PCchkDl!#oA>GSv+oa|KB@sh=a%M!qng4}WsFA$zuEiY z@$<7IWCR~P-9I>c{OsBH4{<8t?8(8&363V5pug44%2!YJ{#l+o{CMvnlB^#eJpHXC zh3~9f_rarsll|kvBj!5C&rk{j+3Jc_o!R#Xzb61MAZaQUy69?^gWrc*ya1U$3{E1Z z!3;JzfR1VgIDm%Kt;aaNeU7-x6HCBL-%j`a3@B1;^hIjS@ew??3R9Myoq`4w^FT{E z-g9WelZXC9h(`yI@T>lroXXV)+37@mq)OJ{-D5eYi)R6#kTdVVRIz|VD)VpmWefeAqio6>T`)NZ{>+z+K)pf0%}}>3^~T2?BTG~xR2AhGLk$feyvZCKXP{! z86#{|d>fwe(Mp(UXTUSu8Mr*Y*MYu;Bj|i-6UhMROrJB6IQy(VCq0?B1UO_4$QDJl zflj&n^~=exzJ4_W5{sqVEu>suEHkrZ31Ualk2-SgOT@)rl|ScWRQh?*`X|47@aJE> zzgoWimoHwPzI=JA-M)PJ)t_>+iz%Eufq8@zWk~y5=HEEXHfZC}AY^fWhP;~hQA^=U zW9WmQFPDE@{`0?l@#imJUcP^P#s7bLb#{9DtM>_b(%J2+ifcpCmGAX#R}SI>GY7)-sFCIAkS&XYlKP6@>aC7-@Fm!(&n1lzuSjVMd8Y>ity zi6#R;S<^m$CEG(#$>d?0P7ySlRK7imh5ZgElUcc(2qa|C;2f~z5UBv*q>zS4jOuD~ zf|!d?t`biAy?`yc5Zi?;xFtF0P4xvw+)<`t`VQ1#`Ep;sXx)17Z~poJc>2}Xvlc35 zOnr)`XX>{I^5`LZNOwu!E-rZjK@YCR&KTiM08cY{pR_N5H}8}_TO6y_#QYA6NFce` z&yI#ptfYmHoPf3 zQ1NhHwa>B^M4N(U5J>PidD*_tIie^C<2f`d6Nn; zd?pT>x6l=eR!|%ZWG4beAFw0UVXe|v4{zC?_r`fpi2V3MPUzk?v0N_x*RJyUfJ)X&F zhNAvit_9h4s`|3(m{@MsYS8JEH*h>4eGhsSfPMt8vEfx=^>k>vTLmILqi0Ji>SE)t zqJDi}zMJ^SkmQoJn!%ug42l}Erm!-Wy7yD~4DuOg^wV@pn-vX!7syxkUQd&ToS1f* zifsSTpFv1jBbDD6l+|{+<;42vQnAyF9#o8`Nu?5Yqz9!T06)}ZUPXRUK<{(;a$=9qPlTciliJqvICgcF7CeM z?3vvnOiG-89Ej#Uh?JH9s8ck@Pz@@qJqtJlg&M`bFC=4AEB3($5%L83Llg&6vbVj{ zOI+*0BB-6l2htMDl=2+N!kik|bhI?K8Uwayk=Fh7og(uI+_XPo$%<**LJ`Ad?-vJ* z68DO;Ywm7{n1m_pM;vKKC+^8xPiGhBC;;A{971(R4tyM8o~PnAHie+eE_yeI{AAMnC!Wx7|w$)`D$Jh$sTO9*g9?S4vG*- zNe$Q&(XxTVDKXG!7sRbg-2;Knz~Mp7m(R!m!6;F>QW}*#9C9v-hR_ltfTq%)`XLF3 zJ9@MZOb{&XMQ%ri#gKO2Ya|In9;9}tYFf~)%0Z9E`E;9w=YS8g^Mp9lCmW`5W%Qcl zE|XsuE3$MC*i|x5b(-WjLnX(`_3h=a7r9prc?RVC=!!xGNvNeMs-e!;S>l3m&@lO_Z8FqJ1}z{FQ1 zNa`N4Ggj)Th4~j^l3H9U^m^E3Yzn89`s3K2&~5$*L!7!=WnP2^Op7o}`VQME*;{w4 z<75Vyj@ia29XR}H$Z}hdXtN=!VZK5s!$={%g<;QSy+j;$VbQ97?_K0JAmOS7myrq+ zjz~+2XLpyZ^Rocj8Oq+OBw?$VBxQwqs{46VFrD-WOM;`f<8S+PPH1i+-#i-*vor z@LSQ=G<5D^*U?e)6>-KP5TpZF+BjO;@C-=9WRuILrC1bCu&<2Ih&apI%6wc;Ow}n! zQOAG!0m#%mSE+WTy{Kd`j;Q+5g&oqKT3Os7;SQbr^}|CGL{Kv8#V}H{9EiqO2UPKF6>@Ka}cgS_v^7KuJZmBUMbB2}-nFuOF8d5#&$_57?HZY%XUS z;XajJNQi(Z9ugrb&-AqnTX`+d^mT%UN~7eBHqFpcX`H>&<~dPU+UGC%L1nu$vtx1q zeRz_TwT-q!gCtJ&QF@Qe<|HeqF%eF(FU9h#B4h9NyZ4qrnTBQ0bf8n+{Ls>YZ#O}r z$|z9bfNw41K^WFLL%28l{ELLT%slZz% z3WoFjUD4a@m-z;gEC=xrU}sE$M&1D27tq);pCeo5kr9n1VE6xORmDS^!cpIz8M30S z+pvl>d&T+aN&q!a%tQbPOBk?+x0p%v#MCvWCvt%4IAM?ldQ&qEnev)+5p~##9;KsY z{OAcjf^nk@x9hrxG~>{l`3YbdJ$pOMWH*qS^UKn0S@Q?kAo7R`Ca{_c1DwW}`FoI8 ztC(xKjGC<%%uNOBPBAZn3z)8(XhK*or0OgoK>^3v#i^)YFP20OK_g!n^M^n0MOJFR zp?y8%e;O1w#kX)5uw0p-0)}`sHKIh%(B_RU3E2qby$2z&wS4{J<@n|B)FVssT8v9= zXkLtO9RV&QTt93=_+UW1uTZN~sv_VAx#Q=U3jLWMtNiKeo8e68iuQoX}!%8IKA_=B3>i z4<9l}8@8j=hprMsbf~#fKEs$a^%)9HB;GT^0@s<;S~UZC-p8b8>Fb8cb?y+&PG|=k z1%>Gv3cSKvOtv8`Bx-oXSt^PQ2z@E730aOt5re_jBa2yI6q(+9}#m1#A+6CE=17EqHiA&`3Q#P`ES6&;MBCdh5yh0ZZZ(Zp$leeLTPMlQWTR?ZlKsi>-4Q-NP1NZtKlxQ3vM)e@6 zucu)+|H#bPhHh`**g3KkIH2?w@6>4|&T*pBP6AnGPZtwp-qcAkd#Xg3J`#OC@a}N} zLq+jzSd}!zh5H8cA)G3OOcN?d$Fy{GDd@+-;$|Is;sLutXb+uLTx~DXPAZ#J^DA*1 zMwL>46k4(|0-Do_D-S#A!y|w?DiS;ha>i zXTlekR?&eXoSVI{cx!~+N>8P$ECn3YSAk6~3)SKL1mjo-gZ?X~f}e;IB9ggLYLe{!ZkS=Zzm>4xe$rcBY(mI9Ni&HiJ zDFi-@{1`jSRlDk7c>qmKsq5fYDITcUd$YT|UNH!GU#>ev?dVh#}I=FboS>n)cA> z7@m%@dR@z2*)!ddO-6*OpE&R?BHD<7DE(9-7DvIp$h`nU*jtR^=Tf!4cU>o5pP7+v zAj<4%PS8*h=TL0;dR~K@lQg7_O~?fw_aW#m`NUNwPT22@(>xB6QoG2~C_@jy@_{r^ z>|axblV?pF10iT)vRU<2VwEE^q7_F4gqCtefu;Vc^Go*`Oi|9ss5gaW&l82)=E$#_ z1+kFZqfrM}UJRj9aQ>m%s!<*?8sh=ME4c{;CA`eIH^Q>dm`dIdBI)2T=HgP7RyZ_e z4Ib{c+V@rnY5 zd`;wKt$D2&oAbIM!ilO zVk_`%g98$yk=nWF-kgs>9a@1cfsP9!VcpGlV zMUU`u#Y7%U;*ncNn8GtX<9H!|hvLC&`y&TjrH`ldDDQbbk)HZ<7m0w5|I@`}qErRR zPFTp%;w;mq9x3^@SiyGgweXC?rJDG@cRW!XrC)QW*HVSPq`2ZtOy&3$7C3woEJt>w zP^rCWc~XEqw@M-V)sNu)H`s_6z%fxDz2YsE(ZbkC@4oX3h7$7t62IPQqw((+SQFQ@ zyC=N%uj{ow8=1%DV&DjWFmXYZl&YLi~Uj}d4@evjQeQ%Hv zY7b+9i#6?}VlvMJ9`lDMf4hnH>i8EzK#WnSmkNQaL^C zV}+*ei%XMdkD$ga<5cwM@Z{NvWCVB-6Wt4BB53Q22`$+$Z~Hx!=%`HkOPW~;lXPt! z{yOnRAm4P~Q+l&wP~kEyqQICRwIV_numfFBj`#{JrFv0!kEN=8%K9m^W~E3ZUllA3 zP5-GKu(hfA78Nn8-NC;D(?d{#+Nl;CJ`SvFoj_k#W(J2_hbZVPwHsrHs_11MQiQp? zIunlAC`8@PXA^{$C@V6N1zH4QOG(u(gwvyA{-5>L|ugPI(fM| zH7rNUvKuSAhH4`{<1RI7lEvamG;t3Uvy%oURf>Gyx&YAOM>WhT5l8o**b4avy zqmL0!md2Ub7PYm=h|RHxho(r+nMFdo(M(E)$;ACc6vE__K<>V=)xR`a2+J!wkVRdu)Ugz%w z?MoE-54TfPZ0~qASGtkmQn2iByDwR?#vd#aJQk6S6B0%Od=-=0c7gfgLD(wDbvpqhF+$byEE> z?ZC3$loP#+1(G+2^!y9mv2)q_8H6;+wK7oH+39h0f^p+5Th>S{I!SMwuCwHaJ9P!( zqCu$yma?B2tRKO^*msfy|FA~1PHz`yWj z(S0n(YwM4Z>TnuV#R7b)-TMZF+7wP)Nm?KFFF6&)l)h$xnJlT!l-Y0Kkb361b(NRV zLV2?KbLJ2^FrX8Nh|hDbm}@EWxj~E09ozuG)WaV$0{x>Wp9Y$}=1eijFhP;in(vD& zKT^{LZg>hiBA%$q=#~!eW%LcFUY_v6>UBd9>&&Xy5YhRUh@bPz+{p2O&(PtrVlo_>(e`yPZC?p}-y;-dJHC{z3~ zbW4-|i?qthDrhD^zA#Xsko~`W`_w1#w@4FJqx4Dr&?0sqIFVV{ASjd;gM#7izu@Ayna!yC_P!^~H2a__v{?&F0(Ynp ziQlLb+3j;jtB8gq6dR;pN~0Qtl87-TV7X_(kE$Xg257^!9a&MQ{TY-c>&U$qOq@#h z^0-h<;mvpuS~6!sWG~hsQ*=PE2OGM9bm!M8Ny4WBd4(*R_l$Jpii*+vO4JPB zL+a3{_)a*b8+b4s<_Ox1MJJR6KHDbHpt1g);BU6qqTv6WmcuXH zZuq!LM6T3)w!Klx9AbxR6zwS8f^*j>k+{4pf|>$8X!aG+4I@_kndG)i$TP{j(iURA zp>1kJa`6;2R1|Z+f6BOWdTUO;TDlM1C~wWNntsTA&vR5I0F%88+e`M;ibmqgTB(VN zy{jI8FoQ&so@h_0%=%^QSHAWBEwV6RFy|TYYFW7B%(jPWn!GCJ_;y~zROqEC%*I3j zKbD;jrG$`J1t6@@);)-q6EXNRz7G(yx48#2Bg0yIE2-2Qm*roScKnXA zhyy5ELiUdSY!GhxVs4^7I?x6HDU;RVsmp_Ol>8Y!O|j30B!cQy zRR8H0|KY#=?mznC3;yp*Ttx+D#LXGJi>iMiC!CYxknR@185^gGdQpS_=vBh|@3G_x>J;!atliVqZbY~0?sZ9D|knj*E6;;Rd zlYAnq5v;6b1I2* zLP;R6k0TX;5|W}vQ##OdP=2zeIG^Nh67atjJL6JS z11qM^yF`%VsicR{A3u^SUBXo_3TS9y=n^+qkSx*<{Da<&H)8SdywPots~n}rR_Lv5 zHwf`i9ybgxy({5k#uu_J6%eV7)SzoCTkE@J9WOnRwTo;OBK#3@$hV+Ac)SUVh-9Y`W{u0LOBUvf&+N9+ZgT)Jk5qCP*JDm+$(tpV+mF!t4r+3U5N= z*{M~@YvX7^AVThjFPF|X$^c8k;R>!Dny1I7fe%EG+Q+FF0I3;ZQjDjmMU>t7#?=H0 zdF8#achjB%NsnEnVU)1HQ0yf0{g`Pc-&CfTzR_uUf{F&9IdGVkP=cJJOjf%Rx_3I8 zT;hh|^10?jrnLb=Z)l0jcJ!hv%d5a{9zLsXT`BThd=qutv0UYds3zP|`1*Z$a+zE< zNWR$di#lG25B|?AmZUOKy&6%Yyv8L4BCn~lr%DX&*AO$ui9luW9HFe}#b!u-a)D~E zeJ0H2mBYVTRQV@M*AOX?ny;Enp}gf4J7okSTR^JRuLLp1?E6ty6R(ct%YXDHtN75)>qSV?)y*nug&Fq;xXiL)!VTbx zB+C{mP%qrzw<-TV>?^vyfg$(_f{t&6rcpNVarvs1j(((<ATVg6fl+g4RW~yt0A(4*$q`Yt3Dx zIN=dx>FlcbH~;*<#g7C+D{>MDFmT;dQbu$}m{2j!bNd`bk7V^+^$I=Ulf)r1kxB-B zD%7pUIDqVNb&m@-*R<@CjOaDT!cg*YTQ8T7%_fWemK+M>h*Ximqp`|pasEN}r{bAg>yJ3B(o-Dudx zKb=zVL|o=^Ej;r4`@B@2I8zZyH4_K;c!9ku;G||$S31**Jm_6~KKU9|nzr!UVS*-a z^VV7&E@edS0EPvh21X!$G*L?aTBzZrt0pt9mS6j9>Yh+U6|{g(RZiTZb^8(%ZUAte z{zW(Q>Sm-((~r=Jo1!1B_&Go+0W4JU;zSJ!(dTqMDwAF$5{{}wYjPo>7$nPUqYSp_ z?6J4aWEjYfuai#ycw!QQO6-y+;pkzvj(-|NKutc6svRqw@}{ml1Pu>cZU!^<)qn9XA>(Y-M1{Vh(36gQ z*R5>*^jj-FM37MJJA8Wb{P>6c=ZDXpp1{S+mwo2thO` zb=`eBT5vN^jP@DU?xquhrt12JQtHCHUO>S+EBCMYpnlm4K3m&p`tHfIM+cA3vO5YN z?>)q$#|KY;`}{k6x3SYOoPI_O9UTB6zdMNS3Er1Flar@=MK0o+p{HAhmB0qu{Nv_s7E_>p%kB=UPN8;Pjx5AhDXTo&$ zWm=XNj{+DCh;hh26^I~B_DDWdqAg7Q;oix?+0pUA(cUq;we?76pQV2U$l)T;zn#1fhOFgQ zd3ZR4e;D_AllirI)fZ)t{iNG*qI26TSzJGGi%tUQ&a;c4hu35N3~2)_Q8c|Njkgs> z2gV-aAK#bt{iO;5(a)LyJHg@rnL(Bu|M2*LZ1AI81v-;UBv20)$NMliNA6>qK3m!B8^?!uBfHm!)hHu<4hBo)1gS{!o z#b`F=eOrM_rK|$Qztbj&h0aVIKWc^Jh}j}>BHW~G(<{ya0Iy=YuNU2;V$=njESO`$ zr}?bz3{aD@>|%0)5_V&*JG~;*{dmQ10I|Q(+!Sm(ff{cSv;)h zF}k0}HGi12-K(^16+(bK*WDgZ`MEhBoVTXBh4WFbFbMk68Q`}q^2Cdj%&X$B1Cs8%T)O-;Y*jDF1$nqT;Kh>5RMA^hs_LIAS4EBC!pk*C-KA4F zrgRO2sH8qM`uhxdbY2{Uy_t_6ov53v>2 zAj4EDFOtMP!P}g79_%o4yIP-tuw?NRn0MJDd{0`tO3b$bgbP?U%ERX-4i$G0vgNQl zDfCyE5S8K4*rWX(N{5U?9MW8y;%sFN)BZ%<4VZq0_G}y&l#G~X;VqO^4t*)DdXNCd1;Mi)YXUd(y(vTC=F5UIU zlnnpSpTS9Ijr5LQDV`u_n1qaZS~va7&I5&H72!R2oCKkEvne2y-Q2b(dUC?3e;DyaE!gaG!hYRsLR-cf{2#^doy@Xp?NTr;3Ce$Pq#jMpEcWKSi7C4HvIdE!)!M;lXc}Zi-vh&P#d#IIm|#yNQDR9ng@O+$y- z<+X{o2!S>2Q;XR=g&rDH~5W98^e*O*FSk{_<6%_|J5y3_&qKlD;Ks6=uWG15Pi? z{)O-!7@ zFfk3DJkfQi2;vI2(JYq^am4T!=R_?nndAI{$4=6?lL6yX6OzPT`m-deD}x_C3K3OK z(+Dvac@-_v}8X=32hgHIx6v=^*yyoCu^<04=ix3kxba@2{8a-d)?-GZd zvu>D)CR_Vla6}=2MAjo&Xj@~QSl%>%54<;hfmzP^AR{FkLCLc>8o*&iH3^Ip1`uj% zN)uC=9GO`LjD6fGmXmil_qZJ2A#>{iGmU;#tO^84w)J~>*hJvm!5=cYbKLNxnNub- zU;wAG5&>TnZ3 zPuvD0<+H-7K7FxrD!i~X6Aug<#z&WO6fM?IZPM$VwA?*7L&er{F_3&*cTnFB)>i^B z;I+{>4?cB_wUDoiS zHB5uze6&a!H4?gUO-AvCDtiT==ZCV*J*SXVGMeSf8&e13-c7Lt9o3Y~)TXZ!7LdLm zft#zjnA8@3&vm|r_%gp^boY*3hsY=qViE~RdI~6Y|AyAK5gWoYmu^mz+;l4RCq_z& zVC46-FH4*pMWrGUFN#X*Ts=AAeEW3=($kK4!6X8ma(T6$tj5i1%ZwQ|FI$5vAkn1* z?=hFlR~<3~N`kkiuj zzxm*|=N_;vc(7JTN;g0ouO%nKh(YXpHS;r50x4z_jRcKzg<}E@iR|>Gyf}xjSf-br z%VItsTYZi(L8h2&jB7la!zWZdbFcm$V=HstYRn)djU-V)lFF8o2O2S`l86D6GXJAW zX4E2EI*NTXj#_%i4tOwgN` z0GCK#83DO~z5dS?_WE-q$S1NYf-(mKFJDgn37iyxm6UaRGo~r4fJM%;_~$vsXd9i-21?R#Li#_ z3SM5iPvyFzx44N5nVRnYNKdjUd9Dbx#fv_bykV}!c*}gWuFCO zb3;ibPkQhmB;DZH=z9?}wbnuErwW`JS8_f*>pC<}a~Z9%j}R<-!tCi4Np7cTaER?YUlfgh%$cS+lp#11JL940aa@6$j7$?x zZoS@9i06%*O|x<2y)bgqLd$j3(I5IksQQHu9SD@0WQrH7scsD)MoOqOd?*c>1>i(h zSJ8S$eAi?H!4&sb2ZO4I`o6%B0~aok9+3O$@)HZzeRFjO__+gJC|Qnl(u z-_`YQImsFv@3pvK0vf4yba9U4Pp02RtI$#l<&+mVrcW3;4!&&?H+q`#ABxWOnJB=g?-2w98#-WF|w(;ju9s4hA`dUc%4 zyz1OmW@=!E8+)}iVu}1{Ip&q|M~L2igr7S@T#gz`4G+qW6Y4w%x2@iy9&^n8)qAy< zeC=|42D>KXlOWK|#jP^P)NMF`ARIGMQdNDLor%iEHC0V)mTC`j8n>DdDlKcfUas9X zPgD5TgTGAb52?I3YS1mm$;y**#pSNHlvzy@+e#h>a|+g+D)h|*>nCoIy9oxzZRo&; z=CGzjG@32m$*4d*_G(9 zO7H;=I8oh}@p!xVh?M$$ z`OdD&@Qd@9Q_eQ3!3b}o&}k@elo)c-?7^@WdSgen9gsH!`689kEbu{!i@^LUP)HEsQ9+7EOrna47CQ`^oA%DcQ1&j&qsmi? zSaUARX@OKrnb)Si)%zBmfgP6X#;S{M#*Q}C9RjJuO%qJP|1$7&kG40t>#wb{hv7JUniZXG%0X2T9j!lP*>O?2}(nNCJ zAS3pK#Qc2*OQoaioqm8^94@{BC{C~=QJmFV%~Q?vROcA?*h(66ncpgnkMQtq98OjA ze57PX-k9_gAxol`F-RT`roaG!Z>R1Gg#=7o$U$H-kpQPQntD&$)VSn0*=Dq00WDvY z^oda_!T+9NCxGF_Hr^ zuet2-OeC_TX*PWXgw#F~R^V!xb0LE)PbLYg8@vP6gy|G@3A@YwtD-LL9!q;e>!dxK zj*v8oQy|gPB;j2R_&u5L-ZJk#1j~W(mw$xX)(? zRIPx8ROr02*bd-oE`mFnl-wo%2sVJtDYXC=PwTVV0FjuZnh7!UW2hhSxz%fv3Jq#} zLWincb6Fx(H&CsGy^7DTU_)!St^s{h&PaqZ5#p{dEfhW?LOxMF_s9=IE7h~_K*{9ksz|^xCbDi$rX$7w1WaE+z_K)px52vTXktwNmvEblZ?)Pz@ zxmOTN{qf2l9`pt)`k#OGDH>Q1h0c|?zw>WbPjq}f|F)MbL+TW=6@dE0Dv&gTlY}76rkl+f;xd^ z>T~)Ozed`<`3J=7kq?~U8|iw{*+G0}u8!}lx?$RF>P)G7I-KI@Z}~Jo2Z8xeFNbVu zph+k>bKi&V=GS89;~XE{r9a;3k%Eudazk9MX1X`dLrgZ3=Lfky zyhNsto7wP%pK@+p&L*$x3@tXkiM(Hwb#E|7$kY7&^y;~Mty3{!PoEt_PO5?sOh8>E9t9Y@a(by>6zd>~_T z*^?*qY+iB+7-f9O<26EY!+|pRy6TXmckeu|`{Yz8M)S^sAtEt+6pafHi-nyZMR1$>7i_jhvUXXlmLFMv$MPpTW9kG@uo8V@mP22;O?nJmYF06@8 zWC7?aRsQQKSu(!`beP^HX6h5MaH>JKDsLblWJqV@&*BVTb7GwZZ<7)!CB6k$}>Zy-v zBR}HN#vL5E&b~cNuo9+L`6$&9Z#|u{s!OXsIRtgSLPhlORmRS;V>iDleodY7y@&wE zlF81HY9V_tv-AaCt6jmYhY@Z$;XP~FV3}{kj(FrW#e2nrL~()aKqzrN>QCfyq&YB< zpxPpd8pq}$DUUiaqyipnx`@9%LbOvU%ckgSmJOQ{XZoVXQ2w=;C4L!{T!ahUvpC%p zm)DgEtyJpfg_W*tHo=ixdlQlaDhF3Nt$E!yZd752#fV z6^8W1s5klG6$uM+shi(PBRfk%!2hxnp%jo3jCtuTXKusH-s`|VLsGTco9(| zr+CLAq@-|8JkfH!4=_x*#x}B%tEiEP4VCZuc@D>Zs;p5J5B)Ya_{cLJ>Qg#0btfHC zL&xcpirdSjX71)0Cyrn9sfe%(8FXkK2+haMB0>ub(F)$erlG&$(Fw*38j{f{aV?`z zBvinp%TC|JAVQjvYj+-eTcEV7Zhtr0d6+uvJ79_!r9ztq_n*v=sXzr2!YRZ3Cw=Hi0siSeX&v*sV*JFT5|uJpM?bfLzSc4bflrMa&p{Vefs!I>oA+aq(VWQ{G8j(Nx4SRXYtPF!SCj4ynW zzG(U|J7JK2n!Rd__J~j5cs6|0Z@(JiMzDS-_y53Z^d&q_qyZlDnz*tndw}wh>s@;I zv*tK&>_#PBiZpR7yr3}nz8WLXW4_sOJq4yVCeDKgARpw`u#(^HPX~atWPGiD(6Y%8 z@VM-i#VDr51SPt<4bS^PH}LmZuC}YZPrS$8GjkzQG=&st3c>V6O7MBw6uBsZG$bksjCvrXQ#W+sQcD$O zBY_lmppzNc>9PZsIy_~x`{85f!z z5Rv%HBRc~$B{~IK*6(i<&5g@Hz+3j$n(6{~{_^QAfcndzyiBNgm>Cw4aKVGmBMd)8 z9LmnpBoJxr2~f!9&K010&7z+|>z5`$!-h>2d4?PMY@btca|ajr2Jx+XXJ$eo*kTO@ z5p+&r%b=zP&+J)$NH&K1!_*Dj+tDVj_!7-f!6xb5&&=auYU(KW;AEYZx`jw?gXT^~ z(H{VB`ynHRoazI#3u+Qj%G%>e`DeT|dGcDpSG|jGTZC49Wp#kvos+Ue2)m5SP6-b) zFEd2RCEr+0eGw0xncT!FZk4t>Rj`xihshMm7SV!WOyf{Qm32Jl5SjPROW@dgiMPJp ztS{oi{E6O6O9rG)Nf;Y zk`Z3Iq(}zS>uLmS(N8?FMwK4*o?HvhTf|oALwO^`3*=f^hX9E*rr-vG>&SKDL25oX zX9?7rX&)6yQx!v86u5;W1| z{sdgxunRFA_a6%i_r_)U7v-|Di`sDJi`!Qz&fE81p%w=8Wqp8MFNEfZOL_Ysk*4Fs zGP^6T#Bv;J%r)|25U4z;tN~8xHI=2bVK|&YA&0A{%nMZvjuEQ79JJqIAQKd19`3jN z4fla+DI zZymd{6$}&x=UkNpQTkU$s=c8Q@Gq+aWhW0fp5f@@l6eB$E^PC=$l1T}v!I)d6^?Y? z4!CdicuU^v3ZQp%jluvfbCT>vXkD_XFq!3F^E>p1kllZQ2rjqw8qLx@qm@66s@>U; z5_7)5|BgvpQ3fv);eXIFEhrGPK6i3|p)CYH z0~*0uR2h^Vak{_SIXq8VNxX@c;aBs)TNQ79qpHN2&eLwfK#CN|f%LQuY4Yo@3&|s& zz+s77-3wMqpbDqT$Lsc>cOOh%;y!3xn1Q1?$nhv<4Axy1&<|dm!g~Rq>9mgso*Jm2 z>z{_Wx1n zzZq2OrOWvmptnUYB(o^noT)ehRurloBL`mj}ehZ0Ss?wDZJ1PIwuVuC4=QY=X%}LbIXyST9+H@EjaE{agC*y>SUl_R zOJIP}71Bq_a5E_4YEp%AdKJiIt_M5D4IDR z+YB}+i6~?XYyCzEU=M7KTQiMan#&=QM3kqd&ywRCc8)NCOvy-SnR^;!n90gk;+BHu zn2V=4W`PZ_;fpY{s{%SMXeFMn0$DMa0Sapo}55Bu5PZJt*jtU{H3-(dG^CG8k*c>UDy{1c!2e_o?Tu# z1yuS8)B_murRIV%x>hY7CD$Pocl8bgjO0eXYdDbCFvZeKA;qT9EfS8JSv}89o>u%) zHJ`a~0Gl6#FIz%_dLUL)funk-+o~ zK`VJeTr9*t85CM2Q6{P(w5hU%2g@Rmair`ydScNr`xBk=lMYgK$Nnn(ke5{lQauAM z04LdQ;g{y&E<&L-4f$<7VkG5=FtK58rWtF$>>`g>543NKH2nQ_g8EISg35 z5{Kl_6X_M%!n2|HoUyDIqcF$-3Q4Q_loh$o$hahoBgvrrw@%ukfNRq1a09S3(V^ zq~+DUuipRaR}-U8uU=XqB1(hWY7w;w4&+MMj7^-Kgjmpn3x#Es7)JR?7w%WVzb=N1 zsHKYst=SNzA+ZhF(+HAKgG?}LNcs~C%l{PRu2uMS!|#YWe}tW=4?B^_l=Opu*1%1nDiE~>-6Z3s3tjKUm8LiDbZ0ouVdZe|9a7Tz%gix zC-0(sGD$4LF`=*955hgjmb`Xqmse zt;s-bc9W9-zI{8KE4CGkGkV|~Ljrz6GcBPKI*)>+&czqKtg^YgC^BcbGIrAGV$t<6 zav%|UVLlTc3W&dAnbr`K3*z{_A$XDRL?!w?jfAPlbzT%#2}83`oeVqil`dh7(VA>< z?ytTGGNAgRw%v%MNh`co_o*f^8Jsr~YInC*lC&65#jHirc6cxeBn-RRam8Icv}gse zp~d~0-cl%K+}TCZNS3}%Pr7ufzw6SgDe@T@>;u@vm*WYt!t~0cWWN&C@58uEXQlH& zo#qmLLyNAIt@d>J?y3o3(S@`@P=q2MC5X!fwlBgwSKk6+g;y_-YD^^X-Rd4{eiB+Z zVP`m&;$$3<0jh+5h>ADLPin)6y4w&DhbPah3P|vh1lp*799}({%=!2;k-ZRoF0Mq$ zgj%4uOc;UH(nZA! zFTUXa{sF9RS0Q0^_b)C{H(79>#yvf#A|Y%NAH4|gen+hr)Yi2;KyhO6?KNlP*+j}= zrbD>%i7!J?$2v~i*&uLLj7Jy6QtNAXm(ypkbpK1AL3aL_`(LTR$8+0$h8}SM?+g3{ z(>3o1@c41{xd+k(9Y^YR30ROR+QY`#SKxOo)Ndd$ngpYJ1 zW1BPe^_?+uhk5Geq}kV28!IbP_!H;xO`=U^SYPkYM9UO?$*r;MH>LIzLJ&8V6lrTP z@So%<$#*ufk>d}xxPtF3daNYNC`@T2MF8y(MD(4^gTrB`&LExP7VwjWh(!e~ zE}-~ODurr+(+ik<8hO<9(^7AOCv9upGd@IZ2t+LB)OoW3D!xlY?%vv^`_>rK_YeIU z)KF`r_c9}*iGzH@ZuxT-;PlU4$SXumY#jxMu?Vsp>IQ_8Ay)p3o(D)qXK7^d)pc8c z81;wC40qo4n;&FNj0uCYp(^{-#e7Vod}8;+DFmXTIN#`*#BhAj$i^z_$;_$hgoE-3 zB@5e_*T7(mw@_Ibh?IE&cyq7n>=kHg=jf%MR?70Cv(+ENZ`UZ$utp7yzm=-zK?<4l z%NHgcG@ZB|UR9C*)%&JVuOx45_Ubj3j~6Xf2a4+#EfrKqi*oH=6VOm~QZB)^HPmZI z4p5oroimkA!nXeR!thKKLUO74k!={9zrs_oMUxP#z0`LIty;9-;>S>*Jf2wZE_pex z*R)A$1(E1sAvg4?FXr}VuO+dTBC63(ExLqJo+Lv&QAAIY(ml+^8czL12!Qye3rWHK zLs4r2ry4v(n`^X|FkTFzPGo&F^ck=t!sD|R^D&UqL!|)Mv;?1IC>bL#F+3zOQ6LxR z`guSZVLR0;{EL?TPUCiST4>--de)WamZD&dliay|uBco?sg&Dn2F(dZHl97YH(ybV z>mgcOHsxB7-SKrcPa}^Xk4wp1v7M?I4NJ{D)s2CR z%bkotr_m4r!I@qU)hhO|jo@gje9#_`+wY1C{O`O>B2l>LhTZvgF`f-sooU4DY?&^3 zUgEl!@m=Ua)Kih@(VdN%T0_lz_^K?rxRwN6pr{`rZaCT}AC2(kSQDRG#bFPLOxjuw z;mJ(iBbn$P$}l0F2>)EQAiNjq?N>h%>{3m_qABt^vf`8z=@A4s~57v}|Dry;6(NX9)W_!Vqd=k{;9PaSN42k7Av$LhkYuAewYMgfiYB zHBXE9Kwb>gYC)tx;M^nMBc11AH7N$ePpG+K0nsM;g_hYAxaybhv=>~IC5RV$wI)Y3 z)#tvggo*(!o$mU)lMP+_&*QRZkV20aWsokmvdyC>!&j1c(ql;vIGY$|f>#zaJ}Hw1$-qTb#_uGJSjbzZ!EO|JI^wF~CWuEQ!wybT|Aeu7DeX~VEW<^xHb zGqro6Qi9fNFu16I;&9j*%oMRTuS6QiA_?*KJ9NpkQj*%!9%L5}1W-Ku$2dcxmjg@kq|}WBx#rgZK5YDU zuj$(s3JqgyS&wk<85%O-6o_NYJFbxnjsk`Wq(6LFSn~e#ej$?nZ69Q#T#ckQiDQ$|UB3r&z@tD_8>g$9K7GAJu`!A%D zbAH0R4Xli_?9=woLIr_|Tg6k6$vWkX#wfFY>Jj`eU{Bt*&TuJ zaeZ%ut(~hjS1*UZPKCpnY@G$&6A+U#X2fKas>#rL>MyIwFo`F}U zXD&d@xDvlh-o;u8p#-1i6nc}FP zj}vSL{Z4*J4H_jK^N>~CKf`G?QNy2mx&Rd4V7OQOl*Bg~5!-dlwM2XJ?wv2^Cm$IG z@^QqYkw0RnEkrY;LrwgQ%M~|D$mXKh^h$uzohKJGA3DQv2ew8ziodeMbhb`@Zv!NQ zxVluQ3&-e=69dsTSu}O%E3>OF%P;<%+afgBbec}MK{uk_sATARIXAIV4;oYuV?1i4 zuhu@cIVxzlTL6E#`=fF`FDbznzD1O1k0<0H3VZ!m^$&!(;b~TvQ}}EEC20ml?Fsa> z!Gs34Tqj@uzV_uGz-jxNeTqz!4B1bdbAHrKUb$yOl9R)^NWnvr;46+1_Tb2WF|i|%H9z4gdz3?w zM_5T{pfIQg%P$P;>>&|b;GyR*tY{~=i^nJ7v*j0cdG?_GjLAvWPT&;M?TEebKV~ZH zUv~1&=g}gvOF#dwJUyG^LXa!M!urA$gY|}8%xrZ`M4jTc!1>~b<Zr3t%C);Y!_X0)%|U&dvPowp{?N6Y2AsXmtg zL*~jq_jr-j4NwMq?mWUGxYW|EJJ_@%>cY(Bn1exQAUVaC@XTDUX~b3{zpL2F#k*%n zazPY3`2V4nxxfur;SiUI(0y4(*=i)R>lYrAL#;XHY9 z*}s&7MsSm`J3?kKAwAJ;czFfqRoQFfkY4hF(gKEM{3xDfq~s96A8CS1n(t+}Yd77> zd?$nPXMr}2S$I$mM>F3C-V0a+3_)Nt5h|8}@{LC&L?|UhR+VR58`b%$Yk3`@m9tU; zTv%MDqB&Zz)Ci{KB89`^3qZG@vC@B=RJ8Kvl9haYz!*E$K2yS9N2zo3~dTJ$Cys@>TkvI5p7DOsn<^ zctq$2NeZ*fo=_QjCZPdPZPlogQE9emi|0HDkAwi2e~oVnuWqE!*d+?p@59pZ+|lY5 zQ%f&SaH< zq>Kwm*xHE*Z4^;*0;ijt6bFw_;yite+y@-+>5kx|qn{k#iaf_*QAxfq;ROuPwE~Z| zvPrLe3;&VtjMr?3_VL+tG&&o!$FIuyTjT0_RIyUwqASooM_7pnL9Atf@l~7O%b%vZ zq9~i{Hi#68ee1Xlk0srXbT-g;2+-hegh#G`Tbmfb4xk6BHIN}A!!`MeVE`18A*wut zWh%9~z~g?UFmr@1c+Y?}{d0Nwj6QiLI7w7F6`2lGI7Avi-WssgLmM19T|X{_1z=#n#kI(le@YKY zp+p{mCOf+@rcPv0?%|zapwen(@m~A>oCJpdMA0PoL+b!T6FR_t0N1+DODe z!7`Zc(8FkVpJ{Yw$;*{#_qZNL7ZXHxnyi)Y&h-K*W_LD%qePWU5mR$L2Wc)HRac^7 zX3BSGMnIWJ$alfbm5mfBDOq84r4Cd%9*@S6s+vx_g0?&jnEYhJrueCBVdFN>J(_kI z=~C1thIFgRFR=;rCbno+n??0N=c!ztgHZ;rA*(}O5T}M~hRTE@?@+d+`E3=Sw!3}C%q4{a$uJiv zEI}(pBgLOTgUJWdDR>m`x#kL0tZjkC#I!(Se@B*r*u`CEmQeX}7*CsX7&4AIUEHM- zQloNPfxBL%G>wvMr7+ER>hLlh2i#RDM8i>8Y9y{=)tQ&Nz#lQ&0O?^UNTZ{n91S+l zS}-4qhWV+~zXKZ;Cp)m^OBce};o8 zDo=}-o90WhFz&~J?ZP)XhLV?6Dp7}zQ-P^89*f1bHy0$P-*I z>8eXL5OH_Q^8AkbCsRj^(p5l2kGJF>$oZ?e2;jUjxdyx6MQXaK!ziilV);kD48y`CP6yQw{dr}~q`ZClCM5~iQ08gJqG3t`+;!I=(-|kNAK1AM`dGmj&_&uF zR}f3g>rno9y$%Eo(AA)Hvw;5;vVvz3WI#{HzxuJtWec^WCV`WB_cK+o%19J23vqM8 z5QfZ`T%>KGAoHLN5tB~G1R%y9lu{&CXB8V8d1mdxsSRg!73%56thrq#x4VeW;y903 z|E_qd1;fg_5atY)wcrJ$Kv$uq!4qSi8%T2@QKpz+Tg;t%gfT^J5<^(oCq=>lSN@xS_p;~vJ64+wlS7r1KQXy4143Hq0IpDYy>Tg zhBpQb7+P3f8SwZ0k8}QW?~Ndtl~vO+re~^(aqqe3@t^ac%j<>e7Sd$BQpMUw*oZiGe9s;~vZA_n$0%_IUYIgdsls^gdb_1f^3z zr}J_i-rK6EEIoPj@{El2je+UNfsdzH-kKjAa zpM~opAC$@N^2i&zlxvH4P4)YRQGIiXFU?iVq3N+|t`XTikyY2l3D=I_z1TYp|_1g(^5lNYJGz0Y1l>& zGHXaC$m|S55Q^#7magAE?QaZ6 zmYA#vz9gYK=i6cnG=meIEd@i4lk+j83$-M6zZ5cLyhIjE3RE36M-xhuzl{HEjQ^}c z%@fGg_NhQR@|6_#2TAgrfOzuOLFx81aUcMUwLvB3({1Cu(V)M@Gobik^GerjViedr zIDCT>C;4ZJXlLPsCnms?)2|1|jtG`C_w0+&7yHlWj=D@|;inHTv|*|{2?IPGUMWw{ zp3}t0pdkhjSLH?8Yd~qr#4>qUlt9nNC_0e0K5L5+cbYlZGnfAm}V^o?9(d}0{dm0I$moZ_swYe(=I4FSx_-d1Y z7ru5eBYF?Hg2OC7IDa!=$9ogGffq$F%vUI@(!$w9Fr)|2JpNa;7?L&-M-p0Rru9=4 z$}=>jsAPbsIBGxB-A$llku`mkxY%iT8c&WeQ7i!$1T2 znJVky{?;EOFw)oNT^tCAj#Nr}I-m6+V$FN7vxCA9c4wOgtbFDp+m|+&qN0Y-q_b4v zFYwGltW4vPKnf(hf=F7^Q3~Y)=UiyIqy#(at4UDJ2x;|>E;^$i0q5gUomXhoJiE}K zX^stg)LCZAjf%J+a&bhIb5&(U4x@fj$n+^m#3CK*z{NHlW6R?yS0gx_q`!koL|VX} z+N1)IY0A;<26qndA+v6nnP3~)Po5$v!<1PHp6$^7u529k2E>gqJWG^`V%;`pH-Tj0 zLb_=ulYh!VERZM3JYflpY}y@;mSDEphBvggFCJ1zid9*?QTcR2-h(PX6QMt|GN)Nf zqAk8N%Zi3IUHNp@m2}r|1}60pPhNh!%O z-c5D^Pt=jvD6CoegeL|FMk01?GEe-GSziUnH8!H{WkF@rDy7sVSo6d};HzPNvB|6^ z93-5sDD`)PJ)oH|#|F(Ln0s=rAx#oJtlhYfPM>c;c$WYVo-MJ|1!<2BZ)ds9JJxGv zxIB!sgh&;|F`kQT+DKTsZXP1mDsdS_dbd0>h4K6=Rd!CjVE^-L%B1<145vahhZ6#d zKWgx>-GuuF@)VFlZsICa%siQ>%%NLKTw$<6AV{Aip&-x0xl>Eav@kq^)1bglkvumX zYtExuqVjA9(X6937g9G(qL?1U6pE0BwK?$AB{=^eJW{`}L`I8qd1LCq&NoN_QJpA; zM?#JrX(o_ITY*r;`@;={N$%t5x~H``7uyt}_GJ_2@eTX1!^4Pt$61=z(+Rq!e;`fM zms4UCS9E)2{HH0HZPr{}RQFPxvsf%pB8|hPVP1>+Kb-d0o8(V6n1z{Syqs{~4W1)0CLRdv8p@ZZ{1Q z+G^Nmz4L}{kEF0dy=gg*1O^R_!}JxQ$Mp|=jLIh~y1&&Al2U!D!h(b&X@Di&aP?7x zt58eSHdW4rPEe!O{5wyKPz0=DrIpI%ociv|{^|z8--{FAXhn<$mgL)ckEJn8K){Pg zd+7j$QxJ&aIrihMjVPhMz)ZAI&^9)cpr9?jf-p>isd?!b4YrVO*@>WR+~w7pZVmIJ zSXI1I*@#jGXf7PLdoQ7lh%rlZVnDrlYF`T*)%Y9N8dU?6sd2PSWA)_Wg`>!AWy0wR z=%U{dc`3VuEE0{hl)lx~#4l;?b(b$4$@FIIhX)y=J)$VQ6AWiC*Y*gL*@j(;v3|u2 z?MF&iojMSwDI2BK$dT#Ey>_*4Lo|_!>Fg8{$@R4H?$V2NvSVQOP>Nv5)0!J!WpDb zQVr&H2Py0m7He^$^$)7Tjz~1J0ZH4?>dFZBZ#dDt&HF|j8c(#7j&!R1!I-gxB)qek z>7@ZDaLahay`PlzSj>S!U3pslbr*4uYF8;G`QoC@NyRGSMT3?ZPqJAm7(+)#d#$AD zgS0qENm+)Y(b2(Sl9@#XxtP|km1=6S~#%;?l zxdbG6h$L!67MvIQPmkcpNR8%3qU5;v(MP(qkk{ZCMj^lIFhW?K(jmgtp_8GA5Cil7 zXm<8+Qi$82GeNPzf0}Y=6XL!aAw`5jQox+etL}8;98?KV+63xl>4(vQ&`&`Td9M9b zOPl+4RDkuVk4;ik>{RikXPR3ZAb+*i|-8(9~hQGcew;0G_I1 z&ydE|9vY6A0)<}ZfZpB#Vd81MD|xteV%lDSj=eFFTikU@+q%c*brJ!Np3(SDVQYyuQ0%n|( z1v#-Z+y!yS?z%?hfROa{p{#Gy-hJavp`?B(y?8{sU4RbewCBa;JQjk$T9lf~w0I5(h)93sQHL~$1!)9bax z&j6I9AR+=v#zb%+*+DdAB;hC<9h46nP&ptZgz6-4m~|GD?l`m)?57H0a?^pc?t-4P z8bfU*MDE{YL&GVNaP@^kBGTG=#nXCfPPrc}+MEZIQK`#ENb`b#qFA6G=xbwaX;T1P91~`Sy^9hDWsdEgxlDFAgmZOC4tc;5TL2$u|b)H<6 zG;4FAPfce7QLu1lStVXo&W7zVCg9qAH)_h(8e$_db8T2*w6~5B;?ZO@;1owiIgqta zY{N;PtW*z2x>gN*xXHKJFtQak3Dgb6uL{!(1@A;vRHSNxk<#hUAquSzkofCOT6*Z+ zxqdK7gtw~tRj-+1gJx@HTJAgT!b$YZ6_~T^lW{oWOXhHPB#5BjbTfRL2}h-N5lWYj&N$h`7~o+ZCCzjMRq8Cmr=AvyW7 zJ55~pT@CwiDQ?870fFOfej#?2R?-LsP1WF*DF&jY#7}l>N8MI;?<_oyyysjJMkbCg zc_M1IVS@pwsh#{&S&Dt0P}lmefn|m4Q<3=hK_t+sZVycIuZjKUf{?*U1E-4id8^1% zwPAXecqk#EGrGlmkKZjQG6YGWRL-9WmNez?l@&CBp)xutps!R%koYly-V`H6LN!iQ zbh5;Fif}*+bBh+ZRZ3MZ(TmN`qxmqTr4tg|Ebq5HVot6)Nx;)r>P7q2;6OaBYHut+ zFkSy9g6Os0P&3|hMbiK{iN zZjC__H&9Ou=}jz#$r3*^To)Ids3?U*%aYd2v>1VPLB)I*h&Oy2LCSN4u!~fz$+yL? zRuGk2Jwf;!Vl+;zSWR+3RxJ?gtVR@>*Axp%!24|e*2{OkIy=eKFLXVLczsK1!D-Eq ztMNFUcISQ@x5!K!Tuvf$v`_PY;YcWg<4oY5P@=V`o)OyPaI4M~nSw1Ex9+FA^)uSJ zdHuP=IKXfq5?X6bDHEnq%S`@Cv1{N!q&~&zp#*xe3}F2PUUnW7>a9&-`nmhJZTIxp ze0x$jlbtdP9CA4cSjBh9I8TJBHp#3LJThq{Mse{UlV{YvEdA9T04+q~+gD(mO2Kgm zv&~bdQj&kA^P+g;$^tCH;&F7hA{(GcCY+uI`&uMjPnds$#BBT~iUO&3KaC2a+7`~83Z_y5t~{r#C4{==t0BkEyAnM#i zN(^!N+B<+&vn^_^2S|DCQU)8xTJm#hsNo^Ve2tXk{ zgrbT@ZpjJIH4t)yG?oNK)At@t%c!_SC*5^X(?8i~>Auu+G}YaM%=1|H1rZdzF(RE5 zC22^knt1AlL^VXDb4ll2eI%WkEzx+4PouDeNFpuyL=Zql#4sPs#^yzzAvIM-H#B44 zqUK4%s`!}7I;B{sB9<#ny{ZgrAunH!F?(H`MgQoJ;F;i!3&Q9RO9RGp!2(RaVGn^+ zVp+zqf(PN|5;O22vem&iaTit9HLjh6_#{9evM`nswA)xVO+`!f4aOXU{uOPCM0Rc%jEv=a3*8*GXi4zI} zcxdbptxxjUfWNRx9V#D?%aclAn}m6xV42uP#)n;}X^8?tOh7>%i{~VuB?kIX?P9%h(+Qocu4Dfw@r7o?fv}5Zh1?d*4 zM0yu0&Iu^xUw^YmUi1!}NLYZ8T;o30C0Lt8!)NYRL6>Q4>6y~{#4Hk@E5;c2A$ewj zP8Ox38@%vRPe9P=)xeEBx6Cy7oF`qekRuNIxD0a~Z8$ZCps>ftUv8zO(dLTr!7mLZ z+zkBDTfGbTackbPW?+V~95_-1LBo*Cgt4Ur@NIFHXv`4#5g%zBEdIKm9rU25#i&CT zERpGv<#|^Ll6YymE&N?sxVDr9r-oI&t{}x3Y>LoMU#akrcssk~E>%3vQ*-f=DsM=r z#qLV!hbe(nfl{ThWE`s+quNw~{CSN6PW3K{v9jTDBBaxzo3*|Bpm;ngG?espnwlb| z2ED@4s})U|=T`R9L@I3*#2ai?Xc{)$J|J+lPa>fAMr&d0#NLI^*`kt2BYZH8DQG0E zFWGZnQ1c4;FVd=I^Tk>(X8r^g0M%)FUP5Ko_*o#eY?pe?D!P0&B?35CPdjx0FhmOY z_ajU=&g`5*7juz6{J3kO`63@yj5QZ?Z2)LxL#Fgnw}wbxs=4YBiU&PWDjsu%%Kgc) z+q!o^Pk}2<*lxG>yY_sS!EHGgbwlWwQ4vh%R}y@jP9+QwkxRF8u9nV*H#PAn$)=)v zX2kIYJGBLGai0-G&ndPLSU)5h+|3{rV@@3&dNjdA)(4w#P{6^Q`(l0e?hTq*jH`Xk zzgeR4JhD5wzsb|q3jFX$ME+9ayacc;Kn(M!v|F62jB<$WUq3O}Gofw&#)k9oT< zYGe=@)rELf`Bf6Q(aAOvGkY9DhD&#%Nj>>P86?uYEoMlDaAh_xz&AhY{kjlry#rb& zZJynv6|VC8gt;wrxYl)unq1oJKm6DK^z;4ie=x&;ei!!o4U~CDxq)Ae+pK3yizUJc zP~R|A4bgpFTm0n3r;Cr5K@8yRr*#%PFjMx_zqb=Z8`S!bQn8$(etv)XCySpwT6^*6 z$&;VnLvl%UGk+z&e*Ey$7pXAo^6DybPtsP41diSTuLYV~XaS*ekcM`bq|T5w`{e23 z%7Yg_dw75C0mitxPfG?{-;-9;<{|)^2B@|0Oak#rJpNoWFtbq;%R+(6<(+`sfkE4}^x?h=af^bU~0S}+E7ol6S` zuZfK)In^3)*I>`-p<=k0Y{=3c9g&IJJLC`Hvt^cR?}N*+ywYKZzHK@NsvO&`K|-hT z%k78g7t@@j!3bn$JosbOON6rhz!%E+P=U z%p@zrLzFt2oqC{6=~U6w`y@A2OoNgXA1bybQ&@Z@?YURfxyq`4fWA!%FZNL=&!Kpe zqIHHEjyUQ=pkSvu*{IBFtZ)(}IU;Pv0g7<-k&UjwGVP@UbyA-IYHF)1iU!Mx@P=2! z$?(1aP=L#B!xhCa%cJxgptc6;rx3v|fY3lT9;0M&4b@b|6EG-ps8;vjaBmlD2^Wnv zwwR@O$$$)wvSWVtxQH6K?H};s^alt@z1j5kmb~3PYKnD~7Ma(Sz;bM)W?j^JihoCYu?C^^N0-sT=e0-R+)Lmoi3 z2M^UzR1P*OO;eQ-=}0M=d5P)$<@Q}2Ewt!g2gVf^ir8#z^%>ZYZQy{~KgI>`0N*FE zN+et<;v%O6`hyuYQgGY1iIfCav_eUesP#e?`9c@jK7ZG6hjt{dzgs0AjvMWpg!Ux* ziyE8g!0VMGd=BrJpe98gP{m+21yseY$X~2z7hr>;XE;RG3?jDT} zTC*#lh`rAJ{>$;4mx=EzO4+>+=jSh9Jzwk&jL=d$Pl`_<5sv=4&{`jE!kG=sO_;N@ z2R*>%Q2-=2PY^b~+toWG)jNftGa)!%*&7Jtb|`sxeJC-39D!Qk{4QL)OzX&;Y%PL= zh%GP`sa44R7%Gta!S-2Ja`@o@7JEw7e;A!HHb8>aDHc{JnpO0bjC8%BKC`iCt6&^LCmW zK;~O$GQZ0SIGkD2NSO-OAwDPhLD9wwbjS5|Ig?hLGcZx+n-!9Aoe!$G_v&EOV79avH|qK2dp3A?oxF20tNX znmrmJjVcPj_Th!ac>MM!%Ot51y@wwe2I5*3;hR;Al)!m|n$6Nf@V51VZ@+)fVP2B{AjFr3|cE zyX(2xwE{ku7x=Rj@u{O8p>FVsc>2MNkjI6_{}wCl>|Tw1R!)LJR3-^_f|#@UV6K zT&F{h$bxcYxMo;nGJ5{pz*#jy2q5T3qV8yb2%h4xu(6;bZTm`@W3n6h-mH zJ6IncqRgGD0~iNV*Zwer1!ffVU}rB44K|EM(F_DJ8(oTi4R$?%V@)_lG7CnH#@zwP zbQAsn3l+H*n5s{3xekPtzjgg~91nY=!$l_M=aH07@7Nc2Rg7PG*do||+?o}s9zTDC z>fLyzt*uWP?Gi@2h*3J;5+BCFMuPD_CyK~E6Ql9TrEC1?(!%w6TiVEqw)0o7qwV|^ zF()QQo>4)i^Yq(1MGA)*T{vQ+bj=w6^#k#x>g>{(Z;im93TQW9S2*2h5g!E% zVv(Ait>7l$DQ`E1<5`)?d5mZ9;h*ytp_0t;KebG^ra+14fQnX6s?qPa_`A;hRA z0%dpg%bO@Y>58NpTR|b5NGT*q%f^zjGWfALG12{C6WN1j{3}C?cP4z20=$im&z7E8 zA_g&XAPX*-L#`PU9s@a^J=cSWje!^fIRgQ$ScZ(xKRkR)U3~cH|S{qFp-kaW#Lt_6#wXKl#9_*+rw7Jq7 zj50~bI^?=aS&n?Jh-{EgCkG8%w=&H_OIsO}7Q|L%cVI3=DQ1x>n}JR^qeEZiN8ufZ z6|^i@bAUxK0w?t`aUF`2Y){g0S|I2_Fc?65gdm0O`RwV#C0q-DuEYR!y5jV-*3Bn2ybD{fXcSOSV6Azu_V|%MQxZa}{$PV~S}1rWVhNJJK`36QDJt1+ z5@tMWGa`m{(MT_3aFZlQM;oxahc7g$!3=oJstEgh@9?m&s9Mm-2|Aach5 z?`Sj}p()1IwWQ8RL&kkmOoYXQlNM*ImGqcb&`<$5WVyH(Xbcb#z4CVt^cg?uH+|FJ z9N?Q3MaRa~S_^gNUvheklhy?QcO4-9Zz(iQ$eq6rlOj znScBQjT<}J>F*xc%ZAUH-URV7Yq;j*=O*}h=LV;zQyUR6kH(+$_xmH!$m`u`i#6n3 zB-^N=$#8!u-Qr{S1ebuGFi*?wFjJX4cB{D|Gi@IE`d?cVl-^fyV13F<$05>m>3%R? z8t&tM6V&Sb^Z|MFsslP#N#{=b)FV+ndOFCG+3vytly6|9U1qS_Bj6!nIh#zX(aAy9 zf)gX3)Bsna`6R$?4iMmNOP(|vjY5CV6M9i#+mFq=BI9xsy470Y0QMd ze^_u}+R{*cH=hK%xk<(W8%sN?OtyydFAhkTeIUvKI@gTM>F87lcqZMpI#_9WHH~eM z%5?8W&waF$_P^2&v_#-0WdA`V-?kiIxPLdD=6b8?RM%Tgp}XE>8po)#If-ZJrMK_W z%i(|*N^*_f+Z6v5%I-O>Fd04(#zrCDlt-r0TKYoSGuTKgr>U8x`b6H^D0T|`C$Lgx zla*_`e1u;L{C|WE<#!-y#>Z=~w3LJi1~!%yp&nW4TM;MH3z%aE;FQdXTfPwYqrS+a zngW^i=<{bTVfZ80-1XE=M6YxPPh7rP&zESIxzTb@w5pSs5AS8RlYBIJrer&eRwx%- z&c9AD)$B-PB3&UWW_QQT8e5N)I8ji^|9do6-cCwFz{4pO2D}j;;#N-CY;0JvsraTM z9&i}i;Bdj7DCAjXK9?3Ioq@EAs<0u&YJW`?xKoQM<*3|?0h1mzI`z!N`sN;Lrh&ntu8Fjw?I-PhYrJ}7%pB3g# zoXFG9&FoZVvE1$Z4w?u!7tL|f{LrcZ?n^3(f;T6=d3UYWyTTgG%0Z}|8SvFd{FM9V zhqYnZz6PmS%bh~o1}9lxNVMU&cm*0HxAFK=)AOe5%rEEgCp<| zmx&Xs){54Fz97{rC8eo?jPJbG$((X7;4qTK#3rCtf&~Ei9j52Dv6IkyUMR> zdjJbiSd(HxmUbZAs&AT#hwLl9%tOVeE*j>yWX`rJ`chS|-VrVfX*!cqVmkZy-joi+ z1lo4k%TlD`$;4@Jxw9O#aJNaVO3lwZ_dd+R8kZEr*D3v{R*n7VxApngFr*l~Dg=Wp zXFL!NheHtNb+^?Vj&NfdaWy`ofhj8$cKkUEmacvf-niSn&tPBpDb6IwA^a^HAC0A6c8x^~(+EvZ+sw4jYk{)NQ zzTLVH`)pUPcV-iL%kR};H6yMPFnv!$Z2BZ%GWIwT_n(jy^;xW2HA$i7=~oNhxibDf ztm1*^o%t;8T~Cu@<~Z^( z3xb|nlz045)yU-0aJ*CJie47JYZA&>E=`^ehlgE#VfQ%RsaXqLIn*{V7w)1+^!V^@ zceeeEWsJ&rHnkhT!Z~nY+7X7stu|l?)N{D`A}r!1)Wd0*l6$_4{M?Sr8ryPfIILO513oYTCZp) z5U!G#itYx!L7b|(6Jb=iuF_A@dqgoz16aK~eE_G8!k{66TsY3~UWUk@0zuB@sh`jRGU&_29xnUSH=u3pW$9B)#SW16 zaqFYE9{3}Xf5%xF($!LEJNsJsRahxmJRhAG3AU?YYUnl1PeEdb064G)Q3FmSU*W#N z9eL?#zKP>H?XbBz6ka&<#p-Z?NRSe-{ zGgag86*31&e3n$=<`GI!UN*+~Cj8n!+9(9ASzw_E2@+z!#D;JOj{fgE!|@>qFCzoS z55xtwes$q=NH8f7A^6yg1|40{ix-4k()|hrT_hE|vZZxIeP4JB{?;hcyJ*y@qsi)X z8Ytk4%0P5%6n(u*_1EZaX{;y^E0x^Qk51OHt;<602QvfbTw(ZN^~#69>*n_!5@9Mq zeo=T`K+voBUAW<{xIrx_mzqp!vSZo_Cmwp)`{N%gDUY{ui7pg*uk<^IDh|ziw}ODw z^mp^QcSW3#OT+p2--Qt*x@fds_1A$#%{CAPO-5JDwsf!K667*a@l{;w1R=sVbgOg7 z`_hve1bR%t*~7hMIL|UmlZ7$dz@r*zdev0ap6dDxnL7iyI0Lu1=UGdZ~+3z zWB3(eUvRP+T=8f){E8u7kKxvXFuUXl>qi23DmUtiMHK_0pC7S*T1&UNm)g6MXE7US zd3o9g-6trV7zN}Ie1v|Rzyw+7p&Hi?V-s$~`?QNs!Bau|x=6?=X|W$xlx zIZSIJ5wLG3(TK8}fI+-g3Ud+yMmNIzFw-y-w7w(C55fPZ$i*OHJVgt-Bp^eE#EP=Q zp}dg!0*cgG8Rm_+Q;Pj4?E(FQ`YkSrRL3N=13CyloJeJyFB&*}l(VscY#BZ+^+#~S zVHBxoV8BHd^I`bC6OR?pOuQkp?vTW*za;!gruwc4zh-PXo=Ep4jy@bU5w_CrIwf~G z{@!;^(c{RBq7E3Bp!?m3dkkv|hc?IoenO32ms3tuEF8h_mUx9plhUMZuJV#hW`jFZ zohyAKI+VxAq}(PX(>y^O)dD7wEWz0*U*u;Z%8k zRN+-tSv`8ctsGUvlcunuzgPp%$r8ag;*~*QI3(-yZ!uUXa>%9<-xH13s(i|}W zr3-!c)`~9JlKwe9KrC)!{!iGCie{R4yXv={LE(xR1O|brxU57<+n~pCQ7R zOFKi{88e9jvns$av;rpMhc2+n{(R!113aMH3e0tuf@T1NeDgx6Q* z8=ls8Hh%K0tvje_Y8H>jJfcy2o(zcsi(oWsIdtR&2+!F}M{$gIBQeE==Q^(AmyptF zG~A6b&`NIHI0-#f$%$Cu)yOFx4`R-Cilg5k%bZ+6;F}r?@%~V03sY~rut>1Jn@pn< z8>hB8BFJ-7`<#Lw4Z^$+k<||Ic70^MuP+1&73e<`V7HCnv zL4GnE?VTPGqWv^`yE)06(*Q6^@ZTa7?nj9Wu0>EHK!j{KGtuAGb*#h9>Y1jJMa^ zd{k{%GDuD8zyV^ug>lAuNwNFp(GX=Yc)br5WTJ<57R?-e@RdLrj`jRr)?9iBWCD=? z(qpAY^3!9Iw(q1{2@LEQs;`>Pe<{r7{rn~;TMu?d9vwZ^eyv~4_%t&FP6=i+BX_bH zS)kp(f(w~FFEdXPqGtX6ph+cy^MTuS#aR!LcnQvV0S3QH&Wh7-rmrl?7hyN;-I9AG zHtws-ELD+Emt=&wGCdLWs=ZgGL+PL@Sx;E_D&?B9FIwnEeZkV(nHHy*O`)6aDVGtR?>l01n* zN_&5@iqiv@LXyGGCaj!sSt<-nIPND%Bj3$Ij^`K#t8hrphx{ECp=L$rhX0rYMp;<0 zse&ZwMCP0MFC`6T>OPw$Xdl^q34rW$t>{zkCY>CftTlM2k_9{T8D`kTl-~#Gj+S>! zSgne)Hn1$isbw{$ITOPZu4o-X8UAJW4YK4U(Mo}Q@|;!jNPDB|aLr;G`;iFi_<&h5 znl3PDdo9`_7`y2rGhWBKmCe@eaSe_ou{#G=lOZ(-D?5Y3wcbdwu%5*fFTtsZI0cT? zrIFNUgK_%+1@@3-`v~0bR7Ytfg%8o7Hn2h+)5^b-vXHz8cEG(k0ebk)k4M^H5{^r9g>!L zqP_)rQ%(u~TKIAkyeBbO9it%-`&?5M!-P9|lDbcRUvt0DT3{(3(aAi*-gbLU)3HFZxm~x zzJAyod(Dqn`&dS%^0Aa_2%&YVy-5~x4IIt&9Ns3q$UsAbBZ$<};@a{jPo8@9;Affv zJz68BN?)Z}*Nm_}Mb}672Ae{*Sh+;T?y`8pV)r$wcu3Fud9VAL6+5ip2|1Kb$v^%@ z<>NQy$MEHC_*m32dXH%{QfLLv@6yw;+V=$+dvjFslQ*k%31 zW8rY&@jZQf13p;NG>;WIOj|1&aFsp~TZ_K#gCx-%w~@!4j`f$G;>Iy{Vw?PB+R#?( z);6+qB8SH9Hv2}6Nytdu8oeivu(5F+AvJS4GHK7TA^PHRyCo@0*z$H8a~UH~cArH( z1*ELez+%Euq_~4?ob7%`)Jjx%kpKGk!rmlj$E05FgcV>7{2(qvt))mk(Rw{EU0^6j zCk*nY`tS`NzP?nn1g5cN^&wiK&M(J1X$lZa3>>l?2z`?l^KDGBb%=WCaDZmrXcR#n zvhwm^580U|r-y7^WjYy$u}kIR0Aa~lfuhY}OXCN(=Cnb%ElqHeYNi3>6pa9WPREb& z&k6eY;1{TEdL0k>bqAr!J3~}|Mr+m$C}$;0JCCx`Y#NtwYi>LLlu{u)Rwz@)+SRkD zE2{*lpp>72L6&)QNTJ9;Gn};#M^C@ zC!GDz=hcxHAH9`bIzCSVAZrQeB;+r{eJY(z!0r(CMkDgW0jiD{=d8Lz1QRmB?2n<2 z?ySqXwfiea%cd^4A+o_EcwIS`$rbN5ARdht|#K9ybDG)ME!YB@YT$)C^02 z(rUZoIQ#Yqh4rHDbKVPpF5MQ}>R%f@NrQM{N-6)|)Nk2Kq)Dj{FO=L&bWm;-B|&>A zA-Rs6Ql#*=+fvc4w_71d-j5u0Id50E8fayc{=xy@o7<751$l0@xXdG+Cvd8%;hq>Gp= zC2RVxQ1$H~Q~EPjRC9m#R#Vxbu31~N;WX4$tG@#&$;H*+bCAlb;WiEOD|iGPRYu4q zV>c^>ivbjNS(6r5W4j_bix*Bqx59m-C+YKTI1wsRvmaw^W38T6>n;;K2dIc~_^KlF zKa+uwx;A(!oK83Jjb9kK~{~qB>J4OV|K5X-eg#T1hjuMZ$npW+D645%NOg;Exen z2&o`f*4*js4v{JU_5x~?q8uh)Nk%c|0%M6_%P^4h1^85r(Zi4m?$_OUb1*zqa`hT= zm#srf<#perC%=&RnfW+F#T*3Qan-SmqQe5!A8Q>`C({YAfZ`PtREw1v8@nf@>fQf> z^)t2mVwPv?KFOdM!{-VO6lWbvXliGroDz+k3Y0fhKrDiy$kA6iDa z1L(TUrI$<{!CMivIQooP6#y?^4UH2+ zzZJ2^Ma+(irSDC=ZCGd>TZ*|fNT64)H_xZk@e{h%$GkudwK{IV&_cccgttFcG&CEh z`;AaMEHnAZpw(1wyLdB`UwQRV+SE{g_-)##gu9!Amrie`UO@*}P1spf zz(#V>(V*AStfkcbj$r@z%|HGJx90fr&aHzxpT-*48@&;VNV0A=EPR9QeYj^HQZ9fj z@DwH?q_lk_0hQfba|cwg1~2nTcKt))k&FTW2eI(f#msMLYC4Fk!K;u<=iGUh>xoAV ztj1tiaM!_SQUz>y+zfL!Tjo!%C7Nbe`Nle16_o1>UlJ>kgL_ty$riVQl#ttG z7=P@0S0p|eSB#Cf)Ow(jK}&20Q6_Mi;b((Q8fri{TV0#Bp!~y0k0G<<<0qHsPsB_MKf3>gAKCmi|h%YDEcCojOIu57e+D+4y?4=Kd8dX zV!(1g#8vwu&)~UYnl#+qI&ca^BuC)|&>4^xJACB^w%#DAHYv!Lir@)aN>S{mi3kM& zUY262e)`sr#!zsb9_p#rbclX*Cns<$X+=Ir`10GK-nUr!+2xX?8Ep zlQp<=YiHq3!;4#Ucn-3@DD=C9e9|bX2KDdoRh`a*w6izlpN?d}XuHj85`DMizkO7j zI9sHPZIc9cp~|MS%|!q{?*fb%ETfzrh{+-SiY5xd$zn2r)8dXx+-B03ER|jEyvDDE ziQGGJA_-knx2K*E;|6hjnm?pLsy3a)*td;bS<@MSb@C92AqwGmq1eVfhJOqo!#D=~ zH9LKt$gfb{-+OT#X%Iz*hC5H^{&L^P!|J0ByDU#BXi+1 zrQ_5}T9Bp6uMkuW|APHB^Q$>ULmJW((yrsj6{pMJ~Re2sH!DBbBaD6#}iCw&vQ zkhX>(Da2QD)ExnEkYL&HUlQonri9YiseGANz%TumeHl6Sgh{F@mJa`|IbE86`DOKD zFw^+_&ASr&)B_CrL7sH~Cfe(mZrJBSNdYaVaEQ<$FB0Mjgr#@?h^0_8zDt<9XcBgn zK%eLivGEAv$75@YIDQ6mnOZ@<{-vrP_ECz!N?)efC;!Iv2bsF47GaXNcz308aGa}! zc2?FcQL}Ju!ouRAn7->WtepC?H$Go-YSUT_bK)C7S#i)E8CdK+M!rKpODJhaE1j#< zZ9(KuBw~=-bj<2R;b%Z+yV~Q%r*T#H&bX@eQ?05X`3+ywWJ-af;ijSWgfxQB~-(11LvJxa6IsKIiYc z;xjNiPduNDA%TfRa;WQgr%iUf0-g|k-IfZMVBe2OHtO50xmV0XO9-1#lBTU@NfVft z;6g+F`n6uqK)Hr5kw_pF)?a{II#s?O&X)(+$!VC3H&bcesTO}fi*+-1}0^yBsZ<~kgfA{=739eTM|2+kyc6yi$kup8#- z7EZ3Ee)MjQ_rUPQb`m?N&*;w2MksR!Q_Y*!I!q*6tue%o-F`=Ie2{DwR**NI=|Xe` zT()k$f#fvU=w>e3p_vio9@WywB8?b*_^Q7N)l+6to#7cbS%eWV;UT?rs(pcDH{dm- zmzLtNM0%|cUlaNf7lb2LaF!lHT^v z9Z+Rz$|1jHsi1V37K#MwWfl{#v{k8X@tZ&SQ&|yyv1Vp)Wd-TdKI$+%307a0qiZ+x zpb}3~$g#uyP2i51IyI0ihwa1A!A!<=h@}ZtElEx>X`wE_dTY+5!}uIeAzv0x4gi|E z^5ll-qECWO3mQ~RDKwsc(N6sP3y=U9ISt^i22vJoZwN5M2(yKRnQ{Y9+kMeJG|E-Y zgCiLmtprMo`LkM}+f4jFghwFQW^Wgza24YqbfOk?AIs{Ckq76r*vxUajqN%Xd${PM>Rb$e)VP)9d_JssA^gj z6{+&dPOWUBq`=m;#`_Tg_zo(u?GL5S0(RBbJjtL|TEYOTq$rHdq$6H1BGbrUHD$Q4 z(Wv1#=@ipUUy_%~CCmh?cH4JndcT;de;a4yAM3KPc8mH%^Y`ZEbV|51O;3zwZ_~jN z;lH%~Xtoux`IISEVC$(SO$oATsV?8pLac83nP}U|@M-ePa#;Fp(&@0c@YP;Xe2BhI ziu-{ho{04cn_@TOG8ODNj^^&$M+0=hYfhl{_I=1$0@f?`s|JnTowXWo2hsikeVnXE zrKu8V$1>ieqb!r+ZxMg!?=ojAt{@;Q9Ndvh-@%4?LutxtDYYoor8W5${cAVAB8^3$ z3kvV<9UOup8>N=>pAautGJN5>FL!P^XY%DwHQ$|J#JZ(Qf7-ypOyL73f)n+5kLICg zhw4)my|oZHYlKM!`P$>cco)e=vq}}vOS^L9GTkXEN=Ywj5SR=MViafuff@lSD>OBv zB7i$pae424MJum#^6u*WDHc>}>WwRN%~Mqr-|{nP=4JYZw0U&47j3=Uh(-IP4fQGh`wm{r%vc8+wP*HgE z3o%TYy(cWLRD27=*{Sr{0E9_e>=~9@Duj(2*Q@}BX_Rc9RI8%?Wo<8iHCfkdnthN# zl_f~9Tvf3vd8_MjqOIkDlVT(u1%AM4YdD))hVJQ$hYI7=#!ju2Rat7*z)H0%YamUk z#{(-SAo>J~e>L3wLkzd{`6|HLZ*m(6&7~6&o^>k~AQNl8tFOJJV|s2W?!>jqrXdVP zGdfm!tK4nIR1uJbYbh;!jz{W(|Hx{?}<~p$hDaz zbkie7!wr=6l#HPhfu|oMDW|o4tc5@&T}K4wv~~b)+ye)VJ8eU0Kh+#I2fgimRIP)+ z2p2Yf^w|Myhb&5(H`V45+7?YQm5bH!;fx1Wo_SMGf8KZ2Q2iz|{MueV070I{J>z6mRnk3@>*rUBXhCy2|MD3E(3f80s z^;wxUN(BGp>1-LfCmjk+m>&;7Gf1_ax!(15`=i53{Ft98X-K;-{Hz?C!W^7NOc}A* zEK@FV2gBgJU6_H}cR&S4OolIZt95uKZUS&NzCj7r#Bv6PK(5&)e5$IrjyjsFsC04MzKW`;_U^vY+g*3;q~j1#Ern_$NFzQr@t4B7ifd+YrXu44xKynSg( zjRXN4GMl_z{CSP1;O+RZe{j1!A1-ksjTHHP`VBkwNE1GnYip2xuup~2zyuqd!|5YH zbrpyb4M7-WFY&iqv2AY)vOo)K*7yThOL>G~hW>vRGw>2~+RABQfGuqNB`H%US49B) z4f`)IPR7iH#Mmp$3;%`P783aW58=5dRJ;40t-%Reg71boRckPvLY)5Oo5(Do8PJ*p zH8X`LU+X4G4Fs9{W%Af*y)->r4Zbt0vOjV9rZR(A#%ZL~!qeb_Zi;zKn>l>Im|&>< z#tTO@G1%PEcU8cnP8}@?kgIY&C8I6=(-ZDs_blDGzme=YSot{uhq6eUxqjS~5zl~K zlA`Qb;Jw zX`mhYB1~G2YC%5S<|y~JTr-@xcXy4Aa2p{~lJF_6P%7qY_|GrOtxOgoK<~A$xa?Dn zH-;3`f3m-eTP+E~XdE>+!q}_)qBF!NC2wn8vrjMI>2fhU=LBWz_@Pf;UVJp(U2xz&=@J`kX+j2CT>@r!&`tB zV5RWo9#+VBi%7pZ=~{2Xg!ebgWTFUt3eNV>6q z_?tiZCtyH`ZrFoc%|>epYvSBjd4I?|N@JT*B*Fp_c2Z{)WEDow0eUdZRli22;Aa#j z>`~1eV5H5@SIJWpl%^{&~I$p7%3g#+? znh{3k-+hr6FYO6*o`gWgFJ=*Oaz`=&QTo)w@cU)J42oa#QF{mO+ zuq6qa$RcI;^IQ!_BYPhYG(Tzj-!M(KfJ6O381)3w98{Bksegw_zi34;4_`yr+| zyYyiB^QY+d;S&C}vbgqO6@HT!yH~GYyE5wUwZ*HJ+G+x`NG?s|@hF@y*w2>ly@!DW zuV}L0)r8N*AS zm9fWgg#!zY;sdNAVn{VU56HIqyC`4mN1!hbG=8_?nNi6fXJrM&>j4u0N(8IE6Fb8B zNfXZ4{6*V3{sO*YLOvr|{z3xl`6`9gKN?C%PHib>4^^x=-ID5-VFNvY8f@*_td21K zZms+~1?xnL<1CN-6gS!D!=i{4zY)goa)>;99+t#x4AeyiUb?GAu8BwLOw(s@umqt+Or zA|;zr_~*j50)P_$aJ_H)TJnC{^i`LAiv;l{~98xcD; z6{%E-X(8+KZodk2hmq=Fn4ITKxnXqmC1#k=b!)c|ydkz~a@8BH`L3uSH*w8@i_{M8 z3-`u1EH~WEmO=Fr!FMy`9%@zZ;nRcHP{4PQXjKrtvp0B+vdgXESCGL#y#@OfU4i+R zw=QojTs_}fxbz1XG|edtUXVDj32C=3cIRaz?2nBYPeMWm(+~qf=(6~4%nJW^@eiu# z(YQK&2!FvX7GMHn-Poxv8IdyBK{?fVnhpthYzI;^Z2F?anJ?L*l~` zf`@MEK!`yYVo`YlnyZ=!$xzpR^(MA*x zjF}S_XZk%r;3rLtQH{vg8Sjh+`(FuKG$I@`JPx+r0NNsx=X2(#5roN( zW5Gk*qyha1X+!%RPQg#u-Vp*UOD@x!$N%+Es=ax?Y)Jr`vn;0pLlg;tsq99pd-a5G znX>3@flPwIyhm@sqWP=9AHeYPiD>jp1omwBkrWK==NbGy`!EBJ3UW83A~f6i_~K@N zd(zr%^U}f{+lGm3+#}8fRCvtf6W3b-A!FVvfNpt2Q7(O5l_P;;m zDNT~Yok=lM5GDeSZ{X&Ebyw5)*l&RPAElv5$MC_u4&_OT6#lr88rfuSh|^)5Qe8Ai1jMYlXr0i| z4!wgHa*R$tv7hc`d!pd?%BJ)}=bNHAaR^v{t=g3iY1Sa|1F~Smehae|!Kb zq_>Z3>&l44;@`bK79@i_KiG%AGLA=y0XyJD2NzoDiW)~TbLY4_I}3nqI02xl3nIW2 zI6U9IT=su}uL`o;w93mp{GT5Xit9v?YZNCdM`XUcP*^Ko!pZ7GmAFN-8I|pDGK|xJ-b4U}s|c~Wo(g^AD0)E>#!(5Zk?Gm#GK4M^B}e87 zlB5Df;czelwv65YMpv)(uWx+}Ns>Skx{)Nw3Zh-?UeQsr=+<4hgssAs*_&d&OXBLP z+C+I~`t;^6)}~jWq@CxI&|U$dow!kI5hZGipi6Ovc2%$v(>%M^b-9_0*aL_21fns0 zA*Ui06E?{uWh?b?qxG(5-z-jUew}`bwyu2Kzqo$ZQ)HGyNGT~fXFN%&bc#7*f|evo zrYau310M@rhypyN-u|ev%QiG_K4Gs&Y+>HDAnz?b_-6Y#@!SN`|E=$5hOsR=9F9xA z@Zxk%qsCc$yIK+7{tyLvB$ub%D??}<0>nYyFuC#aRhJvf69~JuB?E2NtxIvRP_32e z_-37g$Z1p3xP@yA*VoUtuGJ+wZIcd^n>@0J>6VO0x2TWyb~}ip++@bgSxYz!AI2*e z|Dd%%VW5E>O+bRywF+e`$S|eRDuXI4Lv)`EoWm?=M#JF2Yr1^BI&&7za>8 zz?FM>Dd57$`pS)eVEOidq6VsDQ7wV#4iVUdt(UlWhhp5{+QJ{Avx@W$xfqvl z9IG-P59yJ7=kGExh&nd0%^vKYqY;gl*IGC%VPeQJzDvQ z;>^#_&tJcEjmp;<=UowFyMmw4E-^XpDTqnly`$_rcHNd;#aS~ib)>c^tb*Dso1d8d z=FBJ~)4QSO8(!+bVyH8=lSuxH(`V+SrdM4NnO|!azT-iCEyk-vL%8T`2G9>zb+)RSkG2fNR3K_@Zg!$O~VdW(QEp^6*MUcs?}@jc-5?g9257x zMk0}Q|0H77Jf@c+NMlY!$cP7G7bx+dt`YgN%;K9yP>gVjcZM}yqo!sAS&%miVCld( zo`cq&m3PD00xtSAeK9#gn(jn^oVbE_JE3yM-uDSDHa{iAZ{@@hY0cRlIS)a&BHn~A zYlSQbu<)@EnqpWA=uBjehWYNRw~m`BSjKOv^}nO{t9D_d*H^d|oT!~OQ=4K~bA{-r z=d;ic=H9~}?%99|nXnGUDqfeBxCYBlZ+8CDwF~}F_wp4=0cNy-m!#ZmUX{t7W(pWL zSw>ZBbrX!52O9gJ4ZYz*+_ZLZB?z?_#%i3YqrH6y0uaCippJ;+2iIfu77-e{;ZY+ zzbWFKEJXSUR<)CfRa)=m)b3wE%S{Be+akFvz|Gv@t3I!)ZC4eGi%q3df_d`+ACvQ) zJ;Hn{N~Bq3f|+cdkb{}bY#QMN(rZ;Vp`_E~*OTTj9mc1&)?~T|A%chI(!v#B;Fat6 z7cZCQuLAFiIW(;NeQb7ZB67WTos+rrF(-mb(&a=nPee3bSJC?{2hGl1!ho8U)6H%| z?+S=O3by>B*c1{6JJh^4pKEm>E*H&h-V@HGVr{z2gm2OaE*yrI4JXxl>k4{m-p2`N zV{?FrOuZWz4PQYv7Ow7q9zm z`2;7nbZqlZC{qo0P}PIx)=8syNaOno?r{~Hpmwb85-DU=3Ww1}&DL9NNlm*0SkmGe zg-Kh4Lk%dixa2ICUY-Zdc#;E;Zd%lkDw zo-~m9{tJHsGqYH#EUUegpa~2t=wV@G1=OiZ|_g=_^3gfV1p95*#SZ+r;dk z4k_0|)L}C8(cnX6Ml|mzF9fj?hi_28GcS+5Soy7^yBLi6`;(2>1R0^4`9I z%?tZc&+i}~9o$*k84eM0vxK;KSe!1PtTcRz;Szp<(e4`ah$va+|3M(V`TnX3eaym|=036xobyP)LGALAHxGm~S;}&XBU-Z;pB0e#k3vmJPOHleARCaff7io3j%=L1>+yWuA+$0Z9QPrgtSD!fshl;^dO-c z=_E6*=VIN0g!f#Y+Y!nh}Rt2}xQJyeyN~MV?VCa)5L5aZON(^jfHN~XRr5g1T;NrwsfqZ4w zy%q%<$FBs12@!@SvY&t}mUG}~2;B1nCfTtl&!Fnhsj)_BNrjje6-8^LQqG_Sy@DJq z9)h%?oBnK@Z`vsWjpR++l294}ZAUt1$VjHR=5*N+b`k8rZXkrn<}>bM183J3KY8)# z;^SpR`BvUS0faM6YH$Gw_j15!xik!Me4c<_`RVt5=l5pxf9Gbqf9HSu-uhpgnc+V_ z#zP0dc&=EVtf=#HzB`sxb$^94x&%r4BYn^YKz0rf55_m<=J*aiJ6wHtINF{A+t@ms zyL9o=#m@YtIcra7v_Beb#t*mQ^Ki6|J=mLDLB-cz=YId?c1qohH1BDXwBh(Sx1PalS*z5vd`%8m-F@kgbq%2C}^S27)wWurMC+K3fJ6+h#Ewj zR2vgGqPYX{@R=Y`TbFO!FTDT`9PZ(!|0;65`9m^sCck=Qxvwli?6`b?xa2pg4>!}R zxRGP#sd+9Cpx~6Itms{t-HoLFwgKPqAyzRjt2kC%_IZbP6wL@F6T7q>RtU=fsK38` zxKrz+Ty5y8kMxfTZlny7-^_c&&zyKnCWUnslbZ;!FosW;jC~urnfK254)$bxJGU6m ztSwx@m4=Z@*f$I!u4Q?Mqy51j9rYhFst{e$Je5Y5P(wV_U6Hl>Oe=tG1g)oT@NFs) zAa~pLPAfBO82%$@>X=ab!?}+DhVl@4>LaDqLS?yXDm_OP=odVCUyn!V~U3k_4Cz zAvt(5!-m6GpLyOXdFOztp}+(r02(+(RoDJrdsgUGx~!dES%UJb2zz-Yalm)+37$>BO`CtyZrdwo5~P$2(a!VI20lCcm64MV>bz2$ z$vYi1?JJ*U^a#t9#!y=K&$_B6v|?wNR|UDsSxbvLbCWOSUjcXZAy_E_e-q89LSH&; zJUsS!E-zYu!`{{lck2u3HkTl6`ZN|Lt-X)XW?z-94DE{rx0&bWJ?=%quo`Mrw*@$u zDt^=^Aka8NU#HkI?~TVhK;r~hrIrp)g)@I0fB(25s{i+Y-1)sf|En`I{O4RnRPSwe zdIy7lO9b@B$qM&uPZ!InJhc{A9zrPRMb80*Qk2;Ru+kw7LPY!9k{YwV<`bBu zl5chx0ryRXIT^Z{C;Y9||M!>w*YC{C@Sh(PJRy1A(~9wJGX}WAh>fNT9Uqe4By)^g zYo^WZG<;x11EP3|_dYE&6@raCq;8mjFprG6HY^LfV+B@{YTP~p13-^%NO27DF+dnI z8}rjtIhN_0IGf@_*9cO}IMD{$donw4@wY;yab!+Ir_n4@>a2lN0T(c`9+&=5AsO27YXBk`Vx-7O*=3==M1PYEyoPkCXD$O5`aiOIT0V zgP;2b+Ng>4HsVO{buzA9zgYP)!f?`z!}lnASLvXHdhFs^QgJ~)sn$Nn8l3C~N*kyv z|8$DV4TbwWymWAf32a~&)pb{PIF6pQ-=K`BK;r62CYc}nmEZebws}AN->?7f2JGGZ z=dY_FT>ky*5BMJpIoLww6R~lx{IvY^Z~w0!{>%UAZ_Lc_AAFtu_v;V-0e(ti`f=lj z|Mma#cmCObF*h^Af4-kSo0<9b2jjmrGlLvea9HZ@{c2nt@ZbF3fA~Lc{%U51|NL(8 z-PQjX-;n?|efA&C{0IN$!GAb2!+*-*{^$R8W(J1?#&vqrm%V@apZ?=V|K7|D|0%!x@A@Ciz#6Bi#v7LSul~>f=Ia0O@yrbW zDPj8KqYq}xg{o=DKmXHz@n=7{0mg@a{$?@Rzy8lYn6ZN@p8bt5`u;!v`~T?g{{GAi z|8eACFTeg^{r||HPh0bc|N5VPzW@CXX82FJIsg6#e`RI^Nd$4FRNvF;or_QX*B|_s zf9-o`xq+!7OI1V69Y6j3vg1Y-tlC{wxX9gY{q5LY0qKgUvGUWu`tR_&zk&bz`g=1o K|D=t7&HR6KY%0zG literal 0 HcmV?d00001 diff --git a/catalog/catalog.json b/catalog/catalog.json index 3be13f18b..c0fb5588e 100644 --- a/catalog/catalog.json +++ b/catalog/catalog.json @@ -3181,7 +3181,7 @@ }, "id": "relationship-tracker", "name": "Relationship Tracker", - "version": "0.6.2", + "version": "0.6.3", "description": "Tracks how the characters and your persona feel about each other. Add the Agent in Chat Settings → Agents → Tracker Agents for Roleplay mode.", "engine": { "min": "2.4.4", @@ -3249,8 +3249,8 @@ }, { "path": "client.js", - "sha256": "c009aef56c8b6ac495005570b38ba1d4047ccea5485cfb04f89ab16132960b31", - "bytes": 60590 + "sha256": "ee75d1c65835398961c5cc73ca7240f9bfb07e64f67b901dee3a5e84f6030faa", + "bytes": 68206 }, { "path": "contracts/relationship-state-v1.schema.json", @@ -3281,9 +3281,9 @@ "category": "tracker", "iconUrl": "https://raw.githubusercontent.com/Pasta-Devs/Marinara-Agents/main/artwork/agent-covers/relationship-tracker.png", "artifact": { - "url": "https://raw.githubusercontent.com/Pasta-Devs/Marinara-Agents/main/artifacts/relationship-tracker-0.6.2.zip", - "sha256": "40dbf026b4f88fa72a2def0ffa18742c113fb668902c310199b8f83bc4e90bf8", - "bytes": 198763 + "url": "https://raw.githubusercontent.com/Pasta-Devs/Marinara-Agents/main/artifacts/relationship-tracker-0.6.3.zip", + "sha256": "5e3d6fd318bfbd8c360c96857a5ecc1b596bf1630768789bfa45e06eb82796a0", + "bytes": 206379 }, "documentationUrl": "https://github.com/Pasta-Devs/Marinara-Agents/blob/main/packages/relationship-tracker/README.md" }, diff --git a/catalog/notes.json b/catalog/notes.json index 73c00bd74..b27f5e9fa 100644 --- a/catalog/notes.json +++ b/catalog/notes.json @@ -545,6 +545,12 @@ }, "relationship-tracker": { "versions": [ + { + "version": "0.6.3", + "date": "2026-10-06", + "notes": "- In the Tracker Panel, Relationship Tracker now has the same collapsible header as World, Persona and the other trackers instead of its own card, and remembers whether you collapsed it. While it runs, the header shows a small spinner.\n- In the desktop Trackers window, the drawer's own header is used, and Relationship Tracker's button now matches the other trackers' buttons.", + "highlight": false + }, { "version": "0.6.2", "date": "2026-10-02", diff --git a/catalog/v2/catalog.json b/catalog/v2/catalog.json index 3be13f18b..c0fb5588e 100644 --- a/catalog/v2/catalog.json +++ b/catalog/v2/catalog.json @@ -3181,7 +3181,7 @@ }, "id": "relationship-tracker", "name": "Relationship Tracker", - "version": "0.6.2", + "version": "0.6.3", "description": "Tracks how the characters and your persona feel about each other. Add the Agent in Chat Settings → Agents → Tracker Agents for Roleplay mode.", "engine": { "min": "2.4.4", @@ -3249,8 +3249,8 @@ }, { "path": "client.js", - "sha256": "c009aef56c8b6ac495005570b38ba1d4047ccea5485cfb04f89ab16132960b31", - "bytes": 60590 + "sha256": "ee75d1c65835398961c5cc73ca7240f9bfb07e64f67b901dee3a5e84f6030faa", + "bytes": 68206 }, { "path": "contracts/relationship-state-v1.schema.json", @@ -3281,9 +3281,9 @@ "category": "tracker", "iconUrl": "https://raw.githubusercontent.com/Pasta-Devs/Marinara-Agents/main/artwork/agent-covers/relationship-tracker.png", "artifact": { - "url": "https://raw.githubusercontent.com/Pasta-Devs/Marinara-Agents/main/artifacts/relationship-tracker-0.6.2.zip", - "sha256": "40dbf026b4f88fa72a2def0ffa18742c113fb668902c310199b8f83bc4e90bf8", - "bytes": 198763 + "url": "https://raw.githubusercontent.com/Pasta-Devs/Marinara-Agents/main/artifacts/relationship-tracker-0.6.3.zip", + "sha256": "5e3d6fd318bfbd8c360c96857a5ecc1b596bf1630768789bfa45e06eb82796a0", + "bytes": 206379 }, "documentationUrl": "https://github.com/Pasta-Devs/Marinara-Agents/blob/main/packages/relationship-tracker/README.md" }, diff --git a/catalog/v2/notes.json b/catalog/v2/notes.json index 73c00bd74..b27f5e9fa 100644 --- a/catalog/v2/notes.json +++ b/catalog/v2/notes.json @@ -545,6 +545,12 @@ }, "relationship-tracker": { "versions": [ + { + "version": "0.6.3", + "date": "2026-10-06", + "notes": "- In the Tracker Panel, Relationship Tracker now has the same collapsible header as World, Persona and the other trackers instead of its own card, and remembers whether you collapsed it. While it runs, the header shows a small spinner.\n- In the desktop Trackers window, the drawer's own header is used, and Relationship Tracker's button now matches the other trackers' buttons.", + "highlight": false + }, { "version": "0.6.2", "date": "2026-10-02", diff --git a/catalog/v3/catalog.json b/catalog/v3/catalog.json index 3be13f18b..c0fb5588e 100644 --- a/catalog/v3/catalog.json +++ b/catalog/v3/catalog.json @@ -3181,7 +3181,7 @@ }, "id": "relationship-tracker", "name": "Relationship Tracker", - "version": "0.6.2", + "version": "0.6.3", "description": "Tracks how the characters and your persona feel about each other. Add the Agent in Chat Settings → Agents → Tracker Agents for Roleplay mode.", "engine": { "min": "2.4.4", @@ -3249,8 +3249,8 @@ }, { "path": "client.js", - "sha256": "c009aef56c8b6ac495005570b38ba1d4047ccea5485cfb04f89ab16132960b31", - "bytes": 60590 + "sha256": "ee75d1c65835398961c5cc73ca7240f9bfb07e64f67b901dee3a5e84f6030faa", + "bytes": 68206 }, { "path": "contracts/relationship-state-v1.schema.json", @@ -3281,9 +3281,9 @@ "category": "tracker", "iconUrl": "https://raw.githubusercontent.com/Pasta-Devs/Marinara-Agents/main/artwork/agent-covers/relationship-tracker.png", "artifact": { - "url": "https://raw.githubusercontent.com/Pasta-Devs/Marinara-Agents/main/artifacts/relationship-tracker-0.6.2.zip", - "sha256": "40dbf026b4f88fa72a2def0ffa18742c113fb668902c310199b8f83bc4e90bf8", - "bytes": 198763 + "url": "https://raw.githubusercontent.com/Pasta-Devs/Marinara-Agents/main/artifacts/relationship-tracker-0.6.3.zip", + "sha256": "5e3d6fd318bfbd8c360c96857a5ecc1b596bf1630768789bfa45e06eb82796a0", + "bytes": 206379 }, "documentationUrl": "https://github.com/Pasta-Devs/Marinara-Agents/blob/main/packages/relationship-tracker/README.md" }, diff --git a/catalog/v3/notes.json b/catalog/v3/notes.json index 73c00bd74..b27f5e9fa 100644 --- a/catalog/v3/notes.json +++ b/catalog/v3/notes.json @@ -545,6 +545,12 @@ }, "relationship-tracker": { "versions": [ + { + "version": "0.6.3", + "date": "2026-10-06", + "notes": "- In the Tracker Panel, Relationship Tracker now has the same collapsible header as World, Persona and the other trackers instead of its own card, and remembers whether you collapsed it. While it runs, the header shows a small spinner.\n- In the desktop Trackers window, the drawer's own header is used, and Relationship Tracker's button now matches the other trackers' buttons.", + "highlight": false + }, { "version": "0.6.2", "date": "2026-10-02", diff --git a/packages/relationship-tracker/CHANGELOG.md b/packages/relationship-tracker/CHANGELOG.md index cdca7e094..6bb567d1d 100644 --- a/packages/relationship-tracker/CHANGELOG.md +++ b/packages/relationship-tracker/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 0.6.3 — 2026-10-06 + +- In the Tracker Panel, Relationship Tracker now has the same collapsible header as World, Persona and the other trackers instead of its own card, and remembers whether you collapsed it. While it runs, the header shows a small spinner. +- In the desktop Trackers window, the drawer's own header is used, and Relationship Tracker's button now matches the other trackers' buttons. + ## 0.6.2 — 2026-10-02 [highlight] - Fixed "Invalid or missing X-Admin-Secret header" when Marinara is opened from another device (LAN, phone, or proxy). The panel now sends the admin secret saved on that device and explains where to save it. diff --git a/packages/relationship-tracker/README.md b/packages/relationship-tracker/README.md index 32cdc0f0a..985fca6de 100644 --- a/packages/relationship-tracker/README.md +++ b/packages/relationship-tracker/README.md @@ -12,6 +12,7 @@ The Tracker Panel's routes are privileged. When Marinara is opened from another ## Use +- In the Tracker Panel, Relationship Tracker is a collapsible section with the same header as the built-in trackers, and it remembers whether you collapsed it. In the desktop Trackers window, the window's own drawer collapses it instead. - Every assigned character card appears in the web, whether or not that character is currently in the scene. Defined lines use the four fixed color categories: positive, neutral, negative, complicated. - On desktop, hover or keyboard-focus a line to reveal its label. On touch and pen devices, press a line to reveal its label; press elsewhere in the web to dismiss it. This works for character-to-character lines and character-to-persona spokes. - The editor uses separate Character A and Character B selectors. Setting a relationship to **Undefined** and saving removes its line. Manual locks stay protected until **Resume automatic updates** is used. diff --git a/packages/relationship-tracker/client.js b/packages/relationship-tracker/client.js index 5bda816c4..825039c30 100644 --- a/packages/relationship-tracker/client.js +++ b/packages/relationship-tracker/client.js @@ -16,6 +16,34 @@ negative: "#fb7185", complicated: "#c084fc", }); + const SECTION_TITLE = "Relationship Tracker"; + const SECTION_COLLAPSED_STORAGE_KEY = "marinara.relationship-tracker.trackerPanelCollapsed"; + // 24px stroke icons drawn like the Lucide icons on the Engine's built-in tracker sections. + const svgIcon = (paths, size) => ``; + const WEB_ICON_PATHS = ''; + const CHEVRON_ICON_PATHS = ''; + + // Remembered across reloads like the built-in sections' collapsed state; blocked storage keeps it for this page. + let sectionCollapsedFallback = false; + + function isSectionCollapsed() { + try { + const stored = globalThis.localStorage?.getItem(SECTION_COLLAPSED_STORAGE_KEY); + if (stored === "true" || stored === "false") return stored === "true"; + } catch { + // Storage can be blocked; use this page's choice. + } + return sectionCollapsedFallback; + } + + function rememberSectionCollapsed(collapsed) { + sectionCollapsedFallback = collapsed; + try { + globalThis.localStorage?.setItem(SECTION_COLLAPSED_STORAGE_KEY, String(collapsed)); + } catch { + // The choice still lasts for this page. + } + } const escapeHtml = (value) => String(value ?? "") .replaceAll("&", "&") @@ -319,6 +347,22 @@ } } + // Collapse in place: a full render() would wipe unsaved editor input. + setSectionCollapsed(collapsed) { + rememberSectionCollapsed(collapsed); + const toggle = this.shadowRoot.querySelector?.("[data-section-toggle]"); + toggle?.setAttribute("aria-expanded", String(!collapsed)); + toggle?.setAttribute("title", `${collapsed ? "Expand" : "Collapse"} ${SECTION_TITLE}`); + const body = this.shadowRoot.querySelector?.("[data-section-body]"); + if (body) body.hidden = collapsed; + } + + // The desktop Trackers window wraps each tracker in a drawer that already shows its title and + // collapse arrow, as it does for built-in trackers; only the Tracker Panel needs this header. + hostProvidesHeader() { + return Boolean(this.closest?.(".mari-drawer__body")); + } + async loadPortrait(characterId) { try { const response = await apiFetch(`/api/characters/${encodeURIComponent(characterId)}`); @@ -621,6 +665,9 @@ this.setActiveLineLabel(null); } }); + this.shadowRoot.querySelector?.("[data-section-toggle]")?.addEventListener("click", () => { + this.setSectionCollapsed(!isSectionCollapsed()); + }); const settingsDetails = this.shadowRoot.querySelector?.("[data-settings-details]"); settingsDetails?.addEventListener("toggle", () => { this._settingsOpen = settingsDetails.open; }); const helpDetails = this.shadowRoot.querySelector?.("[data-help-details]"); @@ -913,6 +960,34 @@ updateProcessingStatusView() { const slot = this.shadowRoot.querySelector?.("[data-processing-status-slot]"); if (slot) slot.innerHTML = this.renderProcessingStatus(); + const headerSlot = this.shadowRoot.querySelector?.("[data-processing-header-slot]"); + if (headerSlot) headerSlot.innerHTML = this.renderHeaderActivity(); + } + + processingLabel() { + return this._processing.source === "history" + ? "Relationship Tracker is updating from history…" + : "Relationship Tracker is processing this turn…"; + } + + // Built-in section headers spin their re-run icon while trackers run, so a collapsed section still shows activity. + renderHeaderActivity() { + const status = this._processing; + if (status.chatId !== this.currentChatId() || !status.processing) return ""; + return ``; + } + + renderSectionHeader(collapsed) { + return ` +
+ + ${this.renderHeaderActivity()} +
+ `; } renderProcessingStatus() { @@ -920,9 +995,7 @@ if (status.chatId !== this.currentChatId()) return ""; if (status.processing) { const history = status.source === "history"; - const label = history - ? "Relationship Tracker is updating from history…" - : "Relationship Tracker is processing this turn…"; + const label = this.processingLabel(); return `
@@ -950,13 +1023,32 @@ const actionError = state.error ? `` : ""; content = `${actionError}${this.renderGraph(state.value)}${this.renderHistory(state.value, busy)}${this.renderEditor(state.value, busy)}${this.renderPersonaEditor(state.value, busy)}${this.renderSettings(state.value, busy)}`; } + const ownHeader = !this.hostProvidesHeader(); + const collapsed = ownHeader && isSectionCollapsed(); + this.replaceChildren?.(); // Drop a toolbar tile left in light DOM by an earlier view. this.shadowRoot.innerHTML = ` -
-

Relationship Tracker

-
- Panel size & layout -

Choose Compact, Standard, or Expanded under Settings → Appearance → Tracker Panel → Desktop size. Use the Tracker Panel header controls to dock or detach the whole panel.

-
-
${this.renderProcessingStatus()}
- ${content} +
+ ${ownHeader ? this.renderSectionHeader(collapsed) : ""} +
+
+ Panel size & layout +

Choose Compact, Standard, or Expanded under Settings → Appearance → Tracker Panel → Desktop size. Use the Tracker Panel header controls to dock or detach the whole panel.

+
+
${this.renderProcessingStatus()}
+ ${content} +
`; this.bindControls(); } + renderToolbar() { + const hostClass = typeof this._props?.toolbarButtonClass === "string" ? this._props.toolbarButtonClass.trim() : ""; + if (hostClass) { + // Wear the host's chat-widget button class like other packages' controls. Host classes style only light + // DOM, so the tile is slotted. It has no action of its own: presses pass through, so in the Trackers + // window they open the drawer, as a built-in tracker's preview does. + this.shadowRoot.innerHTML = ""; + this.innerHTML = `${svgIcon(WEB_ICON_PATHS, "0.875rem")}`; + return; + } + this.replaceChildren?.(); + this.shadowRoot.innerHTML = ` + + + `; + } + render() { const view = this.getAttribute("view"); if (view === "toolbar") { - this.shadowRoot.innerHTML = ` - - - `; + this.renderToolbar(); return; } if (view === "tracker") { this.renderTracker(); return; } + this.replaceChildren?.(); this.shadowRoot.innerHTML = ""; } } diff --git a/packages/relationship-tracker/manifest.json b/packages/relationship-tracker/manifest.json index 67398ed8b..1c06a52ef 100644 --- a/packages/relationship-tracker/manifest.json +++ b/packages/relationship-tracker/manifest.json @@ -10,7 +10,7 @@ }, "id": "relationship-tracker", "name": "Relationship Tracker", - "version": "0.6.2", + "version": "0.6.3", "description": "Tracks how the characters and your persona feel about each other. Add the Agent in Chat Settings → Agents → Tracker Agents for Roleplay mode.", "engine": { "min": "2.4.4", @@ -78,8 +78,8 @@ }, { "path": "client.js", - "sha256": "c009aef56c8b6ac495005570b38ba1d4047ccea5485cfb04f89ab16132960b31", - "bytes": 60590 + "sha256": "ee75d1c65835398961c5cc73ca7240f9bfb07e64f67b901dee3a5e84f6030faa", + "bytes": 68206 }, { "path": "contracts/relationship-state-v1.schema.json",