From 15c1ec5839303ebf27af372602bd0dc9f0e2e389 Mon Sep 17 00:00:00 2001 From: Sascha Bach Date: Thu, 14 Aug 2025 15:49:46 +0200 Subject: [PATCH 1/2] HeroSection and AboutSection created and styled. Refactoring --- index.html | 2 +- package-lock.json | 10 + package.json | 1 + src/app/page.tsx | 4 + src/assets/sascha.png | Bin 0 -> 129332 bytes src/components/layout/MobileMenu.tsx | 16 + .../layout/{navigation.tsx => Navigation.tsx} | 10 +- src/components/sections/AboutSection.tsx | 123 ++++++++ src/components/sections/HeroSection.tsx | 51 ++++ src/data/FeatureCard.ts | 8 + src/data/SkillBadge.ts | 4 + src/data/StatItem.ts | 4 + src/scss/App.scss | 23 ++ src/scss/about-section.scss | 280 ++++++++++++++++++ src/scss/globals.scss | 74 +++++ src/scss/hero-section.scss | 173 +++++++++++ src/scss/mixins.scss | 77 +++++ src/scss/themes.scss | 189 +++++++++++- src/scss/topbar.scss | 53 +--- src/scss/variables.scss | 32 ++ 20 files changed, 1084 insertions(+), 50 deletions(-) create mode 100644 src/assets/sascha.png create mode 100644 src/components/layout/MobileMenu.tsx rename src/components/layout/{navigation.tsx => Navigation.tsx} (83%) create mode 100644 src/components/sections/AboutSection.tsx create mode 100644 src/components/sections/HeroSection.tsx create mode 100644 src/data/FeatureCard.ts create mode 100644 src/data/SkillBadge.ts create mode 100644 src/data/StatItem.ts create mode 100644 src/scss/about-section.scss create mode 100644 src/scss/hero-section.scss create mode 100644 src/scss/mixins.scss diff --git a/index.html b/index.html index e4b78ea..9e880c6 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ - Vite + React + TS + Sascha Bach Portfolio
diff --git a/package-lock.json b/package-lock.json index de2a521..6717e11 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "portfolio-page", "version": "0.0.0", "dependencies": { + "lucide-react": "^0.539.0", "react": "^19.1.1", "react-dom": "^19.1.1" }, @@ -2966,6 +2967,15 @@ "yallist": "^3.0.2" } }, + "node_modules/lucide-react": { + "version": "0.539.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.539.0.tgz", + "integrity": "sha512-VVISr+VF2krO91FeuCrm1rSOLACQUYVy7NQkzrOty52Y8TlTPcXcMdQFj9bYzBgXbWCiywlwSZ3Z8u6a+6bMlg==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", diff --git a/package.json b/package.json index 1d98817..4a7e1cb 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "preview": "vite preview" }, "dependencies": { + "lucide-react": "^0.539.0", "react": "^19.1.1", "react-dom": "^19.1.1" }, diff --git a/src/app/page.tsx b/src/app/page.tsx index 4ddd3fb..880745e 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,6 +1,8 @@ import { useState, useEffect } from 'react'; import '../scss/App.scss'; import Navbar from '../components/layout/Navigation'; +import HeroSection from '../components/sections/HeroSection'; +import AboutSection from '../components/sections/AboutSection'; function PortfolioApp() { const [theme, setTheme] = useState<'light' | 'dark'>('light'); @@ -12,6 +14,8 @@ function PortfolioApp() { return ( <> + +

Aktuelles Theme: {theme}

); diff --git a/src/assets/sascha.png b/src/assets/sascha.png new file mode 100644 index 0000000000000000000000000000000000000000..509aee48d85d6ccbc0dd0ebaadda9d4fdaf57eb9 GIT binary patch literal 129332 zcmV)?K!U%CP)ZgXgFbngSdJ^%n907*naRCt_p zy;+ka$&n`ZshN9RdDPJd8kiYiIYQ1G`NluN-%lY$D7&)+u)EXfv#Rol2zNJAKImzY z#Q?f8)5F~kJw825&7A)2fB!!i0Eh_jVK5O0B-a^WFaQD(0A`>N>{oe|^d5lnKXM5K zyOE@QFo=pgZ|xIdZ7_1+8j5g$B$) zLZAaE!bzh!+cl*>mqc`#A9GKGrknXEdVrj}1wj7_zlbu~$j2{oL^r&Sc0nd@sZY{* zFgs~oEcAZkzYHcQ!2k*qIwcw!FVPckQXAY+h|#+ZkX*zo2#tI6!Q}GRRcH!{jCD|^ zqK~M6b^HZP9mJwjorOc42~^nSdK!eusm7p?MwtiS+{MBo0*fLffj8j@a=^g=#wZhK z;};Q_$)8Q62d6H82uR8C61vhC69^ zLUn5dJJ@qsfK_obZB;0`-bqxz5Jm&WaN`jLUN8ex9Y{#qcfJf-o`f@qrGqC05ND() zPy);RINdbKC_<}rJu6NSNQEDy0nIP=o;n7An@Pz(ECLJI3)_hOqX|0UjtS1SA5+B|YT7CZ%@^ zXK*0*^>F~>&qB^HyD0M^42o-GX7xO7V9CbLH?qcVs?>^s)P5?k5{0n(&`LC5^Ecj* zSZHG`o6wVuBWWQKs1y*2w3(YN#z(jXG$~+^01J&RW(70waXJs5Y{7I!^fltg-IE)sY@vhbMVm6uvm}DMI3~{2q^7}7b`|QlCq`3LLDi$69$p4+<~&T&hD1SI zWwbHT#ECNV^@n>kl-mp?^J`ASqBIQ8!G#TpZWLk|)&OuHSa~Xct8{R>?sOUF%}GRV zHCXV7^nUVi$fs4{fMuX)v>Tg~zeYvN&lcgg-Q}j0GxK%4$;!hpPZicZ2Bm;q@=(NR zp@9XZF{<}s>~t|^8vBRJfkF|29vp&Yb2PXK`2Yg5Zd(PYgiUc|mqED7xsqpV>-Yv^ zetZuUDxqR(05bmOVGd(vv*B{53yV`J&4J94g)AA$nw4=d^M2qKHv1kP%b|+^Qx@pd zMvAw!F=0wFzmyO;s6_Dx*lrT*qy#a+@`h3#A+9UslZO>tHm)Q!VDk`?2j;vH8Wn30 z8h#~S0f~2sUj)*zhu6X?h{5Xw0w&-j7TyQ1^DoY;l)Eu&Y_s#ZcEM|tSNDm@$s5)? z?4jEPj8dE9`{Bc;3*PeZ>E?AYyBi+*1EFPVqxis__%>`K6Q@xG2|Y=YCXh6KAgT+5 z2~^=|`{pA9EKYF8Icvw1oe=Sw{cHauWG8*tTy%Kbb2N{Ef?)dZO)_doL@AiEjYE@Iqa-*9 z*xR=6OX@RG)TKY>ovjUE3BAyc;6fw|nQju90EkQ(yYt-s>y|LGdq_OtV)8-|&`HC+ z8J%7$X-?z{9Ahwrk?=wQf}C~k@$mSJfBzMJ+RR0Xy91`slaul~Z_MqH4!vP=adHZ9 zo{Tcg6$c1wG7N~58%*A|xgiDiJi`(d7{sUFv`3>xXB{&HM!Lq5G%!%;0GLZyxSJT& zfJRA!Aag=;rBf(vD2_47hWjSzN6`jRG@^D*0H;J-F+W02v87qgQKa(3<5#CE(O2#^ zuqlyjG-Y!Oh5!-=Lz`F#-7V)`tkRIeW-tcN#grq5PieFR-9(!Q0(stof-0Quk?=~X zr`SEJPx4h*B(NuU%^{4&dzs}v^7}*&$N-5_8`i{)?GimmoHZ{@a`#~uAYMutg~$B- zoWVct4c}fpVH&>2KoEZ_gf;?1cQiZ^ zc8h$J1ebtFs?adJa4Hp%GXR(eVal8>MxL`_kGtRr47{W9*+L;S*?o4`FVDvAbzw_( z&6OZJHqvt9F%|1z96xysN`NkFnGL1fHzP zgXPS?qxTt|q}k%*E0)|e{!nh~hEADbpYm8-ZbXJ?+ptX=qg`ZG9m;t ztg1e10&(*(4X3WRhi7aE{inUqd8Dr)sSawM>;y&(dHSFi;*$|V1)@^&^ zdN~8d5+yguucTl?K7y@Tzp;NNXim%c!kwWTVFpJ&!O?`sty=yUFj~fp2l^=bcNBp1 zKb17=&y+3bNJASIO0iEsWQ{HU^;?s?8GW_CSVtG5M~Pm(glgnW{0<;Zcx0$)luiI( z*f}~mgvl(1xtl&Ah7OXw1LooBggOk%P^Sd755}J&8CYDk+iYUWtio?ih)z&?)b%@q zE&_-xMhn73pC)=H$eOP+FuIX5R~aX4JQvh1?umF4NrAIK8?EwER8a9o(N)QWQ8u~a zGcfQQF!Gi_J{B0`LTK%hx0wJ3KxCD96c{0Lk`?PuEN-DR6dy)Rtk`p$FSGwnrm)&> z24GHO_?qNdr4XS6fLirWW)Q>28zZA=_;OqR0eG<@kai0HMa zdotGb1U@F$B~Ol$a=xRY{!WbfU=Cz`pP=NMPGx+av$FETK&=f`z>m$n#Dno7tE zsf8vT2dOf<3Z{y-m`?{0Yhgo5TG@j6n@^~}*-2S~Gfj01;p4E!BnLqn%Vt{IyyZUe zwrMnqw;o;~Phg`e`?$6&G#E`2a*+n!1kW+H(0@Zi7q>xB^*>frP-Yj3@4O3BD#s1> zL0XPCk08-Jv?CMNzfV>@BQTdlTT{4*ZDPWq(Al-kbCU`u83&tX3x()shI&@!7Qz+Edq}IP#SNgpr5h5i$@l3)>Ad5;65ZQ)a@*KcB*w zg&x5QH%T{_*mUn$`ZHQ20G$VxGn-Q;Z4oSFFv>*1P>7Mu#R;I7*`JH}S2Ps) znxcffWfhIFrcdfW{*`At%*&Nt4Fq~(-R69^QaDQehoFusfuOQt zw8t)%%{EJE6R|6dp&t|I7?BBP!XK8&bZf-R6T8#e!+>l{FFLn>Rxm3oYnD})qawba?A?n zdn0Q*bj+;YTLF>Qlqc#l5{HW1Ux>71+KO7fLLVS`6w-o62U^&a$!g=$NI*!h^ersO zt3rgrxwcso3S+^+Ku$qmC!8t)lhejfeROlQh2%E9QDPwC>5R^AKBg>jZxq!S$S4yD zX=fqMrCuE>&6$W+S4BU(uypz7)XW$nguL!(A(ioUaq$J}oO zD9I}3R{)KZ0`J{yqs%ML}peOv4}t^$dD~J z=rdL=MG)bp+>e4uussM)l#2xd(S>y!yQb3pg`E=)0`eVW3>Tb4exE^%x91iH>E_&~ z%`=VN)}w81t}LuzDVbu*@v;qu^Ky&+W*Ffq?c)3n;8T#%KEq3b_YauIkuue!d?BT^ zQh@!xn-39)Qn-}lK6sbb?VZ%*S6RU{=1@Eoi(-tZSI=Mr6f3YKu>a3o(-B?Mj~I-` ze_@cm5}4~mBV(8lTpJY+$l{kQfTn=*gh#`M%7gqB5WCIq$5Nmr6uSFi3C#irA3p5^g@(6ChuMi^kJ96}{Y@CwM95XeGuT!Yal5<xH1GZukPqN?-$dFe<{2t2JbVLUFv*RjP=T0YD8m>J z>-|p~?4$?)%cJ2a;Try7@^-rSCO4J1Qw87b zhmRt~rBG!s*#WtkABdC)W8WIEXFwf`Lu4S?&B=X@YLPV9t!XgCcO8)tlmgiXp|KkX z13xMEJe;_RwT!miK(F}3hjEl4jB>lkY z2J87B8z}`Xyh_M#iaUL|Ey-{xH51caUgI4{FXN^JYbaIF1-B`qR_IX84LpNgRpB-r^rXL&% zJ3<0{WJI>ko6yzV1Tp8~_J|%bvM>$FiKI{?xKotj5l~82^Ar;W|AR=$J<5s}RZMTK zm_0u1RLLAl8~d&CxAB#CitI!KW_gmp+pVT9R3C6O8SOmSn}*7xAu5aDYZF?=SR zEIVnRwiM?|FaJ=YQxG@S6OC+?ddl>%rKC(>`L(F!Ov1%RphV3Kaz&r>euBQ1{K;}) zHR&7=5Ax_?8|SvfgM@}FHknXHP7^cPb4tYDIUaRlWVGO6+5o-R+GpSj3Vig1Q ztmc^DE+#>|p!g=d`$RK#hcAJuR}qDUvGwB)U;0BDSvDc`|~M}PrW2}W`rAHonMnt8tn;7=3w zJ_pc-0h`j4GUq~e;d~DOV3h;raooNJq)o`NfdkVL$|#QpR7v;b4|{Au-kc!m?VUFt zN+99%61T^ZXYi+ON00r@VZ^d+x4&}%zcOre+VgL>@N9_5LqF`+G@!((mJ?;#ZY&( zSY`Gk#@7|3-87W?oR z4`#Y0dQkX8BMppUssN^#x7l-M6TCDBQ}`SAF7wXYv#|^EI1Pq`%pjntu;PuSq>vu< zGSvKIRNQf@J{xkItxZ|7i*Lm+9-tWSuu_nO(h^F+*@8Il$_9|U3NWO0v-&jMQhD>D zXy#6vM-%fmMYRN6NK{B#1*oN7OW2wMoD{M-5povT zNbIL++yWh?PP!W za!&e~N9ryJ0mI?i+F|y?<5|mg8Y-#)Qgm)Lzz(?-e;S{L7{D7B<~dOKcglE^5{`K} zo9wI9UMTyxi0)(X&JBt~m4@%x*qg_i{^H>q1>Bs$FWycZrE5$~y-{vY=}8dx%0z{1 zO<9Xx$#O&8D|LGB31C8*T+plo8xx?3zD!$_5ptk00-6&c;Z2Vf4Bc(yYxY`_YDFca zLgn(qq8Ql=8ok2gdkx7oa+z`o7!WV9Hj$H%HapmSI$ZJNBlGg3F3{b>;Iz~ivKOvR zmTI#p_KjHBNPrDX(Od3#Ha;0PK<}cjIA{+tI%=V8eX|$qZ!RW$M&Du z$qw%7yPE0FQIi>f5{QZ*Qj`U{AFDU$HL4@MWjBz8Ljk0AQ-HuQk_5gc^uaT`4h1#q z-+dUjObNVUK(9-sNaOU^;-uk$5c}KVp$Qwm*<{BCpY#i1*bMZdcq4e>ZZgM~(r)}6 zB`AO1R6&`JJV}U z9KS@cbBF9q5xIS26jYfgYcHp!6|A8BGeRH+g|=b}vfAb}o^)SMw!{e!k+dNQ=Csb3 zK$r@Fdqb^+sZ>1dD?Z*GaNJj1U!QOw1{DUE9hN@he7<0v3H#S8F57}j-DB$$8aFf= z-+<%z$c$3Sg=fHZj-Mv1_F5LBfz2UYU?5(p1C)}IOq|ncX&_3oC=bna%?jmR1h5zx zb&$5K7INY@Qv@`@ zfgny^s2>tVK8UmcQHs{{8~JS%sg9KdZT-bx;h+TKQnK5LSav6y^}Mlm1L+gfVje+# zBapn#L;moQ(3qejz&9i~;@g}DE36sR)R(<`CVL_P-0GVl^jUvf6*TkpUY=%7|x6W^A*%0Mh}TY5Z+KncC(&YQ3+^15;SR zglxf!KnWykYqU$8aI2;$kl7c*O!FdfGfHNJ|8ywOxyJ&(34tYwoJj+yaEy^+S;ZOX zLFHoQE20&&Oju*YuR;pKA1x-PgbE6&#iTL;! zW51wK!_)b9tUQ6HBl_VHz3!4H0Oaxjca6>G_ajXRUi|S!W^7rAqKU5o?2R~Z;`Kn@ z(X5W-y=~Jiwf&QvZ9A{pOT8%CV*sS_EDDA zZp|x%*oo_oUABI}P=(``fJe*eO6`3Is=Jp*L$yDMQ$%Yxm022sJXtoZ!-38)2a+pzU6 zG4HbCxS#QG|A0yaP{HYV!s+gW*UKwTuQR^9p7H$rGp^4+gN`4tyL*RPcW6Xd8-uF7 z>Caa`2iMa?EiX2PLy@)bM#gTqn`I_|EL?9=r4f|~%P+?u#aUi#vHVwhAB~oQk;R_U zFAo+pTze4olnXs2#glB&k*ce9u8A-j5K_9+{@?1sKUE4z=< zFRTN!{i;JiFK6JseK4^nBe0`1-Sokc0J;67=jCV4){g76Tr}&N`pH9ZQM2`AQz&!C zl&CQdc2rFJ*x?mb$w-KBD-*1}pzVV8`a34t@c!-&^Ts&N6(8Qe!+xG| zci7?cr{7SEWR~}b9hPN5TQ|)6JsNjZR2)usAOhakiq?VUdd6j0@Ob|SBEs4`zPvo6 z_lCA@XzPl$Z79qr*WWSI6})>u+dY72Le8oJHf92qV%}rQj1nx_7=|$@GoD# zQzenztMcU*tgo2b1+;v|>!+V_d49q+Pk1cf;g5g$Pq@B5;rovtPyx)PU_Bi0>C^8Z z0(Sd@v{@@U5&rn6KjCt@;(EDY**ZRbdcri#KmnH4@!QigF4rqw&#$;YoiI-m-akHK zx7*`**kfxOUSD6p%L{5-uwGwL@4iPbvwF|!Y4if_4ZiZI{Bw_olVFnvDKcXw5Op)% zE<0vzS$X7%P0IE>vf(Z>#!&^($?2(h>nHDi-~M*SpO`f zW^u(!;6a?SjE&iIKa10+T8!GUe3FLah?X>-1C@MCWa<4;>9QdEds{gRx4Jk(*;a_W z#g?Q?P6Nvl6(b>HM3hDa8=*TqtQv>o-SFW9yR11t5H#tOOtV?U@lpb_KuJo87#|~b zvHQ;JppCptp<#Re4a?K7c)fhWVXEM5#k;#Bj)xr%Ghsr*KmFy;ILMp88Bv&7h>-O@8Nb{&YZ&evL6@dtvnSS?VN0jgsse1tktF)@dv> zCwm!|(ALgW;Qh^fejwQmi^HD|OXUbD%rC~fBnClU%V>{#WsR8G_}giQ{+=Rk@;oVF znZ|wlxrW&?r+M_Hc(=loj?Rq29sK$`mX}{}{roH1wxSkb-3aqkF&Dx=|L{kg_B*^g zop86?kY?k!u!WNpf_BX z1>4r}^m@kHJ8G?%s%(y^#CUgi!t<*T^!oaWZCkOf8|rpNxjvyjdA7K5=8z5I<$YqBxlNdMyE#MiRv<;I4>kC~X3i*U!io4l*%fhGxnU zUztBZiOKfNZI&89dW{Q%cmrRb@bdHD(Oy1*i-H(B=2CHgcf$LJd%S;m#QTSPeE;zy z-re8hcsyb^@33B1Fn6p^S8Usgt!-#)M_E=-DOlGPU!I@9R6upcvaIMtI32`FA5Zsq zd40t+&nQ%Im$Auu=S49VUIG;*l!b_pEqo6!}WT>Ze4KLuGkLmQ0~76 zO>=UK74WjusTL6-l#s(UbgJ5q!K=~M2IG^~_9?~A6kb}KiKQ{7o9QIKToKzIt?6tQ z$4_{v1fas|7i5Ylwl!8~_t`+qB;3V@!9A@x+m}WUZxBP$)ypG&u==GV$uI{)Rtgt5 z`R;xf`9Jw7>j{Bs>6Aos&t0jqa%YRH?9kd&1~h9*;GPz|&7xY>w&|8LMU~qC0t#Ho zO^G>;f<;t(?N;b>v(`+Ms%zqV>2|~V{5!5+e#H9v3Fw<9s2X84 zZ3WkYsT7>AS8U6Q&(F`8rWw<=ptTK`rHRsCFW5Sx5`#*``MRL=jxSFyIPMQP?mL!s z#dTTn^6~}KvS2C|bozik9km29Tc9$~CYGwh(uNWf%st_de&pRwGkDnYe=3L9e)kzI?&yc*3_IKA>NoahNAO-reEd!yR^&@c#XKJU+Yw0oc|By{(w%8Grcx2YmkW zgiQ-EK!jyo@cisB3F6{f+ek>vgmqH0J4}_voI9-7}t{| zUow}xC6sb*)BiU4drpQJE zB6&rGFD>O)a|{egD(GV&G!_C@BIkYVkt{wSX(WnFN&u9DPZ#-xBz=>y6%;mfBl`1JV+*UJT!2+O*H`zL&UIb)hnmQbD}MR;C-g4Vx;vfl zr$7AwFz|GK#rgFWwGcjj{06OeT$css>jjtV1-*4#*A>@g!G0>3rV2EmO$FDdU(tHU z{^P%ZcMnK}3o7OPxAtXr{me2avW`~M_?eB4amOl&k@iF+IpSz$R4asqPjWQoS>nEE z&SF?jW4GyWk_X%IBy(jWM zdKyDUP=d+c{J4*LTh?;b%+xSr4W>8Jm|yqi&pu;0x%UtYny0S$P)EcpES6E^PH zT1P1rb(#SX=4rw_&-mBB`~}lI;q%iow&jZRvf%TlPn!5zQA-7J1*oH~3r>eU?v8sb z*8?usE4q3=t#_=;1Y7PbxTNlv`Y9iom!V|FSGTS%aS8hUJhE5@G?^g-aI?sCtDq*+VNuOHkmXeJ zx#cz8{IQwYGqy5gw3`Msk1oZvQyNeQxLEBb$7Dc=%$r$La)J#RJOsdIbVPPBNGeH6 z%8Pq8&Y{89!18EKHFbRIeixS5QGm|+G|E^3|VNpF8Q*AYVPVdm2ZSj z5PB!G4}lt0ch=yB*%YyT|?Mi2K74r^5k7V{I_w z*PnjG`*)A{{rBH+y}XJgeR{&$8eU&tv21ee%H!Q5*7b@~D~`t#j>i*DrxWTl;mhYQ zcwHAvm2f;9aDUum+d9^^Vp%p9hh^J9U|h~G0&KlwH_rfXSl3Ntgb1ho9xuIN*;Z_w zfwE%x?Z09FhyNKUa~Lrb(~`t3S0ow!S;2H#=3*Z?|4& za_VzvI2K(HeuS%+gpsD4X<$}H$56$OZHA>pBEd!=6*@V-QRbvBhxfoM&OiSZ=imQx4T^NjueAdC3*J!+8{ zcDbJM`^%FHVc!~fs<>Vjv~5$`GEgS~1r5OE^^C1|^xp7%zDT0VguORVE$E$bK3@P3 z>QqoWV*_yg@(+~V4!e(kf$ThWb2rF@hdPwpP1QEJBPk+V;z^n7a%sE|1rQz(?7RoB z*0W9hgOV0+<+gf@D4!>l@nEp$De+|eQ{-Ye;g>|W>W~ay9BZL9ti{ePOI|mWO!2(G6h%HC61qwI$dacF=s_PxB7s) z;=cAa49l5nuC$?FW`ZzN6%s&28LWCwP}M=GHXw7I&;Ty}o>maReZ%F~zv0V&{1*Tn z^E9FN4xpnDu$v0@(}d%GhvPis@$Q7veviBRJG_6m$2?W+rizIwPKP75WkD+yecP~` zX7IWKt)npGxZC46?@>#U1XZb6whi01;{5W0r8O1aj@mm8`vYpNxZ;YfH7T>Kgmr6@ z3}nXEJFeF&uyq{wM>J-9I32+NuIq{~FE8la(Ko_=nsI+T;<_&QqQxG&d52mHUVi>7 zh-U0Q{<9?eVAd}!E#3&dC>ELa#aC=MvuBB|eA496jg(n=SCIT(`J^x)0L{_d@*rO6 zHJ(N!<2F6ie?lC{Wz+!9V`uJu*}z9U;2f`;ampS>h6kvj()tP6%gtj0s$r3OH-(I| zhepbejzTEMh>m8#3-mZkW|ZNSKl$98wWz-bBQ1w~Gmx;mrc_Kr4DZMA7!#0z!HAVo z{n}qu;E~a)ijx$D7fANDPC#pr6Dhc3{q!Gr`tiS_TG{{|GZ7Al0}2>BDwt})-F}aE zrz5`k@Byd8UM%k6i2Y%QU8(5Xg7tF2>2wETV7J?8Cb;7`P1xT(fC21xl8^#P9J;lR z*XsrMyB&JlWbUnh?=D|!=4Rp%Km&#$s%#K78CoY#hz z>jm4kVOdseeZ#}u5zDgTvToo~F-;XOzx)+6?J&Lj9&zlEOTPmxQRb!@=j>U9a_N%} z2A=&i9_Q**-xZXM0N6b#lb5jKX~kmzmK(P=S?V>^m%e zsqwNlCl^$PBqD}abc{`r9gl*rZo}Y)PH9j|w{!?UUkyHD`KIVZ;>10RJvlYv*3ewz zn{rCG%N$9#s1cQZdYXWp&}c5PJ1}IvfY@Cal7cZ;0N7()R}?19l~J}0=P&=j)6f4^ ztyxDU;IyA{oG08Lj<`GS!P|$2eGdd2JIisODpsS~!&`1Iv7K0Q6-iJwpkVQs*&H4r+^zx=->$}1{%q>r83 zM!=xRl;p)n;8xx4Oa1p7H^Y>`KPd^Oo?=O1EtJPr95wkH-2gvPBG%%NHW?UsZ0C-> z-^=3Lh!LzL%<7vMqF`*hezfhzjH<4&WhG?_>cS_&czv`J&yX=gw*1nW^mUo!g$v$} z-pA17Rr*d2Wer8QB0mD5F<=Ylr7*T`N?x$`j>a8)ea5H%@t?82zTj{?Ux8FIzv8st z;cmARSBwayR_vx3^DK(g`lfCgxm*wxwAN%(JlvmFIB3LI|32j?0z zyiJ7Q#p$f0H7n{0lmdcmt+feXAGTY3vha3X{|LIGVmDH>rN546SfzN-onNzDrXz{y zj#ZADmdJ@LK~Ka5%mu$Wi2`{P>b}BUh?uQSt`GMQ&aXG-Rm$c%C%2h&tdW!>r?qUX zC{BwW$RkBT|3mzUG@OnAp?%@GH|N0v~ zKfPey9dJ18G5t^fipRS<{Pf%JczSsTw+?2)y1wB2%U^N$?mxkHBUw^Ogh3Tc`EAJ_ z;}AGGrQsUETv%V{Lpr`F$$Kaz!^$y@g|0N#Uy}848RxcIDr=wJW1AH?hwX^^>bE1Z zNdic0)l}NLE3^}y^L&TA4dBMx4pD+{Qj~^cK?fo6z z9ryV7_=v~j0q-8}aNNx})Jc|zc02432OM^L$%MBqo=>Sj@0jKt_WPqKqON04^8s8M zs(B_=tY=kVs&$e@+3`e%%I?+z%fN0OB~Q0vUC5LY>*Sa2cw~icdl>)j*@ac`ms* zbGMU+;L7^-k1~mQm`B>gce^64i$RKh=f z^DVx6e~%yDf56B4dz|Kqhr0vrPAAND!c+??71U|MR4XPBYN;qY^>Wl}*&U9eoVB15 zVV-AD?_fybg-x)O3Uo%P6=j-%3^M2_9kLyfs#xhdp|uUnj9MpfRg0@2Cq|c1cRRG! zK+GufjM7;9E1;=j-tAzgXRO`jar;#8-N%pk`+xk1dB4Z?^%ZChFF*b} z-kl!7d+{>-!$7H&z*0|QvDFY2Y!e!HbW9;xOyGfDrDO@NM}+LnAN{0?;Uv+D# zl#^R&j_GgPRYb(#wt`=O#h>2acmuFn31;h)8 zH+=rv|AmLY{I95oM|cgmYD8pQvjBuFX1?dKMy6*pMCNJ|0o*y3ClN9?w4AI=uJm)S zAiH{Ik=-E0=%Pk>^isnTlV;N!;v@PuTId_gmOR)gWR?KxdPI#4#E5wFAxl6h!EaH@ z;7vcK9KPo^C6SC_u4H7ck!%0JFar*+3r&MEBFD(tH>5?3Ytcs%2?|6U+CqSWjjxa> zZf7~r91L7ve#ggs#lQaWJ^uW|AMoM+4!crtoCwF=PKqt2Su8F@;i*n2wV;AfYP^}R zQguNjlH!!oJHVSLni47U3h+Y>h&#Ax`DWVyRE^;)fR3%LC{$&+fdJ+PMnP|jSUe(Z zt)a{_sLRHmQYx&Eq#mmzNimLTFnH_{w3uRI2&sFkx)vH8m(tM*K8!`GEf za@{QYt)kqba1Q(&!@o^fg*Rz!ro^rbXo0`}Rg-AMny|8s0L?3r*i+S_h>;~W@)}jc z|Bn?iv%+Q#dU81kKzFw}TlbOBLquX|W^RM`~fBpe~{^K9<{kum@V9W*BPZMTMIPJ=WiGX4;=v0B;P}tVK zs~q^INvKFh5y-QSB+n3`7ob#i`-*Hj=&gZU3mUTQ(d}J)CU8fi29&Cb%K&w7->_}6 znV~C*nWg=$NeLtuIn;m|*xKe^Qnv%^)(rq*(kyjrGUof^5zpr{zW?Sus8sypmtRpT z;ritt*nju~rn_%c@Dos{#Az0C0}<1=&S``FTbC=e1um{h2+TFlU-&BOFa}pLJ0XTr zcV->U0GVMS$kLFlF|jR?>KqC{{WhMrVVmWZ`z;QaMr{$*UU#CiD>n^vBPrQX17Ua| zhN3;bG7!YF3sVqf05n(bWKRjMJ~DXA2vV%~A^2u}bnl!(C=!88MZGpzCWwKrd4$Q` z$u|@bxHs_nia&ig;ZJ|~0UsY9Fri~Y$DSta=L!2-F%{X;H%;p1svuw^)VYGVi-lzZ zQPrgshQEdqKuKOpcYqby=)K7t3IQl!-9py616u?03aS$Gq66Gk2Q83f&jEkS5n5YN zs%`00OV5n9t!TYNUQEY8@1Wj50JdepZnwkd=NHVo8Q0ci&6t7H;fTw!;N#;xIy3&` zm!E;Q;QaI7@p$(Ep5ZVi*@g`aUgD^X#uLuFN<)z)yRLEoQ=pJ_e`^JD2T_~uMwcY3 z%p9u?gLr^a8+~{y55;Zr7n6oDqpVTB#f37w0=5b*zhBT}iiD0?8C%^ni5D||n^_){ z=JCFkqArhHFawOtfb{Xfz|a+_n&Gs>BHuhVYzokcjH65K=LD2q>mYZta)KbEzK>M} zM#d2y2e^UIaBMGlyxZaNxW}$YMb<CEzExVkQVB)2Q>dgRB8mWw$h@awc&Ju8-xJHIxDi81u>|-4BsKHqf?8VIblDOX zwk6J#K^P4GF5K(eDM2f?tew%~in7Obi>1sR_xNK3yRewTC2z-Exsj+}8Jjj*(tmN8 z{J(-!-m3Rhchd@X{enX~&|u&(mV)AJL0XFR{W z;QRL<@c#XK03Ba`{CCi{4q|BxR$ou1lnVI`h|M7sb>y`6Zmy-u3AuyiZJIC%eK?AQ zQtd&qtK;t^-p62c-k6WCnUk=e7MA9hw(%QFC(n!tZq?ohd-P(dw(QVEqT2_=O0_d2m9y}Br~XtY;*$uCu_-9*s~Rb}F= z2i)uWD>|TiZ#{NvtAxg$r{Dx=a?%46srBv3U!_AJnS-qyK>Ds){}x{ErUY_OAX@|xnuyYf)ui+9DA&(Y zd@&bPG$B?Y-4{%roU#mcj3pzf#GIr>6B4`1#(_HT!4Q|3c6*fL9m?SjWp@(GJk4^R z@_sKH33>;Y>f;r+SO9{V&~5jGIG$obJ11`|-0cFA&u z%+02X%XP)&dPS{-!+r-Q!ZhzuYsEb8#f>f%cc&vtA-w$dAK>lk0_vR7T6ed;`srr% z66g|06MuGp9EoHA8ZxfWCi#rtMZs?klcPy?`!cd~y6o3;IV1(Z=G*OGzvXJ#I0Nhb!Y> z=4NM533on>sU_gxU=qlDYh~ecl=^E2A_BlGW<41FZoii-vMVWKcTy$LTz&pNt5Q&E z1*kgkpcF7w)cJ^McSNZZI)M3jFPUD_cyQa$dIRbNn)aBENA$jlg{)QNtIKXDwiviX z;Xv;VUXln%xn*ZiR|VF$aJOv(G)cw11KTFb&!kqkdyL(ClP!;};c(dFbaz5)4NuQ6 z3J{XfUe-m*G24cDp78$u9>?7dSYNTe{O)q*JQ!lEk}PSqjR?NDVrsJ0bj1`p{SP;N zjO)coM=AZ1fTa`O$Qm4EC=MT>?#gESdL@Y(0%0;Bm{O9*s>V#cHr6D78!J;dGq@Hb zb)CR%VMNR~S&pEYDm-@5H2?r007*naRI4n(_(=m40DeG$zggpM{k<{xhA9#Uj>|~a z2Zbdwi)i)ZRAqZ9(5;iH5Bf86+0bs7fW2 zm9+holmQ^mHhtv?L*npS1rSO>+g7aCE4Vdm>nd@!xp6jTt-)>E=AgW-8`|1Hozd16 zwH5&YD%jQy)Ed5f|4#N0zkGrhER^7@=?f>Ra}`X=ZD4Gi%t~wWht!@cv4tvG&eDHO z&e+gslN;_n20Idpw5m`-vJ%2&a^&JCJhFEknd?mH-Y{t)ml;e-2(WFxL-_1w;l3i| zo)AD@T!&ATf=a$MEy;@yMwH14#Nw9jF#;>lJmHK$WDf zxi$3V3|`LQZ2{UQv8l##=u#%h9carc=+$NI*ijYG_qr-*bct2TUW!hnua*&ujo!hn zfmy1iP~_y!GF4?m!F5^CT9fZ}n`NmL=jUhCsbZQZsgWj0Ty3qRwH3?tf@wEn>kWV` zp{>g+`tl;QNpx~iH6=?*%_fw^0JnG^BOjGRfM-SrH`z}%F(ps(31^f`TzsA5*Kt`1 zP>hVP;X-GuU}KBPV}M7t=B}s7-8OF$04Cdvo!`b*)Rpvx7zy_Rgj|&zm~w5gl{rR& zA)`u=DBK5$U!~=t^vzn=A$51V^-*)P9b}Aw>_9|FJB^S&6a^r5z1wv}#f`MnQPvmW z{5!ym-8@Mg%u;VmkPYvJ#BzBYLC`f=8?U`=jZySe$Eq*0Zrg%V3)c0b%BcXrO{@UK zqT5nlUsn(@wr#_1x5xFoY9C@v1rXH&Of^864<*TeZ`RT!=9gCu$yNv1E<3tpPoO1 zwlfItR91~%Qf6boF7kF`Fw%$f=^7TxCoy6m@;E7s%Dl;IxpBmiKjN}M{(F>lzO9%t zy~-7Vc`0@nyaSB2Ki6@cvagr%cVA^o~q zO8vf+z&cSNj4lHe^HbcdCrX|u|bKKmS-3QN0BqdGIuPZ&H+$~dqJZtQ94jVtX8h%}`6-t4>g8_z5 z#5S6eRS6s;PsQP(E^8Ab_V&ua;3;|Gmv5kG}+|di&{QrS!U_o*GhZqpeF0I zg(~W_L)%yr*CcUODd>$oCt(8>S9@|#2UQapkkk&q8q4aW3jviBLB#rUt>P}XrrWuS z)PJbb%KC3ZYpmBK>9uYfwsphS8a6#U+V-Au-_U!*wr%L!D&A6;@ju+(qX4Ld(7A!R z$$J(FX?4B?ZW=E`MKo{HwKJ$%CWD&>!_a;08xd%ne zzDa=)OM$T&!DKSG6;*v9?O~L%tY$fNoyisw`hH%!$<{kvsQ|Z9UR#+uV~}JileM!E zn7(_x^Q{u8kLIPH@u<70pzu6_+`YkDsA0C6cp))wXGUiNs9@bT ztjmIR*}{ER>%6TiYOUaPL7^fABrI=LEJXP9+i%$K_qbfIU@GWfwAS(6x8Gy?O_Elz zyvPxcvdMzQAtqOS+=-+zW!q3)&LHk|NhOlD=9@P`Fw!ARNp$Qp)YzMg>#`C;CSNC$ zXnnEii;mcogLsrjQvknIWMZzHEN587`kr8%Sv}iO5T#=_J}Cn;rOE45)~{P;OBDE* zaBJ-ori?8#oG)b!j~4W;?FdPF90RjopYDs7>(3x?34%Q}$qNjc1JL+c%l?O=kbA)g^AZP|hA44rfndRv+4^L{+yJ?>xQ7-MiSW3V{OM$beZ1Z-B~NM?8N0Gu zWDB+zqS^PrH16OaA9w-K5OJ%oMZpLcR=7|>>+E*Rz3pTP^9($e@h9@&<8Mzk4bYeF zrf7fY!Cmeko+~WT*hcy-;uE=Ai1f%-2Ch%w2vyJc7wPttw zEF5I-#l*#}zV)RVJ8U}~)I#eXT%nT(n=Gn(w5ErY+Hu1r>(;ktT1`>ct9W2>1e-9j zXLm#MW3=(A#&j(qh`r$~#}AR6k0(vNKS)p(7e=jgGI)8b2p#k5_QbtGxR~(zOJ_}3capqZIj(c1-M)QUB`4&4c_;PG~Q{}bz($v6(JcbR1W$}z5 zn*GxWhw>-oN^N;cf2f?gfu-D=KdM7lrAsBAqRh6Wlo$q|8YL!Mlk5t{X`Uq|oAQ4~ z(n1B({!S|gy_Cf_&d0%pB2b>C*D}QpmVKNMVao@=6$Kvx$x%3FEm(C9c1)_ysaBwB zhMDErYP*s^K$*a$25K8^ShLO=k4NIithKxmLX=aLc3UN5tmTiJW|&*+*m}pdbu7z* zb&<8@ZQH=TVV)+LYiD0FY^`By9ZUt!pFc}RyEV+UU_VuPIe2H#b^-KEt*!+IQRtw? z!Q4o4ae!MbGm`|D7h(ef(;IRr5%Edp$Sj_RULmGZ-Dg|+lAmZn8{nwPj%FoD7 zDR9?VpD*NbfW;A^qCpX23+-L%9XRqP1Xe{Wnea*gbH$B`1Ys7}8Ktdq1dJ&zqL74B zm!-3~#D>rYi(AuT{z;F(nNZ3Ms~jOKtg>sUwT=#W9e7dRi8YaW z=5>=S%InLMmURO2Zin9GwWo*u9<^`a>x(OtDL_eH9VOY6%Hg8IEazzDLUJ)OAq!zM zvPT*F(FvlsajdIuGC{~o0g1;&WT}JLJ4%ro%5gfGhv;r_iNO)+dc42hPMabJVKG)= zkBEvKgX3Ax(0zM+Z0P1={=T7J&%r=6fmlQrEds_n8l2r=qT)xTW8F~<;i9Z7%e`Tk9U&5!fOmhs2+>c0r zq2K#hINwih9o;ILsndSO1Jj47AS@n@K89hJ#U^A(Wfs+5(PAC|jbP)p-rV+t!bOul ziHa%IwrVT|$s%Vu$!kL4v2wR%6hhiRN}9AHFBmXz5)`c(my&Gy(PxUj>XZLJy56Km zk|fLX`^loJwz-E#Mr3AHR&{kx*APw4fB<1s}ORc;aC;qGRpi!3}mc_LySNiSrDyP2w}sK{IX^43_A-4$5dp{%JRt4k+}AhAH& zRtyr~oU_Cm=i<82ME$&Oq)mb`OwPojRbx!VsKT+Gg|qZYDX2S1Y;<+oP#Swn(Y(QX zj=Md(al|`mX|f+B4G>ImHwB52Hk2wOCEChZ#&NI@^vu!;S zm1rgmwc?{hh1sH+Gi1p=Qsa?xBbgF`RjOyCnDE}UD78W$DN4qVl(az@KLd6kWz#Zb zRAbqJ6jmaQ(5-bCpI{T0SPWu3vzX#8q9jGgIaUHx96LYC)&)acR_Qk!4AVHVY#T8} z44G|NrBDc_1d~9{&6k}?5M)#szX%x(MN1nDK zr5ANiP2F$CR&5QcggXK)#MPs`R_9v~VA-^yNz2^o%jt6(uZdC?$E_wAG_YURK{0t_ zuy(#w3t3A+Y7EmeYRBGm!!(UpXR4A&rBMfwZ!~VXuIK6s@5_j${oA0mUQ-sRlMrxd<+M_cTuRW9efcJ)Rkdm%W@55B+c)eT*B_CJ~de`fP-R^+F5SA-8 zNy0_yB)*19-smjb?P(z|jrf!EsnCF}Sw)RLa;1T~jWULwsmrw@^c;o~_+gX+8`)%A ziagYhnom6&MQ1wraS+a0E7Cb`qD*1 z<#t~cRwz@INvpG1rBrV*?zQaAkGc6xBZiuBt87LeYx(LYn^#|zA^XDi6;dm4qi!fi zHWE!_ttsa~@x#VaiK52+=7cNhdAT^TjdP_niNV+c7okY!^0{f2dp{n8nNx`sE(cIa z49HmPi6IHZObItkV5E3mP6@IhhJM7R;xOd668%7S zp@XowxP}Zi8Jx8wYs9);juFu%#&IHTfpHp{mzBW{co&H!xnUY7aSatebl6s6h|Keq z{r*5WU$EPiJf4J1I!#12^>4{HD#9^KqDVt=sUw3V^j?oYw@7f*VM7l;0D?q=YD?VL*&IF$S`8vMydXxfGT|nbc|!dC^>+oMQ<$^x!;c+icT=~$8?{N!tdh&*%Ii9&-csFM8bL+7P{obf2yQj7O0yzP zOlL{&B5U`}!9*)*r9)Fl#g*zF);orj8AeY?2{T)^;;S77 zhc%YLIYNjyAci2lkhV<%O;TiV18azcu;Hv{x0jq|=Oby;-Wub$* z;TK;OStxJ5|ouq}XrCM|V7-5SYvsgyo#EigNJAtfos7K@Qde5a*rA97x*7SAl& z%@~KXEuAmrOj@rP>xkPbmgpF8ZX`r8zod*5giBH8lrzo`gmnhz3CkkZV`Est#`EQc z$B!R~+rn1T?~H|IS=hF~IF2|!kTQ60+3)tex&Mm8=?>#Oaa)lh@SYrFNzN~uU}QlD zKL`WHh&L9WA~_8#VPM^Yl)`nEHBg#vM`A8#VN7KfjnxHx)>E<-14{Vdxs1(QHM;7xz=<7>8CqRQx$Geb94!nk?Qpp&BR6r6ssna%f|Mm`KEuguViauq{~UF_ZNEabC{JF-8fdh?@jU6oyS1 zfxd~wia*UB~6Dm+GjftQcC54}wbE%IZNFB^G)k54H zn?~VWNi?Wq7aFZD#avu$WvpBjYI|n)K~WC5xTPoz`a0I49vzK^T9m$=c^yV$1IkNk zY-;X@;6^Iw)a${%F;Ji6P!)2KIC@?+9pmbo^r4f+NbY57@7V-{3Y<=>_9aOavS_TT zPFTme$@ev;wgS~Na4q|z1`O*k!wANRKhy}Jdh3dxF_Cj|%NWO&5-F`j#0Tn~!$c{0 zV?rb+DQHfX5KD{2Im@vCmTHHBYrCo48j@6y85-ZJl+*=QXrm0$Hb!{qR`d4kT_L;v-f3SQt3e-~Z@#&% z9tUogw~c?ZJ$0uwe%N5Fl^ETe8N8-LXS5F3yspg83o%5-L16Q4e;{Y@!@xFQ*tShN z|E0v}Jl=Vx-9%17k{C))Ub8OXqFifi(YS$>BOxc2ZQ;7E%-4l&U3q+Z;=|`hF7r$* z4Y~u85O1AhaF)B%k=<_3VZWC%`nr@Ljjbdf%nXZX9A}1g&$!z$4kJTG+LL-;qN~a= z$XdK9(N?08um;A#GkUSCyBOI|11Tq#EpVBaTBXBUBSrjj;@jhq-+%iJ^Wz7W81Xst zUwymh=l}Q0V;*kkMGd2>DRtwU^Pn@NW;w66ld0+MQ@WD9mW;1dX;u^XH6lt?Qy=@B z3rsczme<1Wm|MG3f%@5WQiCj7wUKU}r6{!S-+X(O*GX0e$kY%tO-OGBDz(ZfhcwOh z+ES}h>(*%2*rq+PNyCa<%2&N$(Cuk{-KLG36ziVxO1t(5psC^R38p=-va~`aYosZ* zg^)9`WXYIrVyU3)m-Cry>2$(zBAjH5H6LG#0vm7&WHjLvW7U>iV^p+^GT8!R^OUXOOG))Y{ zfcFlw83t<@29IAI-pPii4BNKha%S%wZw?1?TzUNXfluH6Kn@%C4|n{>cfaEQ_?(Kn z?n`Z!jkcQw=|IpKM{`G5S@kK+-AJ<<%l8Uj-BQ>6$7m|Ej6IU0bQQXI#~eJ&)?-Z>-s!URIG>=HG|B zY4Aq7u6r{>d!bIlS3g_99j2`{6*C!gGyl5SNSfMg*^x$7$zg(_)m%!S%*)n^iY<0--2WiomOFRdTw$M(K^lQ>L*1 zZRC#D^;bRrl1q!v{>~~Dl;Ls<@aV^>Mk(`Z{O0Ix406kiy#=~T5|v@Ev~v{#zW{OQ z?(N>XK<;jy(EPv{anP4He9io(8~f&cQX#Yghhi>SQRV72BwntcIiH`HuV*1JYxw;5 zg2vfevw?wy%*DVoc!+!AWo#%YL^2a~@ zNi^dcSRbGG>iwBF{(+}xZ|GCfGmEh)cjTChg}JzgdInKgZEdS0VmexO<=oq>#_HuT zosLpCD<9nShNjtzYCGCaxm8-M^j$!5)w+e}KwO9vJg!njg@&=k+Wcxl0?8GYm^Pu@ zY1SJ8SFK+W-Esf`AOJ~3K~$|VoHXMSjlq;rZw*!5D6c*?J>#`$*8Fn4R?iyk45Jrx zj9A8$AQN-@WYyv~0zy9nQeazWwsk2DuqE3?eF-ta5;i`6{=_z4CEnL$mU+P$%YMJF z0>X6K$CW;`&KbhCa=nNpmKYell^#W8ye$DQrCrIkEzI-GvIateb=$a}1**p+Wpv)Z z`2}p2=NeQ!T3^8&y zL<|ERSru)1Yn!d@Xmi<~)Y&m={6JG08lPOR0r4p4IaIZ19lycw>iR4gyGMUtFn>jO zxzesd=~j76$<=#3 zo?THu$3W$GO+3&2^V$@f1~*NUX4B8OA5U*G-3WaExe9{vL~98p$5n<=O)uAkoH(Cf z2qhBfbUJW%cPGT@2lo3tkXh#|IVEh)q+D`flXSCBQKFu%DHAu(i*WUisHF2QsLDJ&x1KwJkb8@CNly;v$N!-YY7sF)8DKSn1Lr9!oT*>3vpRkgSdS*W0V6!v|uF9Hx=cIZo5SZt%RBM(&RX z?oN9~W0@JqQz4}sxr}Bi(Z|}GYJ8IY?Ys<% zD9hj4UMFX%Pj>6^=zPXCbyAo&2{EFKrV2z|ol2kGc}`-f74^xWMJyFJRi#tY(KwaI zy#8()S9UMc<9xZWfrDOaed)8U3)B7E<>A!(TBz2o<+n0weYw`xw^R7tOVVlDHb?C* z+@G^i2$R~gduHz8b1va^-tVLXJV~;PikVxC8iGvTz5kZ`(}~?QGB_tW?pcxrwh|?! zy?;Uo!mv@SsBU+}3_G^vLRe>(>lKV)+#h6bY-#*ef;FslXmSKb(h*OmH|+O2UOs)` z&wu)nU;pMWI6d6)Z~oyQ_;J~YX5i1ypZPEUn}5Oo^S}RZ{QTi(-aR}p0N=)um$b2r zBlo8hSV^vrDRKYyE$_emmbA>o<;pg%81FGDGThxubMPn?Cc_p`cxsJdaE@^pF_)RR zZR`(wj?+lkA}$36YfI)&;(V3-;N5P=@vvh#&ms^E+&cp$_gYI5Q&Jv#wAcq{=ss7^ zgK0kfT5+^6L=8->#;lH#O~zHLsoFWz+n~s?aE5C5q%c{M{#9`*g=&p-J?bSRBif`0 zGoeveiYTfBNtss-R(iOnKHxRD=sD&U94!l?SR8Ik&r~6x3;Y^`=OSSW&Z$PU8_lho zQ&+Uu!+O@tbvOD)d?8r6jqW8d1zz>yDI0@L2}{J~%(5<6UkbdDu_e&YmA{=6g4))N zkRq4sm6z+nbq#C@%rNlj@d@V#)^%aM&bS;oj03x2WZaE-YnTovcEiAax5v6tE+>P* zOXQY@Ooo6R2M)(O?(Xime*VmQo%!8we@l!j|M16u&v5^i|Lkx68Gro#N522t|C9gq zU;isUKRt0gp7`p`8@_Um@9y`cZI%|I>x{EUrg3DNb`Uo{{P7x6K(5J)BSNUDg)dQPJRc^vjTqLJ#6`)OpEXH0So#xnYW$vKwuGsnY@F3%q2-9UDffT?mwAbuKC11Qt(w9fKs7Bwgx2YehZ>CN6mLYF_#cgoWREAns z!q5ycSGK+A}6b7rwrEgC1oa>pSZFy5M`=o-wa{ zJqG?jB$S*KZwpg9%QSfQyNSU$a!e#L=gWnke)yhGmn*?}UY3oJ4WG_uK3-;yr#pWB z@PWx$j)Uhn#{=)CofOp@2cmK8@9vq#5oZQSg&?!R;Bdx^wlET^c|7bGJ*2@A#(}h6 zxt=e4^X_XNzWXi5`+JUl;-`Q7M}GVMJr+0`!?*W$jB(|#+m#@YmBBl_u_eJm3_#Pk zXSdt2-|tI{7p+W5NnI@alu^|t@y^z8-0h@QsIgowXLi$6{N@Iqjbt2I@Pp@gIx$Tn zZWy?G_l}R>{{R_wIp9fbx!72Xrn>b)G^Tuwpeh|TlDjd&)@!wfnCL-aYoko|>Ud{r z)uO6(P2s*OJ8Fn+M^Q<~RCO$4YV1{~1KY8%Q&PIt{xyR(wrMwaXtZOX201I-uJ`rl zPFY}6f*s1L-7;>@)Jk5jwXJOnT)9nW(a(ocox!wg8x$_Pt5%Ir+?3%KR$6ba9#s;eG| zFaMYSiEG%f$2-Pvz9TGWULGHL_x24B@82?7Noto`SBSkNfi_@v)=6v83~64lyFI77 zlelwI=I#B4w~qMuf%*K*a=G%KfBk?RC#Ji5uAe_)Ovbq#qxbm17p4$n(6}2)nOQ~?K_|uQr7;)Az zFJh&yP0VvpBWE#_-dc%iRac5EW#t#OKNyy5!_1Mtxs0&NwG3nDxtZ; zNR0>jUQxmuqOG+CRwm=JmP1lnRC+8lR^hY=i<>jJ&d+cYIo7_FJB?9;RRIC@1x*J= ze=#>tDZDY`jixi*Lgm|Oz5Zz$JJZLhRv4T3(jaDDjn;kMv~st5WdmDZnpZ0S7X*U7 zdNzi^d5+V>ukTMh{_5;=5lk6 zpPrxim;dws$h^$_{#up3zGHp-ggZaMwz50ytB*acNzT1S&c4>VQoX`M zP7?FHti1pBJ4QDU*M<4z0!WNB-ZPF@)-V%OWba`A_Ms30kQ3f}QVG9w&NB|9ghV=v zccsXDF}#T|$%OSRDTqZ_W>dN?m{dyd$lh2Z^Dq~Q-;V3Xe%i5J&g2~V>8Fnj1`b%_ zFw|g>?|%PJ`0#K4jyDOiE6Bs-R_yQj-ja{WE$ER{5J1NdD~1eMV1 zQP~trTH}Yhk=43u`k9)-Xg#-;qEh-IYOJ~uf2Q4=)xuZiccY-o%!**qjcMndZVsmR z@8*gstm$63&8mdV$$(oHDf``5U-5^Jj~MUS4IV?nS^&2J#Utc-TU`E{`PnL?ce=d-v8zeE+yVhBfq)7yZ@fjnO^+LCj-V$F`z+j~+zHKbu6u8TD6mMT?P zYw&)@w40;|x|3`m?+s?~k}(yNXj(F+#AAz)NhN7t3#tnYwAQfB3&)2C!fwz0u;=^l zzb_$&VjozpGsZjOwh`AAv)?fo!|`u%jbDpHiGG{gWXPAKkonR8MiQHt(n{l7L~3&Lg)p8 zO2h69bMxq|=b29RmW{t;3ki1CaDUhntmCwsFj)dEoHLAv9puci1iZJrefx%KI^f)% z?K;ELBjI}CZw>>0{m=hHcDo%0I5>|(r2Moyushz9BAh>8ut9Qgo!=3bfZIupC}$lx zWJqFl7U*S2>qas&ahN$hd_`Ip!g7TaiQAQ!RQR$N-+I5Ca`>VmP( z6$4#i8UqYc^D5)&Geii1!+yt=%yxl!Uc|Lz z9M*_+-T}iPxx%~qyV47*ZI33!Ct3o6Fs+0m%I_T^WsP_$3|%#3gTWfsb^`SB2t)N|1%autLQorJX^0&{lqi8O?a+9%Bl~_A+x1OU^ zMri1|Y4EOEbJfTiI@a@#TBO@>osp|&q&irx0;3^b)4g{E{pIqy6*vEMCc19XyGzRd zZ8+@l4*ThQzIpS850@*WbNFGz`+;fNaXcN#CS%VML+gi;VFKqSxIdA%Bq?e|lRD?{ z!+=9dmHKhOX2W`ZCRzh=We1GY4wGRRCWie18y(|1<6Svon4%qxAg zXQM4qG?}6hhDnk8(~g(RS`2a{VOu1z!a1IoRSLBiVwHyF7VACMdvKPJ!FXFwM@9co z!yA=Cl*9G>Yg7TKIIip#psOk?1F+`{d~P(4+u^Lp)Ft%I-c&uxs` z<-3I&UvipG%T&nUGj4BZG{%&=ou>A|(Q$5~zfvZba7w#B@n#$tpI$f~4>*A>CAQa= z+RKr_W|EiuUDVKXJmR#+P>ILII4LueGbScTfiN$`m>D1L*`CgfPHWMlBdh_lEu zvOry9Eq3swfwv)srIgPq$rwSJhbtXqQzUk*3oT`O0B1dK-X1v5Gx(90Pe0?m(kp2)V=-Qy?c&z?Ag+cbomRXlX6=O)7^b;8HoCMNV2wTd7M zqgCQB#NDIc9?vA*cseG?ZBa}&A=z+coEBn9R(R0KwJ!azu4pG&+h?72)k`|Kbo)~_ zH#ZkRH8o>OVfRva&5wNb)mzd({uwijlH+M@B{I=uiE(g+_%hym)@>uFK(<~4S&DLw zCt^Z?Si&Pyf??ute`LNqVRNdjL$DU-1TKdZ7^aEi-5ch0<}%N0NkikMJxa`p<#J{5 zpRhTyJKZr(qxfb`W~)Wt9Bvp&S$DOVCYPMDk-t<==28)q#kXXbffKHL$K1XF0{n2@v5 zcw@912F`6-eXP9F=8c{!@1UgLRZXf#0b9$}w8$(|Tts@0wgOX{Pld^=P$k~D zFM>q1Z$0H^${AdcmL_=kUc=p`$1_JXOOV~;Gh?AY%Q+@0>21#}3JmqPFc zZ9-)k2amI`Zi#UmAZNmI!Q$|gRwp@0x}q`UX<~Oc;iety%V)M_<~WQDrKO2hkwog% zvGaS@b!NBQb2i2;q6ZO$cA$Ks4s z+At*r5|hXlq(zF1W3rK85j9wq)vBi#4KK8Y90SYcg=GsoJiO&YSV>6=(j8Anw(HEG zl_FD;vOh*DN^VNz;K;VMmL6gqdz zScU&+rB{&%ROdZ8gLj^B+_9UaFy19!*}{soQaD|%%Y=Dh^Hn9VDJRhDD0N$B3~R6J2Rc76h3T8dJ}OTJjazNu*6XpLg~Nw@GFi_|PLjqZCxaEo@lwaLiQKv0nFUqL(a-5k0z zw-&M7WnGlTs>-)A-75wqqt*7S1T?CF8)ut3h9n|rzuz0i?N_kEA={W$FYdK>4^7Hf z)xc(;?_5|1F--;?ZE--*Pyf*zb=_ zyB*^+F-;@m;P7d~u4lsaxiE*;6*jnO6rb)muwF0Zkcjh2M(RopqZrLxIhSrhsxw+E z1|K(gj4#Hm(tF5STTnwOdyu3PfUHIFB|FJ1itCD4ojt@%SXT+e*h+)#Y)Y~De6zr| zREu+Jh$;mJPRA3^=PQTf5#vU-H4wMJwr-U+#@!CTn^?ofr=LG@ynD+v+loHwV~T+7 zWb-Xul)bF~nnL6DX1A-RZ3>{!X?`_i&bMe$D77T)r~$E|J5$21Zgi)ir5N_pP~p`f zM|q~938HRF#^7_77iyedU|`K6=rp0B`phc1t5mvKkN)_slFO8ZR2@6@`JSPOay`czO=vu$Pu#zi3N_4ux_GN{ZJP!#YEO_3(gU)S3;?GOwr!f z3nQkCoQY$UqUO#qoem7U9fR`_B)B9aP`nz?tY}>4t+Y?k4b_73aU-dFB)eJ$H>Fha zfJ14vR#vpEd-bOj3$+8WXpbZF{LH#-5EEgU`S$IDq)}S9fAIjKhNa%dHfr* zEdZfGM@i4Ug&zbEs*|cHur}-JCY5;zkNO&Rs1w#%DKp<--i|3c=-H8aeXu^Z)9X~< zY{wi%RcbeWgX1z*?|;?vrRg5kpJ}0Ef&#I2mG0oL^oTjb%UW@Y9azbYk=)ge-Nn3`MgijLD=JvHPj?Kaz82 zjw>;Ua7u9_6NwQ*ifmz(#@nTqb4-$#9FnB^#hfutEzr8uvisXITLRs$>=`l>>?#vZGY zsW%KYyH8e{RprsqRHNzko5I~1Ih>7T6cysiMc8XK7IH2XQj5*${k-z4clQ`R$nvUdB9*mENS{6g<0q~kA9=XDXWH-h=_#^k zi_^9}9YT5~kIl^|jV9_@IIHSybJJbO-SxC##3@Pg=t4A zt7?}Trnz%n zIlZB{lZ(}3stGso5)Mjl4{mhHFI({ zt-HLr{jP8XV$|svIrECSsmfdAPj|2GmH|>t*t!{B$J0h^ zg21Mb@cTV>@Py}=QUgmMa5lm;IZMI1-6VCEV~l+M{E?r2{>U_pTuPMZ zHgeI=6%Qw2-gbVwC4Q>$#?(pNXjv6Mszf`e`HCI8bAw7a(_Pr^P+zTR+U~N>-<1nP zimy_oS#gw`+voKRsKCBQ1)XX~6BkUGhi-l~|;|$;IU_!3Xxt)#T7BI=+$3mn| zGl1kBwVOK${5Xlx$XUo6E(Jo?R-uuQBH0?op}2VVd*bCnwvMpOgl!|c%=L0*T^B-> z`dQ9R48sT}6SjpPfBXT1;p?|=*n+gz9NfgVUODi?BPK`>Iqfal9y`Zcs!Ssb9kz zK;F-`SG77}lWS-BdRc`;z5S1Fo*sOrwtyK|;`7E9R_1Nta(!W57h;YW>sZzmZ(T{t6yfssfA|BWzu@8Sz-S%g zFtOk53G2*sy2p)^l(jL^^JiTy#BHluH$|zr6?0-OMzathl#)O(NfYdp14-AJ7P)4P z_{m9`5Hq-eut}(<8+X#HC}+a55a%oYc)~f$4|C*)@jbZ|{jb?;Wv>)5DuSy7uOz6F zznr)-OzMhvULF(7pm(8nvn}#(4ygbYjiJzbV9e9{gsB* zXLRyIpQmWMiR29038D<>zF2ViU%HV!hSf-QL{nOPrc@vyMy#CHV2mZ(SVG+dHd`nC zc+D_k{6O3`E+0Q|dH%?f6Cp;dg)M+_mKZl_5pub}Fyf|(>*r4_Vd1=9czk)`e7^8< zJ%ck0eqcXIA-tF(%RG~F;`8&F^RjUN=8j-9alWu^E4wJ|O2=u>aM;WFO$+2%whqJDT~1hipwaIoIzaO8mcJ~XC@9h&{_ziNTacPx#xY1R7K8u* zAOJ~3K~#>T6!^oyx{zb!dAw)Klkh@L?JU(czx`t<4ZwAuWREKa)fAuGpQemkobfOJ z+<@1{z@;Q_2j}$ZH^RT?Ys!J|^`mZthS71${k`xhKVAh?bM$lzQadCzq&vb$8X`-ons!oX82nvT*tIf#vxV z^D?s-q!?Y+NE?fZ8)ltJIkQ|Zq!3vyXI?HBK0ZD3xGy#(Li8q&Y2h@+p=<* zSFR-%c^W4UrvoW$T%Vq$Tx|#(4MbWXPDYGQIpx}qST#;ci4f&|LkZ5vByy_iuF{Um z&6qP8SFF-vuuCyvtYzI+j{6hCw8IPoF(u5pNcNNQ)d*yb1xGb9y*4zejU%gO)M}#z z5?7bZjXOsEUyhCKNcE+y>(;ROS}94kSS901$CYlC;48x>{gX<@I@fZKj-$!_@?9T~ z0lt3_U;Lq4**;S1bJcENXgq@BR*D{e_JSJ&?+ml!E`ylnQnf_F@Fx3kffHf*eOyezNSUSzlQN7nVq8a6iP*kUGZGbT%kn`PYyG2_eyZ5_GJ7e2i_@x!N2e0Y9l-j*7I zI5>lOeyMJ-923va&()Qbw@3mUUrSX6!I9c+Ylu=4rmLh5#52 z(}9POrPNK)sF&*tKRv6}|=qf}#bIg>-=FTVX1`@@l# z4a;T09S+#RbGke6{QSgqm9B#0IEwHw0`pVQ4hmVcFA&M4UX>t>n1#GjiVbBLSz!lj_=< zU)TnjUn(swdW(2H^D12L_p(ahElrL{3&x z2fg$;+HxeWE89G?&NIvWLLxH`dv>QIkLNQlPcJ;4UwA%W8OI%e_1nMTxSKFZs#ILA z7aq^gJYFyS`SFRz%SE~>_>sX&S3ayG+kyN0JKnu{!~L|w7(+~n?Yv@)$HxIbImX?Q z)vYYcN?avzz?BB#xuhDV(iJgc#M+z#F;UuPrs~cXp0~}?oD9iolv5GjA>feE&2T;w z!ouu4FE7v1@7O!84E%8T4eM~Id{C=fD4zTUT2Qx+{NB4Yn?Xto!}S$1R3kTZ)pv?$ z&ynx)7oWGIn~o(hn5Mc?+k|_UYt`InOqC97pp@Xb)xzCeOw#_mbPq7??Ap&7zWltq zpc;xgSkr&2Pw2nxbudt25al~z;Z{0Fe1>|4plaqKhM`Jcl^UJFy$?q3=lHskS;x$_ zGiWIh835~0gItOcjH}W@+9y{sA%?94?nh#Ztd}d{Ix}C-gt#%Dj_ghcY)*Xh@W7`J zANlFeFD&OPv!D6<5PARg*G$vMdX;vZAJ5PH^!&nQTNnq=uhdirB5|%(l$TZshrVC1P2|JLYfxig0*am51(}#nhfuuk~o# z+K!Hm1bt+htHos1(7Dkxs_9;%K&la}$^2$ivUFOvl3zRKX(`tdlF?$K6=Lh4MVM6R zotqZ_!n>kqk8XSNJWf_Yn+!^Y)$ z;WE#>EDKxM*pDNp{a(tpT4~&6tS4KC*-a!1&-21Gj-++1!3y)b!gA#>PQ>}b;do*y z+A!rr$N>|Ch?5Z?XUrL_Z<+-S457Hgj3fc%a$e3QaDz+=f@EUK#029w@p68FEJfJ2 zYNS`S?#fp^B`YHqsx>mVTB%0w(({-8cQeoSt~Gm$zCW*G{7#bT;x(r1maV{n9zEYK zUR8dTIWelE6#~iIRJ~f^L9W4D`qXL>tc=<8xk|*>@utT^X5zPTr6*Z@M{&HWo`zhV+$3rvIOxZ8^#7Py|DxyDuU zfpf&9Oz;cuzWo(k&b)m7%=muKvIXMhikk*@<3KclEd=TOM@GY4O&0%i&INv!M!C9n zN)tImvbE$Wt}nbH#l)J6KRA~&ybF>3P zxcpgtxpbNpI*YN=u|eY(+WUypK+DKxWkRDuyJ=h*TLnpdTJhf|Nj|AG54AI3nM133 z*~-XLDHQ0>%s|dvN}!zQa%H*-R(gY06@xm14ssW)UaisH8X9bvwWDm>pqb}B5t1j7l>F|WSEc}Rf6~9#%?@9%&ci6gv{y(mTXzhXMX(fGa&_Vj>BOTc%Cx5{f<10 zT$7PDBuTmmtZpW*8{0CoY%6Qd4Bkue^KIqjdgkHofy*-Eosb|g$|&y;~BJCwC~YDY9HOeIu-zbXb*KmH=%`i9L}6vdpt2Yu0xt@Ring zTAtOx<~FJJPm`o=vb}0IWo0-xyZ|#j#C6_EfQPF`pB9>! zoAB=Tp$hV{Kh{u_9;zQy6>G8dK=&(@KL31c1cMdF%6Sf!k7iG|+nPJ{%fyL)!~ z6U(wOdWUzGcW>Wetsxywq!^jTfqA~N2I-{ttM}jV`11!WhU5Oo7B+GWR?Yn&1Y+jSh_0`>d;c9m!3H>H;mN(+Mj#B$S|t5pB5N&Q>Eo5 zY)>>|&9ciqFO}zIiUMj8Y_Za8pA)B(Q;luf@AY5Pq3DdSjMo%YN8*Ys8&IaZ%oH`M z3)i%(sm7-69aPW0dY(WeQP8%|xd|2X|6?%g=W2L8!D{5t=c=SL1*52h(`WyZ)Oj^n zR~blZT8(>Rlyh&)8;(KRkR!doe8Hs1*I&Kox^8^+_A5+`jK>p(jPagNA3v}yS3X^5@-p-0aA2?o zN5XnZ!`s${7$RX^xz1OXWhRuw`*A!nPL9EO;+8PhGx&+HEuv+tCJ0C+$&|sD9MD`M za&nX?u1I1_ny8;jh-HSs@$~dbpmK3LnHb0^bjjz6s&tb}7-L~>wdOXTYp0QK4sWJQ zoT-)+`Xf=kVYsFl8{>Ag*p1$6^%fb}o{&1e6a_>zlGQ>nYP2e!>)2AvK%T2rKlFQ3 zkBrjnwcV_iw>EBl!IrFVDmUcR!-{sTDFV8}m`*AQvv={*McJA1avAWpSiOxh*R5Mf zB_kCo^$PP=81?SmL^FaJQ=mu{*-hGrbSpmRDs8$2G*Z3dk}Y>xG#%CwNs>BPLd;Up zC^1TFk>Rk%?+(msAf^BjuJg)n+Otdx)3hU|i1Uu+a>lxW$1RedKQm1e#$-u4xV-TB z&wt`LO&m`5WHR&96X|khKkkTo%MYI)IqZ*kV@X>iW~n)~T(8myZQEGZh4Va^8;a7@sntI zV=UKo#;-GG*q41#xM(U3S|j#^>K3e9Y%1+E6HRB8dBtEwS>FB_J-`*iBhU~)A0m0H zaZRz#R>4rVUaiv#)l`cMsY;36^lA$AX=Q$u*E$WXy`UA+`iQTlCf| zsL?@-+fmAb0-8xdO|t2oJ!Nr=5kX%hWrORcqy^J%EPnm{`bqbDuJi8!kD>t*PK1u0-L>eNvp8qS!LTd~A;LV*EL-BdY&_iEvxZgr z`wk;HMw~SqPH(_@&fotdr*Y(PI500WPoF>Y)qcn59S_GncXvl#E@!rRW^@C~ys*qO zZ18k_!gx;zfmqV_))1MujV(kBiT4k0`2Fwxl5gL=!TTbpQ)D-d(w{dcQjmlKMNlDb z6)xIRU)dR33eky6NAh$x2`z}8X~)` zk*wP7R%=$*j}_%(Z3(k|ea>~Pjfj~}Du zQo$$B-TuJy`6>($1DERy*Xs-;VxkDT5d`S$B~ynlPg-C@Tx zN}u863|Ogl;jAN;e!D4~QhaVJT@s8Kv$9yIl}Rx|OEHOiE9F@7o#pTAEOo2QmI>R+ zI8AH@+;ouITxDO)4c$<}XjS_uWAyvn==6q(U)xzwL`b7W1*|=U?#{l|Xj_qFq1G=1 zgM6QQW>>|jRWu6pt?;{)$Zd?DD>^W!W(Vz<(1eEe=dJIej%U?^H!LF$>n2a8g&kI= zYZA$J+Ev5BbV0>0r%PYPFXI^`62{g|(i>&uR3L31Uws3gJCT@EgDu%K>tx&9@_SwF zTU^zik#(o*;zhS($B(!dC@+mrPUfcFAT?l<8Ds~f?I-hG^U|7 z4b!7k4-JO{$3ZHSw9>rXT*>4CB~G*u5c^a~z(O0v>SE2s%>`X+=vqbJ8Tz&rN1TBs zcCH}EH5XfT(1`ouy_X__v==d}N}jdG1&ejkbWhSLJzi@Wm$FE!*c1Yrmxa`$yKMXu zrA0;X)g#XDB<&Sym|K`3JxeLQE9k9evV<&DbfOYMOp%SDo}?%gq(0>7?b^qqqF*K1 zxI%YvrJ*29uVNic)~KooryOMwdQ=pqPBv##-(*T^NXy87W+FesGH2RXJ}v2BV#gM( zsd=igRdxU+C|Y99J~Mb+bBX=dJO0#(m2O%U$yfQVs~f7r3bmbHLI$PXY>EBm2M{mo zfJwLbFyWlTG+JtFeT4femIa1@vz~t4V#kro%S+bIaykxp>o}bjjvwx2=Fs8@(}G(p z4GM#n^hXo_r$O03IF7VU$HmnxZ(h8jQPK%=J`UJ<#`y)?80l}RxUAsyZAFL#fs!F@8j7(gw&0Jw%GF*7Lo$Q)W7_|i6RUw!V1yo+IX4Va!IXY(?${Q>Wt-!RcI9rUSGXZxRa~?9Gt2=dUzFxi=5oH#6=_W3p4YLlO*kZcfCm-vRvJ8>*aWV1@a_{zn57B5yc4WuE4 z#nF|daf;QFnx^x_bWF3QvT&$$zb-W{O2(n#qZt-L8t+OzUg)V-*+qq`n)j60<{{B; zX;CRt0_*g!bkbV6oyA@$k}gRKMbcU&RP+?v6rxXCSlswzcBv#|5XMe6ag<55@chAp zN*?Tbt!edweo6?SmQndZ=-=+WPDva-eLsH5p*g4(gFDhU@;x6sxWHmG#<`dyEQHqg zEq0k>lY*#8m4Og2ZA+sS_O#%J1#LYVX?0?Zk>S^U&+6iW{`MKGt7{Zqnx6;9^yuk& zjoB#Lsg>T!S`y%wAPv){94^iRYK)ZNX%j1hLex;mbo$^hDtV42Sw^{#i7?%`8$hytvi|Zd)0#j696j{722kw={K0JC1}UuPo=Acx7c2>c!%p0 zw&|ItSvpO6i*qW@wzWu}vUqo!Soj{iFrtfLAdg44MmlHc=>PNql%ze%c%0HlJBQ8_ z0|!}`3zC#!y+Cpwzy`(QJkzpZnwHDe1?_56@Aerzi9mVkwk*n^Moj0)6u%|!xO$$6 zhEnoJp`ju$iUKQ|Fw~1SbL^rH1AQmd29gg(-fxVfpj;04f}=W1eXi3RH~yWP{6wRgfdzR5_)t zV0C&76^y1xUlR!}7at@+lRcef-Go{`B%u=5-K{zK9_L0vXu+qLWMFn4qdZzkXn>GAPs2DuqYK z_`N`E6#`lt5hgK4D_t_8V@WBTma!?u7*Ga}msqb`3Oxj=cNXX>wBaH|MoSkC7d*4~ zOio~R69CgN4SS|}X7+(kZeOu9t=NV->DF!R>8>-@t|V$S*(do@v|t{yfQ3) zX7)ahL7`u9x_`vQ&X|iD@k%rM!0bery}Y^LLu+Ejl|#i&oARvEgG}0|YONG1!mpV6 zJY0EhpQd!gl&O^xaeOM}bA{NGK+PFV8HSdGi*)~W!9W>;9lz((KPhM$s(VuT@8r!c zF=bIiwa`f_C?K@0GjC-roiSq8YG=5Y!eI6LDd|Est5*5yhuSrNuUgI%tzX!#jJe1Q zi-J|_BnaellkAmH9%d540Kr$Gt9p%DkjQs*oSInONwr>G4h~>LV5fVwPBDzLbW~It ztt1;}aZW0KyfB=zR){?!nGm(snbrV_je21c8(XhV^CYu@lp-_+-K>CsUo4H*eE#`Q z07JjNY8<<_|av{CM=oe((_LqSlOpS z7fI1%#Q5a(gAihT>8IhSLQz@s8C~eqY+nF;&jC%%J5D9gURqpo+WR$4yry?w9Ua6%!yRg*QESq2X#C z>1OEy(RMOGJ9wGRLxkxq0c8wnia=RgTzHI&;se3O5us5#x2qMV>2VrPC(ruw3WB0- z8a8czf9ioQfp5%CggEmB+A>atUzyP>2u`LoC@4?c6yy$%K&%u%CLh+c5QGuZ`;k%e%=yGR6_b^wg;6t8m^z^flp^FJ z3Lkm2KwZ(iNz+uEa#mrJ7?_C6pTLgV<(}R6*?vsvkZ~cEXIHdV$W!SR#YRq9o%z9} zDTyF*q+y zE{mmUq$@>>Xi(Fb7!#IqLu0hm*?M1E*=XsKVWShwdMCrYt!H~U61=BvTiV93A5R!# z7-mP?bR3UICg&NaN%~`H!#qz?&#S@4`sT^Hm|3OhRiHB(yl1z2zX0d^)6yWNcv<`77O9Q)ctB7LIBkjKPEXG#}lPMey}nPqQe{L(TcdFYC#_{=+8E=Nw1rQAzeWd2-5!IM4@ zu^{5yScq$r^*PhCGuNz6-_bV;(|0KAXpAb?QVOSZY@sS~uUtqj_TKwi8qy`Q2zpJo&%qE<>Xd+CBXIaq?nc{m-8 zSnnAZ$@uE5XMM5ZG+X*sFcqB|Eoh{&N_qp1czoE@d;Ff8nV>h-sNwt)2@If+`wWp9$Oot$cOr9Lp8KkaDUM z=t#_8A>u3{lc3GgFx@n=#^mM9`=B7%WC57E3%)yctj3Af7%&3q8x=E?qE~%(5^t3) zm&d3ZL$Edzp)n?xBuZCC4JNM5BO#wgLKP;CS#fqj=~hBK!Qr(+hZcfNHt+zAv~|Tx zqdaRZO=CEWGvn--WA}@$YdMWGi=COR^uikF8LKtNVI-&qi)J{;P_khhY5NtXUokC5 zx~nT5w~w5LQA#G2LYtP(7_R!Bt`Py^7ilEml%id?5~doD4EG<{y!k9Ute&F5GkOW} zS=Y2%7u5b%6n$>y)pQ-msx`lpC@9q5j~{6j!%FI$zCv7A765V0fr^fNT4JGjrBXxL za_>bKspv>lQdN`}Ss!$+V`THw=M_IH${RV~H2v!#=n{4zpYex`Ug^PnuJUh{GN#VI zo6;960bO0E{2p&1b6rV;tnWwFj=drTLULxvbyC5EShX>M1)$r|y!r_b_y0(H8qj7V zg2_N*N;tt;87SssSfy=S0s$KkZKNc8rlWHyr(;@~1Q=W#JLw%Z$S6@eJ4vF~I>%YX zyB_-~M@PDhkoIMNFjlz6#~sY4V59!b%c3Q);q`Xj5e`bf6KUFQP)Dq$@%oGsPJ( zKlvNTg$RjHvaHIOzGg(C&6GBbAi8r&=?|lgpRlZ<4G~Jjms< zlsZwu4donX#y~_S>6oC9mNubdZ!S@%4;W*(+;pHcE;yPf?R^L|CJ5672-abg#(ITn zG)j3)yhg5`QVP|!G+j@yiwu0Gqftg;!plO_bp#drO7$H+#!{_aunG>RiN!0%Wdxq=4dXOQWsvtM90usuE5^m*mBxj@!`&ShS2xUdW_vtH4=-!E>3Ur7 z+~40ZO%vW2>0fOvHy3MqV`7&?k6RpzcdXVuKmTw4jOQn~PGLWalF6iUPE#odIvpcDu!@2ZeNmovMbJ@5Bp@9ti()h)@n^2Pt>`X! zoYN@Jl&z5Ud8nyNk$b@8!h#G7^Ld+e^VzOQ`=auC^KB-0l5&tMMRvxlp}K$|kRMik zqz96rZ`OuSm?`hzImD@RP_u56AsU&GxUwYDP%xb2+|{YaZEPQC{5qC(YxQ^jlndUwrS!NQVGduZE!Y7 zoVJOYI41meZHu#3nAJNW5@WC+9WsK(hlRuOz;QUyG%f4P3q}{%?{^%>Nj&9?1Jg20 z6UMYm)5OK9!&yhr4Wo5fF9|5eVUULK(}dCnYb|#V4=m21ePD5xahhnf2(eY)iN`xg zN6p2`*p$z|_%WNy8>V^T{(i^$a!tT9eD{{__7>IkPfV$zEkwgbrX@{tR7Lw{_#9z% z8{^O-GGc(I`sgY{UeU6R{*AQK-87Chf50;M58> zt?OKxfcfkXe*PCv?TM_`Rl4b-g)`_)4y3|;71S+SPsN~j-P}#8hLp5Ks=k{wTnwg{ zV0rxUB!FHxKa}Io)^M)L^Lo?ys&i#{60aQy5wfO(6T!rs-e`d5LjARN+hw3fT=4jXNj!)f3&NjJuMnrTeKGD*&_j;Ws0Y*D7e4ucdD1jL^9(v`wA z;>kD0U|O9k$gK5XjC6_U*Nls2e>mb%n6_hk81P23JDu>R<6*mHcRbScD`w}gO0#$g z_k^Gront=?OtWLO(#Cf74(lA_ESXjFVkHcsWJKt^ECd3puH$mmOFu0w<&r88(?|{N zi_h6jmhExi;bF^g7+A&$dpcpd9({4088y+0WU*CBC%s2GCQ)xmI}Di)LnQ#Rwu;}# z4%{>3mNaMVxFLW*z$*?@3WI-_#aOI5|DVj{)%Ei6>E?=;IYHw5PRxZZnJuBL zkEBs6M$hLc$LS`WDngU*U{1fHBJ5d@cld1n@iTMID2#mGIAvj1WVaEVuQy75N$Y~PPD5P zw5@c(Q1Ec~0n_#L7niKpJ@=3I%--X)=5RbQ9FJIQ*`7u$hG{s8L(DWBPA3kh6PLHQ zY`2d9jMFGKxKg5#V<>2{3tDT&dFE!bV%0V|=G-VPvws7i8_dN^l+j{L)y-(sC( zI-Xc}J-h8Ar)gsK@-=C4VMbt?e#jrz@JRUMW2i&J~(b$)c>7n2`M*8GOa- zCP$eteQ6h*BL#?=q|=&`wy$7#9&McNtw^9ub2a12%hM!en7$P0J||%0drq1uohg1H zhcupOwVb{dp5%h2lZ7H3>oC)Ks480`6+_AIp?WrnsRim58CEYnJ)xi^gU0CkI^-gY zw4v!fLw(-~E~V=#BIBMzeWf+3UDG}Pg58I2`2KjHJst_pLDMk%iDp^Y#Yup3Ffv%W z>3BRIS(b%QZff!=J03TuuSR5QG<|um~aLR%6Sht{CsrR+s%38V=Zkogf zzqyqTj>Czoiwl|n_m7VR?`gW0(=f1T&9vXLY8$Mx41+WfaK{tFAY)0puFpv^n3mwD z2e*PD=CMAA3t8|rgPN*12mF|$0#)ay= z#1wIJbzzAdyUO2HDLqXxk`kLF4SRO}B3UA%oJ&-7wuZ76IY%~%0ri92XhA%>po*+X zlb}(g-d@>WN6TCzrOWo_?-`UajMKol-!UySL2JAd?ey{C5v3cvcZ}mm2+%Z!=g(iV z>3dAmaB=&bVCOt~#F*GY(0i0IS%3yFjpBk9yIZZ+Ov90;X_ajsOT&ypy zXqtxo;mE^w%jL6Y%+50}li0T7gf`N{YFcJ=W5j!`U>--hevLxCsMqScZzx>(0B&Ga{~SUvxg8I1*oVdVb)0i!j${fSn$eERw&<2Z4e7d9{6(DZ$w zCsjS?C%pDUhi5vtcumr?E_J)YxXGiEj+2^Yp_hD_kS9CKsn4Z*#jMfO5(-;}P*N{b z>^Ze~m1B#FC_@0EZ63(}8hPf>=ma-HTw)^TVqlbC(@#~-XOcvLJf1WCoi{jLH{IYF zLnOwEpJmCHT=&8tDJi3zJKjk4M+8zjnIbhS6Rjv+CyP$iRX9l1KT@DKuSwpfl5GEOsx71PNU!plcg8 z{fag|4Xs7M40ho(S=Ki%(KoL+d1+eE0o&7&*;)>}1KwJGGn`njJKns0!y+m#I6<-Cw(tzVX8Hjr<<>H_C{JK zdA(V4SLaY##flx-7o}6aS;%Mu1*T~*{hIaFEpC}Ooerqru)y(fkVbBCrmpdxmsgiu zZ8mg9t~;I%Xy<6Umf#%65o@_1{$30k! zy4Xk@b(v}U9v5v(qa+!FM&=|b69=7XSSA^0X1(-SHl2iNtam772!3H&EZgIO!|}*C zO-#6~MIxr&I#$8o4ITgP@-XfB^|{rr^> zD+2$=apc3tJ7&AE%oA#!;;0qRaX9hz!+U=8qaUMZ@YbTcE^EQ3@VI6#AcqY@h!YAz zeVoA295Tu_beU$LQmfWT@0E%^qk(hhQpSrhk05Ex>cBwtdt~^C0*I_6&99@M`3ECW zN;s=|T40_CHlQl$aJElpP(sCS3bIi}3nuQY871Fj^?AC{r1j3O5~>YJny_N-e64u6 zB1Puv&(0l6IFw(g^QaTcKaj7G%{Crn&adL86w8Apa?h@ z1Ti>IucaepuokZsCJNHU!+u;at4qH4(eL6GhiMwtmm7Bb0}tB=#@HlY#byE4OMBbV zd5+7>>@1u0T4oK?R>-Y5rKEx@(r}E|OZHTGy7DL!O_weinbe}<5{5Y^_@vW{Lo`(1 zlcbt_jcmphjhaq!o*!S#QWbeY2f4PSgw~QFU9S3eh}|PY{2&d$j{HrAzO~dk)9XbG zKjrWmMtdKkomrd#*;7bS^7)>g@UW_WNl=#huuANvPwJ_HnYk*PrW7C~?H)~m>Q=Hn zTiGwFIzUwm5N#_EKReyDFmHBnHEW)|{t-8~FKIS6%>J*LPg{mzO;BYt!e4Qq`)dsV^V74>UG!uZPZCQe1v5safp_gv8 z#s=`l@VMJEd5`N>xXI#zqEUwR#RbRxj?JpaxrMfE7)L7(G9|;ZeUPfAMoa(c;2l~e z+gC~lPqU-j+;DsI3grWxHkh_ySr#519@+0tjKhet3mpp67=hecAph|=vN+4D%Qc+~ zY!?e%M=@*UmAaOumO_E^vb!{MR~oy8Gy75)T9MlgCn5~e`Ozz1VzfGdPobee0&U6X z5h8Kb4Jne2@=#!Kq_uLKz)OL~K7X$&RmjKI{A@n|{h$9uq+-(Sm1M(Zr%>uumHtjz zK5L-(eTw%sJA4v@RLm^vPhAL$mO5W_AWa=q)&C?&9GNokE}ee;srmv1<2KQNsJoVDx@N7_~z zps%}*X`JNIX@l-pEXxR5Gdqi&7o2mXUsk@Ei&am>>edIwDv~K6d8n%A>1PVf<9@8zJVV&~SxnB7RlL6tNQ zO4ekOCQ48;Zg`-yvZ+=pzebxSd3f`~$$}w1xD>l5!Pd0SvWDvD>S@*9@pDHOsc$qY zHVi02qV`@VCRXx`+)HBkCr!(Jq2?2W35R8;G_H9oHk_|Qt14?^tuCJI5N6h*n z+SJJ;l9wj=M?%hTKC1+ZKT{{yK%wglaT9|)`Cc7~%?LF-$+imdxabX+s-XgsvrPfao-i2c4#;sCu#ih$mnSzkMt4MjnwPr1l zqb6?R4QJj@O16@SvU$1`6Ibr~bVS<3Bw9i`e>y&2PvtnVikP|B!73jY^4bG+oJpx7 zT(ZMYRrj8|1E_+I2pFZfX+1CcmcRbz1L&4vv0PqUFitafE}-<0>&9@=YW!i3)(xx8 z3Ok=9Ug%`%-!LzEaM+5#Znx*^*)877yx-Y*hH)gc9m{UZwr4*K>~=eb zalkvvJWm9I%-luA0cD=XXslgWwVFnQohP(bv`rlRt&B|ZGc7Ma{hV&Spm1LXKj(1Rqg=6Q zeWr!;m(Rj7J@VRFl%9#Wkkhg9kEcMFfelvXBTgDiWs{(W)Gfx2L{YS#0sRMaZnOg_*hix4QDP)+-_sDcGTwh%?HY@HPK5~0=gLbf+ zWmxt8IIvl*Id1nX<4IcG%#P8+bU0z1w3S_E%e@T}3YsS#cYBmEtT!7*yD;A$@r%VS z7ViSO2{J9vT8vV(jbwd!=O8w%YnzUXRnKbGptT`*h3-23_+R}QfBI*C#^&-0Phh)0 z@XdE02`=!!mizC&XBcOec}6==XBvVw($=SGWUdpEyn+`7@nJ$~#p&_DfBwt=!izVz z+@Cz{^$S*)SJi_`bdum@1y2*>hKd%c5ukW^RZPao4?Cj1)EYJk;0%+AP32;4yU*{2 zvly+6w5gLclIBkbCE83H_Q}6_?Irb-0L^*1-nmCMNr_CFp%~|-G1qxJoO3!ZOUw+E zap^gnK6?qZpEE_${F$pM4=(Sw$`2(86*=0M>x6uI2(?WeAAZ)<<=ncgz7~x2Qsdf^ z?Gxp7IKK}+O?>~WzvKJ2U$Niquy(=pE!G(PA{9h!)9~`TXFo2C)4=z4A9(rV1#{DJ zcR1nOj(2zW48uS-&1^OoEKMhMw%#-Nz_i^ z#Gzj)^|H~>866A#qo$Q{3K%U@8~Uc9>pJ?blLiAQLf7%LKl~H^x`C#_DJkDGO@s4_rt9(EF^mU(^yYKa;@FQ{ zcKa>&yFLBIEiXU&g6lVLq{bOY%?IUK2*(6cPIGEpE-a#hbPOpEQy4cX5~&I*VbDUw zMSG{F#ELjAA!Edd&VtI_GlYOD-JhmUKyiL0q^MM!`xN86Pf%uhHBaBjxSJRgtF%Y{ zEotw>oC!T90#2b367wr5RWsFr2|B1m^g#;Ha|oy0PvZFyp~M-(hfoAe1vf}cls&$Q zNeiUSX0S>D`*V4a>o`LNo8j#GMNmg9p^_wiqK!k~^zf16;~o3$LF}m@#RV>QSMjuxrtCz27x|U&ol07^Qv|2N4@40t@>2T!D@BSXDF@*d)B>a;exq>|1K_>V4 zGnDB=Nt3LftPeHcl+@ewc`~1JmSL>DEluG=@ifPYDhcVyFFtGk%$y-569rjO@aJ*o zm?)wGG__1QBgjnLMY%t@XGskIWTo%6ihhH&GGfHW6qgbsse6!mzOasee zIUM%1rbTJZ?ekl{`RX?)1&dv z`8v<>ZM31&2CH-q%>{y_O$L|yX#6seazWH6Bnv;CL#Yp$t#xcWptn_2B`J5s(sRhd6JEq zKtYj}@s&Klz9`N!My}42T~<0FkRo5pC6j$qF;;SJsj~ym?jZp4Kn%YpoK!Km6#uR) z{jFF0*{b@ic#j0(kdq0u{v2Kl&=e3%7 zo*_7v<5s2+EHid-=n(MMNp;TM2U;Y-qiGE^S~8zZBLc{SYDDu%y(u}AWwfDf8XBV| zu|n(kH#FLaK%imlF1fmS$=!C(@$Y}lkG}YvAAj+glm>c-bB_IS;O)2Xc)WjPnP;hw z23l>TcG-K3iF0gypfN4ZJLc1o+uIjB><`#!rcs)clS(IVEf>0F74xRU>B#Bb%=qwt zxx8TW@)fGCh*WDt1l@XN}rI4)>-IREX$`)ZwB$byD(2qUR8=S8UjL zY)BAYmG?tMS0pD`NeD?yUBXDv6k<-?q6(wejwh9*71b+Vs^Ud5)UIHQQlxNB`u|MZ zCsYN@tC|#Uh!sro7=eo`+ ze3X}~@{JxozUT4%*F4_eiF3+(nTl>&R1g^1G%ZGJNu&s1jHd5a^nHgp92sYg4;|MR z8@#u8E1uiMI_7y{whPu-T&xv!-r+-=tE)t&$PEhNm^@QS>|41{gG@9`4e&Z+XpAtv zQGr%Viss`fFwHQJGw3Q;a z;$`9S-Pdflduh$;Jps?<#RYbl2-fBHHclx{lVx&nr6P1~8x*iT4NS2*NSRi0i33{`|lHw{)hZvGDEJZ@FAO=hHVYnY?3tbw$vMX`EP2 z6Vv@2Znr}}zePQJMlcPTed0am#*5jk3ZR47r;(;zVz>%vro@X3q@!~tp~qCvkX3D^ zeG?rfMc)&g=U|j%I|Z4B z*t9JmrGC~)2+2DeM~lc<&1I3Yz<~5}2BHHw39*PALTT*ooI@*EcO4fOEBSZbqjk&Q zeS6P`ljr*4l4sX9tXC^g@cQ-{)8WAObmVjxu+H-J*I(23J*U$^>piAv`Q-I0-rqmc zZPqgI+Xsx&Xl+>BLT?&gJb%t{T<~7u+`_Z#4L|#01G<}cNig6qn_9s4m`;P60_vrlr^ZXWdc^PRY#Ag?x*+Z-VinOiM9#vvEYLFCG zC4}s44k0?JdZlY43u?hd+`s*j5AVLkxCIr!Ig2t4kNZQMD6g}W2>_|v4;qHFR{xC}FqmnsF&N;5Ht_YLEPYbiNcsCI?nlD~|ijDQd zS2xdi{^kvDKK+EI?`aeS>#%C3zuchKJw_WYt}d8==W~`}WYrq(PBV|X!DDiyBc(_R zO(oqKnJY0ig|q@fn;{J!OCg<1I8npKsRubcRE2_4+M^03xhDp&BKj#>xGovY*NCTT zg0EtrSuH~%>7q@aXqdTZ;l>!C14)3g#AYGc^xumt|`exTo6O3ky@94E(U2iB_&(|0T<$yL^E z%YOUFahy4vj@+yy4!gNnPJs zZsEHR_k4R?*m<8CyJniIiCeUB(w2!VDhFsLqi9|s+7~K6ObC&QGo~h24Mk;}vZ#`m z8Y(Y#${5KoG7?>Uy9sBXl4F`7t9C_Fba}zG3fFOw(dCb#lH|#$6nBIWQ>dV9fugSb zk@dwvT#!REq-*9rKI*)GRi%}6<<+je%Cgz%&yvWYNP;osJkxy7Pn=N#Y_ymgD#%oazG-ROR+`%>5$sdY z{QcXH%&J8bc=h@<+N_wJr`LwbN)ImO9c|a~{@r&hcIL3%ayTC8t}l7{>=|AOOkS-w zIIsBc{>{(%=9};M=G$*EUBf4ze$M^74=mG!Hk!k@Lz$LUf5CpY=db?DU-57Mm;Z@B z|MP#t?d>JM{_I-F28>Artydh`ip62p{T{GvaT# zPf!vxnb}lXYl75@(tQ5O+H%-Hr_|7LmkG*5IZ+*7)ltR8myUxX$FR?^-&e**<(=HyydSe2!L%#d&szBTd_IdAXr!8*Xo|q{6Cc z`Q@*Fftp<&K7QIAz{~LSrtP>l@A;E`0+4V%CWOJa}v@_d3 zNtwK%=Wsiuy-M~>5ZId>Yu;IQAK&xg{!VN{2X^y>2oQ9JKgc##)nnwB^69~@Y30!VgXssCMMZ#Ax+|wA1v!EJ-R$||}80rbJnR{zu zu|d<)nl{4Y(z3_IX7d5fZ|;w5y$E0%NQAl4_;!zT1!KDJni9x z+3nc8d4;{aWO6=ROv(Jp_2?O(G) zpoOktc;^zMoTqM(SFtN)bYjTDAejqE8rJp8d8sjtD|kw|S3J&#KnNatIx!!2++1JN z-CS|^aL-~UE^e;5xV)t6dxq1AU_BRo&+8Y@*m}>_NnfgIUa&!ibf>!2#^~G~Vq+Sn zWrkkL3s2KrB(L&>Ml`NUPA#OkpfQH7>uHRpHHNP3Xta)AZP_}lB#{H%@T<3X{MFa@ zwEc$bs~c1hySndN4u_KrEE|t3)}jrZPP5GO-5nUG6W%RiN-d6g={Sue4#g*LUb8I6v@`$nzx#J|s}*+-kNoZ5|AJ@F zZdk14u-|cgdBJkOC5%%XL~fY0!Ya??JWJP$rgRRpjF@SS#tZ}DtG8T#`iB1cl08Ci zf#{P^5PSyA(fkRSE_9GYk3?6T{hRBP_-%tmQwNWvObV>7ghwS#Dh&qYIIoKFzmR!S z?6{1J$^E3#Tk&W1#+_;D^tE!a#JD-dvhrRRK_CZZK@eeZhRl&^vfd1-icv+a$9aNk z{4CcBN0^-%o3fq~S5x`l5Y7`Y>fMj7g>3Hz?+MN^?)H5D)jxB)R{Zqy&oC-*wOQl5 z=izu{o+q4Lp-qb&2egN)%>|cldX$E7J`#eA3ej;ALTY9po?#>Qk?v3`F`Hpt7MzoZ z-9(6NjE=Bc(>5kDtk}G(u19GVwQK>10k}U*{D1%O&wRZ-arOK;Kl=Q0oDG<+;WSRn z^MZ_G89AL!nAUI{PJFn#XIWF%AkB$kC35rH3ob$}zzN5M8xO(%7x$7B~Xwwvy6q~i0dz8Gv znKr7}ZidGdELKR7e#M|Mpd6J^<*15U_ng_&XHl`7!{(3^6B3~(Xk0(o9B9e>rZVp- zqz7&0osbl2JRm{n`2FP2g4l&HN`iQwquvxEpb#u))j_4qnMYq>i+&_Mga{}{{Cs^rN>4OMFmEw)7K8`!Fw2hG}p_oV# zg3kpKZQF_WxM^sNqBRDSgp*NXS1XNHhVQon|L1@CH4l^L>iUv5x6fHC!@-V{{J&Vd zu`Kh%I8BmRF-y~QYb_6tTjpiPIO)XE7!y+;J*&7 z2bN1ax$ilZNtWqD47kLK76B8zhaF&Xkm_EVm zEMQXceRb*p%jv}S?bkfKeamV8$h?ePzj%&!3yofhS668^n~w2#!fyA3MziWWHf_VY z@7d^6K9C#m1ij*lO8mDQb z638e;gQo3!v}p-i<80s;Uw`2L_?uthO~>`i4PSiniL|IuV01t&3*I?~(+Te!P1B%_ z;;XN}V;Bc^yCc(ZjKv2KjC8OxMyiG8)4;afaj{wR{@n+-kGO7y z+9<+kMbj=5cDAUtjiX^)6oAoB5j>0a=%z#IhGCqrA3m_(@A%p8|BRjUY!{D%iZN@U zU%0Zg(h0evM-sR>n@g4BYBMd9YUID_RMAYUm|BQbCMG0C36LRFIo)|KQvGQ;s!9<| zp_hVAGt8}D1!|{EsgSb|b&7YT8_ZYF_kXr;Qq>WvmLo;8YIJt|^0-*z~BD!dxCRxreSrl$+oc_Cyw*X zKY#r-uV1|6)9VY?n+p^@H&<62h8^QHok?1NwlNX*i#GEFtn)Yw&d8JmLPLgFl;_dJ z!DMaM(i$UkeH*cD2OIdyUw_5le)o~rKlurln+?xzZdk^d-~y^?=vQlumNd)LJmHjQ z)vx&HFTdn?JhDF=IqbKw4z>`04IX@;>smJ5is>*AtYh=$lK0=gXZ!d-yK4ExFaHh| z3^$t_E_6e1j^Gzwy?(~O`ollMEsih0{0;MIV3{4dGko~?k;8E$xWHPixxBif-&j7p zTj;Mg93OWmWw>4$PI0!dQ8MhzXcJp3#pd}0g0(c-&<0S$%vXQ=E3RL^5DY2ulcN+g$g^lICA24Jn$|iGfqFD+<#XSB-2v+6TZ;n2xbCxT> zpjJ`^0_TYbmFiAT;-V>ISNIg-squfsp!vq52d_*#uS7^(AF4_#so}=c%&m0Fs%f4G zh$8B8qDY48<^D|4%HF~>@%Y`h+q~y}d%we{pS|IK{rCSH|MZ(* zW9>}av^>9k&APk9FN<8+JCtD9>#fL z*d0(-l0RJ9qj|x3%in+V71JbB7WVr+c%Nw~Xh8`^Ym9DLHEUE*teS?;KKYFA-oIz@ zmgg^S`S$O>T#) z;ePkod#}CrTHWM`sL{@~*1+nKu}(Ew!oX>Hvcyx0XZ)DChOJDr2avLDqf)OW~Pqfl!1_;Koy`qU8RQ zhum&9tjdyF1^cMj5h>ik4zFlp@nFQc>tVmu_x}H6?(MaIFhu@V3B4_w-4%uRt!rBC7H1F6 z_{0D7pY!QwzhpL_Qr9KM)EHB9Grr{h`Fp4^rZQ`U1)CR?RmHffF}&iW-yv@I&|&D^ z`b^!}sO+Eec9FnuOn8c&ioJuLwHA@E7ddDUc|WsN%^Y~Y0(ZO2`OD8QaQ!15eejr0 zx6R}G=eWj4c)na?OwD?+MueKxY=NmutP)&ZUz24y%hk%;wlv$R!a9ODrmVfdx{?85 z*v0^ul2)t3-Sw?!2RX^b#U-nB!Dw_!C?g^fP#Q~NYQFd3cL{XBa=j)iGO}h}vZ^aq z%Q^k-fH&V4&{CSDxsZz5kKJStP*)`Y zWh2jHg`g0YHWItqaQ($|Mvv|@>i4)#Qb*n&h^#^E{I+AcbHC_ zba?o!?T0;#nSD;z+bDjgTISpLJ}51l(ss|Y+-9eS+0>jAThQp8d@c3_3#>ARU-ymNX9;M=s&9jd&q=dq@y&N8aanqfOaI71*{ zvY1lm8|LYPs;<#tNW0tOpZ${`GaMYzY9*ckaqw#xQ?Xo4IUb%9wYq+$Ta{o8Rgp27 zPFXD%91Z%Mp4}rYR^)|eQSBJ#O)$#s>$N*@{c~1QHS=L#p=`6Y!0l0GtwAWhdV9yu zUQdwSE)O4^6Gt(vDCDTqCXOObPL6r`<^l;MNy6pD1tm3wDH)IN7*D6vRZWp)p3~g4 zJ|IYo0;RNnDV6dXIzZCy5XUjI@f}KON?THvYaTy(N-OHpk79&?dAg=v)_nYHzd~!+ zW%hQ#I!#eZQM#He-O!F(++L1Rs|{VL$W4t|W!x5TiF;k1eei_4yE)lr!`ZM;k>&&h zNax6k!b|UH1zHnC5plomk#i+EIU9j-#GxjX3T-T=s#&ks^aIUDqaowvimP=-W<5XQ zutfD?yRF{#b|>H7>*X-Xxc~2ryv32Wcl58Yk1f4li~4o|Y%lb~;jq|UG}|8akWjG; zl-=KMm-P|fDwB6{1;Bxzd?6;2g>AHDV?=;O# zbh~IN>WDUtC4Yq|qHo8sQw?;JMze#HOlV7}KR#|@gJ0H>Ob?J6G^t&C#lL-&+-$Mz(gR>Jt zrTP5p7dRY7INn@cvYIW(vJ6+%=t5TG=xqGWzI#aPGjQJ2~6jP-2E@aTwA7Dy!8TBb$D`NN0QwxZwf5ymm?R*b1? zPEJp-&iS#L6HwQF-s~L9JVVA2ADR3b+^6nt{2^g;yXyx_S2q8 z=%*)k7o^*u-VP@BvtNJR>Yd^6!H0GGO$Tv!^1t(OP=+2P*LQBQ?MvUOm0{;VO-pRGyQHaNvDZEq=*Tjacfn0HlxzmK#IQ{>FwykUBEiO`Z> zzsLR20GDMD5)yjg=hED^v&& zw#mNE;e;eFE8a{u{M*0!l%Id~g0d_)I_mLzKlyDweENtYFVISIH<>Xw>eFep3C{zT z^BF~v@%G|^*?dM_)KFW5Z7g0J(5Dh0h4x0+LZO2Y9Mq;_G#YYsdjquv=}7Yxy`wJA zKKu?z81wLWgjCRShC#Q_fA%l`fTMngk3al?FY&$e-~Iekzqnu3+}+-Cq+;r(g)+9L zsti(ULaCYEO);k8^nA$tcFFDC9Y=!!LC1^Q|LW)ox)abF4RO}d>Usi=vyRnjMHDAU zVNfDOhats!LlSBRqD3tw-J>I(e)N?0Z*KVyKmC+%CM$}A)@yfJH|X-=KJT70*vqZ`e%k$Tll1 zj&{^W*_vvdvR*B?y1At=C6xpjge08~=l9R}?)SdSbg^bU{)Xo-UUGXkCNFZ2CT`y> zXAweC)dgv`wTA{xL#2-h1?b zey@kpn)!UeCe4v;L6&9QyLV1*3_t($GmeKNZm-4!Qa5|A25AM=mhhpx?TV5D=PXhv zj*mwaWyLz%5b1y_&p;TSJbsUUuSZ+P-tIF`SuWQ6{y+IW?%z8j%{FK$dH?BSu5ZWm z`$w3{@%r^!!YD*12}%kU%O#aD4euL_u|zT;U1nV61sa8l0(3j3)oXKhc1pk9LJEOy zB^c*-o~yDVFA6`OZ>q5CyE{y6S5^_Ajayo-v)j^o7rN|sm^k>%u8l-E)PoN``J-B2s$gh`O%m_WFGI;fEw)Krvt9 zaOg1NcsRfrM=R8AtCwv%dhG7`rO>y zQdK2k7=f`~9!Duqia>@SWP^4KoUv#vk&T@v&f9}7*AqVe-uHR@^aEN!;`O;~h0v1C zX3c;6`~L(XX$0&Xi}ePJ)ADF|v*xE%NEElgIy8Y7 zpm#OhVTWJ&?ni{m19zQHhs|<{6OyRaX0}-39NgW`xVxM2>eUsmzIw@MnpbbHxc~4zKlCBcDo+@@IYyrZt1{T&pTe<-E#f%Yi?hCO}?1n@(ni6 zF?r?@WoMCrpxf{A1a*4PWk)4`8$63#V`5d%U`ls zOsP$^x1MYQ*9Wf`E#IUYlnxji9}|WFCa;jn)Beh`q?JTSEJdDiesWBwm7v3bAP7-` z_WQR|A-u!aZdA8Dc&&rK{py1M?$7_8pFMxgtJiOsFD8^lhA}l;^-tfkYrc7VK@_)m z`0xQ?7@(zOx!SPGGCu$MD;CQ&)(Tu%Vu}hO6%iBI+tYXhjr842MG& zi)G_n=t#2#Ns@5y{2{HRgDtDw^PWt{JpJH(K6v&%f%cAs^TmqG+dG0VLI(k{ig zMj$0;=l3{&^av!RdG58Vg#@iAi_9ktsgO#crKVVKD6M5UIHGgZXSrGi&nH{L!|V-p&&RG#WpL2~g}} zVi&m0U%T++%15*b4qA_fo&!gO?uza6t~&tTVNZ;V)KlA zJ|i37vbetB?#(NvS8u4-3p!yyw;j>#wt4vAjMK9rC-+b2j)okcpEDYbnsJ*~IJ81h zIqxj*jHMTcIAfVlr~LhAKWDa_lI0tWt@rN*G=Uo+rAA3b9K={_n9Zl;dB)&qNE`;l zoi5Ayf=!+iC`GHCFq=*|84l=myM&>qIV!FFzOC{rgS!LPfwTT{`TXlE{`)`vYrcGY z$$U8@&o|!f-g)&5tpnmPCXOP)(9e=DF0aUon!#{DCuxx+F<-uXMV94UU*E7^ED@FA z^kl?(v-a(PRMf^IrS{c>R4C;YJ6f%TvZ}q*jnd@#imEI*8k}HiOSaySuQ%L`$83s} zAke(`>_aMRSgkhzyuG{v>GABFt1{*0^1_Aqf&wYTQfK|r8Gq*BCTgp>-L_2TcQ;*bC2kE!d5AOH4mA*5h(H)XTg zP?sfDUeb5^8`r^;(` zlOi`ID;QOykzz20vUvuvc}+eI2%NMUNSUOAnZaD2j zwy751iMOWG6x*#McliJNo9*b4+l;%nKm3OuJ~7JO_r<|KwxH0rASCwKRFnF5jj-Ei zU-wR^vRC5R{ZO1c$SzHfyEPrdffSBJSwvM3E5Twp#pWBzB11b%s1^4{L%#Q&XLLGU zatufPHlxvirw`BR_c~l&-tce#*Z-4We)>6BOAv;<_v8@notBFAkA`=5R6Vnj82D~oD3P?&M5N&;T&nYp%n$J z7jyE`5vmZU1V_Ujqi0=iuJ0IMPbf0Hf z3l_QUSGxdo2Z7d<-v`m`_9$-iA ztB74qV2nS2DmWev7z}!(t0k+uDYmZBf#&jNOp;|hdhZbr9z5XDy%UbQUA}(t4gc-G z`5$=x<#X@r0|Zfot!s{sk6EQT)5RR?EFXXT9qI-|*lafBrbbFZ7(}#^HuJ?45NH*m zbl4n5vU$NJPI#_yD`^pgnts2BscT-md`_08C@qPi7EVf*uip^I5zF&4T#+KTd%C^m zHFOTGG@=nYznyLP*)LvEVkyhKp+O3i)M%{I&(a{#OT#$7BA( zU;mUxj~;V%bxS*r!5V~sG+h$}5k*llozHo2|30^q8A;1hmWFJzp&KXUWkuPTgO_Cv z2s*7ET53Wm3Ge_@X$o+LhiB(FX9*+CVlv_4^;;?nFRWLK?6qRTAR=FRZ{eV&iQ8?W zFlICwA%*f{2W5#;if;Reo30M&;RT%dHMAPB6nyN5~%>3r6@h`*_n#EsL(3FT1&B=a@Q8SDf#@fuQ1MXb~-{- z7410SXe~MJ4S2Pfvni`x^4e9nZja$?_1f%SZE;slZzZR;lOgr+*(ZPGgRN15*o6k~ zAhiDL1Iw)@inn0H4(NI}9=BERz9-(6w+9B*yIxr|CH%K~?foOWotd@EQ}XEql`T0- zG{>C;sWf+!8PC6Z!ECW4j$=*+0~R;8Y*q`V^99RngV37M$tlhmhQlG_>4JarU;j6J z^W}3)U1I7IXAIWX6qRAVTC-ZO$n%s(5AX5#@k6paCkO({BBQEHtg{>)4JgZ!EX$Bm z5d;ZJ1v`)}5S}v&5XKSRUYB0COSju2&vNqIui4dgO_rss*K5k6KrkuCJ~MTQR+E7p($Xoi;a<31wMuJRH(L>eK18S*?~7WkI{!CEH{OrKqc% zMYeBGl^OsONv5|!W&StZss{O&zZYAV->XkmMU)9u7v0kqjbh;!-!e}_4)#-8n$wR*P@%y~@ z=m9|x&`M&SK7GuOfAZU?5Wf2A1!j}`EUaTXNkS`(Nu(pzk#~-;&L3((EEUQ+s46D2 z1;=M2TD>-vwd7ewI$QGO-Z`r*qqN3nRO@!hZkza=bJ(qNJA!6=;ve?QfO_!k*Z=4p zTB6vJG~VSpH@MKd9|y>^}$&%-u9{cUU^&l@6hA@`LRc$od9c5RY87x zNx5DU3x_m@x3^=y{OUP(SJ%{8ip>kM)r!g63-Z+hV=Z}IVT9y(bW9RQ^g2Dhd3(wK z^gsSDeDmTJRaH=%3W*?)0#G0%)>=wa)9rQn!LR-b;HYbZaV14ja(Q{p#Y32 z_V~$T!YE+1SfZrw>w5h@S}Uf@C25h-YPSia7E#<{G&-Rya=P6ftIe9cEUD^(Rkp-B zh?6c_Y7!M-jrA&-RgRE?Pk#6#?mu`)Ro9GX6K-yAkxnp~%;|~%RT?(4Il8ozwx+Br zoN-iTPF)(7>lLfzlCrMQK}3>-2*)!wFJA+}Et4m15b=(B@tHer2z$#J4d=QC7Yv%H;fbvI!)U$V(_ zMD0<(@9_QPmX=2$e=C4JyPo zemFuao_+KIM}t09Rnv+?*2^`^)rza@D_ThlXDze&lq}5&g1DK%dUQM#ewWq>K@dkA z_k6bMcaQwZ9mOaCoB0Z7Ev2ncIz%?QQ$?0}Zy~9$*#@m3keVPh1B}!^Ky*~FJJml!8Po5QMtw>iM30}_U zWTr+)K`Uv|?R8l!*Yx^*X45IoIgUpoiYx;uS*)gP(zVaJIwn*a=`03IUgcD_;^g$4 zAO7Z#a1yer;O)gVLI~!o4K6E*EL5e}#j2d8u=REY!fz}AWnNI^71P;_`EpK?=G0Y9 z5=O*Y69y5rv8W)Rb28-g-iRlU9+GAmt2Ae|$q-62oiDvK?Ase8f=3S?(CI{M(iM4{ zQ%3>4VGo@|SZP5yxZdDLz1& zy?FIu572BQ7)!mH!D@;sGp@gwV9N@r6luDqQi@tiYFnckRfw{-03_-*a(sfiN|dsgMpr6;KL^lM1A_gS1%AkB@ou;G8_mXoWGW^^&@% zm`?5(kFRMb9gHbitygI6K`I5{e90U(i{K7HztzE6ODBkF1sdxlS_O!zq?IIoekub$ z6AnY_s)oXNLjTDrgqrAXfkqJo5kGx#!(aUJCEekO+wmRieB*m3B}sx9=fG5cWe~tP zOCUp{Al}XFrSt&S$;lbrZU?L*2x3moM&#?1#dMC2e7XDR$rG$Kyt%lb-Rh7PYi9E~ zr>7&FfDfO2$k)%G^Xk=_AV`R!mIul3y;@~!iaMtqwfX+9{VJ+KgfDNd$%~A|YR%pC zgtiW_4k8_*a4hl^5hoxVTKY^Xg#TTfwQLp(syrhS0n6o*#qF3td*Vo57aX6Ragt{^ z;YhO_iJ&SC);X@PZ@3%J*(_5wn-yAE!XV&#-}#91^LzZ|&wfT~;pn(ar{e?G)HR)6 zpC}H=vx4b(!rkjDOqQc9Ozvj%dI{%eXY|96M`x#enP$|}1ug5TwYi@~vYpawgYR&Z zv<)T;`|Ug&dhbL=Gt&8XfHr|9d^fzeJ7O1bI|z6uEwcx`wjkKf1;Oou-dTg#898s! z5=SU2Q9%Sk?pE^x;aNsT&}80_PST=()T7;LQ)W3zN&3AWNf3AqWvO-* zlGYkiRZv+LvpK=pi1DT-3fJ7^SN!|WUy~ID^K8Rpeuu>o#vyUkqO3}aylB)gB-U2m zKrD#R(mN+eAqaKAV0cUt#|)18WNFH9H~`@|Jv(PLnNn7UI?cGb851Q@Q*k-2E-s1V z7-J1ZUb40;?(S~>x*lObxOHOK|&aXbh>SRw#jIBTZ|q&pe#}xj-x>z9fTz9HrH1-l%=;$ zJvlj{+v$)_XIKkWRkF-WqD{)_pwDr?!~M~a7po0qIV~4c2FkBX3L5u7A5S}q@-8~J zJJ@U~?r7I6yYDMk`A+Qay4Brmb|1VutA>M=y5kTZpvgXn5AyQv^w{!@{pX#Gjddip zplbOCx+gXRISPC6%cdot`lm9P{+)Q_@Y! z)%7*cU%e#XY#QRYC6HUQXz3Tp9n=jN@tybI=h5jY>pUaW0Y#RvUM^Y8CoGpsA{BU3 zs=Ol6F_n@@rDpN4u%#d2r?e=N464sjyRaIfkcKy*&TSpSMh?<3TAsm4U z==QtlAmG9MGn_HB;)G7CO_rtPdF}}+c}|fTTJ0{CsR@ISvh;^Rx7TB{*`TE2n{Qrl zb$v+`bv&^Ifwca@EKN;Sm-KtbJbdy9B_(BDaeZ?`tJP+FH^ms+sAYQhdM%{qPV0aY zznHM~?=8v-TNbo~h*i0ixd}yM4f=!=^d}%UUKo~ zihRBVQ-gr-+C*(Rfm7Icq}sBv_9Ep$+Eb2H}r^b{M_oSvUCxtr2I>QGk}-58H2 zQV~hWjUn!JIXddHn9jI&GGsBEbDd?FJfkJsY$Vixafk7-4QRnuF?EaX3Lhf=;MxTz z;IMnd_n`MZh)JJG4~QM_W@&Z@!M5p@h<&{7e%8B6j@y5P0?xY;_q#{*;(&a!VU=dc zFl2f+@s^gxuexQX1_7a|37n;F;CG89GX~=f$D7vdIDURM;s@XRjt_#`61O8}tDK_Dxt@$s2oe<%NKGxElETv%wZ>XU zq!sr^Bf>CXo~4|eogjpy)lR6Lp)`gd2#}#-dNcR>ze;245}ZXVwR1KQc))Hso73)g zSfmBZ^^!c_fRyxlU5*ArAMAC`+l#ji|Jl!iD^n1vh(Lt|%^|IXL93PK(^57xH8OC?FlvPDl*UV>2Gy;XB#_xaE_zKHOxg=7&K{j{deX<$hNP9?qL?qq2{!8s^1PsTG$1c>mdg#-*CDT7y~0>auiNFLr%yQU^aufE z{EYp3Kll#Ump82PoOGQsU#zfcijE^{7CDuLC{9?UDeJY@ z2sTm@L?JHSpq(SEYn(NBmo=~R>jVskBaVkdMn`=@A-KG_U^QDXy&I#gx4R5!IKoH_ z3QObM<}9tG#m65#!{W$ojS2%Mi#gN9f~&hRn@vhfhrZ8N3Kaw>tr-maDCH@A5t8Gh zW8zMWlR$Gk8enX_bJweD->6ho1(7D~c4?J4d0pTdBQjGPuh}dlO2X)P0LHLd&dCd3 z=5;$A9zA|S6vy0*Z+QOVYa|kd58kpa2~ zJ*03AQamRN18#0^sLPU|v2hW?Q$Vdyo~GFJ>`Ew%t#@=-A-(rf=)g%q<}79HAPzaZ zHzI7u^hYOtXFAlp{N^R&yE|sn6|30_1vn)s0cDM!#WzwzLMgH$_o|sy#b&W2X}5U2 zzM!aI(uxuSrLnc68+0g5g(+)3|MEHAxJ4%p7>tf7jHTUe^Ypz(=unYW1^LgvqD~7$ zC6P++EwbD}pl-WS=k>9~4vltbgAYjAG^jgeT4#Nad%&oIJ)+${_Kw@>jP-m$vB@Zlf;2CfOlICST?k^~cQ_+! zv8KW~zgz00@1;k>A>D45^P>UpKYqxUUp^Kp+VM<8-{2QgMczjs8Dm)u=nvk60PFRpR=3qJq+1;721AM*Y0 zKJ_*?vnA&1H<%&^m4I&c%hR>|)RFQomz&VzF>wIqC0YaZc_~Nync5d^qB9 z)?uANDD`fzyMwR9b}8QXTH8^PYZl9Ut%xkm7++lTi(mYL+v{6oRZ*9f&(eXSwhk-& zTAgwZh3C2Y8)zzE*zeQt_Bc5^?mBQIxtIj&W} z;JC+s^yA;)bTpzUQo@H1n!vd5V*sGvKO#gi?DuI8282n3(tf5WRb$Rv$ zLMu-A(T{%U!7Wp9J)7|5*I!WN1tDIi**QmArNm*2P=_8o6M|YeWEc{({B!Oebt#P@ zjAE4Vd%WA@d~npq)|RR+QA$#!HLf-+mrJCQlx0m>`u*ijt52kpCR_MwNJ}rMC-MFG zfAWuikD{u%hX)Gu001BWNklv0aU=q?mK4^4F*qqX8Vz{-*cFZ7aI&V246( zXGMG6*J3hB!TZRqpL5{xjndfjv5!G!)RhCqBg|QYX z6-nGBh!O-166`$9uXG-yY9$>$diEhf959`Erc~1IFdmPwc|n4pwic}dV(k|>jF4Do ziG|nhGIa%Y;jty_2$dobo=@%osWm6}PdR^Zj|UI#k;E;EJSEF>=CdhzTCrZGP+3CR z^wl_TUZ5lu(jVqZW1W{dGE!026`_{2+HGd5HC0ieoI#n2+kC|;Td~SgP>No=!`MV)5gLQ=fV$}TDolV8)W ziiRSox4xsUDPFgr)AsJW0BgoXhpr079jwhaW%rhbx1%v~5c7v;$2JRZyIu$Ba!nCw zk|abre<4dHh?Qnb+!R<^iJ$cix*e*zrmZ!F^%qOK*XE;V@A0qy^}nJlOa6~P{deR= z;dP6JqSfl+j3FpcK>9oXOpU#d5>Z(SY;O zDc!imX1SrlQ4|?E)CjiYB`{Tmk-n5a8;*#=h+eNp5a|8(l(m#a#ca0Z>hc;_8ALm# zDhWPC}LCtTuj&=J+__;p0cVdj5jNX2sjRQhXd~2JLjwCFIX&=P&tl!0{}MphIXsP zGTpFRwEA(DWXn?-k{IphxZu` zPe|7rloM=L3vRA%$?}SPu_AoT>XL4!O{>*rI-O#x z8fy%~*A&tFp5 z3aKSwE9CfS;4|{pfX#uGg6Vw0_4ODkOAusq~Ijtn7({6J-91v(t zr`=*x6d)w?`4WW(Dvj_5QK!}R-a|4ZPBdjzdJ=@xXceGUL>L5Ma#~uF`w#(t+b(!9Q$P*tT*9M&R{1Q=}X5K^I~MCyRr_(gcEB>;|eNG{0iuG#EdbS|c0h7g)7=K{b0`H+D6-FwL?RTyKa%MIyj#_{kRsRPm~#~FbU&g*Ka0Hh$%0j;2ds6`lttn(CC zm3;Z?YbsOlxyhzz@?z+pPmm zqot;o#3)y@T&;O~als~A5w~0P`$zoe|LPBDbvoQ!-!d85zvfBV6G(nrvP3>hd-DI%Phd5|rK> z%1KF4=P04jI;3i@{i4V)&QnT_tv%*ZR*c7EuztZ~oz5`%hLfJ(W?JVNrLB-cd7W-+ z0MLZKG_MSa(nLXw7K-F}!03EPUS$08>n|A%k2yIVk(CAGw4_8}*c)zhP&)4>NPu?R z;M#p|Bx8inwg|7x;PrzW%{#Xb90lxdvgUj2&a&s^^XDB9P2Ca}VirJJE zsuj~c>XR9Rs5FZ-MHoS^+osiR)9Z8@BrRm9Sr#de&mS=w4tVnL9#N>-q<)4ro-Q~Z zjd=6&l0XVNoi6Ee!C-Vu@AQ<#a?X66lC%;!oeqIk{N6wQF;XcevpJP9WNF6r)eU)3 zp|vmHwGdEyf7;8tF}KqRW$j)4j4@~>s5b@F6$XimYv!{BM}r~jEMq*GaCI}L+v#9x z!!LgM8MhY~q?-&INx~$dl?23b%=y_dT1ytQHCevl2jBe&D+FJD{TaR9fG3YXL^>$* zoYIy=L5RTd@WErw?>!)i6PDu{aTE~55$na0dk=kicQQC4P>N2HU~ydCj9IT!CgVHu zO->jnzcQHTbUGatSw<^~36roP!fCRsAc_L8erLKaGkX0aqNGJxW?bD~aeO-Bzxpr# z3rTbzumO12*#&vQaCs4$nx_3KeLMdL48qm|xuyT1hDc z$_1FJrYs9O!!A*%dH>O4S}m^-S=ElOUOuPFYbJ{|WtyR^B?tmP{;5k;*v26Uq@=D3 zOkER%F~S;7PDZTODOFVw3P{V8`Ra~rv*7;lAz=`c)g`4VS!ZjasNMKTnP!u$_7cFR z_L|>1BrP+R6U)izkVtCo(kU;~6=%n1oSdCfPZq4_%SMSt?0VdHVJlxgYur9N?o)D8 z;^GiZ0PoCw4}yJ{oOeHFugc-J8v5Jp+87NBxfN#jOXV!497l>ciTUdJb9%ilt$v5N z*QM{^=Jp1qByp?7(+}RG)$Smwnpnc7D(Mf8xOaZaXfz%_6418m+5p$5NPI$CF|7+V;!xe&Gq#a z?I31;H)XL&nQvBPMNV0I9<_e~4J{P_p3Ks1w^0^MnlYdFU0-V;O*53zY}P5u^J3Y-N*#tqDa_OJHPCwk2S?EPXH%I_1WM#f{?>Xn| z{>ZzZ-f?+x#j96e;k}}-E6x`S`rfcyFG-6rZ@&CFeb-}~j`_4eX9>Hy=Ir8}lamF{ zE-x65V#0jg_k6m$=a1k1Kv`D2`|%xx)}(rZK#-?7UJ80+IX}O6I>>~l$P2vp(c@SP z3O%MXhKKbd+kMGD{KLOzGA{VV*IyG5ELR)yV#IpA<#cw!U;pkec=ywLHk&QuETgR( zdOvtR3x!NmZf-7_j&u6DV*c_O<-Vb+YGjZxh0qGpJmvEGf_xMM%(GF>!~K%dv^?&% z>~I|7=bRj}Pgg}vvqEbjHHmfbhb_k$$JvMYae|E!qH6qKW!%gU; zz0goENI@#2&5_ax-rGq0@z6Mj1-hE-x>TN^^U^ zZYZRb}6GGXPoDlI_h;z9!=mp zf%S5QYdcEQ)A*i%T$G-q*gf)tW{-B5QiZLg{u?jG)Wd|2|s_dn3q zC8N9`)hlMRDYMChby*I?5<%bf(U(d>kg>IsI*ZG?;MnhW?ABXuE^inW6aM;d{|#D8 z_EkmGb`<%T@4x+lR3@a^h-Vj9oSmFd?swchE*WJxZEKJ+<=L}mEap?L&KAt`g1g6i z9#>1&t1UhRcKeE}lXKEM!&*mcEf-e{bgEf?`>%9;hsTp;n%)__u~^e1yhn`+f{e4a zHI^(%8PBG87mfdf^W;iXR%;e#3%>mM?|57;*=_5%3-F%a_88M4L=?n0A9dhj*rfxX$;R_e8I;bf1>PLZtp)v`KOkY<}R={?H3~5i;}n^k?0V>Slay_+jexe=kb0?)wF1>+3ofyBvrk| zTZ8ihspD`09_C$@Vne`&z&KGTEm_Q`s6*bbv7jtjma^IHXv>-~%u3!ljP3Zv&%fk! zG3Q@?|F8VVfBZ*&|IP2Q#-f#GyWR3n|Mj2w-LL){+ti40LGKLjKYidAzx)kKD$3oO z)pAK!w}><$guu&JU$EV6IXOLHy(t-u3m!h*(VL!s{nu|;Z+0y2AIMUL09ra$+enO= z&lg->-r%LhT1S>e^2n$dF-bG5>Bv;ZYP~{A&3v|CI+<{CdCB$7HAu;Fv!SjVeti2c zbX8BLQp)|F@p#PD=#o{j;?-AQv#%;PyOQ~Afwhito{}PwUhwMq7rgr7CEIe(zx?qV z&R<;d`qe9h5L{nfadCFa%aKbyqSU%?K*N22X3_ z%{d*7;>>G3A_US@;GE@u{ty2PCub+D)@$Cq`w@t=Qg1st(_pY`@d(m+w+HS zzvWLqd{5U!xTQBe!3S2$B|rS|Cl-@A`*P2=+>(#R+~42fY+zc9*xavT(qN`poSe}2 zG3j9axF%JayfO4mgYpj7SoW=n=?qHZq`+=A)U6>a60&SWRaI1F!!kUg zgkY2?rqeMxP0%4hAaJrb2r7YJov;-kIJ2{Vq+#8B4;rjZ5XRlu{n@wrjhIc=`$Jm~7zb8>C z!dr~%>1{vMibfE*-%9HkTjKqoEED)3u+EdFnnbCA@*3!!W82n@=g~y(;qI2{#}7=h zf{k&}^X;ewcv@Hi@v=GMus-0$!9_#H{`!D32?ibglM3ib;Sh!g_DQ3AjNkZtJvRJ3 zqHDN3negSC*Zi0N=RaYL#RiVswXUkz3|~9TPMA(7R8`IGr(626Bp6376Glo!8JBHo zn>OaL8b|6S>(v8&*Anmqr4Tx$vmP5f*7@Q0VgWt7xuB2!(?_y{9!mmjD+D%BsC>s-u;o;#HFC5#lBr9^7x+7DX{r!^QY&>v{CsCSi zS2BI`8sGMq(BVvv3xcL@u-4Nz?T~LI@jl?J!3yXDWVv88l9=AncO}+tqlHcgu_bLB ztM!W6e9l*IUXzbUjHXjS@afY%Z{NLTx!SPb??{B=`S}G^)u7NMLX&1WBnd(ZM3SIV z&u;4p-XcYU501KbG+j&6_v}r_muIg@l7yGfubE9J^d{Qj+%H#r^UWVHCgwm%=b01} z5}mMJtxK_w``Xg1^O`Ez!wC7*6T@a9*) zrCe`uQvX@O#`8T4+ved5A6CeRj8R9V3L*}~j1ck1` zF`SJOUcdQ*rtf%MEvcQu3~i?fQNGqx13aVz=V#~K-`+-Yds%UEGUxK-ggi^>yN+E| zvDU``S@yh*}%JRvJ`w%auVh4Y|O&1$`-vynU729NO; zgy8@9-~Tsu+dZ4jjvwE>Lo123lD_W|QZgx~+?-v}RW)5(vuR3{PO16|rFFdh2M?!! zAWc&;op5=1iT9ugG(KXh+x<3L_w4u3_Z*U`B3&>to|F(^Esqb6h#?U{NrfH`+;YD| zN|>FTQkD(heE%nIo`1pV=?Ud(!|n2(cR#(OH=d?#&#3|o%*TvJW1M$53(ucla&dmfi<@gMP8T$7hY*6!bo}Xu@2RSmW>=%U zhcs@(eQWr;zx+G4re?E`@9p{d83;(T41(Y<{^B=S)AG1{pzm8AA0KJzhVf|3Zd-9W zIYBiB<1F%ko+w3fu+Rm9i?%sofR)G$iVLPBOgk$Wb8Wsw8i}#-KxZur~uRtoKfU0XE>7wtkHjpHms_)oUb)*0i zeXETSIG&REe2C017|iN@Kq$p@I*FmyDjEK~Bui7Avk0wOZZ-owQ_v65DC1GV^JmZa z)A!%=uv{U%;5Wbc4L^PODHf%Jd2vGMEnU~LZ^}4-g+QV-sgTGJhK?W}th4EuBFicA zjJE4Yb%F~~AG@h5n!cl~n|LIPSdhnNNj#~p^kD6(7#=3)ka)6zmVv-lg z0A;o1;qD&q9IJ;VUDYs3Gx|KC>w3(|Db5GdVvHBi)KzSa*A?6CmTI{~Ntn)OEEY4e zqTu5Cip%ROrqe0Y$(Y_a>ZZkb$4?(V^7idJ_M06TkJJM15>f%9qQHsB)tk-c{PwrM zBg-<{)}a)1ZA0HzY&Kikwuvk=JX%Oj=X2^^iFC2(tg{%~#m>x!fgvVw-jfJPZygAM z62pb$18I^+g9qay5@77{VsqY+7YQ=UkWI^axulp(L8p*KHxwTZ<{KBGs*e|>VpIJmbC_bpO@u$I>^FHurc*DY05(fPPOmnz!W9G7AO zk`U<1ij4?SC@loz*_>yuUr^NzC`sMav|Uf#w^W@$x%dVm0)2=M_Xj$e3m)rCd|gs- zadknS=hy&3c$&72EB&q`ACIZ4Jsv2VhD1ag8y5mjiXn^UX({JJB-O{Qq9Dly#+f~#}9f|$kM*rU6`Rc1Tq*}3Bt$BD{()Jy%PrqcfT=H-K{(s=V z{^LKRoTRHu%C;g%JuE^7`5zn&(rkzjz+}GQ#p{=(MM~dC#Za1R_GL}mTgtk|^j*9e zq{4X<56=)=Jt_5oGz?*4K}7pmAYqWRiGVd7-da?WGD}ii->}(k=-ZBJUs3H#iXiCg znzC}_#fU^F?3)IUU^E_6HVsNEx~9YS9ilNf;pmKEx82}%N-`=yh-ishHB@cO$B&=z z-tm9_U;j6^pFT0k#we{KwRAkAZ##RtiyW=sk-}F`tfc*38pk)+WpxvXmRz?tp(mhEmw z0Cu|_epu+~G~wBc=lt~XmXCM$bbUvX6)euqxZ2(D@#8(c@wl$0?Hd|r(CG-{EqdSu zAD}@GNToPCKj-S^hM*)>-H;?1GLZzK=uAftfrsTfe)dx02FD9W^m`Uk#h-cld=EpI zLV&Qt>mL@GLUDb4&iwL>x~aLpf57yH{btWt=xC>F+vrQx_uPHFWi*>3l8m}FxZsW# zg5B37)?u8buRF+7uAg6Hjp4^1ex%%#Bw30O@czRG?(ZM@?z``JxVz{1%@tQCmrN&9 zw2+Wxtg4Ex?a9U|qfx>7e#QGAeqyzJAWIAahwU`B>q(M?v-zB}$u!FEbk5zU4c0k~ z47ASRhAT=b6?Ml5JO_)Oc-ul`+Xd&)Qj-fA3m$<6>is?zqZBcLLxPvlO38SG?-~lz zA=3O3WfBI+2szQo* z8(HTVO;7moySLFa&2;SA5}^~EkCre(Mm*UKhf@%evx^IU@vC1jo6qS@jk5voJERok zdCtDvQFu9*_x3G`Ojtdx5Juq*Jiocb2Pn%u#dt!NW^8UBczFAP)#E*;Z!l&Yy9w*b zi;PiHFqw_XRl;~S=k4PPs~qWkjP!07*naR2~Gb>!Y4nNJeQ&nx+(^f(?5Gwv0!9C2fha-O2rHKGu9B-v~N)NNJ2uSY`yB+d$iVX1K!+U=E=^b6y9sy?& zJnjHO3ji5?kA$b`3?T@nvniADh`u){rRi;hvr&U8gr-{UyIlx45$T?O=oSc` zlapu^E`U7CaKYeRRIrp~MNy0}wxeyj=)iyc7XNHr7a=divD=WtTO_0)OXIR?G#XP? zRXp?%(G^lfU*@Li!298S3{0j|1cKY!JEW3SO~b|cC1us{@l%vDwoT2tj$242B+fZx zlA?!BBXW=hX`b`!#WN<8*ba7Gl;m}7OArw&?mJ7lFHr;5bqE0WfD-{ZIEzHca5w-5 zd!R#i=0uDwHNg?2;Mc$UIZ2*VHZ>nUe!@A=<8m1d)xD$hj>%xdi8Jlk-!&7oLaY2(-^)se3ug&2ehK^y~n5A2H&#L-zI;#k8{OB|L{{sB>TN8vs;+Uy z;=3*i`-jCrI8ZP}EHo)VCmFNZoG)J7P}eOwiSjL_B)ze8ZI6-(##p+pM}D@b5`%aj z=VHNqR^8gMuo}Ftk$m{@fy;{v+O9<_ z&1^Phwc67)9g{3$xxJ@#jv^f$&D51pPoY$U7uV^<85b896h%Q*mk1jz9s&rh<7p(H*mwFc8W8dFn42s}bk6K_!TIGS)_Znk>|78kk{-OH z9iS^G;*FjbV}y>IR_EM+i^lg=4$M3!qrb6C6HYHqNVVkh@&enNxO@zrw(Y38lDqqR z5~0YDh}KZq9bMltzgQrx=a1ihOXdP@U$Nb9=)9%(hLOt9D&n)_=@g|C(mY2N8I!zV zJfHJx`8BjXX_oNKx8JZ`uGzK?i|G`RBxse;b`4skG;Kqg=8VP}T6t86Gp$T>lvM;H zF>&rdsswE<|^kstlcgR>+_!sYpbKmGWg)bz-#IF2k4D)NVul_wdJh_}meNFEB7 z0Df@lKzz1w_TsY>A%2a6_E+>BbQR|>Zs<)+7g*ljVXG?k;4%g=AJPgBFHR8Ua^Csq znvv(s2kM#-f+ST);+lQATH(rQuI?c+vxb{O3Nge-#IHGM0b&EdCyN6}m;I?s~z8yM}L7>Bx%BWyJEfE zadLXX+wZ<5Q3`?V|z_wEyf4($%J~lMgt?2a5|Zi2#Fa?9iG2<#&>VuVw#F9 z&5xhE5Fz5c$8EBBf^`m{(dRncqjB7y-OPu__cK29apv`iy5#))l*x3=YP;qA`}df- ziW8Q%;B0gS{A>|4U=&BF!wZ-cBPKl zt>6^YJq&Jk?Dh8|}e=Vxd9^x-32(;=N3x(FBBcp=a}93L{t0UncRq630R zQqm+L%Th9#MbO?`l0@UW9+l@jJT9s067Aj52))n>+jfj*Bd%|*>8xcmnqZy7c0FBL zQFj&AyQn{P1}PPKFqu~}nik1Kb8~&g*I&INSQ$;?^8y(Jxk@o@Pun*1ri(T%J~m5X zz$gbg{4l`D@u5gyO8moK8$S3%oZT(DGq!=~KF-3k&tygzBC zIlXzt{f9f!tUyR;gQf8XsYJA1noqgBxZwF0kxez5E=aZF>f(&&U%cSc{Uh7$md$cW z;sQ<6M{s5!vk0BwoF~%~H5rqsl&UUS%;(JJ6E4rrnM|k5(u~>ZDYtjG>^5tfa*xVW zTIUElIm!r?h=;s$F&p?{wTXf2^`3OPh*HVn_SDCM9qy3B2lZrj6>VycNd`lq9u`>w zkPJ^iteWFb!dhmNoL67J#&tcL_a87_7ZcEYKok9mq7&6H@8BcA9U>{j0zpWwFV88o zj!=XGV-59g%cr{!&>Nf`Hf^8Xh(b!dcgHxE^RrVXMLziZ#${OFTc%lt)RGQEx!d8b zr7KJH&>Ayz0oHpC-uCfOdD_xTAu%{+qa2h(rAcg4gOARG2+}O4tIGKGn+8QZ1QY@t z0*1h7TyS@Le>`2CakOPLo7;6ITIUfbMn(%)DM=2Ug%Dhwo$=+%=imjlZDE+gbfWRj z4}W)!Hy+dUBqDNf?EvqY;7~I8v%(bOaP!9RRUHm>IrvTKgkS&mS5bo;3{_LdIoLXy zvPOq!r5j^ICB`{SXmB<@O-c%!OonscV_k%;TmUQK`r-twH9!CQ=TSVbQ_8BuIZxHp z)J?-~w>?-)49Ydf$@z2YO~vB$jBK1ly|w5_wFE@8%sD^fmp}iCpZ)Aht}ZUnN;4jh zxxTvO-Q7K=H!Rm{JPscueOJfl&pW~p8fUGeX$?vUWGZNy7zHYcBg#0>xjH>3DGK_< z33-yx3piQKnJ%U*A3J&hMnI5pG|@g_rKhfHrsFZ|^_E}_B-!woA4nRLtamh>K?{iv5+xEE`T>I$$IW&8$0$L}vy_X|6Y^1x)X_`W zibzo#4|-N_Lc|x_9%0R~DfYuc#R+ge3~r3^qzecVCCEl2(gYS~^XPEs1IF~Ec}kjQ z5lZNL>aHPA66h_OcsQj>qb2m#VcMRmDrvip#eB}k54Y62l6|u$gjlf7TeOaednplL z_CauQe!}I|87K4kkS~ibjMu$08(N z!2D#!cwBICc}A8OASKp&k~F6&w-^^_yN4PvJj<|I z8i_PYFrH2M`e$GA@BZ#@xVgMwI-R1FB1tnmaCiT}Zo8u_D_q@^Bq>ebQ50hu@5qt_ zZ#_wpqEx)btaq5+Fe*muc6*$SiX~?(qy}d!ZPPLu6 z^v9;EDbkEBfHg2Uh#&&`sd7KxG!F%Uk4M4NNPBe9IP_cLH~`0=!;xm`ImHbsku)JWXw)l+e5QPz+mQ2m|CHn4iwjK`_b+v{rOohbPcBEx|+A zG|_$}__$40pM{i$D453uPUi~(fi%xiN|6@@`?h8}og$>bbq22_Xhl_3c;}7}ycO}+ zlSGm0oUZFh(*$c=RE7Xano`WioSvT}kYrj@WCg}J5*0VYsz_Pyx6x{L$i(#slz_hP z@p#(4Cj`%8He;0MQGHdH)O|ym#93F#gj6ZU12iS1AQ_K2Jw4_0?2N9DBnvNm>~xX{ zALUt2*H$=d@m-Jh@sJ7L58g;I>sN`V&s@sEU1fML(hyDRoro?KNt*H1&%UIq8kA1Z zQc_nHLMXbbMGXrop%fa43jrxLT0}ZwZ+Zv;?@WZLL}YM<5OBeyGn9}zjK2kRgh0KvkGdnxu?s3Djm(Tdw*I%+)KhiV_rl|o*k>xbbaDDTf zo0}W1&d;Ldkd!E`QA$OYRnxIq?`WGg^4)bbA6VoCweiR#p?41HV@+tKvDOjrNGUPK zpj5o&Bc0Nrw8A)xR+8Cd!p+4Q!CIVVV=9YQNy@HBl-H>45TVI?mIB8y65(6$Va>x|uUL%%O6`wE02 zOEL~&+L=(%(@6-7fa!F?zHRuj$YT^no>P@OT=1k);GCct-2FG39l=>70f$55qoH>Y z6iJ2`A~JvmcN8&bl_e3|6*9p(LkOPPWWvRKhV+o732%S+j+6Nb%jE`X9L_nMGjU5T zhr@I*6cmH7+&cSNLcEJ~Od-kgd|*jsWJN*Om(l0jL)SNP_LiR2>K^YsI!_r*Cp4yK zadyVdi%WLpj>qLA-p1ErjKw7yooCGEGcL|A$ny-H#J0U|4ZFt`-+cEyZ{NP-{&B_q zr#n(&>tF45q(V^EHJ8&lP2Hfiq>wpHZwS60KBqXMB#9&a0O%7>`GI zAJf`(o->fkUwI~%qb zkOY47t6%W=@W67rjh3jR0uchcT}9B6<$4XsxHE|BT?{Z?%qfZ-ddp-q=Kb4un69I- zJvzybE+v`Lq{xWNN`)RJT;81X?D;iUmzT6ni?w#JW=SH{5+wU_k8zf^=@35BMQrfM z04Bs)OAcelVfh$s_Qy@fQS1#cKaP#CX7ZS zbeiH3eEIcjjB{*PD^{y5(pkEuq<0Q2;O6-aH#gVJ=X28Grh8oP_~G4q0)mepZ~6Ay zKhgFryY+??fmg8K?&vxbqfS*cAI$R{r8H*P$CPEo)zxJ*?JM#j9WuU`o#_FAlw#n& zL=JtHW#n1P`Pm8M$uP!+fC{j$O2(rRb<+{lC3&rUJck@PLas2D)~XcwZ0o>G7H*T3WZ{G6}e zyu@3NPBhEqGM>WTF`HkJB#{yI;_3>GWHcE?;)#-&!$BY=d7hAE8P=MiEs6>0X`YcL zDOskOPp6#BW?bxcY_>blzF>YaEH1~qiHk%cT~vfXA`}dvZ(?|$r;{-f&2%&wGM5Bh-xCn*_gjQeYJ_H%XxpCcZcAO2(e2a5!(udwbKIHwqdnevEM}^$@S?ORndb7cXwOzPN}Y z0cTlEBTcUBTI$~7ZQ$8fyq%;%v`>;;W^`NylV9!FkJk zb{cO;A()KDJiobNv)y8><@+Ds(bO%|$sBDwDpgUNx?1B2q)Cd9l43lj=~|36thUmzVtF*FPiCir@V57c7Ssak*ZjLO>@8TBo#a!^zo#+q*}U zRwQXk*ERT{X!=M2bpt#k5cq*7bHHK`v$YLA<^)N_>FJzoJfgFaX=Yr68R{m^u~NkJ ziCk(r7YOvUwg(X{T|)?@MAuR;o@OwKkE21FaXKGSq;bjARC|JR^n(v{#H;t%-f(eo zNxg4){ncycr*nGKP*)XISt3O=UyxFf<{5dGb9!=$agK-ehN|iL>Fs;A+a-xmxTdAv z@32izS2rZqpoFBiamm=2Jzi?IW&=V{Q4jA`I8scViDLXzDAubDm2S{Q#&)y93(x80 zDW1q@Pm>fx+}wxZ;2Mqc$n|zW@O0KiVw7{BnsLf@34YoQ0ENS?dMry zPxk5Yi59`4wdT7Y-tqkAlBR0e?@EM-iXE#o3=xi=K$@lm7r1zK!|mI5gb>J3^j(KB zhU@DqzI^=>-y4b|!#U4-y`gTJxczk=ty4};PEjhMD)&ssBfO2Ka+Ar3*<=z|`9k2G zBS}((6ijC`-hcZi%CaVy=zJh$AVE@#fOP>W2jAdC4=IoyXX6Ij^%ff}^Z6{=sg4Vz zh!B<5(Oms>vA}xA?fnA+_~PmrzHK1OxO=?ESjY1h&#C*K)5|k1pWpDqAHSoqF$j9G zSdb<;QY4(6Oqt~)7V|m9c*5fH6eT66C#QJtnayU=Sx`w{K7U3Cg8S8q+q=8L2;Xyh zdV(O(G!ieyw2zPE=_nrHB92O0CkPQqGJ-%dh(VgRjiPdu@Y}!nH@y7v6;0E!T(8)E zsHvS{v)_}bgj8sP5I7rC?VYixB#Q^$AUjmUBWS#fqyy-C1NZCUTO@qza~;;}x^hb=$6ea~{e=GBWY zm?R~u`#T(lQ8A}&>&Vt~7GZr%Eex?(5+P`;M~N7*=|W_+g)lrjgs2_v3^jPeYnHM_FK)EyxYNUfpo5QQcn4>xZ( zr~*IxamY%E>i>hj_h?RcELd^;e?mZXEs2i9(rUG1Usinlc*|)(^}t@5xl0xuS7;+$vgQ2FSx5$@@rw zH;y#dIPXz9&g<*#E^-RJCCzj8UB|=2JwXbpy5Z%UFL?9i8y2TCP8Ks{s<^&-#^vQT z1j&nMFUXW6^@5-V#!{BkG!3Isj(4%Giv<`(4T;iBXR$@gM`N0*gTjII^i9FTZpX>V zDbvXmcNjNx8b5m<2+pF3EeW-;oVPf+3&ZsUC(y2X207;Ick73&0=B7C}5Fpj4+m6Rnt@@X&x7XecMIhi1TO> zgW+WmB!g9f5TJz`g!K{;0(M~Fx#9H_;y54)C}&BvBA6&8bWsn;YP03P{oxz-WzF^V zC5aStZHF_KG>zj~(;G}HQA(h*gfK`71O9OH`oSybFzXzaQ->lxT(g60@Q4K;7*-+9 zP~M@oYtG($f#^(h$Rlw3>4E#lN3?g4WmJ97*~JA#o<~}ql5sY+J&Vh8_WKGS1XZ*Vl5K0jO zJU%WdcP0DXF2<8sLy@NJ+m3zTQ@1SuooOhtoVsbq^XR$|Y@n?xM)NU0ynT!5pK~%_ zpp$ISdBzhNA5}|z7gOrhz>)R@s-`1NGm5<6fBg^t6FSkD-qExTb=z`!e$DmuGqlpA zI*Ast&Y-glF9nlvfld@fo(&CBXEANciee#zhb)nCvyHErK>cON~+E>6!7Gs9-LV!hgu zjS{pNkz^yRclcnS4mjuN`<~A91n&@mqiswgBJ`GK86gOq^E6!>y{rO^vK-%AwwnzC z$?4fMc2&jW<`HY7L0;3;^j(ALIubb~Dp*gj0hf48-E#4Ih8D1?_GlgBJnODwUp1gL zRk@8=wv5o24bXdYU^N`aMK2-;Uki!#k;HPK`f3LA0`E~Fx{Jynv0X=3H?+lw_aAPl znwB)tgOaT$xQI~bEF-Xsi%}&J1NYklI{3q_dT5$CZka=f3JGy&sXr^?r;TJ7e#IlZ zhR`=C1-9=fih_sLiq&JJm?cu+ng%BVWnGbH8H4GUw~Aco}NVPG7@hh^9rcimd&o@ z_rL!G>&=EF2)6q@QozG{Lm0G|06eMA;^~`7_S-%CdCA+K-lN`s z;LXb~7>%M-4%S$Gc3IF*2{v(^+n%+9b zqbUSQqNA8HQ3{u6WFnaq1=ht@St01U7L`UL@+8R+NL+|M!3ZdKJMugw8A7U6mY`ig zrx}y^7$F3^-G)5RF`XepGENh+G^&e~R($cr3#zW?um18cka#BJF+piwy?({|af#{$ zHuMM`c=PHN|N6&2k{1(N8%R>gZnHs5vZyPTg6($8Zo4HIj|l-K0$L@EPo|8IJ&-LF~0(tve|5C+M3{93_^GDe>#8&4iyxF_`IZ2aXOokXhqretTwv{ zV*v_9Ya*9mS2busyj7LJ+9>HWgZc^rsn%F$u_D55K@4Q2foz0O2=8$R?g9f|E+o=9 z%)Z7*&Ew-EE(DBq?8_RZ6h6f6&V;~7Ym|UsA|Km&&~XFBam#$$Hyh3(U`vLDXW_G`jP2m!gy4WCeir; ztq1~|rlRY+xXJT@cOO2nt15nc_anwyCgbs704^DgGTP9_#Dd=P zr|%@a-6s;vyU2!^{VLMA>dit(n4%AJ_bUKROP6HNetcf?Sk|-%@d&_dY#dLxXUjmf##^*WeR^nwp1)JL)>}t_5){F}=a}HpcEG2~BUPx|T%6 zaBUGB-QeT3-mP#ZAcdsdtudy<`55BuoQ=<8i0!QsDtc~-m|b=zP}yqNMVCrh)Vx@(%}^s1*FYF6X@lT*S|MGl0ip_~t*grQqL zP$-WJF8Kecde0xpvMsyscieRmkr|nlRc&5(KQGO2D2W6JNdN);*?hU3Y5)Kr07*na zRQe!5UnpQifWi>uxHr$VtL`q7F6?#3>BBxZvZsN5g{s#T8FAyBZPs3UEp!aTd8EEx zW803T6v<295&8j3A{U>T7{o~$*hJL~r%k%C@=Ehm^$A9??-+cX@ zPz6hH$x-AseU`;`axP-(vdt8xQJ63DEYtDIVU^5C=f3BMZ@wiN#b$HG`TQ4#VIt+k zAO7%XzWerD8f$2jqn{^shXbyvc=h_0Pd|M_Rnwe(j z@qsCNe1^$S98U*^VPv;IkV548`ik{>MYrBaZ*C0x)uOJ6+Bgf4)W0CaVI#j8*5h(zXb<~&cdb;s_*k;*k3 z`W~w)<~WdpFQvEOC%TLR6q04hV3o#b;c0Jgu32r@coL`6NuHCnWL>d8JTZmH=tIGH zAd;A(C&!2{wk7d$_65jOO8v~%OCc+{N&wZehdaeUQZjAPg$T2(i1yP=WexX-1JAoX zMoC~&T2nW*5O=D&sJCdwl$M$AvS6>uUg*Nz)A%%&+b`pDQ%_-SI7pLq4^n(M1;Zr{A7svUiQ;&1=+f2OV) zo}Tx-fB%8=Q8sMOr?aqgRHm|yRo8Mp_RJwN^drefzW?S2v@(R~#o5ov19|%Rk@MjM z(_FfNRC*XAA_A&>#*{Ck01EK~GL_P-R%=e%m3JU%`0$3Omw z>3m|J6OIyPXAvO#^{;+O?P^R_@yEaaN51>%9mms&?d=bwNKF1h6q4gA;AYk`y30x&2UpkEjAb*apGI^gnKY)%bEZ88K&cmZCY4$wruF##FRzMcq^!PJ5y^ z%wyr6PZMq9v0caQ^)>VPETg0lk+5KdVYT4LTrQ(tSdl-=tuG`DRk)S^D*N^)lrwCu zuNlSpn8{0XKgA%ZVQI9Ne_qHQSxTaVCX>;E zm`j(Zq5z#2pJIx0U6L8G%=^lvwPs<#}C}U|9}n=TUnw~OelN^G<8MQ zHoX0Kk5=#x|M-u5|Ncinb3UE;^Pm6Ba6Y5S?4BMOr;)UWWGt1fna6><>n(E%=mb^Q z(A2`lI-XAa>Cazt|M8yP!xLecaJ9o!mZTLrSS@B)DBlwJUl)VV=7}Xjjc4c%%sQUv8pBnVevIhOUj;cm}r|uUUOW;jUZ@$vqF|NVdc5B$|%|Bm1%zI*!<<1okumNkSau|FIc=b@Cdfsh2KTo(C-{GiKj zu#gjyGSp4W_Vq21Oqj+ODr*QhXP73>qTXRkMH*tbu%v_;C%i=I!{ukDT;zxHOXZq@ zkONLv_>!!$QdI4VDMilH$dn?kX{nlyap=WrWf)0OoEF#C(l|%GUJ--m&8s^;?4B`{ zIqxzb&ljrXOGc&4{$Ai^e%1z;ayte5Jko9NSgksI2>3a0IGyN=BE8D$B5D@Z@-vli zWy$4N1>Q4-!2QRMnA-4v{Kx-DWi|ip@Bf*)syXft=u`qqevzZmWSkPUshkB!an4a& zi!u&vEr-LC%t4c4|GZ}$XHt;Mih6v=pS*?)&QyH$`7ek$asTj$ zPMLrC`#*6wpNpDjlJ&eS7NjETph<;c2MTSh@Z6Q6+pJlw1qhpB!h0ca`1 zb2Ql`QaK9&16f(iW?5lV<$>7&p# zL!hk_RvKbL8^xFsb=xqG4}`4vgiQ1^kB1#i(_t&k$Bz#f`^;bd^fjxh z7H=tM!PP{-7|W}>8?LUm%+pBMH8iUg!4G&JI6Ob0w4u_5G0uc23K6TWk;{`4Su3KC zOta_X{S)s#K0q1I1d`ASl@SrXMH(i`WlKtt&=_UN+Hmt)a1gB{yWKN6gVrK{vp?*p ztD5s^Pw<{)jUj}mBKX*b=#1X9Dqt|y!AXC57bSKagO6|$1n_+D69~v+YGdI!|nAJt3;*aeAodp z?-U}41T~}8&-PrU0&3d^a%9uiBp*azz=-8#Q_Gf&_a{!zJ6wo``6K&UewsN2k(<$| z(#r{(%AxQ~7muCO?ud34)3vl!gFg+j{dMa3{{B4=A3lgabcWyqI%Tny89lmj#Btzx z_k^u1*H>3;)>mvcGj(mLT*WYot&BDz?JEw8;@4!X!TZGQJwN^Qj;e&bVMPQY{LpLMx3kmS(l)v(H`&U^h*SFi)Og9EeGJX`N;3 ziJULan9GVEyxaw)b=k6#l6~p9Q8I?j4 z%@|ug4O3GrTkx>M#P?2ICnbAmA9jA$Z`lmne>gtN~I0_H8^cagr(h><1 zV6^6X)uEIC6|RuKhjE~3I;I#n4FmloR+~n>Xk0~=$w`qlpf#xoy;BqcU*Px*+Txmu zs&d4bQC3C)u6B&Ofz9TM-cKC+fiZ+~u;frJE)MIq;pS>Xj$+*WeE)|+;Rgi^vv%SkeQjwoeNMw90#HZjiOTt!<1AdHrgqz{p-h3dP=Cg+?9e&*EoY}zgB zs}1LVVhyxyja^hA1!*o9`LdtOWz}!--{o@K<;&Ic3?ZW1mdc8%&gpz6gvkDID6gBu z*9Ubu`z00$_?3dJhAA=83Q24xb!uCi#Y=~mt4utj4T zN*^`MgK)WHyku)t&`VdR-K=v{VC1sNU3RP)1?umaGjv&Ak73&ouPKgE$CNZt2?!8mpm5>?%yo7zH{@rbdSZ@>GF5F%losW5VBVvx#+B9NdI!yNF&Fq|i&(xV_p!loiFk?+GC>^@HFb<@I%G!9*Kd#NkvH_M9#w)KpYPm6CfS0Ike~ zef08kW6?Emj+xRl*u9pSSdVvR|4D zI(N~rTC#F!(ial6%5r&?Qmnd`+B!%PKh2zvXM8^vucH?TY#DtgvdqE?yDJq9XyFED zLW&ZFn~rIi7=0jwfL4aI9ONvuK*|uc@MNu_fRZ&lRjQO!J}Wvij3+8<1U0r6ZG>Q+vfSLL{^HXmh5{t9vIFinnTO0o7epI-&lTn|B*1y3{zl#?D^)~@0g~Mlx6cK zrxyUVd_yP}Ej2)CoUJfMo?y4`=$eWgA~^*7Jg{k68s})7;dtt?8K!w6hd^CO9dnZJ zVNuF7s#v*}N=4p7lC~tv*>TF0)y9JB1Tk&XKvfn#RN1OJp9ezl1n;FC@S(UZ$URV5 zaGR&yfmg3z@yXo{DDde@=De34x0F(%!Ccdy2F9!^Y&-X zhdr*mcuHbWM#*r?j}l~V8C4~TW=atg#B!0_rovjy)5m*(@*3t07Y6j7&4*L6iE#|YZk)Z7ky)Sha?f;r+W0_<0gUR3*{i(prM3RxB;h#ce86N@;oaAxl6_#;|>LOVu`L z>(Iv0D9!!j2QZGY-;-lP895s%XOs~mY>TuwXhTk7tPWt3BBa1Hdxnz)q0MH^DW6cr zay*|IzCZK${KRTr_xBHkG#A}0wUGLRj+i7nrYJq7Q5vI^SgIhwaI@~Hl}61o zIz{k;i8!rc^1?MwQC_30C5oY%Wc7%&4ysHvR1pub+Dhr0G}>r<4B~55##N?NFjfn9 zx^WKgXZ#!p{wNC}MbCPgMk$rEctnY!az^_=Dr=XoZf^)NvA()0m2h4ztz=hGIe0-v zrH)_bSgC0I=EAD-w5t`@>ox1T!e)r`O!o5yZ8MjsC6UW4ylA!Dzn9le%VjLOQ9dWS zuEn{T-EhF+8;77gYXX*G%sqbfj0sXj^{ zrI2B}QWn)U%HpFiima_@yAGwr$}?ukd_GK^`(7w}X|ZV$8~lXHL5ljjcEy_8gB#_WM2ePtW}H_9wB!j0>lj%ZwE$ZGb8l*Wk3Kvki^5SYv6s z7LyaMatvW2#KbU8%w8;POzk)vds4{E(<~zC#!4_N)rx?OqQNB??jivUJ|?DOKDJ;x zDJ9YJ)A|j{c zqJ@+hra(ed8GGrymzi3b;+04#{hYM|#XDzN(4qpf(^CVuoVj^9NEmcl>*k+x7@yZBVUx()UHM;&C}xpN?Yd1ivV0s z1XS@8ei`>I*;i``Tq+ljqFfX*wdQJj#p~BMI9HRk;y9d98V<(;bBtmz%}ZsqOgQIq zhD;HwD`^=8#4PA{Ds$AjWHv$)I-?J~`*6?0^N#*BvVVRi7WtiAFn~qmMP&*yugF>B zw4pYdb=6>iNoC&LUZb@rllG^xfT#+#+pS#g^@efy4s9&MpB3L#(d((mevI)*|~nIb?@RovcOGtQpI7)E25y_ck!5t~~l)vsLMMDl^- zX&{8iJWh<&fWBN@UVeSKxC<1de)j)msqs@J4n6f|&F8=Vl6JMmILGdJN8k6P7%v%1 zvh7QGzRb*Y$#fS+7X{EMJ){DBh@AQ}pw=Q;Vex~~YWbw{^Vh3uu5Rv#LF8a_kmut= z;Mn)<56|dw=`XEL0l^j|b2faMrP2 zt!OIwds=ClswRe+!|qwQu*FMNkqh@!y;KG)Aey@L|4V6YR1rwGj!GF?ZN&A^3(H1D zDGiL$Oyg9{#QKtSN~Sj!V=XCV#&KjEL^v-LH29^YeaS3KxKdd-*L7X9T5q`7zQWIC zn@Gbnk0_;>=aKVqc)6ej3C{(EQ$PCwOHaQ5aoGr1hEiywsGJoaWj~WsCPYhB8B!9> zs~8hjIYFkCWYClmd<0EUqA-yQ#vnhmG$A=rm!~e5Pg6O|G>i=MOil_vi-ENmh9iRN z2$;AOZaEhP3nhyb&KTwtnRBFV98qPOuEvv5&d_aE+}ysBKx7>;N8Wt)n*Ht|{QDrn z4(1Gb1yk^J-HNWeVwfkY%Fqv^1e>Pj{^1^|@pCA!nSwcyttI40$cdyWLVbq1&}jX+ zr)e8n=Lqw}#et(FkV|4!$cS(l+3ohcx!ZC&9+(>AMI{IvW!`Bh45$mVzLeJTUKS>)bq1vr=l&#b zGYOnSK}3yGMW!SZl)@R!y6qT_XKdxf|8$i_mw66^LHvhQN-t5nybn;Nasxs7pSac znN&WrTw%#N#S>N;nnHGHYSF)X-W@pi6H`CQdr(|xdATT6qEuPBkjtx)Ku`{vE@L%SHgaORU>c~UdMYJo2*Q9W0F5oP zNFU|roDO@upMF*e@q*1DKW7nRGs>WIW?i?`RYR^7iNI#tQ8f*peENoIJc&wURnyiL zbzSlL^&7tZ{(C+tdfUMVwrxjNnRh<~jJ1s3b8~wuKGGJdvc$2u+K^M?bgBtKq@OD5 z82U4nYw6Y-&W9tJ$P@y$t_U$ucPlcm*H@7=urqBavP1X~N|~lHU`!`u)2=C{A%Z~pps%wx~j-@X+Y%ci0-im@LF zK^BK|X~Gv~)dG~sftCPa5GhinM24)cWTaw@lu11&`CzG#GL(!sj27a7GKQvdtlL^B zg+9sKZy^rttzH@l=-fo zASN)90LtX`GNVkf5cgHVHgCW1Eh#6?^cXPUKrbv>Xmc>h?#j z+J@Gx>8B&--2r6{uUBjCKKq0W?DwLs(KRi%uU_%Ad*IVgK4Ejc;r;uM7^Mh9PwgtK zHDnE@u4!t^=H`mw+=G)nYgM$|$ck|sQ7MW@LJ3r2+fsnza{u~s&-4Do>3G5}zB?r# z7m9JoIG2N+QH8*8)ii9oMl@=js8m=D-S(Q_|JLxskMDWz;LYGxMD`S3PJZYhkIV+=&t4+)4up`gu;*n%P_{!xXI_I#)lre$G-ryY5G&9UI z<1{kO1J0BVS17}hA=FD3jg_&Ic1FtUB(4aifJfR{(28lC(T((8ZBx^qV#`A!h zJ;UK3f3JL6s}$ZkbjeQV)0q@K{qe*&PmmMNIN@n$>9ZG-z~WlqjG=b6v+V;Fo$mD~+ovwpUkJtr&+h^Ejc5;0ePtFiivF zBzj&;kCo+SvCsl9Ra<@u5X*ljiJ^ETslr^+23;45$S*ZbjkS(`nmHU!9FAumA0BW%GsK?b z>Buw;bk|q-7)c@GV?t>o3@kFUpBaZqvhz6c`sR+5BW*~0^694>ryir=IP_p;l(fED zp{ynuLmxfEJX2dIeEK9+))K0v^%N>bM1=mMpG7HzBm#8uJQSA_dMRmHdaVKqDaEI+ zu4(Fu=kvgJyJmZ}DPtaaxT~u*pWMBst}XL4@pSI_`1pX$TnG)b_sr7_rIcJKyJapd zRuKp?r=n;J#gLRgs?a*30XJQOwADO&o_MT8?feHmiJZp@x zGGlIFAW+iqlVHBBH+3^%71PwTH$=b18J~^nySXQp0)#53Pp9JL}BhxsMrWu_x zP8+d`EP;nbATKWnvlioX1u96kH5szDT&-7BMpJ1`Th$PxM>W>6-;1u-`E(Q>HZN%8 zk}c#6zKj@QNeohn#3ZdnNV$m5Lt`zbsu@PvSPDh;Q5755m;z{5#y4V|o|RByZ*I1H z`sr&~v@nW!hPJNgI4B8AB)I71oMctlhs*y+zzwB+5-x!iuut%?g;OJuQ7vUw$-YWK zMwDEAlJzG?y>0I0#&5&9qaX)o10tOw&Lk&C#sc7iQ$!ks;QYC zAElZ>)Jjd|xW3);)n}h$t)Y*J&1%D39kAL+PlfQh6$@Q;nF9!DQClNQhOWj~!^Vk3 zsC5<7bYMCT;Qd9e)T@k&qO~M7r>tdarDY$wY&%(_#q~}pw9z7E>%>pUPo8-gXxkQ5 zfVP}7!#GkKSI7dQ>3pe+^Ww1hvgknp$5M{+IhWDgQr{^>i~%2fp{ok_T^U0pld_gp zL(72BRSh9{HmfUs{pA-pTY(i$`a+Mr-mJN~x#sP6PpsA}K#+SML~#GypD|iwhO9Eg z7#N03_M&JSaux$JXSuoAavpl-P}8`EVLGv>&8V2LbxoK?x~jtiWADY>Y|gB@mYa3M z?|<_vj;DdFEvIpyXB7tb!W1U{)Sd`bd-%^rotE`89#D$6XFWBErICn{&s z(DU8*Z&|NakTRRiT6)r=$~a83IF`pi%8sh3nTyZQr`>0)H&^&VN;sa6G3T2!GsH$b2N1D3DR*EzSQt&iNQ@0(Hk9_gFU-IeeSK=^# zI_gsV=xMQ$T%ZDw{iA_X)ffLe92H|dHRKPk(K~j zHyEohPPC-8tuDm)$Hyn;Fr!kUHoADeW^#_8T)Di$99o!VN{L3YsEA}i%Nr{^^^{N{ zqO80gA%Ip4$1^G?!Z^#EJIg3ga)ka_j}7W_z83VJG6tbc33$O&kVTYvog z^@>n>*shb^Vr>-jJQITD&8u5(Zm&6>j&gPYjN@jzrE40-LCn>Rwm2(tyb5&@=toJ< zX^o+4YkEIlD6q2^Gqm9tBuN#EmV{t4tFB|!wan*H2syLIuIr12^HhAVw1TUyGZ!YLE?Fy; z0D5_>F*2Wf9?mEB`#r0!W1MG_68#@lBr9hxE_bAat}5nfMmeeXovpdqZrQBY`0$$3 z>B#$cKM{-;N}V!zKQqoAjKR1HZ55_+bgNFp#46#dO7=H2bp>M}TDaL>aecMn^_$lm z4kFA}*DXWe({&ABe(?oWp|RD*613txPMF%FwPRT=YulC-Gky-#wq~{J$YUtwOXTMI zicj9W=4!KHnnorc`1ZT+_;`O$(=^npmKgIzenlnG*s9u&+uJ)?M9|V^)OC$mboOw+_1B1%V6%J@|Jv=jv-(WdmZxv-QJ zVjf;NW?JK#8b!tx1bYF$s>%^kAbC&nUVy)p%JvSVC?#biml0PM+#xL)ITs%I3xId& zUlEjfLDGGg$wsqUuW(&O8x$+mVO>Sjv{ZxJ&t56E>kaP9FF2phVsDZoA!l5vffWM8 z#)1JUTjz{`qPmN+6CrFVgWVDs? z*?Spv#o#fulin|j-qU#=sIg+x=o;#}zPKT@wb*C;o4@)Wd2{!QfBxq`kTW<}adWe! z)-r4-Wv*_vtT!v>aYRK?ZB$BuHD&gRl!R6oR2rF=YAq}&k(sH`#!|Hnrfo>2Pafup zgrYy53BmK#Z-2-8AAUp=2&&kZ0J-$Q%Z}8`rkIT9l2&w;!v|3>G*%9~u_Z`&&p3-v zy;16-UZP^6Yz-qGzRQF{z{nR@$z0@A3-+KOCRM1PnR%W?R4~h8$*+I;B}r=@_Isgf zZm-eWmKI0hvV{~m9>t6+#fVRlo9i{s)ufboe0t{1C!diJ?Xc6~OjSAl^8NRG{q?sz zJU;XB-ABSWiNEe37teLlyMFujEltzVpL=mV%$euij&T^N>yelut?STQQ`a@!rscRh zUX0-7?afUw7%xPb6miz#oM^A@89wM<43MnE7onp_GUxsXHa4^T}1TI$}sy0 zWerAKw%0d&w%KwV2l`>)>2yNZj_u7A!!V)hiu2PG?P|r%%^h`R8ODj)S+p0)5OdY= z```SA&p-c^SJyXaEfFebm}a3w)<)w80dss-(koiaoFYa6S(9^+V{J5H3}iBmGsKXv zw#Kc*CrOuog%q!uL#Asx-rT+B*T4Ri^ztQ&&fXKf=XSdx<%H`b+m6SX!~Vc9jRX?L zYU;XS)i%_%qed`*(=Z67F9vRIZrI-3@T*_{lDeudv)1(dj3#^+l8coU(Q&nWGNLl0kjB$ox90(~ghafx0N)DSw zWPOB%mt-ZbsFW;R@kqKbp~%9hQiZmdiijNO%joQ?>u|2(IEp`RUANS=R9@CP$ci-2 zoQE_0AOM%EYQ`AZ=FI)W1H;tw{Pe_(!#?gvA@K0{$Y-B@#`oX9<^KMG`};>>-wh*m zQ*$0BoYp+|Cz__EZWhqc#QT}PAE}*V-K{vCkF1O(S;1|Ls~Luw&3eVv zdc|tJ60AWf<`@aZc9eoA)y87F4kC4 ze4*PJWohdQ7hr$?#58-9RlNUj&-3xXcslZ64Ohd+?d>aCXULJl-lgR2{wra@^?R>q>Ebb;a*~_ZyCf9ruq9oXU789f$uTue!}hqCO*s!Q1{ zTWGS+94=rSF|wqJCF8~rY3r6(+gs+@la!)qSJAkfzWo#D;{iWT)Llna zH5e_IX1_nOkZ$(76F0ABo*#GY4m-RL^rw+;zWtiR>CF50ADPcRwKklNC;U7EiJ6R_ zGrRq%R7Hjuy!7lTpwP@(-0ovc%wvykJN&~FF&59`N<{Fgx}saHr2JK~EE7`{LQ@Rn z6sfG`dL{Z)Qx^YclU3QVrqG7PSyEYzT@0~b=yFSWvlP!66=QM8OJW9<5^dYiwE~*h zoau{w!*Cu@#^CCThsQ^rb~`rPYc`t|Mq9KNout`MSZ%})#%N5=BAb&k^{Sz38*aAO z{LlaPuX((`=lkzkhS8&qNOXc67(+%`OSfL36g1A2GEGXcbAM*`UPdVWEQI@IY^4=G z1^ju&RvM)l?_ zfZtX%V?UCt_$I{^I2pz5&6e}yGuB#M)$rz%Pr19@P-}(D;8Wl{h@|O+;>$0;;?3PH zfA#y{$zpnvWr#og>1(d9ZZOXB`qeA`{FiSqt|EpRqa48ps;1`YdB<;l{S~)&ZwT|u z`*%OEONyig=@p78+`YQtt6%+!OyYbTxY};;e&+G{5m%M2%(`NKDg+CkWoBHIv@i4D znBxU`R+%D$TH(t9H%%4f@?suDD?P=8VgOw&x0BJ(uK#j%zg z6EP&(bw|*OUw-u!|NS5TJAeEC{w>@sGKMk=KaH~OSGIsivPGn_ z1TkCCQiCk$$0Ej%3k8y#h$#wYGS3{(C$e*FZ*IuhF;AI?j}Lr&_Y>39(`uoK`Z+Vw zlZ@rMu9*9Q_LDn88pO{@YjVttV^7z%(n`%U{V<3@+mf^pTB^@kcm_Y4RZHbiMn1EtbqQ2eg(Fox-)Ps=AmmTfX|@7lfpE zcsf$o;-y0&kjJdViBG@u>Qa#f9``%OdF0*u4~#?4>3EW!g+z{!ix>dNhKwmjT`>l% zw$#pWJf5i9R-7J&nRoBsqqOEHWBA4ApR;O(oZ)9*E{4!6>$V|IGT0AcW{wV{D~`uK z|LOnvPkjH~w|w!*FW6pfG1jtKZ>gQbpPtAUeI`W+6FJnh>y~cSv0kkt=#@R;-R?-` zEPwO6-xN}c=lc)uxPRO+4Ux89aeIAD3K?B%4*LT+LzOkjSYBOkiyoO`j3aH^@ta?M zDJ~9W#nQ)!(wU!r_(Fnl)a4Rg-2;M||tJ?}}=ghRd@>2l=Z*qn*u#9RR%@ud+E80~@Q&kw}z{=>PY20Nl*mWzS51h^?fz*8vo5d**Z3LAV z=b6(ql2fK126npx|NKw?!cXtt@qGVqQI_x_F~vZR`Le^i=ZTw<|e>?f3w z`QqK(ExYF((=_t#!w0UfHdM~xrwLulp&9#`JWo`%BH4^e35$>bnpMNY9a z=fv*mkz+ry8%L~d@N-}|?TPb%%8ANYQOYRnKAkeUGE~-Lt&m+RD+qk@f%81$%KUqO zIO6AtX`Wvsb&v_b<+qrhZ9_?Wq_jfJ`If~I`OZ`lENCI4L^7+cBjm(Qw?T!($9Er# zm8~m^E^t1dutwN@S}Sr$C}U7D(5=?^C;|o~MT!B3D1`bTCTc9qD(S?_@5%+1aw(Hz zDvB5ijKa0G%o-KUInd9ZIRt^W5pYL5br-)<;cbrRGiZf224^+9aA4RUa81p+TT8Ed zy#Zw7M)sW*wX2{Y+I8&&v5Xm)61tYPEMqO1qHrHGj}H$F!^FdfM~3}DE@mpd8HF5B z+}xz&lFzJ5AGHXwsj|5uM1{z7>eAaS*kPlsTy*s+=J;&ZTNf zxUM0knYOO5l>?=*7>%z}5fG|fQVJg69NGFnEAPKyFy^}>;rMmjA}+V4L(H1 zencC^hut$(Q_IjCi6T|qkaK35W|3@#BB1VZIrH?q%i?LYwk|+d*0@kUNIPVX#Nt6vw56`TxI);8=x8Dmu zHjLP8i0LPCN?flu{4f9h-*bHbffyohUfmI6q-`69e#AK^>v9Isd{P>$Vmh6$^@gfx zXxk1~Rrrvkk0*0JpFttB>zqZZrg7|ddzz*ZGC~XtXOY-xRvjuP_K!~}=XiL0W}auR zZ?|+^%TFIaQnfYHIFm*%I#ZM9>G(Bu*9cv3drM4_ckh4V=H`mp)qMKp=U7vrpC3WN zYSj@24_eI1mCroy?q&2f4&;8~*T4Tgr+MP-+aKstfRxM91`rbGVZu}m*(%0qAjIjS zXsNX$E6x1>bM;=owq@6u-*2Xs_TDGmQ1@0YQWPnvrB+LAxB&;ik9GqF><9mqer&*i zE!b$=fLm6()mEY?vM5&Z#*=qiX(m66x%MgR5=9V&!*h37bIdWm@dX894k!7!XR8*B z=Iq%8eindJWreOB%E00Nfx24>*+gslV=sGeBih>&yI+aJ%3{hlmfb3)P-rE?pA1JsTxoz5+_d%Gy7@c{{8`_G}AQUjFv*Jgw<$_CC6E4nY%sx zG!diR&>@5ZSp5*vDiuX75B5A^Pc|${W{9Sts>H%lX~`2k^nDps<*-KNyv_=o(I>Tp z&c!7omD@f=hQnS~3f53n7OxcF|Ms`Md~roiUs5@XsiYc3?-`GCVV_6}TvUqv2V&1OS)O9N{D=|{njxl@cZ0UD<0wUS-bHGQ* z`*jP;E6d0@r9{$&?XToU4lzPur-`DgNJ_OKC$V-FVU2Lala-l%S*Oj@C|SNa;e)4c zJ05li8t1s*KFE7c5sZGvR`|0g;;c$%brh8P%JlcsdXt5=g1UgXSUz%dH?<+N^9A< zhRAUo<>pSp&$ULOvdm4jb2yBU(o+(3ONbl~y?6pG8s0(}OC-X=C{v5hRVuE|i(hfs z)oF3cS6X3=DufgHB1w^99Es7Rv!Wk*whvoWh{SOuXMy-X|LSXYyFJPnZtw27ynMmG z{%`(U{_@ZNf;S)DvppVhRfE++`BX_^T*Gh}80U%g#W^`^rg>twJCI7-eRqFPe;DWw zNBku7+dO;bVltm%W!G9=cI`t3RpQujLBH58OI4lL(>WpemM3LWIguW-rkiUGKstl!Bf`_A3l8G z>}83x>yI~F zT%KdsE9MXoHDo5mKy56!B#Vr*C+_yx+R=5Z(?x2HL0c)rXhjZUn`3i%!FgGlXHN7i zB2*b-7UV4fNy)-l0l|Cr`<-MGO%sbQ2_-Yca%d$_sGM1?%C2vjvpF4{rA<{Sk*2`I z?IT7Tx^+hgf$O_Fa^b(q&kI4oD#f~KNQISRC`_1~NYMkSH~|WJ8M7j4S$3m@l9&qr zR-LS9Wp$Q|eGgh;>WbC*xwLE3Bn87crpE_#?eI}nAz_}WwSgo_ZZUdx`-AXTfwyno z(Y75iB$7|;_u^wb^dl-H_BmpsbSQI}WDOA#_jk9Pt=IU2++fBS-oJgv}c;F?it64o9i2Py9cqI ziIEfo$6=6SdlB*D!20z|nyM1osH>UsQ+Ty#k0pCU3-9$5N&$$Nk&p1(N$(128@+Cees=k)^TyZ;W*7FpD_zR z6a$unBqv#JN(GhCVorvlY8zIqsC~4~45OIMMK45x6Tp*~aLh7GFWg$xNk1I2gi1Y8 zF%hD>5tWchnfW+y+#jgwivDmUB{@(_@;OSD{8c$f^E81LL$}cf4%5WqhNzV|D8`bC zkQWj`Ik+<0=FHkits6hM`daB`a!aSkM#&?#Zb=oneAH*zzO zs7qTHXW7w*lIvPo5%N1_2p=bW%KXLu^M7-3e#zuVuFlVefU{ch2mkDkM3-tbfAu#% zNA)A${`y{39?^6%xQ=k$GwCR(0jaeP#z2v~AycdM$x7|qr5XS{gz z3WXT)A0Gz@i6IK$ci8V()K)n~reP!-#eTmhbt~$+rmh=e4Aib-jH!UK5zDd~`KNzQ zv!5*0#qy=$+2sXSXB+Z36I^B-1`dZO6LX;4UHR$Fm*Xja)$%h7!YecKVv~}UqA|9h z%yJ9YN;8j>$PLM-b}8jV&W3CarmjdOwy~-l{TLYIL`X|CqwMh_!m(WvZYZrzDyC}- z@L264={kQj7oqAOJ~3K~#Jk1`@D89%Rp*i^x1lS7WW? zus`tf@`|o*AZBuq89tX8PAv~emd|god#R^dyOyqM=?{BBg;Aw-4iF;0_tT&8 zi(h}oew>+O5K}(HW#e@7vAC$H@}J@aVk8$hCE3CHX=1b5pi`o4I>xD|auw*}x16$A z(UxZ}6?e)Lv#LCk8F|jgg~UWL;x9I~s_?h-a@fn|Y|1m-bZgP*YMIefL8Zk_6Sl`A zOFp$iupyr#NgKv-6#1d6NFiW!rfDm}ESzY&T(s)s4_aDRsdpr;2ufj_hO_f?F4qEk z*Og&=6l3xJus?l}i%>qJPuyR%AhWb#LRUPy78Q(~VaX;^np5^o-}kh} zLYOepZV-WCoEE-Ad0Ux~;m{vQSwgf5md|R{h+CmnD6NYbeJ*>)C5S|TGi|IG&NVe8 ziTIr6nH=Hj;+*644Ts%csGmxsjS*m{ybn!Thm-?gOMw`+TRy&f&w71c_Pz~g=NC9@ zI7{bTf4t^#yW{@;p2x>6*LT+phrSdy>3VXGOu-kihUNV1g3HS*>bhogRsc3Hc~n(X zv)^yIT&)R8(PYoX#RZ>!`6;%k`SZW{OAf~aG0adDP%??>vSVE?01?teB}G!g%;fvB z&T{59l5Lfd=+oedIT6PJYZbS*2Xc(1SjLkfUreHrK3!n>sen>0n&r7TIiD$oLQE+V z(6lX8Wo37dm>0B7D?}utIUElXmX<`y=`tsLNPd?hgor{hFceQVxwJ0N&)Mz{@*SSG zyvqSz+%uF|rI@b8bPXzJHs>2&US8sqLT8BM%skDc5Krt6rFcpKPx;g?FB9c5SIePT z%(e1D=#rV(IkdCl2C0-F#xXtt1zDC_%N*;zg~U zgRF!Us?c({L*BBX^fS^O9Ta6#J3)3|oR zHc9~tk?r*zoog9(2h!lNRYg(~F-go+y5{oyig6fue))or;|H7)>q7aCHCTgj4(lpF zSZUjxNJV`RfN8(q6M`fH`nE$m%c^dP3F>CWzxkj3jE~pXB`&jcLQ0%R7mME*J+2Tl zDBu6miNz3Tnl*m*)KyDL0gV-q%Fk4lHRDx*7EMZ?U zmGCU3iCH2w{Vbr>@>wrri&GI@&T4_EPQJpYpUEeu9jz6%sYpp|P_=Q4!$8}0%zk8^ zy#O&us(DE1R0N`e7gv{D$Hd?RuQzLAj2!2gP`Zem#h5$8DX%zDNd8Jo3+^fo!+^B{ z9)_HmLS)|`Bx1CfrWd?lIwmb^4$0WjBqV8Zv7wEKEpC4}NFbK0NO5Ky{V6!kbxu+Z zd=Q|qtod@1@6~Bj05+kd&O~fw3jt-%>}O(#%=5@N4$RYtA3aGy(=>#TxWC9%oi7$J7r5pGYA}tEx;X zpoPh_U?cpX4bBUwyU-I;+54Bmfmja7D@~lAZ=_{zS{4KQ$~yM@z%)%o0+|IjkbNad zEn{YR-jw{lSordFF*$TbsFx`g-hw=*iN#4j%PGcHhClsJ{+OTs?vMG&kH11YBl4!I z!aBz=&qN<_DN}2M%bZ;8?Q+AGYkYD17mcF4!d&JB1=y@k4^)VrdG`1a#Iq;o6LCS> z+ojaV;j-3Zj24BB7j_jC0(W^$C&ES9b$BTWclZja>HK zVgWl$%NMaM_McoMopW4VTo7Vpy;@;3#1Of=e_-;{X;@jnv0Qe~NkLMQB515=XPZ@v zPZ3p+N%3QjQ>U!<7D)nEQWR6t1r&oj`EGoe)2FwTU*1-Q%bB?ZMn&x#tOwk&`$#H#6TDa#>0W(I5G{Bd@m_64g)zR=5fMLGj&y=lfuuQ z5d3M?XpD>zxF(v#gtQUip8$%1NaCx&zE!bCSEJ_8V4C$RUe0I5E(^PDSiFb#-_*2P^ z5ptlmPEzQ!5dKpv^h>44#se0fc%B#fLa zw75l8VoilcW^ZE*Rpn&onBjOhLQeQO2q8q9(}OMfy3${tZ#F0+_HtQi+EpiazS5^0 z^JR9{$gCAoqAn(XRb2~+r4(}vpbf)tz=uTBRQSG^wz;%G|Ac!}?u947@Ptn&xH?-A zg6zzFN>r5`h+~$J>aJ_WMKL2qvD`k(cwn?XE!mdO)s&ghl!KNEcUU5D1-_*K#<#WU5N;$QU>iD!N?e~n>}Ij=$OP-Nt+U} zBhRH#wrqyV_@c^OpTrD(F@IM|!rQdcC-5w$Ow-m>&Qe*!x^1ACJM=8ajKl1MGj=%Z- zE!Tc&pF|c_cMVn7V2nLU_;MDLFl|-25g`sE)>`)aoumVvhH1)&U%06f!$P5o&=0mq#US>W53_C*_;t#!Z-n(yr0N9VlXH20Hs)s{mA8|#4`@Vz%b4{ zZug+o$z5`JDpE?)os{tK#in(+^|cb0HD8!EAYBuXN<1}EjB_P4qswY}*-KtuUZAb!q4x`nYlzge8i(}Jrh!>>rsr?36QUS&Ad_ko%Ry(|pl8+O`WwC1-thS8Pk!hU7 zDL(`XoI%bCWn}HtI?anup7HME9oa8BiGpN{SC%u4*h{=&#tJenq(BpSv($6 zNkIVWu38f-~Nx;Eak~l(+xGW4UvSc3TV) zkc(dyOZQM1aM~D5<)|BnwQ>_WXVF=@o7;ywY&ML;Q6P|l?o&Q@tp(gn<;FLvfP8B4 z){?OjBX_LUT5O1OKDD_@iNRv0D;ljiYgVWbsja0lmWSQQFpP9amoiQx!HaFdlKmVP zWm~}_mShN3Mob?g<2*A?QyDdXFb^(Ix6=}(aeecV%jf54WymQ})eWD0`Ux>68Vx`H z`+tytXdjuUnL3XAcmKto^3|(X)XfUpH0-wb+}_`Cv)%K*{rkV+&2A*2IBRQu{Q5PyK?ijrZJPslk- z+ZV*hE-A5#k#Ol$0Gtw$sg_5$py#^mX~`tC*a0E=yD>_>&=ez;ag4!p7zWNZ8O+Z4r{lVJ#PME}*KC?^cvb3UT+8z4I`M1BW&x+i9uJ%je`2+;1P4r;**m zqd?iEt!(NV?`K}Ue$7vR@;jv^%G`gvOmYbu=btWu57p3kpVBtP-D+dXM>#*!^-$_=8B)~T`*@R?&I zCFyHY6qSmA4^KA_Sv0&SpX$;EiGW~%o7Cwc2Zh#!tC}*#2lC{JD$>V9-H4f5&WapU z>3pA9J4T5{a}0^Iiwo+eA%rMv45dyFsT`<;P#2a5g469qh7`rI!c`@2I7f^##1t9( z{%PJUH~8Y&rIleJ7%X51NIRa=65K7p*>zo0RTcLScVq>d)e7qj(-?70Lpq8@YDD3* zWg+k9Y{X7BL(Y+$mZI_W{+98C@){dkQE5Y8=6Dpv$7<1noAQ|yeRzqQ2|1U9Nliep zZfd9;xia`6PXR4r-qXg!zTe}m;e4}^tS6lrA0mx&SXWC+Y7E09 zkt^dkmbTqU0WyXhz1Z~@#+U*yn!4#|nwIt18f7gi1!7L@A0N2btoi=k2OtTpG{KU< zu$^r0`!{cR^ZuI4^9_xYteTAC zVZWztTe_;@;^LgErsl=PMrO7-mM>tyv=w!?B8DU1eDOK|^`9L1H-GVWjML2IBU3++ zJB@7`tO`_d#yN*+S|Iaj@EpP&za9suYgxFbOaWi1lz=BWMDZ7j()w7f1)VI`A}6Y* zD)fgk8!qYR(uNg-wDKSoY4eFKQ&*OzE+h$~gp-=|iNff;Ac8tC%pK5(WoFY>><&X= z>qr!-v$i~>x=hy#Xr|>or2?zvEZcwrSQs?ZJc_f&VGv&;4LP^}6;SrBn_AtopcNdn-sf+RQS^7rPY11Mcq zA{N0(!(x6YSv-Z&q%)#LkTJk&OD?P6|0vL}fIefAuM^UcKVw%jXQk$mP}L zY3*}3?m1s?#6C$|?jLS(#?YOe(bTmtl?=qYz^YzRH4W1g#8o4N5-($@n+j(tDqCTl zWp{r^Q`L;ah;_9*D^_Ew;`dzDOwmKmjN?!?B~s|;c_#UADxe`RaX||KM2!4QapqW} zgetAsAC72cSgqEAHlNOV&gc}$<3J8FFHVP^zxmt0h*3t;nILbqeLy_%QPOKm9Ss!-4$c&uvz8CPz2#WFD%m*8`lrC@b3j*##yaLO5qu=avKuU{oTW`nQZN#xdJqZPtHKS3gw8!GSi4uTMkYL6!?cE?)Uu zSPEkS@RlWr)*5GoRi{+p9kBctHP4?vW1KzP$1O@J zF$|+3KP_H(O z$1QQ5P#$zlw8rq|#_%5>Zb9i2FH~m{EE{X_OAf3m>!K_!6}hy8a?yyXc-DrLGuBCb z=np-Zt+nFN-~+}wChtks5VaPqX<-W)WeAgJ%7Nq16H_i=7AJ%{W-$h@tz{Tytg++} zaL#bt?-~06b83~Ank$k-$c1?$?Q$rJC0%yows>}(pI>nE?gPW2{{itrRt#kr67a0F z;!5sI3?k4F#J#9z%IE3lNL?w6Rjj&>X&yN24>C&^6^?VYBtb+mU`XZj&G`vXTp+=x zt}vb6r8N#^3`xWJsuOjP&djq2&J_xyp>A4INW_@woaVggXjU!V**ViVaryEkfAS}P z#QCbl8O5__ `493yB&44$iJ&-vwV-cVHyP5YjzuFDQye4j@@bGBYn*ELyb>IPCw zH1!&-d(O_zS#=%xB5`?f!8G;Ej|XNIFy_G7X2W5gdH(VljjM2H8$S8`6Py+0()gQy zBr2GWM^GY2F>1jaARB%9+~hOPr{`fAGK%LM<0uAyMyrKO@zhS~5C~+VD!a~IgYAjU(PF9&=!`ZkWd%j)_#s{G_ZVhnbi>Dn^>h@~1!jiueES zulVlnj`Q=iR2VG}UbdDT{HcSq3N}^6dcNoV3=6eHs=mB-S@271Y3qt~R79olP`rF) zC##$(6g~lvLWn1wvN1x#bj7SaYC%@fhORg?WMfG&FpdMOrhy>{aoz|UNa-hPT~@*+ zHpbAj6}4?JDX~BFr(9tZ5rgt9q!OJMqkzT9BO#`Ik>PN}u2w<>$QqSoMs!MZw(dyB zgAgsU!WS0^DO?NEUa*VOgD54IyDXL53NYDqHIT7J6_axrtB!{Q^E_aT!x&2pl4g-} zgrdO8%lw}cVhchkM54(Rw-C*`Thq2JK}DRasM=ztZZ7aK5PW8{=_K#DgpZ%s4b~{U z4|MAd{WSCPlTVm@5Po=Bv*i>q)(Dt~Ajvr=jzceD$Evbib{AZ{e9qgOYkvQyzemoQ^L4|QpT1(Z+v8_3 zC#>6syE`#s@FA8dM(8{y+mo)Gg2pc$(uts1a05Tbl3<}F?qtCdbP~#2D#%IN-q zk6Xt5k+!PXKHifx?2ZSnKVH)%`048xT|4XQ#_6{->{Wu63KGfHuJ zzTv<8gKzkM-+bgJpTDNAEG9>o2BF<$1zKaPnyL=0nwgiK4Iy`KhoUlj7XQZ!AAGY;2QSX+s?T?|;OS-ctYvBx$w{X8?yGi|rx#mg6B zx()2N2RxCe<)9iTI#dv<J(&t86S++5In9J4H&Jljb)q! zSnRrvu5CH?BO%OX54qg1vfD~&Srw)7mWt|Tndx#y8^!Av&jkc*D_qlHD@TYk)>cfj zhXhR{i55A?^PrU#Mx93Z^jgz(Ewy&oVuWw4G?T{YVi-{|dI<>|`hnUw3^0a?{qB*J zb%(CZCaSzKqaO~u9K1z&veIo{9w{!f0y zYPI5canAkjf$zWjmcF;*lA$EZ)0VDh0gM+gHsw@UW(B*UMAcXs>AauC-9%f_^NNN{ zp`&LmLCw(%<7J7*e1Ct(<>e)&`&zu4?>F3DzmsZjI+BC{ zV2oIW!~(i#Es1+yeD<2_?UCQUdr$qvYuTe(BjqF&iiC4CtBx}TpN%u0Jq~Prpt2IQ zW$KFc#YPtMIZ;;?bzQUFZrL99IBRK*qjrwfYK3b%2}ZLO(>xT$OTyX;V~ST*NUYB< zhzJETX2mx@`kLpL=U8jm?f0zLE5>o+;o%--A^TM5jj|e2#s~nTMfg7sGo5v;)+-(# zw}dcbjVcs7u@_Z~e^VhOB!n!VvcftG8VTO2sv`bCA}3>D`}im;mZgWv!VZ!aU!7)X zU2rQ`P|l=~89Pe&`PJDOIVP+%gb)aE#wktmo~EhMT5ipGn(1e;Tvz8qDGS23u_93s{kVlpB~M-uB}oR&Z>Dpylk%VFqg>%~=6V~y-wb4t{0 zBbG^8i^*R~Sm!u~NQ#Mm7?_5Eb=~6Uk?6%2nndZkG9bhrtqUhVi$T91CwvGvt-wdx zZY>cs*5E^=Z9C~QbEIqAvVTty5}Q@a!@~pC85reGjd`I43sP;BDl_oXQ_5jpwC1|- z+kFf;Whtw+!Viv#` zg71lBLXK1^k;23rW@&4K$nL$GdZuFgKgD$S~HsWMPR)5&O28pVV*rm$m{ z*3T5ucOY6TA_OO%LYwuPufO@4+Eon0k-i_ey?;q@v0g=HNNMydV??Ro%AiwvSljPGb9MobdC^)#U{t zNak);Inqq=uU4F$oyqfON`6z8^o3#Q8T)~zuK42fPx;%w{RKuFe6g2O#+>YP6lGM( z3q~LxqShL;7(V)9B2co5GCF|?fso2#ILYF|>0%FJG}AnDe>iYvE&YB=l|6s><1aB) zO;(1GK-(6r8enD`dTQqgV}W|LMj3(nwU&KfWi-#o{O(tt|NTGw9sJ%;`117&Ol7gQ zL0c#KN@GAP+7$TW)l2^PIP&d5^WxbR_4zqpeEN#dUVkF{HYHxtDN20fcDEzXV&>M> zH6Cf(GD@m;;Yy|?D+-+@5zknIUG|M7|JNEL4@tM8u0`M6)D^e)Tec53RL)_P=H;_1 zrfJ6IOo)N1>NpO2+NQ-h!|N|U=VtrB97TN;)k3RK0jPztg+O}9c&U04))X=CL&BqHmroB}BYTxEn+*7sDElLxJQ7DOS! z744! zq+;lW;Hqg>Eod=`$QiVCC}W9ehH+%_iKr6~y92-c_Sby(kKbb>%xNUYOc)35_K&!_ z;i^bJXYVoEQr8`aVJ9}MO4fKWB~*Z}+aRjMh_(i8H5X?ajMCIiB|G9_zMAMx|V z>;tRSM!d`dVT>h66U~cBUNS4wx(L0uB?rN#>Qusc5DTqX26rI=$z=`3@utC^>OF}4sV95D&QMb<(y!*N2^$+0lOIL(OG zInK^6$VAqwHJiHQ^UuC(3inqaW;9IfS0<&;lcb6FM1oHz$@LJTobbseOPGm1#WSaqT=%I%tk+q=|fQ(9&%Hbt^a zHY{6qtqoRdo?Tv$VqlIQn-oT?;@9LP&NODUk=rp$p3xdQQ!`By!{{-UW#5me#(~zf zb;WMgvY!JI*E;j=!+XLM$Vzi_d&h?l?|J|B1FJ?rr>P$>8t(R6j6U$N-O;oiii{5) za!Efhl8;DDU}&~+_Yi*RHLp4*4}0;FcHuWyKcqOEIY zrHINfmvo4jCHnNVp5$qTD`2W-oCVnzvwDS9DMN~c($Z-qjko!sC|`*Tu&S&8IMGY> z34wW>u+F2ah8R3m(?RH2tv0-U^Sx+UUwtB0pw>xsRG_qIZnev}ZpCL`ea@8O`eDn} z#W}8SP`Fd^koAbAZfefX&-m(j&#!KKQfRrmf8@(AJ`*`u=@k{4sz?PhA{|2uLc8pA zK@sE35~C>d4TbtwgwaY1?JfuyBl5vqc9;Ur#OT@YkEAFh3IXpGAtxH+h*4BWXX}o2 z*D(4Zq2Mu6JBufwtuF15Eg}z@nVU*N*EZ`l7n^f7T}x9{LS!+PH*eq2b&B)#2D@4D za5&Nj&oGQwo1vB+?h;5Ay?AirMb{f+6f03A)XY*d%|V|!#E>}5 zoVlF!%^+!pFrqqu4Pa`+l7iQOPBtjVYUv;t!WHR+rXCki()?M3pKa zXTR=Rx~`*bI{Il~PJxGhz_?HFA>d0WRH+8&rbfk<%d0EC|L%L%XB%wOmM^wY<+PC& z$Y^Zks8(yf`1BRO_=j(K*lr~x%SvUH!!8eswU)ZBd3JTqahP~B4s0JD+3k09-6tnP zzA3xg^=8BM$6Fd}PELwB!930Q9BJE@$H#|48`P}ZhTv!Vsv;)I+_lEx3yFLovn);z z!3Ub!iTQcibB1XKYp}H|Il*$1ou8la)fb;}bHC+q9LZC{5!g->b=MMtv_(24QiAz# z;O6#*XD?rI`Rt0{`SCYgY}Pz`c1cQ^x~=(mdrO^QI1Zd|)^ukV3`wYr`|Tr-+Xv=p z=Gcpfzjm5=p1HVuCdhD3Ov8k3YMS**WRSJtFph*2Y3fQ)cq4X0)>VWsf)YwiT6WT9 z*3Ic@^^~&|4r$S)h&ElvYPBjMZ-LqxKHhvR#1+ltN35yve!|az;3Fi@s_94xVw?!U zGbTmf_i#LLwvkxYw{PA-)`T!|I2=(Jj>jXzVPM!Dm=8xBV)vV(aLPmQ9Q{Gs1|=cu zTI(lYD=}lE_1T8~&~tNhO3(H~0Uo0D}$@E%*qgQAVYDofiL zvQKzF;*SS;kV3@Ii5SJ7scC9b%2btjeFZ<$tUCH(kQ>wo+D^>JzyA7yzVGqgGmIm7 z3Zxh@F)|@Bl2u({n;Mj3vsv@(`E!P$7vLuZ`k{v?Yo}}!L4mDmg4!>r)Tyv7DFaZV zLKg6?{G3sSzyH-Q$ysrnC$y!wY>1_7%8BS@Baw23n8@=)+>eajLl#py-8Rhqh%=gT zf26S$jW+l(2*Dy|l*#P9$0RS*)trkWD9UJ(7m>gG(J0cwP(wN}tqkOdOAyBik0zUd zLJ{;tFq-wnIq%=R6DjKBj@@p@IP|197--p07PUI}{Bz_Kbb&WQrL_$dyl(HuwDj&3#)l-%VY^_D1F-p3Nu3K^FN3@e} zCg;eiYluFU-_JR_`E_!yYI=WNpv zl46`@KK=YtZg20Y+nRnHFe#H}FS}(8aT-y^5uz7U1+9o-p_&S)<%3w!CZInEutSDv z7Q?u-n9Ri>qlK2Bbe)1gcS=)fDWYv%iz$3*bOMyjfiXnTf$hVN>6K*FeE;?hZ{EJ+ z#j{Ix#{=Uu5{q%bJWmXMDoAspu8YJ_3)4z##dsV@VWw>>j>n#;6m65~#|dLrJQn8o9cYU|8qbH>mQn6{;E z8=gOZ&X2$O`V{h(Qf9l|vLAY}g?+qZapE+_;EX(w7EK~i=Zb7B_>3}%rfHbxSp)!D zR(tm!B^D;22)RfilYladw%MpG2(}X2o5fCeS%KEIBc({!v^Z;Ns+urM>Y+|Eadwi5 zFbpWviL0;GlU|o3YZx)=D|{xUPnvA8Y$|}BDhi^MMfa`M0>|KtWf~@4ym~1{iNLVm zb9Zw?w_dY*eB`)0aJlXz#Ud|ecT1VjC6Qy{L=n}@j1%xQdyWzUw!o@fBnnf z@cE~&sj6DY?anT*qxA5_j|hcv72SHx#}DtZmE-E!71~PsLa9Jni(7{SUY@mFA0GMe z{vB=8$jojGarR;Z8xuo6pb8InAuXUOa=?X-riv54ye_R4`b%ay9Jqe_fp)dx{PLW- zu6g_Z1K+>-p4*2#H~069hn}Gt=;x^r=QGV}&Cnl7F*A-6XPXV%heyfb%?WEQgZC(- zG1ifj0A0e>aKd!Tn&@Ya<8(@PKtbKqLdM7$r4p;E;dnTbv&N|z$heXzB`uc_Y;soU z3UZVkW+pRxUt08XL#0eE`MDPt=bT@hlV4@(y5-{X9go{BVV-GS#n|^mFUEU5MnbXb z^}$Q(AL8j0eZbD;cPp_=N=a^Kw3b_N0ZmWMW4VMDw7kdwt+Pc9rKzlpI3Wk35;K3- zwrr0Fd{z?vmLg&;B!wpeK^B1pU;F_L@dtByDy{xPD#g0uVFq*AwQDUNW3`p-#5~Ue z;?17@cE{n^GmQiH(R04qusJ)E&5kOGfJ!W%>e`W$#m@oC{Hv7&8H8ePxSV&b6t>x{ z(OTj=j{B`t$Hj$EL1VQTYB>wmpsR}Wiwj;H54`{IfnUA7=Ia-iR7Q4u$xEU@4l`Oo z)plIIe97y(JKnv0&)NAI+F2nbWLab65Xs(y_vnx$uV=lY9S6Su?mOD1E|oT+ttFHX zCB=wyHP0?C`AL93e{;iqv!bqrs;HHQIbu?Ns@_VAOF_B8g&CxlCxpcnf+b9fLJrRg zVj}b-4GN$~#Ndw%@Qm#i<(Io}_sKi=X8 z3DJsC7XD3BOwdXTCP~_7V7F( zUwuiK2KxPx&S-S-cpvaNG3ktHYNq7b9wkFmiMWfat4kgpw*36Ncl`4oeMYT8$5~L} zx{(&K?J#6kO7Z#EU-SL1f5YzKflFtEU7{ttIHx2D0zQ&sJVj8nZOc3du0LM$$&2T* zPRX!)d_)_^dUKAoj(!@rI^Xc=!-3s?N2M-=d1VZpGxUHpwk)`x49!$3ywP$t7gE|{ zha(?rnT3F97%{C9VZbmk1kdfqTgJX;>_@T}dg(4a$}Ddzu99M?Fns**k$?Mt{9l}3 zUGVnpdu~78pmStD4;WX2f@vPnIdM21*zL9q)5u{QxZmx$xx1yR3=jJQ{qe}h>uWxI z_{h8OzNc<^19jr8RBc($tO+BeVB7m9fTBRhIcEs}PhzXN$FtGF+F| zjIthsoQkWXR^%xEK88$CGRvnV=5;#5>imr3;lMFYG)==aO~jCJR&gxJ1gG{-EvhDI zyU``wT8T@AS`}&pTyEf3X3P9$_{vpGgs%&2o(RT#&Q4t2JI~Sha0qWFwSHj z%CnKNuHya2k6d0|u-=@Zw8AOzKhw(6xC+}Q9=(L8yQ(^wCI}=VV}`XBTUQm&&;LKF z-s{=2BRli^rP=Mp0oh3tl+V^NUL^wmaVc^b@oBOgw~4o`@b} zBA+L~X6(@+P!uI)<5}NtST0voMx5-I=jXUVyoi<66uPDgk(bMc&GimfR;T!oJhN1p z{g(TeqEOH>MLGiI|! zo^1l=$}FeIM0Q}b76O&`r|)Q#ma3!ej?D7xT6or^8(l$houkN3&>l8bH2L*KKQ z&9KH0wP-Q_Tp+4m96hy8hJZo=><(=*jf=Jc&8<@jYn1pDPvx!$icEgZW;reftb+Z1&u)JpMo-_59NGgQ`rw!h5jd5} zO5~|Zr{*c0=?U*RHI@KM`rc$tl*A%|(L3@gPwkbatQ)$aM`2#K4rJwaC3WyQ<}CPDaw-levd9iR`=ik^oGCqR z#ex^FUh$_t{)y$;ITx4b=~+E0ijB$`+<-Egye=8qBjs$)!)C+z(`Qt9E>03ivmXXI z$*Q6t_`s{PIX723#^r+Edvr9|vceVx@pwo#

l+Ezk+A9~?VJ;& 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 + {menuItems.map((item) => ( + + ))} + + ); +} diff --git a/src/components/layout/navigation.tsx b/src/components/layout/Navigation.tsx similarity index 83% rename from src/components/layout/navigation.tsx rename to src/components/layout/Navigation.tsx index d602491..06c46d7 100644 --- a/src/components/layout/navigation.tsx +++ b/src/components/layout/Navigation.tsx @@ -1,5 +1,6 @@ import { useState } from 'react'; import ThemeToggle from '../ThemeToggle'; +import MobileMenu from './MobileMenu'; type Props = { theme: 'light' | 'dark'; @@ -41,14 +42,7 @@ export default function Navbar({ theme, setTheme }: Props) { {[0, 1, 2].map(i => )} - {/* Optional: Mobile Menu Dropdown */} - {menuOpen && ( -

- {menuItems.map((item) => ( - - ))} -
- )} + ); diff --git a/src/components/sections/AboutSection.tsx b/src/components/sections/AboutSection.tsx new file mode 100644 index 0000000..8ba4547 --- /dev/null +++ b/src/components/sections/AboutSection.tsx @@ -0,0 +1,123 @@ +import { Code, Palette, ShieldCheck } from 'lucide-react'; +import type { SkillBadge } from '../../data/SkillBadge'; +import type { FeatureCard } from '../../data/FeatureCard'; +import saschaImage from '../../assets/sascha.png'; + +interface AboutSectionProps { + name?: string; + title?: string; + subtitle?: string; + bio?: string; + profileImage?: string; + skillBadges?: SkillBadge[]; + featureCards?: FeatureCard[]; +} + +export default function AboutSection({ + name = "Sascha Bach", + title = "About Me", + subtitle = "Frontend developer specializing in modern web technologies. Since 2020, I've been building efficient, scalable solutions – from complex Angular applications to creative React projects. My focus is on clean, maintainable code that solves real-world problems.", + bio = "As a dedicated frontend developer, I specialize in creating modern, responsive web applications using both Angular and React frameworks with TypeScript. I'm passionate about writing clean, maintainable code and ensuring exceptional user experiences across all devices and browsers. I have extensive experience with Angular and am actively developing my React expertise, while maintaining proficiency in SCSS, testing with Cypress, and working with XSLT templates.", + profileImage = saschaImage, + skillBadges = [ + { text: "Angular & React Developer", colorClass: "blue" }, + { text: "Responsive Design Expert", colorClass: "green" }, + { text: "Cross-Browser Compatible", colorClass: "purple" }, + { text: "Continuous Learner", colorClass: "orange" } + ], + featureCards = [ + { + icon: Code, + title: "Frontend Development", + description: "Building modern web applications with Angular and React frameworks, leveraging TypeScript and JavaScript for robust, scalable solutions.", + colorClass: "blue" + }, + { + icon: Palette, + title: "Responsive Design", + description: "Creating pixel-perfect, responsive interfaces that work seamlessly across all devices and screen sizes.", + colorClass: "purple" + }, + { + icon: ShieldCheck, + title: "Cross-Browser Compatibility", + description: "Ensuring consistent user experiences across all major browsers with thorough testing and optimization.", + colorClass: "teal" + } + ] +}: AboutSectionProps) { + return ( +
+
+ {/* Section Header */} +
+

+ {title} +

+

+ {subtitle} +

+
+ + {/* Personal Photo and Bio */} +
+
+ {`${name} +
+
+ +
+
+

+ Hi, I'm {name}! +

+

+ {bio} +

+
+ +
+ {skillBadges.map((badge, index) => ( + + {badge.text} + + ))} +
+
+
+ + {/* Feature Cards Grid */} +
+ {featureCards.map((card, index) => { + const IconComponent = card.icon; + return ( +
+
+ +

+ {card.title} +

+
+
+

+ {card.description} +

+
+
+ ); + })} +
+
+
+ ); +} \ No newline at end of file diff --git a/src/components/sections/HeroSection.tsx b/src/components/sections/HeroSection.tsx new file mode 100644 index 0000000..c5acd1c --- /dev/null +++ b/src/components/sections/HeroSection.tsx @@ -0,0 +1,51 @@ +import { Download } from 'lucide-react'; +import type { StatItem } from '../../data/StatItem'; + +interface HeroSectionProps { + title?: string; + description?: string; + primaryButtonText?: string; + secondaryButtonText?: string; + statItems?: StatItem[]; +} + +export default function HeroSection({ + title = "Web-Developer", + description = "Creating responsive, cross-browser compatible web applications with Angular, React, and modern frontend technologies", + primaryButtonText = "View my work", + secondaryButtonText = "Download Resume", + statItems = [ + { label: "Years of Experience", value: "10+" }, + { label: "Responsive Design", value: "100%" }, + { label: "Technologies Used", value: "10+" }, + { label: "Frameworks", value: "3+" }, + ] +}: HeroSectionProps) { + return ( +
+
+

{title}

+

+ {description} +

+
+ + +
+
+ {statItems.map((item, index) => ( +
+ {item.value} + {item.label} +
+ ))} +
+
+
+ ); +} \ No newline at end of file diff --git a/src/data/FeatureCard.ts b/src/data/FeatureCard.ts new file mode 100644 index 0000000..285071a --- /dev/null +++ b/src/data/FeatureCard.ts @@ -0,0 +1,8 @@ +import { LucideIcon } from 'lucide-react'; + +export interface FeatureCard { + icon: LucideIcon; + title: string; + description: string; + colorClass: 'blue' | 'purple' | 'teal'; +} \ No newline at end of file diff --git a/src/data/SkillBadge.ts b/src/data/SkillBadge.ts new file mode 100644 index 0000000..b54c5c3 --- /dev/null +++ b/src/data/SkillBadge.ts @@ -0,0 +1,4 @@ +export interface SkillBadge { + text: string; + colorClass: 'blue' | 'green' | 'purple' | 'orange'; +} \ No newline at end of file diff --git a/src/data/StatItem.ts b/src/data/StatItem.ts new file mode 100644 index 0000000..3bfc4d4 --- /dev/null +++ b/src/data/StatItem.ts @@ -0,0 +1,4 @@ +export interface StatItem { + label: string; + value: string; +} \ No newline at end of file diff --git a/src/scss/App.scss b/src/scss/App.scss index 564abad..9c61b65 100644 --- a/src/scss/App.scss +++ b/src/scss/App.scss @@ -1,5 +1,20 @@ @use 'themes' as t; +@use 'variables'; +@use 'mixins'; +@use 'globals'; @use 'topbar'; +@use 'hero-section'; +@use 'about-section'; + +// Import Geist font from Google Fonts or local files +@import url('https://fonts.googleapis.com/css2?family=Geist:wght@100;200;300;400;500;600;700;800;900&display=swap'); + +// CSS Reset - Add this +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} // Standard Theme (Light) :root { @@ -12,6 +27,14 @@ } body { + font-family: 'Geist', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif; background-color: var(--color-background); color: var(--color-text); + margin: 0; // Explicitly remove body margin + padding: 0; // Explicitly remove body padding } + +section { + height: 100vh; + margin: 0; // Remove any section margins +} \ No newline at end of file diff --git a/src/scss/about-section.scss b/src/scss/about-section.scss new file mode 100644 index 0000000..7a8fd08 --- /dev/null +++ b/src/scss/about-section.scss @@ -0,0 +1,280 @@ +@use 'globals'; + +.about-section { + padding: 5rem 0; + background: var(--about-background); + + &__container { + max-width: 80rem; + margin: 0 auto; + padding: 0 1rem; + + @include globals.desktop-only { + padding: 0 1.5rem; + } + } + + &__header { + text-align: center; + margin-bottom: 4rem; + } + + &__title { + font-size: 1.875rem; + font-weight: bold; + margin-bottom: 1rem; + background: var(--gradient-about-title); + background-clip: text; + -webkit-background-clip: text; + color: transparent; + -webkit-text-fill-color: transparent; + + @include globals.desktop-only { + font-size: 2.25rem; + } + } + + &__subtitle { + font-size: 1.25rem; + color: var(--color-text-muted); + max-width: 48rem; + margin: 0 auto; + } + + &__content { + display: flex; + flex-direction: column; + align-items: center; + gap: 3rem; + margin-bottom: 4rem; + + @include globals.desktop-only { + flex-direction: row; + align-items: center; + } + } + + &__image-wrapper { + flex-shrink: 0; + position: relative; + } + + &__image { + width: 17rem; + height: 21rem; + border-radius: 50%; + object-fit: cover; + box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); + border: 4px solid var(--color-background); + } + + &__image-overlay { + position: absolute; + inset: 0; + border-radius: 50%; + background: var(--gradient-image-overlay); + } + + &__bio-section { + flex: 1; + text-align: center; + display: flex; + flex-direction: column; + gap: 1.5rem; + + @include globals.desktop-only { + text-align: left; + } + } + + &__bio-content { + display: flex; + flex-direction: column; + gap: 1rem; + } + + &__greeting { + font-size: 1.5rem; + font-weight: bold; + margin-bottom: 1rem; + color: var(--about-greeting-color); + } + + &__bio-text { + font-size: 1.125rem; + color: var(--color-text-muted); + line-height: 1.625; + } + + &__skill-badges { + display: flex; + flex-wrap: wrap; + gap: 0.75rem; + justify-content: center; + + @include globals.desktop-only { + justify-content: flex-start; + } + } + + &__skill-badge { + padding: 0.5rem 1rem; + border-radius: 9999px; + font-size: 0.875rem; + font-weight: 500; + transition: all 0.3s ease; + + &:hover { + transform: translateY(-1px); + box-shadow: 0 4px 12px var(--box-shadow-hover); + } + + &--blue { + background: var(--skill-badge-blue-bg); + color: var(--skill-badge-blue-text); + } + + &--green { + background: var(--skill-badge-green-bg); + color: var(--skill-badge-green-text); + } + + &--purple { + background: var(--skill-badge-purple-bg); + color: var(--skill-badge-purple-text); + } + + &--orange { + background: var(--skill-badge-orange-bg); + color: var(--skill-badge-orange-text); + } + } + + &__features { + display: grid; + grid-template-columns: 1fr; + gap: 2rem; + + @include globals.desktop-only { + grid-template-columns: repeat(3, 1fr); + } + } + + &__feature-card { + text-align: center; + border: none; + border-radius: 0.5rem; + box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1); + transition: all 0.3s ease; + overflow: hidden; + + &:hover { + box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); + transform: translateY(-2px); + } + + &--blue { + background: var(--feature-card-blue-bg); + } + + &--purple { + background: var(--feature-card-purple-bg); + } + + &--teal { + background: var(--feature-card-teal-bg); + } + } + + &__feature-header { + padding: 1.5rem; + } + + &__feature-icon { + width: 3rem; + height: 3rem; + margin: 0 auto 1rem auto; + + &--blue { + color: var(--feature-icon-blue); + } + + &--purple { + color: var(--feature-icon-purple); + } + + &--teal { + color: var(--feature-icon-teal); + } + } + + &__feature-title { + font-size: 1.25rem; + font-weight: 600; + margin: 0; + + &--blue { + color: var(--feature-title-blue); + } + + &--purple { + color: var(--feature-title-purple); + } + + &--teal { + color: var(--feature-title-teal); + } + } + + &__feature-content { + padding: 0 1.5rem 1.5rem 1.5rem; + } + + &__feature-description { + margin: 0; + + &--blue { + color: var(--feature-description-blue); + } + + &--purple { + color: var(--feature-description-purple); + } + + &--teal { + color: var(--feature-description-teal); + } + } +} + +// Mobile responsiveness +@include globals.mobile-only { + .about-section { + padding: 3rem 0; + + &__container { + padding: 0 1rem; + } + + &__image { + width: 12rem; + height: 12rem; + } + + &__title { + font-size: 1.5rem; + } + + &__subtitle { + font-size: 1rem; + } + + &__bio-text { + font-size: 1rem; + } + + &__greeting { + font-size: 1.25rem; + } + } +} \ No newline at end of file diff --git a/src/scss/globals.scss b/src/scss/globals.scss index eb7d2fc..0f2b5da 100644 --- a/src/scss/globals.scss +++ b/src/scss/globals.scss @@ -1 +1,75 @@ +@use 'variables' as *; +@use 'mixins' as *; @forward 'variables'; +@forward 'mixins'; + +// Global button placeholder +%button-base { + @include button-base; +} + +// Global card placeholder +%card-base { + border-radius: $border-radius-md; + box-shadow: var(--box-shadow-md); + @include card-hover; +} + +// Responsive mixins (keep existing) +@mixin mobile-only { + @media (max-width: #{$mobile-breakpoint - 1px}) { + @content; + } +} + +@mixin desktop-only { + @media (min-width: $desktop-breakpoint) { + @content; + } +} + +// Common button base styles +%button-base { + display: inline-flex; + align-items: center; + justify-content: center; + font-weight: 500; + cursor: pointer; + border: none; + border-radius: 8px; + transition: all 0.3s ease; + text-decoration: none; + + &:focus { + outline: none; + } + + &:active { + transform: translateY(0); + } + + &:disabled { + opacity: 0.5; + cursor: not-allowed; + transform: none !important; + box-shadow: none !important; + } +} + +// Interactive element hover effects +%hover-lift { + &:hover { + transform: translateY(-2px); + box-shadow: 0 4px 8px var(--box-shadow-hover); + } +} + +// Clean button reset +%button-reset { + background: none; + border: none; + color: inherit; + cursor: pointer; + font: inherit; +} + diff --git a/src/scss/hero-section.scss b/src/scss/hero-section.scss new file mode 100644 index 0000000..94d3919 --- /dev/null +++ b/src/scss/hero-section.scss @@ -0,0 +1,173 @@ +@use 'globals'; +@use 'variables' as *; +@use 'mixins' as *; + +// Hero-specific button extensions +%hero-button-base { + @extend %button-base; + padding: $spacing-sm $spacing-xl; + font-size: $spacing-md; + line-height: 1.5; + border-radius: $border-radius-sm; + gap: $spacing-xs; + border: 2px solid transparent; + box-sizing: border-box; + + &:focus { + box-shadow: 0 0 0 3px var(--box-shadow-hover); + } +} + +.hero-section { + min-height: 100vh; + @include flex-center; + padding: $spacing-xl $spacing-md; + background: var(--hero-background); + + &__container { + max-width: 800px; + width: 100%; + text-align: center; + @include flex-center; + flex-direction: column; + gap: $spacing-xl; + } + + &__title { + font-size: 3rem; + font-weight: bold; + margin: 0; + @include gradient-text(var(--gradient-text)); + } + + &__description { + font-size: 1.2rem; + line-height: 1.6; + color: var(--color-text-muted); + max-width: 600px; + margin: 0; + } + + &__buttons { + @include flex-center; + gap: $spacing-lg; + flex-wrap: wrap; + } + + &__button { + @extend %hero-button-base; + + &--primary { + background: var(--gradient-primary); + color: var(--color-background); + + &:hover { + transform: translateY(-1px); + box-shadow: var(--box-shadow-sm); + filter: brightness(1.1); + } + } + + &--secondary { + background: transparent; + color: var(--color-text); + border-color: $purple-primary; + padding: calc(#{$spacing-sm} - 1px) $spacing-xl; + + &:hover { + background: $purple-primary; + color: var(--color-background); + transform: translateY(-1px); + box-shadow: var(--box-shadow-sm); + } + } + } + + &__button-icon { + width: $spacing-md; + height: $spacing-md; + flex-shrink: 0; + } + + &__stats { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: $spacing-xl; + margin-top: $spacing-3xl; + + @include globals.desktop-only { + grid-template-columns: repeat(4, 1fr); + } + } + + &__stat-item { + text-align: center; + padding: $spacing-md; + border-radius: $border-radius-md; + + &--1 { + background: var(--stat-experience-bg); + + .hero-section__stat-value { color: var(--stat-experience-value); } + .hero-section__stat-label { color: var(--stat-experience-label); } + } + + &--2 { + background: var(--stat-design-bg); + + .hero-section__stat-value { color: var(--stat-design-value); } + .hero-section__stat-label { color: var(--stat-design-label); } + } + + &--3 { + background: var(--stat-technologies-bg); + + .hero-section__stat-value { color: var(--stat-technologies-value); } + .hero-section__stat-label { color: var(--stat-technologies-label); } + } + + &--4 { + background: var(--stat-motivation-bg); + + .hero-section__stat-value { color: var(--stat-motivation-value); } + .hero-section__stat-label { color: var(--stat-motivation-label); } + } + } + + &__stat-value { + font-size: 1.875rem; + font-weight: 700; + line-height: 1.2; + margin-bottom: 0.25rem; + display: block; + } + + &__stat-label { + font-size: 0.875rem; + line-height: 1.4; + font-weight: 400; + } +} + +// Mobile responsiveness +@include globals.mobile-only { + .hero-section { + &__title { + font-size: 2.5rem; + } + + &__description { + font-size: 1.1rem; + } + + &__buttons { + flex-direction: column; + gap: $spacing-md; + } + + &__button { + width: 100%; + max-width: 300px; + } + } +} \ No newline at end of file diff --git a/src/scss/mixins.scss b/src/scss/mixins.scss new file mode 100644 index 0000000..7401e86 --- /dev/null +++ b/src/scss/mixins.scss @@ -0,0 +1,77 @@ +@use 'variables' as *; + +// Button base mixin +@mixin button-base { + display: inline-flex; + align-items: center; + justify-content: center; + font-weight: 500; + text-decoration: none; + border: none; + cursor: pointer; + transition: all 0.3s ease; + border-radius: $border-radius-sm; + + &:focus { + outline: none; + box-shadow: var(--box-shadow-sm); + } +} + +// Card hover effect mixin +@mixin card-hover { + transition: all 0.3s ease; + + &:hover { + transform: translateY(-2px); + box-shadow: var(--box-shadow-lg); + } +} + +// Gradient text mixin +@mixin gradient-text($gradient) { + background: $gradient; + background-clip: text; + -webkit-background-clip: text; + color: transparent; + -webkit-text-fill-color: transparent; +} + +// Flex center mixin +@mixin flex-center { + display: flex; + align-items: center; + justify-content: center; +} + +// Aspect ratio mixin +@mixin aspect-ratio($ratio: 1) { + aspect-ratio: $ratio; + + @supports not (aspect-ratio: 1) { + &::before { + content: ''; + float: left; + padding-top: calc(100% / #{$ratio}); + } + + &::after { + content: ''; + display: table; + clear: both; + } + } +} + +// Responsive breakpoint mixins +@mixin mobile-only { + @media (max-width: variables.$mobile-breakpoint) { + @content; + } +} + +@mixin desktop-only { + @media (min-width: variables.$desktop-breakpoint) { + @content; + } +} \ No newline at end of file diff --git a/src/scss/themes.scss b/src/scss/themes.scss index b7f7edb..b350e8d 100644 --- a/src/scss/themes.scss +++ b/src/scss/themes.scss @@ -1,22 +1,203 @@ @use 'sass:map'; +@use 'variables' as *; -// Light Theme Farben +// Light Theme Colors $light-theme: ( primary: #000000, background: #ffffff, text: #000000, + text-muted: #6b7280, + active-box-shadow: rgba(0, 0, 0, 0.1), + hover-box-shadow: rgba(0, 0, 0, 0.15), + hero-background: $gradient-hero-light, + gradient-primary: $gradient-primary, + gradient-text: $gradient-text, + + // Stat colors for light theme + stat-experience-bg: linear-gradient(135deg, #dbeafe, #bfdbfe), + stat-experience-value: #2563eb, + stat-experience-label: #1d4ed8, + + stat-design-bg: linear-gradient(135deg, #dcfce7, #bbf7d0), + stat-design-value: #16a34a, + stat-design-label: #15803d, + + stat-technologies-bg: linear-gradient(135deg, #ccfbf1, #99f6e4), + stat-technologies-value: #0d9488, + stat-technologies-label: #0f766e, + + stat-motivation-bg: linear-gradient(135deg, #e9d5ff, #ddd6fe), + stat-motivation-value: #9333ea, + stat-motivation-label: #7c3aed, + + // About section colors + about-background: linear-gradient(135deg, #f0fdf4 0%, #ecfdf5 50%, #f0fdfa 100%), + gradient-about-title: linear-gradient(90deg, #059669, #0d9488), + about-greeting-color: #047857, + gradient-image-overlay: linear-gradient(45deg, rgba(59, 130, 246, 0.2), rgba(147, 51, 234, 0.2)), + + // Skill badge colors + skill-badge-blue-bg: #dbeafe, + skill-badge-blue-text: #1e40af, + skill-badge-green-bg: #dcfce7, + skill-badge-green-text: #166534, + skill-badge-purple-bg: #e9d5ff, + skill-badge-purple-text: #7c2d12, + skill-badge-orange-bg: #fed7aa, + skill-badge-orange-text: #9a3412, + + // Feature card colors + feature-card-blue-bg: linear-gradient(135deg, #dbeafe, #bfdbfe), + feature-card-purple-bg: linear-gradient(135deg, #e9d5ff, #ddd6fe), + feature-card-teal-bg: linear-gradient(135deg, #ccfbf1, #99f6e4), + + feature-icon-blue: #2563eb, + feature-icon-purple: #9333ea, + feature-icon-teal: #0d9488, + + feature-title-blue: #1e40af, + feature-title-purple: #7c3aed, + feature-title-teal: #0f766e, + + feature-description-blue: #1d4ed8, + feature-description-purple: #6d28d9, + feature-description-teal: #115e59, + + // Shadow variables using CSS custom properties + box-shadow-sm: #{$shadow-sm}, + box-shadow-md: #{$shadow-md}, + box-shadow-lg: #{$shadow-lg} ); -// Dark Theme Farben +// Dark Theme Colors $dark-theme: ( - primary: #f59e0b, + primary: #9333ea, background: #1f2937, text: #f9fafb, + text-muted: #9ca3af, + active-box-shadow: rgba(255, 255, 255, 0.1), + hover-box-shadow: rgba(255, 255, 255, 0.15), + hero-background: $gradient-hero-dark, + gradient-primary: $gradient-primary, + gradient-text: $gradient-text, + + // Stat colors for dark theme + stat-experience-bg: linear-gradient(135deg, rgba(30, 58, 138, 0.3), rgba(30, 64, 175, 0.3)), + stat-experience-value: #2563eb, + stat-experience-label: #93c5fd, + + stat-design-bg: linear-gradient(135deg, rgba(20, 83, 45, 0.3), rgba(22, 101, 52, 0.3)), + stat-design-value: #16a34a, + stat-design-label: #86efac, + + stat-technologies-bg: linear-gradient(135deg, rgba(19, 78, 74, 0.3), rgba(17, 94, 89, 0.3)), + stat-technologies-value: #0d9488, + stat-technologies-label: #5eead4, + + stat-motivation-bg: linear-gradient(135deg, rgba(88, 28, 135, 0.3), rgba(107, 33, 168, 0.3)), + stat-motivation-value: #9333ea, + stat-motivation-label: #c4b5fd, + + // About section colors + about-background: linear-gradient(135deg, rgba(20, 83, 45, 0.2) 0%, rgba(6, 78, 59, 0.2) 100%), + gradient-about-title: linear-gradient(90deg, #10b981, #14b8a6), + about-greeting-color: #34d399, + gradient-image-overlay: linear-gradient(45deg, rgba(59, 130, 246, 0.2), rgba(147, 51, 234, 0.2)), + + // Skill badge colors + skill-badge-blue-bg: rgba(30, 58, 138, 0.3), + skill-badge-blue-text: #93c5fd, + skill-badge-green-bg: rgba(20, 83, 45, 0.3), + skill-badge-green-text: #86efac, + skill-badge-purple-bg: rgba(88, 28, 135, 0.3), + skill-badge-purple-text: #c4b5fd, + skill-badge-orange-bg: rgba(154, 52, 18, 0.3), + skill-badge-orange-text: #fdba74, + + // Feature card colors + feature-card-blue-bg: linear-gradient(135deg, rgba(30, 58, 138, 0.3), rgba(30, 64, 175, 0.3)), + feature-card-purple-bg: linear-gradient(135deg, rgba(88, 28, 135, 0.3), rgba(107, 33, 168, 0.3)), + feature-card-teal-bg: linear-gradient(135deg, rgba(19, 78, 74, 0.3), rgba(17, 94, 89, 0.3)), + + feature-icon-blue: #3b82f6, + feature-icon-purple: #a855f7, + feature-icon-teal: #14b8a6, + + feature-title-blue: #93c5fd, + feature-title-purple: #c4b5fd, + feature-title-teal: #5eead4, + + feature-description-blue: #dbeafe, + feature-description-purple: #e9d5ff, + feature-description-teal: #ccfbf1, + + // Shadow variables + box-shadow-sm: #{$shadow-sm}, + box-shadow-md: #{$shadow-md}, + box-shadow-lg: #{$shadow-lg} ); -// Mixin: SCSS-Map → CSS-Variablen schreiben +// Mixin: SCSS-Map → CSS-Variables @mixin theme-vars($theme) { --color-primary: #{map.get($theme, primary)}; --color-background: #{map.get($theme, background)}; --color-text: #{map.get($theme, text)}; + --color-text-muted: #{map.get($theme, text-muted)}; + --box-shadow-hover: #{map.get($theme, hover-box-shadow)}; + --box-shadow-active: #{map.get($theme, active-box-shadow)}; + --hero-background: #{map.get($theme, hero-background)}; + --gradient-primary: #{map.get($theme, gradient-primary)}; + --gradient-text: #{map.get($theme, gradient-text)}; + + // Stat variables + --stat-experience-bg: #{map.get($theme, stat-experience-bg)}; + --stat-experience-value: #{map.get($theme, stat-experience-value)}; + --stat-experience-label: #{map.get($theme, stat-experience-label)}; + + --stat-design-bg: #{map.get($theme, stat-design-bg)}; + --stat-design-value: #{map.get($theme, stat-design-value)}; + --stat-design-label: #{map.get($theme, stat-design-label)}; + + --stat-technologies-bg: #{map.get($theme, stat-technologies-bg)}; + --stat-technologies-value: #{map.get($theme, stat-technologies-value)}; + --stat-technologies-label: #{map.get($theme, stat-technologies-label)}; + + --stat-motivation-bg: #{map.get($theme, stat-motivation-bg)}; + --stat-motivation-value: #{map.get($theme, stat-motivation-value)}; + --stat-motivation-label: #{map.get($theme, stat-motivation-label)}; + + // About section variables + --about-background: #{map.get($theme, about-background)}; + --gradient-about-title: #{map.get($theme, gradient-about-title)}; + --about-greeting-color: #{map.get($theme, about-greeting-color)}; + --gradient-image-overlay: #{map.get($theme, gradient-image-overlay)}; + + // Skill badge variables + --skill-badge-blue-bg: #{map.get($theme, skill-badge-blue-bg)}; + --skill-badge-blue-text: #{map.get($theme, skill-badge-blue-text)}; + --skill-badge-green-bg: #{map.get($theme, skill-badge-green-bg)}; + --skill-badge-green-text: #{map.get($theme, skill-badge-green-text)}; + --skill-badge-purple-bg: #{map.get($theme, skill-badge-purple-bg)}; + --skill-badge-purple-text: #{map.get($theme, skill-badge-purple-text)}; + --skill-badge-orange-bg: #{map.get($theme, skill-badge-orange-bg)}; + --skill-badge-orange-text: #{map.get($theme, skill-badge-orange-text)}; + + // Feature card variables + --feature-card-blue-bg: #{map.get($theme, feature-card-blue-bg)}; + --feature-card-purple-bg: #{map.get($theme, feature-card-purple-bg)}; + --feature-card-teal-bg: #{map.get($theme, feature-card-teal-bg)}; + --feature-icon-blue: #{map.get($theme, feature-icon-blue)}; + --feature-icon-purple: #{map.get($theme, feature-icon-purple)}; + --feature-icon-teal: #{map.get($theme, feature-icon-teal)}; + --feature-title-blue: #{map.get($theme, feature-title-blue)}; + --feature-title-purple: #{map.get($theme, feature-title-purple)}; + --feature-title-teal: #{map.get($theme, feature-title-teal)}; + --feature-description-blue: #{map.get($theme, feature-description-blue)}; + --feature-description-purple: #{map.get($theme, feature-description-purple)}; + --feature-description-teal: #{map.get($theme, feature-description-teal)}; + + // Shadow variables + --box-shadow-sm: #{map.get($theme, box-shadow-sm)} var(--box-shadow-hover); + --box-shadow-md: #{map.get($theme, box-shadow-md)}; + --box-shadow-lg: #{map.get($theme, box-shadow-lg)}; } diff --git a/src/scss/topbar.scss b/src/scss/topbar.scss index 1184e78..8b09f5a 100644 --- a/src/scss/topbar.scss +++ b/src/scss/topbar.scss @@ -1,50 +1,35 @@ @use 'globals'; .navbar { - display: flex; + @include globals.flex-center(); justify-content: space-between; - align-items: center; padding: 1em; background: var(--color-background); color: var(--color-text); - height: 30px; + height: 65px; &__name { font-weight: bold; font-size: 1.25rem; } - // Desktop Bar + &__container { &__button { - font-feature-settings: inherit; - font-variation-settings: inherit; - letter-spacing: inherit; - color: inherit; - border-radius: 0; - border-color: unset; - background-color: transparent; - opacity: 1; - + @extend %button-reset; + @extend %hover-lift; padding: 0.6rem 1.2rem; - border: none; border-radius: 8px; - cursor: pointer; transition: box-shadow 0.2s ease, transform 0.2s ease; - &:hover { - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); - transform: translateY(-2px); - } - &:active { - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + box-shadow: 0 2px 4px var(--box-shadow-active); transform: translateY(0); } } } - // Burger-Button für mobile Geräte + &__burger-button { - flex-direction: column; + @include globals.flex-center(); justify-content: space-between; width: 20px; height: 17px; @@ -85,8 +70,7 @@ /* Mobile Menu Dropdown */ .navbar__mobile-menu { - display: flex; - flex-direction: column; + @include globals.flex-center(); position: absolute; right: 0; background: var(--color-background); @@ -94,46 +78,41 @@ border-radius: 8px; padding: 0.5em; gap: 0.5em; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); + box-shadow: 0 4px 12px var(--box-shadow-hover); z-index: 10; button { - background: none; - border: none; - color: var(--color-text); + @extend %button-reset; padding: 0.5em 1em; text-align: right; - cursor: pointer; border-radius: 4px; transition: background 0.2s; &:hover { - background: rgba(0, 0, 0, 0.05); + background: var(--box-shadow-active); } } } } -// Mobile-Only Styles -@media (max-width: globals.$mobile-breakpoint) { +@include globals.mobile-only { .navbar__container__button { display: none; } } -@media (min-width: globals.$desktop-breakpoint) { +@include globals.desktop-only { .navbar__burger-button { display: none; } } .theme-toggle { - background: none; - border: none; + @extend %button-reset; font-size: 1rem; - cursor: pointer; transition: transform 0.2s ease; width: 20px; + &:hover { transform: scale(1.2); } diff --git a/src/scss/variables.scss b/src/scss/variables.scss index cfe6bd6..fa747b6 100644 --- a/src/scss/variables.scss +++ b/src/scss/variables.scss @@ -1,2 +1,34 @@ +// Breakpoint variables $mobile-breakpoint: 768px; $desktop-breakpoint: 769px; + +// Color variables +$purple-primary: #9333ea; +$blue-primary: #2563eb; + +// Shadow variables +$shadow-sm: 0 4px 12px; +$shadow-md: 0 10px 15px -3px rgba(0, 0, 0, 0.1); +$shadow-lg: 0 25px 50px -12px rgba(0, 0, 0, 0.25); + +// Border radius variables +$border-radius-sm: 0.375rem; +$border-radius-md: 0.5rem; +$border-radius-full: 9999px; + +// Spacing variables +$spacing-xs: 0.5rem; +$spacing-sm: 0.75rem; +$spacing-md: 1rem; +$spacing-lg: 1.5rem; +$spacing-xl: 2rem; +$spacing-2xl: 3rem; +$spacing-3xl: 4rem; + +// Gradient variables +$gradient-primary: linear-gradient(90deg, $blue-primary 0%, $purple-primary 100%); +$gradient-text: linear-gradient(to right, $blue-primary, $purple-primary, #0d9488); +$gradient-hero-light: linear-gradient(135deg, #dbeafe 0%, #e0e7ff 50%, #f3e8ff 100%); +$gradient-hero-dark: linear-gradient(135deg, rgba(30, 58, 138, 0.3) 0%, rgba(55, 48, 163, 0.3) 50%, rgba(88, 28, 135, 0.3) 100%); + +// Add any other global variables here From f51947f79a93c2e749966a14ae10d0b8bedffd25 Mon Sep 17 00:00:00 2001 From: Sascha Bach Date: Thu, 14 Aug 2025 16:12:57 +0200 Subject: [PATCH 2/2] refactoring --- src/components/sections/AboutSection.tsx | 14 +- src/data/FeatureCard.ts | 4 +- src/data/SkillBadge.ts | 2 +- src/scss/about-section.scss | 74 ++++---- src/scss/themes.scss | 217 ++++++++++++----------- 5 files changed, 157 insertions(+), 154 deletions(-) diff --git a/src/components/sections/AboutSection.tsx b/src/components/sections/AboutSection.tsx index 8ba4547..0fb1032 100644 --- a/src/components/sections/AboutSection.tsx +++ b/src/components/sections/AboutSection.tsx @@ -20,29 +20,29 @@ export default function AboutSection({ bio = "As a dedicated frontend developer, I specialize in creating modern, responsive web applications using both Angular and React frameworks with TypeScript. I'm passionate about writing clean, maintainable code and ensuring exceptional user experiences across all devices and browsers. I have extensive experience with Angular and am actively developing my React expertise, while maintaining proficiency in SCSS, testing with Cypress, and working with XSLT templates.", profileImage = saschaImage, skillBadges = [ - { text: "Angular & React Developer", colorClass: "blue" }, - { text: "Responsive Design Expert", colorClass: "green" }, - { text: "Cross-Browser Compatible", colorClass: "purple" }, - { text: "Continuous Learner", colorClass: "orange" } + { text: "Angular & React Developer", colorClass: "primary" }, + { text: "Responsive Design Expert", colorClass: "secondary" }, + { text: "Cross-Browser Compatible", colorClass: "tertiary" }, + { text: "Continuous Learner", colorClass: "quaternary" } ], featureCards = [ { icon: Code, title: "Frontend Development", description: "Building modern web applications with Angular and React frameworks, leveraging TypeScript and JavaScript for robust, scalable solutions.", - colorClass: "blue" + colorClass: "primary" }, { icon: Palette, title: "Responsive Design", description: "Creating pixel-perfect, responsive interfaces that work seamlessly across all devices and screen sizes.", - colorClass: "purple" + colorClass: "secondary" }, { icon: ShieldCheck, title: "Cross-Browser Compatibility", description: "Ensuring consistent user experiences across all major browsers with thorough testing and optimization.", - colorClass: "teal" + colorClass: "tertiary" } ] }: AboutSectionProps) { diff --git a/src/data/FeatureCard.ts b/src/data/FeatureCard.ts index 285071a..a4ec7d5 100644 --- a/src/data/FeatureCard.ts +++ b/src/data/FeatureCard.ts @@ -1,8 +1,8 @@ -import { LucideIcon } from 'lucide-react'; +import type { LucideIcon } from 'lucide-react'; export interface FeatureCard { icon: LucideIcon; title: string; description: string; - colorClass: 'blue' | 'purple' | 'teal'; + colorClass: 'primary' | 'secondary' | 'tertiary'; } \ No newline at end of file diff --git a/src/data/SkillBadge.ts b/src/data/SkillBadge.ts index b54c5c3..804b12c 100644 --- a/src/data/SkillBadge.ts +++ b/src/data/SkillBadge.ts @@ -1,4 +1,4 @@ export interface SkillBadge { text: string; - colorClass: 'blue' | 'green' | 'purple' | 'orange'; + colorClass: 'primary' | 'secondary' | 'tertiary' | 'quaternary'; } \ No newline at end of file diff --git a/src/scss/about-section.scss b/src/scss/about-section.scss index 7a8fd08..72e6ac8 100644 --- a/src/scss/about-section.scss +++ b/src/scss/about-section.scss @@ -60,7 +60,7 @@ } &__image { - width: 17rem; + width: 16rem; height: 21rem; border-radius: 50%; object-fit: cover; @@ -129,24 +129,24 @@ box-shadow: 0 4px 12px var(--box-shadow-hover); } - &--blue { - background: var(--skill-badge-blue-bg); - color: var(--skill-badge-blue-text); + &--primary { + background: var(--skill-badge-primary-bg); + color: var(--skill-badge-primary-text); } - &--green { - background: var(--skill-badge-green-bg); - color: var(--skill-badge-green-text); + &--secondary { + background: var(--skill-badge-secondary-bg); + color: var(--skill-badge-secondary-text); } - &--purple { - background: var(--skill-badge-purple-bg); - color: var(--skill-badge-purple-text); + &--tertiary { + background: var(--skill-badge-tertiary-bg); + color: var(--skill-badge-tertiary-text); } - &--orange { - background: var(--skill-badge-orange-bg); - color: var(--skill-badge-orange-text); + &--quaternary { + background: var(--skill-badge-quaternary-bg); + color: var(--skill-badge-quaternary-text); } } @@ -173,16 +173,16 @@ transform: translateY(-2px); } - &--blue { - background: var(--feature-card-blue-bg); + &--primary { + background: var(--feature-card-primary-bg); } - &--purple { - background: var(--feature-card-purple-bg); + &--secondary { + background: var(--feature-card-secondary-bg); } - &--teal { - background: var(--feature-card-teal-bg); + &--tertiary { + background: var(--feature-card-tertiary-bg); } } @@ -195,16 +195,16 @@ height: 3rem; margin: 0 auto 1rem auto; - &--blue { - color: var(--feature-icon-blue); + &--primary { + color: var(--feature-icon-primary); } - &--purple { - color: var(--feature-icon-purple); + &--secondary { + color: var(--feature-icon-secondary); } - &--teal { - color: var(--feature-icon-teal); + &--tertiary { + color: var(--feature-icon-tertiary); } } @@ -213,16 +213,16 @@ font-weight: 600; margin: 0; - &--blue { - color: var(--feature-title-blue); + &--primary { + color: var(--feature-title-primary); } - &--purple { - color: var(--feature-title-purple); + &--secondary { + color: var(--feature-title-secondary); } - &--teal { - color: var(--feature-title-teal); + &--tertiary { + color: var(--feature-title-tertiary); } } @@ -233,16 +233,16 @@ &__feature-description { margin: 0; - &--blue { - color: var(--feature-description-blue); + &--primary { + color: var(--feature-description-primary); } - &--purple { - color: var(--feature-description-purple); + &--secondary { + color: var(--feature-description-secondary); } - &--teal { - color: var(--feature-description-teal); + &--tertiary { + color: var(--feature-description-tertiary); } } } diff --git a/src/scss/themes.scss b/src/scss/themes.scss index b350e8d..cd0605d 100644 --- a/src/scss/themes.scss +++ b/src/scss/themes.scss @@ -13,22 +13,22 @@ $light-theme: ( gradient-primary: $gradient-primary, gradient-text: $gradient-text, - // Stat colors for light theme - stat-experience-bg: linear-gradient(135deg, #dbeafe, #bfdbfe), - stat-experience-value: #2563eb, - stat-experience-label: #1d4ed8, + // Stat colors using visual hierarchy + stat-primary-bg: linear-gradient(135deg, #dbeafe, #bfdbfe), + stat-primary-value: #2563eb, + stat-primary-label: #1d4ed8, - stat-design-bg: linear-gradient(135deg, #dcfce7, #bbf7d0), - stat-design-value: #16a34a, - stat-design-label: #15803d, + stat-secondary-bg: linear-gradient(135deg, #dcfce7, #bbf7d0), + stat-secondary-value: #16a34a, + stat-secondary-label: #15803d, - stat-technologies-bg: linear-gradient(135deg, #ccfbf1, #99f6e4), - stat-technologies-value: #0d9488, - stat-technologies-label: #0f766e, + stat-tertiary-bg: linear-gradient(135deg, #ccfbf1, #99f6e4), + stat-tertiary-value: #0d9488, + stat-tertiary-label: #0f766e, - stat-motivation-bg: linear-gradient(135deg, #e9d5ff, #ddd6fe), - stat-motivation-value: #9333ea, - stat-motivation-label: #7c3aed, + stat-quaternary-bg: linear-gradient(135deg, #e9d5ff, #ddd6fe), + stat-quaternary-value: #9333ea, + stat-quaternary-label: #7c3aed, // About section colors about-background: linear-gradient(135deg, #f0fdf4 0%, #ecfdf5 50%, #f0fdfa 100%), @@ -36,34 +36,34 @@ $light-theme: ( about-greeting-color: #047857, gradient-image-overlay: linear-gradient(45deg, rgba(59, 130, 246, 0.2), rgba(147, 51, 234, 0.2)), - // Skill badge colors - skill-badge-blue-bg: #dbeafe, - skill-badge-blue-text: #1e40af, - skill-badge-green-bg: #dcfce7, - skill-badge-green-text: #166534, - skill-badge-purple-bg: #e9d5ff, - skill-badge-purple-text: #7c2d12, - skill-badge-orange-bg: #fed7aa, - skill-badge-orange-text: #9a3412, + // Skill badge colors using visual hierarchy + skill-badge-primary-bg: #dbeafe, + skill-badge-primary-text: #1e40af, + skill-badge-secondary-bg: #dcfce7, + skill-badge-secondary-text: #166534, + skill-badge-tertiary-bg: #e9d5ff, + skill-badge-tertiary-text: #7c2d12, + skill-badge-quaternary-bg: #fed7aa, + skill-badge-quaternary-text: #9a3412, - // Feature card colors - feature-card-blue-bg: linear-gradient(135deg, #dbeafe, #bfdbfe), - feature-card-purple-bg: linear-gradient(135deg, #e9d5ff, #ddd6fe), - feature-card-teal-bg: linear-gradient(135deg, #ccfbf1, #99f6e4), + // Feature card colors using visual hierarchy + feature-card-primary-bg: linear-gradient(135deg, #dbeafe, #bfdbfe), + feature-card-secondary-bg: linear-gradient(135deg, #e9d5ff, #ddd6fe), + feature-card-tertiary-bg: linear-gradient(135deg, #ccfbf1, #99f6e4), - feature-icon-blue: #2563eb, - feature-icon-purple: #9333ea, - feature-icon-teal: #0d9488, + feature-icon-primary: #2563eb, + feature-icon-secondary: #9333ea, + feature-icon-tertiary: #0d9488, - feature-title-blue: #1e40af, - feature-title-purple: #7c3aed, - feature-title-teal: #0f766e, + feature-title-primary: #1e40af, + feature-title-secondary: #7c3aed, + feature-title-tertiary: #0f766e, - feature-description-blue: #1d4ed8, - feature-description-purple: #6d28d9, - feature-description-teal: #115e59, + feature-description-primary: #1d4ed8, + feature-description-secondary: #6d28d9, + feature-description-tertiary: #115e59, - // Shadow variables using CSS custom properties + // Shadow variables box-shadow-sm: #{$shadow-sm}, box-shadow-md: #{$shadow-md}, box-shadow-lg: #{$shadow-lg} @@ -81,22 +81,22 @@ $dark-theme: ( gradient-primary: $gradient-primary, gradient-text: $gradient-text, - // Stat colors for dark theme - stat-experience-bg: linear-gradient(135deg, rgba(30, 58, 138, 0.3), rgba(30, 64, 175, 0.3)), - stat-experience-value: #2563eb, - stat-experience-label: #93c5fd, + // Stat colors using visual hierarchy + stat-primary-bg: linear-gradient(135deg, rgba(30, 58, 138, 0.3), rgba(30, 64, 175, 0.3)), + stat-primary-value: #2563eb, + stat-primary-label: #93c5fd, - stat-design-bg: linear-gradient(135deg, rgba(20, 83, 45, 0.3), rgba(22, 101, 52, 0.3)), - stat-design-value: #16a34a, - stat-design-label: #86efac, + stat-secondary-bg: linear-gradient(135deg, rgba(20, 83, 45, 0.3), rgba(22, 101, 52, 0.3)), + stat-secondary-value: #16a34a, + stat-secondary-label: #86efac, - stat-technologies-bg: linear-gradient(135deg, rgba(19, 78, 74, 0.3), rgba(17, 94, 89, 0.3)), - stat-technologies-value: #0d9488, - stat-technologies-label: #5eead4, + stat-tertiary-bg: linear-gradient(135deg, rgba(19, 78, 74, 0.3), rgba(17, 94, 89, 0.3)), + stat-tertiary-value: #0d9488, + stat-tertiary-label: #5eead4, - stat-motivation-bg: linear-gradient(135deg, rgba(88, 28, 135, 0.3), rgba(107, 33, 168, 0.3)), - stat-motivation-value: #9333ea, - stat-motivation-label: #c4b5fd, + stat-quaternary-bg: linear-gradient(135deg, rgba(88, 28, 135, 0.3), rgba(107, 33, 168, 0.3)), + stat-quaternary-value: #9333ea, + stat-quaternary-label: #c4b5fd, // About section colors about-background: linear-gradient(135deg, rgba(20, 83, 45, 0.2) 0%, rgba(6, 78, 59, 0.2) 100%), @@ -104,32 +104,32 @@ $dark-theme: ( about-greeting-color: #34d399, gradient-image-overlay: linear-gradient(45deg, rgba(59, 130, 246, 0.2), rgba(147, 51, 234, 0.2)), - // Skill badge colors - skill-badge-blue-bg: rgba(30, 58, 138, 0.3), - skill-badge-blue-text: #93c5fd, - skill-badge-green-bg: rgba(20, 83, 45, 0.3), - skill-badge-green-text: #86efac, - skill-badge-purple-bg: rgba(88, 28, 135, 0.3), - skill-badge-purple-text: #c4b5fd, - skill-badge-orange-bg: rgba(154, 52, 18, 0.3), - skill-badge-orange-text: #fdba74, + // Skill badge colors using visual hierarchy + skill-badge-primary-bg: rgba(30, 58, 138, 0.3), + skill-badge-primary-text: #93c5fd, + skill-badge-secondary-bg: rgba(20, 83, 45, 0.3), + skill-badge-secondary-text: #86efac, + skill-badge-tertiary-bg: rgba(88, 28, 135, 0.3), + skill-badge-tertiary-text: #c4b5fd, + skill-badge-quaternary-bg: rgba(154, 52, 18, 0.3), + skill-badge-quaternary-text: #fdba74, - // Feature card colors - feature-card-blue-bg: linear-gradient(135deg, rgba(30, 58, 138, 0.3), rgba(30, 64, 175, 0.3)), - feature-card-purple-bg: linear-gradient(135deg, rgba(88, 28, 135, 0.3), rgba(107, 33, 168, 0.3)), - feature-card-teal-bg: linear-gradient(135deg, rgba(19, 78, 74, 0.3), rgba(17, 94, 89, 0.3)), + // Feature card colors using visual hierarchy + feature-card-primary-bg: linear-gradient(135deg, rgba(30, 58, 138, 0.3), rgba(30, 64, 175, 0.3)), + feature-card-secondary-bg: linear-gradient(135deg, rgba(88, 28, 135, 0.3), rgba(107, 33, 168, 0.3)), + feature-card-tertiary-bg: linear-gradient(135deg, rgba(19, 78, 74, 0.3), rgba(17, 94, 89, 0.3)), - feature-icon-blue: #3b82f6, - feature-icon-purple: #a855f7, - feature-icon-teal: #14b8a6, + feature-icon-primary: #3b82f6, + feature-icon-secondary: #a855f7, + feature-icon-tertiary: #14b8a6, - feature-title-blue: #93c5fd, - feature-title-purple: #c4b5fd, - feature-title-teal: #5eead4, + feature-title-primary: #93c5fd, + feature-title-secondary: #c4b5fd, + feature-title-tertiary: #5eead4, - feature-description-blue: #dbeafe, - feature-description-purple: #e9d5ff, - feature-description-teal: #ccfbf1, + feature-description-primary: #dbeafe, + feature-description-secondary: #e9d5ff, + feature-description-tertiary: #ccfbf1, // Shadow variables box-shadow-sm: #{$shadow-sm}, @@ -149,22 +149,22 @@ $dark-theme: ( --gradient-primary: #{map.get($theme, gradient-primary)}; --gradient-text: #{map.get($theme, gradient-text)}; - // Stat variables - --stat-experience-bg: #{map.get($theme, stat-experience-bg)}; - --stat-experience-value: #{map.get($theme, stat-experience-value)}; - --stat-experience-label: #{map.get($theme, stat-experience-label)}; + // Stat variables using semantic naming + --stat-primary-bg: #{map.get($theme, stat-primary-bg)}; + --stat-primary-value: #{map.get($theme, stat-primary-value)}; + --stat-primary-label: #{map.get($theme, stat-primary-label)}; - --stat-design-bg: #{map.get($theme, stat-design-bg)}; - --stat-design-value: #{map.get($theme, stat-design-value)}; - --stat-design-label: #{map.get($theme, stat-design-label)}; + --stat-secondary-bg: #{map.get($theme, stat-secondary-bg)}; + --stat-secondary-value: #{map.get($theme, stat-secondary-value)}; + --stat-secondary-label: #{map.get($theme, stat-secondary-label)}; - --stat-technologies-bg: #{map.get($theme, stat-technologies-bg)}; - --stat-technologies-value: #{map.get($theme, stat-technologies-value)}; - --stat-technologies-label: #{map.get($theme, stat-technologies-label)}; + --stat-tertiary-bg: #{map.get($theme, stat-tertiary-bg)}; + --stat-tertiary-value: #{map.get($theme, stat-tertiary-value)}; + --stat-tertiary-label: #{map.get($theme, stat-tertiary-label)}; - --stat-motivation-bg: #{map.get($theme, stat-motivation-bg)}; - --stat-motivation-value: #{map.get($theme, stat-motivation-value)}; - --stat-motivation-label: #{map.get($theme, stat-motivation-label)}; + --stat-quaternary-bg: #{map.get($theme, stat-quaternary-bg)}; + --stat-quaternary-value: #{map.get($theme, stat-quaternary-value)}; + --stat-quaternary-label: #{map.get($theme, stat-quaternary-label)}; // About section variables --about-background: #{map.get($theme, about-background)}; @@ -172,32 +172,35 @@ $dark-theme: ( --about-greeting-color: #{map.get($theme, about-greeting-color)}; --gradient-image-overlay: #{map.get($theme, gradient-image-overlay)}; - // Skill badge variables - --skill-badge-blue-bg: #{map.get($theme, skill-badge-blue-bg)}; - --skill-badge-blue-text: #{map.get($theme, skill-badge-blue-text)}; - --skill-badge-green-bg: #{map.get($theme, skill-badge-green-bg)}; - --skill-badge-green-text: #{map.get($theme, skill-badge-green-text)}; - --skill-badge-purple-bg: #{map.get($theme, skill-badge-purple-bg)}; - --skill-badge-purple-text: #{map.get($theme, skill-badge-purple-text)}; - --skill-badge-orange-bg: #{map.get($theme, skill-badge-orange-bg)}; - --skill-badge-orange-text: #{map.get($theme, skill-badge-orange-text)}; + // Skill badge variables using semantic naming + --skill-badge-primary-bg: #{map.get($theme, skill-badge-primary-bg)}; + --skill-badge-primary-text: #{map.get($theme, skill-badge-primary-text)}; + --skill-badge-secondary-bg: #{map.get($theme, skill-badge-secondary-bg)}; + --skill-badge-secondary-text: #{map.get($theme, skill-badge-secondary-text)}; + --skill-badge-tertiary-bg: #{map.get($theme, skill-badge-tertiary-bg)}; + --skill-badge-tertiary-text: #{map.get($theme, skill-badge-tertiary-text)}; + --skill-badge-quaternary-bg: #{map.get($theme, skill-badge-quaternary-bg)}; + --skill-badge-quaternary-text: #{map.get($theme, skill-badge-quaternary-text)}; - // Feature card variables - --feature-card-blue-bg: #{map.get($theme, feature-card-blue-bg)}; - --feature-card-purple-bg: #{map.get($theme, feature-card-purple-bg)}; - --feature-card-teal-bg: #{map.get($theme, feature-card-teal-bg)}; - --feature-icon-blue: #{map.get($theme, feature-icon-blue)}; - --feature-icon-purple: #{map.get($theme, feature-icon-purple)}; - --feature-icon-teal: #{map.get($theme, feature-icon-teal)}; - --feature-title-blue: #{map.get($theme, feature-title-blue)}; - --feature-title-purple: #{map.get($theme, feature-title-purple)}; - --feature-title-teal: #{map.get($theme, feature-title-teal)}; - --feature-description-blue: #{map.get($theme, feature-description-blue)}; - --feature-description-purple: #{map.get($theme, feature-description-purple)}; - --feature-description-teal: #{map.get($theme, feature-description-teal)}; + // Feature card variables using semantic naming + --feature-card-primary-bg: #{map.get($theme, feature-card-primary-bg)}; + --feature-card-secondary-bg: #{map.get($theme, feature-card-secondary-bg)}; + --feature-card-tertiary-bg: #{map.get($theme, feature-card-tertiary-bg)}; + + --feature-icon-primary: #{map.get($theme, feature-icon-primary)}; + --feature-icon-secondary: #{map.get($theme, feature-icon-secondary)}; + --feature-icon-tertiary: #{map.get($theme, feature-icon-tertiary)}; + + --feature-title-primary: #{map.get($theme, feature-title-primary)}; + --feature-title-secondary: #{map.get($theme, feature-title-secondary)}; + --feature-title-tertiary: #{map.get($theme, feature-title-tertiary)}; + + --feature-description-primary: #{map.get($theme, feature-description-primary)}; + --feature-description-secondary: #{map.get($theme, feature-description-secondary)}; + --feature-description-tertiary: #{map.get($theme, feature-description-tertiary)}; // Shadow variables --box-shadow-sm: #{map.get($theme, box-shadow-sm)} var(--box-shadow-hover); --box-shadow-md: #{map.get($theme, box-shadow-md)}; --box-shadow-lg: #{map.get($theme, box-shadow-lg)}; -} +} \ No newline at end of file