From 1d02bda86a9fa9989c3177107fb96f62642c3412 Mon Sep 17 00:00:00 2001 From: Daniel Gromer Date: Mon, 9 Nov 2015 19:41:00 +0100 Subject: [PATCH 1/2] Fix for string subsetting example Words in example vector `x <- c("apple", "banana", "pear")` should start with an uppercase letter so the `str_to_lower` example makes sense. --- strings.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/strings.Rmd b/strings.Rmd index 7b53b70..4f7ac82 100644 --- a/strings.Rmd +++ b/strings.Rmd @@ -126,7 +126,7 @@ str_c(c("x", "y", "z"), collapse = ", ") You can extract parts of a string using `str_sub()`. As well as the string, `str_sub()` takes `start` and `end` argument which give the (inclusive) position of the substring: ```{r} -x <- c("apple", "banana", "pear") +x <- c("Apple", "Banana", "Pear") str_sub(x, 1, 3) # negative numbers count backwards from end str_sub(x, -3, -1) From ff858b34bab1ea9cc9d5c08b37c8cf2f10f1400c Mon Sep 17 00:00:00 2001 From: Garrett Date: Mon, 9 Nov 2015 20:20:07 -0500 Subject: [PATCH 2/2] Expand Visualization Section 1 to cover aesthetics, facets, positions, geoms, parameters, and stats. --- images/visualization-1.png | Bin 0 -> 83002 bytes images/visualization-2.png | Bin 0 -> 21922 bytes visualize.Rmd | 483 +++++++++++++++++++++++++++++++------ 3 files changed, 405 insertions(+), 78 deletions(-) create mode 100644 images/visualization-1.png create mode 100644 images/visualization-2.png diff --git a/images/visualization-1.png b/images/visualization-1.png new file mode 100644 index 0000000000000000000000000000000000000000..390684ccb79b627caed41779d1eae98b4070c253 GIT binary patch literal 83002 zcmeEuWmJ@1|L!m}D1r(oNGQ@0k_rNYC?F}_p_CvgF@%(;sEBk+NJ%3dLzy%v(yeq2 zox{M{x6k|N;Jf~x&pGRyFTi5WJ^SAAtLwUc`}u7Zx#MJXWH1=)_$~Px>M$4q_!A#S zLIi$QS5qGczwn&Z<*vgDI?m0(Ud3#rr@*I)aX$F#x&Qy^|0~zTA5KDvU@n7CO-<>S zSSlxq{v5pg<+YY0>B2=Hud&OyX#dN=Vq>-|xTn zc`QgRuCTbcxW7MDfKilUd(^q!#NJj-VX>sxN@T*9J#_=guYt+?@Zm!fHn=4TDIk%b z4a4(`S5Q0QfBZBDC+D|EgybSCJ@xf@m6f`=I)&N~<*;72wj^x^OS9=jY_mMpr&(F$ zPtrV3O-=28ACrK|O5fXD$ki*c)Gs!F9?fGw6LsgaWLDJ)+g$DZ7j3b_#AChr28}*% z!&fWVmH5%ipMQQ1`q-Tzww(dKii?Bet3y3jd#3zDHw=@<-!AKD(r-nG>CWt4VmE?C zKSsn7rmk;l#zxK2AGIDB{45PKEc6Gd>G~0?0>+ds;|D{CMGg@C-|_@U)5_MsHFy{; z2RFCI$EU{^uBn*4d=V71Fsu?w$HAeCVbAix?r~kZbWEc!yekH*e0u4rr?Nktr@lnK z+;%?m<@9m@X5__S>~R0u+S&!t0*;QT1ooKJEk^TX>V)3By%2Bhk+-eh(=6vH-GH~a zlYD+JW)r@aNVR;+?LnrK+sqSkY>)TW0kU$2Di(nyZ8)Nmlj z{d@%lh52D^T{=f;I;7vvY3tp!sXKGpiI^WgQbsGywZv)R!~QzoGnLJJxl@I7?0ts4 z_-)K=zNScD(mhq?RMgp$RL`+k5-zIK9xtqDY*zXh@q(a|fcfS-p`gE9AR?B41oqfk zWS0EzE#y22HvNKb{LQ1j5y7kkCxCqrqTe9=%Q^a=CZ&YQQ(bDmfa7|h;V9Xlm54vS z_vr7zUx2~WNun*O{&K)15x`RT+ljoT{~r7%7+jq|vE=WQ`1lq$iLsUeb+~>X8ZPt# z7@YG_h90hihlcxb5dmXXDv>t%+n>vafx%C|@4EE&irfJ!LYX;`!bf6W)gZ^@osQia zQXR5K<%_v3W)+z=TJAoZmBe}I8x_a1j@xHQ;Uwnj3(}c&8>ZJyup7D zjaqhT7w*%XTt6~N0hWfdusA2HT#_3q;~&WRl&)lcOOwm3skwINY#i>iLnXn?=1MFT zNp9$yj@EdPHd^KPpqA?r-n~@9oveH^n9qh@2`j+`p4+;*v*LAbOM|=7YDacyjtcBH zqgDAM#3W(0%UrnQ%Y6MZ^@ZO2Q_*41akp*m6!@Uz{qn~ksG{o+eU>UGUPXQB&(jl> z*zDGbT5~_L$#GQUy#G!nB_#zB!KU0blk8g{I`&YI=Gc{SKl}@#DnyU}41g#nql7i} z#-)vsJk~UgF>(vTfGpzAN%MCkbtFYpP6v$s*G8X&Hu_G68t&YGZ8R&`Xv1}BhyU8> z=U`zX-*s`|?Afmc{sC=t!ETBu?s7xRm3{-9G6h}h(|=y**I(eRC}AXh55Lm?J-GS> zFgR260*DdlC#JE9-I@}iIduN|7CZEklhJ0Z4muEcq9q1J5ui8|FSz? zup&R=Pk09WJ-7m7caNiF|I6-Tz=}Aw6W9Ki-LXP;_dy};?-hBh2v+2O-*%)hv*ttl zr%9rFKPoxdWc8s8(;2hKm>BkLK@hKLL<`K%Jo)@NxD^}J6+3*c>U3Gvi$j&0)&)Q7 zb?oa>g?L4ivarUV8z+5aoxuN0>>sMhua4zsVHsQ|UJNcrC$PkHN$8*jnMnQLk%KM9 z9Q#(EN9!ma0K&Rh$j7DE1w*_rwWj&|^z%ce_ucj@?SGjb z1L=lfMO&T^z~G0cIP5vZ*JKAKwxYeaqzBd> z+&khc{Y$|b%hL!XFBkDn4skZvH2 zm11IZ-t#LvW8%x@_2qqW$g6Q%*eD~e8wq^?Ic|1Kd=gC>{wa_#<4mVxi6mb(4LWe>frCWd_`r%zO#+at&_#~;_dcc)^+4)@oEJvU}A(UXqg z_*~|A;PFzg7QW<~gnu~`rxLB$q%Zk$Ke!jf zQ!d~C5u^xZ*5BFw$24JwEEe6^dW?~qT6Diw#rpZ;O0K5Qu63~@EjEd%OU`?5<5qvk zXsuUnW#yIs@kbRvfI zpPIHi?p*;%f$L{#oyU1^U5NjfuKzIDs?db>jw~52)4^p9=Vb!x1Sw7Qk3uQyp0j~j z``H-onZU&X>$i!Sh4lye%Qfq->UO8;N8BfZA7Yq_ucnIsIYL$3z|fI1NnwGS4W;)c z5=r@0=KHH2oM=_h@`*v-YKXFG;x$mOx^$y+SoF}qt}JT4uaGI#_!~8@$6$svc)|QB z$zq=dTiAQ(&bujXj@E8E3<#o{eJ~cA0uPQ@1RfJOvy%MgETPtT8n?4*{E_nPCbw(3 zr8@P!V*H+mXz{V&%ofaBo*BF&9+@7=<6F$jFBL6#tM%6G-|BGY>+y)2`?WZr`B0t~ z85fd{dOa<|oO5cLJkwXL$bGx0DwrD+b~L>2gYyD& zAS5Whk&>c_oElqA?{-g{mq@y-T;6%Uc$5eK)}NIFe<7g!__=1240Af%az>(W^nA*c zWsleF$k_&CpZJz#rb`CK#1>)|ASaS*vFCZH`o}(^L*$oI%L?>?D`uX4iZokH;`tgZ7mJ8>gQS|duxMX?K3>%eD2Z-g;#-sD%9*0a;hTP zqH}>2GtBb5wHe3!Vg9dAax`Us6VN3%U|-qnGr2$Coefo3!Vxn`UMialeSLFpla195 z_SZWXreaLA11T7~({DxC6gF!<<>ZL0T67!GPH25qmG3F4plI%ZK`p*4wCF%-XZo4! z&dX2Y>~knR{54)E{dyZmAC=?S3MydVexy44&c~+zvz1k%=$9 zlUY>qv;Ll`mBSRxKHVK;&Regs28WY=uOznMlT>kAef0RVIc_3|*dQc<-SB;N_Jo z&pnK6`zn_qt9;4}WT4xO`o)YQTT zORY~;ok!I-swt_x&gJNcpg)DlTZ|iUSuPodf4@lZffv}{qTr3ga5jFgE!*1FFZ2(H zC$&_uAr9sP#TG?@phREI>sK{-kAHM8k~H5svXs(rKOf; zt(tQ8t48QLwRncw&0R&=XbHHvxq}jy!kg!7wQju1&0T;)fCX% zEv(x}eg)1K^*R7hnqi2~_SO!Td~0!nMIty0B#_7qcd)|cGZ=SkixYHPS7@VSRpMrkMYqScpnS|0s$;rqQ8 zt2Wz&XX-p$m#fSPd;~;av>3RNn^l{}h?BE1a^xDah$mOUBE@yxe2G)T|AR^$)Kv*4 zrA7{q&EBxOYq5SNLDYefynxkAii$085MA=28(ClXu5&Gd)Wj!qOV3{F)^+AZsNRv3 z+2G@ZqfKppe0Wmi`~9tIVRvRLlZ0m}h2+k7f1st#>{_p~VhnGv_d=wyZ@==Lu(lMG zdBr_;Ohc$^;5uePl)a_nz_{A_9J0-d;< z?V{&2%d0CF++Nh@&J-LXk?`5>Y>k^sJM)LusOb8;t**YNo+iv5F@*gIypg>ZccPuY z2st=4$fPeU#|%tuU+(j6Ej?0P-#H1YU(Zc>^K@Gnrni3H4)0VQ2f2W9P_l>fbPz4QK zl)Zox7yK7bji2;eOc3;Z&4yR;Xi?k1jyf*j@JfR9*W1%yeB~S2D11K6dv7J#j>(u= z;eRq|R6P=f>_HS7knr7L^gn)*fAnskhm{Gdb926WUFUOzvrnYN+qa7bhodQWD;IDd zBl%t9GUvlH8%YIZn4;($BHdBkI!(qNPZt9!8qxQYD^FJ8hRM+5;4l{7iJoPFbDri$ zVQ*PZ5?HU>J*>FfILzjy#iYl_j5q>QEJFEB;<{`hm3)rhD#d}BwBO-SWBo{l@d_{L z6+^cU+e5KPoFL$bxCi|7V>g@GGw?ZT{!t59Q7c|G({lZt5y$T@@oK5tedNoaaO8FBt+cW1Q49yKbYBj=3#`5(aLY3S(lY zk8H{w*p&3K*E|3FWf!?cv(|}eb=@Zd5RDs zXzTE5dAUJDJY1Z3=yxElRo?lg_;7dl?>7?xZ)TllDMNBYv7ywOTk!6qQZK7R|Mo-I zr8rojXT_CQu6d!j+|=kGtXKcg^XS=9 zfTj@{^M&eJogXL1?NPt;0>D;0$O-q@meH`S9LZvCogM8rI5iv|fjT>gn6BleFA*xF zv1XW-;hhuNmHvm7W1iAm!z|`A2a|uDNBQ4yS{0}1flFxHidDvRJ{B+2x6I9{flq3y zPzFGuf0p;65%4Hox2!4shiUkS+(OSzjhr{dBx29gbVSsy+{^blxcs+`sDpW2jEeX| zi2#+Qvc9Jk{2I#=GD}LnnJ&NbrxH)yrT{2j|DL@%$P+I<36rHnq~!Qz>s)dk@$Py) zqs^1E@o>(&B5QJ)y|qABn=_dm=jE6~4Z*fFZ>9?qQ0mGxxFZRh76flwjx(rB{}5x1 zVv1Hx`c?g!_~aQj2;!QUd^|9hbhR!@ILQuatbJqC@WJD5bF+G`uIu zZwPRGtB9^2tbyqJ>U9FjtYE(Z3%D%XPl~Z2VTnyY{SM@DxAff|aQ;Qw zf_2XOH4u@+wwH&Wy(~RgTXLA&s$da#?DpPeVe`6jouf2YCO+N+$DE6w8U5@&<}WU7{OaBIdULap=G=i}Ily^qHRe2gi_ zBbxtq8k+$4)#an2217-`Kl`E!QZZ}_JcBz9mU9;d@YtJPc{TlIIg}jWgoXx!Rg(`y z7-JYLWNVq1R(uZ<)@cYzk%k2imXmpSHVfsBo;t`ehdu!axqOA6b+6%chwm+4^w}Eg zY-hZI+9_ZWmrUn-VyZkJyC@uv^LQ-aed;CLx#Q_5p@3VK zq+AEbnvn1Wn8z`I984ujBBo!UGCo{5QdEl~mjNZSLBoCkx zpk{L&jYf$`+SC_-%0~y{tZWAaqCCbXiCGt-3hT^56&RV$YARc{y4mnA-kS1|y48G& zgM;HXpxDYFcFVX{%;R`qN(RS)y)dW*GDepKV)#rL;Xfu_&%bc)$x>qhG^}-VIBRnN znY1Fv;0G5=uJaRK9eJX(RPuAE-TEOBlc)cquiK#%7ec4t=l~-D$;Y&`w2c%sEv>C3 zhLhW96hj6%tTLblB&hqwWm>1BqmUzuPc2!T* z)6_go-g}W{C1Sp=x72(4eIFrg_!{d3*6{mMX0@@8PaPRKx!Ll2O$TnHB@{j%EzI#3 z+t$$u_&1SEqT_U*;4n3MT1=h`_Di3)_+rVt{TYWl6Tzadq$b(nZ>T|T^Ht?IL(mI9 z48Mv(lHb*uindU>bXnzndZTjPt?*M8jUk&jJ~8wLp5!_!RYayb*jr|cQlXbHc=kzt zhVAuU!dPYxEBqa{iYwzw_*&>ho^f6#W}K)Hx&Yk411v+s4poyn-uLp_wx*ek#BDOh z_kw1>v z?||b;m1OwzDMEl?819W6b_#qYHqWt%9x(uA`wfA3Wqtb0ck&+i%b|159*zm4KmE#+ zX$f{F6aV@mH9Rz&^4oI@U6PA34f%J+a&`E;4|Zp$+iUmcbN3cYI$hS=MRg{h{P4fJ zdafC@nOytB(7LDPlaYS4Jb)I|4-?EO#4kHB;1-|HvS3!Q8!mUx(!iT3cV?sx_2$N< zMyLCW%r-yMntV!rI{kKTSlM#tO18)SL&>P97K&QUsgH$soe;jPI7!6?$eTQhXbGj1 zk8S{9!k?x9t6oE0?jO+&6t}gLY<7cf8(eDlRSB`^1;iI{4618E7I*yyU0Kr4>h$c!( z`6xfsfs~X~z5Y7Hz|C|d=1v82e(dIsu5ycXS=)U-62F;mJB9`cA=An+FM^#9QI| z4xHk%F4o`nKLw*c;{_fIP23G`)6;30q+(J&c9ZwFa{=_;3aO}p)hi#CP+7cfyTdvR zI(Gy)Cb2+qFrkzwBL|j;Hr?)kvQuGyy%}RpoWzB?t9KOm0Vf;|(-U)Yp~oYz;WO2@ z<8|(I&;E}0p3mn{YXGE+2Ww_WeR30oap?)^xlrQ~%=4N;@XxOFT&(2#VDCc{sB*J- z>vQI>#f0`VTIux24VeEVY2^ZDy`xHhI@};*-!J1f4c`h4@ip14G1ZF>6Q#J8^%SHU z<|Ijg0!K^}DutW^38SG+agnbTz<`KN($~U7o1$YdeQ7x1-#-*0mUaogNq~@)?>FG; z07ZYhA!3KwA}@==orJ{}>Z4&9Aaw+=>tdH($ngle*iA)-6f8dxSchN(ME5!_4meZ9 zBw{puzG}#We)HCAN4Cc2%K`rpCGn0x0)nHdK zq7Au~u|P&o`DC9x>wW8V-!C-8=hm9`Xo>fiyTJ?ktlvzRICJjLVc&wd?9r;U8Ip8E z(+>p8z3!58-{hD!IiDN51=AA07L@~;wB~do6>jawYzubxg9yt8u|FkgWK`7dR%U5w zcg3X~LSg-Lj+Os?`EG5X`5n z+3WlQzrC&hZOGs@H@;paplqV?r{kfxm%sRIK~vJ)&(``@`LST1KcVlBTZat#ZV>*f z*pwOx6amumr&%#A6CcX_&e4M?p9(DP;@z&(;1rnBiE8~=3gKREswXsixRtc17ubBj zFL5+*T!e%x;mp<$tN#p|FF9YGUgn{4_;$Z&`+<)grD@Ahofe2qzY7LtJ+N!xthXQr z1VN4G{E1Vb;y}ZuyHufBOf`lltakFoz^Yka^W^#8ClLm3rUhH{P(%L)_#Q5THguwe ztV*cJSmuSoL41HPY;E~-)h{UM)fEo9Lhgdq?F|LC(;CYu7kA)Z3ti1pL@;UKmo!bTNZp0W61iK*n{rU4} zKWwHgE)9%z<%cOBYEhu4&_oL2sR&48ztG>EiEP&^}f1!8CtKAyprX>v*u++HC?EJ00*uaime4i`3=9&|# zq%LZym`w2e3MWZ!vQ%uAolk=L2$eO6K}T+pgR6Qt6Ua2VmJzwVtoZ^T^ZPm5<^ z0o%Y$B;tFp-=BfUV^FTy<6Gsvclhqk$L<0nlrAD2D9CKa>S~R>H+#tV7`u%dHpG;t zGl?^P5*_dv*W8AXpHochIGH5~>Se%0ZZvJV|9 zJ;f%@3r%y@cBmZP_W)HwW9Zwp%e~MM9V=j=ka}nCXAoa6*rJ4Yd6{wOa55y@Q*y2w zoJ}XCG}773xDGe1c*GAmqOeFCW`p;2#M$3?Myp|G_0N6HkNeSE@92NI!cA5)+yK_y zuCtGn;F_@Me|N`L3GJX48IBR3g;%I4*kjLbOBxp4y&3tGTKqfj2qsSxzqnJO%yDh7 zvs|t znBlvI9$&z0gX3J^KZUnijh>-3dH5zoa_`HIRu8@Qr~Rv~Ss(|L#| zTW@z$%s0WVXQdfgmU6hNzZs82A(A!4Ji?rpF3ir7<1~zoPmVs3>teo;c}J6ek;0K!9sPEcCoKCj?BU5wg)N`>4exm--1oL zWKwrceN3}@OnEyvSiIysSF?A*BCpv4Up^Wh{nJ1l`{f5k&G1r zaW^^2Mrunhn?}VL6E|oDv@o%#o2(9W)|@vX9u6oTkH`3lpK%`36}9fVSU#J)kSN|T zb|;Xb^t+1qXO$lzdxuNXYv**(};?~6g zb0priXYk9RS^}!vg`J6z!sz8bWc|K7|Hni&eOG#)!se$Bk+A7e=Q76cS9Mx#%Xn`x_%s#u$-ViP*bV@=)-koyL#+aQR{`_ z3I}^5zvc+`nb7N=fi|zM+?uX`q5%{W0VgD% z#ktIWJs&P29q{1(#mW+x{M;#iuSLFKca<%H<&!~IOR%E*pX3JyM)hfQhIzg-i}%H? zFrCB6-kKrFvaQ-6d42;P@i|J=^x*+!xsS%cmI^h!-N@wol84e6*jyvUo{_2PnD=(D z_s69c{c_v0_oD*6KrR3Z;a~eEP|H-8$qe1W;j(3m+ z8e~0QQ@24G%gJ^1p{@5U9u}`{5C1E#M05Zep(!rgG6hJ8sqwyN=C?f~Rd4KgFSCYb zG{rD-iBBvXDOx5Ug8^R0S`q=ls@f_3;P|HDwP)SyljCo&dl8FQ16%91ZH{DX7x=(l zt!cEuz_fFI!JD)vqOWe#H5+hz70ox~_1euYKJ;v;AS3**bDldkkT4Mw;e66dhZll>ug^MTx0>#rxa_nHc-mHY5=aIyWZD#si={05F{V2 z3;7i`oAW)*)~~h0*-W>t-kwG~sjrK?w|m9JjoFSckKrN3O|}t}pjx_NuW*(U-h4{8 z?qL;BF1-QnR9)(Dza&#Nxd7+}vQ6rJnukbuSd|+}$J8vlZ_J%Q5mfB14i#H5v0>Kp zjx5>@1(18CXGXjSh_^pf+(;eln3c)0169Te$(P!10gJl)~r{RKN)G-48N%DuAJvw#4DhVR(6)zvPk;Qs`7U+8wt|G=)$r41{ zvLz+E_4)0i1+_ntSV~e*Y=*_k68R%+2t>vnI*&aS9kLZ16Ce}dGp#|vClfv502Qq+ z{l+&C5>wROp4vVUUDkV~Uekj%bKz|$9&@Oe|0$I#(w{$n?h$#nR6g{Dh9FNHAv;T; zRFP%@F*wCej$@2xc>!-X(8C>o`zE1fU>?P8^Rrjr*|hhD%JaXxV#wtw?@zsJhPH>< z+xdBJ&TCDsG7rNoV`|N1CHd??QJUsZ%lr=;bYxbcQE)=Nf%{^?Fu3)pejq^E04}JJ z2H(XB-?n-#(|SmR9-x8)w%pdA2nKR73L2wZ4m_UzvGg3{{KP)chVEEeqoEmS2t3?}QzeLnYJ3 z#R01?M`#)5NHG8FS9x5>KqvzXesxwp4wV!gFTA~s@Tgi$)XCc4@-NQFIM~F=a!Gzu zrC>hb>>gAm0LYfStDNDHxS&toA}f0fuhD5-qzQ*B1%!biJo6@f9IEjahJkLlNR_R1 zOI&HI@$8W`YpO&@fAKTd%?!j)SFNoE8gFcug*R^K$T&IaIuJ*qBJFA{E ziAW&p#b@xGeKY9XDX}ojcKoqPLpNV^0ZMg?NhYJ{xp+i^P1YW@jr&G+|*F;Gju zaXKM+t7L|nyANw5rAiDM&akXkC~Cf2dZq7-_2`P%dQMzw>$La)X5<*q_M`R`Zhgd@ z1~-ImA}8|8tURgf9(VFoz9Y27jZ_sk=< zpb(W*mHL)shpanSM-{EPbR!#d5IrxxAE{%wXoQcBnC~i3jWDym9>r?R2%h2h`0L2V{ie4 zB8%keu_FweHPqbkpFvWT6GVy#F{41A`Ciev%;!Z{ z@?&xy^^Y8@*@YSca`tqG+$QRE&{mOOrp~2`v5A&*bWme1iI)6Og<8hsjy5~UlYEj2 z?X%!72sSU(h>^UADO+8=VP|W94Q;TrvlG4){d}vJp|v_BU@yFWDA}CR{T3^}N@$|+ zNQKSr{m$&kw{cu_YtNK|dh0gT)hL-1_pP|f!_Xpq&@gmSQ z$+;ZC?ZHpHwQ~;ce&dDzI0XVq-PJd8RHq!nHUak1?V*WI=nD@&d6Tnx(Vlx&-P+n( z{pI}2*XcyVBWH#KIYmv>Zml{zYiVh*5!K-li9ma(RA&}$tPa(k+p53IcXR3vECX8-znmw z{-^Q#whVBL!jDtw0ND^Ljw~2{?~^KI)$#hqz$B}l>4(Rpqz)5Py!ehW1feI%V^cj_ z=v`vk#(0$t&nKZCJOM?ZMe-Ty&L8X``S^z_L-2rnr2FK{d6LI!rXUL6S=3h9wEmWQ zvu@%z*SfdbE9%%$+9tyVhGE*CZKf(@y^Huyv8XZ6=eE|*kA&NkfGm)2y3Ph4V13uf z=(Xck*?_{*ac;t;ohdb=_mV6+X_R6Z1wJN+#g~zwH`YU1D6XivW&3_*t;G8+K=`Ap zXW?)JJPPZ%p3Oe5Z6o#!!xXs?MlsNEmt!{*Yxe3Jz@&_Ll3#v;PoF^L8J&BFef6CC zle3h!+*V#vaY=p1%nDFE{3m*vO28iqS28lcpaOU~)bB84SCI%oH&d-Kxj>9u4H_X` z$Nh;dTPcg{lA*GJ(R22EE%_2w_WO%?psxyanD(*{W zA>`TLo;b!w;u!1l@m`#fSVmQhEycg1H%a1|)kb=cWHyqRhcp0nt}sAG#gLVtX}aKd zBduX*Dkyx445$nK?V|;_?c_mebmWa0vCThi)3-9j8M@DMr{FEr_AO;4q&F@f&zhp9 zKHXv{a3gc*^83w`k<|!g0L5zO>qn&siI=>*Y%@~rYOB_gHA2*lt#!of;K%?6zSSs) zx(xN?9q6=0a$@o(+oOh5tFf%4{`};iJu%iQuntN!uU;};TZ=^YQVRfS-WtA&E+kA5 z-PYN~2AKKBoMSVa{e6m3fSDl}$$kk*1b9rVnfRQC%+x1>AEDNo90%_2H5aHnRBRik z)%aaC-7o?EVPhti3Q8gLK(6V)6c=_Xy}g2zv6a5F)!4Cg@zEG=QZNaPaqhLtQ=ls# zF;DwPl?dZILm69l&~0$;UEpG0GNE=FthC zt0fkl64$pp3VBKY{Wya8Ur7qc{RIo8AGv{=Hk|90-Rd&StXdpGgbbN zP;5=TWV$7x`>SN`egAQPR(YW0L>7FV^DL#8e=7|07Z`4{9j3Xf007<<`#oYL(n$tF_yctCO3aev$hNb(9K_ zJ+vJ2l^v}2S_uUtdhP6$f#)HFxbF%rIf)9F45Vhh-<$Vs{Cz;#fMr59NYMeo7GdnO zJ9XR5t0j_i@NN)KDX3L*K(hE9jTEzo-5y&2?X?<1<#uJ8y#@;af&9)_zaRdN zH?EnMfAfV!0RwBIi?QQ`MMkjm;x6Qz5 zl<+FlrZEvBWsH6aQ}-lziPZ6{5#)xKZ$*FTIHGZ`q;Qu%{k;`v`X8GF?^ z)4^ecbK{Oe1iR|i(yOv^^#SCVx6a&dwd$jm-u%XiNwV0)?Z~rpJQV$ILk&-tDoh|` z4YT>yf0N@kYFP{^6U#f9v2x6<1jA*kXd#f*dtA`xJU33ghqajkn5vrlJy5GnWdU6*;9?C$l|LUe`K>8 z*H$?lfB#_swbg4U*^B}P=eEm(57*ndr>fXN$43Cg)yYtsUGsF+1|gdZg6?@Pnp0PE zdjo`XEr4hh;BvXtVgCPi_T7*MuYTGx>@stx1w6*Yr;6yL&7e-z*LFc0$%h~nAr93_Ijc=sWucg)+)YR0U(M03g?I*k*RBYTIsowNNojq};5`}kz zwJJpxG{a4z-QL;ixfRAcNO{O@aV=kp%m{k))~a#D!hS!n?MnhtAGuz(c*2)j)sf|H z0Igl`MOC{t681*(nHX2dUf-GrzB)H0h55&Y)bk5A`PHX-yraENRFCD__FMJ1d>HoW zXP}6TjO^ZEeNz~d?HvugxLpLq-B|tNZs_4xnM0MwUiD3mk159id6^)+{0~U~-3)|w zk4kT%#wmP+ZPSYQirM-+YQc!GQ%dxy8Lo44_XGG}wCm z(L&0H8>ePK&_Jc+qg$y#|2#p#FZK(HhfY>{+~6pG<-?2qn}wc|MuB z`d4}rDh52Xm(j-d8-W=UzUAuUhsPnUQ=RUyV}JO(+&zS$KICa`!3megg}gMXq?=o~irxKv)L~w&OoOP2cE=2a0R2kBDAoNR zg>D7epAS9hU*$Yw)0KV;oa5wD%XT`u;%2r%fW4Ih@25RDS~2F6t17vB10ep1BBSnR z*dHf+zXDi}&rB)9^O`iw{~lTFhYNA7_Az!t#%|rp;U*0$6(;6<*A%L^B;zEug4l@C z{*!V0H<36JAAN-XT%5nT4;Ql`j+hE~tkx}8WI-KRe# zG$IL`KX1C+c!ERSw-?mh-4zZd!VpjOEzxc87LZ#80TrWJ%$E?RLd*8}xlgB5HSgTH zbE&WarPU80j(myjVL`WE#3ezw17|CRVSqr#U-KxY6S|keDB(F<=!?CdD0c`nDxcvz zpt0i{h4>1=L zb8#d63tsC_KoS|TJCyO7CsOzMzx@PF@4yZpQ-vj{Ci`KgeRK26bFS7jC*K*rq~v=Rx@;}ewO zDvvclErqk79dElM#~4NNk=~)^&D$hT1-{x1^;wEM)vHsdYu8%1saah8g8+4}xLki& zr(a=j6xJDVk34ouTp`Uk6d(~oOQ#OsOFoPN>P2I^D@vKh-neq|vyjpS&qXBetUqYd z(;9pyUWr|6=Zrdq0{SVPJMxkr8N*$Mh+xHCOwxq;4>} z7z!ulo*u|d9oTtz)3xB|gyIvU>YJzic#dKhm|WJ?RpcSo7-sskc7;j+0HlQ`{L$Q*1wFVX&Zona+o!OIjf_oj zWO8(9ot|k9ZZ=|*Z=vu9O@TneQjGu9c)AoE$k#~+!we5W<$8B)trO7P8gEs!fF-%E zyeGa74*BIs_efu(^A!|+LE$>e=yA!}V}2kDY~tR@tjZcnSe=n@9o+dV$S?-ltS-8LN{d1a|t2sCul(`R>?1#@% zs@*~(M}qV7^76E0xUOOE3J>0;=b?9bTFSM$EIq&{bq{?RleId2nQPBEM8C|WuZ8#7 z+?UCY%IBbAkodm1&K;(DOznf^k2?qKi`abYLxG~s9P2TW(j)`gCT|)?%w`tW8_A|d zufevZrzRd@CF85(Zd3^Y>0UmwMlT44uiK-Of$fc+klMd(RPFMd5N?MQGoxK8-GA^AG+nSi$UsG?AgA~@Dl<&Fj zn64qLVZ?J4V3zsXJv_XzvjRaj)ZZhW03G|OV_)8da;jH$Wg!&+M;`!3p9dicIrX5B{@UThdg0lzZL6p z;>UsW%_Zp>-K3g_VuG$isTKqRY~vJP7~RM5YJc#E=m=N!9FB-8py@VtL`Suxo_((W zfh4Z0igX*WpgqnYCgjFX#e_@{vAc^TbYyxgA~fPLlQ`(TJ;H5_rqBgMcUpw1WYq<} zVX)^(M1O6CrfSV5pI^?ljy&whQfat*fgBPZ7i-qsGmwql0iem-+!s!az% z8r647l{5;@Z<$?S`cDz4&K~L;9HZWMjfaJj5f3?%WZ;JeAvcI&7KQ0V3Brf(+M~FRzdHHG1&gc} z>I9zLMosn3I{NZy=YiN9{b5@jne!l$H{a<4x|nEN@?}?su)X1G{X$&7Rn^kl3ss75 zhP}RGjjP5Avo3DwH7DGvNOr*}o&*TfI0N1Ez#E5K)cvk~MrM7x)d4=+!3BzF*jOUf zIK|@6Y~VhNN(hIA=k2vTk#v>fM&2^oH6azvpwSVuYKgD(TGJ}pRTz1RG{lz$z0jtw zs<@IOf#IKv4-@cm%hp!B>o&^vD5h$XdmtQE*5upsD}`UE4pstqK@-G?wIn*ujbr8$4Uz7 z@cV-5HF;}1sbgVxz#d_NVPF%-pm2+JS4iMSe9ibDe57HIV0e$k0|-~A=e;sg_YQh$ z1AK=n0v97Ia8(T5P_@Lc;{KoR7h!70ApH0ro$?8#8@|oOpYQV#uke!p!DRmxl|aY? zXhD->26T=$pS*MszUMY=#pnmWsZqGU$n|Zy?eph>IQ>_N+6A>01ozuQG$L4#5^L^d zB^c10V=0b*ako@j)b@892*;g>FlbP^EyIy>9`u}o=It)P+r9nqG4MV}YPq)U1*2aI z-TTVC1d;&=K!CVEwzONo%X-@kR~8L#elxHwx~V?s68w@uTpQ>Diubmc3lH~aq;6Rw zK^f)=^wq+5KaqIv{0Q{7lLVP4Btn2HKH8=PLbMgQ$ibW1mDcdg6~~m0t23|TMbz>Eo>}`=u=AP*IW2D< zhxmL}nviY(JKdGk3*WuoflCdv){qtq;%?nQ=G2!T9Tl?BR|sXuP|p#BCu_gDGon%t zKo(H@CPOS|m^TDtLz+kTqyl1~STJ{}y}`w^I%XaLE(kfpQ=-UzD0ay0w2T4#+&xE#f{KaowvS_n9N6nz`$3gc`CbOx z+H>Ne$wD38SSWOpk3&;yFD4%Fy25uDXbJki22^)S9S)1S-|i8Xfv)~^z2#VEA(}G31cu|Yt?-tP28^@K= zd%pGEfP1M=ZFpG0Ce76aI{fE`YzvKRAGSUs8~zaJv%s$D`oG9}%djf9wq1Bmy1S*j zQ-pYy?|t}#A089#IqnhHb=D9C zP`q!Zi!D-oH{I&=cc+~j$kPsEdWQF9{uv`ttV3uh$*$HvIZ5j9kjs)k$=F+ z?@ajW%kVoyhtP))&nx{g|H5?DfW$9C5-l_Aqqu98UR#8d-!B3+IMY||)fVru6-3i7 zjGp1a=i}lXHqXZSm{*CcU2LBb5D{tp4i&!gJWf+&+TcJ*n|Wk}FVt6l^nxqsgW zK;&X~fWv2-%UOzpY5r!y8F1u}Mp^uRhYXpCZ++RFqHS1uxe{RH(6BA$cT@7F(SdMb zb^;l!aQlOcsIi%f-^WC3Bj3k=f8 zXQhYWeAz=ez_=}!$WbMV;ammo%gc8 z(|-QeLF;<--dv%;HQ=lhst#kUVIWBZSQVr>5M}EIQ zA34i_ASglvpKoE1zz#d=Ohmx#r4d3PZ+P&Ea4y!-;7CY`+t3a1NH&_m6(5W;HYW;rLUY8upa1G*-|KY zCAR1sq#4e^8r1Y@wB|(6wcs|YR8J8sFiB7rv_Hqc8`S2y>f69*_IT&B? z=MS#{?7$8xK~KK{`n9-JWdSCy62}f^pJgNSokz0&`PLETV4Mb&?JuzHz+o~cjv@ma zGysrh;d{3K*)1i^Kno`2VN(}i43OV2ApbA)Ick)H!QwT#u;H%^;*RcJn3bz3kjiQKC~r%h_?~(gt`3H6Jx)%;ZE@0{wws<+}L9`c6=QT?e+f z?-zjYI4DR`W%vk|v(<8&;F#F0U6%LuM*$EQb=a4!jeAc9g^d*y9Nuw2){OIkj9;=p zmZGi#MW@k$0$7oRKrw*Bp;uom4%&RO7ss^1<{-qR2_Pz}RfeMV_6ySwn81{TSwof; zdPa5kUWDJKRol~8d?b&Po2u==P{x%2DlLJliU594Z{bv%HNLVAQg_f(x0G1?=mXR( zhvG+xY52(E?Tp8)RXlT;+$AUDR07@)dwfFKB|ztQv9aK>eF zEFHLTzNubTrM)6renNYFPbKVu0q}f=?eW}Wb$dNMvLeNgrfj6XyrxbQ03cM%c*>Hu z4ZtuoP+y_QVKW7#t6INvS|GCfb}nQ*7PDGxv_z_vn_qpliE79Rb%`cmfn!y9EkBgP z77p6z_m}Y+i5l-LythLyoehKQUy1l$RWk|hiJ$L`JIbQwf7bjWrz~1`m1VZT8YMwX zmq!GN6cL_(4jg32*diwo(C1+1 z>j;SVQJK#V05$5x`fLE?DbFM5X77^z3P>Sbz41&0wmVc1_2WJ?#QOm~;IU6!rND)Q z5{;SDcm)_N`u*F1hd6dGfxd{44Z43C*~yra60m;ncbz-bhp+`7l=)>U;-tQv3Tw-i8`t#>& zV|KM@N<&NZzdSA$zmrD)0fzWittTv%H6>FGNm!%@jhUwgg>PM~zALX+`p+-Lb+`DC zP!nNQo((@uH`MO7)7j9I;`{G&fZ247i*oiX{w{b5w~!JJEd3tv<{dMS-+4?lT@^oG zZ4M?)HaWljvp2=`7b!=Qu3-JU5*h*XYHG^K-XAqj{2T8wsj$E&l}}xnJf-OI?8M%0 zN&iTl60Fx})vGU2PaQ>FO-~q=+Rxyu&hf%$em(N7NHahoBv8TRA${ZjoY$qes)!P= zRg8{y??4aW3@~yS4KA<|!*>FRpg9ENrB=^=5JzVB)jdO}O1~LTTi+QG2xM*Fpl)Kh zB|0VpZ_sy8Q>@RP%2Imw@`#e+Ei^hFH+j)@>9gXHZ~r8ZXRb0EOoWbt{p^ssLz2E5 z(F+)y;gvsgd4Tc=?#HL>cv+7v>*h@^ka*n#0!iAnjD8z4STK1w zewSV)=EU_$@Slz4pZz7i9%a*8j^5g*ibBO2fl)EtIPr{C-tu`-bjS|(ai#3MZ8;~)WigPtlE=oqz-Xvgb;84_q$}@{2+y#JpVcVI? zhW?)HfU$jm){~oJMry}I3mGQSKc|;B1kdO^rS#mSHv)Hck)budaOCB0LX|VNqhz2} z{N+(HaDRKbFiBTJVC)tzhXN5j@AN?+L>Klvsz=QvFU(xAEsvOJGM?`8 z`(xh@{eqSn0v;*!16=$-UDELFcN_yM|Eqk8f@t)YlxeJ*tjw&N5b8)G&r><-bd&-$ z$fD&7(v+nd`TDFZQ;k@DEZ@^D$vzfV>GFkG&HEf?h{n(OibeU6gdT2{C1hV*lE}_t z-!cUgOn)S;AW5-7LH9g0hzr{F$--Y|40UU@((&?>s^Baky5byNGDPZP3;hL5WT>WE zXmD!k2R1k$x`6k51aW?pF0F33tGQACo+QF>TJ3k$M^6x4O_kD7qGf9Ep|M}n=UQLGoK6ZdS5#nM8bJuh7yjrQ(Ivsm=~?<^ZY>k1UXp#Cd{jf z_orMVi_Oo1VYhF4q9O~NAoK3KiHt08sKJ4W5XKP=E7@Afz?g2}f2h-~@I06`;kucr zcoPoJdvkZ2*zF|qto-k_Y^4JwBghPd5PgmBeD(SsJG5ozq>NER8CJ~xwKi;q*S@Ep z;R4SIjtY1U{bCBUH9o*eAVLTWO~y6b;kez9NdzHRzx@V64^Z|KJil)Y40SL_cIxQ# zy>G%2$f58yWtD+4>o-+bKu~-tX~TIqEr0W|adOLk#`Uw1MwDsAlYy#&l|lj4gwWq$ zY@IzgTLu7l_hSG6P8vU;5PtwpN!jrn(a9pEO#RqIEF)Nz5VT8UEQ>-SKvrZykxncN z2{&LD^MAnFjx7t4H44-GEb~VwkDmojFeGq}O^c-UtL5DxQJ-ks6Hi2(MfYaS5f|2($bRVx2Qbwe%uVqvM#)E)~vm zQqBv{;{l!Cx+;A;AFguUaP}kY7M)(Hw_amkpBeJ2<5Clal13rzsnDnqC6_|fPo?ta z2dizS5x-=)WsM}=gs;~=F(^phrF~GB@zN|dA_OPsB`sK-i^7+v;%D{?yoLhSjQ$|- zA`iq>7)u43_C+!Ht~3PyrwE0Eo1U`|R6Fh#aY3#=31Bm6noU!&i+{>_)qG1CTis^2&6MmEBir`Q>yX!q{`NaUDF zNi{PK`a_gv=!p8mkQPC75M1@OPEUl*35a?duJ|SC(AYVFfA*K?x!JmSAn$g zS17Z>(JJ5I&u5o99mNIC;RfChitr)G5YcJn%7&1u8gbzTSR@sPU%;)rebu3-54HBL zeMQu+e^;rSQ`0(baFa!JR6q5u)4o5O2toFn_9=}=`d@F9=X(|sp73Z>hvK?->QD*o zP(p>k0HVlR2?8Wqu~bA2oMikyNClFVnz3dDB3=LX=9F;>GfphA_as~iLA-OxRv>2n zgF3=%EZA}4qMnffPkTBGdJ!8}s45LCZ!_LNJojoO+kILWXml*Pv9e3ZL@8mgT&U}Aur^rTfqPH_RSZ&mG&in=P#=HaANm=)HTYPx%A~Z>7n$^xF3f| z8@iN$_68yB1h5};;D(h5&~;z~Rk0fz&2Y6Aj6Ag z;1jSj3Z~z)`%#Em;uf=`5927k0ImOmcM8^>1Ux%H+@rNZ* z72oZR9#`vCZ9KpJM5SSB&BTs_|I^Tii_gR6>7!F^ITjaxhPjwI!#b|J?_w*6}w z33F)N9F+^1Drx6wjS?&KnVcZ!#WxPRp`7?NNoofKt?O43f7JuY8iLMJ4qX$KN{PWf z3ctF0zvG%{U&ag<8576~!SnX0cZ8zE>t>_Z05bp)2v6qhYWSY6LdrFqE5g9*g?zrvAu%I6WH5&wBO1KP9&G$fT9V2VHJ%M7?R z`?%viG;WrvYFH!_NBJRvPWA>P31bJ~N0?uFfKSIQ1jlYwy`or+gJbJ)jnzUb0gt#cl0p#A9!wDO1*CRL{X(vNohrooLTZ zvWJVsJ3tS``A6XSvW0$7M*Jy*d(gG+SeDNzmwHU8*Jl-+IlE-|JI@3uLO-L`C zW(D6o>=c-fu<=uq4n)62L?@aRzFWM01jPrhXT4VvPGpJ$|$!gUfW zaTYa~c;FqS!>qN+y1GTqY5qX)5WBVPcWD6f!G7>?>8t|@S|m_P2okaA*3!eml1JLg zDqDt@^T!lVZd^e8x+R|8I|im-Gv$UwO%kv$+r!!O2l!Ud%JBg8%;RQ!tToFSh+9BN z-ikiS5_F}VuQ94I4c-46Z_pmdYkW))nqXF@{F}LtV;i|`^aLqHC>%%%r7u3&b0nk6C#CSu&Cmu4oSbSB{87AycQ2gLhSJ6{FqjwKp~Ia z9AB&=tTe5VLMZMzSCJap;XY5g4$mb#|I~Y@;CTo8uBhETecwi`KSE*>S|CcxzH3xP zTT*Cy1$CZFC>m6cIwFyJTuhJrpnsB|P3pQ9VU|9XXrve}@QM&GE0T(kStDLGUxLAi zzXq>l<);T*^{!UDMB*<#HZ229M2YhFU++Fe2Hr(!5(M>1t%4VT8F0 zQuIJN0LbDJ{k8dd65{NuK+Ul|FX5rjpjBmfsK>PsBLzJHEl=yTytsVN$78wPPLK+wvZLx)XVwmQiO2TDWtMT%0Y3;#ksw) z)JnWS`8M0Ep?%~T=CioJ&Z>Mxn?6oEduf$pb&$IPGdf5zo@QQ^k;)c9bu zdP!xnJpv&bO);?6jgX<$KbdL>Y5l7o=;E0%a=Ez2#gHl-Dve7W?awyIQAr!bSmtWC z4`me_Ivt7puCrYD>2WzI07uCja(>J;uZEcbHOIzOc zmu1Q?R|gvz6jvXi=N7^8#nb( zMIMVOT{YLKP~9il^n5W?P@F6?XTNG5KDKYq{Sooq(n%vj$F2B}6e2SVTFN`6K?}&s zXs8})yji>hBF4u7@*3)DR?Tszvb@kvk2UV}M||#mwl~(sy_%gi?kv==p!bLUmXr;I z($oY9V2?$6rN=0X1B+U+SD!t=Y1)$OZ~Z19F`Z1zz+KK4BUbIom}t%x z6r+H9_f8z3-Xe=9vXM;VG$2pm28A+m)n~boR4JIwHPDnsiKzJDoJ{^+H@n9+Q7X($ z=``)Yc*{szB(?(o3#7*|jFgY$%AuC4G`$#}p4Mky7j=}ewew!K+w{&QC0VlbV39NW zj-RykuEQ7mt^pFhmqz);$QLF35!mAWkh9gVTR_Ujh#gROyT?3p)_l@BC1^P2AHsUz5mhsAX z>KJ#yLo$oTBd^?mIrFqNK%?~Mh}M>!`Rsm{xH?J$hl%Kjf7wo$gi(Flsq}^ zsAVQxyASIv$Xf7{izede^hxXA%q3!=XFLG#&)3WyckOZ=o?HJeE0!9f@1*^L#OCqQ z&W$rKOe`)kdbDzgZBy27#syeSj)j(7C6?i)x_Btm+lQsde6Ht%pKkrWnr%6~IiO5w(Pf8D7m zY%))-VD1gsH}TJ8Xv03|^Fq=wlp}ge^Uq1gnVZz&Oo(pQFlI%YM;|yTrM@2}1Q(2q z{oS_en??AbOIa2d@|sBf;_pb!mPAMkoq}X1aMz-Lc=G(K(U(Pqu$-R0J%GZgHP~o^ z93J66_;t+JU|biX`HvQfIDWVLbfrnQV5*wDd_Sa-;DnMQPz5s1zxF)hhFhUrBLaFG zi}$Z=(&t=1hTI--5m-817Oh>T3B>ki2{fQFQO_`AX(l5uhW?1b?J-G%Iqn&o57tjYE3`%LMGv@XsR8|Wg5X??!x_* z@>XTgdEPUGzVne#t526e3$K$M^5Y-`)~KNJV9uj5A%Gx3^Gr9s7!tplX7t^9{LXCr z?-VK;YKVciBfG=N!p|a8lhnD?YrY2w8)>{I7a^fx(JdDyd2ugT3NiK^UHr(6eR(sk zGHVW@xA`P25&e}DF)K+Ex*DUvu5N$sk2-GI{(z&?Lf!LIybQE|hNWZ}6)$ZDyDOE0 zF@~|#9_Z_K`Pf?OEO$92q#-Zy9q<|@TF`kA-iESP_u5bkC#sLLYeLK{r~fQ^(ZoMD z#IzQUl4wHl1*JN(VVeNp;VqA2Lw(v)wf_U^M2N$srn|pA=;sa=8pc{--N8DT$2ymD z4D1b@S=rW?QFq0FF7yWc0RPhb>V?g}Yd>@#CZ!??#Bmuy%6y`gi@ zm!RA&riN0&4EKOCVc$tt6w(yRErd|TM?>+{$I~LjtMCbw14#qM9N56hEE`oD=}DQu z_Fkoor;~jF^+CUG{(*xdc;LQbpSY@_>O!D!uXaC-KbiR=5(p@~o-<&jYcq82O%t#t%`(W(0WE-oLcwU=Mm6h&49i$|GFzoh& zxEChZ*XWERZl^zRC#~QxjJ)X*e4^v$ZE{$phpv^BiZ`V6z^WZ5kn!^B+b=#BHaHv7 zacO;;KV;Ci9{wee~lz9v;4>`im8rY{;@4IM7y;2>yhZQ z`$`xTBEd@C$?d2wl96zKC|$gf{-DSFDloP)usDRpkSLv%=SAnl@AZ`})9puI2~%;( zR@AxM;V6}W;5rk2LWgjqQDYt@>3``YYZ&bQL)qZBd)8?;EPbOtNGYAWizho$1Euh_ zh~Z3-P1rxkqI^uC`vqbrzUk4U6;&Y5X10_*bOgSDeOHiVdh5Ah%0xX1ZZ+}4Fi}sN zC|3GkbEnrGE-7Z=9eOeY?OJIT2Y0tDD|828IYlT^gwXR#D(;@6WbXIHT{a$K6L*q2 z($TUFm=%h+a{ORG;%)dcdN=ka^5KCt9OnWhOAh}ijPl&bw*1iZ}gM8a?wlc79czN zg;^NN0@iwxG{*AvsEfW#BPF-S?f1RgSlk5&0v>-kxYGPVA!PRtwF@rXC_y+NX*zwba_xAUF`ZEMzU z1@8Q27lZ2Yt!%c+AYIjadLxm0MIGV>WN^Nh8Pn|4W_&@Rr-r+5e^VtNX6n3bXZ+n# zfIi@ftd{JuZEKglTZJAX{c4+anhO@x$ntmAe)!k&|I(VwaLowNu)EqLuK}z_OD?hO z?|y$GzP+_aT1Kn$Z%{{7as~JHh@ze6FzX6Mt~@YR!7E1xtc};y>?l9x6`Np^B1dme zwOo0=&`iQ7g_gbMFBH8OD}SJ4uro$d>8o)sbFzxj!8e#8*xLy2LfQKa!@(h`xN6j} z?Zg9xJW*iaA9fKwl)i{}|CNf$xQD@-R;N=8=n^DBH|7k`lGPZ#F_gxrz_Y6M8&;WE z@<_l-e3A@B164-tJ*g^pOvtCRAHrq>ICmh}jT!W5EuP1*K&Q$cLzWf&0O+VI5QJOp zck7WEQwuO)s9ACj-$K1Ld}^^RnzPGB!%1@7#SW04+FqvUWWD=cdUd97`ggQwBv+gY z+yw;>F5n4=LqrSorEr^b#xrCBDPm8*+ReQOIw{kuleG)?4UK2TQ$TYS1OA7g)${o4 z&hHG{%9@?gQX^1Sb^-yZZCtKSeAd&}TENjg$pwttC*^D*<0qeAr3`5`_!g>s49`>)PH5xpAb0kOJ@}3B}U8 z2G~YR{w%ZK5n9x*Hk+3E`29I$%BS)sBFjQ#LwdNM^tS*!I!>HMQK?@2k~{D|_YyZgJqFS{|5WDC_m^UkJse!9BMR%u zRxFSa$~9##2j-LO)+4KA(HDw$<3aAF%qL`Mb>bBeQ~F5_h+>w&WIMJuTPIh`E^QmI zeeh5Oi$4Yb;Z&m}&3YV1xh85nlFsv$wlj$+Zd^khg2Ttz9qpj=!5;f>cg=M_&)3rt zF7!Vh22!|AmOq!G!3hz^rnNA@31>Z5Au$e$h@hX+fvwAnA1{fH@Gzb{V_%m(1VMHb z#E*8L0Pwu51jCll07uOR*!}0#zSn2fzt0Gk8*GVzAoIBH%97G(*3kDW!)^Y>COV&I5FKH0pZI=;koy;vlq_vMx2xeGc;pEXS^2n0 zE?UIU-x&n&NA!3w0hIfJfUF)Zc8n9f(CJ*yMFiMD7{FlXi|quEL7j`mJcbA*K1o1J zL0gUvnC?Mgv9krD_ynydY3Jp?i#y*PXl8mTKjj{?Kbj8;?zx#2J7h#=&(9K0Au0Vz zD4mABNc{LTvdH@}8@mUOA?jC&w?6UM+>1yeUJW51t_NMJfB=nN#0@@0$$j8 zrt#yHDF<}%kM%OlXJ^{gNO6d-(u57y)`B}*H%x?b;Q6jGNt#u@fGrdikSm)-bJI04 zgh6g|_JVgi$6x34HQ1E%hMK5d@QyNWI+_GhTwgsA)}rj?l(dbMGe25vt}K?Z2~)wh z&&U)S1RfN>#58u@b=L#G)eh$KvFPc`G^5n?WzO{upTpPe2WA=LKAS+{?sCt8(DU8Z zUqsxyV&ZSF{M}B9#iN7d)RLUpSe7946@!XsnYQfF{?Ur3N_KrL>c#Cz^6;KYnTDrBe$*Wb0 z@_hNEo0kbd3gPg*r};6VSDE%cjW5)H%F)k~+@HVy_(R6VpGrA*FY}nu4L%}t;^!pY zX1G(5vFnD1GW%4p$(DH4g9GLAebmqKB(YuxyaOQ@;r=ApCy2j|s@tR};);#(DbnmA|7HPn-B7ZRySDp>g$HWZ3;ghMB;|_QCv*2z zF{Cl!^)U$gvqKpq=+^mMC5|A7K#KaAV<-zsGL}5l-n*T@=370ubYc0k<4{!Op1no!S$XFZVzWz{O* z_4*?Itl~|h2YY|-6UXGGW)k%KxursoisJxKO=NY-r;f`a=XdCwP1J$-T}gA`uH*5U zkSjYNxMpJtdTc{NS0Q7;H3pQmK_qV7%URj?%1ksh#$a(}*W&Sh=+NB{qa?Lx-C`5G zOyGo^`-e2|Fs6493#Q4hX`FWrbKeWYEj&YvO_Z`+{Cn($T>kh3t4!IfjWvjHM-fd> zdy%03p<^a%&%~^v<=*gmWUWq?;Teif!;{X86G10+u6)VM_0CmM^B?Ej23$iam&vnv z6%CB6FuB#wkCXlkB5)Wf8aIQ_d6hJ=$M2z;m3ARZ<02SIw2CeIKbL_qLCm!)dl}p@ zEjuzhzH|b7fLA{U;oJWJkFqGW=uZT^Y+!;KE*97?d^|^GLOIn$kQ@#ImP(>!;id90 z_LGO`cZpkqhwqc-K0cJyq=MV!=IJ9I4y#oXS|q9~<&zk%wXLac*~pvT@`D7Gz+IG> zlhyIGRUH#@d~j&njI+^6dno|C9WGfK456!rN5V{CRES(?`qi7TYVkiCaT;TSF*62V!iYAZ zmDbg=RT*+}zH?5Sk#GClVbLndG0`bm3kr%h&+jy0rIRsmt9y*sf+R@s(E)m|ui3Ih zw@k0)5gk}Vq4ZjAleDRA9p@R&_;v1dBQIT6uHGseCp^O=^XODJxzCxkC_FL=qL?6% zrhW!%rJps~R5W7*eRGWM84Ev7R?FO=BQE%i=SL;o9{cSOh=2HKZ;1}mN(bKIF4dWy z@)9ml%4ofD@c$TvQIjPceTVSpoJq~_3krvkmCOhVfrd-r`}l*g7~;nzU87DrcW$2@ zYHJ4L+cs>>{ZP^3Q&efFF&0G#=_2Np`#WP#bkxW1gMUp77BIE;hvCj$nWb}e1rdA^ zMz=34Qw854Sd4)1?p}#M%C@wra(E84W*<96!U;4X0)YkcsNsPv5cFgRdXPVuQI)*;n>OK(T7RV?ncgtmOafI%4!6FS>HK}T zT6wvnpH6v3*(i2~!qH5kNAd1Gj6X-nCOOnPqfy<=c%y2uC@a}$Fj0Ii>;FJmr0^tt zZsn?QKj>e1%Pxuz-YD(ksHEMD!6H-{{{gXBHRw-tE+72%V`aGRU(ekXCM$Wm4W76Q zXvkYe3AuQ$X~gOyD)?a~7Cfg!Mwnph3EcGGM%3%wIv2;mjW=c+Wa+Jyp>s{s&kevH zPcIGA<_S5^ANES+O(1ILEtVMtty%b*HTGsu%#!X&F7_^w!w^}R&|&~*Rk_i9N0p}4 z7V&DuR#X!Z2d@I3bgFs}vTy6oC1gG0cS3o3>*#OteJp^-hXo1lN(TTy>#bZcowdglB$k?M+DP)9Q?HEPb3V2v-~RA9JxX_I%pJ=pZU%Rv2Ja} zj3Vda%|CygTsAQOu-qr7nz)O3hx`lv!t>}AUu}A}%*N|GgVi2wxEf9kgr=)^I-cUJ z?2nw2xNze?2*8u0;6mRF3V5-Hr2M+X@b=_ek9~_paiTOsCrv$wbJALyRDL;cAWi)O zcfhEMXXu+CrnNaM!o^8dC^x7H_|Bs{MU>S317x9~LKTP}zT!!E9H`zC?6}HNGH)90 zy`>5feD||i5w0lXGrF-1CdL7&!3bwFrM3PY`rId26WNOd-M=d{UV1K6?eg#}{1Q`f z2CS+`9DqgODW!VwH{%R=+V~~=_#pk*E#Bku@$A94ruvafO3U?GQvdURMUf;c~J$Y0uuiDJ9-CWMxHN`pzC!I$>@gz zX~92V7a0m9key23;K}&L#j^0EK0)E9LiB?I#iU*Op6*kB!`12V7xjO*w)6!ZEhdvq!p9{vbPE1cWpO!$h4nWq9jIe zs~wVVqofv35_*tLa@vT)hNQt+Gl(;gX?FkXh!t*5aupD%T_6@b2z1hUIyI)VE$(dX zj}Jcejw_Tv!1{H68E6_naQ?w8=#1Uzg<_1nNct1oBemx618bU@zB7Lol-iEB_xbYZ_KgKs+&ny`2%bkC}{zZ#t8{+P`nUWX!ATy(hw7k-`<; zTuJW=TFS?}K7DRX=&ELekdw~>pgA0A1iSVRFH{z2vS}{k6m{v3U5(nA+Q^@qG42sd zQu}qxGw5NG3phdkXi8_6K~Ysg`G?`dU%qEOWqW(4Th^ruy#{Jb z`28VNd%l`mz<|Ekk^?%9u6C)H5tg9;t_gVb_pzHS;Va$;+UaLE7l+Yt;twRiAjiw9 z;Y9sD#)JtbKQr2a1w)8xXH{9D1P}xGpAFXZ|M;xXs?`jn*D+-LXfO=rY<;<^jazoPf-QIh__-(t?2-YpQ?hb=TZBScx*(mi=bby$0q|`O1q_1MBT>^Ncl(ije73;6zUmr$ zc?52Km98ILT^V1n`i@1TB;Nj)HvnJkE~i*^P)al~uMC%`+RRTy z0y*V=P=?yq+JpI*fIGqVG{I8#mPiu;=qKOK0E_?59M>BWW~27D3Y^s*Pf+5Py#9;^ zO1>~&^P$=2rzIW|taWGu@S6!~#yRa&>AaIQ@6OMXxC`j3kz&V~k9Ao6Bf(wXSV-8E zF`y@%|Dg3n0~NT($upkWlXWQ5%Y%z=zBU*YiY|S2m*1bRI0YgPpG4D}!DcdUV~HZ( zEwC`Z^Uvr9gZlH?y2tf8%zC~GM4cn$pUj6-FZfrhQ1Z4EkC(skrDy>2!{_@apA?h| z20`W#C~&dCWoF$+WW;Q}mEeXG=RH_Dj5Dww1#8Ju?#*3z)|54!^fHv9<@aSVb(iHVRyo&O@ zHgW&P#ONo)N`#{!;Z5{t7t&#}+z<3zQ|a}kDL1qdhO1ov==$bZZQ*HbqteOmH=1>4}YT`NxQ+Oc61e zgb($aEXVu}NAH42Tr@%B(pyfgf$VsS{2!r3E{oU!JCwEZTg`AEmqjajh>@3i-><{Pi(bLdlWWdUM zmdB0@IYv`~;4XR@A#ECs?6=Yd*CXrSzJG9xxMXf&_^x0_xbn=vc5aUmmJhOZc+thm zWMZo_cet|k4oDdmCFplb5QSUG4>~o_vnbv4y-d^bZ^g1rOO|zVnTez%ZBkS+&QL>uD+iyow z51Tk+);l~$6wq^TUQ1!$LmU$#Mr70O8C$z|x@y#wTWM#=+uwWg(8t-llInlQPtdZP z5qPJ=K)z6eiQIm}oOgp~a7&vzTt}DZl#VKR{{*G36;)e=Y`ol9%WbaNl8IbLaFND= zS89Q&L#N+x_NW*l!0SyLW#pwf#A4v;byI&$0>gYspk==pIpOGQGlkq)f%ehz_R$Ee zAF)j%`p0vtYeBT5fz$MdU+6^aD6`FU#gO~8rKdZJmYJ0<>w|JW4!p5T3u*`ZkC^Np zpqaqfjroSoAoBAt7*{2Uf+-qV1zG-x$W1@z{R=U90ckjPpmVuZX7GD1zq?IOpEbe> z@+;pJp9=XNHq5jo@pb^$%^q&!N})WyV&*fBI?i!oJ$_Y@jRHLTUKA5U&v>x4TBf>! z>p5Qo8TTQvntJZ>|ozT8=TwdpU%psgEXJ1z&<_XAm3A&uI z8VL$ma_F~9I%XYwAitobs&d3Dd;JklaqqXEa>>f5b@#AZ6La-r)92lwk4DBl83Afv z^sh^B8N%nOIEqn1q61~1D8xJ*xj#{ypyQz;qp6Nz9 z#Q_KGod4sp*WGczV-Emh(hkME_*h+eh(_D{TRHV&CXAMiyhNR$6#EY#C8@`u|M7DI zI%CGiTB?LULFlF#@aNLYbWh9Zap{d-i@KlnrO%)d+CK1tNT@f?+bo$=xo+1qlm}If zs-^tks(^?ZGrR4h?z7q#2T3;1V4(zJ`h5m`3F@j6BMwUE!JQQG~?QD))e9 z(}$}HH(<*UT>Hrl#4Ex=3iMa+a(h-tj`x8uubAol(n_ojCccH4y|MWF0 zT;y_n^LR0gwM+@wG4ugx`|ELFg?DFtUkk3TJsC&4!bHs)=k1yT)YC&0oskt`0FQ#B z$n7|-)arJ(k0c}TcO;?Ts`%9^yw9X`pNjjOH6wg`ha}7DCNsmL+mzCU19Fu%XY!cP zKD**a-oE~BhQ*?iJDZuxY(KI9z8J^}pwix_LLVdp{m~HuMk2p<9$44k;n1ZceWGreR!H0bB?fIZqZ)ppJ1bZ@xE(?dtl4eZQj| zUty@2@jBjeOu>CQ@M_$aiLBcv9@u+6+~DQMg4g54k%SzGu4&qLO~Px2QVG(sny`Ou zz@9 z-3LKv)B%ZIVS-%tK0gLM_I-D56HQdX`02zeU?li7fYbgBVPo1$fF+3G=o}jfo z7TmH(D|EiQ^43w(Yfh7YPtM6)YBks5UN(;9isvS3MXWxVmB`huffRq+l}XLVj3XaE zxFTTG9_%bY-^K0QB8Mo^7e#ouLJ;t#l)lYKYAP#D_>P|gitOd?Fx8>0G#a~?i*yxwP8Lhj`coqE$SXajTNcJsLb?eBtEjm1_ zwbJqqn&LXY0(GX8jD+BS^vr6~tKc572G7{VZaeqAABax_HkHW-p`=)m(SDrE&A|ac zD<1ysD$WdYarBb{yGw)M{C5p@eCqS+48WQXkUA9~;5F>yrB}iFDOf|MOKY4x2?t~i zBU6{~PkTJ0aHvxuMaP)0kF0^q!a~6$m;6kI(iIO{X@ zc1Ij35FESCFHB{|*NM7xc76_iG1yq8J158n#6wD?tiUKHLSYlBhuxZrFz68na9M$W zSG`ul7M6H$&(+Rn4deoxLlAJBBB)pWi?;vyN_i-EfXu1mEXQ?(VD_H9I{Fq%s}J3F zP;2qO&wuNY8mak3m^fho9yZkRohWuX6eOQZ+oJbX;jmw}rV7IpF-KXR6z+I*og^#P z-@-aueA4T@zgXHiqUHaBZ`@N(M8>|?fFWSiiU{negO;KfWD_^MYH&@x7h*0X+mm8) z0eg|vDV3?*55<~awinpeXghx(wp+g|1Y;f<+W8|i=)Uye@(mU{KrtjFVfMa|bfm)& zS{yOBY5w)%n*jw0XjjIUgg8zoQ0b+KpfWERQ7zMd)y360SOahb=kWsgO{K@*Lgm>NfN{>fVuu*OwTN1poJw z;#T({h&{5XHWb~;zj==K_U|ulWo-7#x~H-@0#2(CSZvzQiZ{gI*zf+FW*7xF#3kHJ zV6Mpn=W&Tv1sR}zf&jH-e7=3a^Ujq91|{SJd;&m0LHBcj&hEb;1_}^$6;VRacS!?J z)ZsXQyyj}`1R~Xo6kjAUDydc*zi53(GknKV89n@b#dqp^JHWbN_ycGAmFdB3el%UN zpgzEoDqDWD!h{)s#pn-&!dC<2rnn#j+=wxasNM5!T`5ly@v`nQx$oBC&}6#8g=-^4 zJ?~dv(2>3d_3!(6bcXvcC?T;DBe}YK9bm^kJ5)_D#Vg%YTzM+`8Uc?0s^Ec=%)tJF zNwzhG3`G_G8$c}Vu!~glC5;XC7AahC>MWT?@+v#KjmTXd71lYY?SqY%ehzOlJnSO&Y&P#sxR^C0aHH?}@%zvXvmqtX8YqQochV0^y8b_2xbNIcwe zDz1xthQ|g$N95&t4Xo4~AaJrDoeM?bI-uL&F-ciyaPn*w2-jo)ULq>pa|2@jxh4Uf z8R!a}#Uabz`sjteOJ;$)!SE)~2%#N!c$<3I0zHB-nZ`gG7Znzz$gVzh2V$lw*eN^pIUwDmtSWjz*&sJIREgTHhFt%;}5un_Xs|ZJ&_m z@SS@JHfwKmd&uF>1e>LRxilzHY35}i{hlpXMIVb?(1kv63jcSOj(A-}(%!s`|E+>w z|I)TiAtq@!IEfa9T>d|*zB(%E?)!RX=#WlP8tE>P8X7_A?nXh7E{P!(K|qj_M!G|3 z1nCArN>V_&K|0<$`h3^Berx#$E^+3Q_wKXL-uo;(L0(%N=og4$$@$1U3yhG#jFcT~ ztI!jHQ|3}0j9*4hEqC$eD-RJToarG9uq`-xS4X&P79i+!&-D;wKap3Q*#?4;grC@u zj5a#zk&D*n2g75Mm)raq2Gl?;)7>eF^Jiyf5~+p&lLlQlZh+XSk?qqx)i*rvmtA53 ziE05zE*1THAqOx9ASz-R=&;QJby!c9sE0dSq((VW*9$+wnJXsWC3PKs%Ckfk6HoGW z(`JEwHbuW0wwk}^JN8ErFu-8>KeCyAHEN!SsDa ziTLbmS2LP{k$Ijy34Bq8Mq@lli#6)eW>6z#|V9to4p(wIqRx$Yo$&h+slo6=E^J&4%M2w&Be*@H4(l z&gGT-;K$u2>>KZ!?)j8#O6T>CL(3GM*>DG;)=^$?t46&eUO(b43Djgs!B4 zp4A9MZ%vL3iD_PQHh*(YVNVD@zI$9|+JZrE22xD)CNRwAE^}sI9-)(&^;Lf2S*8i} zUWHDrnB(PcE28XN8#(l#ROp?_=k-VZZEA#sAZGk{?hbPty}cT$eSx|Dnn?+MYwH51 zdkTEhn8@=Ov3jOU68H>sf4&n=>`w+t%gq)Wvp>iaFGuLd_?g0T~_TKpSvF0zvDsy2e;xlCdW315o3{Cx5LZ5y>KyqAA+lCH<_3O8> zK*=6x`X$2*E<8#i{DA1^`9Zv+<(%r)&yL(CN(u@3s5;uX6Z+ zL-lO$St`h<$!w{ubvjTrfyCx`hu|CoCmrH911Z~GkkXb|_=eV;aw`%8N_+VP7o^y$ z(`YcsThV@xd&>=Dl)nP@`<+gSatsq3V4QCS>iIoGwP=eV#CU;733=%KCL80^i-2VG zu{DFFJGbZ`DjAzH$4dj?k5-4nyzPzD$b(wr1mp;N(l9%glC3>nd@=S8VdaHr6<_*Q z95(3PqJEe_m80b)04@4(Ui_aCB=WQ->X0C*XF}z#DV>y^y6kjloy*1=j&XFfwT@!L z)srPok@{YD7HL;_faJB>5ROh5$KLGukP?NuIk-R`6m=ziVIPMH5Lco;$Iqfd;~5g6 z<;l+ssB<((Aj3w7KacACke<`HRHBS*zB{voLP;{9%#Y{`R{kL?vT) zXVf8weJ~5a%-6KEY;ek!30$9&$&+LzJM(;n?j2(78-Ic@wlaoHg=)QpEmFFCPSuZfxskk(hC5?e{K*pE8j z*!>(xMrjD!irQZXCH9Bb8)=0$oUQefn67`~%;ErC?2Ik$*)tqJ7FUhBf_JM+lFZ#i zTQ%p0#d@80t=BFbTv}guY)X?9l~wui58N8#FXuDT<|72xH{g?;@+3(YWVn<)$Z~*| z5jFc@fG@f~@6Fg!%Nsqkll#;flAmMfW1b;9^WSY`FF#>+U_vACi@TX^c8X7Sm?^oS zjT-iAJn|KGU;Y9qR9dq*l(&NMf?7uI*d(|;wZx#i?!73q{p#_X&Zdq>l@Cf9Y5pjk z?`?hjjg-P)ow=K(=ONYCKL`~APUu=Y#YZ41OZ= z&8}a<_wUNiIK-j!;p8LRfXM%Ag{fD{O}tgC8gy8(ecxTuV|J2swddD>d`U#-${CyU z%wgi6V)G7-eqYIHNrh;n!~8AgR73#tsASFeuk0nRC|E(CrkZqeF*}eeV+V;zsS%;# z6VwtFKV)IK(!V$V&Aphf4Rz?Yw>k2EcorCM|H8TzPe1FrY_A4QxmSC1dPghLeU*2=KZUU`R6&zOiC4cGnvq@oS9pWSew+Ch zNw;6n5{5jv40o*bR9m=PI{Ajqk@9e)uTZfHYYa4FL69zRjUT^)>*NUCrK2U=w@*XD z{C{@V4R?=pm`muBzdNz_$B>) zi|j$N5pPw!`Nce>PXGJJ_H8o0d3<4vd#Hglp&}9TLNgNQ&S{}qyhAW$6>)TxeXX?J z&l8Y_JNXLe{*@pQ5L9dmhW@#-?a|y4I31Pr!x`IBO1fkJV$9Nhsvm?PK`R;e3ArwW zOZ)W(aGOYNmJKpqhy&>a)D-oMir4eY>#SFwQbxB+aI6k)-|t>sO6M!EB0wiz!;Hus z^DX={LB*ivOB&p*bY_GZqwp5^?$11vKFB5Dl-^8Rj4*d0IUH8X<$(cAVLakoUwWaX zS7ae1#9}!7{4Dhv@4i*_(92q`u;nDcwx1y*wt(L69%v{ifM$EuoW-{wH1!6z=OEH# zrc88(^noH;YCh2O{sKyC=e_S>4*CHYhGhY!`GPP)E}zrgcZa|GZHs9z@b0ySU=i~K z-1w5P>)<9Ddro=pa%FU;+Ui zJYtY4+75s{-n=BSHZqG#%q3b+QnsXA!mGDArD^lMcAP5P+f2Go3&u!2+nQC7xG4q7ZsP zfyC^Z;^g*VMoSHOy#%E>^~2^Tq55*tWW%gz5b{E;A+_f#?*U*$8YUISi{5ii6m-;q zvZm6imq<1K#1=%ieJ?ka%=qktSGV7CYO=8439JCEy!+O|>9O%JGZ42;Au=j#@fh5c z1JE&kP(p;jMt~$Up}-}i^mgpz=5!H-U+k0ZNJ4&k~DOj;<^-Z+lzfA zP_~8F;M1v`T?nDzwLtBPB3+W@F4QegFWp{Q5;Tcb8s>O8pkWNHu&w5~YPk^rP^`7` z)4a^-waIVB8PZXrmRm(RQpkJy{IyQvKr#IAj%q0fWx^f@%zdX zxqUElqqHo}L;{hrwzF}2U5IV%`?ET4nK&;@k@vpG?<>Vf<8)q9UFN?X*G(70B#w`-viq$Pr4ma1`bB=Hc1 zXmoGZW0I&*=74rB-0w>5hINQF`u#rk@?#ae^GlGMXSU~inXwP@E~a+msw{^k=AGK_ zK+nMA+WocM7-YfR40awTo#NCQD;a306)put=Y$fL8ylc7W~&u`+ltXM%umPrVUK%t zeBY_3lg;|O(PD-iD4ERT*%(gOi{XiDh z=Pt*ax>7_!xosyE&C+he*1q+kRQ zl;%BdFUtnUE5cgvwnEr;t)+W@HHZC|H{k+dJluW;`UI%(RyJe2i6ngK2!htLanV|4 zc=_@|sEF%oozNrCvZjh|y`V3I9Nb-Vqnq~$^uE}|J1FhNgl-SS&j|J;ULeVg!g`Le zf>swzGn@Q!eW80&(5UY-*=>z)Ww(kw7p__i1!e+Hh!;CP-spEn+XkSF8TLRsANBVo z(&*$%RHXZ0I5CjqY$dVWdGy#m!Z)O_WI~wZSAH+zDt_xY z)lz-xCL`?CQQw)TLBH$Mh#h@+G`GDz(>MmWx}KXIfzx9j2uh>czQELZS@9_NH(D{j zj`z0t2;+oi7GNCwrWk9w?`FIvj(v7)Bqmd_Sw$A7{Y8O)xG8DI|F zVy(_cDeiePM9R89cEb|#{B}s>XY{jWiq_2k61qVovaHsU;`AYb?^{UYO}T3D_{FGM zt^kmHi6A#K7tJCR4OEL@#C^I<0NT-`YI<*t4E0+KK0vDYnYfedAD02ci9%H~=qfI^ z;c!QakT6~q1HBVmG_}^gto{M5F|i9?U@VjJPt^A+;+gjFoYAj-uevpRS&;*Ux|>Rf zz?iLYU@dw?=4wA&>2#0iIkrjZ$7=6a*?$B{9#YV?`lvk=|5!uT6~KGo8Jjj^woBGu zT;8Fi+`*>Tb8=cM--01vhj+l~^oX5dJ6R9PbK~uEo8llXwH73jp+wH+qVn)D-%#<` zLjlf9ObV>zD$-e%2N$5s!oP73Q(}f)=fmBLcaXsE-|FYtdGguMlPq3x?ioM(T}#s&E-? z`IwUe1L8Ndu{M0b4}*mMevL~R1VSx43t#^dULJ%l2GnSmFgkUK06MjG_kQd9_8U1X z-T>UQU&<7#Y2VwT9$CZ}LX6xvONy4{X$RJ(elLBLBkFT6MwCm2Bp>L9WoKQmw*8L% zMNB=Vx6b-~39@+4#e~v0R9%s!X#osY`0=0_w^?DDI~lpg3dF{vw0>P}d2jETq{qw` z)RpjOz8(9@qyV#I7sc$(T@?1Dh^LFmbot;a_ozMpc25@m39>?a_S0<_PMiD*f|^1X zdy@>Ug)!dZJV?8wFIAT8CPLll0q7gSCeynR*l%$&a#Fpm~_Jt@FnE?H^1@6v$06B5?8_4LQ<&V+*f=(dro< z^o`l-G{ty0c5|G`Nn7`22Q=svKa^|QmmE}*nXlP#E*UefVC*mzlO=^5!1e!+5o_4H%$-*T@^7GZP#ycVB~=C%>SWixwq*?Y3E%$L+c zcCly`FAjY!zWe%5RozSDF-jJ#DQ3w zdLzxC_X|sz*n&UN=#r%BR==A0rZ0*Aac&*wjb(W7L@A~$F`zNuJospkNWX}Hvl&9X z@F$=6qOaz5H^;$R;=IFh6c$W^_4`kIh&Kl^Xl=l33ZOZ%7lY$k(4jCK@9?vdiK{2@4$Ezp-onr#!^oK`}x^w2+5?Twwo9ZF=57ha9H@tLv6)X7o(mmYs9$u*y^#V z0Qu`nPnZYlf%s4&&3Ra)+(EJEG%Z3T8d>OERq#Y7r zJ*3NK9B_}gm*(+0@S0$LoqsHl+=SQb5Tn%AbEgTt)*&v`E6E~c?zZQRzv8WH8OOYE zLwcIRlbfTH`*`dxO(yx|Nov7hl+N#`%&i>hYX(ESpUlj2(p>2dQ$5i}Kh_2^;Z#|9 z+lWMUGrhk@qV-~(zaK4=CvGs${h^Ry+i9<3Kto7wNQz*DanTVt(h+5%>D09FLYa1x?rqAJ_J<@7nV^&Rld__3qo)-ge zah*+yZGLgPl=|Zz#a)#e-SwCAK5Vm_Ci5<9K+_qU@R(B0R{}Yu+DL}-@yZY8r$CmE zhGcm9o;;J(APbybfh~%M+w3_eT{gmw0uEL1&P>jVR31*eM2%vsF_(e21T*b-24f?% z47651h*>O76*~38F{2Am8iwmUIm|^;x3+d-dE^MEECbus#N*}pD?8)7eRU+Ae_aFNg>Xt zqS#LhVYK!HciJH;6nG$(XX;D)c?fY)>)iwN5}=wN8m1pFF=VQolKc{GTDd*Up@h*( zhI22~#RsGu>{1?1Q|O#`xKpa3A@+<$=kS-fEDD?qt{PdwZZK6~+pijq)RVE{#mZ(_ z8K|2XSpA%{xkuBYX%js`y*NN0n@+LldeYC}SVOl@W!BvsnC$t+)Dx3S3)z<39kJSRI8b%GzSwdLvY7!fNvXb6YC7RTJ}-CHcSr0q~3XJ|Ag zdGc#WyR!%(8&_dqnvjKS@ge-hTQ*1)R%UwoDDpUS^K~&2F~LuZXB<=JFq%f3%;e0J z7`WZySjAAwXsK*lzJehXPTz}+$^*Do3e>Y87?Q|`9h+M*3)cG#9k~44T5fM5uu0i6 zf&O{1Ut8?=JK^~XUb9Q_S0}O{2R(b#SA`9tn0E#;W|0;}BuQaV>%sgP+qR-U4F#E` z=(UlXh;%y``E2AOGZxwdxp%EUbwU>xoGMFSD!~Op-eOFl zzFhd}zcAGze0Lni)DKxgi85HiF!>~;wnK6*DzfVftCxbpZ>RyEpjSy^a~_Kuck|og zw=>V%@1|#0M8EOES$9Gu*97{qu@NjNMdP_7NP?|!PbRdX`<1;J(Q=q{x z7S2>qBPTzvypaCg4#vb-veSq;I0cHnnBsBUot=&&Ij~h>g(PqqhJl&ZXsM>rpPzk) zl{cRl)KKQQR>RD;rz(*lS$^5MYR^yRJc0HjlZYJ+^4ebE9ia+@&D6mJB8*ER**u9t zm|`fZZOCJ4a_^%kPPZ%_LWG}>ELH`rI!@;+k=mDptML$~fC4S!Y&IGfEeh;FGldJLpWIr?zv*e-z{HIet5LPN~Mg3$iI_v&#CGv zD&Uszp-)HL_T^*Z?Qg^K?>>|R#%}Q_T1o8f^p`oCK;bsbXfzkqWiD5aP#u(POo#|t zpAJI%1QijXcJ3IEz=lD>O_?ytpicq`%R4u;q8skK%5w)MV{5UO!oB>7IJcZs7U90~ za{^oB*$P|7{J*P{_b+9;?bv@r0f353vUQXN(xQ6j3HJeKq?2sODNg;-&JEYY2dL6g za#xzAuT9=G7TS(TSih&_M1xq?WqAC29#yIhdVIFJ^Ob5OL{x%yA%iKQ*E3QHT*la4 zVo|w2igkyh>UVy00gwKUv0HwV+L((p6fPEC9GB`g`naYsRMVv3dA&AtA1Lb0flxDw zr*rFcY08T%{6Gy-fg|r*Gbp+oXqq36mXPEv+FO_pBG@NCExGQML-t<|>0n;*DoiZ} zkd_72f2WH%ddXO9Ni;ypjmA@Qj}(12ewCLLrBeykDf_KwIJruL|x1Sxw*vSwxOXr^z`s#@<#?Fu#N+%`*3x z*=`fMmk~v=>se@9b6jPwNME8Pd6oq$wadzze#a~UY7TA#KT$Hq-G}vrvFbs;$jZH+ z%FhBXD$jP%bwX8h16HefPRMG=S%8>HzlgRj6eN z*F9WDTSj$;Te~ze;>3uD(N9t|QC;qU)u%^LvlK-el?WfIY?9vB#DhkK;nvCfF~1=^ zB$=<)6e>o?oy$v$1190*j{y=l0x+Fsz>EPkeh!?{a03pasi-(C3C~sK#Duvj3LMWq z+kqs)5p2);@+Ll!aC&y#vKMg_K1Ywd&?(Bj|9nnV$^Z*{d!6(0z1Omn5K{fuqqbkW zX{UF%?(jRXRa|7i^`7zhcaJ0VOtQXDF9k8-{CxOkP9-f2apgVHU!#F2gW)xH!gYH}8}e-yay2=rdbZau1tD^x+}xlZpmNiT?9^ z714AK%mN(5RJd6y*AxGviq0T|Y zG@5#rmgRsppUI zy2&7g>%d3Gx%`${g>jHsI+9(fB~Q09R=pO2ISG3aTnI$hf~duAVM0@6(l+PJXM_)fj|()>)SwTZ*sFHVY%jz29y3Is`%r zq5C!<&Bq62gQUJ%FoqJ)(BNNhXsj3FKcXs(Em^U&?jTlk*mWCvIKUgI1yR(r8m^<5 zB^LIrqKA{f4xR6_5qi3VrMeAxdFWmhf1w{qG1ZC@P z*Z7GrI9oF?mPBmr&NY_$?|^_m_=O+?J0xTabSn;kVo2r#JBVHH%y}F~E6>27-IfKS zQbrbh(XVf)T7`>=5_22rXKy_l$T!O_v#hq@Y>Y|RkbFBmbXsftCW@rFmmi>)gLde= zzP9&MZe8vvdU~jkhUYjG~DShA#uzqLW!DrKYJ6xHXQukujkAC~gLG^9UgWMc0 zEl5rX(U_GMObcT5Bi*)9Mjn9;vHby*#*Yhy%R;HgM9;0`JtYxOn!`kGsk@Tk?2xvp z4>{TGe|Y1y0%`AuXhI2c9?*SahXi#B>YayaLTMdFtM&pm*jveMlo4Z#XCG5C(Nz^^ zrDLQCeyKrna_kIn*C`o3KeWJI?G5BfY?DK)5I@xk` z8wB_KosJo)tbpi);mW?HfIm13`hi=D>Kgr*vC^>jPiVPf*}EIwL$IvGU`4y}ttF?C zDXqKVG!`nDtCGPXevO&(5}_*+j;U2<53ypvuerhc^lo0O=h<1FQ)h6XcNk~X`kvE$ z9w>?ah)3b+$QGol<)u4!X{4WU{mwn0dS#A@D+Q&@)$e9jGU3lVcR%Ms<{9kBz_0i8 zmtqDPCA?R7xYBqN&Y#vL)ZuWU_`7UB@)Z60!3-C6V~MMVi}Er4MNe!e1&#oU>p3@y z+q7=RIPSf{0BcH8f$l@oNZeJP0GCw$+H?Nko7vT2FJ`srha+x(C~xB+SUIWSA!W7g z{J;o@(a~piwC!(`j(pm!ij))~Yjk@3^Z+&h3!UpCT#To4`#2M1Y~yukq-< zy?9D=phI29v_^-#P_m4HJ#!@F@9XqfiD(1W2nmD(H|ulZab!0Uv&VOiTMe^1&xk`& z6%nY4v`hsAIOOXAiH3Y?LpMuXd`@1|^B;68${KBLQwy!COn_bib31p3;88t&CbbA|)4 zUgAx~2ekV&)(?k7KdynR0{*;z3OY+YyEGF~sC;5jYY902o%Clre_l%l{7}G`T38^w zh#;j*r-Xu!je+}M7T5^Gd;M=4bfF%X1J-+u2UFRmsknXz(mrpOzWn<{x(DD$-vm}a z1V{auP|cwcF5XPgv(`H)e4V+F8eb#rMT$Jo7=#==5~YYx6~_5fMACD?hwdPm zJ?xO>-v_BnfkP`;f1neKstCs{c=R-L)fe)iae$j3IbJDAD3V{(pOqK<8v^x;Sgi{) z{q7lyQ!#IkK|_$=l3)g0a*FaIy7c4#m+9}_eZvCYPgyO`3O?}Zy@YB^{Zh?lSK7jL zKLbYb$)%&$@%q<*s50{3Z#&UucFd(75M(+E*XR{ZJa*GvOY@kqu_Vu=I{LZmoEqtc_^P%VcW#nB(pvGddEa#iJ zuVcAS5@dQXEWeg8)i4_U_N{p&4qb{nWq4fov6|PvyP|-+D_g`9Z@|-mhT37^o@cH( zc=*HF<|Tqgb)eA$ekx226Y@<9GD;3Xl~!H^4dJP;exh7PnRH*^v63z;m>#+*K;u^iNMMn@OL@;v^d%=nN}L6kk;aHsVQ6mO<-`z$Wv5{^fux_nap2t7 z1KfWvASOH5OxoUNgo2kBH3%Wd{^zO@o@FsKZQOtD+Z2<8A&CK z_Y%y69L4>@g35@TTt>$tE)-E`SD5AgR0fKsm>C`2&Slp`CRLcj71VHrf5qz<09W~C=n(;^3>bYa$~`%2O`)E zi0tz8u}01w-PV_1zRY%RZ4S6l?baj0gatOgdRHm%x_RT($u^dBI3WXlwiC4gqR7kkfDuXrD0DVk z#{yQHnsQ_O+wp7HMqa!rG63yvHz<^0&)9p>wbeJY>>RaON4!{u*FS+A)NdwHwtU+%Q|5%IMqASkr9!IW54 zBY<;wk-=+D=%@*ZA|v8W$4{trh5Tx}dF8ht33>FLu=&%(mtr#iUN&iI+9NLp zI@a*e7&tl;ZCGJPtF8|dhzpNtN=?Aa7ru2e$`A)uyupv8Rm=uI$)2eTQb9$wYtiLZ%c-6PV&y0N`CiaaN?^fSC88-g)0k_5|5<@*ATE zHFo3Jhejf9>jW#w$jCZN5DLbkGY}m(!h-^OT;wYfV(yz-N%pZfOWI{k@ZWdUrd?>q zlE=Dm5R(aH(-&2*m@77@EX77xaNmAV49KDzpqtt&ArR{P#PYRT%qeF}c0TU#YfcQD zkyy=!M~b=r{j5xh;Sb^%=opyDJ2rG(N++&vkM97RI=R@%NyJwm^mdsStZumc)yK6HpA3YW>g!$-=i z;%~&6A5$Dq)akQ)Y(wv20EEK8wfETDR6~(A7Rw0-&UlKqB@bgHAb=J5h_f6JsO81p zUP|Zl7C0=0qj|{nGMS(1)`VJXX5eFCv5Po|8mkd9ATg8A5zy zLG+Ds>KIShzjZ<%rnC()a*b1mi9w9Uf8Iy0y9;04~eAJ0ewLkvUW zp5Tm-4E`?UdS`8fcSUKuHtX+Z5V%hOPF!qOpADRN2!Yxm@1rAQT9JSsM;U?s>yFPX zKfjem!WYIEArMvfKrdb2iYkEuW5BdW_>;_KRyS1&RC!g(^v&rz+rJA@4E!UO8Z^en zt%>I&mJ#1X7#Kx>eZHq^(JNfn;$d_AP`j|@LkzXmc@rIF)jYU%6Nv3L^1$wzJnY6E;$?|MWQ=4Y&=-$dCyR&P9^Nv0m`~c+hOXJzIYt4SBdt6xSZxr zcN4_VevgPHh1f75{Etmq>tJpl(po6-p~5I}rlCb1p_Y8||Gx2zIrES_#L-jugEL{l zf;ZvRMcf)%c8)2~(2u%LX|bo-!qWdC!kh$%E+i*`VoZTE@a)VB87TSCZ9PVCac`oO z3e4dS1}6IDInP0&{Q#@UGGo23z9NTf!_iaCjXYsDbyKlyL|Gs~Ut=!Of24<(7LA6tf7tvT5B4Wb1Aa|aS|VpRskiw1X_XmK0y04c=%Fgyw{(E@qQee38v8YJ zVc96sDhvX#kV`-9%R2$@Spi1ZJdc&>PGLNG_Nz=Zomj; zfV$!Xn|9v?yK#d6wallmO_>`|lxFoS$LkPxd7(V6r8DLmo2KlT>njd%&4MAs;U04OwGMQas_#M{Hj)fB={M`({rg^2Rb-;u^ z-Q~-@7S*C)A?vST);Pr@w`Tz40H|DI+(-t{S9@m!c^u-Nm=^(XBt3n!2F0qwoOS8v zoY<`8w;j?ujcj6&W4#$uP4D0T?Y{})Ly&o%Kn#Ar<@$umW+*j$ckW$;){z+Y2fZ$6 z@ed^I_5F_DlpdzdC*7kJ-y%G*M#X!H`B|Ym@ieQrX7A zLN287&1X*fTnAetHg$Az`9F{=$}EEm>>mrS-dm4Gs7<>XoF*N|547beth8T(X*;!p z7T>ewkQ4G=EC&&;Z!%N{6TZ0=p>ThqobH0JG-HwV6!a55%YlF!G_ivYVhVnnNC#g5 zw634m%-hDp;cD~2RizGq1(Go49xerz05fna9y?dbsf@nr2LZkjK)E*XQ)BHu^V)NN z+xSAW?UKlEx!Fw42Xnem{`FIW<#4&^M)KsnS0u^rpi<-^1vW#Dl1rCs`d3(2c}8K9sXHke@Py0Nm6>6oL< zOjR}l`8}niFqd7fL+CLWJ716CeGf$Z%pucM6ev{1u--I>zKNgMamre%efXo6lWS*w zLvJudFoX8jO%%)3(q&I-d4*-e4_QzkbiX`o3q{e4T99s{|6NNP@S%r+mOUxe3UGc& zAU;LYO)C^w21JWCQ%3v34o|lwT2IR|C|cahBL*%+d!z1)ij6+XRd%oQuGzTk{`Dlc z=%I)w8<*q4QgSFSp4Y*-b5BD6Id)_KK(b06!?3Fixnt4(fN_4K7X=IYe5|r`fr`uk zS?8P*Y>|_|syYtFR3*Qh@E}Ec6A}TeiZ*?+vc$WbeEo}~EREgcfU!QrGxL0xLoC-` zsF^>@{dlbM1E(WSTHj;MJoB%LANcr=XqD9%e5_>-_<96y`BVKXaJa6A^`~8b<-0$0 zdS$tiTzxOO-#B4c$k_gc>RB9oR`=!*OioVLRgX-Q43OCHT%x8a?LKTw&~IKb3X+$( zT&Z0-K47g;k@jvujY$0b{ZA^M4rSJmu%+^M23~RuWl6ZzJ6!*dcylu2XHGzEiGugN3&xxJFUFN1c7$F26m zFaWUMNbZ^7ayb}95YK%yq&E7X-h{51y_pt|O;B|$`+(fyaXnd?rw&jsYf7a*eoQNd z`V5r^paMGz%$|s+k@>y;*NwXk{d{&S&5^@@7Rk^MjXe+(lc=Tph*)PV7RzLVcl^j9 zX(#x<*6EBWrtp6HCgtf`ZPc7b2Kk1({U(f!RY#2Mk1y{!71YWpVK{olcgxYXg7 zlF9c;rt6$PeUa6ig=z2!LG}5{E~3J?^znQyo-K~HkWGsBq>5OVXfL2qga+Dq1S@FS zsaS2CfKX0zZ{~(u{GCW!T>B8Vp&0|VM7;-7ewTIa=! z>q8lkfwSmvZzTTY#6%6HTju&xhbLP8X~5@}>eQb!#fFf!gP~Zy-+qt5GW4JoeCn)d ziD4_&8$o}{rm5@tNJMXmA~27Z3SAy{^evcX|2@%jQUwMQN+Isw)hxf2odw% z=Lo|>s@GW^jRC@;3&# z1MJTcx&J}TG(^#KE5~UD>UBb8|KS1s!j9g8zvDJ+7CSNnNBgVGPn@Orzc}9#`NVZS z`Y?#a0mZvP0kd>nHPIsA;U&!kFCa1FI`uL0lc{oG9r<3*ks9L7qYS+xc+_#Axqd3v+9 z-MNV?9kovv!-y-hOor$d)$qSp4i1X39(dYd9w1ag!r-$G;xWGqYqt|~8j31jl7nI_ zOSsHEbYJq{$=}6#(-|-n+;eTwTMLM{WybGN#XhF^N5KE65mM+MD zH95cCa<_aCkuE^+=%xwDT>UL+6cZ5E_bOz#3oss_guXq`ll)BMVHZ+yUai$sz#x%;;r7fbsR&#b26YLbRIuOQyP@i}I)QK-e8vPLawf%CM(QkI1Fnz zSggYyX?mNaO8EV(oC17}CD;b34*-5{1M+YJa`H7ou9Bvs*b0D@UghANJO)XNB@Lkl z`hURi8H6dg5KSwjs^F5C1{s-%~Pf#WTo-cf^G3L+>V&jVNYr-0Q zv&W%8K}bzl=9$pMocjVBOO_8>26?kGZ$1YeeTyhWLnZMKH-30;+(Nwr7d|xQt20>q zXkdU|Jywqi=Y!jL%g~AY9Pd*+sqae#lNh*6n${oP`FRUQXI$dm;XucJ+-&wYLE&n6;13`Ea8a&dCF+~c{Fyg2`NS|ieaAPPXxR!nP z!lba_&<<$$A#%qu7W1B@|Exh;49TJgElMkVV87A&`KvmI8KD^`{e)XEhjpq8jc*^6 z}7$@V-!ug zmQ{ISdcEK|zOn_(OBX$D|Jil;>EX+O=VN!7XYQmj0_>@x4#hdu{mRiD<=&gXnPN%Y zd}&(a|L`$wLW}6{`>eli{JAUV{dou80^^f$tSy4)>ki9Rn_TN-%-0Y4d)|Z55RaN{1Fcs@ zwUisyhBIDLD!J{UBtQ4xtzTPw=`k%AeC%@WvSGSUZu7-mzsG!8A zQ*kUo4TVNfX(|PAugenAXw>iwwwT z?p&R(WgLtubN>P~Q{6!q)pyX3>0WIC9CX5^s5(jSKme#J?vJ6f(;JyUa>Uz!PhLBL zIRS7{GEERvCHg@eM2p8piwC^rrOl;ovwev?_5M>IZTkXV{`W1iy|`=jUF7m^At767 za@>&b&H+}(1{%Q~#Jbc@R@#-msByQ`U%Uo2gcUhCXAY*R8NX|eM4xP>_^|(^cG)&{ z-Q&(ufYBP|5I^$wz?2HmFw}ot*#JJYQWb7&LS;9E0Y7IOdMED6_WeO?cf|jvN;^@t zcAFB^b;c|4ovt0=LaMrf7yAomjrOia246Tjz4`w2gzo|nL0_t%M}zzV9#pML4Ylfd zlubd`RXX{iJls(K9sMF&hKE;4=x%tc(wmRcuAd$K*Ng)27_6rMQSLFnunOupdISJ2pJ%wL_PTw#uHYke z$xpp5iO~h16~Hoeglg7oP|g{dKa^-%&25~k88XX)aQq!qKY^M^hYO(($bGm{7BGH# zn@?*1MxwPra$20iT0GcLg>xIy)RcGm|=N z@#AKP%z(@9!cqTd>_FsMx2l-OBRS~SD1@E0O?J8o=1T8N@-&K*t=r7Y+Rz)zV%NJ} z{{iPDM69jjU|7%mk)9KMoU2|0M>YBWFa|Yhq0lWEuIzH32Z%jbu2$=z%42!p!2JeVpU(S>Qh?F!w=-2LJ4%#K7dNbV@eSCzO2u5)PCi~A zdsb%D0no4r(uLarpQ>KxWUd%+M(k~3ROj@~G`1ijP9oML1K60ex4weJ>n5;-O?`e& z+y^vjsUm~?J<&PGX@5W@wf<>w&Tt}khGmqCspQcBzh0FU7GQM4z~cBY?~V>wpWKD2 zy=m44@wKOZnD5cF9x$ZK?VeFiHBmqNNmS)RJIX||SE9y`IVq|F@p@S8p8`RkVH&&kS7>(kP8|E1(FBf>Mffm!ve(&5R%=QW7Fv(jXw6D$)Yd z4bsxx@!JF5d%y4d&-hVi&e><5y`TNWTI&InKdfxUVqI_+g@cr?b_Z54$X5d|H{K8M ztvs`y9sdPgW#0mv*B{@@Q=s{ZPaXicX#mER_3&mwG^(u_H~=Cu&+=8W!_+jWbd?$3 zH4Wsd@H;McWu9s;hM~HGKk~!Os!j*2h#!Eyy$#Gg>jKKig90Q*I=+1zaHej6ET%jz zQ1K=PcMUw87UoR*&Ybs(eK}wIkuK)S3v#r})1k6EG{f4oFhkvH?ErK!V|P$pgTr1j zHIYGHO7^@F#0Bo3{f5P`HLeCkL{N_Bsac%bkHr?YnBPmbXJhw|ixVL6F_sQu(OSe2 z+Bn13a+a&{V|z$l=oaXC?uoCQ$pfm>-*_9(-hi~>=L*YQg+`Zk?Y+(EY2$l8fRObz zNGGLP4Ht>~aXzIv0~j|b>0^>{sKSBsulp_cq|tg*Ae2h*js={ZqSF#V zKqHjuxYQk%e+PuOY9G;}+<;dJe8pjcT>nbj$+1uGD>>P!$sj)h30tM<;>qM}89ATL z3%f7GXxw?bF;wBGNlt9HM5D^oYE1?pVUMTTa_zbvt}>UWledOiht zHVtwjPBbLRxMry+9+~SxiK@D1a1l)H!8x>so)@BSg^FX>CxKpdvMp1-gCB|4j zM}M%!{T0^BpRbWEI~7{%fmo+j!!kMG1ERq2brh(;+<$UR5VsE65z-ic7Gf+r-Ix{M z-K6Dd1%=qH8@R{SS?E<8}^{re)XQ)zPWJs1NJgA7_p}05(Oqu^a%#ngu(H}?3r5Av@`f) zf&KMG5dlX2{7UPQFV4|wzGPq*zAN>7bMQ@B9f>;LL!O?LooCijQg3p&w9<+!(45zQ z!Iv)J8+FNp4?L+)(rVKvdUo-bu56+|5(Jnp5#5a7+>)W!L|65*N=??mRjrz+4l)k> zC5I4Ay*x#t2J{JjesZ8sh0?4C{!aFT#sU2q)duUE)w3a-$_Ys^`mslyrRJiqIeK^s zT|f4hE2{(6K;4JkhoR^|lzm0hLpyGof?Jyu)Z;3CX&fBX$^*%Si5FsFozd)buW2`K zsvXMZtlIglh*PqynI8V2d^^}95#n!78*n4__iy{k_ythGk)i`8JiWL_(->u>x8&h5 z#jtymT<`ClD%@tdxV2a1(~Gwxa_6Pg3iiXjUP(5^CfEJ9l$g==tKVXQic%_o1c?6( zN-GC}=BYnWqygGxpw~^}3uS&wHqWYl4kLJPcS!9B2GLs_76)vZ6cAMQWQBSD`;DMuAJJQ6Wss5lLzvX3oDel6`FiRGEpA&$W!)k5-j72# zjYc6UYNXg$P--YXmUC=;8g?&ss-vqXjjDqJl^%al_?Tf0^jTO?Iq&|8P*a+Bur2H- zOKMWVCCSM=f9fMgHVK}QSLnSrlFdKj$8J{5-ROLtzGXS`g#k2au%?pReMXfi$X_#* ztHNrf$kJE{SI_#$UtfNd@b&p>Gd@&`ZIGjwc6W(0pwvI+A>G2E za;2@F{O{g|`cdh1X>b$5MEWP~aGhv*qb}vxrB3>K0Q=OeamqFQ(vv$f9|{Q}mTi}w zm=ED>1`QS9*0`z#n!j1)`E9Fx&OL(uNT8$^UII^+VYlc{o}wJs&J~boF2a~$HuM(> z$cu|cT`lH|xZO?lgry>_k{H%Tb6v`A#y?49%VvSVlVw66H)Izn@By%Kcko-=M|a@Y zFq1@xg&;@zIe5w1ITQUl;D@e}RcC*Oq%0(c`7Q+u?$J>rU*(n4B#R848^BuAIBGZVF=S7Fdcc?LS8Toj}e2@&03JjfzbTgMKD zbaIFii+w4nEmX%0;N9omWHp6Zk;)wsF zQF$0Z%|{L(7-crn7ZsssE5|*WoUIR;u1^~z%H5iY7m!A+(;yjGo-AHYd+~{OwoCE) zW+MRPVb=epIaH+mS3mVbaJ+m-{?(H3o)@)ZW~R9U01zeEXnTzDEjyZv&ADBjV9+~6 z6f_{POkU=Bi( zO56nbZlVry@hH3=l;1wCor@`y1r70CE>sFEc>>lK$zKbQ_PMko+p8RY30+{A6e)KK^2nI~ z-s+aK>Hk?}B{HQ|(hW7J5p>D(c7ZG-&P;3A+t`SKr|751|L_4E1U-M&A2o1YAL1TunG2O21r1id-&)* zZ=BYI7#aRd2=dJoCJDP;^5Tc$wa=_dOhm|?_lzZn2QBr4>Pdk+Eo-nF_Q<*Do=Qe) zTw^3@7uuCIL5HTL(_3Fj|FVbf zz=BflI&89p<>k0^*v(KD%B9)iuUh$>lvmgJWoB?9RV?2O+eI&MruQ=g`XCG%ASjY_< zvP7t`P8hpAL*3Z|^ooFg`m)Vv9D719#c77P9a37-o^76|hGFDHg0|MJu_EQhCSi*(Zsj zuH8HwdM~%PktzJ-OsU`6gtG|9B&*ohhocwc$DF=dHb&WK5+q29J;1A~t1vHDNI_TU z4NSg^eKI57Qw2$E7o)U#8i0m)s}%w7LM;`u+E{`s%QJ9O@u$4x^Ake*{r7M)tQRHH zgz<#Gk-eK9R7G;$ui0yicIMmJR6gV9X%vT{gmOYSi<*E+iH+xa1cM|Bn4#-)yuhYW zbnB{ZJI^PW@5x_Q)m-JD8G69y`C@~j$#JRAV!$6-W0&0)bs72m+#(hKWW3x8CCI6x z%c+*1eYrfT92ZA`>;0SqAy)g(2bMCu~`9*`i5q10TgfM-cUbSMJ5t0IcEH z=Tp-8CQpOew!Nk_#=O3VhUIt7<>MEWkn>ido~paa=fJgJo~jq^h~p*v+Yef%&ThRd zn?)t(iTY9LrO&l-@86+crI+xKAitz5w`^?mExokC4LVkp^Ih5wP2kjob*E%3Eso!C zpRYMpjc>kuSpSD4q1gO~a{NywkOdw;OoHzq5?iG;x!sAi@ztW=>pKg5S#D*O4Q>m5 zfekVjKYH}(F<)guk`4d_nQX0)P-OxEj!x%Kdj?~NAa}-`lzjll)Cb&+!)j{~=e(M3 zsDI(cht^yeCovoV^7h|=@|9QK7vRJLNC+Rh7l3gB0VU18>Qf|}ZgZ3?-;<5XPxq{} zZSPHX5)ZqhvaDI5_Jl9~ZiBbT@3v)_GM_G03o5wY-&IJySPk>swHX^=%^e{e1yLc; z;at1P3Y`^rG3D!WShSAe0|TKL5@=){XC58Rg)@YFFzf`-BESwYbB<1sF$i|Z1>HXCr-11BckIWYH0xq0eSr+qIZ5Sfkgh7Xw!7v*A&&fD3Sc;pZD1ilQ*Te zUZa2*(aqh z=5~;oyq!NM)*I>hUG~N;>@)8*y&(Yns`HEL28Drmr^HWa79aY{OAAB`T^L+8r`9#! zqr{H*c@&8O$j+(D5~vi1y+(#?4Y%ys7Rwfe<*k{bkesg6EYFh9lG}euHuV!q@+J}} zwPdQVsqa_qV7t`nE}-gya5t1ir`_PXLQSU!Al$Iq1iYwA@7X}-yViB=j*rf^J(ts5 z;hSf_gvD<&l!o@p7B!r#WafY@1e}!Ig|YL@aj7D=Qg0TVhhk?6v-NuqfZwkm`x}(q zTSa_{L2>AHD34+)!dO>?5deo*HLbzg5SyJ(wvS?b5+VWuusZE>%P{wLpS7<+T%+W* z6yTy!rk!fqnI`Q~VR6Ch{)X?YSM5nka7e7Tho6?<5Lqj|eJAN$-QzGElCJOldgo*L zb9m1!EN&r~GQ-8n1}_iU6FznnrV?eZABzSIGNL?18ODfebxBgUwI|KNubbXHS3*V|7geM|J{J>RdJw1iU8ek<)6 zS1>UYahR8>%`y35;#=MiVI%D<{!o~z^9HnA`tf@60)&c_$}pgXy(8i(5$V0~jhr9O z_LRE*$;nu4(Uiqm(mUd3qEru@a`fy&zJr!a7_Cl5Sd1fmp!L=KuY};OmH>xP|Dn}Ppib~C6OV2Hj6MDk|X!7)8Cv?|w2&70z zxmQlPD6)+6)%7v4&*y)zf#+Ukig2%sT+SD=dItL~3D}PZARJ!9?PR-;Y zA<_Od1p#(m9FomVv1^xP#>PCvc!#CZgPu=SNFhd)im??Pn^Kr6Ktpz`_Ju~DjPJ1y z$p(k;t;+>hUe4Ri4aod3V z%imujw`Rv|e&h4y$%z`K7GQHe6R>3Sn{eM<)Y9ka({7-&|3Kx*Z^AaNZ*tF%@;B*R zgaW5Y6sJ69lK>N!v$I%#CS7I`(3^Itd#Jd{m3zotIbn3Zs5eg8jJ*t6g&9+oI2OPm zOhwg;)T@WAhoO{0q;}Y)myIBi0p^1O$oL#*0R$DMGZ&l1m zK8PJ!=iQ;>IQ2GVuay5b%UfRMSC%lj)9`dB3MrTA0ktnKW+MSxHr~3{q=^~r-m&*_ z8Qx5?t6UgM50i9QrhI%vl*3t;Y&RZaRa+@mW_%&}xq^v=Puk_m$wKOV8VHbW?69NP9e<&_9y@Ksh7~iFxEGd^ zW*`(G)~Jt@v3@2zc6RWRv^ek7Fm?33BKxhN8q&`tLf>WpRK5>0G@5-={{Pl%joyGm zNyL>2e3S)$r92#s##?04)q6SdroDCHbs26GWyTKiG27%GL30e*r?1#S3GjG^n9 z896NR$Oc$bePMczjBKqGbY`rQJKqY%5>?z)7oZXaWViDY_VV%JDvarDxY_TqsZ{0k z(8Oej)sf`6=5koVNNwoMRKUPq{;4zaL2N~*9p6O$km@7j?8my0jve2U+S!IT8*S4~ zbUJAcAEzxx<(}e1u#7Htx{$u4kuiN<`WEv(@>G;Fx`X=oy*&mzLNsnPI|1I&klCk) zF9cs4Je+%BsTJLO+1)2kr?{RK+y4 zgNG*I8ajO@4_~;e^Ds04?tCegs#xO7H2-QdC71^`?T(|pR-uRrqG#y9MYq(i2Ps1V zRa?hpo4Z4_ANq*P&S0=8u@XQvrpQi&jWhqD)&Y~Dw8x;l`le;UcAH{Jo_VtL4cI%- zS$O?^ujs9{ayR{NpazA+hl8pKes8-qBdUymo`B#`B41&ci|t-Jltz9(__=;@+rwW8 zR&YKbo}6}_i?m=&?NaBuw|_77+hFo=ida$=89W*yQRwGVNih>2g(@0Rp~$;bnHi(c zu3{n~XbdaeK+a!y=K=iB?7>f}45Wvy#ImbFNw_&1>b?LwkDX(bmD=(P({}mQTB*r} zFyZT)N9{(-!=X_JwLNKbJ(o1COsMfnH+{2I37BibybjvY5r~c`GRt1KyT*d z(!W_@PAxS>73VFRDCu3rdvtxy>Gl%J5M*|b-@S+6f=3KMk-h>}9fUrj;);qnGY4MexMY)oXevclfc^>Y zUdnjC5-u-**#tcW%Ru z50&Qzkb#_~0`v$fb}gJQyOmpN(JZa#NKm6s18Qq1Igtmh8=*iTZ>(Y!7_fkHk?JVgo6;&naO%a3N?@%ByT`TL`HrASQA0+0zWm*y7)T8onk zfgWa_nPiT%0mM>xXClh^0DtRZwd$2M2D8^W``!~{t_W0^vWp)5`$%blVt29&GvGrL zP-=Y*8g@EqFo0T7MBTh3mpTeY+XiS(H*P=hKRP-1v`(^2U%b?1h!E7x0f7qHP zfdB0q;PJlT+M7>nqToy{7Un@8Y>rEvm%N7_HLBUs9mRszo#ZGOP4>pYPs?9GhyvBB z;{5Y`C7C>9&%6HY_d0@Dk}Zyg(`Mip+I-1EJQxJS+8wQ$GOadg((C0R01%LBf=+Xw1E}(VO7t+>-&_Ogy_1 z@Aorxo%?TcNjBFT{6`DGl{)fuf$OG!^6tlN^eGtU^6sUmgwQcko_{^iAaE6j7F&uF} zU)eh${ZKTZYr$_hz?Sl@k@;vL&ftsFU*+(xznuhtGd8{g*eFv%4_S}^vQpABV^HJ? zUbT&THuH;UKp{R#@3ysy`G zMRbAh5fS}Rjc?wc?rnuST63DekPP1>JfE`CHM7PGLb{-<7uf4-mAdbmh09B6%`m5U z?F6f+N(FXukY^9xPe&hZ^!5F;g6ak@s=pMTG4~`C&^}r63r@sfgT~l~VPf-f?|bQZ zp6&JS9O{R&C4;Tjd;=O-Ts&eyuXBY>V$X=VH zl7s1^hmZ;S^xT%JxKSlPRp&klGW~cI2h^nQ%}+OixkO{v=@b~{KlC$V;8Hg3+?eI< z{zHN(4S~k=pV2-zKvEl3ps5yo(qtO0-(3<~Ua*5VTB*aVr%9mYrewe}z)*Z?_)Sxv zYr_J-h@UF_KN*|Z{3=zIcDKPK37v#^^Si9Ei&VrA|7AoGVy$@V_3nU|wTr#cpB)ao zXDQ5HzLW̢fUJu8SZpd3ly}QuP4JFWkRbC%yLS~ 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 literal 0 HcmV?d00001 diff --git a/images/visualization-2.png b/images/visualization-2.png new file mode 100644 index 0000000000000000000000000000000000000000..d08fb10b27c527da624f586135f7f606241b5d6e GIT binary patch literal 21922 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 NgQu&X%Q~loCIBgQfz$v1 literal 0 HcmV?d00001 diff --git a/visualize.Rmd b/visualize.Rmd index 01f92bb..c1f30b9 100644 --- a/visualize.Rmd +++ b/visualize.Rmd @@ -10,7 +10,7 @@ knitr::opts_chunk$set(cache = TRUE) # Visualize Data -Visualization makes data decipherable. Have you ever tried to study data in a table? From a cognitive standpoint, tabular data is difficult to comprehend. You can examine table values one at a time, but you cannot attend to many values at once. This makes it hard to spot patterns in the data. See this for yourself; can you spot the striking relationship between $X$ and $Y$ in the table below? +Visualization makes data decipherable. Have you ever tried to study a table of raw data? Raw data is difficult to comprehend. You can examine values one at a time, but you cannot attend to many values at once. From a cognitive standpoint, the data overloads your attention span, which makes it hard to spot patterns in the data. See this for yourself; can you spot the striking relationship between $X$ and $Y$ in the table below? ```{r echo=FALSE} X <- rep(seq(0.1, 1.9, length = 6), 2) + runif(12, -0.1, 0.1) @@ -21,13 +21,13 @@ order <- sample(1:10) knitr::kable(round(data.frame(X = X[order], Y = Y[order]), 2)) ``` -In contrast, visualized data is cognitively transparent. Once you visualize data in a graph, you can instantly see the relationships between data points. You can spot the structure of the data, and you can read off individual values as necessary. +In contrast, visualized data is easy to understand. Once you visualize data in a graph, you can see instantly the relationships between data points. You can spot the structure of the data, and you can read off individual values as necessary. For example, the graph below shows the same data as above. Here, the relationship between the points is obvious. ```{r echo=FALSE} ggplot2::qplot(X, Y) + ggplot2::coord_fixed(ylim = c(-2.5, 2.5), xlim = c(-2.5, 2.5)) ``` -This chapter will teach you how to visualize your data with R and the `ggplot2` package. R contains a number of methods for making graphs, but the `ggplot2` method is one of the most beautiful and most versatile. `ggplot2` implements the *grammar of graphics*, a coherent system for describing and building graphs. The advantage is tremendous. With `ggplot2`, you can do more, faster by learning one system and applying it in many places. +This chapter will teach you how to visualize your data with R and the `ggplot2` package. R contains several systems for making graphs, but the `ggplot2` system is one of the most beautiful and most versatile. `ggplot2` implements the *grammar of graphics*, a coherent system for describing and building graphs. The advantage is tremendous. With `ggplot2`, you can do more faster by learning one system and applying it in many places. ## Outline @@ -43,6 +43,7 @@ In *Section 1*, you will learn how to make scatterplots, the most popular type o ## Prerequisites +Load the `ggplot2` package to access the data sets and functions that we will use in this chapter. You can load the `ggplot2` package with the command: ```{r} library(ggplot2) @@ -50,155 +51,481 @@ library(ggplot2) ## Scatterplots -What is the relationship between fuel efficiency and engine size? +Consider what you know about cars and form a hypothesis: do cars with big engines use more fuel than cars with small enigines? -```{r} -ggplot(mpg) + - geom_point(aes(x = displ, y = hwy)) +Now make your hypothesis more precise: What does the relationship between engine size and fuel efficieny look like? Is it positive? Negative? Linear? Nonlinear? Strong? Weak? + +You can test your hypothesis with the `mpg` data set that comes in the `ggplot2` package. The data set contains data collected by the EPA on 38 models of car. Among the variables in `mpg` are `displ`, a car's engine size in litres, and `hwy`, a car's fuel efficiency on the highway in miles per gallon (mpg). A car with a low fuel efficiency consumes more fuel than a car with a high fuel efficiency when they travel the same distance. + +To learn more about `mpg`, open its help page with the command `?mpg`. + +*** + +*Tip*: If you have trouble loading `mpg`, its help page, or any of the functions in this chapter, you may need to load the `ggplot2` library with the command + +```{r eval=FALSE} +library(ggplot2) ``` -The `ggplot2` syntax. This syntax may seem strange. For this section, just go with it. Make the graphs and experiment by changing the code whenever an idea strikes you. Concentrate on being able to visulaize the data. Enjoy your new powers. In the next section, we will explain the reasons behind the syntax. +You will need to reload the library each time you start a new R session. -Visualizations help you discover what you do not expect to see. How can we explain the outlying groups? By adding a third variable. +*** -### Aesthetics +You can use the code below to plot the `displ` variable of `mpg` against the `hwy` variable. The syntax may seem strange, but you will learn to understand it soon enough. For now, just concentrate on being able to visualize the data, and enjoy your new powers. In the next section, we will explain the reasons behind the `ggplot2` syntax. -An aesthetic is a visual property of the point. We can map aesthetics to variables in our data set to convey information. - -```{r} -ggplot(mpg) + - geom_point(aes(x = displ, y = hwy, color = class)) - -ggplot(mpg) + - geom_point(aes(x = displ, y = hwy, shape = class)) - -ggplot(mpg) + - geom_point(aes(x = displ, y = hwy, size = class)) - -ggplot(mpg) + - geom_point(aes(x = displ, y = hwy, alpha = class)) +```{r eval=FALSE} +ggplot(data = mpg) + + geom_point(mapping = aes(x = displ, y = hwy)) ``` -The two groups are hybrids and sports cars. +Open an R session and run the code. Does the graph confirm or refute your hypothesis? -What is a variable. Differences between discrete and continuous variables. +```{r echo=FALSE} +ggplot(data = mpg) + + geom_point(mapping = aes(x = displ, y = hwy)) +``` + +You can immediately see that there is a negative relationship between engine size (`displ`) and fuel efficiency (`hwy`). In other words, cars with big engines have a worse fuel efficiency. But the graph shows us something else as well. + +![](images/visualization-1.png) + +One groups of points seems to fall outside the linear trend. These cars appear to get a higher mileage than we would expect. What can explain this cluster? We'll examine this riddle in a second, so brainstorm some ideas. + +In the meantime, let's review the code that we used to make the graph. + +### Template + +This code is almost a template for making plots with `ggplot2`. + +```{r eval=FALSE} +ggplot(data = mpg) + + geom_point(mapping = aes(x = displ, y = hwy)) +``` + +The function `ggplot()` initializes a new plot that you can add layers to. `ggplot()` doesn't create a plot by itself, but you should use `ggplot()` to begin every plot you make with `ggplot2`. + +The first argument of `ggplot()` is the data set that you would like to use in your graph. So `ggplot(mpg)` initializes a graph that will use the `mpg` data set. + +To complete a graph, add one or more layers to `ggplot()`. The function `geom_point()` adds a layer of points to the plot, which creates a scatterplot. The mapping argument explains where those points should go. Always set mapping to a call to `aes()`. The `x` and `y` arguments of `aes()` explain which variables to map the x and y locations of the points to. + +You can change the data set, geom function, and aes arguments that you use in your plots. You can also add functions and arguments that do not appear here to make a graph. However, you can always return to this code as a simple template for a complete graph. To make a graph, replace the bracketed sections in the code below. + +```{r eval = FALSE} +ggplot(data = ) + + geom_(mapping = aes()) +``` + +### Aesthetic Mappings + +> "The greatest value of a picture is when it forces us to notice what we never expected to see." +> - John Tukey + +Visualizations can reveal relationships that you didn't expect to see, which makes them a very powerful tool for data science. For example, our plot above revealed a groups of cars that had better than expected mileage. How can you explain these cars? Make a hypothesis before reading on. + +Let's hypothesize that the cars are hybrids. One way to test this hypothesis is to look at the `class` value for each car. The `class` variable of the `mpg` data set classifies cars into groups such as compact, midsize, and suv. If the outlying points are hybrids, they should be classified as compact or perhaps subcompact cars (keep in mind that this data was collected before hybrid trucks and suvs became popular). + +There are two ways to add a third value, like `class` to a two dimensional scatterplot. You can map the value to a new _aesthetic_ or you can divide the plot into _facets_. + +An aesthetic is a visual property of the points in your plot. Aesthetics include things like the size, shape, or color of your points. + +![](images/visualization-2.png) + +You can convey information by mapping the aesthetics in your plot to the variables in your data set. For example, we can map the colors of the points to the `class` variable. Then the color of the point will reveal its class affiliation. + +```{r} +ggplot(data = mpg) + + geom_point(mapping = aes(x = displ, y = hwy, color = class)) +``` + +To map an aesthetic to a variable, set the name of the aesthetic to the name of the variable and do this _in your plot's `aes()` call_. For example, above we set `color` to `class`. + +`ggplot2` will automatically assign a unique level of the aesthetic (here a unique color) to each unique value of the variable. `ggplot2` will also add a legend that explains which levels correspond to which values. + +We can now see that most of the unusual points are two seater cars. This doesn't sound like a hybrid. In fact, it sounds a lot like a sports car---and that's what the points are. As you can see in the graph, these cars have the same size engines as suvs and pickup trucks. However, sports cars have much smaller bodies than suvs and pickup trucks, which improves their gas mileage. In hindsight, these cars were unlikely to be hybrids since they have such large engines. + +Color is one of the most popular aesthetics to use in a scatterplot, but we could have mapped the size aesthetic to `class` in the same way. In this case, the exact size of the point reveals its class affiliation. + +```{r} +ggplot(data = mpg) + + geom_point(mapping = aes(x = displ, y = hwy, size = class)) +``` + +Or we could have mapped the _alpha_ of the points to the `class` variable. The alpha is the transparency of the points. Now the transparency of each point corresponds with its class affiliation. + +```{r} +ggplot(data = mpg) + + geom_point(mapping = aes(x = displ, y = hwy, alpha = class)) +``` + +We also could have mapped the shape of the points to the `class` variable. + +```{r warning=FALSE} +ggplot(data = mpg) + + geom_point(mapping = aes(x = displ, y = hwy, shape = class)) +``` + +In each case above, we set the name of the aesthetic to the variable to display and we do this within the `aes()` function. This arrangement highlights a useful insight since we also set `x` and `y` to variables within `aes()`: the x location and the y location of a point are aesthetics, visual properties that we can map to variables. + +Once you set an aesthetic, `ggplot2` takes care of the rest. It selects a pleasing set of values ot use for the aesthetic and it constructs a legend that explains the mapping. For x and y aesthetics, `ggplot2` does not create a legend, but it creates an axis line with tick marks and a label. The axis line acts in the same way as a legend, as a guide. + +Now that you know how to use aesthetics, you should take a moment to experiment with the `mpg` data set. Attempt to match different types of variables to different types of aesthetics. Attempt to use more than one aesthetic at a time. You can learn what aesthetics are available to use in a scatterplot by looking up the help page for `geom_point()`, e.g. `?geom_point`. + +Have you experimented with aesthetics? Great. Here are some things that you may have noticed. + +#### Continuous data + +`ggplot2` treats continuous variables differently than discrete variables. A continuous variable can contain an infinite number of values that can be put in order, like numbers or date times. If your variable is continuous, `ggplot2` will use a gradation of levels to display the values. For example, `ggplot2` will use a gradiant of colors colors from blue to black, or a gradiant of sizes and alpha levels. `ggplot2` will not use the shape aesthetic to display continuous information. Why? Because the human eye cannot easily interpolate between shapes. Can you tell whether a shape is 3/4's of the way between a triangle and a circle? Or just 5/8th's of the way? + +`ggplot2` will treat your variable as continuous if it is a numeric, integer, or a recognizable date time (but not a factor, see `?factor`). + +#### Discrete data + +A discrete variable can only take a finite (or countably infinite) set of values. Character strings and boolean values are examples of discrete data. `ggplot2` will treat your variable as discrete if it is not numeric, integer, or recognizable date time. + +`ggplot2` will attempt to display discrete data with a discrete set of aesthetic levels. It will choose a set of levels that maximizes the difference between each pair of levels. This means that `gpplot2` will use equally spaced sizes and alpha levels to display discrete data. `ggplot2` will use a set of colors that span the hues of the rainbow. The exact colors will depend on how many hues appear in your graph. `ggplot2` selects the colors in a way that ensures that one color does not visually dominate the others. + +`ggplot2` will use up to six shapes to display discrete data. If the data contains more than six unique values, `ggplot2` will print an error message and only display the first six values. You may have noticed that in the graph above (and below), `ggplot2` did not display the suv values, which were the seventh unique class. + +```{r} +ggplot(data = mpg) + + geom_point(mapping = aes(x = displ, y = hwy, shape = class)) +``` + +See _Section 5_ to learn how to pick your own colors, shapes, sizes, etc. for `ggplot2` to use. + +#### Multiple aesthetics + +You can use more than one aesthetic at a time. `ggplot2` will combine aesthetic legeneds where possible. + +```{r} +ggplot(data = mpg) + + geom_point(mapping = aes(x = displ, y = hwy, color = class, shape = class, size = cty)) +``` ### Facets -Facets divide your plot into subplots. Each subplot shows a subset of related data points. +Facets provide a second way to add a variables to a two dimensional graph. When you facet a graph, you divide your data into subgroups qand then plot a separate graph, or _facet_, for each subgroup. + +For example, we can divide our data set into four subgroups based on the `cyl` variable: + +1. all of the cars that have four cylinder engines +2. all of the cars that have five cylinder engines (there are some) +3. all of the cars that have six cylinder engines, and +4. all of the cars that have eight cylinder engines + +Or we could divide our data into three groups based on the `drv` variable: + +1. all of the cars with four wheel drive (4) +2. all of the cars with front wheel drive (f) +3. all of the cars with rear wheel drive (r) + +We could even divide our data into subgroups based on the combination of two variables: + +1. all of the cars with four wheel drive (4) and 4 cylinders +2. all of the cars with four wheel drive (4) and 5 cylinders +3. all of the cars with four wheel drive (4) and 6 cylinders +4. all of the cars with four wheel drive (4) and 8 cylinders +5. all of the cars with front wheel drive (f) and 4 cylinders +6. all of the cars with front wheel drive (f) and 5 cylinders +7. all of the cars with front wheel drive (f) and 6 cylinders +8. all of the cars with front wheel drive (f) and 8 cylinders +9. all of the cars with rear wheel drive (r) and 4 cylinders +10. all of the cars with rear wheel drive (r) and 5 cylinders +11. all of the cars with rear wheel drive (r) and 6 cylinders +12. all of the cars with rear wheel drive (r) and 8 cylinders + +#### `facet_grid()` + +The graphs below show what a faceted graph looks like. They also show how you can build a faceted graph with `facet_grid()`. I'm not going to tell you how facet grid works---well at least not yet---because that would be too easy. Instead, I would like you to try to induce the syntax of `facet_grid()`. What determines which variable splits the graphs into rows? columns? What parts of the syntax always stay the same? And what does the `.` do? + +Make an honest effort at answering these questions, and then read on on the other side of the graphs. ```{r} -ggplot(mpg) + - geom_point(aes(x = displ, y = hwy)) + - facet_grid(. ~ cyl) - -ggplot(mpg) + - geom_point(aes(x = displ, y = hwy)) + - facet_grid(drv ~ .) - -ggplot(mpg) + - geom_point(aes(x = displ, y = hwy)) + +ggplot(data = mpg) + + geom_point(mapping = aes(x = displ, y = hwy)) + facet_grid(drv ~ cyl) +ggplot(data = mpg) + + geom_point(mapping = aes(x = displ, y = hwy)) + + facet_grid(. ~ cyl) +ggplot(data = mpg) + + geom_point(mapping = aes(x = displ, y = hwy)) + + facet_grid(drv ~ .) +``` -ggplot(mpg) + - geom_point(aes(x = displ, y = hwy)) + +To divide a plot into a grid of facets, add `facet_grid()` to the plot. Pass `facet_grid()` a formula, two variable names separaed by a `~`. `facet_grid()` will split the graph into rows based on values of the first variable name. It will split the graph into columns based on values of the second variable name. This mirrors the rows first, columns second convention of R. + +If you prefer to not split inot rows or columns, pass `facet_grid()` a `.` as a place holder on the desired side of the function. + +Facets let you quickly compare subgroups by glancing down rows or across columns. Each facet will use the same x and y limits, but you can change this behavior across rows or columns by adding the argument `scales = "free_x"`, `scales = "free_y"`, or `scales = "free"` (both x and y), i.e., + +```{r} +ggplot(data = mpg) + + geom_point(mapping = aes(x = displ, y = hwy)) + + facet_grid(drv ~ cyl, scales = "free_x") +``` + + +#### `facet_wrap()` + +`facet_wrap()` provides a pleasant way to facet a plot across a single variable with many values. It operates like `facet_grid(. ~ )` except that it wraps the results into multiple rows to present a multi-line, roughly square result. + +The easiest way to understand `facet_wrap()` is to compare the output of `facet_grid()` and `facet_wrap()`. + +```{r} +ggplot(data = mpg) + + geom_point(mapping = aes(x = displ, y = hwy)) + + facet_grid(. ~ class) +ggplot(data = mpg) + + geom_point(mapping = aes(x = displ, y = hwy)) + facet_wrap(~ class) ``` +The results of `facet_wrap()` are easier to study if the facetting variable has many values. However, `facet_wrap()` can only facet by one variable at a time. + +### Position + +Ready for another riddle? + +Why does our graph appear to only display 126 points? There are 234 observations in the data set. Also, why do the points appear to be arranged on a grid? + +```{r echo = FALSE} +ggplot(data = mpg) + + geom_point(mapping = aes(x = displ, y = hwy)) +``` + +The points appear in a grid because the `hwy` and `displ` measurements were rounded to the nearest integer and tenths values. As a result, many points overlap each other because they've been rounded to the same values of `hwy` and `displ`. This also explains why our graph appears to contain only 126 points. 108 points are hidden on top of other points located at the same value. + +This arrangement can cause problems because it makes it hard to see where the mass of the data is. Is there one special combination of `hwy` and `displ` that contains 109 values? Or are the data points more or less equally spread throughout the graph? + +You can avoid this overplotting problem by adding a _position adjustment_ to each point. A position adjustment tells `ggplot2` what to do when two or more points overlap. + +To set a position adjustment, set the `position` argument of `geom_point()` to one of `"identity"`, `"jitter"`, `"dodge"`, `"fill"`, or `"stack"`. + +```{r} +ggplot(data = mpg) + + geom_point(mapping = aes(x = displ, y = hwy), position = "jitter") +``` + +`ggplot2` recognizes all five of these options, but only `"identity"` and `"jitter"` make sense for scatterplots (we'll look at the rest when we study bar charts). `position = "identity"` plots the points where they arrear (the default). `position = "jitter"` adds a small amount of random noise to each point, as we see above. This spreads the points out because no two points are likely to receive the same amount of random noise. + +But isn't this, you know, bad? It *is* true that jittering your data makes it less accurate at the local level, but jittering may make your data _more_ accurate at the global level. By jittering your data, you can see where the mass of your data falls on an overplotted grid. Occasionally, jittering will reveal a pattern that was hidden within the grid. + +`position = "jitter"` is shorthand for `position = position_jitter()`. This is true for the other values of position as well (e.g, `position_identity()`, `position_dodge()`, `position_fill()`, and `position_stack()`. The expanded forms let you specify details of the adjustment process, and also provide a way to open a help page for each process (which you will need to do if you wish to learn more). + +```{r eval=TRUE} +?position_jitter +``` + +```{r} +ggplot(data = mpg) + + geom_point(mapping = aes(x = displ, y = hwy), + position = position_jitter(width = 0.03, height = 0.3)) +``` + ### Geoms How are these two plots similar? ```{r echo = FALSE, message = FALSE, fig.show='hold', fig.width=4, fig.height=4} -ggplot(mpg) + - geom_point(aes(x = displ, y = hwy)) +ggplot(data = mpg) + + geom_point(mapping = aes(x = displ, y = hwy)) -ggplot(mpg) + - geom_smooth(aes(x = displ, y = hwy)) +ggplot(data = mpg) + + geom_smooth(mapping = aes(x = displ, y = hwy)) ``` -They both contain the same x variable, the same y variable, and if we look closely, we can see that they are plotting the same data. But the plots are not identical. +They both contain the same x variable, the same y variable, and if you look closely, you can see that they are plotting the same data. But the plots are not identical. -Each plot uses a different visual object to represent the data. The first plot represents each observation in the data set with a point. The second plot represents the entire group of observations with a smoothed line. You could say that these two graphs are different "types" of plots, or that the "draw" different things. In `ggplot2` syntax, we say that they use different _geoms_. +Each plot uses a different visual object to represent the data. The first plot represents each observation in the data set with a point. The second plot represents the entire group of observations with a smoothed line. You could say that these two graphs are different "types" of plots, or that they "draw" different things. In `ggplot2` syntax, we say that they use different _geoms_. _geom_ is short for geometrical object. The geom of the plot determines what type of visual object the plot uses to represent the data. So far, all of our plots have used the point geom, which is how you create scatterplots. The new plot uses the smooth geom, a smooth line fitted to the data. You can use different geoms to plot the same data. To change the geom in your plot, change the `geom_` function that you add to `ggplot()`. For example, to go from the first plot above to the second, replace `geom_point()` in ```{r eval=FALSE} -ggplot(mpg) + - geom_point(aes(x = displ, y = hwy)) +ggplot(data = mpg) + + geom_point(mapping = aes(x = displ, y = hwy)) ``` with `geom_smooth()` like this ```{r eval=FALSE, message = FALSE} -ggplot(mpg) + - geom_smooth(aes(x = displ, y = hwy)) +ggplot(data = mpg) + + geom_smooth(mapping = aes(x = displ, y = hwy)) ``` -`ggplot2` comes with 37 `geom_` functions that you can use. You can also find additional `geom_` functions in other R packages. All `geom_` functions behave similarly. They each take a `mapping` argument. However, the aesthetics that you pass the argument will change from geom to geom. For example, you can set the shape of points, but it would not make sense to set the shape of a line. +`ggplot2` comes with 37 `geom_` functions that you can use. You can also find additional `geom_` functions in other R packages. All `geom_` functions behave similarly; each takes a `mapping` argument. However, the aesthetics that you pass the argument will change from geom to geom. For example, you can set the shape of points, but it would not make sense to set the shape of a line. #### Multiple geoms You can add multiple geoms to the same plot by adding multiple `geom_` functions to the plot call. For instance, it is common to combine a geom that displays the raw data with a geom that displays a summary of the data: ```{r, message = FALSE} -ggplot(mpg) + - geom_point(aes(x = displ, y = hwy)) + - geom_smooth(aes(x = displ, y = hwy)) +ggplot(data = mpg) + + geom_point(mapping = aes(x = displ, y = hwy)) + geom_smooth(mapping= aes(x = displ, y = hwy)) ``` -`ggplot2` will place each new geom on top of the preceeding geom. This system lets you build a sophisticated graph layer by layer, that is geom by geom. +`ggplot2` will place each new geom on top of the preceeding geom. This system lets you build a sophisticated graph layer by layer, geom by geom. -Notice that our call now contains some redundant code. We call `aes(x = displ, y = hwy)` twice. It is unwise to repeat code because each repetition creates a chance to make a typo or error. Repetitions also make your code harder to read and write. +#### Global and local mappings + +Notice that our call now contains some redundant code. We call `mapping = aes(x = displ, y = hwy)` twice. It is unwise to repeat code because each repetition creates a chance to make a typo or error. Repetitions also make your code harder to read and write. You can avoid repetition by passing a set of aesthetics to `ggplot()`. `ggplot2` will treat these aesthetics as global mappings that apply to each geom in the graph. You can then remove the mapping arguments in the individual layers. ```{r, message = FALSE} -ggplot(mpg, aes(x = displ, y = hwy)) + +ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + geom_point() + geom_smooth() ``` -If you supply a mapping argument in a `geom_`function, `ggplot2` will add the local aesthetics to the global aesthetics _for that geom only_. This provides an easy way to differentiate geoms. +If you supply a mapping argument in a `geom_`function, `ggplot2` will add the local aesthetics to the global aesthetics _for that geom only_. If one of the local aesthetics conflicts with a global aesthetic, `ggplot2` will override the global aesthetic _for that geom only_. This provides an easy way to differentiate geoms. ```{r, message = FALSE} -ggplot(mpg, aes(x = displ, y = hwy)) + - geom_point(aes(color = class)) + +ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + + geom_point(mapping = aes(color = class)) + geom_smooth() ``` -Notice that the smooth line above is a single line with a single color. This does not occur if you add the color aesthetic to the global mappings. Smooth will draw a different colored line for each class of cars. +The smooth line above is a single line with a single color. This does not occur if you add the color aesthetic to the global mappings. Smooth will draw a different colored line for each class of cars. ```{r, message = FALSE, warning = FALSE} -ggplot(mpg, aes(x = displ, y = hwy, color = class)) + +ggplot(data = mpg, mapping = aes(x = displ, y = hwy, color = class)) + geom_point() + geom_smooth() ``` -Local aesthetics will override global aesthetics in any geom where the two conflict. +#### Global and local data sets + +You can use the same system to specify individual data sets for each layer. + +```{r, eval = FALSE} +ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + + geom_point() + + geom_smooth() +``` + +is analagous to + +```{r, eval = FALSE} +ggplot(mapping = aes(x = displ, y = hwy)) + + geom_point(data = mpg) + + geom_smooth(data = mpg) +``` + +To apply the smooth line to a subset of the data, pass it its own data argument (here the subset of 8 cylinder cars). + +```{r, message = FALSE, warning = FALSE} +ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + + geom_point() + + geom_smooth(data = subset(mpg, cyl == 8)) +``` + +### Parameters + +How do these two plots differ? + +```{r echo = FALSE, message = FALSE, fig.show='hold', fig.width=4, fig.height=4} +ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + + geom_point() + + geom_smooth() + +ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + + geom_point() + + geom_smooth(method = lm) +``` + +Each overlays a smooth geom on a points geom, but each displays a different "type" of smooth line. In the first graph, `ggplot2` draws the result of a loess algorithm. In the second plot, `ggplot2` draws the result of a linear regression. + +You can customize the output of `geom_smooth()` with its `method` argument. Set `method` to the name of a model function in R. `geom_smooth()` will display the result of modelling y on x with the function. In the graph above, we set `method = lm` to create the regression line. `lm()` is the R function that builds linear models. + +```{r eval=FALSE} +ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + + geom_point() + + geom_smooth(method = lm) +``` + +`method` is a _parameter_ of the `geom_smooth()` function, a piece of information that `ggplot2` uses to build the geom. If you do not set the `method` parameter, `ggplot2` defaults to a loess model or a general additive model depending on how many points appear in the graph. + +`se` is another parameter of `geom_smooth()`. You can set the `se` parameter of `geom_smooth()` to `FALSE` to prevent `ggplot2` from drawing the standard error band that appears around the smooth line, i.e. + +```{r } +ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + + geom_point() + + geom_smooth(method = lm, se = FALSE) +``` + +Parameters are different than mappings because you do not set a parameter to a variable in the data set. `ggplot2` uses the value of a parameter directly. In contrast, to use a mapping, `ggplot2` must create a system of equivalencies between values of a variable and levels of an aesthetic. + +##### Aesthetics as parameters + +The distinction between parameters and mappings makes it easy to customize your graphs. Suppose you want to make a graph like the one below. How would you do it? + +```{r echo = FALSE} +ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + + geom_point(color = "blue") +``` + +If you add `color = "blue"` to the mappings argument, you will get an unexpected result. + +```{r} +ggplot(data = mpg) + + geom_point(mapping = aes(x = displ, y = hwy, color = "blue")) +``` + +`ggplot2` treats `color = "blue"` as a mapping. It assumes that "blue" is a value in the data space. It uses R's recycling rules to assign the single value "blue" to each row of data. Then it creates a mapping from the value "blue" in the data space to the pinkish color that we see in the visual space. It even creates a legend to let you know that the color pink represents the value "blue." The choice of pink is a coincidence; `ggplot2` defaults to pink whenever a single discrete value is mapped to the color aesthetic. + +This is not what we want. We want to set the color to blue. In short, we want to treat the color of the points like a parameter and set it directly. + +To set an aesthetic as if it were a parameter, set it _outside_ of the `mapping` argument. This will place it outside of the `aes()` function as well. + +```{r} +ggplot(data = mpg) + + geom_point(mapping = aes(x = displ, y = hwy), color = "blue") +``` + +`ggplot2` will treat assignments that appear in the `aes()` call of the mapping argument as mappings. It will treat assignments that appear outside of the mappign argument as parameters. + +As with aesthetics, different geoms respond to different parameters. How do you know which parameters to use with a geom? You can always treat a geom's aesthetics as parameters. You can also spot additional parameters by identifying a geom's stat. + + +### Stats + +How does `ggplot2` know where to place the line in our smooth plot? + +```{r echo = FALSE, message = FALSE, fig.show='hold', fig.width=4, fig.height=4} +ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + + geom_point() + + geom_smooth() +``` + +The y values of the line do not appear in our data set, nor did we give the y values to `ggplot2`. `ggplot2` calculated they y values by applying an algorithm to the data. In this case, `ggplot2` applied a smoothing algorithm to the data. + +Many types of graphs plot information that does not appear in the raw data. To do this, the graph first applies an algorithm to the raw data and then plots the results. For example, a boxplot calculates the first, second, and third quartiles of a data set and then plots those summary statistics (among others). A histogram bins the raw data and then counts how many points fall into each bin. It plots those counts on the y axis. + +`ggplot2` calls these algorithms _stats_, which is short for statistical transformation. Stats are handled automatically in `ggplot2`. Not every geom uses a stat; but when one does, `ggplot2` will apply the stat in the background. + +You can fine tune how a geom implements a stat by passing the geom parameters for the stat to use. To discover which stat a geom uses, visit the geom's help page. + +For example, the `?geom_smooth` help page shows that `geom_smooth()` uses the `stat_smooth()` stat by default. If you then open the `?stat_smooth` help page, you will see that `stat_smooth()` takes the arguments `method` and `se` among others. With `ggplot2`, you can supply arguments to the stat called by a geom, by passing the arguments as parameters to the geom. + +*** + +In general practice, you do not need to worry much about stats. Usually one geom will be closely associated with one stat, and `ggplot2` will implement the stat by default. However, stats are an integral part of the `ggplot2` package that you are welcome to modify. To learn more about `ggplot2`'s stat system, see [ggplot2: Elegant Graphics for Data Analysis](http://www.amazon.com/dp/0387981403/ref=cm_sw_su_dp?tag=ggplot2-20). + + + + + + + +## The Grammar of Graphics ## Bar Charts After scatterplots, the most common type of plot is probably the bar chart. A bar chart is only a graph that uses the bar geom. -### Stats - - -### Position - -Why does our graph appear to only display 126 points? There are 234 observations in the data set. Why do the points appear to be arranged on a grid? - -The `hwy` and `displ` measurements were rounded to the nearest integer and tenths. As a result, many points overlap each other. In other words, their positions collide. You can prevent this by setting adding a little bit of random noise to each point. - -```{r} -ggplot(mpg) + - geom_point(aes(x = displ, y = hwy), position = "jitter") -``` - ## Histograms -## The Grammar of Graphics - ## Customizing plots