diff --git a/.env.example b/.env.example index fb6b3cf..b9886e3 100644 --- a/.env.example +++ b/.env.example @@ -1,6 +1,24 @@ -HOST=0.0.0.0 +# Postgres +POSTGRES_USER=happyview +POSTGRES_PASSWORD=happyview +POSTGRES_DB=happyview + +# Tap +TAP_DATABASE_URL=postgres://tap:tap@postgres/tap +TAP_RELAY_URL=https://relay1.us-east.bsky.network +TAP_PLC_URL=https://plc.directory +TAP_ADMIN_PASSWORD=your-secret-here +TAP_COLLECTION_FILTERS= +TAP_SIGNAL_COLLECTIONS= + +# HappyView +DATABASE_URL=postgres://happyview:happyview@postgres/happyview +AIP_URL=https://aip.gamesgamesgamesgames.games +TAP_URL=http://tap:2480 +RELAY_URL=https://relay1.us-east.bsky.network PORT=3000 -DATABASE_URL=postgres://localhost:5432/happyview -AIP_URL=http://localhost:8080 -JETSTREAM_URL=wss://jetstream2.us-west.bsky.network/subscribe -RUST_LOG=happyview=debug,tower_http=debug + +# Web dashboard +WEB_HOSTNAME=0.0.0.0 +API_URL=http://happyview:3000 +AIP_PROXY_URL=https://aip.gamesgamesgamesgames.games diff --git a/design/logotype.black.png b/design/logotype.black.png new file mode 100644 index 0000000000000000000000000000000000000000..bd033b4ecc0f51546fc93ed48917713944afa08d GIT binary patch literal 231408 zcmeAS@N?(olHy`uVBq!ia0y~y;Fo1!;5@*=#=yYvFZkwb1_lPs0*}aI1_r*vAk26? ze?~}U&3=9eko-U3d6?5L) zE#LCIwD$SO>%Wbh-5Gn8G`iS0Hzp)IUXN(vG8Edq+UZI}g07*o^g6X&yF6XC3-sPy zb7Y5@0cTi@Fk>L2vx!5}Q4O`E?xxlx#%Fu$|K#yJVhDb>cYb`O&AFfR|bfC%D3KS{`oeiw% zB|Hc&h{b*Gg#?I3V6izD4G}yLOUGhyGKfath=NfEAwq+JftDe(J+B0Al|fvnuIf$Q zlk38(&wk2Qy{S6+yY$;BDYsRuRc_Y(TwlJcFa8(1=ek=b?(bJQIn{ID_CJsB$N&2^ zNyXl;sB)6L+D@I5NAK32oc8}RB=KBdzN@+fo@zEUty(qdPRY-mKR>;W`}s5QQn?>nxA#ZXzJFOXzBbd!FAS>+Wiwl)GNB z*K^X>#Zt>pqJyiL^m8ICQt_&fH0V zC*84{-1yPXGjHn26&0BgcmC{DIvGBx#`5I!bw6+2o!;vW*4wZ(8IhcsL#_s?H9xwY zZlrgw{AcNYmHh?=z4O1W{qvjS=Vs4y-bHcc^|=|MU}vu}KqTmh)X>t)D&-M%dGnw2 zdDdB;>{H%-L+ie0(YsH@_ddOTzU%j@g`r?w8(I;0E`c@l>O9YPRlU#CoEJxEPfsK7pJM?PrB$+*b{@gzBL(O^d3^Q?6OY4)7p65J1ZNFQ4^M(r8 z_#c&sJhg#yRn}~k?cPQGe|}&1vCT6pMcnxLDV67`Mhv#D*XTdH@5JZ#{4wFDpR(~QTrRKel zp4592lP=eDGjZGq2_)?|5w|Z%SW@!e*4?g&-2ql74`D(tNn4KvrnG* zaeeZgq8!0BGuNjX+12?^y1eVRI?Q-QB;)t2x@CA$(Nk{b6GhK5$!M0twfd8}PrUd3 z)c9^+O#wgHJ;8_qv0-LN=uns*j=6gNGddX!^05!t#~UsnQql~o(5<O85g;R;;?6T6FQp_DOeA3ixyu@p}55O=tuXE_tvy)^d zKKbaGXK%s&qg-6QGJ2AE`S+br=SIXLLUPT{RZ;Vwd{FWCDTK&vq2lko>H7njgwM71CpkUiuHKywO^OFjAqs(n(Ac-D zJ_dTeo1c=IBe;Rd>ZGP;+}tO%clRbj13da9B6)=dhE}UtTAd7@bSI~PZ$s6-DNjN@ z``*9vhPrh_DkAhE0z*r$tL&fr5!49`3=DN{p}F&)czVv8 z{bX8mal_FMM^*H_ikzy0r9r9YfB?c&70*>!&sF?=Kdn)z<~heGcG=SNUv_zYMhOR4 zD{paN&fo|{~5kX=;p}Di4aC*i~Nm;+ql;Qg8E|ufzKli@-_YIOd8Y)xaW#a~g zRjVf1sGU4L>5Z)gdqQ#SoF}TDao6vLLyenZj_?upf>nH8pN@O-$=zkzFm>OACp+){ z-FHzD?9R_eAZ9Z#FeLPWDuB2-PfmJHV|&i9W=Zg5o5j2B&8=8KDih=+ATDNLU^ugI z)h)%7#*_CLoYZSBW(Yei>KQlvN$cI(mk`4mBGcdwHE;(xROzJlq&rzTya#6ejG81~ z@_jxuCCvy$IJ0;W!kGpq*eBcU-K{Sn%LKCAAbXk{xZnnHHk7V<^(^%3HI?+E4 z8IGZ)&sFk0iXOZWYtY=Lcyhj4Wm$Q=6+}V8EJS)gGhx*($4T}+pSGxYHy1Oc9i2Ye zX5(&ud8k9zLc^bdfg#N$RCeAIQ_noZU91UgrIXB$UIn)~8+s81{*0o~t>KfxRV#12 z5Noh3a8wKLw>N?Y_$-}XK9GMwIN|ZCtlCgp{gXcpE!ZM7f2&w7UG*9HMWSe^S{ zB|Y@&`>@bnNF!Y0B$CR&PNC6-0)C+?;qYqcPdM`8SK9vQ`vv_uDv8A_%?*aKth~>fk9%ys%xQF z4L$87o0A(di$f+EuYP5=*clWW4A;86Az7S(fgyX%syfTbuaA{W-(@;b`pa?B@{;eJ zP<3Imk<=|&wQc39=W0Jgc={OA4)RXgvw2lqWa#Zah=(J5_2B7yP2;Lt>L>sE7WH4$ zWyqPhd6Lbd-TUpJ(PE15@rF~YUM-v%V{T@_HY2v&zbG&C@2eLAAQv`VMKmxrc&*C% zy{am8(tfW^w_nIHY`dke@-rY*));Ew($Mn$Jdh?3o?#ujHGY!tBpHKUtPP{&(_;1MmGD7Lu11?@UHDHutPyUc@=uq z&-31#CxIa6X--$IEGge#4=oc)3*n*npep35?xZ<#&B+XA_x(KY#fJJzL6T`fEFzb$ za}K?0eNuh$ozfC+2IK76D*3BcJ@12Lw;g7P((U@9RefHc9;%p2-eo#)X0^)t6|0h0 zuY$_Q1ebn)0j}RbIdf%D=xx=X_MUwbcbN{vR5?#tUj984nxg;p!mG&xS3|D80|npu zi@FSFwhB*{xp_Ann$bNF4y;?X>YL}MMwQ?Fd5j5)bLKpGc=zvOXz+P221hd}jF&lv z%FcMQMnZ;pLz&!+Creh{N`wSS1Kh$5A6C7(pt4+L=gSvj3}WXJJ^#grzO{iQr-&S= zR~Q%$IIUi#u3lL`Db{T}!-fs-raoy7Ep3L_c;FGD>=O&}-J^7J_M|n^cbN|y+MTX; zI9a|497#MV(d8R@wG0$p8y812Jdir)Qd;b+9wJUSde!rsQ7j+p5Z0+Ve`S9-FMMyeHFhnYHBe+AimQU(G z`aq)LX2E`y_bXSuh33QVgYZN*qdIhJzFPC+TKDY?2hu7WCY6U=-39gPAH-P2v#8Lw z^Pebtev_NS#1Q>R(X(&8*8A_^un(JR-vagv0|Udeu+Y1zC*3E%vE0SVuVk@ubO8I4gT1xcNc>jiXc5^k)R4J(=*Rx7c0ZEGi@sTuit%#=DW0hgmK2J zvhJ%aSKoQ_g&4z(py_Hm)63^W8&flM5rO8jVpX*I&x}cX-L^9vnDTqN3VZ2yb7&lF zPR@jnlpOfFa+S3D&jg-6#)RNEbDykVm9-n{(Km=P71I6M>zQZ0iI^sCzFoFr1N#q25)i!qqE(z2IY*kr=LGxn#G!86>aI z$U{_>!7EqAi8LoO+=zNTc}_%VbuXmkTZX834_sNfN?oP0c#_l{CWg} zEG{Ej840UGuC7wI)RqEg zqZxV#vjRf5PI>ayvo5oQn?a|8dD5OLXka2LfQF0zG)^+RyE7bUs!R%%wS+oI4k^We zIsp9spVq0E?qX#SyRg*r-L1RN`}rCx14DPK-c&z%&ogi5pErB|+_5?7>Zun|w{Op% zUsF}YOTMczPXd*Pb%;t%V$rI1Q=UBbER(v+#K8R~*z?^*aN}w7vQ>48C+|*{newDT zrQD~ed+iU^|E4E*dj9*Db$ z8oXVV^_s zgTX~lzW49=d-xhNgG0A_e)^!o?^~1r>Pe?Mt1&;}*SAkE`Obe_4dkKEhu}p^L~!WW zSt|b0cNrP}^yI7UOfIjlF5&123$0eMR604)^PP#s^Iv~7PD*32cbY(CT%o@@74mqhc<7mx&=}`Sy&5!$U#;@M3o(X-$upkNq_Pt z#j-u`DR7*0UA?lnydF~Y86YLV(9lqQpHJ+Itr;48%i<>OF8SVeQE@}is;t^cizol7 zn>3r}+)OrmuOg>O*Gs$BMO}siX}_Z;{oVC@(?!J%OIN*8 z^X&8fbmO9~@uMv&|JUxew*nU(5=iBlLH(*#lVs$ZlNn}&R;yNCd%+ImHB-K zKR(-$Kk4%7SC2zWAtO-|G{?oUP`i-vbvbCj^IFb@aS9@5!~r z(a%n_spNZqn)B}8b#V9`c!g-Lg!zQNo%Q7Xw7Wou~iJ7#J81@D#&a*f)|u zot@%IZwx>|S}Hy1&dIIGZYx(ESNpkH5jqV`?t$u|1FH2zJFihq@}%o zuDn;$1=S(_Y`hB@uJHv)gtFn%(l=~KafBO7^O7)rt+kf~?s*kMuXL<6c=Rd`h zm3M1Ta@EN*G_)eBh@45Fgp@X^*=;)mL-51UyML`0E6>mm{rcMT-rSVCFT}#Gih9P) zdUE64zM>KyhUj&x%KVG=tL&e2^2CpZo}aaQCf8`5wDh!__vDJo{LICY3=L-yl~~TC zRaI`2>?Q9qGWhhKp8V$SUGZMNM7xlyb0^oBoIJNUI>LCq$EO+Z{((v^GvCnM$tT$_ z$Fk9S+27at96K)W^=aO_fA=29F*K}%6s`;m3=A>rSKU%R`FzqFt6i)N zGqm(yyqn(Jm+&q0s;-gbf_Ij?T20FXCn@jx?Y!8T;l_?tw@gpwt617hUVUuykLS+z zexJ-e{m!H`{AmV_kOw11cXz~ve(h7~mjgL@ZocZyP;ke1^XgS)o}V_Vu=nI8&hY!x z5p8XRcrPajT{A$@wak z;pOqBR%{FjCh(&DK@_Odb^+w&Q>H)J~og8QR{*$2cQBbgOfy?Y>p#JU;Pz&YO5tR!03~?&LkXC+)+oDz94Q z#?Hvl^WYL}CU-+1sOyz)br)1`8GMCik20P3kUuVyWZkzLY+dJ3R8lT)Z^e=@FXZak z$$zG+_@7GZ?^%ETrRThRppkkeh7HpYnW1;pDt>j#loECZ1L1WZMXTTa`}IO#S$yc* zIZxhzde4b!d-m*}Z*Rqva4qy|?j#%IlYt)@i)X(&rLx}lQ}x|iP%JlW-GCUjm|+)M z>H_k!?{>SBlil47jPFS_C!5_h4E?$cG+fD&AQpPnG4yM==ehGKB{>CqUS3Q6^!|-; zXz6`W<&k|5-tv8r9&&Y^r``M~%N9p7G|VhYRJ-1{UP|`RmsP8lrxh6rm|Z{VDR=em z^j<#38LXkD+f|MqYd^Ji3a{rs_etWV-~FGJw=IXQ1#mmgz_3OPK9basU6lxOSjEt--M@}qx&SB(ll=@??{i=W#hh4kM-d4YVzH{BytkUKGIpjA@ zdbjG<@85THj{Us3qoSsuoa2DjidD6%Uj3fDM_YP&1#e&Zy@Q_r7OdL0-kOCW;UXdt zsd$FYo&DtBU0H?$QMav6ZZC7+5Vh)+*v%b#IJ%1*Cry`Y=3`5F=QGLCyhHsMz1Qd+^C!#gqA=Q@^`1PYw%h z55M|ey)tmp|uQlG< zM4JDTt;R_^&u{)k2cDhh|K(NxTIILu&o|Tm{Bqy_;`w}^qNmT+$L{=jeZKFfnP=mF zM@;I^|Mz2~ioA4kOfkEx*V$VL=Pa(7VK`#{`yNL-ul>&6p(l4fr>7WGZTc&)|bdlee%n* z&#x$EQu3r2{gb7WWp@62EN;j5M)Pj+e9un{Ro?r5YCJo?KH>9v`zcTUtNh&W`7gES zaaWZ-IMgZTO`4m+unF^kkDO76=(gf<~F-Z~nP) zbG@uUq)&JmiSr4eRrN0;Z-)qFhg zW5Tg5nm-H7*iO9n`SeZy*N&Q=k3Y{DB?x{=8~XxSklw)#hY0>wKp5O)McBwov7dc^W!?hV^`-U9yqsR)qU?z4e$6E5-!PE z9s6fF(h1yGdi}zy`1HAaHzg-(e-zHCyrgWe%@>NZ?QE?LV3v5I?s9Yp4^@l z9IY->u$k=v3!C zX*;jJ!=YO%R*9?Zj4x+rFsKYyu}tgvIPsl8SzPE{?UUTQtsiv%ah&w~cOC17SF2v_ zP^q8sWX?OWvLo)3?xgj6Jbzb_f#LcwXp6VOHY~I{H94ThZ_@3Yx;r{2@6Cd7YCth8o&pnda?-P!pnmg{!6%6@&8!_#knTb7C8!&M3BL7 z0^W6gMduBVdGB^+*cTFd*XpGAB$=Cc4+Ytz_I$hnioo@7@2y|4iqEI0Tjja>PJ@%I zp5O9&ljhc1Nl%{;zwhVAV-H!qBX+IYRXNFAWhE%;%qgFKgdmY_?wJfAA#X zUC|G;e|Suq-Ea7BsWr<3ZqVGBo_EpQcVg4hRCZ?cd^`>c&-hMQUi`mu)w;<~_T|{?{xGHYOlQ@vy-o)4(t8gr5v0l7tpZ3Z1 zCFKXU{&=lYE|VN{RhB6r^tSgo+QQ$X*o%zXocXija@T=~8De<@&97Sg?7lORQz@WBb)wk8Fc86bG zAA0roUUuLA=mQCc7p3RlF^Ii; zXlRl4cg~b2EAI*(*b{Pf?_?W&w&Q=MD^LF8Q_jM0V0sa>=bE6j>QzHdPnW)5(R!8k zZ(;}gepgHqSN-`{MPD{K=H?w{?bWN!d49SDDxbdHGdX6l+q&r}XjpQOw%hSF>+>a( z|CE)p7}SQAPFKRxd6 z_oP2@lb-h(-n$^nyn5NHxCu|{K=JaXSLM2V@}Bk9EpJz^Vplc1kutYd>EzAip7Qc` zhRdO$;wnEUtFV`C->@mp`k2LbYbJ&V+^{nKnonq~x%AM}5R${8K2@GEDz9Ui*gx5%%YJ?HX$HOu;*Lf3K*1KZHj zq)FG+ELUxBF)jFQcr3ouoq<8+WZYe7V8)DzT>a;EmGd4&(1H%s{SSvOx1hg8b&vT!uba*d+E^pJ#GLMnr#+OEw<2?CsG1;MCn^eBPe%HYIGh|Zmaf$b@`52ciTveu8nK-GsWcvm) zw@I^m4ewo(WnzH!Iu3NLTy=T%tB;=lEKh1rvN2&hz9IIw+RuwB?|&|OeOzz95qp0R z$n{ZuUPV>qEY<5)`FRw*f5#WGpn1}tlyVjWP5;h=hS9;Ea@S=U879DHU^fV@di6qu z-}BQ0m2{Km2V(XZpEREI=a?vlZ$m@H!>)dw z{KtEe`q2jx(_TKw`BVNqKlJOHRl73F1$1s~2aQif_?ExmOE@2L^`NKRwY!Yg3E`9E z-}NzEiw>PT`APb2>xk&z>XjwsEDQ~>(HQTr(Bmn|9N#|V^vE?{HJG$VNqV|RoXwsY zr=(V|+B<2F>B;LQ+ZnvS{#1GI^Qli|dVbxX%g@%!Z~9qSF{yd7%wBNhv@H??c8Yl#DVt5zjXw#oVY z_{cq}1pYnd(vKg<%O}_DvSup_58Z2Y^6hTxhSptHCtpw6qjEA{rSh@gzndYUzg2gZ zPO4VjSwCrV*{gc)8EfB5CEF~vZn_&DYJU0{vwp%UySYzV43D+%a&Gt<7yU8^5>bv*=I(bK3<>jKg^AdbRo{Gz3MU;`v0QG+enWEpnPWeG zJdd$W3JtxQpZa*A_<^clF_XkqE6XNL?=@VP^X_Nm^ySDGla!z{G4VAA#@%`+qR+?P$R2`*=0Fz|;}FSkQN z-Bl}HCcXD6@+s!qAT!_VllM&t`T8B!Z2J<5c|N`ObKg?HM^Ooz35Bs2`_VJSiN@Dym?QocU#X` za$eoCuIJ;ycLEFvb>Ch=m*+%;hn6m0_3Nn0d%sUVBxDZHk(u&@ee#~=tLiqc>U+o6 zmKYseb!bv@b_iT<;L`=Fo`A?l0TMNVP)syC2mOYqP zol(x9bMx>n=7y`_@j1_O_Q_lGC$*QjGcbIHjje5P4K2+Jjh*)7lS;p5Q9`lMh35-$ z{@8u+5B)kB)Nd2mT)zJuL&EkNt&_o%=9nDYkgqd_K~ZdfkAoRpv402+xf&N*8aQdc@25p7+q3{Ti?fDp-+|ysq{&tDsvEoU0OiuoPmB$!%@8(^`H`DT8@inNq9X~LA z&+dBetLrJezmuf zmyj`z-*=8_-<9OYrp(i_@2lLu0V<-pp+yvEo%Hfm`;1T8rzhvscohp7=$89^YFqW| z>8f3E#qTz_m{L<4?CPPrkFjl5@toy_0Q}PVQdy>SO5E z_;P{CMfcw^D0qJQrt-Ysa9?rH$CdA9gl_tI{_!If`)N;JJ(Ee;I_IkF0n^p1q*Zp7 zmb07ejt#9mAUr|Ee)5wG?>N$4-dSa}(VB^220ygflrYWg_%VKuPuEn=`xiZarjlUC z=k@8a=e?NF@|S&yMm>EC?_ZvDr>5uQtalSaP0jv1?xSVi2V-zq;#%DFcP`K{J^pBm#UUe11? zYsU&}h8LTER-T&t*iq)ouVbKuXjiisQoPLQUA3z;^snnAd#|Ffa{dF$eydhigN8}J zz3xlYy}Q_&A?=O)}%HPO?`0=}^vn;hoxD#+sSGk5&6T z`B(26^oycG=iZfNWbl~}%|r&8pyFt|TBXyZ=2^uI+a9k_*&iFKzjl@I?C6Ntb-4$N z{`yYpJ}xo;J>Se(hR38Q-LXFTd{=aXm>$QvX}8raH&`=;o!RJ_cT<*8=c@7~nftPg z@sH|2zWD;mM4%9x91xlwel=dLGH{Z#>2n61ORH1ZxVmAi>1uIPrPpG*H_?aVG`ShHex2|L5-z|iZSMVaO7G0nTn z*%=rvKWEJZS;3I7HuP#>=+_>V_5MZe@8lX}i{`5ApYi1U>Qf5M`WEIVC*Bn_5SI7* z#0%~^``ndyywkI8!EWY=UDA1W0j*aPA~>(VIrNSpAyaPhlNawecCeYRUzNODnV}&Q zwgTr`5U3d7_x!X?WxC48XDJDM?M_?SFJ27 zXWtO=TV) zaBJnNXqBI{RrXJPvg@oR!|5`IN$P5qp`mwoSht0Jf5F!<^T#^FWAWwgXD%pD{*zqJ zvLQshlzoBK&F_4F||$ij-THNC5L<%QZRpS-WO)3==8 zVe{w7dp54xx7WJm>FQOBC(pTgm(ln`kKwWW68AF~B_7*Pikb7o_^$4OOFK&TNWHrx z%b@)Z6hO~Iu5R?)w|h79x}(>_uiD)eWH?X)i)rokW;Qy~)6eO3UbkS__uzrb{A^Ayd0`E~l69Sii15E|LGL z?}5Fo*2(?l?hMxFmOic%FJV6*wczzcITj<fO;GgM+$J{6X>3_$Ua9mRM zyRlW<-QwTx7!o$Fdex)C|LR?X?vBV%Sx~>r2V@B-$!suM^=iSYs-j8Z>XwUlvnTY< zo%$qy^()1@if=f=`x2kmn4LU)Tw<|x%m2Kdk9$<~UxWG%hIbi@!$PM%`SXr1LU{XY zJ_fOOoEz6B{H;jfVc4KtlLXm~xTa;5mA&-!UisN6;l+FhL}aEs*}m%4&Ct?-avtu| z#Bv6o8^XsVrkA^a5Vh4iDSB7%Kwsg@9oI8G`(E`mm=<0J)xsv9C(XHZm)XFP-|y3}RaUFP{r_0ccQ@`b3V+?E;{U4efwpw=9_5pl zcUw2e78iuRy)SE+thfEpyVXDP*_J)|c$aZQJ2;)gDuFF4SKU^x^q%DXxRkqLZb{Un z>mgSU?{>biZMM4QB5NkKSBA+w=gZv-*48PVT)s=WLAE%e{6J6a1zCpdV=pAs7Ocvf z`DEQ)*$wUI)~#v=l>je4K7*`(NO-yL#jcO>DwaEUvnQzWd3-vvs>&}^_J-_Xx!oJA z8Pr}aP3{RVaW8m#OhVr8(-}}K%G{DQNM@U|!F2n3J_fNz>YEGq%3Qm+PUShMA$%FO zicu#N)GzfdyeqNb^mdh>t5;dAv~IC2TKQt4PCeSu+;56MK#;s@!eR)y^EQl;pIm+$S$G;%~e_9p|P``tcQef@pg|- z-$P61zY{2n4}I%Zbo(9Oj0K>9m@Bde-$^I`xvz5m;?WvZ6zt(k62 zJAQm>^0oUv!6iDZezIP-Di5@!XWopI`_E(;%w#4#*|h4{##Nu#PJb;3o7B8pIU#AC z$EW1Gf^R0OtL|K7%@koVy{~%CWm$&oQ_c$$d_%A5PP(&rH?!D-ZJ}GsL3tdun(#p1 zs#V>S_bBSsGpt#(chVo1N%5<-*2}No$GwX=p=qA^v5Ne1mT2>1J8Vv--jzLYXlKct z$6|LGH!SPvORW9t5@VSr#phKt`5gyCLe!oNNJ4(ovC3-As(JID{QS5qu_5&PThDo! z6?;CNd(YRsCii41q=@C0t?FyZAU47?{-K-6Fzirr2vFFvf*L)3~l{Y0G>)sX2IlX#P%sp8~ zoh$q9G8&f@+34_nyK>Oe?|mP`wm0pMP8nV<+6-zVMeT`zI8w(aw<2d!c=}`C)eLK< zx2sjI^Y&f6e3hS9QB66!PmlKT?7SYsNq^kR**65Z9Y0;({f;4`_<0#S!|wH~{Je|i zzvGM8U<^tCnXo>z*rHW^KA+q@=gH&?u|=fc7diYmw8XKT!RJi$af$kSvIm|1m0v?KsjY~4uS`f#J?Ka-P%cWoJTt~gKnQx+;&x2Em$Zsr81bsnGYyyFmiwdoy0 zLgKgAd@~fM_a#>QtzMCXoo&bWn%zH8cljOPj0yHq$u$eCn_7Qu2ANw^pV+zT6&t93&X~Op)N5s|DGe=6 zne_g}y9U{kv~mUp16gQ?@xZjut206SQR?pMGQ8QruJ&{7s#{lOjgq&YIwpOy@#v3U z(9rAq$u(Q7nIbqAKYqF^wVc7{$lBe^4cT93s9b;9*C1O0j&3Vh@u$0TRX%8mMc$pe zOb0I6Xq;RhKJ{TXfB5EvLc4iS{C6uytT8+m3fhjxsBtY5Q= z&+pTUcYHSz&EN7dAO(PK=+^vDTiuhzkChk>$kb*}n*XYAhGu?3`_ame5|2OM6@1gN z{{$C7e(or7OjpR(g% zh~StX0*Y-0hWOCXxpSX<^?Y~bF4F<8A2(P1+V-wv=ZaOylPf-3=^T5$>7#<|vX{D^ zc2{H>b7p%V_ugdbWw~`Xv)YlZ$q~Na{fmOiS#%EW^Xz*IYA#*zu(<$R3jkY{{iAEu zE9uF5tWI*?)n!=I54@9O2s>xz85a;LUebQ%faP6A z14aG!dzfh`?Iu0(y({>}VsUar z{rq=)GXz0KDc9!mtX>Qn$ORP>M$`Kk8(LuzJxL|BG;h*%b<5qmSsS(%#Y~zWdiCor z=Vi-Q`FTB>udQ=z^)ZR?a`z37d-@Xp)^4&+aND=cnnCTww7ZN4>Z^Pv?cJ@Ma1vAj z!%Ykd{qFy%OU1o>JHv))e%_yshn6OkpEz=756GKS?=rsGV|Z-8>d%OB_6@pj$4@`L zWTZS<_u?_4OsaJ%re%KpgEtFlIl=_R0~ zxX!v^X=Q#n1IQ%rfY9SAmV0(HtG!qQ?vLks^1bY9U~4Z0^%P*6nT$h2e}`PnSE(%8 zlg4l$DQ3$a}a zd%+i(9$M-!Y4UFC1f_rbtQ(dVy_C2%`y$l5(2pN9UVK~ejv-@<_DM%jOZ*qKv(g~B za@FL?d$dmK?uurZvE}ciJquRlU69>$EN@n?ITzFI@5|mXOgr^L;@WNZ-OOo^THZ0t z*sysQbHch+ui8NCu^G?ufo3PJ!Fq{jTtE#JQ%}E_d5j5SeSV(~t+Lu+o#MN*kG1_$+{U3l-N?13Oj*~7nnU66RZ>Rrc7i;dO{YG+Ce>w)twU>0yaK zGa%TH$fKx|8Qr6+~YL!Xl+zd4n7lWen+grX!=H;cJOt9O!Vd?Ho)(kh2 z5pXc5&L@4eC73^PO>jH&?LU&KH(LVXTY&*jNQw#Hx|F6q# zWb=E;*T7j>U(Vp2Uc&SG^!uBq3zNzj&NN&!)bR|Jo$zG#F6)F=Q1cHFV1c1ipG==z z6J5;3P-A*OIQ0ALzKFu*W$Xu9YBpFmEH$=j`}%brD6IBbGo&4OAu;VaqbJ|{z6Q}G zWfmllF`2O+_xCRHEazs3>Gt~cI#FDmLlt-8I-trOJxUh*|aTI^fZ z_olC5=8wL23=xJX@t2)fT<~X#O8<*I#)i8k8I$g>T~)iwIc$pe@eLMk$3G{R@VtJ# z_b#JxVNN;2nIn>S84XH9OQR-z2K72`a4<65ekRNX4(W(``?*gp-W6on;QCzU=f`&) zp__jiOq4D!KhRRM1M06YJ5}Dl@0-Cny)V%c6ws0t6`<~|=;KR<3>#pHeZw)(qJF)% z?-&|vzch!IK7ZFCT3j=UdAD+clielR1DD?3mt}Y}@q3@)x_5mucAaIvBXbwzz_fA( zpUBX+v!5KiE4!g7r-h**_cJFe*llZ8uBxh;B>(CiLqqNj?US2VzdG@5f@o0|s7<#V zG?>x6o4LXE6FAguz$sK%PxkP+UFDM&?@~@+1ua0&fo&FAvvAd~dn)$#?lLlP7sO18 zf87_MxV(h@z>%75Fkgbr*=Eg<_T>kf%z@8P1%j^YnY$*PscSScOifJ?hFsk{$wry&ID^maxsz>nSudKIeSU*Qcp3YJLoXz*oll>% zXS;QhT8vfO(_NnB3_iZ0b7jMiJX{UhdwIhQI-U?w7+N}8W&h-q@N#YjorA)wUp;x( z!53N@FiClrb%N8kcYF(uF1*WlVA|f~p2E`dBR(=$Wf_c%FTZ1$p%C8pa5bnj-*y(d z4kj!j^sdQC?@2Msce64~dvZW!e^lsI*-HneCP(P-zn!`K@owe@-RkP{13fY~L8f?x zRtoUxoOo96fB(u|M(uZ-QHoE|(9rAtpDyjF;5hK-j^;_{-O5s+mfYJ}FPV9soqNA@ zLtRhb^yeGiG0d1*JNeEEYbLcPdY*kR`x-=_qa^aCRj)4O#8`Z5t7Lfg>bbf60Yi25 z67~ZuJIieB&0p{_Y*r(d8YB&^+MXI)wXv>P)jT=o%3Ve@Q(8l= zu2VVhTU1xh&9J87ci2_i-OAHWypRyf-~WzbT6%Fu0jR~HDle1#C%gPe&ktLnY3D(8 zwVfy5i@pX^(EK!qD4(yAQBYN1&*bmGC?OaC0zpVYtC)T@^84`}pnec>tm-4hHZFdAFC4NcB9-dd70B(W$)~vB+V3@%M z&3G9bezyI1u4=h=H!H)n6TOpcwpk~&%UlMv!E(wOyo;ki#c+e}&)4r7X2MN!C}&tB z2nu&aXd$rRxW3xX>T(u_H4EieuF~w|h_z~)n|Q%q9_+bquiiDxv|MG)kap&U#5adf z+3Dc%G-bEr3ve z-Sj8CcLj|fpLcmtycaZqz;x|GZSs4D=#LY@jo=y~$P|iqNa%L|PuzE988$qViwa#{ z?yfT4=7h5~Tabe#V$v!r-IM=8 zdnC9S*6fV+oOeNXV}hH)2IHQ-^aZQFc@?dG$Cuz8cURWHS+0nAZ%?b?kag^PeyNkI&cc;M6;>65s3 zD>EcC>8)7Ry-Qi_$p=uob~3bM6$c6-m+~WLWG42q7c$iL^d*{yUOnjf?#^At>=R%o zLE}AvJ@l&W`&t;N4LRW*-;52?hHIBAn$xb4JTxozpUp(76+ym``5wRe*~j?9SQAcXnGR&F1U8 z{ytHCXNgU&xqneaIm-rB(7;YfIl}}mP!C~EXZ{Pm2Gg(qzzJbb1}C@;V7&meJ}z?7 zYf$@*=g*U8TOX8`W|TAd%<(>cxor76h6HcBnNLdZ3L2-B@T`8Qc9(I(t5sS5Rmxw# zYcK`Xw>n3x_P>C%bymO81kciouH{E~WUtCH zsC=x{eA8#GX1T(e>DmQRPrEyyIV4zzR3{?T*5ah;lb5!g6iIf>paBK`V zPulKM{&qp}E~7yqd+61RpwWxn>NodWGu@bE|B`RU%GJA=8&u@ln0F_~?%&RQ_uh3- zAGsYmt)+9~+0?bq)pz=pb2FT|!e7q*1~i8BeC{3D1ARN{%NaJP{xWBI#|nMGgu z!Va&z%LqCMqen%(to*<%(1tlN*!oPd=aHUymt+|kjLY&uV=u^VWaoPeYKktkZaBJX z)!)f?*6wD$G0FZF-wea)eTk+rQK9Z-?gzMvpGthY^BYw5!iH2DSXZn%uDWx_Zf1rP zOYbsPA6S}vqcXjOeM3RHXHfts_W$?q{oQx#kKXIr|34?WIWeVlH#9J+w3bW~h+=As zQ+5pqH0$6E5De+FuKJc1%@-YL6MZ3>ky}h8^|qjkt(aI&=0X+@76GSxPR2=|PN!mi z_e&b)rp>F0|Ng#we_Zz2q>t=B_k}l{G&Vl}eBZxS)(NeWvWGu?NVM3H?sj}bA*eka z4fD2HW=~<(B=NFx1_sYb?)`?#%=GrSmNTqr2;R+nqsadSAH%h$k5vBOlHGWytc;x@ zKDC6$JhA8F{7H9~?`Bpz^Fo5*h7l}dawhl8R{wbyw0sX_+QcXAyOpoKobZkzf^m6| zp<6jibaGFj!=%l-ts6>z&R$iNyS;z^_YF3EZ}=KizphaEUG9FM1vHj|aNKk8$#X8q zGBU)R-`;PScU^WPpZR;f2GN4oD&;Tx5>DHwoP2m!@W8G;peaz09}8Yehyo8>@%_{t_-!*iC7NsHl$e7%--uKfdmBp5<3_CK z?ZxX!HY=@@dSk5Gjv83aYkz-cUH7*GC4W528T4ci3+;URj(-cwzr%-jgZvj4dL1;k z@EJDl^xEWDMOw@?rUuO)jqe&vt#(*5gdNGe%b3%-yqulkby4M{{qOn?EKQCuS|@w> ztL+xhG@3G~q~8N8>8*MU`+UGv&w*KY%6kf(%8!8Cig)sQK9=4U%()}+_>9W&(sG8^ zpJuJvwZ@uhdSBv63E9JW$vuZB-PyjIS?%2+P!SdfD_(n#N&Hr?be-h9JDQ=v^!L1X z4W>IP%Nf>8_+7%jLG%7yS%x*Y<;&S89C;xz?JTHk?IJhhNy9si89TT^8LARGz}>L* z_e+)Uulg7mu0736?n&LRvgb{$fja*izJ%ms65D+~EqTY65L>2FnOn}{Ice@)#sgn> zl<@q2xbQBc0kix|(40Q(e28laJ%wqY$$kcgYj3ZCt3`f2*~5<{Wc{y~tL=0xXW5`v z9~)}DOWEVmB|{zQ#mPVT`QP(3NbcAGs$a#S&5j%GhQ}N|<7TDoe<#L};Jk0Ub%H$K z3%&-?qCXOk%kB!UIWLjCU&a2)UB)%HwRbW9&{~`vq33pdLP}5J^dJA3b67zmbGo2H z8dTK({&s(|%xzglhMXJB$0Xd#-QOGqnPoJ|W`T86>F;OYx#Me3i#_A6%N`7uls#Nz znbTAF`yEFF6F;bk+M#uFIcWY09$tGTlIP5MQVCjayQ~M)%D%x38XaUWW8aWxe+eAw zAy=>76|A{>?j6Gew?0t*D+nuRICH>#^{MMs3yG@9*9*TzmU{7xNCe>3xYmC1jmH^@74(yo{ZJ;qzmD zJ@A^^g!6SKCo@3}%V|5JrIpp` z7pU;R06D09H}eibh=Vr20(ISILSj%J8iP9;4Uc(z%J$@Ym&eGk?aKCE!*B2Vc5u2K z-%!#2mM_7#Zj&`b#P-#b|0I^Pm?xF+oId_yMrb)GjE=N}(&kTC+LZpiPlX?}e0{=ef(xEmK6I{$s&12<4%U|#g(9smB8(669? z5*9B(4yXrK$0W)pPEIh^j`Nd zFg$|=eVKH!jpE72piNb|rLR@Kzwcw123k|fUg};@o7@wv`g7$wz69sG#jDE7+zTf6 z^d(wK%5Gk@Z=*Fs+M^~=;Q(8Isc=%_@dK6ppy2_XBgwm&^A2#ZRNXNGbx?OqobOk( z8|12WUY|a_=Q~iXt#jn@F^R?2kF3_c z<7*K8cJ?mgpLWAzoSysk?`FO+Aw2Zz^Igg}l;w+}`c<5cm4Tt2ck6CQ6Zb|`F3j61!{C_8w;9R%Y zx?yk8O9`;kUi7?U0FA*jBt%1tQ-@F9pkZkS2C-Kg?=oIbEa9o;^Z(>~S5U>X&VY@> zAoTsZRpuq`8^ZNu4;NWw^%(9_PB>U|mOmO4);GkUb?TZehR2*I+3efR%n-37RZ24M zGH89q?p@4bcO@RL^NhQ2moevt_b%oe>Wh;j{Mfa34)aX)&`R$rS z@_&{8`Q_{k7alz^Ja)a*{mrvWhF_{~NIdqtE4Vrf?6SgW>47zTU*vsADq?PdO{nnj* zd~Th}$;i8c2ipEtg~nc#J!rSHgy;0>7c)YO=D+#%ReVDwB;`X(!2@1W$#=|7e%@`( z&=AJ|mhZ;fSML}U&dY%7*Q{d_%hf6!%h@+1#(REReOGWz=S4#u{l&>)CqW~8;I7y< zXpT$>{hI??HO9cOR?h60#9cu{tG3h+rJnPy$ZqsHCb8Y)Q{6L3|n^BP7>awJShg$M)sU{S$0EG+^i?> z?g}1Q_9v*EA^X`SL!I@DcQYpl9+UX3x--0-{mcn)qwpuRBu!ZQW?$M5?T^(@7!K(1 zzvb(=XsFYD`M5-Ssr#BH!(+vhYpToHH)#Hk0F{9WXM6e*D{BwGGgLcsccUlY>%NAW zJIqf01eKpPKijlGxtbyD?BhvymRmD1L`d~Bsv!|P3(tr>1CZk|+ATh5}>pnZHpsa-^9IJoTq3;R~ZEw$vH-D;JglbCl!H~3bjhW>RfXL${(9k+uTT8w_6>d|sNsCqPq z1>DKYlVm`vS9GREt647GdGLkAw9}t=Ge67dDSWL`Kl#bFySfLK)fk@SFL&Pn>gC<( zd&k$nYGBp2_VYVXA#o4df{5Tu?qQz%=Q^k~)SP?s&%e~O@0qWEKVf*Rd6)9Dl%7I| zvRDhdZM#`-Y$;y#%J{C}n%kfhyFSJ$?ba&R z?u@_rTeQuhNr zb3lEMGq91>&F04}Oio&Ys@Y4s>OcPmmBu^EC#jdX``mr^@Y{N|pWohzC0t(T_vy^4 zBE#~gRi|D+jjIBUk}mbsdjl$4q2qoHp&$0BYzI5-+T3Fj@%Ml1^FF>|PF-P7p-1_V zBY$HirI)xfL_cy3{W|X*huP5tnQ7N!k4vzZxF0Yx0)^bXRjWX&Az)!QW2@n@>uNtI zg2L|Q+>1Z9flPZh=gINi%FD8PK3?{$TeF+_hLAWYU$M+iE8#hv{U6k-Zpck3;fa0@ z+LC$T52!WHz`$ToZa?wK29W75=UxMwwCCS?!()MW1%r)`RRm7@f9)<~&dl_Xt9|b{ z%-+s=$B?kT=IlwGUPC_LA|Fs*s0Iz+{sawkf)2IYc1)t&@6#HP%Y^)LYi_@gn0DRK zvo5>mVRa6ug|^x7nD?YV8Rgs?QvYpO^>3YZlkUSyhC1eplb^kMazp1pSXDTv4yfPP z06u6l;oQ9WvC51L4Yii3J%+RH{VTe>`@pR`_9ywv+;w&v9&7acr*Lxf?&t>H&o@=h zgZd2;vWJU|t3#XOxcOf0HFwYV z8S*%OOXw*)t+L+p)01~%3EsAwSLwa#OE?{KTbAL?)b*w_S5Mx}oZw~`7+NPU$Z(?! zT85vwTJKrp09yQ_x!i1Tb>XC}D(Q&X&Xe{O^%Mq_pV%ase8&=W9L$d0tT%%8$A{Km zls!1j$g1sWSxGrVj_~xp#Mj`2w+7aKPD}48+^ypO9<*`z`IJ8Q)vsQu#J{VMj+h=i z`A<#x5hKauJNhSQKdzEIb9VV8o8{I`y4yj8z-r}V66Wvw8rGT|yP<#b<6T(;<@ccB zi!fLRzxc~yPd-p%Ms4})ONEer0 zoNp9?YOmdqlXjQ69}wGJJ;`~Oa)R4A&~gR1p_`44{qXmk2P#H=E*19X$6xtjwxLY< z?3C0aY*4?g!pw+;9{eOUY6uYJXsB z0ZMonbXuSz0L7o*sI-Gd7$=t;k$8Mz+4fkgwwD$bC*ykz-`$Yil#$$%JZX>RN&eF9 z47VR0QaS&+FX8r^H+&4=UcPw8a3e__GyobC6DkkNc?dTf9^2tMN&XEegtM2t-!$c- zq0edANq?S7Jf3z}vD=`mGOa8&)N18!_8Vf>lWW35V{geG+6F2v=6fGM)9ZbFLurg9 z8v|@`p~12;Y|?E|kvq98=kjiG)4kj|cQS99+U%<=KT!s*_~KQ5ZdKWyagK4@dHwLK z_NDF{)~g7VO(zRarYOOt0T+dS#d zMTzA7?0jc$;q5AG22e90ExG5TDR`*Q_|rB}(l3R! zSPaDdL5pfR7!p41(vy{zJzQd|cT)SfM0-hl&Q!x=vBxFW`+n+D+5Yk!1!p8K}0 z(tFRBcsmx9`Y+2Km)QQIuR*t{rkvr-nVl$Z{Ztk&`uiftsbcT$eR=nM);-p3$Al;U zIW6(H@2=u(!($c&Js*=j?@fLpc-QuT)1QLSz00keS`Dn)o|-?pW%&8x*M)fo?(rU< zE`o|6xO3V4eTq^**^0YdI=QE<-2UbVwGCU}&3vMp+;e%ivsqHl#~E*=r1u+~%voo~ zT>W*`s$aeDIKe)g^Ul~m5bom#?kIbp@gm>nfN;KpHu2DF}Cb`G?mcC~IzNla+C`p-X$ z?z3*Y8asJUTF=K_hQ~n5L56XL!I{${>?6D;Vusa z1%=yjpL-IIKd5Yf51xEsV-U;w|Be9+ZmcjomOH5iv_!?gT6TKho@T_}m+wK>Fj@t=8CXw&) z>6Xg+wX448ebcuA6CSo<*6H)~no{`Q(H2pB=T6lFR;EWPOhpPw-#o`RU23Uoqtzxq7ep z7_Pn9At7s=t6s)_pl8osYX*i0TWHbmbM@xU(v#dX)~()@?eTf(-T(it-7G!(bi+2K zhSCdZP&EKt@QCeBfup#YuDf67M6e{z3P%?qplzhBQeJ?VdJsQkSb@oQG;`G0D>YrihNr_g1R@ut^O511#<*>SO);oAeV zI_c4 z=wq0q60Z95v5I|o=yUx?2Uq=ynAETObFqqK@*UNa$&+m~Pu5PplOrg5V2$jIC)Ygn zB0ub&AN!%2;lQ5QIZrBd<6(P5YdZ zcpT`Wt?DO~}>}hxFD)X6R*Uk3)Y;7}V zY^c07^ND8Y*NN{0rX5>kAHaTNNAsi_=W>>u3wuGf+`A~tz_3OQmNB2*o+NWimQnl7 zWzTtYW0N0055F1|`*h7J|FEm))pkZtI@hK^y~J!f;yt{ z*@w2s+?HjKE&;U?K{o_|CZa(uZ&(Rl=Mfn1^(lU`Olau-pwQ{%>~DQTW1~asBSZPU zi)to?r(9pE->^06$BP}S_RV?n%5^_C!os_dalg)b$R9bKBd>_yy0|Aw_izLUO#>b%t_ z#lM2w&){?N@-F6tqkmE-C9itrzUtMYcQel3vbFoSO+{V(=Vg_BoboqjAD(@$w2_bD z#)|VQmb+K!z2-~Q{Anc&G4;zkh8YvThhCiuiq9-q&q@f?<@$LZw3Nnf<`d4)uRB)# z$|ye*wtCg~kgLL=TwuMcx?yQ)#O2+37Z@3&3tcB2KmYN1L5^g6`k^f{*2g~7-t+0b zXqY2gU&hF=o%Tt0)~}iu7#jbsFLKJNUCTg67aUQkzkHWjXKFO4op^aS!-0~&FSKe3M4}%( zzRP%Em&|ophHTSgJDex22bI;8)#VHf8+Jikt`SwqJ<;lwG3D%MZpf=ymQG!t6nfQt z^(#ZqeWoYHcULzoEdT|9EHlIFkC#^cTKbMd?eGhUWk+Ak(6j{Y%v$p3k|Dzd$RUOd z4Vo22lV+E@AK;0d_+)43SJ}|g%{XlW{F*Gur^n0t4bw}9s7Bf{o;eYyb}s%|;?(*rcff4tAo zt(@h}X^F=RRF;>NAL!Y$8pYtB&)wCSrTz%&*Yo>_lpoRqRyW6r1 z#-GoDT4`IMeX$K&j!7(6*%@8Ve&)baPr2aG{dZ)ILPNi`;; zbd`$#idE)i?FO--UqOeomNUFgDmfz}A$$1R&K;}l?#VJTtbr|InRXMrob2CUp=)A{I}DRHKJ#o_i<1kh(Tw4_GFu-tKzQ99@5#f-M(N4E|JHhJJ7dGskH(>27ro<1I}S?R z9}JJZ-L0IU|L(FZgE45RXbY^ujI1pNO^BaU@n5^@dU^Yq*w9*yljf<{Lo*ZV+#cT+ zH{Zw0pwk||cGdH8cLVP_Uhd1qIpqv*j{XJJ9qT-b96?7EKsz+v={AK9C+e?!fB69c7eRA`z;F)WwpprrMzAS@zDrk5GG_%>W zXZNZBoGq4aOqr1xuA&AqF5 zW}5eL16#WVlT%CGCjABV=I-5-Wnh>9?IUcMGw*^dgYcJGD);ZpZah?{c2at`a)a(u z&;)(P{+UmH^YqrcI~iExf*))_~Tn9XHIVI&6k#CK9E%zIVoLAX0t;4D?Wy6ZzrgL zCTvT44f*_v&Vy>c>`8leTQe~zz#3LRZFX5Rs6A6(^$N7IIw-V$&XcEiWe-eyv8Uus zvkF5(=^hh3navULZ}=F@o;-QSu%q#}3TR(s+LJ%4cI`nnsj~+(^5Is_?sFo0(x0Sq z7V}ScROY|#V=!A=T=M3UA;X%s`zO|MAHOPl$ji{GEz@eHHACJ5Mo?Hi2UW*^tf38w zX(uDWrAp_Iq)E$vKKt@CI5ghtlQ3v(FZSY(Z5It0&fM>wY;$`3%Z!8)p36@z8J>Oy z4sy`qluNL_;!K-Gpe5O^p{0T4EY)AEJ?~wTWz0FXv^PKg&JQz&4S(YzLeHC8EITPa z`Nw@ZpMLM-I=zO+7(L%zzRL(s=Q_MF_jFz~TyxgdGY&Mn5qkBUiv5I?^m6VEiPKH@ zy}e|}a3)x_GA?xPW!XcoR;|jO^aeZ^(_wh*;a$NEw=+HSF3K_*7v)a+yi1vZ;UDbw zGVjEm!t3C53!N2?p`~#TQg~Or%JuxWU^nxP4cjh$d^i8``d3x*3^&BCtNeVo>etbC z0w>mGA3v}KG>z|mAn*HozJ{5W`&a3KCQ*Ns!-|Y<_fqx)E;ULg*O$9*NVA{! zP|1ycE}^wror#P-!QWkfcF(@g&amy6_+*#N+3yu!gW<7%p66b? zYnTa2TGP6q8T;)q33fHh)w`M19(+>Se^>V4uD?!`vUe#rlhv({OFVaC4mpwkNP zU65rm|L_xJSWjOh+jlR}nvpYSZtr4dU|0uhM5Gp^O>*9?oWNAKd{xf{wPma9COz@r zW!+E;Dw50|D|^0+4}JfNuW>dgU6ecm4GVCD-2<)hN?Yd(-fnrI6jr0~$X%3W5DxIH z+iBgzTb)?;x17Vr{rijUziSy19^aeuWMAmlh3^DF(`+-AHBXkgDSPmgu~pmJ(z?)C zP#sbLyP8U;xxJkI0L!0P(E5pk$3m`FddA(p%edyW>)H45cR+z|SU>BDW9ZkL?*u?o zk~7v#-pw2lo7~ep>CXDy%xTZ=yklT!kcKww7F?BhZ070r=3N8lkG=00%-+_Qu`|5B zWNTISQi5UGb5+lMN0%C@9e5$J?Ddj&3}LrwH@|*lwxJYUNPr4w1_lO)?Z%UP-f=_} zSx@>CTFx^2Tfe8>Em_7jk>3SCyNQ-PUZrwBGW7h)RdeqeZeY6`|C&iUy~JlZXn`LO zC~&+%b1|T1aUN(F0?VKEpteNQ*_*a@1skP6of?J&-F*|DJPiH1`>x^!zWJ~D7|h;0 zdB+eo>!M-K+HBC#g^UaZ&d?NDVr^X@_dh?`>S>>ux2rP@Y!?SyFLc9H=y9U zG}Dt0w8R>c*q1?z_X{uMKKg2H&|klLRrW6B8$tUogSwhVJaw^FYzR_!u5844PE53jX3X&!bpzpVX$*w2u1h7E~&vYP{vdu|`O zA-nC?R?l;OW5B$yJg6r(_ZgY zbbeKpcR5GS!f*Vy7|q_a7#^#;E4XG#`_Xp{+iv|Xt9Q_3IB@CXQG0MT6zk_xv>KGe z*1zXVxc$dj=zajpX;3EhnB?{8kP83T#sJVxIfGbsb<0)OO;bNzc*ihfVKM01(Qikf z9RfYj_5+qZJFOeu28M=%edq@&z?XW?iwJ!l0%|mF;O*&4yyf?bFJY<85^IJuP%}Lu z3hJj4Q2Sl&f$v?$oYni^@iBbMh;%zHUe3;NpsT8WQg!&%`K9gPNrFu4oz@Lk4USpZ zot(SNI-w1mSD;fP4%2^^vLBfAyCk%BjdfG**He45p*r+x z`s6)3cQfypm_4axmvs_oo+x6DzIvrssO{cWWhKWCFxBXImbx=YKf7eu4GE#|zfIX0 zHk^Sr8eSB5l{5Gp_<5I6=SX}hJA?VBjjMKTgPPQ{T@BQwxG2li9TXa_^0Nj!Pq_d0 zVcW#pJ%)Tfpc!~rkVBU}HSm3Z!Pmg~!=apk`(ycC#sj^7qRS6}MivizTcx7!S(Fx9 zyTY1HDh9Mg=#=MO#xwUMJ^9}DHAsRAr)jgGnNT*ys;zeS0_%p>ittJL{{7xX{i~{C%Q;Mpt=ck;t<6Xj`S17=7T&uc%Mf$EeHZh(!|VYJ z2d-5HPg)*+_4jV)giZT4KD7EzTduC_8d6N&sZqy`R5l4 zLqruc8|s{S=YQOO<8EfP14|!YEsiT^n4nUbTYkXTz>2NmYi0JN>X57cyYhIlKP`O6 zkPz(mmM>u%*r%YwkuJ+JGHlR?nRMyyWSKj%jKT%3Y9#4SuQnnqB2DKBe!Di=Ot@c?ns6AQ*+PJ#+E~CS_ zwX4pTx!-A7U&79CfMt)}NzKqwztGsbvdqGt^Y1bqSoUT*=%kWo$vuV3Rn$w$5BPu! zdd2W@K{1ayB$CnI! z?ytPdc;?jNNj>j4W`J&yNDzV>1DZSr8FTsPUB(TM;%>`sU=J^2XE-3VN@f52Co@)6 zWrl{93;4{qXy|ia6J(0=Zsvq#cJZO|pizYg*pdyglP@H$J$v_ zk?E?IYpj{lUabXfcFBeos0W;S4ELFxe0W#ZK(M`p{Q_wHOGM)Ow|qCcwLv8W=by+) z$*W$euYR@aoy3fV-^!*5}jryMomZFBvkde)HE;E;jUjOz8X}a3Il_AJW6_Y%>3xP}Dmz`vx!26Ff6aHJ z9qh@*b$*|+J?F)T#=q)o6n%8b&}Y8)@tkWn?=l)B=Yy8!MesupMvMUMGv9r9H*?14 zneP}P98cSU8hQ<(A77~)54&2-)0gD>wMw)IWLh zuAt9liN}1P8+scgK?^-+h(LQf+wMvvt5|N@&8+sM>@MS$!j}?aul;v3Uwd%s9RtG+ zHF^I}UsRTdU)^7F{D9W#RbEA)#VMJ~%h?Sg)73%U(qQY!dlp+WF(lZ+QhdvL|Du9& z7M~998j><7;5-3h8Z_QHaUWqM!Y-=4nk%Tw<%Zcx%&vFh_~Xfu!fOTGwpP{?(yp7f_~(&N>yey@7<_^#uDU6Mx+e36vhESIjj)3==E z%nfT$M&)2=Km=WkRohqVW!4R1;U(+`x z##U*za`$B!jK5C<1%B_1{nnt&!_YAG!6m~r^SzI+KDjjcMqU2;RhqE{##U?zk+qg5 z*Q@^gx$2iwInM^wdv|3Sa&8GG_uLM>n!ejPA}_gTB6zFjGf)f86MEKbgR23^L3KTa z3FR!@-=~7sUGKjwyTQ+T7c;{HHoNIhmQRui41F#kb9l{;5}wZm=if1?J+$+DcSV-b z7_?KEp`jNxWB^GPCE(&HVn_Ba=7eYK{64wg6?~mi!gFBL4ug~5)pr(${!Iz3UAdF} zM%8=YO`ENmZfvP8XE)&N2kp4~T{DRvG^3XTo2c)8aLF*IXSK@eC-+P-1VF$r~5%U!#f)86@l%5Z7WfELK)?gEE$2A?Sx zKfWq_DY5Om_@q6%tdp8!tl1I*?@fFn>G>`o^t^#Z+te=y-!UXy=JPBnDrfP2%Xyb^ z0~07}PQtU98)$s6Gnq&E%GIKPa)vWEv{%2_Td$?T$=cn@5gN+HH|#($&8a8L zyg^p$@uB`JSJl7eW17}<(eTV+$-9g?%MFiB^z;MmW~$B)t=$PKQ5M%shD?fq zBj--!T}GWL7Y%dz`9rQo?@~59_(Gy#?Kgf;zxBWD-`uU-@}xZS-P_;NLIN{cP99uf zvF{8^f7b#Yu8e>wj!KRWAtJ1CqJaYZ%}NU@7})uOQ+T+#n&c{!GZk7|cvyrK1ROXN zIXTlBR9emym)pOW-|ear%pdyo%KBHkuHDk!8*$rXS@F+?!Sy!Br^H*7|vu2C%iuc*H)SBr=>h{}Z7sdA71obG{`ao+`ZivEz^ZMe%=Xa}nKCZnh zsB;E%Mha`})F%z^I$}#a%NZCZfB%^iv-S7KRlgF-c{c1>_3D($^73*9<3iAu!_yLv z{XGArm$R>FOa>K!Wv%9w;8o8XIO6)-=9WKJ`Tn*qA#vYgYlg53`$Mi;-WA;aVi9O* z$?G{P{=P;1tA0&iwd$Qhf{@=UK8CbIFJ|O_1N&AyqADMkA=ZF=NhZ&<#6tSG_6?-MZA815}Mg@P2>Km+tj>8`H~KPAB#hK3Dnv=3RqnfloOD!+~|5)bznl6Fayx`G#q^T=Jcj)=jODecQi5 zE5BSpNBbY*^puMVXWZPZY4NiJqpSD4^12()a&YPsJeslM#d)H-|K^M&?mfl%!-LQ0Hd^y9K zMlbLxk%m}UD@-W|R7HO1c*pSUUHy^s?-Qoo3kqFrbS-x3e>sLTVXBqclXiz*m0p$Q zT`sV}$glVM=Y-HZ`>h-5l6!Wm?yLsI>f}|g_Ppa@Xo!94%MJFe&LPmMV5WEG$9DLZ zvlN$tBEt|A8H$UO8TQ@$2%3}H9~Bz^wvRE)J2ZCc6Z>7(4KsIqmv|g@S8z+UPdUSy z&VJCk?=wxXen>$nXw%Kz$u_I3n|AK11?`ehUiE78T|wiLz;Xr#@5h%^&ifUuU-hZ2 zEMXovog{r%;eXS&;BGQ#-zI3rn8AP>o}9gp8%X!R=1W*tw*XY1|GUcwZU%Z5fuq)Y zb(VKI&xTJueTk)SF3UR1H$28X>CVpG%-34jof#Rlq1)LSTnk=Gq&;>_=DA)Fetj+| zkIk9(WbR!-kXZ++taVR1uX^;c;5cxSyDfX*&W;kE-S76Ou$Q=>Y4kqM@cQ`_ z75h+70oc7exnV14f85jMyO}dSp7z|g6|`5@5LCu*2F*1vFfbfYl8`<8=1zLgM`qA; zip1k-p8J-A&Y}1Rn)5s&BQcwCP5)WXxS3DbSHEh$Yj_~a+VteryMhPKfP$_YbfSZl zYzqAXK^tlfQChBH^3cQHrI_`9j_u2e)%GT6JY z^^r^#asHtSg}Q@imUv5x~j@2v~mT@hBJI``54k( z9X|$IiI$*fvq4DgwK6!Sp$8EkP>Q)D%b@+j&9iQ=b<@lp{$~Gd8s`>AgsweoD!4eg z;c7tvs4Td>%b6k1BXsVJCr{q-C8T}x__W|1$FuC7jpdVmmzN)q+G%rAeYY|LLmILx ze^#85c&v6;@XaRBFxrv5E36Y7V-B&**ml-4ZpM@6t6rVHYsg^zV8J_vgk^HKWDnf2 zH9iU2jt&~gS_R4|u-ly?SQaPG=-)fZW}S6Y?6=^%j0TDAVOIt33UWWXWO$%t?#w3# zL%%kGigV@-&1R+S48~tq7`A=yU%$fe*xScnlOne8m$EZ3oSBs`1+Ij^=FLyw=DV^7d~8=)H{6s?zN2$8zqI_otd%O@o;=*-XX{q!d2iae zn>p-;dK{ z>T;GfGlf^Z$_CxhvKiDJ0cGq(F}GwHwBI~GCQ<&jFX4EPq1z<)vho8ixvM}&eu|xW zA(0?uH|L4_>Q^h?2{cIFnsUThB%!qCzC`l-cO0Nawu@EvU%$(k{Q|U9tf3OtHVy=L zy38io?6q!^{if`>Z#U?)LD##CyyxEYF+5<~YbPzvb!aF@xapLhNoLCPhMXAN;9-H zw4CR_9Ei6A?=qgbV!Vqv!54JY#~Kw_+&ta$jv=DZ-1pO!cN}FWK>HDzv`%vGQl2Ft z%dE4!c=DUz(DiTl7-twSPL9yEw>b9W-#d=7yAqH8ffs{cyAVEk4rs%#0Y5A!p9-#ws{xz$NcRMqPCEi}~%odb--rklyuud}h&DjS4s*oHi@qo5NWW+wMU zm%10+JtnbRy)vhq-RHtT&?z%6o7b1JGfYsaOr7+1)v3b@4W*k`S~JX8DKDS==Bn&L zy~@Hjj0-@EH8*UknGDV|2Nr>rc4R-g=2^Gjy6N@T4J!9Rsl2#ulKtzx2qw8lOc%1f zK}XLl55IctokRnhyhl-LIg5eu?xR!hoRmublVKK@&LZ~y6!>6jhBF|;K@ErQBo*fF z&+N%Pw@cg$=FYnXnn_=@>Jx)7e<9l1JC1dkJsUNd>w|xoie?hxCck-8m z%ALvPCLpgeY|wBs+7Pkb)aNs0&wDpzH@f_(d_&Z~=Mscj0CyRGmCnUv%g#N!MyRoIGkMY@SQ_s4k ztJb~aV~j`(-D-LAH>kn+Yn=-J%f1J@dJXF|L2LRNYF2>a8n#0uVhOki`5Q1vz0`fp z#^q{1@4e%gG2y&wWo7x1Nk&#|Gv;4cuZ#-Keapu+u-oejUth+~ zux7<|^~$W!&~lCgEqlyQK6}TJuuRVI*p1EBP1#@9RIE_cXK=-sIb;e2@=4*(o_T}kgEQ<)O)jeqlDk|<;oD|-r{Nw#G ziTg93^zX86P&wHSYF3EB+qFhkZE^c;kL{=~Ke9_A`HtdAW6(K0=labr#;wn7-tl=C zsL?Dv$>!_>iG=03psMDb=Uv8_!`_qctg&VSoo&DXKDq^z(m^B8Rd44#;Z5$5E^S}a z`G4+{XwcbD^TI=)m$>^J0BwBGe#GlJFR6fMgLh9~;@3O1Js*Yd3g$?FGU4OhAopGM zv;+6=Igma5`=d(z4cU#aw(YgNEX|boTXy=BuXhE76KC*lc+J;w(C~oX>Q(1eK$E~T zcHV!-ry!a92DF9At(<#;isd@U)=g0L4{{}g*vmI6vv(^u>?!EkSYCc)l~nQ_m6O?z zc^fzE-KO?)?y6gtWQ_#fjx+3jc0Z|r$H4pjOFo9Qy!(d7%FEm*#CsRLf5-9Qb>AyK z1_n?W0WmV|_KX*6-tj4zdxEYXle?>^{mRnw-7QcA&01x(%{s~H+&eyo85<5y{u2~h zDIs>?4Y>Zw>sRrA)fbVT+!L)*Sy;~g;XY{QFdIIQ`#T9Vb@Fp!PEYd8g}LHO=HI=` zC|r~^>3NyEPmlL;2J7d+o^qj~;U(=1Yi97P?ObEcG-Ky|spL2JWH%n0H#=oL$f?`Z zEJ24(Bm}}r%PqmXnH$#so@{t*?=I!AquWkjWKVfK$)w=0*2&;iuO_{l&}nGJcB4>T z{pU>Ze0jpvkgHEU`QE-`NPD+?(wp0|8~ct)l>2|`dB^u)|IeJz+O?o&85vxonFemX13w6 zJkPl4pqtAM)EB3KI@L?if5b-l%5K)xBYSsVCvWy$j?p>B; zICIqF)9<^2tMht3YJ1AvyUQ4}dNF8xMhsS5@hvZ7XSn`K&hwttu@A;eK)YsUs?=Y* z%P1V=IWH)5dP)15hRwT~8K&L%J=tcfHB$nwtaQD9Yv|Y4$vy91_CnWVBlJ8%%_?_5{34d3=n((eew9v1d;lQL{ zF_Vsi`oIDWrNN=mlV$FJTC;NC!x9h0%}hD}j^lxq>`hSQWk4gZF+>8Ze-N}2_?PlH)=ML(F zlt5d|3l696W^Rz);y$Uo$MD@%*-bjfBzCL*Y**obk=NK+85UZ*$~x(2%}#5Egp+%g ztojEE>btqS&HgWZ$Cr>d&+6EY*zzM>m8GC+l;JvPaYY2IuUTTT(3;_fp1J?0dxppE z-Bt8{BZIw*QyUT`^sfw{T&r#tUDLJf}H&_B7p zq@2P0#R*VzoNw`}UDDv_i*QcvF`j&9-)`m`de7A=147rno%+e}*nIWMxN>%%GdDf! zHmo}LjxW+Qxo3X2A-lt*IrE;luX=UoodAPbkKwyHPe6Nb@5D@fvM%)N(RZM04(=$P zTt4Z}uHCFV;>6W{egl=YObi<`Kudo?A^)`aF5`i++r}pqlY4fTw3kRE+nBQ*->`U_ zT4mG0kD$?w2{ALDi1YR_PV)wJOP7FxC2!7?pLYd=O^@BsJsF)`z!UsIu{oI`Ar=;$ zpyk-9>s8$Q4C{7Sr%XI1@n8F7H|PMcf16g>U69>)sHcx{((}-($9E|+><9xjX?9i} zl6d^?uAuN&bq%eDut2mEGpc8E!xSq#_Sm3-|&$!s8&mIC;jp*=j$Z z8y=JIH*_mMv!=%|&*WG|n3G3zK43FLOw43uJ)idwT9OmG!n^sk&mmiTb+`)Y9V)m+6_jf5X+|UDu{O;^Y>gC|g zs&$@qJ9jhRP=o|MbVPK)Wl#o+{kB6zUN-s8R_m1X9>YANV-<;$9#6WndpEny{WiL{86pFrrSC_Ib-*?ZLzig zy5I37EUyK%#uvbLljp9=@}5-x{vE@!XN;b9hR1%qHar&B{pUz>PrhXG8}nm70w(pV z|D38~9+kqpW{1B@Wl{N&S=Ng|HpK;o%D?MlNO&F+s#@s}I-kAX=-7?j){DS%+xOAbiDa(-+MlWXIcHA+YN6?Jl0L_k)L;6T}rwxspn&xO1$5vK9%pY zuRm`#Ez6q}zh>3x-OktUSbDB|)yFVnaqwiD{nktkvD;Q!Gepdot@86XXgE?)_LzjZ z=coF~Z*JaYdb7np^lBxjB8P|Ix0CM}5)||1^kyGE-fL)Qa;)N-j^6wp!*4Rlpi75V z7fxi2@oKL0^f?97z=tE|>qr`!#_dQBz0w4CA0#rI)XL6`8p+2lMa26UeN z8GhBuymFVx;p#sxzT-%kE(4lk-oWD)T51kT4GbHO9h3O(3EF{v;aN}49>$+7D(dQ% zswXu=OJAD*n|(}TyWgi;&wb^$kIPQBQ8;;bQqR$+hoV-i><i&RG_A++{ zh7!;sT+k}Ws}hfwdFpv>sxIedDA*ep6Iy>q_F%na@*Z8#z$ru8n@=j`>sJNuc4nB- zYk2JPq&=H{zXaU>n^KLve~$5m32$DffZZWS#i)22uuw(Z+$c9^e-=G z;QoHY@YwoN_cNy@9#?waoA_keUEKpdGN65L8*~sxf!1`ayBZ1FS24Y;yM-t2%@Wqjz~-PTMEJAbyTfG)e^F5e8kNIJUwgieoP-ux%bo?+jbjMuDO z>)8j|)EfaiMMbCiyxLCCrC2|9t@V_P2SwY%s=4=M84Q%8C)+HyW@`Aka@FTadsgpe z&M17Y@?IkO&I;?4@E$|C8BZR2%3YYlbmrd2(9$|kdubD_Q4<@Q>zj0ih2ivLNzlRP zEaorXsDO^TJaZs=^{XH6I2fM2>%Gh9FuQiro+Z{v={<&^!*lGV#rwX$ddK+eQ3t5e zkqWJ$4s5bmW(~Uae9wwiaTjF|^4|XTV48k;Im4Sp+LOS!t<^&3r1);-2D5sLV?P$Z z>yR}(_T!w&d+$$&R3`7c!V|OpFsO$+4R-nO=|`ZEZ-=<>(E3}l2l*^P<%Ia&Rjd9j z26+~=V8x-F{Q~GBljkMwIsJym>OAe{_G+I!@aonq(5cxB4M zhQogE`511nimOz5ma{N$e|-k-R)*DYJR{zJT;jg_v6*C{(uT- zxM4vnR;^e4=~T|nux91q$u`?oZ7XTtaJZ+hQS5`06hMta`6eV1`d^-GDz zzR5kaOWOY|H$3LMJvQ;5&!qY9-Z6?j`v49*$Rh9E^SN~x7!(*hT^vIg4jBFP0Id#L z=&xQG0y=f(kl)Xsa)twbzp^I%-L1@!@$uL@h6K$&Zj<=?48OhVkw|`HcI?Mh6?L_r z-74nq-!O{3gTxEOY>;^cAoFHUo@}!ObWVHXa!Fa{;IHAKr6AAi-kbbn%{z_+%|8{B z{QC{-a(fKLes*r}?UkSSJyOXkFKYunZ-JlA(mx_VmG;H;0>Z8m@3>z$-tNi@A z%4)ZDOKedT$dNyyVl3GrqCw*~vq3i+72Z~yL19Pq?b3?a9@X?-Wj(&pcxZBsE=JvFaTg zxTN{9%kY@JT4fC=;x=%D29o7p^Cg-clXwnV9m9U0Y?sE#?_pPe-c@AyB9;6nds6(H zcMQ|68G7EE`sDxZneEGZ4Zrymy;tG)-IPCRZ`y43H4W||S9gO(kEVg@C6FcFsXZT` zsH}hej-f%cG|)^>M*gf4Zp>?_K0N>Gb3`^PbeFB!}z?pJc7R(|^+Yd`;G6N#2ughh1d_-MkEsfu%;r zb_7on1|3Ar8awUD!qC!`a*oZW$A0X;x#JeghBtcNpKL?FUVSIPFzv9!{-Dxh`=L-un>N`&kA)Lh3fqj&YB zH{qe}rR@gcZpROZ$i#pSF=9yA2|76V9_S#`HB)t=g&%z3;9^i@Ca}g#eR45$>q_gE zoz`ou84|4bEV5>3So(FA3TRo)nqGfU5D79coIV8|%v%~9s;+9ecsDbH+M823F&1^@ zeke+|5T!PDKjKEo%7%1A1Zqdd=5ZD z>Q}1_IRQOk|n!L+7BfW%2XR&!`XsJ7c zf#!OzqR?^{h7FVSy4jN%8SW@R=XR#uJU(d-=#W6~S1l^v*RRqqYu_N^_nMF4huZAP zf1Jx%7%m5ermOyZ4vG%d+7+wTfesgnfSp03vv$?3S)ge+h7B!!zMmR$^G~!NS(=>i zQzito0hu9T(myRwDbJt{It!ekK@(cbCESz+jcj{A`|J5_<*LuSoFn8w*NAxUwr1FO z5VX>G#{{my(`Gz zbL&26{e$+?CYAXhht7cABt9)Fv{v|a&4c$HcC@eNz{-H>J2aJCWB zkeK}K9(X$)L)fv0p<9<)GchEKZOzbd z@^{gs^B^;PTA>Z_;E$jZC1OGFB%1}G8I{DKm`3Jl2ltn-Gi(UDH|NP2&`~Fs_#mf~ z%;18if@O~myklU9m~eQ~o#m_iUhyRs`FVrZHbrEMt6DCxW@@+^7#glt37SMR$OPYq z;sa|D1Q(V}Dh8dJd@gSOll0ZE_Pi5VwtUq((BYA?@YXkGm8YHhczM zjly7{3hku(IEChVZd$pUnc>-!F3??n{wr6l-km&SOYkn{hOOT~=O=~vgKoh9@5fP@ z8xy)5blwKS>Y{{l28J^SUwX;~gw|h|J>+Fz#kMPC(sxk*Yg63JCru#F7J;Vk8D>bq zy!zyU%Jfoqh66mZ6Q9I|e*O4PAgt}8;f1G@Lrc@jSr}HYT&3sp34CvT5%>}lxK6dj zpd%{&fkvJu?)Ul>44U!b&_4P?;>D+Vpt!$x`f+0m!+~$BRph}*4{qZ#&_Np;y4U%A zYFSkk7MlCAFY)P|JF*OG)_yNzXV`FSo9%|o|DgP3WEUIy9MsSUof`nEx)_3s6F{qq z84}cEr#_j!>XrO%=ZHu>S!UUN)1KUT$H8#zkoV*m(A=ueAxO$gDFI&xc3?@!)l|=W zm+vw%SU)_a(!Xw1d1?EGU8`PAQb{i_XUKlO0yJ2}c;MCQRqNF%OUv0A3^*b2IuVwT zzI+3%NOqjARv7_m9=B|LaLaH*hC3)Bg~d&Sgzd^)zoHOO>s17rdJSA>Pl~xB%gAv1 z<)j>*KKl!@hi(~Iv4Mt08(LSc;s*Cb7$UOd*J{~&voPG?ge3*P(AbGbmU=KOd(fm} z9~;_U-o7EMr?1g5((5{w-xv=mF*{i>9Cc}n3dLExPhnCiqb7Y@f znw&7P?*$)2LhfFrla`>fATI4RIcW&05MUQg98dub-0*=$-Lnh9YZ26UIfDkB4k&>J zR1Z|GTIK!dmLWrdul$--+Mrg*GFY{z`TO}h28JJM;;KJquKE>G&hdKns&i+L{g6$# zx6bF&Nl;wgT0OZ2ROm!#fvPzMpP8_z_|~WbI;8D@*>u&)ics0xvP^|U zzKfYb;iUBBnswGp3=v%EAy=P+-3zPwR{q}oj)CFYy{Vur0P=768uJU1${99@^}Xg} zXaE&J{h$J9X#uDmd*BKz`ZGhn?o^R~|BfLcH+F8yebB;KjvC>`$q9lr`fLY+R;(%q zFNbBwCTdJeK0#2*j8diAa#1L&%&87k~$be62NwOw4c)uInrYkN&by2Uyng4DGceR_US(x?lJTxAgG0A7Xi^{y z)ZYYU<<&{S;Bqpe^8b`4<-3)^1^(v}Cy+Jm;wn2qEAb;%cu%fb0;+aIVYRx@s#mXa zcn&fo#PRukIs#gr!*u)P3yB%a&zG_@9N4;YmA?AV)1b0rA>VpPibL4=1hnRO&6;}u zPu`&MPL4MWi<1-L^lq5FU}{MHx=96GnsOI|V`3G|YpEeumrn*=F?8URrS{45p;ue) zDsE^7EvQ1DGHUnFUw@T zc$L;kaZpTv7KVrXsWaQRotYu*`fpHoGz?bxXfFj7$=BZTF@zm@9|~&sCy39zAfjxM3^P_kVgsge^^2{bNv#IY>PXOypp3=|B|K*iPv6DNkic%Ef3g*n z`(tu^i!wlko7PRx;Y$plz1xO)v!8tP+-G|-cha4z+s8})T6wxn%HKWj{UJ{{r~5k z%Ke#7_&oQe`py6K?6%#vJ2U@(ka&D3hiAh1bH@~Z&QVEMu{1sD>FKv_m3G=>t^;}% zu|0i^Hwx8NDw9A{?~Rf_Yswim6zQ#6#SLoVvhP(onXk4pxSWH*Aox9K(_Vxrbn2o( z)cn|wYbxdbMdww%-}tt%eA4aGva=VjsVq-VZum1_KK{nH^TDfMy*g&ru+{L`4o|av za__G=t1(1)$9ose2aSKTq@{w6ffZMmysLZQ)DNG~yPK_<7|O0lJbpe|=E_}0hBH_E zL$4-+irUqX-K#TJ8vd*Q_Ri+T@7?R(|9$N%Cd|Q-5i#ZHQVmfT*8^eA(%l)Xt8_!U znbt;RWV246Cp_me*S8Xr9(V3*S%ope0*9vcPH<@8P*GHAaZuol7VzL<5#mT_So8k# z@zT{UlkR-4&3%9WQ^lDSqr>s%?ROZTEUk^ZUoJbL*YRVydgYOM`|UMOHcpP^esWAj z-uKf!6>*iy@JZaeey>+w%n%kD`qyt#{47wH|IU;rAMe)QD&ff4zG|1v$=YSs4O2hf zdRKR-goPo;4RnF!@#WSG4Y?nWs+7Nf_j;K#0|PYmZcq&^O_=oFxsiiyE&@v3*zpFC1&_ubCG5M7p4{{Qn!4u*!%$A<(!9fSMdcy`E5f6_j=rhbxh zdUx2N*v*Ew>^^D#+kQUu>isz9y68#9yMM3hv}j1ZdRIL3>h4K3*Gsq=xZg%JCx_kn zom|3`Gr!-To#8-Q>G#youdhApvUjmE+}Lz^IWq%87^J@I@2Z{@{`B4X@!_=Y9lX;)3#>PP z`}6nFH)i>U=oPD~)ppvPbiAy~pfl&ZN@YZOeTfxISy1R-he`YAykiJE)?f1d^>Sr~ z1npI?=Brs+pOjq|&CuYx)8^#gz5NUfH|oF*kpuT{7GM0~KG{a~^|I`NQxy^A`?IZ> z7`Cli^-trZ@iJ?M2H&5H-~Ic3S&)HYHE44+1A|9sZT_VBzMqz;wDUjTuvgEoD9X(3 zME=`%`uyJ+dRDBO@AK&s$oy0JCEx!W%QEg>y2@_ilY5tC4|wgUFON5qWn_rn`uwrY zd;g;TmtqVF`)yb5j<*FZ!tVmtilEzZ?@qF@JX!DcN%pYin?8M2OYM`=llN@geO~?@ z;|Yec& z)(ydZbNLt&?ws|Uck6Dwtt=C>-YigEuzWc)LxOc_x%$tYD)F=O7#Y6ZTzQ$1fnhbI zbrTj5DjODh-t*H#mHK&49v=48S?4_2#_r^Q&!WoE*pN{7@T@I?Jl^^a^M*`t9?IRt+#vW|)pFDB{26?WoS~)9RpxsK zUDiDiRGnOIUj|A<(V?<4p1l3Y7|#$7?NPEGmcX6TT{fjauEuM6za9f9H zna8B#pyjvyp;woNeqFSx>dZWC1_ti6yY1&Zne&p5q3rJF-M^hL3vOTl#Q=C8wD#)V z`aYkUUh*+KD4S~rT5bSowt;3p7lxLGnCVH|>z|Bmn;c<(f69}ao__wHu7`eY2OYF# zm9c~S!8aLeS%w4atQPM6pJK%%cI5Xm=7y!|B|HaK{g(f@QH~)Z#60zJE)xTTH6&wA z3&^b~GLy5Fnfv6!Lluun)oMS#-~6%Z!_?4HpHSPKtKOO1Vg10r*XCsDWkH5FUD}gv zvaOiJIzF;&2z5Koux87K{YtE->0Z` zV-IC^=$3nbx{~wf|CcV%cH+M-p|VzYSSP&umoq7NnKi?W!nsel@()X*Z)J{fEwkg@g{_Sw=BpcO} z*^^>oL)F8tUS9P|?{MsaD(f^Wh6dU1?05g}ddU%CF#X6;vxMxPKE?>~|E4FGUKV6H zpbKg-zG-^(?j&N|=;C4>ZDhzWn=pe|Lrhc`H`EKYQ$W1OJRXMuwu$ zN!8`s`ClUpZs;g5CKZ z-~z4e%x0dxhh}^8tr#M*%t7fd@8!GAlmA>R0WYF$2Ic>E;8th@Ye;B&*wuVBOZ$_` z%c>K^WhOj1p`!0oR2e!q3{)&w^OrNOetY9314G%7`K8}8FAHus08VzZ*zYl{nH}%_ z>D)^W28Ft3+zgn&Dyt2k>%rH0?yIz57dyJpv(D&b=S>L(`QXt0m0I@KnYNwwUdGIDBkcdq z-S)<^jNI>PFEbtp+FfbIz)%)l9zW;Fe&2G215(xDnX?r;2Oa4GK%o9TUw z5#jqMKk0eN!4MG)No~U5)Fu%Y>hD!lH|hPXyhhcc`=B!%wyoN=VO8I%Rloh+8BZ_Y zZ9ngc?qykqoSV-l+oW4DO>->2KjX=wmwXAClCsPjrtSLuOvT^()6JJ+3=!Z1Xm&#~ zA6w|v&68!OKbi1SEFy{Dv#7*uo&5gItL6oVexK9FH0>1F|C^qde;2(hxWVO~tt^Ai z+S#B|+N(T%-jnIetr-%|#!P-P2h?yWh4c%UvkvF0RtEn0Zke;ZU9~cC(&<&Nj;#81 zJv8+S|C_U`C)E^MF*W$^);Rgz*ZsgGLn}73(=Q|%wqCniKkdoY%d!j`-0t1DYwqXH zz_3QRe-1#Y|m0-odAa>xq>dzM?EDUQpgF!8yYmoVcH;Y#7DxNfXvQ6qP z)@vsodd{2qBsa7)FjO`))ZNFOk^4C)nVLOSz593iWx)+C_hheoHJ-Jsuwr0XR{Gu4 zv(BiKKY{VUIqO<028M*YpiIngKyT%$-zt{cC;9!iACRgJn6!9uOjxM?>Q%?Xrp}+p z==rHlW&VslhJ^h!b|(Wb3vTGy^*eu3jMZI69o5Cj3?7&6K3Dts9uxqN^xnKX4Nj@O z>{CHaLGD$r_Ici$^hEKpuEV4!6IAS{_D+0weD$jrt9~tesFn~=et*gneNYjm|9|c7 zS_3At_jf@F_1CPI3=9zp`zJm*ds&cS!y&)fd<+Z`?%*cVhQr@@`p$cN>R%q+5M4Sy zC+5WOfY7;-q374Evi5UlR0dbj^J^7O%KNwdkq_ zkTCzx{kye?OIUO)7bhne_w+G7&@TBt)$?EMq2ZXl!yEE=Sv^BZm==W=&CLL4Q0alQ|jjY%j>KE+x z_x*GTv_8#n{rh*)%Rw0*(&&BDuxeL2C_kPq;ogvXf98|&$u*l+^{rgh?#Iq({pyB_ zoB@N*I=@eMUUEdR-u>ID67E;d;0-!HCGT$W`Tj11aON#Vp{L3Tj%>}_GQ5hO?or<7^d}IG-P;l_w%GVpq8=so2}sR zgtYUvIfnj?n)Kh`E~8FMzE@ERs00xW{W{~NLISwq_&}^~|89FzSw`&_&Yu6$te7IS z+>SGB5WibnJZZk)r*KeV-=gRL=^nULg3RkghlKijfBN&1FX3U0?<93~%e|}aMTXi( zhqn88b+w=WmnkQRzLj*YIKugce{nLy4feZ#XR6pweXARhQ`)#7de2 zeSE`WaQP_;GSmHTZ63HQ+Mrr|3e;oTr7hnGY9O9nxr!as@Q+;{-LSN{cG7g!pY!kj zo%d4W!L`t<+f{xZC}BS^Yq!}+b4l65=T@$&pWn;Bit$Z%_U_*sK(&Ti=-1_*|K66c zGw3wxtN(Pr`}gQe0fvTB(4ij;3^`7rveTY~8d|WKJ%6C$@BiuDDyz+_=Ea1v`?xc1 zzj9aJr|2HY{NM3x$2UCw^P6vj{kxD*c3*df1CxIKRCzzEkD)=epbb>z+dy*X9D9#X zYcC5P@Uk#EsXb}Weo)O(K8KGf@8OJ>3=O7bxs&eC>uWIma4+XiCG(B&?{oMV8d5i< z+k9J335ylIpo` zejh_baQ&UT;lAz%R=s{Vd(xijUCa?$-)Di$ynHuYrLt(!>t)dl35|R6tQZ&=7H@du zejc_KAen)I;f8+b*Snx@FmpuacaNfwN&O*L4MV?9c&QMPez&%C(&c5=4A(CBde)U& zF5|#tAe$KzlxFPM_ zTt0?rUEaqTHkj_8^yCUC>J2~%lKT*N3iR9A^=dyazT`-FYin^*UUlb|RdpLzy)%(z zdA(rwdjC(SUh*}Ve%kiVF5Qah+L@&vCyFNAmy~5bAXf6-*R#&*WIHGn9c#=^-Ubz$ zP}fxlhTfm~r1G*XL;S;iH+TH|esNV*UFh9hD~@XiHeP0A$bPbYIdj6@l5%y+`d!Qs zQlKp9diU>56@QPSvnAXNIt`b1{XX`RgMq;e5_)ezH~Pv5hmWhO z0z+%>mI$obuwDJouKKl3<@u4R$q7I2OnCCt zvu^S3`}VTTs~4@>r+CtR(v=*}1E+TBo&3A&_vOoq8~Rqgy60(Uc$ZP9Rln@}+-1rP z2~$I^Ui9pn^^T!|F}?J=GAKNMRD)Og9$33#)q2lQ&kZfurd@XQoHy&qqE%KqSIHU5 zvaDXP+kV!QH7`M@4skUn&$xVdzE9E567~%u?;=3W6NUp_Kd-9j&+KDpU|jCQ&cILr zSpZ$|`d{^={MmgBHx^l|RMt!?Uj6FKs;Vm`0&5zQmoqbj-RNG<+%N|ekiEZs*%=OK zy?p2QsYfLploRzpU8V?dB4YT!A9B^+`;+!%S%%whPN?LsTD5=8s^fmg4+vT7ot(Z* znIY_g>fN`qY|dDNdIeJ7=kqZ%gkHXTUA;1B5X@hf}!b#~>uimVxI#j}=GyC1Ym`RhDgAPM@@6XQQ+0)lp3)<;qyn9^;lG<) z-H+ya=FRJ4n0DyzGG>N^(9-WqZ%WA37w%$ZD7(=Ks%>f@n^)&$CQ&AWc@QL&%A^%k?=>vyj~we^oIP=02Zuw<3otS8TxSu=NjlG3nNT>#RF*-fb^Y2^&7cGQRwjv+93r==WKCO^M4@cIH_zC3No1 zIlnkF;Un13te~3N^=@tOq~$7>wYyjuwt+fH35^i9ZCmwfgUWuJyNnxJ`20T2pA-`X z8gPnT)|}u}UT=4D_Ht{6X)|8?Y}f%x!G-%lO>gtNwY8JfRVzW`vN@NI-u-(JRJ!Cr z*7&}DGkwyXWRM%~YMuN_*7m=ZYWUbt&3%XnwkyM1PMJPdE{{so6y>G$Q6ZM06Rf=rz6H;<2j;lVeEch}Wf zp1iwUnIY^9^W;5BCvUHQ^?P}8f_cgJP|tI--Z4Ztsr#`rR6o66*svE=Njl#ByHcg! zx9DXFH^ZC7{;HM7OIR2fwu1}ihONP&<-VWZfKtRa|H*rnuJT*IDt~rgV{E~n5>V5^ zXVP|GcZTZJ5}r3_uY-oHcfEeM-|v&N=fA97tPI}{X7B#J3>c{fCwUK6R z$K_||F*fYA05!cE_JY%K!rG9lf}VAWyO1h`cx<4$m-Ix7f+3R=xsyh>Q zF(-6ZM6h`;*uB2vBGZO)P=Uwr?_K(oe&3>_CEN^m+VoW`AA>wx4Jx`A4($5*Q>A=f zA47z5yXw!cD)phE?x9x?UUuAYHqKasLy-D99)*HnOr~l$-T>hp!TTer0ZcYOQVAy`;uDIIIe~`ACoH?iul#mIoy*K#%`&`1n z5dZX|r{0QH;-Oa`UN+p|x_%ZPLj;rC@eMKeWw@k2NYWVx@hl+Uk)z7P6 zU3e*R1Jobiezrhx+U47mYcj2vA|lGyt+EDnfw!;UZ9nlzpl8oMh8ww{?8dO69^$Ob z(9+{7_SSb94=lTDc=Ge4n2^x_SypV{mhIN}EV@|2et>D0-bvQWf(QP+e)oElp$*#( z-S0E`7#O~-+r8fB(+d@GzwHbg!s4uD85j=y0}tLOT>X1mrQP41VMFTu8Ban(OWi_i zf0yvQY0W;)5dZd%?P1ph%ejWK3_2!@lNlm}K)Kz1!jm&E#Tc#~GWEO%>cqiKvaPjZ zXvqEA?0Ihes{5-~?e;%@AlD+#iXnkcb0rN^^}|br1Y{b!iERr7D`!CjTGoBMr>4wSGkSU-E`88_#N zZs^wsFC~7kgCjDbr!TSd?M{#4XC>?#Hh|p5S^B-#bKb-!+d&cO8SnM!7uao(0%-M{ zbkMk<=>6$Wnm{eqyO~yO-wdqSepH8-d{4bBcwibhsMh@UV`pHPeOdaS_oU~b5HGrS z;qGs$Q05;C{5{CFBax?MFd} z{1@H*+obYe?_@71ztLSP8H-q1BL@yRZf$3`?)h1yz}$y^ZV4ds_I4w&+Fy8?I%2Gddb(o`eENohJ@R5 zK#6OKwaU)#AOmf8{eGizfASM&(9Gakh)-=GKE1eq4j)6pLK~fvJ3*sMyH1zzWIx~W zlA$5-`cdW72-W;~d<y7vl-)VmNjAnO*;l>Fyll8;>h#pdg{%j5?OL)se@-96wzJifYCuB_9`WX~3=BEz z-|e#k4RIvxVr^Jjlvf^a2Wk*KgVdQ>a#N3pdNbsm-aGkEW$4_f(EAp$hhM#Z*RO7w zzKc2GLiKWHkekfaD_@teZMd zF8fKKuEDBRd^7qIpYE-(Vo12)dYSRSHtS?7h6vC`-VKYY4i``UlQe1evTBBi3UyGI zV1p^7(CJyV%XyNzPdUQ|6F%Rfl1bY`uiDS-OI*5FN$xS@>(`e+VJ|7my#1NnWk!Yr z=U%-NSFJ3Xqz_828}#12Ai2!` zflF2@CqGY`6CTPxw=Yo@?7fbQhHGZLd#AG8znp;^ROwuEDc`St^6=z6sk>MkT8saH zI(^ZQs#dG=Q3(Ts_j~I}dls+iTeqrtd2)p2dY_`dB`gQ@b}!q#er6v-*^$?vA{vw& zvzP2%@AYYiO1;rtrUQq5L`>oaHMVb9LDH5}sIA3GbN_ON4MKcgMIoRL)b3@;5xk&o zZ2p{g3^!7z`>``vKl|#LH>;09?9|?6%nS{8uim|0`rUYvjrK|2%eD+X*86r>gAy8~ zm7EZ2Q)b1`F!l4)@P7W8eTk|v=CTYMPXEiYVz?m*8d-Wj=N*ICso2%89=zmWNcdj* zU0$uSX3}}T?FEMeYU`1Qx$(67vw4R!VkPpYZ3VoDH~ zls%kfoomGqp)vJ|9B5vt=Utuir1ySBA4|9yl-GF`T?19Px50br8=yH+Jv&#$#e}x|9^Wu$*YD4san^SkH+1XG=VK_l0uD7uH2Rg-Tb%r^W(kUb*z%o45LS`JBGQmwWV%SswUh zVAUqN?RnK%>E+f9t)OX!CFXk+P9{%|vAoNCpzpWSBy&)GxuF)4u2|iUGrZY$>e$uC zpI5yC#h)Cg9Uksm&hSQvzdP~k-a1e~xgBRXaR22y<4HC)CoMrUYAb?w{XPw9cR`&q zEhL2$uTsfey_dE$nZh*-JB;!L%+^iWtC*r*81(zONIv7vacl!8?t-) z8uzD`@G#t2_imqxwEPE~yj`pfxrN|dcpK8fUm6<9u2%V?gq`6|*L;tnz);<Cpiz z?ux5}ThHvZiB=3ZOw*6fuS{s}&u3()zIu25>v!|LK7CQS?)RNxL#DZkC1_1d!&^wM zHmdfRWDOd3%-xYbNqF_E8LO;vtlCXym7m?JpKL6aKO+{@)B zKY8eR&-gCWfn|Fj({&67zCnumnYG_b7#Q9(FIU^SVU?Vv?4d)T?LEHk3~wgvpUKBi zcJ=i#=7!dS>7bg9i6KJn?%#hZ|8-8j2bF>M<7`2Vq;rsjKGQbIih<$VMRPSvcwxhH z_iyJ8E{-*Ni<2Yt)m3&@S}{q4d%gp8ly#=R`&U$MuYS^BrO;3~!Sc?OCr3cdh_W_t zjt1>lXhjppkjueby&`hJH1^tf?zH)`?13G-{n;59RxjLr-uKf575x*(4)8V{ z{V?s_zayaZX$>m+85&Z*cD!U@xS_`H^Xc2Fs&geA$$tJtKTB8+n7w|3xh1xtH(8zk2sv?dQZFl3E8AReS~264uZ({!~eYVfB*d#@8-hFn$j{P(eh zo#9P`x@x6=sH~;zp>@AEzhq!&$So+Fq`h3Z0d!!-fxZ{-vUmMn>G`j8((2{a4A-ti z-mN_f_7v1XUk<3Sg9bzRcGgeYzh>3*@Tv13uIqfa&*J1y(6HNyrO6S_AQxWuEoWE^ za+mDYyX$>E&Gqz~oyQpAydKn7Pk3IrfsKLTfKk;2Py*k;JlRGcG_;nzJo$#{aUXVu z9OcEy5%D0eL5#S5cY68v{S(ib31=Lq}!P_|w1l=rt_>u9lEQ7(5-;-hjLi^|P zB_7{nb~5y`Aj9nkeU}*zte8CMj)g2^4=9fxEBS7E_wO1N`&myOU$$k?26a|%fZ}a8 zr0z`pd_V;}A+kVu(wwN!^Xs+jAIBPk>X*mMtQod7UNl^@5!6Jyd0F;A$Kh444uC54 zy`|qXJ>@1n`9A56$sFblT#z#5-A4sp28M>z&kI0fMGWjJm2s1VSG`(y*)V5!@-k+I zZ3h=#W<0PX+>f0>S?gpXD7WAJ`}5tuRuz8#qH`tu;AvTg2*^rao!RxE2|4a3oSx@a zu44CZ-%z{j_Z<~+|8j<$i*uJTHxwRM1q~!gfC5FQ=UrX-B<0CAwkNM1wq!W{V(#6) z6Tt-&r0;e5nKUTx9<(tySsD5@f4TFGuzFB+?y4tyc-HH8{_2&dOV|w_oddO1<5%v^ zfA=nVQcd)vsA$3ZMlUxlcbj^Gi*Ds zG+E*1jxwG#@}T_Ndgbo?H}95%%BJZ)-x+i|!$F0^hTV{4W#)FAq2TtsnNNH}zm{HB z%<(OcpZR3UOTGr(9k)vuHVDK`ee&xiN5XZ`5qLUV-qm@7)@XKnu9H2-7?C1g^1U70 z$${KWq|*y(6#oXDy3$mgGO0ZL>f+_jH#XVNB)_kZ5g;vO-*KKFa`CcKwCm@sj!0vGlh1zPr3~1FRgkhVfMDvbKQ(S zh8s(iztvc9J=pP*0qU~ecl*}toObjA3CjUBSwmTdGq2yBSGUaF#e5?aG#%j$ zjYb=TliZVH?B}o;yxak5e5OIF1s_nKxL9t+lQ*lX9+hzXUcTFY#uLzhp6{;XB@7!3 zY=T<9f-a2QaAnu;&3FIaQMo_w$(5IK4T|gM@G&qXKI+=Bm!rEk}tyn zBSR~;hP5j}jj2tmc0DfP`Ta)JbDx1M;|5O96r-4PdA;FD&C9X})`3cgFt76Y6P_IO zoHzB!yB|IUCEPP0DTaiZcgjJHsw4htKTogvwd33f!sFej@03FEaFh ziB(JOC-uvW44`|rYL;GC{duQ^WrH^8&XKUN^7!BXH<#Z(xa<1Uz2EKQ&5qt%thCW3 zq{*${FiYSH$1$lZH$2{KR8hH@amusr;|t-lE8OQrEOPnGq2bGVM6XN2B;r7k&PmUZ zH%+WAv%YNm{`JpBv6FVzIX6<**52L!yKZmVwH@hmKGyXc>zQZ&wcEdX6`#kZ>`CUT zJ6Bn9CM<>R%enxmWj!U5dsMc+c*oFSxw&|ff3M-Zo3e+tu3j~Hat-L@NaMR3tr=#> zf_5?Tmy|QyZUNZ$Xz^K2K;@X4gU)ucYFpHepb0%?#^&P=9cEk zhsizWeTIL|RBV&ICCjj3W=~%uuk1Bhh8$r~>f>I#YF}jNZ`I0zNx{3S8Ma-zrScwh z1N(yM>?ar)7-n>VHor7jem|sgyw@=Amh2%n*;!9Mz2j&&yWzA%vTr$yL9pG_C%f+o z9#{pswjshI^y|%4x3o_lp7iJaJGlnkFDqABfv#U@hy!~mNBc}OC8`#XVu zt5;cBpKRY{&0uzz&$H}ZA48gZXy_#6UDgeupsG=4%_^&ntKQ9D`tf7^!mjFqHbCqO zz1r#dZuXOnp8x!d`3@}Gp>>iSboA~EkR=QULUxq!Fx)<;J86!=v5LfUj{iqHJ@?&~ zW!xb7?vgCSnQ5!6bWeKTl|8U(*FA~Hzd)<*?`EBBpZq6l(%(rnyDd2%+?o>+nhx4) zcLCBWUuj^)){vY1TP0s6c~5E2M(1)K?^UZN?OD5z4lo8IwS} zrOYN?G%WDFH~Yz-cN__!prMeQ1*_JrS=BuGj_JwGljhu-!&0zSdr}SP$c2WR;JNMt zA$LH>g^As8o?KJdQ+WNIz@$}H#^8;fvroK`_@Te*)g_hpFW)hQfflVCaMS7U?>}+r z>Eq*SKZ}Zm4jfdre328Og|a6>xyp`t0ni_+^V^Cgq-?6+=FIeG9dBg5<$=aPHo zf{tk^$tYjR`uQnrEdaxYRex;686H@LT-~+mS3&4q^OJ`s)$H5N84+plpE@{Ter-a@Pz%YAj9m0-zvMy+!;16U*+fd>FhhcgsXSJo7=oV3*D+5 zCb6qpuG`HXp)vjFcUcC8YoK8Vh65pYHh_#kimbupiuD=cLoNS+dx}DXUHm_yx(KU zCzt%@g6!r4_vSrW^^T*#x8VCbhJ-ZPi7C0|EE}}eU6*BGFi1W9`0;(OqU|dAUPYP3 zLI(T62c{-$0~cBbpmXmHs^?9AqMY0_yR2Pj(W+mClOBUyc5v@*=7yVF{(PSa+Kv|1 z>V2GnL3_cfeZisnUPa4Q)_WBB-F6?Wn|dE2(EUPfz}|TT|PXiCatHi{oMrC z(t>h^18P6Ef(|>Dy&}u7hHH8sBSTm~=-kjyeg93~lhRc!w{GW{AuPXQRX1oi+YDVq zHa)YhTJ7f_iNh;$ZvXa}Bwymr5YukmXIQt;nrTL)yjM|FIm?DepaM05HMF!cRCeMM zIZwISPo6weNw@_rjS{{=Jo)*U#BKGP8+S7^>w@Nd_8$N~|d~U}NlvWm(Gi+D{O6#*iu8M}1hJ?PI`ozwY&#TC@ zSj-^0ZrYP0V1Gi6YzhWt+{<5nsLYp0zO%|Yg|SBKr1>sohIL0}|Ndtz$X)enic0*u zcMM@Y7Y!K>@T^$1KJ4m0&vz4^9QE9He-6u;w&Yc>Rw0|WA-J4@VZ%|m2~U<79+TbW z{46pwG{%}O?Y76J^l}!1&-ZT0GOUr{U(d{NX2L3~<*WESil(dZdl#il@~&Rp;0C@% zHlYku+%OohT7xof^iw%cJA2S!coQtkLHECaT-OXbp7r}V70?b{?L$kG85$%*Kn2~A zRaI$|Vkfo>f*WR=u0~WFIsDH~hL63cjP{0L;W~pzT>< zM|vmKWb}O8@@|6Vw`cDd8nO%L8y@4`t=us4`!ki-yObN&mIanGFfhzsw`yNZ=x_C% zwUg|7UmrI(e-Bj89LRyxI-m{i33YE~JUL-_?DTHuXMv%Ay(j6Hl{4fV;RBs#&NL%8 z^y^#|^|Eq?=(kPp7#JAL;zQ>~hvvuZtE<_q@;mh<)2HuMryE2+U0wCdt(=8{VKeAl z0)__7h|8e6>sL&Cl7CDhUn=>B<=0cckAvL#5p-I)(7ijd3^`lpgG$B?rK?``tg_m+ z>f8ENv6J6S`Y)qczkfU54JXj`&joXB&ag5t91sCjYM)>FPuf%7Q~3AY1j}NdNyWRA z8O#p7khmct@A+x&JC20apqup=4xC!GYW^B?r+vkftkrMYpL{;+a)a+?y^|L~Roxj# zn--iuo?XvZ|M>)TeS+fWMXU6Diz>?554gQCJa%KHHOS*z%}!?Twr*GpYLOn8vwGG0 z@T-oYThk}qoh&oq$(v_736JeUL+xMnF)$>2gQg$Q@~(!^t?rdLCBLQp=gnlyP*NVdp^h2Ya9XRtxa zKu|V*cK@BHpJei#&DJS$Ay>;M%iO=qxIvKrJs(3_d}!>vCkNi~C3MdP1^0n%;i1z( zYeuu)t9N}06vY@|bx>!k0XUF8P6kkarV-(5zA17?N0bz*Jm63S1^`O*H4p`o|J zrJTV)GT-yl=XV?ln`7k`Co?p(hKK%NzG~jgCwZRtraam7OeG>ke&s6Aet!nI13?o? zGUnbzk0c&*-c>Aq(4unxO&`M!w(oMuceYtG&8Q9i`dOvDq?}>)TlG-ThGm8`ZL5C8 zh3?fjndf;=YI^^|!-1fJ#s@My9lW6yl%0LwPI+=Sx#xLVyU)!}&j0dXzGK+IrhL+Q zw{pYD3g=1MyObNw7P*1aH>mntzslaH=sswF!vUt93MUIe5e+jBRNQo@`%Y>;E>V9~ z)~K*O?Pa1+L*(aNj4fMH&6Pr#gbj@;O|wh zE`iFLWsqJwBvEgX@Z^(7-c#6PxGQlR@dB zU~Se(LC-S(PxIc%%_xq0#>Q|U4bofSim_sAIQs37N_(&2pScOA|2R*2)yHt-K<=bF z%dMGaw5_r-1vO$0sDW~6!sL*vm7!mssGRpNN-gI&)S{4hghzD)9+P1Y$*e4rAZt^YkA!?MMz_DulaTQC`KX})g#+_@>SlV+!6uCSkU$LOTK z+D+4wvXkFj5aiy#_0ROA^6FP--c493k(@JqDf|ETckVK6XuP}XRrFoK113F&a&w<3 z-<3VEb(Mgc%l)dBl|3IntooH#enuqZD)<

d5D!UGA023^BrJ4$)_5>@xEwq{^x$OK=I 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 z z@A^I4^IuAx=Ygi^&-2wm&7aL7q0_yK`Y*~FIG&dUwKTeqT`*)g6A>D_YSp}HQz!Sz zi!P5gsQ#_~^S-BDT&Q};)ybgl%wh($SHhs;ZpIdAHOnGUU~5m>lW1oNGLzx<6aL9> zEUcK+p6$K+_aP`JY{&p*xt@@#a-m;utl^QiH#?cvJo$#yx`|IbJ^fa$dc5kDV(8Z6 zFEkofzId0f`tud2a94YKVO7-)tM`==lir_EW{b#p4r-DzFl?I#YCku-mmgrU%?8Da zj*|0nh7FFPTW`PG@KJn{jqb^#?CKj!?^4zk3r@6 zm8)*A`TFSHKd(v0&unCm@PQ1r-I(-lYRdhKf(C}_>XvCGEDQ_~qkC6n?FJnpa6Uct z#*azOlOLp)`4tsRTD-Z4=~M8kSF4(5Gq`~o+y`858lKEv_3Bgh-i5p4Cp}s5QJr%)9E9o9DghPgFg>NzP#wf9B;mZ^Dx&tE#F) zWn)6Ed-|Aeq{xHXe+Qg)_<$;dq}My1^G~kH^|L+j=%Wy56n4YPu=~loZ-VN#|9+o7 zfx~(QD6FkQuEvFay`v)US9JQK?FPQvsyk~ZU01VQ3+k%>=FMZep>wp@|WHmUuLK6``#DA6!9oGrWYf?>u2@v`sy;8X`1NM* zoLQ@GS)bhNUVh-noSD!j*F;b$)*TRP?)~YbioW-z?+;{VEPV?)f#mk&nq8~@tyoni zeTT)M`0ia#J1bB&Z~gRV)vx&1JN{kt^qUpVv%%mTsOinXkfYh}wdwN1pUC#4^h?DAi~^9NOo4WO|ahI30-m91EHT-tkY<)6QnOSi&!8Kep43eQ+Cewz?VNJC%1zli-F;NWi3Z)ZtG;=Bnx%5yYt!WiG7%!-UY`!BEDyb!y!zBh-vf&* z^1wly{TjH_2Z#6RBNq%A zqP;@j#)RtoeR`x~-T$spwfN+pM;|`QEpBEww-z+M+Y74Ob@nU|zq)??(?jp-f+syc zx08Ja8@S7Lz(#h;lV^*S6Pn^K-MtTPOn_G4K(LuozPS#C0)j&kAVahE ztGKKE3<vx-fg^ zhTZpPJn69f&hQxAm1KDKaH8ir11l!A7rA%;UIZtlo>jM({bJCW4{88?o@`T6!d=jK zZ{m}{yMJF^R6KAkC^X)$XeT&+df%(>j4ZEzwn%Tys&3Vv36rGH?&Z4SbN}T#Z_q#j z1H&}$&{(CDnx5Z4ZSE3SgDJwz&x#Fne5IUcUteSLj9s_YLBo2Hp`Z&SwoTy&7v(G8 z%zN@RwDe>5t_{1-`xLELxj(mBbi+(P8BoQ}ptE#;M`N;u{d|v4=fI9$!z0VQA!OC7 zO`d(eMb9tl9+>rJ#uG)*>2CJxR?T%|XN*3y5md)VScUt4+O%pF$XI{RPY-^oGtPbi z4cQ`4r|{?Ei?RlR?d9c=^q=}dqG4%ZXt>X(dn(uE?lP^ptvdNn?xe}9U)5z-dP*lS z+kv~{OG^?axvvGK)YwVlXU*AfxPVGC28Oh^nx18{vW&tdS(6rns~#ic5}pG=D^~s8 zY*bLQ^`h>9wiv^crzh=My(&k6;mqlep65Wh8FF>q_y_%q&+#h_m7u- z_w?lRy;QuO>Dg27yMMoeB8K5W(TY{G)pi~SjbA=5ht|KFK!I>*)hcP#%KS;E`|=o{ zz1jpyv$mn7b1xbmxMWcVDgnLU>UqlToyNWUH?QYBtNStueSPwf*q?fM@{JktbvOAZ z%Ygdk4BJ2rdYvV!er;8G@3ras3$cXDcho>D8fJnTViE}t_tt|Ae4iOwdfGJZ_Y#%k zXN=iq%!UQ3bLd^mlZ=b46BfZslxRorU|z)ZRlCB%{4C50c%rX|PqNvwJKo-kB_bxY zG;5M}|2qbTgq5|1CwX`O{?ff`!z#UrPwXef)V>QnpmTTY?)xU7;d_RNoX}9uKL4V_ zpus(R-=f}kcB!ELK@KY@8!QaDTIYFBi23-2tFd|~_lJNk!r)q*+|c?J61aQ+PTEtU zD_-`!9MnB6e;&nh=8~nS9n@&9@4b!5I~3L%g6fvp$1fN%a4%l<&GXYYm2jE6Og_hA zC)cc6B^Md`FOPf8b#Ml_Ayl_}mE0ass2)-Ie*Tn#vO(?tozo_t0nIw=`Gmfm@kDd6 zb;6;4;3&vZWiw`o;0P`KsPcc>6RE|~4JUV2OnRIg9Npl# zyL6I&$kofMvX);oJmB=hWzu_4)=Tidp?h-mwU2*aO`a@cx?d*2jR!Oz&mbKXx?8>S z&I`U78`44bR>N9Qi8^`PFQsR%HyinI6a<#}e7XU;aBFr?ALFvMyX$8?Q3myTZy4oG zd7=-hq{=7V_x?0I3MbCTokT|NSpYz0Mv2wy9yNOTcf*O1Ys|`zd4qTC)_@r;K zazktJUX|nP=2h)^{6Zq(5+u*-K0UwcRm0Yp8+X%HcBW5yf7YDyhTHtNkojl^2C?wa zw{xHPyOkekk=?h;QysKkjYpQ*ATqQxV-kDsI|i|9e36!4fBX$C{d&>xK#DAQd`>rY zH)u#^FQ{QPf5MYG&vP@gMK|c)gY^0$D*F95JqLwn@MIZNkjuA$x(hx*p?4KdPF!r= zu(aSZXzJ8GEVQ?eQSG_2=bJ8Wh68E4Y9=XPt12wtuXu9)d42X9ZpT4E2X*Sa{j6mE4Q2Pei(bC_ck%`3&iDkw(5t5>%UFSCvR-?xyL8uH3N&jH4H~VQ zF$FX}Zh!oMp@Dq)sZ%SDv-j~asy*EcDxhyniVF$-z3%ZZcQwnZIKup_dNSz zKrQymYxZ>f*tk=aG5hN>P>IEGz{%R?-orNTPj}Zm-dqe?%U*Ms3$!4+cd|`t3Hydr znORRJhnCL1sCb|N)Ps@+pbBkdR66lZ+go4ouQ24Pnhr4LZ&qiB&}NYUG?KlraAlNRdyDY*Jp!^ zk5o|cp%o{=eEfjKZBcI^-2Az4Ub|p@_F9S-5 zv)*kBv|(WIX#p9$VwJag<-Zqv4W@5iC=m zoLF_M($>86yZ@$5JMXhU4`Nk0xxeiDOHiT1(9rs&WlhaD_CK5aK5YT{{=j)qD|E_! z&rRoFa5R|ia-7s3c2yZ<^4ED685z!8(Vk?pWB2`8PxRf7Gpsp$b&^fqUUSg8oIhcc z9;e5#{4qH>8Px7zVCY`HYTeW)2S7_C+{?e$gBxgd>vmO_Ff&B^gx=LU`8(;mTY{nN z)Ts}r=J)e4rmbIPH$CP5MOlWN8?PtdS-tzb-=tNmRMz_zUAUmtu+`f7r0=fZ!msyk zT%|Yn$zIQOmY=n5?25Z`w;sH-hatiy^y?~>@1UlC+3I)y9)Kd?!SgvKJO`GoTJ?7F z9tF0(#-pX@Rpg`ZIxt4qy_b|_IMB9N^JHzES-~8Yy_-HidarJo7$JJ#*P97XSXa+h zTjO0`Z+udA(j2SLS~q6ZO?k2s5@JV#Lw~D-BGl)GHLnaa!+|dnR%{8IZIw>)y16st zT$nm(&+=9C_UxL;w87?{wG~4HZ)NzT=3T$lpZ{gQ`**JjyV}op%fcCRW=E@ArbOqx zd8ePA`r*fFW8J2;FC*{%T?&c?h67GjF=1vBEa&b&1m%c^_%QAE8ioUZLa*-g^z+*E z{DoM9WL5ek=iRrv?`&XMm9<}GdG9-hgxNB)pY+}R`8OfkCZPl)%Ns}kPG1vCWbZN_*i~zDGFC6^fraO;-!D|^ zP5-Mj%)DWK^6~bs&))qDnRMT)=-8RAgzTU8pp4JZko#qS@&gIIGx7a=3=9nC=1=Zp zyde@=+6x*HKKw$g!SbcbdH+x8cWa-$kVv>4dewXKpL;L(7_PmspL}QAZvXh#yrElT zCz-2kEach1an7sg@4J6*w&?|gZukB4OvU>A8m?*g)hFLsvim%^pvh8yl^olNxXTfGW&AB)+Oxr><@A~v5_+xfVPt#5M5 zSJpP?$#YDmYc<@wWq9(l*(Qhb{njUKC;zEXbKUT#Zq^e=n2&x)ShR6}4gpsXv7iF- z-Ktmhsz1M9lx3Lx;tOoY%rQZXkBNwcyvps3(SvKESNM~(&`FC)yn1MmeKQvZTd-gmjtG3VIf2v%6 z0U5q#cz)jVI73d`VbG$*O?M~nS+xqZ%)Yme@!Im;`{z9oUTn>n1%Bl#X4p z`~LhVWuE`454&!dBX{raeR)tV#h^3qYH%MvD3gBMs-h2GoE2l?e4OFTZDBWd2A;CT zD)OsWHM_MlyiR%{kudAt+$Y<2RbNvtu~R%bJAIGZ0UMijtMs;BblvrPhf29m(XV5Z z6ISk7wfjD_42baW3GRD%$Y$~GdK*w{WkcbxRUlBa1`Po+`r_fj<(80o|Y_74-SO|)O^GOR=?Mjq>YE9)_{sx@W(Ox#9oETPpi)&(A%-`}b|nck@!NE!SW^b4xz-s*jn+ zi+AVMcIHmfKc8e9k&v#sv%e9v9w&i$o&fXlg2Z`=44xmc7W~8lqc)cwnmiCpE31) zsQ=unvo{~D;V`}xz0HFI8Z9?-vSeKLC0 ztIW`?e_u#EVA@++!oX0OILUeU?>A?w63X}6oisLoUCD6!MO(gxIdHfsP-oJWx`)tuc zP!==v%riP&ns~_1yJ+z{yIN4Yg<->tRj;x0g-K@PGc^-+i05t~+m5SNqb{ zK{?FDb>sJ@22-&O3p-d%FS>jbZRR!AatSuc5;0t~$ZdnbeaNnhLir?u4jDNH(`n7N9hL}J^SA9{cKjTXNkLaSJBh_VPNRiw>$P{ zOnNJ#?6iuF1t84twWm7P=~d@nR~t3s%}L@P4rSKwt6w>#Ck0i=M4rwT)Ho{#`}i4cZNRcY*CW+rK#3^OD8i$npji--UA< z^~0_nyQ_GK$69R1E^DVr%X}KPGwOS9TC+2C>6yEoe{cSIbXC6zPv ztz0#Cm-7s`*rmafWUui@VjT;8qncVfGmWv1r*4Xfff{}?Zxo$5LH zLBxZXo_eqOCW52r^1@ZuSo|2@UAwE~yP;pDvb4NK#dFe<){jd-$-#z^{rIFUSLB%I zM1)3{w|f{r>3GNBDYamA<8+nEqb9t4jFaZD+X(MiwcB;lzZ25ae{oK(5vh>)@OWum zUM8y@x6RRmpmaocRMeU zeE1?_QrKC^1Im+Yc3G!vJTq72*Q|GZp1+i>!>*=z|6Sr)$CY#TMagfSub;h(@A2B` zpPYJE5tOJ^GOI$a>Nf0u`)-2To&9Q-n<0^N2plr<4uDbTNZ{o5$ z8xI`4D>%tS;5bwCx!$7XQIq_cIbnHO{rl_nG=6;(_A|eDCw8d6sr_RZB2M#ypmwnIppvN3HCuO-xc*${4Vw<#Nnf*r zC9Ank>SvUH|89cHf(HBdeLEJa*t5uS|55#L`y<<0|#C;f4U6+(HTTSYh2g37#a z{-6`3K|Xu@^hLy^Edt-!uf6S?pmKM~at8H~t9y4jFVXze`i{YK7DGI%9O!r*Md4Sb z2R_~voOGn6w~x{2Q~rUyjr>g4P1Q3cnBK737@gGLl?=|dmwYPZ7fb*4jN16RvHn%x z1W;jD2P*8iA8H<-WWw{EWnXA${ViD~-%fd^^m2EPpvl>d+Zk@FSZ=pY3sT+5R>4;g zSKhs3X8HP6yZp-?g2kah*|~Np8v$?YoAMG;bDiRqB8>C|zvlsR)M@ zM@K=$!WMzPKGn>KYYcWFpb~c0UBgQUEUl)Qcu!-lX5#n$^!MEiMbA&U57zItRyn(; zQ%?53<0RopHjFpeELQGzf4h%AXJ*QEM3R`f$+%$tJC4jlZ>K*AhcqL^+x@+=iHZ7;tdR4%N@h8=K5VF&+a!R50-lFyLZPhBlIihgVejS zlhUqzJ#frZ?;T%cWaw6@4@?j88-ANV&&Z7B+9UcSW71QY@3w_pZ9A~?z}sEXOE}AP z3(l*gm$ZYDXq3#n5*^Q3(^qLFe16C0d1;TW*pIN#ySuGjq!y`!GafG~_qe3=o8^N8 z`|;$DSr4l33QkJ9_Nu3jO{PcX^kf+Z8-W{g7W*tcyWf{2ls|aqY4_#&z|hZL6ucWG02+ry^UW%?F;TA{s%3qs@%#uOakV==bNy^wMcJ6?4;@HJJ(pJ zNvZ6Vs^BZA10|EMKi)O`JaM94?Iu?R&xh7`YQ3Qi>lv(>zI$wPpTs?DHY8E@tXg%p z;d)uQhwwY82X~=iIvv!osHt>!_ngHi&CnitHSezCC5BqL4_|aWFRL8bcc6B%%tcw_ z+(~mdZRB^X+wFSErz)oWfRpOav`Og<{S5z_FCNX6T6UlLJ^Q0lv|-!UrX|?Rms$h<!zcI)?cu=)p#_6RG8t)1|p7P|8iad)Mds#wBv&;J})|KlR zzp=~Be6rBAEB@E6~Q2`anQckZ%IJNAZY&J9_`%x5-xtP>1XcG{hMJ}HO!&diG^kK5;* z6Z*q*L-vNr$?i!t%dJ5vaFWVPw>=U!7Fj#ZDhOw;hE~&3phD&IR>$%NmCTDa3>N!V zE&J3|k~wG69KJsbKnxU2v4EI*?&OS;lte8&b*6wX{Vxi4Jho> zo_zJ~!1dKxzuyUDGVs0To3Lc6$b*CjjGlILQYysi4nXZxy4*>#qx zsH;@!Zs7b-;+A~lbJgl)mqHIH9{AjFTlJ>p$&Y7!!KI9+c6NEfWl-9QZCow`s??3a zmCwFwZ}}#u=XYQ&RlL+vT%wc7;m0I5JLR}adfD*|m6I0_MDMazIomT+3RJ?R zdhVN%lK!CYz~YAQO!n_}rMIkZJlrU5C?#dDe^SwNUDi8@g;ANITRA^mzbku*p~eE% z7S^5Xb?L5xr__Q~zce;@m$$2Ao_xc-N2^o)qo;O2s6G3;n|BpGwF?+OY(H?^_GX1q zXei_S#FAGVRdlyStLzN!l0fD+L z_30(Srk>{SiXOZJ#pa|XH#fO~;&a2bS0K->oZDy}a+Q1UhKQ(zha2whQdW7%HjVi= zbN$>Wf8I&l-J!B_)pVxs405;bDrdgB%lad*{KyiIBCZ0i5C2w0G2dXSuvsklNx899 z`tz<>#v1M)Rv(V4*uOaoX80%+lb5X8#?l9_)Q>Z+_jt4-$6?j0cL&NFqf57Y%*yijElMdrA`o)*R!<(= zM%E70CtV>8 zk7?7?WxXdodwuI2gJ)1TJJa#dt7V>kulgpco!~qWd0^RH#YrqN{B!QeE)1RgWXq~s zf)+v%dw08Ey0R;|{6K)pPPQNC?l3p3+NHYq<43Ur%njA&ZLht|h-o<8D9@nIbbt2m zAD>lDN3VvsV%jn9f&!hjJ$q%qX>9Y!$$hGxpMygG^Xyr;+j-KJXGITKJ^NnpO;mFY zeapKCR6IS~qjs`=xAK-(t6t?d)W3Q+!DQ>bSx4-Xk7c||nX{Ye`^@S)(mSjR)ZNTg zqju}&l~jGyJaGP*+;RqcRzL5e+GI$k3hG{UYr@5BmGT#P6V>jh_V`);s|7bumMnel zd3@56pP!Z_d(O(;&R`cGx?An1M|qElBH!VQ8<(8i=pHIN^U3tPiczWW8RdB1+>lku z)XKdgYmocQkNw}(JCEz{&RD%F?|eqhpZ4Rj4fZ<^J`OYg@kea+hb!XeZ1ot}o)_RqbZ?*&f&nN@pv*^gg3Rk0sZh?RjGU)P_48V_ZwndR55vS!|`?pZ$J z${UFXH4n@{v9N~yPj;wnSsu^QMvqCWsw4~IAN;#(J89Xuw!4g*)AD}&j()IP`}6D7 zSf-3tLN%vtKM~+Pn;HZ%=G{}r2F|ba;>$)B$Ej7 zGIoziYR6_bHm}Z_`%YkG@TAv``k-2t*M_SiwY()PcGBs_bY}7L?H;qN`ufykCY_%2 z$L{1#&$_8krhEF$ss5vL@;xM4C#jr0ZO@!t=I+7#;hxHLNXhx?@r#H_Ch_7WAZtz) zH|U35bu<61z4T>SM0tbC--+KtuHN0HyyexTKTH*Z4>tH*vdFz4s{qckD!N-&RhfO5 z@{TW)p^p0vq}jg`Qjdbd?eE6p%*Vs7s@+u#TD-X7G&sXvW48+p-N$F);MvD;@7i6( z%vC@BIzR%!cqyoWy?$4b_sH%^F*m`Th?UdDr+Z9#b{f>+c9lDjQBl+XPGF_;q}7dw zcU!Bx?6=_qg~7A8a}Oxq6`Zupt&|;7MRPC?pwXey{z5CSEkK#mP>WW)n|7Fqe?xQ-mv`HvfK4i$cI|c=#1wim9ssoZi!R` zm$#b;^I4M=v?*b z>j6fuBFPUj4=%kE^K72}jsX&InVfs&BlcT6Ni_sF)W3%`izWA*2$*D|@41d$@722r zD!yC3Hl7c^dV06>lBH9gXg%P*D?4cmQ$KUuRoR6umO-$Kw)DF1jCMSfI$ z(DjbPGpg|`Xq0A)LjG}XdzG{ELFE^yc*zv|!&|Wa9Y>}@ng1q8TwHqcp{d^Ul2gT{ zjVhU;d$@k&gs#0UtE9V4C7db#4XAJXam}h*`>dTlPgXhLcR=&5?j*LCo8Yc9488j7 zK;B*1OAa;KC#OU5i?0|cdRsq$#sgMWi4~ND-rZ&G62-(`&hBx^_r~s3c^AO}r@6tl zz_Yx2$-$3bZ9qXZNyT?JKhx_HcMs-|+wU@hlA;=TjLE5D;v$tyyKQWJD_8mMc3$FI z#!}!~-lB51!?&^iMc;)#s+OV^h8yj>xmubqCB>zp}flcqz%VNVOoPyj|sP%k|K!&AXLN>OJ|`@7=qrm>B?43JyE1 z(5q|*e($zk(#Uad0jQ;XsTb7bi0UW?HR77f(jQ2NZgnm1*wVrGj&H(}*&EnC=!ZVd zZaMso??Lfh!AWd~uYU#^qsH>+eWSoMnWK>sdl z70>2!)(y^+7VmOiQn-56*T(yduS>UkT=M;~TIF|%d&a+2ufz@%9{9T}TE%zIZP0}Z zpn;`HDxOlySM9R@P@8b}omeKrI(E4kPnJV!F}2CdXLw8!d$i^qgXg7?2ziS=tLEL6 zRqBnNq}`xjUhZ+}?2W~%-d&Jg_|v<{@K+Nil3SJ3$T6L+-1x*1qG=^_f)8JpaYJ2__TkK<)-5JeA&? z?G3%Vm6tT`koo}{b_S)L^Pse|@Z1}|2`auz@2<*vzv@%Em~Xc;XrxH>j&OxYaep;?QZ2Q2A=Df=du4;u-o;L%g@a6259Qx3*9RB;o>{KOb0#o zd)Fa8l>jAEu~Q%i8t&x)W#Y@SO1dtSPB$#xWv!B_n!~VXt+f-k`S-o))(5Pwc{4?@ z{aFKc3@FV^-p*Y9x^Dv8lUmO@6a!zK0i~8J)oLH+hisbs_3@rHsptZ>bOfaXZCiMyOg)9tX*Q~?x)e6!~!O9iL||s9_3@mgca~a<+dPcRNeX*sit{I?lTR)bZ*) ztPkpw7^fOPcpX~0|D8alTpxoTXlQ?GNx7RkTSnC%+YkA71t(3r<9gsE#33r4mzdu2 z-dSYrBsD>vi5=2DkdgzHtA!Te)=05gV#%YApa5LuQKVat0rG6q_OPpOcPX35c{1&h z`B7EewPfknUX|1ESoyhX)pO?aZ{AH{OEZs`o(38Lk_TnE#}8gaOuF(g>_A}X*4*-r zEnRk(WfeSECpbTdy(=g+f2VXp4u8%1-L97=SuV4NHW6m6Uv*33M?iVIi9x*or>D>; zegbO2@a+fXkh5#PHXdI6s`9SlC9NM;1%Bl%Dr=jjhh25vrEFs7smD5x?avyJkw2v~QFh@+ zuOhn*ydPG-6Z7nTwfz7;!oMq4y=@RLDfeJ54w&>9BFqbJ6j{vS(|O%DLFMe0tBtj* zUiIEpyyRuIz}jI_*hRC@uSec-^oCC=ZaB`IUbfvM%EVpG6WrEN@tm|})v7Gz2g!G3 zFCEZf{9@mE6Yb8*EplGxGdpi}|QEtS6%Hh7k|m>B$4`>8&6u|xlwvUJh*_k z+rzw@StV1{R_4Y+Yp2K4pM*Skc|i59?xbT`k{_l*qF|CrW@zZu$qoBoyqm!Gtmwg9 zXh?#~t{8Cnc8T|oYC%Eh+RL&^cUzbnO58mzY5h{qe`7dz(i{$(sTWx_CoMZH=m|=q z;G{h%%r!KZqef`OJF(1!f0ifnp&>bcakA&79pHw;B^z#wMXStS@J$R;IhlEY6VyWL zddIqFhqY6;^2u_ExoNe&<=sm*-dGP$KkeU{%HQ=(V0%{c;4j3D%bF1e3fVGR>{^v~ zS61n62Q#RAmAe-fnqBUmQK<5h>qGj1Qcw^+v3cMP(W>HkY1N8V_N-;^-c4Y8A?v9J z8Z`BsWFiYnI>(+quW;O?l4+F7ShIMQ*-O5OVGkVsSWj8XhIi;G{Lp!{Y27&IdCD)6r2C0-e>7*PHA z`9s^PUB2ZlV&RjR3oCSZ&&I(^##5_S@izK1UcIZtdtvq@9cZ&S7VPntPe6^outU0y z`r%i%-BlEFm~^@U)CI_tGh_I-%-X42|D@xA&yCr;qgC#%(O3TonuP=x;#;`BF}(vd zdoEm`ECX`EB$dox5N~^etX{hWRAOWuep{VonHqYv?0_F=oPf0=8Io;Yf(szO{Vd=Fkg2+sRVEsPJn-L1UEWReW04eJh2Q}n;U zgSGI~sr5rVVe&hU%!YNWuu|g-*wpQlLB&9nE9)QU(Ao{FR$03lzr75aOYncqy#8(9 zg-f2Fcpt1hu=K9(q<^;+J^MhV7C1D++(O?n>{+neS!zYUisf2}OTVnTxNyoOm0tJI zw=6ZAb~{g6Qu)jLL8|Av*L)XqR;`j};s-V9D|blj$OcUSZz)-omHoi`fZJW&OFg^A zDjX&S?{;2d9~LUjT+U!N_jiT*gTCT^>$871Z_Rt;9m5=R@`cI!?&tq*iuU~5y}#t$ z=hM&a_NTo2e7b?VvHO`_97oKIl%Epy*`QKQC3D`YSKkiwH}>w1Uc&gxc0=W)Zph%L z?|M^^pM#HshBlnPi63wa{o14wUVc17?XUKSf1r8S_GqT{jQ4KJE?PSIiFN2!-o+0; zuH9X|L~`5m=H$|qtFB7$cA2xkt84DB|55XI->&~FSLw0nF`Q$rGyeYZ&d%fcjl~Vd zlVa|PX@Y|4QqB!__T!go_MQfhCM`Mo3^bmxan-7=5_44wgO>+;Ofq@7k1c2ZlTGgg z&Q4pkOSiymLt1&a%GtxM2h!^P&#?{NYFVJNxN+u^rKMH{|5d_E+B0^Y?d^WgX2Y@L zKd;*J&SxHqbe_- zf$GY#&{Clf58m;4P7-@j@gVb_Vwm^ZRd)O~n|C`;diK)S^ByR%hKH6j^fAa?x~p_{ z#@k6U7iAZ|3<`bC$UnQASEYG?ei>n;c^fXU^FdERRjCcC)?m zdLZJ){A50ZJ!{>ZCtuEKfI@$gnq%l%J{e}4Rl8lKRy=N8`?&Q#C|ssBfJ*xtp;xsV z`%B6_CYh-1XWQmk6jk1l<{Y|~a}M(z@cdxrbrtzneF6QeqPTyUd}w+nmU$|c>yG-# z{9Vo_I-y(HJ`_CQJdiBO+naw=%JgsD`4=L~rS0mbr9@^=1r-vW-YZu96RU79Z#PNk z2VEQvo*v(P5Y$k9v+C8t1D$teC#m#a+<9Q~SATca?lMhO7R}C~r}_f5-FKclLQFGBW;HBpkk`!5G8*r{f~0srngPzpqQA zK>ogDvTBuXLq216*>(@+(u_&ZOTg92ELl*CE7`o<>i*FKRd;nkmb)IfJW1xh?4p<9 zq5MfDzox42Ue%uT=CSS z-IBfi{p@|r`{q7*bPw$1Nn*=ZU1Q(Je`hlVIao%CmswF{`d{07`%6$vfX`S1di z=8nB7dJyT^_m1!4m({B#H?V`cfi`nN!Taf*z}Ho)#2M!w64qH#XvtquFzJ3-d&Z`a ztGSKK8O}3rW4-oD_tK0%TtB!LUtZAX`{^}w^f=5j^eyw7J9ia%Z?I3=vky`%R3+(F?}D!kXPPqJBP z?KFAeDmgY8#yjhFyGm^+SFiLgZ>b8sy0#&mL7#12hx6me^23uS^!pY0L9Ju}g@pXW z>_eBF_Gq5`4arnz!7X&xz|h%DpyfT2wsfpxFZ2BL@tuJ0`c+mUH$Wq}VhTFm7TkwQ40=Ylh9JL4W3}XY8=S({Pu?LV#%si=}hzAznidx z^~ZOW`irs)PX>m*W}eSB@A6$G-V;X;I8T~$Pj=DL(9m+`GPZyG1+SmU@SYbvP~M== zFyFh#4dUNSw~(u=8~1`nKdKWaL0cGS)j%x_*T*MoCM}WNJkE zpvOVxS5L#%0u&j2m|xugUM=$89q?4zET_;?`v^VJtOnJvswE5`CaIj>>XQO5!lxEjn?Wr_gK43UcO51 z#ET#bCtEr<;AP^vD>WK?L0~B!BtPY zOR@`3hJ;Epw=?v=&YP%qVtPZm%Fcb(F5Qb)K@to^A6{!X5A3z~<(eVbLQerbL90m{15ZWtagww3jG92B~qMdr1q z)TVfb?|z#=UR}BB8rwhCip=tE6UI6Qn`6R{mIsICGVPJ9u-uSW+*cAjjWM2;kBQH> z$P=2VoIv&3 zcaC#6Y@R%4v&+g!D&U1Cu3@41%>O`nY6;tY=6SQ8G`$nxjStObnZvy1{#_+c?hk8J z=D+W|kg|H!T*V4CN-S9}*MLa+Whu)1;krbpZvOFYYX3q%SGKHO9Z zH~H=XiUlkjjdzfAkTJnhLVtJC^m z{9yNikDhul53WyD@ze%&rnjtE^{TTcE@GNWrr2MR8`rFLvt(Ai5UUvJt(}wzPKs_mBq_4^|(TK6%dWmh-xv zm#%;snNcC25u@saweQ3{C(ZgJbwllB=3PapZL4kxS*!!4n-`3pe((A&JXyWUw~@Kg zy==RO_Y(LzYgJBHPge1if|MHJ zp~o4c%gQ|_U3n4n;G}2W9oa>Rt5>~e=6?w;ssbj(?p8M80oCw+56(K6KKJN;8I*8a z<#>5}hRv!h;RnhGzTMTmB*gi__d)OhMNd6w0O@X8wafGa^8>%Tx|c+57@j-`8aXUp zl~wBYzIKmDh0%tz{EKI;q<`!`;OOc1qHm%~rU$57BNiLFR~$68pyGK}k7?es2@c$W zq3csj;wCIvxQk^+@+9ru&L%RUTWvSU7l2Z$V9d!E&s&mrId3Tl4LxvLa&F$9#Nxgy zPqiL!AJ})`;>WWYpyGO#Rq^^pnKtv7$;TevKCrl!*Y%Rh>Q&JU){MKE%CpbSTz^^O zuEpnI&$`>P%AS{&fcpGVC81w=9@y`;R`Hz0FrE3lS5ZlMN88F(W(?;T&0ge9T*7)o z^JLv!L8)o0c5xR7Y)CEdHgOAQ^!NX?^__rjOz7R|7f*Z&ysLYO#j^Ecuk%0KlRF^` zNtS$EvFbX5{Hu2pmK`X1An57$hHv5$(Uq%s8_k*4r&Z+%?B)3(vw{CZX#Ot+&r4n4 zY`<&OF4Y3Y4OQjcDxSg*v>xpA+;>BEQR1pq{tWt{IagK-yOUve1*PV#ijuC-|8VP_ zSSHUp*0K-Jn;x!SW!kWvA)obH*13slS4$5}mzb+m=rSqwtSu$71$6Z{o58sR#B>nsZxL$p;JOM`|-o!p|_2HRqt$0&b)eO+QpX=%fqie4E?%f)v9;kR`Mm^*}reT zoorz-?by@1e0{3ElUChYvuYoQ%!wS{KE`)PGD>RPLig@nwd`j}y62>@E>PP!=%bUD z=cIqj!9!TiOa6A9#C)S zSF>CVDO^l~LZg|FGk}`U!AZwe*g-4OLhth5;J>kGcdC=L9yC?ryW9>F+$gPQZcE5L*EtKJFlI!`*?03IuBEPKg!p~T};yK!-7wDvadyh!eL7Ys0^8Q=^|(t!*@eCv;1nUdcVu3Zf&=Am?ZY1ai8Y$ zLeC<(4YrF7e~X^Ayu>Se>_y9C?_JI&^`T#D9;`m_c6am=$&FGQWD7(-TwZl+>#A$n zdEk69)3{uD#ovbAX3IS;Cs}UDo>bEAF)Oxs{Z=`~J?s&?Ez>preVFyNF!bxwRaGhF z6I49A&vxHb_4IzJ4R*?oxs88UpW5y6I!*PbUO^D3X>uXHl>LwWw|6%0zE_?5|KssZ z%jH(NE2enO4mcsUQsSml$Ha>fZ4y4)7WT}vtlPHf`i)IIN<9-yTBkUz6iJ$Lp-Hlr zr)}f1(ATfOAOCI?Y&G}ku66If{?hCJ{kAO6{MX^P7k%e`-n(!9`Okl^Jz3HC-Ec?i zm)Cb~XH^}2klL#rc2#~?vWd0lHIGkj4>S@o%ll21mND>wx{F&q&ED~W{jB-P=s_W9 zVd+ng(7AVI6*H?;Bl#`lDqPA>OH{LbxT>PAzOx#X7Y_^Zdrwl)oicN_^ndmbOBFmP zg}q@(kU!2DHB;q0^S#@56+Md!ST{t5#$JX#?T@JTAZt5o=t3JxB5^iC|(DTXa4KGgm_-$awS zlX6&USI> zza^U6Cr>h2ca3%41=)osgF~-}UsdFhn^nJkw|nr@<5QHC&(;?tn*THoOG0Do_*fEyGp(j&q*fXD_6Z^^SmVDStR{HoF|S0G?MyV zH{txMU!mn4Zo!j&Gx0^M^lp}J$X)eH{jTDy98Wp68jc&QcDo9{Gs$rmkmd54rjgGL31nZqgo58?)Uc@!QH($-9(QeCMlVGaYB{e~~xS=s)9| z_)zuIc8^IW(f2@o&VbOb*3j5E;demNbK48Piy5m{ZIsO8q<)XoUDpvJw2T`yF5A zp*as9Lu)%FZ!t5+S~S^1&S#JYO(@H}u_>{N&_;i4`+WX#6yPP#Id92O8>HeQ0){swellRdu{`K+AkD zN!;T35j3f~v^`@>$kk9DKe_2k3ZLa3j|wm?VA-JjA(73T&qKRd^TU)?x2_-j_+z$Z z%>!l&i)m_iuN_F_$(wQ`{n`CmQ0q$Q|L?yi+6xMF&Tc>55MJu;G0V=gjD_#`!H+9; z$`_PPIy`C3eNemV6lfTr)N+@#!=xpKTR97|CdKY@HYvKtT#-C^N#VCAD&D(5{nl6F zpp+Rf~5yo8nrAngVdrGIiC(p575 z?cKPl?w+h-<}Q_+3>It=+jqO3-paN?zQA$PaZstSMF}+C6WhnO?p@yml}w+zZ3lag zSC_PBl!RP83Z5u2Vc*XB?M>f>FRNDNhhIJ1(9Zn4{Cmcd7}h;J6$zn#)609Fxla-| zs#qCz>B~;*f|5z=RVoWWaXd+-bmq^QFM99FUSjzrSddZPvSek6#fIAQmar`E2R~Ha z`)=|BsXGl?S9E33syg;LH$dap64BxoiYFiMb~XvRcUM-yvv^B>c|%C(at3QgeWtpL za~9VvXR;2vsu)^Y3%2`i!}ij0kF4(u54Ozw`0*XY|63+Z%3+h?)OnXTQSE~F>R0@r zML*t?(iwl3lxIw3t&l75oAetL0AH2|h2G_zv_x}iO8$djQ1#rqGrMtl=+%pN6{UDR z&oP&QhNL5RvEA6Ss_wF^5~E5acLiI4z=p{DUa=cX53Fu1553BJ*Kn4-vHq2L&Hw$p zckO)K7#@1H95R}mIb+fq&N+N|1;MkhD#b~Z7(cN-K68`M6C-xa(hAA0p_=-0Xjeh2KC_GkHB z`XKtj^FdzdS3dURlT}X&JEC?xK;waxp4;B_O;q6oH4&sjubLj%59;-pFp4qCdwiPoPN26%x#51fyT>IN zn~l~Ezk)+cT|@Uu?qJ@)^P{qOQrqL02acfAt$t;e_q07)3!WNvi)z^0kgxhPVba;% z&7h`Ark!e~-G=z`c9VtoLPMW}@`BZQcDW0(3oAETf4Hks7dBaCt9NLrxyPhs5tHsV ztOu=BH*t&$49$Pj7qDKXo#{7d>`y0_Jtr>op2q5lQ&W5&oIG%!xjg^e#XEn+Ds(@* zTeWMSwcFu|Pfi|C-({`RJ6Bus4#T&$Rl7hp24Tr~|XWhwAa@PF{+nabI7@)CDycE^V9J$&%v6R%CSAO5}L^Gwc^O_2QX zSLL^Ahn4XcwS5X;PmzvXzumavjd3-_N!JF6nBH{UkfT+lN)?NOTJ6_nx!>WGY_iV zl&uIVZ*R*|e=tX-8nk?Wng6OiKRhN~(LR~mFrU$TceIM3pBf*wyyNo}elGH$ zVb!h$;K9I2VQMEQ9tZ|)h$v+)_`m9xTY1NlmlIVEgg4&Z6}?4a9eZ40Xgk;$?c3u# zC*2CY`o19<+~ssQ&tNw-W$inGtv_r&90pCrELG)kn|KxOz>)7mA-UNjHwz8Nf=NZ@1oa}jcBYQ#KB zW9Zi%?>I8;R3eW&IQZZ0KyYJkb@#Gk`i=a|?^msw4+;j=ozewn8_LSNmvnx&ejxDR z!m3@nAl-<68Yd4oPL|*aRXMxgTT-U%=jV3{~ zr4&&ATT0SXkLBGZP&wIR#adAl8hcT8QS0O<*ADnMmhO&L$rM}1X0~#b_ipDUKc}SR zJ_zK=6R$M+XKBlGpYC3~c^+m3OFQ7OlM~tKfO5_fIjnhnd6w;IpUM z3%-koR<81H=m+h8)LF}Fv(4IRR(|N$_Eo=1LjS5Zi~sw^a*y}VitRaXVi{{#DhfjH zZeC^gfngsZunl}?lDWxlWEVI-Og{# z*!(;<`GZ|id3mEsW{OHA`wvdgV7!W_@EaLW8?LmxL+sd@?sLx>U*=6*68Xa?^zB_) zMcpYg?YDntlH+{Cw&rfM$tNxg;U5Og(W?6S?=Et9Y-0c5`sa`K%Il>(aW-|Sp!PUu zP&czmC6f6EkK8Lw-rMs+zqY>P@Vu;g@^Pbod3i=k4F8@5tM1*GRq~u=1FAxmRZm7Y z?tlGmf=cG0SdKS=pvL&cLmow1A0~j>wymohd}V~Pq*NohZ?IN;II}*sacQsT;wLd| z`hIn5R{h&-?Y3C?WZQxAM%`V}Dw)Up8>fd{HH5S&mo>kS^W=VXV^viWq!DAncAj^s zwDpozdl;i9nXCtu+-_czavS8Cx~sfZJZDwdCm7iL%Pj9`J3rY^wRfj__*M1Y%1iQ$ zm7n}(v}XR!`i}Wd=gS>uzgj)ud0_Ei$Esh2#r*quGLZy3#Bb7hhWdM; z1S+y)#=#Fi7QGYT4WDG%@ZMNL&GXU@%T=r9U6NJoU8J&|sVvFBX&?Ir<_)$R>e8>< z{1hy(`k?w?$*Nzu`F(D&liHbKk@`vn(PW4Y-tMyL4{kfm<6W@Vr2c{i(+t@38IqZqO_O$Svx?_q@IbkWs%85@U)xD4nLqxqSGa`MZnt(hZ2Xzw(f)>BQ0$Azg@mS; zxO+@iI2n|nozOiqUV7bw>rw}T5^@s+Hyq^px4fSJ4nquojMeA+>lyUe^_cZ${(NoE zUdQ<->zVz3t{ z|D@}T>%pxeiyf=}#h16JWPVZEDgVKg?Qn&slzBK)KFhtJ(C~8bPCF@mPcdVQ3oj;u zEVEd;N)FT*wNkYdtOzM@KXz&-PuubRZ}}#w^s0jUI|70r?L+3(v9B0<3RH}bi z^o}o+D~9{d>Q#Dg_$HdvrrrDcQ*y(O-LA>cr4J~te)S#f!Ofs;Bc7*&L$5QpgPT36 zd8{>tC*|%cO7*S!rTXC`IPdOOzX{qhZc_A5iv9Q`wZn58Cr_4{oAMaclTz_qtbcNI zVS$eBlyXapX;)qpT3B3r^Ml{`Pc5kGK040PEssGIE;Jju54 zJd^jX=p~vTxD(j(JEvSxJz2=pcKlLKE$@xZtH4{Jd->xHrm6I6*Yb{M@u7biemH?DtwYJ6B@W6@9b{y@XZdVr?(;0FnWPJ<^CqeEPE)C7oPX@# z#w`JHuO37MO;_=5wB2QG^6ee}oGB@LK~>R@56hB0FL`)x68xZ?@E06e7fKK83;o*p zPT=f%6@F$v&?x!U644ETkS5iusVVFacK;|^yX53|>j$c#Unjl;Z$JM#=@0LR^FQWx zYzgpVmJ8dLqrcK~k~{PK*Y7SIvEaRt{Vd49b5hs|a5cPkRo&qSr;9u%ZTTR^Ebsm4 z4alxlzk~|%K#L2PEj<8UI-vZJ7i7)L0_g|wlWOcvUW4=ps#GGUJV|))7i`r!#<&*` zB7!!zm#}9nvSImgU8Q@svx?{9^Pp*WnLVsKKub@TXl`Zu(5S**(w=c|FKA6;+CxLo zLftseckFNOf@Xx@Og!+@^PgGg`5&sDla^>sN)dkGk`P(mZIXH~D)j#Az6mB@|s~4cPpFNPtsx3W7_s6Z{m`x9~Q6L zrl>4N5Q`SQ0#-iP>vyA?O3gdMz_$Hd{os`4y zM=avX-9?>Wx>i+zmKtT2RB~-n$&A?}nQuK!W##ScG(M(_EGt%JH)dcy$9O;p`4Waz~RAb&v$ph zO|Hy;DmPhv*c51NSYqiu%k6mh)%4xUDx5p=%Nx|98u(RjE(TR3vp^Nev6ImZ{sL1} zR^I1kY(Fl%V3i)L9cX>i>X)ER2}@e1r}!s4f5+!3W%!+K-^3>eRJwPAcM_lVoy5-g zoT>i>Xv}u%f$rVPDw)S>cQKoMoW=mUP#DyD_+kM%;GlQaFV*H?8&%Js{o)MrpIfhW z7HAa2f);|dv4fiHik?vg`k?K3f?HWEIDTYJvNqointhwq%Ckr2htP(~@_v(}aq*$z zpx#l>++EBjqGk+z{*TfFJTLh!Sp_=bAS%@}k2i)T=f+(n&q)kFR6cxJwQHNT%jW4% zG#+?@rUj(R)~(tMS`f#rd{XbgbqT+Cf`{#I9(AmTCIvu=26l%}?oulw#V`p4c5QFD%e0-7R(F`oWD$1dGyT zWU>?QN?V*OXHfO5e*#($)OU~b&lb?4iNEXjO7QegFKf>zOUvW7T?|^Uei*dU+>=}R zWZ!{g&_v=H8<`(|lWHOTVBPph`x*DK<=noj)EORr^(ScFOS$|V--VDWgMyGrpuKEM z!27+Em#_NAuxHM0*1KRErCBXh5^WP*BX=z4x zbxW(0ZIDdPW>g^Xq3*!@olEP|8S~$QHrG6S5fS@O2E6NfCAdAX!%F5y9cVS)u1R&@;k_UZAsv! zHLL#ZwRV~`E&2012H(BSliq+1gn2c2)vLS-Dw)?N%{iEGN5ylJ+v)8M?jcw6cR6o) zHE9jw9QHd~ce_psJGe6R>jto&R5&3MkCRLi^;qV`h2DR~H&MlN(lXacYbAL4{?2oj zl3mVJJw^YLx0EAf;N!xT-Ha7pp|W>nl{}*=K)qtAa(06s3*A7q#M}nsNq5#+yR2Tf zDv#kFXhGKM7ymq`mAQLNYI}C^htfI~-ovqt`6`wgCl|ew0F_^tRBy`t;Ho>X*gHwP z;jfI0w^ZWnQg#oXZ)xr-;2_R?2%6XH-8ysfkN#JnBz(Fw{J|EL+2!pSTWdsq6oT?* z)7HjVP=;~-JO{M&G@-kZxzTv?ot@zR)T|KCcbqknH#Y5dz2v)R$tuty;U!N!H?eI< zEN?eS)_q{?`R+2vGZCOR`{V@40`P+7sCBXuJpK9iWfz48hhAsO2TdM^ewpx&!Sm7| z?@fZup!(j?ZTEs#Vr5lfn|3-!Wub=ABNc*b@mV z&k{l9nQvEfV|XwUf%3r-RmMd#z!8ox zWhn+0_dr{=&(7i8vker)7azT2$W)bMk(qm>K1?;U32Z~pDy@Y22fsj#mn}}S8J4Tx z+-dEi{nZSzLk+Zo!z6MZs0w3BsC{7YV2MgJb~Tg5Oy%Rk-sWqsfw>2s5RRe6#AU09W;crWa=*74@XsYm$ko`7J4ET!XcRQtaymRP%Je@S~V3%tqBT4g7wHp`5A0~$t+ zTE{DKr>Z7t(rrk?e6iBWI-Wd>eYxe`OP*S7Sp{0UyX5MVWA2Zih7*_Vd`}UfwY+|Jjx2{h&c0uQ#AQNwdU3Cs}NHd-BZMI4i z!<%^JZH78-p#z^s>p*6D%EA}9+RGdcj>vTS|#1^{84B8B$eLo ztqsYOZ1!2Zn1_doGad&;2G^TgAe%PZe%LuxrFZgP$vahlo`4&vnG02Ja{f^J(C|*o zQ~S%Endx^Xne^EhI6ltcEXbMkyBuUgyMDgMB(<>6T5(9DJ1RAs$z8oNsk~#_>t2Ua zcaKZDJK`s)g4$1(Hy2wwOxkkGjLmN1lgplFufg*bZJH-1HyAhSf>z>Rs9yDIGUy;5 z_WBom6Vfte9~gUXd(Ssft;dbrliy5NfrMAhsRKq2gn8OTCb?aYJm9@cStYYi?=|0qXAia=(Dd8} zst?Zgg6wbsl^f!q9?_Dkn>c<1OiC|pf04#_|d3zJ3MI zNlP|PO|fR%zUhz2nI2dv`3MVh?D3C$p^Pgu3S} zG5xd;%{x>)rR1|2-ur%9^iJSz%XV3BsnGB5z`+DAge$i)7HE8ERk{6T8K|ANTL0wX zhI;0*H+d7cczs*H3RECv+J%HZ{C#c~&u#{H)yO-bs-zZ_h=Uids^iiD4gYwq);(Z7 zdCwke7v|8fx(`}Fn``=HLCr8l&skH!VduP&y})r&>b)u*&q+%PC#KjxP)RuaPRw)l zlf|K5?|}-n^!@MnCOkVCcYuA;5^I-9TdHa{sC&**YiC>zF5n|8ohOBtxxc8dyuEQr z;1-Gexf7OboSb5ua2mAJ@xmHr8J;;aQ+|VM-Ivo;B8^WzPp>(VOF5}a9X?-}-80_`|V z%Z;4myi0l6-7~qzkAsS-`Jko6k3qX@edotE=Bxg!_Y?z{gPB#J@vYE=(;(BI%ddX* z1$2m?lKb&lE{uHMpH_gXq*F^zd3UOKURFQ(?Z9@>q97H|OKbLSUG;CDbW234tKp!Y==L+yn^Zl6SFWmKkhyYK(R0$XCrdr=%~QFn zczM;TbL@7PK?ewKlG^|--mj|M6k$I;$>i-j<~ehpeD$=^0Bt^Wo}R+}phQN-`|%6= z#{Dn*CM;ns2rO?faq(^xo^%J)%_=z!>SiswIlIvqRH0m&Bg3#qztjHyw@T9oy^AKf zo!kqG>D6!YK<$%>8(1n>3+g7dgDb(zBGsS94`v_8yQ@1X?deg_h*yh>Zo_|;Rn|^Y zi=vs;)o$(rCEJ>PQ*=FNMTM3!fAD#*>6wV$imwvE}(v&dx40!|WnM=fCcou%tC0bUO3?H}592<#0cE zqB0vaNsxC=e3PnY@Y+>%ERYOX{7vQoGhhF08E_5pU<0@ZMB5iJ!Th5mZH;J+<_JH>j`J_;-P|Lli?fQ=j)HPyzCCS&d}$B$W#Jf*?@0 zVb>R0KY6{H9BUhqv2JF)IS`lK~CWtBXC*@H`v^{cuLzU|om7L@ynzop2?l~?lK zE7Qp|$(ffj8Psyqx(V9eX!2I!|!sSn_e=lZyw;8>>sUd(4`gZ?q%CWzw>< zKkqVLV!Flrqd>?!Z<2}9AKu7GDhpQqlddQPbwg%}*K^9uOz|u~VX|@+cjIDEr}G%N zVA3}GeCfbj&{RkA!)pf;4`h12y94&e#c7SH2R%pgz93JjHJ?|TDkx_?fRe{k9J+AF@9M(jovAGAI1mVu5zTYKf%fmxt> zaN{S12e&<^fjZjCo|BeboSee^AmTwnjeXcGmiH@G74KG7SqaMGi^b2$D5!X5J)5pI zN#*Vp?gmhg-t*F)3ZCYNA8*}Nyu4`DKiPciX(m$J-t$dRS$o9{6b~D>OgY%_2Z%qDw!oJHyMAhZ747AUQ+o{n5{j|`%=iNRri_f-@Th4wMX+Ls0*HX3)C)r>9*?C z_XC$dwAp!1QaidB(#iFi*xUeWb@}ey4LbcIENeBWYY?$p{KHq3_1>Gpz~d%Ws+D2| zd>foWc6@%cY8U7LgIRO$$|{(06hur?FKPFKKm{+_3ef~x3L9Ht{ zP((-dt=h%+LmPZr#Uzvbvh;$-AAj9doV*T{%F4^zm#o~zR`48@YPl@ACaauX&fw3k z=dmdt98zuB&y4SzH|_?Vfm6PI)hbYoX1dJb4JmKA@*?a2r{}hJd=r;sg4P8ri4F+0 zXPS2(TnJvBZzv&`e?iuW^&ZQgbzr|N1hu7{z&+D8-^P9wOVdtvLC;AlzB5#$RerL3 z5KNf+PR{f5I~&km;YlW1t6m8`IP{Kh+|rG^+kTLrQyne%UQ0u$HYO%G0lp;UtKh@4? z3r{Jd`o&XKGDSnKwjSsP^;jdKr@S+y#=k$JbZito~;2d04vk!aAU)Rl+d4lD;PZCVX(@Z61= zbkuViV?5iockd>el*F%DwRo4ZO6HN;jn)oQhU@)4tpK&KQoyO$R-dKr0;s|8>~3ts z4a(|y7cYTgB;+>tkGM&xo??((qHt2S;c{bhqv~GMNn!^= z4{(Dl;Hg;%vLKs5-hWeWd54OxmizHZDr?(T?UJcbDsTlYQl3?A%@psqDYE>;l9j8Z z8^TM^m}K(!-hoKZf0`$Efz#JzwUc27JP#x`%s;;5WufASX`luWduXX< zL0EaaNz*%4(9sN&)Fv)Y_MDWqaFre7p5+i*z8zS}*Wdmq71Y0(r3LZEMPAU7vb!ge z9>_PytK8fU8kNbEy7Qv!@#hBjvhN;I0jz&=Lt{Z>Fv(9o-(|eiQ582Sz0BR?(h^WZ z;L;mehMKLQ0Y=`V-+1zD?k%!TnG|x>yg?Y0fJO5`3AnTtH1T|TBkPBWpf!NYcDhbd z$xKqcDP}SA;M-%;CeJ;hD*gwBE(ay18HFV}cQ<`kySdWZX_A`fsyzuFla}1{+N4^* zS8yBD^*0gu&uFs*)Oj${ob-mHhMnJO@)m=CyI0vbI8Aa3n55mf6f|(N_Q2Ew*^S#n zuWkhg*<^*2Ne@&HI3BRtYYN)2u){m_FQ~zD%ySZhJu_&nw%Zl{#<{CsO#&5|Ec+g4 zdtQ(I$6wm>xmx_MY&Qi&|vKG{a zpPlj@l%$swPEQekkn>=EL4l6%YI}zB#RWQ^tJkw_=dIhg+gU2HoTYDu^^>)HEWf{r6{ zE_Q!#M&)){yHC@qT@n@bprU`HFQ|ywxemO})ATL#ABB_upjoH4S*4$KAG;3oA0AcT z9EuD*kVPQuUUY>7X2B!o8i1FSWp8?)ER9lT_|DsYI(<^8L`+kXqiq#Oyjl zHRv9$Q_dW!nSG$Ci_E*SmpY<(WTvKczZ3A3N(XyNJ+#zvgZVxKP0vdzx1}s>Ps;9c zJ{BALR}8fCV#!L-&KbAM??DywtmeB7n_^U$2x~qhHcILIm#>Vd#`@g0g4fa`AG$n z_bd^;Eo!mE+G*0Usi2(tEHboK&|(8Pr%pZmxH2I0I>UOp{CzDsu%GZ*E8N1ea}VV<8g9{f>R@3jdO z)1H?$q&`@A;Cmx;gX>w(Np6ST8&g5ejE8nNWfgiSeplO>4JzlPK|#gq7%KW9=fQ4p zNUe~OJKtZ=u*%x$(ve#>Cnteg7ia(M1Ff4>jNsZc?ck3ehT!NpJn6~21JfJ(nWIgf zdq~N~GtD#p{BDj)W`!N|pM};=Qo^qp=X-5(1VxB2*cQ*wSUwx6ACcfxw(2%>dX>_n zH=$Rre-sJxJiM801L%B>mua9XR_$il0Zz|8Pzm3o;(4jYvuL);dxmq2ayRZOXD*q; zYqJkB;Nb}xu8e>2Zo;t>-wyl+^(*Fp#%MD;R=r9;FrPWRY`e##B@1`S7OXn_*z#w6 z1=s2&4|m3vH>kW!(*wm%CgU5{mV*I`pBSKJ%-M=E;AcFw_IN(Ih3blSZ!9V`nTNLWzw=U z>5baEl$RKOex}0zrf zS<2YEL3wfxXmn-qIZ%nW5A>( zqoYcvlE<>&mhxo_6?jWZ!{4U2zutZ=E>vNIp1nqB_5b(ZLGxXKpx{`d z2x=#ZGpCn=5?SSTxq>C;a_9X*by>E(e>cIT5VQ}#?aUd*TJUnEl{al0)~j2poV*L_ zc3=A9wJCGbdnR_q?=Rm?H2HKdE);Zj`=u?bS3yn_On%kuDF-?fWHIP8Cr{_FP;o;G z#h0K{>n54Jzs9`paqscX!J+Z&eW1c75R}w1td@iFsNhD`=IH)%pG`%ePQWZVPcyGg z)*pluK0lN3e4O}v)vt>37L}Llzoir~?_F{;QtpQN$y=bNZ5Jp_UsUD}v$Z8L9cIRog_3|}7i2BM+4Cwq9bmRd7Q&I1#M)*sJ6@X;#S9!~@Zw{_mv#3!8aMS6R(F z*nVx2i8$CBpuLKh&fb-^P&p~+`3^imqvkzHbkZI%3*HLp4MD||mVEq}n{a#8D$tyO@M!(Zv~!>X zTQgg1S%0KXik-9ud{*zVXtr%kb*yjBJt)@pj0!r=bbkG+Y|uzicc}tsFxcdn-J~ap zpc23f99r+s9=Hzbl!Lv|y6TthhyS1k6i>eOv?UimgE|?L-0pB4kZuf~yvN9MSF?)e zr5~Q3SRNcdP8lx!Z2@VvQrycUdnn+$OYPe!IQbrTbvdM1m3& zo8KGIc!l#uIllh%$A=F@-W8mr*0ea;Q_5By+}2ck$MJ^wj{#)FKGQ~}GGJ13!+Ylb z7w;yTOgqOmFDmrjJWbEV`Q-~h#Y-7K_$)dTEs!rvm{z?idSH3r{cdnUwuW71=99X+ zii_8+TE_%F{7&i4Mr(&jCBdPkiVv8(C#mS}bZ55r-Q+*%D>x}Oia7cIAeaY8CjDx0^hRo0D=IRG+be>odX7uh9=)9+(d)IoI&lT$k?8 zj}DdPkO3V)`6l;a^{wFZTr*y|;rjpN6zL>)MHpwn~SP0%pFFO{1HC-n|w9>{KdI(xE8?{@75-PNzA zgGSXOe;XAfmbaKZ3uEN-*i=>Cp;8J?v>hu~EpC|3zzw(T_`{EDSFeg^++AAkA(aj4 zJ}-U=J~-#toxP3uYVgwFgG!|N$#VxJ4@fsooi$mdcmHY$p1yj}`31A~uG+!9dq3NI05sKqY#Jy@_<}6DbmxZ9kI+f6ds>|* zEjc+YWv+@f(|*Q#tZVK>t7JOGuCCQSz|@L#fXYRXy_YsPd# zixpR!-Biv_Z9Sm9`qgVtc%=r1iZjN)eK$ev$Z}9KSkY4!ycsUZXgIDuCTQLpBt>fYu6k1@$Xr>s_r6a z4dt}BNu`bE%(oe{&7OPAvSHn`ZPm9opy`}m6@HdJ_Dgq_d>bY=xQAT@UHo9;0}dpP z)dycHtY_wfRgy>uf|v(voZ<5GqdC=)E<{Oa;xhf1~D z%>|%3>8#(R-brtm=J390XioP0{P-DIy9~a&L*S2RBKYblLw1e|W88trocxwDIchE|v1xlG5|} z_6SC7we-C7YCShi)S3L&R^5#>YNJ1veeLIUA%bDYK3-{WUoO)UEamPEt@bQNq(`uzGR$4n< ziU9R$l~=6NWAy_cV{^(z=tttDTFAJ|B@?etJ5<^k?Af<5U7DkkY4u0{gMa8##fC{H zKfkf*z3iKycH(d&X!CI<_y9$dv{kQC*bYC|2Iu1o7B+D`t9Hr#5C^sNdV5Vl{@MOw z2B^eXcAH3ZE%DyuG-&ZFbE&HHFs-DR!R@L$BVTu4RU203Keegl$`zt<4)zDIt4WM4$#*I;+ z=BgN|G+TLI>cBbB_BGE(y4{mh&Tdr6R;d*Jkp1BFfwZ%pla`(DZ&d7gHhbJ%N`ZtSr1yi{VvSCJO_bLJ`)-kwu3UFkpTk=^*-QbG2Fh@0W*IWjhovZX-@=a9vx^mTg@a+l0FD8SQ)hT*@ z2DP<4g%^N^X4Zon7gyO1JoJ2bQPzlS)vK%r@u2-MdqP3|*6pu0fRaavaW;cIi=Y3e zSt@+XRXl%LdtUR~WLqHi;r@ZcvnQ)?K5%)U$=9dqXPZ8h(xMt!(60tWs{M-EFPXYhwRm;*yKo>;u5VoEyzp?D*%*NC6Mbxj9a1 zSHCH1G5w&TY z@K(pc4?ptmDk?uZdtm-9WtHAFPr?3Kv+5jcA1G&eZqE`<*so&m^=Stvs@ili^Rw>B z+DUJC=CHrvwb^3nIZ5n!NkaE3tNozGjFZaP*S+YQpmw3?fcWG)`#_-x+8#ei?aY}E zKjt^qg7b1f?wJS29`80Q?`b;EbiBmfL&_6W4J^+84~i}m?Pw--^_!+At3ch`vrAR9 zRc~6I3_P&%!0v{vvp1`}oHpm&gSN-_K}!+bfRJrmM1wzAMC4D?tYzpJfHd z-U`qZ0sDh!aF=SuyOR%&J+>}wFIlxpxY56?+(XK8pS+gmY90^-?JWH5GpQOh z(znTLYWozANhT*Jt>Kd4vRMd;!j}i0g_hQpdrY4>zuAxN-K{xFnI$!wK_?3@%Emuc_#Je7~~ zm#Ad&gj|&bZ>dztoVk{554VN-$#b50_hnT)g&ZbXt5pV1iZ`m5_NdpwVwy=E=pgoK z*A^aF3EF9Xn+J5F=A>z@pzOEIAvBiFM)U`GL|JOp?*|`#WFI(qS9X$H8>o>b4@sbw z#fN|VF!#JSIi>fVg6E|#o|}Rut({cEY$5)G<->z#I-XHcpd9YKb`=+>M>4D6z2B!7 zpk+f*l7IFncurb&@XUi3zj^ZPrl@#ceq8b3WN4{pxktN-G_$&K#evXECAYV)in}JO z=(#J`^Bw;j$Sn2Irw8H=w6A`(=beP-rIgt}|9+Z!AiJS-cCkvP-k-jM4}O?~T3sKf zri8M!e_V4HbVJwXhW0Zta%!H*M?s71W+{c1GJbG*Fa=y;hw!uQo0~HC-2}eSQoaqr z!6XvwAB6JT(~}rEslN8w3PcQ{BQXtsr0T_kyfpYo;06nKbsxH zo&A>Hlb&7rc|a`m>uXR&cjN}|j(yfnvkGpjR7RG!sGJ2gfhR2s2#w{ik!(K>+6T~X zu=McbRlDSFfL3oSt-P8Fnly>L$qt&Jm}K%^j6t8VZr+m(D*mrP*0rlht5iBql4sb@ zYR8mwZH}tv=Z8#e&5tjG`hk-dud3q)trhTX^jE*R!`f*Qc#F4Za8_Ey9@c^&aILzk zoylEgXKne34WU>4!F%|!N-IG_wI@NjJ`fzBE9SA)sGszolruHuCn(`$cy98WbY1PI z*$3+flMf^}ewpTZX^$oUjXkUU-ttXU@m&(Ti+PFW2C)s{LiPDmP0YX@x1+0GDY2Q$ z&4;udUL_tdpS0$l?4<{>;LgA;(7Lyeo5MllPgx&166`?($m)@xY=1@l_ zEm`?B<3aRgGn;j*?3v%ccsJq7GktK7-j?U@ouHCAE0?84z(W6|ou?eAQ6$x;@>=bt z+DXL&t)Rs#Oxj!8JTHBi!Ay<#`v>jJ3 z0S&Dztl}xim~?fQbKA;Q`&eXd-Bn!Ky4ciH$~d%?wfW&j70+3D+KlU2`usmNt3<0t z?z8rqWU_tI9ov($C;e$Sc%dRc!JF;B+=L~WMOq(ztg>1SsxCyovFg3(o3QM_ssr~t z#XytBxu7QGq=x-`{pRd_*?tpMJP&`3SXNNMlfxZzOI9)S1$e+vcPe?yLo6h?gpn6P|E-+Rb`mejvZW-{8mpUtg|y2F(_3P!GFW3CfNy146Ge&42rD z!m=Za8_Gc$Bi9qW6?ci?q!ir;1qquWnbDo;{MuEkcR9DIo_r131Lq;Nsy+PbdC)M! z=E*7tULLRoS7jc%*eoP&F#jm~snDa+yG3O+gMVT{^T*;w-l}eu%q4$hDyl;Nf*KPh zv6I$t&tYD3=dO}(V|L@&Rj*p!33%>O1$FZ-owcx;rjnT@doZD*rnLNo!I_@$K8AUB z?kZ(wn5_dZ4)EMO{mI<}^`NsEmrN|z+MvF{KQtD!T0zRANdCb~Tdcv5{pc(?Tu%|hD`J68Sj zEbmbHYYX!2%doRN{rg!#-PlPgyjK_U*xi};<6+^Xr;W)CzMxZvS8rbR>K&-Vvvhh& z_5<+dxy&5hqz`fz><;V;EsZShSLxlV@|tNjvp?fDmUmaAR6HNQls?eC>eVaIib;k^ zdl*1753`h(GxC3Bkn&u74AcVI<;&Nv>NzXwKlh#`tJb~do0;z^$05VM=Ehy6%zHAi zq5d!WCaCD{RawojpZVH5P)92Hz19N-HuhOEX1wp~JuhwY+Qir_eSY47gq%H`6V9oD z7UwfZ|K7YpC3A{OB%cNI2Z#L33cJA2e9&-#bo4sVVa~n#R{b(=zTDXl=}CWOdZ2A= z&gj2om6hO)ox7bc?Xdzahu)Ht=J(@Y4X8;wi(@r|J}V!ip3f%#Ny}9VZPY!DC#{*E zvRY-giY4C<+YS03^bh6;I(; z<~(`!|K_i(F>Xh(I)l4Q8 zOMwbUu(vCgGqW?Xhg>bZYdFbd`Xn6&Ge$X18?g$eg8pk7p0oINGv@2a-ec=_e^8NU1#Jz;JZHOp6(8t` z3EkZ){!IJ8vy;nCSsu9F;N0*&^y*ho9@6$SV=!Zuv-@1dv!N_|ii+?2eunpRzMPLz z^_;AD(zfw(!&A`Sx6P@cwV*}j5L+jy9B6OcUJfpff608<<@wLR=H#jaoE58^O)}-e zLidAG)!AMZbq3Jc!YZD@FKgJCpD-6T=wz~}MoLylG)MQybJ}q2@Xns1lDT}ncNxLncBmyvYxe_w9IFcXd^oVf0}_w-IX)nwM)u8C;iJ3 z{IG1*t+m!Jla}1{`Xs{kzS=`--TIKL*Fc9w%wC-AIcdw8NjdCqxO705^-XGfmK^$Z z+q;gRQ&P$wY`rTx>DiH=p{2_~L)&*eH*po{ZSVut_m_I-Fv&2y1^X*9(w0J>leB;x%^0t=O(rSp$&oM-Ahu-LPBjpp=PpuQVmB%I>^(Pba${= z$ox<%hzO0nb4NMTM}@PX{DC4*p6;+k+Oe@g1f@iVX$3$&8d^R(7UuLG8#<8CjBSS?vK@3yQW%zmwt#*NGkq2OF};m`e5w|0W;zbSoV z*>2}cMmP7ZvIDP_ulD@L4nFEpC3Bh><8mf@hCY_QHLL8us(H@R_Y7ls$9kv#An&p7 z^MBR}CtL;Df5%$B!Yy>}1z9D}OEI3G7!%sx@nw4LUA5}l%f1OFwcxa7IsM7U1J^%( zN%fqx?47WezK-AogA8 z-N+sSZWk=;2BkX_{Yf@579yZ?V?O24fA%+{IgXX_a6?B4BqX^l*9Xg_EP#M${OjCGtgD?n*4^F-b82hSHg zPT%)W=tnPmzUOwGlSKz+9k_LX?LgImxe_u#G2d;t7lTz{g ztb5Y%z~WujOEkZ-Kd1vQabEHgG|8%RcDG778y~A2q%obO_@Qgnt?kw+>r^XE3QRyr z{*ut`y{rE11ns-oKWUG|k1TKw?OE^DUKKL5CbpxpAN%Z&>^g#Qr>?M)kNujxyL74ztl{imK(S4A8Kp0Z8 z`+WNFqxk@6<^QxB(yLwt-xZv+Z-vr6j2>Q%co zZ1j%O^1R0Oj`7ZCw|Mi!55Esc^=3|5^75nOgZro2H>i3BtDO9FU?%vOcaiG2P}w`O zikY9l`QLeRifTgs1JETBDw!JVnBz<`^GnYC@%bG5!11o`q-iG}uX@!EcER)~QxDjI zie=B_XF(529)$C>ok%y3(3l?_DsEbq*`*rEdqZLecXRtq^E3m!eGj*m#m`mAJSF;J z8))LOL&Z~eQqK7YA9y`&>-g{NU#0h!Z=%Ufa4uZvCG{m_kpKT(saZi?sBYHk z%Mo6i^fuUSczEWzHFJ52fx*2Q2T$Ax+^CW%63hQ5IJEM`T$Ri$)t$BldIh`RiDh=Z zjSKw`3J&m9L7uvk_Hh2Nm;i2%zhB217Z7^?4c|;}&oTzk8PzYt{w`W22kMhc%~Sag z*+b!ZX-Wh~3`@+J2h*l@H*hz8PXBj@)p&h(WA~}{DQbR`L>o&bdRngk-2MK2!Q%J% z65{Lm*IW_O_Pn%dCs)PCC9+#|JTG1H*kt|T);qq;F3}HLR#|PbcDeKfG_5r0mdZ`G z8^RIbv6i#DS2v`GUoGG5{LE|8Q_u|G>%562-QQNMx(-@#)Rvz1rGTwj`V#0?m#BX= z((Ap`NmCm`8*ZPkiDix8 zju4HQyuY_C|4->%>AxSd4zHi4lKDc9ab9?+J!mo|Q$%H_e1TA$l}f1S|k0#>O=3UU$MpK=Xh=sYi8eZon;#HH3l(*3jHG12W1Dkc-RhU8~)f+I(6p% zn%by`5?!v=eBRt2)OF3AqGBmikyYMq^3*OYG#|7- zd?q-7m3hh?eBjssI=;p8(w^Ns6;YvomsqE)Q>j$m;9cInx2hDdqAPmYcij%+>mrXJeO3UN?BUW%8lA!+a*lYzY`I^b?$t1&Nvlq07GKOtU zY$!LVmN-29$=L(PK_i2cuDo)3F#Et$o@0B=d8)%x3Yb4|@#L|_%{!=jkXz!8z#f_A z+l{K8m%dm@R78fxf|j^n(wJ2l_Dtl#zPq}YrdW$sWQ4}vl~u~z1TJ5cl~2x<;3<>4 za#zW7(zCnrjk;=2*)FM+v-us7_E-{Flo4tRy5ahY^2sh9yOjOWptcR@K!jtb<{fwq zS&2T$EppP^hP%70RX+Y(RpnpavgG8Z7|{5_C0@{S?&QY9;Ox66TG~PhG|&3XDReIT zp0&H3FZs%VmMOggZTox=x(*w(P4UtVjfCZ^Ze0W2$Kai!&o-UUVYV*U5OX5y5|DT%D`cA+Td}p4gl%=ux#T?$6Eua`ayZfu;9q`&6 z%TMRQBPTmRYm{14R)&Y_vi#c%>J5TSR({)m;PR?h+Mo)pcj4WJ*1Lj}Dhxhsd&dDY z)zkDt*@LqVrQba!Evek9_+hU~`AfdYu+UP&4^n@Ay1x20dDSk^!WI)DJ{I_8BbPj^ zge!bPWkDmKmn>GT+S~{_mWwIjxXO1>69s(Q%aVyR-h)QRI#11a&OzzhVyEkpi|K>UgG=E3BKzMl%S;4~0a|Xb{c!pnM`oAoJ&=jApD9+@<0RwAg+UZS$ox`3-$c%LdLgeRHo{l*d(A9@|!V9}hE z!wfnBg0sP%VRpz>`CZN`z54l9(^Nc@7q9YTGh?m;SJlt1IydC2MDDdti43{AzF~WL zxkvB|5BB4emh2A?O=p@9+8zWlJZLsk*{W5!pj+!qo zm4Qn}q0p;a52Ww5R{481dlG1dFSBMT_;i9vX}X>b-_Pw)@x1iJN~ppQlqolDnRJKI zLT*QJdAEt`yQt9ppuJnY%T)3i>~4Y<;j4H~TC#8_OGRDiU(jh@OFXBg*gn{P;M85+ zNemXU6(20@%hgx*gBCL{*%-oX&2*dTy6JP!*`J?99%Orlz2b|E3jNBSkPVvXGhy`u z^`m$3&QB~*=m9%?lG=UA1Igg9_`m9vQo?<3X37WO6LkzcQD|~)RhIvQn+N7Ya&)ED zhp8&3%iDF?y;*= zc2dqIS;fph;8G}g{i;3&Ircf1!KKhy?goAJ$P2QYc>eMJ09}6dkPkEm4jN5R{4f>N z*aRCo+ZMF;;u5HoUFI1&m!l>(&hsa1Ex`WW&X?lXvec+~f>MY$I4YGu%RUx2JO+0t z_T1#UVSF-T-~7PP>x}CeKpXGWuC)I6-Jp_raxX9V6cUgvp2e@K9`J^K-3314ZqgFX zt={DgOJ-LneOUF5!}D>fj{K#mDxOhuR$0m4kg?cd30fgFKb(1YnL8*@Og~%$O$N!v zgm#1G)*mlirN{7ZF|6z;ewLKbz3Nv;d54N;@VkTuXWnsmntzJ`3!ZSsbf%fT#{NQ^x?!RE6{@I zC7I!&+>HE;6WvZ*9cTxo=>CwYmIxj$DLZEv>f_{p9xC9x}^OW+~#8#jO8Uk4|yCN%8 z_NJ_2<`>Ww8qZk~pIUB}YE(CJL;S;We=dk84!cLgW8#jjem+i{Xg<~`M$92OiE8KCNIRx#_IeXGje^UYkV!rgEfbST&o z!!pecb)m7hK@(B&p7Z$sz#w8mnh z$u7{6KNa8BRaW8^JRg>V@`TBArW&=A+wLlEHZA`2>vSXcuIMF(WecD)CF{YfVnD9< zytLLzuwn@)M2;QPyURE!FU|GAX3tBqN|`0#CVKGVRqNQ|ICJ=Qvd&FZ@hpDb_7HUM z-{#OzafbDW=KC*M`qaT^l1cbIhL{_&kehOs9Q~#CVaF;f(Coj8?#xwILKX{mJ6}3$ zGw-1B*GXHzXER(1S=q?XsL#0W#XFFxS&SR}CyAH0p9u?<<*V7S+gZwaKl?t=MZ&Xq zK$~8A!A<{3DxSM$#x_0=xtaGvhRk!9J)bxE0 zUV>}6mElLyr1Y|Oo!0u}AD5U!$FExjsy~;U3=I9v$POA^289A=!|I0ckgKy-Wd(xf zd!w}e^MY0qUpl*n|IHOy#Y_`OP^?~6$7sW2u?k#!uM}-$o@BGqI>jtaZc2q^K^^EQ z{Czh-yUaaqKRm1tia8a}yXV;C!b9UhTdzI6*RNW~1X_x*CE~VfCFn%&i=aJFD!yA+ z{bK%L@_-w3d{k!MTBaJ?laF^fr!8KkmttV^?OE8%ZF56H)j>1mYUj_KPq|%I?g2L4 zcjJ5J{xz%SgQ~41mLD}A>;h%)%?v+6K#Lxwbiw)i%Ia0wt6s@Bnm<0^K52>PCava& z9}n*anZA$vPkMQ~3EMu<%=fIA(66Qm@1aHC63yTP>kb63dbJ2N+iqeGYGwVqD?3T- zwc&x)p!xY}(0qQv;}g#V?E_KZnbC897%P%M=X7maGD(M_k73@GyGp$)RyXVpxq1{d z6>)NEis=J!$V39j1IrG?H(U?7`X98-bIH!>DZvkJyyNriE)^`8ziQVOYnMwIAC@J1 zPFf1dewf0^=x8h z%b@|Z%ecYa+G3hYW>M(X!UO%gtyOfdRUH7`m($A!DzH84m#^|;mt(Hk4UW^9UmKMt z-B}7Yy7j;{i=v7D;uv>>jyzfB9Qs$_hX*uEUShH4xUprGA2?b+=S_dd;JN)p{3M$# z)=rl)z#|M>BtpNsKajLYo1l_8Dd$K+Ma}Vd6I4S(?=#=Ke^;@0M)RsyS3m=LA(i|E zKA?Skpn|VO^MNxcr*8rWy2x+l=Vk65QEONayz{&xbr zZ82zx#O1q+FU4}%_N=mY3fd2gQSVO`4;T{ef=dzgI?kNH&}2gy&rNb4xIx!i1Z_@U z{YntjCx1ERiR*#?uq@QO^ReWeyqYvnO(V5WWqW$T?T>GFMXTsuQ$0|-3cORM7FTHa_ho$fMJhx}aCV)mo_d?7So3!TKgNK)WX}j1pa+G_BonuF%=ZFAcY~8*o##9DIV?+dyIxAtWs-{x zwSUVu@yg-ZeX8KyQF`lFO=nuqyzVWi)H?k}^Fa9IH5X(zwb(J#EVg#a+O)Vi*)wQ6 z=x{d056?j%2&!`o3k^T;fNnB=$rf75)!fab(!1tr zA|AW}wTZX9na5qDda~)=gxf)(-3{ReJ3fZaQd4J)2aQH?E?9MrA&xZ!REvO;Ovi7@ z4Vj^}phf&Dy)yhN6Wwm79k4HR_jvX2MZ_ePOifU_Uv^+SxItp{oBhG(#|2i&p|M;x z>^s)%c9mLGKU?yy_aqacRj(947mI>|TE$a&l>|?xTyW@f@CwU`Uwj{c66^L?&Ytfs z$SP+3aQo*NNuUn&bH? z#>WIpR7Be-!OG|w2JTR!q8Hm@|Gn>A70qFMAEw` zovr!kcNVkxzjjJ)*s?jBBlcVZ!_V{s{tfc}fB$5L>b~Zgyk*BE8@USk4Pl_bm^GQ{ z+qzZX%i4APC;c|Kv2HtPDy{!scqnL1(Ik^#&p6gS+n{abOu@N)HXB#ff%?Of+`=dM zGyVtdbBao5{vQzDy92m4pQ z@?RSYI&`{MGH2(_Mc^9cBrmA%e&XGPr-i%c9Xli6=)3yWB2a%KP0O=^pV=Qg!Z1n2 zGb({~k8Fh}XzL^>S42;G+ZepdT1EG|_NrIBcLgVj&2v6JiNT}D{Xye_Z9Hr}@0+E2 z#Jw5!Gt@EE{I9PMyLxnO=%i=9lS~`RnLvjHOj=^OlkdjbRd#n}H`#c`vHeI0f1L1s zl@(~$`jVToc3t?a%`O3y6)n9ZYbekC;LO~!`xL-*Ji6^x~kmlKB&8XHFzo~ z^0)Da7ps0bm7n;eQpvxeyu5u2(?0H;;81f=8EYc$`HrDRdWSbCia>>!&2POAN1*M+ z-svjU4DxT@P1q76ziQR;a(9oY2tHYFVU?3@2l@`I3$~Z7lGeS>Y|pyyU;@X_>d?}# ze9){~QT~IB2cYvRR5GuvW0C`}=k`%QsdeCagY2&8C6+rFZ){t&5411!QrCBI^uYQ?&_S@X!VDwS9^916?6EA->D{=}{GK&aKYJNt-u>t$ ztRJG;m`~hi@LRV^-u%1AtVWe=W_boV&>b|B(%u$5NId-Sg2~BU2Qm*FyQ_OiXYb-w z^FTvo%>jA7RY!_IX2Dt_@x=1 zo1``fH#(dlheSw0AkHoV9Q7TPis1N#lWe2ZS3;XBV6N zS;y+f*vHHWWAl{l#B zwnbo)PGZ5!JK)p-s_>0JR41HYWwp`TWs-{TJe6ps`=EVO%IjCJs(;@%!Q{V;)igJs zNu?4pK2>@fT#NhMZm(|;mf%sWzbdV{G|n@ODbDn3k%GshB^N&yvq|^szu=qcH|aUU z|EqTu@Ak+uMu%Pv1$9q!r>J;K+Vs~(z>>L1AM3YutH5WGUV7qH#I>QeynV^jT~asJ ztUC9SZ=%V5ki`eCDBL=Cz_`I3w7eygCzhi|%!2PnO=#@hJIcOmRQg%^7(kVVil^~6 zXHZ;cg5r7)BWQ-LMEN=s|B6-M1!GYep4XW6apl~c1GO+Rfz791Wg^ zm$c@+v2xY4()K%ZR2cb~zrD(v`0o^B=+|YS8eYtMQa!^ywmWM-Bcz0YKPw|O@{mgKRoTeoUm z?z@RLB516{)A-Z<17V=sB|4V;e0X7_iOZxn40{-E zutr>(qkQ+qQJyy8K9+rP{}`2YyHxxc?=i2r396>jo>)Bi7+M-ze&Vd>CaVvY3BTWo z`EI#y_+!(l|BHcMv%vq=5qhZ4y^@E`m4NLrV`0*!5^`Dx9g>zH?g7Z zisvjHcjn(AS5-kN(DSnA zr?Ll?cV#D~J#l*Q4!mAziRg2+(3PH(R6Wa>&oT8KXiV;%*4uEMDP8@i+oZjdceI8^ zDTIDaez5PrZ*T*>$40awe^N>NojI#^iBw1wq?LE8UHU9zF-?VY)hnI^@dNtzz>SGZ zNjpR;yh3dcHiB9cO83}!-Y)$=>EE%p4WR2f&+?ngdUxxb6nap2;B|xVtl}jhV{qscVfOh+rzK!1C6xvPFA_i zG#|X51k`W$OnzS1U;_&6Gr4ngJi#v<7d{~NA{Ui}JMv+cQg>XXC+;=8O>&fX9V-RfT6vPAUpg^gP{ zCfSHp@NRG|@7{9aA4?5OMSAGmo3hHilT}_D-OzdWHg}Q=@BZiEpu_l=O@88cAiS}6 zR9%{S4c z+|{PZNhQ;V z=W8k`PK6$vy(>5=tY>!LQq~Diz8!eoXj`}=e%HqPjP0O15x93HFDaam!u}xnz*}&P zp54V)krXO>S=MN-N;#t+lC*oumvp z`pQG9H1um~0`~)NP|ff%Z7pcg@AP*QUWQ!VdBC}0zWMSDn;2%Bd!U4xwtSTza~Xpk zc<^(Qil_3^47S_7vY@M0lb5bqm$c!F*QFN~*^{R3R#rLNJG*ab<)jq%2LTV{cSkP~ z4CY}|y&o2Oy!^Pw;+$8_H?|hS|^tsIC(%86gHsdPrz=03ct|WRiOGPbD>HkzXf~5QcKrMXWoW_4-Ge|=9Bf- z);Rg=!0v{*)!s`seu#Z=_JAR%2p3@nvL#}?`?YwMqitGcI zgxT-Jdgm~GTd9>VIZY*#)wh=YqiVw8dqUuVHd)e_W>8QAULteJ$-7A9!xB*5DYM&9 z2)cGcDYNWOgZkOPNvfXTSkE13OwQbw!z;u3N9W|{No%gjs`M^e^~+>~C}dw*$>coN z8oiTgcNH&#?unS&u-s~$vxPS_LhoOH~0Qfb5EMs`?!Epul+zjjqO zs2ws%EPB%AhFoxFHDbHnSAShrDf8K#5}mV7lcr9VVVKj&eEd?<4%q^O0>4Sklh$07 zRq36yYS*q+-@P`#nzIq6mm(;MThcW;0aoXJYQw|o;!w6mGkzw4V|Vx4C-EluO(wFA}QF<{Oz z#SdZ+=7v6HSZc!Uxh=dju=0qv!k={L!sg5iyG!rdFDpaU^yfU?Q4 z*hy0xzB8PMji7hGVqs%G{v6buQYrP?Wb{G%!8uS4dQFs6Gq zWEH_-?5lioZeu^g?egs&yFBX|?(zI_2lsh;n^fAFt3hj=mdq~E+7Jv%ftzeR%NXq# zD+Dj3?B=NOf$aRdq~f(n{X<^DRA}>ki-I4^yq6m`s(40|3`qmZ)sv#Hk-6<-Hay}?;2j}s4)C+8`NkinJmX3GdCr({KTh_ ztDQVm=ilZ9&NgoNZC#+_88m-YmHh^8$Seb>dJUh>^gHCLGPsENRSg>CTMVjS-|BkK zNuA=>@PDC~`J|MuD(y_}%&$wnd(4{X+xU3WoM}%Q?;2h*SiS0W!(PxF`=zs0EFV6q zXqUI^_=nDA%;B!tzuUF@oy!Bq(9$wc88La?DnB;4mgxt<1DPgzek|`IL)$?ubrs&7 z&W*47CYWe{XPXBaoc<|eHSM3*q-uuyY~SAIO*B!z%@FTj6f&uISMriX)2%Z<90m=Z zzfAjU{NbL;OTNf?D{p_5XOg)+XVKBX1JaGLt6zNrk2eN{rW@_xc?RCk<2gws^PC>b zJgcpDe{2WWaEI5es$-dR=dNPrH9pTxRiK+nEK78JJvW(uuub?3Iy+V6K;D5!&wF!@ z^gg}hds}|T3eY(}ch}f9H1AeUTeRvQiw&QJz>a;E?%dDMAGo~w)zi>Y=kgvE&tK8? zrIKf=X9t68^hchf!L_@(v%>eY%nJ!!4$2Qpp3dHt^7ZWj z@PP)PCgR$7rt_<`%t43BoOPVUV9#U*3PWviX6aDy8nV1uv-?ahPP!xZLy1qu`*Dse zoAjf)St;LF@=u?{c8|YiH^`U1uX{bez3!W_a@8-U4XPjJz7sn;+n+Jo5|l??tXOrp zLAHS#Gy(@I?R|GmJ1Epz4az^0Ov+7f9QqLtPC#Y{K!+XNwK12?PEy^;U!YSk{hgR+ z_p99pyjQ)N@=hRALS?6Z^Fjsv#S>LBEABGbtXmF9s@P&_Do}t_uAxLe!?g8>ipHOX7aT4 zO)vePam|nU-CIz}w|MQUI_{kQ^L5~;lwzCC_?!7QC>u>OsbBSq>j5*!r@6il4uIw< z&iWporQsRI_)oaPue^K7!UE9`VhY&bWe&wpq;KKe`;H2G5`&q(X zX_3zPF2Ua)CSE)>zRKo5lyXsZa15D`H7s6t2YlgH<&Z=ZQ@&>&-i`iDrZm=IP(waM2T|;j)GbmpkwJK+-K-t zyDAo3Iz(B7e$9Tc;~k&p=510RUcKY+tUvF2d=`i2y8{ol9RO8hQd##IzpY)BU*7J~ zt$Q-)!SMraAcHb@>alHGze*l79X2UfGRO9t?ePygrW`DLTyBx013K8UsQLj%!g6Q{ zcr1dkomqe7s?)nc7bK`TLWhpd-uimr+2RT@KdJOQt7|vBHwk_)m9dz%rRF=cpKp=N zq}!#(J-Sz}T6Zw__#~CyuG6nt34Xz{I<{iyHWuW`|r|2yPQfu6p&I z$4u@$f6VPUpv#jyFIiYIS2%>eeGH2COOIBrTFP4-IGKPmL!_kq3O$nE*VbYtBry%&5lyH%{2|F=f>ThHO! zvtZRe@YecYDm&$yPbbvatASc9m%4U?#thibOLGl`7ID$33{$uCimEa|^V} zA}xpe!44JWpFg*+TDNLdb3^sRqw3r*gV>tymakuR7?iR+|F2%9w{q2S=4yuU63C_S zCP{V7ZvsQD!TIUR`c?mUKqs|bn)7B#O8YwwPi9aodwxoKa2B-v{nFI~(GBJyS3~a_ zUUKr>r2OG1XlBnuTb-$YE$C>GFqcWW5__K4C6u3@@k987--8K(ciVJ5CyDt_@@?!l z-XQ?KVqN9#p6rHl=JhL9rGhJgU)?I(nd^AhfCh=K?c=_)U#4uzt(`9;l2uQ77d(i# zbSRRyLiNLDmHyX#6UDqj=knC71`YR|J*9Wx_~bQLWH%|TdKG=3?7-y4&9jQ#ZZ18L z4VoKl1f{SgGgqvd&v2U|pZSjxc-haA*=0-{B17Lk2Pd!(prcIvK?mwhUfT#dl&a|R z#$z6nm>Zfw=LJp?Zg?IB%Gj4`K(kjbz<$k^XZa@6ep_y`4&y(`3f2v&#phO7%s)5* zbpG}waE-TXlFh7x$ClMY+fA7sf0%CUUu6fHf}gbHrRq(gA9dyJODrw9cZ7$=-j`MK zHEQoO6`Lf(vS-(B=SwcTCLL`1Y94ac^seEhnwe6cEQN2Z0X2lq-Z~iibmJb`E9QHHkCobFR>1MWr-mP#u4l#kuQq$}05q@x3U%YjPqGh` zftLNJ^slm7WbHI7g-v^+0qXt7Oyv}d_>ilWL+)ejX9RvvI}RNd>^{i^)H?}o#xU)=%6isYmd%`+azoY`@_a8$`bBp^`JZA-XZezZ8 z{sF^AP#AhXe#Z4c_kgr)%-&4TYb-+6 zmCSu}Ko?A(d&?(j<{8FZmRP{~M!C_nsypp%&;x0nb49h1Kjw9-sCdre@!ZDf_xjxg zlXU%+tG0vgBs;M%xp$7rc_vWH-P5>4xB371D%Vim*L@S8DV+>FkO!_8&#hwuRmr98 zI?GhN8`n0zZD9A^n|D>pbZ_bb{)Wqq?-}o}TNVEWl)CTkQQ>E~$DRY7>$$}BgL6YZ z=m4#h8!9(hD&#g;FRs7%I{vq8v*PFTOz|bfvs64E>z<4}U|&}5F>5k+Bk$^0UGD@k zFIkkVnK^jJ}Y`(#blt01`bRMLKmi|@R?lDPa?Sz$UkFRHmW6{ZlhMbum z8z0lX;Lz))+j)9dz7H;AoX2m&QP0J1IUcZvem(w9AamKImV*Xoj)AN7)))?(6`<>SjeI8E zVY-p4wwG>S}pE9GBkvk717WS1bM>zM-)j zHq^UMQt|B8KY6#oSyILebdQ8e=8RbGJ=_(gp|Q7Qjddp7;i_Q!Ad|58*&MxkraneH zo|>hr@-jdj*3Swj-%8H88L@P?>!mp{JUIcOr*}Co@qBb)qnp#DT!}ks<)B{EEcX5E zaZ#b}CG8%@Pkr+zsr2@Kmf(?_4=E5oPEHADJA7OklrmL3CzS~MF??IUD!#0pr&}eP z={J);+qKMdl4|=I`Iz~>J4Jd${4Fl}-jdczGbZ!TQTJo~_vpj~foJdi4Zcf|z^Coqce=#B=dWex7Zz|5sYO%n|{O zkG%wqtq8LBsrD{+XG~YSY3;cydCAL=tFDmyKQHas!Cvs_%Gs}=X8N90t5&airI3*P z;P6>X(2T{BlVx%n*bC~}``9Px_1p<^Z{oDaC%{|J^WU-8 zSe;x2Zk|i|hnB{LzU8yw`B7Nj4=QFd7wIH#I9UF8mDQqEtE@95K$9!Z4`dHiowZ#2 zV&8$l1Lv1b^I3BTbpLGHvQ_JtK}WM~af+Lh@)lI|S(L04);C%FN%n#c3fo}cOuJnq+fO;X8J483~tKy5=fW4Ot4aOd;b?a~9*plrAR zR6}J*s6^_YRBzB{o?Z66r?FQ;XXcN>Nw%_f(^N83Y8F^KT;ht9uBa<-G0}X)nkVH3 zomQSS>kk9y6qW_nF1t3W9B23so`iaKb@%F5H$elto>KLm*O=pYZJ0lNk_I>SYOEwd zm;POpHPTt8H?LOiLsY`rXLAa_1wUw5Wd*vBQpH#Q zYd0usO)?RyW3kz^O77W#kMSxy^*_WuurGX2u`rjZ#_HttNq5$RPG0hT4T>@C6xoFT z?>I7rcD#&mRy}FYsLlu~urE!pn0)ZsSoGLrI;N{+{&^E0+Fs@kI;Xry z<)&bTalv~?%l*;`OZf`k5BpZ_+Gm{>;gf4#r`cR@Ht%pu4XX_6o-M1+fsYBU*FGuR zaGwFRM{d?;Z^<0%eOs(uz-{^q9-BCuquR81tvo;6Ky_M_ z!2gL)?t@l^PBO7v^(rMn`++16UpIKtcZVW}hDk1jqiQ$Hth^5?@_zu369o-YnWuFru+sM8NSn2?b@`8kI{_j9$U=yIbdt0_{sqCz&*DW2~F-q(S9hy9j8DD-wc~wv zfUfXcyTP#c5r_hPOWsfpY2&$w1v@+luNq*!xs7?cQ+AnVItboq+F@{4#crNlRQe zDt>5Hc@3JiR>|B1DwD1q5N6mO11=jXEQKqaLTwK;K7OhCQ=Ki{OvXYkcQ(^nn~XN7f5=MM`%DIG;hn!C70e$duG+QGI_-vPB~O9KhAq2YKfkI- z=wG!9bcM?jPte3b_g&dZVK<&0__c5Tv}e<2_icSKDTi|p=(4+GSCl1kZ0oYhJJb%X z1Si>xcjPV1pk;ngXl!_BJ7YOJAB&BP0?5Y2Pi+$9AIu9aZDBrsdis-z2h3mJ8RR{STqbSZm27fN z#%h{M=B76sd+a;UgEFCs$f{STR#~y^&~ASC*c+NJFYlgl@cH)M)vq>yX5=$OR4Qc( zbRIn2@c8w)1L2b`bQC==Db3vV;~A)H^*L$3N_LsM$KxZ;i=uM!SuzN-7S&;80E!kgc_@OA_?<%V$tJb~a zlM?m(Cut!BYMyZCX@2;o(yrnO8X6RSG~*qE=jTV)4r~T_a?+|-c^6tdHtBxgl_{IP zeZ@u z0+})ve^$CqObLBZ@W)o&Q#On(j=x43bSp6eBV!?n`|bjynGgN^=N3R z!UntMhmTiRcY`d;eDinSejaK0pwRF#_TEJ*(v0)juf59)Tz#BDT`dy4C)=<*r@UcF zWpTo!rJ&s55n5`VamM%Vj&iFFUgg~?FaPh6zp)-P%b&4DwUVVE2~-GV73+SOvC3*C zIEO^dQz>VQJNRH)F~1C`nQ-aPPty->512vwUC(HEZ{qu)oACIZ7;o?8Mt8{aUzOg) zDyt24*rd;WC+7J%>HMl+4&^N-uVk#QHF-l8LxAQvcx|?Vj)J-P!fTV+2X@d(4i(R= zV$lyDR{a7Uca;A-3LrsaWpruXYs*_&_g*`uOuyyM5;#Jjpu zR{xpb1ccVV;G3wDDWm$6&{SF&1}#1?$%u;&!~0l z8UBOz-|$_0;rYq%!AVfZYUSOZ2bfpCngi0Vl4&;S4qJuX2KfzT#eJY?<=rgL*v=ro zde!S)$;Uh=?QJ-`+uG#IKIS(e;DaG1nfOgw!x+P|<|63ei8+jSR?Ezq^6bpowkQw% zNw5ShT9I;6X*5>P@DK=<;^ALw_44Pr9=Sw57N(C^VdDK4|q!z8SmRU0KCmqxQb7 z3X|@LRs@!}t7L{s`mkX;~FtG!nkP6YK5CmE@88T{}m`^YiN)phDr*{mDzL zouoqfWV09Uk&l93s~&AuIJ;d%nmL_O8?+K8?8MUp#;aegcqhQSeP#3lJyy^umnxplPcI*Me76d8 zi&^0G6wVJG5AHXvg|r4T7shbc$W#P}R{s2<1eX@4(4a<)_St z51?fFEIah;gLfR6B0FD3a6kNNQJ~}bI6?P;u;;zWDVgOxZP%~#9s^yJq~huPeB*)J z;1=x?(a=!ykgFd6u0VcU@%`ZhfDc`3VZmx?yCJWE)<-^GdwrVsHT zeZ8HNcQLD+-95dW-DB~Ig~?~PUw`~w+f&LtnsK>$Wl4EQ+q8H)uSrX0f4-&i8?;te z#q;yZRr}&YcQem6xWQ3YS`6xoshqtcdBE-fTWD!OXzV3flg2o{JL|2TlAlJ#vFLbS z>RP>ObE7Hf z*zT0+^v-AA#k?f&@r8}gE;s(D_L_7owxPB$Uj=kxtMgMx@Lie4An&;;7&O5*X^Q}; z|52q`pw1?Jxb709oyuU&pw4hR>?&VqX;5fr`IRMJLJtfQroI#FU0beNnFHD=p#1I# zDEYtJ==tuNtYWVayNjv*q&u7yMIfJnHkX>8)Vr%FCAA;iQgqJOEckMT_aCTB8?kCt zYG|oM0sn)G2TnrjVYSQi8~K@MhhAM5`gQF)1;!5|39H|6^lqKn;IDEMv_Ni&;J4BT z{&xi@J-h04pc|Az9$nb@?DRh#K7Q{>YRA_$3Qv-mbwoO1>l$l^Nh-Z9TN}=+-vl*? zR6L_RLQ9=PW#dEnlM5F7S$tsYSaDR|`zz^}_vGd;>Y#Vr2zv2yj`n>PqX8jF`e`77^EVPS{yo=n~ z%+M2`;6VTr5@nVE8~b^y}ew5_k8gyk^)BTCjKV z$WOx$4d7iZla>Tddg6CrC(krvPbv9&mUmI$!I;G7%aYHw*Md%YbxyQ>pzS&Ds_Y`M zx*wBNJU4H(EXbL36+EA{n z@ZO?ejofU*A9i_}ptQDl$*MZ$IXCYrX5L%N{U^G-#f0ll$r{l~DcKLKLE*XZvtYt} z(8QZdH)w}mDyS;TRFUQX;~i?5qUbqkN$1oQ+l2fFmIrcYgS$1n%k!DqnU4SRsVz~t z*>G^%&CuP^CKvC;hn@!=#{=34FJZA@xAUbv*6cfW&tJXt<<6H8+F9>GSM3B;Nfmfa z+FjC~aj`;qm5S%A)v=A`s-V-WJSSaQy6W8eRm~07%>D@mKHzrn>4w7%XIH;+3@zQl zzS#Yobm4=Dzu$a5T>{P9yPfI0%Q#8w$gcyBcPlRehhOBRs}1)L|381PwmmX#`uG3! z`y#p;I&L^*a(M|()Y9r`;1b&)zGi{vl^O9Oy>304(=wF4P0F}3WBnpGR_Ufi99bMm zt`jtx1O*hYXoOl-|Nm!^&b;Qpxija^)SmiW82fzI=Eoa;yIj9(Jpc2~`{v~@^CqhF zuDQ>2e&wqCvi6Kb)tdqq;3Halx7M#%wf|k;1QpLoZmyH&O2{z$sYzH1=}mOM_Ia@Q zfcxrK<#!Ed%~rY1u>4VzLT}sB1OGz5{sdM1#~dexHvVS?t@AW_@3(5z+}+Ac0-v?= ztnE>MbYP>(%f7p^7FH(@=B=Aukq6qBto{0{=f6duiD*wLQBcXTcgn%e*Y&J(?nZ;! z4VjI)sT+LXemo!+TH3*UJo)|l4|cJ=eW4BhYLykB^znGXsyr6IH}58FQ7H2Q-Jg^> zrP9z@I~jC3>7|GWrainrawb`qAI~_rBNMdyw7p!VG7nT1O)~LX^=i_pD(Qmy2Zaa3 z8>OpOgDgC|_&(!%#%*g>)vkW^I&|w6YcFl}lg}#pm%5#w+pu0`XFbT$^I!7UQBNitdEWNZU>qbX=zRPs}v2P;FrcE1xiyI$ot!+r2|YQhiM;ESjxnXHuw?4;(|c7KhdzX?%Qg@{_m&pLbg?vHsxj;In5KsIQ!P zQ58sl=QadY+eJ)-vs3{E;BWNIADJcYSp3O+FzcQcXer35x!ij=cf^OjjSX!Nzsh?zFe>8k zZ|(nEc012nXz%@L6F4{C`3TC5XR;1B-W9y0QS>6Bc%wSxjyRVJnF6m#?d9zmOW%U_ z8ctHXq;_EYq&4?J$EU0Gc1u~TTQ!eAhe755?_pKI}&L*6`wZ0mZW|wq+(f(Jk`eX0iz^sSU zl6z-gZO~V_xd+t975w`79fK!#mh2xpzhBHNKRINd^_yhecowuXP55Q;f$r6>PQ4R2 z8#76^0hHnP-zaaE4hqu8Puve^ zgDS$v!`H9#$#6eVy~}vX>xR^iBOf*xc}_A32{kvgnB#ouNt8UeCiMDqEMW82YEW8z zl*{@@(Q7E5SpX6WDIP+O55`X8(wOy3&{YHoN~ z@mJVys11D^6e_=B)%`N}%o3GI;flKQ_AQg6mGW-ql5EdDmT#bzw`cI{Ug(l~l}ss> zNbU-w4>1om9?0733JTgizZ5@cKG+;u>RH}%%zM&qMsbGK<=Z_zzo-Fi38(`VuXiWe zv>g1-GfC}s5a_Jx&DJijo-Ip0drS}1m3XyLuE1r|ch!$>+XN@3Sc8vYm}GMG-i#-r zphCp+lF5oyt5?4=4*lwqP|G&^ejn4i_qw3&#IrXx5B`ESd0bfatAY9Wti^u|A4E)k zZg(Kj^Uq#g&r1&s_&g`)i#~V?Dgp{FZ%orU8PA;m^4$a#-@T7PSB|jWRlKZs^5Fqv zQ0}>OCHmBZuMZ!B1_?bcnRsoI`{43m<_<k$~$EiyJsJ>+||2^ zx)bZ|25jcs9+R%T6?(8Uv^1yu z#1^kjrXP&i)U7-xsg&-PgDgb`^)-DrtCX|PJNCf#=-!4&I2As`ATQuAE$$d^TcIJQF{tj>>%D z_8`Aud-bOekGwx=g4f=wcy2FX-H;wS7j)s#Bo)p{cbaFjPxyXB`h%+Hq%AwvG4`?9 zolm&%W7RV`-xVtQEdS!m+qWE8$0`>YY7ffKE4?SlGh3IIdqj!sXL}bPYF^sz5i4VL ztw&|2ae-x?@f4NbdCHB*d#HOv8RvzD+P~nN$>wRt{pLPsX-kQ99pjs43r#@D zG{b9?S~KI5zY=$5?61q8sNy;4*d1N=-u)q=;bz}6xz+(JU<}%)J?nkQ)wsKYLE_u5Wi2xUb!J}jcr5mK?%+YS_JAhDI>&J4`Rw1=-#uKg(d|g`ZssLy>-~xx zKtUZTg>ld;SUbccIp+dTF^7AMW_Do$2ADF;2|%y^6a2hc^0lTYkI9s9i7k?Dm*<)vKAIr4gZj_wDqKI##V=ves?} z_{y6}Vl$nOU;0v+2R=VtR>ta@k7bFDr<8g$<9+W<_2nm)cx>YOunttTE{UwFoirWN z*`Bp`)vk&iJKsg}uuYKX|07&bmOoR)bCTE%)dR;Hmp^t(?%kmB8hk>Z?=`l4lb*Z- z&RSa9a9*vle$v(5$!Z6@8|Q*YN1r{IKY2%{ z11MgSLrZf*Yxk~-iwm92IGcGrOCRgH_iI6i%-L9QSJ-bb-;fx(cg3oG5uxGc<(}nF z1S|O0ExTRY=-l4TqvAP>?RpuzN7l#Xp4VRVO%R)X|3&7qYoK(J*%!w*XU3DdyNZvq zDzskSFE96)q;mG+ssj%}2SbB0er8?B)yUAV`&QkWeem}Te|Ec`=n1Nxla3wjJy70o zogq5p>N8LaOEx;x{L3;=<8LS4F=VpXFjgdkBC-1jtH-61TMQLtKYfXx%0fMcNIM^*+g*d5v>Rgy?aI0m~WDe+z&1A8FEW1KgfeJRxKoVv`$aq++b_Y zulSyE%{3`i&q*e+=NR`f%CO3SmOFg+_^fntZiDuR-`trqPlNU^oB>vH}Zm(^-X$q@%ZXjuHd?4 zl34tt-HiQGcHdaGdeM+&@tL`#NahHRmcivmhKNctdg?_#JZbsk~70}cOXd}TqakZb7 zp?e`CiQ#FA?71C+gfGoE`}Rh zz<1k=&2l~-wNRy=3$(av(h}Bh_d#Qv%kL`Ao%DviMiR1RdkcpjXv!1ZScROt#q@^B zrs<%-C*^|Otty_ge8QR4nT|6Z54-Al*7ni~k4;?OsMj~nzKNheQI$=oHw zX|r_IH1M3DrtX=lFa`jL$7~T^IWWX@~@;!j{eKO z+SY^B1@~6yc}i7#9(o}67_`xB>+gQ>v4Bw--~_!#t^#~zO!tfX4fg9-W$$tp^PZ&6 zJfHa*cy(abhi9v*oI%-t(vpv6cPhR)Jh*tk?!deQQFDDKsd$z@uz4`!;o}{ve%*g2 zm#L#tDOBJBx=%AMI8@Jel1lGhmG4Y?uii~CF_Mc3{eM+fQFlq`E@l(4OR@@{my~`h zKREL6-=Md__=DO56*g%W zRnJMgVop4$eHd<3(Ywhr^lxEk?YYL}%&={*_$C}XVXs!{0&?%?2X=QEC%K*S-p#zE z_1UuIwE>f^GycDESJ5-5`E;Xr=+)`FoW%|mygnA)*!*#Vpy#9|+Kug@SHUM~c}`Lb zo>XmgqwbHy1I`0(YeDB2U5aIx!yv<5BW|&FPh>z;rsqG_e1qv}kDU^Zui6DZGi;~V zCi#LC&~*-lsv81BV=u}o>57=kW~x-Ah*B`O(%V5RWsw2Q|`G-t2Ek z54&o4S5X_XUU)WmO;hgzeP;j9Y&M|IQn%*GSqJQ zF7MsMWlod+v%LeIX)xd~zWuxWgIWgARks zWQpOi*}kgpHE6AKIomz9KazRo(^NcnDX(9%>N}`WtKvB;&hr{mS*k(9AC3g^gss;! zJSSawtMgzt4_ohkLr(TI@5gGM4cVZLl1mIj4oqGJntkw`l%{?1dqX?ut~bl-kgFf> z3SM$5coCsJ*IrJ4wY;`|6VovT~0}CWodO?NF!_DKIH0GTnE=t0??|e}g@{+1pnWR6J)f+-Lf>a@A~5n|G4R z%RZGz=^KnUdJhVGdUs$KC=_0Pi(&mU<)GSQ;fD7iS5^0VPD)ccnaA_5UOV&Yp2e%; zZp$iqUh;uv`y~^cjS>V&W1IIvRjPJ(H4eyISPxyE; zbn6y#&r2~D1xjaUGtCPLbq8$=+M?unkL6D+DEXD@ZHNrLdqY;~ta^LjRwqxnGY?99 zJtvu%i!-Y;*)#ev*YW+yO5L~9W0Tzm?q=y@Wz2F+Yc_sb2|9-2ToBvszJAcqmFJ`- zQzxcyvt6HD&MtQTo>Yn! z9RBe78uK+tyLZevb~SfWCswO^PFi-e^}sjKz33gF>h}67RW$f>6-&FCu zG$Yb1Vb7b7k5}zlVD5Rz$?KEV19{N(ZJ(SIzJnH3xlCGedr}JT10(RtJGWcrtFz`K zoT64x3UbOM70;l>`OMYfSA9WA*>lpCfJt}SXSYu%XD(yCmeo5+W#xTe9x<~y$Idbz zyT5*wchqVX-CZj0S>iw!OwA|{0Uwg@xl7lxjJ*#u75a(m#;#T8UhqwP25z*}hL-wH z(w5ALm;&;I=Pb8s#`Q;e*+BD3Y7wDx`RDM7mo>2+c zne3VCnC95j%!vxUz9r04O7!~+&~;telVsu{ab6-VcT-j&Q-|e8@Pkm$dho)_8`D%y zu5UOC%Jm={r0#OO2@O>TjVh^lKGr+=>cFk-Kd$(Omb!-br{(?Fe|H-X+k|q7x*CHG zY3b8dJc|n?3$)Dn#pmA8=^X6bI{Sq}SI%hs&A4>GF6+p`a{lv%8f zJtqP@JoWkD!sN3alY|@F!Od;YNh+q+;y3m|ZseS#(%Yos-N4)6+t}OK+u+;Q&nuC0 zBvw3v=}zg7k9ylbU%q?bf!pI~JH5mWmEUC^*s!fXS^s$3!HY(JYBz{}aA2D~p`1ys zZT15d&&3am9)usrJa9h$_Wsp76vYVL#{$#JL=ABEct&%-Z?TbfNFgpH&Z* z9oXBrn{l*8>|X!3p5L43rw4{>-Q%X?0tXzz)m@@6@imdeA%uqzaDq-y4R%( zpI5)Sd{^*NO~H!@<4I3WAD9daO1A^zt6#kYXU z)`Izm>WA)!pEt|MN%49z}kieX9sAl0%&B@WzULLcA)FdCaLHyQMt|d+hE7U0`~{| z);by&TNW67nEddu$^#zuiSF)`t~TiI_!{m9&Y^GaNJ-=-{u?Z(hByzXL%6uz<%|sU2S~6Ggbcc*(?XS zOEcj#Xz{f`W~yb$8cEMjVh`5C!|up?P+bAK#1y>!p(s5;pUqs*PVUBz?HTuC82?N- z=-YXpwJsv``ggU=%EP|5ZX4a`*rU5ab%SWZ`*V7pL9?YBHcRq||L6Ll`hlBmcDMcu zp2;SAC)G?ocwp+1*3Z!i?VxiLTxO+t${k5ay!p9tx9M}8_uqNgChTXbS-R?6_PdKL zUPbB;k`h3xPm-U%4J|DwZ`ra5JdR??Q2{$_@e;>R!wuP?cR>gDPf|G>I;pqeIio*Y z8RN7sV!B=0k~|9ayg#Bs=ia}w*m^=r?1O&?(heUt<1tgt=UsDkhMH$or8&cMrgYu! z7Q7aVSLNm8OkQF?;fckAK+w7C7J@e}e}Ay#=+u4AcyRH6 z)?U}OTo$Z9vnX%$eq5fz zMmA#k_KcLdY&Cp8azg)ZvUV$;oWje-eDd@*<@|kjip^ELFa6oc_(Psey8FCjoz3jo z?cL|K^8+TEC{FsL{-FbOae@x3Tzu&9l6H^DIwu(qNH_jAU4CZ!?1tn9XUQCgeam*b zC##&aI#78a7SsY+yFUCXXhv}A!waC|u({zss7nEA)k!&~Gv0uA7(w=&!GP*FOp?C(|@*_4Xe(*>bv;D z`_q5M|5xrRX0Fj?HCw%^c$f2%ouJ{$Nl)e-I0~9@1-Vc8m2&7;@Z6?K=1kD~DxN)D zH+ER2--%_cnRW2>zu;ZTTRu!$!+wW-hk5hDCr{_!7vHYxJ&Wf$({p2skoQfuE9%k*PFWGn&@ju``pu9U;>}Jq|)d$!cl21EI-EC80^kd!z z+8g=pUQB5Ii@piZPAyD6d*Z{<%b`DxtpwLtmvS`|?nBOdRq?!>TXFfpe17@z{Btv1 z?z8eS_I)~b9(FA5T<`dEkuleWS=e|+!bxa6|3|i?)#)#De)oi!Na?{ zkK92gu-|wm;JaNVyYO}6ldlpyO6!@|oJ$b?HS56Kw)5f7pCvxsZM0+Mr*((t=iRj5 zerD3c^E=OI9oY4GN}Y1SQ=R$o+;3R#l+Tk|VqGNJe7`tc|NEa$4?o{$4&Tt^_-Iws zt`|=yEvcLgDfcdk{H_VL-E8e7WzHva{*)+BTmSv15B)EzpHyeypE=!Rejbb2O3)Rb zOF;8P#?zkUH|z%uk3c*y9kg)96Z|0x^fr>!%hR{^85Rb}c`}K&IyIhu7=U3=C={3(kJ{ zx%6=Vb)D+C(Ca#f_IImf@~GStv{<>@c~((@hXZuf6ss+U&yaoP_Ue546~v_fKDY zR^`z}~igc81#w{H$^(<@u%@e4Bqhwy1l4`c+n+IJ27Fe?F%k z-g(-7|Ez-x^zPXF*!Ji1Y6+f?_dflU?UZTbIw_NuI#*F7$INb~XEXOEbFuxx)d z|9t)5clJvB`C0GIe5|-sw0Xb#G+VvscgLqQi8Jq)wA0hbeG^JfcDrwa8m?x0JgRxQtG(7k3UHO5*H={)f@9}c@FZV}9P>J#^6s!(`i;!1Ua^C7 z%wx5ayAJU2uyswh-IiiduqP_{R?;pxi{^u6=l?VLN!QuzUNx<(&3CrSafa&hau242 z|EsLlfF|BO=P}5zF4>*xbeE+@;>Ye)zjDia!u%#NH}-=9vf?_U^sn!2$2y%sbJx!q zX2Xw*?PQXR23>D5QN{C8h36*|HtC}G*X}N=EEfJC_TVgEo5v)TyW3QUmGf{bCSJrdTF@_(}SXfe?EWpB4oP(EjM98I}H_e?eF6dQNhSo|M~oo{9fW-o>Whsvo|r`V|Rs z-lZh3qWlM(hmR*W?EWI=+j_e3J;QMZ_mHdqzdY;NuHw(Q@5)`pmtpq;L)X9Uo3Kl@ zQt(6mUD@C_s}G!B{p!s-fwd8n#2MN_d-JSrhhO#It-NF=Xfk}#ll2Ytpdm7Fk!tJ> zIvoU(K%{&<`55e2)?B^2$hBDX!y0IV0CZjv>y5^P4IhOYV;i@)y)=1H@W42<)UEu? z4oNw&(ya3KCDED*`&a#nD(|?WdNNj0rl|bLe8%$E zc@s@aW1<#r1m(J;!M{Mqb3Ci#mtmj7v`5I_Z@P-^y2%agzn(2p@tl;WdD4oib>EZjqBd zH-hrmFJ^b<-_y*GXP@GE|Ng(`zJF4t<_z!I{;dO-%MO#u8P>miH^Jm8XauOt-9!5k zI5}tWY&-nZw-dDPER^v-rwp4+Y-sx3d*W)5q7}vk1{+R2dg3{0*`2ANb>@4(ZKbbX zpHv2mPyFO?fvVbNZ9Y1Is~ae6N1k)yun;mxva=h}b;s zNlC(KaFvm1xu4OF`A>G}-z>BL36u6p%(=Dqp;L?Jq%AV~a^90vd^f6iH*9BG&w6Rj z;)|d456ri`q3AiuEpU=7;vuczLj#)Oo*EJa_5(OXqC`O;Aqp zEb@Oa`@lhqf;G3lEkE#k(vRQHlT@~PZ;G09T=l2JB;&@*jpdB}#~L4JZnXR$_u!7o zd!J32=DUdK<<3qhyllZs#SgpTh4l&YBq77|yUj36e`4X2zBVd@4pYd8 zkOfaMDuLEE`Mu|xpyGMy%5TdL?g!XHOC3UGcW=5K-?qHXmbJpN;H`~`*Q65nd-Fki zK0PO?=+0B&PuftLvi_Y|@1E(*`JkhtJuhpYJm$%lw&Cfwj0fi%&sMFzk`w#j>VZhl zKA%n5KHy4Z2vfKa9Whw)#rImnzmWIbC<{SDP-&ogXfx%cc_Rd+>p(~L!xgjm{mj%y_O{?bZn8AFU0W=dX%VHz@<8IQwTa%Wo+-UV-9wf|q zRI*hpMJn|7>95`y$!cNJX@1Oe(vnKknzg%fR)5rQXfAvZQT$!vLA&R^nJLHL&2aq! zO2^t;yMuE?tpH2Sn_k~6S)K1 z8^lYtXS`Xeb z1)MK^mlR9Jh}sXM@VVBKBaSrX;U z`|MPkr6;LmGOFCvJh|||`i5}k@?5`5Poh|VC_m^?VONjbYn{P3_nNFi=COZvC!KdG zFZnqsB|2gGJ3ieRcN>H!*C?KB-VNGo<0}y}yB>7t`q>HX9T_R0Rh(8kL5oB^g`avo zNO-^qT2L5Te&N%qtjy58{RcmMw7hFOX-VfM&JWYULxxe6hovL-^XJ^WyQs6+{z13r zHPF5!&&P@wv2g;c?*f*%#T-z^B7o}$in{h2)IYOT#5o~X$2ET8xU6lCh4Ery=6B;r}O ztz5Mo+>6!@3cb&|jh*j(-b5AODb4NDA3^o&vPo~4W!QK0hHYUUQzNb{4~ z4VxR+8&vQrmfjSyusR94_Ni}Xx;mqB`HXE#ZkN_SUC~_I2RlQz#)Gnqv2XH8xbU8VM6 zv*d^7b!OEo{t2A#0<>5%8IVvoz3C!ZYdU)= zmvnc&j3^Fj&ipzbG+(8X`6h;6hUJYhC%ANA`%v(pwqd!I=cKS}yC+wi^_!%U$-}c< zV~;d@-_{@382J2)`a!k%74?&5o_wt57~-0kk4wq_Ho8&uXVSX~l?6rR4ND@U#eabJ z5iGH+swr=9JNE5Bd*kNGdvs6M?rIkEp5$&kBen2B#HA$_j^zzoZ1NMXociGjx@K+C zu~Vu%ZN2yHZH}ZRgck#+Cjvp?Q zKvM-vj!sSatrE}hulu0yO7B^dm+Xw-|4}f>dGeaOvYUnWvxm%|Ckc!dFf6pi_L;n>p*v8d0vu-oWSt%uC7o)K4N=&F?dvH*BmdbMG^J`YkFKs__tzhv3(6tt`CQCQEhh6=?%X!I6uT8uL zW%co^j#eI6ctCyCtLb+QwX-c;{+6)a=eONq={`y9lw4?OO?k_fp5PBrlJhQsR%p%q zVe+9PQ^JC6#j5Vc+Qx9E>!2CeW0!v&hzB1B@RDCOlKqDipG5mRj6nm zKaWqRRKCCNo3&OYTdh*EfbD}NsCd6Q@3ySM-AS|iOw$iveLJ1G{2l1Dv`Zel1b@t4 zWwpe5iT9+rjrHtu7w#%~N?BiLhzC>#tOL)Ob_DDT29&$QOA8}`Kp+*B@-VkOFkPJs+;c73S{rA6W-~S(PoG}1cazF(X88o88=AaVy&hax^(z9@5sWhT+{QAGk~LqaJh3}48$7~lB4N++E->`ovprm% zWr>@<{^+}_J88+q9UE4?y9bJjEh{FyIgs+;hOUxS^LfVKp;z@m+h#A#^4=u)f#bo< z9Vfki`P#F|1%$qT$G6kWTb%8W0O;W5OI15LEEcT_D{J>yJxS%j`3B$J(OUxc9ZO;O zY4l+A0rP49%I~x63k$X1zwG~EmD>#af8CVaVY%V>rSrNCZ2acV!oV28Hhd1b!X{SjlnHMbz z)=aFb0*^ROQdxWN(t{Hl4`d$5J8O9CcD!#ur!(xG8xxvd;_k6} zQi}S6*LP(vY5kdWa>AYbTWrt0RWf63m#m7rE324$L3Tmm>Q(O<{@(+whFwy2pXJ?~ z10P?7UOlzSN_YqJzUk9c*3R4?w`+?NXl>^vlY&2vG8Wf<*r=Wa?etc8c}vxjXNO1y zGoOt2^)%KGk5taT;EU|_-o>n<+nugzxxw0L7n}Jzz6t9N9y_pY|5woQduw;Im#}+0 zxUg~B@#CQFW0S7D+TXZ4>}vXM=VMD&*`0i{?X@`Q99*`1`v;IkYpxqj3jQP}tbZnw z8Joj22i$fF(>>|ud5+l*bc2U-?}^KkY|1m8e+XEX=$viuZTLJX=bo(6+9v1YlT>uu zcB|doXYEw*^fUu4z4x3| z?zxTe9`l_=yIrIB-Bmt5Qu3U{rgE}NMV;|Kn+=P3z31yk{*BYsBp(&8=acpR{P@{{ z;@!$iLT{`DwX@D1aoaJ+iP_)?f4qrZp4BuJ&nO@5#`dtQ?7N+hty^{POiK4tcTj!a zTq^wFBB&_!{H$~G+JWB%kLNr){Q1rq70*isDwZNYOg=CrynZH=`Nogsoa}=KAL|+J zzv`Q?CFh^P$-TRjm)zgv3##yD&15fS_i+CGz*RXUG@fA}_-@1{GkH`+Nt~O!erg)ph)+e zWD=Yne)aP%R?Pqqc`sEpF%Vi<AB zC*RouvaoV`%4U`GiJM-20UeyLWNCR)c(*dcs#o_L)|Z!iM3tqh++1$$#AF8E8e_b* zeA3?C%3F4T{g^J(0$T7>9?rzSX4U)BcAZJ9s*ESM2kX7bo2bHjOn7q6bx?6;!ak25 zw552~rrw7ApnhuRJl$OLfBO%dJkWO5@{*F3@=4|0%G3Thmp3d)-LCoJmI`0Zs@q+l z05mD)f5Ug-5h!;gWnRAP3h9QfvR}KZd$+P!U}!D(4)zb~2lPRE!vC&gwpj?O+%nHh zvf%|!D@?L2oWgI5F>Rpo3pGod;%7eh5^`bsz6W?9F^YD>aX5HWUD()rj84Dpc z-DI`cVeQm?a$&OW^6#bWpc9R>{xMgCl((p@dKG+t@xV?{oe&nyRDVlW(Q}fCnP(qU z+?~6MrWR(9(ycdk(%Q*$m}?|XJGt<{&mE#J-I>e}z>6r4>72aVc)CHj;Dxi)Drx5D>Ni(xe7Lta z-FwzLX(s)*eHRYxS_CR(wp!?Q-p|c?21+T#w?Su0*HjjU)-JJjS{)WD&h(q{{ky!0 zDqC+bRn&kpgM`XW*&Pfww(NGzDyf+y4GLZpGfy+mPcjeY`n2_`@ZNrS;J(Sc_ZK#r z+}35=_#ma`nxE9<<7$=*U%vUy z9Bw*SH`6Tc&C>;Z92wO^uKMqC-cn^+s8+!6 zVJ4^#=99}i=ZdVNZoA5CwVU6z*WGc`^o-K?WSYbN=H^``-XqGBb3paPB?*;EjSrp) zpu>M&KWX*MGkxv6`c=D+p7sQj{p*lo^`eEEF;KzU<6^L?g$8^3&3ec&DXb#Cf^b0trywJQFs z^KRZ%?nE}zn*Cy zbIsiN|FR!SA8;Rd8v1pywAr|7 z-gVi9M<+bVd2j?Yn0e({$EsfmK4ycRo2xgp#@ z^36n*v-_8aPvtjQdG=E7ziK9SW_HHyDMlH0HoCq)exROVI`e#1J!ZS;(Dqxd+9)p;ElzgR#HZt>P@j7%mvyB`D)Ql<;lDDPyR1Ic|Y?%(I4s$lH%g8SGmnx&fdrTjxFa(^p+^?Mt|n_EOGIn z|F7Lq&QzH6hG!1H%$>VRnOXm&cZ7!4R)(>wS@Kt$SaWXjl~Q(ev+eu4GC#d+y?c42N-fdD44(g|w?{+rP^UUM0 zX*l`*=53>%++(j_8T;57*OrFX?zVOd>Q`xJ$Y)r0|E^NzD?K*8m8+(1w$M3Q+hBhF zk&frvFe6EZohz(eK7)>&>j#ZOED1{wznZ*Dd5eUM)wK|nowAepUxJ2>Ie*ov_a@&x zCS41dq|Q`-_pV~^k@?|QGw%vY?NgCvYG+nwIL@G5)jjR*)dQ{vb{=32Eln-%Un1#Q z#8e=5`2H2W%%7kJ`JAJUo@VU(m~-s9KdWs0t)DP|)i1~Lj%UG>q#5I1zMG)pxpp7- zn~>1(()NshmL+ReMo6Xo&?;yKpH#MXV$!Fl$J2K^o78%KV~^tnHAN?Fd9%mG<+bWb z-v)bDxkmoOe@}%TU~dd($X~lE{>w9uN$Wf(HP7VfwKP#$J5!%&_jG>V7g8!WWh+EJ z1SA}PHYf6@)CZ*pb5{LIEbm$J(qoh62O+ij^&U|=_RQbbtktDw%b6Y)>lXExlUhwJCqnb*6X*xo+m;`!iV!%pa5vq^<+W}i-O$8UBSi)mt4 zpB=cb$D4Qd(CxI6z9oqkb|;y4DVxlnrq}x$Jjs9M9jF#zYwt7l&3_A?ijcBiZ0)c) z6m%GcrVm@jzH4`tJ)_JR<*v&v{OGZ%cv5jgJ)7K#lmlVcbF3eHJdi%AM(1Rq=b!&G zRZP7%F@DfeYfhSU?OgLNW)mJyGmoN@N%bsxta3~_H|AW;^nSqd;FHRFuT9bA6PA3P z{=`6S|6{%!zlm2~`yE(gHgTWqjw-iwPpP))YB!f!I~Bj~1~o5N-mR_mbKU&l!p3DU z4<)#l-i~et!^p$qg;*ulKv-y zgS)IGDwsdyd;YUHnReH4(v}1Bjy(y|^~`?%&u-498`Ii)} z9CWT-*=^?b5_d@AT)ArXj5}9ALq&*V_{FKMY- z&O5o`<77tm)a&>24sbW>tN+}r5?#vfc}dB$h~)!lCH#>xhIf}_7v7API$$mJgQq}l zgM0C%3%M+FIQ~>mdainNowdiMS)Q9LCwm{B*F1fl=dZ1=nbOa^Si=p9?1vWM=FGE8 z%Rz1OOA0dAWf%OM4mxU0#=A)5!!}S!s}j4|d-baW?>KnfC&kXRNqOO$G07xPJREeY ztJE}=-3<>cz z@D$Y6$XBoxgn`a#P|mzMDW?DAhWYa+dqz!V;#;-K-{mL7~9iSGp=k*t=cNwLot@`Evpg?UlfBns9 zWzQ)7?f#FZX)#VnX;$fHwd-a+zIlV}WX3*ywV#Joq(Nb5ozqfgtLP_elKpq?u5Ix%2eszo^|MoMzmxD3_I$@u!*gS+rR${+vMe?UY|rP| zHyf+)p07J#yi3`{e$}c5(54N~No)^yykj_P-ri@*z5W$ABWvy5x2o=r?81kuR-I?s z&g#b=2D;7l+CAs#W(--5syme@FKpUfwq0k(Y{q==PX|@1OOJb8vhgTlf3Whd?4>z7 z{mUDs#jDA2{gEyZdf@i@_rAJ;W+PMVO?&dvITchW5`N@TiX%CeitOj@Af63~<=ezJB6m(bvSAqG1 zY*3!qy2-d;`a6!Z_bw$IoZQH7^z*sH;R5vs!JhxB*!T^-F5QW`rSwzkfd0j$PfOpw zW6)i%@|*EL%O0T{8!giVW8^EcCxxpN-Uytvap`&Ie?mX16COX4@qAq5{Gju)&4N|? znw*m^ExN^Ep?@;$uHr1|_u!JQxuEvI>0A?2KH2P7tFlxlx7&kiK$+>`Q{%I;dPA?W zH`F$omu~l%bnVpP-OMJ@o@VKv?q6U2NNls>t?BEw$-&kFbev@FneSV){hfrT)XL(< z*j>s?EK3%vRF}GE{8f#d_+;e)^@iIe-*r~B8&;mL|Nc%OGf?FwONHqN@w>W{++KTn zE~^bZ{WG|(*7I@?2bEk_n%?+RZiAPMbG=3Ap2WpmtaEmZ;rK;%b$plU{?OG(x4)q#&of-Q;-P zert!<>L>Gj{;5@{P3F$OlAit`*7Katqhq0&U6W$OE9^fkcqit$cpGcMrzz(vmpn`uXOdCM~Wlk*PPKUCYi(Nb;)DETW+GAZ%QW3$=6+j&+opKO1K znjgbI)*a5}{r}t>jx&qv^R{?LrFpJ9|726E^R8%>v#rNfZdOL=$A#W!v9nrxeYy!( z{qB;)t}XlY-hk42^9JLB*Y7yas<-!7(0RbWI$Ona zb)ipr!!qrYiU*F*$T@%Y#~X&22~XyzM3)`+xFn!@Q=~%q!F$ilU3?$^p7^11bLz>q z#l1l_&PUefOIIpyW|`|gcfv2O{qZ&f*4j zke0+-?y`3H3_3vI((49oaE*1udKa^aeAc6w2M!M|f%;{pyTT`l-W8nHr_#>!o^jjD zyo*(w1xz1as{AfL?s17>F58>ivWmJ5y@kO~R;W~(e2{$b;hospYu66Eo;2s>{TG*h zc^4I{F&{U7n>W#<+|Q@zu;#vhKM$N=_T$&2w)c#l@9xVkEL^>6J%iqy2`Zip-{0{; z;ww1x{=wN(RXiuPJ&3)_I7>hDtL1~T1DXf)K_@`%&$fQhcULf~&hs6|9^vgX&rY7r zB(83$>A5ReC6i;)9Zt|lMwCK(8GFXpNjWp0Y(22^K-gW|DD8fBJJ4+v0-0;3>An8N zo-oU~agx~eWd}}PuKKv@m*9tQnS1vwxoA;+N?azx@Q2Sn6;Gxc#wXw16`Wr?pSU&am;>kXqh7?XKDZ?gn$U zoqpv#Dy31sY=3S zo!?%lSo?nb8gF>?`ZN>1+YHYuey+H7xf+zQE+y=E8*%#F!sN5JSPxtWFT)qRaeUP) z@wTvN{zOzA_?CMh?XK>uRlk|!*c+T49+mO8c$FKM7 z|FXN*>u1WmW3<_2?X>ut;Dh$Nf|FD-1^V9cUHDV@BEmQ{G@KE%QyX-d@cb8i7yhhX zrM>Evh?=zZz8iOyJ(&{HYcy*0RBm#!_lcjB^I_|M54!4j^Ry=t4-)UnUSf)3l({3j z@W1ZKG|zv06`~tl%loIDopxaMB%77iE>gQx+!@~|eVQ-rIjc2!+1Ep%TZJm#Zi$P( zw8F;zL*l%px?P|Q$w7_xF@?9HaE-mud#60=^WR}7nZ~MaV zOBJ+o-9(h}oX4j_Dt3pJ*E&sVXU=Cd%k`VMCF0$TCsn~Uf5ZJgZdL6)E_OhBQqB$8 zMHj2wL4#pZExZi+o3C&B#Lay+CbU-e|A~nzp0A2B%NxYJL;vnr<;U`lv1adX_eo-N zoR2F{dt!CKx>34p`--D%2aFr9tA13>_UwM3df?k#!AnfLOUoP7Cf%8PGJV(Yvh5kK z{z+Ke|Ni^Z|7lMa9yrawUZ`^RR@;HS%fCJfEw%h`5|oq!ciMhvdB@Rvt-1kn(7J-p z+x!U7kk-|wOF@lRPwp4qpm{tuFMMQBv1F{U-cVZJo%Sr^!6ME4&?#=pCpY@A_0{h4 z4Vs?3?9VU#*`Ho}OZBI#eY93syLHtsxq?E_5<{sLYxR%6S#+iCr-V-DXPW;WG|(Dl zaBs?*u+XoES5otnK}2~A+v9=<@{{lEuy&a=EqYRH1L&BJ zjlq+oOWbuTh5$2*gNl1z>c>&94F~EZfEL$n-{p+ zc4mx8$>eteE1f6ZXOCmgxpG%2^I7d(Q<)x!bO#xiXQ?WoOmb3d&qajp8NYj%ci|O-yM4LsnvH^ zv`Xg5+GT%!J@@(fRkioDrf1%5*@cBGSLr`e;_{qiQrNE|UGAP?XHl}oEcC1Mo|XQS zR5GXi+idOd%h$9}uR#03qjz$iQ3CAhp5-lJ`X|eL^3?9{+3niAP4>e+70@MdmwtH^ z)q)S7`6q5Jdp=;&ZN~p+QZ`ThqP?3zT=nK+YnNHAD(wc67WY6y4RwcYC;7ZJzP0L? z2_)5CjAY!Sc5>QXMX9;l!N(0d-e9v>W9~TN{abDAv`a0tv^3O~-GbpqNO`}?*`3j)>@RMC&MyA{ zj<5IBvjf(XWp2tUd1h;${M+!mq}=0|>}~a%ORbacsakfOG+VSX_x$CU9d?s@k8gj$ zH*r~F=I!6D4bp#Ac&{1;*ZsZDXg}kVWcPxPkM-vSf{- z#a>WLHj}Yt?W%RJ`X+=eU!}*K$3BNG=I$J2&(Eh8K4$dZBwdhJ-tLwu{GbpgYO$4u`24r`YvKF>UcJ<>PU?RK3MmMr~XgXa8?P6CQT9r^VYPKYUZ!{+4gzlI+P(+qT{}B=Mvl$B zmDVm%@}Aq$j0)Ze>|L_aB5js_T|2~J*1YltId4%UjFP`5J>`zCgm{fk=jvQ-mS8Bsca+jvYKPR8_xUwDc|E#dsqF64E@VFdF}D|7w;x6nOJ-xJ>nk& zDBl-nx~nxGzg^buacRBEO=0j>C(})u8=}jP*m!&rc`)T2-`TnDYCA#AnrZX+Wk54% zuU}ldT=Q}1QCh90YhIjG#aG|Quit01VnU1e>1^w|eJpBvtveIVocxHt_o zNt1D7RhDX=^)wYv;omAdE6ZDsonDyCdv+&u%;?#LV|N)Z6|Gt|KkVw`Mr+3Sckd=H z5iEL9VKI+2X1%pj@%uiXHo;4>N|_IBg+LQxm!b+^RM@IiO2qA1`|_4(geOH|@sEj;K|l>T6<&$eRkOEcb1O<62C=X277Q<8I( zGi%?+NDf&$2{gO= z_{oKhY|B^GolEfsojf(I|FF)i>d>!-3GsKTbUd?@j;qWrch}jZ63y8E^4*0)oFB?P z`QGwP+!8TKhOgpfqlw>c^^ZH7woZ5=@SxWsVfoElvrirkyOf|)`|V@do(i{1H9N2N zoU>$JAvsqyGscWH?%h)7sNU<~vAKfMtvjOWW*agOodW^k*u&!S{a>j&xR{(AWz zUgiBNyb%r3W$rpV+!=3|xo0Tm^6XJP2|5Ey%z098!{!-#{!cKmo6WSl#J%U}CAahD z51(&*^>Mmq*}J|843lzBq4sRN^aBkvmCc z$J2fYUpLZOYCo>P&?p9XG zoL)0;N#RZ5inQ{Uww0^)vFw2+!-;nprR3ZDOiS{a>@I@mvDwX7%HH%%*rk(e zYbUtF`a?V@I|%SGn0gciKUjBH_ELVu!%NN&Cv90Xt!}%`qTSAyHWj@15v5Ye^uSe5 zYSP_C`*(d89(isO{$K{aDtFeRxs!5C4u8JKT2t2c+*4}4y2{Sv@)ow&Zy=R;`R7Gm zYjxZEOfy15cf5_5q>{Pw&IW6TS7D*=S-&x!d!09N31h*F9mhL=>|E29D*S-gbK6_K zi6-`wT25Z`|8MO-i@&;rohNkCZf4Ll|LPB4RN`D#&Gg))S-`jfR6qFMY&-Lz{O+aC zlb4@+W#hSc3*(1VD$%9w858bt)__)YsBFE>WwFKD>G31+zfyZv?Go6r0hC2E`F<>D zX9>B=zv@-u0ow*pDhN_;?@QM?$@SpJJHAZOI)01%Opky`(+(eQXx^o)qB}cwFXR7m z)t#Cjs??g*FI~vtwb^U!#QikC@pg&3$EBV-8ONT_?Z4fp8oN8T@p-9xM#ZXES`XfX zS}m6p?yRL(X#$%8C8zF-uZh6<=F=TqIdS!dyo{wDHs%J8uuO9S1-&`J^u>2jz zODP%7Kau4vOFl;5TJ=awEpuNE$DJkCNgmV8s`fRWOjvFbqONvxwYAe{{ga#rKo>`5 zww29!nh5I3e$zQW#l)-Muju?c4&FB1e#P=2-~l&iSaRq03-1^*P3KL0GT|ME=i=`sds3Wdx$iD#=Q-2e5MAo-v3jH8 zhbHheVD)4B^hsjp#dy>AF>aUjj@mn2{pLbzr^7*^@vNW|qEtNJ*6E+jyDKQg-`;1c zR?k=iDTt1MPPc7awaSj`4f`BEaHDebqiNqIy^3TXta!(lX&T1xT(vNH{*uy3Dd7)3 zo|T-mEcyDohJ_xV62ONKNbM?~w7b+j!%p?)q>}=7((dX`GD$X;w~D(}R`Y7j`KcyW z)(q+8?imx}Zh|YOhkADz!A_70{i^)nC8${PR4zNMB3Q6vw=7H6m_D1%B{h3G<9yKK8&9c~z74j! zl$R`Ay~=w=4x2sekJREm72nCu$2Wi7@Qxu<*GB8)#Jhr%j;Wr^oe{H1G1KntE!hjY zC)0e)s`9ShRa(2WwlR6PvPt|T8$JureLS<2h(_Zinhl&4S(U z_%e0(>YU`eD>%vR=}w1T$|}BR*WG1g{t)!1CiL-F9(lFPMV_1VKU}{nJL$@b)E5;e ze;#<+``lZqJ-4BF@{h>5b(bqaqX8@Ln)%G@oEmm|VREluXeL8WOCEwojO#m(B zJDlS2CKJ4JD064!%G+;jc-l9Z*jY0?FLC#fYFGKr$oKNy1e4I+W$YzhMfPg%UoYKw zi@BnryyckwNwWjdpv9FcD=$uqW!Klut<1XqbCTQB?~U%I?im4gOf`!^Mg3OmMb-|F zA6(dY>{SZ16Rcd4QQlx;<{jNXpH+sTX3uW-Nz*Qd-ev4gcq#Vt@owuSr6nbk*h}3# zq_(L@GcGSJ_n5Wowc5>9){C4cy=K&Z^=`tngYl}Mk>|%-zepZG-FP2VfTc;7%f*G} zv+BLenP4JSKl#Y_Jf?roA9Za9?Lb*lR{oOjf`vuNn!r`7)-(BoH+f4f{5uJ>7N$2a zG?wj-oQ2>I(24uH?eELkbvm3IKnd>k!!;__OwreozHiRrI35tVSX{dAsfhBYCe$TeLjaHBUd{ z)&1nyUB=DRo-`f+4b`NU6ixC4)u^7|So~hUo3Nzuhikb*XsraOOueKbbMVO}2hInJ z4_pTg{|2q@1r?koHGHz!TR@Wy_AT`{?<#ptGBIi|XZJ`B4~=JgcPQoc$NpKxDw(mh z>#Y+UW$wx<=r-?WyCw6eE+GnT5{Hr~k*JxksCVRiM|r7E)-)-%dP zOkdKu&}RLQ=Lb%K%BljlNwZ7bSKPm}`FlRN`T6$U4cP?`i(f=64h#LyH3z(m)x?NT z*8B7VwR5a_e0xBv$*wid?pv;N@}JI)gtlk5;?)Z`1YG(bA$81p68vHNq__M$|fpN#vh|f=U9mu>Z zIEn4)$^&6{1t+DwV!O+@dD4@L2m9{IUYhcT$!3SO)8h$G62NP$O$?ePtl~b2v|Uxs z+`-2tcUyL$;}3%mhd~xyd8MGg?8+;Pk~J4suZm~rXA1+ZmsRO?DPVAmDhn-@+o1ko z8fagV^ZnO+5e)mDU)ocdGRb+jvdUNQP28Z{k(SK7z0*2D4AdguyxV!!CVT%)i>#dv zPfPKBAbOzftmY&WlV-_JYgg$rKQAfwkm|h*ZtLz{^~&qPUr^b)@@m?FwY!x~azLB? zLarW#)izIVykp3e3%zQ-`qjPzh6k?is#bX!CGz3zyN=3fDdq|9-|=P6WVO&f>2_Cf z(yhO$8$8QfmduRqSeX3a=7G}P%1bnF^X^x_@M^C>frjg(y6d8M8TUWc|1c@gGdqp@ z!5)=3t;OZw!LPFR67~$xDo~qBqYq0#VX|bRg$-y^!lgZ{R&h5(8&zt&e)UYoGivJk z@T=!{D?htqc$e|glsBxPMPn=dC*5sqFDduPGW_m*-18ed=&?&U4NLau&q z^e-#-n6xBpd;G6Bmnc=xrlnP{_8#a4wL>PkJp#pnAShDSHUu|l&ni}V8NTm^tikz7 zZy02*+*S0w`0T*v-O4Iw<0dgT{4Oi^$TB^DyHEaH%HzpfJpOI5c4+=mlyLkVho{tr z{4(}G+gANj{jlU6pXcI@k{`NM;&yGlVRr#k=SJmn-&terbol9ojn6KgJg^_UNu>9{ zT=0@q-KJH$Hm&kw|Hk|ev;w%`^2aT*t+y|l{O|KDN&!WBwc3N;>z9&dpI-P_CEEDr z6FuEo%9HPa65+%r{0#rEOySzU8m)-DSMgv&Z11 z8Ytr_pUiFCU0&{yRo?urL9%;U-n%vP}yns;SMP9cdTxFU*;aut!|h( zWr^v>9+m1+_Z4SV5BP)nph2sdL5T&F`a`d#9?%5k2~Xt$r}Bm^8Cj2P68s;8-nE@1 zHqH5X@T3%FHE|!0?gwfIFSXeWf$FCy(*qb9$f6Ly;HI#`^klk&u(@%dTr#XRTX(x(a@r~Nqo(|b%x>8YspTyu&ijYjKZqR(lr3@JkP*e3* z%?i+{;nrLFCy(6~lu~Q&Gu^&wRYN=T{T#oEDxOli+{@WLy4S3_$9PA^V(v+W1uDL` zQ$xRAe%E1H=2G5Zl6;%N|83s{lhS(DCDu-t6k^s}Cs?ZPJhZRDaT&yRr+#@<8_kZp`I+b6Iv_;wNtAvs+jFGMg-2 zxf-;KBJ+UUgp}9sI5Hd*{0b%jXw1id~df-3e-Rzw{{5mN_x` zOZMk&FMpWq32|h)!Mnq|yyey$t~)ENohG?G`h1r$`$fo|GM&t`xjcK6KxNjfo&JpW z;1P$ld~f(J7=SibhKGtj>RmHQ#q)X^_XEeff|C}kvg5tOSHV@_THLqfXK7~nfjv>T zcuHQs<6C*~*n!QvL9MO$2M+U=#Lu3+@UedE}g-Ls}4LaG6r z?O4At>b-h5(PX;aO<9BE?^r6h_lR9B^yGWjH(|@3NpIL?K!bz<&yrqLyxe>ty|mne zx%j+_`MbUgZ&V@~=P>8oxU1y($vmzYwiW>F9M$t|ppjw|Eq`y&@!)CilEGQ=s@+{i zP)gV;uOEXPx`n0bt${fnYD44(T}ue!(ahIP-f z-L98new2j9-jp>wE@O3Vku}GT{PLD1Pba46KX~zu&$D^6>!h>0m9M!^;%(Ruii=kh z?Gm<0OnSoyI!SPn+q3G>uY2EhY<;pV*)uy^{=v$-g0oikGlP~FPr8-E1{wuA47$+L zD>RnHW+%Akxq#2JsGz)M$^FpK`>R&5Gq*ENH-GLSwY_^6^Rv)Na~o%umwPZ5R88^) z^*XyJ7oOg@BvktMw#UC2e}nvA>ipotJC3tQEDtP$`2S|nAMMcp^Y>cw|E^spZ2zyO zv@hAZOeoS>=CGu08X^=RDqB6Zby+pOn7YG?TLBu17Af zRyHv;`fT>V{Hp9Em6cbfU1iLYYwx@2{+>l|4QN<8OJlpNH}ABW(;15!CO1}h6{~E$ z9KMR#D(CwvhLwu*m}J6b6*H5Rl42iBc*W=0d-dDG$Mq}tCP=-T@ruEBT}OpoGq;|q zXY%LMuNn%igtyCjOU-_Hpk4Wpch;}R?pGNnsjQshe7s7gz3-~^%$Wx^9tgdvJ4wZp z_sgD+8+)vrE*(mJw&#q^?1SvK;^E&tvZn5Ccpu_ka%1yq<|S;EzAie!vWl5bahy7V zvWhD=hOOa~Sl@9&_QtAR&RIK{m6Dde;_&V3n8CJZ=Pu_-QLlbqWqfS7>FtlESA3pp zjkzmoOIw!pfc6f3z5V7DgK59>@mEXF?2)z**s*z+>m-$xiA)y7PZkP$@=lxifA-93 z#^Ofl)zvCn52?!Jti#)dhK%L%qtGlZs+5#wx0Rp|6nU9MR@XV(J#n!vDs+l za_Ld(v$-=XjXsz>u)bDubP3m5hZMXa`RniTcQedf(?z6aAEZAdft7^~|>+n0n@rMkR{kzMFn9$MO<;;FT@u(V;;(S^yG4_F>#UljzU#w~&$ z_IBI=g~5xIXMfJr$Zt?AkehJSbJDDb!dDq(pM$J7mdp{Ea)n87BTJsfbQ7z!(pGGK zOlcwR9=eYg)NS7*7qJiI{WV{mk1OBnxZS7Pdsn!D-}T6*tBSKi?AL?V0WFoWx|VEF zqQf}TlHY>kM`UTYif0h>TBaIPrEe?wCYn^utjtc6BbYh8~N9q3+dy+mx5u;AuZ$|i+^8}0ttX?O~M{rjpR z@x+Ogtzr^8K(}y+z|R!}_%#C#+w=H{ptub{KolMedB}Woaup z@08u)%|Dp?ev*lxdCIe|R|TC**z&BWnb@hj9x-06Y?2AO3K(Mf4}&>hG-g&RZ_qFB zhxp!?`JS|3y1PrraSy4zXXZ?wna;eqQ9ty%$E+gp5cZNg->xzSam$Dcz7BQwh}zL{ zgR`Qlw0+67jN1(FH(q57>Xwa>UC`Otq5I+eVin&j;j5Y3GE;7UY`rQwDe5KX0e0o2 zo38|XyW&H^IY9b%&JMY=3zJ{2PkGkgpxp2iQWkyXdf+U$(WSIw$;Ojs{+~UwSJEb> z%(=9GiKe0a50_Gx<8K3G6}BGWdGPhB;3Tn^PhK&2uH95pdLYB~$h3-;O(ueym69gE z;_y8&^GD4L72hk@S23#{oO$5zRl!M7namH?UKNzucV>_5j>X^{5Ge-AC}$tGpSr}9 z@+`e^|9a5!w5$z_8}!|d6kS!EbWG3Kp7l)9htvnnM=d9*U4J_Br7H7e6{Tg2w?T=$ zFvKM%L{{C2g8t0k*1emsgzraI>4B7!XW~Jn(c|rM zAGW>X;JsT4sg}+czYqkuV8Tq!JuE*;!0EAhEoY3B;Q2Lt6HV%7{;W(8D=;bmWrl}8 zuAkYn-)hlg8LMf>(l{S%dBx$`U&yl|skCLuwan8OKHd*w_mCAl@OhQ8Nm}}&X~~{a zZR3to-QaRY55&&?c-`+u>fHIFp~*ond-7=zcEK8(s&(l^$()CE)pZ z`b_?`XEzV19jFia?lEgZd*kO-%2f%!Uoos~jgt@rl>kj06-)(5pt3FN&xJx48_^%L zU-7MUo)<5>;9_@2Zi6i-`kCLc?hBPQoN4q~{DAsuYn82G4DwwZ`lfICqE~_9Ky&`n z3(BB_ZW2?pFW4RMUj;4>ay%a_7A&kP?O4)z@{F|cXN?Du2hOjqR_Q(c-01W6tAep& zf~z0!&c9T#<84G%pKW9BDrJ?eL66(}8kGwVFE{bo?cyR`_cr^1?~m#QD!hlyjXpQN z>d^e)25Nx+na8tdua%Q?aW$kMjw@}Lb$DTN<`kpPer)^?VxmD~PFE5b_b4izle;-X zW#v($&p`>=4^kfVJ(BTEF3u};;LnMbRoHr?TPbPpD-O>+YpfiCvd?yOWL_2QE(|Db zxMJx2_}hoDj*hpD&qK;Rg4}ENStV%o=LbQB?#U{;_d*Yt zgJQ$4wBbsUH^ct`S;en6PdxZP@2KRYTWdE;`zt4Dv&~QTkkX5{-g5ZmRmMqI6ysO% z&2R!&h{DBjE^8uW7jk|!sscH{>cf*)9H!0A$1h2wKHGZWT?Ob~^h=LqSYo6ESBJHG z%-V70k8_$FuMP8$xYGV5u2$N{dleEs?R*(AYeuqi(%n}aE04!D-52(nHAC%wNqs?S z!<9fjS@Rf|Gl?H;x>YhC)y1=A>X|>5A5MbGifv*a-o4`RopJt{_av3}KGq)w zjV5|Ce;PkM6_uG6sYEqgfE#W(HMxM!cb-=nv)J1EmKL5m0nUNhPd2kD&v(p=xT{!tL+&bL z)P{~53>FJ^IZv{B(tVXNSl4(x^)=RXv9!0nvr zWb|3-LF<7(k3>8tEm;=LyhBH+Y(3vZ6B|&KJdYuVxn{A2`=x}_AKh0gS0$O%ZPVgC z9CSb%?1qI_4ngWZtN9{2c3x!+I{r3Fc0sFE>$89NbUbrEr$6|8RnXOsU2aX^gezIu z49`Q{Gw%HP7d%O2=gWu&eV(P9r_XRVBsZ=Bosp5X<7tDw>yi6m?H*F=&iu(td&l*L z@6V!L?yn5D%lOY-yPA0kUu7mJ1u1@Yb;;p+6LD8@rSP(FcAX=RV5@}$17#N;@9HpZ zT)fI!Wu^1JDKq!RI8B;)ol$-b$oK8;M;fmRN{Od?t9VXwKF(B=sKM)+R>xrhYCo&2 zWL?Jm-1W%ItBRA_^o{rPonh=_&(k|M@z=BK2UxEP+HMLhZMdR%npuBk--N0sPp>jg zvRYht+eG+&7a_aQ zuy~uxBo)gNode=+moB6{vpgUPZiVU!9FSIeG^gW(ZRZuknU?y-=b6(O-!sZ-`Az!u z=*yWe*Kc2$87!+%dgi3y#*)&OE2V;l!WMgWIR~Yi6kh&lca<^7|4oqWg8dyGq7CBV ztpF1<1c{cO>HSZ=`y>s93wBnS@5uSw2ulQCbhq1>+$SQt45W{x+ zsA{IftRHI*&I4I*v)Rg_|6@@?>nje=R}(((eIVShxnVab_1`-vSeR1UaxCR4IQ5_N zJ2T#t-iI=^k zJe$#YmGTn4s!|t|!sJC)RF8+Sd%T+B_P5$vDU4~`%6Aj0lBRcbyy9?l(K(v%B4Uz> zjr>Z!jHWYtBrD2G+n4zLc-|4Q-O6e4w<8cYczdu|l<4rrrm1}hdXNmxf4UoG3o2dK z1j{OAeoA?Ey>V^B;zoP1=N_@2HlEqD$ZApgwsm|Htg>n!OnAkya<$T-meFT*--N0p(}c;dI2fDHN8Pni@;vR`)hrIlP+rb~Q5#kKU2#D!l#C zee$Zt?-}mJfwD*$)4zRIPKzI1*r?*k6tU9E0aRqEd8VCXe#SI^Jvi%iZf(eSJ7Ns7 zc-@&j%Es}$IV^wJCmi(*ir%YhTpuob(Rp?#yNB#H)(z#QEmuqh4P`A>?Q#x!ZWAK= zq25hT_vYeV&aYDGZ(0^5MlGVdA9W!EO7aon; zZ{;va#q`jrtBk9jU)X5UY4q9gLBfO6(0EY#@U+8Xg_X;tC#TQ6HvX)U5dPr!RokG` zcN(PGR-IYJH^J(i{3_-pd{ufI+)7)PoXfnl?D5S5v#tsTozDrERq$KGH(^QNP7CAz z0kRiOW>)flnD&a#bM6L}0!J5}SlLCcx3++-Z<^ir^uk7yn?|1*6Y3viLoFBi(An{! zQF5ia(PyIvFAo?tL`N?@I-6Z);>_=1?O%Ld*6`S@+~xdg$6Vz@Ycnqu$VSU5teh;h z`K81SPz)?QtDN-nRmZ-rj;{@SyNy*=W}jQfm$Bjdob#`o4KJ;BTh#%Aw`y;SHvB2iT@>@zPFZ#(zUb}wf zb6I|7)|?Pog;H0SHGFSE?<%gGJZsC#ivCv&E8FKWSRrSrNY&wq(! zJ-K<@Jha^7RnKIlM-N_c=w7foaOM?<=cFqf+TrXg=JCJx4puRK&-{&1Z!I__Oblm` z@9U7fsyJzxTbkXBna>%e8J07Zi>iD2f~uwbQkVY9-P=t}`T9Dxu2x>sXCV}^$jT{5 z-8AWih0-*ZZR_7nsLI;?s==7`{JoW=&tlj(YZg%dMP((rXNq%+~c? zc$^al8i1EN?0dZEMZ_$xnU(q9U!12|}v-FIgGp2`t!r^Jdc~?+RqpD{vxG|o5W({9}ZF}ERO*5m4J>~_K;HGf5 z4fhTurFk*3N|{-y&*mF{R$<%zs!r&`vdXVleGfR!{OM5Yao(~-$9L{yC5QkZkQkH?(wRp7u2x* zBC$IR)HypAu?&(exl*3l9J?lG%sW@TyGIo55gdMn>eTz2E{ zfx4MLf4>qiTy5p>YT{GLoDY*s>e|EEJzj13d6f~=u6?yeUQj#C{mYr+248S;cz3jM zd*JCaKS2}l1+r3t>LKnNZrl9wV?ir=r4BDlwk**JJ$c5u(YEjdX!(oIwPb^eJ-MYF zOQdH0Y(8^`_XhWm_pjtKxl}%EpZW9es|owMJ7yk;x+)uVevXXb<<-hd%(^<%8QMXK zZOfY06`JSY&R{1+GWU*9KS&0Ht1 z>^bS*`Av{AAwDR*jF((EN5B`N)X#aOC91}jz~4!@AkO# z;SBS=NZE^KGiM%ny~JC4aMio8C%Drbul# z?{>r+?1Dyrrp*#LKYt__PBO`v&*Znh?}D<~TD}QYuimd>UNX&UkCj8va@z?rKd)A9 zn7fKu#c;XR0{6I<*~e8fXZ$lYt`C;I=r;3b>Vr+7Vri4vht`gQ#c_=tGZ~rm^v@csJon=J#;+o*N6T9E3KnX8xt1#ALAy+%l|tpnFwN z_xZMD&%@hHKXi7?2$Q|!e4aIIC8$#FeY6ae9!y=+?s322t=R`2FiiF9@2KzQ$p10D zO3(QHnKR}LubI;s%0<*YAAdDY_d3n~SxTC(u zgZ4)9vHEo0ZR7=~#&ajnNUu`9rDMFFVPDi;#g)b1*v_r$d$CYF1e_frw?VRll!~!D z10UPI0B`|mbeuul?MTp7#YwMHpRJu)Y1PdB@gCQm*l3mBlUonS&8)00?T|a}dpv0F zPQi^;r7c&Kz*%C??^Vo7Nva8pU-5bBu&#-gy~un#l-(n!{SM=vwN{Ii{|TOW#o;;k z^QjJteO8O~l^%J5M-V)N9-mnODH_@&C2i~ke)xckhSP8OK^>Hkc8{#KGka8x{h6;N zZ}|D++%2Wdjq8#P3jQ2_C14xoqH{K(d)E>vHN;{T3laREtn|ttCa(n;Pkn4=QQ=a9ocHZLPfADR8&4ndvN!vpzP=V1Ajo_Va#h` zue5Cy-^)!M5quS%rR^%7St|3-PT)V~={t2MKl5=0c}SHp)3-6-?TFe{#YwYNjq~Ls z?dr5X=smc1OX;QHbp~tef;$<~A?zMWxp&^F_8vQUm2pzl!+)uDotwU!|;4dMWFGs^G@LQjhB{M}iLA z4=wkYwB%UPiwHhhZ{O+6>dg62&rfYw?{?%K$n%=U|L4qHZX}^*)1GEyvbOH0+J@k? zfBURly1!0&#o)Mjd%?nz2v z>}b<5u4mq}AJoKO%U7eTbWQu+i&@hd{MUgq=TmUw;g*uIKeJ!z2gMbjgQwFaA8ZyZ z^Z})VQ)gxyeO5_uelTCNt|Dr0A>#)3w0nWFivn+MuyPP$VBE9C$|-BZPEbTVKKJOe zIomY7ya`{#wcU?&T@{Qq-c(y07l>YTZ^z9=Y{_vX@wu z-#Y5S6UE9BH>#MbOva=hBB)PdbrzF&nP+O`3sel&gUc&d zrV3}5Il_Yb_$O`gm|0nzHji%&`ybg4yDuq}p1gZt;mpdcw6xM5H+7|DhC6y3f{b;J zKlmKz*}qlZV6l}`Q2w3Jnt#)dKKHJ&Y42-)-vO$?IQU?gUr?Jim;1q| zj)H`;Ic{y+{8xj9GJBsF=N7$)$Xa}655o=l9T1nK`mxxF3VMgOdt~i9v&Y)_{@H}X zFE1VlJ?fdYJ-hL(@#jOY1bT1YvN)n@diLX0#vtaiYxyQz(Y`vnPu6PMtn}tr4SJH2 zEERsG?JA`Q_#5lj_PyvnvxnURT%zQ%#Rv-SW0#z7&Xm_ZO~teO@g&f-!&^hs>I84h z{x$oEs^_FzY4s1f1vl1|b}T77ai((SPeC?wb$j_AVTF@!J->Y5vhnBVR~4nix0`yN z-R$a;6D_M~>guwF<4xFI#g*Z!+WTsI^-RzIy2>b9ED_hB<|+Ku;KQUdH9M@9q}wsX z1j{O}{CtgFueZZ@mGdnXrL>1j*G*E%EUD4gZSPxZcKVEWV>^HE%lfc zb#=PZ@0s(i*yKq{uTx&dtg@2%-mIDStNLEdJ~M}X&$eC8LHcWWYff`}xvMKNS%}Yw z0~HQY2f>ZYtlek+*liFlh=r8jXBhX%3QB__WB!>vO2*$4H~jsf{KIj!+l<}Gvvasky#o0rfRdsK@dDYPOp-9zp z){N^Z%et+*QlF(B5MOPr^7YuI1ILvgtrdKjb7XPPpZ^~d6IwwdZCA8DuVM~4FMchk zJ>}Wk1H}#8;Q5%SG_?<{9TkC~bb9*CZsX6k2Xqq3A556DC1W0Fc?M_lefSHS4P4^ovWCA#Dq<0+EZur(FDT78 ze+g<&eHO`MR=eX?+$5FEoH)iB3#C6FVnL%>f0b_+%xBACui@CSew$bF7l99k34Uqk z&Yrm+!k&4_cB7TUr6gT`nIKt3->n@p_|AalFTA&>radk12Zhg8Ptbh##W2B*h8r?L z^O#qD&iwiC6^CtHS{(nJ=(~z5r-y;cn9IMml_)5MG1&312?OWx*YjR6Tz!4DJ7Z

Kj(QVWcSt|HSK*%pUq;+36s5;6t_&p^YQ2V2R>dEj9OwI z{NK(g$X@s0gYOIecXe!CmAvfG3DVG6{#z)XbdSTb=pz6@%yEO@~i}8Lag0 zTf;ZuO7zwDk)S#t*RRx}TQ)*g!Be+Hy1*grUbO6@*3)NhH*5#>x3B(EVKUU{goLZY!6d?WxZ~XI5%$Fe}jb zkow@^tyTAaNfsDw2uqtcW#<0%d_j`tvfghCT}m5FLY0y#A5>nIomBOD+M~~4_mq`7 zNV^_!J1`B@#W(ugc-Z)J{c2|ut>+I8iFj@eW3Uqwd@p^I?T)74MxhU)3Fkq1=?drf z5cU=GoR0_fr#ve?@a@1+$gs<1%@21wZY;8L3HqM;jCtnI&NDT7A6y<(JcxFZCDbwd*_EY>WqOE`<5J?{WcZ6p+cqitayWYsC&j4 zJD!+OSw+tSZU?R_KRVPAvDYe1N$Jte1K%Zdf+whWN{O|DMy9T~g9d{8S>xJgZvvgJ zmL&RMzf#iqR|1}YC(pc|_Dpi-PRpFm@6ch%?xU{ED`%@S`d&<%-#6&v|A=y4`^LwoOJBTf{q!HvWmW&lnYKTUlLWXVRL(7@=94yX?`Z|$1lH0 zZm+{0RL-o7F6}s`ZmiF=ZpFI^OWY$lE9^gIVuJHo_1Mf-yql=vIrrN2 z=X_r^CeFOdJ4s4G$&5*l$qX{cFmpS@df)poo>?cNIOm3q+fF zPdragd%0|X$Bd&74z(#aWKPwcq_Wa{+qpCIL)=$Pb3Q&vPEb(W=tkSuIiT#kWZF-K zf<3p5RZU}EY#1xJHn283KGALHZ7gjR<-Y9pxavXp0sV&fzCVAIjPo_u1}%3z!hE3T z6`yDFqyua-f6jg-kaX>46qLTDY*^|u zX-mfPv}cjvg)TQ(b_jvncin~ZA0!_*J|-CMDb*1MLIh#-I5Q|LJx=Qj%bu5dWYcp*Qj0S5?nR#}Zo4?AdJPv{lAx z+7<`FLY)tBcb+MGPBIaj&ip&=+1sm%lT0F&k~IGrHSAH^AhY2Q)4%23jNbi!KFads zHSQDNk^7|oJ#!xWyOU?w)h(l?HiHVib-SD|?f7G4Y`(T{LYt;i8S_5S9KrXx=`&x4 z$jS*$XSNQXtDouf?Zlb&q3$NJE-~CWpm8bQGQ$sl&eW{1aycw6n9X#Z;dIz`k4qLR zAGjZ|E8E+%t~+^Vw)=1Kj*igAvyJHn5@z?N9{m1(l8WclXN=yZ`;J)cjmo+JYu(jD&@l2qJp#2pPgUr zyhPDzjg`ZshWq04_eXvFIms=b@4-y?jDB)1dSX1uC`X` z{B?S{jMcPT$z`Pu+;3uK6+C&%G&jVj-HVl7260huX0xLytHFYgseiQ(>x}dy;e?AlblyGt7IOL=QV4V`MX)ElXzPll7jp;LIP54ZH=R;1uP(N5sNjY1#_V-E7@Y zz&3o@x;-jK&tR{W(q%pV30qXT&d>Rpd$T~(Z3W#E2k3@*{=3|Ff@Bw_6}*VJ6p;F? z@<88}`(=8bldiCxXVB~K*b2@Ok9WL`c-6O8DXI4rM`jNn`ywl+NperO9|d)iwqAaA zmC;v7Fq=slG^;+bxPjUD^SxIBrqOA39CJWD%t3 zz8Fx)%v_oLL!^c5Z!NpmoZ#^oG-`t-(=|zG^>rP_spePG(TbGu;DmJbAJ;J1juu)JyO* zO(-b6R<$@E585shEUVBP=90se6L?qAvmWG?-7h1u)IpZ$U1gkPax{gkdbFRR!) zDY{S9^rGp}=U}tj`{c8izhdy5 z%?-RC-h!JCZPAQBqFiJGWR*N8MQpQjxO8FX+lXAyLMD~JQ-3!|ujcFTc-kl#`rLcg zgsDnNYhQJ!f$A6D)z&JRT{Vn1%#7Es;|qK}m+elltRg5s*gm|lQ4UmOXil7I&TyXP z9MdLn7@eHPqSwuwX)XD?#!V(}lT=pT^ke*|tF$Z}6lBVv zZ2o$t;Ksz#mMsdPfsN)@e4bID(#_Z9y}7LW5upQSS7j%ec-nF2%$^w@+P>oQKiMCJ zr7fVeTY6*a%$GUS!SP}=^QS}FJeD`?ccSiss-^^e7CTAsxag!S!XR6;8y2rtUeao@ z#L8ik*rQqCzUHmm%^fd(fA;iep0=)U!V<-54hvJ`@8{3lUY&d;cc!I$MJQ;zWRgnh zjq|IRujthN4~P$9PI=~fK;}UgIGwTG=Km4oV!@*7dFe^<<&9TzkGmY%@`~f-MJ1(% z=2g}znTnulK=3rf>u`6G+Y7B6CbhjOKX5#p4SN&)9i2QJZ+Hhs+RmLo__C8fp zr?h{3H$*L%XT*c+*pS_zDatHRfmM3P2vloao!pon?(R{a%APRy6^Cb3!)>F_&mOgj zcAuYaQaC%DU8ML$M9}ma!5Nch-e1WVsK1wMMmQwSWuIKwD0g^avS;tanf$5GUh>HO z*u4^*j#qAD)a&lpy4qRA^VNo>pt^4ts9fA%lu_ECqI)FtDkG?rY1+pxn;$Q$;OYFq z;6qfx{4;yDTDkq5GBcd{J$SM0q$PYsFCzLu`Q+HiGv19i4@?J-y-8(>f!3kN$SQdT zxm%X#l-~a*xG}4=g+)Nnp8+(LxTN(*Whn!ntat2&$Wn)?9TCD2n|C=+QhQ;QaQ#e8 zF=#Bk>OF5m^LtSBZDMmh{n^{Af{@?}O8X~ygWE!KMmRXQTwXKW@9TIADj8oXwD&E2 zH@k6m>Q$ND4-~qVJS)1qaY^Ef&&wXK1+`9^>^O6#&b+^dZz6-6S?>O&pb<>ZNmfU6 z!P_cSO~d%+@V?=Si3g`A2W{r~&W>1c0L@Tc&8*_v2?`)VaJEz0@iO9)L5`51@hasm zixQocYu~Z-ojS7<)T`|I68=x}M=3PL9w}eVe8q-O);nv@nLlD1R0|TpH6ODssCmO4 z2FeqPe6rquHi(t{hO);PD6Bgx6>O^uH3w zbTsPxqLFuT&KIPf`)yf4gB3^Z!UB%qB<7Gt9Y#Ww2tZ(Mb%$pdxIQ5z9fuqo3 zx9D?&e2DvsN*SwZSF~pS6ije`a0{Fx+Gc{vr#%-VCoSm&or7^_`D3u;w^QwW#e>LBPC4n>e=dkBYo_T+L-^61|#_L(nt%a1hV!zW$ z8)ltcnC!WB%FOcAXA=)xJYaj(c9M!GZ?Tul9BILQ&nK&7)_`m}eeo*etF`Hjt3%wu zUb_6z3*@7;$*&riqCwtF`oq7$J5BC=nDW*eFTv9}DxQ4yHEoO6>@Jd+A6$ z?mipWf{J0qfBCyVzByB}cw&^U@q4DYa7epTcglh7tCg?#fYR6AGk-)k=oYYjC@Abx z@eGKFr@%znie+=#NxL4m4tpSZ|fowew{}knmrr z8&}^Rdo_cf(S8NEiN0joPNUENHlR*z`4+KxH*=Xe^wOmEJAwIceDX5_`$;5hj7<)#QrPZ`6+Megw=5f|+ z0CnjzyY_JWsL6i&5nKYdEKbg>D9c=HyVlC7xhSBtL1pc+)T@lfH52Du(QlTNWxoBm zIC9dm|){w)FFI>GJu?QnJvsXf6B zxs&J2P`PS&DaoVA_JcdL2w4A#}YL8k@Qt`Z;!2Mv& zwOhuZQg~KUoYl0pOyz|BR~)>DR)Y#&F&SC!SuJl@F^f%Hoa`C8jv;Q&lL;#3VaGjK z?{U|F=UqXU8iRuBu8gertGz0xC&{qyVc4+=)PK(8%3-Nlxb@qgR|1}smQ7iloVlZJ zp_RkmYf;q_1qr3?Dr?;u@dAbH?4OmO3ZDUNyWl z#ZsuCMIY2)wSRqo6|>3TnhL*53aURfHYk612`-r>?ooAkP&wqbF@QgHN7oyPD!f9>AIprow%@cFV!8{S@vl0GEh)cwBl zfbeQ%l}vC7SfUtXC3ool;w4h$496M#J&S@SiG26C{LZ$=?H8z?Uo!E(S5bCp%d+|W z=RKvi^vLkP;fVpa?m|{D)?bRUu6y=tnu@3Mv!%(N?P2UIrpJMXN;W@v5phX{H*v!5 zT9ET2x%Tki&^o!%^W7T0NxKwI_BWP?m4o_lmqaXgS~=W(@FHSTgUWQnT}B_v8}b>a zs(3no%kEhxXT5Eb3h&JMv%Rd=Y<+f}srT%e({n*-v56r(#C^>Z(29yMnJls5C9@wn8ZQm$HQyutiK zGq^SHw4bMD!`5wSpl*P-6U`U2L!;mL`VRrK6kP&&zal`vmFg^Gm3J$%Xjgwb1Uy-%5QTJRu;mI}?cZT0g_G>_+&{~`L zKfJtlOBvKsib{#In#NKPkbQRH~}CD#e^h zeqCR{b_=U%OCr6BxHc#kM1jhdpvJe2`dhDU1I0+D;E$avm;8QvGwSvZE2p{NSAhdc z^nm$l<*-LDB3`Y38p1Ck19O9NgLPLiXzSVSX$K%ou@u2IdE{lisz&y z3nRGp?6-2d`}lD2BolW@OTh}M0yj`A<5JRX35(5Jzuf_qE@~N`r436~erkKgPSxVZ63{_Rk9pN_@Jp4!n|b9ih_PyX{fw~lWTOV2vl`=BYTNh+S* z4-R|QMaV9ES6HIs`FYBdtOrYb*2(==T%zJBHOZZM`SxpZVW4`f#lmXZmQAry+16q1 zD>lc0+Q!8NnWYDqEv%;f%Dw%np)h;xT1K0VyPPkD{1E)men5D#%(N%cR~;wSDV;2D zw1>9;Tt8gD%J@pn{rIFU4BD}_b!G*1pcHUPDT@C`MRx9cu$K;;_f@sM@Om}#72CC2 zk29WM|8Bw(%Ng6ekG~FO_n5U}?P_MVIU=$XVQT>rgcEvSad$0~C&Bj?X<&vonh zCVg4Z$Gi@_=xovwPAlb;;j5Le_<}N0@`NWv3E>Yi5;7rS8Oi?R{Iy$(pvtEgR1#G! zFyC@5sJ z3ci}d463X7-m&b9mHo)@It1iFyEv<|5*^;tZx3`H2%h|A=94KZr&liq9hGvPK^_{A zoEEkxXI>S2rRRQpl1ZAUUTVqL9~KAX)jTFGQH)@kb0ey{8dTgRKl=W8QrOcAuNX?* zvvX@7q=LHn?9){v17$xlWQT)nTN{;KTb-9V`4xj__oJi-(;Iy!$xH;toY)hM1FxTe zDv4juzOQD!l3V-xL)@fgPLrx9$?(46`*E1nbCL-Q?~l*dZtVsYL{iM41pRcvwONnV z&tBViKp8Ze%cr-JFM?HH*8A@_j)cpvIt*XmzTdxO{tj6S$s5KejVJx7owR$^Vinz( zN!cF~Ye1Fi-%l@9(nH->+?J8`zQm$xDSd;}LMkE()bZRR(U-Y)@A`IeEfvqhk6uJv zT4mF9aYD$f-tbU%k4rMKQL-Dj`udjsyS>XQ;S4CQOv=O=+!CNL;ost|&qAd>fRnJhf8yG*!|e~*v&kPGA8+-i?Nw%;#4F+t|A=L zoaHGWe=GLv>ro7_t zUHhCtI^5mkl8o=`==ZX+-ha23X0Hu(?>VUkS~q*8=t1{^^~}*KH&su5^vu(EH_2q~ zKd~QKkP(El7ynOx^6VAI*Y?H9o?6qMXeIbR2yeXI4Jzx^o<<&!T)Wj5l;UT#re0;7 zwCvvNRm>(^!9B^!9c!!}ID!hreA|S>uR07rE}ea;B$BUY=0(@X>ME6illFUk+WSb) zGg$8=*8|-H;1Mnr&sj^?GuFq;F02C;!@&y5@7cF8|62`ih&z=r?7I_ndljgiclAS} zlIQB;jM9c>*R(-hR5`tMd=&zHeM=K>?6OMmkqeep=-l0Sx#4i*aka{WXIvl4i07L#w_ht;*LR_0X63<4e4xU^-McYA%-yDA>uP2d-L8E-ee%(=3cOd!8-yE~8;+~o zv_I+TnWz13(v{l%&F9~P66LJA|I?nFdByRye{r(sEGJJt#(7*dOTfK8CNoC6`%$-7 zg8at*@I}O>oIU%j9D<*N(Mom8cA@@&t(Yv2awmR+0{tE`;Q)(C{PnT?Q!Yat*TcAXKAs626k;?f@D7k$jEvhzA)YUcwgVrlRNo;Fl^xea6_e9 z%~J2=)1$GIe!XWta1+vW`l4`e&XZrSIKEB>d929OkF|`&Zw;vJB(<5h;rzC1-#~LX zFB#vh=9_SZb2fwis=f;)8Eb9DZmiwqJn7lPO|Ke4GuN(VToZa%F*EQ>YRR7)plv{5 z49gj;RVtGw`K#{SZRK^TK!x*z_JK{Hj)jV6RRh1extTUQw;iJfIzyVZ`TOg>gtq4dty z1MH3QOxtEjO8*Y3^St~hwr8IoD1lru`EganJOpalah09cCk+qi9S8?Et&XMYKDZy1 zy+1-$$x|rKYMM#4G(&Z``-*F4KGd8Cb*0*~C&$D?lgVjNGWh^HOdxq(ddb-z8gA$J z=gfO@LFNC1C$BCUftu^~Y;~(4V~`E?{+}kk;`lm$akA&D6)Mx2&a?Be=V_h;ogvk( zdcc0$wZ1ic6IFQUEl&0<{_mJ&n`*mbRD4 zf2e$5-tcyEj!p5|A3s#YRXhvltJp44`G4xgYjA}V`qS>iv{xLw%^>SG^vq#-!!aiY zT!yjn{#bqO)^1QkyZPCRh)Xdt7ow^|N?W{SK~r*{O9D#|I9IroHY{;{`Xb`h^4X32 zOzTNZF<-_KwB*R!-mC36F4c%a*zVf~7}fZl6S%-`0&o3NyE)-&(p{OkE9Y+12w6`w?N z>1yUBnjdQ)oNv6_*gHvP)|2~_??l~E_2i!RB>F%#WGs~TlJ%sTomNhVAHIkHcu`)8d0Oj6MWHTs^tD!t06^;sri^D7R|S<5r`mFx)v`D?3h z=>exL*RCB|A1$>_o>85dox$JhQ?%zfuT6V)cu!J$XnWu)B+s!uHK}2oBsLQih%;5n zRV}4%uv%;f7nF_nnEu?qHtYU=uSsH;V?q0S)BCU8a=R+1wK2Z5LFMe_w+BM63i2QH zK7MIKPNeJxhd9e?0(TF;XuR&+&^h@t#?170_!86!wkF_3bP+7@$al?-b z+f=@WOzLjD+n_9AYXRES6uO_Krr=pri;8FW!+D?$Y@68%3QAkN-hf8#KY!V(qP{W`tSZTH8fdNsKbG*&h3jy|A2eT>Yl~NlnjbVeX!nlDs|@K1hbxSM}cR0k3CW zi0q<=plZN&T8ir=;l{U({osjb-2>T;{iS~n8hZwn--!k7TZ{{rU2ybjR5jCwFQAOD ze0?bUnl_M)QXh`I>R>G>S+g&iYYx+!nNMbV`uP;OmrhX;t(Go`2G?;*;(l*ciC@`w z!NAgL+7d>OqTET%jm!=2LqQX`XD`;@j4XVPc&R^WPTURlw=8%`A4{;>KUEvL2K-oSiH)>B*Nza-OrKJlC<_1MMT7q_T4R zKdqC$S1X&uWP`Q`iTO_oj?SLXevkE!+J+?-puw7TaZEL#9%>Jxp402mL_D))MJhSJUU63TG4m9w5 z$I_R#wzlUY`~34dev?!@XRQ`zn4i1$?c68NUP*Wc>E8{NRam*1@94#k3R|vSOZyU} z;`wUP(gRPg3a)Pek{=JrhMsvgwejLPm|JF(laD(+qDfyu|GYh`-H^6a^HJ}u;J;#I~; zOQbyaalK)Z;ky$8YWtdmpJzLlwKg|OR>|{~s=loEto3iBv#mqjGXnRBL@WoDOD{jE zc&}CtOI{0V%jcbb)c{HZ>#W&t$luUB>1lUG%X9PeCq@s>ud-J04BF}4*xabDYH4<| zb+e3&{feHLc~9gg{c)PKw&88VcIM^ARXdj~sr#w8p?;Elc)JIv{d!>18jm8O4ay(< z4>axDIT6(HzRjGz<=Q;ZY{x5E`#saQ2&`YpcVW>D&=z5_2ZvrYM1Hum(ZnV?j9sT; zadPR^?+u41znS%9ORJrLz9;iH_5)Kv*?Q%XwFhoDq^th)n3OvCkNvbKvpxSAot$^z z*a7Lr^Gy3}yk70w-M~DlX1|pSll$>WDhelgJ^%54ka@5g+_Ng)z*|t3{T8(6bxGXL zwV?fbdzWp!wo2K=(s=)V@H7Qe&04Dj(0JJ4&90>fm~0kVIm}voyWu|DJfqKxsyr_- zsqB>gA!_qO(eu)UIqWvZCx5Hin#E03vG@Aas8Y>1o5`JVx^7wfl8q5;dlXOpysCKV zuZ*nsq<`1X$Oo0N@_`Q;Q1P6#wzqL}RCYCJhN*w2 z9?E{^P!yocIkDl|`-muj$?AUDKed)~_hI=!f*spe8GS$**n#$iPD%xrHQhtj(U~#MO zn5g18tL!!7@@?1nKm#9Nn-(W~a(|umioy3v-Brd(TNoJiR`$(cbw7UTgUJKVtAd}m zq?I<9aEmjY_bQ5*^m=u&%F5++%sV!Mw&wWW+0WRn9vLOONy~HJq$j<9p8WcFb*t;7 zu*c@<->ff%fC{Rpr7GK1EQKoc3gSxpRXi{0*vR|{$bK6Rs?g>>e-UxXY45VF&(0_O z%D(@K!858MUw!9Zt0b{KQd+#1#jY}be$p*ua`qi_A9I;+QDJG1%GbzAvm5V&=jesM z-aoL=b6RNo8ox=mC(H2X@XGMi?6mN_biT@c5~#{s{fJqA(vtQmPih`i9(Z`*EO=;i z^=6hIyRY4v4;tUyrG0Ylfh+$f1Y8QaEpub7mDA(vQMUyu%1YZ+bPu>*WdwB^q?YNf zW`1_^;>KlHRS$fgBxAc)e22=){7HZ8AAm~MNhX5f#!@o+>-lDOtDK%(qjHkFL7ZVZ zqvp9uEcFwf_^(!8!v6S0#H1}zo?$AMoHxWQ7$XAbsCZ7=V)Z^_?cd((PgOj*A8dt1 z!jXGFKAU>p{kHX0LuAnbb>84`ecAPqvI@2bj2?V%h@BJ@A*<}k{3Y$dJkaQtNtkxS zb@iPqtx^;x)mWbVcR=sJ@d9CmP)oa$yH_bMX@BG_IB7|wcTw>q<72nDmGL!#vQqy-C=6|4&n2brgCQB~A)wwl>^Vqm%jZkM4)pR|PM^X}vY$;_2U4gx790ZL|f=)i>&` z;+vuBe*BU_ZltV%e_x-eu3k#X-5lH)q)prLLgT^5k*ZCC%mmblvd@#8!vm4~=>}ksmo;<)ksb;&C%On=hX-xS{VW9Q? zOIUxOR@qyZSvhI*q&IADIAenDDu2CF=-F3Rux1^oQ57{o<+`e6&&8`^`%g{)* zc-lrj)yyUtryI@HEp<-b zy=pjV$$XC@y$|)E#?+;zJ3N0%OOGUZ7FlgD{@{IpzpHr3K8_FDR6vFogBn;SVxH%i z=5fmK-3b6y3R|?!v+lbRb$g4I%cLuud+UNXE^+-V@nGpyL8;k$K_g3zdMo&5H0$;8 zsp{T2+@K!fex^Bob4aS@hhHl7;j&7eRRQjg6Wk{)(fhqz#eQ91gpcPm)t~GSP96w6 z(BCzAiC#3{9?g@#S2-`)SyZCqDK%R~d(s@19Bvu*JJFyN{>8zXVSfJF(vJsCJuf{f zD$&V|i3^rp(3-tAmoq1Pj-n^`)urCY<9MgGWrM=JpkxhKIpcbdPY+)ScwTDuF0x*{ zu}{VG)jWp(5wd}*CoicSXO3pBXSfqJN2T;^&;wIXy8v0Gv!Gu1r5ma{O;27taJexU z+*g%Lh;|e2-@cM>qKdDn`|(M~o*uY%OL>*@mV`LVX;(@a^;Y%GXjZ+-IO$YQq^tpd z-Pub?yLo@?RGAMd64%B}>StIEnxa@@X>EN{^s3<1Np~haiS3CKDK{yoEu3_Pb-Tf@ zH_sMdRlHOKDqwwmCgrPIvfN;o_+t*5M_gqiXt8 z2~@@{SUvepjI1F$sJ)|g`Kb4CyZWU^OSC^+Qi%tR|D8P<-5?+C?lEbJ#OR-DRS&1_P?cI(!L>7ZG8rn&L52JU@*OCR3aWR)OS^Ute0RkNUA5;thj zqImL?-v{1fJ;YPbNA3ITxdD@3eB6WD=UU3be=aHPi19_l$er*6~eP zVpve3vr>E83ceZa`_nQF_b8t{c~x-IlAqq2WGa*k;z2V4QET->*h`L{`SHVkk_~%> zVqC|y4=fgZ7CI;QUNyY515~0-^(blMS<*^84sW5pjFdevbWwb;rbXr^y;cC7TrUw@{mz0IHeClb`hdN?VDNhTgN zlNa{-&8r4IuTM)=elzc8T5j|!C+gK^>qc`GORLWRdsc`4xez@mMC;_r1K$n=9(W6? z#4>NZlb5sK4f3g|jI6iR_S&fI*P-qic~RNX2EYCUP1^NlmCE)I_cIe0Cui=s#v&Il zYv^uQztnRV!;i18I6N;!?3L~>@t9=tc3+I_g;dXTo<$5Bgg=~bxE_Di{XWyY=}(-m zDqd3gv2eS}${5i2Cw~s>90nbIPy_hzR>luAuiYvJRp47E-Qm0gI;SN38r!$EeHZ3b zK8*;HpA#=@zz-UBy1mCLp|9qj*W{xATjwkVh0#aPBJmGud;X|C^f1WkAZ#Y)TmHuawT>6yxX&?tXz{3PQBVQ?9$6&oab!Q3;? zqex~kb80(7y12UM=dC>#8~#o8%v;+xQSIc#jVhV1R4nBy6hBneES{+1x$0xagZZ^j2R9>c6>@0Dbq~lxUHR(C?ZU%Mc@1p6Rn@gELd{Q~C>RH-jl3Djc*K?Ma-a9Lc?+80P5$s! zCAKCa8y48xUom_=_g-!1Rx77TCY7FctQ9xoCM|jSY3{2AMbA%vRot0pGqp2M7gP7t z-rawZaj)&H-I{h(cG8lgpyr{Md9uvpBlTjY7JYrHo^vNX2}xjg%kSB_9JKt7_qZ@#z~ZQ*@b=z+_Fot}E@`X;Ud6&|I2lXg#*VYU(d;R2dp zlImM48EbQIhn35uEg9g{9L*lep0TxVot49+V^8k9YN(6~l2uq4a^3B?_A2Hp((-;q zX&|3|RQ+l3VIrsrc4V#RyA^#GJSNGjS@PXryTSZJKu-5^%3p>X+9w4)->vGKs0FH_ zO2a1QtKa0WP%Q`rHNvG@mNU%HTbm0?R#76LaWl=|+pb+(*>}PD)@qR536=$krAKTk zUq(o6+ZvtSzp`%v*Pq1F29=dpq8n$gR#x$pviKis)0(zUzFzO->&CMU%8lM#o3Gga z=d-ar`SPmbB@<9v=+z#T|EzB~WV-Y9C#iT&-Y)!M<+WS8K;=N^??lkjfGF`ByRDp7 zUyF)n+OuSr^Q2=BHi70r&xB^LeYlxt(yr3C7FQWxwfd`nY|QkO+Msfs*&S3hnG|df zVSlkub*Jh{PR}x?GDg1x_swL{}%X7y29=G&aa4P18+eQD70Vg zf6n;-TGZ!PeJWpXZv`zEc>CZLgYAmvOmWvHUtxb9#(rk<{Oul0?#HF(?O(w+LFKCV zC;bEUVEYpI_^eeKVl>Gf6@Sx<+9JkHenJffv=$&+5oxCIy)WE-@?YYjgNMeI} zfh#DCUv2%{P@lK<=iaR2dIosQHf-`13E@;`!&Y8byiNRK@(H)6)z)# zrssyq8nAEyC3_NiEZn<`g?ZD>M z)+(7i?^yN)${PBERwKk&T`Rc5TC)XIT9p2i`%wcLb7C&ZFKsxc4i4lmmY4S(*w3*2 zdf3VnvIllIE?2QM?9>;W5_b6FMwOM{C;d@4nRwuI!)eeqqagjif!S|C=QS+p{NV`N zpLu)z)@@~_Ep?~lDiVW(?B~o+i7Y*0V`(*wL^#X^47$Z1a|d)CR_5U^;t=(zcI*6A%A?~+R1R?Sw~KmWfUeTX6me%$<4cP2PjO2PRLJ znfYYbD}|NWU~54w;CddL){D|zpgp6hoF5imy9GKp$us%si-=20WJ6>Z%-`f*+Mv>V zvhpe;_XW@z;#R%hzUkrYD>lDlv;)@)S@pa%E3KR+En)mv{fBX;q{94ZPYNDV8^H>;0+SDx58hqck@!pP17E^smFjbU?)?aI$UFmz3=`#( z{F7za_DJm50;;x3@4o|0NAEeO?0FYrYs0l$QC9_>%|8GCFCJR%acM@)R;z@@KRT|L z{_ZJRW4Bv+#}X^2NmqD{mAn2o>swD$$-H!J1>c2|(7o%^i3UKxXi*lZmp=`)>Y>SM~&29-E>zePQ`0V;8t?)2D; zOfspIX3$^RC$U4E0d%zWCD2^b74bN$u=#VRAE_@>@!UM^Nzwy<&^Y6(om*EkU(xk^ z=lkiX%5k+y!w(VtR(_AW8CC5)>FHHP=BF4@poIWrKl+&tCT-7)x@`JMHtj((%pNG49 zyxQ9kMQt62cTdv8Se!>2G61WcZxFnGq0t%+(7i(fb3wd5GQ+dAa+CQ#}YETc! z_Q{I~;ptEE9?Y2;&#>j%HI{9OCU*A(ZzMijf7_ty+lJTg81)$S81&}+e4Xl9GjqPl zQgEX6_6%cC-+IlD`5x~c(Ta%NsVbhYCiFJ+Z@(5d;mNsI5}udl#Kg)fWE$`txmegb z{o(VPNxvTNdDUR};nKz>zbjux)PB1Q3ZUhCxo?QySO=QIoEN#?%Hgny@xHzPl|E^H z|NnjMR?`M`rf5e0c|Tu=9hltUJ9FRkZ?WfJNY2h@2xquI=jZwRg$X*P-HVewCq2_R zse54J+O3ltzcZfK1@&s~e&lh}H?-97T$QZix%rv%f=ObhS4U^>e>Y!L{I1+p#z`h_ z>7ePn#mS!EU!Qt$!~6KG)zuBspj3Bv>XUcZZs{|{Gfe}{#avPDU(GimY+8!shq*K3 z?H6y|CbofdgXIRv#e$!b!#-x)Cdj&7-*cTw?x^$rDV3H5){CdVy~}uq`_7(A>!TZ_ z8(%lPXS~jE-@oYnp8sj8zM`NEcQ$y^=jiO+jO|SIjrTLWCM~&XDexoqf$derNlPMk zud;Hul#s*s#>swNNLlCNWY5|{^@7aOBN7%?(@OS#jn00pwsW&pis`g4_7%nZo}XT( z;>kVr$((Dq<}<%vkvCCgr90?Eo@YuYgWU8leNX*0>Da4<_q-H5Cxt14)>AOvW>Pn( zS`8Y!eI;`{${JLDm}G~87A8+&Ud`OLWa~E74@(~LcuGzGoVHG`WG-k;+3gip31aV7 z@&!Eqp|C+EGv=PJeVm=D=cO$X%eQWe16BA}!6}2yGtaX~WrKD>9;g*DtBUu>@oTq& zL8a*CPqqoJr7cSiR+N?=IPeCP7L!ZLK>M8>#NCd62l-`BpRT7=x5{^>cINM)+dU>- zQI4~o2APwcbWG!9Wl!7jc82@!9hPn#Ir@U}7e zWBZv&DlZS_GS9gZ^*J%hb5dRhIZnfC4b!Hrs#13Rw@CO>+vGAZm@>&1_@ zR~cW;;RT&jzPDJXz!4M{wxAZ3Nd>51GHZfLxtb+gg;qfnsMR_vj-4TYecuF?wb!m* zWt_zJ6jZW(ARpL#ztBji;yoe|U6$2(=p3@lfS*C$@)m~u+ z8Qc8)MZ}~foZdyLlm0f^HiDZ@mqLC$zILk{l!p0VzIw&r*}N$@`>p0xLFNtMR>Z|{ zP&3s@Ms{^S$mhrOP98lV4{8r18|gafNr~I_;6A22NI0kRKDZy9JsUJRD0ccOg){Gc;4LHpK@hqHT33ONf3=WdOY zwVr+K+nD`W!oc8L6yE%EU3&V;9JA@V)IP<^8E`yJ%|@?UNsnk#u`&& zC1k5#MtuIb0#tJRSBYek>8rP!sFJC;2Q*k|1IkyT9-j`YxHFtTzTMkv(vtZ%M1M4c z>M^Ln^DakKJC(Zhzhzq!Evx96{3-dt>#KsvpmO_^*($yntnRk6`oR(Tcghp#1J&Rf zZNqWUnV%5Xw@#YFY%~3$wAy-bJ$d<|d35$~kZ0?TeQ!v;DmaO4DdYMzeJ?gn2dz+( zs5L$L=~agz=m4aZn>dY2kf_Aivn4(yk@nP!=(pr?tvDix!m7!?HYU8%6Ai%7+USNN;tEpMCWCr8E6`K z_bTQqp7!Cg3ZAdFtAsPWU-xc;%F1R$6!^|m`9C?uKEeNiG-$qV<(bospdoor`=b{( zE;+i5<;HTWMeT7+Ye0*!lZ77KdDUU~`O?NE?6-DUC78Zj!55%zyLqeG+y6P)XQHyD zw_Lln?%f0vje1Vds)I>O`an}qQhPxA20SmVQnlQ>b(`>qv5Xk+KW?vU=i-zBaxRI2)h+ zR`5V^y}LF0{`rF1Yp1cQXdo__#Vhw8aPQMbILUqzwVB^M#YY$Jt`+>_o+^`P*S>f@=WVhMcJZ)(gqdY zi>g-{Hy^mTammMdA+iQj&(!EB$sI3_h^kzF{9@s1mm@I`ejZRf;K;*vJbUe{_`dtS zleW)$H2-^qOALDq_aA{BB0G$Xgxc1&5@^;aqB_$v-yT_v-wj_WQ*rc2&&sj>Uu_`o5owqTFZHI_2gzSIx3 z7h4ZB3l?U&?9o@+Chyq1Q4~}DP>)Ghj4TVZKIkOaZP)=?6w!O^x$+{-_DGeL(~XKX3yMqIm&93VDLo5u zFFA7XD&r&*7k;Meq3&luQ{u<655M^F@D;<>Yp=m~OE|im>Frpo^yq)OfyqCm0+kJJ zxi`1GVVuKqM^Ny8yvv&?S(TNQMxVnE+y;%AW^saM)Z#!(IfJ}GCpcO1-v9+szl!Iq z(rD1!jH2hGW3L!I_ioYL;9u(EZeca;imG^enmGHe*gw}*GSfgKlWh4`*H+zSQz_?tM`n*{qAy8Q3~tsa8`a~^1v!Vu6g?YvXhAiA_WTrUEajYDz6Om zW5@$lw<{m+c^NV3N;asRebsU14_mYIWOXL)u3{C>OK*PWxY&UD&{bz<_o;?{d}?g` zok;;SkJz!x%Ie%J2G8ElM_x5#R_w5HSo@9T!QHEZwE}{#-Hyy>v}ZoY632OF<=R=L zzZssp9?2Bk7+Tu1q-y3*h7W9i?s`vJvJx~<_;nVjm1?D8ES~;sc|$tm|33b9RnJ$8 zd>bdPR#sVge9y~>psBgaNzY$(Otao$TWf>r1 zn?3c}dZW*!2N(~8f{NzM7jZ&@_e#_~O=V=gSADtks$p7jiOx#zbtlfWUKQMYDv@)1+48M?h(VRigfby;lWe4azoubeHIPd9Sy*@#8nvIuXJ3>-Z*y zs2j_({ga4@x~l}bo+?sS!81q|)DS3*Nz*%hCb%)3>2u@Jqo74c7G~`Kwplq%`lV(p zykq4q=b-$za)P(R+_zle2DOS#?6QHx^p!6cKQ>=weAUD6a^&4r!CXcyP->e(I4op{m^jOevxs_W`@0mR_4)VU3r1J9nT2OlyV)s`U&>e(&-auAN3RNQJ~6vb)%Qu~RYvUxzQ?7enKrC< zJu>a8Vy=+jYS$x$2fiL?Z{+Qsd`n5<4$I%Gpwr;of@bnF*n>7htxQBp)-%uSu``Zm zkvaR|?Y>DWEBA&m`}K8PUG1#0GJV}zz6n>d_1E%cXy${m^Yyf6dqFmX;<)1S#$PGk z4`vHK)ZKeoK#-krI&(b3Hm%;w_2SI;yE}MSIji)>rP;CV;fnwrl@Zijae1T4%Ih++ z-jl8b&-}@op#ES#bHB)Qk4Z~Hw+nw*_lm>w)y!B~xKIb> zVk6LK{G~4!H=4_4-za1Kr>yiWtlcEkB}ZEDKj$3gH(_@#GyXP~kh5QC<#Opo>a+ev zesCjI0hD+5J_EITB^qe8!mXYSX=jvM=|oF-L0Sq>Tr&ebbODRnt5 z69fw6vcS>0tU;o_8STqIL-DN|EFm{iuIm`O{8r0<9E>lq4rEL8B!=HP%`&4_kdzK#Hvaq_AVzt1K z^;1+<`u?+13R~YdVadE7nV@7G&7c2%?zD~@QWajM?JB$%S+6oGgLY|D_{vBBn!76P z_UDGxN=fryO$e0See;LKgRBSl8<&fze?5EO^~k@gf|K0zjrTLm3A?N48DyAmHBALl zMw%=<6EkP#{3HWAJJyIO&?IzN4*LVp`1uv#zCP7Z>s3|@RQW*jzlyt8SS7fCW=r3L zv(Af%#T!Hm;#_Jpl&q@X=__69>A22#ohhE7Y>n=#wU!5_D<>^}CE%&*$501qdj=_j z3&z)P4!e6!GLe~CnGU+o&b2--V1mlZvvv}Kv%}myg7{-VE1tjib#<)h%V5k;opi-i zJdC~P#N(@slcbjOn#=w^#L{~x=0Wp;>&i*5U(HDD>c~}2vMXT!;QAo*sHYUqUHdp$ z#mp~8pX(mqWl`O z9b=57AiL=HHB&k&s$6Pj9OOQKo*|Cw%*wTwRKl3;gard-l~x|9esTWvdKJ$o&?4)g z^`MC?Pi>jW7+A1e?zv^HERgT%ezR27I71u{*_bpxdmhq4O198ER|3LRi1-Rsxnwi+~ z?~wh$vqAsC+MRDdGv-@Q`=x2Tp2-fhALCNT&&}&$c}w#28Exaw4i7ROJOd34euyR~>BN<7eA41Pdxlk8oI8O*0Y9x0<#r-TT2|o@2+KyB(2MPC6V| zQvhoF{Z)RnSn#9rgXuhN$Jif49^F>0_uH<(RAPg6Q!MCIN=i-u9Xcbm$lItmu=EIr?n=H1S3LUq zmQEGsi97a1|G-_rLPwWBp)POa1f4C-B|wGBI>Evumm1z3(iZYF*lp4!<}Y-s%r0$M zA~ka-&yQrtja_a>E`n-~XP_SSlDv~=jviR9^vL9a^8x8bOHfbc>+SolN46i^$1zQX z_xjbVjFVVoqy)3mK`V23H{0*42@l#1T8of$uS6$P$$t%B1f%=$tW7%))Fs#3G1_ZLA80@CB@RS8%|zSiv)_Xs9Tt*5*dH{2hJk-&sXvH#;C)qb(iPL0mFX^jq;Bll z(k*SCl%PISTCiyEYi$P+#dS#ymaLz2^pK*Lm+2NO>O?o@4SYJ^I1Q18EiK z0`?dClr}6W%4dBCI&LC!8YtI&oyE_r>Uqf{<=M*v#*M;_?Vx7xtJ%w$)`N5Yu2rD( z`xYx7I?SJ}lvJB={S}|5)FN-=;>6M;9hH|s&B6%T4NRc9kb`-G8)HjbmRQZKlrPZP zum#k~iG1=sZ_<)DkZ&frsX>~&ZyWs|A5Qn2w@L@57r<9%h@kz5DoIH?sRgia+ zzQJ-Ur%7!u_PlBUnd+O;{Hj3|w7f?jblh5qw()s(J5cR(Ne8qp?UgCNwD+VX6HlM1 zHu^mGz`QS?H%w9S6rIPq2eh2f3e1G59zuP6)1QM5 z0n!1jr`6c7#L6K^+4S$S$Gbrb?_B=ujTV}@ljTQ!BP-~X+_OyQ!#$xTtk!f$emipb z*Cds*%VHZr(?mhjQ=S<;P`@fWiN(fTY1^v46=H(f%+;WCTLfa~&Fl|x7x}O(*;6?4 zm+x_YhHlUXe-^X;4&BwtDpyaRncYwhY7v=mgW6z_ay+XATyHXMW4Ghg0gZsKTx|#1 zP$F9bx=Gg1;?IXiuR7Rn2uCc2g|t#%pQ>-l-;Rtok;~8cJh%snWWo3!s+zY%JX3CDp>XT^;Si8lp1U8h1GRq)`}$N(TNfwa08Ndy zz4`O1LCG6*bYc+bjHWdQK)W+cly-xP?J4$)AwUjN5pcgMK?gpm`z;znZ-lhML_+b$u}2RC9u8&wE+Yxt4bS| zJUembcSCaHQc%eAo_vI;UVEoOf}TZA=iEe6gI&;0>sThWGI5}p1xGnw}ww+lRwzVe&f%LuR5H->Ejw3sLNA6ZPKrl$FCSX&rX^7p9$O` zyu^bjjIU(P{8^Fq&-g>ggY}K>pn=h>$#<2LzJuzlj@2K`%skJ2T=c3Tu)AYzLoR4# zLdUtad>YTrUz?z{Pl{#^HtNC7>*dw_TS`hy&cQ?4cl`6gN6_{ZC=gXRk_0dQp&8l%OB^0BEl&f z)XZOZW{><2VVlFMo>}Vi{k@=h|J9T;du)yS+2^s(0iAgj#JxvNsYZCO3h!~yR#KBR zy@HC;BOPx+D~FxGSQI#xx)}0*^_=B%+5Px_aQcn{9mKjh^_k^?<$=~qt~_X#_Tjs?=cO~C^LA9+!`OSES!a6sGv}*^j?G!|`M%`A1mxfT-OjPF3*5KtML*=qE;@WIsswV-^tmIWLt zYsK4rRXl_Cr#_o>#)h>*%|JfiV}eTNp2MKlGl%D^hU|}K%ARL8YHmm`J<{=p`3$H+ zQnXrbwScjvPe0SBci+njP~lL!af6kEik6rdY%M^Lb;>jS#_b{H9+S2RA&SLUy=V5= z8$V|}&$bVA7)(&}8n!*4QGi=|#?u+YL91tr;zDE%l)$@=1az77*7apDfNBfS3ZPk! z-@Rh+d^>SwJfj_GVdo_i-Bs|;;1%ncKR<)+OEE791Wk4E7J{y8EIk5>*e!FES2Kee zJ4^I-su;_!?aN@u7n*1?lXn&KvV#{lF0qT4FcZ{C>iJA7Y(+%+p@JLv57Bs13|F$w44p??UJ{g?5Y%l_YG9mOl-!Sl=9+xddO?E@NvxnzD)~DhvI;Bb8hu`VU^i$qF{-g0 zH1h>9n)Ae&qceYMCR9U5HJ5OKHWIZNeJ*-#b|+>cLM zw#gCPPn~v!-5iva)}Q&K{$Mp|mz*zXYdd75K}A>H`2FcKl?TopczM-!l1lH5d4iyp zhf3)INQfU+PCEOlBNDVGYWke{Grd3T3fg7}cLQI#nE=E>y}x zga)N>m9-9_K`wo!^9;`(9%k_j+HPyFWVWJj!jfsbnIb?X-RYN4UP$CyPP?M}{b50J zB`C>h`R;!y@c^`MVV0}?=`-%2%ae}X2i^7RG0CLwc?&H6XU;MzPE0$;zKz}P?1Q&^ zC#jU4jd`%(6^Ccm<})<{J9h1Io-}Q9vWv}9t0b{E!Jx)(iC@~UN3-r1mgr<^_4TQ) zoc7qk)7kjj?hmgUszFBkn!QAVZ}#FR*f$1gSA6g$1U? zO`qw`*v@DVs@gI;KxayTOGA^nQnKzxULAM`uIAIj*-g%XnhCwne2-5GN!KihD{Wcw z?&O*EO!Gm<*KkI(ft-3Cbgz$!XV&gBHrh&M%yHaj*v<6)CaGjDnaj|FVi3xAG)_@K;buLo>u=!O-8>qn&44RoK)jM~ldbM&$`Wx4R*NoCk zj5!C6h%4x_$uY_?$(=pp?k2Xz~N-&=B z9^an%Wik~LR5Fd)ndh(Vo3LctsWZ2g9!)=R?W*o1leF3d`CY}*7w>`UC71N-j<@_4 zR?|$tY3kv0kf8UzFxdq+1qF*6a~qd4M)&@`DRhIWLg>ShjrRT#NB93rdJy*@?}6Nd z@B_KY^?9s$Y<@p(6)PlxskFL9J*ICtC&Vf$NhQj zdwkNaSF5iw&YIZ~!F+@9M&+CHeFuyi-ZorK|G4-%!#taB=|Xk>NeVJ}-2Risz-0Tw%fJv}dxQ zE@hH9Xu8Kh(T=H(mwSyn!Pn|g`IME?wyGPcNWA{tu%>3?t zMESrjP;|S1PS?v4G!(zVY{6k6a6`PpDfRM%9OG}#pCv z?&N9vG`FI2k;=-@ci>v=Ru=@^TrJ*xp#Tg~Q7-jlAl^jWH8KGOrW&@hcf&bXT)o^g|f=cFYc%ep~V zhO4Z63MpI6n7*y*iwG4o6t4g+GUYv~I`d~isY~wmZ%9hzG3wuUQG+xat_3k2Q zQtYYk@ku68^H=b_nB8$hSLq+`4q=O#2P=iv?lNr%2OY87D){kI$A>>9-6_wM4;UUe z1d4TiNUZNS@t&k&>XH^WZ6-ToJ7c)`bB{@1>TN++bllQ07H6_w_in44OjS&|-?%wj> zJg@W2AI*X!P<9lr1JzJLrl1zTC-3B$>5RLXjvH2FuT}8`O$T2(6AK!?dHhBYH0ZlV z$^H1GU61P6oSA&jUEH|j>if{YIKaJhq;$Tx~!2E%xBJH`6s@?zc47? zhWUp~fw#+^(;o}1Q=UC<)Ccv>t#S=NB!C)s;Du2trU9VJI=FE;<7d#_xGJ81w+5Fs zsFWV41eMF@vJO1FD!BRun4^+zeJ=tuJgv65%;n75z8P)t%>AM69+!CTaQr#{s$*SO zN2&6oy$AFgCO70}cUNT_Kd5IgcRe!S?TFM>$EbzdjefjW_nee=c)hVPXl?&0P&Zy> z{||imN52S`*FL^ zxLC3v8gvBQf#0Ay&gHtxkynBr#n={~>}T}X^1F0E?0`M9x!aNGs83Ck<4&DnJz)65 zda+7o*&R@$GDsK{@jIZooYgP9*wTefR17~@u_ZsA+^8OUEOvz@*V+ekf=-&nwQRazprDx`;l)~4SzY$tmG=l0wuU&P#aJM+(_FRlomH>=5OY9#&FOMGpqdB z;FeA?sHMZy9?rgI$zBlCW6#ryDlt&=cgwb(KHD`qD|`1%nfW}-y~NQaM^5lRUrf(= z(_61J9?a_a;o-6-T6VGhhp-2?UU7H^E&oxyN5vBo$Xn0YbRS&na-6Xobm-Ks?AKt+ zJ~ti*jUdfAyoxz&QhTv#Y3t(0FC#&P*u`tB_-3f(Z<~I_>^pOPpzOsm!w+H)tR8H2 z5K+%eyT+&=yS+}%mX$L z7Cut(4Ehc_m`@Uv45osbTj%NoFLp^kQcBWJI1TEsG%Y=_^Qxfk$Bfd3C2rZLU;KCu z+NM6~pONwVRec$oJ8n!o=&j+;W~OuQVnHtNpLCZwVuG{7j%O$suV?QAorzs~Oczvh znKpuk9hUT+IMX`QQvQbA41OEXro~r%xu6RNl|iermlR%O;9Jo*Lk-jh77b5%R(n-Y z7j*Ja$h9?mGeBpQ+<;PX|%+^u)s9-GemJM?=-*j}L>$D;dZD;xh8|DbfVj<0;Q#V6~Wguvx%!Qre-58zG}vz9kW*2TVY{Z_)G+_AQ_m zP;ll^-{UhY^*=b2wyXFa4tnt8OiY;UB{#v3A`gD^_58!D zhRmusPzBYw`0-0nIjOZ)Lbm_owq(!T58r22hL*ZWyB^7In9sl-zJ0|J?Z(y0k1o8L zuuodLb1zo~=uF-#QIPB+0zHQ869YOn_wgGE z!QQ%)J}zt6KzB}hI)4x-$Sif~2DdfMdi(N0Ll>eugevMwU2eM^i4y#%`QY?{Usr9l zwptdrftmu(LXLllOuNUjXXh^GNmrskh3lj%5WB0CjL$QbvGy^)1C7~jJzXWZ5mXnI z9eLA<5kR2$1ZMMvU1DIWy$WxC(U}b<;9g8EzMl0UHByW9vm_QdqM8)$rvb>>ci z9cw_#EGv~h+<47jK_6 zZ|8yMN{=4%*58az@BPbHCo`{gl8UeYBj4kbRQ^uef5K~$O6Qq9ipKqn-`LKrem7CY zbW(oK^d%21LCX`>J{)@0(CKpI)q!)M0)plKYQ79mb+>F&TIm6=9n2A+`xH(`vh2|^ zmS4e_+1znM!h+di+b-9&U-BMo0gXj0={NcueLx-5kXu_&ou&tFYHNba+n3voK5sf> z!%-o*Z>#U5FTby?=bNyE&vLVs!z8tWjM4)tWy@l>-|)PYvM*Zp0(fk5sj0nk+B2gE z&tCC)MxBc``h4kChgnC*+lKB2=2g*Gvh>-{b#|zSwtucPn@Y=-x7EYS1FFf+WxWAudaQBWcR)wcW^Kt{ z&8*^?B?L~bvjWoW=FL=R_Gf>__+4Dxb5hn%9>+;-DQ_B1TY`f0oYaBFtAfHe_JW$H z4}Q=58ByxO4VsvmdhJe$%`?ylC(}OmKdGfI(k@5j4t#GsyE^)c=55C3u17AfcK)Si zT+h5m2)x=OO9wPJpJ^#4F-^tu(iB7!!cpJzmG*o^k4pt}K|KLsi#1jWO!rE3R&wtP zm%R{V*FDW->bBm#y)Pqzw!Ur*@82sB7~IjpEWy)fzA`URJ(o8|K=AxJzL&Gl>|v<@ zb+lG)1jXML8Gat`Nh+C9MxXzknREQXv&X>=$3dgMi%pkXIZU!T_ONq_n$;ewgi67U zkb94K8|{Cul>$}Pm$re{lz6WykuL~IvkQ>DR3ccY@gX+h?<=v=Taz2!ySJR*>-PSA zBdF&0>;(;mEqMyAHZOUdJY#M2x#Gc19=Rjwg_Be=O={W{Je{Y^+|FPQ8YHx^b~$2p zRq*spR`C2u+KaX`e=18|yum>V_2ty|M)A~T=as@0l=#^8v8{={yC|+gsG!W{O^oa% z^_epdNEbw?dH$*`Pk&|$+74*i$=;^wIcbX*coiJm4Q>n2xo#$}K~0CY_dTEkYY!w| zWjuWo5{bL7GUiU5+0X2~%38(r8mRD5Hh!O0aCwDF@1>*%qBAQqOFb^T9@%%`dSmIT z=quW@neO*?FlIK;viED>=_gYd|dm zPuY^R(gqdZ2NPa3JcX174_;KH*|6wk8s+YODY55m#H9>dzCBvT`@=y2{LzNZe*60H zyNlv(H68p=G5OU5yOU?K8_Yp1V5!5!>nEx7f_hpip3W0zrl&re$8+pBxE<7X&UxP? zlbZC$XLBdbdOo3}<5dS}8foiYB~TA*+ULraB_~1ch?A-XPHA;pt(Lr0di0Vf&!Vhg zjn{dWeZqqO{y*eMeOAx#KLk{kvw*S%%%-W320p{~E7v?GwVeQ2lrnQC!w<*Oc9q`E zk{g0cU0l|%z5&h28<)hTf%2r~e0Psopn>ICcXk_pj$f@jOHXMV%ej;fIxefWv46PQ z5wY27N%}wOg22)im6dm%f*T;cpazHvZ!D-`e_3)*@7Ib4?;fdmUOH2GB79QXaY=B6 z<-D4?;W^W4(BYIkwcD*0FxSW_W*X(n$i~OZDy;l0R1uz5w+ZCEq}T`52ZC2cFL^4% zG$%y%qB>{-hj(7~q$PH{`G2^AdJ?{npxg|eRMkB2?SM^!BPg|A1zQN3Q1dPEC}n8A z9jmhPt&HsXIp>vCe3$iZXRxxGW-@ykWBsg|_3^Togyu8Mi;S*x~EJ~W>m?%minye%$)NHH8%1QF>_QrqblV-O2 z$BKQa726-3pT1<~E>+|DFxiWY{Nd~#S!>MhmDDhQs3>h&;upoW$I#e+9jGL?;IUY^ z%X!wJbfu*KuR82bp4r^EAGCse>W)32aXhu65*^P;OD3K?v)i~>Zi8@v)C1{9Dl2W} zKwWXYQ)iYQ_`cd&C3B8C!+Gtz8+(6zR?S?tFI4t|AU9|{>DrxF4O6Gi>}NC&FZXyg z=jege#-F*bD&`6ZN;CcEaw+XLX}#KbSt+Ue)r5IJIY7txdtN#b3###ggu(sbOD9sF z_0IgMl_37$3n)i$=`y|p4Ic4XF9ug19#`4jk3=2d3!Sg;>HO$Lg@qhwVMN4QY1#gr z+dwB#*|5n>p7}pg_L9m&61=7CpG}iZ4^uM*hcaaNz!KT-^8@6s^i1U!VDt3Qj_x zVo$~MsnO>}XYR;b@a)*N%YD)pcJQQ)-sv;ejjKW9&U5xEC+%HyzAo?LbFWJq=1iU0 zALd>Hn*5oZ`TE6=U9T8C=N2e$h);_P0ol7z^TYY8vX`_f%3Wl@3AfU=fae3~0v-hu-4BXZ_KZ5W9@J82-v_Ec9J5DL)l9} z&F9H8K`Vzga@9qFhVIX?d^>eUdX;n3vlP&of|;Ug*#1O=megHRPkuh#4|Hkl*)EG;x_e};t!L~zbA}y!LwX-eT-aU3vj@r!*oV1)@lE@uT@X~-u96ux z7c_4d1ofM8>a#~@Y+4Wg__6rFp+_p7;GLBwzt=I;frf)0_tccg2(D(_-SewhHM65` z&dlwh?qDwlXWo5bVJyxBn!3uGyY#>w(B(XOEBi7hcT_Na*!hYtlOs-EaQ<7Yl_y zF5NikN+@@OHmFw*^W&B?H44V}*>kwhu*+L%p6D_N-GV~o&--$CnuPW+(-F_hKs^Fywb3_EC zL*2i4rs=Wvv91GE9=vy1Xa1}Jr=h1WA||PLuAMNmJpGvso4NdaCLL|RNlWZ@?z3{3 zRCQ?kQ}3)<4197Q)8AP=IzM?y;^*{T4?$aaw2D_ThfQ3Z?0LDAaYJ<4yiib2Xruav zYp?h+JIs;|mR#pZedc`N;(@zYbtf%ZXtf?(CV-b`ED1Xay4ttmfhBnU=L$3DodD26 zxk9!LJFJ{09kWb1G9R=)WAUi^ z%n$kQ5yTz~I$+ZFGw6&zspl&NH{Rv2KhJz{(ycS|pSFSQUb&^Tq(=9Fx0Z_Ulb{Ed zGk;EfHNmXABe#J+tlVRBM)?EZtAe#tW-e!}5524CIcwwR+JpTnp23hH^*eE9^N+jY z+WU3ROwx0o9}_w%gf{%tu=Adjb};Bc&#MkTa15@MkxhTL_(1Pf z*-28VhRuSv>t{)KL=(yjJ=_kB`X3qt+zk@DA z3Y_OD&la8e7W`E zG+DFqtQ`9@=H2PfLa!Re3J9)d{Lj(zNV4q;%li({5}aQe#?zVBGu45{LZUMFGlGwv zU-=SJoNqSzJn_sNesDt?OO4}caj!p7lp}eM(dsj#q*4t&QDl!^U?W&&4#_w@E}Pyev(1!#f9O5Js5Kt1D0SDc?Sa)Y)p%xQN2AbDQ)V7kYp zoE^Hx^-;1HU1#p(h={tYxN_qy8>?@r{XzD+O#j$!=o;&W1vK@Xb4XU_`%RsyOJvW1gUM5v3pZx0ijeQ#%A5)kZ z=*Xeppe;RLFMcSSJbBs0!?3jg!k{Y5Hd$77`?YuMHf3}EOHMLzJ08kjawqpH^7kgFcn0OG?o>Is?*Jc3I8GXO2 zAH-c13|gq$uszKEOYEe_4cD2oL4hq@3JGk`fR^W^D*cm@o^fn8lMn82p2QNawsQk$ z_k`BTpa;>Qx%_!|kNvo1-Scs)YUZ4MlTutuU5H8h1acI-%6%zUohr4WNEsW-}Ay0E@_n;A%z6>r=CeK4Tf% zzQ8%ko>%=qJ4p&lK-WSYzqnE5?%eIkJ)k*ZY2(+6A72Jtt8^#p!QBI!CsoY;nevDE z!Ybt@ng#X=_g`^1PWsOLA9NeXuG#V`J2!z=xInFl@}Klx?I!Pyxd%0`OuFJ8zm{); zN})-!@O0J8s5iHwZYN#Qx2idt>;8AwBooH$4`n@`pe9#xT5U;<)`mq^PM1#1Ih~O6 zXPruU$nh_Z*}36t?_YXL-B`bMTWV}40Nw{%2 zvp(xNjdK&1cyfK%3R=Ll`=RG)`!(+-EGhkC^mymQADstkkAK)T$s|u*b>}{-MeNf+ zcVI*r+gkZ;659W6`mO}s4{{GQJ^%dw(z4~6)IAlgweJ%TtX{3m;>om!^G8f+x5~@( zKG5u5<}`4}c9NMQ^KmAB#&0ZoI)0Oucv@JW1Rt%OP;h&ritpsR$3Dz@EMeq*Nu|R2 zSc(p4q{Q%-ALxwcogx)=llJ>OI{S3;*P;iKR|PMLR0WqduuWRS_>cX=*;itoLd#Vx zcZ0(ebeW8b=d5Ox?8!Qe+ZeyGt^?UsXtmMGVbT|4(CV?-g*|=S| z&g|JE8agXho^9TgC$Fz6)?SXf&Gh5;E51yxw^yQWFSBxDKFq8c$5pd`m+Pdecfp|k z)>$b~C(rYejml2tlLrqZOZ4=w2jzxB3($Cs$%H2|5B7kDaE=#8Wq+6YnElS;(e=qo zJT25u{=6y(+L0YJJvK^KA@kle#`+0QdOiQxEIqcmQ9aDvBlu0}RmNXCRZcgEGk|84 zgZ$UB+C_s_iL3$Dij!1y9VUey{`fJu@o(eOqn?vYw9Fa6Cz0K4-7f1rOKm@gP3n>L zFMW?sO1mh∈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 + + + + + + + + + H + a + p + p + y + + + V + i + e + w + + + + diff --git a/design/logotype.white.png b/design/logotype.white.png new file mode 100644 index 0000000000000000000000000000000000000000..c43870939d98337df9e518affbd8120a175c109e GIT binary patch literal 211621 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

P?YH9F`DY9|r?^3l^Bd9N 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 literal 0 HcmV?d00001 diff --git a/design/logotype.white.svg b/design/logotype.white.svg new file mode 100644 index 0000000..1679acb --- /dev/null +++ b/design/logotype.white.svg @@ -0,0 +1,160 @@ + + + + + + + + + + H + a + p + p + y + + + V + i + e + w + + + + diff --git a/docker-compose.yml b/docker-compose.yml index 8418f18..3c549f4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,34 +2,31 @@ services: postgres: image: postgres:17 environment: - POSTGRES_USER: happyview - POSTGRES_PASSWORD: happyview - POSTGRES_DB: happyview + POSTGRES_USER: ${POSTGRES_USER} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + POSTGRES_DB: ${POSTGRES_DB} ports: - "5432:5432" volumes: - pgdata:/var/lib/postgresql/data - ./docker/init-databases.sh:/docker-entrypoint-initdb.d/init-databases.sh healthcheck: - test: ["CMD-SHELL", "pg_isready -U happyview"] + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"] interval: 5s timeout: 3s retries: 5 tap: - build: - context: ../indigo - dockerfile: cmd/tap/Dockerfile - # image: ghcr.io/bluesky-social/indigo/tap:latest + image: ghcr.io/bluesky-social/indigo/tap:latest ports: - "2480:2480" environment: - TAP_DATABASE_URL: postgres://tap:tap@postgres/tap - TAP_RELAY_URL: https://relay1.us-east.bsky.network - TAP_PLC_URL: https://plc.directory + TAP_DATABASE_URL: ${TAP_DATABASE_URL} + TAP_RELAY_URL: ${TAP_RELAY_URL} + TAP_PLC_URL: ${TAP_PLC_URL} TAP_ADMIN_PASSWORD: ${TAP_ADMIN_PASSWORD} - TAP_COLLECTION_FILTERS: "" - TAP_SIGNAL_COLLECTIONS: "" + TAP_COLLECTION_FILTERS: ${TAP_COLLECTION_FILTERS} + TAP_SIGNAL_COLLECTIONS: ${TAP_SIGNAL_COLLECTIONS} depends_on: postgres: condition: service_healthy @@ -46,12 +43,12 @@ services: - cargo-git:/usr/local/cargo/git - cargo-target:/app/target environment: - DATABASE_URL: postgres://happyview:happyview@postgres/happyview - AIP_URL: https://aip.gamesgamesgamesgames.games - TAP_URL: http://tap:2480 + DATABASE_URL: ${DATABASE_URL} + AIP_URL: ${AIP_URL} + TAP_URL: ${TAP_URL} TAP_ADMIN_PASSWORD: ${TAP_ADMIN_PASSWORD} - RELAY_URL: https://relay1.us-east.bsky.network - PORT: 3000 + RELAY_URL: ${RELAY_URL} + PORT: ${PORT} depends_on: postgres: condition: service_healthy @@ -68,10 +65,9 @@ services: - ./web:/app - web-node-modules:/app/node_modules environment: - HOSTNAME: 0.0.0.0 - API_URL: http://happyview:3000 - AIP_PROXY_URL: https://aip.gamesgamesgamesgames.games - # NEXT_PUBLIC_AIP_URL: http://localhost:8080 + HOSTNAME: ${WEB_HOSTNAME} + API_URL: ${API_URL} + AIP_PROXY_URL: ${AIP_PROXY_URL} volumes: pgdata: diff --git a/docs/README.md b/docs/README.md index 32fe58f..bf8b38f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,31 +1,32 @@ # HappyView -HappyView is a lexicon-driven ATProto AppView. Upload lexicon definitions at runtime and HappyView dynamically generates XRPC query and procedure endpoints, indexes records from the network via Jetstream, and proxies writes to users' PDSes --- no restart required. - -## How it fits together - -``` -Jetstream ──> HappyView ──> PostgreSQL - │ - ┌───────────┼───────────┐ - │ │ │ - Clients AIP PDSes - (OAuth) (user repos) -``` - -- **Jetstream** pushes real-time record events. HappyView subscribes to the collections defined by uploaded lexicons and indexes records into Postgres. -- **AIP** (ATProto Identity Provider) handles OAuth 2.1 with PKCE. HappyView validates tokens by calling AIP's `/oauth/userinfo` endpoint. -- **PDSes** store user data. HappyView proxies writes and blob uploads to each user's PDS using DPoP-authenticated requests. -- **Clients** talk to HappyView's XRPC and admin APIs. Any ATProto-compatible client can connect. - -## Docs - -- [Quickstart](quickstart.md) - get a local instance running -- [Configuration](configuration.md) - environment variables reference -- [Deployment](deployment.md) - Docker, production, TLS -- [Lexicons](lexicons.md) - uploading and managing lexicon definitions -- [Network Lexicons](network-lexicons.md) - loading lexicons from the ATProto network -- [Backfill](backfill.md) - bulk-indexing historical records -- [XRPC API](xrpc-api.md) - query and procedure endpoints -- [Admin API](admin-api.md) - manage lexicons, backfills, and admins -- [Architecture](architecture.md) - internals for contributors +HappyView is the best way to build an [AppView](https://atproto.com/guides/glossary#app-view) for the [AT Protocol](https://atproto.com). Upload your [lexicon](reference/glossary#at-protocol-terms) schemas and get a fully functional AppView, complete with [XRPC](reference/glossary#at-protocol-terms) endpoints, OAuth, real-time network sync, and historical [backfill](guides/backfill), without writing a single line of server code. + +Building an AppView from scratch means wiring up firehose connections, record storage, XRPC routing, OAuth flows, and PDS write proxying before you can even think about your application. HappyView handles all of that. Define your data model with lexicons, add custom logic with Lua scripts when you need it, and ship your app. + +## Features + +- 📜 **Lexicon-Driven**: Upload your lexicon schemas and HappyView generates fully functional XRPC query and procedure endpoints automatically, no code required +- 🔄 **Real-Time Sync**: Records stream in from the AT Protocol network in real-time via [Tap](https://github.com/bluesky-social/indigo/tree/main/cmd/tap), with cryptographic verification and backfill via the admin API +- 🔐 **OAuth Built In**: [AIP](https://github.com/graze-social/aip) handles authentication, and writes are proxied back to the user's PDS, so there's no session management needed +- 🌙 **Lua Scripting**: Add custom query and procedure logic with Lua scripts that have full access to the record database +- 🗄️ **Automatic Indexing**: HappyView indexes relevant records into PostgreSQL as they arrive, ready to query +- 🌐 **Network Lexicons**: Fetch lexicon schemas directly from the AT Protocol network via DNS authority resolution +- ⚡ **Hot Reloading**: Upload or update lexicons at runtime, and new endpoints are available immediately with no restart +- 🛠️ **Admin Dashboard**: Manage lexicons, monitor record stats, and run backfill jobs through a built-in admin API + +## Design Principles + +- **Schema-first**: Your Lexicons are the source of truth. Upload a schema and HappyView derives endpoints, indexing rules, and network sync from it. You describe _what_ your data looks like; HappyView figures out the rest. + +- **Zero boilerplate**: HappyView handles AppView infrastructure (firehose, backfill, OAuth, PDS proxying) for you. You should be writing application logic from minute one, not plumbing. + +- **Runtime-configurable**: Lexicons can be added, updated, and removed without restarting the server. New endpoints and sync rules take effect immediately, so you can iterate on your data model in real time. + +- **Protocol-native**: HappyView works with _any_ PDS, resolves DIDs through the directory, and follows AT Protocol conventions. It's a first-class citizen of the network, not a wrapper around it. + +## Next Steps + +- [Quickstart](getting-started/deployment/railway): Deploy HappyView on Railway or run it locally +- [Lexicons](guides/lexicons): Upload lexicon schemas and start indexing records +- [Lua Scripting](guides/scripting): Write custom query and procedure logic diff --git a/docs/architecture.md b/docs/architecture.md deleted file mode 100644 index 934c91d..0000000 --- a/docs/architecture.md +++ /dev/null @@ -1,170 +0,0 @@ -# Architecture - -Guide for contributors working on HappyView itself. - -## Module overview - -``` -src/ - main.rs Startup: config, DB, migrations, spawn workers, start server - lib.rs AppState struct, module declarations - config.rs Environment variable loading - error.rs AppError enum (Auth, BadRequest, Forbidden, Internal, NotFound, PdsError) - server.rs Axum router: fixed routes + admin nest + XRPC catch-all - lexicon.rs ParsedLexicon, LexiconRegistry (Arc>) - profile.rs DID document resolution, PDS discovery, profile fetching - jetstream.rs Jetstream WebSocket listener, record indexing - backfill.rs Background worker for bulk record ingestion - auth/ - middleware.rs Claims extractor (validates Bearer token via AIP /oauth/userinfo) - admin/ - mod.rs Admin route definitions - auth.rs AdminAuth extractor (Claims + DID lookup + auto-bootstrap) - admins.rs Admin CRUD handlers - lexicons.rs Lexicon CRUD handlers - stats.rs Record count stats - backfill.rs Backfill job creation and status - types.rs Request/response structs for admin endpoints - repo/ - mod.rs Re-exports - dpop.rs DPoP JWT proof generation (ES256/P-256) - pds.rs PDS proxy helpers (JSON POST, blob POST, response forwarding) - session.rs ATP session fetching from AIP - upload_blob.rs Blob upload handler - media.rs Media blob URL enrichment - at_uri.rs AT URI parsing - xrpc/ - mod.rs Re-exports - query.rs Dynamic GET handler (single record + list with pagination) - procedure.rs Dynamic POST handler (create vs put auto-detection) -``` - -## Request flow - -### Reads (queries) - -``` -Client GET /xrpc/{method}?params - -> xrpc::xrpc_get() - -> LexiconRegistry lookup (must be Query type) - -> SQL query on records table (collection from target_collection) - -> Media blob URL enrichment - -> JSON response -``` - -### Writes (procedures) - -``` -Client POST /xrpc/{method} + Bearer token - -> Claims extractor validates token via AIP /oauth/userinfo - -> xrpc::xrpc_post() - -> LexiconRegistry lookup (must be Procedure type) - -> Fetch ATP session from AIP /api/atprotocol/session - -> Generate DPoP proof (ES256) - -> Proxy to user's PDS (createRecord or putRecord) - -> Upsert record locally - -> Forward PDS response -``` - -### Admin endpoints - -``` -Client request + Bearer token - -> AdminAuth extractor: - 1. Claims validation via AIP - 2. DID lookup in admins table (auto-bootstrap if empty) - 3. 403 if not admin - -> Admin handler - -> JSON response -``` - -## Data flow - -### Real-time indexing - -``` -Jetstream WebSocket - -> Filter by wantedCollections (from record-type lexicons) - -> commit events: - create/update -> UPSERT into records table - delete -> DELETE from records table - -> Cursor tracked in AtomicI64 (rewinds 5s on reconnect) -``` - -### Backfill - -``` -backfill_jobs table (status = pending) - -> Worker picks up job - -> Relay listReposByCollection -> list of DIDs - -> For each DID (8 concurrent): - PLC directory -> PDS endpoint - PDS listRecords -> UPSERT into records table - -> Update job status and counters -``` - -## Database schema - -### `records` - -| Column | Type | Description | -|--------|------|-------------| -| `uri` | text (PK) | AT URI (`at://did/collection/rkey`) | -| `did` | text | Author DID | -| `collection` | text | Lexicon NSID | -| `rkey` | text | Record key | -| `record` | jsonb | Record value | -| `cid` | text | Content identifier | -| `indexed_at` | timestamptz | When HappyView indexed this record | - -### `lexicons` - -| Column | Type | Description | -|--------|------|-------------| -| `id` | text (PK) | Lexicon NSID | -| `revision` | integer | Incremented on upsert | -| `lexicon_json` | jsonb | Raw lexicon definition | -| `lexicon_type` | text | record, query, procedure, definitions | -| `backfill` | boolean | Whether to backfill on upload | -| `target_collection` | text | For queries/procedures: which record collection | -| `created_at` | timestamptz | | -| `updated_at` | timestamptz | | - -### `admins` - -| Column | Type | Description | -|--------|------|-------------| -| `id` | uuid (PK) | | -| `did` | text (unique) | Admin's ATProto DID | -| `created_at` | timestamptz | | -| `last_used_at` | timestamptz | Updated on each authenticated request | - -### `backfill_jobs` - -| Column | Type | Description | -|--------|------|-------------| -| `id` | uuid (PK) | | -| `collection` | text | Target collection (null = all) | -| `did` | text | Target DID (null = all) | -| `status` | text | pending, running, completed, failed | -| `total_repos` | integer | | -| `processed_repos` | integer | | -| `total_records` | integer | | -| `error` | text | Error message if failed | -| `started_at` | timestamptz | | -| `completed_at` | timestamptz | | -| `created_at` | timestamptz | | - -## Testing - -```sh -# Unit tests (no database needed) -cargo test --lib - -# All tests including e2e (requires Postgres) -docker compose -f docker-compose.test.yml up -d -TEST_DATABASE_URL=postgres://happyview:happyview@localhost:5433/happyview_test cargo test -docker compose -f docker-compose.test.yml down -``` - -E2e tests use `wiremock` to mock external services (AIP, PLC directory, PDSes) and a real Postgres database for full integration coverage. diff --git a/docs/backfill.md b/docs/backfill.md deleted file mode 100644 index 4a28b5a..0000000 --- a/docs/backfill.md +++ /dev/null @@ -1,78 +0,0 @@ -# Backfill - -Backfill bulk-indexes existing records from the ATProto network into HappyView's database. It discovers repos via the relay and fetches records directly from each user's PDS. - -## When backfill runs - -- **Automatically** when a record-type lexicon is uploaded with `backfill: true` (the default) -- **Manually** via `POST /admin/backfill` - -## How it works - -1. **Determine target collections**: uses the specified collection, or all record lexicons with `backfill: true` -2. **Discover DIDs**: calls the relay's `com.atproto.sync.listReposByCollection` to find repos that contain records for each collection (paginated, 1000 per page) -3. **Fetch records**: for each DID, resolves the PDS endpoint via PLC directory, then calls `com.atproto.repo.listRecords` on the PDS (paginated, 100 per page) -4. **Upsert**: inserts or updates records in Postgres - -## Creating a backfill job - -### Backfill all collections - -```sh -curl -X POST http://localhost:3000/admin/backfill \ - -H "Authorization: Bearer $TOKEN" \ - -H "Content-Type: application/json" \ - -d '{}' -``` - -### Backfill a specific collection - -```sh -curl -X POST http://localhost:3000/admin/backfill \ - -H "Authorization: Bearer $TOKEN" \ - -H "Content-Type: application/json" \ - -d '{ "collection": "games.gamesgamesgamesgames.game" }' -``` - -### Backfill a specific DID - -```sh -curl -X POST http://localhost:3000/admin/backfill \ - -H "Authorization: Bearer $TOKEN" \ - -H "Content-Type: application/json" \ - -d '{ - "collection": "games.gamesgamesgamesgames.game", - "did": "did:plc:abc123" - }' -``` - -## Monitoring progress - -```sh -curl http://localhost:3000/admin/backfill/status \ - -H "Authorization: Bearer $TOKEN" -``` - -```json -[ - { - "id": "550e8400-e29b-41d4-a716-446655440000", - "collection": "games.gamesgamesgamesgames.game", - "did": null, - "status": "running", - "total_repos": 42, - "processed_repos": 15, - "total_records": 350, - "error": null, - "started_at": "2025-01-01T00:01:00Z", - "completed_at": null, - "created_at": "2025-01-01T00:00:00Z" - } -] -``` - -Job statuses: `pending` -> `running` -> `completed` or `failed`. - -## Concurrency - -The backfill worker processes one job at a time, polling for pending jobs every 5 seconds. Within a job, up to 8 PDSes are fetched concurrently. diff --git a/docs/configuration.md b/docs/configuration.md deleted file mode 100644 index 08d31e1..0000000 --- a/docs/configuration.md +++ /dev/null @@ -1,31 +0,0 @@ -# Configuration - -HappyView is configured via environment variables. A `.env` file in the project root is loaded automatically on startup. - -## Environment variables - -| Variable | Required | Default | Description | -|----------|----------|---------|-------------| -| `DATABASE_URL` | yes | --- | Postgres connection string | -| `AIP_URL` | yes | --- | AIP instance URL for OAuth token validation | -| `HOST` | no | `0.0.0.0` | Bind host | -| `PORT` | no | `3000` | Bind port | -| `JETSTREAM_URL` | no | `wss://jetstream2.us-west.bsky.network/subscribe` | Jetstream WebSocket URL | -| `RELAY_URL` | no | `https://bsky.network` | Relay URL for backfill repo discovery | -| `PLC_URL` | no | `https://plc.directory` | PLC directory URL for DID resolution | -| `RUST_LOG` | no | `happyview=debug,tower_http=debug` | Log filter (uses `tracing_subscriber::EnvFilter`) | - -## Example `.env` - -```sh -DATABASE_URL=postgres://happyview:happyview@localhost/happyview -AIP_URL=http://localhost:8080 - -# Optional overrides -# HOST=0.0.0.0 -# PORT=3000 -# JETSTREAM_URL=wss://jetstream2.us-west.bsky.network/subscribe -# RELAY_URL=https://bsky.network -# PLC_URL=https://plc.directory -# RUST_LOG=happyview=debug,tower_http=debug -``` diff --git a/docs/deployment.md b/docs/deployment.md deleted file mode 100644 index 24fb399..0000000 --- a/docs/deployment.md +++ /dev/null @@ -1,61 +0,0 @@ -# Deployment - -## Docker - -Build the image: - -```sh -docker build -t happyview . -``` - -### Local development with Docker Compose - -```sh -docker compose up -``` - -This starts Postgres, AIP, and HappyView together. See `docker-compose.yml` for the full configuration. - -### Production Compose example - -```yaml -services: - postgres: - image: postgres:17 - environment: - POSTGRES_USER: happyview - POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}" - POSTGRES_DB: happyview - volumes: - - pgdata:/var/lib/postgresql/data - - happyview: - image: happyview:latest - ports: - - "3000:3000" - environment: - DATABASE_URL: "postgres://happyview:${POSTGRES_PASSWORD}@postgres/happyview" - AIP_URL: "https://aip.example.com" - depends_on: - postgres: - condition: service_healthy - -volumes: - pgdata: -``` - -## Railway / Fly.io / generic - -1. Provision a Postgres database -2. Set `DATABASE_URL` and `AIP_URL` environment variables -3. Deploy the Docker image or build from source -4. HappyView listens on `PORT` (default `3000`) -5. Health check: `GET /health` returns `ok` - -## Database - -Migrations run automatically on startup via `sqlx::migrate!()`. No manual migration step is needed. - -## TLS - -HappyView does not terminate TLS. Put it behind a reverse proxy (nginx, Caddy, Cloudflare Tunnel, etc.) for HTTPS. diff --git a/docs/getting-started/authentication.md b/docs/getting-started/authentication.md new file mode 100644 index 0000000..708a9fd --- /dev/null +++ b/docs/getting-started/authentication.md @@ -0,0 +1,65 @@ +# Authentication + +HappyView uses [AT Protocol OAuth](https://atproto.com/specs/oauth) for authentication, handled by an external [AIP](https://github.com/graze-social/aip) instance. HappyView does not store credentials or issue tokens: all OAuth is delegated to AIP. + +## Which endpoints require auth? + +| Endpoint type | Auth required? | +|---------------|---------------| +| Queries (`GET /xrpc/{method}`) | No | +| Procedures (`POST /xrpc/{method}`) | Yes | +| Admin API (`/admin/*`) | Yes (must be an admin) | +| Health check (`GET /health`) | No | + +Authenticated requests must include an `Authorization` header with a token issued by AIP: + +``` +Authorization: Bearer +``` + +## Getting a token from the dashboard + +The easiest way to get a token for CLI or curl usage is through the [web dashboard](dashboard): + +1. Open the dashboard and log in with your AT Protocol identity +2. Open your browser's developer tools (F12 or Cmd+Shift+I) +3. Go to **Application** (Chrome) or **Storage** (Firefox) > **Session Storage** +4. Find the entry for your dashboard's URL +5. Copy the value of the `session` key: this contains your access token + +You can then use it in curl: + +```sh +export TOKEN="your-token-here" +curl http://localhost:3000/admin/lexicons \ + -H "Authorization: Bearer $TOKEN" +``` + +Tokens expire based on AIP's configuration. When a token expires, log in again through the dashboard to get a new one. + +## Programmatic access + +For scripts or applications that need to authenticate programmatically, you'll need to implement the AT Protocol OAuth flow against your AIP instance. This involves: + +1. Registering an OAuth client with AIP +2. Redirecting the user to AIP's authorization endpoint +3. Exchanging the authorization code for an access token +4. Using that token with HappyView + +See the [AIP documentation](https://github.com/graze-social/aip) for endpoint details and the [ATProto OAuth spec](https://atproto.com/specs/oauth) for the full protocol. + +## How token validation works + +When HappyView receives an authenticated request, it forwards the token to AIP's `/oauth/userinfo` endpoint. AIP responds with the user's DID, which HappyView uses to: + +- Identify who is making the request +- Proxy writes to the correct PDS +- Check admin permissions (for admin endpoints) + +Token validation happens on every request; there is no local token caching. + +## Admin access + +Admin endpoints require the authenticated user's DID to exist in the `admins` table. If the table is empty (fresh deployment), the first authenticated request to any admin endpoint auto-bootstraps that user as the initial admin. + +To add more admins, use `POST /admin/admins` or the [dashboard](dashboard). See [Admin API](../reference/admin-api#admin-management) for details. diff --git a/docs/getting-started/configuration.md b/docs/getting-started/configuration.md new file mode 100644 index 0000000..ce2fc48 --- /dev/null +++ b/docs/getting-started/configuration.md @@ -0,0 +1,33 @@ +# Configuration + +HappyView is configured via environment variables. A `.env` file in the project root is loaded automatically on startup. See [Deployment](deployment/docker) for local setup or [Production Deployment](../reference/production-deployment) for production setup. + +## Environment variables + +| Variable | Required | Default | Description | +|----------|----------|---------|-------------| +| `DATABASE_URL` | yes | --- | Postgres connection string | +| `AIP_URL` | yes | --- | [AIP](https://github.com/graze-social/aip) instance URL for OAuth token validation | +| `HOST` | no | `0.0.0.0` | Bind host | +| `PORT` | no | `3000` | Bind port | +| `TAP_URL` | no | `http://localhost:2480` | [Tap](https://github.com/bluesky-social/indigo/tree/main/cmd/tap) instance URL for real-time record streaming and backfill | +| `TAP_ADMIN_PASSWORD` | no | --- | Shared secret for authenticating with Tap's admin endpoints | +| `RELAY_URL` | no | `https://bsky.network` | Relay URL for [backfill](../guides/backfill) repo discovery | +| `PLC_URL` | no | `https://plc.directory` | [PLC directory](https://github.com/did-method-plc/did-method-plc) URL for DID resolution | +| `RUST_LOG` | no | `happyview=debug,tower_http=debug` | Log filter (uses `tracing_subscriber::EnvFilter`) | + +## Example `.env` + +```sh +DATABASE_URL=postgres://happyview:happyview@localhost/happyview +AIP_URL=http://localhost:8080 + +# Optional overrides +# HOST=0.0.0.0 +# PORT=3000 +# TAP_URL=http://localhost:2480 +# TAP_ADMIN_PASSWORD=your-secret-here +# RELAY_URL=https://bsky.network +# PLC_URL=https://plc.directory +# RUST_LOG=happyview=debug,tower_http=debug +``` diff --git a/docs/getting-started/dashboard.md b/docs/getting-started/dashboard.md new file mode 100644 index 0000000..77bbf77 --- /dev/null +++ b/docs/getting-started/dashboard.md @@ -0,0 +1,38 @@ +# Dashboard + +HappyView ships with a web dashboard that provides a visual interface for everything the [admin API](../reference/admin-api) offers: managing lexicons, viewing indexed records, and monitoring backfill jobs. It runs as a separate Next.js application alongside the Rust backend. + +## Logging in for the first time + +The dashboard uses AT Protocol OAuth via AIP. If no admins exist in the database yet, the first authenticated request to any admin endpoint automatically bootstraps that user as an admin. + +## Adding a lexicon + +Navigate to **Lexicons > Add Lexicon** and choose **Local** or **Network**. + +**Local** lexicons are defined by you. The editor shows two side-by-side panels (stacked on mobile): + +- **Lexicon JSON** (left): define your lexicon schema +- **Lua Script** (right): write the handler for query/procedure types + +The Lua panel only appears when the lexicon's `defs.main.type` is `query` or `procedure`. For record-type lexicons, only the JSON panel is shown. + +A default Lua script is auto-generated when you first set the type to query or procedure. The template updates automatically when the type changes, but once you manually edit the script your changes are preserved. + +Toggle **Enable backfill** to index historical records when uploading a record-type lexicon. + +**Network** lexicons are fetched from the AT Protocol network. Enter an NSID (e.g. `xyz.statusphere.status`) and HappyView resolves the schema automatically. If found, the lexicon JSON is displayed in a read-only editor. Click **Add** to track it. Network lexicons are kept up to date via Tap. See [Lexicons - Network lexicons](../guides/lexicons#network-lexicons) for how resolution works. + +### JSON editor + +The JSON editor provides real-time validation against the AT Protocol Lexicon v1 schema: + +- Validation for Lexicon format +- Auto-complete for definition types (`record`, `query`, `procedure`, `subscription`), property types (`string`, `integer`, `boolean`, `ref`, `union`, `blob`, `cid-link`, etc.), and schema structure (`defs`, `main`, `properties`, `required`) +- Enforces the required top-level shape: `lexicon`, `id`, and `defs.main` + +### Lua editor + +The Lua editor provides context-aware code completions, including suggestions for the `Record`, `db`, `input`, and `params` APIs as well as Lua keywords, builtins, and standard library functions. It also offers snippet templates for common constructs like `if`, `for`, and `function`. + +See [Lua Scripting](../guides/scripting) for the full runtime reference and examples. diff --git a/docs/getting-started/deployment/docker.md b/docs/getting-started/deployment/docker.md new file mode 100644 index 0000000..94402ac --- /dev/null +++ b/docs/getting-started/deployment/docker.md @@ -0,0 +1,49 @@ +# Local Development with Docker + +This guide runs the full HappyView stack locally using Docker Compose: Postgres, [Tap](https://github.com/bluesky-social/indigo/tree/main/cmd/tap), HappyView, and the web dashboard. + +## Prerequisites + +- [Docker](https://docs.docker.com/get-docker/) and Docker Compose +- An [AIP](https://github.com/graze-social/aip) instance for OAuth. The Docker Compose config points at the public AIP instance at `aip.gamesgamesgamesgames.games` by default. + +:::warning +This public AIP instance is provided for development convenience only. Production deployments should run their own AIP instance or risk being blocked. See the [AIP documentation](https://github.com/graze-social/aip) for setup. +::: + +## 1. Clone and configure + +```sh +git clone https://github.com/graze-social/happyview.git +cd happyview +cp .env.example .env +``` + +Set `TAP_ADMIN_PASSWORD` in your `.env`. This shared secret is used by both Tap and HappyView: + +```sh +TAP_ADMIN_PASSWORD=your-secret-here +``` + +The `docker-compose.yml` configures everything else (database URLs, service connections) automatically. + +## 2. Start the stack + +```sh +docker compose up +``` + +This starts: + +| Service | Port | Description | +| ------------- | ---- | ---------------------------------------------------- | +| **postgres** | 5432 | PostgreSQL 17 (databases for both HappyView and Tap) | +| **tap** | 2480 | Firehose consumer, backfill worker | +| **happyview** | 3000 | HappyView API server | +| **web** | 3001 | Next.js dashboard | + +HappyView runs migrations automatically on startup. The first build will take a few minutes while Rust compiles. + +## Next steps + +Your HappyView stack is running. Follow the [Statusphere tutorial](../../tutorials/statusphere) to upload lexicons, add custom query logic, and start indexing records from the network. diff --git a/docs/getting-started/deployment/other.md b/docs/getting-started/deployment/other.md new file mode 100644 index 0000000..3d55f47 --- /dev/null +++ b/docs/getting-started/deployment/other.md @@ -0,0 +1,55 @@ +# Local Development from Source + +This guide runs HappyView directly with `cargo run`, with you managing Postgres, AIP, and Tap separately. If you'd rather use Docker Compose to run everything together, see [Local Development with Docker](docker). + +## Prerequisites + +- Rust (stable) +- PostgreSQL 17+ +- A running [AIP](https://github.com/graze-social/aip) instance (handles OAuth). See the [AIP documentation](https://github.com/graze-social/aip) for setup. +- A running [Tap](https://github.com/bluesky-social/indigo/tree/main/cmd/tap) instance (delivers real-time records and handles backfill). See the [Tap documentation](https://github.com/bluesky-social/indigo/tree/main/cmd/tap) for setup. + +## 1. Clone and configure + +```sh +git clone https://github.com/graze-social/happyview.git +cd happyview +cp .env.example .env +``` + +Edit `.env` to point at your running services: + +```sh +DATABASE_URL=postgres://happyview:happyview@localhost/happyview +AIP_URL=http://localhost:8080 +TAP_URL=http://localhost:2480 +TAP_ADMIN_PASSWORD=your-secret-here +``` + +See [Configuration](../configuration) for all available variables. + +## 2. Create the database + +```sh +createdb happyview +``` + +Or if using a Postgres user with a password: + +```sh +psql -c "CREATE DATABASE happyview;" -U postgres +``` + +HappyView runs migrations automatically on startup, so no manual migration step is needed. + +## 3. Start HappyView + +```sh +cargo run +``` + +HappyView starts on port 3000 (configurable via the `PORT` environment variable). + +## Next steps + +Your HappyView instance is running. Follow the [Statusphere tutorial](../../tutorials/statusphere) to upload lexicons, add custom query logic, and start indexing records from the network. diff --git a/docs/getting-started/deployment/railway.md b/docs/getting-started/deployment/railway.md new file mode 100644 index 0000000..f0e7197 --- /dev/null +++ b/docs/getting-started/deployment/railway.md @@ -0,0 +1,20 @@ +# Deploy on Railway + +The fastest way to get HappyView running is with Railway. This template deploys HappyView, [AIP](https://github.com/graze-social/aip) (OAuth provider), [Tap](https://github.com/bluesky-social/indigo/tree/main/cmd/tap) (real-time data and backfill), and Postgres with a single click: + +[![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/deploy/I1jvZl?referralCode=0QOgj_) + +## Required configuration + +After deploying the template, you'll need to configure a few things before the stack works properly: + +1. **Set your admin DID.** In the AIP service variables, set `ADMIN_DIDS` to your AT Protocol DID (e.g. `did:plc:abc123...`). You can find your DID by looking up your handle on [Internect](https://internect.info/). + +2. **Generate AIP signing keys.** The `OAUTH_SIGNING_KEYS` and `ATPROTO_OAUTH_SIGNING_KEYS` variables require multibase-encoded P-256 private keys. See the [AIP Signing Keys documentation](https://github.com/graze-social/aip/blob/main/CONFIGURATION.md#signing-keys) for generation instructions. + +3. **Assign public domains.** In the Railway dashboard, add a public domain to both the HappyView and AIP services. The services need publicly accessible URLs to handle OAuth callbacks and XRPC requests. + :::note + Your instances can use custom domains or Railway's generated URLs with no additional configuration. The domains are injected automatically to the containers. + ::: + +4. Access your HappyView dashboard at the instance's public URL. diff --git a/docs/getting-started/quickstart.md b/docs/getting-started/quickstart.md new file mode 100644 index 0000000..3d324f7 --- /dev/null +++ b/docs/getting-started/quickstart.md @@ -0,0 +1,62 @@ +# Quickstart + +This page walks you through the fastest path to a working HappyView instance. By the end, you'll have an AppView that indexes records from the AT Protocol network and serves XRPC endpoints. + +## 1. Deploy HappyView + +Pick whichever option fits your situation: + +| Option | Best for | +|--------|----------| +| [**Railway**](deployment/railway) | Fastest path — one-click deploy of the full stack (HappyView + AIP + Tap + Postgres) | +| [**Docker Compose**](deployment/docker) | Local development with the full stack running in containers | +| [**From source**](deployment/other) | Running HappyView with `cargo run` and managing dependencies yourself | + +If you're just trying HappyView for the first time, start with Railway. + +## 2. Log in to the dashboard + +Open your HappyView instance in a browser. The built-in [dashboard](dashboard) is served at the root URL. + +Click **Log in** and authenticate with your AT Protocol identity. On a fresh deployment with no admins configured, the first authenticated request to any admin endpoint automatically bootstraps that user as an admin. + +## 3. Add your first lexicon + +Lexicons tell HappyView what data to index and what endpoints to serve. The quickest way to get started is to add one from the network: + +1. In the dashboard, go to **Lexicons > Add Lexicon > Network** +2. Enter an NSID (e.g. `xyz.statusphere.status`) +3. HappyView resolves the schema from the AT Protocol network and shows a preview +4. Click **Add** + +HappyView immediately starts indexing records for that collection. A backfill job is created to fetch historical records, and new records stream in via Tap in real time. + +You can also upload lexicons manually via the dashboard or the [admin API](../reference/admin-api). See [Lexicons](../guides/lexicons) for the full details. + +## 4. Verify records are being indexed + +Go to the **Dashboard** home page. The stat cards show the total record count and a breakdown by collection. You can also browse indexed records on the **Records** page. + +To check backfill progress, go to the **Backfill** page. The Tap stats cards show how many repos and records Tap has processed. + +## 5. Query your data + +Once you have a record lexicon indexed, add a query lexicon to expose a read endpoint. Go to **Lexicons > Add Lexicon > Local** and create a query lexicon with `target_collection` set to your record collection's NSID. + +Without a Lua script, HappyView generates a default query endpoint that supports `limit`, `cursor`, `did`, and `uri` parameters: + +``` +GET /xrpc/xyz.statusphere.listStatuses?limit=5 +``` + +For custom query logic, attach a [Lua script](../guides/scripting). + +## Next steps + +You now have a working AppView. Here's where to go from here: + +- [**Statusphere tutorial**](../tutorials/statusphere): end-to-end walkthrough building a complete AppView with record, query, and procedure lexicons +- [**Lexicons guide**](../guides/lexicons): target collections, backfill flag, network lexicons +- [**Lua Scripting**](../guides/scripting): custom query and procedure logic +- [**Configuration**](configuration): environment variables and tuning +- [**Authentication**](authentication): how OAuth works and how to get API tokens diff --git a/docs/guides/backfill.md b/docs/guides/backfill.md new file mode 100644 index 0000000..58148e8 --- /dev/null +++ b/docs/guides/backfill.md @@ -0,0 +1,33 @@ +# Backfill + +When you add a new record-type lexicon, HappyView starts indexing new records from that moment via [Tap](https://github.com/bluesky-social/indigo/tree/main/cmd/tap). But what about records that already exist on the network? That's what backfill does: HappyView discovers repos via the relay and delegates the actual record fetching to Tap. + +## When backfill runs + +- **Automatically** when a record-type lexicon is uploaded with `backfill: true` (the default). See [Lexicons - Backfill flag](lexicons#backfill-flag). +- **Manually** via `POST /admin/backfill` or the [dashboard](../getting-started/dashboard). You can scope a manual backfill to a specific collection, a specific DID, or both. + +See the [admin API](../reference/admin-api#backfill) for endpoint details. + +## How it works + +1. **Determine target collections**: uses the specified collection, or all record lexicons with `backfill: true` +2. **Discover DIDs**: HappyView calls the relay's `com.atproto.sync.listReposByCollection` to find repos that contain records for each target collection (paginated, 1000 per page) +3. **Delegate to Tap**: HappyView sends discovered DIDs to Tap in batches of 1000 via its `/repos/add` endpoint +4. **Tap fetches records**: Tap handles the actual record fetching from each user's PDS and delivers them to HappyView via the WebSocket channel + +## Job lifecycle + +HappyView marks a backfill job as "completed" once it finishes discovering repos and handing DIDs off to Tap (steps 1-3). This does **not** mean Tap has finished processing all the records. Tap works through them asynchronously after the handoff. + +To see whether Tap is still working through the backlog, check the Tap stats on the dashboard's Backfill page or via `GET /admin/tap/stats`. The **outbox buffer** indicates how many events are still queued for delivery; a high number means Tap is actively processing. + +## Re-running backfills + +Backfill jobs are idempotent. Running a backfill for a collection that's already been backfilled will re-discover repos and send them to Tap again. Tap deduplicates repos it already knows about, so re-running a backfill is safe and useful for catching repos that were added to the network since the last run. + +## Next steps + +- [Lexicons](lexicons#backfill-flag): Control whether lexicons trigger backfill on upload +- [Admin API](../reference/admin-api#backfill): Full reference for backfill endpoints +- [Admin API - Tap Stats](../reference/admin-api#tap-stats): Monitor Tap's processing progress diff --git a/docs/guides/lexicons.md b/docs/guides/lexicons.md new file mode 100644 index 0000000..d241ec4 --- /dev/null +++ b/docs/guides/lexicons.md @@ -0,0 +1,82 @@ +# Lexicons + +Lexicons are the core building block of HappyView. They're [AT Protocol schema definitions](https://atproto.com/specs/lexicon) that describe your data model, and HappyView uses them to decide which records to index from the network and what XRPC endpoints to serve. + +You don't write route handlers or database queries; you upload a lexicon and HappyView generates the infrastructure from it. There are two ways to add lexicons: uploading them via the [admin API](../reference/admin-api#lexicons) or [dashboard](../getting-started/dashboard), or fetching them directly from the AT Protocol network via [DNS authority resolution](#network-lexicons). + +## Supported lexicon types + +| Type | Effect | +| ------------- | ------------------------------------------------------------------------------ | +| `record` | Syncs the collection filter to Tap and indexes records into Postgres | +| `query` | Registers a `GET /xrpc/{nsid}` endpoint that queries indexed records | +| `procedure` | Registers a `POST /xrpc/{nsid}` endpoint that proxies writes to the user's PDS | +| `definitions` | Stored but does not generate routes or subscriptions | + +A typical setup has three lexicons working together: a **record** lexicon that defines the data and triggers indexing, a **query** lexicon that exposes a read endpoint, and a **procedure** lexicon that exposes a write endpoint. The [Statusphere tutorial](../tutorials/statusphere) walks through this pattern end-to-end. + +## Target collection + +Query and procedure lexicons don't store data themselves. They operate on records stored by a record-type lexicon. The `target_collection` field tells HappyView which record collection to read from or write to. Without it, default queries and procedures won't know which DB records to operate on. + +For example, a query lexicon `xyz.statusphere.listStatuses` would set `target_collection` to `xyz.statusphere.status` to read from that record collection. + +See the [admin API](../reference/admin-api#upload--upsert-a-lexicon) for how to set `target_collection` when uploading. + +:::note +The `target_collection` is available in Lua scripts as the `collection` global, but it is not required if your endpoint uses a Lua script. +::: + +## Backfill flag + +When uploading a record-type lexicon, HappyView automatically creates a backfill job to discover existing records. If you only want to index new records going forward, you can set `backfill` to `false`. + +## Tap collection filters + +When record-type lexicons change (uploaded or deleted), HappyView automatically syncs the updated collection filter to Tap. HappyView always includes `com.atproto.lexicon.schema` in the filter to track network lexicon updates. + +## Network lexicons + +If a lexicon has already been published, you don't need to upload the JSON manually. Point HappyView at the NSID and it fetches the lexicon directly from the network. Network lexicons are kept updated automatically via Tap. If the publisher updates their schema, your instance will pick up the change. + +### NSID authority resolution + +Lexicons are stored as records themselves with the `com.atproto.lexicon.schema` NSID and the rkey set to the lexicon's NSID. To find which repo holds a lexicon, HappyView resolves the NSID's authority: + +1. Extract the authority from the NSID (all segments except the last). For example, `xyz.statusphere.status` has authority `xyz.statusphere`. +2. Reverse the authority segments to form a domain: `statusphere.xyz`. +3. Look up the DNS TXT record at `_lexicon.{domain}` (e.g. `_lexicon.statusphere.xyz`). +4. Parse the TXT record for a `did=` value. +5. Resolve the DID to a PDS endpoint via the PLC directory. + +:::note +The spec states that resolution must be **non-hierarchical**. Each authority requires its own explicit TXT record. If you have multiple levels of authority (e.g. `xyz.statusphere.status` and `xyz.statusphere.actor.profile`), each level must have an explicit TXT record. +::: + +### Fetching + +Once the authority DID and PDS endpoint are known, HappyView calls `com.atproto.repo.getRecord` with: + +- `repo` = the authority DID +- `collection` = `com.atproto.lexicon.schema` +- `rkey` = the NSID + +The `value` field of the response is the raw lexicon JSON. + +### Live updates via Tap + +Tap always subscribes to `com.atproto.lexicon.schema` alongside the dynamic record collections. When a record event arrives: + +- **create/update**: If the event's DID and rkey match a tracked network lexicon (`authority_did` and `nsid`), the lexicon is parsed, upserted into the `lexicons` table and in-memory registry, and collection filters are updated if it's a record type. +- **delete**: The lexicon is removed from the `lexicons` table and registry. + +### Startup re-fetch + +On every startup, HappyView re-fetches all network lexicons from their respective PDSes. This ensures consistency even if events were missed while offline. Failures are logged as warnings but don't block startup. + +## Next steps + +- [Lua Scripting](scripting): Add custom query and procedure logic to your endpoints +- [XRPC API](../reference/xrpc-api): Understand how the generated endpoints behave +- [Backfill](backfill): Learn how historical records are indexed +- [Admin API](../reference/admin-api): Full reference for lexicon management endpoints diff --git a/docs/guides/scripting.md b/docs/guides/scripting.md new file mode 100644 index 0000000..571889d --- /dev/null +++ b/docs/guides/scripting.md @@ -0,0 +1,314 @@ +# Lua Scripting + +Without Lua scripts, HappyView's query endpoints return raw records and procedure endpoints proxy simple creates and updates. Lua scripts let you go much further: + +- Add filtering logic +- Transform responses +- Validate input +- Compose multi-record operations +- Build entirely custom behavior + +Scripts are attached to query and procedure lexicons and run in a sandboxed Lua VM with access to the [Record API](#record-api), a [read-only database API](#database-api), and a set of [context globals](#context-globals). + +## Script structure + +Every script must define a `handle()` function. HappyView calls it when the XRPC endpoint is hit and returns its result as JSON to the client. + +```lua +function handle() + -- your logic here + return { key = "value" } +end +``` + +You can define helper functions and variables outside `handle()`. They're evaluated once when the script loads, then `handle()` is called per request. + +## Sandbox + +Scripts run in a restricted environment. The following standard Lua modules are **removed** and unavailable: + +`os`, `io`, `debug`, `package`, `require`, `dofile`, `loadfile`, `load`, `collectgarbage` + +An instruction limit of 1,000,000 prevents infinite loops. Exceeding it terminates the script with an error. + +## Context globals + +These globals are set automatically before `handle()` is called. + +### Procedure globals + +| Global | Type | Description | +| ------------ | ------ | ------------------------------------------------------- | +| `method` | string | The XRPC method name (e.g. `xyz.statusphere.setStatus`) | +| `input` | table | Parsed JSON request body | +| `caller_did` | string | DID of the authenticated user | +| `collection` | string | Target collection NSID | + +### Query globals + +| Global | Type | Description | +| ------------ | ------ | ------------------------------------------------ | +| `method` | string | The XRPC method name | +| `params` | table | Query string parameters (all values are strings) | +| `collection` | string | Target collection NSID | + +Queries are unauthenticated: there is no `caller_did` or `input`. + +## Utility globals + +Available in both queries and procedures: + +| Function | Returns | Description | +| -------------- | ------- | ------------------------------------------------------------------- | +| `now()` | string | Current UTC timestamp in ISO 8601 format | +| `log(message)` | — | Log a message (appears in server logs at debug level) | +| `TID()` | string | Generate a fresh AT Protocol TID (13-character sortable identifier) | + +## Record API + +The `Record` API is only available in **procedure** scripts. It handles creating, updating, loading, and deleting AT Protocol records. Writes are proxied to the caller's PDS and indexed locally. + +### Constructor + +```lua +local r = Record("xyz.statusphere.status", { status = "\ud83d\ude0a", createdAt = now() }) +``` + +Creates a new record instance for the given collection. The optional second argument sets initial field values. The record's `_key_type` is automatically set from the lexicon's `key` definition. Default values from the schema are populated for any missing fields. + +### Static methods + +```lua +-- Save multiple records in parallel +Record.save_all({ record1, record2, record3 }) + +-- Load a record from the local database by AT URI +local r = Record.load("at://did:plc:abc/xyz.statusphere.status/abc123") +-- Returns nil if not found + +-- Load multiple records in parallel +local records = Record.load_all({ uri1, uri2 }) +-- Returns nil entries for URIs not found +``` + +### Instance methods + +```lua +-- Save (creates or updates depending on whether _uri is set) +r:save() + +-- Delete from PDS and local database +r:delete() + +-- Set the record key type (tid, any, nsid, or literal:*) +r:set_key_type("tid") + +-- Set a specific record key +r:set_rkey("my-key") + +-- Auto-generate a record key based on _key_type +local key = r:generate_rkey() +``` + +**Key type behavior for `generate_rkey()`:** + +| Key type | Generated rkey | +| --------------- | --------------------------------- | +| `tid` | Sortable timestamp-based ID | +| `any` | Same as `tid` | +| `literal:value` | The literal value after the colon | +| `nsid` | Error — use `set_rkey()` instead | + +### Instance fields + +These fields are set automatically and are read-only (writes raise an error): + +| Field | Type | Description | +| ------------- | ------- | ----------------------------------------------------------- | +| `_uri` | string? | AT URI — set after `save()`, cleared after `delete()` | +| `_cid` | string? | Content hash — set after `save()`, cleared after `delete()` | +| `_key_type` | string? | Record key type from the lexicon definition | +| `_rkey` | string? | Record key — set via `set_rkey()` or `generate_rkey()` | +| `_collection` | string | Collection NSID (always set) | +| `_schema` | table? | Schema definition from the lexicon (used for validation) | + +### Schema validation + +When a record has a schema (loaded from the lexicon): + +- **On save:** required fields are checked, and missing required fields raise an error +- **On construction:** default values from schema properties are auto-populated +- **On save:** only fields defined in the schema's `properties` are sent to the PDS + +### Save behavior + +`r:save()` auto-detects create vs update: + +- If `_uri` is nil → calls `createRecord` on the PDS +- If `_uri` is set → calls `putRecord` on the PDS + +After a successful save, `_uri` and `_cid` are updated on the record instance. + +## Database API + +The `db` table provides read-only access to indexed records. Available in both queries and procedures. + +### db.query + +```lua +local result = db.query({ + collection = "xyz.statusphere.status", -- required + did = "did:plc:abc", -- optional: filter by DID + limit = 20, -- optional: max 100, default 20 + offset = 0, -- optional: for pagination +}) + +-- result.records — array of record tables (each includes a "uri" field) +-- result.cursor — present when more records exist +``` + +### db.get + +```lua +local record = db.get("at://did:plc:abc/xyz.statusphere.status/abc123") +-- Returns the record table or nil +-- The returned table includes a "uri" field +``` + +### db.count + +```lua +local n = db.count("xyz.statusphere.status") +local n = db.count("xyz.statusphere.status", "did:plc:abc") -- filter by DID +``` + +## Standard libraries + +The following Lua 5.4 standard library modules are available: + +

+ +`string` + +- [`byte`](https://lua.org/manual/5.4/manual.html#pdf-string.byte) +- [`char`](https://lua.org/manual/5.4/manual.html#pdf-string.char) +- [`find`](https://lua.org/manual/5.4/manual.html#pdf-string.find) +- [`format`](https://lua.org/manual/5.4/manual.html#pdf-string.format) +- [`gmatch`](https://lua.org/manual/5.4/manual.html#pdf-string.gmatch) +- [`gsub`](https://lua.org/manual/5.4/manual.html#pdf-string.gsub) +- [`len`](https://lua.org/manual/5.4/manual.html#pdf-string.len) +- [`lower`](https://lua.org/manual/5.4/manual.html#pdf-string.lower) +- [`match`](https://lua.org/manual/5.4/manual.html#pdf-string.match) +- [`rep`](https://lua.org/manual/5.4/manual.html#pdf-string.rep) +- [`reverse`](https://lua.org/manual/5.4/manual.html#pdf-string.reverse) +- [`sub`](https://lua.org/manual/5.4/manual.html#pdf-string.sub) +- [`upper`](https://lua.org/manual/5.4/manual.html#pdf-string.upper) +
+ +
+ +`table` + +- [`concat`](https://lua.org/manual/5.4/manual.html#pdf-table.concat) +- [`insert`](https://lua.org/manual/5.4/manual.html#pdf-table.insert) +- [`remove`](https://lua.org/manual/5.4/manual.html#pdf-table.remove) +- [`sort`](https://lua.org/manual/5.4/manual.html#pdf-table.sort) +- [`unpack`](https://lua.org/manual/5.4/manual.html#pdf-table.unpack) +
+ +
+ +`math` + +- [`abs`](https://lua.org/manual/5.4/manual.html#pdf-math.abs) +- [`ceil`](https://lua.org/manual/5.4/manual.html#pdf-math.ceil) +- [`floor`](https://lua.org/manual/5.4/manual.html#pdf-math.floor) +- [`max`](https://lua.org/manual/5.4/manual.html#pdf-math.max) +- [`min`](https://lua.org/manual/5.4/manual.html#pdf-math.min) +- [`random`](https://lua.org/manual/5.4/manual.html#pdf-math.random) +- [`sqrt`](https://lua.org/manual/5.4/manual.html#pdf-math.sqrt) +- [`huge`](https://lua.org/manual/5.4/manual.html#pdf-math.huge) +- [`pi`](https://lua.org/manual/5.4/manual.html#pdf-math.pi) +
+ +
+ +Standard builtins + +- [`print`](https://lua.org/manual/5.4/manual.html#pdf-print) +- [`tostring`](https://lua.org/manual/5.4/manual.html#pdf-tostring) +- [`tonumber`](https://lua.org/manual/5.4/manual.html#pdf-tonumber) +- [`type`](https://lua.org/manual/5.4/manual.html#pdf-type) +- [`pairs`](https://lua.org/manual/5.4/manual.html#pdf-pairs) +- [`ipairs`](https://lua.org/manual/5.4/manual.html#pdf-ipairs) +- [`next`](https://lua.org/manual/5.4/manual.html#pdf-next) +- [`select`](https://lua.org/manual/5.4/manual.html#pdf-select) +- [`unpack`](https://lua.org/manual/5.4/manual.html#pdf-table.unpack) +- [`error`](https://lua.org/manual/5.4/manual.html#pdf-error) +- [`pcall`](https://lua.org/manual/5.4/manual.html#pdf-pcall) +- [`xpcall`](https://lua.org/manual/5.4/manual.html#pdf-xpcall) +- [`assert`](https://lua.org/manual/5.4/manual.html#pdf-assert) +- [`setmetatable`](https://lua.org/manual/5.4/manual.html#pdf-setmetatable) +- [`getmetatable`](https://lua.org/manual/5.4/manual.html#pdf-getmetatable) +- [`rawget`](https://lua.org/manual/5.4/manual.html#pdf-rawget) +- [`rawset`](https://lua.org/manual/5.4/manual.html#pdf-rawset) +- [`rawequal`](https://lua.org/manual/5.4/manual.html#pdf-rawequal) +
+ +## Debugging + +### Logging + +Use `log()` to trace script execution. Output appears in the server logs at **debug** level with the field `lua_log`: + +```lua +function handle() + log("handle called with params: " .. tostring(params.limit)) + local result = db.query({ collection = collection, limit = params.limit }) + log("query returned " .. #result.records .. " records") + return result +end +``` + +To see log output, make sure your `RUST_LOG` environment variable includes debug level for HappyView (the default `happyview=debug` works). See [Configuration](../getting-started/configuration). + +### Error messages + +When a script fails, the client receives a generic `500` response: + +- `{"error": "script execution failed"}`: covers syntax errors, runtime errors, missing `handle()` function, and errors raised with `error()` +- `{"error": "script exceeded execution time limit"}`: the script hit the 1,000,000 instruction limit + +The **full error message** is logged server-side at error level. Check the server logs to see the actual Lua error, including line numbers and stack traces. + +### Common mistakes + +- **Missing `handle()` function**: Every script must define a global `handle()` function. If it's missing or misspelled, the script fails silently with "script execution failed". +- **Calling `error()` for expected conditions**: Lua's `error()` triggers a 500 response. For expected conditions like "record not found", return a structured error response instead: `return { error = "not found" }`. +- **Infinite loops**: The sandbox enforces a 1,000,000 instruction limit. If your script processes large data sets, paginate with `db.query()` limits instead of loading everything at once. +- **Forgetting `params` values are strings**: All query string parameters arrive as strings. Use `tonumber(params.limit)` if you need a number. + +## Example scripts + +See the example script references for complete, ready-to-use scripts: + +**Queries:** +- [Get a record](../reference/scripts/get-record) — fetch a single record by AT URI +- [Paginated list](../reference/scripts/paginated-list) — list records with cursor-based pagination and DID filtering +- [List or fetch](../reference/scripts/list-or-fetch) — combined single-record lookup and paginated listing +- [Expanded query](../reference/scripts/expanded-query) — list statuses with user profiles in a single response + +**Procedures:** +- [Create a record](../reference/scripts/create-record) — simple write that saves input as a record +- [Upsert a record](../reference/scripts/upsert-record) — create or update using a deterministic rkey +- [Update or delete](../reference/scripts/update-or-delete) — single endpoint handling create, update, and delete +- [Batch save](../reference/scripts/batch-save) — create multiple records in parallel with `Record.save_all()` +- [Sidecar records](../reference/scripts/sidecar-records) — create linked records across collections with a shared rkey +- [Cascading delete](../reference/scripts/cascading-delete) — delete a record and all related records +- [Complex mutations](../reference/scripts/complex-mutations) — load, transform, and save a record with multiple field changes + +## Next steps + +- [Lexicons](lexicons): Understand how record, query, and procedure lexicons work together +- [XRPC API](../reference/xrpc-api): See how endpoints behave with and without Lua scripts +- [Dashboard](../getting-started/dashboard#lua-editor): Use the web editor with context-aware completions diff --git a/docs/lexicons.md b/docs/lexicons.md deleted file mode 100644 index 81f74ba..0000000 --- a/docs/lexicons.md +++ /dev/null @@ -1,115 +0,0 @@ -# Lexicons - -Lexicons are ATProto schema definitions that tell HappyView which records to index and what XRPC endpoints to serve. HappyView supports uploading lexicons at runtime via the admin API. - -## Supported lexicon types - -| Type | Effect | -|------|--------| -| `record` | Subscribes to Jetstream for that collection and indexes records into Postgres | -| `query` | Registers a `GET /xrpc/{nsid}` endpoint that queries indexed records | -| `procedure` | Registers a `POST /xrpc/{nsid}` endpoint that proxies writes to the user's PDS | -| `definitions` | Stored but does not generate routes or subscriptions | - -## Uploading a lexicon - -```sh -curl -X POST http://localhost:3000/admin/lexicons \ - -H "Authorization: Bearer $TOKEN" \ - -H "Content-Type: application/json" \ - -d '{ - "lexicon_json": { - "lexicon": 1, - "id": "games.gamesgamesgamesgames.game", - "defs": { - "main": { - "type": "record", - "key": "tid", - "record": { - "type": "object", - "properties": { - "title": { "type": "string" } - } - } - } - } - }, - "backfill": true - }' -``` - -Re-uploading the same lexicon ID increments its revision number. - -## The `target_collection` field - -Query and procedure lexicons need to know which record collection they operate on. Set `target_collection` to the NSID of the record lexicon: - -```sh -curl -X POST http://localhost:3000/admin/lexicons \ - -H "Authorization: Bearer $TOKEN" \ - -H "Content-Type: application/json" \ - -d '{ - "lexicon_json": { - "lexicon": 1, - "id": "games.gamesgamesgamesgames.listGames", - "defs": { - "main": { - "type": "query", - "parameters": { - "type": "params", - "properties": { - "limit": { "type": "integer" } - } - }, - "output": { "encoding": "application/json" } - } - } - }, - "target_collection": "games.gamesgamesgamesgames.game" - }' -``` - -Without `target_collection`, queries and procedures won't know which DB records to read from. - -## The `backfill` flag - -When `backfill` is `true` (the default), uploading a record-type lexicon triggers a backfill job that discovers existing repos via the relay and fetches historical records from their PDSes. - -Set `backfill: false` if you only want to index new records going forward. - -## Jetstream collection filters - -When record-type lexicons change (uploaded or deleted), HappyView automatically reconnects to Jetstream with an updated collection filter. If no record lexicons exist, the Jetstream listener idles without connecting. - -## Example: full setup - -Upload the record lexicon, then a query and a procedure that target it: - -```sh -# 1. Record lexicon (triggers Jetstream subscription + backfill) -curl -X POST http://localhost:3000/admin/lexicons \ - -H "Authorization: Bearer $TOKEN" \ - -H "Content-Type: application/json" \ - -d '{ - "lexicon_json": { "lexicon": 1, "id": "games.gamesgamesgamesgames.game", "defs": { "main": { "type": "record", "key": "tid", "record": { "type": "object", "properties": { "title": { "type": "string" } } } } } }, - "backfill": true - }' - -# 2. Query lexicon -curl -X POST http://localhost:3000/admin/lexicons \ - -H "Authorization: Bearer $TOKEN" \ - -H "Content-Type: application/json" \ - -d '{ - "lexicon_json": { "lexicon": 1, "id": "games.gamesgamesgamesgames.listGames", "defs": { "main": { "type": "query", "output": { "encoding": "application/json" } } } }, - "target_collection": "games.gamesgamesgamesgames.game" - }' - -# 3. Procedure lexicon -curl -X POST http://localhost:3000/admin/lexicons \ - -H "Authorization: Bearer $TOKEN" \ - -H "Content-Type: application/json" \ - -d '{ - "lexicon_json": { "lexicon": 1, "id": "games.gamesgamesgamesgames.createGame", "defs": { "main": { "type": "procedure", "input": { "encoding": "application/json" }, "output": { "encoding": "application/json" } } } }, - "target_collection": "games.gamesgamesgamesgames.game" - }' -``` diff --git a/docs/network-lexicons.md b/docs/network-lexicons.md deleted file mode 100644 index ba327db..0000000 --- a/docs/network-lexicons.md +++ /dev/null @@ -1,57 +0,0 @@ -# Network Lexicons - -Network lexicons are lexicon definitions that HappyView fetches directly from the ATProto network rather than being uploaded manually via the admin API. An admin specifies an NSID, HappyView resolves the authority's repo, fetches the lexicon record, and keeps it updated via Jetstream. - -## How it works - -### NSID authority resolution - -Lexicon records live in repos as `com.atproto.lexicon.schema` with the rkey set to the NSID. To find which repo holds a lexicon, HappyView resolves the NSID's authority: - -1. Extract the authority from the NSID (all segments except the last). For example, `games.gamesgamesgamesgames.game` has authority `games.gamesgamesgamesgames`. -2. Reverse the authority segments to form a domain: `gamesgamesgamesgames.games`. -3. Look up the DNS TXT record at `_lexicon.{domain}` (e.g. `_lexicon.gamesgamesgamesgames.games`). -4. Parse the TXT record for a `did=` value. -5. Resolve the DID to a PDS endpoint via the PLC directory. - -Resolution is **non-hierarchical** --- each authority requires its own explicit TXT record. - -### Fetching - -Once the authority DID and PDS endpoint are known, HappyView calls `com.atproto.repo.getRecord` with: -- `repo` = the authority DID -- `collection` = `com.atproto.lexicon.schema` -- `rkey` = the NSID - -The `value` field of the response is the raw lexicon JSON. - -### Live updates via Jetstream - -Jetstream always subscribes to `com.atproto.lexicon.schema` alongside the dynamic record collections. When a commit event arrives: - -- **create/update**: If the event's DID and rkey match a tracked network lexicon (`authority_did` and `nsid`), the lexicon is parsed, upserted into the `lexicons` table and in-memory registry, and Jetstream is notified if it's a record type. -- **delete**: The lexicon is removed from the `lexicons` table and registry. - -### Startup re-fetch - -On every startup, HappyView re-fetches all network lexicons from their respective PDSes. This ensures consistency even if Jetstream events were missed while offline. Failures are logged as warnings but don't block startup. - -## Admin API - -See [Admin API - Network Lexicons](admin-api.md#network-lexicons) for endpoint details. - -### Quick reference - -```sh -# Add a network lexicon -curl -X POST http://localhost:3000/admin/network-lexicons \ - -H "$AUTH" -H "Content-Type: application/json" \ - -d '{ "nsid": "games.gamesgamesgamesgames.game" }' - -# List tracked network lexicons -curl http://localhost:3000/admin/network-lexicons -H "$AUTH" - -# Remove a network lexicon -curl -X DELETE http://localhost:3000/admin/network-lexicons/games.gamesgamesgamesgames.game \ - -H "$AUTH" -``` diff --git a/docs/quickstart.md b/docs/quickstart.md deleted file mode 100644 index df44bec..0000000 --- a/docs/quickstart.md +++ /dev/null @@ -1,90 +0,0 @@ -# Quickstart - -## Deploy on Railway - -The fastest way to get HappyView running is with Railway. This template deploys HappyView, AIP, Tap, and Postgres with a single click: - -[![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/deploy/I1jvZl?referralCode=0QOgj_) - -### Required configuration - -After deploying the template, you'll need to configure a few things before the stack works properly: - -1. **Set your admin DID.** In the AIP service variables, set `ADMIN_DIDS` to your AT Protocol DID (e.g. `did:plc:abc123...`). You can find your DID by looking up your handle on [Internect](https://internect.info/). - -2. **Generate AIP signing keys.** The `OAUTH_SIGNING_KEYS` and `ATPROTO_OAUTH_SIGNING_KEYS` variables require multibase-encoded P-256 private keys. See the [AIP Signing Keys documentation](https://github.com/graze-social/aip/blob/main/CONFIGURATION.md#signing-keys) for generation instructions. - -3. **Generate public URLs.** The services won't work until HappyView and AIP have public domains assigned in Railway. - -## Local development - -### Prerequisites - -- Rust (stable) -- PostgreSQL 17+ -- A running [AIP](https://github.com/graze-social/aip) instance - -### 1. Clone and configure - -```sh -git clone https://github.com/graze-social/happyview.git -cd happyview -cp .env.example .env -``` - -Edit `.env`: - -```sh -DATABASE_URL=postgres://happyview:happyview@localhost/happyview -AIP_URL=http://localhost:8080 -``` - -See [Configuration](configuration.md) for all available variables. - -### 2. Start Postgres and run migrations - -```sh -docker compose up -d postgres -cargo run -``` - -Migrations run automatically on startup. - -### 3. Upload a lexicon - -The first authenticated request to an admin endpoint auto-creates you as the initial admin. Authenticate with an AIP-issued Bearer token: - -```sh -curl -X POST http://localhost:3000/admin/lexicons \ - -H "Authorization: Bearer $TOKEN" \ - -H "Content-Type: application/json" \ - -d '{ - "lexicon_json": { - "lexicon": 1, - "id": "games.gamesgamesgamesgames.game", - "defs": { - "main": { - "type": "record", - "key": "tid", - "record": { - "type": "object", - "properties": { - "title": { "type": "string" } - } - } - } - } - }, - "backfill": true - }' -``` - -HappyView now subscribes to `games.gamesgamesgamesgames.game` on Jetstream and starts indexing records. - -### 4. Query records - -```sh -curl http://localhost:3000/xrpc/games.gamesgamesgamesgames.listGames?limit=10 -``` - -See [XRPC API](xrpc-api.md) for query and procedure details. diff --git a/docs/admin-api.md b/docs/reference/admin-api.md similarity index 64% rename from docs/admin-api.md rename to docs/reference/admin-api.md index ce0ad70..3ff602b 100644 --- a/docs/admin-api.md +++ b/docs/reference/admin-api.md @@ -1,22 +1,35 @@ # Admin API -All admin endpoints live under `/admin` and require an AIP-issued Bearer token from a DID that exists in the `admins` table. +The admin API lets you manage lexicons, monitor records, run backfill jobs, and control admin access. All endpoints live under `/admin` and require an [AIP](https://github.com/graze-social/aip)-issued Bearer token from a DID that exists in the `admins` table. You can also manage all of this through the [web dashboard](../getting-started/dashboard). ## Auth -Admin auth works the same as user auth — the Bearer token is validated against AIP's `/oauth/userinfo` endpoint to retrieve the caller's DID. That DID is then checked against the `admins` table. +Admin auth works the same as user auth: the Bearer token is validated against AIP's `/oauth/userinfo` endpoint to retrieve the caller's DID. That DID is then checked against the `admins` table. **Auto-bootstrap**: If the `admins` table is empty, the first authenticated request automatically inserts the caller as the initial admin. Non-admin DIDs receive a `403 Forbidden` response. +All error responses return JSON with an `error` field: + +```json +{ + "error": "description of what went wrong" +} +``` + +| Status | Meaning | +|--------|---------| +| `400 Bad Request` | Invalid input (missing required fields, malformed lexicon JSON) | +| `401 Unauthorized` | Missing or invalid Bearer token. See [AIP documentation](https://github.com/graze-social/aip) for token issues | +| `403 Forbidden` | Authenticated DID is not in the admins table | +| `404 Not Found` | Lexicon, admin, or backfill job not found | + ```sh # All examples assume $TOKEN is an AIP-issued access token for an admin DID AUTH="Authorization: Bearer $TOKEN" ``` ---- - ## Lexicons ### Upload / upsert a lexicon @@ -30,7 +43,7 @@ curl -X POST http://localhost:3000/admin/lexicons \ -H "$AUTH" \ -H "Content-Type: application/json" \ -d '{ - "lexicon_json": { "lexicon": 1, "id": "example.record", "defs": { "main": { "type": "record", "key": "tid", "record": { "type": "object", "properties": { "title": { "type": "string" } } } } } }, + "lexicon_json": { "lexicon": 1, "id": "xyz.statusphere.status", "defs": { "main": { "type": "record", "key": "tid", "record": { "type": "object", "required": ["status", "createdAt"], "properties": { "status": { "type": "string", "maxGraphemes": 1 }, "createdAt": { "type": "string", "format": "datetime" } } } } } }, "backfill": true, "target_collection": null }' @@ -46,7 +59,7 @@ curl -X POST http://localhost:3000/admin/lexicons \ ```json { - "id": "example.record", + "id": "xyz.statusphere.status", "revision": 1 } ``` @@ -66,7 +79,7 @@ curl http://localhost:3000/admin/lexicons -H "$AUTH" ```json [ { - "id": "example.record", + "id": "xyz.statusphere.status", "revision": 1, "lexicon_type": "record", "backfill": true, @@ -83,7 +96,7 @@ GET /admin/lexicons/{id} ``` ```sh -curl http://localhost:3000/admin/lexicons/example.record -H "$AUTH" +curl http://localhost:3000/admin/lexicons/xyz.statusphere.status -H "$AUTH" ``` **Response**: `200 OK` with full lexicon details including raw JSON. @@ -95,16 +108,14 @@ DELETE /admin/lexicons/{id} ``` ```sh -curl -X DELETE http://localhost:3000/admin/lexicons/example.record -H "$AUTH" +curl -X DELETE http://localhost:3000/admin/lexicons/xyz.statusphere.status -H "$AUTH" ``` **Response**: `204 No Content` ---- - ## Network Lexicons -Network lexicons are fetched from the ATProto network via DNS TXT resolution and kept updated via Jetstream. See [Network Lexicons](network-lexicons.md) for background. +Network lexicons are fetched from the AT Protocol network via DNS TXT resolution and kept updated via Tap. See [Lexicons - Network lexicons](../guides/lexicons#network-lexicons) for background. ### Add a network lexicon @@ -117,7 +128,7 @@ curl -X POST http://localhost:3000/admin/network-lexicons \ -H "$AUTH" \ -H "Content-Type: application/json" \ -d '{ - "nsid": "games.gamesgamesgamesgames.game", + "nsid": "xyz.statusphere.status", "target_collection": null }' ``` @@ -133,7 +144,7 @@ HappyView resolves the NSID authority via DNS TXT, fetches the lexicon from the ```json { - "nsid": "games.gamesgamesgamesgames.game", + "nsid": "xyz.statusphere.status", "authority_did": "did:plc:authority", "revision": 1 } @@ -154,7 +165,7 @@ curl http://localhost:3000/admin/network-lexicons -H "$AUTH" ```json [ { - "nsid": "games.gamesgamesgamesgames.game", + "nsid": "xyz.statusphere.status", "authority_did": "did:plc:authority", "target_collection": null, "last_fetched_at": "2025-01-01T00:00:00Z", @@ -170,7 +181,7 @@ DELETE /admin/network-lexicons/{nsid} ``` ```sh -curl -X DELETE http://localhost:3000/admin/network-lexicons/games.gamesgamesgamesgames.game \ +curl -X DELETE http://localhost:3000/admin/network-lexicons/xyz.statusphere.status \ -H "$AUTH" ``` @@ -178,8 +189,6 @@ Removes the network lexicon tracking and also deletes the lexicon from the `lexi **Response**: `204 No Content` ---- - ## Stats ### Record counts @@ -197,11 +206,41 @@ curl http://localhost:3000/admin/stats -H "$AUTH" ```json { "total_records": 12345, - "collections": [{ "collection": "example.record", "count": 500 }] + "collections": [{ "collection": "xyz.statusphere.status", "count": 500 }] +} +``` + +## Tap Stats + +Aggregate stats from the [Tap](https://github.com/bluesky-social/indigo/tree/main/cmd/tap) instance. Useful for monitoring backfill progress. See [Backfill - Job lifecycle](../guides/backfill#job-lifecycle) for context. + +### Get Tap stats + +``` +GET /admin/tap/stats +``` + +```sh +curl http://localhost:3000/admin/tap/stats -H "$AUTH" +``` + +**Response**: `200 OK` + +```json +{ + "repo_count": 5234, + "record_count": 1048576, + "outbox_buffer": 42 } ``` ---- +| Field | Type | Description | +| -------------- | ------ | -------------------------------------------------------- | +| `repo_count` | number | Total repos Tap is tracking | +| `record_count` | number | Total records Tap has indexed | +| `outbox_buffer`| number | Pending events awaiting delivery (high = Tap is busy) | + +Returns `502 Bad Gateway` if Tap is unreachable. ## Backfill @@ -215,7 +254,7 @@ POST /admin/backfill curl -X POST http://localhost:3000/admin/backfill \ -H "$AUTH" \ -H "Content-Type: application/json" \ - -d '{ "collection": "example.record" }' + -d '{ "collection": "xyz.statusphere.status" }' ``` | Field | Type | Required | Description | @@ -248,7 +287,7 @@ curl http://localhost:3000/admin/backfill/status -H "$AUTH" [ { "id": "550e8400-e29b-41d4-a716-446655440000", - "collection": "example.record", + "collection": "xyz.statusphere.status", "did": null, "status": "completed", "total_repos": 42, @@ -262,8 +301,6 @@ curl http://localhost:3000/admin/backfill/status -H "$AUTH" ] ``` ---- - ## Admin management ### Add an admin diff --git a/docs/reference/architecture.md b/docs/reference/architecture.md new file mode 100644 index 0000000..c9dff94 --- /dev/null +++ b/docs/reference/architecture.md @@ -0,0 +1,211 @@ +# Architecture + +Guide for contributors working on HappyView itself. For a user-facing overview, see the [Introduction](/). + +## System overview + +```mermaid +graph LR + Application + + Application -->|"GET /xrpc/{method}"| Query + Application -->|"POST /xrpc/{method}"| Procedure + + subgraph HappyView + Query["Query Handler
Lua Script (Optional)"] + Procedure["Procedure Handler
Lua Script (Optional)"] + end + + Procedure --> DB + Query --> DB + + Procedure -->|proxy write| PDS["User PDS"] + + DB[("PostgreSQL
records · lexicons")] + + Tap["Tap
WebSocket"] -->|record events| DB + Relay["Relay
Firehose"] --> Tap +``` + +Reads flow top-down through the query handler to Postgres. Writes flow through the procedure handler to the user's PDS, then HappyView indexes the record locally. All record data enters the system through Tap, which handles both real-time firehose events and historical backfill. HappyView syncs collection filters to Tap and discovers repos via the relay for backfill, but Tap performs all record fetching. + +## Module overview + +``` +src/ + main.rs Startup: config, DB, migrations, spawn Tap worker, start server + lib.rs AppState struct, module declarations + config.rs Environment variable loading + error.rs AppError enum (Auth, BadRequest, Forbidden, Internal, NotFound, PdsError) + server.rs Axum router: fixed routes + admin nest + XRPC catch-all + static files + lexicon.rs ParsedLexicon, LexiconRegistry (Arc>) + profile.rs DID document resolution, PDS discovery, profile fetching + tap.rs Tap WebSocket listener, collection filter sync, backfill delegation + aip.rs AIP reverse proxy + resolve.rs NSID authority resolution (DNS TXT → DID → PDS) + auth/ + mod.rs Re-exports + middleware.rs Claims extractor (validates Bearer token via AIP /oauth/userinfo) + jwks.rs JWKS key fetching + admin/ + mod.rs Admin route definitions + auth.rs AdminAuth extractor (Claims + DID lookup + auto-bootstrap) + admins.rs Admin CRUD handlers + lexicons.rs Lexicon CRUD handlers + network_lexicons.rs Network lexicon tracking (add, list, remove) + records.rs Record listing handler + stats.rs Record count stats + backfill.rs Backfill job creation (relay discovery + Tap delegation) + types.rs Request/response structs for admin endpoints + lua/ + mod.rs Re-exports + context.rs Lua context globals (method, params, input, caller_did, collection) + db_api.rs Lua database API (db.query, db.get, db.count) + execute.rs Script execution and sandbox setup + record.rs Lua Record API (constructor, save, delete, load) + sandbox.rs Restricted Lua environment (removed modules, instruction limit) + tid.rs TID generation for Lua scripts + repo/ + mod.rs Re-exports + dpop.rs DPoP JWT proof generation (ES256/P-256) + pds.rs PDS proxy helpers (JSON POST, blob POST, response forwarding) + session.rs ATP session fetching from AIP + upload_blob.rs Blob upload handler + xrpc/ + mod.rs Re-exports + query.rs Dynamic GET handler (Lua script or default: single record + list) + procedure.rs Dynamic POST handler (Lua script or default: create vs put) +``` + +## Request flow + +### Reads (queries) + +``` +Client GET /xrpc/{method}?params + -> xrpc::xrpc_get() + -> LexiconRegistry lookup (must be Query type) + -> If Lua script attached: execute script (has access to db API) + -> Else: default SQL query on records table (collection from target_collection) + -> JSON response +``` + +### Writes (procedures) + +``` +Client POST /xrpc/{method} + Bearer token + -> Claims extractor validates token via AIP /oauth/userinfo + -> xrpc::xrpc_post() + -> LexiconRegistry lookup (must be Procedure type) + -> If Lua script attached: execute script (has access to Record API) + -> Else: default create/update (auto-detect based on uri field) + -> Fetch ATP session from AIP /api/atprotocol/session + -> Generate DPoP proof (ES256) + -> Proxy to user's PDS (createRecord or putRecord) + -> Upsert record locally + -> Forward PDS response +``` + +### Admin endpoints + +``` +Client request + Bearer token + -> AdminAuth extractor: + 1. Claims validation via AIP + 2. DID lookup in admins table (auto-bootstrap if empty) + 3. 403 if not admin + -> Admin handler + -> JSON response +``` + +## Data flow + +### Real-time indexing + +``` +Tap WebSocket connection (tap::spawn) + -> Collection filters synced to Tap on startup and lexicon changes + -> Record events: + create/update -> UPSERT into records table + delete -> DELETE from records table + -> Lexicon schema events (com.atproto.lexicon.schema): + -> Update tracked network lexicons in DB and registry + -> Reconnects automatically on errors or collection filter changes +``` + +### Backfill + +``` +POST /admin/backfill + -> Create backfill_jobs record (status = running) + -> Relay listReposByCollection -> list of DIDs + -> Send DIDs to Tap in batches of 1000 (POST /repos/add) + -> Mark job as completed + -> Tap fetches records asynchronously and delivers via WebSocket +``` + +## Database schema + +### `records` + +| Column | Type | Description | +| ------------ | ----------- | ----------------------------------- | +| `uri` | text (PK) | AT URI (`at://did/collection/rkey`) | +| `did` | text | Author DID | +| `collection` | text | Lexicon NSID | +| `rkey` | text | Record key | +| `record` | jsonb | Record value | +| `cid` | text | Content identifier | +| `indexed_at` | timestamptz | When HappyView indexed this record | + +### `lexicons` + +| Column | Type | Description | +| ------------------- | ----------- | ----------------------------------------------- | +| `id` | text (PK) | Lexicon NSID | +| `revision` | integer | Incremented on upsert | +| `lexicon_json` | jsonb | Raw lexicon definition | +| `lexicon_type` | text | record, query, procedure, definitions | +| `backfill` | boolean | Whether to backfill on upload | +| `target_collection` | text | For queries/procedures: which record collection | +| `created_at` | timestamptz | | +| `updated_at` | timestamptz | | + +### `admins` + +| Column | Type | Description | +| -------------- | ------------- | ------------------------------------- | +| `id` | uuid (PK) | | +| `did` | text (unique) | Admin's AT Protocol DID | +| `created_at` | timestamptz | | +| `last_used_at` | timestamptz | Updated on each authenticated request | + +### `backfill_jobs` + +| Column | Type | Description | +| ----------------- | ----------- | ----------------------------------- | +| `id` | uuid (PK) | | +| `collection` | text | Target collection (null = all) | +| `did` | text | Target DID (null = all) | +| `status` | text | pending, running, completed, failed | +| `total_repos` | integer | | +| `processed_repos` | integer | | +| `total_records` | integer | | +| `error` | text | Error message if failed | +| `started_at` | timestamptz | | +| `completed_at` | timestamptz | | +| `created_at` | timestamptz | | + +## Testing + +```sh +# Unit tests (no database needed) +cargo test --lib + +# All tests including end-to-end (requires Postgres) +docker compose -f docker-compose.test.yml up -d +TEST_DATABASE_URL=postgres://happyview:happyview@localhost:5433/happyview_test cargo test +docker compose -f docker-compose.test.yml down +``` + +End-to-end tests use `wiremock` to mock external services (AIP, PLC directory, PDSes) and a real Postgres database for full integration coverage. diff --git a/docs/reference/glossary.md b/docs/reference/glossary.md new file mode 100644 index 0000000..4c0b6ff --- /dev/null +++ b/docs/reference/glossary.md @@ -0,0 +1,43 @@ +# Glossary + +Key terms used throughout the HappyView documentation. For a broader introduction to the AT Protocol, see the [official ATProto glossary](https://atproto.com/guides/glossary). + +## AT Protocol terms + +**AppView** — A backend service that indexes AT Protocol records and serves them through an API. HappyView is an AppView. See the [ATProto docs](https://atproto.com/guides/glossary#app-view) for more. + +**DID** (Decentralized Identifier) — A persistent, globally unique identifier for an account (e.g. `did:plc:abc123`). + +**Firehose** — A real-time stream of all record events (creates, updates, deletes) across the AT Protocol network. HappyView consumes this via [Tap](https://github.com/bluesky-social/indigo/tree/main/cmd/tap). + +**Handle** — A human-readable name for an account (e.g. `user.bsky.social`). Handles resolve to a DID via DNS or the PLC directory. + +**Lexicon** — A schema definition for AT Protocol data types and API methods. Lexicons define what records look like, what endpoints exist, and what parameters they accept. See [Lexicons](../guides/lexicons). + +**NSID** (Namespaced Identifier) — A reverse-DNS identifier for a lexicon (e.g. `xyz.statusphere.status`). The authority is everything except the last segment. + +**PDS** (Personal Data Server) — The server that hosts a user's data. Users can be on any PDS — there's no single server. HappyView proxies writes back to each user's PDS. + +**PLC directory** — A public service (e.g. `plc.directory`) that maps DIDs to their DID documents, which contain the user's PDS endpoint and other metadata. + +**Record** — A single piece of data in an AT Protocol repository, identified by an AT URI (e.g. `at://did:plc:abc/xyz.statusphere.status/abc123`). + +**Relay** — A network service that aggregates repository data from many PDSes. HappyView queries the relay during [backfill](../guides/backfill) to discover which repos contain records for a given collection, then delegates the actual record fetching to Tap. + +**rkey** (Record Key) — The unique key for a record within a collection and repo. These are most commonly TIDs (timestamp-based) or NSIDs. + +**TID** (Timestamp Identifier) — A 13-character sortable identifier used as a record key. Generated from the current timestamp. + +**XRPC** — The HTTP-based RPC protocol used by the AT Protocol. Query methods map to GET requests, procedure methods map to POST requests. See [XRPC API](xrpc-api). + +## HappyView-specific terms + +**AIP** — [Authentication and Identity Provider](https://github.com/graze-social/aip). An external service that handles AT Protocol OAuth for HappyView. Issues Bearer tokens used for authentication. + +**Backfill** — The process of bulk-indexing existing records from the network. HappyView discovers repos via the relay and delegates record fetching to Tap. Runs when a new record-type lexicon is uploaded or triggered manually. See [Backfill](../guides/backfill). + +**Network lexicon** — A lexicon fetched directly from the AT Protocol network via DNS authority resolution, rather than uploaded manually. See [Lexicons - Network lexicons](../guides/lexicons#network-lexicons). + +**Tap** — A [firehose consumer and backfill worker](https://github.com/bluesky-social/indigo/tree/main/cmd/tap) that handles real-time record streaming, cryptographic verification, and historical record fetching. HappyView connects to Tap via WebSocket to receive record events, and delegates backfill work to Tap via its HTTP API. + +**Target collection** — The record collection that a query or procedure lexicon operates on. Set via the `target_collection` field when uploading a lexicon. diff --git a/docs/reference/production-deployment.md b/docs/reference/production-deployment.md new file mode 100644 index 0000000..dac3067 --- /dev/null +++ b/docs/reference/production-deployment.md @@ -0,0 +1,70 @@ +# Deployment + +HappyView requires a Postgres database and an [AIP](https://github.com/graze-social/aip) instance for OAuth. The [Quickstart](../getting-started/deployment/railway) covers the fastest path with Railway. This page covers other deployment options. + +## Docker + +Build the image: + +```sh +docker build -t happyview . +``` + +For local development, see [Docker deployment](../getting-started/deployment/docker). + +### Production Compose example + +:::note +This example omits [Tap](https://github.com/bluesky-social/indigo/tree/main/cmd/tap), which is required for real-time record streaming and backfill. See the full `docker-compose.yml` in the repository for a complete configuration including Tap. +::: + +```yaml +services: + postgres: + image: postgres:17 + environment: + POSTGRES_USER: happyview + POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}" + POSTGRES_DB: happyview + volumes: + - pgdata:/var/lib/postgresql/data + + happyview: + image: happyview:latest + ports: + - "3000:3000" + environment: + DATABASE_URL: "postgres://happyview:${POSTGRES_PASSWORD}@postgres/happyview" + AIP_URL: "https://aip.example.com" + depends_on: + postgres: + condition: service_healthy + +volumes: + pgdata: +``` + +## Railway / Fly.io / other platforms + +The general process for any hosting platform: + +1. Provision a Postgres 17+ database +2. Deploy an [AIP](https://github.com/graze-social/aip) instance (handles OAuth for your AppView) +3. Set `DATABASE_URL` and `AIP_URL` environment variables (see [Configuration](../getting-started/configuration) for all options) +4. Deploy the Docker image or build from source +5. HappyView listens on `PORT` (default `3000`) +6. Health check: `GET /health` returns `ok` + +For Railway specifically, the [Quickstart](../getting-started/deployment/railway) template handles all of this with a single click. + +## Database + +Migrations run automatically on startup via `sqlx::migrate!()`. No manual migration step is needed. + +## TLS + +HappyView does not terminate TLS. Put it behind a reverse proxy (nginx, Caddy, Cloudflare Tunnel, etc.) for HTTPS. + +## Logging + +HappyView uses the `RUST_LOG` environment variable to control log output. The default (`happyview=debug,tower_http=debug`) logs all HappyView activity and HTTP requests. For production, consider `happyview=info,tower_http=info` to reduce noise. See [Configuration](../getting-started/configuration) for details. diff --git a/docs/reference/scripts/batch-save.md b/docs/reference/scripts/batch-save.md new file mode 100644 index 0000000..137c930 --- /dev/null +++ b/docs/reference/scripts/batch-save.md @@ -0,0 +1,46 @@ +# Procedure: Batch Save + +Use `Record.save_all()` to create multiple records in parallel. + +**Lexicon type:** procedure + +```lua +function handle() + local records = {} + for _, item in ipairs(input.items) do + local r = Record(collection, item) + records[#records + 1] = r + end + Record.save_all(records) + + local uris = {} + for _, r in ipairs(records) do + uris[#uris + 1] = r._uri + end + return { uris = uris } +end +``` + +## How it works + +1. Iterate over `input.items` and create a [`Record`](../../guides/scripting#record-api) instance for each item. +2. Call [`Record.save_all()`](../../guides/scripting#static-methods) to save all records in parallel, rather than one at a time. +3. Collect the resulting AT URIs and return them. + +## Usage + +```sh +curl -X POST http://localhost:3000/xrpc/xyz.statusphere.batchCreate \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ + "items": [ + { "text": "First", "createdAt": "2025-01-01T00:00:00Z" }, + { "text": "Second", "createdAt": "2025-01-01T00:01:00Z" } + ] + }' +``` + +## Use case + +Batch saving is useful when a single user action should create multiple records (e.g. importing data, multi-step forms). `save_all` is significantly faster than calling `r:save()` in a loop because the PDS writes happen concurrently. diff --git a/docs/reference/scripts/cascading-delete.md b/docs/reference/scripts/cascading-delete.md new file mode 100644 index 0000000..c109ac4 --- /dev/null +++ b/docs/reference/scripts/cascading-delete.md @@ -0,0 +1,74 @@ +# Procedure: Cascading Delete + +Delete a record and all related records across collections. + +**Lexicon type:** procedure + +```lua +function handle() + if not input.uri then + return { error = "uri is required" } + end + + -- Load the primary record + local primary = Record.load(input.uri) + if not primary then + return { error = "not found" } + end + + -- Find related records that reference this URI + local comments = db.query({ + collection = "xyz.statusphere.comment", + did = caller_did, + limit = 100, + }) + + -- Collect records to delete + local to_delete = { primary } + for _, comment in ipairs(comments.records) do + if comment.postUri == input.uri then + local r = Record.load(comment.uri) + if r then + to_delete[#to_delete + 1] = r + end + end + end + + -- Delete all matched records + for _, r in ipairs(to_delete) do + r:delete() + end + + return { + deleted = #to_delete, + } +end +``` + +## How it works + +1. Load the primary record by URI. Return early if it doesn't exist. +2. Query for related records, in this example comments by the same user that reference the primary record's URI. +3. Load each related record with [`Record.load`](../../guides/scripting#static-methods) to get a deletable `Record` instance. +4. Delete everything. Each `r:delete()` removes the record from the user's PDS and the local index. + +## Usage + +```sh +curl -X POST http://localhost:3000/xrpc/xyz.statusphere.deletePost \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ "uri": "at://did:plc:abc/xyz.statusphere.post/abc123" }' +``` + +```json +{ + "deleted": 4 +} +``` + +## Use case + +Cascading deletes are useful when your data model has parent-child relationships across collections. For example, deleting a post should also clean up its comments, reactions, or metadata records. This keeps the user's repo and the local index consistent. + +Note that this only deletes records owned by `caller_did`. AT Protocol records can only be deleted by their owner. If the related records could have more than 100 matches, paginate through all of them before deleting. diff --git a/docs/reference/scripts/complex-mutations.md b/docs/reference/scripts/complex-mutations.md new file mode 100644 index 0000000..f2e98f2 --- /dev/null +++ b/docs/reference/scripts/complex-mutations.md @@ -0,0 +1,84 @@ +# Procedure: Complex Mutations + +Load an existing record, apply multiple transformations, and save it back. + +**Lexicon type:** procedure + +```lua +function handle() + if not input.uri then + return { error = "uri is required" } + end + + local r = Record.load(input.uri) + if not r then + return { error = "not found" } + end + + -- Increment a counter + r.likeCount = (r.likeCount or 0) + 1 + + -- Merge tags, deduplicating and capping at 10 + r.tags = r.tags or {} + if input.tags then + for _, tag in ipairs(input.tags) do + local found = false + for _, t in ipairs(r.tags) do + if t == tag then + found = true + break + end + end + if not found then + r.tags[#r.tags + 1] = tag + end + end + -- Keep only the last 10 + while #r.tags > 10 do + table.remove(r.tags, 1) + end + end + + -- Normalize a string field + if input.title then + r.title = string.gsub(input.title, "^%s+", "") + r.title = string.gsub(r.title, "%s+$", "") + end + + -- Set a computed field + r.updatedAt = now() + + r:save() + + return { uri = r._uri, cid = r._cid } +end +``` + +## How it works + +1. Load the existing record with [`Record.load`](../../guides/scripting#static-methods). This gives you a mutable `Record` instance with all the current field values. +2. Apply transformations directly on the record's fields: + - **Increment a counter**: use `or 0` to handle the field being `nil` on first access. + - **Merge tags**: iterate over `input.tags`, skip duplicates already in `r.tags`, append new ones, then trim the list to 10. + - **Normalize a string**: use `string.gsub` to trim whitespace. + - **Set a timestamp**: use [`now()`](../../guides/scripting#utility-globals) for UTC ISO 8601. +3. Call `r:save()`. Since `_uri` is set (from the load), this calls `putRecord` to update the record on the user's PDS. + +## Usage + +```sh +curl -X POST http://localhost:3000/xrpc/xyz.statusphere.updatePost \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ + "uri": "at://did:plc:abc/xyz.statusphere.post/abc123", + "tags": ["tutorial", "atproto"], + "title": " My Post Title " + }' +``` + +## Use case + +This pattern is useful when updates involve more than simple field replacement: counters, bounded lists, string normalization, or computed fields. All mutations happen in memory before the single `r:save()` call, so there's no partial save: either all changes are written or none are. + +If the record has a schema, HappyView only sends fields defined in the schema's `properties` to the PDS on save. Extra fields you set on the record instance are ignored. diff --git a/docs/reference/scripts/create-record.md b/docs/reference/scripts/create-record.md new file mode 100644 index 0000000..dea0f59 --- /dev/null +++ b/docs/reference/scripts/create-record.md @@ -0,0 +1,32 @@ +# Procedure: Create a Record + +The simplest write: take the request body, save it as a record, and return the URI. + +**Lexicon type:** procedure + +```lua +function handle() + local r = Record(collection, input) + r:save() + return { uri = r._uri, cid = r._cid } +end +``` + +## How it works + +1. Create a new [`Record`](../../guides/scripting#record-api) instance from the target collection, populated with the fields from the request body. +2. Call `r:save()`, which creates the record on the caller's PDS and indexes it locally. +3. Return the AT URI and CID of the newly created record. + +## Usage + +```sh +curl -X POST http://localhost:3000/xrpc/xyz.statusphere.createRecord \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ "text": "Hello world", "createdAt": "2025-01-01T00:00:00Z" }' +``` + +## Use case + +This is the simplest possible write procedure. It works well when the client is responsible for populating all record fields and no server-side validation or transformation is needed. diff --git a/docs/reference/scripts/expanded-query.md b/docs/reference/scripts/expanded-query.md new file mode 100644 index 0000000..703eaa6 --- /dev/null +++ b/docs/reference/scripts/expanded-query.md @@ -0,0 +1,83 @@ +# Query: Expanded Query with Profiles + +List statuses and include the profile of each user who created one. + +**Lexicon type:** query + +```lua +function handle() + local limit = tonumber(params.limit) or 20 + if limit > 100 then limit = 100 end + + local result = db.query({ + collection = "xyz.statusphere.status", + did = params.did, + limit = limit, + offset = tonumber(params.cursor) or 0, + }) + + -- Collect unique DIDs from the statuses + local seen = {} + local profile_uris = {} + for _, status in ipairs(result.records) do + local did = string.match(status.uri, "at://([^/]+)/") + if did and not seen[did] then + seen[did] = true + profile_uris[#profile_uris + 1] = "at://" .. did .. "/app.bsky.actor.profile/self" + end + end + + -- Load all profiles in parallel + local profiles = {} + if #profile_uris > 0 then + local loaded = Record.load_all(profile_uris) + for i, profile in ipairs(loaded) do + if profile then + profiles[#profiles + 1] = profile + end + end + end + + return { + statuses = result.records, + profiles = profiles, + cursor = result.cursor, + } +end +``` + +## How it works + +1. Query statuses from the target collection with pagination, same as a normal list query. +2. Extract the unique DIDs from the returned status URIs using `string.match`. +3. Build an AT URI for each DID's `app.bsky.actor.profile/self` record (this is where Bluesky profiles live). +4. Load all profiles in parallel with [`Record.load_all`](../../guides/scripting#static-methods). Profiles that aren't indexed locally return `nil` and are skipped. +5. Return statuses and profiles as separate keys, with the cursor from the status query. + +## Usage + +``` +GET /xrpc/xyz.statusphere.listStatusesWithProfiles?limit=10 +GET /xrpc/xyz.statusphere.listStatusesWithProfiles?did=did:plc:abc +GET /xrpc/xyz.statusphere.listStatusesWithProfiles?cursor=20&limit=20 +``` + +```json +{ + "statuses": [ + { "uri": "at://did:plc:abc/xyz.statusphere.status/3abc123", "status": "😊", "createdAt": "..." }, + { "uri": "at://did:plc:def/xyz.statusphere.status/3def456", "status": "🌟", "createdAt": "..." } + ], + "profiles": [ + { "uri": "at://did:plc:abc/app.bsky.actor.profile/self", "displayName": "Alice", "avatar": "..." }, + { "uri": "at://did:plc:def/app.bsky.actor.profile/self", "displayName": "Bob", "avatar": "..." } + ], + "cursor": "10" +} +``` + +## Use case + +This pattern avoids N+1 queries (fetching each author's profile individually) on the client side. Instead of fetching statuses and then making a separate request for each user's profile, the client gets everything in one call. The deduplication step ensures each profile is loaded only once even if multiple statuses are from the same user. + +Note that `Record.load_all` reads from HappyView's local index. Profiles only appear if `app.bsky.actor.profile` is also being indexed. If a profile hasn't been indexed yet, it's silently omitted from the response. diff --git a/docs/reference/scripts/get-record.md b/docs/reference/scripts/get-record.md new file mode 100644 index 0000000..1f990e6 --- /dev/null +++ b/docs/reference/scripts/get-record.md @@ -0,0 +1,36 @@ +# Query: Get a Single Record + +Fetch a single record by its AT URI. + +**Lexicon type:** query + +```lua +function handle() + if not params.uri then + return { error = "uri parameter is required" } + end + + local record = db.get(params.uri) + if not record then + return { error = "not found" } + end + + return { record = record } +end +``` + +## How it works + +1. Check that the `uri` query parameter is present. Return a structured error if missing. +2. Look up the record with [`db.get`](../../guides/scripting#dbget), which returns the record table or `nil`. +3. Return the record wrapped in an object. + +## Usage + +``` +GET /xrpc/xyz.statusphere.getRecord?uri=at://did:plc:abc/xyz.statusphere.record/abc123 +``` + +## Use case + +A focused read endpoint for detail views or record verification. Returns structured error responses instead of calling `error()`, so the client gets a 200 with an error field it can handle gracefully rather than a 500. diff --git a/docs/reference/scripts/list-or-fetch.md b/docs/reference/scripts/list-or-fetch.md new file mode 100644 index 0000000..caa0ebd --- /dev/null +++ b/docs/reference/scripts/list-or-fetch.md @@ -0,0 +1,41 @@ +# Query: List or Fetch Records + +This query handles both single-record lookups (when a `uri` param is provided) and paginated listing. + +**Lexicon type:** query + +```lua +function handle() + if params.uri then + local record = db.get(params.uri) + if not record then + return { error = "record not found" } + end + return { record = record } + end + + return db.query({ + collection = collection, + did = params.did, + limit = tonumber(params.limit) or 20, + offset = tonumber(params.cursor) or 0, + }) +end +``` + +## How it works + +1. If a `uri` query parameter is provided, fetch that single record with [`db.get`](../../guides/scripting#dbget) and return it. If it doesn't exist, return a structured error (using `error()` would trigger a 500 response). +2. Otherwise, list records from the target collection using [`db.query`](../../guides/scripting#dbquery), with optional filtering by `did` and pagination via `limit`/`offset`. Since query parameters arrive as strings, `tonumber()` converts them to numbers. + +## Usage + +``` +GET /xrpc/xyz.statusphere.listRecords?limit=10 +GET /xrpc/xyz.statusphere.listRecords?did=did:plc:abc +GET /xrpc/xyz.statusphere.listRecords?uri=at://did:plc:abc/xyz.statusphere.record/abc123 +``` + +## Use case + +This is a good default query script when you want a single endpoint that serves double duty: list browsing for feeds/timelines and direct record fetching for detail views. diff --git a/docs/reference/scripts/paginated-list.md b/docs/reference/scripts/paginated-list.md new file mode 100644 index 0000000..6f1553c --- /dev/null +++ b/docs/reference/scripts/paginated-list.md @@ -0,0 +1,40 @@ +# Query: Paginated List + +List records from a collection with cursor-based pagination and an optional DID filter. + +**Lexicon type:** query + +```lua +function handle() + local limit = tonumber(params.limit) or 20 + if limit > 100 then limit = 100 end + + local result = db.query({ + collection = collection, + did = params.did, + limit = limit, + offset = tonumber(params.cursor) or 0, + }) + + return result +end +``` + +## How it works + +1. Parse `limit` from the query string, defaulting to 20 and capping at 100. +2. Call [`db.query`](../../guides/scripting#dbquery) with the target collection, optional DID filter, and offset-based pagination. +3. Return the result directly. `db.query` returns `{ records = [...], cursor = "..." }` where `cursor` is present when more records exist. + +## Usage + +``` +GET /xrpc/xyz.statusphere.listStatuses +GET /xrpc/xyz.statusphere.listStatuses?limit=50 +GET /xrpc/xyz.statusphere.listStatuses?did=did:plc:abc&limit=10 +GET /xrpc/xyz.statusphere.listStatuses?cursor=20&limit=20 +``` + +## Use case + +A straightforward list endpoint for feeds, timelines, or browsing records by collection. The `cursor` value returned by `db.query` is an offset. Clients pass it back as the `cursor` parameter to fetch the next page. Since all query parameters arrive as strings, use `tonumber()` to convert `limit` and `cursor` to numbers. diff --git a/docs/reference/scripts/sidecar-records.md b/docs/reference/scripts/sidecar-records.md new file mode 100644 index 0000000..36a17df --- /dev/null +++ b/docs/reference/scripts/sidecar-records.md @@ -0,0 +1,74 @@ +# Procedure: Create Sidecar Records + +Create two records with different collection NSIDs but the same rkey, linking them together by key. + +**Lexicon type:** procedure + +```lua +function handle() + local rkey = TID() + + local post = Record("xyz.statusphere.post", { + text = input.text, + createdAt = now(), + }) + post:set_rkey(rkey) + + local metadata = Record("xyz.statusphere.postMetadata", { + lang = input.lang or "en", + source = input.source or "web", + createdAt = now(), + }) + metadata:set_rkey(rkey) + + Record.save_all({ post, metadata }) + + return { + post = { uri = post._uri, cid = post._cid }, + metadata = { uri = metadata._uri, cid = metadata._cid }, + } +end +``` + +## How it works + +1. Generate a single [`TID()`](../../guides/scripting#utility-globals) to use as the rkey for both records. +2. Create a `Record` for each collection and call `r:set_rkey()` with the shared rkey. +3. Save both records in parallel with [`Record.save_all()`](../../guides/scripting#static-methods). +4. Return both URIs so the client knows the identity of each record. + +## Usage + +```sh +curl -X POST http://localhost:3000/xrpc/xyz.statusphere.createPost \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ "text": "Hello world", "lang": "en", "source": "web" }' +``` + +The response includes URIs for both the post and its metadata: + +```json +{ + "post": { + "uri": "at://did:plc:abc/xyz.statusphere.post/3abc123", + "cid": "bafyrei..." + }, + "metadata": { + "uri": "at://did:plc:abc/xyz.statusphere.postMetadata/3abc123", + "cid": "bafyrei..." + } +} +``` + +## Use case + +Sidecar records are useful when you want to associate related data across collections without embedding everything in a single record. Because they share an rkey, you can derive one URI from the other: + +``` +at:// did:plc:abc /xyz.statusphere.post /3abc123 +at:// did:plc:abc /xyz.statusphere.postMetadata /3abc123 + ^^^^^^^ same rkey +``` + +This is a common AT Protocol pattern for keeping a primary record lean while storing auxiliary data (metadata, reactions, settings) in a companion collection. diff --git a/docs/reference/scripts/update-or-delete.md b/docs/reference/scripts/update-or-delete.md new file mode 100644 index 0000000..4972e34 --- /dev/null +++ b/docs/reference/scripts/update-or-delete.md @@ -0,0 +1,61 @@ +# Procedure: Update or Delete + +A single endpoint that handles create, update, and delete based on the input fields. + +**Lexicon type:** procedure + +```lua +function handle() + if input.delete and input.uri then + local r = Record.load(input.uri) + if r then r:delete() end + return { success = true } + end + + if input.uri then + -- Update existing + local r = Record.load(input.uri) + if not r then error("not found") end + r.status = input.status + r:save() + return { uri = r._uri, cid = r._cid } + end + + -- Create new + local r = Record(collection, input) + r:save() + return { uri = r._uri, cid = r._cid } +end +``` + +## How it works + +1. If `input.delete` is truthy and `input.uri` is provided, load the record with [`Record.load`](../../guides/scripting#static-methods) and delete it. +2. If only `input.uri` is provided, load the existing record with [`Record.load`](../../guides/scripting#static-methods), update its fields, and save it back. Since `_uri` is already set, `r:save()` calls `putRecord` instead of `createRecord`. +3. If neither condition matches, create a new record from the input. + +## Usage + +```sh +# Create +curl -X POST http://localhost:3000/xrpc/xyz.statusphere.setRecord \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ "status": "hello" }' + +# Update +curl -X POST http://localhost:3000/xrpc/xyz.statusphere.setRecord \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ "uri": "at://did:plc:abc/xyz.statusphere.record/abc123", "status": "updated" }' + +# Delete +curl -X POST http://localhost:3000/xrpc/xyz.statusphere.setRecord \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ "uri": "at://did:plc:abc/xyz.statusphere.record/abc123", "delete": true }' +``` + +## Use case + +This pattern reduces the number of endpoints your app needs by multiplexing create, update, and delete through a single procedure. The presence of `uri` and `delete` fields in the input determines the action. diff --git a/docs/reference/scripts/upsert-record.md b/docs/reference/scripts/upsert-record.md new file mode 100644 index 0000000..fcdc825 --- /dev/null +++ b/docs/reference/scripts/upsert-record.md @@ -0,0 +1,60 @@ +# Procedure: Upsert a Record + +Create a new record, or update an existing one if the client provides its rkey. + +**Lexicon type:** procedure + +```lua +function handle() + local rkey = input.rkey or TID() + local uri = "at://" .. caller_did .. "/" .. collection .. "/" .. rkey + + local r = Record.load(uri) + if r then + -- Update existing record + r.status = input.status + r.updatedAt = now() + r:save() + else + -- Create new record + r = Record(collection, { + status = input.status, + createdAt = now(), + updatedAt = now(), + }) + r:set_rkey(rkey) + r:save() + end + + return { uri = r._uri, cid = r._cid } +end +``` + +## How it works + +1. Use the client-provided `input.rkey` if present, otherwise generate a new [`TID()`](../../guides/scripting#utility-globals). This means omitting `rkey` always creates, while providing one enables updates. +2. Build the AT URI from the caller's DID, the target collection, and the rkey, then try to load it with [`Record.load`](../../guides/scripting#static-methods). +3. If the record exists, update its fields and save. Since `_uri` is already set, `r:save()` calls `putRecord`. +4. If it doesn't exist, create a new record, set the rkey explicitly with `r:set_rkey()`, and save. This calls `createRecord` with the specified rkey. + +## Usage + +```sh +# Create: no rkey, so a new TID is generated +curl -X POST http://localhost:3000/xrpc/xyz.statusphere.setStatus \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ "status": "hello" }' +# → { "uri": "at://did:plc:abc/xyz.statusphere.status/3abc123", "cid": "bafyrei..." } + +# Update: pass the rkey back to update the same record +curl -X POST http://localhost:3000/xrpc/xyz.statusphere.setStatus \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ "rkey": "3abc123", "status": "updated" }' +# → { "uri": "at://did:plc:abc/xyz.statusphere.status/3abc123", "cid": "bafyrei..." } +``` + +## Use case + +This is useful when the client knows whether it's creating or editing, but you want a single endpoint for both. The client omits `rkey` for new records and includes it when editing an existing one. The rkey from the initial create response acts as the record's stable identifier for future updates. diff --git a/docs/reference/troubleshooting.md b/docs/reference/troubleshooting.md new file mode 100644 index 0000000..3989ca5 --- /dev/null +++ b/docs/reference/troubleshooting.md @@ -0,0 +1,100 @@ +# Troubleshooting + +Common issues and how to resolve them. + +## XRPC endpoint returns 404 + +**Symptom**: `GET /xrpc/your.method.name` returns `{"error": "method not found"}`. + +**Causes**: + +- The lexicon hasn't been uploaded yet. Check with `GET /admin/lexicons` or the [dashboard](../getting-started/dashboard). +- The lexicon's `defs.main.type` doesn't match the HTTP method. Queries are `GET`, procedures are `POST`. +- The NSID in the URL doesn't match the `id` field in the uploaded lexicon JSON. + +## Queries return empty results + +**Symptom**: The XRPC query endpoint returns `{"records": []}` even though records should exist. + +**Causes**: + +- The query lexicon is missing a `target_collection`. Without it, the query doesn't know which records to read. See [Lexicons - target_collection](../guides/lexicons#target-collection). +- The record-type lexicon hasn't finished backfilling. Check backfill status with `GET /admin/backfill/status` or the dashboard. +- Records exist on the network but HappyView hasn't indexed them yet. Tap only picks up new events from when the collection filter was added. Use [backfill](../guides/backfill) for historical records. + +## Procedure returns 401 Unauthorized + +**Symptom**: `POST /xrpc/your.method.name` returns `{"error": "..."}` with status 401. + +**Causes**: + +- The `Authorization: Bearer ` header is missing or malformed. +- The token has expired or is invalid. Tokens are validated against AIP's `/oauth/userinfo` endpoint. +- AIP is unreachable. Check that `AIP_URL` is set correctly and the AIP service is running. + +For AIP-specific issues, see the [AIP documentation](https://github.com/graze-social/aip). + +## Admin endpoints return 403 Forbidden + +**Symptom**: Admin API calls return `{"error": "forbidden"}`. + +**Causes**: + +- Your DID is not in the admins table. Ask an existing admin to add you via `POST /admin/admins`. +- If this is a fresh deployment with no admins, the first authenticated request to any admin endpoint automatically bootstraps you as admin. Make sure you're sending a valid Bearer token. + +## Lua script errors + +**Symptom**: An XRPC endpoint returns `{"error": "script execution failed"}` or `{"error": "script exceeded execution time limit"}`. + +**What to do**: + +1. Check the server logs: the full error message is logged at error level but not exposed to the client. +2. Use `log("message")` in your script to trace execution. Output appears in server logs at debug level (requires `RUST_LOG` to include debug). +3. If you hit the execution limit, your script likely has an infinite loop or is processing too much data. See [Lua Scripting - Sandbox](../guides/scripting#sandbox). + +See [Lua Scripting - Debugging](../guides/scripting#debugging) for more. + +## Backfill job stuck in "pending" or "running" + +**Symptom**: A backfill job doesn't progress or stays in `pending`. + +**Causes**: + +- The backfill worker processes one job at a time. If another job is running, yours will wait. +- The relay (`RELAY_URL`) may be unreachable or slow to respond. Check connectivity. +- Individual PDS fetches can fail silently. The worker logs warnings and continues. Check server logs for details. + +See [Backfill](../guides/backfill) for how the process works. + +## Records not appearing in real time + +**Symptom**: New records created on the network don't show up in queries. + +**Causes**: + +- HappyView receives real-time events via [Tap](https://github.com/bluesky-social/indigo/tree/main/cmd/tap). Make sure Tap is running and connected to HappyView. See the [Tap documentation](https://github.com/bluesky-social/indigo/tree/main/cmd/tap) for configuration. +- No record-type lexicon exists for the collection. HappyView only indexes collections that have a corresponding record-type lexicon. +- The Tap connection hasn't synced the new collection filter after a lexicon change. This should happen automatically. Check server logs for connection errors. + +## OAuth or login issues + +OAuth is handled entirely by [AIP](https://github.com/graze-social/aip). If users can't log in or tokens aren't working: + +1. Verify AIP is running and reachable at the configured `AIP_URL`. +2. Check that AIP has valid signing keys configured (`OAUTH_SIGNING_KEYS`). +3. Check that both HappyView and AIP have public URLs assigned (required for OAuth callbacks). + +See the [AIP documentation](https://github.com/graze-social/aip) for setup and debugging. + +## Database connection errors + +**Symptom**: HappyView fails to start or returns 500 errors. + +**Causes**: + +- `DATABASE_URL` is not set or points to an unreachable Postgres instance. +- The database user doesn't have sufficient permissions. HappyView needs to create tables (migrations run automatically on startup). +- Postgres version is too old. HappyView requires Postgres 17+. + +See [Configuration](../getting-started/configuration) for environment variable details. diff --git a/docs/reference/xrpc-api.md b/docs/reference/xrpc-api.md new file mode 100644 index 0000000..0e5fb1e --- /dev/null +++ b/docs/reference/xrpc-api.md @@ -0,0 +1,208 @@ +# XRPC API + +[XRPC](https://atproto.com/specs/xrpc) is the HTTP-based RPC protocol used by the AT Protocol. HappyView dynamically registers XRPC endpoints based on your uploaded [lexicons](../guides/lexicons): query lexicons become `GET /xrpc/{nsid}` routes, procedure lexicons become `POST /xrpc/{nsid}` routes. + +If a query or procedure lexicon has a [Lua script](../guides/scripting) attached, the script handles the request. Otherwise, HappyView uses built-in default behavior (described below). + +## Auth + +- **Queries** (`GET /xrpc/{method}`): unauthenticated +- **Procedures** (`POST /xrpc/{method}`): require an AIP-issued `Authorization: Bearer ` header +- **getProfile**: requires auth +- **uploadBlob**: requires auth + +## Fixed endpoints + +These endpoints are always available regardless of which lexicons are loaded. + +### Health check + +``` +GET /health +``` + +```sh +curl http://localhost:3000/health +``` + +**Response**: `200 OK` with body `ok` + +### Get profile + +``` +GET /xrpc/app.bsky.actor.getProfile +``` + +Returns the authenticated user's profile, resolved from their PDS via PLC directory lookup. + +```sh +curl http://localhost:3000/xrpc/app.bsky.actor.getProfile \ + -H "Authorization: Bearer $TOKEN" +``` + +**Response**: `200 OK` + +```json +{ + "did": "did:plc:abc123", + "handle": "user.bsky.social", + "displayName": "User Name", + "description": "Bio text", + "avatarURL": "https://pds.example.com/xrpc/com.atproto.sync.getBlob?did=did:plc:abc123&cid=bafyabc" +} +``` + +### Upload blob + +``` +POST /xrpc/com.atproto.repo.uploadBlob +``` + +Proxies a blob upload to the authenticated user's PDS. Maximum size: 50MB. + +```sh +curl -X POST http://localhost:3000/xrpc/com.atproto.repo.uploadBlob \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: image/png" \ + --data-binary @image.png +``` + +**Response**: proxied from the user's PDS. + +## Dynamic query endpoints + +Query endpoints are generated from lexicons with `type: "query"`. Without a [Lua script](../guides/scripting), they support two built-in modes depending on whether a `uri` parameter is provided. + +### Single record + +``` +GET /xrpc/{method}?uri={at-uri} +``` + +```sh +curl "http://localhost:3000/xrpc/xyz.statusphere.listStatuses?uri=at%3A%2F%2Fdid%3Aplc%3Aabc%2Fxyz.statusphere.status%2Fabc123" +``` + +**Response**: `200 OK` + +```json +{ + "record": { + "uri": "at://did:plc:abc/xyz.statusphere.status/abc123", + "$type": "xyz.statusphere.status", + "status": "\ud83d\ude0a", + "createdAt": "2025-01-01T12:00:00Z" + } +} +``` + +Media blobs are automatically enriched with a `url` field pointing to the user's PDS. + +### List records + +``` +GET /xrpc/{method}?limit=20&cursor=0&did=optional +``` + +| Param | Type | Default | Description | +|-------|------|---------|-------------| +| `limit` | integer | 20 | Max records to return (max 100) | +| `cursor` | string | `0` | Pagination cursor (opaque, pass from previous response) | +| `did` | string | --- | Filter records by DID | + +```sh +curl "http://localhost:3000/xrpc/xyz.statusphere.listStatuses?limit=10&did=did:plc:abc" +``` + +**Response**: `200 OK` + +```json +{ + "records": [ + { + "uri": "at://did:plc:abc/xyz.statusphere.status/abc123", + "status": "\ud83d\ude0a", + "createdAt": "2025-01-01T12:00:00Z" + } + ], + "cursor": "10" +} +``` + +The `cursor` field is present only when more records exist. + +## Dynamic procedure endpoints + +Procedure endpoints are generated from lexicons with `type: "procedure"`. Without a [Lua script](../guides/scripting), HappyView auto-detects create vs update based on whether the request body contains a `uri` field. + +### Create a record + +``` +POST /xrpc/{method} +``` + +When the body does **not** contain a `uri` field, a new record is created. + +```sh +curl -X POST http://localhost:3000/xrpc/xyz.statusphere.setStatus \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ "status": "\ud83d\ude0a", "createdAt": "2025-01-01T12:00:00Z" }' +``` + +HappyView proxies this to the user's PDS as `com.atproto.repo.createRecord`, then indexes the created record locally. + +### Update a record + +When the body **contains** a `uri` field, the existing record is updated. + +```sh +curl -X POST http://localhost:3000/xrpc/xyz.statusphere.setStatus \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ + "uri": "at://did:plc:abc/xyz.statusphere.status/abc123", + "status": "\ud83c\udf1f", + "createdAt": "2025-01-01T13:00:00Z" + }' +``` + +HappyView proxies this to the user's PDS as `com.atproto.repo.putRecord`, then upserts the record locally. + +**Response** for both: proxied from the user's PDS. + +## Errors + +All error responses return JSON with an `error` field: + +```json +{ + "error": "description of what went wrong" +} +``` + +| Status | Meaning | Common causes | +|--------|---------|---------------| +| `400 Bad Request` | Invalid input | Missing required fields, malformed JSON, invalid AT URI | +| `401 Unauthorized` | Authentication failed | Missing or invalid Bearer token. See [AIP documentation](https://github.com/graze-social/aip) for token issues | +| `404 Not Found` | Method or record not found | XRPC method has no matching lexicon, or the requested record doesn't exist | +| `500 Internal Server Error` | Server-side failure | Lua script error, database error, or upstream PDS failure | + +### Lua script errors + +When a Lua script fails, the response is `500` with one of: + +- `{"error": "script execution failed"}`: syntax error, runtime error, or missing `handle()` function +- `{"error": "script exceeded execution time limit"}`: the script hit the 1,000,000 instruction limit + +The full error details are logged server-side but not exposed to the client. See [Lua Scripting - Debugging](../guides/scripting#debugging) for how to diagnose script issues. + +### PDS errors + +When a procedure proxies a write to the user's PDS and the PDS returns an error, HappyView forwards the PDS response status code and body directly to the client. + +## Next steps + +- [Lua Scripting](../guides/scripting): Override the default query and procedure behavior with custom logic +- [Lexicons](../guides/lexicons): Understand how lexicons generate these endpoints +- [Admin API](admin-api): Manage lexicons and monitor your instance diff --git a/docs/tutorials/statusphere.md b/docs/tutorials/statusphere.md new file mode 100644 index 0000000..adccb73 --- /dev/null +++ b/docs/tutorials/statusphere.md @@ -0,0 +1,305 @@ +# Tutorial: Statusphere with HappyView + +[Statusphere](https://github.com/bluesky-social/statusphere-example-app) is an example AT Protocol application where users set their current status as a single emoji. It's a great way to learn how HappyView works because the data model is simple but the queries are interesting. + +In this tutorial, you'll set up HappyView to act as the AppView for Statusphere. By the end, you'll have automatically indexed records and automatically generated XPRC endpoints. + +:::tip +This tutorial assumes you have a running HappyView instance. If you don't, start with the [Quickstart](../getting-started/deployment/railway) or one of the local development guides ([Docker](../getting-started/deployment/docker), [from source](../getting-started/deployment/other)). +::: + +## The Statusphere lexicon + +Statusphere uses a single record type, `xyz.statusphere.status`. Each record has two fields: + +- `status`: a single emoji +- `createdAt`: a timestamp + +Users can set their status as many times as they want. Each status is a new record in their repository, keyed by a TID (timestamp-based identifier). The most recent record is their "current" status. + +For more background on how the app works, see the [ATProto Statusphere guide](https://atproto.com/guides/applications). + +## Step 1: Upload the record lexicon + +First, upload the `xyz.statusphere.status` lexicon to HappyView. This tells HappyView to start indexing Statusphere records from across the network as they're created, updated, or deleted. + +The examples below use `$TOKEN` as a placeholder for an AIP-issued access token. See [Authentication](../getting-started/authentication) for how to get one. + +```sh +curl -X POST http://localhost:3000/admin/lexicons \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ + "lexicon_json": { + "lexicon": 1, + "id": "xyz.statusphere.status", + "defs": { + "main": { + "type": "record", + "key": "tid", + "record": { + "type": "object", + "required": ["status", "createdAt"], + "properties": { + "status": { "type": "string", "maxGraphemes": 1 }, + "createdAt": { "type": "string", "format": "datetime" } + } + } + } + } + }, + "backfill": true + }' +``` + +HappyView now subscribes to `xyz.statusphere.status` via Tap. The `backfill` flag tells HappyView to also index existing status records from the network. You can monitor progress with `GET /admin/backfill/status` or the [dashboard](../getting-started/dashboard). + +:::tip +Since the `xyz.statusphere.status` lexicon is [published on the AT Protocol network](../guides/lexicons#network-lexicons), you can also add it as a network lexicon instead of uploading the JSON manually: + +```sh +curl -X POST http://localhost:3000/admin/network-lexicons \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ "nsid": "xyz.statusphere.status" }' +``` + +::: + +## Step 2: Verify records are being indexed + +Once the backfill starts processing, you should see records appearing. Check the stats: + +```sh +curl http://localhost:3000/admin/stats \ + -H "Authorization: Bearer $TOKEN" +``` + +```json +{ + "total_records": 1234, + "collections": [{ "collection": "xyz.statusphere.status", "count": 1234 }] +} +``` + +## Step 3: Add a query lexicon for listing statuses + +Now add a query endpoint to read the indexed data. Upload a query lexicon with `target_collection` pointing at the record collection from Step 1: + +```sh +curl -X POST http://localhost:3000/admin/lexicons \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ + "lexicon_json": { + "lexicon": 1, + "id": "xyz.statusphere.listStatuses", + "defs": { + "main": { + "type": "query", + "output": { "encoding": "application/json" } + } + } + }, + "target_collection": "xyz.statusphere.status" + }' +``` + +This creates a `GET /xrpc/xyz.statusphere.listStatuses` endpoint. Without a Lua script, it uses HappyView's built-in default behavior: listing records with `limit`, `cursor`, and `did` parameters, or fetching a single record by `uri`. Try it: + +```sh +curl "http://localhost:3000/xrpc/xyz.statusphere.listStatuses?limit=5" +``` + +```json +{ + "records": [ + { + "uri": "at://did:plc:abc/xyz.statusphere.status/3abc123", + "status": "\ud83d\ude0a", + "createdAt": "2025-01-01T12:00:00Z" + }, + { + "uri": "at://did:plc:def/xyz.statusphere.status/3def456", + "status": "\ud83c\udf1f", + "createdAt": "2025-01-01T11:30:00Z" + } + ], + "cursor": "5" +} +``` + +See [XRPC API](../reference/xrpc-api) for the full default query behavior. + +## Step 4: Enhance the query with a Lua script + +The default query behavior works, but let's customize it with a [Lua script](../guides/scripting). Here's a script that handles single-record lookups by URI and paginated listing with an optional DID filter: + +```lua +function handle() + if params.uri then + local record = db.get(params.uri) + if not record then + return { error = "not found" } + end + return { record = record } + end + + return db.query({ + collection = collection, + did = params.did, + limit = tonumber(params.limit) or 20, + offset = tonumber(params.cursor) or 0, + }) +end +``` + +Re-upload the lexicon with parameters defined in the schema and the script attached: + +```sh +LEXICON='{ + "lexicon": 1, + "id": "xyz.statusphere.listStatuses", + "defs": { + "main": { + "type": "query", + "parameters": { + "type": "params", + "properties": { + "uri": { "type": "string" }, + "did": { "type": "string" }, + "limit": { "type": "integer" }, + "cursor": { "type": "string" } + } + }, + "output": { "encoding": "application/json" } + } + } +}' + +SCRIPT='function handle() + if params.uri then + local record = db.get(params.uri) + if not record then + return { error = "not found" } + end + return { record = record } + end + + return db.query({ + collection = collection, + did = params.did, + limit = tonumber(params.limit) or 20, + offset = tonumber(params.cursor) or 0, + }) +end' + +curl -X POST http://localhost:3000/admin/lexicons \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/json" \ + -d "{ + \"lexicon_json\": $LEXICON, + \"target_collection\": \"xyz.statusphere.status\", + \"script\": \"$SCRIPT\" + }" +``` + +The endpoint now uses your custom logic. Filter by a specific user: + +```sh +curl "http://localhost:3000/xrpc/xyz.statusphere.listStatuses?did=did:plc:abc&limit=1" +``` + +Fetch a single record by URI: + +```sh +curl "http://localhost:3000/xrpc/xyz.statusphere.listStatuses?uri=at://did:plc:abc/xyz.statusphere.status/3abc123" +``` + +## Step 5: Add a procedure lexicon for setting status + +Add a write endpoint so users can set their status through your AppView. This creates a `POST /xrpc/xyz.statusphere.setStatus` endpoint that proxies writes to the user's PDS. + +The Lua script auto-fills `createdAt` and uses the authenticated user's DID: + +```lua +function handle() + local r = Record(collection, { + status = input.status, + createdAt = now(), + }) + r:save() + return { uri = r._uri, cid = r._cid } +end +``` + +Upload the procedure lexicon with this script: + +```sh +LEXICON='{ + "lexicon": 1, + "id": "xyz.statusphere.setStatus", + "defs": { + "main": { + "type": "procedure", + "input": { "encoding": "application/json" }, + "output": { "encoding": "application/json" } + } + } +}' + +SCRIPT='function handle() + local r = Record(collection, { + status = input.status, + createdAt = now(), + }) + r:save() + return { uri = r._uri, cid = r._cid } +end' + +curl -X POST http://localhost:3000/admin/lexicons \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/json" \ + -d "{ + \"lexicon_json\": $LEXICON, + \"target_collection\": \"xyz.statusphere.status\", + \"script\": \"$SCRIPT\" + }" +``` + +## Step 6: Test the procedure endpoint + +Set a status (requires authentication): + +```sh +curl -X POST http://localhost:3000/xrpc/xyz.statusphere.setStatus \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/json" \ + -d '{ "status": "\ud83d\ude80" }' +``` + +```json +{ + "uri": "at://did:plc:yourDID/xyz.statusphere.status/3xyz789", + "cid": "bafyreiabc123..." +} +``` + +The record is created on your PDS and immediately indexed by HappyView. + +## What you've built + +With three lexicon uploads and a few lines of Lua, you have a complete Statusphere AppView: + +- **Real-time indexing** of `xyz.statusphere.status` records from the entire AT Protocol network +- **Historical backfill** of existing status records +- **A query endpoint** (`xyz.statusphere.listStatuses`) with filtering, pagination, and single-record lookups +- **A write endpoint** (`xyz.statusphere.setStatus`) that creates records on the user's PDS and indexes them locally + +## Next steps + +- [Lua Scripting](../guides/scripting): Explore the full Record and database APIs to build more complex queries +- [Lexicons](../guides/lexicons): Learn about network lexicons, the backfill flag, and target collections +- [XRPC API](../reference/xrpc-api): Understand how the generated endpoints behave +- [Statusphere example app](https://github.com/bluesky-social/statusphere-example-app): See the full Statusphere frontend +- [ATProto Statusphere guide](https://atproto.com/guides/applications): Deep dive into how the app works at the protocol level diff --git a/docs/xrpc-api.md b/docs/xrpc-api.md deleted file mode 100644 index 01cc229..0000000 --- a/docs/xrpc-api.md +++ /dev/null @@ -1,171 +0,0 @@ -# XRPC API - -HappyView dynamically registers XRPC endpoints based on uploaded lexicons. Query lexicons become `GET /xrpc/{nsid}` routes, procedure lexicons become `POST /xrpc/{nsid}` routes. - -## Auth - -- **Queries** (`GET /xrpc/{method}`): unauthenticated -- **Procedures** (`POST /xrpc/{method}`): require an AIP-issued `Authorization: Bearer ` header -- **getProfile**: requires auth -- **uploadBlob**: requires auth - ---- - -## Fixed endpoints - -### Health check - -``` -GET /health -``` - -```sh -curl http://localhost:3000/health -``` - -**Response**: `200 OK` with body `ok` - -### Get profile - -``` -GET /xrpc/app.bsky.actor.getProfile -``` - -Returns the authenticated user's profile, resolved from their PDS via PLC directory lookup. - -```sh -curl http://localhost:3000/xrpc/app.bsky.actor.getProfile \ - -H "Authorization: Bearer $TOKEN" -``` - -**Response**: `200 OK` - -```json -{ - "did": "did:plc:abc123", - "handle": "user.bsky.social", - "displayName": "User Name", - "description": "Bio text", - "avatarURL": "https://pds.example.com/xrpc/com.atproto.sync.getBlob?did=did:plc:abc123&cid=bafyabc" -} -``` - -### Upload blob - -``` -POST /xrpc/com.atproto.repo.uploadBlob -``` - -Proxies a blob upload to the authenticated user's PDS. Maximum size: 50MB. - -```sh -curl -X POST http://localhost:3000/xrpc/com.atproto.repo.uploadBlob \ - -H "Authorization: Bearer $TOKEN" \ - -H "Content-Type: image/png" \ - --data-binary @image.png -``` - -**Response**: proxied from the user's PDS. - ---- - -## Dynamic query endpoints - -Query endpoints are generated from lexicons with `type: "query"`. They support two modes depending on whether a `uri` parameter is provided. - -### Single record - -``` -GET /xrpc/{method}?uri={at-uri} -``` - -```sh -curl "http://localhost:3000/xrpc/games.gamesgamesgamesgames.listGames?uri=at%3A%2F%2Fdid%3Aplc%3Aabc%2Fgames.gamesgamesgamesgames.game%2Fabc123" -``` - -**Response**: `200 OK` - -```json -{ - "record": { - "uri": "at://did:plc:abc/games.gamesgamesgamesgames.game/abc123", - "$type": "games.gamesgamesgamesgames.game", - "title": "My Game" - } -} -``` - -Media blobs are automatically enriched with a `url` field pointing to the user's PDS. - -### List records - -``` -GET /xrpc/{method}?limit=20&cursor=0&did=optional -``` - -| Param | Type | Default | Description | -|-------|------|---------|-------------| -| `limit` | integer | 20 | Max records to return (max 100) | -| `cursor` | string | `0` | Pagination cursor (opaque, pass from previous response) | -| `did` | string | --- | Filter records by DID | - -```sh -curl "http://localhost:3000/xrpc/games.gamesgamesgamesgames.listGames?limit=10&did=did:plc:abc" -``` - -**Response**: `200 OK` - -```json -{ - "records": [ - { - "uri": "at://did:plc:abc/games.gamesgamesgamesgames.game/abc123", - "title": "My Game" - } - ], - "cursor": "10" -} -``` - -The `cursor` field is present only when more records exist. - ---- - -## Dynamic procedure endpoints - -Procedure endpoints are generated from lexicons with `type: "procedure"`. HappyView auto-detects create vs update based on whether the request body contains a `uri` field. - -### Create a record - -``` -POST /xrpc/{method} -``` - -When the body does **not** contain a `uri` field, a new record is created. - -```sh -curl -X POST http://localhost:3000/xrpc/games.gamesgamesgamesgames.createGame \ - -H "Authorization: Bearer $TOKEN" \ - -H "Content-Type: application/json" \ - -d '{ "title": "My Game" }' -``` - -HappyView proxies this to the user's PDS as `com.atproto.repo.createRecord`, then indexes the created record locally. - -### Update a record - -When the body **contains** a `uri` field, the existing record is updated. - -```sh -curl -X POST http://localhost:3000/xrpc/games.gamesgamesgamesgames.createGame \ - -H "Authorization: Bearer $TOKEN" \ - -H "Content-Type: application/json" \ - -d '{ - "uri": "at://did:plc:abc/games.gamesgamesgamesgames.game/abc123", - "title": "Updated Title" - }' -``` - -HappyView proxies this to the user's PDS as `com.atproto.repo.putRecord`, then upserts the record locally. - -**Response** for both: proxied from the user's PDS. diff --git a/docusaurus.config.ts b/docusaurus.config.ts index deac19a..8302579 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -6,7 +6,12 @@ const config: Config = { tagline: "Lexicon-driven ATProto AppView", url: "https://happyview.dev", baseUrl: "/", + favicon: "img/favicon.png", onBrokenLinks: "throw", + markdown: { + mermaid: true, + }, + themes: ["@docusaurus/theme-mermaid"], i18n: { defaultLocale: "en", @@ -33,6 +38,10 @@ const config: Config = { themeConfig: { navbar: { title: "HappyView", + logo: { + alt: "HappyView Logo", + src: "img/logo.png", + }, items: [ { type: "docSidebar", @@ -47,9 +56,11 @@ const config: Config = { }, ], }, + prism: { + additionalLanguages: ["lua"], + }, footer: { - style: "dark", - copyright: `Copyright \u00a9 ${new Date().getFullYear()} HappyView.`, + copyright: `Copyright \u00a9 ${new Date().getFullYear()} [Birbhouse Games](https://birb.house).`, }, } satisfies Preset.ThemeConfig, }; diff --git a/package-lock.json b/package-lock.json index 97c1a42..5677d59 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,8 @@ "dependencies": { "@docusaurus/core": "^3.7.0", "@docusaurus/preset-classic": "^3.7.0", + "@docusaurus/theme-mermaid": "^3.9.2", + "prismjs": "^1.30.0", "react": "^19.0.0", "react-dom": "^19.0.0" }, @@ -252,6 +254,19 @@ "node": ">= 14.0.0" } }, + "node_modules/@antfu/install-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", + "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==", + "license": "MIT", + "dependencies": { + "package-manager-detector": "^1.3.0", + "tinyexec": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/@babel/code-frame": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", @@ -1966,6 +1981,51 @@ "node": ">=6.9.0" } }, + "node_modules/@braintree/sanitize-url": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.2.tgz", + "integrity": "sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==", + "license": "MIT" + }, + "node_modules/@chevrotain/cst-dts-gen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.1.1.tgz", + "integrity": "sha512-fRHyv6/f542qQqiRGalrfJl/evD39mAvbJLCekPazhiextEatq1Jx1K/i9gSd5NNO0ds03ek0Cbo/4uVKmOBcw==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/gast": "11.1.1", + "@chevrotain/types": "11.1.1", + "lodash-es": "4.17.23" + } + }, + "node_modules/@chevrotain/gast": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.1.1.tgz", + "integrity": "sha512-Ko/5vPEYy1vn5CbCjjvnSO4U7GgxyGm+dfUZZJIWTlQFkXkyym0jFYrWEU10hyCjrA7rQtiHtBr0EaZqvHFZvg==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/types": "11.1.1", + "lodash-es": "4.17.23" + } + }, + "node_modules/@chevrotain/regexp-to-ast": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.1.1.tgz", + "integrity": "sha512-ctRw1OKSXkOrR8VTvOxrQ5USEc4sNrfwXHa1NuTcR7wre4YbjPcKw+82C2uylg/TEwFRgwLmbhlln4qkmDyteg==", + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/types": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.1.1.tgz", + "integrity": "sha512-wb2ToxG8LkgPYnKe9FH8oGn3TMCBdnwiuNC5l5y+CtlaVRbCytU0kbVsk6CGrqTL4ZN4ksJa0TXOYbxpbthtqw==", + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/utils": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.1.1.tgz", + "integrity": "sha512-71eTYMzYXYSFPrbg/ZwftSaSDld7UYlS8OQa3lNnn9jzNtpFbaReRRyghzqS7rI3CDaorqpPJJcXGHK+FE1TVQ==", + "license": "Apache-2.0" + }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -3911,6 +3971,34 @@ "react-dom": "^18.0.0 || ^19.0.0" } }, + "node_modules/@docusaurus/theme-mermaid": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-mermaid/-/theme-mermaid-3.9.2.tgz", + "integrity": "sha512-5vhShRDq/ntLzdInsQkTdoKWSzw8d1jB17sNPYhA/KvYYFXfuVEGHLM6nrf8MFbV8TruAHDG21Fn3W4lO8GaDw==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/module-type-aliases": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "mermaid": ">=11.6.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" + }, + "peerDependencies": { + "@mermaid-js/layout-elk": "^0.1.9", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@mermaid-js/layout-elk": { + "optional": true + } + } + }, "node_modules/@docusaurus/theme-search-algolia": { "version": "3.9.2", "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.9.2.tgz", @@ -4077,6 +4165,23 @@ "@hapi/hoek": "^9.0.0" } }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "license": "MIT" + }, + "node_modules/@iconify/utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.1.0.tgz", + "integrity": "sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==", + "license": "MIT", + "dependencies": { + "@antfu/install-pkg": "^1.1.0", + "@iconify/types": "^2.0.0", + "mlly": "^1.8.0" + } + }, "node_modules/@jest/schemas": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", @@ -4631,6 +4736,15 @@ "react": ">=16" } }, + "node_modules/@mermaid-js/parser": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-1.0.0.tgz", + "integrity": "sha512-vvK0Hi/VWndxoh03Mmz6wa1KDriSPjS2XMZL/1l19HFwygiObEEoEwSDxOqyLzzAI6J2PU3261JjTMTO7x+BPw==", + "license": "MIT", + "dependencies": { + "langium": "^4.0.0" + } + }, "node_modules/@noble/hashes": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", @@ -5240,6 +5354,259 @@ "@types/node": "*" } }, + "node_modules/@types/d3": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", + "license": "MIT" + }, + "node_modules/@types/d3-axis": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", + "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-brush": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", + "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-chord": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-contour": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", + "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", + "license": "MIT" + }, + "node_modules/@types/d3-dispatch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz", + "integrity": "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==", + "license": "MIT" + }, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-dsv": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", + "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", + "license": "MIT", + "dependencies": { + "@types/d3-dsv": "*" + } + }, + "node_modules/@types/d3-force": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", + "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", + "license": "MIT" + }, + "node_modules/@types/d3-format": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", + "license": "MIT" + }, + "node_modules/@types/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", + "license": "MIT", + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-hierarchy": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", + "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" + }, + "node_modules/@types/d3-polygon": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", + "license": "MIT" + }, + "node_modules/@types/d3-quadtree": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", + "license": "MIT" + }, + "node_modules/@types/d3-random": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", + "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", + "license": "MIT" + }, + "node_modules/@types/d3-selection": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", + "license": "MIT" + }, + "node_modules/@types/d3-shape": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz", + "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-time-format": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, + "node_modules/@types/d3-transition": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "license": "MIT", + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -5308,6 +5675,12 @@ "@types/send": "*" } }, + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "license": "MIT" + }, "node_modules/@types/gtag.js": { "version": "0.0.12", "resolved": "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.12.tgz", @@ -5545,6 +5918,13 @@ "@types/node": "*" } }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, "node_modules/@types/unist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", @@ -6682,6 +7062,33 @@ "url": "https://github.com/sponsors/fb55" } }, + "node_modules/chevrotain": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.1.1.tgz", + "integrity": "sha512-f0yv5CPKaFxfsPTBzX7vGuim4oIC1/gcS7LUGdBSwl2dU6+FON6LVUksdOo1qJjoUvXNn45urgh8C+0a24pACQ==", + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@chevrotain/cst-dts-gen": "11.1.1", + "@chevrotain/gast": "11.1.1", + "@chevrotain/regexp-to-ast": "11.1.1", + "@chevrotain/types": "11.1.1", + "@chevrotain/utils": "11.1.1", + "lodash-es": "4.17.23" + } + }, + "node_modules/chevrotain-allstar": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", + "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", + "license": "MIT", + "dependencies": { + "lodash-es": "^4.17.21" + }, + "peerDependencies": { + "chevrotain": "^11.0.0" + } + }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -6973,6 +7380,12 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "license": "MIT" }, + "node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "license": "MIT" + }, "node_modules/config-chain": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", @@ -7173,6 +7586,15 @@ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "license": "MIT" }, + "node_modules/cose-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", + "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "license": "MIT", + "dependencies": { + "layout-base": "^1.0.0" + } + }, "node_modules/cosmiconfig": { "version": "8.3.6", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", @@ -7529,134 +7951,662 @@ "integrity": "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==", "license": "MIT", "dependencies": { - "cssnano-preset-default": "^6.1.2", - "lilconfig": "^3.1.1" + "cssnano-preset-default": "^6.1.2", + "lilconfig": "^3.1.1" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-preset-advanced": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-6.1.2.tgz", + "integrity": "sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ==", + "license": "MIT", + "dependencies": { + "autoprefixer": "^10.4.19", + "browserslist": "^4.23.0", + "cssnano-preset-default": "^6.1.2", + "postcss-discard-unused": "^6.0.5", + "postcss-merge-idents": "^6.0.3", + "postcss-reduce-idents": "^6.0.3", + "postcss-zindex": "^6.0.2" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-preset-default": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz", + "integrity": "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^4.0.2", + "postcss-calc": "^9.0.1", + "postcss-colormin": "^6.1.0", + "postcss-convert-values": "^6.1.0", + "postcss-discard-comments": "^6.0.2", + "postcss-discard-duplicates": "^6.0.3", + "postcss-discard-empty": "^6.0.3", + "postcss-discard-overridden": "^6.0.2", + "postcss-merge-longhand": "^6.0.5", + "postcss-merge-rules": "^6.1.1", + "postcss-minify-font-values": "^6.1.0", + "postcss-minify-gradients": "^6.0.3", + "postcss-minify-params": "^6.1.0", + "postcss-minify-selectors": "^6.0.4", + "postcss-normalize-charset": "^6.0.2", + "postcss-normalize-display-values": "^6.0.2", + "postcss-normalize-positions": "^6.0.2", + "postcss-normalize-repeat-style": "^6.0.2", + "postcss-normalize-string": "^6.0.2", + "postcss-normalize-timing-functions": "^6.0.2", + "postcss-normalize-unicode": "^6.1.0", + "postcss-normalize-url": "^6.0.2", + "postcss-normalize-whitespace": "^6.0.2", + "postcss-ordered-values": "^6.0.2", + "postcss-reduce-initial": "^6.1.0", + "postcss-reduce-transforms": "^6.0.2", + "postcss-svgo": "^6.0.3", + "postcss-unique-selectors": "^6.0.4" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-utils": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz", + "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==", + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "license": "MIT", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "license": "CC0-1.0" + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/cytoscape": { + "version": "3.33.1", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.1.tgz", + "integrity": "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "license": "MIT", + "dependencies": { + "cose-base": "^1.0.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", + "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "license": "MIT", + "dependencies": { + "cose-base": "^2.2.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/cose-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", + "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "license": "MIT", + "dependencies": { + "layout-base": "^2.0.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/layout-base": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", + "license": "MIT" + }, + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "license": "ISC", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "license": "ISC", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "license": "ISC", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "license": "ISC", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "license": "ISC", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/d3-dsv/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "license": "ISC", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz", + "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "license": "BSD-3-Clause", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "license": "BSD-3-Clause" + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "license": "ISC" + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" }, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/cssnano" - }, - "peerDependencies": { - "postcss": "^8.4.31" + "node": ">=12" } }, - "node_modules/cssnano-preset-advanced": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-6.1.2.tgz", - "integrity": "sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ==", - "license": "MIT", + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", "dependencies": { - "autoprefixer": "^10.4.19", - "browserslist": "^4.23.0", - "cssnano-preset-default": "^6.1.2", - "postcss-discard-unused": "^6.0.5", - "postcss-merge-idents": "^6.0.3", - "postcss-reduce-idents": "^6.0.3", - "postcss-zindex": "^6.0.2" + "d3-array": "2 - 3" }, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.4.31" + "node": ">=12" } }, - "node_modules/cssnano-preset-default": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz", - "integrity": "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==", - "license": "MIT", + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", "dependencies": { - "browserslist": "^4.23.0", - "css-declaration-sorter": "^7.2.0", - "cssnano-utils": "^4.0.2", - "postcss-calc": "^9.0.1", - "postcss-colormin": "^6.1.0", - "postcss-convert-values": "^6.1.0", - "postcss-discard-comments": "^6.0.2", - "postcss-discard-duplicates": "^6.0.3", - "postcss-discard-empty": "^6.0.3", - "postcss-discard-overridden": "^6.0.2", - "postcss-merge-longhand": "^6.0.5", - "postcss-merge-rules": "^6.1.1", - "postcss-minify-font-values": "^6.1.0", - "postcss-minify-gradients": "^6.0.3", - "postcss-minify-params": "^6.1.0", - "postcss-minify-selectors": "^6.0.4", - "postcss-normalize-charset": "^6.0.2", - "postcss-normalize-display-values": "^6.0.2", - "postcss-normalize-positions": "^6.0.2", - "postcss-normalize-repeat-style": "^6.0.2", - "postcss-normalize-string": "^6.0.2", - "postcss-normalize-timing-functions": "^6.0.2", - "postcss-normalize-unicode": "^6.1.0", - "postcss-normalize-url": "^6.0.2", - "postcss-normalize-whitespace": "^6.0.2", - "postcss-ordered-values": "^6.0.2", - "postcss-reduce-initial": "^6.1.0", - "postcss-reduce-transforms": "^6.0.2", - "postcss-svgo": "^6.0.3", - "postcss-unique-selectors": "^6.0.4" + "d3-time": "1 - 3" }, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.4.31" + "node": ">=12" } }, - "node_modules/cssnano-utils": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz", - "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==", - "license": "MIT", + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.4.31" + "node": ">=12" } }, - "node_modules/csso": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", - "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", - "license": "MIT", + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", "dependencies": { - "css-tree": "~2.2.0" + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" }, "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", - "npm": ">=7.0.0" + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" } }, - "node_modules/csso/node_modules/css-tree": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", - "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", - "license": "MIT", + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", "dependencies": { - "mdn-data": "2.0.28", - "source-map-js": "^1.0.1" + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" }, "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", - "npm": ">=7.0.0" + "node": ">=12" } }, - "node_modules/csso/node_modules/mdn-data": { - "version": "2.0.28", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", - "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", - "license": "CC0-1.0" + "node_modules/dagre-d3-es": { + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.13.tgz", + "integrity": "sha512-efEhnxpSuwpYOKRm/L5KbqoZmNNukHa/Flty4Wp62JRvgH2ojwVgPgdYyr4twpieZnyRDdIH7PY2mopX26+j2Q==", + "license": "MIT", + "dependencies": { + "d3": "^7.9.0", + "lodash-es": "^4.17.21" + } }, - "node_modules/csstype": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", - "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "node_modules/dayjs": { + "version": "1.11.19", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", + "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", "license": "MIT" }, "node_modules/debounce": { @@ -7820,6 +8770,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "license": "ISC", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -7958,6 +8917,15 @@ "url": "https://github.com/fb55/domhandler?sponsor=1" } }, + "node_modules/dompurify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz", + "integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, "node_modules/domutils": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", @@ -9191,6 +10159,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/hachure-fill": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", + "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==", + "license": "MIT" + }, "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", @@ -9872,6 +10846,15 @@ "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", "license": "MIT" }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -10367,6 +11350,31 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/katex": { + "version": "0.16.33", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.33.tgz", + "integrity": "sha512-q3N5u+1sY9Bu7T4nlXoiRBXWfwSefNGoKeOwekV+gw0cAXQlz2Ww6BLcmBxVDeXBMUDQv6fK5bcNaJLxob3ZQA==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -10376,6 +11384,11 @@ "json-buffer": "3.0.1" } }, + "node_modules/khroma": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", + "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -10394,6 +11407,23 @@ "node": ">=6" } }, + "node_modules/langium": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/langium/-/langium-4.2.1.tgz", + "integrity": "sha512-zu9QWmjpzJcomzdJQAHgDVhLGq5bLosVak1KVa40NzQHXfqr4eAHupvnPOVXEoLkg6Ocefvf/93d//SB7du4YQ==", + "license": "MIT", + "dependencies": { + "chevrotain": "~11.1.1", + "chevrotain-allstar": "~0.3.1", + "vscode-languageserver": "~9.0.1", + "vscode-languageserver-textdocument": "~1.0.11", + "vscode-uri": "~3.1.0" + }, + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, "node_modules/latest-version": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", @@ -10419,6 +11449,12 @@ "shell-quote": "^1.8.3" } }, + "node_modules/layout-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", + "license": "MIT" + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -10494,6 +11530,12 @@ "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", "license": "MIT" }, + "node_modules/lodash-es": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "license": "MIT" + }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -10586,6 +11628,18 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/marked": { + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.2.tgz", + "integrity": "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 20" + } + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -11065,6 +12119,47 @@ "node": ">= 8" } }, + "node_modules/mermaid": { + "version": "11.12.3", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.12.3.tgz", + "integrity": "sha512-wN5ZSgJQIC+CHJut9xaKWsknLxaFBwCPwPkGTSUYrTiHORWvpT8RxGk849HPnpUAQ+/9BPRqYb80jTpearrHzQ==", + "license": "MIT", + "dependencies": { + "@braintree/sanitize-url": "^7.1.1", + "@iconify/utils": "^3.0.1", + "@mermaid-js/parser": "^1.0.0", + "@types/d3": "^7.4.3", + "cytoscape": "^3.29.3", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.2.0", + "d3": "^7.9.0", + "d3-sankey": "^0.12.3", + "dagre-d3-es": "7.0.13", + "dayjs": "^1.11.18", + "dompurify": "^3.2.5", + "katex": "^0.16.22", + "khroma": "^2.1.0", + "lodash-es": "^4.17.23", + "marked": "^16.2.1", + "roughjs": "^4.6.6", + "stylis": "^4.3.6", + "ts-dedent": "^2.2.0", + "uuid": "^11.1.0" + } + }, + "node_modules/mermaid/node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -12972,6 +14067,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/mlly": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz", + "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==", + "license": "MIT", + "dependencies": { + "acorn": "^8.15.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.1" + } + }, "node_modules/mrmime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", @@ -13429,6 +14536,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/package-manager-detector": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.6.0.tgz", + "integrity": "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==", + "license": "MIT" + }, "node_modules/param-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", @@ -13556,6 +14669,12 @@ "tslib": "^2.0.3" } }, + "node_modules/path-data-parser": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", + "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==", + "license": "MIT" + }, "node_modules/path-exists": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", @@ -13604,6 +14723,12 @@ "node": ">=8" } }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -13637,6 +14762,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, "node_modules/pkijs": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-3.3.3.tgz", @@ -13654,6 +14790,22 @@ "node": ">=16.0.0" } }, + "node_modules/points-on-curve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", + "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==", + "license": "MIT" + }, + "node_modules/points-on-path": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", + "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", + "license": "MIT", + "dependencies": { + "path-data-parser": "0.1.0", + "points-on-curve": "0.2.0" + } + }, "node_modules/postcss": { "version": "8.5.6", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", @@ -16089,6 +17241,24 @@ "node": ">=0.10.0" } }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "license": "Unlicense" + }, + "node_modules/roughjs": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", + "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", + "license": "MIT", + "dependencies": { + "hachure-fill": "^0.5.2", + "path-data-parser": "^0.1.0", + "points-on-curve": "^0.2.0", + "points-on-path": "^0.2.1" + } + }, "node_modules/rtlcss": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.3.0.tgz", @@ -16142,6 +17312,12 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause" + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -16974,6 +18150,12 @@ "postcss": "^8.4.31" } }, + "node_modules/stylis": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", + "license": "MIT" + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -17172,6 +18354,15 @@ "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", "license": "MIT" }, + "node_modules/tinyexec": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/tinypool": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", @@ -17247,6 +18438,15 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "license": "MIT", + "engines": { + "node": ">=6.10" + } + }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -17342,6 +18542,12 @@ "node": ">=14.17" } }, + "node_modules/ufo": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz", + "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==", + "license": "MIT" + }, "node_modules/undici-types": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", @@ -17837,6 +19043,55 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageserver": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", + "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "license": "MIT", + "dependencies": { + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "license": "MIT", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", + "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", + "license": "MIT" + }, + "node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "license": "MIT" + }, + "node_modules/vscode-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", + "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", + "license": "MIT" + }, "node_modules/watchpack": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", diff --git a/package.json b/package.json index a8a8ffc..c733037 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,8 @@ "dependencies": { "@docusaurus/core": "^3.7.0", "@docusaurus/preset-classic": "^3.7.0", + "@docusaurus/theme-mermaid": "^3.9.2", + "prismjs": "^1.30.0", "react": "^19.0.0", "react-dom": "^19.0.0" }, diff --git a/sidebars.ts b/sidebars.ts index 1587977..e9158b0 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -2,16 +2,187 @@ import type { SidebarsConfig } from "@docusaurus/plugin-content-docs"; const sidebars: SidebarsConfig = { docs: [ - "README", - "quickstart", - "configuration", - "deployment", - "lexicons", - "network-lexicons", - "backfill", - "xrpc-api", - "admin-api", - "architecture", + { + type: "doc", + id: "README", + label: "Introduction", + }, + { + type: "category", + label: "Getting Started", + items: [ + { + type: "doc", + id: "getting-started/quickstart", + label: "Quickstart", + }, + { + type: "category", + label: "Deployment", + items: [ + { + type: "doc", + id: "getting-started/deployment/railway", + label: "Railway", + }, + { + type: "doc", + id: "getting-started/deployment/docker", + label: "Docker", + }, + { + type: "doc", + id: "getting-started/deployment/other", + label: "Other", + }, + ], + }, + { + type: "doc", + id: "getting-started/authentication", + label: "Authentication", + }, + { + type: "doc", + id: "getting-started/configuration", + label: "Configuration", + }, + { + type: "doc", + id: "getting-started/dashboard", + label: "Dashboard", + }, + ], + }, + { + type: "category", + label: "Tutorials", + items: [ + { + type: "doc", + id: "tutorials/statusphere", + label: "Statusphere", + }, + ], + }, + { + type: "category", + label: "Guides", + items: [ + { + type: "doc", + id: "guides/lexicons", + label: "Lexicons", + }, + { + type: "doc", + id: "guides/scripting", + label: "Lua Scripting", + }, + { + type: "doc", + id: "guides/backfill", + label: "Backfill", + }, + ], + }, + { + type: "category", + label: "Reference", + items: [ + { + type: "doc", + id: "reference/xrpc-api", + label: "XRPC API", + }, + { + type: "doc", + id: "reference/admin-api", + label: "Admin API", + }, + { + type: "category", + label: "Script Examples", + items: [ + { + type: "doc", + id: "reference/scripts/get-record", + label: "Get a Record", + }, + { + type: "doc", + id: "reference/scripts/create-record", + label: "Create Record", + }, + { + type: "doc", + id: "reference/scripts/upsert-record", + label: "Upsert Record", + }, + { + type: "doc", + id: "reference/scripts/paginated-list", + label: "Paginated List", + }, + { + type: "doc", + id: "reference/scripts/list-or-fetch", + label: "List or Fetch", + }, + { + type: "doc", + id: "reference/scripts/expanded-query", + label: "Expanded Query", + }, + { + type: "doc", + id: "reference/scripts/update-or-delete", + label: "Update or Delete", + }, + { + type: "doc", + id: "reference/scripts/batch-save", + label: "Batch Save", + }, + { + type: "doc", + id: "reference/scripts/sidecar-records", + label: "Sidecar Records", + }, + { + type: "doc", + id: "reference/scripts/cascading-delete", + label: "Cascading Delete", + }, + { + type: "doc", + id: "reference/scripts/complex-mutations", + label: "Complex Mutations", + }, + ], + }, + { + type: "doc", + id: "reference/glossary", + label: "Glossary", + }, + { + type: "doc", + id: "reference/architecture", + label: "Architecture", + }, + { + type: "doc", + id: "reference/troubleshooting", + label: "Troubleshooting", + }, + { + type: "doc", + id: "reference/production-deployment", + label: "Production", + }, + ], + }, ], }; diff --git a/static/img/favicon.png b/static/img/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..15d2811e25fb12894508efbe492a7052919ef306 GIT binary patch literal 2174 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}Ea{HEjtmSN`?>!lvVtU& zJ%W507^>757#dm_7=AG@Ff_biU???UV0e|lz+g3lfkC`r&aOZk1_p+T)CkWsUtb0- z1_lNW1{Ovs29ODi3=9l*jM8wn8>0pTGXnzyBLfoyLwhCz3z*Ho;Ku+4j5-iLlxAMQ z2vyCEaj?!TC14 zx*+7K=>OX9@2WSy$%}j9>(S5>9^BaByGlS*bfZ;ii{ElFE7{|>`j#H<(KMEwvCKH^ zcINRinYnhME`bYf@rAw;$>u(q(Y^761+Q=rhv$VgmF;)mq|M*Hzqov|s^ZCv|1a(5 zo!t5T_V3#Jmis?jKd)x_5%TXm&kFxX_bb@=A_7}g!jzAN@sypL-_X{b^L_Q)AN(Rc z{z;#c84bQAs_NXTHQCeoZ1qB652LByCO^?Wv_6?b_|$8b4=mdryw8$-kmBc_}kzl}{k=M<2n<{X|v@XbMD8@6;E4vQp5d3<`^HTkh|`9ng4L`)a;6NjDJc^Vpw-@969)K8t1uL ziP@9fD|fG8a$(r{mv7CUmw^^lQXi$f%f)8S$tsil9muizb?A@mR}=ROeh_QC+B=c| z_l5FIj#yjIiY@#B(=NBJ+9NmNQOOab*++bOZWvfRaxRK#ueb4#@d>rd?Wy~sR@AGT z;W&Y>b+P8mc}#bA%KlqbrL%{Zxl`1lPKM+`Du0?_aL^!k*6= z9(mG8AZ=|_ZFDEY}eO6P`=NmYgwBB&*1}W=W{T6rNAxfu%rGY=*{h^CUYO8lZ)QMZ2+F#goR_Js-zPp)EqdPH=*-x9> zh*4;sL$0g9>D3-a|4Z&3Q0lY2o@;tKCRng$_a|5N>7}y2?yvB?B|N9q`7&d}U7^So z+#P&}&OY6CLH0oRak0gZw#e3J7du|8_}{_T+kLR(Vw7k5%L9+Q5hfNJLPk% zO^@ji{_-I;ZAS5$C>g)?(h*;e{+`e=?elBH!xn!g1>K%>Q=}ofbZe9snH=y&a7^fNWdV=Xh;$RPj2ra3`JO8MWlU-1imdYImOyVlV&ZpOvp zPL4-QgtPxH4{WS2X3o{P%5#|2SGTJ)dYYu0H+%BQj;6~j6C~Jeyl-qtzI)K& zjlWj4wD{nJ)CUHS`ya8|ZFlr?e*RFo{alWcf`y9U^}@OZOgqm7iagm+Hp7-Jx5?l( zi-BCBQpV>4)yYS981rXeeP$Mx7q%?R;iB$Co1=4<`J8)Rq*u&pb~!1~^NL8>!ULYq zin^tm99S(^F3xs+;f)Iaz6)iP|c=UsQEYE^tn!rgZ>DG6Ub^y5@f6L=3?IBiQ@Qr}3#`m3Qfp7U_b5iD z`_wWmzN2egboaNi{_Fe9C)gGJFgBLc{p_mm0y`=u*oL1pVYsyV-BD?l4cBc}9G$u1 z#MHp_Y4bRhoVR<{ws9`3GkNB)Xb;oA==}cdZAaotj|V<`nYELvfhW-V0|&2N8sBse z)%A;n?xrmHH0{LG*&_4qv_0A9^y;wTJBjYB4F#{uB5L-%fB5&*^&8f!Q>H&W^Dgd9 z+w^xz8EVR6%iPTVng~zc;?E>(aHwlTifO{?==nc(f?S=PcF_n`mWyNdySDf zgJHG3^82N?v+fm^-to0FyO1f%8}@PgxvP^>)*lNKkelPY@t>X7bs2{zb00t3H1B-z zvV1>=Oa5+`72M89%bn-gXL~1cZN#zvJTfJ^p%0Xl8O2g||5~|I!g!hez3e!K$!a}f oyH1_RDgS+Ppa1>;+|2)3GqRVSKbSP(DX3!hboFyt=akR{03Id2p#T5? literal 0 HcmV?d00001 diff --git a/static/img/logo.png b/static/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3530703956e42f7d0fa0af6a6e1f8de4fe019990 GIT binary patch literal 39755 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