From e92bdeaa2b8a9d62928bf0d6d67c125a51fc17b3 Mon Sep 17 00:00:00 2001 From: Juergen Kunz Date: Sun, 30 Nov 2025 22:35:24 +0000 Subject: [PATCH] update design --- .playwright-mcp/welcome-page.png | Bin 0 -> 81291 bytes npmextra.json | 6 +- ts_web/elements/idp-centercontainer.ts | 304 ++++++++++++++++---- ts_web/elements/idp-loginprompt.ts | 107 ++++--- ts_web/elements/idp-registerprompt.ts | 104 ++++--- ts_web/elements/idp-registration-stepper.ts | 48 +++- ts_web/elements/idp-welcome.ts | 139 +++++---- 7 files changed, 522 insertions(+), 186 deletions(-) create mode 100644 .playwright-mcp/welcome-page.png diff --git a/.playwright-mcp/welcome-page.png b/.playwright-mcp/welcome-page.png new file mode 100644 index 0000000000000000000000000000000000000000..e4ac07da815312e876c471ac83018a2d5c3a5c4b GIT binary patch literal 81291 zcmV*SKwZCyP)PyA07*naRCt{1y?vZrRdqhT&$)R;GJ%knY7&VsRT2mgC=fy+pe0}h!Kx@?X+=@7 z*aDV{R7J5M)~aZ!R1jKGia@YJPzVAcCopPo-Y+town-2J-tTF-j++S%B#Z_Kj1EDJ32JTHpExy(72=UGt{S(cS0 zle5f0nH5Em=UG{nS(X{TSk zq9}b^KsHPNx2`B$kTYFRA!k|cT&pLsZXn0{7e$$6QRaQfei!PKS@qXFT!!(=%Q7j4 zzRjE~ozt>&&XEjbK_z~t&~vFy8RlE;H#HB-@IK@HY>X+kQN3sV!CQLrYn!MbG;cDrEni#AuS->OJSol|r(fb$L-V6Dx@Q`?gDut4nK1fwbhR;>b#zf%J%erWHBIQ5I{JAh z_PFGGt3NAbqm79^8Ps0WroFG#lN$GQAIjC#)}l(=g08KV^D0~CeR1!>ds~}IZ#}fe z633oaSMXe!Ujk*}T=Xox&+7dH{~oY9;u%n|)ewBk=-vwP( zqE4jxkbmIk8OgAIyvFgew=y$P(svNm2o?#=CGrz;uaHVtE)s$7~Oj$o3Now=dLl-rMWMF-&w5{^CH8N2d@F%o4Y5uPCL{q4s z`hFdIye5W({cQA7*vs4Wd1W0cO6`5h+WnB8qDOjBRkm9XKk$6-pUy+J^0sZ?N{`$!l(w<_ICYXk7Ei?s`x8w z#Z`|N`}bnihzO>&;$-x&{)*F2@FK*R?wk&<(`tO`>?YI$h$pol@wQmVYf>65PrTRd zt*?{+KpyN*EvGH%L6qUAUU!@<`tHH!Z~{Z(JGAXlB`~B|a__Sge~Ts9p*dNmzCOPF z-cJJDD`Gi-8##p`iL!;+1pD3NMtP8<*M*#+;IEW`8~NH2P7`J5&k9ePyruZN9!VlO z;7JZkKO%g8HT|I+^kxp$Wc1;}zd<>}zfE}X#XI6*MCywwrKrRcA%fMI5^~?vRg~Ugx z?LK;i_QZgTRi6>d*;4CDKr75`$N`!CH zva^w-dN!brp%UN7CE|jHC&X6{{#MHCiZ&y9)mk>O1XX84HgO}wsA@c=s;BmJ9qlDp zXN?=tXr(;1N~8g0YC!H>!4dBYdmM2iSs#);XA|}<2Ue7bCF?%NZ`K+kORiw~NFFrK zvC5fNC8v9%YUb-z;F)k>joI>GN1tOVBKlUe>(#cumGZpXV@qLl%sLp~uh$RQcE-h_ z_EwIm@ubF=Rw$q0F0if9=FnpyG@Jd)ybojj5xWu$MIL`|{cVVaIpB}uipbl|qYG;UN!e%+sX{bsKM zJ%0cz!m)Mi~9Q zc=qJ?0N*Iayio?chkX-qni^${e}hL@BHsv3KefS)JfmE2aVl^l&Pp+GBigZ$iRriIpzEdz#8karFUQ?6%Sni;@&FqTXR zWogZ{I0J#*j^MuV-q53ftH8u}X%)yBC>S1IQ$b%9{xlQxNg-CB z#R9bZM4^?AV{9?H1T&mwencry_9N>xHd=0?T*@~QLM;4Mtc_TlG@FZWh<9WD%sOcUkfwzQs66tm}nmCI@tHE0es6Z)ZmzNW~;5h3NBU11^_|>ij(f`)@{6hEt z;D6DWO9^BeEu>f~ZPR`RV(SLe8?Vi*4y_i}Qmu7o;z`)*>QShP6%Do=WPiR&9ry?I z?1U{*r}Q7>_Qvb}5YL}sNP(FV?PA1`$WIM?BZeDQ@Q`5c<{UR7?h&3r$haK&M!{=z zsq;;m-$RjalEE{xv6G5eHDX#^uE3BaZWQ{Hv0KO&;VccwbXKQ$;>rP!nc^CPvtruv z4r9rBHfydi>S8Q8W+wZgnkD0F&V8mr$YEEA^G#q&Fw>+guu1TWN|gOdG;xu1tqNX4 z@_;oLr?h55%kwrpFz`@Ww1ws;&R%`m6c~HbW8=J;9Q<;!>CLlsvVZVAo$yI0hZFaP zHQtu-l^ZcO%*4YvTM|!F8Y7-^f)ydoRr$IZc#@ZCReJ0Mu%*J6kTD1|z{#_UfQZ{{ zOFlC-7MSamg-ET=^u}3(1#*@A_d&Mv3-~_KJ%I0#^H({m1wTp5aB6!2I-#i06||=K zxmuTMHRmU>Q=+t*Q0LdSgxd3v5JRdgD{!NfY~V%~C#ki6)sS6EHZi37*pgKa&O$PA zqe_%W%J@|CkWde_kfiE3B8_?&16Mmn$W|Th^!R-(D?EnDruST<4$QO1f0Jmt?E@*i zgk;Q0!lGBa-y(udqf#L!FeJ0zDsZC=Rs#NQYTWDKTbXFDmU;fISLM6wr+VB?3@O$2 zS6>$kM=@7Tsb-y)+l*k%9uTV!Q9x5BR+&{F*?aBUUaS78@96q_S@XAuf0L?nq7HSi zF6?J}g(8EHbCrzDkf9IT&pK;Ghub1=4+)KDmdsA5#*Hj}8*K?o7Me}Vbva39$@i4OImg+!ac`=FDAtRK)?zk<_15;A zgN*@8oF7WT4oQ9of7j?N``@rrsg_-w^uzFJhv=FZgYCf!1Y7t?gF=!k$5hs8P$Grp(22=^Q)k4}ydR^719v2^QHR0zW_mOg2G(|F zw(VQd&#jTMaJv+$nyRM}$8UXoaL5YAqzaB9RopaUjHw!5Q)kxFSIItYr~lhMqCN%K zNhxlbu0wKUGD-QcvU_VTKr$11WMr zluSINVdD-z>zerwui5zIgE#-vDf@Py#~iR6@?3#?G_vzAum8=)jZbgfxOU^lr`OE= zNaqOe5mGi3cCJd~k`_E9%{}t>0daPSUcH1@`QI8f>&tg<+_<*&e-C~A=yAx*D7j2} zs!+M03O9V(r*2!dapT(V?zP?BYnNSf!ldC5H{z#h#Hk{*wF{UrB0G+gS#w5C`_yeK zH*Q?JapRhe8`mzo=3SFVAa113p4g{~aNHHQOmlszP!O8aVaB8E$p4`CggR)SLtAVX zt0sr{(RcS=EX{MOgXV}-B5)2(43ut|>mC+`CgV*|1k zBk#u?We0d6?WUNENP6Tt8x73Hio8TPvc}8@kJ$x$+UZ$m-T|k0R1s$)4QrvQ7`<}b zzGwI!B3@ShBvwzAKS`V^EBOq}t+|JFMg}2q3Uj!%P~%CtI3de1LKpC)Qj8|8W#4Md zNG?VSb(iKR31my1=cSb;*C4jq&+s6NdobxFKk}0pmo&5vTUu~LE$UBk>QH4wlekeG zna^;EC%tw&B$Iojv7*7sQ70!*c8wvS%D|b~VD%QEq7gUZsGsXIu*uf=4N0aILyI**-e66QVX0jWYc(7c4v` zhyKyBF&jdCNG`a{c9hh(!)iC`qgJ~{iE&k z5X*`66dpzJEvvW+iFwE}S>O!Ee3Jau9Y=T2(m1L&6?0pTl)tM7e6uK1AF5ebh|v)% z1w8GD{fDfQ(Z2;b<1()0I3i}N{g;)j?O+p6)q1O5c7IwDNzPBk`|24K7W&c09W%os`VR4TN#E_^LhE1B$ zIX>24#N=s{#tuUbB5o#v3?kBqfJ`trJ4-$i_URaPs>q08a}VBub_SVuDbF9RZ)h*T z4?`X2vMf^obNg5|j0I(XVcC`i0|Vb%vw>y7L3Ck|abFr2p+nhRPjI1-i;yS&jl?f4 z6d`p}I?Ga1;mvE=M8eRj2F4ZE%J!Ib{vl$b_#I2IA2_xoN|uEvtXmOf^A-uqMWoNx z@k~_AvqwA$?z9)O%%z^nON5!I#Hvqw)hrgn_ay4`)+$JizUXt|xmsG)WIBqKXl4@1 zdENB6LUEs+fpn4w!e!~DsQO1d3HuyyEIZ?x7{~A?W_#j!tI-NHMv9j*XA;-9d0PJ` z^Wh<4%FpK-3@u^Xaek6$wcsQvZ-*Hl1e03We9Wd-xfvsd zq*q^~mrz=b}Dv<4r`56gtTA=&Dj!>V_SUC+dZ6QR70RLvusw3bOLk zab)HLw_VqWfEI<%!|6g?QfDv`w?FCmSt?nd`)ONdZA*sUyHevxtmMc= zs;sGv(e{uw)=rgiu7-VFZpMiRxBt@Q!IYQ-iF1z}@{n*1_pQI{f=_+z&gGl>T>tt- z*I#h%m5a8--9^Qr;yuiHZp60KjI^<6!99Z9zA~RIZ=)0J5X_U&TJsi?r0<;;yFOWd zYHz~_Z_5(8N!&x^AV$Vyp_jR3ke9sboTq{;mSjv6cm~K=b7mC@n<;@{#obFqIU_%b=Oto#mPS*_CZ8r3 za_AqOwF@ND9r$DR` z9dE5@eew(2LNex~650k?KDb&{E+rQ{(u_yCHQp&~4vKgdVikzJA26hd8mcIm@O;=v z1>M!s(;=;aYsXK@xyfCtf<0;;Hj5(T!AhwZw0AOWhfIUl_5`4Bn@Q}cJtS)z& zhs1Cri<7hy+#@NQ7*c&~$tnkJCu!WM5-XB2?b>V`;?MNKW{vE%QB ztygAQf6t;TKYHB1bIV3V-{Tqv*{Hpki)ro=lSykN*e#3&qB8EY_X2Vu0I}QU>EALqK!}W5 zzJ$R?!QQ6KlY-BHIaai`43-LNA-ZQq@RK4#fY75LV>a_V!B1i%6|`9adnz&|G(QPv z1u^6tSam5@7I~WvFeC^3Bq#VuU?mHyU9`~wo+LR*v??ub{_lr}jC2`gW)6@mQC8bHZ;=Cagr)*IAP_O7!uB8l%Y3TGU)}>(MAp=j<9K4FDr*lJA2-f z-Q8<9ZhX4C`{_roefPv+EcQHN^30E2cEkOTKDN4h?Z%C(Rz7<7EmwZ_{WHdnFls+) z=9ljFC&D&vT-&|y3kP*%qxL%X%*%c-|G|e>cdza4Ub}kPujXI#`F9^QZdk;SNJrZ_ zKZcE+ddio-ch^I|S+j9%clX+rkKR4^yI=Ug5#xppn|k)`tNcN>?(VgZUOs1>fg}m; z(Wq&2K5_ZnyO*t4+1 z-Q8=tyH~D!=x0Cr>Z!9P4^vrcT#$F&@8t8Zx$XW(*R1L8UbAt{!w=5?kIT+HcCS%G zcRS*<3%l3&qjMWK{_>l1_OO02M_)w8Yk924L=G~I8^QfY6*Ajv)o=3~gOw>82s7H_-OK{1rM+C=e<#L8 z-~DI!(}JJG^Cy{HC2fN`Zeo?nWcVN5X3Y+IRQAvtIdy@GJIm?Khvg-3gY z@PQ-Gl2~_vN8xJllW>(eezGt20CJMhs}Y=}aKGfBI7xMRNL(lH1P`e#C&^$MrQVx< zay4$0vSTcb#O9Udb!+WfC7Wf~uVp#N2kp*mh~*J#9#XVh(_X2-OvuL1%3*sP{jq=f z+CR>o9RKU^(c||%{G_uEKk3AyKYQ^qUcs`IF{*KgpZ}$Aoptc&_-4fTN&6jt#+ApP z_QXw}Kj)&kE4DI3N7ZfAwD*7U^2^@0?}+$?(c|}?b@JY`PJZ9}um0K-SaokHDkLea z=V6`4|J{Wbo^gEVaQp`&Mvv>9^}Y*dz3;rPyS{(v*Sz_NCF&KKz}FFP_7? zV)C?OPQT=sQ_i~ctLK0Ax`&?M&T={KI`zF5U;c$t_U(Wl8#j5s*{AO}`=obYd+xu9 zdg@(Y*QYr8xn4b(ywCwMak7*7lnz;AI<|p~F3vqUdMCv#= z*LAgcNXR|X*wSlJCM^d2Uf@Ov4C(ddA#puiM<=r~?1Qo#`lASHQ7e8mdO zrsXZUj;Uu}`Sbr`77{*_PX6*2-_H#WX>WDR{LE#{LV{=bzNdVB-rTRhd#_={pb|E0 zK628Wul{)6<;+6Dug^O3k~0s63i!Vjeb&-7yH5Md@65gSEMXzxGoo|O+1LK~yC0s~ zK|2lpSm%c>zHpA+6(c4c|K%HQzx+efM$y^qVH4+k<(7G0XBHAXqYpmgTc4T9|66Gx zNv(##>=*t}>%H2~m<+KbjO7;)%f~z`j?3(Ku|6PI?TDJ)VwPYlo0*^;$|h=E%@Q!} z3Da{@*~}eSds6SH6Gocx8Z9S{EeRV)_dM7xlIw%G5pw*2=ag$%+fqCaQwe#P=(lpT zip0#}dz;hP2`@4Kcu`q5aiWvmiiq(Pud-$2JgGIZ z98VInROe|EBb%X3?C~U?6-?ks$Ql&cC=4DFVr)3#uN@D`Qe@LR0D!Y}zvr#hgU{Kd+P7FIW4fd1f`#az{8Fc`5w&eOi%-wPCTxX`qltmR; z7yN`l26>p6XAk+H5rd5XRYfonTQWv7*tiT&5*C%t5d{cVDlZgSel+J}UMND3LM+L_ zo4B{}Rls%ybrv%6lRT#w?*dYmXes6ip20+Zn9dlYI7t#u5@;WdxM-clPYRwl=U?-+ zEI3KI$XIJ}k_>*5h^X=v5myz zZ*}U?Hi~o3t$*;kOV9tv3GX=Yz#~ui(5ElDZsGdA_#a0f^LH1XG;NryTQ+RsoPWHK znKkPdTzl?^-*w~x`%jzsXD58*;+vjO74V)1Z%kR1ZroAleUN3sT>t%07e0OPsB+j_K5*e@kAbT9tzUTEMdyF$gm=uCaqI~n`umHn zTex0*8E#x>O)~u+g%vR*Lt#Y*lSU)kR&JFH>cG&N@NY1Fq`75|&;pXds?$swVaMlf zwG~*^5}ybbgCXNtDi!-kMeappvl_=1D-Q7_i7oj(67uxqV$T!NrBDYuHV2+MyG6^l zm!HRWV#S4<{vu`*N|PyK%(Mg_ON^S{IYd1*o&-5Z0QXYN6%i|B{G{r9TGk`orNkj1%rW^-_UlA}A_tjt)YIMHc&BZMJ&+IAlLUt=dGPt@Qi z=^VUdbpbyq#!nSLNn|w>{u{NCwU=W^0#9PuwgM*!v$4D?9#X<{bN`nQDIq5rNZi81 zeNgRz_LC`DmRXh!L7a2&JS1G75=nByCLR9a6FcLZtqU&t;8|C%+}7F~p5O4qL$}^E zZ}Bxh_}Vc7YErp{x~@Otw6DzH(C5!MY+Bg8Y~k&<&i}&o*PIc6mX2dS_TGbUU9o5j zYLKCw?>y~jurs=@`}k>J`o;P_zgo5}Tfb)MeGe|Z_6L_?1)}E){g(~j`}mKX1dUmL z>))Ps?!49g{{P!_-|ME z*t34+;#=q4diM8zbm7caL~+ElcYk>1kAHOFUmgyTw65zvdfHd++tBZKsh*xS%NG9R z*7;w!{+f><)D(6O@n|eZa6vT3h;XBrQ$&q^5K=F%PVGRaTUmWQyL_33xD&q)LkvY5tE;2MS@ub9D3bCN`S5VPokz3Wt& zvyH`)i)9%w(Ml4V(zWj@$^ zNY-8zJXcYHj%mlwipEFZ;>$0+ZpF6D0SfBMzLhs$dikO)Rdsi6!%dfd`;KS&gl_6t zaOI^pt&abybLP=|k79`Nh)Me%4LDZMyl;N@{`Gx`c@+7;sv9r8axqpQBmE2Y89Mf$ zqh~}~RL@=C_?P*s`+bW;oW6g}{BL~w&X`fNAS zwI40*r++nh*71M(j+uMMs&BaI((f!--%mc7->Z5Se3$h=Xn!9tSG@jI21(b``FLWNn1( z*iP8ZianOWiZB>yu-+ZhfwAXPcv8;UU6?JsB9|WCQ|S;x!sseu$twF7T1fJgUnsMZ z`5vWOL541^EO(lRl!<+sYB6@Ybc9R6e9K z%U)P|+rqB+?Fp0Zvz-2VO1L^o6J@x&PAJRzDfq2=tw(oneF{x1u`te!bPHWtMMe_xKPi4EH%60 zX{GR_cm~_A0=$us%jnGuc1VeMlDF`P>w|bwQQ&=WC70ul0{RY_F;1~$Fo#eH%oWX0 z5w{}7^&+q?xOJHJHv29=jds92bc83Bc*aev0$3erhcQjA=LwDloODC4RYu`a^K(uT z$^MD&b>3~jL0R@oGp8ErXTeY6a)EeKYCURBlEuejBhLF-^OIgZ56RV$5l>R@U9bS^ z$Sx%dz7bj>^?69uGhD==c8-%&VZ(*p4P|G_>PgvHLbtehx@{2okmMc)3{zH#Z0N9# z5pkd2x@ptaex5VB)%*QhpX-q}3Oj+nWmC`AOff>TvMlB&(;CRMgs_Q-`1_dN>iuXhK?EypX%T8{FXk%dxPBnQqLA>%kYkoBbmL`-?QbV z0mP6Z6Jpz@P4Jf^pzB=UmJOS>kTr(}wS&c{k=CSMrRM5G zt_jDJa5N+5CUHAeMT|h=Ns9MVSo|c$*zkspKr96BC*VnRqgF=QwiKSkP9~Z=N01|i zq%pa$BNjY|Q0zCsRw4GW&SjN|$!boLZT(yK&=H=L0VfF&4!Kfb4`W#g2>ayi6_$Y! zhfSPDBwLx?tSmT5U|~ldVLLo2Q=BBm#Nzy5zjzO7()bd2v98d(~+yNnps0qh^}?_*yMY-h&L=&_?mSg7ytUB@$Hs=v3Fjm+@z zqjw$3FeEBRjU5Mn*#}+cMvR_3Zj^Dd-8naWH0uG=cGfn&;vQvyDjS}zg&_$x2JWE7 z%u6G*vc%kOX%@L=|Hw1*DH}!jG#WEA<9cX0VI~zSH4CZ&b;npF>QK{uvP#@PWNk58 z$~|LUbF-eJ&e{Ubg#83j56sTo%E+t`3znxx->4PPg?QVB;Qds@AcCA(+Kk;VX2n*J z*DP&Neb!8PEEYe>uynaUz~W7WAyqPy*xt`e`z8S1YQp(SYh1(`H{AJR)HRHP!AbI^ zMo<*1kFrDMR{nw#;)9};oFrh02~LuToJ#zxHYbVmZp*fur1sn+jV-+vWzu5M?^DsM z%5x;IF%L<2j0t8!vc&yP+l7fon^CsKDVPs=iiafhekgNTIV_f}?X>NiR&R&^&G3Ux zp1t>|$Vi}G9?^ODyAKk1fOxcP^30PC8gHF}8hh|bvw=&!p=RE}?H{hN8cdCsI#)syLZZ4a3i9_&)B6@gJa zjC%@x5+JD&PYRe#WUlZGI)e9;@p*0|=UlU~^IyEj97X+v#mO-w5x+C<7}hzsqpZ1Q zh#@7INg8bxJ67s8$wJH-5$hM6q)4P|%|M0OY_iDak=p1fljrz}pA#*m!FNs8W4 zijySTi1-u_EH!_L_L{L=Z$BE5V3oD2Vc&ZOZb`OsxqW+NsY_nCh< zJ|3pqx^(`d>-+imjGuGfxhHmxpcuKY$*u>V{>6_T6b-fYi|_o^JrAyqRiAXqg@1e8 zq!BbCevOSk=98=k?A}8wB*{GzJS2se7KkB%Pg$zH(*Y;R1@8noKp9xcF%9FDb(y`ldA{f5|KL6!%iEMOVb;UtNZqy_j11@{>k9~n!sTF{fRB3T)D zXoM=Uj8;%jXX*jSm_;+Q5VKTp6T!DBgbZj+t~p77D&>4Nxv=W%aFQ6qfpjm-#?o9V z7AL95_&!*Vhs1EBI&vB-8mt_5flA!y|A+aIK$iP?!kencNwRvRl83}(UXT6_4_-eH zXvH1JT>OLUFZvp)3In}2+nN;N4tNzS>>)2^L+)rBYRJ8D?rTvm?S z>-e+3H}Cp0;Pm^}1>c{$yyMu*ZvWNX%fEQ`*XvK& z;pF|s4J(U0@7QbRsh8jWVaI2&*YQ8KKDnT|G>dxee7@8#6!=#^2aw{I3qTtZ^f-Yd}#IZ zxj$SCOsUS(uATeszd3GNhjY$luH!Ao{msA6yXFj$YO-Z3@L$CE6lF`R!9&WlXDpC& z!fb+ekoYIsMkfChA`7L?EGIN|+jSM@j~q?^zuI>}pIc;eDT>11f0@oj#B%Kbp5(Zk z>@bgqO|-v#^r+3_>S952CoY-q{@{d@g#ogO0UX@C(-J#I7t;T5y?s7HV2FH zTPNM>>H**+mB375o|57uwMG_YXq{kU8F&&uhp#zFx`!Q?87E1dYRtJ_65Piq>kMJ( zXmtuV+G*~Q#+I1gYgcOA$k3(LJS3EB@Q~_qk8ma@O4{RazpH*SCEKOKkfPoj0-Pji z1FBN2Lx!MQHO`)U;L3}xo_S5oC)siE>6hGc`X%ieCUZGD=iKDkXJ0w{?8F~zS#bHK zKVALi(=RzC2A_s^zW*cdyzb0PF1_oZ%VR#t$;X`a-DA$G{&kMwyVk7QwD_Bs&YN}R ziFB#RWkJ!E6SaR<+`i_axi~-5WH;=9goWnThY@P>h zw{j$+Am*V)P`kPH PGIsn7f}&P!SxZ=l>*b=3z5Z1s$er9hJ>?@jc@8EFTp>9h-ZqE#P~@j zhJ-U8B7J!ZL#pH?(R_B?vN1SG97A#%Pf~h7wiM>711sNIGeqYYD{y>aeh!wC6r=x2 z!#JzdIg?7oNy4mSh#SdlNo{#Z)p$|`gR^$|fBBFqw?nBJsw~b5JSk5{>ve0Z5MAlb zIlm5{U+|63eD%&v^1rZW!xEWyn`0q;n^Ybp_Vhh5_ku58zw)IK9g{j3urgxYj>8Z~ezlU9_;r`fvQ%wBU=MzHnZ5i$xCqVaxIr)qlSJ)~{S} z#e>_jyey0U)wf)9!Szp6R((s?GR(W((wOX@pzbIDa~3=#m*ydv+#_7`4)n5v_24Yu zPVUegH>z4=qD)7TV|}1!D%OL^;V3LdR0g(YCgMkgCn4)j@;dg8g)uh>ST(6?d! z7vFc{`PVJ6f3EL|>o2(I_8w?hYovJ1!A5DzLqZH0c}SXjgzp{fnu60{Vn_wvx*+CW z+to#~);MZK37biysc{cOpBwN7!BvV(1>CWK*&s0_E~ofO)DM_{i0mf=HxhS{aW+W~ zZ*sx3;4BcqNfLba*sEl5a+_6p%wSbJ&?ItJSTiu^URjEhWalEn`Hv%Rd326vGR%NG zESV_2-<;ED7!6Jm?fMA}snA}y;A4e&F4jllN!kX5h_>m$rnGv?+7LI{)!-y$;YL5k zNrE+4@R>slym$`@m*t3y6NPBoh1Fzok{s__hJOGLsU_o0b}2?$m1jB2-o)Z!%BduQbeG`JwG*|Yum1y_80=8Si|_na$l zTCi-rw-Nd_EV=Xge>n9$AN~HaEh;`DI7#boJ^zGb|LUUa?po5dsn0prx2bE%UDsXm z=@Sn;WX`#_tk~8X<4yNne(nWxm#pu1u7CZKxfh)K?FBt$o@cJV`xjq6^{^8@ed$dP zE?>XZ8x>o6Rxi5o%CnAr*Ex$O?n@yw*Wa_@`95Wu!mhTX>&}1v=()c=bP?aqOW79`%XKez7)WA}DjgN$TJ7(3O9E!iO&Y;er({<7Uf-r3-Gk z;+zj2Hf_!sS3mgtc6n3S))hbb+`A7w@YqjYblqKxeDj^#()Hj?SN!dX@B701^{$`Q zQ{iwMJZ9t`>C7%RhNR}6_S7>WbG>8ZsG6l@a+NfH zh41U})QrVXLYqc#k{q{(@V*OuKbnJ88TSk<`Do&Zn|P8u6`0a)0#8cxo2fknG96=- z=4|AM0%p)DOl*cMp+vN|RC=Fy0+IPT>>OimK^N#rEq%_NGG zBrO2nQpHcQ*`=J5RB}#|&XBJ6Jb{xHoRcK+Bx^M};3PQh=& z7pvNox(u4j1#F|bMC;p^qYnSlf6qNLoZDJI_d_R~zwr60@8EA4eKvaP`_Fsd==s-P zx2StNZ{zSu$A0Ph@0{LAC(Bk`@xBj!b@5Bu_OwPq#24DOv~AmS)t@`}WagOSIU_=e zcx*-du06g+WVO0BoWY&4hs?QWwkuKY#AAOAX1?^Cc#rXK4SHtkUpF%XuB zDQs8Fc$sL|PV{H0-%|Zhre>+?bMfy7{qTO1c$Ib6o>Bj_4s@_`Wj#}UYtH%9*}Cen zt}`xbMYEo1t5?N%CB~w9ZHo0(0K#PKHTp^Qyh6W{Gf;UH@|F^z6$OT>YgE6zJE1dQ z?H3o5Yi!{ydSw zLd+3jDw|;Q>nP+@??mf3(dDfg6ZyG(q`_mnJ%{l*?x!(f|$@MLn zck2@`@wjy zlLQ!&%<>XqY8i2oFvAnhIzUB=N)636B3$Vo!Bc!nj{)uwFdqBK@CSUIkOinx`DEonT-DhFpFrL}}cj2!ey zec4&EjUi#2t|ku&_nK_nxQS>lD;r$wf>IxauWJk`g(pedpV|*~=$Q3oh9sSK;`#S& z5}svU4C%w)y6S7kPcr_S@oc#DtW(duZ9{+P2P>B8L|<8WQmURM#AVF3M}6e~3wWsQ zAB8l;Z+czte@n>~7!u0DAFAaOP}}i$VLz^(Z}!}K6_2ieY_%TQY7B`u+9`}j)m-Bu z{wX*P;bR%PKJxq3I1N}-xU%Bxs>H?yf!V0p+a5zo)Gaj=23I%TS6I(bt0L@kG#iUB zrf3n?!3AS{gubI@ujpsi55RwN5OE_*h}EZE8)bVF^L%G!lsQY)h_t~`C?W}RoSD>P z-geQwT{)u!N|!|40w*cT3EdcHMTjsCy1n(}*Zrx{hZVY4qY{~3^{rOblItL#zqhA) z*K^*th*?8;FX-5$!3spr9<$q#7mI9Du=g=i?#Ppi8N;L+WS9+Su(CA({(70`S=raW zz2DV*x~}{D7k;{-ANs*ORU|lDYHtu({v7&7crz4P(+NC@-BkxRIKz;zB#TF#62dGj zI!}^`9Y(Jm^keE?HpjJ+$vzQCOrfx)D8u|Q;^lEpRIN1Wx1||K+S5h<-pu-qEC<9J z1ctGYnW`NBF^f@p8xB(anK zR-Po}AtB!!@!bkMN$Sb8+_n^0QJu0T_o#}8#A7&Zc}R7+M>tCpW!%?V+PuBXHYgsF z#*HKo3FVyUr$O)8UVDyXxq2OfZIN>gD^Y7a@#M1`(>fG+lDPI1dxo?XNN*NJ>H62) zc+Ov)amB*K*}Cxbt-kfrzdr3t3txcK+7)Fr(x^@|i4}{;FzyGsELDkCpj;cg4yD-R zMTw)JQ4`!8mZ|$|r!@-`cUIl_{T)AHKiYR&AME;>z zH+^m(u@mH?Pr|O8tKKlOW9U3d-lKyvZbqz}%TnX<++a@SNh&MyBth$(HN%a0E;1z1 zxi(}1Xw9bV0BWhw2~smCON+&=RFqS;RA)$nlc8-QL5U1Wvc2ji<2dWk!{oNL(A8Q$ z8yohaqK7m^}Y@LWL=@9MKh1Z@-1y{^Re(;hMA>C@0y^0 z(Jyf@mTXmkovv-r0$0BFP_?fh&3L5U zp0@1SzH4!hoK-_+qgU{dG@ew+LyEQ)3(sFOM8cE z6*yt>m^>uhgJG6BZdXaZ6z3sDjjZ)E5@N$L9LrciPn__A38d z!9rmBu~mmSHfdSf8I|?a{b2qsV~wHq*B07*naR3y(#_qo;2xc}if2F*!o zqX~nJt8+Ek^Q}&MsaMREE26Z6Y$@KKBRD#>xH$Y=o1U4iKd8Y;(mly$a$6n}%Cu^N z*GjsA+PIVL{XKJ%QhQ>39ss;RL%$N|9<}8m?F=XBfAz^y>!Lzt`QQ~F1u-Pe3o$LP zh(_YwI)Eo34+$gXc|foo@RI}&DFe9zZ>KlH6BX=%h$27+GrTL_aZJU5Y}(r5E+MBm zNdix@cutZvLVlrXkMn&o{#WwO^$i;qTLnFM7pxNzA#&g+IbI(b2hsk7ZaZ0QIx`Jm zPFi!NeiyUgWa=&p@)4Pw%7K)qRlM~HGiwhjA5!oO2g^e;?IeNDI%{N$nmi zf``O8QVgfG+K%JZnoA*K6*UY*uP_!VVkInFRhBjAgaOEy8>tM~QuIK;@}Qa7pqbfd zGyvUf5YwyC$bpj-v86@>^*{EiF_VkJWm$uBk6f^da_SSMbHoWyk@wPB7!uRZwRuQw zIY|c7DD|H2(XI||#K#)pIyw#E|s+*QdSz%TG1xT)mgoEW=N|?l{?N z{nQ;(#s%T5i_)}7<1c_k1`&FJA+fxu{7e(s`vOnGSaP&xc#ItH7c3A%a?bI)e#8yu z;-r#nJJiR|CviiTo=J|p=P+Yh{Sf-Z3C@=0tz&y7H!I3j@m<0aLBwWQ7hSWktXvOK1Q*?i=<{>p2bgr#vG-9qMFXPOIanUy= zlv&pB+QXwhaB8?A&~cBc@RNNlzEP0NJa0HxI@btt0di|5)A?M|Gh7zuGkoh>^OIWY zoC_F|m!mh|Xqb9K+=tx&M6f|<8Or|qfG4#^#J@*Oi@r%2@cn!AHq){LTiF46A>&9ii#_N6R@wL&)W^h->e#Bxw&mZ^{3OE@P00!0E92j+sDt?TG6oFZ zE%UrX9Z)vvmg;lehYD%1F&ix>d%TpqA8d<2ZmfQ&@_TB_y6vsH38s?&VK=NvO`Pe%6jviTtZHPM5dGriSjAq-q{jczl99XD`{TTh973ZHm0KNP%MQ-7I9|4lUm-A$w>+}e#DS4cZE1fq;kJH_$~6_%`#K`q&(nBB1?+A zRS~#TF5Ie^L?!{>LeEk%QSfvOVwD1yQar6VF0cp0lRLtb<{mur=7o0-TqS`tWa69D zb~x*YUIKctf&nAhDk!Ud6a8tQVYFoP?4*=6(@1eXu(a84)(kAdDlqP1Zyc3PahfKtf&E-U5Md_(-B9afYp+$d`&x8H+I^jB$s zwsJ-E1F@xO&eTI>D&z{ph;foCc}O;r6n>``ZdB*7Ei&!VVm!EAj6D8r4Ld!_2h#Q7 z^P{RJb&v+c(yY7Kq$OMLw}dUPxjw17m8#zit66)%ZEMx~dcs$zfzZ|*$5-?092+LJ z3fj)7TECw9_iZsGJ+g@wY22c^o;CW>9>-dB8%)pdOg+>6hPC}ej3$X1YRO$h;Ofnlco4c zIP?F29=%VQ`%BHafp(R^js8FQRO@GnBq4?*aER!!33LwUhnm@fpQN+V5I-qqE*5z# zh@a$IXBGtZ5WRWl2t6Vhbs1WPI&%r0aEWK`gv`BpXZ2ME^~r*F6K)(2x3FHh~+ZJkde&kdpO8Pn5?>ko^`jz!ACtj1%Jev=})-j_>n4_bizN zY9jEYl8_kEDgv`1#9Hx?ngK^?p(&vb*jG4Xn|ycA0{4h4h6eDi8iE%EH`9@QmZR*P zFFkHlG#Z2<6`qsiH5>Fm0Z5ydeGQv{Cp80}ln1%RMhddPki6{wwj?}Bm014<*R(8}A82;;cI% zo4UH%l9sqpB~~P5|J2|fF`I__EkVk(oK?sPRH>@W#*TfHx>svZXUFg{W76nP$cQ_S z4M+S9&KjgFv-p79^{i|4^L|D@(%?(c-jnFP3It9(ZD%0++iHG^o@qR1gy2z03`y5N z-NWV+>(6_y4tFQkLI17r;M>*Hs#&t%aAsmZ6ddnC9uj^hH8X8?PL?&wvdRBV2K%Lh zeUvP=l5iukHT|B=wPKbS>kPFtzjaY_t*~$L-$yyv5UoD&H4Hu0fO7^7@IZ3@i`c_e za#=P5>)8dHwbe6?M%HXn9k4!9hKPCV`>8A;s+XMi-x`gKTT89__$Zrim$#PqDCeSw zabL6E%TeI>Z&vHKx^ilzr1udy!#Rdz;7LkqlIYt^s}@0?X; z)L)FOKz{{pq%kDmOCgHco&iQHPMvBrc}NXhp@^|@*|Z+;#oTRk2#2Xm#yk2Wo zH=86kn$3tIp^P!UP}^p>8_MG-IhXzD(7D|PaW3hkUXYu4?yaIIHyRE9{a}$a17egn zn;thR8V%n+&SOYLQ8pU>n;vzGtqymp;0<>T-)fH=HJi~M^{w_+QL|YP52@LV^$DX; zd#b!h87 z$8Rbwq|MQ(*Y>vcOxI=*v1IgyCDL05Lu%J2tbY>TKf~b?IBlKv@G2k4z~FeB;Xk$7 z_S)2~4$9?Hh!N+hL|a7gRG<|GepBby>(^iWRwa^Jv*%L`q(RKgo#G*}6Hh7cnKN=U z6NSE+3mNW1Wo0;H&+6u_rDl_E5MxM*$??)!$hml4&q8X&jB4c{!cvb2?~PhqpK3j6 z&Sd}VjfQJBjd`W(sY;OnGJaF%dd0STxzUhcL(B|Y&9Nd=Hdc+Ld#m2R7Nx6!;=IvgL}hf z2AT}8@yy~>3a=FJO2k_`L>?W<2tgz%^bhmk0XGt|j$vowZ!P{4;#fLkFV-`IvxJNj z#!(P$Ux#@V=Lhz4#P9%55^Iy4kiSBB4Bg5}GY2sw@I(zHm19T}H{yAl^j&OX zRmu~ERC<<){|<0#@T^uV%T8d$HK1;-d{G?h(il?A(+#*0;V}i^Ms!js;zmj?DRYlM zX%%pz7CR@%gc}LDg;HQ0eA#R^^PKV_F$^hSCwV|h2t#sV*OzA)IWMiqvPQs-3XUP= zgr;O!7OXLs=U&d}+&jM^E@G>mKLogfacWYbT+NXA$$1RP^Q%IuTXLh}^A%;yX3=Q4 zvUCAe@-lq^A+e`n(|1Q0OQS(?=9?HnO0$rLb*>N2!Wu6<) z$gou@)9T3SO+uE~633J93?r5dH>x9Bdey|1D&p6u&+BlKYz%3zJS3qBt4kGuaoO0h zZxj*ngw2?GQg&tZz75`n4bC0ITtwKrO%>*t@c>XVD%f%OCIZQw$#hbrt`K}kfR?$BSMVzFsmhg zrqP8z1evnuRLZhlyp1lP1JSll?AIxoad!Uzp6Wdp<@Oj7>ut!jnxThk#TW5TbZ4QlsYwo8E7ImMRQgHdW2pnar>Dp^5}4%3E2Sli5}=*+JVp> zig;4!E3Kho34Kx_V;yoGJ4ZPkiNn&7El+w%`3iDO@y?@!Y~DzP_CX0ZQbjCNl>9th zX38exNAuh8G^IxGG^(mfk?&aE9Ea>N%tl6Ma0GIxXJFtPIgT4ij+Vz3WLl{!aD)KVNkcfNKLQ{YZlL3YlwF+TK!Llj9J}4B5 z?6NHL7*ez8vMg^l9kDzEBgZN9NUTSha|mw|M7<66rC`g&?BQS+7J(1cLT&<6y9}}m z`oCp4g;`|iH-2-ABfe3yDP-RdnYW7QJ@q_tk^<(`Bzz?xNhRV*3EtWgS&xNGP|EB=Sh= z;~e~HAML9X!xk1&TU^1yu6CZ~kf@K|(M`OqEsljxP209@-5h5#3^tzqYM;SIwcC~K zbdr)af1-l_gk=>XGN_i;ZZ+Ay(koSG)2hnq8d*3{#jI;TOWW2*)U9nl_}@*~<%9F~ zIFfH#~gz?0BJrBR{1LB~7e?hbfTLHDbpo=R}(MK&6J?kU!dvoRv~ z#kwO5`BE`62l8(aIk58au-_##%Q**GbDUy<82umoR6_|aXpn(?( zJPFHG=3nk-)R!YFBiI=J4ag?{DOHvn5n-$vtHf;P1+^lKB zirgc}cGJqiL(CPzjiAmM&%P5gO;h~=U5K|Fq6};p;<$LZnddIN(Ttqd>8-%Lp_we$ zhl~MF6wYD7Zh0oJju)|PI<09Zj^Dk zz*uC6h~ccmtmO?r$UJi9noXDI4U!433fNL9O5ir-P=A)uimz7GMM6ih9C8%N^18Z) zELT15hOi&8y)uCg&1^9xtZFt( zsVA#{UGQwUEk4+pX3Ox@!H~@Cz-*?mFDB}l_Ws4J%QYVeWc=Ms^p)wu@sUDI2(#=& zK2WfVT752fKZ1(`<3%gTf4>ytUZ0^TcxIZ1{7koNuyWO^ zN7>rrs^Ti*y?^)&&jfQ$_&nV5qm^aKV)e=Q;>MK(%kb66b)LZ?(;C&*yQ-EWlH_f` z1fE3LOiKnlDOwC^W&>du$itWMSMOT{)&*iG40Fmy_rYDoL8;1!wdH>U5PH;`|{Wb>Xl z!cBR}7=hx>IL^>=;g-NCV}ywE?-6e%@M$m?5z8k87!vKo$UVZWzLFQrnSaeJiy3$P ze+`*zNN(|g0{18jtd}U0?LsnTh$e5Fa)>JoDUKsX*&q{-=K~RL6d5_2a@;4;Hm zbeW-z*y4moI+q9BsH7Vnn@#862V^CKTkdndFXF9abne*8jk0t;r<9o^2lDOXqUJjhu^2EdSo;R`BorD1@FDxs>RBH^h({ z`tD9s*R_+KCEKgsk|TyhmM-8)@!m<;HyP52%sGXCvXu+55iPsw_ZFI7DjhCYdL?Hl z=W@iBMClnz0hx{(2CyaleP(C3A zM1OUCgiVmEzGD8tV4v!-NcS5&C;x6xq{l&$MoCSd+~j+Txr%J>wajM_oLZxvd zofV99eHpxe^712sOEHchX8|M8xRE22G+-Xc>A@S_S*{?;D8uhKi#J;#hJ+dF@is=v zvXf<5vq{{emJGZfpZO+74p3nHIH+?g&Vt+{*aH|#16h&*;b0sxp10c9u$9}Ia_yju zxwcjAtGI7@3@M>Sg$8ROC`I9%Yau9pOg(O7$+7=E5)I_9 zWrqrK%+2G+h*lZNfZnlqH^`oQlyli-S%c6rF9V`h5RQUb|$vOF*!OhAY{Bdxk?si6*(U?2U*|2N?H-mP^V;# z>qw-T_722^0{19yC%5LUxSv#Tk9cmm9C)9Ge$MvT9~?+sfR zzfU`5H9NtS0Z$TG0;>bsq3}MA4eYqp=t6aUXm=MmC*qEd{V-TL@w;|DBzRxZ=c%za z{TSI-AhX;mX{HX&lbw4seu?!l=U&#fA716JSE8p?t3Y{a$r%OTH!*;${^|o6u^Cf$ z3*1QXjSxdJN8BF$wz9&FNJg%Yx87R+o^y|Ie=^%HG)83MRPJGDe`7tpEN>7)94pcP z$#LPDwt_8GJ=;y0-8~m>xzEEJm%i)X;CFfpgUhie11E;bb!w>eNzCP=d%(|-giI`m zGDH-%Hb#XJz}huz*wm ztuijltnN@Ny=pQs>v$Z2W>;HpOfc=@PLFIqn(ZNzA+atTVnxK20j!A5junU-X}*!* z^Z@tBn3-zEI?OtQrxg9yJZ?m1#DX02M~72Oj%VDV6Ht}OfwWwX7Luf!<5Szm&*!SuncK7a&%M6 zGCP;wk*m)d0~Y84Lfn?|BeaB&k3c*Ctqs#UhnzL1s^+X*prWTZ5c@8NiM{C!itq# z>`-rmof9-*v~#J{yI{o^Xf~527wSW0oc&rBu^3)Avt%)#RG(wX?CT*D-hS?vJ~n;J z(j^=E*j}DFSMGkuCqMtG!+Mu5TmN!XwZfq%6fB7-W8DzT9lifweeS$J-~H(&t2S@f zEwZeQh;3>)UCO&$tW%oo{qVP)`nmJoxog)$U0X{;Kmmu#V7{RjX!cC0_K#q}C(3o+gLgX%|OwEvGz+Bh4DJx!T)TLZ5 zu+9nXVVwEm7$f0b6vJ`JThQvKX!T8p426HC*la=|33TSVXX%ANM zQ?VCPotvT5ZPYz)M}O+cnbNC+Dzz8KWJEN~T@OzkVQH=)GiImt|4x+J{!8p-DcRm5 z^!`hFiI@1^uwTtzPg*`fUpUaVbVA1|O+;Q!f!LCB&1WCFby4@o{pS4Ho+HD*Z%jP& zgd-+wTl%wKuIn}MB*s%gJjwg(8e1Z}6;~0(w&8X#I;}%d{}{zrc`s0IaX|z-gsdML zEqy~4trp%_QdT*8T)^aHzKx=2OgQT7f4b-sGsZY&n`h1qytr}Qy63huVU@zp?Qj>z z`h&el?TUOa$j-9sjE`LWPoF+&!qApK(Z6NG#&zA#y}UikvV8IhpSk3s54?4RIMv1Z zX9DezvOr>x|AhIj)ccMDKXUOUe|z+}M!+>Cj%uSd(1!+Y1ie97!DLM;D2^Jp`wPI0 zn$R1>NorY#z}9N*YhgvlNF2N;4G=MGh#s1<;emrqukRAI-@_gk5n?5?z7kpf)rkj_ zIfr{esbUU=kV8BKsi8b zIA@|18W6D49JFNaT$yiw=KlFhXPj~9yAFBa>RJqTz131E(_QL&j2anK}<$_h1$jOfS{3`!?<<-GxvV)-&!?qaMYCNz-26Z zVS%BXh+`rSpL0DMa}ak$MMF7qG*Opl^NZE8h)L6sSMwd zm|3ucF+YNtD}l{+|;aW25`$-*FOtPy5N z6LJ%jIE#X(nupoz0!z9TJ%pHA)a|gRAZ`>{#_HU=F;dhU6eA`JDa-QE8?Aj*p>8hm zUjKVjd!*jGl&tm+TUMu+m<(B9=q6x+z1e-pWyj?l--q}N-I5#SfNY6#U_#coGVExM zdNH=gA-E@L%LDd5nV(dbFFiT`&c~;I=tp}9 zqW`VO%$YiJ-5v9mzR=9Fq9{lI@zH-i=ZJmwoG^07a~oGZe$VZ9Jn_37Wm%5g=d{oK z<-}!IUH-Fm+p{b$cis0dKl9<;@Bhws@BQtNx1IX;r|$9iBQH!jjNypFFd(1%3%17?{>HNo^-{ErSilH5EJ^as4IBNQoF(U^yuUmG{%|BVZvCp|O z8*|W^fBT++dv9O2=d4-#O&PP}xmEYxbi+MeFZn*)WzxZOPMAG?%EU3{=5?!=-u;tb ztax#IQRaIb^s&Ev&yIU-gg%|NOYar%xHr`|cGBHw@4@!J=^4(D4Vp>%^m`cTO2IbZd9l(;mA*&JGBL}*d-+t3gzgpiP{lz@b%HjK*dj465j&aVt z_kw?Zuj^g;Uthm+xpU49-DTpDA3R~!^v(%GHb1rKr#H-d?D-eEa9mY%hvzfhxcH6JkzZ^244jHxQtPdP@)In3m?AYA3 z;{N&n{j0S!UU(MQac+tqp=|*wu1Dmn?p2OX-|*!zUatYx>A_k36z= zOFnl0qmG#R#y7mY>X&!SzyI;|&%d+-cp=%yHy(WCVN>^g+Z&#L{DJ!)Sh0Cz=fQ^` z_Llsq$N%Sd18$co@A&A)Pwp(%{Br)?PrS6-K8GAVbJFIezv=FG`RJ)f{^|5RNB2Md z@ZERb|H%LJlw%M6)5G>2yJPts*Z=sAU;l36%sI!*nmTFN#`|x){*EQvCeA+L&-Tlo zdi1F+18&6Rqd)qIcfYk*x8$w`OJ3OZtw+qBHF5LuM>oD)xDkJJ@R5h@HF5W1#m{~` z_vgRaw%4D&^T>%?e)D*DZ<&qS@6=D7K6AI8$M2oLXpMW*pB#DQ{=?S%`pFk}l*9k% zPr_f_aP!X}e`&8H-g)H2Ess6k{nAUnefqb<_S|RumS5d;{auS6S^o5t5X2)4icN{;d=Hm;L0%+kW-P6KkH^T8`O&)&ZlQUAp+OHP5Wu(y`axqq^_A{^no& z^3fG*f4jM3-#ky!9Q&A3o;UrH?;1 zfSz>omFG5WD8|2aV*k>g+%)f34?p(wrftnJ`_G>FwmtV6U#wev-=ZgbciZoXS#NoH z)zWp_ihP&O_x#OSN5Aooy?3zl!6bnKa*IJvV}^UFJbv3%QZ zQx84n@JXAOKDwblf5V=K&OY#u-!^@(U7r2Ty}$g;@Af$0$RiJ(_|o!6pLwZ3twAMV z=8Odx-j_n=439#@^(YdrFcs2bQb)rHVa)?&{GoIyeL>C+AuYjL?Qdnr_w>6IeE?>I z&@hC`6u<&0tWw68fs4b=IzScxy48g2gQ^|fDzV?#sT7_KA?NkSQ!J@|U~f2IEymXQ z&6TFi?$}oBrC8GWH8tWkzeLD@yC->Rx`dV*Of|D-!nrNv%Tn2Zes0rV-jjl%nAej< zKey*%rudrrpH&IJkiu#s#At}CFhT3PhyENB79@b za5>xQ)LhlsE-S`q#y<1y8y@)ivdt5Y`q;-$n9}?B9Shd<6-Aj19Y5o^*%NyoyWxBP z@$&~Ce&pWkum0f!nRaw#eE%)iUOVsUA)T}K*`pC+&jah`-+a%? zo)_nP_L1EEWYj+=4(j4>PTx$24^-n;nWg*RSx)lZ%tIsNT3CN;{^ zIXA=&Y`pj8JD070@x^ry&-=ydfe8ohGj53Md#>xLXSVIw(Yt>2lTWVdTK{t4V}Ds$ z7RAdOyPkfwcSqmmu9g4uKdYbKJka0s_{yH4Qx5v$-O4h{Tx0jn856VaWh-86vUA*2izZ>Ap3awmrM@7e9M= z^Qg`lQ#x?&WkvDIrZrtpZ`-k>xBICTE1z7mam#kElLmSg{os55b@$@M_x#s?-L`6A z;*8D-L$je{4}9lAV>aCV@BjLvdmngs;Z0Xvb<5Ku_kYJh6B{A&>zpeGHm_dQ<0eeq zbCfH~#;7S%C%9L72Rf$gv-{92E8Z}1pNS*4b*<>>^E2vK*IaS+&lW#?-%qZ-;^xN& zI**+_WtSF`H1OR0*M9T+KUuK&{-1pR`@iTOGVSe0b&ixbQZWuP=I`OMzBMVQJL*BE zxE}In8(_i6ll&0vB}|@fOB8Yj{G@pH4dlqb5$p$jrx>+8@QsLvq;pKOjP@F*@%tae zr+9WBk|p1WGt=qBQyxw~;eBus9ihzBC{sTunPRC;IZAVzr}qz)G&kEMy6VjTRE%XwmXNibKdrC#hn`s=UkIy zif@K!k%*JZjOVaY*u5@+yJ=+eB5n=D>?rbxJ;Qp8BJzTX2n|}eB+KWZ+`QbVcr|--TcBU1L1_E za|5qz-ne<7EVC>dc;$r`dj~f6Jm2fGvMif@FK+I2Lq-iN%cB38+rRUrOMbZg<;L*c z-?aDsGxixj)D0aqe$-IE1_oZ)yzbdPuO4>vZr(gFq+`^`Awwoi=^Vdf!?NX@xBI!$ z``q%b%|qTab-Fi9>ppF6-{~D|1KB%H_|w3H!XcV`%1_+cB{1 zxt>>=eysam+}t~)W6UlMKWc&P)cQq77IWk&x8lCN>z`Ql+>kfT=-fRk%W~A7`;Q-Z z`r(x?4zRd#V~>fGMh$d7{K&>$za9p9mM`k+9Wt?Vk6p^rIXBR|dBcnSe!lf>>3Lzt z$c_;W$8l*_6lJJMn1{~o7}(sk^0|J``{~{MLhsOy2_qY2X#2)qzgD+DyK?z+Zo=E9 zbPPqGX2-KnJ=HU0(moS+&9Ytg+`Rk3nBn*klcO zPqNNHi=I991M<>{_eyI&^3#c_9b|Uaf%A)r1J3Xa&xwW>HF(b#kfE`aMKhebkFvLV z1CzA&hPrJu`<>h28Nn?r)_R8QK62>DDewQnH{Op`8Q3~%L?dgu(zzYrPv>+Rc}JN8 zi&@4>%fhwTp!twd|Bt=*kJjrd&&2jQpDwaUe8B=CR-{>`v9rKx>>_8dRm`%OVmoQZ zA~-n2foUC_wZOFFkggKES{S-YLR%m+O+zyV+64*JCX<+CCU%;{B$>!5#E`+FI3w90 z1)0bWl48+Zfv@GO@0|Xz&wlsw{@Q1s?_N1f;`7J$6>-#Pp2z0ZE1_j%uUDXf0; zi6_@m|D1ht<;k;QDfE5VwCTL_mX>zB_8lL1E$fKKUT|LDuZ9rLuAL2QX)Hdy7DCAW z9iGu3?OYRwm-9Y1O?T|U2T#26)tA2Hf`9k_wJ*7JM|k|6!>8B8DBpDcmauyK)an|| z?X{Ja)$o$@&THdWuAM#mbk{X;y*t~45SE&t?mb`0urkKGn4cZ`Fsz-8cd@i-%a*03 z9k2b_4~l!=x`pW^`uT}Nhflrw(wDvXyN}K;dC8{ZpZ(&)r(d-9`b%E2{DsFZyl{E- zu`hq^Z<^;^vgN#`tyjJMf0iTad7JvbZo=By>XT>ZiHCUl$#0!r4HumMU2SvX?6|H- zDV(mGTF@uWv|cCafy&w@p=QXuk)<(e_;(I>O?soWE3$F9PsZBGDi*DT zD7J&%2$Vgs4~M-M=+APEx#)$Am043O^;o8k%D)o(9fM;)tKX)y@|jZREyx;GrD#!i zI#i|gN6X|^t{#?7$j@YmJX1S{+24+}<64{zZ1sv!v62*8p_XIV|C^c+cujp7m=6c!nzaU>JfKzCiGzIudSS34cpH@f2nDn8ou+qt;C-&|c=JNCJ|?|FCyH%X@-|K_~=?hqY}IkKq_F-vFD%myY2GQ{Tyrd-{+J9~OH zEScvrnBkId3*m|AMDEfR=*U zI%($$IeaPKV|Vt%p##USxqA0Yo_{p#-Vq+X_p9GL%Rb-t{pzXJuw{AcmZkpmTKwjv z<>f75_4Mi-GVr4RI0UZi9QOEuIIX;&>&c!-_tZbVwz|5ucKpHLy7$3TYkl%(hqJ5S zI5CebUE)nwj~#k+<%*YFvSY{6g$wy!<**~h=t_UEsx zKDD-T*meUbHDriE#d6xZ$rcxW?qH1 zP3;^az~|6n<`0%XMyx5Gl0&uGX2LeHHMHZ&>=d1W%G0b>(Ko@#)x=`iKxssJAQ@qv zb{^O#EKh`rVKgjn)B{A-5k`rRwa6QJEv=I?#GoK)DaMv`BoNaob+0N1VCIT={@xDf zAha@yQ@^3L7beEfr(6sji61T+SH2v%+z3}-0SCq3qV1y&KIJ1Z` zQfHJ(LB^dS$Af+hfonJ<_P1kgudu-|71<_K)r{TVHn7%bwrH?^(Y1Rl9eDQ->d0S?lIcon8%_&OdL6v)g>Zg+@EQ9{S2x9)9@YgI|AY`zu~~ z`OfEtln*I1S%DFEDiA%+_Xp`3p7WxYUc7bn(7kv4=AS#A1?i7SO!^%jeG?fB4T&EM0i{rI%j5BOE>O=r>_M7}ucr%40`Q zE$z7C72k7S{N|d`~T zx4h)?J-c5NPW<`NmC&_kPJZ?H+Lo=$e{=NUBaeLL(4m8mu5Q2Lm6!j6?}`Gau(ady zT`zu4T(f2ueBWi;mrfo1%WutbAJ9O?SXyyNSJW!p0#`@5aD-BUWx0hnhqPPTHq7U9 zcp&r( zt#i!EL#i6m9#I{-M&w&kwcgAa?10)Mk(B^rm~qFDR5hsO*Lt-;QQ4q9qBj}kd?N2& zlYD%bS*K5V2U@rnsqV)!v)K%KV@6ptXS25N``IkS3=Zjy7-q8}&qc&ga}y)d(W}UE zoxrYrhVKr-DOYEJ9G(sA?BjRN;8(IT&&r-G)zD&<<2mG5=6&)Rk=?Fv=bUGl*7h;X zu9Gt~CKokfG2hUzPhhxFSVS$bS*cV+5~IQr zm6xCn3SbA4j!=HvCdvepo=OLPSz(Rg%+I^LIF4cdcaceI+t5cf#?wzc@~01-y5-8B zc zvT6IJSO4Hu+e29Uo|o=i{);1NzX6doaRl^dzW%vCd+f^V-}ux2)rEijXOAykwENXp zT)gS>{^84aKl#`br;a{)@(fiM&NI31`!kPz z;i2PK?!Eq>{Nt5>b^qf_7yV~Hdi}*qVJ+@c*G~TX&mO+!pWN`)pWbo*=Z~D-`SPo; zxa9offB2`TySDA~9ByH^5%GLwWp&fVm;J++pE&Z((~liJw${+Ds1Ga0SHtp!S6uNQ zhsRDIKl4T%X{G2-KlbHE*WP^jikv%K+5>@Su91`(K@ybD;M3}VaEsh+8^WHrwyW4i~Gsd@9 z#7PB}YtE3jF>zfj)kRMJO``%UXJw?;7C9vUJgv!1vML2`o%0Nn!VJE%*XKEh#4?ld z9g^mgM0}#a0XU@KoELRr8-aB$<+K-UfKOt(J=#f=7br!&A?xhrh!XkaBpV89OMTu} zTMAYQ^httw%HOaFwLX|XL-Tb--=wsV0@zP&+pIkFYyZc`S6}}lufFETE(;;7KKl8) ze*M#5{OhjoyXL7Q_kQH#OaJ9fH@;)fQh4H_Klsc;TdqAnu7KI6W3cFbAHv#`N562- zk?q%9{kqGRLRdZe|9tY3zjt)CZ<=Q1p*uhNiPJZ}?$y`)*yUmMiNjy|&EL4^PrmkT z*vAaD;gScZ@7lIG8{Y@X>ooY_hBy8E)Pwijd+|@cZtt6J*&D*@u><$sac_UckL|ni z>X&}@$Pr>V;=PmqsOi^^-T(0qul>jk*I)Jei^JN=V~79X6aVIqzVugXq{m|Sl`WWW z9oc{Xqn8(nIuHN=AOJ~3K~!9S{ZC#JRt|jhfBM9sC-ZvOr`>zg^s8U}osa*Y;l?-Y z{i)mchOl=0%lq&B;^kK__g&vK&C}ob!Y6;ZdEJdSTyg!6UlE=>{_q#>`qkh0cYnFs zbum|UoU2LWm6)Wi`}WuWKyttG_@U3=^{c=0g-2Iu?Z~w)SHAY}iM30Y*B*W7vD2Xs;mq-aUpuvT z`_|)MJ$#~zb8qF#pBzTi8-5@>`NZJ^pZ@jV{*%A>cH6h132RS0_vE=&qRTvQ`bk6a zyv&-0=d~Zr$uEVUdFEQokV#w#?VQHAu2BsZS#F&*6D!r0Wff+5u-!NAEvzw&L3G3iA%eSM3Q6 zR{5LDhx)u><%nyrR9Wji%-#TYIzVg@#TgN6MK_6fI5wTXnm|Kz64cF_a6i#b* z$CO;2r)Z`~?W+yV&3U3Wr_u4XYc%#A} zMfIxz&A51stl`dQ7HEe%a8{40?=s_8a3vAvQ!cU0-2$g;>|d+e#Cgb?vOH&92UlRT z%F)}G;{7m>oT#rU>w!@23d|tRaSwjb9`iJW^dItE>KQI_Fd%m}(K1YvhE0 zI&pSB30$p!KgU`MIx}AOEbx3AA^W6MeS3}Zno&Usc}j9@Eoj+t797R&;`?>e1>gUp zZ++|A-gwpdhkyTfzq*pEp^>_L40{#PMfEG$|4H@Y-aD)~S!aOSbJVpsIO}t%RvNMQ zqDm`StAr^V4Q1(|NOkfNgfOT4Lm|wQS0%Pok&4u{jfW}!P<;1bUZSLa4JitVRI#nF z*l<Rmhs;uZ4k$QCwco-E?0fRVRA=aUbN}8wxix}&o zsB9}j&Cr4}9djJC8jFlRnk@j;yx{}o^;>2sBM#zNwLa^_BMvP86T>izJH)fujQo!& z+HOXBnxs9#UKKd*VCI(o1DUyYKF^f|qvm=(4{bY(<1qFZohR-s>X4F;55Ff~=Wxxb zXJ&mLsF$K9iFyxm3rRne&VQ{j=_NoLTB9YRjEfKmm{Q zNu$@MuL0D`HiuVd2aF%0&(*$LFu(?e8hkiTG&Yz6^BSx%V0@?Oe~qX11Xv;B%<$dC zS)i?LvRntAmgB;RqAH|lGqC+Vvrm-iSU^oCTg0nDfo@(I{{y`qO{P z^j;6vO48%KkB%0_DAeFa&AyzY1+32w*4*0u2d*yLNQA91(7}$ptGWI(-da#~7=Deo zs}Pu28B%V+nVff&MmX1&HTZdYr-GH+b4+$l#&JJ{7;^zo6)mV|9QStfbUm}Az6!j@ zbWb*Q>$zCly`HaquWbabdHRAYn!3gY@owUW_pYhOlXxatVKg&czy@zrgEhZCjyX32 zanX4c3QIb339ttb5aUX?1B~Yd4?!7$vBEiNDqGUMQf^SpR15wf5j}{!f`~K3>(@03 z@=UX^!N*XW@{$e6I5fIL~Cl(Pu$#XylEAMWuKnp?Dy*)(|6>#@h@krO$95FDj*I zYn4A`VlH!T3s5Bw>;>R#DH1;fQCBT-MNo;ej5AjRxp#x&ie`}YC-Zrc;h=XvJr~Fr zMD_TFdm)U<7|?7{{)JiMje1bm_P`tUz#Cz%%Q@sMm_w$6IdDkB7>=w=;%1r@@z+5t z8*07dQazJ(!|pj)^oPD z`xv<;#`p00uNt=%Sp02i^qLiW(6@u@d>ISA-&!Zhdqdn3TI?n+*T$jDoR}G(?J?+? zj$zG$qi>|}j*}TEK#gEyWRmQC-xNKKxh=K#s%X6xJpK5)zOrFK1;CU&Z^^f9@?_r5 z)Z&vy_uAvvqguR2b?0NAZ2c$GednX?G|##<-WKzkcYOBd?6f?B!DKWshM?vO1M&@! ztv+L}6eiw6YeYtv%gVMm^39r^lloSVH19g?ep6c7(#lYtDc)#tzPaOTuGHZoPD&bE zhwFX6uNPiVi*evW*H6Aeiq0eUsFLf|pXn5b)SIJPWAdrRXgG~2PL21N8Q-*kep!6y z)PA;^V+)VYzGqH{g!tSallY`^J8k9BtngTWj&MjaPY3WcTK7Xya5)i5c)ok|&7#M2caij4y0P_jxg=3AS2XJqpfK|$|=RNOwm4aK9?AHqd;1sgh>@g(UAdo zBZh(B5;;G!-iXh{4ti!3%Ulv(wn<0d6BO7Z=n4xV7GJv zQ?Ccg_TpO3IknT3P7OfjEP^MV(=7;FWt zx=1_2(q0(32h+0bD3gTPZ(7z~{?4)8-*BCz*uZ^;x3Bc~ymB4a8bTYJf>fxLV#QU1!{jFt&iyEvOc!Ojq6r zM4Ynn$j{^XgojGNRC&#O$V_XO9GU5S9{FS1P`L`>b*gtt37?z8UK!NtQBXIE)d^QH$un_nnfczw zHQ(lq;!(m}3qqM;2?x@ebVIqYoOK>!O;fxTi^*!5K)HkCFY@!u@2g^$@-;x7ewMR8 zWj1SIwytPkhGQ(7K3|ST;W?>$p}+&2IW1sSbEd?k%*cF0;w|XO&eGfr%6iKg zFG1hdrX2%uNTjzTy-|o7+Y})(oCp4la_2OlhG`KCjS=!j!U|7sP~wf+wENMxqnuJP z5(@N2Gs*=O^)V^htD*QoUS}=yMilL3-XqpR;VgKzdd-}HsfRoDOy?2Ddw~j_q?yZH zQR?T+Wzsn0yixo-We;!hJnml;htyNu5>RD@6jRwJmNd-g9q>uHX9$Dpj`bMb5%ETr zP7(7*OT}B-{h%tYt-y`KxSj-aZNYULSY%{0X&qxDHmxuLMyWopajwG(abAW-2d=qQ z*Kg`LF)o;S#?!kmZ+YUXo^a#ra)bvB`6SfZcIJ81=6V>ks-B;r<$D8zLxMcmi1TiV zm?XoBT~zDi>1L!BM78Q$tlu)Tb&)cF?qyML=(>(EUvjP@T;cO})h8O)U7O%hY=8DT zG*6xl!LFj9hw$!wbi7q_T?L=_q`W>kO2Wx8W9n}T98&gXDr>Lw6bd6J^$a~zQ*UHy zk1G1HcwZRJ#Ixow4VK4TdQVp0m%exS{!VjLBCnwGoXSWm^IrJ z1hA;GYLIk7q(kD|l8EoaxHe=WiTR@^n3aD?e?#xTd13`}h0%y9a*FmGI*$?PiYR)B zMj%<_j5mVklB27*#%PATQ9P4y=8Z%PTv5llqDE<|GMAG$9$Y_X5H*Z5H`ezUY`OV7 zD+p876owOrBx2bpA5zxCiTqE58owyz^0>$yfqcULBCt7h=MUKb! zj|!!T##O%6@-BE(t%9>9{u9S#j<6Ejed|37n$_ODr|%i%u_`nApmI5{Yii^S{y6eS zkXqS`O@kiRcPe7#G=pnkHR`kyqVP0vkK5Hfh4RQ@JdjqBVIOi0mY4-W>54Q5rg01J zsu}FqW_>@mvh`4wla8_pq>32wtM!v=iaNCP>Dm71*<4S#MD|T9lo%#pnN;QhzcXyp%XrqqB z-W{ScfySeJlHMIon6pEkBxRA1;sJSb5yK@|WxIvD6{@R2<<8X)Mtn8*2j|}<6*|Z4 zI+c&s$av;m1J50m*L`g19!*SI9KeF7L2e_fC(~wXrcV)Tf)}8&#({43W-{iXip$+nl|RG))=dUMQr6LLQhSX;@4OnouoIS zyhm;(Vs)o2#{u*xgmaxms;y0}QVnJ%I9mV2{eY#8(LMPd)2^aR`H-Y)jVpp1SS7OW z31jq#Ljv9it?fV~TqrO&SEOeIV$>B;mgm`g9y90+yb)yU$*Px>ms~_t#avdQ>*kR| zipnbBjbbIWIq1OVPBt&HLCvgbkvHmrE9$vc331jlQI_p^2684L(?eVlt{8$P3d$lM z{?!>dxbGJhX)iG5GIq4^Ia@toom;uQ&h%#MtkoVKZ3C|7nA^|C_@2`FdraIFuv7n_ zt@&GpO-@DfD_m!s{Y9iknu2o+98!mvYnL@<>$w`eh#QVIpCmC?V23h}wcECfcp|5j zJWbu9_wuF&Xv99?>W2}{ilYdzTV=ac+9+^`Rr)PcF`)O+cvSX}&=54pIr&dh*mlMa zdgG3Qp2lE+3l{T2wus)HmoflxYj32c&!`S5^{P}V)U%bWA04X*TX?dCNX7|ydeT!E zne`@<>dijxTi3nUsO!|Zg`_7mWpKbu%~Ed!?~FxOiF0u{zi9VK`lE%_Ip+FfADTBR z>WvtORJbD?Ar;3u@ANz97=2IiNJ&(}$xK(+>d%a>tKNI_Z>3izJzw7^Gro>lGplxF z=Db9fe-yQi#M9(lM8E?JpKj0ZB+wgz-dL*63vo+5a1WA!RK8*IsrR4-G57cld=IU& z!h#=uS78>>qy5}EKNI$kju)f+Ll|3!`)=a%qt%FirDM?eemTeVK{h$N7O{3hs6 zL5%hmYMy-Dn0?Fbm=MKxPpx1H+aS$`Go@cOQkZs$}qS691l|o&S zRTogNO|zJJv{0N{{FTTbL>qcO4}gg`vN1#zMLehHPB`Z5X__W6E(MIbE7W5#OEh`J z0xHAMvlgFPsx^^k9B@dYCK}_1tO%VhaeFhWrvY{5dw~;g)In@o2UWm2k;jO5BWS(6 zO@r2ot7JmLotOo2z9x+k@kXRK5;%_s$bmGlEU8{wqh|!IqRz+{>QBo4AS`d>Ya58$ z4T4vO%v+`v9faMLbYK}L-e?B9u32J+a&0dQi+4eT?+A@m9n#^w1Lx`8q`itB4&pre zPrMicecp=QW-Tza9mlP}*y_&+b{TcL9BU>rdk-{*wgsLEYtrfZbPeIORtucfa;BD4 z@JyC|&Ql)S91_NFH*XntP&7;8t5Hak%M6phs1DMrNQ@xxUa;~ ztj`;McW-}9=WDKq^CI5wihj`dzMg}whbc?YKaDH`RufYh+?j%;u*)v^<3|}3^O>q= zw;o-T_GjC*oRXg?nCbzOH*(Z((|Q22e2r?1K%KxadBk`;SG>C}<=>;HKUx=Tf@P^z zj3D|AM^qYV=)2GPinzAa&Tmd58TCL^la(;NZ(;^#e5Ptt%Lr5FSxgxDynjk7&mov*&C1TTBi~W2#XjW_qOusf2T8PtGTi1&O(8 z&{FIarg$Y?C#z9fAM*M2%5HG|)9P*wk2}MX1Jrd_`HYK^mika|~MKiu!(@V$(8LlyEEZVvA7<_9b~k5C>hE5nK3MBL@=Y ztV(;q5Nq0VMyKU0a)78G+CgF*P+U)D3e#_ioZT~AOZ~iMOxJ?3X|RU${0S0oL@{d_ zC)KT}2g)$i0UY%+G_e1x!G^_-I|I1V$~K83 zHUNhd;4{JFmNciL`7L}uDn6;Lz=A`{dkL)HV4cTz^eBhqDeVHR{6TX|^rkR(7o1PZ zZ~V+8nJw-Ui|PTfcM&;E7g1vrS8CiHFW|SX+9OxCB0m#YX?9eRu|*^C%-=P$=3r$U6&E8J8jsUboF5y3BXmpGMdC$lsumra2_WX(eAIi}&`lPaF`VMxb}zztb8W(s#r${hd;p z-J>(b!ub8;oJvKj8SZfoX>5eowq*{f`b};3gSlhY=V|R=7Gz?N0@NSQGm5w+l?O;f z#B^YpAr2Ow6w-Nm(rlm38J1}ra5<|_koL8FXS=N>ut2PxG zqo|Z3?y6}9ZB4ZM0W-Ewu!gbc6Aog8Yp*}30Z<92Go$nhW2MDB>r+%zXXPjwDsW-G zBCadyA##WO2w4qDxw$D1Q}Ti4JVtb$;tgS!X2dPRO42(xh&)E1J<1WIm~))x(Vih! z#4*|BGl(P_c$72~2Y;D^JI*2LT6?pkz?(xHWiQ4Itph27uSu%1IYcR9b|{u1J$}z@ zM(k8bIDTe^>kM%}$Q7mYtvC-jp9gEx!-f@S?xmClbR5HOAZu=fE(ft!mtu@t>J@gi zHNaMCjFHatw_)@3nfWYm5|jdEg-G!`ou^;jcR zv!*(kF-hgUu)klJB#_64xj&l}Q|;Rarh{b;E%r0C}k-0a*x}WJ; zm@7nQ-<&L>wc?$ae@BV#5EKC8Cx*+$e1DH)MOEEyXKjHHdj^UCw0f)F+ad>=ja?;3%PgrJX*_a0k=4 z$-EbFW5|=yy@N&pqo`(3U28^a+}R9q&YDA&;X~*UgW9G8rAtQ{bP}s!;HYRxF;Fek z4x{>9IuB4GClJ-lVi`@K8hPNcOA;#|Im_w`mQcYf&n&H)Xc5&4+lDkW!+j-wi`clF zqbR+1WgRp}S0orj#v37%5vz>F?@xV;n5{6h0&wr1J-bn9$F)RerLabDT`H$hex_X) zh(k*3LdI!lfEuG{Vb6&jaqukR$Q$K)e2_1GX3fNy@jPS50@Z+WtBLcADi0EGl;&N| zoUV8yv=hX-r_UQ2N}p?Yts`$e2i%xA?J{i+3D!fznfXIZEMQTu(>rS~z2hZ+gYmz# z0%*mX_1^3h?iA-FzY}~KdWR%9q@LfG9Mu%5YGuh6xZzmuD;Ne2N#aosN#B=u*PQhn z)Y66~N$-U#4$XPE`W2_mijczIuy}2iYK%#K?u;vapH^)h+oxMlLIBTHb5*JSVkank z)er{}yc`>_bJV*_UAw2#n5w&jf`nR(>XfmB@cdeMA8RE<1AG!|(URt|45%5x`G&g( z7ZYohMpdWIXAB$|_Mx;z@P38g8n9?PI8Q1Z#95;a*?nX#D6SjpN%1Bs0D|6#WfsOf zK#D~Zm?~8FDIPmxs9rwQU(*;^z=)|TJJy2>F&}h_;+)f6$K2Tv-Pt&q+#{aBo<3(y zgE+g8bW~9fM0u-wUiFNk1v5XFbXxPo6&X=HsAz;bdc-u$DJy-{7{RK7D~#m5(lw(R zgJCnHjGARE>oM|wNmCX3WTrBEVV~!?!Z3s=gFpm&q&?~@*svH?li_bO}*DDOlxuCu(vnm3we_$CwI_ythzF1(^*Q?pa@h{9WG;Fg}A^4&XeuLlAXjbib7> z@==?^JU{%ZRCTbbQi`<>X~r70;fl|3D(;0hSNEaQ56E?mvoB8n8>$rX{azHCU@_I` z^7y2}$oKRm1wJVxKWXb>Q{#_!?fou|1i?^pen@gf(cew)$oYK0DlgGc`z&5(JRfHz zVw$;ySUgX^k4-XO!I|Y#mug2DJAw!YE~< zF>^JAwEARb8*3(TUX9lA25{?Jy{Lvkl?=0EI1fjhP^WOmby50!?jO}}J@7puZmz}t zNxi2r)n60+KPSwqmCb3?nS2uF3&zS*WT}7>xe+5R@j5N^L(AJasm)^j_QYIva31rA zk&>(hwORbzkgC2@+!o%E&W6=$^&4eI;g)?%Rf^iSna>dq9La3f5N||SFja?MsW?B>b5>O{tSajatHnlqRoo$=qRv{W0?cR})v{u_pT~$s zHE~6~(i>&2h-wHXrYDd#jx$3M$B0W(7tIsSF>A9~6T%QH3V7gzqFz45I0xj4U>}y> z`suvEo%0^cT1m{)qvB_o8V{o^p%2A-s;j^hKUKo0)e|f%`bpCMKx=e5aUMpsz!=|W zV!c*->o#jSw-iJrLE7JFW@U^immHWCb=%^K1X7#sa^H%)0hf>5+^|BRQV=&XSD;YwewUUeD!1tJflTFNh!^p=luLtnPA=$p!F5y+NXpQTLRerKOs|1~) zEYdl;o-o9+(M*_uVgqr5{%N7GX__X4Ic2+v_BY^`s+B<%v!2dF_Ub^9R+KfH@@o?h zK^4&{n=NoW@mbFR=kp=VB5xG&eBOmH0~|j&qrBS*XB~`SPm^9sb6QLpkUU}yKObhZ ztb`y1K*Ui|M7$A=5S@PrBcT+gyw&t{$by`MmE4gY3s#1j2%zCvV9Xj~#T98~9#**` zjnv?K!u;KwZ(|kIg~d!W8gfsx$Z!Cjp^_$ELs~KBoOQtHSNdIwAj`GnR5qi5Qzzai z@ktqTmZ-zkfViThx}$YCd!H$19&tt9dGI1-J_&OIVXODzi9-@hA)cqT(Z;DAw6jIr zD{OL0t-{DH1;EIWn;M-?pD(u}x42TzOBZPiR<1B4IE-mt3>x}=1^6bdbnvWxL}*Fy6`MKRvXL0_?eMCDPq%l2EVxQ zSqcq`8TX66(x&Db3fBfZ8^i^!r3R1kb3t9dxqr`0K)d7__|8f{IZg)tc>7w#*rq@BD=MfV9kquy zLtU|PiiRcET_uCo~-hvbe2!6V}6GV|T94;yzk_GCStri?wd^;~0dJ*Fm7zK{63 z30Dtqh0%Bd3$lTSdM6fE#StvBsfk*m7M4o80#~${CaG|=)(k>4ODQ}T;zpCv}bU|n}R--e%C0Xo5r+zbR0yEa)K3BGU~8< zHS!*T?usd6fKkh_b!k)~?zt{X?zOG`P>y|o{H;bGLgtu|Fj?w@51umOXp9U8S;;C3 z4rNT9#i*``Q?{N?)n$vU5=LVU3`z(QQ+!qrTAWVAaEXlSsAT~T32{*8d!AEA_a5RL z(K(ytQ5P|4P-e40na5N18jP%DUVqXi^Qv3&^N_oUaYeumQoXa8%56H2{5j>E`t5kGG3B^dVh@r7P(wr<^4-j|8pq_0ELDg@VaKgwGS&(rodyWg*E6kvdB zJi%3*O1y?T4rx7y@tuyZH}4UhXEfzkYwaiLgV%N0imI2|=c24!)#_? z^9ljL~IU@P%vedR~pdf?C2;1{l|G>9ovy_h!L@Bb@u_J9wAmJWSB$ z?2h>K`A9RK%M@KvVZ}3aVAT<oJ+jb>d=Mxeiy&pmWhy zuYrXpJL!J$X-Z9Jg)ibe?Z`I26R*ea7uIuQZ7+=8`e(W!2SrQ-$oDf~#rH6+JI@xK zt!KyzlQRv#d9Cls`Wwn;5IH2oke{hR->`}`82B5^_@eVqSgp*-H#xn``-n}aZ0@WVF{zh>~IeRs- zAUrQiNBLSPawlnt8mbybTu92+6BLeI5oOR00;hI3!}nM$VnD=^VYFamvpDBL7~`#E zv}V+iBz`Ew8ubxFCL5XsIeQIdK#m;7Y)0`@xpG!ieG$uzDlxoH;(>TvSk_~K)J6L}P!*ux%@(H@E3;Hmy4LTMFmHv;$1vIciy8)FKXPJ#C$P z)W1LZu=+e>WzC0z`e7km6za_4k@aW%-i5y$uOaujrH0AgK&?dp{Ta(grN0MPL#^zY z&4z2x=i@#Ju23qs;xB6T8*($iq-rilYgVeBtYSvZYY3o**0?k(fKv%(JvGGs3^hlZ zafo}wI(MR?ALxg~u9PVil1*jjyQ|19Q_4p*QCH-xD#)_16-LC?ag|14g>e;@3#f%? z=VV?Xa`0MfxSsQR{jZr3V>qw39+yygzK|CRRDC6dpI{0#pX75bas+yKfp_1=9V5Rh zo-e*b@m_F*t9PrI5qZR#SSWThE@+Y}j}~(IWG*MQWPKoxrjs!dCL1tS(*@I98*J@ zmDGDu?~>L6tv1W~vMt5Kz^sH2=qU(njtb6a%O5bP+5Fn%+r!E6r~ z&(g~xA5$;&z#9ePis-yhDnLd0hF24dyiruG%@bEdeLIJlJLj`F@R^SH6$nRu2)Lpl zzm&JCKzw3eVYmk^bCZc5njr?RXhv@l;tTois#mL-#zK?SfR9pMIj-BNJH(20s6nhb zPnftOuGq_K+7#Rf47^U@IGE=}>|WxB#Q7%eiV!nC$>BM$219{c%A*naB+WCK+)`Z6 zJx!9+ws=PIO!9lMZ#AC;{mDkV$(i9h)Oybf-BM#=J#KAnoOtfsFD!MF!V47Jfk{$! zyjDWEiiApEV5P6x@%N8bELztw=G|nR2kcHpaz7}BKyq?**H+d4=lEb6a}m8&XgT9z zW(hKK2r1PCp0CZlf!T3Juh1WLqVD=UT_<8U?-3kqlul7an5sKl2QzBL`mJV*HKQz< zOU-Q*Tl?DL&nY%h=%{Q3-sru6^;NF+rJmLl^@&#JKr7X9#DS64N{nP47b%&B%7b%V z9*;O_gh(z#tqES=dRkTEJdP-~`bZxIn@9Rsj9W5WPZQ(ki*l84et!;E-8XJwVf?Lh445A6Z71ijlzx6*vs4xPHv3+F5&TU9q>jSut%M0d#;y~ z)uzCHMgEL(c^f`v?TI5_2ISjd99W9FZ-6%<+yg5hF)$ywQWfz`P^pUW9IAIwKBN}% zB(=cqum~p7@PbB)xDBeb#dK7BkCj`jwa)R(I^R*9b{^e{R&TBfl4etYnU#GUs?v2U zMj+4B(x!T0xo#B9%AE5FxR4&QNf9TM`JoU(WQ@dl_`Fo40iS`HvGPbrxzJ`{VGrl2 z-kHw88>@-M-m`E6Tv5Y$qXC2BVGgSnW@Df86)Zrlx{&%X?>-YN$uPu7_N0WPktT5D zfk=g|_@S6vYv76!J3F(OlENNQtjwqt>(nRnEU3g>V~U(mE6$r*)xvpR*^sH(tXOGO zL@;gx&nwMPNatH%7cf^J!y@hvIE;+3wPLR_cWz?gOM&|hf;S?}^A~!UDQq~mgd9@F zplTr8C~WAHtSp*Zv&$5jkXJo3_rzqYR&z+0@e6fJ20xV6M%+>18Lb|cnxq%PelT#H zSxuhrxKJm{wXWh(lLQ>?1sd55PJA2+gqBL7zYSDCEJTV)!1|p=s8Xs?h72sFsjXFKj)-~!z zIV5WY>K>LlBxiI5b3}2RM_?Lhy;2F#t}bJL7SzlLt*L4(4OZraQjg7}Z!WF5wnDB( zwNQ^Ou82M(avHIIgI#h>J}qyI*%41;v(KDynsxKEr=!^DdFRRtK7mmz@7mJAtQRkw z|H;wKi@e z2aa192_~LHw&KhzLe_QUjasT{-?lTrEySti%6+I*gS_e?)vC)`AskFAn8y|2yHI47 z$Bgq?Yn3!uAu+Nu;@foAnW9e_XT8SAA?0z7Sm%BtCYa`Xoi@nG<>Tbc>(+s@{zhQn zTFM-fiCe_P$Xb{_lfOqRy)>U>MYc;!tF*$JXF_#jwixw381_$y+ajiXewjm}&xm)K z#@aSB#~AWS9OsByIuBU9``lbyo>nROvT_{)v(vGB3*KAhDq9@M)lYm< zizDB|&p<0jEUd|eS;KgaqMk6WbsS9y zJ;p5u!kAwNaz^7?MjSX|slVY_X9Cn3^Q`C0Z6HfY^Pj6dD8~cgye|gddBbtGKTQ89 z@JT`!MQyZ|2fuHMbVVGWP~3;o)50g0-}KI2yHz`+7BTVp*rpjMG0jHEeMP#ctbalb zb=h(aEabYh21sbOFz*HT!L!UXgkv6Uu7K$s92D*;Ukj*4TCO1JpwG3I4l}dQDP|RF zu|=+Bz@VIHp~o7bB-44cHBK$d2qm(K07o+PJn33^zUi)QXY+a9Aw}*d@j&yY2`P6} zm$;%PDUc|>Zy13o)-SI_To)A}BUgaxgmk`5m{l|6T#>+Y$mLBqvPUhPZ(~#=M7!h| zJy1z^>FHDcv&av{`yIF<`h3cs)kEH_KGnHHJa9#kX#)iwazexv5!;$IMu~~RY|9L5 z<)x$4B-|_Bh%%hzdVgS7n5~F4mil_3`%$q}h;{7MC=Ncxc-zbyjbXWWSz=0|)rd@)>Jg!3aC$B%D z`6O9~l;Vl#CSF7##w}#qs;ffj)xT1fnzhf&xjUEotHaZWFzAJayEh# z+@=CUXcWxc7#c?(3Z7@*NeoK7o*2VFJR!*L6VD6Zw&e@YHAj`YqHCI2s~T#2&NQxS$kWI1`D@H8JXD8rTUn#kI)5MTOreN3za$ zI%kG=D!_1e#q~D~&t^IAk6 zEb)2C51Cw1TG^uBNa~8xuC7fu*Y6{Kh}cJgO}&v)#?Q0ddlNY%4;!^EfC~0lT^9i965^iiqto#wwy0#T!m0$C;4q*Urc+-n)-D0_7nD-wwR53 zKgS1K*R;ozEO;k(h*YtZTV8c5k9)49Y2Y))`B-U0G25~#R#DHSmrnaK9FHS>{=WS1E&KS4ad z{`(z!*LyruZ99oKn%Y|Z>9(ogBnw`{Aw|q;De!%|;ItAu@IKEj~z64VF zKx|zH3I>s*Q$%z09JBqYP$9&fDR4`@)w=mYU>pl85OrF4t)!fIq)L>(Cw?f^Woto4GNbeGx2TZ{fN8HbQ}x1H;)>Fx=%pDcKI+%L2y+hg9?QHOEH1%4>Qu&9Q}pKF?dt zCt-g!8e2RWDhLg&64xy?s^1#uPlka*%K9o&EGbPAMy3zg(M8cE?zmH}Y^Lzg~fj-f%|30-X9Y$}Ls&USaK(>oZ}^ShkWuGvD#^T8)uCP4Vs&9^uj`o-SqX>EKKUwTdJrtu!zeI%k#K zvjZ1s+F`M!I1yy98WTg!1gxJBD9?Dxa1;5zK>Sb$VK&P-w^H?WtY9CYDp?@DkZaUL z%j!wRcOhZQY7@_cm(9+B3pIdpggjV39n@kg^*rCh4Qx<)i)R(uY=)H(gVzJ8HdzNf zjCq6N@8*0+DnEFxQJ;7t#K|htc;Z22m^3h&LK= zVu_mhyo)^g@9ar60Cg0 zrpm-zMKy~M1a?}<{X5#D;N>4G>XTgF2>A>jhp{z{S*mou#WwTqXk7sAIcBq7trDo+ z#5KJ2)^_5P5c8aZ*b1&C5X+MIB>9xpNMM|q(kC?*7P?yzk!om_cx*eakox^T!YA=| z*!MtmaF3d#fvGJ>bcOn57^5ewe0FWtb(*8DYW5+gqAh9e4aC{Uu+oin_<1#R1!fHKdSuR@l%dL7b6 z-tX}3){0v9PN`8W$@_Bkm|BMfSaK(dJ(C`BZ3!tGq7fM9Rr1J~*t27Z=V#e^ARCRw zW?r8Hw`9D7rN;l4!@o@vU*p`3pQ&#-b)2yq~gq z2KXf1QpV&aWlv_+wV-kqat0{KJtR}Z4{YB)_jasOLKn6#FH`^ zw(zf7JA&1e0*o}`lZcg+nCH$8oHyz$z0Qp1Ywm#8>6&JiYN&OwMjMU%m`6L>tm%B9 zyxXx4Db9;(+G}MVtUi?Eo^dKTLUe7l_^-el5m&@8@J5+iN|?0}511=A!AM}5Fs@LP zS$BaqBG!a5s|8hM40$8k4>2X8m959r8__B!u)!Nyt>%rgDv_^9A?+YF#xr?sNq$d> zX}z^DTZ@oaz;%hA*L;S_GwGaj9u6J`4#~qdw*+f%1GB)aTWT`0Eik*nS0LvaapY>m zn))QN>N8e+5^*-{9zny3+SVTO{4sq}T$f0Dz_}&6EptfR&tvNc1h|<103ZNKL_t)p z=pCx`NsL?K%#(f>AcutS(-y~SkxycN1Jop$7G#xGYVGf8_PN@&DEPUnj7dS%t{SIus%MCd@&33O!-c|YKD`}Z`k2+Dt_;2{Yq)%1CvU;QR8z+9+sNdG45nt zBSiFsHIiM7n&8FWm5Z{x1Fl)w^a=@We!rxik+m;1HX>2au?|UU@2Ll2p12sEG;&(< z8nAcZ9YDN7i#RDldQqc3aU?nBOYf2KzAUYN2eEZVJsN&q_#G%~Fk!O!3jN;$&o|sV z+yeh%97yTnW_m1p>ISdk{!PczcIf7*w_iBeu3 z5#lH;LzUe#d{0-vb+FqHJX)IR^0s<$GKsP}n1sAiRSWHSJy(?wF&(oxAQ7BKMl|R- zrS!{zrUE*$2L}lbJbNly5w1kKm8gV$&JkO~2P+6Ii7fR@m7xmLE#p zjU^%Fn|?X-wNXQI$eFtgFXKS~8jqJ=C9&R5(%bqeJ1@Cf^5uA$ZgM>~T1Bf0;wW1IeZZiM9> zzwsZs1ekD^6?vKpYiPgE5%ttTY2{gP2$b`sd12=W`ij%AG_jGfK%Jl^^f8#7Y%_HP zPU0Qo_SkG(soa*s_Tgr>0O?{9gR%B{)sv$>a|CWndqA$_dsKD!dzx7H5amMlJz-;_ zPgXdJg)yL&^7Z8JFW^KZpHm9;qR_$n`{#(?*JGALBmwk!ypk)##RK$DPV_1q4b0YB zxE@_ZUXR~HO<6P$&$rP0(c_WGtdx(FOBBiaMg1Oa74fNeec7)qy-#t%nc4lZeM8#W z4;N*Hk{>hE9P1-gHJSgcAtC5Lv#QiNGchaoRwRz(3;x(DX!!;cli5cR$IwPRvw4;} z!=!#oQ2yY3V;rh)x-h#<9|q*x!sZ!%4t<^b%*=0)LaM_}E|&YBqj->L_i)&ediw`U zM^6Xy2Yc*;gnFp%^3GD8$Ewxm*1Ph&t1U8fHcx*I66U>OtyXVwQ*;XRfTb8p7b%e9 zgrlOaLx@oO2<9)~aA7vvVhMkW3;9?>`_EQrXXxuAr_~y19iqELS8(#&OJ$0^cM7LY zA^s&Z?G>Qhic#X9`V+i9(91Wuu3#;)3Nl4WyDZ7DKq6wY^p7^}Jb9Xrd|T&bVim;S zS1ZmN78=OiZ%8A@MvCmfwmdEF1~$xuXzDaqyl#T4r3rQ_M{dtUz5|*Lif(^}UPcw@ga3TxLXrPC9BYYnfQ#bM%>Hk{EDZ zg^)e`K%P#>o5OJhM()X2=1sy3M|}B;EhmfU?$cpjrLHI+Js!TQcqb=1DHrmxaBVIr zuP!9{Kk6=yk7>QHYySKvSRZ0k zTsuqNK4@sc4+UDXu6h!2y2aS%!Ywo;GfbBfc^&F@3OQUZ;L0C4)=G>2sTi_R1h>Vo zU$|7|43hs55$e!ivN4YXIRL~ECi@U8K>T4ZF&_S8mICsuB-pz1c{7bNeC(7r50&81 zXCyD}E061)8(0V}H&(}u7Jm3UB>ZK*L!RtMy-rQYkc|~lxx<#R-YCOG3gUWCmY(DQ zLfoIH_m9QdWMMJ3;rdg6k~p1==by{U?~;gQC0b2x5ulW>k(G{UJ0{|mKCe}*L~YcM zVmns-sI`>Bye%V8B5CTrdO0jwMNSm)Re5KG1sXB5g&C|2g>93Ci6HW)i zDL;1HLr=x^%CNYq>rXrLnZ9#liDN(1X4U%7a3FM%vm`W!i6wRolmd+ypH&b0cEQxN za>U@xRG^;p&+0*%(2;yLa;{AbSaUW)UH(c{y zRa(yL1KKIx4Nxn=2INb9ObCW=N#)y-NZO?r@4>??ri_lhFVCYV(Dd%KsTbqNGY&Ca zb%uryf#)=W%YR5A&fwPNC}s445jM6<6meeP!*D=8L!Ixcj5-SC!KqIE%z3r^@#&NDKDW`|--s*9QNcmf;b1TP&1FcY_~U~{!feiDs%Y#mjt-hH(no=wXy&D9>gag%q_9f|(vmxWvgivKD|d-bOM0GjKuX*+_*)1FZV-jXNdL0m`|E&&ngqH7Q! zZ6rnMg^g;6&gXFjX{z#EQX7m64^-^2Xo*1{?^+75i&LMiBwt*b$-&^seVz;!$^1xT zN!Dsky)e!xny5DA>Rg4F`|`{`FM*v;*UzG>bG#)Yx&@$EyH-Xa90-F_5Cw_xNS=3qi=6zwSD#(QOX7IGol`rWZq6u+JI5TA@HC&JFxn;GDdET8P z4IkIz&yG~6R;UQf4G8S)6D{~<_b8C{lDbxH@cS~gg=!Svr+m~Jxc$hY=2-QhshKBx z@!Ark)p-+sQt1-Ph!T)wOIu(omH6YyJFlc7b)GhxHyBxbPbbhP5?9+YE>(ixNsJhO zxQ^c}t=-BMeQ2?BRN8#dU2>I0Uw2K&wa|3axisA_+H?>FlQ{3>o{mDh}yBf;pbsO9$wbFd8ofkGXh(2WuOJHYHuy9W}qb zoSVuohEo=0H;?sX^E!BRALcHm35+=yn8(lN%#YQ&Zb+S*N}k^qo;6+0?y%oF(VgM$ zP`GPY;OSI(vxKmzR9#@oHcH;Hi6wMl!lQSyXxQ;1o?_UTwBR94uYM5qLgFR|rrvIF zVrZ9-EvzURo^uUk*^DhS{s3Q{Kd}^ z4Mz#rloQ44nL_r=+gF@CaXH<<;!(VhbdgKd5NDEKFzMmCz~9D@Xmjiny{!1-N_$AL z{4BkeYUuKa;bxROaB~_kI=-^qc(<7paFO&e;bkyY_{vwD(7ylc*UN7Efa$Mdt%C(^ zH)pG;!E#{6fsW8njH||5>2b;o1YfZmRC!Dfr3^6N|O_Hfo$YDoO)rAKQ9iw#Go)&0rdL zSd`z2j&zWn7kP>z&gnzATW9Oh7(ZiwXvix?7EE$%~t*@eHYARR& z+4i1?QtAG{N)+$<<&FhpuUwI}nWX(jvk=Vqp4Xg}55vL^dY5_A0TfZ;s*%rofhseT zW2yDHcA9|eT+?&YyUx&Ez-YCYfKu;zml@j-QC}i`R1FC zSBr23P+*;Hx)RHm!+}UQa0RS-ur$w~R|GMBB(#nl^0`206y-1#>%W!f7}L_(j8#0t z{!_gBg-~-*@QO2x$3p*Y9$J^Tg);YE84n(+1~fU5^$n%^n{RaG02-EKBTrQLAmdNZ zNxz&Ad@Xmp3b0(*tnoVCkM@^3G>CMHP;mb5r595Sx!q@^WxebMIYZ(2YV3diK8m{y zgi-Loh&N(=R%44Cg*ng#TCa>mxkHS+YJm7l1_?@>E-s!j;k6f(QGI>(pIxfj5b zSpv8~(QOAyE5;#>{Y|^T_vhG1K@Xwd=7B!bF}CPOSt_l4-viX%&{CKh0=uSH54h~D z3Cg9Acu(VV%zK~EatGDN+(jd-$#eh7jr~fboLU{?gKMv5Hn`UpxA)MT{OCSZ5**g; z;-G4Jz~7~EQTZry`~VaRuasMLRWdIcEdZ}nzQ8@`qzmJBLjFa%3qU3U{zW#Q|GD$T zL?DZOQTu1dBHqg#d;MH13mQM4_%mM=fZh?ifS=CQ8>7a+Q9@qCIL#NVJs4c8Wd;Oc%`#u*_ zQ#+G`Or;YhzDHOQc`3)FsFJq$z2X3} zvK6aN6y!(2kN5Z56Gpjek56$9o%vavCn>EDiB&3c% z%+=||f^_})3Lp)<8| zs9jjShZ{JzGog5XoWH$Z%Q)uxdQ&hGr0<<>kpirIGg;>b&S83VnPpP0VJ*26F!dgw z>Af~S)UymoJ;BDtYW((52%$TwP3Q%wcbmU~|MG8;%<(tz-B|hiA4R9mpN74$#hg0`80morRx#J_9*#9kI7Aa9N+YZ{U+{1gNsq^?HioTI?7M)E_*CG?K~ z#Aj%4C)Saab;%}%L_}NdlvwGieKpp$qy5=OfM&vcNTiJP>63Gy@tDH60iQcK+evk> zSKJuBD(6TohOmU;6_K8(P?QmH>RA&2G|9+?zX_-0$}sv8xPg^F{bn<;0Z^=s*016YEEP0wkh$4La4+rzHyv;>*A}Q-HFMs!G%P8a<07X}|zTnJj zDebVWD11n^J`_R<>8?J}asz){G!GH4hmR;O(NZ|X$y5kHYKE-+;s$;4Qvkwo&ziHLH}8yfuAk~({t`FR|2bfF~QBH-Py{T68OE;xPxx*j{({S z6R+*KcjABRz36%#Y2BUdhAR+s2d9AIZRER~|H|+cf4KCEQoMI25YC>0kQr4gUN6J7 z_5WS8ffr6NYvUV=}aHyI&4?y?3O4foHkw`Q?AR= zR>K??uuJPu*46#%kZioF+9E$x=1_;G+1+NZR)j+*gI9iLQfD0ar`&RHK?R^$*FJCG z{M~vm@Haf%p&y5YhykZ6BZR3g{~Eq2rBxzjEg{HY4(m!QxbHOXzN{REW-xQdNJ}Dq z@9{cB1~U`6gYy(MJTgSS&oG6B$w>PX=@&k)x73dOCge&ttn`D|I?BG6(hZz`P6z0x zf^usmAkKm42ZU&Sz0FuzBf~|(8Mj8EgAN%D_)ASmV1+EfpiT`MxO5>v@r*Q#W90Y| zXx7!SB-|iDAf7DDLrM2mv6z_rr=oad|QeYu@ckT8egeFEah88l&L1FgFb@uBP}K}Zgoe~)*iCQv7#YS4l>!4f0THyC@nbzUB| z7(47>nD;cQ5CRqCs(NbHsqAT3v0Ft-RG!Z~()fxhm0-P2is)%Ser+;JKor--Ipm4Q zo=NZi*Yp0nns-fI)lp?Bw1709$AC=)7`oJi*8l=#$_9!@8S5!0Xj?y^1;l4T+QQ+> z;-6xY{WR4p+f%>OxW3GAnd`A@$;7186?WmYe0hT!t;b+Jg!+|YdmW;G7`#Oj?mpT7) z=D~cDZc%*4rMYTUJbRT^NEYY6c`}NPW-HmG`Oau+*F+wi zKPUzGPnWkzqI~3`&aCDhJt(}$51d=z0#u{;0uFMB=X>hV^xaP-e*NbonB^C66KTF? z07;8>=oUtc%3K^nfBHWTc@huTHY$_Et(93#XNnOztq@x^hKNm#k z;68ru>?sc^t$oru>TT1jUdGmQ%O=c=KIgg6<4|_LE}fWoZsipLU8}o1Asn7~vOw6mlj2DYur>f!! zHU`u6t7K8WH9V)Yb}y^T2>a;ddnDO(M3H;?h1r+<5B zC61Bdeek-DyQq(>1<4@a23xS<$l%UDElZAk_7KBDa6< zyVCO|;pVfw@9YeR8l}xUpHNMAH&S>>@y6@i82>FL&xYFy-8rA`?s@+sGSiFE{*tCG z<4nn#w&vSae^lf4nsCF}3a;^Drr+f9aB}wA^^8`;YvBrZv!rWuII3$Dh)LgCVIiBn znKy)aP4t`kOiu{Uo(B0YZ=IuXm;3cjb(a;oH#@fp`{lYuzGLE&4S~j0dh-tUS2@3B zMpJ;dO*R2Hy!h{x7=q3nylB%a1`MHw1J^Az;Nwg6&v(FMp<`*W!*m4v;?eC43|fhk zfEPy+!gSWue`CwPPyf2e5a4&0KcqW`q#F>fZH#dx@7{rZgMS@CK;7TYwhvfc0rBI& zckKLLDTrWdScf})qR8f;C{utl&1@>8Ee!cJLP=`b0XfFi?g3u9&PMfn38?;7k}_rk zm1X;QTducofx7y(a+|Kqf;c-D@Ib{fT9<@$-sa1m?=SXpc}|ips&Q;=Lyb^_>5IRD zvjcF;V?(p3wrW!Iy->=o5tfO)#0W9OJ^s3 =f8r644Ct;G#I48=Qm&sUgt>NK%M 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

c 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 -

-

idp.global

-
+
+ +
+
+

idp.global

+

Your permanent identity on the web

+ +
+
+
+ +
+
+

Open Source

+

Fully transparent, community-driven, no vendor lock-in

+
+
+ +
+
+ +
+
+

Always Free

+

Free for individuals and organizations. Paid support available for SLAs

+
+
+ +
+
+ +
+
+

Permanent Identity

+

One identity across all your applications

+
+
+
+ +
+ window.open('https://about.idp.global', '_blank')} + >Learn more +
+
+
+ + +
+
-
- Legal Info - | Company Website - | Support - | idp.global v${commitinfo.version} -
+
`; @@ -125,8 +315,8 @@ export class IdpCenterContainer extends DeesElement { const domtoolsInstance = await this.domtoolsPromise; const done = plugins.smartpromise.defer(); requestAnimationFrame(async () => { - this.shadowRoot.querySelector('.mainContainer').classList.add('show'); - await domtoolsInstance.convenience.smartdelay.delayFor(250); + this.shadowRoot.querySelector('.form-content').classList.add('show'); + await domtoolsInstance.convenience.smartdelay.delayFor(350); done.resolve(); }); return done.promise; @@ -137,8 +327,8 @@ export class IdpCenterContainer extends DeesElement { const domtoolsInstance = await this.domtoolsPromise; const done = plugins.smartpromise.defer(); requestAnimationFrame(async () => { - this.shadowRoot.querySelector('.mainContainer').classList.remove('show'); - await domtoolsInstance.convenience.smartdelay.delayFor(250); + this.shadowRoot.querySelector('.form-content').classList.remove('show'); + await domtoolsInstance.convenience.smartdelay.delayFor(350); done.resolve(); }); return done.promise; diff --git a/ts_web/elements/idp-loginprompt.ts b/ts_web/elements/idp-loginprompt.ts index 1813409..88ae30a 100644 --- a/ts_web/elements/idp-loginprompt.ts +++ b/ts_web/elements/idp-loginprompt.ts @@ -52,17 +52,56 @@ export class IdpLoginPrompt extends DeesElement { cssManager.defaultStyles, css` :host { - font-family: 'Geist Sans'; + --foreground: hsl(0 0% 98%); + --muted-foreground: hsl(240 5% 64.9%); + + font-family: 'Geist Sans', -apple-system, BlinkMacSystemFont, sans-serif; display: block; - color: ${cssManager.bdTheme('#333333', '#ffffff')}; + color: var(--foreground); } - .boxcontent { - margin: 0px 20px; + .form-header { + margin-bottom: 32px; + text-align: center; } - .registerButton { - margin-top: 16px; + .form-header h2 { + font-size: 24px; + font-weight: 600; + color: var(--foreground); + margin: 0 0 8px 0; + letter-spacing: -0.02em; + } + + .form-header p { + font-size: 14px; + color: var(--muted-foreground); + margin: 0; + } + + dees-form { + display: flex; + flex-direction: column; + gap: 16px; + } + + .form-footer { + margin-top: 24px; + text-align: center; + font-size: 14px; + color: var(--muted-foreground); + } + + .form-footer a { + color: var(--foreground); + text-decoration: none; + font-weight: 500; + cursor: pointer; + transition: opacity 0.15s ease; + } + + .form-footer a:hover { + opacity: 0.8; } `, ]; @@ -70,34 +109,38 @@ export class IdpLoginPrompt extends DeesElement { public render(): TemplateResult { return html` -
- - - - - - { +
+

Sign in to your account

+

Enter your credentials to continue

+
+ + + + + + `; diff --git a/ts_web/elements/idp-registerprompt.ts b/ts_web/elements/idp-registerprompt.ts index 6b5d3c3..0ce4c07 100644 --- a/ts_web/elements/idp-registerprompt.ts +++ b/ts_web/elements/idp-registerprompt.ts @@ -52,29 +52,56 @@ export class IdpRegistrationPrompt extends DeesElement { cssManager.defaultStyles, css` :host { - font-family: 'Geist Sans'; + --foreground: hsl(0 0% 98%); + --muted-foreground: hsl(240 5% 64.9%); + + font-family: 'Geist Sans', -apple-system, BlinkMacSystemFont, sans-serif; display: block; - color: ${cssManager.bdTheme('#333333', '#ffffff')}; + color: var(--foreground); } - .boxcontent { - margin: 0px 20px; + .form-header { + margin-bottom: 32px; + text-align: center; } - .registerButton { - display: block; - transition: all 0.2s ease; - will-change: transform; + .form-header h2 { + font-size: 24px; + font-weight: 600; + color: var(--foreground); + margin: 0 0 8px 0; + letter-spacing: -0.02em; + } + + .form-header p { + font-size: 14px; + color: var(--muted-foreground); + margin: 0; + } + + dees-form { + display: flex; + flex-direction: column; + gap: 16px; + } + + .form-footer { + margin-top: 24px; + text-align: center; + font-size: 14px; + color: var(--muted-foreground); + } + + .form-footer a { + color: var(--foreground); + text-decoration: none; + font-weight: 500; cursor: pointer; + transition: opacity 0.15s ease; } - .registerButton:hover { - color: #fff; - transform: scale(1.02); - } - - .loginButton { - margin-top: 16px; + .form-footer a:hover { + opacity: 0.8; } `, ]; @@ -82,29 +109,34 @@ export class IdpRegistrationPrompt extends DeesElement { public render(): TemplateResult { return html` -
- - - - Send Verification Email - - { +
+

Create your account

+

Get started with your permanent identity

+
+ + + + Send Verification Email + + `; diff --git a/ts_web/elements/idp-registration-stepper.ts b/ts_web/elements/idp-registration-stepper.ts index 79e43e2..2b90129 100644 --- a/ts_web/elements/idp-registration-stepper.ts +++ b/ts_web/elements/idp-registration-stepper.ts @@ -34,9 +34,13 @@ export class IdpRegistrationStepper extends DeesElement { cssManager.defaultStyles, css` :host { + --foreground: hsl(0 0% 98%); + --muted-foreground: hsl(240 5% 64.9%); + --background: hsl(240 10% 3.9%); + display: block; - height: 100px; - color: ${cssManager.bdTheme('#333', '#fff')}; + color: var(--foreground); + font-family: 'Geist Sans', -apple-system, BlinkMacSystemFont, sans-serif; } .main { @@ -48,17 +52,37 @@ export class IdpRegistrationStepper extends DeesElement { display: flex; justify-content: center; align-items: center; + background: var(--background); + } + + .stepper-container { + width: 100%; + max-width: 480px; + padding: 48px 24px; + } + + .error-message { + text-align: center; + color: var(--muted-foreground); + font-size: 14px; + line-height: 1.6; + padding: 24px; + } + + dees-stepper { + --dees-stepper-background: transparent; } `, ]; public render(): TemplateResult { return html` -
- ${this.usedSubTemplate - ? this.usedSubTemplate - : html``} +
+ ${this.usedSubTemplate + ? this.usedSubTemplate + : html``} +
`; } @@ -71,8 +95,10 @@ export class IdpRegistrationStepper extends DeesElement { console.log(`validationToken is ${this.storedData.validationTokenUrlParam}`); if (!this.storedData.validationTokenUrlParam) { this.usedSubTemplate = html` - You need a validation token, but we couldn't find one. Please contact workspace.global - support. +
+ You need a validation token, but we couldn't find one.
+ Please contact support for assistance. +
`; await this.domtools.convenience.smartdelay.delayFor(5000); window.location.href = '/'; @@ -97,8 +123,10 @@ export class IdpRegistrationStepper extends DeesElement { if (!resAfterRegEmailClicked || !resAfterRegEmailClicked.email) { this.usedSubTemplate = html` - the supplied validation token does not match any registration sessions.
- ${tokenErrorMessage ? html`Reason: ${tokenErrorMessage}` : null} +
+ The supplied validation token does not match any registration sessions.
+ ${tokenErrorMessage ? html`
Reason: ${tokenErrorMessage}` : null} +
`; await this.domtools.convenience.smartdelay.delayFor(5000); idpState.domtools.router.pushUrl('/'); diff --git a/ts_web/elements/idp-welcome.ts b/ts_web/elements/idp-welcome.ts index 98024c8..5dfc539 100644 --- a/ts_web/elements/idp-welcome.ts +++ b/ts_web/elements/idp-welcome.ts @@ -28,86 +28,125 @@ export class IdpWelcome extends DeesElement { cssManager.defaultStyles, css` :host { + --foreground: hsl(0 0% 98%); + --muted-foreground: hsl(240 5% 64.9%); + display: block; - color: #fff; - font-family: 'Geist Sans'; + color: var(--foreground); + font-family: 'Geist Sans', -apple-system, BlinkMacSystemFont, sans-serif; } + :host([hidden]) { display: none; } - .maincontainer { - padding: 0px 16px; + .form-header { + margin-bottom: 32px; + text-align: center; + } + + .form-header h2 { + font-size: 24px; + font-weight: 600; + color: var(--foreground); + margin: 0 0 8px 0; + letter-spacing: -0.02em; + } + + .form-header p { + font-size: 14px; + color: var(--muted-foreground); + margin: 0; + } + + .button-group { + display: flex; + flex-direction: column; + gap: 12px; + } + + .secondary-actions { + margin-top: 24px; + padding-top: 24px; + border-top: 1px solid hsla(240 3.7% 15.9% / 0.5); + display: flex; + flex-direction: column; + gap: 8px; } .greeting { + font-size: 14px; + color: var(--muted-foreground); text-align: center; - font-size: 16px; - font-weight: 600; - margin: 24px auto; + margin-bottom: 8px; } - dees-button { - margin-top: 16px; - margin-bottom: 16px; + .greeting strong { + color: var(--foreground); + font-weight: 600; } `, ]; public render(): TemplateResult { return html` - -
${directives.resolveExec(async () => { const idpState = await IdpState.getSingletonInstance(); await idpState.idpClient.determineLoginStatus(); const data = await idpState.idpClient.whoIs().catch(); if (data?.user) { return html` -
Hello ${data.user.data.name}!
- { - const idpState = await IdpState.getSingletonInstance(); - idpState.domtools.router.pushUrl('/account'); - }} - >Manage your account - { - const idpState = await IdpState.getSingletonInstance(); - idpState.domtools.router.pushUrl('/logout'); - }} - >Logout +
+

Welcome back

+

Signed in as ${data.user.data.name}

+
+
+ { + const idpState = await IdpState.getSingletonInstance(); + idpState.domtools.router.pushUrl('/account'); + }} + >Manage your account + { + const idpState = await IdpState.getSingletonInstance(); + idpState.domtools.router.pushUrl('/logout'); + }} + >Sign out +
`; } return html` - Do you want to sign in or register? - { - const idpState = await IdpState.getSingletonInstance(); - idpState.domtools.router.pushUrl('/login'); - }} - >Sign In - { - const idpState = await IdpState.getSingletonInstance(); - idpState.domtools.router.pushUrl('/register'); - }} - >Register +
+

Welcome

+

Sign in to your account or create a new one

+
+
+ { + const idpState = await IdpState.getSingletonInstance(); + idpState.domtools.router.pushUrl('/login'); + }} + >Sign In + { + const idpState = await IdpState.getSingletonInstance(); + idpState.domtools.router.pushUrl('/register'); + }} + >Create Account +
`; })} - {}}>Learn more about idp.global - {}}>Open Developer Dashboard - { - window.open('https://code.foss.global/idp.global/idp.global', '_blank'); - }} - >Get the Source Code +
+ { + window.open('https://code.foss.global/idp.global/idp.global', '_blank'); + }} + >View Source Code
`;