From 430991dfc45c0eee14abe832773cb62b4173f68e Mon Sep 17 00:00:00 2001
From: Simon Holthausen
- Svelte shifts as much work as possible out of the browser and into your build step. No more
- manual optimisations — just faster, more efficient apps.
-
- Write breathtakingly concise components using languages you already know — HTML, CSS and
- JavaScript. Oh, and your application bundles will be tiny as well.
-
- Built-in scoped styling, state management, motion primitives, form bindings and more — don't
- waste time trawling npm for the bare essentials. It's all here.
-
+ Svelte shifts as much work as possible out of the browser and into your build step. No
+ more manual optimisations — just faster, more efficient apps.
+
+ Write breathtakingly concise components using languages you already know — HTML, CSS and
+ JavaScript. Oh, and your application bundles will be tiny as well.
+
+ Built-in scoped styling, state management, motion primitives, form bindings and more —
+ don't waste time trawling npm for the bare essentials. It's all here.
+
+ Export static HTML files. Run your own Node server. Deploy code to the edge of the world. If
+ a platform runs JavaScript, it runs SvelteKit — in some cases with zero configuration.
+ Want to try deploying somewhere else? Swap out your adapter with a single line of code.
+ Mix and match prerendered pages for maximum performance with dynamic
+ server-side rendering for maximum flexibility. Turn your app into a
+ client-rendered
+ PWA with a single line of code, for the whole thing or just one page. Use
+ accessible client-side routing with automatic
+ preloading for slick, instantaneous navigation that doesn't reload your
+ entire page (and your analytics, and all that other junk). Protect your users with automatic
+ CSRF protection
+ and easy-to-use
+ Content Security Policy configuration. Keep your secrets to yourself with
+ advanced environment variable handling. Handle errors gracefully and
+ securely. Load data
+ directly from your database
+ and connect your back end to your front end with type-safe data loading and
+ built-in form actions
+ that work with or without JavaScript. Co-exist with other client-side
+ routing frameworks on the same page. Add service workers for offline
+ support. Generate AMP-compliant
+ pages if you really have to. Build complex UIs with unusually powerful
+ filesystem-based routes. Nested layouts? Duh. Learn
+ web standards
+ that work across environments. Integrate with Tailwind
+ and Playwright and Vitest and Storybook
+ and, well, whatever you want. Build libraries as well as apps.
+ Deploy anywhere with adapters.
+
+ SvelteKit is the framework that
+ grows with you, whatever you end up building.
+
+ Powered by Svelte and
+ Vite, speed is baked into
+ every crevice: fast setup, fast dev, fast builds, fast page loads, fast navigation. Did we
+ mention it's fast?
+
+ No more wasted days figuring out bundler configuration, routing, SSR, CSP, TypeScript,
+ deployment settings and all the other boring stuff. Code with joy.
+
+ SPA? MPA? SSR? SSG? Check. SvelteKit gives you the tools to succeed whatever it is you're
+ building. And it runs wherever JavaScript does.
+ Svelte
-
-compiled
- compact
- complete
- Svelte
+
+ compiled
+ compact
+ complete
+ deploy anywhere
+
+ rendered on the edge, just for you
+
features? we got 'em.
+ fast
+ fun
+ flexible
+ showcase
+
+
+ /ˈsvɛlt/ adjective + attractively thin, graceful and stylish +
+ ++ SvelteKit is built on Svelte, a UI framework that uses a compiler to let you write + breathtakingly concise components that do minimal work in the browser, using languages you + already know — HTML, CSS and JavaScript. It's a love letter to web development. +
+ ++ But don't take our word for it. Developers consistently rank Svelte as the framework they're + + most + + + excited + + + about + + + + using. +
+dJv`lR+lQUDeJ-Vlk!dt4Cr1@`BRwl80+0aBG$3vuhN^ci}%2uCup(a^GY;S zN8oMol0GAGaA_dty+6ari-TaZMa2>@bqA_-s6=}=1X8%^b$CBdp6_g z{l{Uy(G?Yf1-(bWSM9F}Uqv8-`0Bl4wyk}_u0(A~$du`TN-Os7ysUkp1<4WAx5Nau zNF%#}-pdv)p|I$s{|W-nRIFM#_q45$o{?ZtrV`@af3F2afqQP#0lvd%p)WQBcXlfV zysAo>+6?e@=33i1al%X5#Zrjf%qaHz24trNUUV<(RR|Upp^pHeRc_ktyAO1zAXU&s zM0e(!B!wB@P}vPRG+3J2Hnl?gQ8k*vb^WPKM_-$xT)a>*(i;k9J>MLqw&1-JII^ zMF2IKb)}U5R-evqE<}x 6c59$WBhS!WO z8{w{$S6uoQNXn-{31uGFXQ T;v&WZqS*3Sz{~!jc?83$2G>| z8VFri-5a+v&N}@}Ef$E_7f;@J6+nb@Z}{YpOthjGqs;rqsFhGvJYCN@W^<9zFFG zPqlQR4%B}I3E;s0g5z4#*5X#t{ZIt$6-Hn(pV-}SMJBdy$TUV;W9nFvC;UpG10v0T z9*=vaW{1$62?h;HmD2UBTw2uX{cd)GHGr7BGW%PNLU5zaEiFzGCBVVL)rKkaO}FT$ zSwavosBt$krUz~FW8a|T2;uba#k*z~EFhsvYo^v_W3Kp?Hy&9(AB rb~Nt48&Ez$jN&t)? FW}sshqSiZZZ8nc8 2~V&7DJ*5D} 6_xtp`>;m-XjgSc#yybQp$GVcmv5Urh79VSE|@U?;h5-U5eWFQ<9GjJwq& z``iRRVbcnX6%LTbLJ+s`wGnw}S_}qhpn7A _ _C1CZ5!-o7 QxoCtFNKBm zR+HUsnIdhLa5n8fH9|cnat=oZeZ^**{B&85q$Q>~vpk~0-px>Vuv-C;1pca39)sgo zmi!mXp~S# {5yaskq{&HpqkRXfrBy0m&mepv{ z3dH=MAh4H90ddp}@IDrIHORQC!^ VYa4zA2?TVB_ zllyBh=Q{t8AUm3E_nEUR8SaJL3QxkaR-6P(PK;_KvSeTVFn8bctGY~iX_9YwSx$*K z2~fUEf1~4DMyWRl#zHZqXEab*^K%|Q!@k(`ZhM @`NbhBBZPO%nnvPI1829$KYB}3?q62yi6_;)$ zdT9P@iP_)odo lsx&hvGM1OVOd? h{wdA9_hyDmwYta(|BZ_PF}shd|3g&gi<6f8@NhW 5a4B z+j-fO6IJ183-5=bnsFnq1KndUX63Y%_1oM&r nh^4Zfd2S|RfSGnWhxT@Y zf@f;KS9v4zN$l769+?DKY%8eh*uTKPoQWb|>#=H?R)W;jMV>|T$FEDq{J8kLX7)$; zP7L6 3Z&Vo>Ej=!w7REa`iHgpGKjD;%BPW`kSghS zTfvNY%8DjT1q)~1bKrH+4f{TnwWmk6Sr8rTZhI{aPW*s-z< jz5g5-med>0;La1%uWD1k7Zg@qc;?3D z>c$V4j^4kKn?6r&{MRGE^MYl>|6?tr9fl ^kv-h@ z1;?%!D+g;+nhv2qti;Hb-wq$Fkjj2Vi4!5${PgH Z(#95 zxh3F1^o)Y{PjNti4{~81b=gimpPNcuXj%qY`QQsE>}7#rDG1Q^eSc}-4PMha2?AmY zd7)|dCG)*8>?Z7>@ty?Q?xh=yc=C#p3ME%WFgV{CWQ2Q=JS2OAb4=!i*?RFj`(jpO zPg6~05_m!4*W)nMoZSG*m8+Ne*OG1em@jvr6~l)1B6qCHjm*do;^AuoGcOjSBhT2z zvh#}5w027Cp>x%X!Pm(_oZRVx)lp3;?QLO>ZV353O&oq*npfoEZ?ToNo)Z-rAYE^9 zVbd4v)!$|%ST!6S>{ZAgBGwAdto*|Zk=fu_thK59(Rn+0<+S(tkUn|QawcR(sSycM zuex~L@0*2Z9p)s0_p`ct)z@!Ht-o>L=`uW51jjiGIEJ{3Txn }(q?; =>A;z=nikpU7i`k;7qb9KEvF z1blcvpusQ021 ~Vway#T(ieriGt1+o1euQXT+|;^Sl_*P(;qV|Eq%@JE#QX|Bd675 z(s>qjro Fk}h^BHr?hQO! zMLp{c`XTpBxA&)z?Kzt%uQHR;YnKum1ljZ!cyYWFXUL8P`0Bn!hOeAa=|-tcWvMkH z^Es;X34mo7AOnhRCUuYmk++hsj@TJh`-0rQ5eWML(oxmP^ou8zK>ah13}=wMxy&Hb zJ9sC)&1g^4r^hNPwiIgWU}KnlX A{?TbBys2yQ9o9i0Ff*vNad3;c5n-QX$Z^!p54!L*Iq7$zg%C zbV4i3qO^@1&f4zX0T_W609iT4D5R$TiEabeZ&RuEi3dvezA1jhBbWUVD>emyVG{my zYn#jU%fsWY mq>{$bTRtn5+*dw?d-j9l$** zlg!o02)xBYxLMK-P~3&nV@`qi_aS~8KyP 5B zNt#NI2L5b{X7Odc3bI0Js+MK{aX-}R@60a2sV6d5ElXrL;=|1pdg?)E4R|xiH*gT` z!DKn5KQPJ+VfzHe#*>jC ^ydsTQ^p{?_t|_GW+_;PPwXA+JDoh{y8fEp^*dxE_;Lm`yoZi>n0UBG DpZ_TUTfN)f;Bl}3oX $TbXiAUnJj;ez7oLatXYpe1vfLrD#&MQ1X6OzB zRkjZ0xtMTJg|p71sc;sLC^*7aNzX4kvC0kMn=1JCh0_94xoryEN28;HSK&IhMIU{g z%0WWp&}1b__-@Dd2^{M8>Dvq4n(TsuYPE~A`^p1LECm0nc2(CUZlQM({MI?vsHmLJ zA0~Ql1qjpC)DM>&a1o2rR)@ghZ|R)p)L(EeQ>?Sg7e97JMsdrmczRWy?qdZtqr1Oa znnll`MqYJPR>bzDM+gX9+Sb_WE*5lwCZzVps!l*M;HgL (+S!LQGK7O^e7y9qe0Q@zB6qakRfpEVPx4ERn>Kkh|K~ +WOF_Fm%h#mGMejE+Gutg_s(?KiS-Sx~cYSVFjMZPa(i2Nb z?9m`TZmu0vakAzJ<_%I`<$m>$cGNV>an1~D-#`E>(I*)!$w@Ikm)Z=v>};Z%h1luC z80m(!sPIZSc5Np%&5=cut1=NE=crg164c$(41<|G#GGt0SV~M)$JTT;y-w=19dj&k z{&Zb#sf841iv|v>y_*k^8uBAL(+Fp2q=+Z+}?!E~4MF7R|BtN4JYov|d^>KT+!+ z`Y*r!-rc|R0**Cz0{Vt_OcF4F=W}oxKNoU3)T4S{BWz1wBX;_QODI^c0g&diEGpn! zlp@#BZ_i{Ny?6xQY4RJg#U0off2S3nrQIhnidT*SDDS(427iP`b)PTR`#H?aCX4T? z>l{2Cj&|eTS;~_KCay~D^8SXjX@Gy9E8c`2=)ShDSzL}dZ=~$Qivs7!)bpA&uP=#Q z4GjuQ@f9@o$4Tp2fnu@if4crPeRcMTqXHD$`FkoLzvVcj^+aPeH1j?b>fk<8k&do^ zSt|$Ta4FIyx$^Qd4RC*u=x6sAXsl;X{g`Dw)McCUBO5=q+jjjVN!WZ54-MVvQ@p`c z^H=}y*jRs8L@x84juvZoAZ9S-&6uzS+9R$MyD_0+0{T>$riaTXaqmLMCI4}j5Q-lm zBmyDL*_BO*@ 39<~eUc;H_4|vNwtl8aHB_Sp z&aGVLq;?gSP@xy&5a`!JAa+3le}<2Ak!jOl8Et&v+Q6pzf{;(Msgn9HiuEKuo2*>2 z4C(av_^aIE1!uohjg~g~b<>EKoElTs=34U`D1Bf5zQp~Ik-)TgDSuLg$`Q_&2$I`@ zPIj>)P5UAsx>#b|M~_z8q$ENhXpde$2Q`dkW 5r|3cbG+ZQ&f0#e z_Kd^T*65I89WhUlse+_tbF_QrHNUfwczxOqMS+$#*X|d+A-4%X@i=QV3_^x{0PCTW zVJk>xzw!P2HJ44c(@`2_U~8tjcOA%u=%;Sz#tR~q<_MhpvR@c ;5ospyEXq&hkJ$H20JY! z)glhvIr7&6LNo1#-N9kk58PaGBC}oSsUJx8)nenGwOyaveXTmPwyI(#Ehg-~RhU<> z$yiOV!CK4RBs(ivUhSr|?l>uvkjbC0m zlOVK0x!q7iz__Sj+3Z_0w(@oJ=x#GLm8FVIs$4CsVgd@yShjmQP!-@zm$JCQN> iH9v1s#Yi1mA1_Gb{ibK_I`AT@JUl z3MAo*3w&1sf9nYD)qnRuT=be4T8NLywtv0tS1}A#)jJ3~l?0h4d2;7g(*{&JN;vfr z39`N%p5gWY!Rth6;J$d1H6!wWKh?Mtm5!v_9hajzH`PT7${$yYARZ|e5S`SQPKe~4 z`P&X`A4Kzn-K9kx+*jHXNbf1!P9@L$B#?+6Jrxqq2>V-C>^#)j!0?@qv@(4d&$0PE z-Hpi2KkJgX?ib1bY-=peYJl><_Ui1}iE-nVI`%OrU(xwPF@L)4FK236f~YeiwW69w z^VX^HL|P^)ZT)(4PT+JizwYIoFX5(W^PYCS50uSMcb8k#u0Of2nOl}MOKZ0Myqfu7 ziVqMV35V&kLD*z+)T|&;@!w6k&0(SC8qrb1Iz+&l1}-|Ja?$^%#}9_%=PIH7yl+9v z{Qdws7B~915PXomB{v6zVt-2sPLk;hR82MEwN`%F5EBzas+mm^9Ii8hLutW_VYq$u z-_rZ{X2yB{*9sNk?PEe80HCuzrNa@c{|$|>_@|mt(jfpQ>DDNGne~whQ!w$1u~%`X z(|reU%wc`{?d_hWEH+lveg3xL)Gy+uZ_AusMLx6DFPcGptcNF wfL`(d#>t&+@)Dr0SGT?fTuMAM0BZ&ZcqK4BwswZjRwM#J!H zzH1E?Qwe`b%l;Y1x%lMZDU%CNuE5}XS}|ypu|cvz0p`P?kd5>~^r*RUmi3jz)#SS0 zaM-)1{1Rzt(yg1{%7Tp-@U-C`^8#P}qu$-ScSbls<~}$@7(oMIMVgoV2&@HTYwvx4 z0E``F?07XH5FP0nS%IjLk#tYBR=SyATFq@eTWW{;YjwW{ew+8^E4mP(1jGIvUbI1h zYe${B$eL8gtG)kCkW})4^((v-L>=W%zeh$qpC21{ZH@Yx)t6(DJ!N3Jf3?Z&fVCB{ z$qYEws%bAOh ?76Y=aDZRGLP!ts*7(sN5No22DYdwt$92}Zd4IhG@pT ?%ACJfwJ=* z1rynxaz%3ULUzlTGNa#0H}K3$7o2`wg6TYC;;Smt5G8mZ1X!eAHU7(;_;CIsLh2lg z3`>%wzI8C7KS~LgO kRa*)(+4lg|YU3zDWAZ}3SzGApU6q juyL z&gQl+ZT0upx1v#JgKaYUOHo$YlhA$?;IO|Lu~ttAID9 =Vl#OyJX3zlZadGym%@ zAeL6q`Z{~h {@_RUrXeMGV$==Rz@gP(o3L)NU{{ZpFUB zzTDx`6IG&Ui?w0WfM*XK^vdxujDfPU)JQP?xHER-cD@637>3cVuVNQO_f$GiZsl4G zc(sZH_`GEz^F3GG^!u5ymL21ZRFsWo4B(90=;DD+O8*rNl>h j=viqh{kax%bW^VsYQ|&zmVsFUY-?O)J#5mM4cup-}(RMnD^}FRG zs^nD`3A-Hq)JoA$)!Q%)lQw{-@ >hi)=|5ZZ3DS#BUfOgZb0Q&E98yHGC+8zPZPAMUheR#^{ zN)`Wgf;|r4Du~ZKR d#Q#{U6R^nY;q`yL^wB7<`O7h7n( z!-DcA1-Yqej|OEJ^aSsFDl8V$1mnadK^oxAJrij17pmK62FU(n2&dm#(KCuw1c9 Qgm?ZVDL4*=a zQ4M{W&>d;RxhyVn`hzot5^vM$H-n9)u3|e dAs9S zUOX=y@p)SOC=St$t-+=$0X`gxPr=9EVZz^{99gxhh8t8otF5ulN&ej;5u1}Xuj470 zD-=hz!*JCAJ_l3C(r=|{A{?G4)EX!XTip9XE-~8wh- M)~Io^032;7td+(PyMH3q00_wb>yq(=;`=?!OrgB%#y`urZR*UiS@80P zNLUv@^u|bqP8cfvCiiYUC$V5PmJ9xR-ml^BC!15+1O8V1{eY30;BHPWZ!^bPL4Eue zD3}aS4#01GJ9Q7j_tO2Q0{$xBq(+JoJ=Hj!G+ipew0kxp?Llsh5me?lD3_<*&{h4{ zbN0)71!nc1_da;t3N1Hqn~E$i&>ZaJSlGIlYIpzUt!khc(8jOC<2Zvu*Z#uMxU3GE z$LZ>{*HSoGKly2*UfK`a5nI6N&axuqO*9XgX}$^MCRI@Z=Q5tD7Z!_onEyayvMd!L zD{@1_^mxvDZLBP_dw9>q=GmUljWiqP8OhH3H3us|=^v9ritSBfVjdthQ9@$2kOTsD zMXP*UzALEo+s7BVe>X@hWvT> ZhjCi3d?Ej5yH9W*UZ`)4v~EE2-N49e!)9kTkm zhowSQb6 &*^~z|e|G$}kaxGGHYXc7pwa8Ujq3b4u z)3`7b!c49O;&ioKK(BsqE3NXn2o2bx5;;@oi1WolfPe2WBE G|%8Y@Z zJH8C0^O3NWl(q%r@!~BcObYS}MK7wGzBgT1nz4j@f|7JhywwFhO6ZGuxa>=kH|34+ zwr=>As}TjYUOIfl;xU{HVTm(RUgVRX1erEq!D;Y?$A+kOp3KHi%T)__t?EY*1K#M^ zo`Q{bhQ;Aaff!3%X_oU0P^!$rG#&L_?do&uIDKw|g-PiX?))w5@ncUG@pl&(0Qop- zb23JYJyoQCq0k*r6PNbM%w#7!{TkM7Hphj}9I|se=u ryM^9tY zc5Sk+H+^on%m|9ojikZXtK;Vi62>5Vh?RmGe93iGCQa+J-Kzt=NRZRGCt}wd`!E_* z@PHFfbeI0RSIQs`@fptsRo`LUTcQ>$wNA~fer_bwSIlbFt(vX}a#6~jpx2s`XQ!iG zay${`%j@+x1 n%`59PMWuW!URbyN=e;?<27!@jU?<&*-yd}sULEimN>O==gEdDr7jSuN`Hbx(2f zxkFG&l91m@Cqrc>t`{V_N-pWD3{$&X9`B7Z6?QyNiRL 8rzQ=|nxV#p=RW7KWr$g(K9}ThB$(^QI h!m(3$_rW3V@PIt>j{Z!tjn;!dvI@!}x%sH=fkUs~HT%<95dzuXGrl_Hup zyD0XP5-gN1{)o<89AN~`{=W&~1P(d( Z>O30FW7POF^8(vBzGgXgU3S1lN^yS`f35oi=C5qLxHZe%X5%7N-b}IqJ zQe&28NQCgYI0&7_Z^k$0Fk69uulL^Q(>Go!AJ9>LWpE?pLubasS#4Emy`YC7)t_gH zWPtynZ=(InTM(n(?K)*0!z|nMhTlu;z##32qZa^FhwOM-d~{^CBr>m&(7x9|*{EJH z&4 Mm!pVGqrRl}D*3v (%`uC|!+O=GheYVew_*q#b zj(t@A6=X?`1Msc=O!tN5)y4^&au#zKZbweT7 NsH9pOTCsy>j1x3D7^2s{7O?8R+-z<}^Gm0QHiS^TgD z)xve50_;3kiX#h&e25&wjy^n#%nbFM^W~cc&ju*~68#je^SsBuHdI$4&z~1-I^mIv z?E&7C9)v%0O(OYVexTUoe#~DPgu6x0ZP_}RBCqZ_L0TL_`Uy}PB#TA-82{9~>9oNZ z$6e7IbDbv4(1U+bBBfMb(>o&UfSvi`KU+J;5PALsEwxo8PKa$}_2PNOtHHlcvE7Au zzx0&;*%aeOuze1r& yoQ)|J>St7~GAeKVpn*J)l{k z0n*zR%&_DK(Z_QOC$HN~WF8P2LlUd6=CiGpGs4o5kjNg{KRLExQ^$cV*a*tq>2?YM ze$~m{hBM|~riT9>DL4`0DWxn|pzeD?q&3WFgbb80*EIWhb93i$7d=~#2hq>MXgvm% zEwnrhJy~bm+$XUT>sC?#iwyrYzL2LsE)+I0DU6h{IB860@#3RHDk89jf<+3%(^IZl z9VaHWR{Em5i9BKMAigqAfXC|FFwN>`SeVac6jUAS_LB&y*Q#H(QE!kCU)1~pl+Vxi zJpKsi-PYl=rs2&jEprt&B}S!Lw-pnOh**Vo$-jn0K2zFPe=)Xs+VO>!y z|AdqcyX$f4W((0{e10?Bv(Na|h+k^+c?5Ol#eR=CBQ(>hi7ehnHt0^_HbMB|j|yMb zS|q2;JAuVcNM;#^^}Jo~ aR>uEpHo-K`a&oPEJUr6p0MG;20Q0ZE#`i x1wY6mIw?FG=A{ znI_mkjFHc)k3XZe`(f&3jJeq(>l~YsXkg#rpcjuXi){VpvbD*ijw(mY{EcJ)Oj&W& zId#P5wla_S3r8I`>R^a5;Y}8ZM;_jG{YK93(W&6#kQx?paG@qBe47*({+3CkX!zgP zRqxFOedWLShwDjHvhAo)VOgEa=cYU -V*D_2IEHUY pDB-}%?tKShY}BSg*kh6Yie z)dFOysZ?=s<=UgBOWKZ8a|cA2;s+~O0vNAeQ;p*QEV6IPnrFsyNuyXGrp`tnu@B;; z2~f4 ?VUM8`XYvmh!2# ?NtmYW_ClJulPxa swy+%SuA zSf8ssm4R}+u(ZyQwpT7W2k8>7=?YgnxZLa2>juQ(BEm|8Yaf;=)M(7@(h$taUt*t9 zU>yFOYCw?5w1ctSEC6-2UjNFO;z>@_eC3ajjR-BaWd>aA7{0GcbtzbVE~!So(tP icWO0qVuiPcXM0&PpNyhuIARY5uvU!Nk^ntZLz~6-2(RwCbq8D zBQ!@zLFzJt`e=-+W1DW? Tln=v(pKs}ppHiPf4BHH AHn|nn|^BH`v&i= z^2o8I?aEkwYRiGBp|nRD2-P}Qb$#7B&|2i%(5gr8``|o38~r|}mGP2$J~0YkHz2~1 zWjt=wn9c?(lt6ij<@5Rp>e61{d*x#&uFvni;^9F7CzhTcS!p$LByO)Lq3poBRrjhN z^hqc=4OUX^L(-4fE$$^sbzfl?vnj=>dz?HGDWR@P;_I!EFj6>-2Hht#t0f}7TuVWM zB(LI;uW}aPcK+e}6Khro#fNI|#g^(@SyK?d>-hJDw2J*q_3BxZc*|2#Q$$g#??Ai< zS3SJojQ*k|HL+DZk5VfQCX(I#)X)mRJ9{2u6~Co^%}DEn7f(-;#{c%qZo8LkYi9)+ z$<<2W{2NcQwutXzjh{%%CK7KldLrs25y#Pf!hPSQNZ~#G%?9HWRxjngyPv#$Q*#@= zM78j%?=hp0YghBul^?uWAm*!a8vv|_kMb(sjT`z=0k3<=c;7|tIDNNsq!EQk9&!V} zD~EGIyJdmARR6=%S^h=U^>2I64Ba6$G$ >l z-QC^&aKHFH|G<8;KYQ(Ue%Emx3l{r-EWmw{YUhSW(PL@Yx6w$``QSHH5IjGJ=kl^3 zuc+b`0Ly_=r~C1QtV6Vg6%&^@ Hnc}iZ2bN+W|sKPUWic!P{-$gCph{5bM!SbQlx;+>bFS*#UC8VOcAujG!z#v zAyAsWG&K#3A<>tUD*4kC{KK?Kk~u)ICb+WW=X;!o2E-%`zeX#9;7r2@tm`=PJ;SKw z>cj=Nt ZWXfLN zIe~Q#-zyB`%0JteE+53`hXPHD&Ks!hQ?3sOQro$WUnxE(f{r3ywCKQD;C z1B&Tgzr*aO@23eOFlQ&9&2dTF3LT6SDFf4lW3v?m{bx>6C2ZA8{8MDqH%&A;q7jKz zRVu`#)MB&g$>IRIa?4m^)nDz=GCWzXXdTr{bMh{7F(A~f#;ViK0&*e&oQ!na=r&vn zv*?Ike|?XE6lidv%^?YSpIO~TV^v*%?KxspGn&E|>9IQ;nhN*!KA=8%X&?QLqHe&z zLEx%)o+5q gn%RTAmoAYsr^m0TL9z?J8asm*e>?k S1OoD)Xq$W|>~zha0dKA~)R~ClrOonz1Bl}^7W--@0f=?W3F;x|k2{@gTlsv- zto&VT^XlRlXKkey^%olHFA>&HH}gNMoECb{fY-M)4MoWr23mZC+|X~1O9#%Hqx}xK zjtsxbrI7t*-A2a;-cit0Bw0`@qu;3PZvh{l!p-GCh!)hD46Lp-8xSH(*O+XA*ehYn zvk~wubHIw(VK6jTfdFfGQC1joxWmUOgWmO38dlgh8_PBB(R_^6+!tcol&5)f{|zib z`tJCm&NleIX&3Vq+t$h0{H*0olzJ-U@rRWkdkPKD6?hAZM*Ols2Jo<4s0b?p8N4!M zQFprZ&9^Rm$pHcw-BnVJOZafG$GTW6`}~e|Iqci~m9dsc@KYavx0&TDw6TAMY x&cFDH-{vEcpiTXAyE%$n0hDufj!XRir8Y24Unyi{fO{H5i6t-Sl+mZU!+ z(}@*m ;B4 z@I>>W93+1gE^$;E>wfHjL=&-|FuDDt+v$_gSgYf{{H$rT>S60@bGWDKKL4j_4{Z_E zoY7VM6HO`9x_*C}C-FP)2JWx8H1h*KK25{QSAui)-?@e6ykpQw=RDHgr3bl$Psx0p z0SEUgi@Fms#?WDvo88q3R(|J;X(I}OyG!s--Bg#~O3jjlrn~lcxE9X)5V$G%y986+ zzxac0B0?75Jn>72;Uf}Ro4t@(no@enKvv^F$N-fv7soC8tDB#%ZmI!z3f%eZznb_A ze`lOu_6qel8~;FnRhrRCl0z>OD;7yWT^hJ~&uA%_<9;WINvmq~_*bZYt+54u=*Rq? z@V6QU){xN}qY4TA3mZ;bA9D009_xfUe>kGO22jB)s1McedBDd!bi9)G$xOp>$2xjz zd!Cz+;J?_edGnKCWuf#AIC1^X(8CZ5g_{+aF4OtWy&zt<>Z&34k(*mm=lqZkk>iy% zFjdel5rB&z$i!V$eT7h?{bYa)*8_Md!MmN*ysINy^R##x5LR3U{I+b5Myv-tFn1#C z#K>41O1;1ake+!&`z@!#Xg98JfgTY%?_nl5N$M(@aFkEE;`NVx{`G%ekF`!LHk5T% z|M}LO>W^&1Hx+!i&fna>vpps)xf&n>DB4-~&u7v^^j^w1e?LTm0w =$9?FcXaQyX01)!Ru-(jQ=^<=%KosdH1O0@B|Q$n(T1D zU paWo-}WhNgT<^ zO|hsBZgK!P;9JtM;J!;tbGl9ixDPIrII-06$Z1C{|503PfAZqlt30`|;6A=G@${>; zZyYRa(chBKNuF#q0lVTrZN{YP;#DYf{+@H%DK<9R_y9ca|4jI}kzte8dwctWHFoOB zJ{JCV8$sHr|FvL|Nw#n&zKwVaWVE7>c(B E62%DP&A$PN`+puIUfolwBCVD7W--tUD@_Q zpkrZy+Zc1kRJc7rRmeUu*j!0 5%3rR>tKD_RXmh-5`Hny4!Y zqhyjcd?v)ytK(Mh8g#eTwF=#hW4q7h{nb4UGLuh%$ZxdyWL&az5w>XXL1ey~CI?|@ z%^galDb;Q$$#LS33N;d8iZZ0K!_CRBIc&Ur7zPxB-Qs