From 77e149eae1b536223588c4c66eed3ae379a66033 Mon Sep 17 00:00:00 2001 From: AINDUSTRIES Date: Tue, 17 Sep 2024 00:10:30 +0200 Subject: [PATCH] General update: site works. --- migrations/20240914120528_create_tables.sql | 10 +-- routes.json | 3 +- settings.json | 2 +- src/main.rs | 58 ++++++++------- static/img/favicon.ico | Bin 0 -> 209762 bytes static/js/index.js | 76 ++++++++++---------- static/js/results.js | 54 +++++++------- 7 files changed, 105 insertions(+), 98 deletions(-) create mode 100644 static/img/favicon.ico diff --git a/migrations/20240914120528_create_tables.sql b/migrations/20240914120528_create_tables.sql index 9faff80..bc3858a 100644 --- a/migrations/20240914120528_create_tables.sql +++ b/migrations/20240914120528_create_tables.sql @@ -7,8 +7,10 @@ CREATE TABLE IF NOT EXISTS votes ( id INTEGER PRIMARY KEY NOT NULL, submit_date TEXT NOT NULL, - player_id INTEGER NOT NULL, - nickname TEXT NOT NULL, - reason TEXT NOT NULL, - is_plus BOOLEAN NOT NULL DEFAULT 0 + plus_player_id INTEGER NOT NULL, + plus_nickname TEXT NOT NULL, + plus_reason TEXT NOT NULL, + minus_player_id INTEGER NOT NULL, + minus_nickname TEXT NOT NULL, + minus_reason TEXT NOT NULL ) \ No newline at end of file diff --git a/routes.json b/routes.json index 53057cb..f6b9bdc 100644 --- a/routes.json +++ b/routes.json @@ -1,5 +1,6 @@ { "/": "static/html/index.html", "/results": "static/html/results.html", - "/archives": "static/html/archives.html" + "/archives": "static/html/archives.html", + "/favicon.ico": "static/img/favicon.ico" } \ No newline at end of file diff --git a/settings.json b/settings.json index 5b6203f..0670620 100644 --- a/settings.json +++ b/settings.json @@ -1,4 +1,4 @@ { "database_url": "sqlite:vote.db", - "bind_address": "127.0.0.1:8080" + "bind_address": "127.0.0.1:8000" } \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 1662545..4ade1f6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -31,10 +31,12 @@ struct Player { #[derive(Serialize, Deserialize, Debug)] struct Vote { - player_id: i64, - nickname: String, - reason: String, - is_plus: bool, + plus_player_id: i64, + plus_nickname: String, + plus_reason: String, + minus_player_id: i64, + minus_nickname: String, + minus_reason: String, } #[derive(Serialize, Deserialize)] @@ -109,25 +111,23 @@ async fn get_data(path: &str, req: &Request, db: Arc } "/data/results" => { let votes = get_votes(req, db).await; - let ids: Vec<(i64, bool)> = votes.iter().map(|x| (x.player_id, x.is_plus)).collect(); + let ids: Vec<(i64, i64)> = votes.iter().map(|x| (x.plus_player_id, x.minus_player_id)).collect(); let mut plus_results: HashMap = HashMap::new(); let mut minus_results: HashMap = HashMap::new(); - let _ = ids.iter().filter(|x| x.1).for_each(|x| { - let id = x.0; - if plus_results.contains_key(&id) { - plus_results.insert(id, 0); + let _ = ids.iter().for_each(|x| { + let plus_id = x.0; + if !plus_results.contains_key(&plus_id) { + plus_results.insert(plus_id, 0); } - *plus_results.get_mut(&id).unwrap() += 1; - }); + *plus_results.get_mut(&plus_id).unwrap() += 1; - let _ = ids.iter().filter(|x| !x.1).for_each(|x| { - let id = x.0; - if minus_results.contains_key(&id) { - minus_results.insert(id, 0); + let minus_id = x.1; + if !minus_results.contains_key(&minus_id) { + minus_results.insert(minus_id, 0); } - *minus_results.get_mut(&id).unwrap() += 1; + *minus_results.get_mut(&minus_id).unwrap() += 1; }); let mut plus_results: Vec<(i64, i64)> = plus_results.into_iter().collect(); @@ -164,13 +164,15 @@ async fn get_votes(req: &Request, db: Arc>) -> Vec, db: Arc>) -> Resultz`&|;%hOk9g3!P z?l7c7hYsO1c6E5Yqqm=r9l8wdtj$0D<&W%U?d?C0L1ADw`^h%4s}&yDe&RTdr_TL3 zS@oG9}|8?8W^Bw2g z7P@o1^M2eX-#!1!?N5w}Hy%Iq-}fB8{q@Gh1&w4-J7ThZ{& zT(`HC1otpuu4r6eo7k6rjp}GKrVX)J?o~3no0W{}WEG)3ESYn%M)tFu(SDX5*w0di z^|8!=K2|#u$Gq8QIrn zhxuFn(5_Z8qPt}e@}7N0aBuhQ^TPYN@yO#D%Y(bQ=Pw%G!773~S$R-r`p*5>UpSQW zLVDZmF?}tMF`daaKcJ)K@_SiWPs<+B!HUDWSzd7GHlA|u(%=6kEd7#ak&G!1@9$(x z_J}UfZYL`X?Pv2R1wcFC!oRbX4DV?r0bQ*?xC`oGhfNq{b0hoN?1)}q0Q^8(6`_5t zVsvjOa|%Wvb4K+rZDYY+3A8wG@-U0**TG%CeB1z=G2Y(_f_qv5I4A(`Y2ZG8NGB7m zmrH(uN8z#{gk!*bIoL}W1wJSAw+!evgTBlS?*r}kv{djC-o1lG_3dnNL;Km-j_`=! zp;kQF-^xe#cR0x9J|)6Cct{4rm685-NNj{f5A1Bkp+l@FXdp7PAARm?Dd4>py0~tSfnffKnmmm*?L5)!= z&sZFcJP%|XXoX|DTB`V&lkM#o{3Z1Jzu_EVFdf<~4DAJ7`Z-xBy{*OHsUZ4nqO2<&*nr8hrW7PD#vJB z07g@wSsjxG#^NN;#`d?8&;gb+41IA#Pn$7%fR%G!(SB)2UyJ7+Mf59mbPt=3Y?;uT zYXx<4@>MeVw3J9&c+GkC(3Kb1t!JNMcV2k5U4Pn%7TK+XMI!^#2X}EYyA0gUkLV4K zy4oR=h9Eb)Tf)$uHg#YpOJbWhdXST)C1Zy;Oy`X1W66WS&EQU!D7}E^Q=hZoE7Opf zxybJHVI6Jml;M`dSfqisTzHsddhRgz7J7rmD+#`nI~?2vc>Jw0a-b!0dyY*BSv$jY6NI#c^CVm?{Kk z>G1jNkbaf~hBA>G+Q#~Iw6s8Q3Z}HLe0+dKLAN=<{ah;;GsvbPYce<{!M~HkVpc#e z^xytg8G?Ka=xsTJ(FH>WS{7J{hGxUTULmqM1{@|Mlk(bhVA(-_Hf=y>o7%slO&QS9ru%oXH1xIcU@5F;2a7Qm5^AH1JA*@!`Q zYFVy*^V%Z&;^n6-9!!d6prnPo4>N}SG;c5{qbZA1s@?`M#oJV+{+&O z%O$q%wdbwwSQW?B8`D{R?=_gGZF9>~kC_WlERS;LCA?D~_A zvT?`|Veghdon@cB_OxyL0ho_WG1gPn|F$W-h*!r%Od+&Px8N)j|+hZ9z+IaZ%<;PYU%AHyB4hw{rM-TV2aRYkTi4{d=`Nx=FMN5 z?Oe|_zO{LYQ5F+0z^sYi_O)8;&T9Malh4pi_aX;d?cK*8wkiF(pa*ugLTsa{k~!E< z3di3`l`U!p;H`*iDU1(<=Qe*|wLhaD}1Us%O+eRWoFFNgLuHRsF-+gI8eY@EO zzdMHSEy%wQY{HO%=1(7PxbPw{zt2{^_PX`!(9teF0}R&I+3Mx**s!jh%#UMkx%eE$ z4XkfnZAqgf1AAE_w$fzzE86AYL9GWkIS74b;KR$oZYkaGhBJ=xXtRE+h4k$T9d)qb zy}H<8C54XOt+@eO>tJ_W{b!)I%a$!#XaNJd+xXyNHn>+O`(WuJWKo@6f59K@p_{Me zoMv0K_!%ctlY>WK;|#Qj-ra1PUq4%L$V@kPtJ%5LHhlf1ZCs5Unaee#R9amn(KC`zLy=VhEceQhVcM8wYVw=8PZGK%k z+4y0D9S&_fyamjkQkIGg#BUhZ-_nM6YR6zZ4>I}drZU$_9@fRuv5Efm>=Te>TOgOM z_TWv|*yFeV)trt-S6x7-*j|) z_A!Ur$`_w@7<}bF?sPO86M#*0@BlC{$fgeJYnPsKJjd>_ng;2Etzfs&zWew?yYuQR zY-qR69tN$&wr^Z(E8l;^zFYH&t^Mo+`-=HuLilLA?!2=cM!#JCrjw%~0|wg54}rnm zyKTw+ciBYbU?F}M`4<$IQZ)g+8Z6F=59hYh5$o;l3(mCYLHO!|{B7zGY^2O#^P4K1v+VrrLmLhTZ&+{|=QUgPiWSU7yMgf@cEfoWaKAnF^@^1?X2?)G_hc}L zT-^Hg8XL&HqDBt0z@DAVwxE|bZng^!FSUut*c5!O@_Dq&!Gl{D)x5ZD>;Ow2iXRQT zdK|X-Kg=yMV}2)n(spfT%iKnG|7P?yeWne99_Qqw^0~=cHhyCa`WfLVfr#u3FgWYpp@&x(?KjGXPPCE{JZ&%9<39wk^d{YPavDi`m z7J|NeHB^3!i9s|6Sy2N9@NP?Y=7{tM}N-S6;SZ-MZQ(3(nv% zT5S2^7i=(mM9;F|uvzY2Oj_;m)F_K*jw*l99Q-ZqwuyrrgZSg~@PlOx#aBPPx3eQ& zb>d+jy|mQWh0K3`f9zp)_VGv9eK(+UA@@X+W3kap88N`#TKE9pu}SRNW#7GvEk&QP z%Y6RIQ_fEj-lwDO{(2RsA#?VE;o42ss_z?C+stVZcK*?G-8DCZ-RR=lhS7z-t)pGO z0DTo%X?r>E+pnzY`!!zwYc|@VTd#J0nLK=@8Sp({jA}a$4`LiDKAE_b%ppBojAg>m zUUt)&=!eb7h|S-+dCbH>KMNVy!;Zi=VNKi7r?%QCXj{IqX#DB7o_n(G_+Y8S!lt)h zw8yTw(9N%=4D4bP(Q&gv21Dl;*%p4={MKUI_w`EGqWS%TBPAc2tY-6C3j{;L+*dC> zXL~+hWw)GpGBzS&0V!= z(WVaV>){qX-dbwy`;~87-PfPkisv4+8yB2l>G(vG{JK~Ie#t!I85EWpFei6+s5Ma4u@{1a7@bZUUu;@Gu<`6dT)vI zkH-%mXkp-R8hDrv9!jwDOyYCgpl%j7xQCO|WBGkN*N8`_Oe2P1Jl9Xd#xe!GM{?}6 zz8!5M+bNQP(0K`QX^PoY>~=Z!(D*^b8Vu@gH=f1Z4*8|nnlD~@-fq9>9J`))x9iVY zU^ia)2aA&Lc8Jvg3i4EH@DW`g@JKjb8ueD&9yc8q(b9iO~w z!HkFOx54yx8otGN{Pk54!z~lukWZ_^Hq(y5gBX9ZN5O-OiB-<_@8x1tVzF;tf9kRD zer%J~TWmPAJQTrjv7`Pj0>M&lny4eH}!KNK^aK7_oWU~&*>xx{{zgbo51 z@_P(1#io_CZPSTgOC^pn3temi7`frJ!y)la`24=ZPSKgzE@aiv{^V#3v^gOotcbZ; z0kS0)JZ2%Il?zcs+>YYeW)o|jPt1yPg3`cPHvaD-;!VrKG{+ji{I8$Q3il)Sx`&mG zBrXjZSVGK9A#nwB=E;yCz?Xud>-gExVxIkiO#tyZFVZDjfCdLgM z&I%hs40(5(8OoTo%fWxU9w57znwMWjt{k7$eypDyxL?Qm&eK-M7PC*ycOBpF`tEBw z?w|K}M+SnM5&hUd(BcPnwZr41?A?d%vSUqUwlmTB!bbu+R~}fXh!}*gj&q3XP9^U1ce%v4 z+;^khd%@`zg={G#)~jTAKPw&D$BGAox#4}SDrk@$8adK32X(S^zfLxbxV1uLXu(i& zr<4~FHo!gij4)`OIhJC{v&r>P+_`eFiixGJB9GyaaB?HKX9oNt1wX_T_)RE$;Fy9m zyXlrdCI&W*e3EixeJ1j} zm>j3M6Ngy}F@DpL%?rv>Y|$;3+kF?EW?}HKEOM&ii0#V@8eqwcLlH5zMZ<~LCLXsW z5TB*qNn52+|$Z05tzDhL?U{iU%>0lrR`{Xn=@D#%{$AKgHGLneTP9kq<8kknxcmjEi>5Ox} z-UsIw;L9l_reQAe+ogmw&&9l}LYi_; zG!6yifGMA{ko+g*a;B3T<=d}qZZOA?JCYv)K7xs@;k)m+?9rW}nNGytcCsw!L%dG! zUwlz5D}Xq3@;3Hwc@B+x7WYv**m0=mPvHHg!=Ed_LU~YchruNDCcPi=?Q-6E9`utC z*wJF4amD`UV{6am-6-BEb%ZyLmC#!SW1S1;gon)0*#m0v5o z$WAKy)^(+0DDOylk7YFFFbb>UfqDyp()+tH!n%o>c@t6E5}4sd^sq z4URvUUXh1Za0`|nmMGuM>P3E1a^Dc9_UMc5PB1bT$mIq%{4t=I%8TgWaL%gOOeYa}d zAUDRUF;D>ym`4uN4CbQZ0eWZ3(U&aD;5^-1^0^fGr(^Yw#AjVD2mLSL8Kpbq@k~YN zCndb&V)0J4zPbYiJgdH|$;atx5Mbjir4^DBTogim4D<_)tJ6VvHt7y!%(+z;z}NK7 zBzx7Ijzzvq5qYCOrpbfxdjT@W)lT5Om!SV-!+UcWN6j;e(1rBgM4!S#sPm}?ay4~0J;_JmKL z?8%TkK-NjFWOJVA&{wBL^)Hm?P!xnLq+hB5k;(OyGpzHakGUE%^hdN^g&b54u=Gpe zFAYqq>9fl6F5#=CPTKr<1qfPUEX_7thl3<->oZV`{wBq`&Lk z_^{uxh5Btx++ zqT}SjoAqwX&>7Q3m%Q@|cy?7-Kc^c@P6@xRW(6_Px#+9~W3hoCf0ct+2+j+|XSrSh zIFeo^x#x6b@fhYu1=MXRjU+FhxXIFS@O7H>)3ULWZ;Bn@9Qu(%E8w%^57J+C4Dr{( zXQBE91~n%vYBOk*rG9%}lWDqlEp(iMzD1u;R=IfRik#x4_F6rek3?7Z3){jhiT zWBy3KE%u%&o=w-)oKA8?$EoSN>?%dPpCart#l$!i@LfD0m+R#-#>Ha?StSu1=F*dd=RA12YH=Kla_^s>8JQw1>HW_q zCw2zBOLj)t9?E!EhlCBblA*k7>=fD1L_V}W1HW5kU|(nZOF+k*#=Dv-8HCL+4?55> zIp|9%yyIl?a&YZxM97ZE@zaru)8U^v`06Urp(OXjM^%qOH7YVS?~q=D9LfcU(gSmm zQ^KN}__B0HZDk8g5Ft& z>A{-sNH3OMA(uYoA?qYlb*}KN+Edcg@`!U*POkj!bH<^oN+$XAQ0^`4C8BSsCDTOf z>XY$x3h=o|57&Ne^V)Fl z>RhqU#X2yaDU3%d59VpyPcll);k)g7 z4%bi<9}t$)>1!5!m7Xa)Rl!qK_oE0|n?v4lF83)V&sg;cszL|DL-C&sg?1E!flVy~ zev!rXB+sQ2m4?C(ki!Ralg&V~DGPgf0eWN(ErqdGEeO$s-dkBen7=Y2`{>S;c(BUsCl1q zTs0q2PJR9u`lEUa(0U@+_SK5fyjA@bug`*h#V6vxWE6B3OFz?i_vz5E{D01V3C+uf zBHLglw5i$^x^FV~O`vwgbbJrfsr8Tu50Ski0bMs0dQeV*nrtqzS0-_;j**>GICAql zuqBxx+luff`R|i~!d|><;Eb_NLoOxLC)Le}$4-&RSS0ZbNnk4#d6Yq46sxBi6v9mk zp=#Hxm0X``uW8t4w&Mo;Q=@ zQ6T3374uF zm4@9q1KF2NT{-!ivheMsk^_?Bj~#%qR=@RbJbjOkuK}o}X+-#E!QV_KicHh4G$dr%bf# zj-P8co-o&r$(l~=e?N;v&P^ANc^9e`7Ec^U#rQxwy&}`jnUinF#za~!`2wn+c6>s( zU3y5qoii)b%A3GR;Jm4s&qSZ zMwb1qG|lFwMOpf|0Gm9RIUU`Xf`FAm+HuZ_hQIUSx+9y^X$v%~Gu`6YHtMzrNc29Our z%celrvGBbVa5{;&m;!2YoSGeHR~%Mm7tb%Xqcf*j0+dP-Pd*D|T^66L>F$ zg?LxREX57(ZAYia+R23}yxV-caDK74_6vre=aFrGG`i=9)F?p=fZw_SRc z%h3&I4j&~t<6S@ZSK_tFpSQi_LnKFA5VZHm_2dg|Tg!Remz*5iM+^;pf9BeAEgIRV z_?gmigUMS*-x@O*KU*hLtk*L)T|vw?`R8r%C|;jy>@Q~?W8aal?&9ILe{Z1!!9vh5 zn@Ar2X!3nyNB9$3$~{_ZZQbI>U94I@<5G%TPez^;sTLDD*%ao&bJ8bT{nzih{@89} zvs;MYa+?Z#w%#+ws}k?4$3kyV`!Qwbsp_+ocPRwg7N9mYA4O_|}bQ9mlEU z{%L%76ECZCxYmxBOx&`qLV&DgNTy%z2fA-e?>)Sr^x$3{CZL}ld9jDLC;~gl5u-4VQi9@c6 z4}^2Scm8pQcOLP)svR;K+Bt$apXRln^3Hf~Z83)GH-Y4K$9cy&e^fMj#=(w3+0mn+ zn>chz=|IH4C?(ojs)@7Ov(p;a zerR|7{$zXd@^h``I}v8#}|oiQuC#kyL#*C$6FNikUbb3X-I$D z{@&}nuUh;3z1M6Qxjcb>JzZYlw2?zyZ4}jK`0%MGTyDZCvnvVf5-m2__irz@uNOUR z?>%&jt$6rvcEyopPVaN`E@V_Pd^!m{E8g?s!)8DR!fTUNlZ(Fc8S211{gAzK-{0)~ zBWK&6iGNn!gmM&5m_NsQBSQv~2OHeKkNx$c3&6T?P;V#Yq`2ovN5`5;EUM;fs{NaY zJ!3q4XV>S;=o>V=^J`nZbfJCz;$!fUE9~)WFSZ3U$wl5Reo=4hh*N!(efM5+mhJfb zJ#XBaw%DACbPEGFvvOnIan`ck8a`TXk6wA6{e#*#)nHlY*RB5;-h$5(d`a%8zSEg= zioNSJdw6~JhRa<&tD>=it5RO8pjV{{BmsbDcaP z)T-Bt*AjO}-q)%n&$??Zd+bho^U>Sw%-LCPzAW8ezR`nOAC>Jq3Ojfd^LW)PyZJ0= z5I$E6KORF~!DQysLGZbe{X5&%jbFJjeeCv|Y($Ta_R_PD^1T_nereMJ`r5QUT^!!V z6L-1oV|e_YYFA@v40N1DO{Pq8aa12>-`2J8{q1%Om`z01WDg;)wntaH_S6&I^%N`m z^;fH`dgn$`;A?EtXYg!t$F083Eb7ELV(^+)nv@uyMfP09h>{?!-m+D$vicOn^%a%Puu3`s!`hi;*#~N#1z0$>+ z3qRrLc@e~Z>KeOut+T_@VwpP+z!v21p6BbgUgEcU`xLs@R=JZC$$QKm9pLKQ=>61x z4F-38Z+Bh$CmRHwzWwkGckEa2gfad-Y*fEa)Gp{?!x%Gt*XJ{iRD64b?O3zQMiQ4k zg1+cCKl-j*7OUQ5AHV&I4d8v;cKziX+eo_CR*Q}pZNcQd3`X7tNaix<(L5swn@q_B zYAv>7(57KOnS#8Cf{)*M;c1K=yuM|d-Fo>scKgA=%U-gKsS|8i z_b%j?ud_YWb6Ng^C!11;buJt|+~wHZ(U#k)_gpwG2>Swcs>uNgMz35aeDW@DSa1?K z2H0T&hFTQwv0@su>&w|CuXZyvBfeX^n%fe;-9$~5&p)>)e}8KJb+(mDU$w@aJMFng z{=?0!Wa~-9-XXh*VyBbApzJ5wDpxfcdRD%}#|wqs23xaqG1$X?6yT3vBLE)@=Z_rZ zawnc6|6TarSC5?8xx?zWZ#RcW_NkW5CC44^>ck`skzH?y^Mh$VD4T`qfL?MOw7MHv z3zk%WFg`T?%A;R6L&dG_MXepD!EO+`O8wKw;vMitH zLYE{b>TdG0ZoTY6d*YtI*=O&(#4H-dwWC#-Pi`L4tx^oOP$vEGC{gpNbY*j^$#Wpz9<*8r)$J4#{iYz-SJ&_zD@*==z=A%c^QuFIYp3&vVPv!F0Z?{qK3)zGuZxxRvAC8)Aju~vv zonOSTY~dO;y-NH7{x`zfX zRb#G*dRT`RWb+x_K)Sk)(^kJTR))Uv>hn)p|DIi}Cvvcf+FN_YJE0HvyK=AhaXrmx zYrePJ&N{~NM#V44&U~hs{1Z{@E+?8=0AIH8Q+`io~zEaU}Rf9zUWl^ zCW>b-gqOSZY2an@1)Ot8A;&_awck5>j}Jr!(vpVzTg;FFbQ}GUI#XAYKRC%x`Boz> zp>I#-ay{*De?HIMXZz+gHk^6hOAp@du>Z}IkJ=>qpXE>P19%nQB;TxMm;HqrjKY`d zFdDWb_4Af1E;K*-Sr`|^aPpqO%JGF+HkNt3YGgDav!p9teZlW7g6ny6;1;X>`g2?U z^yBv3`{W5PdC|UEzRbR))?@y(Np{kVGDL4R_t<2Q-*TfpeB-rt*HwSEC+@$~YBpjs z0&lC{d&|1gx2+rWow>s5&(Tkp*}9d>?K{SB!`m<0rq`acYmTTOM~ruaFX>>%pzNX< z_>mI9;52lI`~G+`V^?oG$TgobxSyj_<#$K=_qW#;X@1daTULGS=1q-TBqv+lJ5z0z zl2L*9bNy``H2ms=_c9l!9_NN{EQ;DmU&*%<%N#d?)&BoaxIV% z(0L}gOPViy_R&&~tF;Foxy@F*hrA(|KHWi9NMsHQzYce*% z)3KvVkG8!vcJ8T1aW8PQeT_xoJIx^;r*aa$5B&P7VXrta`KM=$8{+bKuRLik$3v?; zgX(B!U<*-=;{0)=JzaF`Ca&9J&)s`B^F(+?;BZUs)x*LVgHM+%=2qKn%_r|U+wjWg zo`kfUZQY~)u=K9@!TZWjh%H1Ito8Jio2kJV-m9x!bH?x7nC{v3y-g1fwh(xp>h7$3 z0e%AJKOkRU^*O@ONgCFF?fB!B=Pj^NJvv+6>M!`-Vz>Y4LVPB}T|I$GgZ*qw@1E3M z?Pj6$?}Re=VI$+PX@gDlALNc1)4#8)8@1@Me}MBQ`{wgcY}Ak;w)iRWuvYN*rUfw0 z!+Eco6RXyFEbk$SxnvPGGR5~C?D>nrU?RSD<(S1|ce&~0BN)qV)Q?@`cZg);Z zh~wwdM=m<+WE(XYC*M}p5%pE@f zzY5qT{!;i;Op5BlUFGVdVxvG8RsDVGqH*|TCX+9y`Jn7Ul1tT$=i!+t#wlkJv!R^PyPd5u-(3W{2!J^{g^yIa)d*JER^G=M_6mUT}Ms*Naoew zzxxK`*WSB^1#{fzinGsf{B+gxPs7sc zto6IEZGJ`yzNjG<(!I0OyCfxxyRTSeZd-5UUN4i+4b_^0zf=?oaxsc*V?l=!Q zxN9xrx!HDa;yuYPMa^f)MJEf82M=C#p`)do@R43k6l{g6>$Q9RI(%N>W~b&t&9?S~ zw`@j6g7ag1@yauf4mQ5C)V&MUHaj*er45(ZXOO>P_z9z!o5|)TySbA?Ejz9Di&d^( z(j;uC)9_)8@7L2ldv%e!$7}cBW{K!v#b85ml!fS>ikFmbS`6;Wi4iHFZbUwITlxBz zF9d_=!C$`eyiJ1t7X^Y_eD;csO_$74ybyl>OyW*%Iz#dgeXkW-+PBM&!7pA){S4*m zD-TD$dBx@_MlO!n7sU~!lGA?aiE}uQF=^U>3}O8Xcw8nv?l5e(iTKB7B~P}NwH~hZ zoONG*Y+I>IFMV+Dt}V9yiw`X^D%{x-KYkg!w$$0mhwrs1;3|{ajQL@KP8ZNS(mOf- z*hB4vQsg#sGWjl#$W3(qyF~PxWO$m^tJ(9-hse2Vdk>qGYUZ@8M;C3bv%g<|wX+Ky zRgh-izq7<$&lNdOU*ye8-6ZGQh4ff|_X1kg?ImD4lPdS+9gR)7L zLs!}O=d~8s_4xB_1LH3mYWN-!{1#ruxHWCGU0*D>Th2e(3W#-)zgxCOt=aG*^MR)C zc^B|U&EGMY+Ty?8X|pq8EdYM)t8Zew&jn>U#3=dMRPZ30`tXr^p_^*k`uTE;$B!P3 z&sXcVJSjiA^grx-xBlT2^v!P0t{Bma8o1OJef7TEk-zKhEBqtb(0M5~HkUt345ad6 zWs4~pOwJts;wskUjOAX_@U^`0IP)uL_l<||LSEwgL@z2J2BDC7U;$XEB0g638P$V1 zt2EgtRt+y$W7Vtyp*o?e(WJP{V)Rwz1*jHI9QVqdFpSuq&KAsh=O3v#>`unv3+8*m z9W^&-$;7f|hWlFtSU)N++7{h)r8TYjz{xK0tnI5mwuSfIYRQwvIv>4!LMxwnnD?;F z-hc3Rcnjmkm}~u-X!vIRH}6CDJMA*$+!A<^ZC`IKU%v0wXH%S->K7JrKh@89?xsuV zljq|Y#~7|zCLO=ou0nr}!oDk8=@G;?y{qw&+^^%^@8wX(H?AymJ4|)SBd+9cw+D>U#JPuRP^&i$OP- zLL7o(X%A)$N@r7?pJEXeN0>@%wp-5#KZVvZnoO+8XlOy}0gXY27%yEOdeu64imS<^ z_Jh{i6E@VMkU8NT6UILI;}zePLu`iXDyg2Aa>P~7WOl>|YCsSR$946a*89?0L75@_ zoo!KZF3N4!`bUa`OrS4{w<;oLD}fw)<<`d#n>c~rOQ7=#=wCU2E+$(sqRb1G?=g$# znTt$QOuAw=Cn7H+^;}#(hi9G%A6C4lV#<|U;B-r5sPf}o{s&_dLH`tMJ_Wu}g#A_W zRyLRdWac4}!^oc_#sL40a^8!GfzAeR6M2>>cu5TB=Ml55t>Vd*FQVV4AQPw22R*y$ z;mbcLThLfOtJZch@=`V7ro-!|ao+^SO|h6-k4-glrf{y-Khs!G!S6nun7?RzdWuJg zWK8Ex8HFy;)s36@k$g5<%St}rWc)BOLwY-1W->U*hX<=RRtz>R#o+tuW2tXy@~vjD zMrj(hzBJ`4Ch=a5n;z=sZmRb( zH;T3Pu%pZ!KiJtDr}D06%l-k)DmGv7(RpC2l-Pgy9fZr-5&o`*#!S^tXseTRQS(*BWP9d$Wl6 z{!(&ol)sq7xtZL*jCrK;jZ^uox;4tlldV+SB5Xn~UtBpC^h5iF3DxG%?BPW`eBT___y-%3gGps2cjGs#aJsxY(BR5dC*8U zG&zsYv&Z;3x;zw`7B+I^CxHI6zPvB@RCP_1YkD|w;sxZRsm_dYb(N2%b>>r{oh)cX z>qgHYZ)hgAk}^IYLah_GmNaxXgLR9_$>Dan7UZ5P??QQm%56{P_!R2gs9ue$^*{_p zrQ$F+PrOBIeHDb0A4FbZt}qRLWDkvphi6HilA|bjnn@0mYSfgD!zaf!h5nU}?FYXm zZydfoCj#C;E@cXR6|F0ObvCpEw8{jM6L%GJ~FI!+jN^_4`6 z(DuBDp*9cwQTe&bi+c$cE1L#Pv7#_`IzFXCOyz&}>PwhTJWDS3KAb$v zLaw1T=1Uo$a`G3;s41a5FX2gf{fZf{z^<)4^*Q0gT>T62I_27`58@e>tm&Z|7wWre z;JEdNrT?I-NG?kLC37w1T}n3;9@FWo&Q;By0>)qOXEr&NvskzAF!IahQO`?#RQ(%0 zS1!7Z_^#siO5wfAH`I648&U4R^q+YXhI%{$x{z;B#~sXisGeOI6mANk1JxXoOcH*S zudcd3s@tHgYKsV$xqNnb0V9W@vz77Q7Q}^EEK+i&4xPwv!}iP{$~aT5HZr*HsN(;iw8;t{P#IC&Gbjsj^>4|5jd|;?1-+ zS`>XNo;cjCIX#iSXutAaRRd1zRBO#`ext^Q7x|-Hj&OjrKckuJuxViM;B5223KaLZ-xQZ$)38EgXy*elB7BP~CAtferA zis85Ep4-qMz9~UAG|Y9lx<3N!Aqlq zEtwh>smRRoxG|Q4J}>^0AHg_|4FWfz%;A|6lA}^MKA4zH=4`aG=m>Zcwj%nj=Sybp zmch7{B~Ebb7|U;xhQ63LX{6;&8f9^eo8qdqU+*Z3y1}vqh<^yY7j_fR>BKa2SLZSV-Q)0?xt4Q)}-U*GOtoo z-6G#-ZS|Y)INy2VX&UEDc(-JM)_*@LKhfo}xbqumBg!QwFX!zo$3>`s1#vYyXUV~!9(D&JgM;+@m&kvv)P}1k3u}PQ2MB-9h&->K71Vj6Fvm9P)TZ2aU z?u$=!pZ9uS9R?NRD=Y#dYvKnE)%uoR1E;L3XZ!ZKYwc;f=I&eGd%X*+SJ9NGV zR%29;dtSH#mreNhwEoj>{J{>J&9FGICtUlQ&S{HRU-RZ-i^7Mcx*=LmKsH~|MwaT; z(SGh$=j0yr_)|@fA7q^mYpQGXQ_c6g?;PcR<)MRQq4Q^<&xGJ_c=(pT@IJ{qXliuO zX@*4V4`|KMO3S{zwg=j2;j?~kggokb?b~;@*tYGQCvu^Qr90B$GpDeBALr?uRv_By zwjAO8$Zu8;?i4-i(>~H7(f!_sm(HDKuy=eOS|I&1< zn$BzaHI0XA78V?~TC6B;8ouoT7Dism*@qtL-30l+he05F7D=_wcD6KHH8Cptc8lM5 zkG`9+Ik2@H@Lm1mYug`R+ygcd0;fMW1AY$MIHR$#Sx!Q^v1}!$} zSbh@@eGQszsNMn8(D&+V?fA+HVmF6bQ0GqeIr)chTkR)<~0Ph}5zjdv;qj zW4mt;H>B_CkH%Ada83PaYfhD5|N4!Rdt8n@=vu`R5<4pVy}R^zd+veT?8&=sv`wsW z*unU_Dfg)@$dRBIjEZDrTE1rV6&Nwuixdxw8GnYe~l2U=%B8xiAMI*I-f=VO}mk8 zYy}~m(^3y+kWH<%wWOQX+K08^7nt@*} zec4vOw8%bs=4t!<)t9+oo1Amhw8u`HGt0>s<^6p03covWNhW(VtgYyoTRWNS!=7&| zIjr9t2HVaN?fcq+*YWX~|8h$&YLJ0wqkP(9cV2sy1$FCUV~~T--+eb7@$gX3z&QMI zl+YvfKw~8y#qc>T($^0kU(i-#t#RGM{JLhl=6o;_?)AoVk6BhUF{$Xj6NtYFCVnMy zAn%jB-B+G|qU|`H5B|AGGmLQ`SX6%&KX{*8BT?(br4bj9g$D4m;Q+{0h5Ve7E!@UcTNxO>`pKJrHY-hS={2 zp1haV2Ie?zc&Sf3*A(#m}2 zc$%))YaY+_{^x9UoqEn{a5kzIyZO=!$Rq4yLGX#^$kUXi#n`%H8Nc- zX8d%j8~szw_q%ciT*EIhGpv{M-<5^;cl8o%<7Y7UEyytJA$o_R72mdvZoGZk2}R2; z>1eRQwi9!FIr(~F&_^)#`W)&drQ&_EqS?9hT^NoZ=t#+$c1OB*nGuTyCd{uN3jxUG_eCU!&o5Q~Rk_2>wej=wdyfg`c~XZ%plAmW6u$ zA7mZ1q`{+brrOaCgFo8(e)r+l<-g*qRgHT2^T#5OZ09$;H0a*pi}wZ@c=W(lpIzf0 zO|YB}Ci~tlTk-tg@ktGHdFt{T&x;9hG@_h%`H|!kasCjk12K~L9ctq1o~q@YK#WKV zvB8DZgek|*7)n1@zrU0@(++E_6Al|}!Q4uh@2@&CZz?a3{_R0$77o-rJ-%P=B{~57rR8nQ;@!ne%eD zChWIryM+ZQ#m)TIBstGkZGVrv&)$Bx3%|Yez&+HV>F3rSRUMp4e4P{UeUuYpSV4S4 zDKTWOPB1a}(f&Q{@ceYHhulL~aQ${ez(2_47w^5@#a<_X*SQmeeia6V*@GQ};y*rK zFtyPE36x+!K`u~T!2|4LWf75cB%ZBsl*75@2f=&EqqL|gj8 z6SjlAwPtw1UPs^cw%~{=^t|pC0zN-k@`|G;kHAE;(3_;8Y^6SXDgE>C=}8zoENxUS zM4%(`Zv(n)E6=Da>;@N2$R&xNe|la=zX$Bo0ovDgAQnpcDGjs5?!Mv@o8FZepw8rH z-F*+oX^g!4`>v_ebie)A(4gXjf$2)ai8RvpOFu2e64mEk_^UKT!l_R5?rFuW! zJmx?;`gxxZW*PWfJi9Qe*ciomEAL73wx-Q%d4J4Mu-}P3eYE4Y{Gvb6w&>WCmo=`o zb}GImt-m1r$={emeI~aa32~0O#7`~T6AJ!oHg$4!M*A=*S>pbD7}QoxzD#NwB6Aw?H#XoKsDl>kT4d)% zcJd%T*(sFPG&WcxHj4(?4>?;`6&^Jg`=@9BF&6cmKVh)3O>emS@;_T#XKHMB>T0jt zeUGDgT}I9Q!w0FL;#}IgeHunJ{&rOFbi6?x58?0OJFc}c*f1v(U#;5n>3-ClW4&+X z5?y@4VfNtFf3k4&-eT(BDW5Vmu)mE&&s_c-d5hj%++5zx<2`m@FFx=eZ5Sjb51#0= z3;Y)J)P9Yhub2ON3_>fr*1C0`W8tYGvQ=ff2@u-{LeGQs*)Cv8x+NOqGAWzl`>BaSSHW*aC+EA7X_Pk>AQ5`k_Hu>!T&bN|zyF!Q6PYd3NS$!p>NKn%Wg&pqrD%00c; zcdq8Hl9~<|ZP$~m5@+!G&lpg{9|EG-NvTyB z4&RJNKS;;Mk_b*G5@Xl2X*JiVvsCZOg9iMjW{Cw>ER%7<-F^FA$ z^Ve=&hw0>*r4y?-JBqkQ^i1iTGl^v_4kV78m_)5-tK2@f{xrF>dBi@Zl7lt^+s$9j zJ;lQxHUru3>KhxKFPkd3ZM4*2=N?w&YEmDFL1ADwvThGDu7#L_=9VUhAs^PXRZPI1 z-OS0_{Bi8^{zU)C`u#Qh6jvg|GXH9-m;YNnPHnwE-!+9DHDAxrX7^+8UgTg*7f%lQ zFzBo{vov=Y{3F2(jTCj#A+JO|}d6_AUNLCu$O=vYC_XAUdNh3=@ysTx9Ux^EM9 zJjsgY{gmEd7lOg){@rbibkU_RImYhzJIDRYKRMU<-!*j2-L=#`QY?-F2?Q#4KcPZ$ zOm}3f7%~?Jx`#L)?ei|+@XWU#u;-m247Tu}5aq+5=7WpdDY`UlvTyVc=z(`PKyfgg<87 zSd{D8ddU3x%~xD~yCUiz7Ex0&e*km9e!W?P<4|BFFF!g0^^#lQ4H}zP;uz{St+S-a zP&Zy2{>s>|wj*f^+QLBj#BwH9S-wMgGiDw3xsFc3gRmJ$TdATwB=q0f&-> zKbC_(g~4d#;B)uh!_kuGUh}Z*eOBzK`YsF6X6FNKu(uXHMm#ls9OPdSKE_0BEBXEd z?dDTXWPEux7X#q|$?59V#K;lv?)6XnMX{pNLA4J{Ezc`k)W61{);>fIwqx+$ItIT5 z1|19_jj!K*$JOIZLdQ`a_nb)b5w*^_V&Q_xQ)3Nk)%H}KYuoybqZ6%tAZw)Lg61u5 zp2f8kBhmori{>4T5i4`qAv36>@M8>$Cb4O<&c(;X)jUZ(xLa9+;hNu{WLKYljQ!>G zqwMV2h14~Sq5jGUaxS{KyhyDRqqS4C=8@{BXq`;exk{!6ej@8%j>XOq*1MzKKn-0_ z4$~RQR{qo{*H69*p&pjN2>tNsq6cD7coPnN7$md7efM-po!4ONzIfLPh&_vCttzc! zl|6tpOnY^+>yD*9;~o!Zino#MYi1oA_ot3%%o@GeQP&&lDevA*JxSI%5WdA9gu(r~ zDChhj2ir0DKY{=JS`5lR;bMJq@iNFF!=Z7;0OLRh=d;K3w(P zwyb&+VuojfttKdCC%$%3mM&9UkDdmtIQ_{Ho9O?iG3fb6B=hR6G&9ylVSiOTas>08 z@!%*2AEoMFD$ig3$|_Ovd-FHQ^PHs<`kR)k~wk zR02MUsmL4K@{Pmc9&%1KFWR_y3zvX8!Cx(j1EQY>IJCATp2YR z6a0Fa)_jZd>qBRV*^{hsb4wmpB(LU^Lwr%h+<_RJijVNw`|f6+hd-gNVb@moy$RjB zQEQP3H{?0|{*W>kdzKNz8W_X+yLyDTpZ5o#MD7vmg9ziSKI&pk^`yG3Cyc#Is53tM zj5k&;`jo3n-~9oDx}DBzmxKR)+#QJH-vWb;4~o?i0>wwtD62LQ6`-XsBy(y3;Q3C;sol;7{3P9PPQh@p|lo zCs-KrPO)#Q6IDV^PUUE7=!Y;T9f#aQCaeCN>M@jsq3WC#Iyg7|{&W}t^Q>n0i|jgWc3amib&Wsu@&AUwZTR{;n+@mdInlrOwZOB; z;lGCUUbMDw68M*Fn$QRRmvxw|!NcgT#u|q|S!0y@#EjMrlf$3~d-q*^Xv-3d50p!LBw8-s{<9;8m*icpyErfBx^s=dZ<}=5oS8wfqWfTdJ`q%Fn)Qqg{W_ zscyZ4Jl3p>X1#RPQBYi{*4fOW4wJUo_~$=;a}nhiI8Q_ZjW^e6-s9OFMT4Gh_0zry z(V5GuXxu@r{VlGRvFhBaep0dgBgCf8CO=j6-Sqj`*g)$3QLl=+Dbkl!rzV9u-cyL( z5`Rb>*3YfQsaTwOtogS4`?U};8X&d}4}jL;38 zUqSqeMvaauPCL=X#U^pj1nfeJN4w~_`3$3{Ppseay_+X%1cX1|tk2zB!q7LxonvL|a)4y}@`D}*RgbhCga7@Q`!S#UZ7|51TRsf&{#zYxL{8U zmhd6pV%@sc7S@*>9_D)`Vg7DCv;yQ_C2`?JY*iyM4SjS*)Npcs2C+VUFPA@cOhKC6 zdchy;_KW^#m!EdL-Ei(%w&bygSh^j5g^Q<_G@-e^seihwt8uF#Mo9J)oz-@xLza79 z_UZnfjmTpL-hO><(?#5tF0;$2Cptin!S+B5X0^+~f4d&=YcVJtOEVtPmtx8^*YW6p zmk*8%zuiSApJ>6XX&6VXBdv3x`i3#G2{1>TMeeZVk@AOMzUOby6?nrAsC+yp+k%w2%wuZDYE74SpNwR64CY-3X{7VdaGSK0V>(`U(o&oMuYrc$a{2=5X z`1|W6XWQO-%@%Ry12EbT4i?}&ctsq5h4E}@m`ZSZ`(dsy?uC!gfjotND~b=OtD zT6LsV@3fFOHr0*R+IH8Rb^^z%j!lbgYTRktsXg|8i`f>RcY2oYL%ZwBD=eP1gr|@j zSIAmyss*juw8zGUxw`#Yr$Y4^KYsl=?xUDcQMv@g4?0|{e2Y$wkTZ)+_iP)AH^Ht# zziNdg&XK>t^E>>2!8$`NufmVw zt)1Lt+lc}7{E7Q)do3CIjr7l_bE=DaPH-k0mU>phR=s!7I{=??j&AxN>|oP>C)L=z4s3GHQ8tHzi#=7lN}FI-N;m} zt3A@+;qUgd&v3`=#kaDnejB6cU3WVLA7)H-;mxKSa zF!}2-s23~Z5YV7%at^dd6xl#5vg(KFcg0r;r~kP9FE)w!S~Na!)wO=&DPfzK3(b%08XD%Z{I0Vxw3?Z3Jtly}jspZo++aTbk;n>~7)C`i^kC z@5bxhnziwRds`yc&81FG7WbSreJlqE(~@eE;6Lb-!kB1VPoV!~XY^$pHp@SbKykK4 zbW!=q6~m*vCtXR$H4!K91nZ7R_rX61pIAm+)cemq$;F;cqt=AhOG?EL5=jn3C~JHE z=iqRLlc#3);f1k>{Ivs)vYtDy3ty@RBM)L zZ4|A0pxWS7lZM!I^wf;-0e0Ov$^pQR&w88}opG#%4Ig0r&{;oxZ3$4qeh5tocs|-~ zq!y=WRrRFqzVdQcnB(ITFz;W}-G`afO5P{1_XeP(>aks{KJaJ)V)RWO#o?6pDdG%WN zESviLq11MYqYlRLWl50tMmw%5*R2m7=GV`@T&_49?kS%g*KcMk64SlC93}kP-+X10 zkekv+i&>vg7*zfKE!4dhUh0ThQN2&uRAgWAHP8Cu$vk1(!-%$^2A}2r94NPoxM@(l zmo;*QspoFL9yv(f7XFS>)^AkJd&S{op#!Tv{%GQNu9f|hW3>*pHEK@kU7HU-`>!2? z|NV07x7HPY3k*8BZ~z%KxqJulX3uu-lP6xmUm-=fX|Xq-dCbNWuc@^T)2X|zwda*@ zk&RzZb)U2zN;01(lXG!M%6L0GC&twi3+mO0HQN_Lx(;<b3<4LY(0LeSw}VZ! z@}SU5Rd33(snppGryuRsJ)KFdi8969AcM2vGqJ2iq4jbvJ>xhA#UGz>zNNKuSm6NJzAsI^j31S?K1iCw04*3?qy)JiAG0FBn~Z){5a+Oe!ApYu1AdN4t#iRwiVT`XrNxO=7y>d zZ}>NkE6c<0PF)-9F$v&YaRCqCbSdXFI2(v;EFP}_4($C`P1kg}z|1v$$JDvlJUu`1 zZ2KDOzExT*F*jPvGYwf-9H6*sVnD%TDDwA;GnxP4n^%7oH|oa2`5O873;)_N*p5LT z25ZTq@#ab3k=obFY4yMK*8N9PA%Pv2dgBzKcN_W4_jSxbubi?RD?jipp< zK#D)D2qsQoT%b)N|Kf}}r3h%*mRblsRlo6PV87C}e$8Jy2HP>{!(c0RLe;ESO^IeF z^CTawhIHAxl=g_@t}5kNzQJgg~(YdTGmccrkT1Qc9wnt(k zdF|N;IUbvc)?IQ;p>0E#MAtyh#aJrN(xv@spX!qF=jo;TypLM*i!GS`rr__EoJ~Of z9XUCOwFv!e3i3J``^&6^DVTR>({&aoSpRd7wrFsGS{!9OKuInRP?>g$2H}<-w z_O;t&{%7O#H<=GQC$QeQ2v+kOj|Sdfw$$>|lI@e_Z+S5@BJ8#WO!kn_rbG8q|9QtZ zpIQp*TE>xgn87->^5LugX&Gy=RkGG#339QDwL%Z2j%@~Xp2+u1*7jC@(z3_yM4S;{ zf*+illedbU1>M)p zJ8GbB8X-jnGy)KP_OQc;U+|}M+cEe*8)N^K4d>TlQ2w-fWS?lE5x=rW#9*+gjyf^L z7SM}2>T%PZk6wO+mKyAUkg@1nrc~8hGS&*Z{-QH2d;l@s;4mFuz2aMnh+(TF{`#26 zA#Tm)nWL#wL+qJqwiU9DW;!xcb@Q*k2s=4ecHbci%cy%l=J^%4vgY6g;Jv9-t zvfJf%gDGqw`>MBEQp6Y=H&Fht0e0nrGi;yMED;V_6Gn1S;>A<%@OfifDNdMbpdeK{xhp7Eady#M#v&!c>X&_mfOJRcK2Z%;qs z@pz;|AK?_#QS2%)kBo-#Dky>dEI8;;<>S_0zxVD&$&CboU3~3vBgXHx#;i z`WKJ)I7r1nsb=jGVk7gY5ucAOViCHd?1VV0edRg7zWOEIk7JK-v=ttOAHjNGKQRm* z+V~TV++R8vT?!d)HcG$lv=o_b@_&t@f(t5H7T#$d4gl0hevRce9K0+UKiKmN&xY2@URW}Epbh1F z&z0-)8vWM#LEow?rL(0!>X-5$y3ZXLrGD`ITn$ zCx;X9={eZT7K}@vW*PQ5Y9utg_f{mv5WOin3h|{X6D$3U&v{{(SaTu!%}0N0-&iou zQl#%EKkyQCq^eU>hD=yaPOyc@glWVhPA50UveUoGIm8N~?5V6)k2Jw|*g0SM95!;* z_ad(}yy8OWq38W3hGQ6hZ*L$kHbwl-b$*lco6vJk_gtjHB01Y?UVG6_!Nwq8n@Px& zM~&|vK@I6Z!V%v_Y`9B*Id5b@2?AKY(fk+uMgT$+YcPZFnDO=??CXP z!roMU%O=@*_gK8mgr~;u=-k?44)+ zjty|2$027Ap;k&x#cs zE&^4Ew>+u3P<(XET1X58wgqTjX;Kfz;L+5zI2wKAr-=tve4yy$o!3Bj zxVI*?{5pfly~9pEcA<@hpOvh(7+ZQi*E)tg-}2|o1cOC$$Jti=T-2xSP7k#jy<4-0WZ7*8T0!#v{QTPJrVN|$whk1gaJ$s^vuZlV65a^;7*7&z=GIW>a67zPh|+`@md z-+k1-9|)a{^fBA82LyZ;GmRV+TVHy@ZF1?%(IUmi3<3khLgeFzJ(Sq-J8!y{^lMNC z@FqVFwR#m`m;OWZ5_#~m1@p*rq&j)XapWHg>*RT@*hoE5)ilk=KP(r2lv(J0Z2LA= zfjT6~diuk4pl1*LYK{A=rIO#b7`j)8-EqMP@Jt;H)d8Nw`7^0mRP)Ny91l-QZk(p~ z-n9FO@firVW)39g0h*~8D9M!41LY2EYkIbs@)_8sh( z9!K92qv&f(gygvoLG%~gd0##;IvAsaVcfSkF4^Rq4kG8>aoq}=ApQ~kWf8fy7m#DH zh}ye3 z+3DE2NA9NsT2X4TDgN1Q56V}ZL5!ofRx$%yn0NnSK99HN7snyMGtKp?k^owZbQv4@mtlZ zf9|xW(at&Pb2bI~l8^nmm>j=LMt7kOD3~PgZYFtN7R;UQlaP`TK8KV8Q@T+xr5j#+ z9@}?s8;^`tM18dXguzcD+m)b$)$vE=&gK$Tw!U&5zF?BTxF~rl)?RYH&80?P8T@E5 zzTqXxH#`y_Yx3Dlfw#?~#>8K4`ia@wFWB3UJzyiaRt9;vGq|?&y7{7???<~MS zpg6I!%}?%bMexK4=t=+eS7H*0sb52GLt$_-Ieyo!{0T85HI6}zPq^lU7}VqLFAifE zJhbt5AoQZbpyro+KvV}X#NajOoo33Pl#d^_a_uf2B|A3r8vZRGoy<7$=XxAG6Vcak zrsxj0P3*GY-uyEgs`y>UOO1w*;;nPp>!T0eBLZ@vB;{UEMs2f1|dgY*2O zxILw6{p$He{`DL?z6Gs&w%c!o?qH z_*3kj3wNS}^)>e5!@u(!f?0z)!iRRU1>~A98H_K9=pgf2x&5}h{E`y_spqR|g&OiBkf9==0rm>T9}n+@?S$MJ=yYb{=b6s$@&(UJCN=|I?rii)xjaJ=w67FB zY?;$_d~Jv=PKBC~DKFZ%mif9}sCUbHm^Wygup!5A(N z1RYc^6?sAiG!QVkJ#DLPdf_P>4bHNl9p(6S7BgQL3}eg{9|&f~;LrTZpZ*XqW1O~b zgLIPYfaQCsk0<|?OzN*F#$Fgy9ECUVr*%Vp&!=aqIX&CCtXcKu^IS(d zSM)1e-m-^pT4`U-nQJA3h{-_qQx2(YVlPUm#WsIr7w`yOBo<1(Z1TU(#~*wibZ#E8 z{6+Yus$O&nv`_hN^eiPq6<18YRPZ?-d*x4m^aE}sTjCD8>AZ7o$|u@+jrhB7y3y+c zhP-+-FB-#O41XbA-CsKB7?hu-Y+b^TFi8Bw{i}cGbWnLzbdP-bQc{;!Iu*sVPbMGs z%lH2dVgUW*luG%AX@~s2Rj^`*xi_I?Y4w_I?(*IgRR{qFqPDr8etSqgad))*A$ z5R(UESUeyY^!j*UQ29PJsbDV8`ts+U)+z2im-^R*@P5iADh!s8Uui15-|G+F>v(nS zF;AOBOB7Q}{?6iwNtOZK%7JD!V~}&zU&nNW4hj!Tp9e$;U?^FNyf6YS~ zF$^C17z%mHecc`i47!iAa0n~u4lnSd_usb0{k78Zi!LT-uXHi0xl)3TG>^PWv*7W5 z_?e|l$cX*G=?FBC{4Nw#w*^y1+EjESibL2N29+OEIiE_vpqlh1x^_0rW9GqPHcj{| zWE*`QVeb7H?BKY|1ABRn!M5BVA8&Z*a_oVUBlD3R=k&rpkA8L0tO-{4_Dei8_={lh zI_25^02tI$9|)N+Mh6dl3?E1g?oggl;m}(XwO&5&`pA2|CO(4_94yb_7YHfdL&< zuKP)?FetsT4@wjr44-y?Wx^N+V;F4aMR9WRTn|jQAa|PY*n-&;JXf#k{Z)+V={bDo z68A2da8AFD_Rx(#u^rpi2Xoo;GS%A8E;z$=EBVB_7ooq=+>gefuoR6!$#LQXLTp82 z)v*=9pU&|XIX*lmz@TEA0$#K=29^6%`G*V12cAQo#H@ID>;ZkO{;k*Ox422=M+-2x z@`3<^YeSG;T@_JsQNuQN-6I6RMy zk1XT9ob!u5%G)ceM2Nwv&6|9wS3VZS0q#`(Bm74H`RM(Yf=o9-HaBFgtby1oRHK^Q zO|yxiI3Z`YHEnyBE5e!8Z?<=zf0Q_Sd_R>Z5V=b+7mh*t8Dgs$gZPko%>=NM&$UIz z#9zApL^>3m!{2&F;WV$g1z2pRjS)KO$8eoy3_=4%2jyE(fsG;`nKO_0T;=~h?<@F+ zqkGbG24k^z3^x0Q3WE}z*~Bmy!(fQT{l%bc6Pj2-K0~={A=7D+f!m#4!w);fjh9)) z)WMd9jWC1xEDUD!Z%57d_BNi_3SrM0l?$fUzH!1r8zS2vc6`Mn$Tqhp3_2eg!JvFl zh3^o9<=`)D!lU#-!l*E)V*}i_;81d+_*JK^94DPjC=V8*lacOJIlv2tbjSY{KLG3w z8=jR7k}k96Xf0}t(7|hHXk>^+NYoV9m)8mu2 z**7ZYQs0Fbh(W|Ep!3f{hD$@gF_t){zddjVwXol_=N`G&MxyVSIkcN);IC3Tf?9?6 zSN|sr%BGi#{l8!sc@Xi%mQRjq@2ZutFWshSTTTLW7z}11LkfraU|3B)0Pn*f$LB)> zg~6kU)%Co?=$B^pJkpNONDuH=4ejHBrS~LaN`SNvgTas%`j~0l_Ti&*V?Nu5HpcfK zgAfA`cnCI{6KaZ~4Qkjz7i-?K#c5+~HoheV!|@ws{x6+05ZfR6QFzX8ov?s2s_eMJ zSvCg#a}KyDQ7%#P#uSK-Me(89kLE>nt=tfU3Gmfmunc-99I6R}!jaQK(KyjT(M`u7 zGGK%TMq^MkRhSJiDBm8BLk5ErJGHU9h==fCE73vdz5D7#FzE6i^#>;syL9KO>o`EN zV&p(=7#xj{yxY};!_Ynvj@`f8a(Lt;0U@|nAdv?9!2+losRiG~a{PY0F?wJy7D#OzdQb#F^F#g z_?6C8{%nO{a6ER+x>sM~@yL^g9=JK5qhqkquDjqIOF5#QP43Xv?)uqEe}3s}YE@rJ zv5`QdnuK!7c2mt*Z6eWcE!#TmIm$zz)_|NTeQAiTAb&p*S@`j7Cr(qmt#TP_s}>&D zGVU=9?uqC7xPJFhVK9(^G&|7k)Nis?E6%rMDSO6Z4fCddy_qB<_<9hXvDN&U-1e_E1=T>+o!On6b3=RyoZ z3qza2e+z@k-&;&xV67X;hg?_2{J+{nZVt{20->_qKo`(LtK( zP;Hlwtp_k85jN7Ol`4PJ-I~xPtP_{${(PRtJZhjl=s8#c)SDPDdT3(tfMAgKA1>e8 z4KWz-qrxDq5e;;4P$;dV_u5Bk-~ZBy zcHy^Av1cBBfHCBL$}=pyDmFy}E+2XJ)sq+o4^8}u<{U5#G7rK}GzNvkTIK1~_C08! z(}E`3`22JBtz(b1slB?}OyU`qQqN32Y4VA#AO~9kv`|fYPGQiS>sF#L7}^#-Vhqkl zPbA%uYHBOy>Q_Ixg2&O?0!{PTFU}I51n8lB)h4v>WTV@5w%e}1*=4`Yb?^cF>cur& zmaDf-Z#-)g;lty>bQ1ciarj0|=|(J6AM&@6V_;&>E|%1#gAMJ7ziP%@$SnBtdvafJ z=Q&u#+XBUyZQ{_y-+{xR*5#Iu=3DgItiS7OsI}>}agmI+h_~X)hMl(d(n~$hO9npN zi^v_Hry7IgJ@c4Z<$M8$^Y?;5u&M7HnKkmD-`Kw4QjA0uRLM1iPKLR+>YEj&{ur&vWU}4?MKb*KIBRz zNB1=LRjVUqF!^+5OtG4G@T(0m=tbjpT0O}ieXNB;F7G(^8)p1+CC`Ww6&c3VgCM4deOzi7iN=BKdlcn?T7TXjIl`(JSc~bbTQF%aCZ!f zM(NjWTkr#df314zFm&cH+dlWsznhN-0)v6v7vM0^p|{}AamY^*bwn_E zG=YS{$i&(5w?{06IE37R)E?|B+g=yf(c})ZS5bSUQ~6> z<|jZ4kq6TT^|a{;gB(vbHpFnnO)H}MV1q)tb6?1i}EX$ zO^he@iEDzxIm87I#O8SSE!O}l)dYs7)?vqR>-_+P=oU7-W)qNs#`nf&8$Z&VVaSHi!F=q7S|>sry8oGcM!{WZ zqxg5c_6PaxKhZ(?i%K3`FnW-U0!Njvyg+@YpjJk6T?^OE?69BVCzIQknu{IV+rvM* z#@-|6|Fn_hQzh?3R=>`+XygE!O8n$BXy0^lDUN~%zkc~S;0(D^{xsXs+eC2JM6JW^ z+ePUVozjBAfDQ(Nr1Hgn*q+4N_+fBFw{y;jMLg1Y!Ev7 zBz)OQ#t$TqbziSNANDikMTJRy_us;x*Q)`8nQ`cdlH-8{d}ySmOfA0Y_3)&6(uPeN zZRPjRAa`4DOGmD|?)0zPr}C%UFrH^D^!@k=36_KIDTTPn6mm@s2hVr^^a`Gx+J@U? zw+SfP)=le3l}J1nxRbmo8Bk4k3H{lWCn{*b){hKW{9vp#rfR`=F}>)=8>jori-s5s z=Rq_EgZUt4GrEQIBiypSH;Sf6zgT0dE<4*2n6snFyEX?KMKLvEqA}<={4Znhs8Qs@ zfftoO>rFrSHje{;h@D_ZJ@rfJbu~5@tvQzxz`(<-nWgFB@;iv zIPS)eh8PqrJOE?-pLkK(=w%<2jlSXe$D1+O1a9;sLdn+3Dy!bO&Q7YBZwv6jJ6iSF z@I5G>*ppnT=t0T#zc`WlF{~}Bg?R7vD|u9SPhuzpV8uQw1|x{W;DUU1HEFz}*ROCt z#8~iqIGQmGe*E#ar}f}KU@+j1T96g4*SpW3=y?;)nqb>RKGEQ8@F;x*INb2kU+wt( znU)CcnMZC!=|B}@z;8a;0K7T*mRkR{q@0u;a?x-L4U0FM8X8&u}zj7(9G27+@}#N5MSsiP`F(==rnz zeiQj1d=lzw)g+WpBr;NM^#;4?x=U>sIqavP(8 zU^%(e)E0o#GW4a&ORwC#^J$Jhd~G}~2~32sP@c0Q;sYM$vk=ym2V6A|Glr0#lzK0@ zNrP+{yyJs6Uk~=^n{tX{WU1Y#^@4i6FFygji?^A`d<&?tJ-;8h@rjizMX#h>#xwD2 zojj0QquBV@TrFLxaK^(5M)h!#dhQSXX*nr|!9x>!A${0iIvC`2YMBrFG?fJ0kWAJ# zSmk?~+tT&yuy;4TVb4GLC!0z>!6IsHW)Q#kIckzECU&q?e$-%4*sF*%VKBs@FsK&# zd`IUkR1RM?j}sKH>oLLjtbiBg1kR%7;5_8Exr51L*o9h!Bjc_1^_Rg5Gafn6{l0t(JmMXBzqMl{d8rTYe7qlqFzrCN}qZ#4P6}^|y)GHHvR%xX#a8>9tb)pdwoLwah`}PL zxZUqgDJ|CMgD8ESgW>HsO_QSf(cEO3q+H7ox6~p^` zJ*H{!qf_wf&OlF^i$9H;cvH2|W)b2s8iyesg+0fgFt{5I1A3}+r7JBPNo~S->dxa+ zHW@ss-h}ERPDI9Az#6c4LVqhDr&}g6VJY?p@yL^qTgxU4vu!W_O;2cBHz=onU}vvW zo(es#9zKS_kG=ga)SY}(+m8bVH&@kqs=(;^DEcZ4A{qJ|79IJ{(d9Os+M(0I!9VV} z$v#&+*Jd!^=TcijI8@7|hNo)2WP_jPmh4nsUPZzHi9I!8XM z3*a-AdrEcORL`O)QnPRg_?rP;UNWh_*Qi%54e`j?#9`fd&Ufg0t<}Hx4%^V@n*37DUqX(l5_0v=C;qlVw3OW4((@=E zqcAAiE8E6+e6b(IXFI6vCiyIQCOt`rL3a216T@H(g9i$Oq6_|U9Lf)pJhmkq+8>~v#nU~NLymTjr#F6Mu$fXGV%7nhn1&gXdUxtrp(XdXofZCsB#Phqo z9}Eh6rRYG*$=SbXNIRJ`^SlD(9!Y@Cd9KTJ_LG1CuO0bf|F!(|Ev%~3_ zj{`3%{I$lQbcc$SlTUasYa8v`$1SnRU{E=bUV8Ai%x&4*u$NP-!hOh`?_=7Cl4qN*{> zy3!hh`rCidkNfe7(ZLuUJP>qH`13ib=@_Ad+6iJZLJaPJ4lX6HStqYO_K%0apzL*y zJLzq>$}Z6y$zS?gEu=hb<>$HSZQJ_tGxm>%@3uQvUTPPe{D1Z}>>aa54YaAy#p%O( zSqi>sqrqk}`d496Sj>P{=HTn;v5dqLs+N5jG*P^$YFY?`%EKrOD(7k5!0tBwh&EvG zTDk@28Nr}QVeoLGd3$=+j|&~#4TJKfWPS?YYEB375eqQb*+xLio`3Ln z90IPG)jJx%qV$Z-xh2?d;5Rj$ue?j{h!bLyZ4>mf9(l4xHgjT#E7xIyM1NUJ{?8`K znKkzGJ-1pq{;9LDL(HRP6L%{aQg(dlO9Ou#`QlKg5WS4(aF`Rb?!M!wU*w)VjFH_&ySPPc50LH=&Wp!WCi6T{%4 zjX%-Fj}-pl>k@9{Tv%6L0xpzx#M#FfuVi3_1=YAQC1b z7~Gu~6$WK(6Q0n_)Z$N5AMDHjq}c~0YR>N@mubr<_@TP4#;Ur&|hLbboJhGnEjZR7~t(aa=E(O3jyMI>@cG zKB%9~ja~mE#*4=MWTfvKgx?2i`o7eo-(Q`K=3#T?Ak9bNFT%SC39?ZHm}s!mj$dL^ zdUUdp*c@JX==U58Ez|GOb2}Qx;l8dH?(10nNiK>8;&2-QtHKv6tMLVB(1H5s&eHAF z*d5nhVw1_KF%$bmdR&m(>6lUdt%6vHd~AT_w#}vf1BNdd^3aaU+qGDw@^J@m2fOQP>hX zwqVe6J!lq3Kp0|C=c@%500;abg`}<>!Jv>YjgJngu4SK{CUWol0o$=TV*h{S?wf5K zzGpMxF&9l8Z0Y#K?R?xYp&F#?H zZom9;t|y<@z~1Ti=N7t)x^p0KsB6VA7{j1&w6C87ioviGnwV-K7PSq(i^8Ddqm-M_ zd02kmUM1{taP4MWbIrw;O8twm#KA9|JjDI8i?9_+2FxR7Vga$eg{%iTy}R0k&K>Q> z^UmddJM6y8RzL$kVbj|lVfU@R#j2~eI0ogX7WP4132hYG-=B}pk6|!|!Gn!K-CsPb z=404=S%~~my|ote1lZ#5o#xnBZN{1iw_2WZ#?l=`}!vrQ11adBsP$|5k2rx z#V>7iZ_9!g%^*j`LhOlix{^Z!IyixRH`o2(OkEfevcXoJd8QTi8DL|;;eBgv=*_QZJc~qJkO1H|up$>@HTNuH*q#L1_^lNR7#I;USp%N{Yn zYYG4QniYttvMUmCtoV3vc;kf^*l6*h-Fn!at8ca{^2Y=g6gncn(6njpBm4XFiDB^2 z#-Hfr{{jZZhl&=4^ICLJb2G%>jvD#N=u6=M9mzZYvWM2*Vkeg7Io+ECu4a(CQ1-vc z=sG>GJ$07KiEmQNA-ADy@2Z8JMa_v}_=5ia=hV5b4su~PQ(pXWZoT|6$KP;p_}kmp zfX)~l{4jjk;dt!-0tN%UPK!JkV$X3WIvBy+D*OB(STdwDt__~3xo%q&l5A&lE zBXQ+a=es zBirV!_U?->+ub+aY{%y1S~C9Lv%ue!ZuosBQe%zWG^%;HU`(9NMem}x!lh&STE1)$ z#1bx)KMeR=IJ~dTA;;+qY9{@5)ium|Y$Xx@fWWUD+oJoq?XasZIM2pXkA8HABW&%e z>znDI+c^aoH9jHDj{F&Xxex#9{1^sf7(A$YQPDZ+IpvS0-0`m8G`s(fJMDyuMdSzW zWdrb8nK5**P3hUq>vPWTPVSkwu9l4tS}s0lGm-U*hjsD%6!TPjjhswn_@b5J3!~b= z8RT$M{_IyC{4F;l-`l43Y@2LrO_kdn6l2vIgJaqU7?e)t-`NM7`DU)TFP|6&4{iMY zPsoE3@f>@ifxGOjmtL}yPCU^D;8!|!$WZJ3i8j^;zEJwkGmlwp5C7ycd-(Dn*@a6> zERURp$B!LE&b2O{Cq}+Pi$?Xe^5N9JCMTNe&!^*imNh)iHvIh&2#);0DPoT4QiLbZ{IP`~`GSSk-a9P6;qHZ9@G~41sgw0S;t2cB7r$V4{R}K@ATCMqN;`;4+P>BPc-gs@MLxo8=w1bRvdgFmFJJ5& zY9A_RS}OV(=}6~|7-;|e^ZlHQPL=$=yO8gMtH35Ho>ID?7CLwhyyyflI35h%q1YvU zb3Rl;s!Spg3`&{|aVSjg>qqCtc+o=}$Nv);6#uCSPA$O4|M*8+_0yI1#9tqUWC?Sc z=};SCNO?+kk|*(vXYo5DKN`7s%hAP@C-fkP4EeID3z$!C`l95)ZhI)2Hpbq2r`ui~`97-;XVert# zP>c?eE3is2w<0pk^QeG{`Wn@87jD1@HEk6SXw`3%f1W(N30-W_xPCSdyF=k1@*`3Y zN%)%y|2Ycz@Vsw)-gazx*U$aet1q$*>Tp(5hhCVHzqdX+nuH?VJHX&|U@!#?PQ^xl zR|JFJuU2$WTy01TV;GEK@LKm(ZU#Y|&doy~{*R5#I7#mBTm^5<46pVuZ#1#q-f z^J6$J@?3gEVNgv}I)=f+8-vOtU8Ed;L%LWR^dJ%YbN%|)nHkiUWo|dY=ecP+0uRlX z5F3GBUUM+=33os2)+Z+?={(KTsJR+^8PGDtE=?kKX*jV-4t&pG5ioZ5vL+_59=o~tf}RKlw&7h0tL ztzw+CPI!zHS9AP@d3kkfY#_QTe)hv3+6*u#pX~>(#f~33%;{JS9$TFe@}b)I zN7&ab*VB_nIPM6Zb+h1hx~1p3*H?<4npVmCRL*D*z|)HsDfqD4fP4hE z(_{*pZtsnGqj^jW{Qngdf}6gU*tU&5d(Yi;FLKasd7N~?NZSdPgu`tc?3?6dn>C~# zc`1nP!_Gdbb6ZO$|6xh;aC`B-`>gu4e+6@t$MK0=14YU@D!HbI zXwfGv3(>89`!25&9AJHi{o(doESa@7gBZx-c;Y`;hxd0L#m?V%S}qJ`LmSe_$5%Ke z-g9!whq-p$8_W?+j$o>3oz>bM@=)4W6J-3|YM$+D(_Get*oKgnsMUtE9gQm`p!3PLL6&MmyT|ypU|_boxHHzp8DnO z{0^_VX$$GtxJP(Tu;>15AqKdjU$shYY?1s8`6LyOmmoFo?cbxmH-Fx*lU@QQHt^t>8s=%bJo=@W^eC*Hog?;mJ z`L34xS6kK2TH6ZVsI191J3uBh2O3xd#;P01M{(D0 zZ0#@B*rtu-E#$Yx8m%iLK*)LIMU-5t{%?V1Zqs=>KhpGf6-Vs7HF{l)H@B#+Qlp)9 z(id%fk1ig2xcWyIutdd}d5#yZ-=HSSqWq!YOSJC2e?Dt* z#LLdWXJs_LV_*C9LcSL@sdt>BL2`N`o4M$V=Js}SUC4%@e22QW^qA5!@e?1}H1v$% zp8C2q=xwC`6di5dh_vS}duw%8)g&88J>@|+*wmrOoIN{R3c8~&*3e=tU( z*Q#R^WYGwEsxjEt@zdD*JJFgb9hI7%QBC-hOx&O~Oyj6lX~(2ZL>EPE4D6#p{o#X4 z2SR#qIB)Z*Z}O>>!IniW6XkcG-mk5_^Z4(XHj2&Bd*eMaOLlMiE^MuT`!IiN4lx&9 zzrw!el;117HfuNevA=U{g{4sQb^TNXCJk9o_Vaftz&-!-@W%tq&@wZy|<5TGv`%3 z`M6a-@tAFW@-f@=)L(7GlaJblryj9QPd;LmPyETwq!xS%G_Y()Z|WcQq2Ab$HdDFi z!Q=I3oNSx^&i$W!(zZVJv~7F(8E;#jd|zdE7QX`!|1%^-ui8*5Mzje(1S2(x<()r*-VZcGjmV@K0lX7|`90 z8q&v(OB`%R4JIa-`F_)B-?T?>y}_zpdeXL22jiV59zhp-m#zErgVy+ur%hw9uj98N z>b-2>IrJ=>p9-4x^{(E0>d*GK-~YnS`Nj!0f^nO|`z@rNjp|8Nu$8aW!JdbQ^ZkXv zEaG;`6Uoz%*vU$$`;`&j(Pop!VSMj4HUgiKMBZCMq-lQyGGh{L6fK!Ho|u9Ov`PE0 zox&WQ)}f8J$<%02t(39UV^Nzxn+*0+iK{(&_(1XqcCmTXds#H3m(9nQdN$wZ59(p# zkq=dqa5C``la5epZxhqmPAWFvaOAZ?Cbk}JaaO+QAgqvG(G-E z%cYi7CN#PHr2VP)jt^xrHN#SdQVWHe zMPZu`J(@|I1r}0i*#mnMhu51N?;n1va|#9oP1i|h{?1by+>3mty{K>9i`=>Rb266~ zMw<5ZT> z26ZRrZ+FL?`YQaDs-N^v$LU^v@5p__aoeB!>zaBOdNeYNqCHWnT>Y`VT^-oEzV>81L?wZnc)=l))^ zn?9Et!~zw#Vgan>oe{ESm< z*%{xmi)q@b>AOoKZN=%|vi)hg&ayL4u?xROF^PAeG-}{EG_})q0E@d0tmY;Q!g>4!8(d}aW&AGb&zV=_|sxP|E^5_=n z<1+fEXS+DkE_oC}8JN;Cyb*im6E!Zw+U+?O|(@(YwPWzfI z%$a8K@U3&OMIAL^kfjm3RZ8997zPhM2D6dT(^(UhKQk46Wx?b`d+JW*#te0$(p9QS z|EL!J9d5(#_hqYVwCMe05hn|Uw|{RP56_YQRQ;6habKFwjefQd`wU_KLp^TvHtb_K zPT}^$-s1xv@Aj9#&J*PI(0Sa`bKeBx^xEV1*=%YoPJ&h+J#L`o_iGcw;K#r|xRl(P zCGlOs;E^_qI$w8Qc~P^ze%ChaTiAdD`+@ZQYT@6JZ8J9Y&iAFss@H&BF0jE>v!_-| zlg%#3m?m37%l#A?OBE%oBeJk7TZFt^-rw+O-Q)Ky#|kH0d!PEPXVtm7hVG+?`e;jE z(0|z*gGgRkEwwLOrlLiH7Fsm-wGWCE3Em4^*<$3Iqvm!Q{C&1W>J&H1j#*>(-f+3i zCRQXLAAR}j$NXdtE*;ePXQ2Pg9nhItv)ybAdPu93T^=j>I^tHz1v(^{G14F5K06*uNggU+FV?+kqtM4@lg}zu z_EzS=;cOc?=+DmhAC*i_74q9=4eaTDgr3a{G z)jQwk#)-aWv*ls|o!G@ab#a>FCUm1(k(^Ej^cR@d@=>frt9 zb9k<eT7r#n$fMnzjjVSFZc6!?3Xw5LKR0R`Gxl;UozzjWUlS> z`4;T^clti^o6p7Y@7CLhKbl`_w|yvq{5rg`FF$eQ8a2O{uHy+)*lGdLBvY|6)m)0Y zj{Bl{-}F7dH}^U0`$xH@-|`VtEjIeUQ_lc()-weCV5>fd3zvqKLnW#O>k7}+db~d9 z-#n{g8-p5dx=!oHeMJYW^gcmrW0n2=&NVg~+h;nwk8*g#=-@%dAhwBl{jqfqKfQZ!EmiA?wW#8(;5jzczQ;4DUlFh=|3x)_*D#i%={$}%r=bCUy*{u5 zR3Hs_$6!n~wtE;?-J7xU_Y(ST>w3-C%d)%?fHa`8Z%^gauN$Pmd#x|ITJ@}yW zVjlyY$iW>0Y_(&N1>@0+(y~V!VKeYu%c9QE`6nG`w_JL*-FDT*cH5Q9Z0!}x?U%GW zR{YrRq}@&X_2tWL^%cu()m4{xyOHgUS6yT`N43@LufFO+yZLIh3+%>gc5gRaeZH-{ z{2W_(^^a`j%1i8uD=)SyuUckTUUrH7_}sH?CGiKhU$MfjJLfFBrmN1kTduh%Xjfmn$F288_g0_wu)Sq3=Y`+z?Y!_AS1rH5Ze|RwTXB&syWmW_ zn*LpW+4*+ePnO$N%g(i1e{!ka#<<=7~_cD~0fDgsU zZf?((jebmzc3xj$7`|0%!|^K{fge~BZM6Ks5V-@Ry@Mv$`BfpIF1Xcd{|~q^W=E+gxnr>bqJ-XJ`=h zU?#W0&w;cmuab%pQu+_b%(KOcbr_(#p zyBS7{rwzgHZwO-<56>xIwjo?^4)TV4+h*g7u>gOyV<(W?iubNLa4_fK;eK!TRfF!8 zfxq%Z@He!*P2}AbkBuXK;z*l@|Kqd))K|w3Y+76&Z`1qtp*D0M^xJ*#x9DR9as8}> z922E`YW@3JDXk=`6>(g2n?ESd^7TZkr;CF_fXWEe+Y-#c+d}o+Hd{^AJmlf}2tNVN3_OjjEdExi}?));YxiD^k<#nbW zTDPuN&RCT8?`2El2UvOE?)=uv7WC<6i~9AlQm~rSsiWof>_JY`M116v$*Y)XCB6Dt zd9OZJ+PjaH(28k=efn5FEteX<1^xT`7#FcE(pa-qpLB2ioyt4VJJI`@N}C+j^xmfQ zqh1s~h3P|k+TuyWtZXEGqNZCa*!=92K{5N_LFR?$vj!eBvWw-jHm0MeUOc)NHNLu1 zlL7k1I~t82c04}6Ln2M|NiBhvNYh$Ajx}}yZBk^b{pQAb`aNu-4`bT2-K~iRCPN3t zv|}xgTyqTPrQ=_fL!E~u_(PtU9B=tu+xh%X?@mq_=CbIeS~5*^Xm4#2*HYj1w%yx# z;rDwx&%fu|Q^{{Lw@YWgzvy%Nk?pLoH@Ul^e-&}88-rOl==%(4@l3WU_;8EfEBANn z{*UE5J&*jzHMS$P-xeQi=wUKjjo&!NZ-SnQrg7DK&^yw5(e(zgKY*sK-rLBIZT+{D z9vv(*j$Ai=+S*Ygdf6iKJC+X)YHuCxwCG?y|9pJaDv-<7mL%Z|jjcYH{4#p~PyPb^ z=*G9q)?+7Bj@$L*4h);}2!?GV`|pvfWVfd8XtHm3BZggZ>|xu0-8gJ-bIdwyk{i~s zC67%d*Q#G{m4E-e-F@+QEe&7R0&1^hL6?u7JlgCX@-Mx&!8X12Iw}}44zA}s^-KNP z({@9o4}070?Y!{&y`2~Ne(MX*Si`F?k)(oWs3Kd%mUZ@{V=Al^zi`#G$RKCpt!JHV z_WIKt^SW(&^$Dwd`#EYBzGXZ0tgXg&C(qEd;a%HKYoIl~w?1f$-7fZh3^y>AY8qRA zCoS(s=ZDRIdzTo0>`jlazTSD?@)7;5kbH7E_^PS4Tg+GO;Oa#+{uM)y4Aw+)POJXO zj2><5!Y_Ral_)urq;vClQ0dwty7uNR-?>dpddQYWCN|W5@?uehc;GA2h@L)dZhJtd zuAFUwt%K90Q{S#@NEf)xUi#bJcIsyek!`Rck0T}k-R<;2M_4@a%)75Vs}r~j^&Zfi zy6&`D$rvgdqqY%yL1;I4-}c{~tKa^^`SK2EY?97beXqCLe?DU~@j+4UvNYRNp zIQ)&(Df2=` zNS@Bh^{?BxXMEX44{m1(tkd~Z`e7^SMBNAKKj8B}o?4w>JYk7#qwcM)qnRIEQ=Vdh zZ_R&mtGqMsG;FoayU1%p9${;$v|s)7QX7Ro=3MxRLh^&;5f42%uATLh?qon)JL~k% z+QyB~(DQB9xN{>T<(WHpj=)DqV@6hDQ~sHtk(-cbtBf>_XXqIl_z~&d?CBk`uIW8( zXMBCFWV`uYn+h*nI3mt6`gXLmp5#@FVep{pq?A`JgIK{VbY@xD=*K_@pSkbXyi)m7 zh%SZimiNiKZ)q)<^!!d7*F+uK?KFA1Xg%LjTV>VIwkqmA$Tw0~lErv?gXTo!Qp%U> z_UfJXm$hqc;q0k41leZ-`tz(2*h~`IS?uCWvPDS8^% zsO5(l_}7H@`lz?MADO&uqwp88Bj$`6?DYx@26nL$)fZJA`w=~D4z)!m@m%APy^E*D z+e0_4U=SGR$g0%HdZ$s+f7{3bqdZW`IJIfJa!m!6Mn)@Gzwq~|+X2m#uYwO|xD5wZ zTYcDi4jo29^*6ZgqrX^fiL3{C)U!#$PQM8KTkgQNR-AzEDEf&aY{cd0#`6caw-Vy) z4?2xF$U2jc`uX#ST}d0*$!6fMt(wp$f2x8h!F+Q6Ud>>6T?Jm#;rkb4H236ztlxL( z-LlpD-USAOeZF_ZMb8QLmCGgc-%?H`Vdx*P+BwIbK%6_V?j6A!d1p(;p!XxTtzZ!A zH2U)s#^F~!fST3tqI3K8v{h&Sz|Zwt$fpDxdegPl{!1T?%~tZo$lqKv@WETJBL=gJ zEhOj0@goOVS>F!mWXYwU(2bf-eLy3$PgmCYDyt_g?2pztSL%7*b#&%wj}`Z>gsr4Q?6$>E@UwfW+8_>T7 zVK3x;TKLI;_j6gS8CQDwoZ%P{7I^!#Cg`E(@~mQxxhx5`<;Ov-mRrv|4?EZq z*Z{lQ?5>^22|+DR z6n)-O=I(6lCDV^+YcDEKb^~)(G$Hh_bf4`1CI&@+G!nJ8?jMg^5;~-uKAo(TR!A;@ zrSaH3;rCXZ`UP7$ZKUU{$s|AA3F8v26kGlhY@j*VU&ruFWmCu4Yk#_*Yw=8qUE#V- zRbk#Z_zLkD&R6o2K3Zc$|Jl)6sQ0Cw=>3H6O4~}_OBHLQes6hMJMdS!%tq6fw1FM* z8^vFk941-lzJx*LyVQ50hadGEJlwCJH58u?d||$R{1R(;PkK6Vf)D6+d>dQ8(`f98 zKI(VJp#H(18j;0cvHnzEPvxF<{OL%o?eYWPUS(IG^)0tADi_5pYCjZ`uPJ9(f6Igp z$0MiogEsu|)DzL;V}n2wkux&R^HP+++hz1eMjQhFM1GbN(o*OEy`sO83Dp!g;dN>_ zQ~mhp8+uE4P|0$ayG}8Iafak1%N2!G->iGg(36Q}% z(QDArAr33?71!U@@US|5M29XCpswlC)|k#Rm&vj#o>;TkNWwu zsJ$~Qp`UI0*Gs%Oy>sD(_rvGych@!ZqI!pFdcXeOgI6BBet)r%ANan$5$On?Q@R;l zuR(RhIQzxN9ic=H?>uE&Su}_i^2=h)388p)c1k zCkI0pGZXvU4Dz$*4kylv`8^ih|GFpt$g#*rk=Oyrse!B-%tx&PA7yj>6If}ee3P6m z$av%8na9u+Y~c%%2ih?DebJd;rWYDpa^lx-uqXa>uN{}0j?EoC)6hXSgFG`u!?D?+ ztDMxMz1!JUfAq-*f8);|jJ)1S82cE=;(F#5oeTr7cR~{@;5cO4yl%3u@Ds_B{&Ajm zm%Z}WKUiTBJ~oVf$a_jQ6djaoC~SVzbMSD#zA(7BKr4YYe0PmZQu0r*1 zv-`ET+2oO$hHmznbH2eOLEq^X2hkSsUfZm0-D@@yx-pCR#?1J>HkWH;V568p{*80L zbPWCBxX@-9kwJIwWa~~J$iIc~I=f}X4{aEJ4NE5ux18Si{6ViX(2FL4%i7KVWId{~ zjkWLCd$riqd9J3-8|}t(&m$*e8^$5d=751R=w~VGOeT5SRGVy6w|4gJ&wbK1zKV=a z%#p7q)MZnC{$Q{p&ms9+P46Po#G-n*6kCZ1^>kD3ueyqJb(+RYH57SyzrN&jr+=b@ zM~&(2JgM*}-t=(C#|M3W*;qq6Yd*TIyhzi&n(XjF!xqc2sxOg86Caue{qeb8joc>w zMD}0gIDPawqcPZwKmFkEF>+8nUkHC}wr>SH($R?eaLv1Jxz>`9ImR+C=TKi{9{Pz) z>}K-CQN4pyawmShEZv^{{jHoM+-ZIVbHi(1xW1#ojxWizG2PpHjrer*{dw3a=Ay4j zJ6rk*c6YRZtlw)*mm8B&c6 zW80|rBkVKi4eUqbFY;)@U>L4g%b}aLDYlGL8=#PSf0Ci$SNwX6`zL27v9`6f5_}c2 z2Vs*K(arf#r-#k+r^TPd=a$c7l96w|;zu@NV0X{eJD&9_1Km>|cE$|!tJ%oPBha0Gp&;FAUVNG^Gfwh} zt76@RciD+vN<536OSpS?%a&#yRCNi}bB(Otr9ZnKSvzWa=fq=H{_9yAgg$8s`WfYS z&PnWs4W+Xck&je9#bMK0F8s-+C4HWnY|I~&Ui>c}r($p%Ex@&vh#TdqB)u)(etB4&lX}(@369t{1&|AkRCRvSQ+oJ zaud2c&)tO{Z{zFsle4}-u7o4-%jSNg``V&0{Vg3oVbwWIg+G&T@ws3AH28mwtA?11 z?n7{YIv4ayb#a+RdDD|^Jo-`P;@2EFe)0gDg+5{Fys30w^gzAjI?PMi!!*Ub=BA$= z%)xLT>bKzf+(Wlfi+rSG3|b)5O6F4wap(stUe?cPw67G;VqL?=J+iy^ZBlRY(_#Of zHf%8c((`F-!<&TLaJ;eTVPDkqt$*W1JN={+Ex9kXhT%;Wx00XOk60u8dB?`vwC>~y zW$dm!y6%>{0Qlbo~NE|4bQDn5bku=jjXgF%y0o?Ec$t zw6dAw+=qX9uQpaXsxLYR=)wSGzofqI^Itf6kUjpZTR5KiQ;VK7Vy}vxr@E})%O{BD zDsyYY8^onvXydqU=Fl!yJe-`U%=s*?Jp$d#QxDw3ae5Z|!o07oRu#2i-svgTGzY_Z z*m8XyD1-&S>(d&8^8Hc&UE&I&%^O|_NXK`0TPYV4t3+-L>Jm69*Tm*$~=nvUOID!QxUq=6n=QZ{9jz4_<+ z02%bq*U*;h$xg4lQq|Zowqh5Ietx~F=I7NQ=rpYnZj0Pz`7_5d#_cRUu_r!CUAzvE zaMw%+*%vJn?bAA_CQSY>(zg%#OyUhnp@pT;LCJc~BY?pin#M-Im$P2w;vZFp|H<55 z)L0<5^mBi_m$4_0r~9L|yuT2CfnP?Tf2)h+R`a@HZlB_K$sm&Hp*ioq@T7g`^T*mq z*6A_OrA*a(#}_yi+=~thhtuIl?^yl=+xhx)5GQP3)Teg*Me1;d6C;@atuW~G6K~~r zUvYeAuudz~5eTd&{8DifL z`=D(wzPdig%1?fKrB%QDl-)rrzH)aLCiM1t78&^4%h)ufVr&oHd1Npg4>Wz*CT3d{+yIgUI#HP&y`{G5V ze{Fp6ubd}&O^DF-S|(;VC&Rn6Us{l2G9@O#LQs*l7gc)fXQo?=te-x7x3eEwORJh+eL zAv-Nj#@51k7mVm((~(&(`ub-WB8?lgtrZ5v%SY?F!ag;qHmS>-jF0%tcV4yy;}U$` zEJ^H5{?{XHVKTYU;pr!`{$#{=_cdt-Ir08__b<5BHc|jd?<#%(xxxM2G!A-}s5cmO zf0rxx&7Von$h%qbgHt_c!gTIeJQ|;KXkCcI5QE`1mIouk14JXO+LVJ6q3Q&`WuY_#|A3lZyjR)zYLNZF@9Tekz)o6Rf?SDz zHNN*V(e;G-%Hm;N+{dB<-I`iDwud>?+ur#12e}FOjpzj%@ZAXU5seYuG57@Y-;MvQ z(ZcWjE0@{azUVBld*{LTNzP0~zoa@9KmP7FIEJUFXYR{kKsr)B;S+@04~9WuHNc_f z@OE^O+vRiDe6>dOD9bGoT9kp#tBjge#n{wR`;w0WnRV@t&*oUxn_9_j;K1z%e8nTV z-GFVVx7=K#Sg*)O@}qRrjB)MrkJ)72*)hbv&w&>$9@foy3i+-t95;aaF-KS?-;D;3 zqPr&_Q_4E@IOoG>$R9#jbXj_L95#=+`oK{>9;(@^wMBFuztz0SNfwVDD4!bXlKVov zi?BC89=TWlP2 zeil0aW2pn02G4ZN#Gx)TO~L*#2VVn|uaD-PXki3{x}L5Zw)bOD_fZQz(Z>sijf(xz z{B*uqSD}{fyRX~)Ia6&KI;I85y=|^^zxbC(CY;53GoHU6x%~z%E1JeRQTBsq+nv-} zbu?||+u;5YilanE_~VUNI|gTizhfs1cD^DV{i}ReW-G248(#6Ko>oTA`jWAOTn9Z8 z+4$y*&SIPcJ7iFQRDFIw4)s)e*Yyqj#{Fxyioao>HSDo_e(Clk@ubp2yY40ANx@wy z`JmM1(?Z@fn|BXT-+|e=j`vD=VIo=-kw^L5nVZR>bTL#E9lC%@u? z@>mPz(Xtc!y1w-fw_XqJfnIyxgL$Xxg}Br8!+m`pd~`3hmfv(-cx+w0_-9>$38|?B^zUZ|Hl>^juZ;AM`4^a(kYPF0w5*uD;;=0;f5#KBREI+Y_kF)GS zOVcI=F=)HA%IQ7oX@c?4^Xo6YYj64^ytnV@i$**1OP{fLY(Mg0%0QL~c+!9l3V-F~ z;nOyTLFgcP>gG{HP&MV1t0$W|Av=U>;i)dHVi8ivE42OX*BM*%(D0v<*oh#u4agrt zWi5UayWvlI5b>VS%bGWyvok+?l*gROf1{MRq5^oJOmx?xaUq`~8%U{q?a^b0P5QK4 zVua-voRvI;^;tY+lfAuugHU%Kf_@WtiA^xUQYYJNbX=0jv<{XG#or8k$loh#5cVPJILtK5a-gL zI&630e6PXaDhzJnku?U*7?d6d+P`?lIA34nQ{ihXpLmrv3;Up&q#|M?sj57u5imEt|+%NzZS>QnVLo=sSEtnw@V;-l~r$ViH_ zspzA{`{qFF^QjwJMqFp<5b_U=gce71G>04g3!hi-KaF)!I4p!WDHw>qEwO6HjvWH8 z23<-{a9#EjvK4E6Mc$B}MKRm!tMLP4&?~WPi|5h{Xp#>`L^c;6^P6ig^|*>@*!!k} z?M!mR%7;Stm0w}BKa=K%>`2021#?ncVR8XDo!ze;_Vpuh!~TcAW9fl3?}S6~M4KzC zAQM3!oab|WZG&C*-IE-DvWv;TR6fw+%|sg(V(%y(+7%mC4|w37HUpjd6tMc*AAZjq z7VYMF#n(kH8{#Y6`u7|a91vnKh(F-WW(?{G#SaDFG}vp8-fuGov(}Bo=MKJK??TTW zVlWR~lyI0z{&L}P9QM5{zW*K059rZOVyY=KI@%Pn5<&3dr6**WM>a40(k>A0L3iaZR(jABr z`g+-5Z$0&>eYK*%G2G6Pa<-YXfnwU@R`snd*jlqf`0R}6G#g$G*@dA(B zbvu(y>pub@%Vz3Dla=S=RDSY*&LOlU;7J` zBWzSZmlH)RzjJIwa1Ey?U?;pjTgRWa`Y!z5=iBZWbRLaEG*0@s|DNlT>h0XGoPduH z>k%|3n?8gX)L4W#6mOn^PFgrrz3|bC_-#p`<9bI<|ZtFj@mvwNpl8zr~P zKB(v3BL+nSBN!|k*v5{Z5C=`_32!cWppPvcJCMAS_(|Z8G!y^v(e(G|>{+({A5U;M zR7oY9YF~67(&l37uRAsCS_CxDYIgCaQ&VF{Fbb2IcRR z0cIxR8+rjUPCyUDhbi|&_#yU5ddG+?bjs0X?w>Uqo64f`gM4il{gdvuoLtda%(Z-K zt4mi{PA;l^bUvybC4WoR^WF9KYutvpE?Lg$EBDd!vJw8?k3o%0iw?gTgB+{#f|If5 ztb5%iL0@K(=S{xmh0vZ7a$<=Occ0uS9ICE(2G3qHF3wW=we=hwUs#mO%|&ORNx~xd zudZ)!A0*wy=RP?tR$cHt8;8z03!R8+vgq2nht@gQMQZFLtst(A)4>YW*dIg2JkZ2>2rysn1wU1>3 z{J(fUHDB8`+*`q&CZqhFcptA4Q&T!6*>gI{A49d!Dv$*f+mHht)B6?Aqq@DtU@s3D zv`GE{*pJk-K1xq5Yzl`VFPg_3kzOrTxmEE02zwzp%hv);a^VCXY$v%CzqYW@rjl1Q zm33UScP`kIPfRv)k8)eg#}1H%{-=<7>cU|ey7MfKk&b3QHc;g#U3K2~g6C3Qj8GTC zEgXkzn=z>GoDS{*gZ$=pyzK#v)Y@_F1>cYO3E=;OO)pyi^o zkgT3F93NMXQ=Yiv@@6sw=!fg6M}eJ4<4`9#Se=W=0mozzj}IT4gKYOc3~~>Rv);X$ z#@E*Y)`L(dS1^Eg0d^O_ug^hl&VyH<7vY~rfy0b(L(nVT!Yx_%#3M`R8|7>3ePLW0 ztC3&%{f<>vTY}aEXkj*Mvhzf&gPF*nt>@(7_c!kx{4E%Rzdk&PYy){i$&JQ5JmbXU zm|nHWTAN(&vJJZPPNizC@KHdErky64@{9c6ah8Z2KNH?Bo7frU+&UVWavnUCe7!5M zJxCrY#_muA4obmZNdhz%elv@?mjMohL(xOc!B8%AUWM~=Y0C4b7+u>&K2W`P_fzBk zjuGZL`8kixoZ~!LHoi7Xsn?tX?()#D9-Z8s`Ni`^=5`w2XUF5e&2|B_xfq}S0_=qa zJp1%s9my@&hxshJ%5^_52IX18(1b05!Dc#$o@XYpMamgJ6WMsl*nXA`EetRi!6D5LJ6{9g=iu8&BkA8F?Rhl`a6gF%7-umJ=Row8zvy5 zpZ(S2ZS$)ycprA*i?O3dwpH|Y@Jg;5P@iOL#jblA^GSBdbZpJaHIj?WD;f0g!(3~+ z5ATtT|0K0qB&QXy)=Gwu9R2@*WX~%`gFFb ziXxOvBmRdq02+Bhi_Ioyk!==PBHZElVf@? zpTHb{Yi`fySw&w8M&VDK)YTS1iz=88g`AUzy)K9R5z04x=XF>6eA*iZn`vP)9c;m% zdMBM_v#t_Gp^M*(2!7(dZ|FKCuQkPYNvrgQcuZZaYh$zqG|;yVz{TE;|7~ zvr%0wlQx4f$wa@b*m~t~a$4*)I_vGlKmE?*oK=fXzA+&No!142n)6!gG}da8J;jrk zVVfuhufpI$_REmr=RxywxVL2HB4p`8zE6clrqKUcjG5%TXvB!-6;fzDQ3+4Tjok(;@x(~$#-LvXS z=ASf=JIE(eZ(GrW1b^`rbm5J^K5pk6e}bh@Qzf6+(Nz4u((yehA4wc3dPebedXGiq z`#GMuvSc{56PRc6|CSCQi}gRBZ7Df_JnheJ!)7Y0?YEqgFF0nfeG zCRqFFyW-f>2KKN;v!?K@V7!%$LbOi2fMbxY&wrtyW3h`QWw|h%;mhi$?>+~)u*|> z#zH#jjb0-uMfupUySv>_bG+3&Z;inm^Z?3{E}31jaS=YO!eA+~+tK)&EkcGa0GsKG zi%-O61#dqOol!piywi|fl-ubmOXu60&){bx|80#&#FuxccvR6s>?LCK?QHsMtQ(j{0lu z53xVim~(=1n)U0sM<0&$wC8JE@f$Z{-)$#O-iEHAj#zx|^jp(0{pMuDRpb}zSsOaV z3f8Y@9=eC$h+ca5weX$ItHKiEyHT$|&-Q%j=qTPNy;phPdGMUdyruaYdOv=L&pjG* zm)6S8e(a4#)^2le@A~qD7_(&UsfWI7(olPQDY1x|*!xSTPY%!Tq{m9E=Oh2(t)U#=ryjmPT-Dtg z7Qvf6_{lE)(v+|co;9z#IJaYc9sPCMD*5pHi9h6@i+q3vv8MN-ODOMZ zq049(?1V=L<`Y}QhHOHAZANdt{f9fkZ2Y#?I@XH89x&L~K#xRp!R>P|;| zv2)zh@QoLqioEnTd64_jP4|JXh{331@)4L*3)L@@`9}PJk>`in?`koaUP7#z6Jh_kJ=xP`0ahS{51N`>_cU)p1B&zz)f?BQG!P? zxcMCVVxX(n!doZ8cg5f;Vt4xLy2)b>2lXYRzdOi}zVEhM!@2ZTSV}*@mM>0;KCRW- zTjVoZQ?VX`Re+H=Qao^=u?6!8+{6)-f`z(74?(+r0}aTojkiNENl(Km63eSmKWXJG@y zyh&^-?YnhT@i&6MP1vZJuk!e4D2>)ZpT)>QhuCX^Z+jcC*UUiyj}wi-%NLvx_r2>T z_i*cZ#P+A1ieLFN(f{&!p8LGBCWSxWcQ+ytJJGS5ym)dLFIusX+DX`UdJ`Q-LP z6o+C`{Zu^G!doZ8cg5f$=1x6y|37!aGk8Gvp?|*eZ20!}b)gB|xrc=M-(uF;esU=Uiof^StEi)KPH3D= z4k&StmGtFNzuJf`Xr9*Qnb=b`>Y}~s2jFhw0^%OfrH!@9qu6VQmnRZ~(%smPx%S%A zP4H4T{;*DRt(sZayXZYRk6iiL=&IknbTGX3*dy3E#uWF4XCJs1A1U?yV9#8rB=feN z%O0=ThV`I_M*4xl#n9mP8?S*bL?8CN7#?9Sk-6x3=2-U3J{=z-{!Q|nd+7oQ+=; zK4@aS86=--19pwM3dXXg(Q6{+$Z6Z;G0B6(8gkej(WCQ_7&ON%O3DM_!F%qE`7NE~ ziZ3T;$2`zM?qdwF9e&-S9$X^^wfXw7l~^AWufvf zy;cS$AI(_j^+Y;fIk;unOjOSo!>-5w6u#1Vewc&)&`iAg;)T=00{G9kk$!3Oxnr&w zxa$)O$d0x2f2#F)#a(fv>xqwuFKqLT_+rGMJwfF&^{+POUilc$sR4)9@N^ivKo2r6 zZUFy$wwEcnIrxjs*Sw;?1GoQ6Ikwa_fg1bG7<;fUclHloOzabb92BeU6Lw|)n%Mip z{Osk#yL-?ZtWU9az`W)4^vk71MQ}2Z*qW)+c3ER-PqJJ3d1-#%0PC(X#TIC# z9#<;{iufB&4z_UL#A9iVSJxWEPtySoYrX$!ovK4Mzo@ura~{Co26SnU{%t;{Shp5N`W$T>ANI1f*XuSztA2c1uE*9UUOaDd zxQra|L3~_2*em7&Zld<3of<{+ew)czya0?^XMfjC-wHeL_({ZFD}E~dFk(=jXg$b4 zX)gxNQ8C`z>KcSxR5tpVxn+Z_MQN{VU&q`r^r&v?zhbVFIftBE%RCIm-@3JkS0X@r{G2@ph zb{U@ux}}`yS}`d75)F#Sc%S^UqrE;F{YU%E>sI)HXHure8qmZytmW=mFE1H)l(*zD zc`fl=4|o%E4rO5)%0$O#zu`pxT$;3jL2>A@lCufTq@}eBX~Z0AYfZqQ{8OR*1Y%J7 z4#z)YFugyXbC9l?FfKg?$TN1I3iIIJe-(YyyczPa-`Ycu806o9lrTd+ZLHnUZrt^9 zXu!YIGL`;``X=(+fp~q_EeGqE$MO9A)z?bTbF^dicgFI!*G;r?E%^Wjb1ceB>NuV+ zP0cM3haM9K6ZVo$S}z!Mz3%{fj+kcxeVha771y&=zd(+ZGEiSaX1`?ePnwQp&c^H9 z@w{)A&yziO1i|2;*ss|7{UhoZm4U?c|M06{#`xDN z``5=jqO5nM&mZwuxJRweQmxAu_4y*by-$2TjtMul-a9@IJR~3a+It)Cly~HpO8tv# zchtGFJaKWTJaqJqAphzKgYrlk)_cZWrF>0GIs94vVkQHntcHd{Ul) zylHP^hd7i+SL2^Dm%E+568(*H!5{i4HGArzZ@znwUfhhm`rCO!dyyUvy^XW!_dX@o z!4`9-BhTjeOZTY-2l4mI_xbSe;wa96_i-frrDO4&F~1gj_+E<77=IHylJQQyZda|{ z>R;*x4r?fr3{1GI2OYFR>qtXt%vi6pyw41SX|0a>lD$V9(lMuHob#M_rFrFg%<*`? zF7niHuWPwqMVckjhM zjPT215`U+s*mPuOFSV1(Q1M;C2-lOg;@kU(!|}ji)~8~4EGGI)6b9|To`$)j89!w9 zZsMP$cUN@pB6f2OCj6z}TQ^7fgFIXNr@6nm>sjWHNb-O_gEPq0XGq7W^SkE4v#I}R zk|7gCv*B=8e6N=KR%1|1h`$O3S##{|W(`3fb&>8n{nY_-+Hr>dXV;$aF4$8SJ!GA( zy%5QVykvEA%;{ToCVmEL5hAVB&9sSf495F-uW`npSghbZmx+l!6M;eJey9hZwb}U^ zuDoTPSq;y~Kaq#{JFYi;C+2yBU60mJ4u?PeqV?b#l?DUsdp^KEE@DwxsD5Ctd-CUICR1`}^2Ua3ANyd~Z$9{sHP{IUFXPht?{nxqg@k7BNd^0EyaqI(E+B3uRPi6~h>tsD_$?u@9ox}G zdxGR_`9w7&Fxuza9690JL=x=cC z=X}@jY77?fR}UDJ?$XiqI?6L%`(BzKd8J|-O22$$^E>3rNbmnYj^5k*q+>1j^cqR7 zrt2kp&1ZL5TWBtdIW8;7>24;6VKK4$!>>OJ0N)Jnyz*kyL1{G2o@1xrbDtFVDYf?8 z`iLyXYK(`T1q|=!Z;S z^*5L2jo@W}M|jk^V;}YD&E$GU9Fjl&^dIj8gKvkw{{C)iygm_H=z(D`rCxeFY!ZX? zlF(MG_+*f$L)Xr7w<`J>_bhp&q(MFMz-Sn>52>|NE%;{E@LG9jO}{m>-@l{_TX0Xf zcFVfZfF9a%2KoN<2C+YGJF?QAa0!FvkHpvnSX0L}SHw|bu*6+G;;#72+GgS~`83jJ zVk5~yG1!hAw0?0lHlgyclU~8@p?m+WKMv>9=fi!cTgWTzV2_7hbF|5?v1TA*JjY-3 ziHbjCKP3iBxeqTSeyitW!d^NiS|kiw2ODDuV9t8kSTBVjf#$LJBU?%^&*NZx6j=d6tCEgOR zmB*2JA>l9`#ZdJyFC^x=gT { const player_option = document.createElement("option"); player_option.value = player["id"]; player_option.innerText = player["name"]; - vote_id_select.appendChild(player_option); + id_select.appendChild(player_option); }) if (id) { - vote_id_select.value = Vote.vote_moins_id; - vote_nickname_input.value = Vote.vote_moins_nickname; - vote_reason_input.value = Vote.vote_moins_reason; + id_select.value = Vote.minus_player_id; + nickname_input.value = Vote.minus_nickname; + reason_input.value = Vote.minus_reason; header.textContent = "Vote -"; let previous = document.createElement("button"); previous.textContent = "Précédent"; previous.addEventListener("click", () => { - Vote.vote_moins_id = vote_id_select.value; - Vote.vote_moins_nickname = vote_nickname_input.value; - Vote.vote_moins_reason = vote_reason_input.value; + Vote.minus_player_id = id_select.value; + Vote.minus_nickname = nickname_input.value; + Vote.minus_reason = reason_input.value; load_page(0) }); let submit = document.createElement("button"); submit.textContent = "A Voté"; submit.addEventListener("click", async () => { - if (vote.vote_plus_id === null || vote.vote_moins_id === null) { + if (Vote.plus_id === null || id_select.value === "") { const popUp = document.createElement("div"); popUp.className = "popup"; const message = document.createElement("h2"); @@ -65,9 +65,9 @@ async function load_page(id) { popUp.append(message); page.append(popUp); } else { - Vote.vote_moins_id = vote_id_select.value; - Vote.vote_moins_nickname = vote_nickname_input.value; - Vote.vote_moins_reason = vote_reason_input.value; + Vote.minus_player_id = id_select.value; + Vote.minus_nickname = nickname_input.value; + Vote.minus_reason = reason_input.value; if (await send_vote(Vote)) { confirm_popup(); save_state(); @@ -78,16 +78,16 @@ async function load_page(id) { previous.className = "left"; buttons.append(previous, submit); } else { - vote_id_select.value = Vote.vote_plus_id; - vote_nickname_input.value = Vote.vote_plus_nickname; - vote_reason_input.value = Vote.vote_plus_reason; + id_select.value = Vote.plus_player_id; + nickname_input.value = Vote.plus_nickname; + reason_input.value = Vote.plus_reason; header.textContent = "Vote +"; let next = document.createElement("button"); next.innerText = "Suivant"; next.addEventListener("click", () => { - Vote.vote_plus_id = vote_id_select.value; - Vote.vote_plus_nickname = vote_nickname_input.value; - Vote.vote_plus_reason = vote_reason_input.value; + Vote.plus_player_id = id_select.value; + Vote.plus_nickname = nickname_input.value; + Vote.plus_reason = reason_input.value; load_page(1) }); next.className = "right"; @@ -97,7 +97,7 @@ async function load_page(id) { const div = document.getElementById("app"); div.innerHTML = ""; - div.append(header, vote_id, vote_id_select, vote_nickname, vote_nickname_input, vote_reason, vote_reason_input, buttons); + div.append(header, idlbl, id_select, nickname, nickname_input, reason, reason_input, buttons); } function confirm_popup() { @@ -124,8 +124,8 @@ function get_state() { return cookie.includes("hasvoted=true"); } async function send_vote(vote) { - vote.vote_plus_id = parseInt(vote.vote_plus_id, 10); - vote.vote_moins_id = parseInt(vote.vote_moins_id, 10); + vote.plus_player_id = parseInt(vote.plus_player_id, 10); + vote.minus_player_id = parseInt(vote.minus_player_id, 10); let body = JSON.stringify(vote); let result = await fetch(window.location.href + "post", {method: "POST", body: body}).then(r => r.status); return result === 200; diff --git a/static/js/results.js b/static/js/results.js index 08077b4..1ba4192 100644 --- a/static/js/results.js +++ b/static/js/results.js @@ -23,42 +23,42 @@ function show_plus(id, votes, players) { const app = document.getElementById("app"); app.innerHTML = ""; let vote = votes[id]; - let player = players[vote["vote_plus_id"] - 1]["name"]; - let nickname = vote["vote_plus_nickname"]; - let reason = vote["vote_plus_reason"]; - let moins = document.createElement("button"); - moins.textContent = "Et en moins..." - moins.addEventListener("click", () => {show_moins(id, votes, players)}) - moins.className = "right"; + let player = players[vote["plus_player_id"] - 1]["name"]; + let nickname = vote["plus_nickname"]; + let reason = vote["plus_reason"]; + let minus = document.createElement("button"); + minus.textContent = "Et en moins..." + minus.addEventListener("click", () => {show_minus(id, votes, players)}) + minus.className = "right"; - const vote_p = document.createElement("h2"); + const p = document.createElement("h2"); if (nickname === "") { - vote_p.innerHTML = `${player}`; + p.innerHTML = `${player}`; } else { - vote_p.innerHTML = `${nickname} (${player})` + p.innerHTML = `${nickname} (${player})` } - const vote_r = document.createElement("p"); - vote_r.textContent = reason; + const r = document.createElement("p"); + r.textContent = reason; const head = document.createElement("h1"); head.innerText = "EN PLUS"; const buttons = document.createElement("div"); buttons.className = "buttons"; - buttons.append(moins) + buttons.append(minus) - app.append(head, vote_p, vote_r, buttons); + app.append(head, p, r, buttons); } -function show_moins(id, votes, players) { +function show_minus(id, votes, players) { const app = document.getElementById("app"); app.innerHTML = ""; let vote = votes[id]; - let nickname = vote["vote_moins_nickname"]; - let reason = vote["vote_moins_reason"]; - let player = players[vote["vote_moins_id"] - 1]["name"]; + let nickname = vote["minus_nickname"]; + let reason = vote["minus_reason"]; + let player = players[vote["minus_player_id"] - 1]["name"]; let next = document.createElement("button"); if (id === votes.length - 1) { next.textContent = "Résultats"; @@ -74,16 +74,16 @@ function show_moins(id, votes, players) { }) next.className = "right"; - const vote_p = document.createElement("h2"); + const p = document.createElement("h2"); if (nickname === "") { - vote_p.innerHTML = `${player}`; + p.innerHTML = `${player}`; } else { - vote_p.innerHTML = `${nickname} (${player})` + p.innerHTML = `${nickname} (${player})` } - const vote_r = document.createElement("p"); - vote_r.textContent = reason; + const r = document.createElement("p"); + r.textContent = reason; const head = document.createElement("h1"); head.innerText = "EN MOINS"; @@ -92,7 +92,7 @@ function show_moins(id, votes, players) { buttons.className = "buttons"; buttons.append(next) - app.append(head, vote_p, vote_r, buttons); + app.append(head, p, r, buttons); } async function show_results(players) { @@ -107,7 +107,7 @@ async function show_results(players) { app.append(vp); let results = await fetch("data/results").then(r => r.json()); let plus = results[0]; - let moins = results[1]; + let minus = results[1]; let prev_score = null; let counter = 0; for (let i = 0; i < plus.length; i++) { @@ -132,8 +132,8 @@ async function show_results(players) { app.append(vm); prev_score = null; counter = 0; - for (let i = 0; i < moins.length; i++) { - let p = moins[i]; + for (let i = 0; i < minus.length; i++) { + let p = minus[i]; let player = players[p[0] - 1]["name"]; let score = p[1]; if (prev_score == null || score < prev_score) {