xNr^CA>r*z62a`Nr9k%%tL6S36p==`+Yb zL+4}(`|x_mAgK51%Ckgyfg=v>p-Qt-u&dv0N&Y|dZR~Z~7?Mrw^;Nw(XI36?E|p|7 z)$t1fy}D-G`NsPWDQ3zxkF)Fhn%_SbrH$RO z&H;&s9`x;$-m8%F_WMJqNJqp;&NcPbX>+91@sXRDn}>(%+PDlxMMv%lABUK@IMtFf zyL2rQYdS*RKk90o{`%%(NSDp>za_`@dd{U8d}3mfgyt!4X zb2@MXq&Ybq#Ib$pmaurV-R>TDbjJpeo?oNl6FTYu@xy=Im_xNsI$ywAPUdiLzF*DF zdpov;Ggi*?KkGv2&NM;lj%&ZE#5=tN&ff>-65Ehvj5qpPVZZltfMq{FlbHCrn6I^a zT{?th3( R<-R*n4!|UI()2=oiz18=9bJT$I zbRLRQt6fOfL13Ta>3i`h7P=C * zZp8@$joxv%n3x;J4h{~r|BhF$Ue)^CoDy?Ex PJjmd89ZEf+H(R)0Gn zTu1r0@hrBYqCx~<<>v03oSdXf8|0@so{A>zVY*v;0p_y$9yLk5*Jy{~u-;{JVEH}? z0G`vt9i&Z`Z*FdAFYiz#^P1!YGWrxZ0^ovir(G?pH*3FO2v4@kzCf`_=CJ8H*L?G7 z3zm89(1pIFK!XR1>ou-n87Wc7yj2jp^r2MSM3!@tv6mMybW%;NN#KBOXlz{$xEXw( zpkzqh(B)|1l*Yt#qL&{`{=< yN@F6ZMdN3+64HNvI3Rkl>)a2|w qHPl@C?OS~{ ep>q`q&{^xC#Irf ^7qwN?#qlnlprlzlV z$J&l73p1lk^*n DnY;>lGe0SM@4FZF7 zVyX+ce&8Mkyf?o)-$}+mbuPoYmiKMmh~-!V1E<&@pR>)$2TYF_YP-p4+nFeP-u7se zX+qk@l451S`?QcONyB*X9!9`gHU0LJ;6a9SetU-7+uP*+7^Rs|>-{V5%j@fcu11;- zu8n5DQy~MUw#jepB+iE*KPsBB cNMzE}l3{tn~@xrO@5Y!AIN;2U+{6 ziMhG(j0|!jV&WFcig0?tZF*)Ns;b4-FC2}ItB3J6@%Uj#BdI(ruL+Up)N#TOU>G0Y ze 9df$tjo=^C@f^w6woO+noaBTy^F)=G zJoGtBFYRD9EPeCvjpL-mL{pFB1epXDMn>Htt52Vh0!OC38i#g1BYrD1lo6N~NHS7b z@@KQgmn+9X#?@9$&l3#i&W!hm5BLkj7%hf)04YUzXc_Fu%fVxS_O4l+RPCgkfnM?+ z6xqO2PWX{vBhGHVYNMaTBo?)zoz8K^R8hb558%lN0d!kF7pdHpE!=J*tf4Q$#L3ky z!{|R{CWI%aOC4Ff&ZNfp51qbL7(=<}MIe*6ZwXG2ITFDF@lZB8(9zN1xOjz@gA;zX z91xgKKhw}E9DWe(H`!tO&yotZdu9If)!iRRzsdh}vb7@a(XZGQ3g57Wy6KhRB!b7( z`v*%N8rO=b>zm*MrXp9tr@nZ#*G9(iJ8?`p@ub{Poiu< 0vGN4%GR@B&rcUc> z Lp09OIz);k(%Ypn3pPSF@hP5BVM!F#C CS4IZu@aPEr3wPhPMJdPTnkbT*h_8Y~|&yVy*TI96+tU$Dc?CW2T7cV<&0w-LQrbPr0d(LIY zq{?*aSxv@V3wd*J&^0Hs%n~2Zo%gZokvk(ZGa~zmt}NInPJJE*8wY5=RgQRiLumYc z#*(Zq jM&M94AM|fkB#p z 5T4=C3kXi%wd4>L?Lc+qs8>lqM-akCtH13`4B%+zX{AUQ4G)JX=EJC>g zFS!kstPP^Z3P*N6v!*CtUR}|Nh@_3EB-~tI)3dWjLpOi^{3!ySnVk(QEoB8Z+t)Rg zX|y}mH!x0OJvnj(EI>GpM{TD3V4~UO zs|IB-7*(Y;d+$6e1pOwi=;1vvCn%8E#KPit;)1P>&9)q?S2scU0CQjV9Dha8q;;e= z)N+50kYaQc7fFR%f`y&keL^IKv6}#i*x1pLo1UH?04gghwGYVS!Y8VtU9^RPUlzzlvAes>UaqboE83ySfFhu&%f-dD5|f;h zg9k)LMoN2oi#5f?#)h`7IsZ;uUmF`!OB?+Jz09L600R4CNL=lt*<4&)7P zc zGwgXIvc0FAEpd9LZ(^%NE&Dx&SMQv*)F`ToXT-N}FG*Rd@FlcixU^}j;q}K?LwHyI z{3BE4fzoyKTwJ)LZ{Gre4Can6^m+`TuJQH{$=iZKpuqZi!7Q;a%4Vlv-ZTv82l9#G zmu~_YFt+-LF=EI=6q6U(x&*AQJQ?+(1gt7kBfprTPVA3GfBpvF`dKkD-Q@Z(*u?ym zmN8_;fCm@HTNHZ`biO@MXP6@8*nV}+@e4T~$sW~;1L8EXW+u7H{1t?NA#$z%f=)+2 zO#R1q8XvAGiKlZ>g;Gko@9FqauVZOQ20ASGzy3q4xPu$oGB*~sUw8Ads$r|NJ?MK; z(Q9S_HfzzzXw2Y7MzF}wKVgG)VP`GY8aOf-!DB0OCj8>MlDqbWv!aie{`?bCWUML+ z6v{~dk)m|rE)+Q_x_%(^H=ZBK+kH{Riv#5je| 6724s{7 z; (W9gety zS{a`}B|f0lGZ;@L`~Lk4wQMm|0OLbE2@V!p1E@pk^=nX6e7pieuyJxyYSGu9wOF79 zX4@hM3RsP;|4tW}IJz>-9Eab9B%!drU>9VU@E#=X_WoI1%sjEx`NCokh83iU-M4cA z_?*0=)~4oG6 ^C0U!YO zvaQ23pueQ9BRq15wb_+w%~w~|%#7}0&cMlRu0qfAsIn<<`e5Q*pHe?#>z_bObvx*% z$28d2w;sikBdw|$yMBad{8>PQA!D7Kt-P~XXek_`{jbqgF)64xj)o-sWVwm;)~4~+ zf^;AgY=?=9+n+M>h1*NoNs2SvyD>TWg>P58Q}=^bEk(9k#98W1{`c=FGsxZ+6QJqh zx4pe!saTuoVq9hPKtdKZPx}y9IN_4h+5V5Ey%JF|=Fst_z?^}S!nJXe>${0YBTGxB zKf7*1lk^bBOe9T+$*-N8p*-Z$ZnZ3tptLknsM{f`WY}6-=Rb7bHD3Y@p?Su!COcR~ z@6MY29$xl0I#g50$fmf@BYUqRdtaDwoq9?kfHE^M^xn6#ulJzS$aVY7Vt96vgU+ IBA3T8O hoI%YzHrSijBod&dQ4QT3q~hYq9KjVk%v}LpL!L36nTPr;?i5 zb?a@tK9}pk6qBHk(C2EzEZe)g|Ci9MRBofsM>+VW-N@nL?5`zB{lLJm29u`p+(p@c zW*Th0c{o}>g=kj8!^)1s!(DYz!T*9!``iL;DExZaX{%)~r?>sso)Y3sB$kb5+dv-h z`~U+17eDF<2#CX)VEz=g4NK*z$GH1cPLK7n5qNq#Ep7+NTK*mmvvYrq@BkyDIpdhl zv+bfL4|mhOu}Z9bU&JbPn;Z+x5NFX=xuXJb>boAZn@&^m@65dH6YLN}1S3=SNBEdN zYH~viot=4+O3*g1Tb2_?cDTbZE}Hz56%^3&jnzt~H|D$kzPjBCdW3fk4=b0>+Nz~l zT3RxE3d{&Fsi}4vA@Vc%(}ABmMuzBBMGSfeT@2g_3ky?qap406zOtL+MMXvZ-rSr< z^ztQt{UMdjW}W>0Un3JbR%w4<5kTX07^XQ(USSKek$LN_y1Gn&lN6DLv<_5Omvoss z55581Kq9(Mu+0oAr*gPW5@qfbu+YJ$6ylsRt}Ax%gTCaXq}R8`aoln>Mv11G>Oc8H zP?W4FZ{Zv5Q39ab |J;f23s`==YUGsL*>*8 zL4F>3Jqb;`j8g78l6W{7L;K 9hV z2?la99#nFp{_I%2hc7)4XWiP%-<}JU0adM<#d$#3W-mzE%1VGFFA $btT@)gKT4V;dU!E%)|qoT=Hk Z0XicWa1tvwK>?%IhijkAVpL-~S$dQ}WoF8N;ve436xf*2O_EW}Iq zcOb{z_wP;u{uZ62+3o`Lw;gbok16uGh*0#aCPGXfHbX73uqND}{Gq4ckOF1lAnCVn zaryZL-WljbAfV98NcId9dT)Xp`gL64^emlEQbr0nJB3}h=GgI8QiqLHe3YwVxqYD# zILa3d7-hH0QqPhYbciY-K!@VGha`}DPh*nNSO7f`bC-CTFo18WSdYcjV?TS07mP%t z-zD{Bm?&biaAs!4^pHp>Cz9hPLM*uP&Uy&F^Hy-r2VY;fX8UiPiGp{3F~bjG|6z$v zA7;!U9HbUYw7XxSPQu^r<$U+Xb6HHN?x}XS{ezbdkyhHh2tU=4h2kSZq%>7#eEJp9 zr_C51C2j3*^HtD#@uc=gRr=Q8ncMuR%IE-VBt+BmE?x6K_mJj8RC(`iYB_mD*As37 z3w| vC2?nLWI*MsQH~S9M6#)?k8 &%{qDPr`j zz^KR>JIA{o2?nKd2EE>>=WQBX@zwBWSGt$&JL*c%5^sUucKhsfw_*3kX#9t6Kf8(q zNR&;kKVDH}P1wIl6C~@3Oz2fKXv}M@!sFMgnT0QcQHRTyQPsaFZL}$picQ$7`vNsC z)6Dj(KTs18&t>gD$cwUy3P#u6-#rLd;QVy|1u8_-%e!)9vPVNi1gm{o)HZLfvl<^T zdA`><&xAb=aJ{O!CmqW6rb1U6L>5>OT*Cf)f$5G7psUs0Y5P$otdwmIQ!{pFWtCVA z#F(&EWiY!)F39Oo47UcMl97q%Y7gwJwtf@^Ot%nq5#S$Sq!{!mYr*x@udHnax4R#^ z*oH?9{L1ofXRGkX;uDChwXjV!+SHl9VrsW(`Zl7VqUxove49FzJJ*tx&@M(cdMiEE zr%fqB6~wotH`)Id?Q=I?|78O-QLvVH-%4^PXc{hE;mRYT6sQ>Q>lhswdHD97$ve%1 zpSWy?Lh>oxEBG(b+`crhzx-3)TvLOA4A>jhuGoHJ mUbVlnBysEG|6ZQ*NGHRIQSKqcJaY?gfrYB8_da(wU&Mlg83QcWO+6Q8a zIEALFok>Qjsw0_1bAtChw~R9ViqLh+QfHKGUFNQCpqn5&Ln6ZhMQ$a1Jr8#woajsD zX1PtW*`o-zk#qT|u^3?ZDopQVq^A&`(t)*yVT8E&DVr}m$pCqll8|^^i=Y*W7={Qu zK>#9`2|2HCy9*G#>maWyuHEE1QDgk)>zv6Kh$Sa57rn@J1!cpgisi<(vLB7(R?6nH zzd1GGF2p;>l(q|e+vC!%(nqylq}QEwuWvHnDc6Efgx9h_0BICtv`zvuX=z{{ub#@i z*5QIcrkfXs u=Yt5#a1%+Sf;kHQddi@x*6#toj%W6!Nzi7W(%tIA-g=xm|v$GSj(&@Kc zdF092gW;M+VD=imZ~IYli6a0sF!-f_PcDpaOB_CIqN)1}B0yj^3Eyvq_L^e?r(!%N zm#Ra~^eimsfb-R%mS$>J|E1n9LzbN`nD Mrq*A3xH@ArG &R1&PhxyurLaUPShA`WCGd0bp$Op##+r>^@ShK!OE$S~Nv6Xu+m6bl+2Y)ZH-4 zY#zDlVM`x1?z7y@{F6&%ig}TZAWhirR&E_4@a!Q3dtM!O^XD=s#ydZ_`6jAOWA4zD ziIDehRY&H3tP3k1&lGNUr4LUxujVg$OS|IlL4T(u=)8~4K>eVF@sV>Y2=-(ucgiE9 zF(r6QX(dGIEuFvMER)22;-%{2vb$1LP=HicR#sYS%F_Aa!v|6L L|f|r9MMifzt|1~;_+RNMQx`($1N;nzcMNyRhRGm>gIA5W+HTMN0 ziq)7ZIG4R@i{&07wss(TUDHO5j~|cBG6Nw}F09>YbnscNG3!;qN>ScP5uycr&!4sF zPJ#qA1BvORaJ@#_Kgvcr>7?=}oaG$UyxtwfLvYSZ*Zm1PBw)VEsP}LdYQ~>#%Afvc zhQ9Ho$o=FrVA|x3CPL79^~cr#&v>4WE)w^HOb7j2nmq+CL~M?Pyyp0D&4qQ?W1TX5 z6DqS7SG?L;*~C6= D^Eb`}1jQN7K+dH*T>JbM=RsAl1Nn{`b zOtU+6H~T|af@Wu&MGS7bZ`5}_#a-XHIg~>C8>i7H!w4mn?P9AJZr%av4#(wT!xC!$ zu4_`GJ-N0B0{%7L)od`K#)bcqO6@GM^bYRFE+{X@5)~C)c?skMY@n{#+xH>T*ND-$ zH<}ijZaI+& Pzzr8OI?M#fKM8WPaNVRRyZ FscrF+XJ6~=rpeWoGXn&5>4{*VcU~9dWtj^R%In(fUFAT$8@m3Z z{g80&j_dyE$;R8pqu_y~;7s03NhE@MFkpx0nDQ)aZtit9ei%JcgzXmmu=0BsGVa yg)SPg=fIr&4SM>d%dik#m8*xZF~WmS0n(3cx8 >!T$r5qd2Yr literal 7695 zcmW+*1y~ea7oH`T+@%`?q(Kqst|bI1k#41z?q1@fLj-A%RFG~2SvsUsK)R&6OaAqr zXJ+oqeP-Ts=iYPg`<^pV8fuCJxYW1+01zlE$!np?T-1R8W1-Hm?<{Cg#euK3p1ZuI z+dEfVXLnmCM*#57`jq&>v5OZUX1zx$UqcO}vAoa{28%z{g@R+^wN<__a^m>k;pZ6C zRW&EJue04e(o3pu9pWAoy@9-1^9jL zhf(p9}fsy5aP!GVc8l2Eo2>Z1UJK z@4mKW0I|)A+*`R$CHn`Ghvq(?q&V@ox-`ERwl^XUHN^gf#N%Y#6LnE+e30ikjjL3x zJ9N?B92O+Xf9b@(4QRDvQjgVFc$BxPixP@EN3+=D2JOE%jpI#^ >_N948@dCYUROGepa`W3Z zyWROVzoSaWhv;#;`VWaG6f%D$f%N%IGhHF2X`9Ga4>ALu^|{sl1xH~PY2-F-)X<#o z(u!1t1PoXi^`gg{W$3WaR!?f|r6ZVKKNGZA{!CQ?N&7Yq_3GX@^voeHmh~?`vpwwd z5sMyMy7FR|R)=jIUTVwd5VJFFJf3m Es?!I0Q|Jt12b!i0 ze`>3Bp>P$TK7F{FE8f;;6vi@i+KRez>qEA=oIgZ_nZtWzF*kmKl&TX}ug|jkC{6jl z-zSZVXW;{8^lH6Fc(v7bk}ZM!^QqKd6*`co7R=GRb{~%BV5b2B8pZ+hvz6bzHUC~% z7zz+fSLLOS>mM0WbN4Vs1Bnu+e`QKG=$>zM+7h=@Q;Q!Br0g-^Nh%$OS{e$}U>i#B z|9%@MF}-vYaWfhC_U-grAWbR=xqa&}-(ZZn@)2rGDF5c31+eoQOyODBy1(~d+j}?r z_VwejWP-)r+qZ9ZOO8WAW^)YH)gg^J=9FcoZS(+_yfv)<0+fBCHWi}@8ly0c9f2RI z8vAL?J2*HL7Z*z#8q)k3&fGeG;r*&YL9Qk#c>le*2oDKOcD(!lF)6t95V^TeIFYOc z IokGS@Y2!}t1MWRl_V$V zug_Qc?T *II;Yf?!` zW8=&YohXmAAxMMh7ELjyvb>zY($dmI3Trn2t{Hug^ f+@a{fS!gZ&~`T3YCUYSJpE?;RR@aoko z4J|FEW63&orM-!nW79#OzZWe|08omxuQ88mW15f?ec=6x;(JR=MlLSAnT+{XPNXq< z9-$@8T{^Dp92TveO?!o%OC>+`e#=DN#4WnX kmH~Nh&B{#E ze#Q`}^w+!CTq#@XVMqNskWEZnfFV)v*&5`|x0PN(LL%#m<_W&+k#&ojw61Qd98DMQ zm_8_(M?WMqJ$<(EeUvUn?k~G^^0;vS z_r08&&n-0NMnqT6^DVkMDXH^bJO$|!F{-9Uy}>cxhC2pF*>8;pEoYC9_h+M(&rE)# z1;T44u`#@v;7(4Ty&rBpvV>jG_GT)#&?YRFmy39ZezK_0Mvu;KY;5o@kuMJs7=-7D zzmVCm J5{&A@!{x2`2B3;6JIVQ*(do#~_tK3{39+%U-Et9x;|U~Pot@h&OhbP# z+mYA%jL;QlUCt~bL~B57;ZJ;jh%C(6u{8V`vw90dj56)J%pj?K{ZI}`K_8MwJItx= zL9ku0@*hN#uAkps_vPhfRDFFtiPzE6LESX~slXJocsi1k{yo^C`I>F60saSzCzNFA z`@pKxT~{J%0|P}xMY>{QVz51YBZ#N1LhN?3e@VC8)ys))n*=vQfiTbGWhzQbtwaC_ z$`%WdcACGs@`2v{&8OGk9FJu^(Y$8MNg3btYVchayO~E$%{qh>K}T&!mYuWxIK&>c zem6=$>JsR|TfM97vq?K|3SRp&)A`b)EBhlzLZOC4Si5mMe3vepw6_`NPO6PCwc!`8 zINdrwEkOhQN>N#KD!rBcXvrsBHGt)PG`BQW8xx*JZ>6^-Ur5V-P{1>awHw7u>+ulN z9&iDSYe}3+V-=f<{IjpLb>%m2PRV8n$0hT+F s05hk~FogmTpqe92^;IpqQ`n2ZH~15m?#EWY zs{!U*b7wo~+VH*erHzdZLZ`HzOA=V{< DxvsAH60B>mcM~55KXCr zSQ>#?L&|mVWWk(VT$&mhK%7FCkGLczCMF?l7e}8fhvm&t&YzE9-EspMCA6-g!D4gZ zlYEhu&*rQGUIn2n#?2~x8xv~9m!84vj9&ZI|L&ks*khLz*P9A}yVQ-46kp?Gg$~ZE zWr$;9g@RUJc8wcM@BUXnBO!c_K=wnnB3HY&@Xj5|XB!`xzuvl*>Q=HQvAz!JFhel@ zMqJK%c1se+2-yGXAFiUy+C`_v$9guL5_<29X7qZKCA`hbzGd&hhUqghDxm$L{nG@O zO@f2sxfJZ(#qM+s80K7pbEy#6B;8APgbjFwRXvWpc>Rvob6?Ml2Rcpt-&l% HSzkAnCOF;8qFSwAbne$Sb31*I)&LkB7VqXyU z3U&CnxUI58h`$GF&1O)uJ8aq$>O`AtbUfl>k9=4yH~RkZTya4b4(Cs4d={GTcI;(O zWer2!a<7-!I9OuS=H=zV(T?2UbfFyxh~%|&JWlk=82azRKWkg}1naF4bIEzFt#qiF z#{TS?r-(iQjC*5E)tI`1gPU94+&oY0i%6$7XPHTBMwlu%-1QYZcN?>kQch&IeiHA+ zp{-Ju01nPi5|^|80-rurmv^SU^Fy)w_IGo{&-a}p* h*Ir9p|9Kb9NqaB@=fRm z5Rr)k9Nt}8i4-M*ddnHL4k#ED9|PV`Q5?MbABE93^`2e|Q(s@vOaJ E(QI{`%S{)sUzMgoq4vlnk89gsF`)wusEn62YD;7-b-7<}Py z*u!gFeRR$~Yk0HT%|8DotVROn2=~FZb7R<&{LUrmOWdmn!y6zo#+4SSlO$vKoI`_^ zsxYR-4CBr6mGMGG)Lt6r#Iy7yb17mB?31x71^4$WjgObM5|ta2|551BS{dn|6QqpS zbM81^Z1ECfd8+;+xAYR-PL{LP#pdd8F$;I5On?2fa&+ !&FJm3SK5bhFMJovi9P zvEkw2jG=heC+>b`V|em?-LmC6>!(G&u>`sWTj5Q*`Dn?_JM{)UdN)U0%KmV1ora3; zrAKnLleNk>?i{>-2t8#hNIRT&gIjHv_s|MUI*fj*r{?6uUo8hQpybW=(UI5Om#_2l zT{%sKVEtK(YU1;Y3-bjD%_gz{yk?lF>cgNmcaSAjo{Q3;Fc f*~+yB+>e;w^+AC z8*Oplbwe?6`{ns+&dFr(NvMY?wJ7vP^Qq%f6AsK8YH-&Rx+ d3k60;+7T~7Z(>G>nsG>z@SmEA{|Dk zQ20%VHu?#c5dLD79=4aIV5Z2C-Du|Voo<6k-zVhf%7a0A6ub1N6TQEWUceZ1<~B^3 ze(BFMD&lOmtk=vf)WHYno%HmwUU%!*+rMO!okNf3 ~hBwY^nRpTSgB@qyg(^4A&_<2K*`Y^ LZu|&az*>bPi$4uU}&V-QC?! z1Oz_$CB()3*Rte1l&0aPt4mR)Q<^LOG^`jf>xm{?pw)O~VZn5Hv|NdXFl?j@hK7cO z@LH)BQ}N=Tl>KX%^=J-EOY38oXmxe z?wI8Db-eBmJCk4ES}awS53A3FSQh5h*ORp-{fexx-v&VkkP-EVm;HnnfziPwZ)G}k z-oAQ;>(0XiAiCaF5W$vYI|L&d{bk7O5g F_nbh4K_jw}+DWakXvu`O)xqnmeBo1pJq4h }+87hsv;ieDnJz@L`dLo;C*uhj2ceN%b9eYX0a_jO~6qktK<;vU0Gjx#svo zcPVS+?~f8I;4T{aQF7!~zVZt&BUr?ZAV3*j8IDQ0?W0gbn5Avq8y^>+8fya zlz@5|fEtmF*VpA%AeT6fu=~-@BPS-bYCI2q6S*bC)Xtvh^fur6k~zdD(24a5bo9m3 zbq%Gzbh$mZ1*F4#f7oa#eTT3!`uO-fm6W7M6@|scHri2R$So~O(4`g)kR{@VWj&G= z++ntI>mT39fYNbnd9nqa1zxeBGB&uaEy(zYN5=D^9PG_M`rVh_tg@|FZe^8eYW-lE zWTgh%UFZb?EIOioj3!_~gs_C3JSjC*(Zpwy>@WZoypHW%EZpKzJbNM~WvVes!=$RD zBwb6g_DV?!c+|A3m>8dnD>oD>1 6Q&pQJ^0F1soNuT|0U#=U$asEuZ^JAPpBIYHIj2Alr#D*h6VA&>`Z-fEDVZkQPwO z5#OmM2xL%$e=n#ttQvamR;Pwvc>$6bR#$BO+_ry~7tr$U8|O;4K718%-E{RncXyMs z0;z~aCynWOx}l6}D|n!U;+)j?-ED(VOx#pxd60xItd+9uCmC14lFQz&;cq;KOMKxG zr3WL}$qVSOZmP(=ete#S#3-w%kT~iREO;#kfPLGrWS-AF*?yq@cN;2O*O)Djg3fJd zAjiSML1h3|OtioWve>#7IrwIG-gW9T<8#9Se^SSNZ*D3}np;}-C3!k*LBIXvgAYWV zB+7a|UrtU;C~0XClUrLcZEsR =B*268x*=;81owv8^}wv(^)1 RWL!w5-khB;W8V3<#y?6*nT-?bx;kG$KlgN~|PI3q{cqcfrM7(^ch) z%gjtn2VcV7W-;!Vq>P@-f0b8MTwnBB?ooN(8rGAZF6_PmMvXvzLBYwSx)ccbXPEUF z;Suug8LAGm;5|pK*N>AyLV9ubVz-kum`s3|!}Rn+AqL{mF>faSbBp&TopJVTL%9Zv zPGw6A-rkH8zvH}4vG3m-INnhr1Fh!~-WO%Nko6GEo7Ifc%oTR21&Q^qZa1qa>LL=C zpcEQeL}-<`bHLKt4&F>mOn@(3QQnpyehR)mkq*2^Wr1+V$H%jH2L}fgRS_9Mrd5qj zgYLJ;m3c;~Md#$y)R(rlwogSfUhA2lJUBTeg&5Fl@#Oh8QC_L2C~ImG$z?7jvPv3u zA1+^z=c8?GMW7>; jj$&@vbZosayk=aG~R z!<=+Gr *`2_ zoR+$qJ@)!-Nb_E 7sRF(h2OBZ&2zaHJ6u<&oL5uFpTZ? z$z$(VB8h1r4r)PPTU*yOGK!_TT802k-aEw6F)@nSV27ToISMKKk}gxJkN@E2|G_y4 zlzvgq46i$PpZfJH`f$G})kOBD
E)~eDf@kc0` zVByd_Q{md(ZS9scSVltw3TD)6f~K8qJo--7&7f?|-lKT`iwG%05o)4OeyzTdH~KC$ zMN~Jc_(t-$=c|a5toOr8@?9fC?5FN8%zQ$D1LDX4LY!9+(0517n+VKh`2BCLHL;+- z;y0%&FaHhe)bz&c?|S H!AR*63%p z1j$?WG99iu(=wSiZ%EigOQ&(e&G(}rK#uns4y{z6crI)^89PhTff_*39zBX`(FU)_H=@*xj5Jgtz|Dav(g TD{_`9QPiV5s5{-A=eun=4nI(oMU4KDxOXl;trAWBJ1U3dEQ zX;#>o+aFiRNx{w_V^9z+@$%9WDhs8di9vCAMad>!0yN~mQCeCi -Dpcrp^)r+8$};T6*mt7_Q2rx=Kt(< z&;h~2zfj=#UvuE?=(haS$5$_5F8Us8vTZCQ!-fGRx!1!LlwIWv9AjU|+dl+;md%4Y zc$QqlQG7$R|NH|bQ+rp0R4qyjrzaIWFa36**}Jjr`L XNUo^fH)FH1)F zCovBz&3e9)B7-=n9Yh^n_r*l)a|x$O^t86NYSCtF2yde|FpD%Bd-U*43kTBbKJzUZ zHW2}gs^#%FpeNjfN;~_`3*nH)r8n1W%rn@TBCOApw1}F~$d*x}2mnlj9xgtJ(wY2i zYl>NvG{ervl4p6%t P+Nfh{Ks|vOegPUH#QJy-rg?8gpZ56b{pJa zPBAaZz=(n0<;)@OxY+#PhY!%OhzJ!QrH`xU?0UF`#|W2`lm6v8oaPjAnf}e3mZMAW z<#=ay$>=bqI)n0sO%=sz$ro_g?95CAjgX_atFTGe4i{r^cRnlz0CX#iWM0qd4`rlw z6KMUl?jsDM&v^R&{d-=;1bUVjavn5B4BY?FbV{cW_n%fH_{q%m^{G4$7owzF^#>}j zjUIg~qOC;o2lq@z$?yejsLB=dF0SX{ezmjPQP@9RH*p*NuaC_g(|fUZEJdqtnaLDi zi2seH Upsk7}5w(Q?qR_x^rH8
J0{Z z{P4*ysiuNK9cY!Whp#-+{tF`T+8W6&tgR&>TUK9PL!@&htX6LfR;6Nk%9}*5Z$%W0 zZT?eld_XD#A^M<>Y`Ygh!}ra?Q$!urpRS`v%n8-BsbF`z`^?1dfh-oW% ^dIdy%D(l!8sz~}q_EBI+x zgA8xe4<|{memwbBT3T&0&U8ozm;`Q;8QD83I66AEFQm!C6kuCX*Vq0&$5ek%Yz58E zfK;tb+STKe aMiQ~FttSnTAV?dneuv`5`HG_=>Fp=oITYt! zc7)@s!ed9v1oDX@`Ld;!h0V`ri5i$_jzd6u4?yOIysKUOd;;PWQN#P*Kkon8;(Mw2 XR$WbwN9^~gKfHi4OijK*)-2?IXm7G+ From da936155cdc3e201d1943f1d163c0043251a02fc Mon Sep 17 00:00:00 2001 From: timothyteakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Sun, 13 Dec 2020 01:17:30 +0000 Subject: [PATCH 05/10] undo config change --- config/game_options.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/config/game_options.txt b/config/game_options.txt index a9982e63f0..bc5fdf940e 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -22,8 +22,6 @@ OOC_DURING_ROUND ## Comment this out if you want to disable emojis EMOJIS -PAI_CUSTOM_HOLOFORMS - ## MOB MOVEMENT ### ## We suggest editing these variables ingame to find a good speed for your server. From 85b6248f488506a1b1e96912211b56df9b9faccf Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Sun, 13 Dec 2020 02:32:09 +0000 Subject: [PATCH 06/10] remove the second check --- code/__HELPERS/custom_holoforms.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/__HELPERS/custom_holoforms.dm b/code/__HELPERS/custom_holoforms.dm index 1cba5b9772..08413b1614 100644 --- a/code/__HELPERS/custom_holoforms.dm +++ b/code/__HELPERS/custom_holoforms.dm @@ -48,9 +48,6 @@ //Prompts this client for custom holoform parameters. /proc/user_interface_custom_holoform(client/C) - if(C.prefs.last_custom_holoform > world.time - CUSTOM_HOLOFORM_DELAY) - to_chat(C.mob, "You are attempting to set your custom holoform too fast!") - return var/datum/preferences/target_prefs = C.prefs if(target_prefs.path) var/list/characters = list() From 866220aefb156368849ef79ee86029dddef067d1 Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Sun, 13 Dec 2020 02:33:57 +0000 Subject: [PATCH 07/10] better cooldown --- code/__HELPERS/custom_holoforms.dm | 3 +++ code/modules/mob/living/silicon/custom_holoform.dm | 3 --- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/__HELPERS/custom_holoforms.dm b/code/__HELPERS/custom_holoforms.dm index 08413b1614..34b31cc1c7 100644 --- a/code/__HELPERS/custom_holoforms.dm +++ b/code/__HELPERS/custom_holoforms.dm @@ -62,6 +62,9 @@ characters[name] = i var/chosen_name = input(C, "Which character do you wish to use as your appearance.") as anything in characters if(chosen_name) + if(C.prefs.last_custom_holoform > world.time - CUSTOM_HOLOFORM_DELAY) + to_chat(C.mob, "You are attempting to set your custom holoform too fast!") + return target_prefs = new(C) if(!target_prefs.load_character(characters[chosen_name], TRUE)) target_prefs = C.prefs diff --git a/code/modules/mob/living/silicon/custom_holoform.dm b/code/modules/mob/living/silicon/custom_holoform.dm index 0e0af7e308..38cb4b7b2a 100644 --- a/code/modules/mob/living/silicon/custom_holoform.dm +++ b/code/modules/mob/living/silicon/custom_holoform.dm @@ -2,9 +2,6 @@ if(!client.prefs) to_chat(src, "No preferences datum on your client, contact an admin/coder!") return - if(client.prefs.last_custom_holoform > world.time - CUSTOM_HOLOFORM_DELAY) - to_chat(src, "You are attempting to change custom holoforms too fast!") - return client.prefs.last_custom_holoform = world.time var/icon/new_holoform = user_interface_custom_holoform(client) if(new_holoform) From 76fe9c7f4c8a96b0ede2c4946e5177ceec4c65c2 Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Sun, 13 Dec 2020 02:34:52 +0000 Subject: [PATCH 08/10] swap cooldown and cooldown check lines --- code/modules/mob/living/silicon/custom_holoform.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/custom_holoform.dm b/code/modules/mob/living/silicon/custom_holoform.dm index 38cb4b7b2a..e4f7f6780b 100644 --- a/code/modules/mob/living/silicon/custom_holoform.dm +++ b/code/modules/mob/living/silicon/custom_holoform.dm @@ -2,8 +2,8 @@ if(!client.prefs) to_chat(src, "No preferences datum on your client, contact an admin/coder!") return - client.prefs.last_custom_holoform = world.time var/icon/new_holoform = user_interface_custom_holoform(client) + client.prefs.last_custom_holoform = world.time if(new_holoform) client.prefs.custom_holoform_icon = new_holoform client.prefs.cached_holoform_icons = null From 016d3d39fc3eab12363d9f29b7915e473f7227c1 Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Sun, 13 Dec 2020 22:18:54 +0000 Subject: [PATCH 09/10] emote over holopad --- code/datums/emotes.dm | 2 +- code/modules/mob/camera/camera.dm | 5 ++++- code/modules/mob/living/silicon/ai/ai.dm | 5 +++++ code/modules/mob/living/silicon/ai/freelook/eye.dm | 4 ++++ code/modules/mob/living/silicon/robot/emote.dm | 4 ++-- 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/code/datums/emotes.dm b/code/datums/emotes.dm index d4b6199187..5683367c55 100644 --- a/code/datums/emotes.dm +++ b/code/datums/emotes.dm @@ -144,7 +144,7 @@ var/sound //Sound to play when emote is called var/vary = FALSE //used for the honk borg emote var/volume = 50 - mob_type_allowed_typecache = list(/mob/living/brain, /mob/living/silicon) + mob_type_allowed_typecache = list(/mob/living/brain, /mob/living/silicon, /mob/camera/aiEye) /datum/emote/sound/run_emote(mob/user, params) . = ..() diff --git a/code/modules/mob/camera/camera.dm b/code/modules/mob/camera/camera.dm index a381cc512a..99eb638ee0 100644 --- a/code/modules/mob/camera/camera.dm +++ b/code/modules/mob/camera/camera.dm @@ -12,6 +12,7 @@ sight = SEE_SELF move_on_shuttle = FALSE + /mob/camera/experience_pressure_difference() return @@ -23,5 +24,7 @@ /mob/camera/canUseStorage() return FALSE -/mob/camera/emote(act, m_type=1, message = null, intentional = FALSE) +/mob/camera/emote(act, m_type=1, message = null, intentional = FALSE, forced = FALSE) + if(forced) + return ..() return diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index d47ffa18e0..fbf2d27c31 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -1034,3 +1034,8 @@ qdel(src) else return + +/mob/living/silicon/ai/emote(act, m_type=1, message = null, intentional = FALSE) + if(current && eyeobj) + return eyeobj.emote(act, m_type, message, intentional, forced = TRUE) + return ..() diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index 8ec39095fb..17de811cdd 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -204,3 +204,7 @@ alpha = 100 layer = ABOVE_ALL_MOB_LAYER plane = GAME_PLANE + +/mob/camera/aiEye/emote(act, m_type=1, message = null, intentional = FALSE, forced = FALSE) + if(ai?.current) + ..() diff --git a/code/modules/mob/living/silicon/robot/emote.dm b/code/modules/mob/living/silicon/robot/emote.dm index c532e44ff5..d499c2abae 100644 --- a/code/modules/mob/living/silicon/robot/emote.dm +++ b/code/modules/mob/living/silicon/robot/emote.dm @@ -1,9 +1,9 @@ /datum/emote/silicon - mob_type_allowed_typecache = list(/mob/living/silicon) + mob_type_allowed_typecache = list(/mob/living/silicon, /mob/camera/aiEye) emote_type = EMOTE_AUDIBLE /datum/emote/sound/silicon - mob_type_allowed_typecache = list(/mob/living/silicon, /mob/living/carbon/human) + mob_type_allowed_typecache = list(/mob/living/silicon, /mob/living/carbon/human, /mob/camera/aiEye) emote_type = EMOTE_AUDIBLE var/unrestricted = TRUE From 4cb93931d4620cb3229fb9969367f802d90e4df7 Mon Sep 17 00:00:00 2001 From: timothyteakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Mon, 14 Dec 2020 01:00:29 +0000 Subject: [PATCH 10/10] let them beep --- code/modules/mob/living/emote.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index ce8bbc5dab..cfebacb977 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -509,7 +509,7 @@ message = "beeps." message_param = "beeps at %t." sound = 'sound/machines/twobeep.ogg' - mob_type_allowed_typecache = list(/mob/living/brain, /mob/living/silicon, /mob/living/carbon/human) + mob_type_allowed_typecache = list(/mob/living/brain, /mob/living/silicon, /mob/living/carbon/human, /mob/camera/aiEye) /datum/emote/living/circle key = "circle"