From 19a8f6abc5a1ea0bddf99efd8b1a21718ebaf147 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o?= <43091603+glazk0@users.noreply.github.com> Date: Tue, 14 Feb 2023 16:22:18 +0100 Subject: [PATCH] Updated ui --- app/(auth)/layout.tsx | 11 + app/(auth)/sign-in/page.tsx | 20 +- app/(auth)/sign-up/page.tsx | 20 +- app/dashboard/page.tsx | 81 ++- app/dashboard/puzzles/[id]/not-found.tsx | 11 + app/dashboard/puzzles/[id]/page.tsx | 2 +- app/dashboard/puzzles/page.tsx | 12 +- .../{Karrik-Regular.woff2 => Karrik.woff2} | Bin app/fonts/VG5000.woff2 | Bin 0 -> 31616 bytes app/layout.tsx | 2 +- lib/hooks/use-puzzles.ts | 2 +- lib/puzzles.ts | 28 +- package.json | 1 + pnpm-lock.yaml | 472 +++++++++++++++++- public/assets/404.png | Bin 0 -> 1303821 bytes public/logo.webp | Bin 3564 -> 0 bytes public/next.svg | 1 - public/thirteen.svg | 1 - public/vercel.svg | 1 - ui/Card.tsx | 6 +- ui/CardTable.tsx | 257 ++-------- ui/Input.tsx | 2 +- ui/Label.tsx | 4 +- ui/Puzzle.tsx | 7 +- ui/Puzzles.tsx | 5 +- ui/ToHTML.tsx | 14 +- ui/UserAuthForm.tsx | 11 +- ui/dashboard/Sidenav.tsx | 6 +- 28 files changed, 645 insertions(+), 332 deletions(-) create mode 100644 app/(auth)/layout.tsx create mode 100644 app/dashboard/puzzles/[id]/not-found.tsx rename app/fonts/{Karrik-Regular.woff2 => Karrik.woff2} (100%) create mode 100644 app/fonts/VG5000.woff2 create mode 100644 public/assets/404.png delete mode 100644 public/logo.webp delete mode 100644 public/next.svg delete mode 100644 public/thirteen.svg delete mode 100644 public/vercel.svg diff --git a/app/(auth)/layout.tsx b/app/(auth)/layout.tsx new file mode 100644 index 0000000..9406303 --- /dev/null +++ b/app/(auth)/layout.tsx @@ -0,0 +1,11 @@ +import { type ReactNode } from 'react'; + +export default function Layout({ children }: { children: ReactNode }) { + return ( +
Ceci est la page d'accueil du dashboard
-Ceci est la page d'accueil du dashboard
+Hb6s8$WbKn_FRlopdXs{SFacY6*FlY4w;8o0u z;BCyxSp~d?;`%-C4d$;gD1K8I#=Kcr zf_ZDuVnX3}?32PDX+v!U{0S4`Z#LJKz(24N{%3FP1B^f|EJMDq9EHLP=!KQ|La4!z zP>o?>49gWR<3MD{MU;@k(K-eQ#xp`bJ{0n>Oen;1g#sK>gi2Ow1E2y%3RU>=KVvO^ zbM@B&xk2pMA2x8<#Cl@)_9XX+>r*F;5;rNFM=p%QSeS&F;F`-;{#Zy8*-W7)OmEagZ z3By?_c)+O8-n-9tbrHVbnhZ{|Md-y2!EyEo&ahW#$3CINe!)==2pu>ojOK)J3TK6m z+_o@=yMj|ZFws46i=uCl3*#^qT*u7fnYmEqvUS@5dvLJW5-4<~N2p;?=)s6!k{!ZC zb_yfeC5+&dFpM#aBROxPXX3V)C_~(qPYh1nR)j%GDGb3#n1PA2onRJWAXb7K*a+@o zFF1><;2!RR3#bIE@f5n@B{+w-(1k!@4B>)1L P+-N5?%fh0#|M_ZskQ75I`Ue*|1d@(VsQGP!SqEC5h|& zxbx^0uiotudk(V5utdTNYsGZ53sX>wwfuC_@zG45w&|Z974wtSI^EMdEoyvASC ^GlGR)%Kw`-bn(9iK}+ae)`K)JOzhLR8IZhy*=dobr~g2`dJ1>*DN)-c z{ZtOsW 9>fusoD?VSsbf2blozY^mfICYb z+Vh*wk!{|!c}GmU{B;_6a-y{jww|(jWV~)kYwCnV`IAC9iuufoNY;gR1inn=AVmEF z-W(04v7=-*;y{tJ0n^e!&H)&l03@{j_bZtBP8RbP}C087+ z+0ePzKo9+ITqrfCKCaQr lAQ52%1rLe`VI@TK2kM)?G003|cvKxpdVB|X14 1VOTn+8^Q!^_Gnp~oNjres<{$z66RLIhlfcbRA5mxT z5)O-6AXx+(bVe0W`>ieQmWHwx+p>SxM6f&DnH=!Y!F?srM@Jc>J1EBMpc$WoVf+r3 z2{==-?T{Auu6_*q*_39)e5lrkMuN+vu1Z$d=UTRln?9O|t6mLpsb3Zpa2AAPl1D z1jWZ7d>q1?5Z;3D2?(Er@F@tNh9vW7OcfVp3aJGxHM5W6%!~ M_JNF*Py;1Rd&$Mdbn&*^o)uU zp#OsOx6jBuyV>o!emPJ>qgGIVCjrCtW}wb+Vhl8@#X;IsU8hN>O2;`3S^?&S=zZKS zT$n>uX?ECP23edMwXPq%9B2XPFn+=1OCsvZK`WXxwr(u#GF8K>UoaLKjw_a3CPA*! zPwHs@$jwQ*{hb`62|;Qm;}P1jz-SB(7J=efu>_^EHE7jsS)5XJ??S;YL-y=y5=>`H z`|;L!d G@^3=@6s!D)C`lzfsXth5rgeWhK)A^ z-Ml!0#bVD=s3&A8p;v^tr`pVhS!vK{-hJaXf?#m!_H+Kp_V_7IjFi)RsZ}7nSYXuP zKAA-*v%H~roEiK3F%25KyXBjtF%P|1*RBKx@*2G=LKt(?Z+Q?}(PGLFw4?Qk90dZ+ z5gh|Y1H}jodl#o! l>Lq!4&+ 5?6F>%Bhlme6qt+)71dxW%As{kpV**J4=|~*{GNU#p zPy~>P(jlNSYHI>b09v#T0i99X6VHLi(l6HWaColmvx#(@ztTR)z%t4gbtP=uGu!1E z$4b$25q4!}w+zop)prqNY`zrCkFe#>Gm+VbAG)5 E))#@$f)6h@onHxvf#bp!~KD13%iBO5Hjsi}!%uExL?dWMP-=fos8 z!RMCw|8FQHO9#cP{tc)wM#5I|4lZ61k_r3_<9VVI7du-qO<=+(G2WM#pU~?Qau7=x zN`B)+U~C4IY%Rv7!2Bj-$7Pfe0 WjO2ox7A+!~Of>a~3sxA}0VzzyJOW)nzzK`h zur@kTp Mz56O$R?Cs{BP7C_y6z|=UD-rAjxe;Ghlc|qfe znVOC&$C5({5>+bZ{KSqR%KooSt{`%-n8*Vf3YwC?)=?9~h*AuK2-Ml=W;!{iyrJ6Q z5({mRsiwpICsZUF3TA{uDh@Qa$YvfmVp~&fmYQu86(ep}Q}UCyBu&*40kKl~SMp{q zjQ@wn+>;h#=K&olt)O7`0@Va&X3$h Ir{z^G684+)AeA$ zIWs2?Fi+b2h;V-o(-b#z+uCg1j5KO|e>ew{q$$zf35Zjexg#1oaLe}?7Xfsr_@lOl z;XY^_wUQY$z?*N$E#F@7{S)n81{7&-%FQ}HAXdF;V}s}i#vNpKYklH?bO{9BCu`E% zB}Tx9K$wCIRcQ=Ub@n-V4m2l4H6-`RBWNRS)`|n?fbFb=i`L2-{-ttLbjt;mj!%hh z_*&@yKT##$4F=er%- A3ZWg2)!7bZ8!yNoQ49eQK -$zgxSC zPtv3`q$9|?hypLsegC-%Mb0jlw+1!7#$-@fgOWms8#(Cg`lOyN^6oNX7w`kcURIzI zz|k2w@(q_htwVEwc8{+C1Kb ?I$=rHa}n0>3iCOlR;oBnt|g zT|; g-l#kw)}G&Er~xwj;3 zj!h_7DsZpbq+L~W>bBb3aRi(F*@V6qe--y~FbCnAqX8V<5rZklAye*gGEDuK?8Nti zDEPkdP!b+!c=n^l+&4d54C%V|u+^wu4Ke5Md?i*CAvVV-ISyBkNio-DU#C*B^*}4; z_8T-Ov8eEMpG-lW-RW;Y_no16UyDBrek0t_k#%yr5sR?YKjSg8> zh;E3QZQ0t^sfZ)C=$P(wEG7pV(W*~Rdgx6khVlfrD4u$XB|{0>)Ws`x{diM6ybEWE zrhM|1@Zg{@iBl41Fr*N1-%>i;yWku=I^D>LAd?clF~9^SI?+oxMVuN;H!syRGcb3W znE&5&83q2g8M4vnuQ}y61@Pwl4te?nt+CV2N~0xvF_a53ig{$O+PAOb!wqy}p5LK7 z)qp7j`cQxduI_GcWZ7zD*MasbB=&|ay{|1 _sbG9GdYX zeZVfn*>29>pqxoVx1V~Ta(k0aOLMc4^W*GK`n(K}^&cjE_G4|Mx6OS&4Bt+t)}{Is zN@sI z8yy?kbv1|L`1A|JbJSyCb;e&K;tg!~R8!)&TRDJRT -D``(^w9n99u?6gu9t~A&on;q$DqTg_^Cxadwg?aU2!Kk z@?UuRcxg<@(TsSAU0BtQuU`Lrz+rD}bw6nQ-7LA7yD~5^Ag*c+wYLHRYSXP3+Ly~v zNUQ@U<3iPB3yZyC1vItJywLowdvt8hzC>8}b5NleJo00s?^mHAaEr@yu%~Gt4~TfE zdoC}He`VWlUL45i{58^CidW*F()b5i-wJ&xvPc~FyAFr#O2)hd-}h8ft0kM8nuK`U zl1Z&O)$*7AP8FHZsX? fvq7*vobFFbdTEXeABCE}-Le6xoNEU$n1K z(?j->*p5!r0x)xe7pUv~V@A1!Z)9V+cxx#1?RD=%VP=UUpFNBr9^o6xcMMaQX?#i! zcV4wDTGGc~6jMUo8ruTz7n1BuzUQ_J%}nzk&4>I3#(xP*Tm!e#U0{Jc*L>djhvYba z%`0`fGmz!+3~#gOkC0?iW36%(*n?KaykJ{)EX@yjBXMKAN7sdVV^r=e)5;srt(2Og zn~AwW4uaJlhC^lMp6n9)MpEi1!UDwbSyhP6l~G!t#Ot`tS&CIR ;H@nC_(ja%sR1BSl!l%sZ;ZEq!42L Tagzd#dpXGcQA)f2S zK)-gLl{v@B8=kkc55>*^=*us3O^TcCmv1X+nuBAsr4uNlKUuaAWj05&$cYoE`(8$- zJIaTU8 +}{XZJ)ngvOBf)H(?iOy^h3PKzjcD%z<9apBm zP&K$_z{tsb$MRy!jc(k167AZr{jyPp#*dBY 4stiT13e_UimoCgG>(b1*IIC#$%=4Zvcf zc1Ko%^$P`u$PmMQBP62e_*#~?u~hxoz0?2zT4)urGp5}=NKFZm#P1RM#wFdU=aMGG z-6i(R_W0^QPa?$CM;y; z?7Xm1l$)>%4S@`YA(t#tpKvS?a#-X| #^8Y?ti($uvCkW)^81)7lw#? G&rAI{<#< z_;r8WC_ADT)(#(X4QO~(9VHmjP^LnneZ)e^CmYutJ2c9~*-2pfp)`m Ag=$a`X$s@%-b~8JX{<{;1^}z&l@MEP zQo(P$V4f^T( ImU$TiE#%;YbpJ-9@xs>^ zV9rhftdYy)d4{-PUaFC_`r{+wig>S%)DxPOY(zg*gW2X5L3JHaUi708QCM2dB@ EZ1nBipb5ns(2#s&ct?{LdkVCw`VD1 zlW1Fiu|%^DCl12OZf5dXKf(x%X3`||O)e=Hnm3*jN)v)OB3m~#ejyo6n~JsaZI>z> z<#%X@sVj|TvE1kjr)*-T^>Y9epAqcdKQ<<}i5VG+nhm|f>v@FJnmltOMqi%KHScsk zKs?UtaWqyuUxU~vfes{iyGYtAXoNDVmJ3ver8PIXHT#X)a!APV-ieSVDMfdjtaRvI z)6^G7hygn2iy7`v-3SXP#hXDn{-sc2b4IYJo~KGnbpIY_^s(NXC5%poVlaa?2*1}} zHgs`Q&u8aF>`S$VFO0q^Ad3k+Wy`nd6jwUpX6Uf9s6-pgZdI;2;^O>jeu0^Q7)U!h z@k>t=Py{j9?`B3PdREa g#qAK!xXYsF;1nlTbyDiFE z2 5{7MxZi()uhcd?j z@ O^eB^Y3wc>I 5zICH9_Lf6_fC-3MA{m+OZd0PXlX3Ps< z{k@eetIU#e{D=s|f_(NklzjdG67_ zIt$_eAMuPajBy$cE*%pD7?s!j u{#AqXoUfa_uJ&^9oaH#GO4jQnj=t=wOcM zadfyVFx03!WpeaOD88kTx=5sI10N(!@uzCz8<>WeSyUn<3kViM*zk~nMiOk^vp #05}~h=p+3V|SwAV- PCD#jsxH>ktf(;S5x1zQck8)0a-#| zWC~I9_@i6VB-(FoG_JIr!y`)+weXQtrqo8=L0F`%m(2iG&U+k*QLoR#DMHn+M`Q{? zw4=g~@Zo4oG>i-DwVljEP<6;UU@!==|J$`CGaoafgGHk;lxXfyY=-n$v{L_}M58+R zdNSRH+(2U`KfJDEfouFfjwj+T4A@;4ndFsV8+T8mAk2_4CpT?44rH_}8d1?RQ@tvh zfUIY8HN!#Qt1H6{&=MpmTU5(DjbNPVDCx?SOajK;6Ofb$iPx$yq!0kl=4%=Xs8|h_ zeV9lrF^Xc0Sm=Q-RF*#CIr6!57o+9}ux6pb_!e13=di=ahJK+LV{qcr|Lrw z0a4HpB^*c2Ieqx>b-5|esLOj)DA9PQwmRtKFRfX&$)M}dSI97iKxjrSiQV4{0C6U~ zreY{_(U2mHP)JNEEy&|=@5epZ0BViy#7o&7*}S47@uTW={7<#VVaPAG16e|ZuS-FV zEBzq53WA#veH8Us%|s<+6&-q0{~jUKG7?ZC98CFw`pvTr^Gw_z_t;Pfh8|K@PFOpd z>rmc|bfCNT@hI7@l%t>p$stV5kzw=C;otkO{)ngy!Eg7QZY8p95dw0GT;$(bz_3dK zlq&B+%Nl^5g9?p}_0_Mik#9Lf=@<3QtA@t=jlzt7qmsENvZk|7M#N5nB4M`wO{!f( zXhM#hNiyI)@*?>TQkaru@-+XE3gr@WXj~pTs24tyop^l!g;j&n0va|GzvY%(VrFj# zxMR4&9y;^Q@F1v4v^vj xc2 zEm!0d1WyAkCRd~4+>w|HW4x$%h1+^%kzmF~s25T#oanx0S#Gobs5VAL*K7Kylss;I zjE4M)DEvh@o>tPABB$+QB8Kds`)B|K&xT9VIixo`svky@ChEuG?o$f!``m8m(qwO? z#MI{03a0iNjb`kKPhJbA@(pVgKbCcvQrp^;?{Ru0Pfs#LQzd9{5~4Iw;#SbPH42Jl zRdBlUmnY=;nqkO3Rm#hm=6##ot@? 4_Y 5q>A{YjE^vH74dUr7ZnKCah4Ro)ay%T!=^`VkSYIjz1i?yfpxn)nFb p_wvT@H#H@!oWtm*n!#!rsvLARIKJ&QJIO-hLG{007IEidb&$m(b}+{iKS_{*|X z8!Wb$b<$9hNiR=dbs_jF*lh3+LKo3w%y>2L4)7$t0tzFZvXGJq>pgQIi=(c`URfT| zB!9ktk&+k@cJ`5?<71b2Yw}nP_u%c7F+xR(z$mKSsl~_lbwt!jP!PZE@pxnBgN^@> ziMaUUBFFjXK5 ;vTU_MtP(Bc+reK_DGrY@*|AZtIYW$W#)-`I*{-hOdk{tw~O)f@&gK^ zp`ZxX0?? IA<#*&hmN5KJZXD`bPG8HO`t%T3 ZnN;V?P v^kL=^e%Z#lZ`}k9g?JlM}cHvlMc4^2k^5!bDg=2Qm zx}B45jW*$a^NAD7=eb~7K+;jPwltyLPoi`5*v6X{#4 z5jOrbdsyUK>7&q1Y_w4P$ranko$*0i=T_!G>yqwj@H}fd;8@>uRA$o3l(hV;J=2vk zK}w`-FU1kM|6=CZ5;7CW-$rD7>CIfb|G5Wp`(VFcYq84%pssUjJ%qk1i#+WHZn@z! zDKG3XT>4&?+KF*T@v+@^Tz$YOEPih362n-$z~tH5;hlvmz_#g8&(d&KS4g2680^M) zm#vA4 )f{nRDw58iwYzObk z%)7V_V7Gaie$2X9cruF+#av4J?c=)9<~-UaD-`m27gxZwcX{DwN5$OU$!3%pr&vx_ zu({ZXDN`s!1ntFqMlVU`H2H~c?lc)IDa#Y$_WP{ud+C+B{>qp3X?D#S(tQAlKo|+2 z7AK}iogZhd=bme=uHl=%Jg|Aaccx#oykRFxua4& r^ zR}I#TtonKxj6`SkUby=o&;R}Te~kMiqNZy(-fVIUk%~r6d_D~Q8D}KtQHQQ(e_EfO zn;0~f3STWO8OBQg>Qcc_wVtZ)+j#uGKVx+l6CvTE$(U$zioOyP`Wh@HtOJlsI3243 zV9FFw=5+?T-B97f8OAbGgyLTcHO(1`^~Vse0|)?!BtRg2oG^^yRW$EkOZz7tW{$%E zGr}5vB0|wV`M_S5X#Z>Oz@-+tM*!6TM$D8*%jm^h{}pE9dUZ#uloibD2lYkYJc1}F zt%+v1Tq(AKF-`2V6e2!?bOi%xSE_&4Ov6a%;|*D3Wo0%w=FEzrz!42Ov*eh4d$iiu zEbZHu=5@=%`-hnj0FG;=wR}({1b{CsUXG&=o(m;7(f;gxSR3o6BL=GONvKOSmX`tW zaQ)|8v&o?^oO9PMqmLAWZLVFpkzaD zeLvI2joZV-f9Yz^{8G zXo=T}n(5;+JwikyfUy_!4Ia|SGA^k7Ctd%OP1(<_g3B@ zVm4X#QbVI%)9N3~2oNbNTI^-YKKf6o@Y2F^bheZB8?zH(67|`4<`Wcdn0+-|$2u?* z2q`2k8;G-5^}DLe`(*aXkM?0d6Q;BJP%9~%c;dO`mVL#RKT3wg*y1*$sbs=CJwkxR z3^Tahy31JHGWm`GW9M7Xw#a-V?Y}Icg%PgD6nf=GqVLZQe#`Q_CMzJOqnbJMl(1!U zsCzHROwQ&lo*7fOZ?>#Z?H$w!A72|9ss9F7>{;2b?ZJohvTOW34>uhUyGo6AVmfJ( z5clVCvW-RGyQBvFSVT;5d7uBKWHIX{|BGlS_kHHs*go>QTfh9}B|f65Tv{M>rN0ij zc%Li3KF0UuibsVrd~N?|*Jh%>x-0S~Es1mVi YlD=SantSl*#T3ja_%8s_Tv{?g=p2qtK$2mORwFUAGdFZ3<}~wORuJ)P`I$ zem}Yt5~`3wZRYMYg=hbP8p;v@5mfqsM34fiC&9>G*9R@Aw7|O7<6#nD@R8L>gcN^q z?gD7i+eS>9mL#Nb2Me~jNYP$|96qus!00n<5nOFobGwaiuhAbR6Cybmd;muzZ7{F} z6|Ewx3PKt#l7wiNX2H6RS+JUO&J;oT9*wNcppa(LfA$;NlhgE4CXJ -4^yVdr*Ec`^hET z=5n|6X)SqH3qr@!ng}TV5RmU3W&q2v0QU?zP6T-1a>TS4Hj0--bq#K7MfN815U`nc zf;ZiWn!^UfL`=X+1r^j =OBdR7#vc#A z>e~G<-p}h-6@cl^p+lqygh)G*FSkM|hRp9aUCyx*$X;@?UE&vq6o-D7uv7+&lQ~w_ zBXZ6-6`>bij#E1E%Pbg5- K?dk2Eh9y44VPG#^Vew3_UYl5^GFfm2O^T#s% ze!8T)ZF*A_;vkelr-}cIwo1}anc!^OXN;3F#*YxAF1m{UjF4TAWN--MIK;@QwHXn= ze>On6nsOaJ9vlO3BQ2w-$mI>rB^im3{SHuKnY=O!jFUwC^`$L^R3O@Z9(OqQDS^RG zu|Gly81fw^1jNtNOJ~XtKen)6k1Zbu9v;5bhWs8WaoD%}D>oRM12j&4dN{j!k3V{6 z{8EHaBC>~umZ53!AeN7jwsrfv&6nCMGU40VAkdPmZ{Pk(yjy;8Q`n=z3Eq2se5Dz$ zc+bAIGlp{9{`td5OS{9v{6ie``(Eg^m+7ciU`QtbYf) PCsTR8&V4kF!_UK> z_Nryy3@vSwqUVK|b0Ef)>-;%Q2MA;{wt!Y+l3~r{UqF~C2_fmV`Q6KGejEW59)$F; z-)kbU9SXk5Z*Ar?TTX`=;H@L>yNCeuKkSxfqylgn`>jyH?Ur#^v6}#1eL2S$vLJkB zp;tErxP6G?^iYVxq%C9lCF5o(eBAOKm#Hcj1;(3&X%|mIQEi~U?fB!fIZ#MDkIMBu z6hw^qu5?d>g$ENclEvjO`|nXw71?L;9k%yRJg=mlknLW6-w-Ro-Wn>lXDlbocS?=R zd^gOvij9m7MAPfVmu)_-3N!?~*yoqfcWn0PA9qsnDkCtC$+s~|99tHiI*se?>*qMv z^(F{iYeJ>AFHB6=+GVh#H+yAm&D=VSlpa})FWz-Aep({vUQKBn8; A3LChScO5%*DM9qBARD#y^g=tDf_1O5)vpCPj zM^q|tKKMC<&0*n(G=%lz4bIOuBPJEkj*U=oR$p;h=zXi@w&f}zz@oHP3TkAH4VU4x ztYv6~+}iZ$ps!?vNx^tcx#zFpJ18%GxFLKTq_?z;Fz--Qof0ec=(+owv=$4|TB-*W zYqKI)w9g&~gj-_-K6D10hKK^`$w7=+7Yz6Fj>%r!qBl&0qD@>?Wrzv;Kx~fG6{@ z0arVy#5}*5Yv4QpG z;uyZfA5E9olq=5?C3WxXJ ;xRhuH7Nq7UXBV}PC^xikK^uO|k&BPG;1n^XL8#c`{kQjbdC>pHC?0zQ z t`@VhC>6v}PWyBq@%oso0N#8W1KhSrkV>zq(3p7=Y=-^{IYM;=!*lBh9MtxX( zOzYog_iu|YwsV$>(}xE)wFlVRdj7e3&kEeVOOGYeRzi?mYUkb7^Uu}v?kP9Y%9iXo zcy=SFrMTxs(7ad{62lqm5{=XV&)Nyy30iNzxCk^2yUcuVfJGEpbr6QK1d<`N@zzCx zmaw#bV#0kJOpW!qY-3@CU74ADj5b4j7`r%VnY@eqv?U|^4IH0!h3Vf^Xm9Ug2D*dQ zoiS59q7-)Aa@nEW*6j({XqN#^CMt-m+%ZPkt^+6gX^#BO0IRJa*Zo}$q6A5}T;e|< zLLdnQ_w>dUt!(kE1YQ&}{2^4ZEqmW3Mgz3gD>Vt*tNFPoBUv?sC~KmNSH!m315Y<2 zGS7O^iDN3+@H)or?cJSh0_X_UMxkNv6&c9FH#88lEdo-gnB0%2GN_q3QP)WOKqBp^ z!+7>^h(+KUfUVX<*jGlH$0Vfg`~FrH{bmsLu^Ah$yMR_!l2~61K}d^Vl{1D^-shA~ ztb(wFF{H2+dJ}Q=iLKGkbZ+_bbrJFb5hjFTrZHZrVE^(VB)9ZG1}v%^`xop!7w)oe zU#5(M>cms|TAfs{HyL2zX!tM{ng3js9=x!O=jeLwm0s3yt (Bu-PaJo8u{}U5VEFqhX4_70>0;g1 z0a$HkDqK*oK4f~cU~|+RCK+@1Vo5U#6uIIg7U|k*ggA?j&Gdoko3nV)ouxo1g%Rnk z83UkL2~5 rnVvYCoRNW1Fx%UwU+?2=>48viPNRJDOFgigw`63hbD2F)1~<(@%9fz- z0sH9Z4u_p+&UjXgzJ*7 zBwr}^D zDvHS%Mdvl=Q+rc-PuYQTz>%C^+TI-moqzFc&=|3(&_#`(5R1^`z}R+i&%v)f2f)N_ zK*WVo1KxGG>RXz^8tqJ1nmFuX(7$no#P)nAOz-mi-|?2A5VjW2VRhE0`yy)DbSvwL z!QmHvAXn9M;1sue><>tHUBdc8>5R_qm~Orx4Ccz7`7ZhdH?ZWX|1HZIV7(aTDwFah z?OVF$Y!PWI@JkN}FVudz1Ma0g&>_lEDSX*-q;*TvT{dU-S&97RO337~U`i3P+Uh4i zvNMySCpj5R(JGPmkM1I{$^bFlFi-H|pk A*WOkODg%{2>FITqIRj6Q&`uMXcy+guZy0WU^hEft<-Z7gT1Tqt(?L$ov5D_*8&Y zGX3Gfljv8=#Yis+5e8BBEw%dJF5386{rL;$TzlP~fz0&*#7#ZD?`*jlmg?hH&u*gU znF$w!9p)g>0g06r27#F(+ZL%D9Z=r)VoU~M`#8^P%EYd8lyE*2LLhI-+lLn@2hZ(v zk>|?d+AOB*rm?g?@`X|_TzfzbJQu3)J(8h|m25|BuP|F{ot0$Sd{<)4rDod|{aHnF zhx-8L);wz!@dNH>1~_iw?tG$dC(Jp07qMXBm68gT4D)=cj-J5ol2F;~Lf=wpjG0+2 z5!20?HC_29uuEBafosNXPy{FEaK{ZP=o_|uH#lv&2N}I712M?imgR`;CwI@7{u?XE zx-S*uY{{6T>o3;<>?nROnG!ImAjf#bTv)lq*H;3b=rI#82I{Ho_`lI8zj@RiQ68dn zX(-sA4-x-X?B(;_dDp++7lJJEX_mRZ%gyX|m>nWX3it&7Px}O7RYCUv-t)960!vQ8 zpo3^GHn^;Kw08di;P5Ugavx4JqVm8fDIxEMS+e|Cdb1{`0yHZYCVj;4XZ5Lx`(iR? zoas5;xDsS$LfI_?dL)MHw|)UH_%uYIeigs&gxtika@0rt7 -eWb?x>=cl{A&pse8Yl{q3vVlWZ0y|XnS{s4b2sPw)ib~)d8LDU5;AUwx zh&3Y^^dlP~&kY>xV z3rL!kfaJ^QkPpiPfDxYk>QckC&LXo7Ih}O@*8Xg2M4>|1%qV-iiBTrD$MdbRt7;ao za|!#Kb|VC@H2AFEv(aSHG4g=JXt-KxCx(VXYb!Zy8(SyNXY3$S#sPXdvmRe%A?Umh zf$|7L7_cUL-b!f&9!z7*FCjl4bvh(NFA#rYlob41R`kTOV;3VmYX$Wi0}(n@>1S8! zxTp5hzFs(^W~+Z}XA$G9&Qvem(Hk->b-&mMT1qRN4Ry{dQGZ`h2yE3#mTfWX+Ymri zGBvau`<>tuxUT>pc$3C*@{zHS0UO4y|D4B70=iEhz+_`J_I?M0EM$>i^-wNStOEa* zx{^5T&ZeDal OiUWeJUd#Pj~ty)gr8b@6wTQbx212nJqme|jImcIP%s~)GQbAo z@JI9EOMWQ0pPdjitYxNhjFg*B@GRA(H=KcL1^;geEJZ ij2Arb=O`7bBoUf zUNKNg8lz?l1_=F9^VFVm`+Hyv?!BtS+d{-VIEh^<(U?cai7Y7M!%nN$95Xrn$#0wd z)J3n`(ak(oMJt{B*0luLn8AE$m ^z~o@w<)M*_+UN+Sf# z65*$-md#t9zH~>9A7qK|Mv}u8ti7*&7b`z@g*JBMH1*UyP$5)kvd!uHBt$5PLpfu1 zIuGt4EA< 70sn-{cJXlZ?8JPUi8Y1Mu9W6Gd^A`(9U&=co1y%>WlR*Q8D?L5 za(4i_Fxf43Veqn*fZR3aJ{4G85RPZ+Or&54Ea{$Kvxy=UjtgOSlm`SY>BJLgW?- z*2c%_J`Mg0ZubZ65D*ITn^kiT@TZ(iT|t|O03X~m1|FM@Ot5cGoRSFio8m+m;W&x# zK3s4tWVwz>n&!2?!Q#<}zuyRYMjO{xdId Vz(WO!i*}L^guHqER -|sh3v07ppX;xL$?Uk%l@OircAJo- zN?uZGwuN9oIFYg1d(J#{WTTB}qHqZ$_ V>d63ohY27~JmndPL2l=82)B#8 z-e~KE?dOad_P_3B(NUh-O??tBd49Vhu)&ZWsSZL4VBC~}EnOtjqR(x3YSP#iQrk6Q z=t?kHMwrOX)V*`2uPWxS|I`$w4w~*YVaC&0NDdG4;>I~3et3^5K)0S8Ng v-o-qzi)7DdGJ^SxWr73AtkzNn(cty0hn(A$AZrHGKrp9 zm_znw#Xc?roQnvx2l6`#Ec5DzfNTSJXn)e{ V|Mi65ndp@O^%I^z_ZUm^l%=)$>tN+|M+dudu382IGj5*(b>HZ#X zgxA&|K-ID>_4&5*?$7@IAyzHqPoa( hfc3cD3&Ivs6!<#|nRIfSIXmt`igf2Y@>)Ld z wN3#l)@^$7QyV@Ja2XU!UEs1g{8Mm z#*TW7&;X+{;KZ+$F%MC;6%3d+* 5_x*GXx5Qn$`h~BL_#sD|ovTs5MqA;@H6b ztz0j=FfcoANCYNyhS@k38yd5^GC`GA#c807OHyEa6XbCyfXeweMl+_PHSf-t^u%-^ z&U^+Dt~DPtvs@u^ Q XU@1&q|so#30SXtm*A$BfJp&2)&i9}Jp^&=@Y z!dJNO22^dugvxy^jJ~$>+M=}$qa)EJTm?G|vOFrUotaOMQ}(2EAjy1&Li1II=LPI4 zQE0AkKo0N_Fbse*WJpAZ#%PatNI6C)PY(moinja|b|!H;3q)9@BHP^GdPMjNGEJ;o zU^=dxqYj2R%VC2|-4O9(RV^z@Ia=)pup3lCene!U@Qm#%#@ySA){cG&I|$9-&Q`H@ zH_t3KJ=mmx++}4FQb{qW0VmjCD}{n~Q39PgAc;a2zP5$YLDt9brsrkZ#C&}IA@M)B z;#~uP9JGp}vep5HZYs@Ox+}9h^O<9DOChgJ0c;z9T|>|crc`$g#)Y jSeaG^LsYQCD?HRcOd`&?J@>$q1i?_Mdke81 zJXCnrs4XS%Qy_46v*T=M&m%+9U9WSksXht~YV#)lN#z@o%4e{+uy6RkAs4d^IZ>%u zMyxSY)7l0^bW$d>XRDcd_UZDo5tU-$`s$?h!Ub#51*-NVtA_qMlEXA`f0I7d{=q~U zFiq`> *-yNeCFitgWhZ*u{WbeCHW+@4LIE zWOEZI9D&w3gWwC?ly=cm(d zcYC`2aX($_FX!Dcq*i4}bdVF31A*xbQ(_qF#y#h%G;Tea^pEp&$3aH0dW!kX#w0Nv z;e=P|Dq8a8yk7fm%*W_SjD0(N NrM5oy> ?JFOvJX)PoryuBXRly4gwBLtaUO~)7H`8{2k5yBR*UPzl+GeB)~sRhkQr_9 zto7TYIRN3|bT(W g(|Lu f|)pjJe# z$UHTf>a=2-j&T9*#%h0bRg>@?39*>fLvt+nE63a(z_S>wl#cuA?$dsT%2_*XQWMh` zc6Our^PZlU)rxITN(+hdSvo5bQ022joEk?Y?*MRzs4V>RTb&~7*HW+oDQFm8$Q61( zn6cD(8HF6CUZ(*w1( +CGWYq5?3L9c|&@1{im0EM{N*+lz?+#N kUeq1?WziR+Xly04&OGhGeK4NIJ$>1=F0Zs$lYohx&lke`+jJ zS2*T5f%dMjBoWEc&IQ~5p4uc}0=LY#3iLG9cuNJIY%2OcW}*rwt0EGtgUdXLZ52BO zl#S uRYN~p>);7K7+%1wgLSEV2M{fQ2vD!xsxLx^tE&Xs77c-H=R zh^taHtH!h}f8Pm6LM})Y$}$*$6f}G_fKB^&$FdWNc4FZ(%(R?*FR3XvPo(GbxO)Vg zvh7_PIZd2TE;Sz1L(Yt9(YQt-F{naQx7LE}>WLo7T#fUA2v<%|A(4oTz$tOQc~5M} z#wQozGFWer!7yhVa71=eAmJ=%m?NWBSv?Jyvw_6C!f4|+(~ny?V9ykl383KaHZBIY zkpQO# };gv$Gsb3Ek0R_+)YF{tTu}zm) ziEmURj9Yc({&}MZJgBNf8XDEfX(S!j-0a*i;UtR?{4yvY*}79=I=`!{oR6j#nNBP5 z%kZdLI3!}9XAjmm#?yOE9v=q=B;!NNQ?a7|Q7kVro5sAsEe;uE3YU5qLrE(POEVQh zWeCRB42rj6T$Ehns1FlpHCht2wU*UNd9=$%A1sYr E6(CIc4bVE@ZZ9-n?Z9-h}&5=y2sD&m@(6Jd-8#K %;2ps3_F2XN`<8!u8=HZO<6ROV6 zb2RjRYFgBio^o@u2_5EwHJMJ=QJKj=vV5|ZVA~`|nk*uT$0{IfVf*PcuDhwiv_AJs zcFaX=uD@zUf?2!RS>N9+L2?;DwBP}Yj_?-uR@PP{dJN42pJ;3e%!K!>3$@x_fQsm$ z$;u-T%sgfo7;{1 a92~rgg9NWWLTPlO+G;n%lqrrj6@E% zcpS_d_x51owkkt1-OE3`S9wLuGc*d$(>==x$40<5L3=G!pHB`>a7l^$1>< z?emM1*a66R^9;wzS3@IlDGXt|8fx5RQ|Lk~qb6cm;_OK>AXq>y;8Or9|Fey@KDIA; zfb6&=I2eut-;DCKoC9|GUu?WZ-70CXsTvr# u5XLp96%jDyIeLf z;Z^ge2B)BDl9O^7O=uB|3gvNQ#G(e4h=tgg4e4PpH~7_rs0NAzHd2FE;|I#aR+>$3YM=%Nw&hMu=Q4p%!$%XMmG#2dN6j9yq9tG0@|3(9h%-ZQ zriT_-I$(=ME;2&s^B}ZYh}&Trf-BGL{(WtVc|&K<2J6lgwizB1r9^63L{9*Mm{szc zlBe|%kB?QAWg1K^(1`7CEB!GM31KTQD;;NwFX@=|gP~|;BG4Ho1Tp|tZbpDxo2U)2 z5Q!4N7zj3Z%X<7vlHfDM2`1QK;*cL?J?34Amf!!6wNQ5Hw#6UlBOPdfthR?X-4UwA zD?OoMgpj3#3_DlTscyIkA-M)) 1A14$NERCwmzPU~y-ZO-h84ht=O7})%!}78Sh*S%*QmyRg|@ylGOkzS laKtR@236h(lfw$nQBM#?F8#ahLLFVC61>n_9zu5yY454Rla` zbd0=Yj30u|pe%PrpG+&WYQ9D!2||Xj$v89?Fhb36R2BkZknTgC!6W%1s%}KM-lQ6P zWVkP5{mmCgK>+T5zJt*w2>2#~8R2Fg&>+;(TD>J=EEj n?n1Fv&^9&>!7j`s2P2bi>h=6bkNl4~!Mnh&OMkUKnf#>=;twhGj5`@O>~S zOot}Dau&%~+en$jLjgNLK$kUi{`EsF8-5j55)}dv?}W qPYe) z(dhnCjezQ EUPecwjq07)yH5mWUU tfzZ)&!w=~ZSo_x ztXy<+a@s|+`%~3-g*ktK_QZ{3fIp=g*zTP#Z+M*Sj$L@PFZn;mcX`U0o? ziNh-yF?#80N^kzkug-SvD~krRQ%4n Gg1-nO26miBMtTyt7!sqmORS?4kU<`29Mlx7U`P3gYH+6y z{rQGHrT6PwIBzA5W{iAt3>*aVX}lVB^6?HK#p71V+hlEO+ZB4x8)zowrg|`NVIQzP z#k6S@vZZ&G^ ?IB@ zlcGM#UZfC~xMi()X*a`b^?!ppnWnw6LPBMLXDW>rEVYo{fv7>=u;LrO?#1gHj; Z_(Cnb^#~t{T)`W@9$M55x345kJ?7~Kuyru+Yz7-+>dn(dPPvDK5X-BW9<5gb zx*L9&!FyS`i)_OmY|nN5di0=v6i4po+D7@reEDk3^RjLzFHd=?+4l;tp<>3RY|T+o zaK3N!6to}Py9 +ib$x{Ks{3Hd@illA>T5gF!{&LmC zlW66H_a{UpbdwhjQ^;$25_Hwflh68J>?m7>Aqaz&Fy;L@so(OR-&dZD`b5u%VIji2 zWrXc$Szlg2Pm-y&jkYw+O%Y{b)5yOyhMIsPXkkK $S&8ni zY*4h|SRm;{%~HnhJpe`+K12QlgV DTB2|mFX zpmi>;_TwoGUszr0xiV)zwvK@*DqkNt(|&~3G0+2rd&yLx77DaQpoz5L@ed#f5a9xV zR)#>|d*9@7;(3@Us}nV@Z73)dGh!4 oY8FZ@CVq?)!gg#x9sllm9<|+{T-5t#3A^ z|JC|>ehr+nRkYC%bOK+0=NUiVb8k8i`_)$A&ARzrPVC24k3a`E@WF#Y8|p-&GyqKo zdm)X$i8(}7G#wiS6M;8Tn1r81tU05TO;F=%gKB3?jZ4M6=VcGg(U^!=6 ;!_gque!?DmmqB!?yRGPW#b2)!g+Pcw5z8(3<3-}Qs+sb*~`ddWpD2 0x_3eX~Z z8@yA4MEO)FOUcWhA8(e`D_Opu#3n7?6d9X-x0zntcjl^n--8NvSy4|-=HCEkizv=u zBHxRp8#Ql6*TSl-W~k(O^3P$CtYVt$G%zpJFt-6gO1@0SdmS1FxZ{Lr1}U{_R;s;+ zY2G&9O!3GaFSdawClc3mL|kT-^BH~t=#J6AT?gzp?0c fH{0C;77f ?mI5zF2!{)rV5~PkHJ`MvN7G?w^MGSlGYZgo6zS7q*=#L_$ zrtfl-J(;R1=2}{p6phCB4_c+X9CPaxP0mx*-%&$*!{*28!(C^JD6dV-kT*$Iv@TQX zX2fdr$nDdb;XF=0H}s=UhMSJ+j`BLmr5v9Q2l^LN=eY#kn5iEDGV#50L-8)hBi7Wm z6Vz{(SzeH7t7U25-!^zM+g%4S{TGI>wwVR-|CvBJTCJ-?P)k7phe2sd+Y{%pr}63O zu-mNu+EC`nJ1`Z|_L-1|k5>63OUC5)6sfRn`)(5fflp10o`E0vOkg6ubQkJxIN*iP zu9K|Re?`_^scn>NW|~}=iGKyp 5|$M1ED9V#8;3jAQQn|L4IwO1m*_Y-sQP1 z(qy0TG*gtJHi2KIXOWLW-QD^cB>1-~TO2{ekt#IJTvyXEq99^JaZSDx@l~h~YJM|Y z)}@JpGCpm}mOZWCsr`VV&Imb9JXGSC4mo@)!4{iWpjIb=I=%um22qsv=iq0RWOMK* zZ+T^QiZDwkJhT&*gatc03vIR*w>1k%9su@7W}v|Aok;|az`*a Ku^{Q=1 z&3Nt}jr&t*5=UY1_xsw%>v5y%kOoSFpCKJG(@`^`i}8VAk+%&Mw%TcwKdm@cf`(vJ z8e<_tqklb_@t;g867sk#CXGrW;;<<2*q3?eo4Ux8IPe|Y&=pzW$-$(1I#Pkk8Sb32 z%{;vvF(ajBR1S;C+BO%f8lJIu@aOay5KHi3z(@}k_4C7aSyy=$N4^I{!aRcjcf5jf zGZ5zDD08dHq9>6Kct6R{Q8)!^_r^nCe%>z2P*Hl^rJ7|Znh|goy%d^S0Nkbq@e=4* zi4HV6))5O~1~Ct@pP5NFsTQ?$4mYQ&B+@9*3oeEsT9$B_fu2HuvW_x%tQQ59?Pv#y za0qwv5|jW}$<#^FPM}N@uoOS4M>)SNosX85*Ny>v?URJ606c0f2?Z!wHAg$$%XO GvN1($Xp3}{g4#JvTjJ8UIo*IXX`} l(m>ih+0~8 z)B^pT0l1m#oXq7CGSH^L$D7vwGPCl#U^=S;M+4)?_c3={2g1>h snV-v@ zBh*jTr@pw1*)qyY(Z-?uO?qH4j?fSN+{c{he1%hK-Ql@bNbAe>YNZ@ZY5E^#3Y; zxY@Yi8|V+wy|wyI$IX7zj5^2sj-U)0Ghbbz_x>6p?}_oPfv;uC!rTfW00$!e&-3_x zjpCZqZRM#?lcNvX(MlZlN27P~2Dm^>86h_qBYAw{qgep-xL ?li*K^KCn}BvN!vjhbQIFzF}gSV^}uD?%Sln)L~|+Pdr}ShD=fgM zh5X(!E3?D_drEcH+Kkwb0HcH*C@awhizT1iT~ia;oL70_m1Q!I6n6nyF=NPX(gl$- z8 77yE`j5h@>jE2BzJ1 zsW4 NI0#Sg1s{wJbx_Ww!S>@KZd#Ro3wQDg{)yr{T zM62(X{Dam*7-gmAXdj9kik&l#xP(YBC3*&guS0r@QWoF?eunPOt?W9)2o^VxTcM(f zyMhO%$ypl2-X%Oza WkNBQ2_M_~f4af> z m!?tc^kxp Bs~Tl7}NASX#{7ASw9+| z)u#G3n%gSOoB@`|U}2yqjtEhX7)|WK0*rtwXoN+n;59Kjq7~m8l^}VBe$1pvUT%4j zk8eRI(+DUEsOi#--j7x!5PrR&mLPJ`W53B08S @hq4sz9UKQ8D3c(M_H(3ruW4 uF2r|wk(tLg(D@{ZcS!i;q2e W!NCq qnSLN+HG*SB zE7wqxD6_;>poJL6K?J7Pd!Z=;D|`l?X<;tR^||$;=`OU>G9I>MG1O>Eu{mq%U}#{f z_HPUjgkS*?BEPj& P`to}E0moFpF1(Y2t>FrN0 1hiG39KJ(npP+kfMD0iSm8tih_jvW(G4Bb>yzDU;MY zL?6zeIo4{V8Eh^ghC?sWh;dYhSg#?bsS$&aR+_hs(qk@+O=K!aUo?XTmXTD%&W=a} zVjxHCl;$ yQJ=)g VEY59vUsV6-Ma<8Ug}po(AA$Og`{o(2u&P;F{X_(hFuOx8)&O8A^s8Ln-3$>Cb& zU8z;OAds8eDnrWTNHlzlaN4>pe7mPkLz)|TH}ucfNF%^+&7cwUNN =0GDyY?K5Vqm7UsodrClr@ES!(TETG1 z>WxY7!eC#x*LBfI>xUzy{|Z#GL-igW@x0XMF5j^Q@#xp#;Qi#(sJydC8O98r=~zeE z7XN!gGzjn&pYtOQ10-gt(~Z2}eUgNLY!&J|X1)S;!@u?SLIEx(F~G?SyiEly#GE)U z!j=Uuj+&m*QtWw6%P?g~E3jl(D=}lm_ga)}Aw$TGAe-3*30yfZ33H*442`gn99NMc z1#K;~5~~Rr5+tt52uI09Ca9zcnc^&!y<1``wN>-``>*_7{>q>BJf7Zu0&ZsyU)PDe zh}@OnxcYDP@sTuLe$c%915u2eclP^_R;R1)zFHZ1-~V5!_3G#6JBU_Ye|lfs7cC}U z0XCTIX#m=Tofz`R|2xR@YvLfMA4v^4@9!JW1?)iU^&XAz^_m~**p(mdSCqY9Ww)Uf zmC2D$rAVd>g$r>rr^yl}Z2p_2QmRt5P7M}nQ;;sv=}S |;)vHWis!E6kwHDE|KvZ9}NHGkV%)`pQ zN)5X9`a1M#LP(|DbGDo)Q?pJ@^xE{wbq3mXsI@s&t5%JL5WDAMhyepL7lo+OmXuwg zj>aM(%1xWKskdtO60`dxy#hWqu#QE3R^b 1KGsQ=V?blSEmrG{>ck`L79c|LXUBF&7rXk`-$ %KPCTuZG?FlC+vl1XJL+Ne+z zwPYu9geXS7_X81%k5qxNXs?5e0ZSQ(PTyGU-CcFpQ!mf{fnD|IpKcEOzetyekbuPw zqt$SHN^&wLQdMgMkx|hxv2pPUiAl*RscGpMnOWI6xq0~og+;|BrDf$6l~vU>VzqVk z4UJ9BEv;?s9i3g>J-vPX1A{}uBco&E6O&WZGqWg$6C_15EXNC?BrB>$X5UXm-7qcN zaXmi>qc};kyeO->X}f+Hr}O1{yFZ?<_lH%#fQ*5TiD1i5c=_+|@Bc!TNeC-{`N&{! za`^?x|H1OaGcSDSbh$l!y4U9q1dUKQ5{<=8E0Ij4Gud3eP%M=zcC}V-G+XUXw>PSP zfB+x_BPfOwBt =Lca#FJmyH4KTH;o7Q rY3mz0*3S5#J2*VNY4 zH#BZiA$|<$5N% XW%jz{Vt@22(RBc1aAoBn&OQX*F+ z2;<=T=g(W*L*b+o?f!Fr+?PS*Y>>KY s%1U9CHP+Qg7>)c1BQjP7nR4vXdCnm+(ITLa@p3l>`KbM|0N~*nBp!qA zbPyR j;2_Jl&;#<4 zoB+jeszg$VA=8nmPm0GyA_AL!!BejWg1S>$g>Ks1ehXe=D1l>sgy7)Qq>8%@ktETy zPiVs;*ksGbK APcEkttvtgHz|oeD^P&R1;jT75z$D(W#%Q4 sdnvS@ zVERpPr)%06oxx;na(C()>@UNJQZdTGi%nwmZRF7Zw^ q42nGq=c)Zc!2%^c30TST9 82OFnq(17NrjOyjafxDRt&K_j|^qJfOCel zp~0z!*li64_8Km6x@s+XrWTGeW-AN`i(Wn@OtQfTx{!&*&hstV21oSdE0|eFyV?h+ z!lSD4%^IE) ^^T<5?hM!M4rak!dl}=p)S!<=BLyCupxK-AlAD1BU+O@~%9}7#_ zSpo*y*Y_5MWdy9pzOyUbm)296VgGA&O8n-IBimT}SzfWRVr@k_-l(IPY00(aQ|DN9 z?G)V$tN4X;#Cz>HH}A#h9ZCOx!hORY`LBQFEGLBS+RXoVgG!=%Yde*h2E3lh#lv~^ PMMw9F)vu#F2><{9Z{Nxq literal 0 HcmV?d00001 diff --git a/app/layout.tsx b/app/layout.tsx index 6e68694..aad92df 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -8,7 +8,7 @@ import { type ReactNode } from 'react'; const sans = localFont({ variable: '--font-sans', - src: './fonts/Karrik-Regular.woff2', + src: './fonts/Karrik.woff2', weight: 'variable' }); diff --git a/lib/hooks/use-puzzles.ts b/lib/hooks/use-puzzles.ts index 5179084..64d2759 100644 --- a/lib/hooks/use-puzzles.ts +++ b/lib/hooks/use-puzzles.ts @@ -9,6 +9,6 @@ export function usePuzzles() { return useSWR('puzzles', () => getPuzzles()); } -export function usePuzzle(id: string) { +export function usePuzzle(id: number) { return useSWR(`puzzles/${id}`, () => getPuzzle(id)); } diff --git a/lib/puzzles.ts b/lib/puzzles.ts index b0cd355..82058d2 100644 --- a/lib/puzzles.ts +++ b/lib/puzzles.ts @@ -1,7 +1,7 @@ export const getChapters = async (): Promise => { const req = await fetch(`http://170.75.166.204/chapters`); - const chapters = await req.json(); + let chapters = await req.json(); if (!req.ok) { throw new Error('Failed to fetch puzzles'); @@ -11,23 +11,31 @@ export const getChapters = async (): Promise => { return []; } + chapters = chapters.filter((chapter: Chapter) => chapter.id !== 0); + + console.log(chapters); + return chapters as Chapter[]; }; -export const getPuzzlesByChapter = async (chapitre: string): Promise => { +export const getPuzzlesByChapter = async (chapitre: number): Promise => { const req = await fetch(`http://170.75.166.204/chapter/${chapitre}`); - const { puzzles } = await req.json(); + const { puzzles, name, id } = await req.json(); if (!req.ok) { throw new Error('Failed to fetch puzzles'); } if (!puzzles) { - return []; + return null; } - return puzzles as Puzzle[]; + return { + name, + id, + puzzles + }; }; export const getPuzzles = async (): Promise<{ chapters: Chapter[]; puzzles: Puzzle[] }> => { @@ -36,7 +44,7 @@ export const getPuzzles = async (): Promise<{ chapters: Chapter[]; puzzles: Puzz for (const chapter of chapters) { const puzzlesByChapter = await getPuzzlesByChapter(chapter.id); - puzzles = [...puzzles, ...puzzlesByChapter]; + puzzles = [...puzzles, ...puzzlesByChapter!.puzzles]; } return { @@ -45,7 +53,7 @@ export const getPuzzles = async (): Promise<{ chapters: Chapter[]; puzzles: Puzz }; }; -export const getPuzzle = async (id: string): Promise => { +export const getPuzzle = async (id: number): Promise => { const req = await fetch(`http://170.75.166.204/puzzle/${id}`); const puzzle = await req.json(); @@ -62,13 +70,13 @@ export const getPuzzle = async (id: string): Promise => { }; export type Puzzle = { - chapter: string; name: string; - id: string; + id: number; content: string; }; export type Chapter = { name: string; - id: string; + id: number; + puzzles: Puzzle[]; }; diff --git a/package.json b/package.json index 9858462..6a05b44 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "react": "18.2.0", "react-dom": "18.2.0", "react-hook-form": "^7.43.1", + "react-markdown": "^8.0.5", "remixicon": "^2.5.0", "swr": "^2.0.3", "tailwind-merge": "^1.9.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 11eab58..4bcc070 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,6 +21,7 @@ specifiers: react: 18.2.0 react-dom: 18.2.0 react-hook-form: ^7.43.1 + react-markdown: ^8.0.5 remixicon: ^2.5.0 swr: ^2.0.3 tailwind-merge: ^1.9.0 @@ -35,6 +36,7 @@ dependencies: react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-hook-form: 7.43.1_react@18.2.0 + react-markdown: 8.0.5_3stiutgnnbnfnf3uowm5cip22i remixicon: 2.5.0 swr: 2.0.3_react@18.2.0 tailwind-merge: 1.9.0 @@ -287,6 +289,18 @@ packages: tailwindcss: 3.2.4_postcss@8.4.21 dev: true + /@types/debug/4.1.7: + resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} + dependencies: + '@types/ms': 0.7.31 + dev: false + + /@types/hast/2.3.4: + resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==} + dependencies: + '@types/unist': 2.0.6 + dev: false + /@types/json-schema/7.0.11: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: true @@ -295,13 +309,22 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true + /@types/mdast/3.0.10: + resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} + dependencies: + '@types/unist': 2.0.6 + dev: false + + /@types/ms/0.7.31: + resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + dev: false + /@types/node/18.11.18: resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} dev: true /@types/prop-types/15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - dev: true /@types/react-dom/18.0.10: resolution: {integrity: sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==} @@ -315,16 +338,18 @@ packages: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 csstype: 3.1.1 - dev: true /@types/scheduler/0.16.2: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} - dev: true /@types/semver/7.3.13: resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} dev: true + /@types/unist/2.0.6: + resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} + dev: false + /@typescript-eslint/eslint-plugin/5.50.0_go4drrxstycfikanvu45pi4vgq: resolution: {integrity: sha512-vwksQWSFZiUhgq3Kv7o1Jcj0DUNylwnIlGvKvLLYsq8pAWha6/WCnXUeaSoNNha/K7QSf2+jvmkxggC1u3pIwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -613,6 +638,10 @@ packages: deep-equal: 2.2.0 dev: true + /bail/2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + dev: false + /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true @@ -675,6 +704,10 @@ packages: supports-color: 7.2.0 dev: true + /character-entities/2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + dev: false + /chokidar/3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -710,6 +743,10 @@ packages: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true + /comma-separated-tokens/2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + dev: false + /concat-map/0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true @@ -731,7 +768,6 @@ packages: /csstype/3.1.1: resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} - dev: true /damerau-levenshtein/1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} @@ -758,7 +794,12 @@ packages: optional: true dependencies: ms: 2.1.2 - dev: true + + /decode-named-character-reference/1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + dependencies: + character-entities: 2.0.2 + dev: false /deep-equal/2.2.0: resolution: {integrity: sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==} @@ -803,6 +844,11 @@ packages: resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} dev: true + /dequal/2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: false + /detective/5.2.1: resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} engines: {node: '>=0.8.0'} @@ -817,6 +863,11 @@ packages: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dev: true + /diff/5.1.0: + resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} + engines: {node: '>=0.3.1'} + dev: false + /dir-glob/3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -1269,6 +1320,10 @@ packages: engines: {node: '>=0.10.0'} dev: true + /extend/3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: false + /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true @@ -1530,6 +1585,10 @@ packages: function-bind: 1.1.1 dev: true + /hast-util-whitespace/2.0.1: + resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} + dev: false + /ignore/5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} @@ -1559,6 +1618,10 @@ packages: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: true + /inline-style-parser/0.1.1: + resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + dev: false + /internal-slot/1.0.4: resolution: {integrity: sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==} engines: {node: '>= 0.4'} @@ -1605,6 +1668,11 @@ packages: has-tostringtag: 1.0.0 dev: true + /is-buffer/2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + dev: false + /is-callable/1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -1667,6 +1735,11 @@ packages: engines: {node: '>=8'} dev: true + /is-plain-obj/4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + dev: false + /is-regex/1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} @@ -1779,6 +1852,11 @@ packages: object.assign: 4.1.4 dev: true + /kleur/4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + dev: false + /language-subtag-registry/0.3.22: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} dev: true @@ -1826,11 +1904,233 @@ packages: yallist: 4.0.0 dev: true + /mdast-util-definitions/5.1.2: + resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} + dependencies: + '@types/mdast': 3.0.10 + '@types/unist': 2.0.6 + unist-util-visit: 4.1.2 + dev: false + + /mdast-util-from-markdown/1.3.0: + resolution: {integrity: sha512-HN3W1gRIuN/ZW295c7zi7g9lVBllMgZE40RxCX37wrTPWXCWtpvOZdfnuK+1WNpvZje6XuJeI3Wnb4TJEUem+g==} + dependencies: + '@types/mdast': 3.0.10 + '@types/unist': 2.0.6 + decode-named-character-reference: 1.0.2 + mdast-util-to-string: 3.1.1 + micromark: 3.1.0 + micromark-util-decode-numeric-character-reference: 1.0.0 + micromark-util-decode-string: 1.0.2 + micromark-util-normalize-identifier: 1.0.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + unist-util-stringify-position: 3.0.3 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-to-hast/12.3.0: + resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==} + dependencies: + '@types/hast': 2.3.4 + '@types/mdast': 3.0.10 + mdast-util-definitions: 5.1.2 + micromark-util-sanitize-uri: 1.1.0 + trim-lines: 3.0.1 + unist-util-generated: 2.0.1 + unist-util-position: 4.0.4 + unist-util-visit: 4.1.2 + dev: false + + /mdast-util-to-string/3.1.1: + resolution: {integrity: sha512-tGvhT94e+cVnQt8JWE9/b3cUQZWS732TJxXHktvP+BYo62PpYD53Ls/6cC60rW21dW+txxiM4zMdc6abASvZKA==} + dependencies: + '@types/mdast': 3.0.10 + dev: false + /merge2/1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} dev: true + /micromark-core-commonmark/1.0.6: + resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==} + dependencies: + decode-named-character-reference: 1.0.2 + micromark-factory-destination: 1.0.0 + micromark-factory-label: 1.0.2 + micromark-factory-space: 1.0.0 + micromark-factory-title: 1.0.2 + micromark-factory-whitespace: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-chunked: 1.0.0 + micromark-util-classify-character: 1.0.0 + micromark-util-html-tag-name: 1.1.0 + micromark-util-normalize-identifier: 1.0.0 + micromark-util-resolve-all: 1.0.0 + micromark-util-subtokenize: 1.0.2 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + dev: false + + /micromark-factory-destination/1.0.0: + resolution: {integrity: sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==} + dependencies: + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + dev: false + + /micromark-factory-label/1.0.2: + resolution: {integrity: sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==} + dependencies: + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + dev: false + + /micromark-factory-space/1.0.0: + resolution: {integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==} + dependencies: + micromark-util-character: 1.1.0 + micromark-util-types: 1.0.2 + dev: false + + /micromark-factory-title/1.0.2: + resolution: {integrity: sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==} + dependencies: + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + dev: false + + /micromark-factory-whitespace/1.0.0: + resolution: {integrity: sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==} + dependencies: + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + dev: false + + /micromark-util-character/1.1.0: + resolution: {integrity: sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==} + dependencies: + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + dev: false + + /micromark-util-chunked/1.0.0: + resolution: {integrity: sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==} + dependencies: + micromark-util-symbol: 1.0.1 + dev: false + + /micromark-util-classify-character/1.0.0: + resolution: {integrity: sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==} + dependencies: + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + dev: false + + /micromark-util-combine-extensions/1.0.0: + resolution: {integrity: sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==} + dependencies: + micromark-util-chunked: 1.0.0 + micromark-util-types: 1.0.2 + dev: false + + /micromark-util-decode-numeric-character-reference/1.0.0: + resolution: {integrity: sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==} + dependencies: + micromark-util-symbol: 1.0.1 + dev: false + + /micromark-util-decode-string/1.0.2: + resolution: {integrity: sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==} + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 1.1.0 + micromark-util-decode-numeric-character-reference: 1.0.0 + micromark-util-symbol: 1.0.1 + dev: false + + /micromark-util-encode/1.0.1: + resolution: {integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==} + dev: false + + /micromark-util-html-tag-name/1.1.0: + resolution: {integrity: sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==} + dev: false + + /micromark-util-normalize-identifier/1.0.0: + resolution: {integrity: sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==} + dependencies: + micromark-util-symbol: 1.0.1 + dev: false + + /micromark-util-resolve-all/1.0.0: + resolution: {integrity: sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==} + dependencies: + micromark-util-types: 1.0.2 + dev: false + + /micromark-util-sanitize-uri/1.1.0: + resolution: {integrity: sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==} + dependencies: + micromark-util-character: 1.1.0 + micromark-util-encode: 1.0.1 + micromark-util-symbol: 1.0.1 + dev: false + + /micromark-util-subtokenize/1.0.2: + resolution: {integrity: sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==} + dependencies: + micromark-util-chunked: 1.0.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + dev: false + + /micromark-util-symbol/1.0.1: + resolution: {integrity: sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==} + dev: false + + /micromark-util-types/1.0.2: + resolution: {integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==} + dev: false + + /micromark/3.1.0: + resolution: {integrity: sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==} + dependencies: + '@types/debug': 4.1.7 + debug: 4.3.4 + decode-named-character-reference: 1.0.2 + micromark-core-commonmark: 1.0.6 + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-chunked: 1.0.0 + micromark-util-combine-extensions: 1.0.0 + micromark-util-decode-numeric-character-reference: 1.0.0 + micromark-util-encode: 1.0.1 + micromark-util-normalize-identifier: 1.0.0 + micromark-util-resolve-all: 1.0.0 + micromark-util-sanitize-uri: 1.1.0 + micromark-util-subtokenize: 1.0.2 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + dev: false + /micromatch/4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -1854,9 +2154,13 @@ packages: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} dev: true + /mri/1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + dev: false + /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true /ms/2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -1936,7 +2240,6 @@ packages: /object-assign/4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - dev: true /object-hash/3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} @@ -2244,7 +2547,10 @@ packages: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 - dev: true + + /property-information/6.2.0: + resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==} + dev: false /punycode/2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} @@ -2281,7 +2587,37 @@ packages: /react-is/16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - dev: true + + /react-is/18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: false + + /react-markdown/8.0.5_3stiutgnnbnfnf3uowm5cip22i: + resolution: {integrity: sha512-jGJolWWmOWAvzf+xMdB9zwStViODyyFQhNB/bwCerbBKmrTmgmA599CGiOlP58OId1IMoIRsA8UdI1Lod4zb5A==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' + dependencies: + '@types/hast': 2.3.4 + '@types/prop-types': 15.7.5 + '@types/react': 18.0.27 + '@types/unist': 2.0.6 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 2.0.1 + prop-types: 15.8.1 + property-information: 6.2.0 + react: 18.2.0 + react-is: 18.2.0 + remark-parse: 10.0.1 + remark-rehype: 10.1.0 + space-separated-tokens: 2.0.2 + style-to-object: 0.4.1 + unified: 10.1.2 + unist-util-visit: 4.1.2 + vfile: 5.3.7 + transitivePeerDependencies: + - supports-color + dev: false /react/18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} @@ -2321,6 +2657,25 @@ packages: engines: {node: '>=8'} dev: true + /remark-parse/10.0.1: + resolution: {integrity: sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==} + dependencies: + '@types/mdast': 3.0.10 + mdast-util-from-markdown: 1.3.0 + unified: 10.1.2 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-rehype/10.1.0: + resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} + dependencies: + '@types/hast': 2.3.4 + '@types/mdast': 3.0.10 + mdast-util-to-hast: 12.3.0 + unified: 10.1.2 + dev: false + /remixicon/2.5.0: resolution: {integrity: sha512-q54ra2QutYDZpuSnFjmeagmEiN9IMo56/zz5dDNitzKD23oFRw77cWo4TsrAdmdkPiEn8mxlrTqxnkujDbEGww==} dev: false @@ -2366,6 +2721,13 @@ packages: queue-microtask: 1.2.3 dev: true + /sade/1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + dependencies: + mri: 1.2.0 + dev: false + /safe-regex-test/1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: @@ -2427,6 +2789,10 @@ packages: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} + /space-separated-tokens/2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + dev: false + /stop-iteration-iterator/1.0.0: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} @@ -2480,6 +2846,12 @@ packages: engines: {node: '>=8'} dev: true + /style-to-object/0.4.1: + resolution: {integrity: sha512-HFpbb5gr2ypci7Qw+IOhnP2zOU7e77b+rzM+wTzXzfi1PrtBCX0E7Pk4wL4iTLnhzZ+JgEGAhX81ebTg/aYjQw==} + dependencies: + inline-style-parser: 0.1.1 + dev: false + /styled-jsx/5.1.1_react@18.2.0: resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} @@ -2588,6 +2960,14 @@ packages: is-number: 7.0.0 dev: true + /trim-lines/3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + dev: false + + /trough/2.1.0: + resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} + dev: false + /tsconfig-paths/3.14.1: resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} dependencies: @@ -2649,6 +3029,53 @@ packages: which-boxed-primitive: 1.0.2 dev: true + /unified/10.1.2: + resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} + dependencies: + '@types/unist': 2.0.6 + bail: 2.0.2 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 4.1.0 + trough: 2.1.0 + vfile: 5.3.7 + dev: false + + /unist-util-generated/2.0.1: + resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==} + dev: false + + /unist-util-is/5.2.0: + resolution: {integrity: sha512-Glt17jWwZeyqrFqOK0pF1Ded5U3yzJnFr8CG1GMjCWTp9zDo2p+cmD6pWbZU8AgM5WU3IzRv6+rBwhzsGh6hBQ==} + dev: false + + /unist-util-position/4.0.4: + resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} + dependencies: + '@types/unist': 2.0.6 + dev: false + + /unist-util-stringify-position/3.0.3: + resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} + dependencies: + '@types/unist': 2.0.6 + dev: false + + /unist-util-visit-parents/5.1.3: + resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} + dependencies: + '@types/unist': 2.0.6 + unist-util-is: 5.2.0 + dev: false + + /unist-util-visit/4.1.2: + resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} + dependencies: + '@types/unist': 2.0.6 + unist-util-is: 5.2.0 + unist-util-visit-parents: 5.1.3 + dev: false + /update-browserslist-db/1.0.10_browserslist@4.21.5: resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} hasBin: true @@ -2678,6 +3105,33 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true + /uvu/0.5.6: + resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} + engines: {node: '>=8'} + hasBin: true + dependencies: + dequal: 2.0.3 + diff: 5.1.0 + kleur: 4.1.5 + sade: 1.8.1 + dev: false + + /vfile-message/3.1.4: + resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} + dependencies: + '@types/unist': 2.0.6 + unist-util-stringify-position: 3.0.3 + dev: false + + /vfile/5.3.7: + resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} + dependencies: + '@types/unist': 2.0.6 + is-buffer: 2.0.5 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.4 + dev: false + /which-boxed-primitive/1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: diff --git a/public/assets/404.png b/public/assets/404.png new file mode 100644 index 0000000000000000000000000000000000000000..96b62a92b79f7942d5eef64fe106f14c8fcdb268 GIT binary patch literal 1303821 zcmXt 5&knVL*`*i2 <}@>*;Em002Z-0D!QJob+y` zP4?d^0Kfy#(^P*IK(LF5hQ7t+epSLxbSc5-e@`|d;1fPhF+qO6+?%W1o7tWFy3*g4 zNc?@nSe29eGe=A;S58>&W3J>eVx;hZnblN8SiMOCzF6gh_VM)U9;*2k5O#n=ECCgR zmpSt0o{;8kpw^YJHA-Z|K4)EDAE$J#EBy$heqTs*_hKo_$Nm`C1zX2;twWZc?B6Y6 zInK!dk=C8fKKhYa0*$hoPG4qq(_BFOHv*dy8lGHjKBEQEXqFQXjRQ7cm y!cw+L&7k-ec>)msDAB)L=ZeIobHg1IOK1d0E;635uW)9GEG93SgZ=jP%e zwS>pV;y1a@V_yq(iUKGcRu~iiGnWyx`<-)5(K~4*^K}W8bHTd4FmG{u@J6Z~_ErL! z(0bxCxK{L9vLmkP`mx`(YW|vgKot#zNpM^?4Q&N=MtSnH^#^Z9p6+w}8~(i=9eKoO z%<@pAQ0TuRK^vv`qQ5B_b8(0hHS|hw0BD{ r_XRy3 z1;5?xQ0{iU2WXz%rH8V;vEN #dp9z3p zEN(3O{Oh!XKJow2R;SZ3{JSsg^6GrNd0=V1{#7JK%)}yEs-{?jBTPw4Jy*wd)#txZ zjgCfjMh$!hWxMRN`<^LLq8;~oUMH3OyNH1)%zA{t?0oIiR)v5Qy*s7FrD_A%4~|#g zMt&VaxR;jB&!yVAU+MmXYgL`p Hx^E$wWxP}Mr`JD522>r@mL!!YuNBayX=X2 zjjR@2`B{y;R;BE-W@S+2V^EE(L7BWBLQ%a|QN2mpPyndis%Y5sM6Xs>uS~`OuKEn7 zkWwP$z{>hwuIAsSlIE{pQ4`_9H5uw|gA % z%L~7@4%yhj=NyC{7ajjTxP2Uc;~b94=DwkWA+YYh5I20uyP-*9&i=BY2lBbCJDIY$ ztyk+ZRwDUeQoE65S5^+y1cy5NJU5G8(I6nGxuA5>qSUOg!X*EzO-@N>Q5esMRz C=0Dkj}UB;c0!bSd6$lyABzo6 z7)7X6LM#Pd$Jmvx6c0hO+SOj*n7{IG9|_ap0vhFG!<+O=)l#O*fHP%kFdKZrlV2U1 z8|gR&Md!7KQ#}nLUMk*T+n=6Kzr*nEL8-nx9?xuq;;Lz(4+j}qEp0*x5UP=Aj%PJX zeea*I{Bl0L0ulRhElJR|)o2=iM& w(@bF}72xG4G%?i8ausY=MyAcfYe}`%`jQiuJ@lE}$#(Q;M z>m v7o2xMd>i<@H9;=b6v4xEbq>gYk$E|kyQ--m(vnAI@pfkc}U@vWzKmwsr zPW$|e*GhwPAKHf%>s#e9k;Q5OAqzs(!5CM}iQb^#YlW0~3)Hv7@fw@Tmk5oH4-E4; zJYG p%R1=3 z`!eI@vD8@6jSS-N#@5LD7vo=x)boPa94=i4MaEw06Qzc;MS8Xl7Y4F9pRq2qI(un0 z7#VK78uP-p<`~)8Je~!35$;g>7dOiFkN%c4}U9N$|`K&e435?3UkQx5Isg q#VTCKdIqmdl%d+ CtDz$z!3aXVLn6fnDeqbL_P^vZx1Q zGTZya>`KjPO}TeY>0}quIH>l0>f?EqT=$}zeR8CV(Mo0PM{)HZ@yvD07bG?v-~I(^ zg}|O~Qiwl@yC!^L%tL8Tf#5(wdp|JABw5P4M}_%k8sexIhfRYP#atG}aux?>7wPiP z$iW-DVK`ZJ9NX&yruxVFZ=R=HG|-km92EKQDh_e4K2Olw *Ds zgMVM#mu89@=wZSR7U{=PDGUg|Edy|S5MJx3 RNzfU$H}?U+!)OAeZQ)nzi}w*yjJ@A71=R?!m&z!r?u5sL?TdDu z`)iqM)YyqK9YvpAp?2IcH+C}o>RA|eFMPNec}8<_Hgik2bkhr53tqa0USr`Mzca#b zxC0JzVTZ#z;hndf!1a}?+UIB`EvJ39wOy9QcyYo?Za}*jK E5o4@}9F_O(YMUSmug@fk ~4f(A0~>OMVaMWMk+O zQp=G;6I?huKyP{6Qt%>in=wetnGuCEGjhn1TsDI-h(*|O0oqlF0|GmW?qd&?QS+1- z6-taMU(zuEGjb207MeJ`ZQ0n**p3d>a05$dU=r$QcqrRGmFPVPq(ras3nmg{R7tRq z_b{S%y+-PT*Wy%^gxJs(O|)CVA2He-k^KD!+Iwfps3I+~g1)LHe%j=w?muE_=l9c# zb?D#mkJ*p$#|3S}1;~A)o&wNU#HipM0Jk7JKy5R^yiW!y9mL>Ut?;e3uq<6kT`u?y zC&m-w*GoPmz^h>NZzi_%aedIxhY0^G`zG=$lKgeTpbwe*q!G=HkPv6R+~+i#oW=m| zxE*v6|85e4-vNW)KAqn_ebWK$BM;hX7~QlagP9b4rWEai5&BHSW%FcA7R~Yl8v8Ze z>$?3eiwjzb1|n6&eZB@pzEic!Blu>*L9ql<&-3 mSa|m_gMPcwMB!t@!kHhQ+bb zyH kK9-kcrD<;f85Qc+Pyr6z7l2lI*xP%d83c-NzHR t;%3ypqhg z+ZX1MZyPwdU`V$A%5Zo@!w(|QEgtax1N95p*UtH)Ry-%Nlo(r~Xoum~{yO#5<}%a6 z#f~Y(j%RObIZ-u*y!$o;$6Nt&7%BRzf&MM(n|qPa9_U7TEj)gM39I^oYss1qYkv5V zqcE@Y)I@QZH~Ue-Yr``3jLlw_&wlJ6cy!rf*Ng}KnJ4X89i7-B&;BCs*nZmPs=eXI zM>Jrz_V4M6?+JJ63wULrac`SIZ^h|$K;3h^alZgJteeT|JC7lIqUu{uz_ pi+q%2H%YZBlGZ@ZFcAH^JK(lxw zwcF wJOE z3{*O?F$!lyc&*&--;lG{=#5dy5{b{<8BFF}z5Y*O_VUaQyUT!A2){*y4>fn(reqS~ zE5naQ&d~~Z65#oC$BO6eE=}OJ=Pe&h4e$P|!0eoH;M;pF2T{Wm(#u04fO zR6qWElU}Ws+7a1;CEWk&{f~q{LpS255xu`&<`tS4vh*x+vAx> gM zYrz#!F=s`YSl|i@N0EU>oigdLQ3=U-{eFzJ?wxo^iAg&8&?dIw@-=y4kfRde{W)xl z*YJwE@UeltWLm&V*No{}@&OJT@==(YES`|$ Wu$awqQ#d*>Ww_rE$!5>dq9bTpO=7W zl>+{IMg|6eZO&5&L(C<}1I#Evd8OtZTA_PSrgr}$K*0)3soUpUjqJr~m1~H>(L63{ z!~u5PEm*%iU9pv4&`~#B7SU22`0Gr2 *bGdBUYUJW#f)ShkAm~GKD?s#gfqGPNS zZLa*;PB97!`~+{~7HVb|f>Wt96Ztr@Ywr^^4hH)|mrCI0f(6k
t+163pcBc-4W>&*ng!V=)2{LNwIrqPqC@+4s7<6FMQ zIH6I&BF(%IO7|nylPYKFuZ2B1LDa!#TDyOtUQTwsxxuXd`-}@0=3dO;Zp#4D;1?&~ z)0 6*$QcB{mi8?Dq9@CxViiQDp2C(@cr(wpj#*YIgh zfx4SO{8M7aaMC7rV+27~o-vZ5$J)64euWCrf2UJ!{8KwbQ*{}_wtQ7KypjccHY$dx zs?rvkIrE=Yn;HBMX~Adm>RY1f!HFmv9xu6oFs2dE@|>I^BG_VTfW@tH)0w(- Qtqjw_k2Qz$O k~Ye{79CBMJuT%d zrscmXMY|flVau@SWvP>i_goN=->2X4*KM31g*Qq5?I5~&G1{wMMC!oworK TggS2|?~k&|8`}jx=vzoISOL z0;%*tZke-152+t>p4;UTbx>ea#0|K!zk7bd7 fstpt`k%BE&=5)aNH^nL-+f5HqBPFgx z5eiB7z82ob5_wWA_{r* QvlYIilOMk{3^$9*tQH|3}lj*dcFt{AW~^=f|Ud; zy~GxF8|ZG+>TQLnceZ#hRfHhr^qST5E0y&ty}9o^?I=`#;)$LyU-I_H{vIBqm2&bc zhS{N=%?m1Db3>7c87k%<1Low`xTlE{H2_1#>t1El0B;nM07Ftpg6TQke@Gn?5e;Pt z*a5)wH&rHPS0XlaT%3)@`wNS+RJ4S`nHs`4D}A`_82nQEEk(*a=`J~+*zqNDl+Fsp ztCs%J(%)gQ#L%h=uQEp*@L{>e9vc2rsnNx(d!1Sio(Wr>DqBH_Yk6u3Hx9oj#9lJk z!=MLbrf) LF+;mZl?pt^UDI+VfGI_TOCokgDjBT&+6yuDm zx#U=_UEgjJokfDCN$Zd0j!2@V)@R15$>wTN=1)FlECB(NS)3NRG(Y4B>ksTDI-*<8 z1=qXSHxpnJc3}nRaU)l$cJ1JO#xHVGV>uTxNx94}&w)m6>m+k>KrWYU66Kd8V?{yK zw(>XEM7b|VUK_f1=7cc4ls~< Bnk1%9O(L*H} zpfFk}Ed5m-y*Z4|td35 E39=IdNMZOi-Om>O~{30XxyJq_k>3hvH=cdx-U zD^zGq5n8X{+7=y##_+HIYGzvXEs&ZPia?7ef4F*W(I4fSIfFfz_gCoJzrQlH5!iiB z`z3)A6KZF3{s1YLFyE12+Yws`G?Z%KmVi@*exNbiq6Oc`zsAwmLlU~%bl%5n$0Y@8 z^4?IV`O(