pax_global_header00006660000000000000000000000064134006476730014524gustar00rootroot0000000000000052 comment=c3ee9f6545824bb79fde6b4f67d62ea8007b8de5 pyzoltan-1.0.1/000077500000000000000000000000001340064767300134035ustar00rootroot00000000000000pyzoltan-1.0.1/.gitignore000066400000000000000000000001021340064767300153640ustar00rootroot00000000000000*.pyc *.o *.c *.cpp *~ *.so build/ dist/ *.egg-info/ .pytest_cachepyzoltan-1.0.1/.travis.yml000066400000000000000000000006731340064767300155220ustar00rootroot00000000000000dist: xenial language: python python: - "2.7" - "3.6" env: - USE_TRILINOS=1 ZOLTAN_INCLUDE=/usr/include/trilinos ZOLTAN_LIBRARY=/usr/lib/x86_64-linux-gnu before_install: - sudo apt-get update - sudo apt-get install -y openmpi-bin libopenmpi-dev libtrilinos-zoltan-dev # command to install dependencies install: - pip install -r requirements.txt - python setup.py develop # command to run tests script: - pytest -v pyzoltan pyzoltan-1.0.1/CHANGES.rst000066400000000000000000000007621340064767300152120ustar00rootroot000000000000001.0.1 ~~~~~~ * Release date: 1 December, 2018. * Minor release fixing setup.py requirements. 1.0 ~~~ * Release date: 1 December, 2018. * First public release as a separate project that is pip installable. * Support for properties with strides. * Do not initialize MPI automatically but let users do so explicitly. * CI tests on travis and full documentation builds on readthedocs. * Update build instructions for Ubuntu and conda. * Remove carray as it is now a separate package called cyarray. pyzoltan-1.0.1/MANIFEST.in000066400000000000000000000002201340064767300151330ustar00rootroot00000000000000include MANIFEST.in *.py *.rst *.yml *.sh *.txt recursive-exclude pyzoltan *.cpp recursive-include pyzoltan *.pxd *.h recursive-include docs *.*pyzoltan-1.0.1/README.rst000066400000000000000000000030721340064767300150740ustar00rootroot00000000000000PyZoltan: a Python wrapper for the Zoltan library ================================================== |Travis Status| |Documentation Status| .. |Travis Status| image:: https://travis-ci.org/pypr/pyzoltan.svg?branch=master :target: https://travis-ci.org/pypr/pyzoltan .. |Documentation Status| image:: https://readthedocs.org/projects/pyzoltan/badge/?version=latest :target: https://pyzoltan.readthedocs.io/en/latest/?badge=latest :alt: Documentation Status PyZoltan is as the name suggests, is a Python wrapper for the Zoltan_ data management library. In PyZoltan, we wrap the specific routines and objects that we wish to use. The following features of Zoltan are currently supported: - Dynamic load balancing using geometric algorithms - Unstructured point-to-point communication - Distributed data directories .. _Zoltan: http://www.cs.sandia.gov/Zoltan/ Installation ------------- PyZoltan requires the following: - numpy - cyarray - Cython - mpi4py_ - Zoltan_ .. _mpi4py: http://mpi4py.scipy.org/ Zoltan itself needs to be already installed. We provide a convenient script called ``build_zoltan.sh`` that can be used to build Zoltan. Many of the other dependencies can be installed using pip or conda:: $ pip install -r requirements.txt Once this is installed one can install PyZoltan as follows:: $ pip install pyzoltan or via the usual ``setup.py`` method:: $ python setup.py install # or develop For more installation instructions, especially on how to build Zoltan and PyZoltan, please see the documentation here: https://pyzoltan.readthedocs.io pyzoltan-1.0.1/build_zoltan.sh000077500000000000000000000016231340064767300164320ustar00rootroot00000000000000#!/bin/sh ZOLTAN_DIR=$1 BUILD_DIR="/tmp" URL="http://www.cs.sandia.gov/~kddevin/Zoltan_Distributions/zoltan_distrib_v3.83.tar.gz" Check() { if [ $# -lt 1 ]; then echo "Usage: build_zoltan.sh TARGET_DIR" echo "Where TARGET_DIR is where the library and includes are installed." exit 1 fi HEADER="$ZOLTAN_DIR/include/zoltan.h" if [ -f "$HEADER" ]; then echo "$HEADER already exists, skipping build." exit 0 else mkdir $ZOLTAN_DIR fi } Download() { FNAME=`basename $URL` if [ -x "/usr/bin/curl" ] ; then curl -o $BUILD_DIR/$FNAME $URL else wget -q -O $BUILD_DIR/$FNAME $URL fi } Build() { cd $BUILD_DIR tar xzf zoltan_distrib*.tar.gz cd Zoltan_v3.83 mkdir build cd build ../configure --with-cflags=-fPIC --enable-mpi --prefix=$ZOLTAN_DIR make install } Check "$@" Download Build pyzoltan-1.0.1/docs/000077500000000000000000000000001340064767300143335ustar00rootroot00000000000000pyzoltan-1.0.1/docs/Images/000077500000000000000000000000001340064767300155405ustar00rootroot00000000000000pyzoltan-1.0.1/docs/Images/point-partition.png000066400000000000000000027764371340064767300214400ustar00rootroot00000000000000PNG  IHDRx?B&:sRGB pHYsaa?itIME 6R IDATxy|T?̝:HXX(=O> ` A|$Z!QRV Ԃ(غ4Բh}$ Ч*V(hFD%KIf&!{L2$}Wɝ;=|FcB!B! >!B! B!B!34 B!B(f0h@!B!P`ЀB!B!B!B1AB!B!bB!B  !B! B!B!34 B!B(f0h@!B!P`ЀB!B]|ozA͍3ga`SAAAo^UU%luuu1<>f5k!B!tA)@!BHnl~ ر#ʿdl6[qaÆ={xEnjBq=Fe˖A]! SPd۶ms\E:x3fغuko6nXTT4sL˕9 &\<B!46mƌ῟>}: Aтv6lذaݻZ w̛7o۶msbUrU HJJyCp;_… nwiiի~!hΰB]£`pcWBbŮ(%%JKKm6_aƍ 3gΜ7o񛎎> UUU3gGNII5kn9?ür[jN6͘dh"Az;@aCE(J-BqqqϛqY*..noo5B!"KJJra…< ^z`geWAiHWL"0h@PPPqE,(˖-[honذ!11ϿVUUM6/ӋMVYY9uVn#0JKKA(**;w.Oxlڴf1"QojjjMV___PP0uT(B։?h7ڱcGnnnQQQvv ŸȯB!7h'*. !$77qѢE!$Ν+~۶m;v7W^ٳ͚5k!۷o|!d޼y=uܹn|㣫 >HOIII ?>>999LoN?Θ1#Q\.BHqqq47---%F~z{rB]T"΢El6ܹsm6۲eˊFț3g7p}}O~~ !yGxaW\\\PPﱲz$⒟?/"SRRB66-''v޼yӦM >l%xokKMM $L6xԩz` р%?͛wu]s5#`y SrrrUUUG7n< Əs̙1cFeee}}O0w1u{O?~ 6E(z{n7uBqw.((Y.\~c(i֭|Bvmk׮---s->eggګ*4\vmNNѣGv}ԩ6lkZ˵aÆ3gvmb!eqLXmmmAAZĎ; &G6BHeein3fz ~vvvT ;wneeeUUՀ>u1cƎ;:::!ЅvnlBF#1 ]?`Wv tq5Jʘ;k֬7ȵF;;< ߖbԩ|e!rէz!b{|B=T^zGȯZށ_[[[YYf͚Xg>`ڴik׮(\uU}f*3AU`WB4 bkݱcGiiimm-ѣ19nONN1 xᇫ].׶mΝV|be=چ!J!'*@aЀd5n^葈Ɏk֬CHݥ/R4g>6ca`ζm ??WVVFyd^ڽ{wl6['B(憮!ABGÂ5 6lXlf[|yxebڵ3!o<\ރwd/}={L:(Ɍ|ޒg̘QUU\~7xݘY#۷o˫_ϟϗZhQRReX~Sm۶-++߷999I B!42wΖR\\\WW|"~ L6:6e+r6l;u34+oG~E|B]x9o޼;w.!h"BHbw<#  !B>0*chB!B!.B!B!B!B1AB!B!bB!B  !B! B!B!34 B!B(f0h@!B!P`ЀB!B!B!B1AB!B!bB!B  !B! B!B!34 B!B(f0h@!B!P`ЀB!B!B!B1AB!B!bB!B  !B! B!B!34 B!B(f0h@!B!P`ЀB!B!B!B1AB!B!bB!B  !B! B!B!34 B!B(f0h@!B!P`ЀB!B!B!B1AB!B!bB!B  !B! B!B!34 B!B(f0h@!B!P`ЀB!B!B!B1#S1E!_7 !B!ЅoR '!1f|4R*rp=9#T"!B!0h@cL4x !$ !Ii$oq MHfa BfO!B!0h@DJ)oSJGh`آǛ"dd81!B!0h@Y  Ҙ$QU`3~ 0™$DpbB!Bz4MmbL&? N A!BaЀYQ5M4-1dժU+VZX֠/`lz X,Bς `0rAȇ >xȘ9d$$E! 0h@*$δلfv;xeLswf],x w'掣 '-E팒~UNoLE1[|e4!5iAGxWr goD Fs4Tt"Q})~?oqGKJ߷o1YQB(c|u+KzG.˫h0pF_ey|`EoS~5&>GL"Ĭ#?W,)y|2==R)E팒ZnQbLI`Lq8ms1z~h"v!1ܫ 4a{ϒ<|i9QSӰMHFJ 8b^1BϛM&S4=WUuJc@dERV^btGG2[uFgѓOf[Y^l.j.IV^rOɾ̡+D 2_/Ԓ练 UVn?i$yyJJǼ5].4=ݔxڱeo^3Ň|1gW茷ŧͼ“ͫ0&wp55/"uYw*T&ENO xFIU3)e!V͌m3VEo_E/UpA /NHUUU=oF۬Yjjjj~i,."xguo~KB#q\VW X|x"M4 "o d ..FFk=DWWE=.z^Fe9=`6lْ.</܄@TIBHuvwCn٢O7l6[e48F29pkUTT޷SV֌t% @)?{;{L OXlPK'“oaanё~;u/ƞ?c'ã]5O쟴?#OFxW.߼t`ҁOk".1/N?Zٓ!yG-6u}bxW<_kC=bx4aX4MlGZ%ʇcǎիWGٲes)((")⍵ދxƘ|M||<4<duuuku[cnq gr[wJu>s~0-HΗ6s6"D6 4#?Nr^}GQ'N̿"ܻweK21JKw[׭SB´dQ{=D#d@WKSgofJJB`nc:_+vee[޷{sx/>̤Xj<$hI y‡"<y'NK.Zt:D&À|kIGtM LI!py.\dA)ڵkky䳮V5..1#׺jkknwbb={\{X^M:;; !qqqqc.(]]] L]7kE }~#vX$)ZpIB}曏_lDbc7~+99K| g]ׇn_AÅ1Vؽiv|;nk?w--[VU,<н9~퇾) f8hWIpm>ؔt]-i<@/I܎L9rV [y`GH}.% /n?i+ݳ[ IDAT,ikrf\+-aӦE?q$S;v{=iSp0+VCiADG 0h@D8>X[Iy; WU),7 ߹577HHnr -ƒh%)m65SD]LZK˷5jcg}ƺ߬sLrkqrیGt[>K36,5bTs tnk͵xc;#||Zyf|ש"㽉WFW)Kcq-a+:/8fcZ?uNLsX^!17h}okTH |Yog% V^6&J3P>_ EQEIII`}_z*dnlyb, x>mVeq/kEfCmh Y{)aX,/Q5Y!Nx s-q:uXWZ?p:|G@!^d,ҲeS*fe}ehҐCyIӴ <3 .)|; 9w:q}NM2$Y-~Q Syx㍎L !Jp}&:-8<$JwiV,]\?WSU#L &vu+jZioiuGA6)?_7>cF貔99JeeRF&yc9ϫDUU$`&Sf~y12))Y ڮs$]'ޟӋ b&Z7tfqUloүV4=u+&L{閖b2uL{gGjn9ߡ2{ɸ,o@n(㧐$ ͒aq0ǰq1 TUD!$z\|A絢eSZу[2}prOm697DVt> G}Xcm(]NOkk}FKb4/V8ӧ?ֆz!d gN=Dĉٳ[$V?BQ"0 >R߯eY#Fuuu$ɲl|ɱgƠ⭂ *f0IWUMa#PA!b0 _:R2U&r,|Ccܢ;(cu=.MIe3ϼ|PKFzD]koO޿?;,Pe (P>wuQsxNR< |>,PmeM&LhTWih uz?f^9qUWǕ8rdSl/ZūD<*yh`;kY&+n)9$'NHpVTR[{Ri#]/tO,/RVFvn)'0I`mtu@LLgVu0?oIs<`J ڼ9I.,,}`~hsK!- !~oS9r3R5§Sn}rwM[K7v5~'jtYyzH:s?DQgAvgoRѡiZY||>F@մO+*Vݻb攔]a{\+:C-Gl(?SrZu8_`tDb@۵unEw߯|G:;G/7:p:̆b>rgl޼ܸw{?<3 B $‰%z\ 9묏YMo %wLjQ{Φ{'V-hقTdwW6HJWWFM7ZSA0(u5tBPmC #(>Cwxm?Ʈgشs 'eItN uuu6]nk+Ç(F%aU7qOW[Qw8[w ` 0!rgM9{!/|a';J1/<`4]LB +DqL|c}ٙ?233w>h^,cor# ыC ?!#?fM4M_;zW qyf Z'jx^EvIH津yw&RVS۵+mۼŐ)JZ,ٜ[n! ɲJX do}  nh|-a[g  L75Wzu'Oᙷ,hW҉.Ȅ BLRD]cSA` Ys^q'*@)n{)G]ee9 `|ss+y55 X-TUYI-$Vגkq0dzU`5^9KZ~kt{P79"V#BG?*]dMb"38{5ݤALf={_nn ?}SE~CrSWǍW]1N$к4ŷWN)=پS\xFF]}qyR~Q%hAgi!DcZKkKt!Ժ!k4VVV.Z|۷?}",1 =0QIII} ^57UU 5Huuu7ݴvB I'キhÆW][|bcP|RSW6؇ȣ2+>K$! ,GKN45=wujmu560EbTw({xĢW:xg &Dυ0hx#kMFf~;'u$i/\T2WhFIWGV9fBL&Gmmi2SQ; ?@.x,D#ZOs:]_0?HB$h@ĈEUe 7q1 w<^Qո.o2FYu ,Sqee[JJJ/7mLi]?qMP"HIRF{g"NM{}vX @b`gMIw{KN/|͹@1-DD!w'!ֲ cV۵6! c{_\zU[o%6te+,B&րj LPNworML5z㏛s ģy~S;uRν$ O1$45-{;L׻dWNb$kozu ?}SE~[Zw6z-ݽͿvk/,UIFxNmkǃVvPOvo,k*T޲U(-M3+֔o|txN{poUfBhKOUVVe˖*++/_n ?ڵk7n3^z 1J\;R=O2AЊ \g$ os:?馧*NJ 2Bt]o?rl MACVԵ؇a ȣ꒔,9&YF'J-cMukGbQ0!#X|(!DxDc|;TWۧO~ƆYUU1B+۳gرhdyij*1<9ȯ% I堔k=V NBuʽ{eGcƬ͖ޮ.볃m΃P3~K'1p\W(4 h$ $ilb[]I-H\JQeY2ZVN)ʙ =nsaaWj*=U_i2%x:Q ~,`Q4-o8q2j?[P8hT1iiq$@ZZzSSǓ(1c'$no' @*e.RJ,b~f^]>h#2;|A,)13e~ey7=^j)MwcB2Kb11fyywcdx[ۅڡτ9bMIƈ'(0=5o[o}xgֲ7ߔJJFEKa%˗OnEk䴳.e ˗VIyi9Iui2MMu],w\#{fJnn5ӧR7;?k9}eӥ%*͛*+^f\PUw߾~ȯcp~]s4.g(_ҙ4>Ϲ^$)H9`A{\فƎzcv~-D nHI rt ;5ڀ4xY ZAR? ai6 |/ZHK x(>?1BgI]YF,t4㶶ʘKU16[7&YU zM'뿲'NWˑ?tG 7: ~]ԝ3fZphg21zg=5DǁZ(l~(VVuoE&HLG+,!YYMii>>gΦK/B /ZjlG*& 2l10їD:Db Ⴍi  I8Θ6-[X]3.N;sX3RJ\?@Bh>A>pG w[xFUY=NWǣũ^aDii"nyH>}/~қ[ !YuQp睞QݝN[~ct%N%X˻ +#iENj]f%tቮ'tze3cX ߏ["p%ʒ/8(&xDE`Hya˕b2lQBtnniYc!B~~u񡜏pnO:k[¯K7Mft5!N0dzt8>$k1ii|Q_ Gշ>&ʫwrrSO*΃F ɣ&SiiiRdছon=&Xˣ)l|0#pyf ΃!ʵ#o'1hq_ڝG ܋/TUTI32'L,I 4CxIE7^%<2!dqHl"x>DRaF$iJѣWU)IJFZ^)iZ݉:͢l'i2@}-eJf9FǏ^G E"fo-%mTS'MfQdNF>k{0#)&ǛNy?K#6ޮTOIzͱZL|4v7{+/7D NJyø.ey -dd@@$h#` &LL`._O&N|#2R*Oڼyt|(OXXKV?e&5E_l:sf DdXS$C|%񮆼*+5sF_./6|7N+S~v't?K.LOegha* L&1(D4'K)59=^5M-d =VY , AY9xGxOZ9}Ӕ1@;*5uḰ2Ǐ=M|>1,5?1q̙xBڣGA>b3@Sbve NbѢw^yŬ~Q1qO6l޿=VIek$Ј&+K$ \ f|≗vi(M&]`d2(c\ǙmNI3ǝٽpñc_ Oqfo@ Ns`B1 =%Bfy&6[୷Z#Vn`*9e;e5LEX&L̔K~' c:X-e9.MK?"I(O@a5Q`rJ<,X%G{@CN2Y DSǫ auu#].Wnn_Nt'42]8QZyWòe=JB(5R?IG:4-U,!S%%˅2kzoɉ)BEP')lG7?ykJ)ٷt9}l6#^gM6jHYnVǏbG&,:c\>/ P.ZаZf,YQH| =cQN<~- Q[[Wz !DgKRUcFQㇲkVLQYw/vtL6@eL&Dhf,Mg Be~NO/7=aBFCC{/}cZϺ\@@++dY 3A@Y +;\#7kGEMe~lm<k8TԜ6w.{}ܹ&Kד%';/LPG_|Aoa[wѪUGM&д!A 3cpD Qn'1$VX--}ᅒ4`lf-zdF(A4IFO0" %ziGD50!M3KNT4&I4Q\4LrJCtHPZtXDl>fLӁϝοhڃLlT- "#XV&Ja&<@7Ah_aV_a4]W22&@OG\Y0w{ݟz|V 0¨WuIO4mXim͂@>;yoo<w׮[*d}rK;,~.^zlwxPss~ !.<:~'™U~fl6kX/ߋQ?3X xw^"^Νutt$$$PJNwů9MM^o-!+{23 'i)`>k&-h\_5c ҧ*ŘN)BrdYGH 5..ʧ5^WU|UWwv>$ zWSCZڽ= ^bm/y$h_u$ #pEE-kMuu@cTd crjd]Q̣Gȑ죏#Q7 |9uPJɓ~}UEgb^C?l<Y$lm<Ҳg) *V} "ʂ]O(UOlE{BBhi6ossgq‚w\Gs8ԅw%$QT_}h`w1!$ (\" }.7ͷu]o'LPZSSJlAKMVö:k3Kuw7 T#&2UrvĬ!f4?a@bR I ]-x|O#&U<ߐ tY(Um&]IDzMӜ--6ĠǏ7|B ӽ4v-(;ʠ2vG,_7m\LqJ.IEoo(RޣsjؿNYP< zXR1'r咻Zdɂw3pRG k|fi]76&F:fLisbݡh#GBѻM&+u,|]4` ٝgV 9gi?59ÃnvYY雹6+ks8<֚dGwi Ŕ.5ZZzSsƺsM˭6.eWsv{8H;>-*Ng%Δ- ɹ]QFr )^JWV`3TU9RnWnz}GT@2J9ruu=0,[Z1l߻?c8*\B!u.ѻwg~a<#@au:9lo_v. %!M E(-$D41o._v_BIӳD"tTJ2+!Ƽ鉷XdF",?saX,XIK ߽\y߱nٌiyZUW{p- eQG %`A|ƌ[Bv dd|h)D,UpM<!3Nr gX,ML $R+z}Knmg(fU4I4!DT{yڋ/5BlRY?ӛ[N1%eA|4FTU7Mb쩔MuRw[IYsU{ȉ>\oj4UU jk9Z*2P@ȥ@͍ݹBr%ۅO5DwJ,GѦ QϚ>knfyii)bIfHZ?K,]tO?RrYM$E?G(qj)g=ؽU](;cA[VJ͟2_YI$R cwoj ut]ǜ' ]ǵԭ=h;yȈxJxgȩFEEA/}`,j5R FB9Eߎ/>om_r-V ŏ]tvy> ʜ$YC cј}caWC$l؝ɞUI$/~A'{Ů0 zΜvT*%*4_*HelOKKiM !#-ů|;bO{璘rgORnD'O͛r8voذ/MӑzmU"w^u}DҮ(4lj\.A~Z'\}u+4jNz"Rd2HS( TljXr쌻\EUUP<O!M&mkquw8^>[IQCMowwc]]f8 HnHM Y^4)~cJ'jden)hkyy7 Zeg*WUUg"8(%uu4^?h7\ϡx\{7:4c͚Tqƿ{;9qh?18ðqbJE}rK;FɇM ~~u}ͥjjzYT oacgW6'Fw]|KM2Yՙ[slyRM(_*O8iyDMR8%1JyyVmlB VQ֕M4S DvJշ=іziH!_<CR," 9:c "?M |{!@O%52Ϯ(9B$ڦ ewUx|]-@=,?[l @i!ˉ<0@*dԄ 48.U}tL5UUP92;a֬ۑE?+;333 .\ନ( wvヒ3+/pWHE@#l9s˾?xlOjn.H&=Rd'l0.[6'У;kZˣ0d LVO:/ML~?Pe0 R:Шe%k8l4A}l2My_s9筃C9}d!+MN;S3Lf$ɤb?E=<_r咲%uuu`Ĩ?L\WI @u1!ӅȣU@ Aq^B~?Btkƒ(ٺM#X SΓ729tHYiR%p4ĘtFy)`5XIYL.xEkeMQzGM+Rn4hkJMT!--w<@hR E"N<%K|ꩮTJRrMzӟW_!L+D(!ci tcm{#=x 'eYY+?"flb sPʁѪTz<1$HfJ'ʗ_ig՚μ C"{{iͅ\暽=BKUU}4e rELJt>z2mZiNzw(_u~}3.X4>WUpv{׮gBl(Kե_̻ΒQe(-^y^ۛHP,(˥QJ55v EEv6#4 xl{8xǿ{h^mCfLbŽ"V42siDKg?򫾨7|嗓rŮŲm7.i1TU.#U_P*RWS27@S cgT !B*+]S/{gn )L![޸xSTT( ص+ %? Y"b *lo+/:aѕT Mzzzx ^ƜZTM!N۵kV]i7-[\R P$+~swRf)b8?U}}9Irৄx%_D~{Mzg㗚ljD-"zƎgq~!t A<4ؽmmPZDHRQ[++-c?қ i3IHo/{i`sssgg_}4eePF?lt)T2MCCvuRK,xo{guvz6'G1W|?!3z皾j hAi#W/.jbFry0_mۜTo&52&5m7 1 ҂Tq6x׸HOS (h9=}/5 g\).i_y%v蹓],4"()I^H-P̕A wg^rzgHBfIs*WQL$mJt`$ FBإ,#nvI]^U+m)^.ɩӍˆ2B&%fi9KnBWUUjB]보d",K*':)@=&Ppӓ^uaImeMBEHw7͚BGQT{`l]ӱJ!Mn^Xp0P2gGͰn6зY2uRw*ebB{q;j|:R<)7oLGVvGlL>n. bغɓb_qjN/ӳ_ws>!gݦ-<.*o!@"3bK,HpX4u`Dj#>c;{' +p~Fߕ foD+w[N$d"Z:2}{R"B5؊r;q>18Mx:_׬>E)DC!u.ӅEe .9=nKNj$A_8cm{r颥_~AQSvA͐p%N1[dtsnwKJ̘1矲qeV)kCb <ǡ`1D}p8'~^fpq0)VMR t)wI#0* J3] -y A)o5Bl>M{43Mcl$P  ,eK&?|eLQKQ|ΝJI: $ι[{'SUTʖL9O)JACÂJ)<1 I=p5]%fm7oRn^;hfZ;o޲a#2.IG|]pc;g8wČRmSQ9=36{I^ƃ@zzz{w?ļd_ayDM(䅒:mPG pdy]w[X[2+LC}bߨ1M3;Cuhi`LUp\6o=W B[/PI*zn]~ݞ& t1p0# h#dK0`3(0 P"@ˁ_H`8xBf8)e0S|XB~e% geN!phR-n1{0 B|\/gl9BZBhH ]t}Fi녅w2x@@mC[|lnnqBԺ\L4;UJtNIC<XqŲe ߟy뤏Kk 1ouEx"qro@?PLb}k +Dnؑ֫&'@U3~탟tݚf퓳'NDR+ p«=;r3@4y݆R( 8G]84 aTUwKȅxEEkVZW=7֯wo8H&. 1mXm&gM!{oR;LMUUkd4ןz*ͫFoo=O.=G֭^_B.T6bU4$9z5Eh~̔;?t8\įkOQ[K 9mZB~550 #_z a(d UUbDsjANt)*B7_J~9BivuD"}aeCiPZb1|m-'[s)e{٬,_Rj G^vҟn|dVSب?҂Aæ M׬^]x܇ncS^ɠňWѬ*Аt5G52: 1'sZօyERM3d{O7 +!I*JOJQ,PSLsn9tъzV< gؽaOUtMcBvh:ҩ~^xrFta\մRoBcٲ 碧'>e ~MQn]E?[LN޽ 65 4"MҬu>$I0sxp>jP_6qutX} 0m%F8#)T(M&7<'g$ztI!TbGSsj>'ta|ws]Ϟ"cG$;C)ukE坹_I[Zc^B(ʺoeTKip^XRa/(Q#c/l•WSNYYO[AY[?ȨSUȈa;Hn1y4.)~<0.4t~ӓ`D|ϕW:Ή2wbڡqԦ?lYJɀUJ x 8#/'T,BŒCi%K'R> n~ā.P霏]l6OKUUSʻ* $_|لhRnnfvI2MH3G󣏦>䉗^zŬYrYJM"$ Á v{8`UorL$~k{iK>Ic}yKktC!$)D/ nߞL> 8@0ck :)SߵL7s82@>}@4U4FEiDMeRu%b__Ƶ@)\;q(+EB0X呾>Jnsm_G8*ny䑉5FkH=HcEJ٣ ]|1ܱC민EE۶m1#QRB\.iU.YŠ~(缤D9||rB|p+= #x{[[>X{{ pRL|ossoQ9<d4駅N$=*M'\},#"&VnN9e S<pgZ|t],XGJT*.)5LB}99c={zOS!F!?xa)6P'(J"8aW >e:{{_x3 tEg?4׿{SXĄxpMijD;rp]84Myd̙ jjR"ȫlB]iSOO549w/xx3FSP$xBU2;KWؽ7,*Kke& PqRH xS ǖ.]pXل'jN87gek]0]^!Jcbp.D,]YNDOe1C7a21 y0 -׭C c_0X* )e8ש$`"^|_.t'I>[VG wn2Mׯ\ʫҊ/)Lci`p4 6 HR\MgeU{B~?L NBL!0Ez1+6|`@|`ͧ@%d c & ڬ2B)Ô޵c}ĉ;[[oQ\ejXן]+jkkn9 _6B5*BJUz5|8\Q8!5.WM<~iD|!4ˤ|7+k;=XܗklM&w'q!8 wO4( z !0 F[Z!d{55*OXhHR#D<.+V(>k8 FN]OBJkkLB|QV-ڱ{]44rrTkJGMMZ7U%>vpUȔT$?wY inN^-!-NiB(`ǿ<ȿ,]Ғ% w7qSV'O=|_Z?Y\7y8*kܚxb Fa}~ZބR# Whժ66?y,0#ݼ /ObnW9w|{m"e=%W&B$""UUk+1_{I'ݺ6 9j)ѻ:7 SkV %-K?x&^51uR,Kw%R>j$;%sΈ~y5g65M;u;ۭ cgC)ΊDd Dg>P0P,إfU=U>PBdg:$|16e_-l,Ȍ&;&{2>ペ=Bʝ۰+pH_4/۶?5>VXe Ki8g6io/q8vNp~4NWUYjDěmz8esTݻ1y?LVVFfQ L4")hFK/5k?cLJqgr5j:8;C6)&" 1b?Ln}WY $iFbS E$;jeQ)Eϧim{3Kb[RB{|^5&is5s.}hƌa21 1荺?9Ͽbϣ?L̕V$- A |Ou GCBiHI 9*$$)e @5 #UJ%,t.!D5~d @qt*RDfi3t\hH){^!|ul4͝?եH{L3&0@!&e*=fr3è=hF)uf "+xҷ_3bIEpH_dMkӴyOf56: $0C)6J1=_~#}x}T6n '<ΘqOn(CQ:/ H ` $Pa)'y:g0@;:/˟uuxQ0 Ӵ' mBHӴgOQMM #FA^w8 %+?|ygQgCoyKKM RR*Hwȑ[3 ǃ[?ᗿђb/ヒ.)cPU2 g|80--.4 Cؾ}wmm)S0axqsӉj%l9}CjjzO~>FNga裳"Z::qh(GF Vy'1t)y'Q݋qg_5D#;{0`0ۡ`b!LoMgiDbIIǿLBWBv3'wz~OB:nJLTVRzjj"K`߸tci)pΝL(!VVfE͕ݽ?~6Y۸=3%SFbm}iY̸O>Lso1EA$ʹaEJY*9!I,ZlƧ>H&)(\@QhC]Oܝy< N.pӑFSGgR[}N3,DIL!$ ;vpt(QlTZ^_'eaeO>yqluГQU_"i(;&% 獿(]j?7rbCJwIU}甩[fl_v-1& vPـƮ(h,v1%bX;X33;N{;!~y|o\u1s83sET;LUefXQ Uy&ida~SNjrR^.G](M„F4Xų||N:PVƁsӑ0kV9c/طNz"tӑ34**튤!58%58FBU\Xvzm,Yq$ Tŷf:.qa 1NKs݊bڄgM3dlDdFz*n|O/s]5|aqc R}VͶ|a|;h}C@ ?fl`O4M˨$dY4_6'|?^>|w%x6 LlhTu--nmSk-k&puYMC@lP`xKӈ!:OYNi(tz(4T84(0{p%#jM&@-P xЀNup81թi2 bHUؙDcJDEu@1y d"7a(`0`5BR)pxeBLQDaz#ɖ`1f[B\L6MLMbƢ`.Wa3fyr qw*Nj/~0ednwE~@(=0@'Q9c l$Z&gegی•xᨔe&ЭiD0EQ8oBv>w^I%E'2vk~_^(QL\@ p'cL<gҽeզ&}, NHQbYY좋o]o<{1iRPUWO.ÑiQYUDq1Ԏ_N߾UG UbRkv'iw7 p8Νt7D3*+٬Y'?ɄMsfdPI'AUQVvO hi[[i7*'``P#v≢iK/=XΖwOp[vmwXM tY[k?` ՘5K45ɤcGSn3+W>M"rQVڱ5 Ws9jB::.ԙ)'5 ~Hè*kΜO{6c`[M 4Ğ$08a8m)L3~d1'_ 4]&W8=zUPP$ggͣG4BIJT- W`ƚ{ٲUeҥ|EqMKUVE~2[o5E`)2WZ 5y[=iKU} QPpE>l8S˄CbŜ xjrWCT&ckXHc 256._/A"dItu_#+t],jY2qwgar\s`f9I wN vvc`Ӳe@322}Ne㆟[V&)E/>q^5Һ6DNnE:풔"'qƸ2K&G5ޣwpU)MƸeu  |Rn%RҶEZX#$)^#.YrdqOO|umpUۭ5*/:X/i;mz(c֓ UFŢQo%,K眈Z/{\JLizw۶O>Y2;FKq<OOB`(c';/-G} H.ɾT_\jiM8vuW^1ԱUd2D\҂j0$s=lw5羪DbgJJJ>h̲)l|)g%J)% ,!Wf8cUEmfjpTLKY&eƙH|4& ]0!+l)0d8 d96=p}[KgzC^1_|-Z_`pI9ps}n_/z4C J0A۸q4=9PUVI~) ;y1&GaDozoz9?skdx y$55#$x_K|>+ϔyM.q $fv($MCN b„,Ӝ|u]v|]]zD1A$4-BK/YW&Ml6|s`loZ^>Gg1"4b,?Ák]]3=D/~A A55x-gq?!@[ʠ(6.wqxz*UT傪R$~e~yp2f!lɀ kcҚ5(( "rQ_:cFJp[mQI,z?HL|skWVєQo_lU*XY6Dd<̵,]1 S#7jOYzs&p |)E";=4-ݪ A!rYFh9>g^ao ⅕_|6 |^MnVUBQ #ijJb=X^|y1aLϮ,FooO9Hg$,Y༖wt\yW]XV-asD[yR e5#_6乍'=7>0(ArlYd ,#PcղeU%@RChPXӝN#[jZvQb3_"i8I|sO8E.ńՄu@HA ي3\X9QŰOmP &h#Νon_r ٌ'IWW̖${lɶK ;fMLIX`DyIkW7m9g=;\ZrKR Yn3?/Nl˫q$Tmlx, Dxސcq$o#r˪=.y>˳<20dYdYuKx=i&g&wuW^A A#κ)3yh4ʎ;tܔLz{EEĆL4LIJvKfb51>5v' C죱qى'Fj#=Tkv{_n,[ӧ1'A'm^F잞Q>RYpɒ59h 4vqRRo;jj剄 0wo`Y)qtw$>h4W@;Q63C$ϏJMS%)@[$RFS4FL.|`5X<u߉/O&͒&O.B 5B\ۓOƾ)T(A[%fܸ1ӧPՇcH %w%>"FX$SM mYB:ۀ2F+)q&끅gUN[TGWWJktֶj{y~}}U"A,@Mlײ,X{E>8իeYZT!ѨiY{۶ܥYN.˺WQ %MwƎ+o}-$e-MEO8aN]U3]'UF٣.ǓoY 4x4IDaƶfe=>^*]S)wxszӁXLҴӉO/7fc4Y(줕+G}_P8QENGPOgLTQ]ٳ ڙgn[ rLU߯p`0Z3 4%dT2>*D,2SU2 pIb%UΝʕ#)Ð4De|D<EE05LiBo/q^D"xr]D3YfD|D<|3GfdL.9~/aSʆA!R$A Ppw4f<Qg;?Zo/ҢOoQv:3gλҕvo~#*<,Ȭg(vqc⩧N窷zҲ0| 4!4Jc$Eq9Zpg]Lu:\G n2skΑmҧp]rIpFi2DL /qLsC]l'1ƒV`cjS݁ KULC(L4>"*CbpC?76WY/< $'2ƒIoGee1٥kY&jֿy){KYu~Hax\vѾ\pݢ$:5eP0\&f5kp::>*rr= yzϚnxX:iqREHpzGZüyuO7my ;\* eh]\Zs IDATrqdt[Z+trLW@$ \Βd&qbv㨣cID]+4LI%s֜XY_IHQz0ڜE7KuCś(,Ӽy ots\hB@ٖ!Aӄp.N2c FBpYX$>>8kM.j8ҡM4}0%SrpF<Dz~2LSp'(V/f\A ?Uo99 ]Cʢl=+>xr90a` |N0|gb8QTZz Etq,؂%h r,:J0%rsTAV(ʇe#HDTyOΙK!x9W,ʟ[~Q_鯦)N_XO*-U$9>/\r[Y3qx6c,4z41|b|]Z==e3om`91F$Vf[mPď)t"ף?pCY #iLtV#U?gȉ~%XXHA'1g[>da$2\PZ:TO+'O׿Itr86Rg.J$N4ΞXc/IPMe7͜F;H&Orr.ͽyv2y+%J o54^ݗLNdLqۉpӁ ʁ+ʽI(dk-<0vM 16dgB߬^fO/1H52V7],4 DcY 8'"Xˇv%P]Rx\Is[_z6D1PWU[ aHYMI.èb gޯUDc,_Q'B^s[ƏGB Z[fcBL4]zf=\h% ñhl)uvMX-DD]yyOFUUU&*y| IՕQ˲@:<^C(?/`VhD`X0Rё>AQdovHx=m͚w:!3&Ř?NX%//J I, y4ebWKsa48'<::UԬŠƍkך ! + 0s&9 x}MhժH[8D̚#pB/NSk+-Y"1u*|>b=+aYO<cry.]$xyy3{+⊛3}fMiQ(T72"5/?^aw5KW^1Cp*++v\V0O$č7ⷿUeYI|z61"mTB{cN8+ޅ#J$;:c޼Pe7;NVUYQNK{p'cY6|Ǭ^_=~G*q1px9-䔓iN<mK `H)9@LW4|dÛJmU6UdX2{hm.+ ctقEznzz;{YwR.7k]0~k|qSkJ4M+?$ZxX\BEeiڡNM @g;,㥌ls23yppts_۹2}>ߢE]s==Z\gVsO˞YlueϚ‘ +NW4~]kSۯ_mԮR>{iNk0c`PAUQ9F?cvOeg2%k KrDZc^1fJ@@lX$FDI.iߟw1 :R~*;GW.t&I:]D"so ey#tn*)KJs;<@yyᇟXH˕6~QYȪjcsٲU`]wW T +ўu4%-V|~z4 2 }xJp+59Di,s2q>=|pg/QKrs͵!LOK4675QNׯN,j[(>(Ioi@WJ1"#bPX(lVtt$ 5H a"reYx}s^ `d-bۋwu?iw;Hi@ p9dNU}0͒hnw*yr_J"Uݷc98O-La\Sq1LlV?ley{g2`Gx_Jf:=DQ3 ė!IootpM!z[/ ~z WQo4?2p9@n h qD-DEӣxeA:$,xir޼ϝNeӯ7צּPo^oimܝ;ӵ8$47NXȹ}c؈F_s%$:Z[+5 'Hi &|ϛz<ؾӟ‡UVAN0,7hhݦZUI* $Yo9=R|u~˭<( -_o"'k@@O6Q+.cؚ eeF`8G,S1s&ntt/` $8`sLj ғ'd2fWWwvZ!r }۶NM[~9rJx":L0 uao-Ug^axjSF#uٲK/EM TUXmق;;:kq1Ŕc}uw]1"%|}9d t{^dy4h 4 1_pp3S r=G={49w3,}PbǎEJm1uL66hot³>lq_e.oЈCY{Wkn[H3S)M鴉G*)sQ>}ի73fn5Cgw2X>\~~YT=C @sqN;w0\Vc "RQ"9ٓHw0VV: Zlɔd8 \3-JZ6_ %i dITO:i=w#oa\JJ_U' WŹĘbi!Luqel)Gꆜ)ΩX>\Xnݸ9mn*z ee>@3W꾪d$_y_HE\ֻna3׊0}|f AJK >y,^՘q9C NZZnź(WV>JsQ#%o`Y)+Nڵ-~/[99vpuuءf. ՏS;X<1ߵ*,PՅuV_a䦝hxGwY.'*X+%ճ~nzċv5_ܯm@9 k`o:JDBc1]Nsڛn6-jʆz!i: ,^GY͙eVn޴Sq-!oǺ/L!ܯxyt;Q#~ T9js&9Ɛ Ǣ_RŹ7섦l㒦Psu"Rٮ-IpHxנN}<".IQYBȆaN44%cdR٣Q#%ð/x4޴&n2U.=|ĉ_1#''{ M^$$Iw$F2[+WXq8OYQ4&';*[v2Y}9SD5.777M}J!2LT[8nii50p$Eą0آ(EL36|`e_ MM>oqc$% 0XnԸݭieHTP d;v`0]&zzD<,D֛Ás,]j\~9$ 0tt8D&It:\~ ]]U6S[oQ{;$ J&v6-1jnn߹sǢEfot8X,|K0a Hɸ"Z4yerVj2,˵ʌŋ/9gf._4{klu5|S߱i'fh 4PdҭFy=f7)N=q,s(3\Lq?2rcsr=0]*\y6~ɖۚ w;E/:J2DE6D_frƧeA0Dk)ʪ{+kB&cWU[B|IQyԴ$i"r+[Ν NutY,FFEsuO&9ͯ14M3_ԫ/߲dy[,!ˤ( pa 1!,[ɗ!1clfɊıcHe@E֮X #ѸtWmͿ=9tZK[u}2'ŽfXOA^J)^U2%*8 Bp_(˲o~YEDOWϴo ۶jebh<|84a>EL+P|ڲ%t[{ AT? ?@]:@5s8n]oJ}}yr<Gtw R䥉`Z4z,{+Eόͅ@dZ \m|[CK wg>\Ms ;mU2U(zUs)ipW_e Q*0MCBlhxӹ\U9pp2f2`i ^=ܾ=/bB}@pc $Ҳݴ香3m/fT(cɤDDAMk'rȲ.eY.,-DUwm1ց{BalAR`>0 Ё" 2%t:@ "Q4*伛[牞t@0✕c*/`u$z'ʀr.ggk7?o,' þeÆQHL,eSmucC @cㇵ~C],9"d )OQL GNglpi6 JK3{y;02|5v$f2 Iw17PX'g`D8݇\4;ɂ-[oILSLy!IQ=jnnm=bţܳZףgeo? -hmMOܒ7v.DhTjj]z1f ֬I'*+a[Y _{iZ_}ecBYa!h`gXI|0: @a!B1qt/8X)EciXhbd^;;;׬:;ߏ2y'NÔePU;MKFϷ\.cGZe̜)fdqŒ%[O=U)/YYJJOX, mD RELNa[iǎu6[a*6d#<"4(IdibZ܇\2 ;=g8?1oG"BcyMɤ3!H=#%>oˣѨi<-'ĀոbWq1eJh%e T785?} w+| +4:'x<"]𑺺Gu\v3G8lګ/a 8s+C[x =Mx2w\9r==m70;3!ymmmcjv1DRF =Y"hT7Cۺ[.W:7]QMfJcUa$?TvYE ev6ۨK`⻗:2iÆӷobe˖5԰0|zB\mV>옟_2%7RP}8ɤ-I9]VLTxTbflnYDŽD#;ZҖx)QrHIv َ=3=l|E'TKo0͜yI /TVӄI`ֆ_XFX)$%˽;E\$¤\إQT6Wf.ØX!|:GbW[Fٝ65{b#miiD"MMWy<ɤ-D U'?ˀ۩;o޵+W.ܵ: nʀWUGW_=ʚ'cnڴTgoM&muFfݭ#} c_D1:mv`. DI@E4Kʁls^y2+k#~"Ia%ie+u:38'Nܶq(@c_I&D q82(."lЁh9|bxx=\0Jʰ5 Z6A4FN2 ,6 w`[CC֭_F ;[44X̒eb8 ( }f M R)0@la.C@4DXvP X,{{5q~}170 qsGeee%?ؾF"H$UULtUPUIe1qiz0`YYP1%px̛]F,"Z[9srpNs"+ o_^vE9pz^2*+eap>l܈@, w**Bܹ:aENƘ1r:h{a{W65SΟ&taĺ4`SCK!P-Ui)[LqwUic`û3+*u!EW\Ij/ o兜8T՟Je0Et_D I;wr$rp'ȶidC. PX@~/D:` Q?7yS~F$$D>Qa) I!Z\?ËɡhR#|[akTN"9>Z"^z*PVd@lPU\ʕ;(!%6m"פG{.e-([<’ɳZuŊ'&.׹LɊl> sQј3l[gJOll$]ūibdS-\((@:=@bF4*M'Z$ o4}H]i7߼'^߷^&Y`U׏W6fL TW~v˩`MSaT 5'$)M33T0eoe(_ƒP^KgF$q_+>9C3: \+>kNY>^~>,+|J'??B:k}f1dt!ʙ?N{<37o%kּs?=\ L#K\2ˊG`hn:Θ;f3JImsG:TӌN:i?V~ɯw-moI@ gyǯ9߿QʽXg̗id&jvOGQ0`FpMv\200MZ͕ۖ̓z)oZ(/Lg*Jw6 |4Eʷm0Ea@*ޫ}_ኊ._;Mr}hzdv6>l3R0[-@FGHA@4p-(%a^ ˄؇R˺ULL3l( \G}uuuG.ZGӆ1a`4=k.ho۶noE8qyUF2Uykqy#&P Ntz[i~]C(mT"C)ੳڪ:duv.5˅ۀuܐiZ.9 95G 3WU]%%BQ0:;DŽB*tu^/,_I'##(. s|'71okUU3|4q啧'wiG;yŅ_V|aOwws"0K UEE9O#yygܹVUIɹvkaRH ttn7FFvڸtUUd LQFGYq0W~t_qu>I'"D«٢"SOK/ % +(+CCpO^~R)߭6Xj 3m[2Bi)2Gdß~u=n_3Wz'!HN!+'+5{짺,E"s=ႂ]Z;r;WvTA~s4Yfg~/~*/X%+:l8\1v JBRus$fm_/H$gy٩ii*mmƫwa郝F~u"XTiO7T]R 5EdL#&e|K6lB oZr]fnwktYC^BmU4m+WYҾ ؛rr('uY &,kVZ,FNw!DgK-)]jBm/G9 eU5rp塷<шT;gP-lI)W>{AurZ*5|Kov$]]7~Ӛfղ`yEc͟n.a}6mmifia vL%|2 SYPәjECW4pV %Hd]4LJ|i4:㑶5ɹenXt [ RfSu&95X]%l,[r4 P@Kq*^LFUO}]w8%nWZEQ4wb޼d eY,VZwiP/:\ޠO &;ծJ(K+'g+)œ \QMZ럣YWMYb[UxP@KR߼=m_D}(GD)OCH߅z`gmesg{$tO?w}hW;Q&k~_bYA""3I]Q>ee^<) TU]^SA`T, 5448¿%tmR;ytGrX2ůsi!D$ 6 n6 aI) fa8߿UI躾{D"_}9p/1!xbD8 !;Ƌ۶ؚN/:oKzvXļl3 CDʤ"gwJ9.EDWLz܎'zvhٲ UgIGN{fNhZO{ζ[aۦ~ۣ(Z2}>S6tԶ)) UUd+bvSn{)>_(`s*ueiΚuxDd*usX 0 'p$0  ` l: /4\VۀLs-.Lv^jY{B+(X]QqWXr7}ϣ3ǣ({?|wׯiHDϝVEHy lFjgYLmav\2|:zϠe 2n='ԃD[ >x -v֬n4kT;iĚ,̛c^yy ^|oD.G!% 'G DdֆGQD 8$zmmذA;OR~vXGD~,s]V&r9_YQ8(@g'/Gcc޴e^>\zt4n7.yyƼ!O9uuN6~xL. dL&%(n䓫l}w;lӌ]wKeEqCUr9BZ2i9/{E.@Goߏ9sJB(kٲiӠ(dۼ}\LZu˄3hOO9BR2Ƽ!%lʺuRӄ(-U??wmۻ]%%ǃZtw* 'fqO3f(_"oh\h_H&qi !wSayE^U}X: H6۞n *;42KNdA]fHho@Ҳ装. ::ht_|  ;?'=n{  2;޲2Ϝ9xt4jiˮ\)$V{_9P߰ GtnU7ag?1TT*@ܺ#i$h,ϦbԠZ@(!TsV[6>{O}Or!wJ͵R\Q"hU^+LBAU }!?l!}.FeuJPTG6vcddL:nëXxZ*`1̑jَ zyJKQW$Æ *@?bA\0TTTw U|q< 7rW ;Y<<<<0*oi)-*rg*zFᲛbq#-Җ]R#?e2٬)eNe%Th3ymAJAk) 8B& Y3Ɣ<\G4gDU [UU^W6z;wf wE҄C}sJHBmCyxD7u&կg2XrPC=KX~И*l,^iNW({.C'bVHoiNXB=ߏÑՅ^e-^j^{٪\+JҲ,!W}WB+;w8iA@4-==Ni ewbYwF9b+)ޞ*f˥IUU3nn>t'e| 1aMlT8`7xe ݑ]^3P\ɯ{F̿,}um޼W5wTɯwdҟ)0 @ןX}ޡs_riܹiT`V3 v}` ,0.P[J/PB:Q@QQ0؟N-C4/ْ2v0l\nH0ρ[ 4fy%MD Lg,zm]$_0'zol8(Ҵ:Uϋo--d  IDATU1$ZNw&@8hnN~ ,~h~(p.0sr BJyLt/GR8l,[&3NW?o_|o|\Eo4c Q֖=OAw̉H4KNŨ|m5_z5 -B7܉n-wasYܓ3 M4D{l}K (ku1nj;m}>rRWsض `P_O/""4)B(Yd Ŋ m"'?244U:OGZEUݩTRUm)e_˥[Zx|T:c4!c9+KRWWQΘ1cϯ˓yy8|{uRi)=h񸯿?sqVXwg{/r Km8l EH@MCa!'f~ݍ\pFGbN; LO=sԩc(E>𰮪,/bӦORl;abrN)ypq@4QT"'N?55Y\c`gQtýb:"\ $P|Z\`opm̜o)n"&lIk/,n˲UYM%0>14!HU!TJP`[Q*_-i:.Pج #efL~D @g`Y c>ą)3^qo͕[^QW)œjگLd58u,>-h,V*nLSuC]7U"mWK)ݴj / IU}?`*rmN>[8 {x){óww\r+?9%@{BydV>rb@yudP拺/:Jh^@<3p\n{Ǟ-[f~5`rKfx:e8e1n}m]]n+ܴit _ B<nMo{),,TLId1OZ !C]/Ue6:z)XR^WeY@@e.&en¬nOUUOM흝][,+RX'o eSih:݀ͲsAԉʉ,˔xy 0=ò,˒̦%@$⸹n2nKp A49" muDI<[=.T Hq `DpDˁ@!P-N`ĶbGhZni 9WQQQ݁nܱE0ܪy0K6 =&0we(nw̙y䓛7wtu feD>RAsuJcUV2yef5JvB[;ql\`ŋ B5(g'. fVU??zwXA.-׮_BevWg\1|QK`(,ļyJKKUU-,=2:'l#Ymu/eeB~q9LDl5."#)¶!n̚7HXV]]G~MYc:<0-ZZǸBO](d'-˨ǣ;w/9y_xdIsEzz75QR44@UTB$6TWF"awt+`"&6lyhh@.X Jr 6n4gδTUu=u!ՇZKy=)/WaILDqp:MFmwa4mˣ /_Cg4M~xAss0?_]E_K''!]8 ,h}]Ų?m~N!vW4u]ᦻs=`ގ?t).I`hΉ.76j55s"s2k`Q:oeBx}OaZ:d¥+DE5-Z"&>Xuub)S^9p- \B?=3J1螵eu=lR M/;L\kd=5Xq B W?i[bT_\mq^r帵;͂ H]Ԩ'-=KcXEUiKբsaX Hz"J+TG\E9 e[ˢuWUA Xq94 G bX CQ@LTI75jk[?wV[[.+vwG תV(*TY@1ۖd8hћlQRv Eg뱥 'msW +bư>TWQ]ܪ{h<o]{ kL^",6)O_69HqlYʫ1x&)0(ח;vcedh`4FW=ZlCNASXJe|gMEP5$Zq@ WG~2M>^{PoRyyʙgI뮻=(ϝܹfۋ_Ə~zMcZxA WWaYDpH$+ꂦAQPQ!vf^^`t~HooFaߜ9μ^#YSc* kЀYf, T(Dr wvr"qnw3>u N; mm_PS;v7~kkb,kKk$&5 D4:u_qȿ ڴmR8w4YJ\&3eشmGeʴ"tْ#yڪ<<'m|03"Fϫy3eu Xr׶$bAtΤ)RgwnehӴ'SOM9a Bp i!,3TpOb2QgCQ=†ٶ,bmk:l(*(XdZ]Uŗ(ë|Ng6QW KeL#n2͖[Ma$ |I#~wky6;OȳmXe^t)#Vw٣GM A nU5-~'ֳnޞI--ﶷmLA"gG",kSdL+_Z"BRŒi%MG|#~6MLN BPc#εԩ[S,JgvCvfhjdoॷGa;S4UJ~[ujr"0VUM$΢|rٺzi 'hriG#2zXLrR.w35O? ĽqQEEfM\_zϒZWtB\^9sO.T|6rwcC)@l Qfۮ]l4otcz<IW W$㣽"ҊIT7-mݨ0KRWFh9] \D/)~H>i3adsG9ÉMZR 1ǀ?T q;_G|+-c1g?xn+I%`nnrJc)e|hFUWM3RJ!'J (YQ*cB j`'!R#R - l)u.A=s Zges3E  m; 0FQ [VR)\!bP <t 3Ox_% )oNBR00a@'D7P !yB79Fgbutt*b^!L!mN#Em@ yk/Fpl>|Tj/FeX,>0pr1y @X1a, `nRz[ omݼ`?qnϽe@6QpX A> wUTd3t:ƣZnߐ+W*++a۾ٰ~2پ=q"?_<־뮂ߖZmya8Or%mTTGH\⋋0͛7s Er@EkJɤ=m2`EEU ?ITVR,fơ'{Jx|Έeh(񘁀t`ɤH]]׿O>[nif.:!%6ng"pH8hjTW_ܹVCRvW^m-WOEhk}vY{OKW^>Lه.s戡!0[9A)L$==x̛sA!Յ`z\nۺO=b掎eix9O0\,} ) X@q-[Sg?HiO].'\lYpkתj66ErgGgY_"o܅itkb^*{ mn+:Δ*VY# K)9DdҶ %V.@Bў8{ŏql ۭaGX84KUuȶ=dq>eߖ!MXӝO?I/ )ee,k@21 l!.[K:pFx HM)VlCR0 !$BB5 gQQ]!}@i WHMMƲW'7Ƚq#&"b˖#mm ' 2X;SCM$d2zZ[ 7EEEKݿhmM&:)+ z|]VI9D&̉$|ki磳c,(QIwju#Q+e L&|w}^"L:ӶMW_Ϋ31rHqCٌt{> )ԓI##2/On2;Iv~iyzd9VcjY^A54w|A--c̒mp)H, .MPj&^v~t< i]j4o#POJ/!W.C\}o?Θ׶+Y@֩SCp|ȷ mi/,4 P]^Аxr ]"kҽuBd3EV= fLf7ڹ) ?o-gqM=gܿEKɒx\O sV} =xXhRYYLKKvw4}QzBdZylA%>n&CI鰔&weYV$MgFζPDaM ;e )GBXqcX~&M2ͽRcG}isM_lz'&ׯj“PoÌU\;2_JȤLwUUuIUOȌz}öW-o05MkE%xEP/7)p\BIy¢Ex]ѱ4/V|d'~K#ž<˲J'Uu0 f.ݶ"k9懀v D?0Wxڶ3R; ЁO1wCee_{{ey _i_mfuuv-Zg2Ww=[5"S/ IDATiD5̿K ā6PlQ].f'>])!@0o\d.f߸6&6[}I.~ Hfgxeŀ4b(-b]&In #ijٹhu,P(D\ee̯Sz˲L JR9YMP'\'f' OʦOvnl@0h1#݃8y1j,TmكGWc<}JgJ/KXx\Z3Fp W=V`䧣eeeef}5 ׿6qTMMEwA:IPQ0:j*)A}=_zmxժooh.D}qk6TTh> ۜ&=quQ 7yeer`@[[;sŁ:;#X2ʈɏ6ͼ}7!-Q#t+ ^ aG* Ε{϶mMmjuqS Z[z##3[{-=LqLˡÙ;7t=dʘW/.qpkm^8opOOf<xs<2V\w777dz<.s9xYD67ׯ^ n|Tp^}·0XȲ^˅%smO>i76*o矷URRyDaيmVB9+ r# .=ܼޜ.#n WI@03[T ԙ80f%)=sũ}mSPHDJ,^4 g-LD8\#o:aה Zöy(\PiZ~T_w٩HLjfI4CdaeʴLA6;(-e)@fxs֎#{E/ TwZv*k(?(ϟ DUUZ{8Srd8ZyPT@Ъ8b^VSk :"lmRB2$g{z/|N>{] ; |)^*˵ j]աɥgt2 #|>LZ/sryR`SX,Og/\DQR+V'\bq}qZ7G5mUtlLZ7|JTa!rsyE~]]xKb֒lٸ n p(EL0wh*4`a!V5t$C*d )ld:n1X;SLF#-p=~%J{'疂'mOA$4Jǹ.@/XJ5g cagmܘh / ЀDRn(uw6q|cl1(PDƑ6v=hἉl2#j/ ^@2 %JFG."!P0 'H Z7l.%M]j$B.!0h0!M'08t}p|p ~{PΎ1۶ZZ]]3K. ឱJ}Pi`hiQs->_st1 #ԧM Ơ= аL(.f!w|>jogkkkjtVzi~`WߥN|4|>qwf#Nb4ہ_4c|В>4dɒ7[w4K2=Aibe fde?!EShgTYTtA4URº]mUν 1ܳҔTiI 8H,Pq`okGlKm2$ .|_Y_s(R܋Yi<@|Y|<ꘫ>QV$x̜ qlFJxdG{fF =R8%eb@[3{⚵kckiKmk~4~'0*=47 }VC(]L;7ro5Jkg~'0斢)@…Hģiҽ9cD[[y_lXU5&ߟ?^sFRgDU ),̘&B ap.`O4fM3D HRHկ-O.CjVǢDRYM ahI8cKBx=<-|p)@WgE[FX(uU{inkI|Lw'[nypFk5}_- ueMQl6#5PVE?}K1nvcD tn@7h$/oC(.e{1ܗ|ɽ}stPF1wwK\0_VP(4zgaGhR ܡkH{CƌQ#G10N"(P(t?v-<+ǧRmRHe!5iҌG;|y% è-t ں JE'e;[j? R ҷN~~,_%2sKzzB ](]Knu矟0Iozt*+*WsAuW<t651I>uCCa\80!P]qΝHYy_j+ sIɏ~J(V1S[sgR&_t=MD~h Kjݰ1ؘùCfd]#f $^"@5p3D6`Dx`;P7GDmG0 $ b@ @ ]XJ`+cUmJy@  lu&sw*$wNtF˺V;0 #{8w҉Z|qp]]Ӵ>?tJhK: \0 7B#Z@M:p:mj"hy!`?NP\ R(.Y]]-[rOYl$},h<^VFͨGhhnFYWWCq饼Nc)%WOƾ&glnI,ֿjUNjvАuT] Q\Dİ`s3gQQvr*+cMM$]Gqp}ZoG[`rv&cNilܰbLP(t)g|u(pO3ᷬ$*JËQ)8fXG6+^(EnBsΉPU_}睭ݷqCEEC8jk'.Yr̙#R()AI ~A)9<`|lDu0~Q<5MxMz6k;餤i~F}z=9~_Әe٩ ̦&ϗw71lɉ'zmSEthkS. ?Iݯ~7Ϭ^mbůb8o|C޶q!Nۥn/֯5Y-ߖ_v_ S}>!\z^qu+!R }"ak6}{Py[r?DI$~ryA.}[3֪BJ ^+,Rx.]s03i >|re91d (gOc }}4ih]lG^$ ǦA*)afw'Lƙ"v˜kѩy锭lu5[(@+ @-[[YFdlHPC +p\QVtΙ{hbnD _ౄ1VTKGv_Y}'7Dw2YVW8)z/y2nw>R8` !R(XgrO|7uQ~>?$!G+ũTaƼ`0]^aLhpRtqfΛw13/2Ƭ"ѭi6cgY ^Κ1PJ0vrf]I,CsoyADGbʒÈ(KÖpJ&ۡpXri{]5SO'Ԯ_9dƸ+so-8B9.A CO>O 5Y7i 8ղR?oY,DJ0j SܣxE ]Cs3JKO7u="r=ܡDM}#*-3.0t/l\ڂ/QL1(+)iܾ{WZ։Dq2dNQc,Ν)))ݙ~Xi"+ݶf͛=>_< 6)UL 949uR~!p mDS6˺U `36HOaZaSjRnr@?n[ pE(E4JrOa7Ga!`jX8 l85DIt90`%d@D]D/0v-;-hwg -J]QmWBlRہ 0*dl6qWBm@ p7-fD$"ZO( :4,+)E&+D]. r䃬<@m3"ΡiH sփ8?'8 >9pSDWi/:cDd&?yyfm+AO3Ty9LSdTS^{/Zd9סg]I() QBPJ{PY:j.]*<^/^|lP_?Ax|u)?zJfj첟p3f|5s0[PYZZPWPV&qv} <`QHJ#?L!aJ{LinFYtҍ1f?Ax}WJcYq ,\(A.2;yjS`/M{{[)]C,mt]L=IdYNPG2ӄ@Ѹ6yp\6Bh,/HBO)`oK|t6ˑ %Kst PoFMR2Mほ@Y۵!n͞skxXI(OT>~x,0ٗK cJ: 4a3ofGeukvݑc3Q)#1LԼ xՎ8[6_!!Й,UgBO [YJ'AWB)E0 X@Qu¨{g^-a(4c`J:뵵eh:S|>4e F"_yg׹@#e8@IT_ 1@QK+>L*,t\"yUƉ&50Ib^Wf?Ll H$eVW)+|{NCЛ̝}*j/s:_ynw5)wL'pDe-ku&vkYSLfeM"rU6LkPJ2ʏD&h]T>OTo7rFݜhߍLex +W⬳ގ]͐ ^jds9Ն ҏdwqñmRA1 @; 2I "bLp +'-S'|I;iRE[|csc㆓N9'C5E.˓[zs$ 8'U)i0izn륗\sUtMhhi֬>*K-uNUߨw=J赳j&F>ϙtQIMM}}ˆMjb۶~1o~KQo^g8pDQ|e@3Kg4Cg IDATh4\^>jG} q}cՎ1elbŦ(d2b0,qD9_ڹ4A4-N~h?ʲn`MѴN64"eH˅ T2@?c(h&|U\dg_ߕ==.y]cPDɑ4 a&`ˎ%Հd@#]w+.@XDPH &0!J(.G/PF@M~ C I 2FT1N4c(e(Vѕ5oY0#4^]:΅Dmkyyy Xg2Pt hv-  x`caA_x!?7c̶ihJhLt}՝Κ5e/iw'U܌իq饮`MpCrJivx=D}}>koWg1Hq9na0M8Ѩ^V-,dI41DMM#Z]'B8*xMؑ).f/`@A=\uLG1}: Dc|k   ^cD_' (X04t_u\;*OuɤY\hP?Xwh>nTzRQkO5yLH/?00udh38*i~d"%FS8"am="h}$YѡR}W{wX4l?8-wIn84nfsCa?[fyҝj +w]O9amc eԂ1-mSk 8ωx K)ݕΦ t[ 'L;IƉ{k3 #Y1*(47[\), đlÆ-[ĝwj5U(*<lsQ`8+f >,PKo(Oڙ Im'~,u% !;ض %R~z qVQ Rߙ7<y̋Mi>C+([5`L)E~[Y`^:25vn yrL?fPD^G^s/=5"7p:1nvtCk㙼 =wάǪu,@nr&ĪH16xL'! uY)*(+<U fr/H4ΏN3JjWJ7?6s.pSf)|>̙#P #&eU4yG@<`,,{o# qAG1RK8;|kşt>ٛS>"d3gguy-{nl ,c]t鳣BY0Sw|:@,h#p>UׯSjm_E$416DW8x d(-&zA4#78/+VLq kafE㨫YH}@0 qan)jd'fYD 88ڀA 6,~X@;< X L$`+,P\~J VW/njHYh!)p- h)+J}f\,Nl#&`ƈsD?8|*Jt9RQJ )ľDw,%:#),+ۜ.su"iHSZf . 0G%g7pMf]LrPb]x%q&o2v5)ͷejfD]-|3kA "8QI^vz,5s&Fl i7p^%xs^=͞.Yⷬ!@׍lVчJycDP\ Jap;w(% .ȆrhxMut/hJLG~f@}= Kfֵ(*zaɒ1^+wqŹ{mZ7 v-xcXH,O8Nf|OQiiQoYy片O?]GY.l. e-a}ɐ> \yt=O'srcbz2ˑ7 |2}Ga~M^VfDDX8`ss27~zum3MmchEEp9cmRy: X<Ez}WowO/iL;oi\Ac"<W+ $$.}oF&dV5 Kڊ*[ZPZAh)Cc_0XL_ʜ>,(O{і5kn{Vս<vysZs#Ӥ">ȃif|6.8u^v<ViΙڌIZb!/"쟒6Q֩bީ,Q;R*{@Y^(bZXmHe.7rROX/ *B`3q)rvH-LMNeg)R D BvH㞷;hg /H@oo\>`Ǽs6TVx +Ԅ8[4$+`~&U9őU99/R0"p)AOU~сKNYZ qΪ̹sO=]+)ܯHvtjfv o1ɰ‰zYmyy2x<ǧ͞w_"ΆjkuJ;Mַߘwoߊم =9ߨ;}}lpbxS)=N 3r!.D)r,j# oNqDm'_a}}=eBLB\4:Ͼ1a]=U  Yҋ )G92Ôvg)՚JC`瑈H*t TM#xU}a_gy0[N`Hجk +k+:k}l:DT\ 0u$DR _a Dx9e1JJ竵7*?Hp76` plh$@8c)rMy1f!@gLiR D%!'LNalRo'9鄔˶6MTZ۾B\w *DD hہ-ҙ 1(ThH>>Ynç]H5Tv]G]-spE< puϽH_%AG]a)a0o)am a8 W^I4VQ}\N>]Ս>]xbұ>WHX\l,[\ӡx{ɨhTv@g'<eeX(*BM ?$RxU,ZDڅ;_SIr++ǣ+WϜ)LSb.ᦛ{XkJR7bu\g.:;bEܳ#mc` ٙT*[TDee꫐GI Z眃d9i97McoP(TP9JW,uV]M3g1g7/mLOS'N_/9ᄏ17%KB[o(,e<L8éJew7rN--7/ƋqFzm==VupkkK/% fbo>ﻢy2m_'_L&f0ޝP*!֟eqRW?i='v3=so2e5'rȍ]PCMMNCIbԊsJlnӐ &j9b"2Ww>s_C>I|tyaM-mg)b20")˔M 0Hd~˲mdǙy%H汽kSg p xI~pRر/9sPP̄1X߾GYR)sΩzNDmuMh^ v̛}x 7U<*؋+ٳs{8XGFf JːcЋ˵s@: M^=p|sTȇN<zE2_OrKA7lxqln^ xS1ITxc]߹˞8g8Acc ` `1Du0*cL/3- V&Aɷ@\z}+Cd~lߘw~>g!hTeJ{{=-lݱ[?)N {u_Bsg.ܨ8'?F}R¶u"}KXRSd]ho!ژDR.vJ=-M; Cۚ/wkcLB 孆F"x x@8Ρٌclۑ*H!EI32-8qځ\|0A?~ #q$La099ˌ壦l[RSPPDb@ z{q+~H <]JK TW飏}뭺558Bss"m„gd4GS)}۶Y~pl Q)(mmp0mYV~>t]x|;?ݾ}Sj>g C99M9Q̘P\GE!agEVaBX~p)QTYgjݺ#H:*.HE"{wW~y9 Ӵ࣏0Yغup̸qE8'"N;RZBa F0ʐN㣏>64 yyxm60_{m8ԯ~Ŋ_O|3c3sD2I ]GK r 4 ,b1Lb\r>nڹ3rX(na(yж?i`f_bX 9]Q!\QƦMFilqcS KG"rr4 Z!eR}B4 R*f}}m-}ݲwi@~)hhKJ 5-q=4rfq|--{):f͚M^/=rGLCmǜ3ni?(tA~աPȲT*iK1UW[ccJ0K}"9sM3Uζ7NAla߹aqu=\^u n=蠚gR(3Mq%<  G@)btV9.," ,!' /Ux1?DntA$s9>Q׮U|'\-)7Ъ硢`'cmW4> E`hQrO'tzz3]{-8qBUW  ROgչ-aBOA !LIYdD( ,"ɀ2FPMΡG c{={tzw]k{ E=ham]Ƅ޾WLkBR[⥅:B=H?I񜎎$ J`Ѳc.J%]/$^R&[fe'޳ѹu-SǘE IDATa~̡>~8TT-J\@KBQ)'@%JdB"8a][KXvĈC)s؜0x{;,ڶ$ Ǔm%pPd61V]='$iea!CfI#R]_?huHWNK2e%\e-- u9c?|;gjlR˂1B LJ,fV>!z:˅7nBf2;9%J>ι?n^FS}!RëO3cZyV.՟S0q _?@BpYfp)SB[M=B'oqu ˒5! ~80STtE=8gP@e rWub7ЦMT˲>56o/si@LY۲zN$I#I; yyn]ohl<e 'b$啗Gsrh!g٬z#p`^xr!!'z<{7nqű@P x`ἧݢؿ};<t`^  _|x2&$/Ϙ #eRvruv80pn g @AHÁ[B>!qPϹ w@)p0ځIݔTUlXBą$ul#6.ﮬ,ִsѶk\kKe1Nv$D$)HA|ʣsn&9pa;ޗA>4,LsS&u=FرqZ>UsuB,J-=D ?VWNdF 6LqU~a8@C6+b1ߺuS,9'6<FHҥBTU E!V{@8 uuذ aBYK+lVd!\׳'˒* d0li&Nb1?>EO΅jEg'Ⱦ}d0~<*+A]W EL%Qŋ?0J⋘0wooef!V-ESJKɋ/ /YF2wH/] UG YhjŠ:.VȆÄ1ͼv&0DTU3򽞮a~n9O@J$٬RCnneHC]=ZUeEq|ӎǃci5!Cܹ>`z]vM4bBJ9cA8q!CH;5ZNIBb TTYV6%>*5$Ke%DP-hǖN/*|B)siOܟaR+ͦB$]͸=_?ى:c4P)z,IABmS\X BU㢲/ZX,T`ۂ1%H"ك˥κ]^Q+V+/?(ܲ+3V44|m+/,j0_|8mz%+"W]#ʊLiwwF8I(o8Z`Kx8h2K3;2NXB[B/׬!UM  4"BڜLޒLa{`1ƀ^@8ml^BJsr˚79=ss}@`@gF1 C`.V` 7wO]̜9SD2+` p M`Hd@.>j,*` @6hK+]IHIRLㄸǀ?POb,p3GRX`1nB0vOo[Z~5|xol4ݖjJM.YRT@XYSJ⒦gtR$󇀓78؂ rVǣ[;}>zJw U5M*.6!@dE mD!J RlvWm6oFY.L|)9b1vtq֯^qCl&~p׏qPS/ipi岲#O/_:'Pa@l{+'Mf}ݸvl@qJU%cLXX^:[\*'1Z$v5[U\eRb1N4IS˶l 0Ӆ;gΐ$ttж]+Wi",>~S(T x^g٪%e8-,g<2D_rsC<6v0f΄⡐y$I yڴK>%^_hk ĿCd>}j!ri%t?Հ lMCMu+>}mo;Uw3AZ'B0%Hd h~4g?01d0yNtũ̋u:҉4!4MuZk0_`\6s-k2%pPp.:K- J I_+JKQ(41S QvSA(`pe)}TSӱo>:CȮo0L-(;DDrQStBb]׺M6-zhѦMC@;͙sW]5F?/o-l6gLHQaJɶ .%#Gү::L޽n_~9[{i x( 5sz^'il,|}}ct۾{i&I $iݦyc+G )WbU״n) KJXzR]&DaA55kz{_O&wr`BH WBL,⣦ٳu|Uݖjwỳ~y P b`4e`bpq"x2PL$n~k[uM&s ;F@UB9A靀9L)8xЁ*;` P$:c@ {끽K>(q>0 (ct=?JP0MGHrU 4`X Ȁ (xp:p1,0(Vf¶3 c*K[$ʐmiGĥ_phE^I8 ۟"&BQ5'$4gR\LHrA/*{I!iIN9`hjBg'z.U}% 16jk_l76Jý^PIiL]]0` yyl 6ztΝ 'ȎaA91 E~l uL"7)N| O1Np$bRIpn &0`۰ 2)|D<9tuw{m]T$fYJŅp退`t.dd}to(  hqېz hAJ%>sCyDh"u g }5GRQ@6\YF" FPJ8޽b*yҤRJ8ܜswMoD??&*_H 7b _&7p*"\3$ZT e%e͑|SKL}EF`Bl/L(4b.'{$3ϲ*K=resdzTgGՔzk3bvu|5LsFh:j@8vlu99\ruTJ⌷uvf^.w^T=׾x?,9HFq-* b*bv,]8Hٌa 6c~K0[8;:K㱩 sa{$Iȭ@.D/Wn2EIvd 55-EA$FOY}[hogl u{&bYs?!.dL}40XCPDm 4i۷V6+x%ϥ, K($_wzy&krkd(/nڴ/YVm:;ْ%::^մFB|a@9#S/)c8mmk^y#}}ۇnR)Gĝ8/P]7q|Wx_5In=x߬! (#<0 @<-uL۶m x0 @/ӀB(c)=R$pOo&  TSUV6"Z[pF . 8\ </!4 5 f; hC0BcPˠn}-'&jjiNTW|._!nH(a;QS=#IB44k|Cwٷ-_e;**FbΜ.(ǚD}=upPK/lkΛwᏘPb44Zl7T~ niX"!! ,YU9b #scFN74~Z\r/z}K|%\Ujl<d$?--%) ;ꨚs'MuӬ6ݸ)(_'.x<.Υ%U e=]%hxʆ?1w=L;4sVRTnKYB*k]biY1TY%"TVEe3R99;*++!eRտ-PDc.Jp$4.\""}EVBiK0}*6,]x["*I-a#ԐEaTbX6f5Lj'i{yYsUiwAӖxeLYTEch=Y0M4-*⪪Ԑk%VWT兿 nq(ъ 4 IDAT<=Ӗ,zpyF$qܘ\]mX,_備&$G"NeoRc_~BD*Ezzp%~p.,K@@H Aϳ)(Ѷr;PߦRrB㏿c1 vFQUmWpyZFFlS(۔+$PZ[o_ZEFXѸ3M%tyV4Ԥi,`Kj;v,$Qs\0uC;K8|(w۶0B@(vv"s-xL?`Est0pJ4zKw !Բnu>cF$P (Ԭ̙6-`xZ]$fͪz{fuuL8nBJ̩}+ w{*.`A^Ivs "&*NHi ˆW1x䇻 w^`ZYf|_SsB[?'֍Rzeo^zXàߏrljU홌3p!FΝ ke Bdw~φ;>miB:c4ʕ\q]HiVq΅ޝL>VWW3bo5)xRt1!,N<N&r~*(:nY 8|=ӏ8b8ȏG|t*ŲLt* 0@ πn+`$ >F  lBF 0xhzr ("$ kpv  X;/o`c 'Qz_oeB$rT l[vp@*2!:XQ:h$d-+ʹOh@ԁD 뀹@'Pl^b$ޞUp+Ŭ8NjGJ8%o,G?~4*%=梆mo:|yF(/'gDdc\|1~zlnB cyyhk=+ۛ*, UUՏ}gφ[o _Ӕ Ή˥{MH^hƏ'!8_׋tisXFlp&( -("(%,(}K^1b$Z=^waolC::5mlV;躜ɰVqlx0BCrI2v{ c=}qYK/Uꈦo$ظBF5sA'QY;X]M@G(!$uu=`:R*{+k[ %³ E Q)L.9lz _qIW2Ub:%x/_bEy'3풟5-W.-_2&Pth? fLT y (ZQ[+l',c% P4#[:>mX2PO,YE2 @]{@pu/תÔ|A̜W/^|oApiy'xcغv0(6o~g|{v4yAX*8䜇my۶.ާ;UXJ烐!ö@dYnﴫSH23S"1#6넘5Kbɖœ\/ ~y⪔r^b۩&OFMZQ}2CsP1qӄԈVD[ g)Y6m>Sh?814䋆+CJ)+M REAiό1;Kb;bu%+6wJYL͜<<"b۶+lԣ9MȲ!K~e܊عWo΋~?k~hB8^?$jGݲ,9?BT;PR"ɲD;T;ڑ#O͗\2o|E(Qzm/o{(=hll߷Oa1tр,Vt%hSMpJN3Fϡ{6,,.͜6o. , xXH)G 8 ?.g@2 PpHW (Ɵ;Q V L&$D{#8Ϧe+-@4yx28( !%b^dlC|:BzF`D"2 W>$dcf4?T܉yKt;4۾}P3g BZ{qJ26)T#!ws3o&NvWU8/YTjnjmD67W3MG9 }O#Ͼo]9exi)f_  a~4Ν{/^zruYZ*, [V82sx]0k׭de5oޮ<駟qHY>h)kju]B!ĕLfeYZ>p;W²75喍mSFΡ|ҊI^1MpY3HAK6 uusRLiFDHUU;>G ciq1jߗ[3g*렣0(n}w4:ߒgw)L@d*U,"z!N%c2 oߖN;vc{m]֘y eP]?,~>8gPURQ!&NDs, ?xeR;F*Wըi@<~tm7L,΢E% d.,7oiJu-iÁ ,fGdq55TCV+UYnH$B RKHWH$&0ێx Rj]\,LMOzc7ͦlikkm+MR7- k>:oYX깜HzUVXc%_0h%(*1>-˛ejqצMJBU %RZ\4ZJtu5Ӓ{L*_*Λ~QAzKaCQ)_`|()14 srN HTT3fV:$h6f]6Z+Wv]F9JKcG=<԰b u!!}ofMFد)Ad*U b;ER 8;@gӇ2~~? Rv{N9mg9m \-޺YΘS}HdZ .8 $pb\x$qw^!*9+mhv^"iD@PR4T"FiaWY5+}ҥ(+C6kG,/*P.)yMffnc^a]ohCSKk3?Mhl[o}$qiad>H {i<$kv9s~`˖-4 |sA5ʡaÇFyT@8\wcDB,犦!dq* ØۿDB0-pH/Ȳ-B)5m[!"Ƕ ۰]]?Q[+54vج JֿnLB2T 2@bչrs{o#mo5q06;y@"?Dg'ID9 G^$ Z]裥{~7y)5$2h$D4rXj0|y'$}]g9ݲa~H&cyfΝ-goM"tvbl2L==TdRx 9Gw7fφB`$raBQ:^NP98nj6k^\x={FpMRZ*ƙg_543c%^/4Gp]|!y"֯6,+3B^кi3܁ŋq啨B H;FTϾϏ;]'yyyf BǮҶryy$;׮qkL[hژC^1[,zua.5N;]\^ˮqn2o4o`8^Sۦ[Z݉*=-5UYYdVU >w!@{KGG{|UYVa$;:RQٞ9'A\p&ۅ0nqȊ1 ϔwg*l;# zq4Vq}H@ WBB]Mλ)9֮GGzM\37ܜۖFig9:Ӈ{+t=YD0 66$aL$l1& 0`d2Pƈ %@Bi4=3C{2ϷfNO{yn0p9;Ds38,UQ^p%[QLJ '.FMWVU\1)=-[>ٲ\ZfZ9tK)OO#Bs8$J`jYyB:[O;qGW[4qcO O>n[jl[v˗E2zx=ݯbnH7bx,d@zuL眷B q,\baȤ ɏ}V)U]jaoֹyO ATADL`<W&YuT/ޅӧcK$晚&J% 9L˔ezX=; U2!Cݜ>}aK9]U[Vე (.eeT1rW\yJioD;v#lVEqq7_Sͷ*LqӴ0t--UUncGYm[{xW $iU610P4e. k^(8e 9_[kҝ#8 pлh,kmuu_CCW;>ms3֮mmmu%\&0o/beWԀOKJg8w#e,M9bqU^U@z%=`PЁ c\Ri:BA`R:ǔlVG E@XuDz ~&B 8~|k|N 0pXxG0G|O@l3} e=FuKQ~luӲ,@YDD:ǏH/s~؛J} @-P9z]`w;;O6DQ/ݦ%gb(7JEE9wq^.woDހt ةf+GLVUm׮1_Ew\Nxd2m U8qYV-whhÏajPQEd\K X瞋B*Uţbhx.h0]W\lqVMy晞_zjx<#.c0.#͹fYapiɒ9sxsKN$7l~[ c )! <"E Úr!6X2IUULQHttX Tr.v(\}>>56r''>[]] 70W|Ljhc8bz*b1 E$|l{D`/|˜Ӷd` IDAT1uN%|ӦԩvKHcʔk[x<&)Y$y|B F"eI"pUUDXo/~(jeeM69y Ӱa{UrJي z*. ⪫]gBЇ3;~iQF͊}}=Xn7Dkp lK Ry>F& @*+weZC/֫*] ˚C,X0- ВKE}'gtŬ+``uw츚c+bgۯb>wmq[Z/?Pܴivc#4-}a;LXH$?fWuyGqϘU.o=s/){ i4(%N&ECP?mʶ\$OE8Jv\?F?*.+rt>dJPрM M늞~Yn=;(M/6bLz˫'&/^k |t2/PLZUE?ο}~*ьk}<;Jng\QTdG_7 WuHzh4i1D"hoGK \.`b\)c8}7ɲɡv>WUP5MJbG-kHkWT{/`Ys~8cI,S3^R5LU~VDZti~U7xKGZXTz& 3ضJ= z{cQJnJh4sCCuS fR)\#IisU@,.kS~TlӦD-K#pޣ(1]ߑ> G~BGoRޡiHLFM&jUU{ԙȅd E`GJ` T;> hqt*E@pPاDG?16cD펱!}S<x8 kuޥ1c$E׌Mf, ².^Vp%v 3*{;# wWW}mI9x ph [;!#*08z4xG&B5r+RBǰ<Ciس͢c~mkTV_rC6qbյז[h-wNnvqCaP\PQ45C"%@`dvppaÊ;\y[Vf<(QUۆSUr`q+ =Ё+K--N UB.#mq[f :nmu 5O0almm#4~+L&gغI 0MTV2IVewЀT Rk@ULTggW ~s^VL3Ə#݃xqѨkxoWWIx CZe/a8˃N%dL<˫cctOMpB> tk@li4KQ#!LSv#tIx?c#߾k Mӥ={JO=Y a*rPU2MƕmK=|kW M&>',}}xa:\%̽^^/bL1*u+a֬_=tTexSS62رGm3]QSݓU[Y=be:Ile5H r闒hdž 1[Կ//XwUx o5qDpyfͷۓIg btc|7bl6j՚jXyy|E~OI-S"|c[ ݹ݊b+ۄΓOn5g~;ovK Y pD􏸻X P,_ׁ  !Ν29=uu>)mɄBJs]wO|U>?*P4>e ]vJdK)s?M PHUs/{KPHZH'c :SSe"3g2Jkj``J\q jpYȧq5.1M*Zb2y]z KM.]bJR?, -Z|0UӺ,+N1ݪie*_=5ѢȐqr9Ѳ|ϓU\11&HNبǙ޻G v?DU d2U~fd.q”ݶmW۶1k<%€ ǍSLӎjp-t ikd.AVtu~7]C">^~5@Dg'^{ m&I ,I%LRzaŘpV8d+߰9ssLc6X,QY/\GL%%O,ٺk [UrUƍعs+ y.?]>T5IK`}`̸]׉IȐd`pK۝38{GʞY1?~wh(YJpM[v8G*yaqXu|"oJcrZqC6^oeh|WlT="{ܞmFeA ۖr~pk̰k\Hnk~7BJd#Eu]20uSTJqx`YqMHق@c|mے[N1N t .Plp,2KWt3~LgsHrq K.9˄U&ӜTV TgV ηXtD Gw(k[z낁:Vjjvl^+tiGth/r ՝|vцuM3-k4X]0@ѿvj-]t7LcNxJy6!v {@ 06`hj^Gw[@>qB%UDBX|fH ߡCӴ_[J$vE@1SJXqx"X4z{goLs0 `Y7O]v3QGt8k?K$4+ʻOJklDに%Y^)'x].W$ HZأ(wjZn9%_jiRו|W>M=eAP4ۏo鿢6jU#MM#fEV?½ Abr3qe68ޑ@$3tpz 瞏Eχ98Hຩi\[G #fCC` K94KJN yEQT)Y*eZ<<9--#6B! 8pnņL"~-)e:;|W^Y9_pߜ8?z=uti$utnhؼ]]TWQ*fCC )Y6+^|wƌ|u5WUv}}XjxڴߏV>uqcT_pۿ?4}viDz!%>W#E8<KxJIR2's׮{c1iUi,`#PU43=ۭFh4Ϲ-2MS8;իH.yڭ@\ӆ;!Ĩ& OQXK ?=TgJ}޼{ 8Par@Ge '&c_ZT*kgn0]ؾJj.NyEyvm8aې Elڈs?YҲs޾O;wӲfrKzDyíXWxS9,ڱx?{,L˲-;@^Y׃@B\߬?w.4-_jefիFRaPuTӤIO͛ͳα|~Ǡ8Wgt?x< JT'(v3 8^^lD>v%L]0$G4x~)Yۼ  ߗ6޶ӗJ 3?boϞ0FR{?\C x'0f3\W$>!?i|HxrSĞ >cƂD⼔EA0A!~Cј1&!bSTS0ƒA>?E"yFUKEMk.BE%;F;w҄K+O7btlx~J y$~SeBmDp@2Ӣ!&PUpbD_c}08rÁv1NxGO҈~)E16<<<ݎЩ^Aei9#2ӧN3z{^_xDlbeaUU3&7';L$,`x]dL%N$\s)GVcBbQGC],]-X*LPjkEJjH>KҟzrqEut~SӬ*}fK.5dpU8ٖz33<͖'e!ur6!; Cl\zelڄ^x}?tڴ*47]SݥWQ4YJB〰D eZH . ]OPu_Zʣ*auhVH[Uo7lp~sgBa2@X|)be<>߶'*J{2ifT&π{'rM__&R~"aY]V_*[JXD.Ǝ!K7 3Q"#'qf f_|KX/&LNL 1jX x p?+P Հأf +5es^<@'"·lŒ/' A8*)S %[mUm{P;8V(8> p0EFT42Uqk5榦xDӶH9Ӳ<pgJSnKd<^UW7QREU1Xu*I]%E(sqmX ["ۍx\|%pP~?ۍ_r|W~^M\ٶln/XP f>خN? 0JՅh$HQȲގPHb_jme,w҉'*DJs36o.F[Z֩ ȹ/V\z)֯CQ`YPxe{S]x|Z3x 1o((4hYUUΕXlm=]7ߎDUUiƚ5bx` xq̚%qiUUu睗: 8/9o¶YD.c ZcA(tDĹ&Lp^QG̈́@:mr"znk$GbQ4E*ʴ&#RU-<ŋS AuY?꛲lYY?Oqe~k[j'WU{>Ŷȼ1_2\\%ϭ҃Űm ?~`F*Z( +>W/ް IH*S35"%T_5q%u  UC iڽUP<_̽ޞ8wzR?h{>G$b E.ՑVi!KlNו)J:bgB4 yBVƙ*~pX׾c=vGxasP_8;c3/^݋]t\XeRooPR8 _yvl]W+*ALaNWTDZ]MJFuTWoVb|Z"+ *bQo|J5) fQ'yk2% /2۴~=kB D`Hg]Ò5i[O!gql*4jzlxx ]=?x3E~\V=3WX#f^'^B*# &Y*( }LUs3J~Mcmlv7\w u\6HI7tfL٪%{XG4K<]b,`֨۝q,Ƙ2v‰x|( s|9_'R+X.b %aR\.fYVM-{q@Hv ,&4P)sO|xĔfKE%.|j_Gep27({f`G%ڍ7N"CZ?:0\^&@b@ QE 0N,g^_3yB|Ɗowhںcof|e?74}V>RCTj}N3iQ}#Ǘo lصƎ8W\a_֯*: Rq-pQ^O B)A `8X('vvѱ(ɤ gӦ^{}>rUU,*پB|K ̕>dPU \J짞vo+EwWX,%mEH&+OZZ $/w@W I^W=?J(#%#9:xR|@a~-)5`2@ؔbq}'p\%[nەcUR:) IDAT~`tƪ` H2y, x-cW75`׮;m{<`P7PI \Lo2 7d3)V'@XUM\\(5eжo~[nK~4ΟUω!*&w)hLVƋ[#K)olooYW3:ki>؝Rb(F,=`7WHr銲X  mkluOgpPEmvr2LL?xGKiDyW?o۳7eI@u8hul8Sƺa Be% K )o_4SoH跿G20r}&`4gˉ^+JR=>((Ø>[ŋ/b<')qx!46D$]]ؼJ^/؈aL:mQ*mCqppG*eg'>[dǪвJr eevStO/L_H,(I<.-2S4sϋ#M.8شϜ)->,-شa="pzO7H]qd` eeDs'a6ZFXVbl\J?_SS6Mv$vF8̪4kWW9~g98BA_Ğ5 ثg B6A g`rڻ>4=:L.ȭq"2c$R(TUv\be{;JCCf0(oc\(JsoE4v#m3EߏtZou2B<\y)%M;X J:F:Oe#ko=gjLlPŇТˋDܰ!7OZ'ڞJ@s9]jZ:?裛ld2I|mZ5']^oyu73P+ d]si7 %[Y1dBX{{*rᲧ2ćwH?17 וo]6;#6IP[20piMY+s2h%qnͶ2QDH/MLtylxuA,΁ [` 1WyU"`$Ņ@d_,KBIĸI]ʓ"]EO:]w謒HE \vuO.g,}x<睋( D.E!a&""@ `==ՙED _Κ.N6n;~84⡇pň9th-́}nN*RAcnFD`{~q,D!s-񺪘kEP9ObQ"`@!tZ ~B@ЉT@@h>Wڤq$e$2ByG}6w_-T)IqObYyzk&+TRRMr≬<$^&g^ OՀ1>ӥ("=FYzQG9aBs'E )@I쎣UdY\!Rs9!d \m?0-5A(BOw19R||EsKmU|u56ڧC/ ?8B!ًrCQx$es0Oy2|{\gDa}Zm4D{3^2KDxPj+%O2,] R-j.'LStwc :ɥ"5H {g+@i/yj)d|R]-ruLͧ^%oL,I| BKs)S,B$raWE[c8_&wå}}{{ |Iߙ9sHR0FD}D+ػ7y]E0&lc7VMvsFddBAzU"FT d!ѱ1(@c@'я8WX!B%l`7cѯc ƎmajuR)YVfw6tv {!lj̞ͫrT*0W{Ŋ瞛31y'.Di:ϓSOE(Ą@_9I(~̝K/<~* ò 0Ts(_`׮E* lYf2U`6~gdYݼ[x#^Jc0+ɶw|:4 "\R=xxuW#_ :CtmaEDT58_1ݕ |stTa齇ܱuw,q2{PCmqS18-hen34Q0|KWSVK/h^!^֜:L;r_1q*zJg"U~{-w{=(e H=Nr}U.7LmS2a1H9]Z\oWc9x=t"ZZ`H&`i*Lq+8 nAQ6U8kG]WIY(ҥCGA.\ ,{_7jӲ0 !liYS7nj[@Q(pđ9DDD{򰛄v Kp$OK/e2~DDo~}47C(Ҋj|Gl].$B(W+Hʱ?۫ 1C{*B@p910l4!G*p81^TwЬ\'8×c( x(c;l1h=u3zi"9tv.e[9ѿda-?vDGX28V,hm~oBڅbR-0Ǝ-[sΑL}}k6yʢTL 1"  ZUEVqLFUUiӮYyHV~2d4<-طSF BfDۊ :v̒EWi<֏VA T1 E[b^k0k]VGSE# WT'Htt 09jdABQXʀD_+ ~8kV!ù_--0ɲkn1 GF)MR1j_Zau;1P$X=^ lc'p.-yܪcM YBߙ B%$x*`mY4bQ7&~Ͻjy}p-NϽ8:FUp5U;*jS\jz5M)4W Y#5 5R}}r'+mw嵤ML&[ ;zcN `N0eN2bmԶ"pw;_>裏R)CCC7pCYYW5Džk^3mϊşjg,_(|b|C7j$ɀ&TjM$\nm29S^<2VTU%!*ɹ*`  8Q5'xI8茹t|`Y0 N.'c xTVRzBVX7~A4pI)vX˖U;iRm9^ 8$'@p=p1P,C9Ds~,BmcA DN)Rc;w-GknNuu` $@5T (չ%0j„(p)ˀ.80sw=\U]=T7=2CILֈ:GQA1 "8BQA @]U]5מwTwsϹ{z]k{e/s0  Q8(x@e& L_}ռo3>NU e,ѝDwoԌ/)t(k/w8aק]Mà al]䢅evv ?H @a!l*<y'}Sf /i|iB x1\9q󎒐e3p0ru6cjƘ,cǎ`0{w"NlڄkvG?Ňb<2vbp.=Tn։_G$La(Lph>TCdZ(+,˖a$كyBIӌL.ۍHO6m3cҥv0cpX,RWWy~n&BĈ1U4mWҲݻz{==:tsfSTC'PUÝOfnϲYQP`}vK.L]ܐe*+S:; /(OSOLbv(-e8['BǃCQRV#ݻ\t)f͂,"ֆvc~#CT fer坝 8c4CTXE8v 6!  }:17G^Vj7 CN͌ + vd@koOK*# ILu>L7t.eƹ>2BC8F+7\{vy*0ME&HaͭURzbW/_dznJSv3/8/12eNeOϛn֖ Y)Z;WȤ{@U+Vmn(=fa܄=1dĈ3Hpxql| `pCA@6HG@4 .,2)jEe_Gȼ$c[VQ};2(<b]W_Ӧ`T aY;>Zg(bo=_@MM~'ڵ믳[5%{M련@y15FDbF"1򆫯ޭHZId yŻ@qI-A, "0!H WVoJ9Y/dqXLS]}^QYZj$ Q MѧýS L0륤} RwY}opRkg3ˆl{%6@n 5~ݻ;EeQnjZF dEn4sPq::O=EϾT19ó߻Y* <4F0yU&NW'?U8c'd,KH,i%Ie]:ېI:/iRƚ;KrPSSn*5F$LƽeYQ"fSW*+Bz-9i&DBQGP 394`nHY(p„/se9N+tJ6,LS{+.mR्F*҆W_eW0YJhzB0"P^IQUa9dY:ӂ'LSed2-(`C qw|޴3IaD@wؿ/(IYZX}?xq:dA /d\IA7cIκ훖=_{b΋T:ƘERB_2$ noNYY"ϙQYIsfw<~kOU+&ˣ䐸])6'Yǻ]^|:}\sƘi6lpN3RÇ\.rMͳ>97o7^K.z{^x|޼yׯ.F <|>_#42]ƍЖ+䍸aĝ?͎2MY菺xΥÇ0$U5N痩TcM3z `-@3ִ^~`|́(GԡiG;ZL(7p3XO@͚bzosOO] w4! I@Y*õk 9!cp4%'Rw7, ]`Yz.wh a \jY'xK::^ $*]-e&sY@[, MM8y0 r5ǵ 0/>xv@* fD(tz3O5X"7z4΅LGѢE޻\ B qZx<+9u;L4XsHl6&2Y ݵXT̈ҽ=;͖4S&s:ܚv ~rK TV7ΉVVp>9auڊK86>Zm{ IUWfs .SU8S/\V32j*G#g-IUaYDvtg 姛˅#\6{c_9ڏ=(Y!肨lG"=¹^7cg nkK*;$( ,pdu5Fһ6#t3~&HSBfҤ7scj@AuʀALqMX+W JX[g(-L%/#s.nf6ks"ij.8Fmmx1ÙC IDAT2LQ[Zl$+/Ts9Or d/苇%2UXެ`+ RjVސ%yVߢWS`]+Ob>MQr ^Li3`{ qudG#BlVb$mxi=R?l1[qVim%vV.t81InNć 1=l. 4xbEL|բ"Ƹ""akjLn )Jδ²$A9fs'2ԬX_q]!O'Or3L d !dA(!pF^:0//::1YD}utlIh pCfkSdEd9,oz۩K]/H'q4PƢm^ٳ;:?+imX6b`K8ARV4seVJ#$.Ƀ ' qvOӎ+#+eY6X&GI?*%AŌL *z[h(rWdFNW>`%_yع*D^Zdtj(8$$)+>˲dP 0 h޷b_2cƼ#"!LnZa'B!3&3#3VH|m$ߎ<@ Pl. qs < n0'2v+ MM+~޽i~|SWdIrs (д{+zdu/GKxƘED\&cAԬ(Eڛ%5x5qbYuuw[ %Wlu1رX|>"A?F´is|y;?29Hlzh.7bZw$_TzpW^82gz*<, _<:_ [9sPSYZZ⋸zx0 Dx C{;YUxL$XE8̳YaXl@)@Qi@:{H DUUPU<4jk  8dj ]v**q#6M59}Բ~=~ke۶oID"Ǝl\xBUǃ}|9|9#LMaYVk+LA_߀bAn9C!zcĈ@Q,]LEKC~uusm۾,Ȼ?vvf.Ӗ-2t:Ô)ض ^V&.H#Y͚={pyeJq3?t_T>s}Esʔ%55a*>v,7Ps{n,$Çu`bV=qߠ3d  +]H._>fkS0PHJ&72 **Op8+׮^$y]kW*s_H%l12HR=_^l;HFax|^\=ō C& I5 l 3ȳE[b%KVbbL;aZj`P<S,=փZI^C՛W.V0DjLҘbYɗN>rJn,(PՁFs_砢Ȇ$R"~ 0>/qّġta6$F7,]l2j',3.ڍFD9Jb[5Ř%C)yI,Ƅb~b朧1 @MD]:w%m&醛PӺT JڲW)!r-}õQ $j=&^y6VCkV`ð,$IH dKt(c6uvvb=rnw0*6!d+l`!䬜 \j*7 94%` "lm;FA?|] KLSgLS42Mp &xT>Te]e9ۑ8jzK/}ͫQb o,˦5 UV5M5Ԍe 11q1ƸI%w Cmm%`0XH +9GG7?{_dYÑ71uݑH$N+V477tMt:J 5jthnn Yg#ećae Oh7-^5$)E}[wYY)}+r!{agL媼`r t'7WT[KJ޴wݵ&-081=dV[7'^=(KK@(BP;`\w IMd_ܙ!b Af o*C/na.x"}*o܌1E4x]6 9oCH~1"s]TP'@@-`&G|!INg:i ad dÀ:XPK47 X@01K\U;uL|N4β"xQqXhG%-ءObʀ%P5q%H Zj *++7Pdց3l~>/`{vQ5` U4 YB4_!T, c ;}-\z)4 AM 2xgqt²9 9xӦg~tt`V\p_ObӦY."2$Q]Sf QS,1@ hDaL~u%qVu1/oLS44` ݋K/EQ C)mJQK dpEpfP `> ׯOȲAt n'8@8v O>F2 @LDVynOφub_ѣ.ibH̟gWwy򐶬 E#oOc矧9d,,$Ue]]4}zFg d]|xux<tz{$JnكxeߖD"l \.wssͭ[%ML,V޽۬r.}[o@, *^/ǥ.`Fw= ?=ܼ?_#yD,۱cQ˚؁N&d2U]= aOz̽=yh`Jq| W)I`1H0zxV=z NS~)u(w,!]nENF Btj&K把 ƜB+V~y#P"p3XA?c *1:ǟ;\(N&RnhH&0౐-@ScxpdBO7^|67--t˺ɀlӘ D#8k64u)1Y$4u797E6a p{Pg~L3س(\\ |1C"+*eehiAm- 8No GI ,@ɀ&֭9x7;=}V2z({n+W\n8K͟[k^7l˅U/)~tj;JDngeCCCQX0(C,]:W6*$C,i͙/yDfOWr; u# 9ѡx(B jk+݌K¢+~b|t3F CXB7BnףEE)NINp[>$@a\I'L@ǜ ?dFsMݟwaۦ*GbHOcu4 ZwHNTY j>rX\.pDė=fWAb˘J,~j:qWT뻥phEEZr!K7lV63j~@pg2g6`0?3eZ:`eiR(99[?t:C09ْ/J> * vW۲_3'TUɲ"D#"iޓ&{JL8b Ƙ*)i+H}qSUUUU gqNw~KK|ƌ6lX~~(;%KZrjѢ|cxe8fTSY'a2+Dž2bl;P̻{{Y BvGDg0$ݪ(_rIjT:E45< FFMy&d<0nGr pW.qQ@x(:`&2OKg#CU"o0F@NN+@F0rv:hc?<s A  @/c9h;G*& 8o3 ;c%DQ()sЈ@9hn. h\XĹ( ;!TØ$X#N`v`;p @ ǢW]`%qKQ6կcp OS'&xivbx"jB`x\<O> /gͭBi \w`8o:^{ SPU|9N>unBs`˖-YTT`lڄ .Zk7\|@-I,( F+'?͆>c:dK$xyۭOcfL Auup8:N'a ׮QU$:rgyq1,YP֭ ͆Sw&{SݻK.)Y$k,qAaaX(D&`DLA\lzF aU;/j헤QH"b8*}:OzRBKݴxFzꜮ?[jbd".\֑t)eO}sg'a@$)Y_o]3ԳшM210=R0[j #nO˱DPPdY,J%<ȜjK`; CS*=tLxIJf98 a?J[q)y2[Y}n|?;ەSdМjwh~գ)ǬC8 ƨ t%Xvڜ( .KQ;'۩>3g0&"}dx 5ðie,+%e7ϛ߆g6aadu2yN[Ӟ$+PמɊ>X֙{R0+͌ A"2FV+@yz>OEa!,*ILѮ\ϠښxUfa(v@\e}W'|5H.HeUW_(3\O֯+GGc=hSĘΤ3Z8P9;(cJJy"1/ړ֖4u9IX+IdIjXAs^/e bun:@ fciӐ$ƄlOee9s"* ykX_8u:ƍ@1WPя!`0%.)$=d_  VdPe&O_q\tv)5 V,3Rތu_mAvI҅X) s"_d*)rxDIr|Kita'IJa1`/W GM+B(%A4'Ő$<<^}POB*flr+3%g#G2~hۯ?|su0x&IUU tqH=v,SSe3zפE"fkZ11(W~Dܡ r,9_g\'OaÆ3fgy&oFebA^1cߴޏ?&o7nq0(K` p 9o}iĉ>xDZƆ!"7yimd9gY't]Pɓsr9`>CX²$ ā?7S,7fF4ڲ͐e$fz 8+/>tt`|Vir]Q(/ǹchZD"CQVF&`W^wEK *+aYy:#cP] E׋*h, {X 20~xe P׮/P|."`7Tߟ IDATXYq۫|"4R(.eALQsWM:ۖ-; .us_K]/QN[{vݐhϧ['ͦΝ̙J]Ⱥ>lڕ޼y/?~%Ykk' z2z׬b3Wh4z+BcC31{ >λ?\4Z s̚]T=ZP0VQ!o;%N9,`ߨ pMan j{X e9X?~a-gq)#6q4IQBe]UYyK87qǢ{?Flw4PI =ɋEi:dQlDc <σ6)jH( JҘM-Rg׮je66z6Ƅ%.텕fG}\PJ@ (~Ǒ2XJ{<NQQ iL"qHl&6m´iP胢n2}j ltF|SrW+/&'Q,{≵{3MI-IG%up925 TʱYr1L.ߴ)9y|G⭷W_@@2Rp D pF_ڦ^6aG:D ;ʙ8&bi4;; V`$.-픊!@eAa8ߛfv Jr 9AP$q`a̸Jm \svZP$Cjog+^*bA,X8^Ǘ CL؄U-x1p̜{&"~5PQQL "n+`&K)st |elDg]j$_=rɑ0$cuu:Ua]|=zuu5$:n,NĤlj)U@EdzC6[ZQ&hڑ@ m㖃;+vCb$Quqi;8 IהCȾ*ގa?zc6EҵvMr:9NO5ȍq Qo^+mtV߽jֹ/ܒ'_6.#5T7r=E:ְAP&hp`ib'b]CSkNQ_5/>[B^&u8e6iԉ'?q5LVlNjkU>J\qW$YM? ڸ_r ĄuwwVg|ὭG/>bAɚǯV?`y2 +9a?zinnOI6W+&ܿvm0~ 7Bwg2lH}p)ʈc&ݲr坚6R.WyIAx*Ѣo nXg$q߄X,Yfj9nI8i?xײJ? XDN> ]0 K L't%x5* =Oc~o@{჏A!,wD^Ex,oǛ[ى`:GI̧hjBWVǃN'N_ݻpǎ2 B BON`Ť͙3qc܌ep+>D+W/\({44 `cTY)uvgGGu9DdYH^|{!̙e>riG6Kxe!<ol48@& "52Muuoћ9&9Fȟ5EQEQ$I$)NqUUkZ㿓ghb$, Hӎ :+'8ue2 ;!q UPT0PYb+͚u8n׊K$/37WQe1 9 qdL&,YU2U hcc(tgìζ{]>mΜ9gʙ> m,`גH숅`1Xb-T, EQ93]gXrM~u]gf}f^sQi:b#u㝑D0[$ \Go X?,O&Lʋ܇:ڗ#;$4e18둇6yPujrnHhY(nTv}OO:6n4MFVe ٠zx-LtTW2R,[]Z$yLJ\.(.#DIM$A` ^!qE2a "u\Ej4^b H_ Tւ`س^ii6ĶHR4X$\f#0b ;ƒ+ y99_tu%^zIq l.AyzXqE]W[_t8#߼@Y [Y^Wepظ&+h R$i?q;ym㣌 M -ui0á9̉LhGiK`** ctz UU7W KnYξDp6,YcL˥!.WxÆ, ;墋Do`/2dcIEv5梕jaea ƍlܸq .1cF8kOf BlпO5kZa`|5X=7Ir[λ͛%B-^m+XO3f!DAםۅ8tDo#ynW>_ 09B844*,,dn`.dTn`:n`4▵km_! ر4[`2p)L`:rO.@h@p=`| (kќ;z q?(|NHE@ K)y4۲ʈ\D"/sp;Yj37]8` p$-kn~5 trNĀmQpp61.NM ph$Hui]B(XcWٳqx̄TyX4%!އHf ZEw<^pjj50P^.(B>T ? v/.N*/G.Lo+@I Z[׿b x?|s={`X 3ZZtE6~q :{mitf{F0بQ8dz!~:ϣP |>z*^]:"Ini55l<,TVg<& p f͂IhjĖ-5k _bX)E|JJmb1氎icq7Tfal*ygΛG%%V4JGa`.3 4HcEq TU5mEˢBR).I8){ܷz|ݺB_VM \q3hF1e<PST ~?Ć er=s2i_byCt$IHsc ==l6oBUN%WBuHD/aʔ)~(<3wwm34B:yf_/D*m;XVt0Ȫ$d1Sp++J+ao;7Wgnc*cw.E]y`2w2JY{1 Y6t!ML /`ػrӔmX,b]Ͻ1Hyu}_"K>!5_E rV1*ń KP(, pFCCh^*gPJJM?}3"؍;[n]8p] c9hqf`1w.2g㝬 @~)!oaDE$3"۩ᐦoV$ӹ*OVҲghӦ*eUl|V/c0ie <1kA G|6EYG>+-lKV83[8hQ$^sԌwg@ww,<ɅI/yf6R8 ^2dY~9#ǑQnfr"3hvH02 2ϪgPv ^ '1wY L9\l.۷X'c`NJQ*dZ 8u᭷'Oǣޫ5E͘9 2A1LA&vp]Q Ӕj~Y55>Sa~}ci'Wad䝫;k-q/ :`Pm., I] EM ͔sLNy clh/xKCCI 2 Kc־Ĩ<&=Tl `&0y\oX?Dpx-+/fk&~J?~}dB ;|nrL.%2Y1p,$KG!7FC2o>޸wHĻpJˊq׈z"a8+ceM..Y_/+J$Mr? PUnDo|&C?ZZZ^{ސߏ.4͛^پCXd%Z̹ cK:}Z$Rp37U׸.[nݪ Q Tj,o$r|W).WI7\|TL"׎X( mDۉJ3-k Cu8"uwci8`p_zQ_ͩ)*l1V, Ӧa@Q_ @o/\.tv…ӓO3a'^۹O>vs"g(.$H 4aNv ׇ7lrNuw3"\gMseY,e}m9|^W%f.gut`rOy~{|}>eڴgWQ( K!z`%ҥ'l<VɄBv)LP ztt`h UU1RUhvTg@d B1fY uRTE I@1c~v}94ޣ̙saM74{캺:]׍} _K_6zC[ ֠o)DgB[gCr(dzYfצfWF$oM(eT+N>gW.k?[Y9板P9F0H m$=]SsT^,UU&(i7HBX[x6h?].GWK/~sh (dWiѝHĬdRx$A~"sW;u]TV4 sp0c qϘ1 01b83i ݙvl*QDt1CB`6oES &2va &dKⶃLJA2G$nIRiQ PWʕ4y臨jk˚suup6ݾ|>3Y- eyt(-338]b)FY. e9xϟoY`IgO:(Hzf5:\@*u1e.^Y e"׊Ң,qșl/ih8}+tB= "e$Ȍy$Gg /ZRtNWbI99>7'nzMsc ..v]\ AGb2%8?Ptqq8.Fh(alW8 fs.s{9 aB,@7EAb`HPFv%5 qoI_qlڴ¹ES5L@CeA B"aX`8%g{Y*% GD4M5Ũs7^:6?x֯'Au?6TKB_ںo~0ƢQCͧB_4 `g?.Hx)Sxatss q,&ƐHȡP6I 뤪<e4ipN'Zo'( F3"pΚ،kMuD00KH0pŹbF_I¶m;'LF?cgC56*L&Ӄ6dpHC;G UE2_ƎPUl.3Ϭo~kl0x<8<4 2I8+Vb!{U sf͊RUs[1jD?n^RTOF{_s ?Asa3g̜͡ArD$R䓍P%2LMcXLuގK M0>ƌeAjk |p:cɆf#>DBY}wwEI~ 1.裏>N #Ξ}mo.$u|k׬aߗ|}K!BHj$3Th%rSN KB$ <<5u%.uuc:p?\1gKWӃ(pe,jڞ55b\%{61l^-\.>- r%MBb㢨H֮UO0V|`(+˅{,$LG,5@PeYvT8Z{w? ('ts,=O:]]xj5(h'si@q ZQH̼$Œ+cy\}Œr&f:Pi!]81"&reyZڳɻ-_9Цm1sW@2Un7vt]T QC{.OIG|vQ[61]&Z;@qAha YVVfHIc(Zx~,:d J[ZXlSvˮ|hpdQ"zaw+,axu7͞?-цkh6 wz=5fZiS1zQ $i &C!Ĕ\wgvc)1y#W 0tOos/a=oElaeMLs(ֳY}4iZy]]o[[aHxv8xlͅhV'tsS}#_ 1 F"}$,9#۟s.I=n`2p c yJoON9؅{D%*J4 Xp X( xteQrhpp!0H\bkO% $Y ;r8(ѭ8q+ Qv_\U%>d~':X \lp;@7Pa@ ρ@q:sdKaHda\hE9 Ln|YDz{34=%hF&Yc87 d248{_aժK*C3FDyH t ł4z *J[X&ahD*.!yմ|4֣0RYz>}:a4* iIB?R)Z /**h&Y%K03;4d3`Y͛g-C,Àۍ*#]GM ;__Pxd3PN>MƄ0>RO߶ ͌tybO^q.o*oч[{„_ dUYYtY} c9Ԯ]CN;?~Ёfu7!EMMe%f{'U v29Eb`$ͱ1~a+Gslvsh<$ #F>ӊu¤,NbJ\@a;ѧ=UZd-+כDzރSGBO,$Ydq.3AR4|II#XIAG;z3>wOOT&*e Bx Hbp2(W`֚q7󣧽ykyMI~H;UXLXN6B=”ƌv)΋[:ZLPбp*\$'HP(+2,WVg2uXZ6ZS'4I׊z98W9)*TrKr+3: <høځdZ?0(c cN;kK=UQD9'bH$5'{9 *+c/8S8x\wi~t#T4NZs)O,,oWWkYfvs%,v' Ӧ .p>m"+ MST{55ï5Mk2ʜ=&6o=ʒI55,̅X$H$e#@C:U1c0N#`oiaLöظӧ EQGylĉdp ăS0mP^Ng3,^r8L46"C$bwױx1z  S( Xqg_qiq\sU\?ke ˋU>WeB2Ÿ/@ii"G,UdYӭڵRG4sЀpغm EN200wuwgW=w-\Xu IUE{;[W\'ԩQ]ou:{w_B{"{{ ؼh1JӚ7o~h#w{V1HP7̟9_m\ҋ=+ɫ*3,X~|\3~W?;߽{aI_r\P3Qy pg^ ۢ&`dAoBzVVɌO$ +V˝\_2ͻ`ٲیR\.0NJJ0c: Z ώt+.yB23?`Si\&]J23 4DCi@W@ ,X@j7>B"p,Ah?`ALPdezCU7l] KninJO#%Qߙg&TYS|:{GL~M}}E5.!"DB!ilWwz~ўOkOuVxsgbՄ)w`գK>~UjXܲtpѸUTᬣQUolLaWi^TT0) cR!XmV6ȍ3g?':{D6e2oUCʏ8ʣwSVxRu骣A7Y4N:biH#6&,APdBŝ%eU]ѝx &63ޏC!Q^#)Y|s &9ZhbafQVl,P`=Gba(*‚ 3[=c8 C\ʀCA[LH An޾N]ގ{.]tٳDiX3#Osj8l* K8㌁e]X .g*t5r4b `8bh4\RQo|%}PSzyӦ$òPRM9ԥaHq"aY+;7Z~\qFxR5 @@woNQv*-`UxmٳӟxSOc\jo7v2X9A{~VeW6 #c6m&⛏3ݬAFV%cP˗?Vxk%feٳvsrܛoe_%-K5jUi'>e +9:ztiPX U@%0_ԉ@Mڗe0"*p)8~2[Î@M5 mX,] l7p0dH !a̜aS}-b8v7߼hժ{SQԞ&#ΗHEEX;ӂzUb1tuun=|MgW%ҥm *V\Ӿ!?X;( Y롐Sٙ33>D/DGb 44MD}=4!Ek0Ġ,sU$l܈SNAcp $>et0 \  {7Z$pECMM5us8|#Gq1jkq'L`/~vcd-[5֖947Cӆ 8眃Nw/I<A}u?|UݱÖ~DA1o֯dž :i 6r{||oga[:0g߿f隻ߵ SՍ(x5Y2h4ْLظ2lW1~r~?M '/>e^s~P(v@`յ8} ,ULucO\kR& aVCNx! qx %UUB&.wW{4 iu 2ޮ< IDAT{r{=lX4y㵾gs2Emf?][]0Y6<~]4hʹlYV{Am7xVX)o , ӤQrK۪B$e40s&n^*d"cKr?K_x6؋gE!Cu_IAݑI͒}`qk>Wk^5* Q&s0Fsz+Q#KWJTUKLUϭ^\nVh\us3pM8N:D C( M:H}5 y~a>n8 B4 Ɔ5CU)PU!m@̜GŔ)Go/4w]װ{w/|vcvaQ>?t≹p{{ey^(ݷ/E( o}PUevu;Lq=4oL2o˴ʳ|9n]e4YVƈSE|phGGxI?8GS8osAQ__@ ?cFyE:O{kkIcܲjtw@7OUķxoytB7&4m7|+EY"՞v=/߽uʿ,m47mjuE!G ߾}vt#n^d8M O\p2q8(a@ٶQY^*R׬uZu0W ;jBTrdȗ)rFθ(͖?ki=-'y"A3EFuy]55&|q? Yan> XQg!WX&y';@ C1Ơ$-|ʸ8)JCvNWs@I߰ # HɃy``*H{<&˯pŌv]TJrZvU3,xZ3jWUZi'͟wŋP|yB=;w6*$ KR'o?JzwWMQa`OMk,0&N4'MnXoHS*ߟFH%0 ![w8m^:pFGt&ҳsω9P@ù^S_pa< %Er]sIH`~ٝjހRq:.{EIFmxa&O#SC6 C,sР)`:rduޫG=n8O/GxVVL᯽fA20g6@4h(W 1@,mE`C$>MX:f0vI΋}\P{UFȸ j0L̋ش> & /Q1a^-1h<6mR^{Mvuc}h:_ϥ'yjT!x>x׼pׯ~uُ T*<]Q fmFc.g Ιd!r>4wn_&$/:9=|Bup ? MM2Tm0T:ӕ~ZL%:%=ؾ994 fSL0tɸ)- NƇe H)}5W^SӻwGw6cFW"]I} kРԆKo./*:HUGϛwk XEVm*_<!47 ߮zߑ* `Tr5IipU;ܟ/=Y f2c<+ckQ'MA.,_ `'?O3yEr> Aaʐ?Wutu!mtGs |y&[T47ˡ!YWW?Ữk9WG<9h)D@uuW@,wEw7mZZp%|hö8c2|:(PU9iJ0X)oiZsᾆZ{{4s8*mF UU9w7o|xf",wsL&P_y9g:.z d_v^?_+g>|ǎO7冥chj«ϗݴ[U ɓ N9%hTڶىUq)eyR_~"g{ШQ\6 X:M>*t:Aᬳ2w-Y^[jl/1p#.)[n:v䜵޷YF7/x%( !ķxo0!f6U=/&)XH\ T/;//*p~Y~3Dfͺ??dcD,/_jRKܿ}7JJ㌁s>jܲlI^~3F1)IPR>*3u4GR!I1Aj. \h'3 TjbIR*~"YK?]itu}i&S;bJNdZϙ yֲH+; Cc/ko@Q  X@<`Pi8$ 8 gdY$zI0RQP|Y!rUfQ$syow8%annGQCߚl|P[Rr\4_xꩅѕ-ҕ~`׬1y]2ל\:SNAc ۊG"P]͜C<,'.pvyX矇#&Mj8u#kjjp.,d$'Ǚ߾ t d!shXh:@Kl~{  !Tml'T@ KC$MDSP:dwsq&1w\),&׮ÔɩG$ =%令7>w)H yJ-⤪[}K&60y~(`U*ѕYɲy:%>ĉ"ҝtСP=ܙ=rծK*CU zMk@i3?DC+p-?oow~ >ߒNsF)cZ!!wWT)ʖl6/:ϘN" jI`EEXke,5YNm P(Q9`.HӁlvFo'` u=\TH`,p xx v-QB%H@#p+THTEZ(R < \`&r`W0Ƅ&#*h[&sHt*vK9WML[; ,.\helRU7c, f2K38lD.n`< !; x 4Iۀ;I.\zڀ|`-4P R QH:PU= 7 XHmۓb^vjTUSQTb hmAYё*=7]ٛnOPXa[8 _W|,^V_/ >|<>y$c3KؑP[ ǁ(1--ƈ\W(uuͺ˲9;f'm42} tvsƌܶ j:q1ػo!MӮ.Sմ릳YhmEC , ʒIRǍl6BLfpA4;-YN9u붦If8+*RQ44J6KʛocoLDZw/tv:̲|^YY9j׮GuӔ{iFO.7񮻖=Ԣ̹k۔L^/9,uu\t9~|<@U, ah1tuA"G3~:֮hhi7,#ҥ5"9S1MUJr7Mܹt){,&LxE\r T5T=WU)د5pEA6 ]TUmjR"W &ͫo&( v4\}9s3\},\`֐o,*:z͓`YV:& V \?67_?:4Iow]^.,+ٙ[pJgM?YLBS"d&#h [I¸k1ƁT EAk^z=xH&qM((VsC W൷?IoVBk $.ΠXg! C[ggxѢ\AAi,K9c-\sMv@?TK &ďNTAFq$V@PȤ$An=AX ~ 1aXՙ0.uHq&xDw&CU2)8BN=4!~_q-"AE;zҾGj<4zX 3}DJ6,*;'ԇ!(uCP߳=ۥz@PuTmvmV fs9}%L=E4;"ݑ[tE*qvG1=kp1@2]&KJ^a>~F(+4M4b!i$ GW @9@,-8r`04uMV fڔ ZߨC z8N8Vμ1EةH*3'ˤt&$\$:ې@rBYMIarFYBHo4{ϝqS_\7߯}dɟ:;jdL@5(CQU=N S]:(敉tEWg2"$;ػ|a"qЀڐ ̅i#]eTϯҊ1F~vexw"#}"Ӄi۹;m)M Yf1cx]a$eVoSϼndCeΘ Lr2 r 7R?cN8x׮7-;-`BgK֬~ng 8=ջJOx5iխ6l|`@il 750J'mf 1GߕwWhvp!UEK{c4ceG7~o^|Wo ݲDIUMl;kWVȪUw͙C4c,mk[)Վw|ɥs8Y-vANJW;! r~C0`,(00r 4 nۮ6$>is#DoWբ_^}M)+U{ D`Q, O+-XU5x@I9 @0$P( -jo?!A4 86Xl 0 pr.^ܔR? h`l c8WGHD{ PҀNAa( Rb_V鱔 -^K~DK@O`p^V]CUBjF9SNU?9ǂLD(4m]hl4N_~ev4¯H |*:txde~R h>D"(+C6 ^/bhRٽ{o߻7$߶ -+ח ΍x箆xT<ɓsϕg N,Yb3fƍu+ƏiGpyo00 /OǍRulF 8gP\.TTdr~=F!n 8?x!^~Yfx)Lg(#RʪUO0 >}EQ8j2%j:E"|.%`De+jW\7]Hhy0`:cO6.bKG\\tǢ]ULqsB]7,GI;Ӊ T⪎܋VQOxjQ؏2K/SB5ʧ8D:!GUb7_S1!b {2j"ja]'iK8֬Iwu8C۹g͸F)uc}f7yug$9RHj=X<^kΘnÜ1.hmBҲJTIɄnƈXfHwB1.."eK'mzo]/l-Bv͐Pvɓ9%`)O9g.ꫴ2{P]#YNp:;͎h/!:t5ݨIQkmk((@(w̝=_%OO44(+u^tsXg`*,!P(-6]]!w)92e,Sua1q)QVvwX5k? ,0P!|w(/A y\"@4[wpʲx~^HBIirW/-TO$={;ʪD\e՛6=`:1Ueʖ-niJ'7nن$BX ;/o7Hnڝsx/sd2SS,]&s N()q 򋭱-ف~kf/1cq<ZM[5Pt[G7W>Qm;seԴD4_,]nԱa]s*Ub+ƾq%4-X_`K6)S~뺙k??sY<\@UL%҉MyҤTK85d$` q"T Ā %0~McB(B x 0xhf"j圑 >rGv c ŪZ}@N$?{\.EĈ\ (4PU䀤 xEGU7_U]>[?A4eKp# zp@~ ȑH[ט  V)  -#߭.?q"ċp5 "Gcf i*|Y+ d]]s*8p{ ~v> k` TՃqY3 ÏCC`J gkC5|kiHtzx@iHPUhzpJo>Ew<^_kى3#`,-Y/đG ؽGOMMGSDi)®-H"aX.Wpm]ȹ['3s"Ooԩ:dl">:8; χ .㥗04=p][U5Y8b~}wx3zJ4z*+80^Qz(Tw뭏\y大6v>>@zl}1((0N:좢"U-| וƌQN?]dld|ɓ"uwgN rl)qIE"!7n&N4MsC'Hj>"Νt5ӟ(BaZ6::pԉbO0*zL4*kdYa֦W_]4Q{5gVh6~i>[ ~ܹEEiEJI/._t3+Uid 1P@(S[ du}-{J&6Kbxd Np=nXZJVZ@ne`K&s.ܳW.9C;DM a86Qgw{ @"RU`Yɱ(&N\>/7 sq5g!!,#\:~PN掺s~e@PdTM>{{5˩N/yz؊Ag$`OA A01Q_|[o~7E S]Ita|7$9rv>Mó=n‚}%p'ZOn, ?tŗ5͌5 }HG(9;.rb&˹8,tڎb$ɕlM',E+WN^<<_0{hqzVq81W55W " ׵f54P~9oli9[ 9Ў@.᮳8$WȬ4BhO ~/~!, !=ȌCT!@d+3} ɶ˟Xyl UE99$sݽ|qSǐ^KA ~؃ןcYyxn7zjO74Įd`ЩdELMbi">svngca`U?(lg\\XLJmsfUnaLI)d1p.%ٮ&yT;EE$hƲ4 J$R󬩹O?>:\y% ;}΁n(fN8knn0au$#Eef'Ͳe]{ms9tZc$fMM1ݻz.藷{(`{D4R LiiJ<?\S8XAC 0n#,!aQ}_& %%Gin<0\iHhK;wwZu1vt7 C9pÆ[gμkȚ5[wU߼P}١o:Lr ؙ́m8Dk0U_^^r+ǎ dr_GԑYRfv6H;`1lG61:߶- @*Ga QTT vi(> ob62@#jJyʑi X;),?W0s[W #ɹtYVW0ωXo8/Dۀ \旗ofm7jߣ'! #(!#82`HyD~ \\.9pPir`b,Kt#'@3cq 5)D^@znK#0/nۣ(͟={@yP0`B8 !pDU%(-ڏ> ] 0\-huhJ?H͟r_?ƌ!҂W^ '`8l9VDQ^O?P^LP4,F1{6/PU`j\u ,Z ODo/z&{w8 Coz1|9[.;kaυBU1z4~3">~pÀ뢨\a J$ܒٳQP `29IiY9]Ygɷ³PȎDd<D4ܹ?g?S:Hm'?> /Du5V\;OO?=cE7tgF㥗dYkiiF'ɞ=O8aH>qcz5Lߏ@}8\,^:wafq9\WrH&yeL(Q<,Môi` }}xA~8Əc!mòN#c4Rh8 70 BUox.y'̙28Ct!Ŀg$O|tCCEKKss-ʖ{?ܥv9?4?΀D9眝zj…ɓruvh1]]hj̕o^1&Iخg<`*8-2 f5i)IYޥ^NBW'<&E aNv44 JzO&ȇWQFW2WՍ{>[,~ied@0+V.۞aIiРضңrh,R{/ׯs[ZÁuY{7U? "G\!gWQHte2\r{>}&ȶmrrJtƧO*Jcyy!w͙8NdNgTEnqݕX||HL )k<@X䀝DCqTQs`3p-XZtVc1V^] XSWu@88 p4oԀÀ뀱D T ) HQ c;prQяZ@ݺD!c5@3Q?U q:HQR8WKYι`P 'J9(Wչ]]JQ82t7sKR&Y x8P{K Ph,Q04ԑ|Fො4veŀz ?*q..9 Yhy<yg/Z` !FPUH؋?dHz ~r<=<&MG]ݻƛ+TU5.+m,X}ソoޜz) Js.}?9 M!A(Y8c:ՅSiҴr`K/ů "44 C(gr6 3f A.vtLB3==>]n㡇Z8"i- 6|Ńqi8TzaZ 瞋 %ڰr%&Oǃ>ɻBc5K顩S188| B  <fY8u:;%8H̘N'֯'Dm-WUӃz^A&ND MPS#.̌s=6y@8jiiRJ=XEE9s7.c,pW Bu5;U`m NEu5T_}EaW]u[ut8ee,W˹0_* c$pE- oY t%%H1J3ΠM0u*Y6~^/=VsՍm|f Dt@w pTkld2R"X4eZZ롢Kgvr1wƟ(Yyp9[n\2Jn^& wU21eA3<9s(\  +1ePꢂh}uD٬cuj&1Pِ]QqʄmQ"&DyW plttW1|<vx)t0~7䯫57T].Dgyi ͣAٵurG?)AtU]_ِ!8 HhIbʳϱMP jǖ/l,JJ5`6<44;NhBc"H0L6b(}mj*+*6ƆJr H! 0&4HIB$M/24fL $pE}UV6mǬtrNN}khfvޙ繟c)(J;;efIcLV Pf;ie#?eKzcVu<0_,uhPh-`.CDHI(3j1dcD 9Idѕ+mݢ3v>s,)--}~c\n߮]?!"+h?s"l+J^!'(Đ祔BHp!q,K q(~MYһ+\fa~Dחy_qǍ@>jղՌ>e,8Xnԩ}oݪ8Nh6Ky!Ƅl~8G68rW_նm7]+T58y#4F; LM@vX:;(ɑe; ~ϟ86J]i7],e0yLO(@Pn DG/mK:r9O[T5p| Uo.B IDATk_GuP^~/"őGj:GcD>~K͜9tEMCo~#^cEa)J08BivT]v'd2IE++̈ҥE0^}՞7--mYL 쳘: ݫ--xU{,L;Sv}pJ,$~?\0^#Kw55M]]]==G_P~?Tqzqm4 >*+͎ι]_/G48C"h1&3**2, EòHJs}nRSߴ*+3Pwwdqi֭ڗz37ߜni A ;?$= oΚc6_W7dihg'&c}M.5DHO:i'Nb-8[.ٳlHARŴr\~^y6>K˦+^2yc˖GI(ZK.,aR@.u;lPU"Ugz^@::B8 .C] -+k#3px 74,\Dp] SUu\dOkR60I"!㘎* Uz鴏1,: CS3C!3ObL9pOLb xUW|&VlyΟq7w =!UƤ6TQu*KK<+k{L]vɂ}ptJѳ. ,"XKF5rU!mk, Ԕ4&s3H29/J8Z61y 'ltB`!ƌt_!90`t,  ao܈ϦSN1'#)J;!|saDaR G}ڻK!}`@ˊ* >m%ŁQc8v.mW|aM}mmF{Wv êP=.[e){'/$ؐЬ5}'pqQxv@(q6% "QU>0 P}Gg NV^.<`p"Wn{|1TNf)$kOm[azuȸ[FԩhPQRaQT(l fyڸ1}icLHvw$B^I*u-頩6\joEc莦*? ?3"ñ(#I9\.S(xKg8W6+3-k cro w:rU[c^jjo'"4 RӴzܶU"mO;x!UpK9MQsqbWVWHC$'-X/VAn * Q%p;XJ=kalK_?d84е,H::ĉ'4Jx<׿_saf΄kߑb&twC;bLZ Q(Cy9.2##EH>Lǃ݇:p4M>L80m1RT^M afafٳ1q"0ds3<o|YvO=sgFZ*v% ĩm)lɒDbx`{Lg!%PV1k|x>kPmp8Xz.x كBw7FFLpA(,l338l45AJBlne˗T>}A}6<^t|!o828jq/ޘ_ c@hU,H)HXQSSM=rrC6gp_Wv"*++kkqu};fJJ4ER^(5+r9%7S2Y i=8f|D^tV4Nʵ~+i˖΁KJ) yhh^*qvj%Nin _2^{ gv<<`4p Gc޹gtݡr2O[UR\,\COϟz(Tֵv3m+^F 0pt"H$fLeu *2,H2Ι]zA£c .0Wv.eŠA`qNPB T(vXp*^i&im! AUԈi$2-') Gb)QG* c+y,:pNJ•O]0/GLgjjcpEEMSߓf;zs(IψzϺuOjڪ5!g̐gK[B}T5~Uz%mkoe@u_ʜsnMG&izUP@_DK 3 g0gUW۱X + W'{&9-;Q_%fSD{ѶC==,R5BHU|xsy٢.@d@=st>a3LP] pb8.pu:y]h+KfC/X:4iqTaB2xqڶ$|7p:o ̑MM m~{4 0Ix@kDA02 (sEv{WPj2#H$ 0*ӆAC (iM(޽7w慠…P˽[VS3\V7PZ#H\zY^( ^[qxU˖,@&CV"m>5[C/O|ߤU/@A8slnR]g4fv_"->ӄ ٶ.M ¢-}IĈ)auvX]9@ǟ*LFQ*HU2}WG( Վq8'8xqw8~O>pchf݌㤀?m"b@NM;\ B Oelcdw MG}("}R-e"7YaLe0||;^f~a48x؀y c\a?r'(p3 _Qa\g(Zz,V)4k. {+WcI 1$k91 Cƈv fwF^ljrnODGcd9R][67,!.z H  ')@/P l~ (Y+cЊ`iyfյ$b\έL2w|h` xP7¯0P{7~PIf w$񆆐/a)#@goGѝŸ(6mΝ8}&l,~&@ 첥40 ]X` 1k`[Iɪ:^oٴm ގ"?UJ{87܌_ ,I.~m xmt&RJ(B*ۆ׋>i2"*)A=_kɛh{}`%pI+W.[+I֎DuRdhmfYz6 J23i 6d+&Ih"$U >?cL!r1l C1  r(#R)-72!k fs34> R/Jn;o3. H:==hhP¸BcιCk]zHmO;,JV'Rź&EW=wlo6vY ]g cBp0 FTՠiA /U: 9 T, :SI,ϴrYkަqtRPؑs(Qh)TT MCs8t~?KWq ɘ.y΅ehSr7o> ^j{9][ZM#j6u /Sڌq)C^)9pZZEB6f?'A w'Kc$`:2շ.//VUw Mh 磮((_ujn&RvumϜY(*_hQ.`kV[wt/SppaeGC#HBh /< (Q(LZi0ļj팼jG9A IeN8˦ju✳^3WVq״1K$hNj)+VJjz}Ҩ1'\yv3@_o ƒƉr[>H򢋖p_gjmqhi1^{m+hg">a-lSx."--{VٌhTU*#c{~B$=ۗ,jxx;nymMMO8H/dRBAZoJhZxSI4ﯩq=#x<>_u.K$R2D Bx?~sB.SU7k٧9. g>1tX `63`=`POٛn! n:'9jD=Bz7TU}]s,%GQ: +e80fv>OBcuje̲.&jflH*cG}N@9FCQp8\J˄XXP9GG/2Yvrb9P.)qsY!"foFo TTCޔG1? 4 Ê4iìY Bl ck~6J(&| n_˭[^70PߟٲeM_]݄ګiz|:*ahmEO=ö](**pXG'G?laj44`6xoټ1 XtspVB/jilQU0#Ct+k“/Ke`\nG~~Y-5&,34߸`֬롊p8Tڶ-D.f^& H[ "q΋L&'̙sƈ!PYfe%yhnf^BN<L'KVƘ>KbH^aš[8o{'@1%u{o/=<`9qBzs"u5_֭dҷ}rX(3Tx m.#Q¥UGZ42yE7mBU!\Ъx$H aH65V l{lђKVhzIӟi\9NmY4}i2MJKDv4eŪ#Mqi'k3&MSɽ]=ͷ6imOiIY.. %71-,'"`If L_,߀@f¢t^y8Go/e*8jZhSx % %YD6/`fM+WYR-*w< ;j 1 @s!`(]9,ѕ?˖}ׁOaA :zyM'VipT\5_uhn֊ >[q۲Hi 2R10[N]hu\׆ê: DV~HXFW/=uXɶ5?P)'FB |]@"U?tסXGa_#PU|ٮoN %uG VWr 2}-Ƥ{x9Jxѷ/ZIS韥A7PK>bdkxlR<(Au]/xH IDATOn!Zj۷56&~4(T-BnsPH2@tƖ:κ!5b`.tRNj"u];8۶y!- Q0# JtHr_ggM*u.0 D7c\e,Lt'D,Qԍ<>~,Oع;0c矯ﯲ:ε@$B<$$Q{HX$͹̃,u b=mCqw1 x4T`P%`IL(6L֎nE VQi㸫;]0J<+M3X/:)[~Q==W]5Ҳbjk=`Oҗsig_㜢QuNj+rQW! %A,[j;PR! מptB7ф x946"ES < ah*+K%`⋼q/ܾyyNm+#dǒ%zL²({,!'x BNB*UgS8dq@n="bp s"D"JT A g BW^y\55^EcycB%QI|QՅݻ1u*,A*QQAu5Co/^&P4s]\Ծ+⌑e!FM c xڪs/$_ s9<|CH` 8X]MHwWxc c6ޟlFA,Kq(1륗mR3m˖Gi_iiy;ݖ^h^ Kc:\o\dcDNQqddN\|A*E\¹\ lu`+Wryr cIYG*`Pޥ5eOuIuhH/n=/9Gn./MMfPl}$̳CAChȃB}(ų2cvz]4|TؖS8C\.y[e)c\8/Dd+7TXR-/tv6( ʂ#hk=CS}mJoEeDِRRPޖj)iDUժ*R-)eg5чf^n9 8Hĸ’ի HܑLF6c( ,8FVYYQ9ʐrP P9>~=2zs9CWJX-YgjQp&9H0)]A53)3x2 |d҃, 7T/lo_잧LC ԇpqspB53hchP)F@ɜoI0gLk;\>%` ›&~$3 w'CIqYǁH{\X ?_͟?Oymh&iiiw&r~̂a'Q!׆kdQ Rn3D1'U=\Q6f,+,\ e)c xԶ7 o)ۑ3/ZUU#_+*zqͲDu@sM?ۤr@2cD]=`gi|KcI8]>Ht"1@@9p@@`@p".`,fA!6 O>ܹbXq R) 7'x DP 9^ :;NXDv;QdMD`05@v|@D`7W@؉*pP xGE~ԀN@ @ *)OVwXQ|rMW'/Iײ6AP,_4 0#u˯z^--0hlCC8؇ VVTWi=Hρ!$KTDBUw4ebIY{?[[;0ڜxfD)-U887ou-Wsq.Bys2ixcٺ:YVDW^z K F(T- QoL 41f'Pp !7ѥhN?=~~?B!fc~sbd5#?/no?wuaP8]p>2bRq(Eu5Į](+"a>Q[,\BLp8\<6oF0BXhxdPUEA>q[(g1mbkظDpTTq6u匸J&s~`pO~j2Ms`]p c /˖ PS{_~z%ˌߖU .hY8{ȉ/j/lٳ88dT\!>%^o]})~-;F+>i.=z@.bC)Gcܶ=qviӎdr]Wտ1_mmߢCCܹ1FR,yxWsi軍)JPI===>_k? ̴_̶[ΝIaTycAA# [7L2n%sMol67t""<JpViնKUTV:]m'bmA {s:pA 47̳$ؿi$-Fѯ2eiDTIY)P2-jkrw7/Z`Ϙ)х3AJ* K(#(H l_`  vƚ5rb(5 HK>ugJFǭȩ|dG(=PLdzj"Maٜ8DD@<;~'I)npH0iDoכ?2{]bF&K0|7WPY"p,AP\ *TV(Iۖ ɒTEiU1 )# 9gL#qǙH6Ř{*AzF @(Mo%$:i:Zq|6Eʣךò.Cs49-*bM+g]%@s pIe(M߶?pGupX, ]ġ$Ŷݳpg+˜ƹHDFV].c,yUmxPG'6w?⡡, EQڥDp1 =р4?w1f P UDa`?VO>q5^3FD>@%ꐲ<qn;'ԑc p+p)pȘq$/+\ D9w3STHAB;R1DmB`pP\d@C]mqWfwc뮳? u^Μ+~Κ5r8x!piiEeelf AP]3τχ <, hhH&!FFL+ 1F55P"O!Go/,^ݍH v\ib:MNBw엿,,+fÊk~y<>ֹʛok)rXW^?Q'?D>ɓalҀ@fazwJKQS)x-,^ E\9!Յ^C8 M++AOq*n]LlvEAGG.x睇a;7gC{/-cC@$B[~r@GΘ =۫\|/g9v6[2lY8Z58~oo&B//KD"qmMdlߓSv\.P/IZ.VbrzU w71rBIWP+ds< !5M3lŶ5}z2C Ɨ~4o'{jk{b&TV*11F"nnY /¤Se_?ۛ45_eC_Cy%&}Z4^+$'Yf3vCS W *}Ř$tyAh& #XY7ͧ \u$@z\ [,鷼'9@^('FJԎze$x|;'M3: Vؽ;7,gkQ683UἳY+dB8P$hnq2to/|EaWֺx8$}0,؀䢾~EtkRDrDߨ9՘dsꦏ>ZHpխO8nܷG 8qpg` fPgNlp>?_qKAڶ'.s*UrJ{;wkn7XFp3.` H1S,1@!܀CTP]]KO_b?ʘb$2 0ACHbtƦwR?뺓M.UV&tt|Ŷ=,etB'r p7fl6QPn|~`%p8P* `)ݪP l&l!zeWoZ3I$$c0W ~Z&QxUWs{gm„h8͚ed2N& `h% B,qزEٴID"јmmX%0DCSx\`_d2t=  cBtZ{/͟rbh֭:m47g( QBrhjbZ[kqFzV8먪BC: f c|/(Ϙ2xF9\Rmw%SZS[I#7.=Hkoue} ς 1 1jSg=zS{SЈR Q 7^5 ^Ң Z6ǶTvgDhaj<8t"x"0ًq=YZ[1=7ǝsXܬ>w̝Tӄm+t/nL%inT^+[(|P۵J:D)p'7cՈ,׶ u\Jqtw@2{n˼yVs3i9:bW^%5Hl՛U.Pcp),\=tegG>\Y8LsXattW\j"FW|_{/o|{v>_$(*+n]7xm>}|pCCa{եi֬w~퉄.yQ 窮$Zummd۟ƈD *EQׄc)E"E#B K%o!j$2^S?rO h\@ c[ Tq^z9QWWPDS48 !rcCC-+ d(s@9: 3|nji!T0-55!ӴXh16:Z@m@{/! ,fZPj`<Zn LT5H,)`y?f "•U+f.a~Fױ+\^VVܹظN; 9XrsHq「rj/X|ǰ82? ?O<HIBX}$>fDcٶlnƳfng'O--^|qܠѶi--FssA9tz5nΝp|9A@Y}_!HdC㬶--WCG| {cɒqAJu"W2U_JI!I8Ml>mM|M;γv )lPmzzVFuگwu^_(F=l'\pAǑG֫ꨔٹ߽/?t0k1㦉cڽã?P25qjnƆ ڶN*944ADnBp\H:+RQpMwW.M`@6$TGL+W=W^EbXPYLŴηUyݬYȑ2X9 C;^ Ǹ-\P݄=dhf0iXcn}smK޽*'8Զ[3of2Wwp8f̵?X,^}peUO*\"NJjEIWʷ v=i>zqysNE\%0YSUv bUvET h9Kccd,_[﷊NgH SCO7_ C|d &A>;7 6@ L9d!QuW d;0L t @wp.?@ӝ ];:ohj3!?>Pa֮M̛Pɹ]x5ۻ&ڮ]=)橽rSpX _T z`liPW`El`/HtS%*2ђ%2`9Rգt2銢д7La` eB @Ns-D7ɶ<T@ (Ec_yT86PFіl:+L)cQE(yQ7Q#1It0TPQ@]@(`.ADҁ9/3L:ۀv]]m}mE$D$-M8+=:e)Gwv޽sdjk~=:\Wimwd :4r; mG.ى*`WW'Cl|!~˖ 02_P[Zp8Fڥ{)rsFTڼ͛W*DقmɸѶ{q$A⍍9?x?!fx;SOw7nP_ؼ/0)gN;)e(~rhz;_yE,MMxUiYa@Ӥߏ;w/qQ0 d2N8lpn' b"zuƠe~`YW(+^bf?Ԅ1}108Gy9+` ] |4!b1<3f[ix8 ^1 , GJ&" $^qEuڴ?pl/"~mӥUٽ9Ֆ6R܊>UwpJi *o)URD榹|͹BݻSgUm;Ql9Lwzbc̜c6~y'ի=S^]:ʕ+w(Un){߫XS]+,+ *R(c&6ƬYMmut'94d *~D zCd$;0Em2BFoAG٢i¶?#nXd0 TjQw3uuYΓOΟ461ǑŊ)˜.nw v.)HNm[1AqUZK.PNjM1+xQ=9"d`9S1! rFnoeGREEeBp8ut=n׵-23?aSM7aLa \qd@aRXCH{c)ey(PTTVf򫡄@l_ y0eq7 ^\.K3RӦEOgD{^ZU\n<+Zk86ּJcZwllm8jTn9rˊ IG+W!Ł@˥}d̲vղ꺶w"!g2rKVwxӅGyV|+gRI)LWBaի)[Ue [H ҁ4i1Q?I U8|EohsUDwĶU=Wpʫ?}UӾg"oNQGիrґaϔ_1#1@ "Fp,~Jq,8R=(޶vBϣ/Th0*]>F^o'|+>E:w j;6[2wWal**W>346G @0C乢N{5 20C[URZ PQHP27 ~*e;oX6s IT5i`yHAMwl˗;-2?>/hkN|Iwt0u#tX:sf?etުwwﱬ5k~Niշs ʦW rYEX!@Y[lnUg3gf%].9g թ\LM`lL)BČx eK uwOBUŶ 9qŽ+&ϧNp DBPho2&"95O]-ED 3HrRfG###@P՛߹z |PcBq熇p\6뒲l@vgjcD*0Fk[/x|u>Ir:ӴDJ`ˉc+JE(+l,.I@&A`3PSY,vmƤt@@9N]u~@@# |B%)sX\ x$N p pL.|pxXdZu`})Ah~ .>OkTI|BDk=8g0i|e7޸H*沖PQq̱i?9SiW/ Mj)e&C/BAh*T y5?cۋk*K1e8Opءx(|!X!JB@K=II)JDLBˢt:`PHU);0]q~l܈Ƌ/…hn(Nnۆ Ŵi(TNrd~rAr9" ax x@wW=E: $c4V8T2s( <Y#( UT@磣ƫcpulڄ 88|Pw,/ch^/̫`:m BlxY8JܹLsɓFww׎x+,z<')G}=s1M}}DP^͛j }}<7ߌ@۶%KP^~3,_@U6luw]wuh =LD (hkcGUشI.\﬚?"u V.{m4AUZZCV|kLKw}46|KIygړ&J$f3v׽ֈWћws63_F_NE˾GDןqF=tt#NrhKKkkK]܊V|6fMutc)}VwEMV4#`;5A0&ݍO\.nO:۪-=ҁ@עE= ~! jU4F^ٗj'"53g6ɖ%]."U^ޒ6[͞pe1eR7py}Ք;|LNg1޽@m.$eF u^X aYht,Upb=j8H (bb^^9o6Z:{bGA';5`pI}='BeALv-G [v䠯΀- 7i im;XzLܵK '=TxGvg'twtX"J7wh=zS1M Bb^ksN?_ߠ3a08eJN⠈fܛ W=FVʍڳ " n@~ C Fy*[2:ӏ* *9|NHcVr &Jq6=̔{}a~&u…~_\H\.{~Lt P-jk?KoB&i S8.G(Mʩ CBU ~2N9PARQ2>GcceeWTV};͛G^ղ܊?^Y7}ѵW8sf.F8|c2̄?b#p+`"1>߲'jWաBJhਉ5F&{:EQ"F"t<󿓕LouDʁovl\G8"āz.`PBBTJY+iB0@AFmo;ꁜgkڏKYXhزv.# Kdl$@R 8PZ@yR=r` :cFR\0a%mUՐgפ<Ϭ r YGo9Ow}9a6qҥeZFҘ,N OOGk Jq][Kp?1}BB((P6WbB0IXxBܱCvu)>r UW!磶Y\.O:mig&34Cu56mbO?y%0**f @?LFޡqT˒R`l ccPUHI3FBp챘5 D^`pܻAseu5~z*}4GөX~?瞻>x!47rΉ@>aj׮X$Bf'!ravY:}7vɔ͢1pz"Q|odI)7 Y&?<ܵCe##v(D%Ϝ.Dj&{e|U|a 5[K7u4V@`)I~)Er(^FQy;"rԖǟ` IDAT(mHNcpaD.gmssVe;ɡxU$˜JXvF|Zu1F|zGfLnUawoϢE*u/cމK ʷlMnTC]`}٪Բ-:$%>DRP#+R:M2E SH'lN_e1=½h>;w^&sJ&}#P w<|ic23G2{=Ier&4M鶸 eܳhnr[Um=3OVfEK T mB#ضD߲tN7_#B04b``у&GvWSlQPyh3ds2笮O;|Xi~hqtʤosw/ 2~@ai)vۺ_H5`ll܈Nߏd&eCjr_ $-yiCyKs,Iɤ[q Ujl̟Os s^Q9ӷCҊ*X^E%ϗ+v8S@f1Y-v\ҕʻ-;\6ND+)|LK ^'*ko*&ek[zG`Dwm ]kϝ+#׋nuSswlOIT8eCS0X:ZukDcd};w/|&a()b E꣮-Jk%r Z|;rQ,hX4 D2$V#3TԛfÁx6[yhkX>|+IӜSOOxXL%wWTl{ɴHA;,qyCgʘqRCwdx&|꼹k|K FL5@1\ XxZZrƈ}xk5wRY裯8λLy :xdDWpGz"qCYP#̑9_sCczע wQgW)fq6Μye~ͥKґk=7><\~>3_jmmfz|m/;iH`\ll-B78c|p y@=q0 ^`llr.DŽhclG~c p-\@cN.rKE^(0@+010Sʋ c K?@CЀp*Pz:`@ .1tidXLIeLceWVԡWha9ދ8Wxj%CNM1<'0òauu]$oY[2XO^ x=L6gt]Kl=;$u]Emm wpdjyyٯ~yr3C0</F2)Wd^Y[Z/reߤI zB KRbdB!BHp9/օ r}eeE[Bv-Dh`};?jް?_yԉ/ONt>m/[gj*/}ĐQcp3[**bUcKFcgT*Ӗ^20ڇZH|$gI\-ݜ RR247 *ة߳75---9kks]ps={cǞ(*k?V̞Of+VdK#9N.*QUK0}xQ4=FUÎr闝xFc#%[ }}@s&s[&c1P8pmC{!mO.*cӂfTe9'FH'(vG8w,_̖IXUoW+w9lkYa YA!@I)cƍ٨$HpF4@da;vc"3*|Uv(eϲHxkIo2BCu_Q~휐U~*qVVtB!47cRú3f+wy+M_Q"#8ԿʃFfh6{YUy9P+$z:&?m(fVSTUݳAJ@D.#vڵyNc)XwCJ1_JeT{joZSMa1=h%Pq(Ⱦl"S0hG>39 W?zշsH4q(!5<ݚ+Dr|{M[_^׷ihsu$w|~6A`u 6EgQ́GC:DWtҁ٬ƭ(f.eD}`>e!^xUg8P"M vl_-u{ݛ;vVJ@?Px&00@$,kMdi c97M 35ofP5k.?#-뗶 hn@/ 9K16!:+ M@!>i`r| 9:)ϵTu8`{o&EuΩ{fz{5FDPQ b\G$h .4npweaYzzs?j&}{}y晩:u~70 U\t'*pPqǭ՟uS7p׼yni)dWQ`%XTE%H06㹓hi>|EgBDyNtW,vsPJ$::R$҉\  ,^-o? @H/ *{&։4^1pmay&saxm_.e!%B/XQF/Sz=Yufn@cē86b1-UџOp,7^mnphkİ2$iD4mzmǃAc`08{v2Lx̛Ƹqz4z<J㨣p840=>ٙ, _|;Nپ͚>Nط4}48G^::(1Dt1;vR6jhLx\N+3CCز+Vo~ݾ} w0a, +V`&bJG97O+7ᲗpX^>hb1,^̡6Jp%Ơ(hmEu5\gM9li;vM]VW?c0 =x\ C 4{k]G3MM$(嗳SpxXS;f^{ É —_xWTDdu׮ na͛:1!LxDoi۫;V8~ϪY?]A:??O>M;Pܶm(eYng :G:d;c*E%cd[ ']!sz뷘"#R_֫yU^fG}{e͛SN+')uh3f5l* ͱc]=_X1{%nǕ11-nmI^3(8}bdDy"6k5c:q\{>=Es $9W"5s,L$(79+UIvo~fUx+s%DQ9 v!nW*#5Kew7?O E D/\wa1?ebyN:OOAdV$1)|BNwg`CDtr ޤQpۅ{JJ+ϛ`S =cp؎b;.#z{%ػ>"̞Ӭ'مZAtv\:G^ݢkIgEW.¸1+%sCA2vK9d9΋JJJ18?m,(88σ 2oP¢GfώVVxpzetO8]Ա獼\n/0qDeF"qHgg{$"N+UgҴc{Cor;k`{#n~]o rWSO6rRlsZP Mi1qOoF*Xcz̟BplYW?v,c b?PUQbBوZ{{y_ߊ 7mJ{Tz1" TCU6eͶA:z/޶M̸rC _^ގDj߰Ba, 0lײ3R7LPlH5}>Ʈht[(U@h&K0x5p G0l-, 5&}zu(//i{ 0  +պ8pd,_QT )G#"K Dxog2cu}qrR^FwN \&P\#<,J9Rb-bzՂ1dL؄O?<\+ = `p(lȏyӣ %95Ň12X^vp^wa ~Kma΄Oh֬.Zr #ji}9z4zd(+.:+V8՚m Ρi, EAi)֯ǙgoW%3}sieӾAUa0 0CոKPUVXH p8p`V}xIXVG~vsA AA~޽# W.Z3yZQQV^^kۭرd8m>EB!Ҙ1=N(a&)QZW^ԩw ug*kZZ+75O99H-س3=F2 À _|j聀>bX,eKQG1"Բe*q.^}u䓩MǴixI\O)%Z[駨Θ aUT xz2_n3ƞ:,enzc VDN.Р|/>! Xq_dÆɓk>/K)5Me׎ώd]6*3tvZL h'u0F7n?M yFeuLJ^\m^r\p7/U׳Ygvc4\XvmzVcΜ<|VV::RnLj4|Bw ?zsT0DGdPuD}tu6}}W7\SEoY zb i O;NM8gN[CP,"yMs-ZsW9 :g;I}sg +xV0;|MKng`?b Ü{idsrjjh\}TWkr#P$%`Rb̑ Ud"sdL7s;](azy(nؙ-mOPA Ja_leS"ixΆ:y62߀Ԯ΍K~6“bYF)Hܕ`7/R?6KϪFqԘi% MrBE5hf k۶wzya!!dWygLGe%}g\d0K 4Ú:c_ Q4f^P&M4/wӧj}*SQ 28(eٚ.`I Đ@lܟoG~-as04s f ^<O:2UskqGաLC 4 C&J2[T YXi̓l?Ƞ˘9B%!jnrcq xiZrOI: }`(.6u TR~8&LF70TPpo ^ӲHܹmrA.ӿxiQOHRUѐtb Ԣ1M\-+8ձkwX%`B(BP_ueAU2meAO^²;1(vh[*Øѳ-s͋`#{-P)L[ڞ~}M3Vc,v>?($+-uȺO-&Nܿlp մ𩅛[UPUhߟ]&W?H'_+Snå8Bʯ^zSOmL--˅YA>8pr Hp7؃ڟz9۷8oo,UXP^>Yq㷟8M|v<9IYπQ״e+[;r301mYH~[I~X-epH=3)Mxʳ^0h8,XR IDAT x8p$wX9Qmrۓw3#0(F~v ؗlq5R֙#??ifS|P̈r"8(W r>8s*eeYiwO]͎(O.aJ|g z`Rfz`+PH q $m@ Qݜy[2NGC@0-1l<}MVDY~+5 cM { ]y49jT0d 5 03M_gg:F쳱i?CC(*B[.eٹ\ߺukV<ȬW_eEENm-ʕrT<ɶY4JPR2uC]֮Ee:9\@4"3fqw=,fμ)CZkMu'ݧ(_vCJzfU˙mss^ùIgC眆*M %722PΧ 1dYZi!f,.}#) ,ba:d۶C$s7!ȀTl yUYΤC}α| EWy*XVDɪn+ 9#C,I.B `}e 8st|@'] tOJI(aҗrWJJye}>LdD6߾-UYDࠩiVK +o`P!Xh $.FWKgY/BAf\rXEc`ψoe~>~z஻-|{oe=-{m=h+NЁ۪[-37{F CingH!H1ypCf6[qwvp5+.|qӦ= GQASQq7vit{^: ?䄢RfnnNzdOR8@z4M9_rX_>NFoYqҘ1 +h!oC#x$<3?UG LxF~s=FzSkL߸o;/?昞N47g%˙街_Nh1ÀMe 4s&)xWwQG3 FȻ^"2u܁pRf^[8`A0Xѵnͮ&'عK9l0]xj":$j~QF j4-# ~l6"vU1^5KlG'@[oDOBFv|@_I#R7 8@fgwWvGC@[`LqU$/9 vw_4w`cL?c>Yo_+B72wy}} W)e[*xTrG4iCĿlN:Yo @AD _öZN9rƌ;lرCSƎ)8@f10p 6867_a'&_q ^?uŊ_v؂&!ƍTہE!O{4@ JQJUW^]{;cؒ{㏷~B!~FHe,۞#.u0iO\ɄG;IF Kضi+!bOT<0`#gpGV:٠(*jIF|5b{G @%wޕ *H4>[{};NФy w 1q90awp9mRb @LʻM4f+? xC (z)e`cYU؁V$ "x<ݖ"^kLM8cbDB9}DgH3T8vt7gU@m;NV'޻۔Y9hEqVw2"*,.T(in4%^*!Kڼ("pd22H ]Oy%M". @QֆݻSgԈ2 \.M=0,.NXhkC4A c^cTNC}=2 "n?8MC^4D"OCg"I:8#?YuvY'}'ݪ۶5B64!`--Gda!+/'B}=D_z ;v` v|>5PZZgZo6qlj*msx\5 8Cm-֬a@Q|c0PTDA(䒩?/NklT?pPζeq1 gZ%^CUöi1}4n ]4, acщ'jo55CB<=?l̜"0u"?, N4U$7ﮁ>ΥM/ˊڟ+g*Y渌}W‹Xn NP]:O;i}Tg'EƔ#7*}ٮa:F)4s.If{<lޥee,ϏF"DZE{fS\UC=flH*?`(ڏH)fr֏i,K3 ӗ${cgՅz(^H+P ZlRQlܣj $]"a TSnִ RR5i;E) O< 0 H募͞5.3?~| |C\ʾh[:lcR*]-_f"oT8ho7.-'e j#|m\0`X&YdeŋuήpƙfUo1ͤwu`P2I9=GW]yq38^^1ױ6dv7P(ؚ5UϞ34Hqi雛@#сRG]и%>TJ)(P3i'T*ZzkSjL9yjIriܾ}[SRmYMywIMi^}q.F ܶu矷1]2Ɣx=pm4m%쫮*1^PX8>^T8E"ٝ>ht?3䛀^Ȉ,KnDv7:UU9KocPAتbA.ʼc&:cu8w6$̞ŶwH`| eR"^ KET0ol< cTUf⿻⾃\_c7AQڸ%K9@0(l._]}QA.W1f}<\iŸ ζwf6(1L`M,QԎws0Aò$Ps?aXʠ{̙XY]ӣr)p*Ƙ(&q讻nUHv>`!F7o;NeDG{hjF>2@B@ 4"pw*bD\ 8`}@ P( =\ƍ}MBq^]ER.WYH%S6{ A@KHY&ĝMTF˹B|=0pam{H 'GF ;G`QP døѲfe0:p}c\(ah>+YŘFMYc 6s6K9$g|Iڥ8dXs 7mJ`LQ(=;4րsEZ=Dž'GabJYR^~ڵV4nxN}-}㏷þSC]ݻ]Wqk_mqEKj)sw^? ? x GP@focnx6SՉe<[:(I r嬀筏{b޵ǛWq f:tC>Ua"0*=ITXVJMptRjY&t_b׮"?13߹Hb*YUU^ t.RR*qip4:}:+,N5e DQy&9N%*j0j+"SNYcNm90ҫ^q O3go."H+ 9QnYwf.^ٻpIQɖ, %Wq`m5Rr T\LwFXDp0#~׃O<ݮkei I[+wowף V䁵g2|Y`X?; 2\ݑsF+FRI=Ǝ+r|n7vG0n[c-}}etwvo2E! 0ee^T$Ҋ+RY`hwQ+'Tղ,a*T)!uvf,- ΜiU 8k?oN?[_w{@ h?5 F[qYQѾY sa>H3T*"LcRv&g[֏:)e1%' )C?AQRqd^hD7a\Vi28@ۜG֌XY~w'2XQK/YI?$k~Xa2嚡VYr6^wL*م!RlhV\ݷ>yۚp+W on]p."iv&<⩧wЛC9n9&pAg'x4t  l`BF.}i\d]ǀw*>>!.55--Dx9w8!`' \4CN, *Dsa0D{,U8D].åڇ?eK0Sy@/PF2oGHO73h4P4i2rQR~TER6۔!Hq6hR%\?*|GLe|,MeRRs+<*ǴiJ]-![7OE+ۿ"ƥχ /aų(/:"tt}>**щ{ӵB}5)f ʆv8f3Ϧ[p!q!K/esAC2bhoNJuEV|gFݛ3Ɨ~6mp|S`;?;PUtS@4 ǁsht4\b gO+C!d ׫]K\׬F) RX}?jƌDmC2'yAUB}Լf۴gt/EB ?b)D4i6lRJT4N2ph].y_VTsd ",Nd`-Ҍ4qֻȿĈJ\&O,UF+ L;SP2bؚ}"7Aҵ bgHX]RbicJE5,-K+,cn׵o;3)'}YÀ)6gnƅ3vU'LJ0J@u0~U$zޞjR: q^gAUgr0 JEo )@:w.FymUpJ__ߞ2tPL4Խ/wֶWr훫(F% 7 IDAT0xl(2s4F9T}ɤuŋu5O0e?`)绉"=W hp_~/<[gD??ֽ֬* kk3m-8sGb'?q**^$8O/gUn籊22z27ug R1EQ$cYM OQal }vQn1ƹ$iL`-n.tb~KCـ‰ x̠p P>PdriuC?V$./) \Y>ƈsG"erɭi=g:gbH9 sƯXέ^MBP &X[tguX]GDssѨ:jTI,:u`ڮN<5TT ¡ba?KRJ((pR\s6yŞlhp*W};::ގ**H + TR"$=}:aSt#,YbTU!Exƍm6.

#\UY:ֿqV Hn<%o$$wK~Dz\ j(cY rr}7K]*0HZMpCgaP90f6k?KOPS5RRX^\ɤ07ܾ9ŝۄg qRePH(jk-C,qfc4`98w,*e6iivw\5;ㇰ %$$rIM1=Zr0T)Mhl S%'͙_Q"k&mT=JLz1F/̙H*;߆{rCʚƦ1c'afs;irT3Y*睇1O鮩r_3,0.w&x4lru1^~y?_5NA3t:=h"\A[S $9WFo_{TQ(v0MS @`@ AbH2e(讻<4m9OKYDdn@}#DeVEU16=Lu#9HtӶi3eCG@nAr@/Mtp3uLK|aaw+'}@ 0 t=XȹOb]#8@ E< \S< Hwh@QNUBlPcb q48 QRp~P`!@/Q1fh/4ꀟ3VݖyGndsqШQqǹֆNS 40 ׯ"P;cH a  uW#ADVq(2Ѐע؃Lo6Dםl٫yK@G5̄F&bD?N6t@ܻJ\}>k`?fڗm \qQtFp M/]!u# }? ~Lct44``iqK/{WdW}ǻvm~jksM '`?ى_fӦ)甖N^lmEc#": ۶ cBHсp\^Ura~ 48d`c>* 3MqGϧD,Vk@lxwp$%^*PzzG?/ ۷ ]ʬo0T<z hjjmlۆ7ĤI9|>zy Fq1KX}=w5t~B!33f`肝'zz(dYǜM;v*-\|Hp !N|4Dڢ !c4XLE&ߔ&yo_c~J%]pHĴie ;; KF'\_жjW9itm5M$7TnYSZwofZB _`aqZ:n_iP2}墩I45o"fPUKMicgc=LՇIB m]8 v^+A4HmdjOgxI 6 M𜘭uWF~䅰o /~+)9jj>r4W-o Fw\}Β`.E5PBS1hli?n» \Qz],x{RyD|ژm.Q$h=rrL[x,ޡ6ܻ~|k4M8nOP몪!%%׮Ys~q˗k-[bA办4{n|;`n0 >ҴRޙL]Lͩ\`AUp˶k9I 喔ޘ5| $ *v 2i%{}Lrf:uLUY.+;:ؚ5ɥ Up7$|7׮Z9s,yIJEs.쫫1*T^]GgU ''xUYZz{rKOڳ4Hn hG>ر˒D6:HB a۰yD Vv]w,MSs|T^2#dL2abْ]wȐ´b Zί\,P\CAQiZ٭jeeYaxbG\Od3{^l i);5eFuu݇2@rj°lR>J\5 nϗ#ŕ]j0(o>{νb}{c6w0 ?1qX"N#r$1Wz?qJAK\SUiSh`L4@S|V>пfX8BX ?bPU.-.9VFʮ?ɭ&髢щ^R)'s16KU vEXL:^.]?eh(BCPEߧm]+@WD ՘H:g Os懊r D9" ;(fW#hp/pHe͘nBxӉ8P h"@ <t)5bBܝ0 hEYel?C*@ڀp \Z[{UG"R7cuأP ap7(p6(l#2C=Bx~eh)Di3~&>F$-:5GtP4])1QF8Դ 3RcT#!@޶2v-cQ 8s[IfBz/[MKZZ7( 8  RiPa  ` 3~njKjDmW`J .0+6]*]%m Wz֯pqƀ0S[>_Ǻqy(.FQ{bZs'P7pxaBXMMEK7z{Ra"~ByS/,Q(_|ѲjUvf`V~cWYYdνc~44`XiP_˂}4N?VaT44 ܿqKWsgcn|1d6~X>1Duv6mB$!F ơUmbi7o SOcTSαp!xkFo/ f5jZZp=חxYEaX0\S+!l·0Y<8MìYGOyED_jjr12S\o 'DNCG'{_LbNzHY>bhK 4# W=^zѫ'z<soܒqVNi+QS&Ϊ Y)T<ܣlָo]62QTukMk!p#3.0VFlETH0)S[E%uuAӅ#%<>ć"a@jik֨?V~Y̘UehmEu0cB? :^}Uǭ`#Ҵ-7qISy|/ƟjtVabIZ`Hx!P$b[pHRZa>1sPqP;$A>X <T3ÀE4PcUlL`d㬪 z.<%uFշ-^,LޱfMNU)c$]tkhQuv%3~O48nlcӶ$uxeWUq"?Qq4ڱmF|J&H%sv+g/p Re9Lf̰6n:RB!6q@\b< \N1ɡW?'矗9ߏϣc3 ?C{+֮ Ҡ}x1smG͛_S,yzjkSF?;2Ul:Q\::M*%LP kGm5S 5յBH}:ZRrΥesoTڝܼ5sf%AQi /KI]3GI'Ȳ,413g'vԥ,ͻ{W3vXc(T#'ojk۷]۞ȘFƞrjͨQ]--~YVE M4h) Dp>QҬ(篔rH'1#V`` )/:_|/~n:`,$견I"Df9 T:c'%c>JNhtMsyp}y&90 ہ౶ 7ry a. p- U#B%d?v]4b t7`3L7= 0@`ѹlv383s 4͇2?hړey[(D*UeN pW4zn*t]2v;Y!UemHa$Q:Y68/tkO P Uvcp%aut AN̷M&EAVYTLFFklU eA<N `:A⤪ d,x l;8aBO?cYD()a3g`VU|R'>r.0==7N92!b֎̚i:fL㥗X2Eݬ=c4<$MCu5.ěo=lv…x-l0L1hoر"oKK"NX,<0i9 i>Օy?\_c#MC[=&MR_~پѣEE%CϑGQRFƍ>֩N :AD0g6li>a)qŽ_ғ}}NUs!v8Gk+**܌7߄H %%LE,A@>F?p,]SN޽pQ(8b`Y11<,+駣fxY:7g͛\J` IDAT2ͬτ@"a󂈲Y E]i{nEssyտI/U0_M60T()J2{+QcܶԯPsqu.KGO?B8JdY帿|2A߹Flh0y,F+=oww+]ّ36*3`=~߉FɈk ms;o'c ݵe򆴳.>63]WAw"|'Dch bq,} Xf^)N-QłN%>ބREIq)U]G(tZ* lvn[kB" I/N3Jm;)k6$UX^3 {NCxr1iQ'^xhTHi.g:8ӃY3g@(ćRA2`3UnEަSbIe&3P֮$B!N9{v߲eBJiӃsTG28kkyMM2#8CVo%B1e)Dn3$M!Ѹx%\IV*d~u WBcQg5KqN}Ԏ,b?< #\ĹU lQ.B@y< lq$PU7}dwwVpr+8$+ +v6eV7s&wݾbZ# ,<4+ ǼŘ1i:}}Z C-"R[;pS،hTHi؎ NC\CmYz8 ІR$~)Y=[<2R0oTJ۾;x`mw:yaj A\aU}eR6u=8k>x?~ّ*+bdry*.CဃêP}>^YgL ִ !\9{M cs]m:0~kURt9_a8˱׋iq1@qXJ:<>:MspM5gNtwDA `Jw8-]zPT1V]9Nd oy"1B pT!\Hm!K4.ٟ]::g1AEÇnSw0ser9)eb/U-P_F'zU#@q~mn۶6lH)7[ .Dhp8>D$8c}}K\[++DYXf \D`C(MGK+*+.TW#BqD{; 4xKP--|2FLBhmcĒUU` t?ˉbΣ)y2'{Q)ZAyK>jՒ 32MƘtۋL!wrv2r_rV^+* e{.ώ7PjUwG~ϞS͛YQ]z)z z,^ JJr9hnDN?SJ[Z2<^R˔)Je=7TS ű G~Xϴѣ'F \ϡ(gnU_=kl~3"rahV $WT)SP__Hs\9p9Vq1[/ް,d\UXy9!Bp i&s RPc\.!Ԅi T #^^U" B!bƬY_)d^"~of )qWgG?j}zWlիV(Yq/٬Lzec*,Jtݰ:}X>mۦJG mo:þz~n>zy}?c{|jݛV;DZ>aKi'I`"1xoY>j\6kO@@~kT= /n?zΨ\锈A49?IV5F2J^>$JT4pU #?Gڈks`֭TWG#c;ʒc ƌ8^*3M!&Y6gE`YI>Ay.<#a.1PiiO&Sfy(PB`S`<@m0aߏM6u*Da9`h{@0.*+_i[%[|'|1ce#a_˒e: t~ƔY]q"PH6 n8:qEHO\vUUa#~y:;_:qV7Ԯ (~*Q(vyyfWfװCI`ݎIZMl$mR"Q9m{;K Ovi*N+\Nrb͝;wSu5Զ(2!5fpt'ƣC |m۶uWiD&}aۇ AB"E&feWuLJAMW7$xσca߾ʂ8}  m@_>o1`3vnr`^V&)P 'benY>d[q4†;8(&*&v9h)ѕx@* ; 9PW }|![);j's_M͢x<+" x+`p"p'Pr]@at.5vK?; (j` |~ bEoo.,Y4z|s E$ 2se.E 44 (U5k4u*c·F0nDW00 $e)0,۫>8{~vWUUX3'*IGũ?a!x\|!t6^l/l ۶ݷ0B% --XNoO=*//\6)'iȖ.`=߇@ie07-qn}']7Vp_C5ܼvkG0( 3.x.?PUR~?sĬYx]st7 ~ؼJU0qWB3.i6Svc`%%*=iر'#E"1vua]˷oW,ON${y1yշ6ݺNȎ U,+C}=alۖ=H2;==PUr^n<M] Nرg?~ϧqdu{0ylڄtwq,X_\x3gBQ=(l )%cpy4e&D.uj^?3%%{.P\!3X8̢Q6j64䘦PR( &NSO/H;iHٓOҌA>O?}Vfq2q<5k0v,zzP^)+jqqY>ߪ(_/3ΝM7@ B \|N-.YUS8#I\~{o1[I?m?zOe!dVrT]َON'==mluVTLCe>knp1!'$w)dP?y˼c"%XbL* >eRP__o`Pxn$GĊ]VCfY .d\lXUm*4lƾ\ W21%>,gD^c2Ru_Гr |xk3fcOj8Qvh+VDFPB6xVʓUMK٩lGe4wѡ t WUc缢.>0T$}ݥ͜` |1rh.AMXB0t@"z @UiyKRxsG+vysW7fiR߶C|WPK|}MFm|-O_Ϡ7i95kP(X?Pʹ5~ſH%YC'|6~ t9&F!/Е$_ 2L)w/S^Nl,/FeR:mm5krgYi3M^gB"گ![9q-(+tH1Џ*?+G93B Ⴙ8B,BR_^O c6QG"ë/cg"?\jC w/ ^wc~YZpT]kN9kJWʚ A<IX`5U9Ҷit˾mGܗ8ޱ]%~)xLjjEs#щ:y;pKxIJ_$ $WV~z|ؠpi fݏYxsnLdlf,AU}iz+;K/ge# 9$%R^]of/هr+2@[>Pc@1 @|@^!]?K[Z4">vSGUǪKoO>`"CӖr۾ (vߺzƧnVFh ,H^GcK4mm>?Lr@ xBLbj`iAW %@t`P" 1h8`#&+*I p#pp xMD4{4P,)Dazh'] |` I4H5 +Dc,|~矟=O> p14J 0 7($ |ZԀP,olFe>Ԏɔf3UNbcgAۥ_9D{>#p\&֭՘!<(ڊH%lrP?wݷws57O޻1c+VOdcۋZtvs:ZZPZ:Fl gҨQƪo_1sWZkǃGO\q:;@J)b0 oGerIΞ=_vۊR^Yi(WӴihh@w7Ap%ԄSl̡pXzT^xAoogu֝w^=gΉ\45i==G!RUP^=zϞOz~KU a6W]gXB-.l[ND"PU.͘1jKK֭s-{Ü 0{6^{ /aYB1E2ՍRUUuX ?QJ+pv}v?v'są޽&jڕQǝRڽ io\q1 mm{**]>s*ai*'!cIcK^z);cSTdڷNϿdgÕ?Tj6VzL8cI;gOk>G*p^*9.c&Wq>GYNcR[~^V*nIcFo}@RZFLE>c|Ֆs{#M6g r52ߖ]2Qs^VUU|Xf-xj5[pR{2X&C`pDJ?eWw.A}=(CS+y6$Ȗ 튞;cjQXc))A$9PXK&-MeCWt0g _^ZӜk PSt3}$OX8`E1slh`0gu4{6lxbT;c/)⬉|ų`X$9p^_x.V,+UW?TR\(݇T5@bmJg)EǞ hjQ sWUU;UUaP׬ɞqFM6V* ݲ5rȰ{j\"jܭi>KWAYHl|40 2~h)G2 h4pd3eeUW!eж|#oQxmV Y ?s+DǏO@7Pyiu:cu`@SO=qHYOXP295pC 1dSfDmP3Vȫ\B􄪎:/Thi 'f0OQ :9kld3g:2JJmEA1ce'6^YqE\{q4$AV<\f k Y磬Lq&\:GM1[QYQL ={GQ] {'Od(6@(~p$l0 BD"dlq:Tս|y}[zYU}sgoBٲe`Ni%b?Ȁp#8g`QzzFwTc,qY` j IDAT`۷:nRϗ?f͉E 繪BrrۤvN{{~n5% Vp~뤦M_I5rܹX.n[ >k*`ʿiQHqL&Te୙^]787FFDExK 8eDE޾hdU;q~')e)P^gCճfulR%π눎,J.V*l P#"H8_lٍ7ڽawd9#nz?:V{Z4S@t +5oa%!.VjW2#ou9^k}ͦy:cˉ.j  J \Jt pm@7pc18 ؀Q\@?~ uN'@8Ƥr1˺SEPtˁpPHQ:}m-v'^@S`)8S;V~78SO#;\\ M $PQR?B(DS@GIsNANxwq$z+DJHQ\ex|1w&G uSӀwC[;D[v!0qxA 0ua  Y[hٜ9:K͝ !P(/` g¬YhleqlgXg2Ιi^ik,\8j$qxMA"*)3o^54LJq94I8ܼyڏ~׿o}EveEɌX [ )q⋘3n&EWz MM2.JaCv׮wߥN--vfkaG&:X,"'+@eeH$d"h().ZZX:M9 Rs3b}%^x!oΉ%ڪUTM##!.8P&c'{owb--=r\0XעuAA{;P(࣏g3<-m|`hPH$'75 b*PqV&)iwb{_|qwG?lfüEP(HlhQ+/QMy0Y DPԣ\:lo8OQiO4nrD0wUW>)hPanyI͚E/O8) RHIz)4@e9-j`! =,v.ITgŕᰇw:tӶñذǓ;XqYqe7M@E洶V-Z8]]O>;LIQ诋?}NʵhDqР6OZ # 10}2>9&ش/4MK^C&MbЃRhl(qNeaZa&JUJh1Υ-Dm{bCƥt#ĘP ĤX]9z"$㐩+0^|:2ʒ8g΃8ܚ6\.Sx5xLpBK܉AyTGa0V!Rs! 2#o p¨$8͘ԳϲKj mo\)b\1Dz"WT'[^ܷ~k"G]B$u\n*cy D J T$ U%c ;˺(D"l#@cFm'nZ h>~ YPkk(v͚3N}6o 龁WmUGi5rUY\P~}㺻5mq"LV!#j>H,2) L~ nWjA@#@8ЀC0 X@(9h20!p= Y s1->H9 5$bCh>귿d`V{P(P dĶ3Aۮgw->~_jy>?[8gPrMH [`(H9!ſjjpx]G<L*i%9㠯weq8O&ik?'|) 2PM$~: fq8lB{d~ji6mWUU:笪Kܔ:QR>|6q̘㏇]Gg'V̙X=^46n.Z+g<\X},/g粒s0܌ if꫰m< ji)~d~E+>--vX>uvEi9I! pᨮnق8hoGSòPY ގFZs,qAÅ@[{M+j\C̞-L ' GHkײ ]G٬z2[׿}8A5~<9zkW >8_˯5?0HXw|;mPns`:-cx<~YGSZղYKBaqV՟w ]O|f7m^^RR^.kj|;Y}OKdy49E1 !n'L?A<=C!gP"ZY +Y&㫫kSq*ZaKS#l6;=M^ҕ#a)6[\Q6**5:/J38Wۡ_O&ߑ&rl+>%KHyE*wYȾLx-u<8 R= y*!ZyNU(_8ݏ>zfoBjm!abDIml B"S*,q̘DK , $ܳMn@be}ZO'U{dy?ZNBe%|>JxM>,ۂb=;k'S?dl7ݡB2MFOs0 Ḉr ڥiL:**ibY)W.}b=`[(* t<:ϒ&MԙL'۱~ZC̕ȵAf÷N7%+ȾGmj-97 7CN2?^9N!6QqDee P}}B;FH3TUN`/gHx&O'ɝnqoURR_ RpMmU?R`R:+K%7 bO(T>1iB(D,saDCިwf#{ںd8u8(/q k kWOO8m/+JC3.C}#@Ph%K}^adʱIqy26 A%Iqę' V2G߇G1_Nq޹~} sYPB\Jl?.r3r@sZ[ jpU!,)1Q>_$vS!^ѴR^ 30}蠺ŋ† i֮TJ+/HKz:j?^^.;:R˗g-k&=ϞV$n,l:*jPv!Ҝ1W㬳F JJ܌Y?btd2G `:~UBx[qyhhqݍ^╕t|>. Gonn84 t&MB]-v石9sㄝ;K'k׎ŋܹ.D[:/']'h0'o@ (Uݝw;RDE׶2{nJG ϶$sr' ]L"] \'G‹ύy#%%_.=w \7 9tNԴ6Zώ:̜.&3Uɞ@\1L6oN!B^;oyAcn1rcizzڪQ 3b%˪dVpFχN#fvPYI֠i)?0tyIejT*Z!OFi eH1ӲА|xqPTC1i9Æ?`*@8?wdԻ(R :7ukFEKpd`Wg_|Q|A-^;n Z e: Hb8%tHRSTf̮y^^YY14ն /f<GY%D|XpLFyb"ozC*:(/d 3zN9?qS%+ 娚 2mP9KXu3#ER QX͎,2Mj@8 cM)sV5Ui.prWv&Ej&;_P{eP1,t ljI>M{"{͛>캵kCPAm{Cd*DJW,e3;q5'˲t]BxU* ݴ~(T$*tD-MD"ӧ_soZy˥1Y(`+ !]ϩ4 qwjuriES{a( j Թ\7 S z_QQ?j.6lЁr L L ^۾*!p4l`708hmc1 #829܀ 5@?Qc:՜ hb^I-up+e =JM,~b p>p Uv ?'X/5m9TEPLL@mc~,و| (ώ*#IƚLC:? (22be)&&@`k>?4\S)(eJYD.fR&/{7 !Br\mJy Et)~Rhjꗗ#B: 6/q5()RP7%{{JJD äI{/`H..Yzzr%;oTr<44 G>]G}=N>/L[࣏qZK ,JHY_dr0F@JK"MkPeeC}4 z{a0 pQG 88@ĉ<2t]9'cmRSi)\q ոBs6wee]w={]7tpkkoi)z͊ _:+=dkkDQq P<˧]wh]K*a k^]7_GDg-;v24A󭭵GoEBm vzHY#Z%KXY# \ IDATقd8s]}W]]a Sg'4uΘH$ ;MJ%mdr65Q8[:NMuVM"ޝL­SY> *MzG2ȃiI+(§C[ 4uvn۟xy`!nsd39a0h){4o." Ya{nO?08JI%|H5(:a2wb+V|:?=X|(!U-DzwxGy[.9uR9L&5δp } ˅x\rV&QZ/p}jIoTa7~5Έxc#~c`A a7RF\;P*/ G\1֗{ =TUH~jww A.tf[暚i2)՞=e٬꫉.5WVL @?Ѐ2tc\+t#YҰ'] P֍z}<(\лkꆴ'ܨ PEiNΘG0&()Is fZʤ#qDt7ϵqjk+v=ۭ9!y\PEF&- ca*s% !c6 ;8/BE2\.$s]4ǑIDvK cqѤ!4m3GD=_qo.[K R\u dGK=ZEL@Goca8,ى@쨭sKr,F$Mk+OZ1Ŝ+EO-?_3#~iim###̡5,ߐ۹\15<]5zwHQ~gse떊  WaxX2f l6bݙLGFcijӔP$p<؈aM0ϼpxM,V8Eczpx hk.Q*Oz{Z)DD^@4`OP/˅@3p;`Q`-Q/#h.Rq` \ %JhQcŊB.Pj7p3  XThf?DcELۀf={+ 23VU4@z  p-BZr1@__ k. )eu2TBH!xQl&]H#CB}=.8M E, Āyda&nHڤa%odw0t4c.Xԏ| }݆ 3@LS>p Dizb(9, "1T0P_'`ޫIɶm^UVJ)T4m~:`Amk礓֬Yif$mduRGعnVQ݇:䪪*q5XwwvL[c)i`_y."=z!H&QVDk+^}}~%%K8GE0ݜs>zj?[VVQgWk4:f@>ǕWbQ͛~=.G0|{z̟/$cFGǞxJ$@ AE8CJ1.go {?yxs3^}5u6׮_ 3M1|ut#&=ܹk׾ip]C w n C?YLn2bp(:n\RC,E7LeN /~LEp\n$#>ɺ\3/ =fZ0I8@)S4aeFH14[Hդ'h@Yj[ %MK Q( ipXzkr "}c7&ANv>K/oV::a%3yaYCPP B3Y,8K &8ʙ;Ƕ;*PD577ێ6NtƸ UgsL'a 4\pXuvc$0nJ _Mb7>Ύua rsCXRUUid$r4 7Vm|.[xa,q&,>[}cY{՟/>7^_/pz8}pn"╕ ]8LQ]ӭ4g͖<MǁP{wgrN: ֠hd%4IY*zH逋^|̥-d9H1*B?= "0e Ƒ%%Rli$`)RY6+V˸KpȰ`6RL#r5𫡡*`N~D29|tgx[FDA֑ӋTF!mۖE.ƈQ1 BP<ʠ48ex2 \˚WSDPVYyϲeׅB ߁n7݌eqT6ANJtՅ[{/(Tvg\5c4Ir+ygo޵+K.NW֙Jvw}U mu~x)8WÄm?b̤j}A`Ywj[n'-s]v/zu@/)1++/O$BcM?޻bǹXӪRDFvΝJQxHQ X/ut0O K#ė/tƍ?`׮Jq@. csW\p`"ND#U_Zz}hV`8 xhb%:gKH.X x [.`[뀋he8 E ?9O{ν`S@e1ǩ>1 LJ[mL:Vb&c6Jg7WVlvA+$D@ 07Caƾp_q~RSP$`X D+,")\BJ#Z\vd)=fPΠD p".H3 -(3NM۫1<Nq!2x<1g6zGDžUP`]V?%bUrƊd64TxBkɒN8SO=m` 5i68M DKӠmA)1:4 kkl*+/o_R|UUCCp"GDD0s&^}U.YBۛ=B$#ފT B|x9kΜH1e4n !!߷O}, MCm-fD B88 ,k **/yq .8Rj6+To/= gr Q,CבN#cca,BJ<N; dLۗjb30o,qF?@g'jjF@0oK0qm.nPˉ'Gu5V@0H.pY(S~x(CGaH ]gEQ; Xn#uk+Rf2q8}+\qu. qU+ [\ǺW7Xn$93M)%i'?+U P }P31mzT\f㝲#@.gKE&g-.қ䫻|[+dM̒-Ѕ}[%?H͟{wOMB_oUB ]Qy<ŶB}+`ʱ ?lW?o1ۛt`E5}\h*LbPk؀_ ~`Lm72@ ``@cT\%SJض'38wm<`f{Yi7ͭ*7?EMRCOc9,`SV@[ʕ3 +V5\KKNڛ,zbOTxzԇJXLW8.zz / Qq{V/+ lͯ04 Dj(ߙɃsUmUia(eeN TWC f;00d 跿Eu%4YtPV%Kذ}%稉9 X6f%t};z'OhGlAoUW 0~U>5x^/DWW~ݺ*εvWt 9L(gUyHs;e%kki~nWQ{X4 (i:+,33xhn$zz(AyK]q8,6:;UCame8vkz,6@M ;iдWu{ K24_~=,j]()aD! 頝OzD+g,-D@ԌyyW3W}}M=Sw aT VRt4u,!p"{{%fͮB03 v ^{=} E$ٗve-V0t15.2SܦKOļ=]n+۫< M@>[ƩA?ؒɹA1i^{ɟ]ue?ݳGI2JQ_3+d`[/cxV¼yseA^fzz3uCPR!0r}dm*|L( 02K2`t36dr &H?p \OG<.F݌;mok0yk:d4)R uD@pmg+ c8@ץe=_8UF1MJNg^* 1!Ӏ,[@xXdB<:8xWiE9Kno<1 ʘM$P]@K1`c/`1;Dyal!4"/W  0Lx a=*u}WF.ި$@L .T%tSBvM @ @bcSm0 `:`m.͌FgV{ǒ89u>{/h Wح0#J$GxQSHBAtVKPْt`nj686B1:'chhk{j %f  *j0! @bٍ*pUgɷn%EEE4IֆDZ׶` &LpC}GG;m"q,Ia\{桁ܼyN[[Cy"HT~?TD,HLa*^6Rmv𨣂-Lߏ+1i:;{7::ߣ dĂ((zdE2l42ũl~AqE3r Ai2&㪫Da!^|122F\p6mB tzzQ\ " =KX}']F,2::m,+o6DK$O* A4͜y8!dAI׽!ޞoi9;;+q"O2 >3w?aY8GpmEcr±#}b3JK}VcDcCj2)e82uS4،s]ղLE Yy9۹ۯfTy~8'rI8%X(c\wWsϳ`ھ8%!EuLN20%qkf> œwV۲tjf_jڳWjQy*-Y qasfTUPi&<) c8 LH^G @(,ɶXٶ\O񙱘]TIB'YN0{ !*D:rC ~? AV.ŸɜAK0A0Ά)Lmޜ;c3ڃsUru sJxpaegzKAAmlv_/q/,-wR*]ur)H– 1>t+!qccQ7Ag2&Zv}}ϩjqx]i6GbQZiOULPC`>[Dtw#ii$$irO8Gd򝛫]3'A]O L$!IIǟKaM&a%Serj\VN@MV 4P(GY-4*H8{jkywp(c:gBxMgQ^@U3{iϛꚆ#e0&9NUԿ3G$039^F2:dCIgz}>HpU Txž=hhhxsFݮ?;(H\#!G?lΛt'OO=U u*T%q# ECC&3Heqyiai>h oWELW2kxz&3cĬ-!|W+'5S\WZǏ\W4U@fD a ~4+x?p!n.s? pd2 IDATa@\]@308&ׄKvk4!^0E'773ƺGg/5w /'yY!'*L849@)PZ 1w kX( a.1j㠯{Iq|2E!TLZTD>hs&]HzUgp ˰fR@?~V ƀB%w֭ 'd\~LZ857K,CqQB/[&o&FG|I 55i8cө皦ٶYx(uTZ (cuX6lՙ3~āĉ,c.BPW/GK [\w>mْ[&! /sq0M gpi9##PU1:G…ؾ? vylb1 Gp8T0b|6mŠ:;R|]#Sc<˩e&^pht, ,)Au5Z[!X"Ʈ]?nemۆf&Tsfd?iQ\{7$ܿ`$][tY@~Iߤyj@Җ )ZuS+,p_Yr5-[U l_8e e ;eeB;.5)s Bww#EW tyy@|(` Ud "njz\  aH,oS.^i$&}}3L }<[ Vtl@aIšdvZ^P6,-ͷ]׬wJBBklvchP(!l10& SـHVw39MH$(: rf(hUc H!# !0s(l9Uhd0jA@_7Zd\pՁPX8QԮdnsQq1IQyS#_0ڶ*άƸ&ْWYȬBmX˒R%$|%LIw;|^fj>_{ `0a-'xEOs`MαSBr?77#e5 B*$N>az-+X2Cy +pWWLHn +,لɐd @sHVg2$d0Jq e4%LU?͝~ɲ,9G{Z%KPWUχ^<;޹񆞀sdJdmm6QdɜV˚cmxԯ,0"D鸫"g`EFFN?x%"ƍ(/GY͞M3gdwTn;t3:d?>_ث*iəUU7l&dFHU>wn$]݌1_¶ma#|&2)<~+V\fGe~$ r'U]$˲,豬Q2Y4}zaAA *nc,F,v=Q磌KJR؉BT"GG,K\d"AXBjK-f{ۀ[ `?Xy,'M2BpuaLrƦOd2ߞRSLem/>b@ | 4$MTMc,Gx >B1i55NQ)o={ ǑhBjlea~e w_7n4.rظ5k̑]74{ZϷ+*--XiTUE`q߯.\}W;\2I'qXMMiع^P,~?ٸn\t.E"Bw7~C0(F4 ǁ!DY C1iTwމ1's%}dΙonV--CUQYNe[.TUAQqɨ#5tvWQZ:[oapD[o믳9sO>s}te&{/`Y4 xp5p--B%Kۋ?ǃݻ1}:B!2`{H[TVVOc=*\:둂 ^z%ĉw+ԉ83 _OS:U;|E 9sNzY~%7sW\7ߤ۹+Ӓڱ W\?ͪ,dO*io~0[lS'F%%\QXw7޾6BGV_MޯjkurKlڎx\s'ATITƀQ|eN]=(c55AD Hw(XT~}'_5]bs\לN ?%{o$6O=KΣz0`K6FIAPP$JSwcc1Fy|;>mi_B :3y-.-IF_{bzPĊ \;h팹%>/db0;,k/vC,sɴiSvd|>[B- [w~ x2dnz|mO2 m6hhiYWclT!Yde2X&G{Gkjc1餋TGpS_'WnyNMM0MW^Յ8(J75J8#$+caH ӓgZ1IUXg'bE,]T~^kgPCM!U7(~?f$o/^d5,]P$ß=ettY00)?n_w] PH۶>Z]MBwp<I4z饾Yo" 1ZGW̓atԍZߏ\q#D'MBW'ABM 3M Ra!JJ@U B!+!I,/W6yrWϝk3FڀGXvNKado/Q2y| _C6 B29P0D⿼mn#WLiFbRRŽ:J<<͞>y硱b%%H&Ǩ%Y  'k1<\<+ӗ"|/ػWڵ :; |2Nb<駬KrfY._ h.EQc4lf]%yÈkŋtGaev㆝JF|fy74|8GŤI8\vZ.'Z[O?Ju̖&nQ~t'LTU?q1矔UW}_wvȒ~W8雹6ɌoJiYVM?DKөSBUNix!nשּׂ)j.<PRnə6ޞ^9CePu c|P@)5SR%d+q"Hmwˆql,*[` >Ccxᮡ[u+ ٳ] J"K.C`DWlڔmNN)-gIF^䓯, tι?~}y2y7 8OqIk֮Rmϩqݺ9sL7ץ_ysiwx1AN:앎b0}rETڶ-K 8ug*a_-XPXqˆ ϮY=htfA˿uۗE"z K-0cGN{D̶G##3"ĿNV,;JԧK۾SUI/lXutR@,! 5D0v>{ǩ'R 57s" ='=55fYqjlB].q챲;+݋HdLF=sυ,nx}ahSx ̟&0|T͞M7;reEE}}L\Uӟb|N9= vqx:\µt.!#/8k&̛9; ԄH3EQ#s^5vM?-áp*=r-Z[n? |: ` !K,[r]8N{{eEU%)u>^ݻv[(UJ#;u޲e_uYru˲>ܳ.>we׾w{mY=-Vqգ\0B H&CU]Wa;kOjTi:k0ubjn+*!i=tBTF` 9(sW[&%,kѳ/z8AjnR^`v>d!C=է4ɲx7ɭםq#V: `1rY-|;e[F:D@6k2r$d`, 0mPYy]#H.)tLkDr^]}%ǚf}}6` r]㍍ΝC'XZT5JJ@cšc݌^'R #YRm,ƚ!ii"kVeMRڏs_1;^FHҠ "ӁpJf@~ekNlGP2A63~Z/oF<.fJp+Xų B.}R>=6B--O)2۞&c IDATCELQUw>fZv$/r]fs924fĕjB0(п8IJ Y`Ŋ _5ɚK:Kkb2p8©@gSj]zO+ʲ\RQޞ|_ZĵV}bxYU#_iڊΝNH>d{Ē%Y$&Mb\2G֯ߵhM듞sΦF u8t@Y-7޸ Xv͞DvգcQgތGY>}Ϟ=;Fۄ8Une);LU6͆@#hf*} q3(t˚aY9 }%Eg&Bܛ\Www:}vm>R$%I%%v_PUuw 1 J'-Qtz4 ~.@YQoǎy@U[B`,eI@aǎSKd:sD݅w _|9w-@.~1`-!< xЁ!`,/嬪(3 +@).-hb11 Q+ Q`-0 x(*| lD1N%4Iˊ9` ?tЀ 56EYv."2!Ɲ/Brf`@26⧉UDs` +rM)(fhV~C@=9ɱ$QW#jS$ /:E[8?Re(՞h~vCV4ǡ@pGFߐ;" *t)9؁.x:]Xm-fIk+"ލ!Cd_%%%h> ݘ[Z'$Xcض [J_%ԩ6(vKKUqqyooD0 J$Pܶht!/` k…c PVݻ1w.ǍdD4r i,[#c<<(`ۤ(R*[V?>sѢ+WoY_4J g֬&7b##D9ZZpecL Àߏv²9cǷOl `n['QQRbwv&̛֬Ʊ( 7i@s XVmD{<31ǩF᧫WpgKEZ*gЮ8pwE5< ;@0Vj~*sÜO.-dm*d<(ꅞcE|>뼹͟/^оj{/Mt|f6=F[X;g.N<"^a8G=%%o,Y2Z]"";悹( [< Lw26*ŴX8\VY08nt}A3nj ݉fl!-[9=ErM^M3MMR9@RH`~kv5g1nݞI.hqdrmYvOl~-!l^M4`Y$sSc#K$0^@44֭W) زdD6K D14M=uхUc@fӦ׽^z,"u۫Uv0u2SaG9q7Kb nUP*ud|N*bZ>kgG?~*^x㬳 Cn? i~Kk Y46>?JD{MvL8c`Lאl09s ΰ N qNBWk8KRO`ѡd9sfB ??ܭ>upɒx@8(TJ_qO714"҂sϕ%1Mn±(˜Z.x쀇 #o:c?Xu|ˆ*\vNjCp֭gVIr82U|1oa)fA˦2F2Z&sQc|&Nt4뢢IC}O_OqXyԔBpL A!Qy__{ tBUZU6.,Kɤ]B$l E( M/e.;2!(e^}mJ#VY#qm} 0rT!䉠LޞLalsSоQ^pdZQY1Nou-vC @i)DA_W:cY!hڴcο%yةB\u$0 X|ԩ_|a 4 @̲ ˪ϗ%!fk1`0L"h93mm+Tu !3--7zqm^7rmWGW,3&{7Ysb'p""@dܺr0 @ʀ@P =^o0ہ3 (C gm[@qG/#&@P\H@[ G%gtz#Bw )ms(46nnpH m$2 x+5QAA2l FQ A8sn$~+JDxyU|fo3.S\loxٴ裯?O>x5xU#gR ۆ,0ߏݻaYbq& /`47pxq??ޞV"V]:o{o_qnfq*ehZ#{CrqzzZGGSٳdxEv dr9c"d2jkaYF!\ٳ?0yiY(*¢EcMcL|Ehl;L*]}ڡruU\T1Mr c *QA9a4* EDA猢b t7suuWZ]ϙϽ3}?Uk{7:wXa!(N>~?B!duW@)qʕH$`(*wߡEEHڊ@N'MMӃ+ĺuB4 !@)|R fMakvxm|챆R1tuv;?,˜xQL @s3֭]VNg h8ZLt=/1 C>TbѾ>A!uu03V[+㈤ ;t~Ɍe;L!EqD"c/ h h)҉ۛm6+N!փvW7eۊ I΅5p[rQ}+M;yvZJ%Jd t0٬Q^~Iuu7smm?ƍck׾I}@[[rmozY~Hڽ^V.f_9]DӞD~ʼ%TW)S稪2dP0$;Yk;d$"D3\gnQ0YvrwLK aޗ&J},BP-- p[ &> . VXd>"RQ֋Bd=Udk&n.: t!YE ٬>lL3D@N "ԒQ4p-*֭ !x >kR%\[fS0Dbx"qȭANp,Be!UP8$D;x/axqx|U.RUI&p6Doo{mj9C: YK^qZ.4$;<=y.Ì~?e$-Zuf?z/C'*+}C45e8d!^܎aDVHФN`8_䪫I*%V/w: gݺCN<Ұ7|,tHxx<8p4Փ`F_G=Mĝ?-n6Ǥ\'ia*ҬLǡ~L%KNUqFy/RQTĄaf=uinعɍj !OC r{IK]imI!ri-R̺LoQ^N]P;n,\I>K4=)JDQMHD)h˦ʹMaSPTrT--zUU:Ds.D  &RҲZ!8Mv>3\TE 6=pѲ,82(ޗ->ac$bg ]ϻds.DV+)1MM^Tc B|(N_r~nC7@/w45=XSv;~}~ tGLBdvae'Fÿ#<B:9IRl6{AqÆ=iMH8 p1AHQ БJu3dgx8u 8Z8RꭨWhћ۷K\Rל;-hNH vBYxGbgI~}/,\cxf>9wCt:S\kj %i 30Eu:m0%P 3QH h ,5P"?c] gؾ /Ǔ>-%Nay\(k!O,-]ʈߟ_y衝QޠdĻGbb?ĉum&**0a_Bムwy2$ ́Áþ}(-!PRyቷ!PRĝwBQGgm?qd!xkkեK*--[?nmzYY_8l57L&͏>W_-\ HNီ492r=TQk[F 8@($zꢋvPU:C @uH C7QQA:OH0 c~=2̙O>wމرcLB0 ??矏xhoڵX^sA"bhq=^uSOwH7vtds_m^D8ޝڊv< Ӊt)Sўޢ"r4( B![,  !~HosijjB(O=4~uk6rYܰab7_z/?ޞs5+.?r2 '+uuT +W6,X8D'!iP?_a hZ{ ܢkb(v64 4$9]cmmf_ӄ /w\~E4va jxIlBXU9|q3zO+]FOUfcin,pa'I!ۥy7JJ/JeezPuKS P@@ 5,:$?Gw&3 Ļob%(-S {x%T]oϕ&dV^ivT2K|V]e1ĄD 'ɝ9t7vtÅU<^Mg0@ Ё\(l?6rc@  F/B&k=p2\/:/=#g$I℣Kn}fU7V 48 ͩ~0ESw9(;nicV5vᄏ$J&5{D'xiE^B":7!\ !`Õ+wvj;+ӦK!|"&MD߂r]0ܽ;q|F~p*F]ݘ=n7eXU)}4q"(CL\g)Ϯ9ܘ?UJv.%=YO`O*Q]c}m2`B42t *62@B x=*a҄+>\:7B&Čy6KzlN6Aq$  n0e@& 16DQ 9 -1D|d[SNNIfQ_ޒ56b< p,'DFUaw[<{z%*qj:a_ԎDdezY7Fx8V;v\޻sz}>~V]- (*CP\l :4YKKi %'$lΊZׁ`2d5"twA0H )Ucٰaq3n#dWNܞcO?13X,O&Sj 1%)+Dp7n-6I2vaC8)ri~] @W?jUF7r˵(hxyѢ;tر]PBayFB,@q)!aø|5K2 SGcnF.g3ͱB_r!PҙN!UBIz{E㏟r>/8zw6""$iZJcTb*Yn1r\.map:dhgM!T!ԩ^mk`xx\'JJ<}`a ʲfBc Q!$g)INRJ!2e8fӡxB F~O&%–\N"{j6US3S\ LJx^cum@ WM{ Jx=ԋ!PƱs0i9O/ ǭHwv7M,)gN@77E\V`٫WTtZ;ig~cx|yYhiĉ8<-m& IDAT550 ʁ|EYl҂jq8f xoIBy9R]?` BE&Y.z.6Īc{ȑ#D5W/ݼyG{{}8Tp@af˧cre2hiy/={p]u52$I'f<:v~$y'\.xeX|jor JA) 磦$>(Q^5k0s&F"͆H&0sfLa[Z_]u+mAq1d9_|twWs.O?c~ UR!rnw::IBYE֭xN}N-æM}^<ܾ^{I:{::ZVqC|B`~~T|)!?]TTEP(S)iSG\s"ǫvNjb^?(rNBի[[pBڃE9JusΟu7~ȴ?KcjҀ@Blv;↮dڪZ~K,;_rkTuu{fM|6P$( ɓs_~++NeYf)ILvߵhN|0kJ0aڦ+ !ɮzvgƂZmTf23!v:bsv1yY]Y&TgyM}5̄@w;my".^Z2 YAi B(6%;S 7~_`p14X%9[AavTU%EBU!PEZQU~ߎMH$݅_i"&0 (JAPpg ( (|Yl1R@g=Ի_cQ5@PJa2sVϒ󼅮+fEC!6fwuU/fٰsܨBA b6 b#LM5.(fU,_؝˗?veS s'+DUBd9snBS7Gp [|sH=/}v'JI4ʊYwjl!Y]-mڔÅdBxc tC@I)r\iXe/NtCD2ũ~Q3yſk/.0k* %6EJ\<<Ce<1% F4Z٠F>.$eFPRYgx$\|T0$Yp3ٱ}ꑱdX6 3llQGN&9q# ZZDaQsan2C bZ"{+G % UCݛ5QEk6w^oƍyR/WKP8Pw47e &e;PTd3Ius|eXY*(Hp+'#GrsFo)R  nk=۷SE]HMyWhv PE* BhNS\i54jPIE/N\l^\ I\pяᔊ%z;"QE-+)fw<5|?d4<#VC >CEEE>pʔ)?U' .+$I*8 睝`…Ӟ{a!@$ƞs(FeF,L!dJ_ $iGV_sM-$y3@Z_\ qHKn79`; kB/xnz)lNg.w2 !P'->|rq=  sɃ{Ƕo륗-\mDdpb?FUyBX;t}qro7zykF F\8wUjkCߢHd/0aYWGx<"mhlD.grIuus2rmuw]QaIEWVwv6i&!XLaMdh?44/'E 'bo%Q LLErqܞq㪏ܨld.*W@6orH&ڎ5kx2ҺRJ>i5k& r2ݯRAl^of !H4@[P([o9[T & *I+0kVk.r܂0(stIeVU24 &/nSP {m]tA)a2mYؕPU(^#aE,דSJBQk (`csn"QJTL](i_ ؠ܀@[68X" aeӜB\ & ^U4Ls$1½{o X/IUd2X@4BEE clLw2 <FGU]`1脘g[m(BzR ,~ =P䄈Rι5\bD?0!N@!1Vy%55zr7iVA{;֯G @8畕52B!44hM \. o%Ə7 f,_1r4gN~zG3N99,^8SO @0Wbزwߍa<H$ɓ˖.N`VWbZuP[ Jߟ-(Ӊz8 /r ώW^;,^Y VJ$ h78^zV|T6C \E ^#vۯl3&ՄR3޶Oڵcܣ.WeLFe BXu Tg_V?oCkMwm¡룇~6n/sq%f@}=G<->0L&9d2,_ m E66rEB"%F@K ; |44J=6$K`EדkR` & |^[ TsCׇ y^-t`Xѹ!:;ZUٵxoe"9f_9*H h믃 =  0tht(o;o&gp;7$Mp$Qs,Yj|)`H 3vtD`vlSR@HΤ1zN?CxAd,M@ T;JEuNq2q",$m`u&k+`0276=-q@4z9eg~WKR^_{n`Lk/BӴh 9K7àt$ka 5T$ L|>aFp3=Z*0FYsG}s`V @Vn \__oj3]PpW;:jM* 0`/p7p0CBxBSCv,˲[/켛{a)΁)t<+D{9F!7/Lk<UX8۫e2DL,γWQvqE.\Tͺy xER@F_hDEKu5bw:}LP&!*+YBi$BtlN C0h`pm@98 1DZ?-@Y HBh--) {lvv:2kuX92P pſ[?(5 3ø:U4L{8'PL( ІCa!0_4R2?X`"Nx X" vPTń)wDvlv06qNY9g>&bL΅4^-X0ugb&Ei)?6w眣z%`$$4[ IB21>vBOPU1y㍁#{$cQѐLfBΙR90_}5L)n-;ztr_Vkcϸ*{]=,xN^/`P.-vIcV|lR1wؖH &KR$ߡ!H?~b44 +׻dp]V^QTtq.pa0!Kƹk>֧ DW^1=2NP HvGͨ,XڤïZU-MpY Bl'b&HujQ/6f HN&;JCirIu'ɀ)7 A$TTf]޻%TVNE/G1tzklt,)Ƞ \%π}ۑ.@v bZp`lԐT +Wσ`P$3py9$47 ā(ښ*W*M$n<b)g2ndVWm94 @da0M"D|ȓIL S&`Q,) *WyE()P B\;ڳVU o%4 ]f"W D}aGbq.II*?b̋2{:e2 pa2f%'L3&:;j* &im Cp_2ƨֶJa>I+)Բ,AK uy}}:9밄r~ )mjL(d4RM <o5N.UrȤr@I=k*Y3>(0KooD* c5P\k N_R]^*QQa(ĸD<3Y>+eN IDATֆ1bWiHoAi4f^OUhB8j&I燮Is,L__ȹ"+qn/)KYo׿hެu`v!Da6c'a]L&C5NHU% ?GJx&E@T'W|il(Dq`0p!R5cElłP(~ӑ("`#BBHDm?UcHR>Er<וe#g%%f'562a}F mm_^ tJK;r ÑHIAAn)"(JBт|Vqn0M&'tң>JRbϗL&{zz84:thpp~}gqƏ|O>O?'5 LQ~Y>k1n87?_|a׮ «kRƖF,0 Ci lnl󁁁۶ݗN*4j(QFW끋 "XР~90J|JelHx4ͮi(B|pS *m4AHcf-;v !%Cond `X}4XZ (- .(xp UUu=<2p BB\@%0 DI.g0 4p~CC<ˍ{J#"$)iB|!ĭ.DeGV-!`f!`.pp0&{gyV`{')u*Fx (jt$I:_}sg1qkB !˔))P#R r[͞yUlITQt5΅J~jBem~6nMM_?B k EY9D+ۈEecfg 7@sX ƣ v5@Fm-.?z}4#D/PTVn)DvS^y_pPXHʤ)S裏a*OrヒoG?{9߫^/Ha4 b"zZЪ*[xƢE76n'BDM>G"cu&55Y_wU˕ b<04 3g*Wg,K;N&M eTU4뮿\z;ww|@>:~{l܈m |>X!kݎc$㨯m#0B^tt`̙|eM7Ej *9JJoWU/ݻwc+)5+*@~AE1 CD]>Pꪚ{Lz"Pɑ guy[VZMͱ?I'~]K3вH9S\۴tBKOﻔJ~&RW`8t5B2Ⲳp}}O6lpurn܌Hmg8` !$1#3muj[;G=}s7's⾦}03PHHRXSɓ˖brxe״2K9@bW:.|tHOi5&[An*@GZmf́,!V659-R[]}Sᦝ"TW5w *t,70ݕ9LSEa2 Bx uǣu?^Xr\v)jA@^yU|2|>¹OIXm-4<orCmx])@bWTDlL"~5W94PuƯ#: )Et'\<ťED1ɤ9.88D"G 4҃ExjCՇ)M˕$D._ixTU6|UTRʜ0 *N8ڎ"v۶mh;"( *2#TԸ^y$rl|}ﻎWeWU®ZϺ{@-̶Nm_csY`}X;z [ܛFmJt*\ j?]QXI ⊺UWye D:[Zwdf₥K>"y;iXNHz{|ޛ:?;>0z-23-&BڱM 3Tя?83~c@'SZoVX L$U3܀8czwQQcLJjk{cٲpK{XAw 0O\a,vPUԒk ќL I(\i)=V]=GfȽ_閦*TJv/+py\$D!OP aMJ Fk3Xk+sQ7{yҥ뺙xCzS_~]d HvwwݻKܡb&<66j<>+nFO&DF08ϜrG_K/{ʹr:Cҡ Qd rX PYpa!SgHh0>|ƍo &?b~p%++GP(xbzk!ǿ#w_?03,?Cߛy7WU:;OgI9sMfkSDy~a?n㢋c&yt,؀ H@aM:مUsN$vDp>t1EE{KK-) 9Dp:JveD.gP]Ņ(d(w@V4v5NEl[v0ۆ{V, d*π8G@wy@5 xJA@z`x^Z123pl =up~چaD.E%%eirMt'wؘ1zx{Fvs֩<]`^k{:3~p:/碬HZ:.=+Vbҙ8e",O; ZIJu4ر K.egcd8x?7gTT @4*}.0zzaQ¢ij"J+ ۋUAJvYw3TLS?C=ZZrsi$\do/efJU@o닗~≆׿q-[cɔ)3ki#o`L_*lii3BtL"xY|1"_:H&?_ \c* ^&eaݰaeUrmۛ7b 2[&gXL:~AV l"Bx-Hi<5s2"%QZF[N } u ֚,KA,%ky&'g eͺO?=XVjk$z+wk~f4 4Џђ^,)?#Gm`c?L7wx 第;cW1y C.5/ݴf;/>}IOETEQ:6iRk}jH+& 8@?:jZ\iYY۶+W`(KIJcgeY.P@E8OxJh>f+ʣ;uUU}44D9F"ݓ*8\iLm*%W+] ˆi_Kmn5+'*B )\Ii\GG_S&Mܞ_Pz< ֎4y` $SQ#.$iS۹-Y~OMM'M%Hƕu?k(FU{~ON=WXh$Ahi/ ߢqOVQTΝMD}nY_~B*Nass TUeLI_x lX" ha3{/ͣdL3g\y\7ݳﶭ|ɺ:øoûcQ[:}zw ` Yq1mZ sbdAƈ1FjeG?mݪUk-f{҅6t鮖*#>"wlmnx{x.G*vXV^ksò絖7\F0V+.-I;SxX)D7I$;Gr%E4TUEpL[8ˌ,̩BIAh_j,bh/<`ݴUUʡR;;7y<_jmYj4:4/+EtZFΦ}hr#6T9g{'^Jo{;lѢ3g߽hI`=UTt_0ؼpon+'׽T:uꌛ,֖H$guwwseA +vmp]G;Xotz?}ݟǸd칟}v}ghE V8M];8wR}Wv]tɅ{p!xtH@j\wP[+> r.) /J<`L&P0XO`qSAQ&j(- z^ٖgO 18A )g_5uRQd0HR-;o+Gz&?I'TB9_3X~MݲE]\6g{Θr[q|G@̀R"L0Hyg۾9JOdy4Q{KjVԊmn5?^P"ٮXM.KK8lWKb}7{WP?I0]<'ST.lx̂gg{ZZ$2,7^w)4MBV6+1|@ۖ;9clf12hngAWQ߈7b/5@n}w"9 dh+p7LÊ\ߢ d)(-7w=Sӿu6hpre믝g'\HcY*` "ի I azTݽfUOa!Ə+IK砰m[72KV؋] #plrp0.T!z-}Bp-ĐWX(_I|_~AQG^z,_~CgIpr֯\m~޽[O9E[Bs,/rEQZZlM0F3ƈ >|E'O4) "/>U+JƶmK}Œԭ<L!jtޙ{f(ٖ;|hѬ`p@:gl=3\pute[7ypI'|۶m;vں'wYj|5ّEOȬ?wwm9Bu[wFDٶU"16햦yL"1FR{p7h:w\ J8Q!&,tH!S֚ etp~7#~jjvIC8bgK KEE3sogdAuG ! Z`&06|9/ n *|@ Ā_z͌-qpE١EcƸbMuXVf"J}bv4*Hӆ*ʃe'j1%_+/ UTیWi{e|J pj;Ususdq Kq=0|㜵uӋPPQMBS8I {~qY4&Ar(# V>CVv!_Qk*+K*R0M'^/22RU!, |BtwCg?y1i_|ǨFׅsA4J wu\jkQP<ٮr].L\򭷖q/l֜9wDI|()S 2E]2g~ٙxqfM\f8gM2 x}եtSc,p0M:F (Q_C6c|EJL).)fњ76G^4;bDA=-)+s̟ojkĉ_114܌QtdnosL 3&Q)NH,|n2 ƙe$%;"ɘT| g:l!uXEm3Q$'ڀ>/P;ej%s7+NkmwG-0e58#o2`B@50,\.MI#5۲T5>?ț)PQi4kll$ "3SR";GXϸ{4|muhq&b׏)n8d:m[,[MBֲl˗4UlG]n6xzILdȾx 4vQj`p-0IǑG'P@I-3(\TX4+0,3.e'ˡZΞ擆R O˔tq2%ezMC*۷p`Q2JQ.On&nT!WטC҂FedwV +Y8Ouu-avƙ~o'I)DLZ:ݷEtX?et /cH}kR~ fK)~ҭ,BYRl 1_kfM>;;P\e٢ŲۚXf%7r\$ zI[xor2s+WνsS=ۻW6p^Ik YHX_n'Z{Ub=Fz{q=\tn|;9e ]8Nᧆf,Ct9Õ%Kr:ې$>ӭ"7=2x*@4:u]q&hya麞Nꪫc)U/ϋ>UsqoY:-JOXrPC)p ?Z3d2ƛ*ciK2f$ɒ׭{!wyn !A$,+}]d.Zx{<>_g~׮眓駝EHiUWg7=f1+6%w E^[NjܾY/vGR cɶm?\Ϟw YYY*+t233@ÿuYwhB_S2 rܸKf@;;4ca_/:9';϶]Cʻ,j[,&IJ$nEgNj ;Fj W0 (BT2&,K% T25Q H&9:eRnBx4T4"@PltOj޽Æ@BU uh.ewi8l>Txsٝ.$TF 3Fgd54ry 6sWwǟq)Rm/ NDAQR e094 XjC{տ r~\༿ mW\ ~?TxU\p^~==2Bi)PX>1955!;g'8q(-oAUW-\XrY]]& hK͜"MH%%2+ z5ûb kn:EEn?y//޲eienjɓ@trjkf ̏>*7oC 3My? s(9૯'͏╕oK~e5s&1SNuX\.Mzwj"}MxNgtW;T4 U^yEL$<믳ǏǗ_}+<ZZ]D-ee)IJetᅬL:e.ԩs~LmvU0 #Gp0)dC#a1p=)CZrI4HfHsd~VW++E2I^/߿߮PLS{RE'D#Õsbߏ2`D**;N)1Vеn%TFLAtHyyA0H ˠ0 Jod,$&ZI 0IuTuOA3YTr MQ J0aYlg`%&t O\>ɲBolJ.]^W/OZ/+k^ו.,H'J4ʴB%蜍`G3/-)*/P H(vK}sc;K \z)>\4巶m\*P|) {5=mY |-M^EIom=Lc`^v}s̚5On۱dr'J˒DsXXxԔ)K,s " G 1Q~Sz ]')Sa WQYqɵܘ)t S; Z7NgQS駛^i6@u˗?}ZWu:E}5)S2O;SO"U0?uiyab&,4R|%G-gFOTcuŬ ϒrנM҉Ckw?_+_BvwwqE3;;Gt{}v5K|)$,+s/?3ŋGj hA S?p$;F)ݖEr*R.hb@#c2 B kE8P6K` ٩~'9KUWR\c,Tc)[?Y(E!)wˁy@~ 3}ҤnjhDAoPFMMsG4zF(?~(Î:趶"E]]iDJ& p(":`**p9DqOR+% ~ ԵyRN`Plq {hF" L2fX 8JP"B"*WŔԩŠrP#,&*R[ w]]"*0js=4ov+8gi9wLR 0Zrsq1=ޢ" |5Wò0f }]^~8bI\y9 0g}MHOqG0HlO=U~%: ヒ Ő@"=:O^z 7܀a@QY+ 7mz0!PVM{kHq#XgI眺ec#>4|uםv9ݷ" Q}}|͚}it x혔)˒1o0xN=J 9gBM7Æ}8**Xy98%ҤczdۉݻyA[CTB؜kHc˭SOX,F;v`V~5>z4Ifd;$iu4ùE:˲mde%koEaC74izESS܉pD*6'L *Rc#8Cy&B!p< JJ4-s)emmnymg̖R::S hiy}G}5Ӳ#_ER޴Me9*9c` Wtg(N[#8rdARӧP K8\yekY^lTq;O*uJ(iScw3I嘤 ެmwU9hQm'%UG RƕW_)K022B1!y''M9sgMN|x '[`~L4?Qb1&/g(ʘ>=t)麭idYvƎjh@C-L#Y+}Zn]Ivǎ^iTZ" "H*}Lomkg#:-w R.``C³S@U\V`/8ޢ1mدn!L A7KPs#Uc@SC^. 0-X8DM*t,'dqajM1{=˖4mZ0P+zU^)˒{u"wMܤxyve/(&Ͷ'"3ۥzdY&q0`{II'(C=8jרBPvIk=7孒R`70|IjϋJd^B*]eƘ ^uuoO&D~5@w8|onmSQHh$3e N@-biy.B!R)y]vZ"Q p@R@Ѐ[y",P@ |$0OӶ[>@>Pd5R.Ad\V29f`0c6mߞ8D*5/hove18IQ 2u֬?| !vX[f tsV 桿K0n#e\ 6pp?$x8ƱfmSR (#: h'Z7 طukm{L˚ycRR2q`eq)sI:L3hY0ͦ}~^#SOZ&tTyNk.BHipi(CU^}5 hkhmWJƌz؈+淖EP<4) /_`zbphG(.vzﰬ**:gn76o/0c.qR16T.aho,b6켘s@ Ιooidf⥗0y2KK/[ou3CcƨNcM*7o &]}LMMj 7>uI]BZ~#Fyc~8d |H{FCb㐖'B.[*J?(! p>'8eJOR.5sھ=cZz:Dgͳϖ(qèD08pl#IJ geWU!s-R笼7BVS Ԛ5^xdDBl&}dddwt4X\L ={S}i9uYY.V ~xgO9߶;r޼DtWqFSx_͛B 4\~^z4 /+8qiyQP? #33,[6a"҆ 9~D9q,e Q9a )۸qmk\8~|ykkcpfsӶ]U(N#{"$"=i #*4yЧ6~ ʧ~yhͽaYsQ"v>I|IhSMO 4uN3bv"e :2Ε=S3ufsy'L}~ 1ɓ-W)]P[Kײe7t`7YAuaZ 6GN]]&{.PEiī=|,ㆫ0j"333otq.0Ԋ z#d [CEeK/uh3̲R1}g\5BQ;C{ k 2EU4scM#^(w@O a0:o6E@b+$ =(W#[`.踶-˲4Nn MA?h"ĬV͚De2UY2cG@plԄB*45c$b#t].bE-mu ҽt$=Y\(z^˶gHYnnK-[m2:phy= -JigXkd  %T#4pb׿?ՄX2s|^uBL)]S&w[mۍ_r5d iw=xȳ#Aȸ.u)}g~ 28)*# knn슍m8✩*c`&TEKU]omY17u `H鱬^ǸTogh1l=i&$_{@EtJΟ+=p8p}|hn#>q?3s+s$ cew Cl% >);l֬˝ [SHp"a1FLKtۊmz cʕ^rIgI`ɗ^dg 0k?;i͡x EQ +*;]񸓸 Rr)Fzk;tG  [x~DY6v 5hgvl{ش40T*ThL?4e3[ouڵ7|3k^s5{wW;?> ]!z.ST42I97Rjv[Pො[RKNPrz{5􄏁H rm@ @.0  4ˀK&\f2gf054g&%8 R:1 H8ǀr/PTp)DcӶE8hʻ 4 xn x58uBT߀VUfy{.z{Wu k634*2.7p $b4؆Ѕ)' -&'!!cA.B754S 0Eۨf4mǖCrNΛszY?Cgs?w~֩Z,Kmp /   #mEa>?K%-ǁl߮udUq05VnjY(.a`\tuK9GYVTV;¶mPzuwC4},ulʔ# C+) bDc\WXDpH B,Fز%åaՖ^S͛-xOȖ{qN0e N; yy0MtwQR994vzg'{l˖ݚ ٖ%/Aw7萛7c<(Sh B8834fMM/I^sem-詧 %8òd>is~dcrE=MTjhS`Ѣիll|ζHvu:Aۇ Y[ZZp%PU!HUYU^y%ۛ9SN5Rҁ^K/F{ׯ0{v}oY6s5M3M0U:AD`9Qy7G=߿iӦv2<}x[n2aµX=DM; KrSd`M%iYDbV"@P ,;Jf HpXX c5wPiMC'8d^b9o+PUr3rq{%UrW EEU-s崿Y {#~P1c*PSJ mƬ 44lԲejYɥϟP!ȥKñ+DK xgbȃhM1|?}z)x +F:-JJT۶iOq1]GoLHz.Ar9q,R#[,@qT̙NYYRtw56hńPVTc,I!;B񨵕u;ȅR?Zib k@Xg* dEv ZXUEEp(wt%@ PcR h%Lp{ wYYaiuAhQQ<|C€g Fnq`rT ^oi&LJHZ'PUSԹ#Oȶz',^G $M{%V` N>ƕ|zz(;학~l99~x"؏Z9> #%٦5˚ V!EAgo"0T{rr>Q\|ebD8Y '˗wۍSAm@|ɒXIɄ>Ӯҩw9D2'Q˪͗=u@8b1!2)]~(‡e]41&D@41ήy=eS׵-Aj'X5#")4% VD]4)7Jyw6j=}~Cm .++}E qQ?ߗM(݉wmpw0b5玔j5AQkmE]ۘ4"ttDX ŞX,FFץR/Oap^8*/;IO?c/+nt? 6ܴrO?(n 81kV@Z݇/{ ьǣJý{~CÍ[ڑ:ZgR@vct"\RowhO-V8p}׮q38pu] _&ck|ZiRBD>XX'Ғzac ƔIz! |v}4zH"2*4)eK:=Zƾ`lcn}DYgȌPI41'gQq͖ '%TvAXX%cWx(Y= ]I,gBF+c%$ p0 /;46ο(q০9y@ 9a{6@oƔ&Y Xhp F?u#?wgwyn6cD/i%? XOϲ(X*@DRU{TmRy\Ot/cE%\@IO3 8ӈc/DۊiqΝq.+Wٿ<,r6 { !'VA2)Sܻ#̳ (3`9^yBk+|>|^WEE0yyXVhǼypS0@{;߲Ÿ:hmNx\jaYLҋ/qƍ)<i_~.(!7UUHL04 qdWW&1lL&ɶ]g"^vͣύ$+8?**rrӃgEP`f ^EUM㡐QӤlAܹ֮ũ?D8 Xbj\|1_2IȈ޾|<''7:cG9sf PP0 $9`&L8oرf)G['Ui>\}hiq`0x_kjs!WfKTYZR⭨Ȍ0'"x<\Qh8bk8)M_GA}hSMM=.DDUqgz4z'?da|<5|Ϻ5{hkPK]wȖ2lck},NӋa]힭Yhcl0!k/9 55F2_N9΁m}X9w);>|*T٣M¦yxGSJ sL bɌMӜܿĆ60g]d) t@z8,Y4(V6!⑧ 7 -oSi.P%mD G(E"wyXB2m#I.^bpCP%c2oooilT:;ww@;P `ݜCIofω9J6n[Ȯ.ےƣP?%%޸u8W$p4t DY~6eeM.ǘjuh/{-m? |ߚ(v.== !׶Ҷ X?F&l(~ eιGoڰaљԴć:J$+]QyhêQ͞ŭ$Vܗ?Ty1:cvy(Դ_4+ a9&wtbs~U*ŒI RUee'q y{*+RM>ТE/7?Ӧ>O|h/ |#$sB犪EtuO),2f?]t8p]D@qM۶SoYX 1ׁdݜ7R&3ܲY+{U({`(Աm[du\4ke]pR$sOa9l :nvKOg.7a"DM G( mß۲bڡt s_!!ߊl (Lf4֭Ü9=4<ك#?8< Ȣ!2]v26ofU](̓/9UE^_jt vezzb+W.2OuvZuu8pk^ ƨ@04DK LSH/o.Z4'r=vP(`8^afF_**i۶~Y/䓡TJb_p18ޏt2O8A>۾]Y,ZdttGF4CT]?ᄪ~0UšR"zD, B[-Xd c̵{ts P^ܽ"Ulpy!c `S$]8buL@4kyq5g͆ৰn-\3#ׯE@BAUeqk(g4i""%:Xfy󨢂39Ω\tI7_{35fdx/WUzÆw,諨r))K7Zl^/f6 35Aa-0]FAV!EyI9c" "t T= 8@2FmmT\gKŀ6974U4 F`2[P"XoM $6TS8spa-sڊd3ms@u@ ].cHT@0Ñ ‡¥H%%Eg1t ,=˿!iKD$^8bUĝ4`8x0x_ȶTh-9Lohe3bϗܨIp=-PK5eCta8  }; G Jk~ ,$6du$Tp͇3NibPyN6Zx;1$<OKHԶ1W`0@q5k5Ggp0McH%6mҟ{G{Ƒόlg2:+A$cb ,< DzUܥU=< g!R{4JJuDFI*6lkg:\ L3K/QQQa3wt>Db^edђywg;:il|/r$Bt/&m3w٧A& mqPK][CP"6DB@$r?w@?;{&];;:ce͇k MB'nIaêYRBs2{&Õl:M-E?2-2?:N0Ɓiu~6{cCÃׯ m[veeg]R"9Պsm:nn:$bJ3f矟ٸ!W ' |wc*c+tI㠐Bx˯ߥKش6'gttB C|;0P')1Nr~9sޤ(g2@wN`&p p+8Nd}oyOA]WbS XqRBܪk-  X0@ʴ?2^o1/`0xӆ VlztTJ]Otf LR@X \d x8g{wxxm_ CfqEjۧN`e;Q`:pEɕGt' al J=.`( -pBb@30_ӺT[lL`@TGbAR :Zost C@!P l` D륗>Қ5tDg'8)ۇv~8 R"m RXS[ uv?gy{;[׍^АFϤy3t#qΛo:EE8RJTW͛a),%`%%Z/K΅*%a<̝+g6٬G"Y]!e'HWgmf>앛onI67sP[ F4GwKf{y 'bJ RRնW/$6Ψܧ@Iw@I V0 !r(pJ$v&5Pb'#x*ZvcH{InԎL=\r'yj9額q Wp0.qq np#ߨ* 8b_}ax|wmD݊2 p©.,Z]]][;T0>h9-)s|8Jr@MI.q^>8Wl80t$ra<1 p._:o^Zs.R!;'-i9W+ذ KQ`R\VX]6-Òsi͟l; ]d] VTIL3 B~9L@ l_$,\G*"qVn`͜uX(p( @`o"1 E"g.]ڛO۶ fl_TGC-}3YKN0Jf胟g/8s Na.+YKFVH 2sS=7>qNMiDD--x >eBz@La1'چƲ=A>ӧKAT] IDAT LLT5x2s yoAcZl!X 6rY PLY~3nYqK1w& AHe[9 iW1̲$QYBX&AI'ymg8&RiN-*{m҆VRWsΒ/3TV{Oln\x`HXL NT t.^L+Vhl,Z8KλG<9!RRwg_f|QٻYq%_b[K.o-/T hEzh/L:]Qzp;p"bc6>:0>p0:44eᰡ@3nu:7#yI ȎT'I5SkjX4Kc[Q[[ w0Ιc*.]~晨 sH}/fiʡ_үiEEyB|e6PuS̃h᠐qsij)cӂE e31W2P@g*56(rt]4̋.iKH  \( C:B|~ƪ c1crEqg2t`Y"f*1k!*P ! _X\8Ƽ ॿ>;~&e4ځicB:,@{F`oHYH2v` ؐ{OwTjeBT80vUf5v޽)sNu @KRƦIi@1 ; T$`"r`pGCk؏9=/og nʎP_WuD:CmW-#5ʹeE] D3 )$FRT8,(N&PUv.۞>5)^NK෍ar hkZkk3O2;ۉ!FԀiA(:0}"4޶3]ۊ\:b#ax>ݘ<?jhr@sz1 J}hhwX4J|GEYMæMH$\qF0,˧j8\c}HaOOSh3'i PS3omşsES~EEE,@CCز_Vy{/@=TH8TeCQ  cT1 p)ņ9{6:O&eA͟7p45\' ^VƏ<V̝{I2'3|4ttƯAGQ|[MfYg9ދW7is֙N{;ee-\by(.Fu5^ }ի"9'9Ni[.,y'V]͉`")dkxZ8cD;){æx뇢6;nwP (|?x1WȮE >fM%X\Ȫoގ,Bg?^W.AcBl!)R$4. @㬸^=#uyѾJ'ǀ1ɞ@ ~MoD owVWz)H٘\c.0ٞ5-)Yh:M#̙;? QSÎ;NZ|?AF`ð=R%Dd!.3abt•9d5BshI s逸V|V"F_i%[V| *8H 0ں|q"ʑ_TU8S $9HzJ1]%5QSFN>77ne)D8t +U goW| is*"#'8_‡Hi.0-%F.Q3S҆[./zS!1H7fr "@$!.DP;:2+W<<,9NORtꞼ޸?wXp۲_ iUE3W7^M2-81=/kFb++VA!2-vT[ضiaiJKQSae&3E1|0eE[]8ρ3YoT//lnwNhP#?]z<2̌&\řIVޚ1c4^ꪦ۷^tS]1ZY]q[sDKh .x/9PSQspcL&Jb̶,|NoJ؍mNUeA4zEC=ǫZo~7,im[t͌C!EUD,ǡ3Hӊ+/)sR2L ͂jg^1>sbr/:nDgM햖5R E6.#*bl cqn QkJ9Dz^B0i ˗_⋃==y@0P"  p T7r[(8RN#cчDRR(ʭD&pЉrT\D+]'аh갔NyDWAƦP q$r,)9fKA4A1(Q]?9/yRz;GQ<4@/P|LJة2F)D 0X5 ~ `p \H >~B Lӭf裈a2)1~;qVP;lQt^hw3[O흦-5 G= L;p7FA֌Ad;1ulqN8s.]xfBښzu첇tfE*+1*sO>JK8iDXO/, r߱KWϟoF"f~>*?cڅIpX7qj8jiixԼ~;n| IgLblkր16b18z{a!(҂Pjj襗P\L7U5@ sy<.t);ũew|iP+Ds<Ғ2Mr5 q1.Qt͟/_xR?}6Ԁ1L*68s*z{ 0g3 aVSXNkn槞*3v1x%32)e_\73L?g}T +F'.JJ ]8EA*I 9ٔ{U7tIoy؝?vӆVdaZh6 FrX];+"G.~LdQk0 =t"'74Z[,ŴZ"gy?T0ak)`$HH$F ]! @Qҫw4kT&10" g_LisW"~^c;a9Lwukb_UfR!m;p`م)1g׉#+0#ʀ.3#s@ vv>b- ?0li3/+}FTUȺ P8$a~Ԁp=֞lÃKÊqU[dZ1;2`*8I"2RWOsΈȶ2]{r4m>%!`ɵw߻BWdrΉjʩ7Y*5.F_>bN#k1"BmcBQ[,+ "M8:?1yhQR:>dzurExI!, x7,Y2x9r-D*#OӺe*>.Fc.8C}}x4L,Q32ƛjfd4z-3LFe%_f^_&S)+S&?T?׿s_s׬ɳ~_:#7B^Ó88?^6OL;- Ʀ)JgBtO,"TT5ZPp9 r,s/R^؍~| @H&ݺB8`4zh"pSP\8YD^ 8 nxM&79/-▟[=wqթm>7@P D"IΧ gB3FM%*` p:@'29񂂻7li:0$Tw FHNCto60(y,h^X|8dLf+ޝ0g[qxꙌTeF4ܵܰsV|"P|磶) &  Vbl*z{!%JKqݘ:>8mC|) `ә0HU1NeehmEu| ̛|Xh,hm-stܲBQ#~}YBeap/.id[sYD8TZ/Ʈ]S7tTi@ ͘9vEXV̠WQx*%winU o ^s:cyg $a[r8FpGM-JV H;o1͑hؖZV~YCf_ #$bOj1C 7c %Y1Qu,mZI0m2fin0ဉsvUHtozd]MS&:x܊F7Hqsi lոA4[*;CUqdr7gXK**aw4BN[ڨ b>7݁D/7ݑq*[r_}(=h4?弖.{j"+o;j Nd[~;s VU.Wnx"¾=/wb2ޱcx`8犦974A$tm8O>A6W\,)|(=0v|('23VCbD>$}:8xsնHXWױu+s? TUY.זwJ tw 'TUeBMʀ$RpU_eHyšPXL$@8X0'Ei)V  TON`! ,jXDᝆaYRvWXVo8` (p/4M4-~/Di2@ 0Tt6p9p(Fɣo *cdL}(gmKK8{!::Vr m?8`Iߍ+wE;}4mB\M㍏2 ge={im_hlہ.],kZbu;:vx'|36hYrxplj 2TU6a4Bfg,4459shv^{dl޽2/)SPQ'Ǝ PH?\zSj*L+ʘp},i,] '> h; ^~ip#7m߉ƍ=v$kUUk3 IDATH$ ic7UVb݋vD%%#m[Q[3(+; Z'L Ǹqؼs"8Z 8PD"x% !Ux0]gTa\q4MחWx]wx9-KlnWQdߑNCQFUs<W&n`Uz%m[4 ?biGcHl].PI1bި׮) q!H@D*pHD)I**~Y9̝ ;{<1CW{lQSE<8lE 4ѵ3|Eeg T"\2gp1Q-E: i1F")MB"oY9M#'Wl$Jee-]j~/~DBgzEWɝϢ5R^xr6\OVUX WݱjK?~cvEz9o G?7RhOꩧ_F⫯hl\P.|F"|N $n}Хt9BXR9&Jx$!}UU7^~cwņ ~;l{*0 !z [Q0!܊Rp4a"q8RNaL:yM|e=߯s?VߴdYDeLш/k%@ 3 muo&Iԑ'i8p]HWnͶh~\bjJ`2P- f2"Tm-x2NAg[8]9~^oO2YcҶ!"bN&ݚVQWe7ΰMc&p3(1*`(0ȂA`P H"_Q0V{9--{sW2ݖUS8u>1t9659M~iؚݡ5M?9 DX*2)֎W_`+\.#|=VU2rm|GKƾ8#./)2۲ihnL&bfm@U1e ^Z[ l)ŇǬYmbO?HQ(X+W&kk=kX GnmՖҥm;v[؊…@Uq!XKQ(`8e:glkht3_|ᥗFeel宻K.#nmm>DC'˭[ݍ~Hc(٬m4>0@_,_yJ&iXL{G^/Lذ s矇eAJx:犪Ţ<Ev̓CU5۶F̻jkQR'( T,:Kđ0àgB,f#f \RM{i>jj!綷w ;ٖM>Sgj!H܏2#n6ou6 [1⫮zR`uRGn]vk*,&N⡕oj2)0}/@xEW4'6<?ՅBis)z<8l'̛t5)x׺:SAث (#93Hb,8g.?VD@i vO2T![Q̞-+A^P &yL&x mI NT V?o:vWZڔCC]smm(1I*~g@u cP] [!=5mԃdjRf3&Q`'׉/|g&D|L㕗ƍ>WiZȴ,)UZ:xGѵbW!aVqnNbOU^EDsYӺkn҂[qhha DIuոb ̐x$Bo9tQ55|( di=P2&*+? ZMLqs^ɘ [0Dt6L38awXG<de"1EsUxUJ'=6ܮk˖[o̺Np7W`ٖe_hB<7^|ꩧ^~o5Ui?O%HpB1_ cL"EJ&e0le}3juBaQW%@/PTuX)C[0E\D Ds8I&i? l^ X LYlUJ|Ԏ ":%hP1v{_ԭ^ۿm۰e->O>,A`)ycQ d*$ T(1O@Wow$ZfS|Ŷ=6,<0*?t)c8f >8+gaLǕC&O-;vXmÁ"*.O!vSJR``IvFk g ^aX~+Yi3s˲훃!m{(M?*I. @QPWW%ֳ6+.Onzٳ9Ǜ71ǝm 9+=QUNӔiԩhjxu5 B"H8xB!Au5\.TT QG!mL/cŲehi?RQ] iw[oef>%BggE!)ڊМpV˅|G44g0kb1 !fq!ǚ5PRcLz\.OMM3ӆ ^M)Y,oǝBI]W**4)-SUV]Tvmm@ X }F}= .tPtvBU1y2b[n7fs{:UUSBc0M&1 ׋̙hh@u5UE$t2M900!fBCJI~mְL&>;pbMX,'8JJ.6n,_U{TXښnlt0_: h1.33Lyc[[4\v!jڒ}bTHƾx644͏^p~~LcKI]Uk KQXk}F:]{O>{Ͽ~ǎA)]Ǘ~z1S<"{0~1ܪie2Ö)03Zlܗ*Ml ӜݹٌtSO/ 8d,¸U0asG V¼4]4 5&l `eLX$Ƹi~%B˶m񩤑YDd]/L5-x'zt8(Mqv69|EDv,f8}T0 x,V (Jt؎%Jdf CyTSpgOx]\8^vWl<~?H#`{eC‡_{M90'ǀ|I䆌麡3 wRʽ+ <`\4ve'-o~`4{Erᰣp44ओ 'jg>@ꐔI=dɤ&x9c:3婧>44`F88.adlzV ri~,{v}qh6D,6 g27rj=)V/#J,!rrw[ۚT2vn8ee -f{cg}Zc>}`7~FJ`s} FQgi m==uk!,"Qd30}sVnYf2 Β/5Ͷ,P}]Lwf24SjlWbwUVV[gf C][qbE2l;ep"y[ZNKt}2chpc/qǖzm[]$Qsw2(Rlk<d]gB~2h0YQJnƺK&":*>.mY\GDuhg,R`-p*P$pBW@~z7(!9I,XmCJKYU)'>X  ,t,6iQE1fh8=Ph)gPx>K D'Hy{.Eax1U}u@HeIMUV16ƺ (M/0x* ADKyWy6Oi@ pt z#o íoQl^b U4S3$'y#bBZQRBUʣNW-H>{G8|k(ty*O˞Ve׭-z >Ļ( @03܊{SWWe23g24aHIJeXB"PU#BƌA_Ddmf&Ns:#5c#͜MP, RW,tua>0B!*~=vƂ#%= Q$]]iB\04}ØP0R֒1"[gtUc )dnYW0=nqħ3ĢEX \"$#Dx1Hŋ KήF4rvVŐH eՅx}}8 6Mw#u ǎG %zz0snӶYii> k9gcƐYIivڻt ]tS-O.];dDhho2ν.X4ZH2[sLɷ~+:sQ]!!MrL)֊>tZ?d\JIv|8f@͘1u͚;=t& q*JW5L:ԩ<ݻ4 f!Qum]Fѧs1q8b[0r*7Qji , C:j#|6Y0zٝOi\ZTgoFy=[yhxl9&zQ_/ :: X Lic~dqd^ qj·XDBa2hrl<n+紴\qv*B3d?`8?@سyFSMMςJƊeEkk^/`x ֒ؠUTjm.G+hߕkԙ4v-|nqsP=Xkιh(PU@[ )U<ӆai~^u H*Hȃϼ]zuiYv#ܥ(`hcT@  (񚚙&,Kddf3ڴA=1w`YID9̛2˃5u[7eJggTiնfv>Է CRhU"C~7D\kodX{Lz{ Y&)'a63۹ySNi5)޿<5 x(#R0Ng%w5>:FDwy71Z=2ӶuP_#ʁnPCC$j<C4M++su`,>̯dg]`UV%tKz叺:?dX kb8m: !a8e.ߴ^t.WI4|nRfes3²Cc@\1J]w+J"%XoW=nScйgZI k̚ꑧSgjܴ)k9m=N4M矿}?cˉ\Se=ípU(厖9sfs4[;_>o[]qE0 TjpW^e޻nEX΃>N%6u:]#DI8KUsXQtzq6;11|~ @@\cݡicA_Iycn4M3*)ۀ*"C&+otvVZ @:q:(H<x`r1ԀFЁ.e@4N /DO)D8/x2M IDATD'57zϞA۶GSo"g J*eP,N=-@PfC$"4I9hB|H$+E9!9'Ds? րZ@\H"&Ѳ:7F#9Z1   p\Q1& ReTw>F] Yu>',N<P1nOx+n7OP^oUyYbn9`~:$"R aTzdgq2~Yǎ1e'=[/ zlgCTVAb9^) V}}#" H!s'֭fJRKyEش Bk#p}TSOSNoiLx#e A#F#dR娣Jn[G~*s^R) \qv;XĮ]H$0q`H& wqR*8ř3CCsy쎎7 R,R<ΟxB^=4 0M޽FG4ֆzBNòގx:R Wj;{1.+:\uH xW]GA2 M3G\-gV/~!`',qnݹHpƪU˦OojŢH")c͎[_۾99}RgɚfiMMo;ߎo]w=߿h_U)³ZwWڵsKX6¤ R5?qO=go&D8 aPHw~IIݛo^1S LAGhz^{rޅ ЊJ2~[3u;mŴP=ZeL0YN垧_Jo̟련`* RQVT!:nZ r'=mV @(I̝HAz%Qg\%s) ~fUJ]\v*a%]SOuuf*FfQHJ%Nr5 Ɖ䐹;_aQTQDCruF"EMMr˖vrOz;O]D= Et(ނ/` VLU3f*7tLx7["ɬԊk\;Pmi+ Q.zb_Kpkc~puwu)!BCg;l˒mmXβY 2I1Dr#~}ىm~dƘmik0xJnhE_@ie MwCv)8"pm%AJEJ6nN"]<) : :¯# IaJt (XL O3gO7ꤢ:;͎wY~VWcad]a5^敜62.-/r=#ڱMӳO?yspa^@F"7G]vz]Q!zȣa<0**]5u3⧊ uV.g}IW}>\( ::f0S8~켩Y-Ɂ[rc1XBhlN yIv[n$>~]9 aKa=Kz-D/S5pe P Q}1|A!s󚋭_ouv{T^)SjI !*BB|8.v> a 1'Ԯl;g&|Or?xkIc]mu2;NTחWUDd7"L8县Xݭ|! 9-pY^-[/Io͞=> {N Q_hsi}x6YX]ӼL&}RŹ?CECVogqP1mcKG] &3Hd"c+9!Z&2ƈ Bĥd-D `p9N%W JvccTWmFQM&0b!g 1iIʅ8~@7pfYqfv`)"e cxI|j"|ɨɂ>H !U@ JT&x'h`le-r2{p p6p 1J]͎zmO:bs|rm#LrIR2M:8/ܑtF7Pd" @f\^f:l<1S6ut\0X% cw蹨|u^]Q]5#GΖg0*jٵ{wX7λg?eѩOA$T ~?>؂P0ىZ\?ھݘ<={hjTUYJKa#%fs3|>6g BE"t[Ncz\x!8`Ġދ<:;mG9Bb @N0.~W{zrnw.0F uUFL|> X:͟}V|2`YXMMx:(pJڵ˝vKΑ@UQWY'?>,0wnueeavO<ºM7nʁ H1c-ìY0 X9?3?s[+L,򤓊 /XDUD!|͛;| !'Cr!3SGR:b\x!֭C,x訣xGߴH9U KJCYi'~k55 +#^4C^+Ӧqoo?H:Wnmw'EX[ܺ/Hb00fyB: =c^?/揿Hz_gǙ¬w^ps4Z[c65'XΟzLΖ Ł/ Sw\vv H8;/qfB4˛ޕ ih>`K WwIulӏ?T__1M&R!AS@sA娶!$ʱ H9c1jme=DA7zD?Eتگ(ne\#W`VOo6l<|pK55nRY!.呕՚&kkӊ$1)tr{<e gӗLuS#`lbzk j?Pb\/SAa`AX "T\ш2~<4^Y.@ l@Jڶ",UcLme>,o{{mW̌ @ -:2&%L ۦ'Do/n n7p0 hn,bU xbqW*bk[g L yRw-RJf3tPC7}Ogxw84^fy9Raw31 1r/N ;6fIaS?VPeڶ sbz%~"v4hhfYofΤ .c6cٹg;/ҝ預ߤ^+_vRYhnvR"8^y$-[V:pt1ޟn\3ϔc˗4qT0wAqVKOI'Yc2ƸaYO8a|%5NKYL2ٳg;nLhWZ5gp^`Yq98(TT@iŚ5D$U0NB+"/&jjmr{ ƨ Z`AH; )8S8 L64+:2WőNCCÉ--CS<#g'rc=瞵teF$B[Jue7whQMu*C&OLMo4\}կO>,}IP$ 9GvYVThZU[WGm-|LeF}8p7￟@,cp]Fv6rx2Mtuaq(-ۍ,_]g2޽jVK O3r3&Zɤ^ᜑ"4z8aPpXLBH6mNgti 3 q5{d8\*,,laAtvUx6b{/Rqq(#;C nٴ"Ƙ x4˴ F\߮Ys͔);LsjmEI1?w%f[&cDjj*G [K\^\djpeKTon~lij&=Bqe}F8,lAXip6j1A#QʏDx1K'I `LԡX"a26S8Ur<3c^֑/M8l:[ݤW>^R\|1" ºu D"ᇱx,(LG"efJg))Sۙ.!OAדqqTlRV)]D`094s3fIh7W3dPMn`jJ]QmY1UeQF('iXize%28p4P3Kd(+Þ=df8=GM "WyE Y!$BqFx\Ujc`*yS 2`NŽ F$rAlRlVZ23`UUl\kqM;Z j=[iCdr){}Ͱ|# JY/f{0_6,Ij1{\kn y `%o߀y80|9w/Y,sTgjh#6C i膴 ip\ S:^U( ,XZtꌼ;Kyj_m-fV f0E">>6Λ閖U8ÛJm˳%|:?Iյ|$a`k9hȬW^y{?,ÉN 㯺SVl;קf2"+z)u.dI7Hښ0W&@2A@VDi\=0p3 T& T1h1&+gN1n@|YyR݀|  4\iɶ{{7 qVt[j@ 8ݜa< P?0z`#P>"&wR_8^A84p `aa I8 |@l @9c IRnO*x.Je%ÌRf%+!R@9P p#0  % D-ҫ8HBPPH?M68bh;dJ1{oeuu姌M-ʔCy>^@B -2U:>|+\pAA$1R)lۆ D{]bdypؽ?nx(-$44oA<77`:w܁ DZ9Wh.\u^`dJK)CO PU( //WU3FX8qǡfLRkp(liI74ĉx0k~xptGsϱ}{y&ш뚔iXn.fbak녮 b((կF~fMWT44ž /e̟D{og['J"_,$J}L[r}6ֆgU].J1)57#DGzzp9ÙR_K/7۶ud{;e̓Jב֭rx(餅x,]AӐH x=3/!{7Ҝ!&LiuW@xNSYƍegc(ۖ%m?N\Q _|@! d144`]ݤco*hEZ&cv8d%zmEɩ!Al0p0`_0L12EN.]=DWAjDȋ$ܜ*a;0!uRt]7~B'/0_vlYU"C/cĻ}K,ϻD?xp4 Dq(N3A۷|%cJKliAU&UM7'a(vW=kn86H ^|1Dw6mFNV}h׮͗]_Ϛ" 3Z[c 鴙LY==\̃Kpy_y*I+.r4KAx~>uvԑ_ P$^C(P1M~Nq_M3)6 k9+\ Dy$/"ʂơ7`\BNhl-[xsKe"H@ Iɴ뛣}+“~d)&Ej'':TZI䑆띙2!n ch.5>oA);:I˜ HS;wbtxO-_nuuC?#e&\͉HJSʈm@M:f|c,̜ 3vƍW,5$oj*,ms+ m8hmyy 3C[,#/A3 CbXsV\*U1m1Jgk^=/8FTh# 3vgqpzz֥S@  7c*1߱y+^t80M8犂< jjVkcBIIߟ|晀S?s]SÉtӤ^3B@O# pVN`]ԉiӟ1"ƍ?`&&-Y%rժE{Zk4,%9cҢD/F򖗔U"T㙧x:5gS9qN6:P78iUzm#B($%08 !cr/{s\57W\c?kJ!B/pYEv۪},Hon^ GsqPޏ{">!q P E'tS{Edcq)D"jBXd?cx<;}pJ/:99^ u{E7%KTÀP'nE@>2UB&9R=^zyeO56;i´؄<99--ʂj@sALJjmߺU_^ӌBux4QXD")PBS 1.=F78=#uٶ"E&46(LfLUOѴN ƘXw_b#@ٳe&ZL\y]kk%7;Tǥ2Qqvf2E,aR%\Y.J0m->4.:pۢVݩ+"PP -J-(xX@`D#i+kw"ˑ:q>\tnϷɡXD3X݄zUwOrn7ra4cf"yMl56p9cCj}n+W^w]SHX&KJ=O8֮]2w[NƟyݏ|ZuuMDG]LP:]9iRfV|m5/ߕoxfEQd's~D"<4bLo GP|n< D@ϥR #s+D1%nw>]7͟F\!9"?\!}?LhnjU3$H @?Ā> h@`$(M3D wS40\< ?T@Oq~DD4YL| tK0֣iԴFE)7lMJpŀXݢ(@Bn]@h \ЀӁ3%E܂׍7B ^AM!"&!fn(ʔ@c6%IRE{)̞\J@rTcR0v_ggS2٨ߛ3'Cɶmk]plt ;UpH`&|cpȥpl^{njUE Tjx @[IpQ^p%VF"'YrsqpߏV@8@*5-RD"?h αo^~ 0 ]7~2mm|29z42Swߵo/Fu5m\.%'Ǚ6-O: ףt',DXS ~scxi\|1~  ɡGޛ;ӧKMCwLo~c/[n:l :};D}}dY&8CQnMC[VV ÛobBlۆ /D]hh[[nu99`բ --P8ARLQFkgδgb1!w:ovvUuiƪ IFg'3P[K }zGlv濆2H:yOo4kp8^2}zgEg_ozO|#h4rժ;>M|zrӴ[׬/t#]=95,:*vXU/tiMՒ<:;7oxd`P ¹ 9N0@/P4pFtR:#]hn2I=1`pk\uN/LT8@m#TcD_W^#<7+rfo! ۲V46AہAfw.ƾH 8RoqG\$NfH<\ p7cV;>:, (~Їu46 Ɋ ~=gL0*@.{J7Ǔߟ!vݰfMGړ g+CU8gLcxe̛ c~3W\tQf:݋!de!KQPv-JJPPf,[JVXm[c&̞ ̘^@@R,Dw7v¬YHfcg}]pAߙg3DM lpG/;Ns''RJ nǾWwAM2b&=ט? &S dƋ;:}ݺ^eY%JEyg1dŃſYLw|ztqr1b04y8I?WT}uEIή{#c O.UHL})Yk+S$&UDp鱻˰-%< ι;vH9Ӻ|Y1MhvM}XȍRppm+x5Eon t6,@g$K2BQl:lF;R}[;~@ݼ9i}3>٭4'b;9ExO?:ۨMXYμmrCWQ']1hul(RV>kD b`R&?TY_r5cY6z¸_<}+oݟ.藿78-xY> ~C•9=^o“ A$7SDۭGk2xey/8Hw'{EOϩGCSS}XL@ÿ8ҴϪy%p"Ƙ2NR)"oCkRmGB|ƹ///_}wlݚ[~ꩇ^z_UZ]PϗF/z{m0xH;`0l € @P_0=)G~))S$wX)1 ̑/E pi@ky p`mX | X `uufLX<zN\ʉ8[ `PxB>BHG'rn GN>AisDFeU5`;P>^Tt(\, "ӬyW'̀h?^Ǐ?fv9Qʕӌ-< JKngn"Cȉ!Ёv(tWl]wBp>|y6iJHDe3N4p,K%  jiQqb]>gUEPjl!"X, eAގW@Um`W⥗0gmԩ=زc\X};LwLǃ τ8``E--84\u2z(ݻ_(^[޶UW{Fx!̙:bZݘ?CBp!ee"$mriAtvTTEUf1o: 1lu9y2~ӧDzXi<Tj8 +a 7QV`zaEEqxYpB ??U_*tvb ΅Ê@4qǴi(.e>D,VwI97TwowWɘ蠼<*&M"I)o7|/} CY[zqRJJX"!Q;/O*9#B:-I{hǁY-4m̤IV 5&s+*U޻L:14&b$?]Ŧ-N,dgCȎyzɒ`yB( Iw첥w_;P_׷`De%Q1 #_RT3WK-qTU).e{Wy%c䴾&MKs2L4 (+øfZ\8zQ{񢶵ޒe= /z306=P2 ޔtM=y2Y-SS ?F{6#c|^Uɐ*vj(W5Zb#^ 5 ^/r*Q+R0Vv\S9/,}&ApVTn,2 )vPБǏ0PBRTlhk]j`ܐRwڏ?̚t:m;vzCà)ףB(pНZʞOԗseϙU" qS\H*" h~9 X8d RՄ`JPt.H zMYm1נ#;;V\~ezii|)]][E"fz\oZyetvF-xd(*7M׋>yah=: UU#e[6tLE 8L08t իY~>{adHDF?Aѭ6U9kһblTUah Ȣ"p^yeDR$(.F"MC <ϱ\#KkD)b ;8=?aхve-dT}>|\mG}sK3D$*"X01yeoscEF_AƙO&q-ȫr17Z Z1|#ȹ`a L }= t0_@-Keeyozqh&'i~vhM2rz]"bA[%LMFb(c[ZU6D AQсoǴi|"%c$<.%/ URt ).^foO]fH],C2 EJ$iGECSYs^=|慂W3I.@( M㐪]]Sf%>+bo.:S^ȭ= ~byU`#"#wO;>nZk,?iV*ۿ;Q o!1>8&dWn~*0Ёkkk0n+ ˖kOWTh•@=Sr[{{? mXnL0m}Kpմi^~yoŻ jڟbȶ,K:^Ԁaҥ}}cNx䎥KW!_\7YSQQ1֛-pS+VSL6HDQU8}D&牦&Cp8KT,1u4-D1`XUB 1UՄ4h_mv9myLU ,.]4'($sԸ178L9u!j,H4:<T\!"ۄ,W70oR؀>~ Dmza&sЁq@- h0Hm> aFDÀ5bGq_6@8#L~'?xf.-t}tԄGI r!L>P;:vv.\q"IQ_~>ns%j4ZfM 7\w߽a83MQV( HD_.xHeG27OYWr9'tbw"q08h=~6:fמ9'/]4m?V%"$}<8N&)4iW{^oLN3Ymf]J~tw3rp^+'J)ȁnATHT +śJuzLL  C18}-]r/8سXQ;6NqmO߾hg9$ HD6z{!!s(0{Fd;X('/8ozUө|hpFB0r(~$U~6::IO6XK G߸qY"QS'TB$v@(d_sM_8Θd*نf8mmi}+hjL q5S5J(UT Ф 9Phȑb8B]MS8Y*=P}fs`pKA?MH  / NJ]7$ae\kAE' .Z2m2P09t@ LeщB&z%uukx29niV/{VP@+rmzzh48Ԁ1X,iLd0KS%)5j앙Rٔ4Rp8?eϞyxfφ" ¶m,=WHs9PG(%d.-Չ%#ESdzf{@"R>IzSS叼@_;Yy$`K69B[4C-Cmt#EF3&Ty]䐦: ,ll-8giE6mOnj1g-pFF˾:cX}se8–Ʉg,-AQQ_+l9|^7?V@&p-9}?5Šs,u{p8|3bUMD?L²mZUsB 3v] ď-Ji,`h(c^(:j"7Aӈ82]oYon`1p!~)? p@%DtUUm:ch(nD.SiM3 (t}-,^%R9*R{@+дR.6@6Kr&e|7p.h>J7 Rv \b`BUWL8+E"7gYV'<2)@(gLCL9"pp޽c| 6Ə2Ҥi_bRzFKf+5RkPF &$c|>G us٣[;M ]Iw(}FW]."j'6DSQY =fBm-  P ]?ƱNUVbfBa!>ףL.c!AJbAUՈ1!FTPQ^Bw7ZZ7: IDAT%K"9!t^y/O,iYBp yLb9Dj3ǡ&k+19W_wu{7#{7, >-[ގ#"uwAlL]P >[Td2Ǚ,͛1{6fφB| ֭n7*R)VYIDpT˖D8lfItut1+|2|^] C8R*aPZƍ~z$oY*ӓioWY\v3}) R{վ-[2-76n?aKI jh8is}]MMFC2RFf-Ͽ;>l!]`$rߛ䊡ۮP:8X`ۻBOeZ!bG"ͱ':QqfjM!HR*<ؗu6%!$.\7Jy ⣀p4Z,dI1~<ߴx[ArKګ-D ìX 9E0zz`ٮdVbZXgDooW]5[l4pFjprh. @ khiHXn7wi'r 1!DP"- 8'"BA>1aa_KKqdT/VhXbLR4d&dEqvܸ;>*)?qRh8 S> Gy.@_^8]6.&lG.a D8cu25JMQ!AB}!^U0u_!>9V]%$WuC.rQ?@PztFʥ΢JσG 4)ŷi%1gw ^wz{ŬYSdb:;tL_o )/sE\.}& #(p"Fit`"[vr·52[55x5bgBrǶ͑)$]~qé KI70Lbv|%KnߘfS ^ &t[QU}Nz#>P~xslN#|ƚ哹3( "0&]wxӰh;D 24&oeK(RI7 ITJ(Yrڪ*`kip@-nc̲g6叵 R.D](tʟD۷?9_qvoݰᙕ+;[Qa4|yW8Km{xx8 ݣZmrI)qyjp%RZr)$DNp̘t 3&4_!zy>Ek}yHNXk\.q&=U e/5ՌHyS@xP(fZmD7zu(t|*3Yc Y@ QX JƾOp8У(?<#K@elHr#ERuBgOѹQVܟs'7pqf:dY#A,s̓p\˗[.t[t6sB+cLJ45]cBmÆ|sD]kxV680Q^T(*"6ax XEWu56oFs3χjtw _Z_`$7сO?E$2wvd+zzߟ X`$wHr.ӬXL}%#2ۆhpQ|>vchHyMO&eP=֒s81PS3[Y\,/@s 8$V\̧O?F]tƆYeidoY; "g~otel̙lڄTFg'-C]6-)/h|6mDpֆqe#g>ڵtYvu%/*rc"|$p@,jiiY|w3uj02lvx8]pA0 /(RfB!̛7 qz ܺ34~1meM .O;odl瞿b+ڶ5<1mZeq݌1׫:cC&'9I?5\,_uW R, M5͛J%LTQ&{T_գ!JiӤމ>^f2%&YA2ýQvWs{&&r50DzMeZ dEK)` e^7#IWG;ee$ iX1kCrXJr(,,Ⱥ\ !9q ʣ paSN9!\A,tulFzrxA |ܹ'X𧟾f6qMV mfm˖e`&RA,r&57w rA"[0GU.' bO=!?蒍sUUsa<][:+>D/zW1ERGviHb 02ַ 5VVX ]ִx !t|:ӧਫŤI@m,2=_@2!i_($B:VF@dn҅huے>)]=mXhვͥIc8Zw~,\_Si79 s cw4iP26Dn -e K=;r!|SR9X}g)Gy5AHVC^g !B ADBJ1uBr8SA>84ˤAGɣٞpXb6/ Ή %9qa퇘b.U}\W/&K T7Wڛ30AQz ::O0m[{}sT#,y}l߷@C[3ǩVz{xcVy{։4S"dl!>RZ>(h4DU8ht}w*1DRZ6v6}} EU[LmRsձUT$Tuhh3=JUm)#[2H&؁>x]X#ڙGWh N{c?p145Jbp40` .C22a*-mmXI'Fop2*q+}UUs RuL< J#(,rOC$G unk|%ߐ0ki p98 <(f@8T RHB!hB!R(O>(RS8gwi˥ Љ'ɓv#'ɠ%pfDPU؁\Cw/&Lk:A<g;(.vGڢo|c`WVOkP6 pEz߰"Ve%.TTpƨka߸_Jؘ0]G(dv|2[YSOT̚!9ڰjOGi)+-E8L۷^kW_֮Moj"EE8lSq9n(,̅vj9z g !04P-3gg\ru'`R} Νw&}>a)c?ͨ2UE0(A$8OTc?q_@×o65D8g֮][#g.L;'}}Ɍ1!_ܵuͧӳ1'> .t[j`SKfecsٲo+zz{Q*!)PU@:Wb0ֶmk~cѨ¹RvvfׯdWrPYK+ Ayv`9P~+[~r(8̆Hgo4aɪ*߿,J$H@eLs{֮"&e[W&%c$Ke3Gð|`xx]]Eoae2iQU4k3恝#2 `Ys'6J'o9 7MƠ)16y=ޢqǕf[[C9uΡ_FQ$ka["HJF(-NmY6UaD8F^1:;3}+3Iick+k0& O٭o.fC0Ȇ@sun]vq.@(|iYU$W!V WJjj~:gdD6.^ $$@RTyGӺZӜFa,MUHIBnd'/s:,+BJ"`=}Ӭ*sg2!<1O-,,/+P*e(e22Km{ Ub`2Pe (r+ (]_<3vɾMTvI"9eCyOiۭvwR. GI%@!UMZ(t`߾_r,T@To=jUQ34]ߨW-P08oVޏ+(\e18G4U oSHOkV?o QƆI c a &) 3"C(L$/q,Tq0Vl,ƍ &X|r%!o#mCQ Qx";tm~&HS.'hf<@njOOiӴ^Am-ALoil{՜9}\z*Cydw_R'D@×7m?$˿X/{êJ7Opnp^v`A<xb${pJн`4CN@Q_ՌWsJ\`! 3%#6ͬǮ7cϐCzY~?:_ Bem4׃c)4jNa Jbę&XbdQ;x, Pq$PǎT{k¡bR)[:׭&3714܀<MpN[r DbA` Cp;.4Tm-/,;.rl3/^|1={6 kGq``ysQQŔ8Jy]EC޶KlՈQ(B$hlDA\w3Jf2>HYHFqYO8+_ޫ@1qփݗvV ^hzi4#^wISyqi>gĹmg`-DLZPhr EG;۸Q>|^9I& hD`q.aP5R8w>>n&3YF*TU_|og~MXe2G597Red"!3TR[~΋mw[:|>+^^Ot{FUU5mZ՟_l֛#N'TW?} 'mۙLFiZ1y)ڜN_5fty&k$U%h:}}kiN U\VtQ$cfi2ckiҴh 9K,' u8"!nk)AUs"\! .|p=0&)k6|Ԃ{#?`qUMNp=a9nP< IDATGg &e@p8QmGcDd` |l5C.2m;BrOdD?{pxri`SGF5ӁWۀ$`"/O %@#}"n7Yu eY_¬dK+/9tڙ9W+ Co/**`EEؾv?VH[ !GK}Y8DdvD"GE4 ?`P&RQO43:|{u됗DhmEa!;<5p8o7,啿ZwM??D҉Fÿmku& !ri?~&f}1[ߌK=L]Y˗KokN W+%ab1oˣYXU\y= 4}PRt?/뎮jKoQ¶8W5&x֫8n^Ҍ E"ho…rd( 4ڿ_Z-GZsMs {>?>몔,~z ); ut^{UZMHQu6`8CB '`Ӎ1N(!@bZ:nlc)S`*Y4*黬rSw{Xgoޓd)J 4H4I;JF#%9)CX{"%ؖUq#fM8_ ɥ݆+񘒵լF8\ Āј7[iմAlGƨS5UtmD;o|(DPiF{ձlF@w;j[Pr>MQ~r%~"bx$`Yf*MZC'(2 B6l6 bR?l4M. Z>̙#nēj es{ 2dZPRCk`AAWX3sHf`+V_ en_-kg?RUTY)E*!t5U!m+\nxU!P:b%eVToI4?p(+WS D0ؚSӷwy=FMYZ0!CEザwbnfPw8uPۂpr钔 2-DV K+N1Wz~KUW qkUOL7'=i|Bضt;@$碣xJ_ٶ߰PG3+-,/_2oނo,k,im3܄hso[hI GcsQHӴK~6]S)8#b ̀^ < N*0%Ϲq@P59/d]1A^ʸ+*21T˂y!!!E\Qqm='r>xW*eB>@0TXb,PvR)+/O>y!dQ,dHBlBpp7)UX`5K8;)+]VU}-Ѵ:(c^r.۶utttQRR vt\\<h @{kY:;\dT# [[ɛ(BvxW2PUʬCCŖ8B3Ϋ#=+<ځVصKaL؁09n&0t|Z(BBE=c6?x۶9^oΝ '35!_6׹\o/ TW |>RI*B: !$O<qzr!+W:KI'a2#AxA\uՈ粣?9se 2aFRQ&MrJJHEqMeM͈hhx1r Ơ뤫tVVFs8獍YgWiPU0横f"zQ]t Ѐa/c( 1a~55T-%%ꒄbRRTkm5 CVUFȏP5J)93W~qU-yǸ6VB~Y/8_z)ow1_[C)SM<5XdĤS]Q:u%̽MW^餓wŢXj%#a@P")!R(]ݕ, LFTJMs8D^ȥՔDRB%!M|K`d]=oYgT5p^4k9jT} y|Z$zbbrn>\Lq8'Lhщ;58sh‰o\tI$&N<{޼BvnV|W<$坎smO&[6vƘ |޲,Ju}$@\<Ғ逇FUU87i38mf sTQE.Y!#i('i&d{!&  JDmP u.ceqd.oukO=K. K\"uܮ/z\_ <n uu %J@(TuuBQ0&N? !%wbYɒw4Q^j݋w z•W8|R|xc#,RsPxF'A]8Gq1<~??Dq1mGQ$!,44pmmT"9R8xx1pFM jj0gFBlmQRK#=="k{!dUU bR9a P\`c6rUUMZ_ =< l8/X=cPXt!/^ƌ<iuP``%$!hiA2`xB~2g|u<<scP$2Ɔ tf0"ߎof8j` ((_M_Mc##KCx)~&L~?}hE#4} ;ÙFUUlˣ濭὏`&—pt;)!BD HtXd\a4@ ^A4q) J 6{ #ʯZ'>4@cS"̂dH."/"TYWUlAYVxyV-.H3VeW͘>>3. SUಫ^D8cR\FO'4YR 潈XhTkUC #CPf^P=hTӦWOUXee}|>)SV*+W_!*d]bKDe%{K/MY;+TąB-z1UC,~׿:HiL+WhLm9B~x.yy00T3!qEqYB 8ҵK/V4n4qqm7̀8sNIyCD*GlEI3Vu`q)/t_ \4N MbCs*Γcp3R&?}޵^[_|p3'tZ&:˖vU &s^:@E=餡^p\^Mc qiRUaĪgsJ-B8TU1~ OTiYH&pRU՞X ==.L .~瞋ZX FI e)J##O@!m詯0ժ8h6y[?,1siPNh~r㨜~@poP`ʕ&L?nR\yf|ŊkEGm KJю1u AlOP`IGzXP :t4iR2)'գ$ I (c遨R1 7HHY @BƆҥ]_Ә㨌2'~Y}ϐdM\;J].QZ&Y{,}' iIקm[6(55b&AW2(* Cp)(ĊGiHD!TrtO7W6s:JઊQ0m>袋B|/ܻ|N2 0,k(X=zjpLWT呺jNl[ (6Z< @TM =0k@$lSMa1R<+VKaD Wg4JeL\B_ˣ.cՇ∵ٟLzsryp=tMolVRa$?(@+atvu! ~#=Rı'>\n 9RmoUIJ[~ΦMnN5VvUVF꺢[K@\fl~i1K77̘qHW@TR+C$ IDAT,2ް[-#UԐv1ݤlg(©LM@ ]8 !EGsakio~[ <75Hga#"UU#Я.02^^ +R BgE_UV 18sVMS !0'M)Ӹ o?\czxΛn:xpE͍/B&Ŕޭiq6|~BKH6)%DJǧi=hZزv qUԋ8|K @ `k(}uΝ;ɒWWrٲ J ǝɰ| !49Cʫ[x!A?}-ش-!enY]񾾅6-XZJypƹ\ufKrwIRQQ[fYsskn Xv_v&2o%(R,ń \(Rbc[RB )J&\ ;/(h % "گ(mm#廝 Cu<à \LBB'@ۿ?AyxeK,wn4ؘJ-lKY2]%3>܍WW$~*EYmD%d*ʱvJ5ϥ>cm؝JٔEy(|sJLF8YTTjxm\t}ᅨi;:3u <>^Vn)G=Tl*hlEl? !ɶmG76R?<8e8$TV^-3$(- 1iN>¶'QYG0@`loGuu!w.e 6oFM4tZ[d (ca[PU*#t\L]](/!B{;LmmPS@ hњk=׶\mKA,F4;1o^QSSs?ƏLJR(ffzzei"!s6D(1+$裐R$7O>rxըSOkj_`2)ĈCUHۡpg'wt^{ގt:CiW^D"Nò<!dsŔ)OਣJW]7]88\vA XElAG0lUUF 7ɓPU82f7ldѢ eġ-?zdY)r\}тxkɤYرVo2[^ -SKO7q&ƍ[jbPj,Lb haEMMɉOw ;j_ 'dqxS CZ].QP+CDDGbTh٪=jϬXF{= DO\[s(܉KpY_NE")hW^R Q&LPkpc >LLlؐ}U]H!t) '+$82wa?hi=6o%$nh%&˚;a7G@ \J9K "!5S~w =vaB?iOnxULC aHgPR\p=ˆ,D!Bvv@q'tM.xJ6RCDH#>"ґ1.c} ,LB<.ۖk. {+cҝ!7 |22qwz)nj=fe@ /H3ڻڙe*[J%R:K/c&7lN#?P$_Չ`+YC޽3ƞq_oI:1[hޙyNJf uBv1뭕$T)C"1e|a2P@>[lJlMA4m$ptg睇p> Ѐg p?fnÐ.1sƍ=sr)10 6l}d(̛]|@ YP>q'RJd2غL00< Bk<0Y&Q_?2wW_ xE\y%>() 7T;I?!N&Mk;96RJ--MGT8LS^v֖MO=:?-EE%N[MS ћDIvkh_x **i@)֬嗣6XtR~сGQ|>TWcZry :(AJy-fr75i̾} gӧ+ħN%Ķ%pvd8YjG#}5V@)4} o).P+[AJY0(=8_O߹p[.uEn~xmmI9hke"r5iiwRB%s{Mc/,uf +BH^=4ښxrҝUTX:QR Q;3vmC%(@L5.=\f Kk1/y)U(YDn?_2ʺ:EQ{=D!<)FQRIk苑o?D>O7E|>֎3!%@@>a;DOc$y'N7\C3M~t*J#t.FsNfč@ Ɯ|^pO ׭ԃ9~€u&F!ǠDy@))%^=4sU_QR{D:0k*BAPX+6E4" &ZiAJ@ ^NߖN霆OWhZL\R|["m> 2zkp+-yգ /;wS➜>I$OySG 3}ɩf4૟2%*6ee۷R)I}VL"N1 @d; vϹcgD^%( ?υ F).`7/r>y߷SZ?@o{>zt rͨF&$ EWUB8NtJ)Hp~n];?:":xd>qT4MbɓG^ vwwEjɔI aH&UE%Md7..;KJ.Ҵ_uB CCTTTyyBHါG0!!,LT͵%г5e3oTH,ڻ|+ky={+cˬ^%{rSyuPӄW8@kt2)[|:녽~_|== @p.EQ(&;K%%%Wrߵz{s'`Eё_.D~`c_=@A) VRKeܑa(`x*!,Pj2r*+:sK~qI8X.\mN)8w GHxM^IXw}$T \>dg]iR0 !gp0XYYZQ>+2 :Rjllj) 4;\Em[~{EgӬ_bA Hh ;)z( 8! #ۄ8#/F%J4'p{`q P`4W@P/0?-YrP) =W"K_6qnTʶ }}ems΀V@QIat P44Wĉ:cuLb ɠ3gqȪUr84axm-ghXl6VR箮@gS Pse-Gai6hmHg#ôiX&!) A?#x}O~;jkQZJ&LXc?A"%ar̟ƃp0qTwfD`:=8k~i#B\}.K.{-:D!̝ku0 (*ۧJ&Nw2k8'<12tv/O"rX瞫}}0yxh`:L&<?0 2zr֭眃.D  dx9 ٽ~; {Ewd$[}dse\.ښoFs&JRbx ]!AR)W#x}r с%KPTDzz,WUٱB!(J 0 \O)-1--p'=BZH0gŊ7~e=[s~a(j=&8禛 ڡ )hn`Kp8v|jDW'^Pۛx:`(tԐ8]˟^x޼yO,OHPEwY-!BPzwٲgtG> p0HeUe4JFJ2IPf30q/P֭BU]8kb.3iQgL6V RA: Uև)2ʟ]&BOR~,t1N y  c_=2v~ ҭ[z&-9\ss.`aW =;ŷ…Wn!UQҴk'.CǡΫݯ₏>*@ bGtljj>o O-ZK:RQwR~ (ޔzRnHKY x"v  a-" }P߹lO@7")/̝0=!}ܴ!&q~OR!4)݄ /X8YH:Z.|Rվh[m8ΣR^*eTA!@o)2w)DҘź~Wk)~;c :wxH3Jz^iطL5y˨<ޅbAe#6K!!;e[++~#>AQ `C@ 7F(bP@RB~/r` >B״TU2D}/4hg(8M%nmoϥ @poP P B!R#ґHI JEaRhd8!.w(V2EUBlUH(urʔkOд1}}5dĉKFcbM*δlݭVK$%yl$d 70+kc! !%$$ 0mllY}dkR}ΩѲyg2o}Nwשz~eЕNGy44^^N'x4?iFaiȢk7Zup~luQ8?MMx޽4Ihdp0i.ÌK@AYvS_F--2~t#cic„a ^!P^!+*-_y%_]ǎU}GCC~Eq1_=X%/s1GN2c&fL㎴Ri%EEHB!ڊ.C3MCC/QKqe(.cg?vl+cRb"_UY޷O47ki%=w IDAT8xP^xa +uKoC)\+]+5V5sO5JVeKl;_ii"ڕݸQN8kg<~zOVrAŖ܌XPIx4vժ9B+r&S[50n3W )ox|ƆfIkwvuu^>7sf3q$b- .IY8?4}"ΫDxl.6:z:I*Fg zd2O ➞/^0,4) iݓsa맾KӍgsQ2Ļ?o?tUq:`>pZ_.X < J~2k`8lFBueLh@Bѻw~?(2nYVqmI7{\:/\G*M BT 8RB>+l ) ?͏h.-YKw j&wrCoL$w%X)s{s5ZvF`䉼4,)&YhGURNo4(/-\ Z':CI~Sc#[.iG oɤ)28l9Տ`bnV<"xT<%sEH"58H@s:#u]lj3O>oc3^gpqS~TԏƯC s;ZQµVssO}K_ؼpIK}:9l%eho3ϯxO装9gI) yq<~^PGf{.8k 5_x<㒅 o>Ҟ=ݿb,`gC]]»?tAt ќ_M}̱9D 0c`s)S5a00]gZB&{l o w{F ߱[R\*cC[Jey?dF iJP=گng2!v{p!< 9 &)+ hfe'_kǹ(H <}^tA.!e,v΋9qOt5*Gt@Yl@ ,MfE)ŏe0gqҋq =}\Ar +!,p VPk [ƚ :yKvyiPq"~(ZW`'p#:qUDPg &Jδ6*)Q,ǴiiRp]ލr r[Y>9WD,XtvҳƁK/x≡{7p]~?(S q3ṢJ3$bQ!%JK1e bx "ǡro6.ƀq HA~? Őa̢V|`A4͎6Zy=w+i¶iZ3ȹ8#0Ll/yCӠQx"}z`N8 ( 06IVY > W Yy~6} )I vGK97e؝0<|?TBA +;q#]O>OJt‘N>zȝ0A10vm TVJ&OfK<+D&t$Zx"W{^^3eJlѢ}\ " YSFp f̈X|9%X1cx.(EˍpeU==5R-/k+0aHb;oHph}}9at5{}t4WiVc^uVHʝoԓҺ;wcJWW,(}WWr MMs>l"oU)38؅_-pP\%rdՃv u̙;X[[S*rn>Z9q )y|uq+-C5^]ElA%'kKrT 1S[TV94E7z*FVa2̚KiY&gJm.Cȗ]/Q8[ZEَOsk"?KCSJh6鼑!*HiQ3 7xq}~$D"x-ֳ?b&09gHI #}ƥlw^~U  +*; }rS_,V3alV{zt)#yE?s4bU|ȒcČw >p&0 ){N(W2jg%b}љgNNR[|6ofk;O-,hTv.dpkә\#\7g@MGɚ+W3ME/Im qw"qw 2k|i֩i /O>[oe?~DnE%}wƍ۶-6͙UU#1u=pxlc_͞[/uYUQ f29uR(uu]&O jw\2١T;|+Ø $Q0xx^d4h p!Ex ]XZ0YhH~7$BР] 61LGb w٣ٟ-~3`!S( @ BTŘIm@pQbK Ԛm7PͫL38Di]ws2i*EIqL6]=( \ 0b =*~"~I W{701f6n@'wbt #ǶI LAD+.ds8, j˂l43h0=q {߱}l;3A2J ί8$0-ZQ |:̝e#YHSq{tQZZZSiwomh Xl(!oDp#0uҀ z움F^:,drIΙU8;׮U7?.n&㫵3}ܢr{{4ЗU*ԓ cif(8yto8#j66\vt{ ]'FW6mR=Lgj|{DZ1*49Xuuϧ1o@W;A@g@ t}a ,km%W,:w|_5^C#W2Y泘""K94gvK$XF/r9m+YUsIURbhDH0^e P%yskd ^;I/xui\Jz,{q=m ztT_OOHJ_W}#&nJLUK̲9^MMʟEN&^"::V{oJ60LpUF^vvwʃybiՉ$ 0Ne\QUV!w@4`~ `nDq/  LDh3b^iB$se2DG,l6FZm$dMM,TjmXVowF.-^ Fl`?q& Hν>t]SDD 9oe}l֏1jµ Xw~?8ڲ>Vك[=, r"!2v6t5A5IJPikt$ұ{h:cTx0N8 `K] ?g$j-b5Gg-SBq("q~h]|6$ (x((qB?npʃVaPVFyQq_@m7^Oe ۖD;5 2&4 DH~A$9yN4A]6Nڶ6<v!(!t@-pU7. 0 gqƳTveBΘ8)i`3kz \߬klٵ볮.ZϜIJD\~?iwi͔JM3w7uyXS9DΏyac05)J1>jAlS6mXFZZ?O? ;:3ff*Hc9`1T }}F mqx$pl.Jᛧ©s(6F*h^2 oOر# /{eQtvB7j{0baP #F`uıHqƍ>,8Q66R1P=((C0T8oSv,y& ɷ o<--^amf=zê5m3&f_kh('u}3J)vʷyQ|GgBb;L僪Jx">V07KYUmpj¼" ,6/"eqGdz (C :]QJ v|ו$C i8|DBuXx;6nk L}xi&)8N>18!+WDneq4矣/AITVb6p7p̒n0)]څPs_[FK>-SRh2Kk8J)|C-SbYg듭N7}[|BoFݦʚ If4" =:uDBϼKXNDHiKp,={Hc!u]]HTcG<ݟJrV(.&" mZFU"I7c\3 c4a;a˜_ͿJB`%B(4ep+]uv>rE9Њ'_z7ӧGKҔ$ F(Knq U{{<UL$ޡ^''2;~RR^5P5OBasjM+^[֎wxnc直ЧMX.9@2C_0Zسѡc-n!˕ЃTĽ;@yce%91;n2JGWcD'ҋgåL;5>==ugS'v$ vU~( yNu~s$4XhR0rj? YN5%'QfW}c»yrqZ Gh9B`9C8EЈ>UXZ LA|#72e4,0ϡmpѰ>x Q,wRfsAus/0(j񋗰@cD%@;f\ӘaL<.L+KԢi8|1Rmۺ8VMm9G+Ň`B(JؗHe ajHҀHC3Q[ahNP^; -]皖d,sɹд>(6 E 2ۚN':iRQGQsg0'?'D_)tb>, , ^cIr125&ٵZD%c IDAT~At;h>"Midah( -[O/z<_rn I9'.l1spphGGq$RiկsР*x!ܹ"錑FbLiq*#&MTtV<ӀRTNæMx81n~x6|>ML̽ b.Ӿ*8Ř;ò08~ӦbLs,ï"&N8Fa\;˸ Imc LBȎuƂ;vtZs5 Xl5}^O> Ѩx1jkA] ֯GI:#. *yxl)~np"W|s4K w9?(-7m-2\a,!^loZW/cҶ?Z skn6/#;—_ !㣔saw*6O,x8c87ׯ軛5vD6{?sH^.ۑR)fYT2Ѕ~^-YkX 304)?_& f*_qOj0FTV^^H` d~MEF)ƚblS*)1V}a)*Xo(_d錖:;?a 3AfÐ"6tãk$U8U>䒃97G@txtrh1X[w3L B@<4س(8|]'}}ɓRJgM?kΗ:rw0Ҟ2@D,>Hra \Ð)uE!sca^J<>K}X~ǜai+C=yhb,5*:w")f,kduho&/r?RjcckKKKhpp\qcu]aA.1&(bRIE:>XfR~=㭭Gs+Ϊ 9sNk ])##QDibhHֆe|ի_<;w.?cLكi`@ա A?LF_<762 mڸkyI%nj6"ÔP(̙hpRFWV%Sօg\6/un6Kho˗ӬYNe%‡܉WџWX7p`P㜙f\妖nFN׽u]4XW1& `{.kђdZ6/[]&d0jB]cz١AnTTLSwWWVu`6࠷f„ ݴd:Uuvɣ-G>3GڶFrud(Jn; 'miɄzTΫz1Cx8 TV\mJ7bh| u}fv,y/ԱsBLTw;˗DH7KJ@gόׅ-bb`TsmEyn׮vXZr0uN~fH'u^) IQV٦f0quv1v3n%_-Z׌%Rr9q8=۷wCtuf2 3x\$TTTnK&3֟+#M@r[%eeLdz󹶽apm_ 4洊8WJ>}o֥|F)8r[z˪% <#C/`ep@[([R2&+jS$\ _T9E9ܢ-  ;lUX>_.iϪ\4n`d)gb1`$9WD?aL3 W)FKρQ&ʖڞC}R-|<n`)p'QPwIwC|mb8bíZr{1Pm 1r8,P40kEBnʣ,Tש)SԣIh), FTUmm"򦶶gaCпnk>0.}&vˎXR~Vm|ݷYn+j,U]sOuMΔn]"gܽee{TxqPy0!B,jRfz9p_V&t);NŮ]B|`08wO?}a2*-F0z42a)֭'C7A&t%Q^'7c< ߛ@ 8\b3;2܂!r.6NZÎʅWO6`ho1҂z5z 6|2qqm6le _* tLtMO ;i0Y`Au pBͪU{暛=ܴ)q@,Bf}=N+iLDp,aݟ[+Bl430^k#tuueu\>/FCt'7kjkaOoʂߟ  e:ӟ0=;W\(>"lZu~FE~ABtf;Cx㖂CSȫOEm墴HIWt{cldYI :uqxi[nYr^̹(< .ݗKn\ݻ7GHsH? dXq2b^5Y*v8 \MÐ)LqXMe CsDȧn~K$ ZO52u!`"<) *998ro~oj2={2]]$۰!;i9iDc,c&8ģr?cUrki4EVhu;V;y}?Z iL]`:MmP  Vwۚ 0Y˜ݜڵaDw=x**"(P xl&Z͸{{@7M"HڶFad&ntE@X:G-Qmv-\2uƠdknoadDF4iS:ѻ_dz}U#CQ4Ƙ"z`KYɂ jY TA{hS_@|U]Ju#? ~k.?99#U@rƢ7/^]ef7<>vƙ{&hjuvVw%xVQ]ƠmX<. DD37huՍudμz6v_fژ1jZ5 0Q`a'IT$RXvH㬡ϞɊ܈ZMTE%%@f",{>ly1ҤmR ẲT 8MMlDKI0 pu48S ~YNek"%۱v-;|:!S$b`VUW=mܡZ/cJ)wACCQ `+ܚzۑU9TWT0IuYF'oX:΃; ڧS3W_MX&;q"$0e >OkŊ~{]ךپyC,Pt nK5)>ne|3:(`0/} X=jF "eI.2xE]{ۋײHA}q,9J_͞o=ɄdRUb|d*Iٺ_r墍?M0>?<ۨh‡'ŸZ'MT:W_z45|!r\>g|>˲ W趦ᦦXl\WRB|I[!~;Ynž L ݥi4m%Jm|x{x`0@8^EnN9bD2ގer8`lѕD3⬼~i6Y9_(bd\,%؀. K%Q)2-b)lƬ>ߦt>^`,#R B0tHqr_QDom!D-Y^f@a`16` @c 0,+j}D〝943QM#?-3 1 Q%P =$)W_R~+p+W_eWTSY{+c-:t]z?Y`qz׵;}oyMxb ʬfʋHd>5iIWg۳\Lph( R,hGGj޲4֭v3d;@1\E>(B.LF-,.cL $B,9T9e QRA[F9(+choK/•pֹ[y*[i| #065!)q"hW\E./_.N-8`(To^X=uMH&7Bu8RL3fl{^{msk^ZZ9|>0ESyӧcjD`aYhiBK# xM9&oLRhhڵ n8~c~< ؆`b钅r9D"hnd۲-9sʕѣ}]]i+pTm̀%š eNF3O}s|qjgO?1с' :[YD Zi[n{g5x+)9*f~<ϓRS5 5—RB5o>nχ1ע_Cz H*ty-׶oOaGK 'RG>@F"D-DW6@2PKM잞܅JxC@[{*1xvy99J)øƅLVE)uz}?3\\^k;}f]Q41]Z4*R (jɉ]NĨQADF FEQ:go[~̆=|99pԵg]&DAi`l i:iaJ(xﻏS\dKh^}TXQ *H?rl;{7j=B/PJ uEvk@)1kh F~`ɟ}U92w#won6سfH1#FY@i)ix}tvbn\sien!(DE*cOv<0VAJ d:p"Jz ,~ ^׀_6 \ٸ1 WR(I `gqmWSYc \ ͘S]Rrx*nxgo$hiooժe>ԃw?NȲ|>OD^2:IZhZiUUSikg~w..4~*cJL82cϹHDz-\XHl7͛K;ƀp𳃺]FF:5kq\<8J)>uUE44=fѲҞmZQ #}3IO[ #E]J; ^8Lg 0ǚV-.+>^aq 6@CBxc'PQoq]7u2*uH_Dy?5m~\nR @#:WpӇDOr}]?jw$(v] _A7~Z2yI@;\ Z?q a y 9#5;jT{P8+<`3dq_8rs//o/* ;Y#8=K53VG@cciU'>ّO}21gmeVBR;j5  'e ӥdWwI"_dc+e.Lg2:g̶'US4mii6hZ4\k޵s;O=?w[] $0G4`H$RIFAi< s<+bߥT ^/} 2QW00WGC-ytAJBUUPߧ|NaHJ)Ć fc|c.ziO ۋaptM3ʄnW_=g^pphx%TWaY080< N)r%iʱ4 t)0{zy3.kq`:ߏTt w)1xezDztٻwיgz 7ٯ2$^욳q2te֤gc,j@L+ k*ܲ#.Hca$-5"ݟsrC*p;kj +%d瞚z l9|b̽kܩ'.3dg4n{?^nn}YfP&colyf)!iǃh *$ɘ, :D,vL )ԪėO{>ES w+ˆ2-P^CqS@d"%@ 0wN`?^NTTWPů IDATV$9Ic2,cL*0FѨ^]ݶdhj`f*ki.ټũHٖk1\1 Žwcޅ8b*"{c+&M`g'BgyTWC׹cmƚj@aC1"VS'{,C)\Jo%(M'"F]DYw \-\4gθ)Fa.<.4 EE؄ Kmk{AQ6+TWH&{<v[OUimTĹPW55~M]nt0)p*SL{Ia7Q7/9ׇO>< E,|" >ǵC׼OLoxut,K#XGȸ*ZV fvȷ׮f dY3S׷N=ꢆcmy^u:?+M *~qrR0 j!OxF;7}4Qq˧R̙ Z-ԴEBR.V`p:p P"$qK"- çLIor,)4u1Xe] &!~B`P"fV"y F.!?sQ2FB'^oY$ܡX;(\!3(W@ZpuHuԌu $Mo"sS|lķ(u](&[FN?h@`"͎l~='xs߮UwW8N#p&qS Oo!L׍_R?L̉FG\aLli9dE 4)hŴvW"h-v_S)ҷT8oQ:t,ח]b8?:OӢ+.*JB/ĕRyJyy9y.^K1鱘Ix̞}mHY3~Z r)i`f{K#:{LosÚiJ4^ ܿO=%Km٢JD4:DS`\0x##x9TV"c[fsQbNXp]uײoA@ua-0ƱS8dL Jց{XަBFqIq3?RlC Ni zz2uuMBhU ̵2865GyhDGmŊouw[,n8K^#)ƸàK/771MjnM#R{P)@@IEE6}mCGk>NwpEո^dk|R TNeJUww=“EDscp4\xHMM޽^ͭ/Z@>y]"|43qm_]7ݗ˿NleAV%9gx߾-wyJav'rL=gp=]w-7[(u+E] H!Į>C}t2ГEN>h$4<Ѝq ;]rj^vRlu&Iב6-lxO!o;:GζXnʵrṆ`\ȣan2n5 #8?6/"ƴfɸ$G㚦p1p13, r)D3pF.倀aU2ܿ#}mEӛodfG9Obdc)lڌ.=h Fh-N H0Yr`+-x8f$.j6qp,g$LKk[L5rI"d, *eDDm[ZrRZVZ RWHH%7_FQ].\<s!HT\f. -[}V.#Ls7^9 $m%( xoiwu p( @g(儍%V;o+~J).cR@:͔"~UV@,6nDWm)뵀^hj {l`xp*Av@1ۨ p)H54͛G&S<|J\7@)[jB GG''+G{<FFEGRN =]xy]˵ ɶE2|,J}Wcsn>/gGX/i۶+cϖ8RJ8cl(+w]c`y)?iPۏY`uyGLhr틏;j#Pw7)zv&wsK ®apiif]mk( q~u~qk8N"JK!D4?z3ccL--;"HI BA`W*<*pAp@В"D8,S:c+exu/~`ĦEቱ̱od2#mQ$up6%{C5[Fvk" "с$PgqKq MFd W@V 70d-s pg~b4Qx&V2|&gdRXc2CW>kߴt{cJPE 8\ Ec\.Y*gW2hZr{ `BR2T̜8Yۅr5'B\ѿ-tO}=#8>D<55DB޽K\wi,)⋏^V\B_*% 8ljc_ >Kh, sM |ednRx iD,a{P^06FG#UQz =v걃S=&ʎ47CB!ݍkaoۃ"u5oMMŋlp4<4sgˆzR)'ӦMR"bDׇ^b3f[jSw9(hl{ܵ{1w.&L@*T `qO:]W%P^>Nm¾bdIpap'Tc Sƽb|~8=N#Ak+ 2̚-[afQͶ0ݻ巿]_T}9`D8D=Cz(,ک>KTv4kcÒdNk]u 0[ 第^pZ7xrЃ{Fܺ&>{g.—OSe-[޺uwS'>_L9lJ)P$t]8mU' M|š6> p=o^{-Ekh4r˲[~~KĔV_bOق_"_]/ J*22ѥl0q$唰ZubKhV4Z=H,S"X8Lv tvPm[X& Osmߧi]F @= ,Z550bU#v]` ⒅D Wz,ڵ;⩪'C Z[P SXI}O|3MRv3`s9TT GTh8}}[VIV?JO?Ȅ3I=D";k]_(tn4IsXIWOA)%eQ(e|ٷKSMĝbS̔˔% ElTa! %٦F9HtEƀm!S"pL)eִMWxx''PxQGc`~PM_Je)`Ymd]8V_K'ǧUpU8p)ʪqƅH$HsēX j(H;!-!K  !6))R==hjB:pg,;|ܼ'\U^f%`xI̺\ZZ癮[zGd&tX,חٳϭ\ZT.m"a>:կye213tL ǻH 쩄E0 Ųlyuvf֮/!7l|R>&L`C)ƍ# 01% 0vO]| }\ՈDE^`1 ::PYY4]Ia{; /tJԮ}7+a bN#xI\x '>>0:HKvGyy< fA1[ƹ+1 !) 9_{G3@A%+}pکحFEu2j?"^:yNaFsLJ VT[@3xۊkx->`x#r &QIMv3I*Ef6{vJj5ČaJ&3k~t]FW:R D !4]")|Άr*b|F^ ujEV\z@ kPBc8LC5Dlu10T-(َbV=W:#Z`郶]N6H)( kXLq/э).xo%Had'<+H`RuʼE:FM& #Bܲ嶷޺iK "ݭJKL# uC/*/mKOJRvŵ M{F1m۞7o ^>\ HJX朇Oh9] %UT`%g3TS},:;ēxl[\pQ)l8u۲o^^ZԈm;>ļyߏի8=55\ݹ[=;t;'!THЩ2?z 嚦KDPnLn}3Br EE$%3 rBqnwXrcX8q:~U=ʬDgx}3מHqf_8WMp<^veQ[ZCyՃ㾃u3_/Nw?N|4 NRJ]CϷ?+PI5Yg\9mldK&{X^ R^18804]WD;7oi۶&~cL;y6REo~Cu8?@hU#CCvO'a8=s_/ZnX6뾯|_mm8pΗOQs LJ5<,"W6X|m.*\  bĸRȴE矫T7 `TWwLoxϤB6.1FrMeǣR闆131`NB0i~+w+TsxV~KI!%H*5&@s 0ŋ55UM1abꐔу{${z0=gvb(]G66( ,t5|ź޾d  CJٓl hB必fw{0i`hŋ]sDZ>nMK a*U7cFOdq<xQ@l?U+wPo/5ݣh J^\Qih`ヘE/*7^NuUNK %  q 5!,9&)o1w.A cV茆I͇cORY]5u̱3 STzGUUgTg9==5kr/8=e!a(!l!WcR ~\+t0|()+!)!󠴳8sg?{TՙlЂ|h믫RB()z0cXN'eEdi1q1a+={i㝄RсMEzg'r#g\461B8r2xy~6?7a? hlG'08>̙pKO$R##%rŕ(ތ !$ ])庢'fME*um!SGsQ :~#{?[]mXOO6uޜ7/VW7y=쳑illw_bf:NN;ɯ%Nz١s<S3nJhWo404M;d#?iO( ćljc?xrr|!2T^w@!e`?<(w]c;[~7!8c_~Tv,!b8!i\* sLq| (|UiD2H |>2RbB).=p|t`1628P[i{kq]"73bʐ  cjE2F]Oϕ))PJeuH%MTxƺw  _1QƠ( W8W0,Vǃ[H\b7+T3tC|qF 15=hR]RQdZΖ=C@KnC `DB[5قd $)M&mL&f8?8x7`^; i+.K-` "Rj}VJґe/;Ц`2'66g_K #U06MM5^yIsڒb4G[9 ڛ+$& E ]/ wm/zLR-Xz%~ڻ{L?_=)5G=0^paҷ{whqqo~Str9l݊_0 Cohv'Ϡ@( M~&6s~j˹I'*$GIBJu ]gUU8,́JKs]mrJ;'O!=LJ*@B<^̜ Nu@L(!C*2atbD IGq)V IDATH /kF0MCy94:+fKˊ{Fu!}*+mYxXp[S d Q8q \Bko$,~Ҳse$ʧEG؉ƪWp4N Kd8\-8>=۽'y?uz_ߚ|.hg5>E,؍BOtK|(3t jzse9G[B.tPhTXl6!3Ŭ\?[Y|hVZYy`OoxqSyD; -'H ɾ ɛͯ]Mv^3gԀs}8s*NGՍ" 3\)==tTJJ- ׄ/snR~GF j*+r\J=.ccvq1 izEu3؇wyh-[v[ow.ΘCI ] x-_ ΈhoUn )*bɔ7eKsZHdâEC:jk{_K.UWkTg̙ ?%e"o`ݺH_}҃6lz@z3yɏ>:Ggϝ ׅ&`9C4 {%Xs67>9QR^̚ k9Fݢ~ʿks"2An3*Z15@NaΙvU@`̜ac\LJ w{5GvЖxѻ {pzAuDzL]T@TnV.x/5{wn!ͣ'n;08 &^9 [>f8†'rV[ZS+qݵ)~{&̈́X1πQS/*,U8PGī wUlSP$\ \kcog0t}gʕ?).kjuݗJalpS)9ks@K3tMCcfCWB ah^Z v66z0#~(7-1C䄉ʢ@_HJ%ui,`rum+Mi qC̲xSS]~}WUTtrv\!?si\n}v"w$ a@P\dJh5upB,"MAJW.m]]-;;q#[ۂC*$tnY1-m[ifJ͙fY_͞5 G{?͛&C!W)sZ;7W$1ؒP6HlhȻMꏙÃxk+|sg?"FONctRBߏIG~ ҅e @01DCq4QU:Xy SY aZe68+Q5D$rB]81hػ p&tr*+c~H}}X C\c"3̚&$Txf-ΚJ)PR NQI8i>VU=g.ܿ4hh/)e.+DgDE{8#<>"kk3 \ƌtpXj 7hs1ֽot[+^_zpLzqOQ%}4S?}qw>!>SKt.+K Ƙ|L`D3<Q_@+vE>qݥtm9߲jGѡsE/hz]k=ohmlbtv78#7̞Sd0Uj3X@eu=A9 B'RpRR1<8"$UVTfa\&ӱ/p~0Zj>L{ID$ ImQ`߳2uR"swx{a5U# Q[=ݲ-`^W7ܤ@쬳FmK XUiٳCRnwǬΜ+b j݈;TqcT% D SŞWG_&^^+_B8 3KRKQR9:":"8J'KϝsƊE[-JDO<1gNF}G\y"G y6,gOcn2ӗmlh}2^]ꖆ8\ԄX\ -:kXBdʩ==i#ݨ͠%Q]iahHf f9"e,O&SO7FK$ϟ,o7_aKւi.#L|>UY ũDҗsu%ր|A[ߢ]oJq`' 1ZL97cXp>UIS;|@^ >]M_+E"4سSo^t]nߞt݉&'M*Dly8aXdҿS^CA#"&ȱ-PnF&Oi-f[~h0D"۶mׯX ļxݏF7]{OzË/dRHioy"D5?,2`.|Ï;yҤ_r& 9<b@B| q `DFl339دng2W8"!Vxh4{tC͞=LyB뀗#Ưi+8`5sފNZmeVeڔ@BƬ;b*{0sm^kf4ES4}F'-&`p!;$B(  ЃFZCcp89$'߹s͵gϒ*s?@Ķ9\v.ڰ=Gܿdv bU@P(])Sj\1n%n=,%r 0QA<.4wPjJ}͚cit(En*$݉=+h @@1൱. KSN*b5J3|>nrmԣ.b65VyŲBsjm8+jIX9 ގF*-#&i::敄D'8X 3+CZ\5zz{!%+Cj2v)^oA/%Oq cyϿQK;ceժ%EEÕJ4*i[Y0kd\oa~/ *``YBNt,44`4֛ʙgXFI.Ӭ2quO{{4MMeU6sK^zo[?;76u` c` `i#.ZCƧ9ŅW0} S:?!QWW^}a|@PX^&.wAѲIQM ::};AՉ_L0Q#x %ShMMY#kIR_V\- ɚZapf 8}KKf,0K0sTaiU|Iə$ QmY ,5IG2b; `l%T;83o -NﴚwݵzE7nb&ƌ|]\|%]'╡Oc?bZwLQwDBG1߁܇?ݛڏNcM&X'3H5ͰUhɴ. ;YnkH\K.ϭ8wQ |6yS5^{,,}~ɥ-'ֱchh3gѻFOBƹYuIpK+_SlJ i\3 LhfL>:&LQ ɪp¿hm=g;򎞿uD]Ā20kCnѽ8綐ca@ȶtn\ʙCkA^O@Z~Ňo '.P9*œ|~haCO?EEɐpa-->:U 娩ܸqE@"\ kpDcjԗ;5 n M1k}'`U ͭ#14i5 bs/Dy3@2<,,/bqq#OGSHPH/-řg˗AGGǵ^޶K1w˖?yP$࠲l7OdRrZuqFPa )?Υ<8}j Ι"с7{ ӓ T/0X<f@]=8$tvcOFߏ5t0B#-p9)alllb-;R^tqpMr]'Xo {] ً@FsO|>RiB g୷@CNBockI<=y=٪ QܗVh I  p8: \>50OnUwe=b)MNe~7yfq2Q38{}xߎNkJ)%$Y AU_NzEolQ S}έUޭG/׼87kD<-+**}nĢ>_כ7zGCއdppmrDUf` Hd2D$| >g~mKqy@x5aG=[B0ed!@cfx/FݤIG_IF>* .rO% =/{+?."۾Aŀ\+i7{М W.{~ú+_ydz lSB"gy0II5i~ [hz &-\P W}\S;!.nZ-!8~/GĈl8d5 ,x[ť6̰XR*ı+4߉MMlݺxꭹ75/';%Yl`hD ǡhoB>!+  6icH*d)рY?\8 .G죏#o͚> (/#1]i`v wit"M{O;{ʜRJOd JJPU4 <E|Jtv8OسB{t{p9$cըr1m(ʄֵ8]V8Ȉr|>\x]sH7 MGi <.!_A;f#>23AIg %wQW_&]2DŽWԻe5c5Xno|IRF$¼>C 8~TQp9"TV45_΂  ϘUs}Y0;nSPڍ,'өb;5/6+O&;8gEEh-mūo[_'$4heFmfnL-er|(9 G_BQRf8 ι I IMܐ$ѣ浌-+"'ꋔs;ITfoaf!uP UCL-zZ|K77Z2f$pD+NtISpS`.b,6\hyi 5jeI)::gQN}JΕ(6?pm +e-0))IN#l$<:3SNMع 4zRYs`&0¹[O-jjaf!=:4E&ҬSLӄef.(,b궶9sN=}rcRg w~}Om~&SR=OcoQU/Mcy0笺=o֚Ï@<JM뚟֭]G^zk~To 5byXB`",68E(/)chnn:Vv$5(54Twl`RuS}zrSm?Md30ƅP휅1q^rLfe   (x`1朇iP&ىTD(AQL7} CCq޽N]q::40p'dmҤ<I:Ȟ0lIl Ff#[F߄ޅ?=PոmF۳Y[րZMv7ő, IDATVZrzuW:pW.pW( dZos7HQ8LIS!o &? ; O+nph⦛>,]㡡C ~!$P>|WXs_eY6ZZZzUWYGvv.ҲV]4U( |ZW/B 񗓷oݤQ8$lX*qƸJvD@ V)T*KnRq!"vLèFW*TlGM++W|2cY2^)\ Q/{?PbcVT۰~N\*e_Xs {8Bp/ppG:1T$(# JJ}K(qjT ^`7h^mp֝jd/Ha"), Cl;ʐkr~ LAsiүa-9rnmM5SاD#H(X$C\#,VUcR ='ڨa\QV呀eRJ׶l2462͈8cyb\[].*+0`6n/CJXsϵ?D'Ӯz[[hڊjD"_Y3Q_@I8MM8d|)!8G]?<6oOVV:r/\RREE o$+#wW^).>X c,Rx1Li-xy^di-I:S4hvBR$z{iym|@YTCf;.䯿Ep Ơ  J&7 k-Egz{j|iӶs$B$&2*:K#˙B@ 0؇R.9 h`=ΕdݱD45n|U554ۋqP8K/PX㏇y3f` ²ѕȭxF T2;v,  0۲pz%[YI4E (JH%PH f-Grtms/̛P9Xow{ܛwmY]x^9R5de;޷N|4Z*m[Ӵ|߷Kf{D/X ~^zËZHB8(ݙ=J%qg3yQ"Ʈ>b 8@*X("l%ʴ ?)IԱΖk1r Sڱ.ۼys[nL>(TJwKK}*%s(S8S 9/^dP֝Yيu4l. WLzr6sʔ\wO&D yq\.͝Lw!y;{/޹*([8pFjNդ"۱3&MpUKOFl;^عbEǬh&-Ien! I"P4X`gd'eXRԏ+D* I!% }+ 48Xu{?bh޸wokkZFUV޿yVRpA` PR5J.&" ¥l9kldf99a}Okڟc0 zmY͹R]wADv SD6]$}ICX鴽bMN@a كehWdF F!,dõ` ./1|."=ص個n74 |^$Q襑a?O~O]]2 \ՁyG2u &%[ΚDt aO=ZY)]d'VeqɓpU;:~zI`nD;::.SOow!10WH=PF  aRL7`x;îQO&:_Rt]HeCCcCm{wvAۊG[3hٞm+„`7vR9̊fwAڬ$qc6㔓f :NfF5rRLAL[-rPT\xyewvjF$qٛz}T>7Ĉ@o7.8ZQVFD"* c,jQXQM*g! )kF:;vB0*/)){o0*Eׄx^gq iB2o/O;?xo%T˧?|D-[M&|U㢟E^'ܨ8]y\Y{ zL¡Pp{O\nX90HPS&~I2n!\(`If2CJB..cƘ1ş}vH:.@pT1ՍygeNa8M{O^~phh˕w0&2= 3L+ʽNѫ#E]s޽%j$vVKJ9p+"zk&n]1\TRO%s tMq@:>s4nٛ7w IVM;8n0 p`zJ[<vs$XI0+t1qwXxŖf`  %U1(` .]%8Oϟ yFuzؖ]Ml9ܪVcؓ/`ᙳ7Y^)eck/Ø&@QXM Ú5"p>pk⃗q C`tXfedm)D:|yg?KS.Fx}#F P8l <,1  q5$(14^l[$À h8SLczHEY# )8l BS(-%4 4Lc\&^5EDey'x2 `AH&,K5kU\.hަp. #It%duMM8ȶ6<0]uUh̀ҋu,rOC@@3C.Ъ+jn9zsW֤2|tL7y&+~RooCx<O}mڹ&[cq _ʯ_W嗟I4()fFJLA* |#t_4Ǹj:9=jpuj"jۼǹ8c,㨭r)BhpH*`rR20:s'V3 1Wvn>L#C>##о_@J!*%BLuRMφ및1B=VyuP\cFiWU>MeS{v=vo\ RREs챊lMSm[sbTUmi E鬙4[讘dXhks~=trйazEwe2GFu|uݺHoosUVǍKjUesDkj\*-kU<fC1z kQD8~=l΄ r3QkjyюHy$2j±\ҶKwO$xYYRm4İ$վ/*Oii{[^vj`BSahLyd;?BאUS7IYHUsԎ֗wݚU=16㐂ZZ2,SG([`(yLz+0 B!5vgr#soB/ paS+w_mGD;av9\ihhTbܿ(H#&#)w]h)nWQ:| xq$PB4~Df4qSGj*>|ߥh4.[8^- &Fv7UU81\.d@ wJ/^2SbB"YxEE -# TUC~g8뷿BpbxG6yQ\7 30~ L8P-@& T'3,nޜxB"@b (C>_PB1Wn00%*k[nJZ( "CE PpXa{I{Ry8IiLӆS1o^qv1NDFU ?gƞ=pcOx'G0v|}WJzVXH/>!1 Ef!@$MCI b` yذ,.BU _6-&}n+f.-Fc7=**e R)81cP"SONCȑ-ۅXݮ*|P)R}=H W䣸| Rbo Y02}dlbK` dw{횵\U.sؔ$*`|l(ÂM20Ƹ7@CqǷ~=NEYm /lՔ1)zhx (P]uˋ_EA:D*ht=iP] ΅WX ^sQ^=yycQv_V+@D{; SJ(X~}ϞyљɆI2d#)*v>-~VΨVH˯3;#h74%B|G<?wṑ q<>KV-}ɸAQpc'?),<0{?7jݽCC%П Rz9gN,_HK:>w蟽mvh958AɁ8"$-̟!*WΙSSnMu]6[66UU!@]jܴW!ut_J5 YGHX[> aCq^u?c5GVΖx|5m:vcӊ}>5˵wtttvbĈQ!i1LZÂ͔\e5Y.cw#̙rT?G]l@U;n(A3R*?7R7 R=6լ, JUCu5roEх[-m a] UQM9~LC&=( i[)Q1tߌMPʓ/rʂ#̣ȪZUI0MR4CĦD4chR,~UM?u=?i\8IR,N ǂc?Q&:H 6?[u![7lOϷ l/?~_ё}֬Yg}?d[[7+lM/ 'GU_N8HfA$f"d.C3|YxWF"Tgn~蝒\"kCo i@ 0L`ҋ/>rlҵCC X,& f~~Q!%MUE[͛;w͹H?ђc 77N'D.dGd6/fWX""ϵR vM̂21>{TU9x0~jqr40aZ xU&~$[B ^8*`UThC4"d:J0h i7v(䏹F+R ,onY[ݎcE5r-|ky~e& x_٤e&Kbiĥ׹.]/>PRN~zylw*q۱Qĭ|_x̘$ Aia>|"MQ~Zy:ŀiN8˖Rq9.ݛ9蘠o4x5s$(hosSC )Lv#!4m4hUEI t_éw ^y%[PqξK&(  u0B>OhݺHOO_ʙ]"S%(B)43ia4|4_?:!0cE=nqC[㗮yK Ŋl:XM '757nydҽ c/taBB+ L,JJC+ TSI܎DbUU!כK$\ ZDݏj7&чgsvё]ZN2hpV>g'LM]ܰahtta"q-/1]|/^6d\.SRe ;%b  IDAT,!^=;?dg$$%#3Wjb]?\gA(R[`|-&v+fD},a# aӧ8H,[Wh30mRR"-k<VMfڥyhi(=( `> 'PA8::_Vu5bz6c540VJի O@ C:BllQy/p1ytq2%@;;NLRbť)6oqJBNQ<Ӈeldr:7 J,tC `>G8iM'7}nDsΚkqbϊ?ּLe"Ҙ&ej_>cko"!ƌlE#^aB\IRE9RJ!X.ʫKUf+ɞUHXBv` 5֌=H#OZ9u=\uᅺΤT6'Vk8YH6`6rhG[Ffd1ǰU<#x;g](GW12rZ$կXs%,1: 7AZ&1$*>-T{$o.2!'"s^QQ<`R0ʬݦS,UY.mUUsΉȶP̶+4dG1ðW`gM~hAJHFF qtun@,_2*JKq≨b ?GԎZX ~&~ PW  h@CGqN}}vB|:;PZ켓E Q}6ѓKG%[vΆIEI0 h:0\,Y M-0 Hhsxw-]ed=e1v=mg vQeҔL´{cuH d*ZvBwcp1s,X(f52>DڍT1R/@(}0ڋ@7PZ:Z!e!@<ѧVJ\p477*V3O;I]9J_DM8|p2#'ۧMO=--ҵyJ}lK,#J8/EYaWEZ~]|xoi&q mzw׬<|ˊ?e `T7T+g̘ɿݥ_I=а*ml\lIw\.)wU]kk6M#f$Yel@HHЛ I(Ʀ&Ɛ\BBH $B36.lc;)6fui4s1/ɽc#3Fs^]o!WsQ]Wןո3+r|gm_R*o㮝hk!"U[5u,2ZI0r"2 >_m"S訛~ː2g~2*XeaOBe"}}K͊NZdf/f]A3)._s}әMDkK `@PMHWƌAU ءXSE`"&2Z\ Z̀M: 3K WuH*!\dJ#Kyٳ\VEZ5s(wÝ鹎Jg.!QXTTۦoN&I!RRBi=۷ve-<z SLvSő0C i?7"= ŢrX6&P%!8c25 2"^{H"ޯ3Ǜ]j_.r`WWCk΁H ސn! # 2eHMAB:.š<"6 j7/ *:}ʑ+Wv(?+< - H)Inun $hx֩>Ug+me4zߡQ3۷WtwLёZÚVWqeVuǺT!byf, RG%or  dIB"TUad=yHࡇp<:C+ H ēC1!4 cd#8u6Z@&fyEV{D&qv6Ek$}ҞRmM'5ժ\oqH}; <oCM-qx CJMCE%Y#ukx﨏O׭CHP\{t@lJϞ`40A)(F4+ȶQh<D먬A_CĹq2Q+ӤI8(~C\q\CIƱ2ʲhG$zvb*<}'^? 攢puX1 hm']>@IRL~}7L! DisΔO70< 3\D;PrscUwy8?45&U0XJ@| u2TJj+۲Gi4D$^HA~J[ֻV݅u%,a4|<9?4/J Z4+?Ixh57Š;/nW 2@uumsHJR]W\Rbf)Om}޵ža ͛ڊ?=O{rΝhLj^=;;zH)gA$!5okc'zW_){iSR5QQ@^V)\Q2'Ѩ)F̸qMD̊ c o~8dNp^ A>D-jeHH&r6 SiۺH,e:Wsr&QQDQs-8S-L ,%=דncTTq@UYO+F{\R4wuOV?Btɧ:?iqVK7o4$ȕ.D@B:+:ZXBÀ@1܈İtDp7λ9wܳ}'\ @'Ҙk\  Z4q551BeDj0pاo׋YV^38h.9RFRU5+Naxb(=,2]%Ky󸩾1U ghEʺ5kg--ts.W+ERĽy3m@P8̆dUUTUH9sV}| 41y2N9/9s0{6֯ xq[7y 8(`YLuG8vϻ^6 3̞ 㑖a4R8h__ &+6iˣϼ7k-*u4&UttػJ8e,׭nY6֭3ClvEw=cqԽPk***ǓZq۶J<0\)e>>gNk8>)jڋu3$`~톞sDK Q.lzK7T>],I60*ĊH%<@`oá+Bک#r 7Ov*i8{%(Z#hl;W="|{qNbhPz$d5Ѧ?Km"BF-nq#DCQzYOae첧12^:Xɟx t`.qi z%Oz4zK]]xQqq&/ ەiٽʶdRVVDV ͉]tFdt[!i4%9# +goJ~쁁.7!Pp)ː+CRאcЯLPRڵX.(~5^b^ Dco;nI:zEcmq)`WW m6 nBGɣ5IΰT(* ¤V mQQOekʾq)7dž)@f [Fa~Ͳ 55"R;JPfՙi&Jtc ^@~RoDlXAKEhY`,%k9id ,G7OXX-P&=EGgY4E  "#1|y2f!@*/$5˗/^h&|対γ.*P*o u3{ @((B-bX,P(\tEJ߮G}dWp=K+J+?bjKo T 4G5CC7?o^eMM\ gX[6mz_4ϘyÆ. +|Xw/?[7]5̝.p]i3]wTJ`pOJ }!P%s]IA@Ӑ6P'>񄨽BL5EL.`E0a MXM! 8DB(UӰ+ sun U қRֱP*WF$pxÇOܤBt4ϓPE0 g &Su8zO1nFО|:뮻k|߫| ZxfTji` 51I5)e*D -6Hڜ/go+QH!wvF[_}uhB2H)]WC3gow^!J9gG#rzmj288IRBx hkƍd jjԐha낈duuRp 4`W(CUr󮘗 XG&_/ ;k'4_;w,DP @On .tsvtpф8 IDAT{IsDRJ7OYf偷 qxi|0`0`mr"%Ccni䡇AT,у+sxlX ݰTηrYr"w_ ` Opyt0t(W ɡ ,]Ge%ޏsCHTG0 "7M<ɓte+|[ey+)˪03bW( y_qҲ5!`Q( ] rYl\9"Z8ضf981;b܉F,ZrpPWf@W7cVnUǚPҴF #BHQERUiA f6yҺ{f~L6f=k:_l޳]/LK&oA3 5kV˥U:zovh?=3bƚ=::O-t"pEB1R>Um! /fϑbĤIyзVN̊Hp60B2Rp?OKg|F" ;AK QM/H&,vǯhE 0G%b1;Y ]r3;:ַZ[#<1w۲_ɝw&U BG '贯ZZt PÚ5'U*S2_ |DF0XY[S:V`(NG7SNMNl@=+幚Y )eه| [,J{o) 0%4~uɎ8mAs<}3}@J1}LmI ])3}UVk`C}be ?eηgΝyW׿?8d P_ot`B^dE!F'Ln)Y뚦Yz|7ֿ=)Q v_I[>2ҙ0O:e֬O|MIg#͎sC%:FD\'pk;: !."ǝ3ooyI"dqu/>/|[NnV̧r }tALZ]]gmY (0"U+<>Ҁ8@=1Eaa:=>C{0tV ?wJ W}4%>G ]r (,ݚW+)Y&?6m㐮{WzhhY:u;7  A1+&Fś ?"L!:?6mI,~ 4mB@Kc]CԀ/c.w:PC:1H۫9't8W{ ŤIPxfP]݈bu:Vf9M4(MP`զju5uF#br _UNj89o0e9;ͧAo >Tc q, ݁Jf*ۿ]_UOiC.gα(Uu],1 8T(wYgM?JWh.}rW 3b>p"kM+85!ym|>0%~sOG o?٧"E<fO+xOH06e˱b4DQ@?vƍ8|.zf-N_C)d̜6sz 8iLNaTL* |cgN𼅑Hdŭ+/Y i߮:uρ~]z᥯/x}Gj?Kg ro co]7nݖ_z_D"WEd怦|Ko{\fcʔY%aۊGxi4]FR‰f#UUG6iS癯ۨ۷1x{e%=/_G>ڭPKQ16Vhiȡ0!֌~8RDsZ@x_h 8_sV_o-]w̞#Z[%3GIIW;ZҀx^5eJyʏ:'u{bxVJ22$W.؞ˁK{횏~ZMl0~iV#JE `@ Anb ub?[>{1tnuD<4Xm/UGP{q @҄3J1Ѵ [ZQDy^|(_H٬*7**y+%=/D/H'@Ӧ6&yVQ+!l%Ε ]"AYSq@<= |ӷokh8t$@6 a$=O9^kmuuUxbҀ:bj訮f p,;v|Z,ZRXnT?HP(`tR"ix9 0irc88rP(SO 2A>&4TKWjAT7l@d",tPm}ãΜSҊQA5Ѝe?:l5"`8v%+@"E,]y /tscΙsBt9i׷ȗC.({ͦLٹݿؠ~c&Y> *Y#kjl!Jf=p]G C{:v8DyDCZ[0}F gAoǴi$'Z8`K)iC˲gid۩8;ӟ_>4z(5ܴ};ՂҗQ"> 2` xF$ſ.,Ç5B W%u8\Gz"S,k֡5b2WxPZz^LJ^^h8MƁ@5_?XqH$&Y?hJ O<κҕVr.\Ԁ \E=`Q' ]j7#xm/[vB@}0 =NmII >346LpӍ#ҕ$WީrS6 }%߻2ެ嫶=xDeEo~t/fThE'։1eQ?. )0~2gwM2>>~G~i{&6mt=X>_b17lw=\7(LYyajkKmr@=p{%78n^IH:KImBק.x`fTPxǾH\l żU`́p@l@AqG/[[CG JLM_ub~h_+q߸NÒq[ մᮬGWHq ty Pj"Vh4U謕hpljtLaa 0 k2 ;uY|yn x M`%w׺i}dr}q'Z]̟j&1pN ,6q,e\ zx&t_P(~ lsR.QT~^M_{cp*kiQtZkmmu< Q,*Qٮ FJBtiym95MM)%yDy&"mxXF"]]mmLDCAzz tvm*%73^^/_gGOG] ^SU4t uЃIZ@2S Νqǎ hr٢ơ5_t県I` v!hn.{X삩wN$<l!qR`03#i_c7u:Mm⮩xk?>l C۰'L?g>g8S V ,nPs5+"eɌ1KBJ{:o؀OºuwAA ֮9s ہς)< mD9 ZKH(˴L*+ਣΘad22qo1e?>7T}nЃCyrܻՕ0,fEēgۏo#P!e }HH~"ÞoX1\GEfyz|ʔ<nkG*]35h ŷii*C)`HP>X+f`[KLggv/BNl6keY@ӟ d#ue2dKie>޻7tE2P,rAi2O2e~U˖~q%7 AcY^zK/En:Is-JNtMْ0ןwg!!t)-\B/!J{lTބ3שTq7PV\VTNЉH3Z0dB9vH0nծMJ 7M4 }ȵ0:Q]f[[r9qݲ{Y]]뜻MFeTfm 6B -c!@!!!y)۴`lL -i4n! y﻾5K:ќk5$GUi}V?|O)xaI"`&;e10 srR^)%P%ЈFՁ[ Nrcz 'iO S$6XzE}|TJh/g5}9@T+D_n+cREm\UŮt]̚Uvml(ƜA_yg6K?Bm=Hs `Zp,ֆ7 %@ ?rټKo7^$cͮ[D2vñ T ?Zv߽VlPqJ@E}%~`YW'"5#mr!ok}2>}wuJ=p{dӧrum' `8GET}Xd3$B_/6}VK˗CQ q1(Y.Gܾ<^lg$R)+w/j:$2%Hbq'uۦݍ#"TպJaA&#[y{Wp4E@!J:x֩8D1Q,KW)!,WܜaTo NwN@aJ$.8cͺTfP?[vG @f"{ſCFK\r(NwiE aT*?شi/{.Y䬳yh*qĔI0aX>L+"; OS$㎣Lt^N@ӳ,]g}8'pHHg.x Xs͏K.wr竊DQhG7 uzـB²UykORblX9Mbi$໫ywuQ*dNf[⩙3*%iTWn6ƹ_$\j Qsvrdе` +^JgtUJ!\XHIapXWU5eaYY&.-!]磥[G@8ǫq2*= OWՃާU,OTc{ 3;`sXNPi#FSzbm frI$X8HWUjX,Ѥ+$T[VWZ8z.?3]\lT{!1F{(x9a wR筍]^(HI$X٦3 ,5HD@ U/`|㛭ol %Z7 ùl]"iy}6 U\o@ym=BOZի9'"WQ UoS-mǫx=B.K@۹E63 W^d*)!zf|+ڠ0OhݗU 33L|h$x xV[g^z'S u l+ 6?hw{*h8pX:u;s_|jʹbCӜh 4v}+W3)nrӖ5}r_ַegcW\OUl鳃q"bm@YA ֌Ntk']VM뀵ٌm[~B04֖f".[SqǻCڊtPpS42[J\kv`ئ0 BH^&w0̡3TS<785D-D9%v-c_jүmR]5m.`` '`1 <"ee:dLIy)ʁV=uUWMM;G `  >9u }`ퟑS`[Hm;::H8^0ĻBv V݇j)cyYTQ67)qi>) Io"H%0]ho8L 0RI ;J Xmπpv޷S)]SJ.InR洅[p3l/cDvmTuc80 b #1 =`0,Ȕ|l Gx;){zw|gՍ^{(qxujS)Nn$Yw}-o``\+) pݴ~=7 ݣ{\I: 0![/!&|ۡ΄LKC48"WyV*\ ҩ}w06پ!$;Ʈ aQ@xʅ@:&ܒͤgB\Dh5Jy[w\}~IAR`=|f4jIzӂ1^TW ]WRIiQM@fN =e7 +VlSZMSwHB,!1ybU ]'L~uwhg#2!N *6!P%sCQH:qTMsY!!݉= ?t8mr4P=9K{sp8O5r04om$s.{RG0mw#@(V4(J^SkګOm0N6D~kJo^:sVSgˌ_;JK/ T)KaUVr2c(O̙Ξ8V?̱[u9vҤ5[z]ihR2X(_w;cnvNG0X so:w]]J.KRCRff{<|u?S1Gqy]3|js9LgXp_9I{M"W̖I(h|qq7ϏϷ;`Pb!z4c6nfXbэs5\hK̎iXńa(fA L%wB'0 Ry*DJ:ZrPUXݭ7)6~J)q`nXX7a@f?t=7ꁒ1F1TGm`lD_<%Q^ղ546Sg\*5HIp/x3q``*8~ /ްg^ d DRXm`2gUD0>,vYZTz{s|E6ҥ7BoiZqك;zD&ceb4~衵/R߿h*SJSX{{}綾_әCΔG.[JDHkSȹG MմC/{[P(9ͅNW5 $@8B@V‰o©'mn1X0=;ac!Jf-FqjD]u9׍^Mh<Jv ;uNS̕څI5S>X{=a0  ťUUkusZZQe|RFNm㣭8\x+W ^y1!Yn gMcPUU{ܰ=DȎb((bCѮ:uxdfV@?Y 'cW}_c(VbJ8;ڃkGP!"81T/U6",sd{՗?/p0 d${,TRVF߳|cSmD"'pB/o|cCЗ_2㝏1iOWOL33[7l pV}}}vG212Z,jeBQmt,dG?nèwKn%g^M-['[S;$>`_~UiQƙ"5HfyZ"# 2)U<1|ʌ~S`dCa;"BUWЋ/s)%ggJӸqCCLR٧ã6o2'BW|~P2"% \ScyŲ3拆.%WހQ9e爔TMo`_%z@#eux834YZӲ\8q˺㗥~ <T3\&O0uiǢ<[N6{9/_X:!INS QA)(g޼Ě5 .}ދ#HI]wzcO@ۃ5KF9ۑv;<Us]K;8l6TUm)$_**-,*L֙#P?^4-Zԏ䨹uz^e)¤Om.^Ji%Mv,k›oΙ!0IpmüYC`S\U2K*ZXg`EeOaM?a|ehr(ÿ;>O>IhQyT*eiɞrKßXZ!'p͟d8mմn*"M|YYME.& Wl*@_W]C804먪X-  (GOk;6z (nMg#T*k;>/;D&kV-o0| \ \2ݧL'\5p`UD%-O0 l(j&_*gty1[%K;$Kcan"h5B{ۋKdFPq7K\ti"lsBNu,TU;+UUDtv3G g-6RcK 9 xtv*\W)~]#hTSUpggzB6П^&_\x|],1F,Nfp(z2VMBrIॗx[b5b-M뢾8QdREeE+BJ dQc 8$2W.u&E+@?V܁$b尋# Ѽ1;msyba;nYL0x'M`2䘤1/#Ax"dqki rHd$7bloKDD7A}1g*j@-.H*ESu T V| gpГ0<\U_N~log#%$zzPۈɳj J9ēRbŮSN)#)Si>"ܰrŇ N)ewP( vQAttV c@c%ūjnjiRi;5Mcݤ({벅DZ?xfCŠx [o&SXtuߧrՏɲhfFjԷm[ӄ e.uJt,Rβ M]ҷ^4*W TV\P柪5FLHb77l|:?{$87op>,"!bA@G$SRk+H2CP D<ݓyfUpm]=;EH~"cd黿?Ή*6?w"5KyP@QJMU#RrY<^( tw]na{(\]Mi g4?i55\YW8}^XݾeWƪ\D z&ڒY8vVM)vwm7/z8cR"O\Ɋ 4iJHdM~vʘ%%_Bxh9:|%r'J;{_7I+ ?x3/ZgR;oΨ0<|Ν7utTkޖk/'éTϷWu݁ΏKQ*A@@--3d5Lt()aJ6ٴs*<BCGi2X p?g8E?O_LkKuI;Ƙ %LS =eb \ <,$yá.ʋs$_3LXw-J~@ܢΦRwd #R 0@B04@ M@ GˆK\Dz;e:xآ(:#5΁סΪ(+RI&FjTUPU)|uL&@#0  ITT X@|DX](l/^@mMKv_6{l&PP(MkvO6{h6{JۙVxqނ榴@z__vp2y (hel%0魷<`.c_3ƺm.*i8 /ϚDJHiTVhy= RHzN~z(f/F<*GwX[<l +3[ E p {9{Ԅ"{&͹3E+wF)W͕+볙!ǬQ]'4{s (z{beƇ2cF1̘a,L=u+mS{3e$G%8NlWT3ȯq_! @RKch۶Xpm4=&ϼ3JKoݷ7cƑbZkw>tǝn7*ʀenCp+၁a)k9T1mەDK5QFncW<]oB۶ݤ[>7fem{ɻ|5mh {huwS9hl-0F|D9d1EEWÈrU???>Yc"BQ)ljP^rś %ͩjjW\z5>/Fe3Uce9(*鱆Hb:0AC2J!g4%nK_ Tqld|H7.W|÷r1nj 67{Mܼ[L¨?.]tiBT_{mKjkÚL3W((ڧTeYfFsp4M<ϴ׾iCC G 6%^5V:kˤw@ O",."׏q'%5M;b8=?#ںe>p+?~|L$"Mz, s)}@GX!J +=w\LV23ۯڹ_MRXL춢h~Rv{)LPF5o'Pd3i  `o-el4 0,1. GsL#$$c܋ ;KnM]m-I"2m*)#DӠ.R|rB9"h>o8WA$ܳʅo߶s͔۫R%aLwWK)ƀCdk h *!|L ^쇌+ޟ1eGFv%H6l\il͌#U5Ấio||E*"]|=)9s>`npj oifj.OcFl:Z\{f/ct+y ÕN$w AY-&`j꠩pҰrjѶ0 I"^L8P`*aJ( >|Ck@10cV7Vso=L= p{;gw\_UJb}* ېwA? *6*+IU I"( @g7܇@UysqW>5ksXS (iie%ícLB2ΨDOј}'\cc)C7ҊGG_?V>!h&mIP23 Sw}S/<5Ryw$8߷}{o_0g&e꿙~K/1s <(qI3'^._}L& ~*B?~]ƍfYdKǻv^Qށ{,_yaj4߉^`j#1׉hz3E@WS0] R/WQ-cΦ|8VIk!%B8h?p^öLfjhR|ʛіQ9K~_*.8jrND4q^ Օ jױ~ ̋ޔNUL5Rœ?Zh}4Tٯ}<}p %K7B>2` T`>tl՚ŋ bxAQڊg?v_SټŋSԎbݥbm̳h=j*r vぇn(eN톆+iڤ?RD*:;t`t,O@EHfJIS$قƑк?cvT˲*3jW)#rPE]ù*i,__sg c1V< ^t4#7dG;y1'Րtly G5Ji8T(hew\J%RVk,X ;sSpm7}DE#ȬYGv͞l,1h5YnzܝPțEC[8y5b[V*(54>/НJI1Ulv-zGǍg*ϱ IAּ0&Jc bjEumI +tٞ]¾^/%rr$΅08eOCS¶8MgZWW^p,Դ Ę5FjUU`ٲ/| -3[',ƚڟ[{SҒ~y]m6lŋqTw0U2~C&P ]:ˉ  }MM}SݨtCZ'Iy@,Dv )0Qe#9y0n;jjE6T^J؃,h@ P_0^@yk@X6`& SC!I/&opkvݰ;%W^TI &QTV+`1k; $?L~D]E`Ę#DRЋ&& X~+l}-Dʾɥ5_g/ =Y1p`"nt@2"8+$!\Uд_,^⬳~R"޾0~9ۏ9mm%t)nN|.QXCPbƞ08o^|lRg9bR*) l*ďxS2–>D[|դ5 _-/ORy>oyʎ条6Fuky}8dRQs- Sxp5\? % ( < rԹx.(@EC„8j~B)nm0@?;Suk ~n .9֬@Ehms =XN= 7On4ڊ OP]M+AaVH*" ntPܨmd|PJ1! ptua`@{5Dݎb GFW˛mCyԊ U$3iQ(_ɐ bHmq@Zw53gzRkL(*6kbƘ䱦1"PP46@Qc-H.{_gfDcI~s5sguk]kItݼ}Q}, % كWDxTOpyC(JǺ,~O]xϸq~:!!c 5mik{׎y4ec/N|9-`mKʏBrUg9OkMg0M$YtQK&l"m@H$hMm[QUgIJ믟_ψ& O>:Pc ~`t'++{&M{c'$ *Ja!~$-專zCM鯭^&mYd P7(hcWI'ͽ^̾zTݙ(; q\NCi)i$V É ESUO*Yi`a(.njJCb 0 YM#U94mKfֱjxT |źOB5 ] Uc5tOڝC$|L'uԜ٢HDnh3gbF̿Y|)@FZ@~|ԙBVxuC`&=ԕT[L jIi.,CRTS&!d{LESN:+ݩZiJQ5qŜ·-';M2琒:SfIMLFZƚ-n9_آEUY%#Ҍ1PTBԤ͙߯p8K~8/j m.()*,@:`x•i'z@_8o k'+??  Xٳˡ[W| |w%<ʉ$l'td~pIf K.Q{zDQ1'^x!3*wC׭Se D\v.P|?)>Ca 9+xY6m_XbYZ S3@@:|*#W }XמNgmMSG90TJ>/NQCn~>K ')kxbz.tw 2֡7Ɵ>s+}w3Ι9P+:EZEk%q\aP2yٵ2-&zE د׀Mf;wm\xh4ùg.Cկ>`a$hgy7*uE*%ldpP PPn2!W^0É1p#@ I4ږ]Ad)ʾHa,iY^nR!rfێ?ۀ.8{M,G Ɲ SNf0b sE#@Ui03`J$v; V14޸ Z`'p"#LxLG@ASԶr+tV `&`@݉(!~%yy{9ǩs+XHmQ4Xd HTVx0L0{$`dˢ^c_ GqR҆B޿/($en̄a\>9Ȓr :Ah` Tg0bT֏OQ^d0zTQ_Hfe+}G.偧hbgfx 4G-iAJ?_/՝ySlh3A@H0vzzϔ'ck$@X)֬b@HK0:B IDATc.1ڬ #?\18dk?/h~+왱tHOD,ƹJˤ1acIA1d\@eev[HUɶMbZ(ݗ.@ɤ Ui'XK^AX{l?Agյ3&UiH$R_O(:Z:V< ;-XLZ@1"#W@Z5V>۔ST~j=ta;_rTg}EߟtiZ"1/p<1fJpjښd=5P_`K8~(9(NQ4fvؗy7Qv8)``d %/wj빌8Ҏ ΚJH$1.WYWVn>~^{vVVHjNk"Bec~YwyC_cNO3nzJ#Τ3NA Odpݺ9sds3liru&Es=ify [9p| ťW;6;υ%MT +q퐋})G\ ,Cp;ku*Ku@ӹVS]/nc[D8 L wx) (uiP7g̎E0.,,rTWm~(>l9ٳ:cRw72ͳ.55I1F $mڰ3ڔX .诬T hi<&)-nG!,.V0D2d^͛bj sbRn`DY[يmW_=;tٶ#!A'a\]87}23c *"EG}jMKIOYKLۇe˂ vdKu@F1@A+ նmMe|^Nm; cp^sysg;bp ! heTmc!Z:\ƘV*\| "i |/w[j)>RmmjwϞ,g}*!l阫1#K!$h0]R."Ho <v(70lTîsΗVP22[rgy@bP4;FDHZJ^&:"sdV1lLLjpD?F~$w{ǦN@UJ,@Pn>G䲐TS(0VX2= 8 \47(H_R) |4<]44$ˍE)=%\[/>۹WxR(PMto4h9-C/S{gnV/-'Inq(5,.+ժ*G:@+WAOnls*X&h08CU@ΈWd$Zڠ*q*!iRR[V>8:QՊ 砢,i Kwwt0yh;Xi0E8:.CMRq$l×.u)^!j[vf~`w6xa@-` T"KyA{ng.׼xTHI_r'Djg,h_LcTC5|}`luuaB Bs>;cOy-rןM:; #~UWs6 @0qÎ} 5+~{nuumgN?^~Y(Sy=\3/_4^{q6ܫX zzqH&QXp%R_}|Ӹܷ}O9=,Ldm@<.̙mfAoD)ajїG& #+pf=:a#mu0J0#K}ԩB7IjoXݑO&b[$`/W5ABHMzJ#={5&LS)Kaݜou-MvG2;>@Dί攖=$Ru&KXP[nz՘d4Z:*QY%-ru8fTbD}vRĮҴdLT bWO<VOAYd߿׿5<|4c{e m5 9i<>,dVݷ'8 id"bG+m뽗^:Ĺ˗?gfΝծ7,%#1A*Iڰ!>{S_ ajII)S00dmAםZfu6ӆmU99l̙KR4}%Mc #@^Fnaxr>*}J<}\992$ 3P0KF 5U/˞_e;??SQ$R p$%,zC7gcπԾo_Cmm @M=Λ,_R In}7ox7ݛ͞ك Psv\т=x<8A;jRxwg4'u6c ,0 ?|;* ~p©@4IJCpAYON+KT1E#9m۪*T5TZZ+Ǭ=}˟__zvETU'0pR=W=_P/ʿsCn[m2Jv:?D3*=[9Ph̔w5be!;Pa5+]֒px@DB5kv~-VQ7}իxM?E j/qy K OK[V:gjYuu7kZ׌62~׮ʶ2P$Lpe8T~w=ŁXa7s!*&id890ftt(`50~ TK9)r `.WI*u-p0mf᧊R9LxgtUc.#@1PءR.n&dL4yJL0Hd@# <: oہmD-h6~dWYeb:Wɇ"M1]/6{8+I9IZ~S 4ch"r(fi>U5&eCBUsC(l6ƙi:¶% 3ިImۓ?7C )?$z!`90 08YWUq+0 Oܦi;1wr^ ]@1N+FnL  +?eqf1N^N>݉zTUZ iD 83 [Jkmayش~XO0=w2b2p'Wpf~FB^Gk ynp8g9I!.'.(N4ՑlmP@c뭷6uwZ%kMT^zy&(~(rcCYTD}3gfSb ڻD+DTҏ#D6/s8Kr1^[66>WWxb{}SDo|zOBe(/`9Dcv\Sx\eD5_?GVB㊓e3^yS\7p{N"Q&uFϫ2 *y<^)g:0!ށ/3@dmNV U2X5~ܐ-ۙu3@fpaEytĔ2bZ)T7+62!l/1w`CC̶Kzz˗5!P7Ԉ8c6EAA!;MMvj攸u`,_e;$zq>]69 )8hbE7DI D>4Ƕxx|.4vj+G. Y) R;_vYVls!ƲDqL4A2D(˾{M5'en W؉) 5GB)}TX$q"&Αh=CC;D.ԤfHG\(ly^*avʟjl20\ Xz;9|SLv<`+ߡmcl]߂WK1kgە5!ܙL΄9hZ0Nxv;o)zLEc!?7fp=< cU9CC}[a1UW@^<~O,v 7٨vVvAo9!.wYòaD~'j4^yĞ*KxO/7F/ :($_)CxOEU`U1Q,Dq\Nh(TQVA Lt#hc@*Z+n YC Xp1 ^y=硣CTO0g);pu [].pPA@&+LW}o=:v9-}˸ -:/#|19 jfx}K.ڡ}-BY$aiI"lG?,}OF ^YOp0< ƤtHV<Uu8P5vֵG#&*ˁpT! ?HZ[!QU82c~WyK.q1 Zk.>=sЁ Iuto3yr@9g%U #:cѢ*g۷%﹕io:%Sk֮ZuW"&lGc%[[2LN:"˃}+|Ic c9+߮ouc}%4sÆ30(9c̶vG%ٶl|[0t0@SaqfZGNƿkG]F&eE|NyD6W KGB՛ozCK.Y3VM CJiӚjm !e"RR8ټN?BW\KJ [ی!6MX~hꬢjAav{xiWF.cl3qhi+ǸzX'nRaYMM(-E*]q@a>:q]Kco)YHp*C| չNS #4Tk<듫`hʁu%܏jcϞ3B Ac`d{vzSQlXrEfcs643zH&]]v"QT`H;'F!) HZ¢Bf^ ZQaJ[Cux-2 6yRI' s+fDm=dMDy4;^Tu CnƸҥ.c˖y ̺:b3ςpK]>|u=k*6f5#/ y՞EiDSOoHY)vs]q(P( $Q˟J|`jiC#"u'LX p%HVr69x o `#oZ "b@tm*6ἠIo8!'ƅ8 pYx]_<]]F.18 /}KI]XRU-!½aȓfϦ95ƤP; [uocȕ\͘™L!أja\zzժ;9玔jS4Nu 410JjZ:ƥmJ9CGpLW]^Ⱥ6_]PϽ]BSy \[;W<{yY^5zqog7jj{{j;E`[ )}ȇגM.<ͯ\ oy)d鵯6D;׬壏X߹s'㾿Yi㚔yiFDl~C>ٴ=opT1p~z'|G;~t²9 EX,*6;[FJUob@B&{C ^ 6ڜBcw+*LvOST+-QUVER&)-&+BA 1rpFϤ"Z ;TU:nBXc7 PW-4 zXL\#z?7ӏk) IDAT{qV` “]@744@S' $&vbH] . d#/ 3v1yxmKC4Eq N xJR{wwr웦M=~eU8:W?e˳`g2b2{,YWL{;;t_tgTV9')3==lٲx7BN80bg?ߩKINOD<bG@лbh(,wy "jտe<$ ,쬰z-=ݨ/f?`|);z9cʎH(b{m^QU8Iim2c?`eY~T+/2[Y۟b$316}®c\̘ɟ?FMx}E3YUa{wf*>t'H:݇`_xxpP$^\ϭpy  Q &a鳘?%L+Ԥ]OH]=lT aAX g<RO>ўq= HGȒLd8He dMU.͚#o~Bs`pR, X ]c8$ClT~WOP8Bcge JB qyA$-) =lKMLiZV+.>镛wn}_ˎhhT%ڴcq1J)h;4Mfծ}IlX2^hn VyK\dQ))#固^ ؊' rr L_{?{N^'#")k%50 P[#ڶERvu=/-ᇟ_MDVseTetݜOetԯS]ewBIg@wwf_^0i(LfL׏{<.i1f=3gZۅE/̎:> 6n @p8ɑ=UU/򆜔m`A qqVPg}#b,!FVmsIҌ֪겢^fٵ5R5ڃ?/Q|i,9sٳ{wcH.ңWW45tp.][ks)!YD˖˨RRCe./,UZZRϿE?#3|]ְ /BUc)Dzmo{`<Վc+ BSG}==GnܶkēW-]]W Ya(CtR3bt`D,fWI_7OJi4}}eL0ۖRzA-r0`Bbk+(P33uev"$cqI^)#Lo3(69P䔛A0 l@5-WӁ|Z5{G|5Vy z3kULANgڥ^j} HnQfTgof999oüsU-[pÂ՝~Qee㏇߯ڶtc+ LF{]/]c1zMϐl/uܕnqQDI\"/!;30lT&_`^aEKkU<ļyIlqӴy7~m͛ׯZe,Q[ b΅K8ځÐ13wO1[6L3͚`NHڅbp݆W[R^̫k,v^5G*{}O wPջ()*Py8TD:8B!tt`JJ>)KLI[v1$\2*5e!- 0 x ,@ ?A+MH?yǂmMW?rǃʈ9.5@@btǚu$8lvNh0fd:D) 6~ԻEJCplaiG:mϷϩq d)bvXEp^v%KTUqcopS!%F'] *}F':ЗC]mњhTښmn^RR46Y0Lsu0&v66gΔR"DCLȈ ee$l*gܥk8SCg=cҎDž=Ց%zUUB8t6Hɜ4sOU5۶7lx⭞q\? żPZ~??N;Mpz{K R7n^}#"~7y=Q 5D~q{<^R:SۓxY2B~zT/)`R̙Zpi>!nPAy ~98 ւڎ-fAP`vGf+d$  <= qRbTL"Bup6~5УEGISl󓟔Jh!')X2; ԜqIQD$&Yn!L $t ʲu{U^Vѽl]WrAh-TS*BgLNQG~xuu-郵}^`1bstplFXxL+w^}oY Ыے?kѽzukc0M(!D<1|~_v $\K19Ӗi4Vʃr/{ҕx~]V5bzz2˖bxy̬qhJ%6ѹU?FU.IItlH%q.ռvP!x 0p(*{= u $T*i,gGWm\a=W6+TTO,]X3a VYphoV Wlݙ@l˽wG_Lаn_?p[an!(gMѣb̺;TzmXg$D"ǜpi7SȔ4~rtxIGGlMuJe'b% 5͸I'ضkNsdΰu]קN|k,a'-4gK]+w gyw&wÖgeD J )#Tugw(|5o'|c|ÿpmcdkɦMfմu 2cWccѢ[l3.Z&5mrY0Uu˜aS[׬Ίt4nn7p{gu?eFQ,ɲ -Ն@6`0/@RH6fcL0`JZ(7kTFH-#ܬ5Kff{~ 6D%?O,Ƌ=~f/c6 5BƐFW@+K5#kYe27ZKgj4+jm5ϊś[$v2,5;4K0)ICzu#D%΂d1_n+! &;Ku@/aDGWFlG0x`y @٘ѝ̃M{n~8IRE"x^d'Z\? 4Le i@A@$|i ܊[ { ?.Ztge'U̚0,ʐ=4t3PN/@ ($alrh:s\:3h!ȵ}c؞h-N\O_?9W|9-Pm0*u岖`'xf>\2 ,x-Ug\A*kGԡt(E׫zzdddaA4JC0"a&b^CZu0I"TKV8=øR A+֪4բ2a;rȘy1&7HmL*r5` C-,A@Oҕ!}23>sPS%Kphn`Yx[?pWL7NZd #k`ty=\ۆrՑȈe_١7XNi9,|uvLqtIsx睛Jʂ1'/\}|#Sf駣H&k~̆R!}~Q;RӄRi2GQ6qVV) ?2 i:A44cƄkM?eS^:7֠:]&yPQ|afU~vZsQFeEi(7rYji1\DBK玍Ϝ?!jV#P*EPE(Dykk\|Qfٲ ?ټw+ yיMdu{{wQz4Tc.?+iG ~h?5|QWjO?h^jήDUi*>L47CBnژGロ(QV d{E8oN[;-_*#8|SߤA*ltcY{`TzŖI+)٣ n7JvS#M睧Ə:;XZMd.]ZN7* k\' O20"5/gi29$_0jsJKZ9Գ'}ҩ{3Å7Za+铞Ʀ^[˯))LAb osj6_ORIkhm*Ir^o 4 _m?k=7B&e Ke}< u]r)Pj)m!JHUVfxSׯ ozTGzEA'3 (J@=AD'ԱmC l~iحu]`pF 7ihv׮yn^Vuj]>O( LDKY*_״&iJ%ߒJm*ZZj|~7OxZ^M8ѤiwIځˁP&UKG)*1ݫUBiޞL.dT@@x̻avYB R( PEJ!f2MeM5cD ?|k9z`Bc1q@A,8@ŽuRejU? _vݝ%P0h6ΟA'cQwa#otw'c!hS;V]DA(WZ#&uLr5sGDmi맇|1,Vw c }"}2D2Vb1 B 2t ҧyA*/􉾺ƺ#oC/}x[YFMV?#HLLLJOO?7AP؅_K z&X%,[O9 h}:JA„ 8 W#A*eg׊]'V &=?)k+V.G2Yb/,&B#-X:+nb]7lݠЇ $xq44Uh+%Xe.*7'R!%F#HRK753 W {Ŋf'Ξ̊ULG ߉=h8^|IysEQΫWӪ\^Ƌ/b,{>ھI&4g6>H@qt | O*M4Ќ+!JpzTF vu6[@RS+ Lkܗ==J/{o/^^%_k|>)EG/-*8 IDAT0~`|.7&L5qx =en@nN tI׍5m<ٍVyFy!hGrzbQsZ>^!OJ)?J7+7l8n(w"ޠOw+r W.^ܹaC0ns,O?r9P94 ^N4}MϚRenb0/eB\  }{ _T sO3)K\HLzK"F3ſ!*bX&]R:Rnb*aj\y ʌKDD`Ō_SrJ(*rsm?ha .`9PIL~C0jvc>O?=tzv*ftM,p904[kJQrݹ~bLDÎ;"^cW} vy3޲v`21ѣ1;[ޫu@GQS+4wZ쨫~v'_ì(b0Ii\l۷"2Oxȁ'fDдV)u闲P "b"k$"ɜ"({IJym{| @i p(tyh;pJ' uGO`7Zy3v8A\0`VrدQm)N֕KȨƼ m p|0aOw?e)+,W0$Pq!y (:Ie P>~ 2zO>PYÏ!F]J2$<A>o? QyHtqY^& •8}|I jLCSӠɣde^ ~LbW s.9Gk2/twmFb:k7}"j(%TO7,A "29XF>Y@gN? Θ삙 T7r9c덺X' 3(Ab>UXŒݼk -$N[.`,(X0{{Ck6`Knuc}|47ãaǎ̋Bݻ~k;WD|h GR)Yg]3WTl͘E=Ӯ7Y"U\*T'Q)%['X@y׮oqĉMJɾ͛:{6:{u094M35MCFX><<@jZY]*kAAJ]fvSՠ"?EFc\ z<u EG\pa̙sk<"۶s~ eX6kގj•Wzּ` syon\=R)pyK.Z^6nG]g˒G.kZ(T7G1EcEo2yExuqjf -n߁v \D?3,mkJjўQeYY0(,fBKDEOi3G.y'1ǻ3>:U7aUWMM}}qz:@ a MV4qYPTD S/yxLV^u'X ߝwii!6̚o,"`̐4RYn7R 4.oXR&U:G-+Ŗs:0 J"(SxhcB7lܻ1v nZֵkoZ n]>ya_JmZo>??yݲ>f#Njt_z߯.X{#zG:j IY{G||E){=7bfR{ߺr劻~hzqa43eWM>mL< (o{0?xhp08[p8>}Wo ) ?d$c $r ꍃǯ^6ݚ E(XT Z.EH05Q\+wfH-UUFyM1W 6Tmk0 l" #oo $DEBLTj P˕E\Z桡YV`# 5' 1*A3pERk`sV<缯_|U 㺷j) 䈶Da@Јꀦh/|I@h"b!JeMh6pHH ye Y[)i6k,r@/ `NJ`gI$q=K*:TǭtD)7J- ދF0Hb MeL BfVO(X bWb4Hy$4) 2gw9e@*-#]*8 8!%A`x | T=:P y&(h`lmy4Sx)Uq\8 xH-!XA*ŮuG\0LH=eB<8}_?P~U(f CTmp \4B Ea0.&_G@so(9{W\cq޻)[1sP{ɤrVJgJT1N-? m]mE^mF=Q|O򔔾Ρj-*+eW\9:{U$Y*[)B+tVJ);s+sCSRv?`p燰2ƶiu,]wRU#<ٌ'Rmio%+n|EɪT#<<<`DhPy#^N{y`Arpt-eB74诿nΘabš!ͱ׽?2sHp)Xn,yN~h(vh>uۢ<7Ƣs g~hԴ {tIG_99{Dʵ Y]Ȫ2/l3\sXq06^R(^u ?'BP]r3P2㧓V=ʧG̙θf"劎}RqM,}n>z$ؒ׶`x4QR8,]OCKKiN-[L0d50,kt%ٹVE BPvǖPC[R|2uO^u$~VkVիTkKG?Bu5)'_1wnb=/|Y} qfGRm7,VZA4M3c z˵Xea׽sg7a/hF)|4ͦ&L.0k_zR/rݩi%va;*9벪;퇝Y@aIE/w|[ ul+3o 'ݽ{H*6MXL>q1sf7z.M6j "]̘\ ݄(m( ue)MCK{\uQQaG;TL2ߵ=ǭz@߫m|]?O*Ri#ȬЍ1>r5߾1~?kM(M;7 E"L'E2Y7J@ec(Ci!>&GH餳Ⲵ9bMb-{'w$vF90ԖĴ@a3B)jSNOJ Tc3W6~s6DHOmCdP @#%;(R) eѫQz]= "XH'LcuCxhߝs\/ !A#bfc_L-/,d?SR)ӲFLBr%ŻLqZ=![ax/M>j%ܞd;5"D J(/wɬ?EDjg5uu~P*V 'SѵmڑS^wR~vafb[!+ew%vlZs\>b)^CZ%%F蒕%~_Z?rKz jwlS9 `w$ߣvWГ7όF[vzΙ3 jh΍pCaQ`j5ZKBo{ݹۜrnT1o('12aƷ{ŔvvءfMVLNʽ!j1BhпW^Wᅬ^gغ]=ϑC?N o;]ƀf %xEY"MJ{xbܹh1K]eSnfV&x#mCB2VB>}inS:P@hdRDKڢ{ t]7gͨ]Qr) LAWN!~$Q4o6˩B̙xc/+{?9Ҍ-5)}UE| жOarxt^b(l.CYnuyU.vY3l 7iOFik1ee aMIK˲D|>/V@YY'1u֭kο6#8qgR1yH{cxUU0PX86FFrQّh^&[f[ӭHaz=눈> yt{{u> t:@P4,2 쓭BAB*3TF"%bϳQ,kW]@)ah[`b r=ʸ&ngg{@~A탎<<4UK lW'z.I׍z8h17\N/.{0{{X$|9'C-1u$]vٲ;zR×qQ/>w['e!X V2B?>ҩ\?ܰuC19  ־X#Ą#uŕ3/< 3۶ XJ)MB@3<5z#=X'0Vz+}}ÆWم@Z)/Sdz[Q޼;~h{Rukgg"T@B 4(u+QR!h!@w2઱ݦ0*j,mA&:_UmD<x.wG |1@1#.rs`?:tj%0KhѡD,[xن ^HDrMu)0(CHxp82!t=)}R`!NV[^^ 2 `I K|_>,8 p)Mݬ%LfI$iR~kE3BO uN9% T9 L&[c'`PJ *UXm@ .*k\Xw8qX<|5m b%~ԝ(èK՟Բ=.Gw촱XUe*bc2<=l ](GȎC "Qlհ(c`ߢ|b@i] j8`EKzRc.1MA}ډTmQN p-^BSTd3* #K P0 ْQ- >J;P]>UH} ʄ8ލXx,)!ޅB3pl`eoXX'hh;\r!p$p{dDI2$\E&a(UbJЌAA&b1E/YjUZ*]Pe0DQxjgh>t"VҲ^R'ƚ`X/ypoC*EL&5+=tŶo T XU5Q`' 꼹VA(3wk+tz-DqY쾾u;:?0뽙A^48NkDzdDF.<"(}G%'f}(\ƍ3s$0sʫ(5?tE?oj5<0 d;\Heǻc!ʒ=q8ӜdAz1ցx ܦ/vloޚ&""uz-ژQC0o,ﭩ9頃=єZ9\e"E3ܢ#E>զԐ63CS(sp`Q%XTU:] TdN9|6Q_S;PuR+RQWNX3={g3 TUoOF"'s8Hϛ?!EZQs̾ĭx.hD;HԌ% >I>KD㸮RٵG}e] 6w"u(P& bo@ Wn޼od xx M &Dm7[0~J}E6D o]~OhtQb: c-];qVkTBJh@/P?~C` ƺC1z6&O'|Fo@ Qq`5@p`cI/)mi;-Zm4aY|Dcfb1R_U5g2<<gv@t G5⋟\XҴh #'ߩ ))k50qeC93 nkꪲv]|T(pNE7j[Z'ʇx*Hq[ڙϷ7j {l痿(j\ 2Rgz۫GL.r-u mK;;)<=vMTц`v}ߢ:dvA s7H_ ,R?;JUӓzf{$d t\OJ2Q[W aGܬ !t( {\oY[42avι<噬x|yy5;ei^h8**c /z{+sܸ{~]y[u.ZfU4QsUaF|6pA2ܧ$3>3bbp9F#Q@[ BTòq1rӀC@Phq^ځwSɣV Ν =DkS L0@UvumZפ3]Gb_^"$Jf zo զVªUvu}GF3 2Hy|}9[/ cJh7^)9lg`~Ұ Tg(\N萫eeyeݹX`츭"En8͚x7t3@^E tw'#E0U^1yQ 3Pi8>eHKY1c244t-W~Wȥ{jjEz_<* z$"˃yEJ)}F$n[[/+4ӟ>j7ΘMdnB?x}}}?n)ufdUD١^$(У@+ģ;meh0yu5.$6*/s$IOʁ @͈~+lj uV ɕ6o3ՕeA(UGE=%=Sji25a7Pjd2R ΡiLb4_,/A-ΘwJ2oB p: DLe:>=AR41P#>: vPjH8bm2V` Li @!mxgL{ZǏ ,{֞O*^*yQX- O* K@(bIa04,T݌d|Nd h#ns(0 "5;WTꇇMtSjRx{zՈԃ1m㉵\rL\4쵬eA,,[Ҧ!CSTe ^0@({=7&N6KεF q5k*yvʠ[0q)ERSG9}ԏx{~PhJ)rId*l&u3B퐃{H)QN`C~;&K&Ugwuɜ9fM__[\j۝_;ML6)2GϹ )ğ}5y6jhKW G<(ųCjYրo9\G3o2e;}e/Aunk7s-%=lX0 < յVm,)r=Ngcϴ7 \P9t; kKMnMԐ,_/f ŀm( O' !γ kuv:{;eg8LitZ:T#rm=MMœ$ci6 *5'p&4LlJrw$o +24y<_lB#yuQ[chhW!܇=-rJo}B᧺>ʕZ,at}4@(dre2;sX,9xg>{wYYaH"z]M@4h# ^orӦ뛛BJM"jvcNgi.Q@`=rX|io\*+s,vEdsi.bN4 @-&s.#b_EpPD@%LSv`RygN EwA' | X ,ZL.ڋ`̕~4}zCֽ".WQCaP)Ӷe}^㦲} 9 0h| -{//iB,_t'D(պ2R/"_ /XB_4aYY]6zy *!R8WWt=)wchqb`'^Rnm-4W3oI"X+^=h M);zexK\Mx5̺`5g$R2wಕV31cX&Z;::\7#Qwn _r\U3bgZ_ϦNȒho7nԏ<&xUtvhP7h\<%<ʸv" ޷4C 0s656@{e?9Ҳkg$gS:k11^Iu2X#Jq!Za18#Fbo(>wM@J5?|2% Cǒ'¨MOvէ}q܌DfnqԵg*7ѻplֿ] tF<5W16Ee:^Sr掎o߶@@jݞLW\6LV>2πpf2 kk+z?,k7`%9@+ ,# o.(NӉ@ ,< yC Zi1,Z0sUKwh.ivU($~+j਑ ^VJŀbL `92F],Sfq`3/e,p,`71RQFOQ M''1ξ`e pBaXgL'+2hTQF! M([\0v:[:>_F)%`0K8P80faT_~&MӨjzUPf{GNZhPGD.-po|l _4[sfe?L"]p9`fuM٫Fb@f)TCQ8Y־*?!{5 u Fg'%ѳ񬛹oG<ҷVoA_oGTzW35 LgB$mWUPW!p&ۀ#hjw٤IOܛka~te߂`HtR:Y ڍk 4  LCrc{_EoϘ4cO\̜0=Fq11O5W۴?7okjj{*reY>qhh7 Z}:CJ+f_55^GGrN̕O,?H޽@p.(^[*&,40 P.*ZnCg &lH1 T*tj Q(xu9]y8`Ymd~?~OS,e8,q12 IDATǁ/VeÁz\|6kz/p9WJE5Rg8-A3(e'_3VfMt8w46/Pt~M>E7qJٲc'ko-g7iʧNQU(IB*{޼d}38if6ݷs՚'^79 tu/3_8VX9,/Μ*8*|sQDU.':ڱqixvy7J Ov` 9`3R?I1jԡ10Im¹V Ι@O[V?RiIMJhΟEOk>} r7Xy <7#p8ԇeV:-Q_!Bv=*(^Sl֬ᱜ|V`}Ueeesn??5iWYbcy@MU#yI*4#sRV|CQ@?,UbCB5.ZwΝ ˁcbu ΙsϰM#7)ݸz FԤ()p ۘxx?!mhQeSf=G?)k.߳gڧw&l}xf/r8יZoX{9 =# tw{|ɅƦR\0&yʎʧBZ)5@܉ue* f*tvXͽՄd,Ǜc1oAf'tkh%n L ϔFPǫf;` Tc+JQ(^qw:ւIWP-sf uVGK'qiFfsR`@Z|iP F?d#O/r'+Hh~?e1]3f4z5)ιΫ 7P*`.p7Qmw~Pq\.,!Ñ5e'Kl{R.e1elwƢB;Q"m-zI 1@txfN`7_Dnp8m|j(pp8Έ+D)y  WI`0Ɖ%0 x !@?hW N`g 05״kxp< F|^ٶiۭDՀƊ D 7i# ID!Np)&6vX>*> |xt?VX KUcΫLnM*r0!.؂YP!-5-ιCr%l+됒1 ,F|s5Rp GÐ@ Lx#;op;ݥҫNvyg+އ{wpwStC)Ũ[HHJ*E:Ux2@IfvT jP +-!$g0xhoeg1Ɵ\: `0u/_7g֜ۿwCoo +=݁-<-b ' 2sf(^ő u*-*:3 JYH%P l|azJ*9c,( Tt^Pn`HҰXz\*)W_=Z۲" 3.`'Cd$?XYsu c/ C}Z'X*G2%clӬ!P?3\ýV<r(ߐqVqŚ_|։/~^ÿxydQcS+Vr=݊EEdzkW53׸\SL饗gt"~ڧ}^Z j?I%F"ն=;xˮvIO& fgr`St20Nn=0r2٬xP @D D,SVVj{j u***ycr8@D]]x O';Bax=@X%>Pc33nRhjdD1bCBQO:}IJe'v'HۺwJGخ@1uN WJw+>JU|0~3+bnZpJ^~8wjVF3oPt׭lݳ>yopL~sµJIHKsV=߶{9܀KZ]n;I槔:>my(Txb}x R-x Xi!p'HA?x.x<)H Hfu3U"\*I;nߊ$]&ĕm7?΋8ty Fܾ-ҋd}cU"6fLq43'( yJjXúšK H`#asp)*ڊpbC:ٲ^1}p-Q䌙ֳTm-%6wڎ¶@\JuhZ^Jjcvw8-#O0KK4Pvȋ.RKv zpIV\eO3yd1L5 3dI1#t|$r'\wݷ̹'ZڝJK=fb8~m Q5l?nGmN \ oN2)Tk 7-r:s1_ܽe˝>{7RA)jE_ߍW:0LM-#80Sz#&?kּ 4.˪дqJ}"Ն q~7V Hp5f̣š]]O:wY/Iwy@VuJ>!m<|pӁ5 n\XQQHr Cm2\\.C4 p/  p-<1RtyX|t(TtbԴ{>!8iDE \n nځv@Z,G^`#@|  ha;e@pt ]DWJ#ɲrX| p3fs,뛜_"`7~r^9b=`n@&ʝJUG♧wz0.mb+X7T R` >1ͩT_L ٮ+RWSf_϶O.-}(B0brp^)`ƈOKcFػ==;|7t0 ۶ D=2 ) ?0#1t]g]6z,\eٶV *PO%%pWLVP4`Hlx /mZyż|&BvU8fLM|0ʚfhafanfry<}>|1 NJxdlMLp~*.1`,8;B܌`VS~4`,/M@n8MrxL+UܖgFQt^8jz@5ܞl\Ljw=\GF>ݱCo;U//qm)t>}?TXҭH;f17].")PxW^Sg9+x4Otܼy1wo,Tgh wlVZzl4[pf54"s\P?1vŔR*/¬+04NCQMں@`REJٜ}aST_tҟ_Pu Ve"ch XLS(ۂnpH4''Ƙ3qi~h5TZJ[}1ǥ a#׾+kPA!~ A`0 kakصU+Wϙ kuOZhxcq*X@B A>7&w&}* *(2_͋kV׌ gC jlmKHJM!3Uಀg/pk.泔|Tg׃@-Yj!Mbho#T2  qΡA%j c{_@6KhvC<$'M<V-Rr9nͅKWw'M۹rԨ~&+ 2exkCñr_%D՛&bDmrf; 1";Q "?Ͽ60@g+5Pp)Iv^'>륂 Ccp5rm_{?V* λ_lߎ;!D;8Msz6˟{n۽(zL)Ҡ!H)X>};YQNY/p-94sIJEp B$g $)A镣شKe$k@ `}dD1Ip^M)\{ X3g+*Buv;?R2oUe]mp{]i8 eqЯ JS97 \ ]]Xr2V wsGc*UjGsGBHt  .~x;F4)Jٜu9nLO)@nTXl( 핕_zŋ-ǜ FaEuLgM%|{N%}OX6]-[;uj([vO(-b[r>/߭&T>=fʃu4-m$;h0 =)Jۄ8ׅbPޯ:M;%]aQ2ر ݝv}{$m>8M48X1)d7p0R QHx8<p @(LMJ8xue(&%@WƷ>_ f,.B ,&3 tFBx.a6`%@p)9?fGUU+/cjbgm9J.jXF%E @(ʀo*E/!:R l{':crA$R,`cU%%0WMoC-aMŊ3v#>DRJ;%+O˿K/< L~f`u[tXf}:3&Sˊ{@bZgt[uҡ1pFTB%>ff uLJiV11{C_&PC﷾S&Mq;ܣ:tO'ٗd5L;CJ$ NfJ*}O>'M3P!i.)t/p Q#802sD)0Hy( ;^4=bw$WXyoklHҰFfX]/S>C RHYܹok`⺈|PjkkGG$ 03b׈Q`թ >@,:/0 @$[n1LDp$0sIDFL#) nAG_ '@ f ȁ8r/\/ΒfʱUդgOO _\ O/Z'T6m9cVXjiK˰d$2m[p3{_zgW<[t:Bc+{:)hh gGϲc"(PW~?8}=R ۓɬ-3_KiNfCk6Q偒#u$a3DF-y=G0f PpqW-YR 85YupbWc>;Vrٝ}6q|͹*U!jjeb`J0z\bc))瞋 @*f']@^z.Ç;pl46"` z3W=6 /]ESlKqJc6CVCm+4nJ뿲o`̓ &;*1p&1<ΉDŻҜ\םn 4q)AA t- /cMHdM5.v͟;lt:u@b(pQ]4JY"eL:{ Dܔ=.llV°s8lrfw]vdP8Ce}% c,܈ NjB U{2٬& Vj$=w=cP U$Wl2I@+yõź Z$,fŸ^ǩzJ3J!uu1Iu/پ+1C|ү~%,]FˤҐ:r-hV^utbKTmm@gGaV:K\yp7öm-::z ۫=+Zܛ=cQ`!Nڗo _xѺ>)k=laE'9"Ř4b " ]*^C!1wzuQ)c͝37җOV5Afm0tF~h-MIH7!w,ʄЍN@?S>.S9e~׋igݭGǎbǎvkz(T(TY;\/ KG8D+Ð#<D+4mi^N޻WF+-3lw78QlSj'EYY~p˖xukkR;?1,`|>(0* ɘ; !ctzma8lvh` >AM[,~1їiR@p;&0VI0x%Dq :.a`=H=@HvrmI@\xGRq]׋_H~hQ!>jǁRL3?DC4m@? aAQ_rmE{~cGm `MCFw$䞨G|I^=\[JQd}"~_5;P+B|q:40>Kͨ`Lힳ_w]H $zI49Wǖ%|'}39Q,7Ti^<cz~ky_m11‘cva_ӲRߣtI~d0A*=Msŝ OneYD4n(mR~ݗ\r޽JBӧ׬[ww(5oy`sRC b2D) d WQqaxXʐR?QJMb0(A.ځnfPQjd(t©߷7w L>p^`N9oc6l-Ƴ @20cRLD|&9j_g7`I:u`%P"]ԓC$Pڱ p'pmqrQ-\9q'gҜ^weY@cm ल>{ LnvR,Q2 ~'23p̫t}`o]|=}_+w$PtoŠ.鏒v?Cz}񣃷UWϯ. ߯r[+%}pVz׾TF=  ( ^N Cib`1[8X$x7q];y a{׎ۨHB|*JQW<+F r8TȂoqH"~@pfU]]];4]_s"N5Iig 0GP\WENmqa{e0tIL@<|Z,T dY+>p(mG&Fl> Fx T *b8P@qkN~ |Ep6AU"i9v".01JADp<y/Ld"0=ap>|P}￉g%{'v9RxuO<1>!.˚pD"a'-.DC?tMk_6'5MyuÏ7,J#8fl'^sU$+l9̮t2<|ּy}}@F>o+gFAl؎5 COW'6Q@uN&\uYD8bsEgs{w+nTO} v9I+-˾t4%U %L s5UV]8\x~*P)=^H")Sp#֯.;j2t!C[kiԉ4М@Kh]Sh$}{oh(.ԡG Cm[AWJwǔu[(X"U@1ktCyxn{Y/i3B(V[rIg6t]wtveEA^YU#FG>GZ1WN  Xl4~`9Y Su_7>_&"6<,AUVT* L`[wm(Ֆ%ĬYxep̏(m|#u@8 h*'jk2:qJ@ x HdVcдĔ)6&/6`.X @So_SnFہӠ ݷ=ys⤷[Ri_3p%pg 0H8](0C فِz%7OOƘO`'@A+DC~.MW2L*2Irb;P[S "WBIUjP$RN?xHjʄ,~ #90p6>(~<C'ٕ<"HL x 1@@ KH[QCCf8P %/ OY2B=H'ep ;-] XB0 C"=X@`  G(YEi2$cZnafÇz1  LjwȕeơP ^'.kdeB]4@:/iךIą+V|7J.Դ[z/la>-w$"B 564UhOq)Y:Zu֭EuIUs2@:c\'HϼEFmfp_ܺ2uְL;#rZT6>UPl\ ՞|=[v-ܩs_|pw`PI}]]tiL~ummmMfeOjY) v_ow݆ hNr'6F^YjO睌ӵT+v QHcTv=A48`M?)܅ Rm)\he|A)x%qc3|wc;d<7Z*_w'hG}=Htsse9D Ts-ّ**Je1ü#]=/d'-$D ى)S2TQ󎬬J󒝵zh{at RVfe]FiTC}~yW+ׯ?c )JrFo^uأIDt_wiPsT̑4X OaLe'emKd{m$ZVWȓNьgJOtFohw^}F*rI/d< HJF*K"Ь{rvѪjuR߇7|1d8N/Ho``; Qg$|>P$1"X?;~ZZ2ș /ED^c^™grk+t(tv𽥪P\h*nȧ.Rr]?q|?ﭷ&ZuŊmi =-UUYNބNL8 C.\ ukh]]̜f";=[ <䁫%=mhXxbȥ3uCC;MǓki&)״z)-ә/SjuV^)B~@f Q+Q#s\>l! rMƶ{RnPv@u,QK a QiD@똃>X "0to `/)U=RJ!a#]w6p/`*)QBikkuH[ֽˍf LZDu%a¸u]˲;˶^`4`~v5c:Q3I@_)b8)!4B>R,dIԢiV\i!"jj&YyC>_` |8@{bS,&E3ˎ0x/B%R=z(e!62Ov9Idwlhq.5kآjm9Է~ x~V`f^ !>*rrVajFLp "&:)Sf|fjufrܣ{y|BN+hg%İu]Ƿ|294օ o:0RcnbA4" +6(DnT;9x0"7OÐ<$ YLAEJ׍O3P(t]}̋~4KYB{) EDSZ pۍKB&O,nI <#teW2+⦅{z>!"秮}fUNzuض;xehR &4Q ld xS"~5]}ޒu¦MTI<:; -0'wfBCc70C^v6}P=-79"yIqh̚FJq_6 WoՎΦ&.͛A- o}C7|whV,VyjԷb8xO9ųj'zcP4bM7ry6<_"\fKڔ)ֲ7N>R˅f>A(ɂPWYt>rB8ELmCJ>+.fBQALA4 Iq+]C^ҿBڪh+KV75ea›lnbԤIz벫[޻84F~ #*bdD[t~8v  vAЃE4Ƚۼ~iˣrUZSȖg"V LS?eA!>WƥiCK-@ o+^#LߒQo>kٚɭVy{Zg/ ,R彏 {1tÛN_N/ V>XswH{sGϤ'qa_`M2~o3} ?q0֭#>uꂕ+{CWĬ 1ո%?h}N ÷re6 B%?\ L~A4wqb.fi-رc^6RG_+"WT#Îz[wBB+S!KJɭ9 bqS|DQb:tf@]cJ>:"24 qmsId )H`MEKvAB_,,L0@E+t7<`w9@/-69wqit|X 0p#/0ih,H\@g.-!`Dg(|A1hY_RSFcBtTW/ܳ&[b !f dǓsuDs]^o^i9)o4g7*u | 0RNxbq *)?_c$OV H@0``x8˙%|!pG/nFobLeR:bq!]'@cP ,@Ɋ=N@ ?"7޻Z0co|d㎝;EKEE;`&`VbON`wOfIs6ŗ)o?6! ɐlL@OGIgL"2f/@~ߪhը\Nn9m[6F,T=kB% #Y )֘m|`[Gs\f$ckS_Ѹ#Hzmg^e3ޮFAgb?8ξ!R~hh35ĭ&uo]! IDATH$&^v0R6#4^{q+HL̶-͎y?%"q07YU P^SmP6㌳JR,^R9sO= .\غbŅ~{_Źڨ ?7c9.%I t;7"JӤaL0|W{č3O/j65Pn^W:6r25 [Б7΃ ŵל_=cj|oFkC GR6H\fF{z]:.^rնo<_TO:b/ .m඀ \U{xk Vl7<7slc ׫8[/IH)I՞[7)]F7O֦GKz'b(렳',8D"ݍd_@Rhdx4ҿGT{f]OSU@(ST8 5iǘv椱UGaJXcLqFNcw;:Qs,~[khXK\5$Mr?T_h3 " M CZ,6>.@67`{~\p݋KdR!57::cɒhR\PD6cRjw/OMC(F2|Ӧ#@t A2 | `zٳ̛u}qb~C,l4"/6 Wz"fRR)g, mmh}u{?I!tH9fޭD ~[mw_y-\G,@ ՓN/_ՎX4f쏽dE}W[~/pDBw/^><<%"ż=[>Z A43QnSE-a ]tͲeJi"bV=_]HN U<_nO7wtYTo罩k|뭗C/fO|47|Ab3/;PF9B2}oVi[ו ~U%~"Jm-d*+i&Ue~[>?Ln@;( 'er.]') _{e-"B414jǹJ:uQF,閖{ (X0!`/p4@#FmȺu7-Z}[f-=B|^@.X^bCCCrԕ]]# `[;h9rz$[%1hu= g|5\ǁ_='Di>Eu9 aX\7#\{`n[B J  zx<Ç _9#t :x+eQE]1ceT/@ C-O+F!Wd00&Q81vSJ UKs9:{"gEt*l/p]Yb4 <TMhP1?  `;v2}><:ˇl0BHCh]rHABC(1uFϹ;{":Xric!>oX=Z yITroʗARI+6WdYN"3q2vi/N1 p'f=->[,b9Zo/8}/-gE.%E%dzKzkKNouÀ>X JiJR27=" ?Q<#t= Lj#]7q<Į7p#%6["owpz/),6p WGߣɃeoVSS'JB9L%O)&ho=LJ[GXxngC?mF{g!W>cfo?? .PT,twx ;2^WG̮R!Ooo&Vc呀~qܼ3>{ҧ6;_zwMdM‡F} vӇ^4k(MKdujWC;Gfgn}կgTj^+F JZOi'=·.R 0͊rͧqPsC9wm p)& Wӓ! f !'oݺr5>_6w1:q9<ߙ>D[|,/m9":duU .ij0! g%_uIꔂ䰯r=--_b^.d0lnpҞ榔l%{pF2ad¨T&P^:Xa߲.9m"W ]JN~OTT:z>!,*UqC=QۯV2t כaEmϪ=;ͥ'OَѨjO4e" ڨ)^sTC#0J' _fÆ@phMGBӄ6ZOO) ġ3<@1Rq%3-KCR\&#n.Gn]zy{]$$NɊ [Onjrr':lC+ 6"7<ܳ{L&:Ë/gw^-6V$ ,`%xFF~v**6^T5MyVs  447v\dx*PSCk./%[4^M{R[]|ޘ0ź56P&h!ׯꃥAǸ=@cvSf_fouI'>1JTg_ڛ+Wn/>08N>R?u?TJzU/{M+XqUoڕJ6F"KXC.)5|o(asutPCkes̎5BFF^Dz \#HM]]JJ hRN{uG@{/@@:p yv2^Цz,nE$ZRM`Oz;Gp@pLOA$t% !QYVB z=(RC#`UCqu@ 8<` A X1~*I%I3.`[x4 8q[y^2 *%p\7s!4$8ha 97B]IL^)#`$2JQU)1ABKuYך}3'Nj\!UMOEMEՒU)4X$I2<M|ެO:oR7ߔ'EzIf?C1"5FL5Y(#p( TiP! CE_e7\r%#'Bx:|,O<9Dg?Pq(vuw{;coXg]r._C4߈ERѹs?\WӴK} mʟve3W;;w~eÎA™ W]q}D0MQ(0 HGvvq6JS*zI5| 8V11PKC_V tS\x4XM:5ͦftڰ:3g4W87-*!V-j[Ҙ^3;eral F"C?[;3Lu7EJeZSNRi Iޭ9q[Uw N#qҦ!&OO< HVJjJkZJgKUgɒCQ@]&Z+'xv P^؝( KX"F:' uzsכ@uui)! IJ!•tM5BUwNաC]]vסCE+A5.riVzXi"'Jin*`ӔDQ d !(/~ѻc)ĥc7nwA Ζ`Ś%KrfM1=N=xN;X6I&R}}f9ݽI)D2u epd$*Rbdd^1 viutW@ھς`UۅޥiM: !RR@k_un]gDSb[dL+g?СqJ#i?ԷH[ .]z(s"'S~߮^f̓ʉ]Tɔ&Ě5nֽgˮ""\a/|.;uj8%jToܸoR-U\xTP,KӴ`0z o2J%K.~,8}M&we_2{4!h*d YܞN_I^w**sIvKDa9D4)h.3 D![h! :@@xH;@//֬y0rSX,[*ɺ^%JF`3`MpGGdzæ/k,Z]DWh4@XVe*H Mk<|p8zkWHYԁx !u߶mllN9=$`?` WҲ #+680\ | ʆͦ]nyF%bE=p-p#puH40̖ ?-WuWGF4- L+s{A`>f'54Y0j鞅5Uʎɽ1&ewUa^ꈓFqVn*~[B-Czn"p a1j@#1@%IQ[_ŵsu]˂@W~vABUGT50B"rJ|Hx=e`2| Xc(xy{ lا#GQ{5c-`m;nH)z!l/>x=@TR<arU֞j"2(0D<W="SAAL DD * !;zk+DaS{Z{;a)FY6oWvWnV}1Ƹ <  g~9D|[X3`b/ҿw޷ܿ?1GF}U)o}X%Y*^%mb*!`KU9k2>ٶw3g6ǣ1M9ǚFN|43Q(=ٶ].p7EB?7Q-D]]N?,y 7Ћ]ęmMgU

ȠA2s!f Wq ^x>m<$*%bj.SPx l?0]{ǚ5_l9V:ub|}ddX45LoNk(IqK?q/_FS)b`SRC0 5f}`]m6} `P+To/|B;vTnu# ]c \uWрZQDE MzT8wF`o{'C #;KY %K9 d PL~`'Dzx'B\tbѾ>Wl^)#/# kbDI; R:jÆ'dulW]Lka,Ҋ%ϛF_]a,AA>{qpW|tι., %e'pmjPgIGT"1<hp]sRQGFxɚb9Rp\9޲{l[q2vRi3^gČsԑO VuPHe`pՕMd[4jo)(k|2 rRZk܉g1WdY;"h-%]&ntoQJ cGb4-^Ko}n;i^:o'^߳n/¯h_.87XWy/ j<# m6@lh-&]Qӄpݑ(JyxtG_bq Qg`ѽt8\^FczWWk6wt}^0kjjuݭ{C4,@#x}Z"D` ѥ& ء,]zY$ٴiH eO4 17^"ۓJЀ]U&9G `Em+Sز%⋗?u7BWT*J\g o C#z?bT:;#={wnmHJV<~ISSo@p:` @/P{wTL&w9)@ [z `fj)cXxARX:Ր7 vr༪Axxy>ZL1YU3 [` gC F2*=0g>r1ꑴіƨBvE}G0Ȃ 1̛i>[q IDAT  С45]ݷ?ӟ|]=D IegJ)r I}<0 $aBkuPXA1S P X@Ѐq_~S5'0bɬ\ (y`pp'3 `})4A 3x~zzX~yب/ÌpT)K\Or3sG"ڲ%}RW^'HMmukP뜖*(_\g Z*I:gVJ<ŶE+f3hlk׾;9vSߦm;4ʹ_nگodyo{ݬA+p% =|~?=rb/,^S~桇^tˋ>`/9z9h:qx}LZuw鮫 bx~>Eþht] PMP X3A)bO@#az,9mJlC9+0|sd̾RĩL]_}4nd? &8A{"7MӴ ٞLRq,SiWLwaCH=7]\u+a&p549=ߞXGV0.9y ,%Yĉl(̞trnHXdIs0VsϯI&/ӌ67{_;7/#- *űzJmbTS_ir]7{{թ[_qg,JYQIHMi 4E"ҋ/_$ՉyNG[Z8o"u+XB}=JE7A$F<`!=,˿?1wj*P*|~ebpR¡ZzٲEj-z}P{@-Xl\LIY#H P{9f?70;~xqײey 4~!pbl{bյ L&=R3彔 x@O Q P>*ˍh4d 8Duޏnۓ68x끯E L7s<=}]R$яq@ tp)B!X^7hǁۀ ( n,z (kYM@ :`0BhVVS6B@h((}$>AȲܼcc|KA7/vڭR &PM9tB)RjVSS)0?8ndšPô̘'rO Y U^pNrO|M=nRRºuDO~ĩ]]"Е]&ׯ3Cv>-4+u(15InRTRr uX{"9AOԡLBtl^Z?F;b"UhH1h:k-;'}ǝJU/%6 1pREO|W:#AciZ=;TS>RKrxx%HVS~,d_xKD^}K$Ua/ zk4DT-D lO.x 'wԖYofTDE0ϝEj#'rOԅLRPP#\sAo6 6@ :R5VE,10we\g2N8 ^JبjU(jFFtCf"eNi5a-2"~i79I2TS9clZy)c0 l݊?>΀bpcVJFD HҠ]b159.moio؄k|4@!.u|\~$/w<;qheVx"XnPS,^,M,3z\wI%C:YvYc!~4xinouMٻ>QU`wjfDf PNa%?n'V1q>&DxmەJswP1&H\LƃARJm%$:&"TyѢ~=]X*"xh3jڢR-. DI`{j&ٚUuu׭[MD{/UK9@J 2Ɖ #;16gw9gD J%X06D7z!`eonUepZNxvRdRO>T*xH| :<х4 \ hƁDJ9Mubѽ >T5\< L@D6wknnvUx ـz>D4i5EV/:lp}+{@K#ZsQcL&D֯xP(qE;Rn^shx9R\#P} N'fOo 7`I)@61¶(^4 *j}WR3^ e N@HR*5?-U}d7Za`zPe rˀtF*N씉q–%j@ӄ<ZEj !$IAxDY0Ɍ{B d*X\x^lM9yJ J>d漆 _}#|d9+WK^h`'N5X mnkHt_۶mf'Z'yl͂r.3b$i- X35\ZH1 V)wX--5yT)#" LNU$VLN&=+ H׃-@VfY īOo rJ'>t\i51; Zh* ]rfecbpJ^|G4z?w߽I&]R,NrWbg%KDw74ϟrJ&?mڥoչ!¼0IYI;\ MT)I{O(t@aR0?Շun ^Of,Tq\q`j姩.FDB7z6ݳӉ\UM+yj5s9kHCWGQ:dsK3e| `4~-j1uk,ILVOn]3ʟT<-mR8c57n: ;;(.垷`>_0vzJA+ 0DΤ'Ljqp%4D|ٞ^yeCTl 5: RS!ܕ_Xq{ѱY9MOET"%_c@vs˖c1慰u~3I~&j,}6y>}{\믿[>02n|5nu\aB^jRF4_ULb3UTJN 8oSIMkϸ KQiK2aO|ѿw̞}oN~ ">?^彶^acs_T LSmljf:M;PbRk=g)=op6V}W<ö5-zT Ъ=-`O*o޴׹ K zl{A+{h'cstEWX*JDՠ5 .@Dyګ-}t ^nw}Yl[ ;۔& ;Na\E ldLse6-ft-*@M+iKi%bH)dli)RQ@W?[(X 0"SR:ƶGj S)R٢FPΎ|KztSØŰ TdEX8Xxmr V 0 $Z:+W$nhBn/0Dm( PsC͞9s:zԤf3#XNڨ X @*AUx"p(@$`b\獑39]ݒK|Nai %9` $<0 S}!pmr1 x8xJI@," F̐s3|$9XϘGGrT<DOy1hK Xۭit)@0@DTdJb $< @ %@RI`953ƊE{].'l[ж5e1ZwG3lދ3 ؟Y.koNmd3H!pmG(m."JC@54M C/ub,cxK,boR']Wc6+ֹgw$g`#,pLqٟu'*KI'%.RSJwϞx%S)2Rw71C);Wg']@/XPw ql }W)q ikƅn67?68X$Z4.9E>lZQl8C X-zR}͜ Ixzɩ|5P7f0gJ߭q|jf~ݷlY;~m~ܓo6/d`SbmuOV(42Iwr aӴ.G4M?~.uyC)ϮokqXk|ѩ~ݖ{:+◽S!- TW:?2.p]T[uutXKJSq9ndoO)9ܹGYodo?iae oxїRzv P(zm˴ {_9ciƄxCJ4>\UHJ>DRH$#֭ζ{~m72}]#*V r@x!P]Jkv8Dzz}]]ug B(u])]Cx>T XQ.%Ni@R^ؙU ā6`5S!`Ep@MqcF [Ä/"5N@0ABy_lCz2 k0?Z[K[*EϿ] Y0xQ!/ 3U2J p&"X=C l >Q5dV r>31@ zP7FF촍P暇r<8{{K+eP-!<^|/M)Ԁx G]ۥW2A)B0@:1&j"fr5~׎ը@OL3b躮yh^GQ6mX'XK&3IͯɲL(*SVaccƨ݉DXҦ}ӾGS*c tCm>\u= 麞 n#c{ۻܸqlo$ØIiΦR~SY&ݷ?ykM-ʖhGDnNJΞR4#|m8 ˌ1cosΘRGif&`σ6[ߔzK]NOnх{z+z6A/?m{ʳ cH &ugc{-hH0ۇ\ѬK gn: \Phje:'K(bJK'Q1Q@#RFwȎv x%$P,h-x7~>)(N";$^d? 6_g).a Vp'/el) swHZ;y`@;;P``l%M ƩwOiQ=b0:H E@+.֌"ȥ89`|ך&Aoun㦧z=)mӢ7ih E"kϞRo˜\_p}+S\s%Q}+>wRM)Q[V͏eSER D ұ}xbٹ9pgo1"Hd0O 0ŋ/VlN~CQ ]-ҠYQo0(V{Tk,R%JzipfNQ h^< (TGQϛW& zw&u5B :~iʜw|֕+#[*6Qom42}XO/;8hZV4i*‘sD4N^W19;NnC*Ώ\pi넼5ۓ}Zs$֤V(.ַ+Z/~b p5(ٲeb]OMzy?DS-m=8;%k#n q'EJ] /b? pzh3ϼݒOhRf=w>~??Y9p7KWFo ODmp~2-!1ƉӼ\ކ*o:.akNp÷s݋)@TDxVn"P!Q^JFFViYDYBD\)z@[Srݺ<}3e_ˏw@ x5уNj@:mBUk`@k8IQ1RnblװD}0 JyD<MÂsޞjj+j=\˺,H9qȶ]"f 8.j$%{H7Ae(Ng:S))c)wTc Cer8xz+4 H-]0! 7PZ{Vvؠ_` k`3Th ?7 7Θ,€hfOgıP=˭@ `3cD@@# : xFP4`Th`a)M h1i a X/oǁl*.t:g`O!ZβM.a A\ӃUg-(LrD-R*E`RېJ3 ZPՄ8Df ׭ L|DoB{b*Q,)L3%`h0 ?e׼76؟Y1#z[K)jܯq=2K&}IhU*MۚV޲=`0hfP%jX$/.V}?Yɧ4}S2\]Jt{R]Wn8fw?X^&cuu§[Ƕaw H [)yC9_iy3θ쮻֭{s BbڊFml0F5/1]6(21؎CXꘓ\D=NW- Yvv#zi( _,E9> q3>is !01bO?ˡ2u1G#SHCUW[u)Yڵ9b ;eŊtsLQ㉍wgU5>2p< !=&8,л<~d2N& ͕zƞP댔bUJ/Eu\{YYgeTQ2Vt~9ߌ<7Ȣ+ha73>ЦM }>/; HB``)W~k<1k`\ݧv'^M.ܜYs'x&Q>,ޝ;W+W~0#_qM׾=tsׂ67?^[~Xm!9p]T*I)-˲,kF¾F2lg]v+oT ~ yRgGŖ`O4]NVi勵ץ`/qƭ{{ê|;?> 14c]cGZO;ήZkSL %D,H4H`H@KJL""" ( D:Jo T&L{ϮǞ=D<9yagvY]g")pƉ}Hqvc2e3{ c$dYI"1z|f! s:! x^E16n#Q0)hm@xY@  l}`{F#:C&dF]H=6Px%_bÜF<1#F"K!,bP:na^7A5̃&8j<>Xi%Jaxa QxFYJR.}_DCm  x QJv ;K/c!& [7? rgX@? FF~BPpp p )Q45J(ԀRPIP@0"pr Z tjkZWDJCpԗ)*yTF+w?on_ї;ٗT HY&Fc6Y'!:>)tBDŇ1&Dm8AfݢPjn&s;}[^eٟ~{m7r lwnVpGmY牷nKo\JyӨd=NH޶t;wܾ}`L ƲT V̾s؄m;վ%,x[zME09xbi$+$򊼦gm;ގW紺,R>g}mRWWǵcc 4\7Dݷ㟜Om˖Mn`r2`7nGZicBJ -euSu&eL)Dh+}(/|N G9|$A@"A$B(_֟>͞2ž+[EjGӴos@kku7Fȅ.[~G*{+vC:<|w`哏rf?3@sru8^nK]yWxų[֮;VR/BTT2 RQ^eAq#P挍<}i_|xw>W߿z/.~Jۦ/~ߍLǦ< C00@ellZwϺc3^5'РSf;7zx$gAL g(P1{c+-+2sQZFiܛοf[^<1RX2S k }|y*)ݺj*7v Gҋ=t!6ϲ\&1RêJ2c/'ңn2/$+ʖ~*ev|Du3 )ACu { ACw~gmcRR9N:v!'j.~-'b9D92r.+u'~vo姈gR䏎`GM5ʞ-,/w)7=v~CSfms~s2e=+uծ]?;n O]0u襡L!-,1D8!+sW### -Wvl"Z&Ըt 5&Q=%'R vqMb폧vm2ȸ7yް1Jrl_=VŘ/cYt4ze˗33={ߠ}oE]P(.ME-|x vwGWdrԶ/dS csR%gO?_E C cQ@)5J5:\ǙwlRi@[~%iD:]2<rVUx_2Y?WJro òVX 7@ >(6NX 9 >>A~| ʠUĂކ>jKa8 + B vQ( <ڴGGԌ m"| 845Ne,z+c At c7ہ)r &r:D2ݽnřǝy| ` J*ǚd;쀣Ha(ahhQEŕ'U+k%b:̸= `C3qa2J+"xzk^[uqUӼmTqP7ڻzْ'e"U# Pc2ڃ1xJ҉"(;n $$eTV j“a#yymxV*>uƧs#NܟIdY(b3/C '˱p=1w2ʒ7RLtWJw9>pP4 yVLHC5,JwS79:R Px/{8EfeM}}ÙL>hUŞ^2ŏǣP4xƺINRZO)R_Z]wG)C.6)5;Xv9wXwcrdSh$%N}JMMQQa|p8d`@QDhkGh{ NUK'Z[[.{nx` x\֤^.pA"ٌZ܂HCd! '59^}_u_~&b%==GG-PMbeke/m*Pm[ Dz_]VHVzl}{yo͛ gMuw`#  Ĉ(7\0AWO]~_ 4U2'/4}W)xV*o1=2K<x{ ,Gl2)"ho:d“us4YnSʹy޿Jg[ r,Qo˄ъ_T=Mͱ9!eoKc 3dVRJ4UUMQA{^8\o= ER"acBĈ~=\߃xl&؈Z>KTmN2#әEbi벌%V"|ŋ6l=χ mUxV$Y%v'MW뷮]{~ mo!39Wݶ-ũ_(sΒs2PZIunSڼڴd2  sJ0<_6 JEƬY_Ag`M(FcBlQ>N$Ο@l_ WL9>_Rh 6X 2x>{J&`; IDATK!u1^."JS`.'Q! ?%p<\_t/!8x VZV]G--nS?`.ԃQ D<ˊ)z{5}:{a͚˗30vww2yotn==?f8_HoPyAid3O&uA a,BZ !!RRC8z 6p-b oB'jL(`6TA0XBvŀ6wP( e= nHʟ7Fk0rt$9#BtP o"!U0 f8ɌfB!{$L^?[dmp8lJOT@Uɍ2`o{^_{m7q'; ;켫 6ARRHZ:ϘoGA|jÆ=Tt\ϬߠdZjF'Pb\D(65Y[JJ]I xJfSZ,4XX"TYX/jkw߽SJqwt;;Ўz3%#MleŲp!\.ڔh#WgMMEf#{V˗߳~oy! @LZLΊ Z9a/}BVǴ<1V'zR#N/?I΋9e?}&>!~ֿ}4i};eBrc΀?8(2剈&a,:dyAN?xʕ}wVs.pv޾ȿ~1K{R_ k< d2BX,_g]g2wf2<r J5,+!Ӧ8DL&B> ,+VQq?DPD֯+ FGstW{{f5.cʕ:~ _9]?Sq1R(7PD ? G4 RMp1 ӾLׯ̞]/&:XW%_ + WC{)NumPV624`AvwH #i0ͲN_"s&(([HҐZ`x@R?5fC:rAPY-FSJNUjA3aF״lIƪҒb\gR~nǂ֒#f;lc0+;SJN7 ֔0"`|Yz_J;+jR B[$][? r\Dm0w{s,ydeYqĊ=;qf ETwV|"tqQ_)H|+^M"@ ){,ls[/twj?}գ.p =m7qǚir˿=}Ч{ώ:Ft~w#-cb,m;6e ۿfxń=i3mɭSi\§ Aî]VXU60…Ka"0FcLSSe#_. t<0Or Ξ.ňAq&+wR,~_HMiaWk6t&gT-_p9vqZ^|y{dhoŋsO-\iqfܿ%@y.m:65..cI4Ӧuǟvz*ǧf͊+/ʟ1CiBٛ7˖霛XdKI_ofh]*IeS`ٔLdnnhxm׾}N/xh,ߟ@=M}ZkcLWs9v]׳12lj^&oě7kފF" nw/~!lx9Z(RA(~S+M}A_1lBRC=\oXQTL]ph3`x`YByy6zAk=aRJ5E"/:N_zdFGQJUUBaeX\d5H)zޤ;:6t5ސ"iW}KA FWvJt=(5b"~pARj 8a8 Jjj#XuS&\S*@doQtkƘqG*F%!yo$cp"ސg6wl2eQ hKhBB̄j8_[8̈Bږ}Dz C鼗WJ0o9h`n8 %5A:G}p뱮3Z`6 ѝחrVܱb`@9g<xӶ7|h<|f;vӿ/~|[*Ko[K퍍tI w}`.f"BFGm ?Q(J۶?q2z wR~eloFCZyj|M+R >8]Y1}ɫdjd$ŪTة mkQN55.qQY9p⢆3hjJ9kHE ቭ ө ʆL+WƄL]g[Z}P XWW>:+.h<+8|GUcӑګ,^8 ijp.<0J* |^ʆW6;k폌 9 /m\%hK]4_ uwm-:J¤Љ)DK ^!_f\xPKKD PlnrfH>O\ik69m)mL2()HzAЪ\r1oŧ`|.# hn WT9=+9^-h:[*" RG%^|q#d-Kfd*㙿葡5T=`'UD*pFU>gvg_~|jjtCXGw77;xǥ>ަβ\::S/ 8 կ}dIJ,:z=Pƫ@.z37z].NI~?yAq*.kn ] ΍{fK躣kʥSO)Zb)H*RiڦP#yjT9nxzۗy3fEn_A]ͪU|Ӝy&G:(+$"hG[{^)8'Z櫑;K}Tjoܳ| 4ם"kr[>R3EcO~=/U8!vjlr*;TyvZkIZ$wS]E\rS<)Sf޾"eF[6_tQW 78px2pނ~:v4fO }8K0Ƽ{D>~o1R,r#DĘB,P"fʔC7}?ysFGk{{*"_drRsKpyî_^~r2xr޼J]yƤJ)÷'u1Wv>JAu6trȉ#r1ܩAD&#pRB98?ctiZW%qMxaPyHA L,+yq6~y\ȖmƅTVYiA tsF9Yr9ƘZboZ¶%ifw+)2)mþf۞v]76¿)5[)}<3.Q(KED7na-^,!a2D&<v7}#7;0MۂrNPvy}gpc lqQ@$ɑ#_'zHT0X*!>괮 ^b3c]]htݷ|7_IITT+H,KoYsM`*E `p&9*6;:vT ‰PjH#2tSN/<ӿ}gVzr3c~u"RUiu<$hR]EO?`<q b=$h5~:xk?"]LsLs tsY¹Af ?rCj9OJc {:ObWT؂ #dt8 x`Aڊ*5>8u jw*={窡&QР9r?](M옶1YʮUC$lDu {JT?ܤ *Ms;*޸S[p.XM*ӐڀP(ìIm.%ή oߖ;_kk azzڸw5kKTߒJgYKg9,̡Tc¨P IDAT|~c]݊*Bһk}衍DX,Ͽbx])yUOg2 #@:>}ƄYd2*uRu鵬~ސ>u1 *Q"ohL8ZM"}`}8V)Gd;k)vPR0d6k2ۮnj|xy7 r,EM0R0HiԺEc w0aWsP%EPaMINs! X0P:1ZR@*"^ߕ0p\ S}\2H͛77oڵуDaĈc0yA$2lv+2ܬNbM &p0CevrסSVa]5:rb$ɪldDvFLg_31k bYVbJbwnkם ww>qtD{Ysq KSOA86cXK*G)[?V C~(/Q1F`[tx|CCl)z%KF`,:Q~2%G BK[*X@WPRhq8C'tY]JxRV}u wa胲dNa([mxÜb(;HZP  -Sᐠ0\ d,:GdĄRJU)XgmR?ˡ{yMlS'[B!{AMxo?Póm蛰q\nZi7OM~꺙 & }7μD~c)i[Ln/h'OՓW\zK(_v B'Cg>}o{:SP!)ت5b߂~4RJ9Wygոk[VǜQ)W/]rK1sc޴_7의Y]Bmm@-^~чсiou0ŀ把gBDU-RhjWug A9wv9[Ee2tui!cjѽ((Qm<aż}/[vjeEᎨms\;:ll JuWcBح+D!(4IPc[厳]\z(a0 dOpvꝑ~`)_ >iJ7>s}3x.B{ٲ[7:7vȼ*V[Uf?|RssIՌ(,^܋SbT 2~S^֦B1Eڼٌg)1!PJ9TNe)Z J㎎b+F1#J!`D +^F  G+ʆ -9efPهc~)('$x\ XXjc{Vݹa_Ϗ#~U*[O睜xb3W8hS9Ō ۣ6(T!>Ϧz 3jwY=xsDa,\vVMP}y玚t$boj: N*J:P҄tof…ݮ%"ɾd.O-b(yW KشYg w=U> %m*G+c)s/zz|XZ,~N?0sVrȇɵ⏊ U5yJ(3nޞkCkuW"{X{z2Qڻ~wTDϪ,$?s1ym Ag(rʫ͍*0qPʴ4g/ϲ[aĶɾ+6m@䇰,ˀa(nYkY{` ,xf64'EZzwhsTrZjL.*8 ,0RhTX`mH7BΪ /oZ pp0/{ :*GBjrKHu*J p+̇ +JՋU\X */44\kTPΰ)v !ֶ|Etc.2J2|RJ9 KRn˲m[f۷XHr!/z1 )6 uw60+6oyZe™ߚ;w)KPX!5&Oе 6XU۫I7qqw ]'Du<ox}+; bd8a&L,b>Ѷg*Y#/,=^Ķ2#PBqřrد&Wvl.~jGvZsvP/~ T|z6UH / &g'PS xB,GBë00vWFkv/"($- ۱[Ȇ`CfJQvYܺ} _& GUx "M F LӘE*Eʶw 50s$QdTk?Os '3*%J2k5ݳWGfƱ'Ff;Mz#nM:xSgSmǶ}z@%Qm(+71goo 9vsqԛ8iT(#rX8/}VVZ3CɽR׭}+cccPu攤brUj=ի\@)T߼SO٭t(UWP6J,,f9{2=ev=DvI1--^Y:tRz3^-.~Lh&~8Ň~!V_kGiU1 B)Ye^jR6&Y-C+W`ZgJ;T"!*N$&ֹ];.xW,[_=\K@WFo`{ʄUeH13=?xX.YeAֹ[Mž<<1C5Kp)t3ҀV=m'gw:s.tm„ jxc}x~sXNGDf#;$IOkˎL}^)yq3255m=,>ôu215d2N?bw|1>mrI^:R?wi *Dy/IFzV'wR* 6JY'U~Y{WaJmx mHvԼ/ 'a'5x;t)BKlTD[ E wi XXRΏ,2߾\jk/{kf᭸3>&{3a7i͚}rY+Vz͚ˏ= yuxOs7lX|uѢ5k2ڽP kMO_-D*fYz{D7o_Lf ڶ DKE ˪1Hc.L&ZZJUu#\+57(D" p 1h8Pqi9Om;v\g *Ł0<,aJn'Wqc$tzJ A3 X:|Yj!,6 9{ WA,M 9nwymt`t«)2s3|J^0)2cUv9TIZHD[ZʛBUpzzR?VyWlwdU?߽o|UJ)&-- \uٖKo2?_d;,NR80ͰD4RgY VH(PK"Q:t}u;zcYV%pXC.W5jD})]cdƞOj\ʢI3X50Q܆dsW?,Xpr*kڪ׫V`eJpO[q+`RNc&\F>XEŕvrqRJ);Au+"9%bV;2Kx~! E"\ҌaaФM>:+yBX1@>BA$0qxD*T "y6{o/3JB1 e:( 82f8^o#u{R Pق)ѡdf-^ GFwĕ7#=ITbk o +Q(<ϳ,JrEFVJ#E,M =e[_"dm^ؾ(Uv3_anX5r g"b_7H"QkUT;#&T1Mnv!ƚjbdp(ONAǙN$rnQSL-~Red'_27PsV)[G~]M<]tAu;lUbٰ_q<[ɽmt"_`lVj\B; ٶl?1}G.wr:Yʼn9GtIO$,~01. ڕzk"N4U9Ζ耹J;%U|Ô\L,_ўWE"##%\:;gU_?Su{ {xY~PEѵ qE649ygK{$Y~elO0Z[?.muR_^y`kDGv9 Cj>$o'&iTܡ ^la_-FBϜzJؤ/O|e1ۙTaF)%HGW$_WQ'b[6a T7ۋ?蠽ߨGGyG3ǃD"ӣR '8j55UU3 - CY}539bE F bl܂?T% %+<Փet"w%~Wfe„"Ĝ m'ʲycY cN^LٛխtQJbXUgp)1}dSS=54{~uȼsߊSAY&74ϙ!IGg7y12JEBZQJq|g0 -z .2ƴ5rt?F3e`&D p7~nrtzٲ{׮,o>{ɒᭌJ뺮eY555BnӞ~g{L[XKK'{ `Yx"p1匀4]ps b) vlv~l8 J J"0U51p睾_0fj/(eȍW%ep& {CRU"iX4f^hFF-K$.H@ F>ao +a% R } \_W]߅,ʁZg,Xs]~9G}+a^ŕn?"C.yc|(rwof}}}9yɒd9$Y[G(Ei;pbM13AYمi%v$eaZk!qhI Pۍ XG55!6C (UP(IV s!OCv6P~֎\5NڪA <{2F3˗ỦT'mK\V%m[B[(hhᡇ“>D,P?nڜY?=J)u'yX+B 3ƌ{~$|ڵoey"hKb7rWM}NSljNUԺ RgmVy۲jfycdt&32b,bNVWz{r ֬A_l?& IDAT\NWw\$T -#y w]' ,YW*wv&RE5f`P62jx}pGgmgas$ wӗ'sahf&Z[mw#rd2$ sbԊz"ʱ,ߟ-9&Ԥ] J8.)2:C9]ᔕ$ mo3@E <;8$UhUJ-E- `k(u#\L_9?l4x7n|aÆͅB1bYV#kS5VF^ O4EG:ᆻ׬( ƞEk#/]zM}}ㄎ ٘௃oܻmp__m[}}d6[yʼnmw6.)ضQ)i 0"HgW/& PtpgRNjEDvh0sR1pxldrQd':x^=T+ +}_ß P30>R?/^qk) \ +BX81$Le7l"p (yp{Eb(v_ upQU|Rp>6տeC/Yri{-k~N"XD- ::A;qe݌=˿Rl;,-J)PVZ˖[>O9oaI!&_tċ&קR--gv}}cccЎB]Q^>;b࠘YH\$]F*hBƹTGviJ{s*q%x7Nc(EVAU KH]TC 6 4DKPBNU!R^c?tݓBPV +'77?hݨKOeCe٩j7z1F6 GA+h47L>7if/EZҎ0p#Z_֊%[lXp @7E"%$uH%cDChMM{A`TTEŀrzL mkwE0:̡`ʻ(TPx`|1~ &rލ8BC%V4XY.؏XFKQ%1a~bvB%ӛ/So痿9VE+ 印Zk'۔N<Ӧ&jYݖ+Vy hc$ jk,GlgYnm6̥˗?vg>xc\^x}ZT*[JE B8jmZ;_XihnNlnn ;")zca/^p۔J#˗?6=dV2tR$9ה}3=j@@b%c uܷ(]!Llx{U*UT9 y$\E[<ʦ6odiɦz`'0=J)e z7(fSHVE頮^DRa&3tv>zA{{ViL$7khcI5.uO[pVz&;QI͵h0fSۄ,z|E~V4,KPLu{tB *FtcpZ>^jTLԔVJU7^WֽR#k]oFصƈ1h\M EFr"lH {L$`6b6J.tkS]| H}3_y5GGsZzx8*qS[ZN;M{I\PHLdF|2-Hv%{{峲ڍD@`J߾ӛ[ꋾj\ W֍F6ARR9)7<{5J~th}B$YJޛZ~8`**q?O:c >x 8ZdhVhQҗEE 9ءd==5[Q&ڤ 'Gw節^ۻzt6>p |ұgnۉ$33әYE=h$-O+UТu[d{{m[-A/Xűrt~`ڣDp9\`Y0<0D$!PIYփa%h3uaHRИ|%wI2k-Pn☄9 >fsvqK rJ8ȭ" a> ^(j뵾Y%ATb_nR UlR j 4fhHaXv KnwakjLP9ʲRHѺ:x. @AEF>J==e5˖]zɟ}U3aG&H:7RW>jy ՅxkZBLEZ`͠C*8EhHoRהQlm5THr=\])TLLr{< 0g7ÂjD5cDϲ H#:oy}v ֞x/oz9N)TUWMb˛qC!9QuJk2L$5r,u%/R zfIsbqg1\SYFE*%/"{+ORL Spj%ZR@rR&llkEڲ d[21m (! 둔.&zEi U8Y+ *$- o@=E)E-HJ]Q4NMȂ#qٓ[`f9 @&P5iٖ,B '}Wp%P^"K~俖-fqUUU- eePq5XoR##nDSEJ75Ǟm+g4 šq=I_'\#hQ};n}+NjO͋i͛{:&믿ox5J5mNjd8=m ۆ^9{ԬT[ sƝw?vDzRit$xq⋛r9z֭IJVnZG"47谶ū􋗪chbdC쏇=ʌ+v+V iϲ$ }RUMxu͚\NA˖}b{=:u46ضJ&Լ9g៚OE 1h{N ̓?3,)`XqêUk蠶7iZuv>}nL16BK8;> 亞Ĩ91¾hf"u1S3Le J3[JL C5JL+qǙ5k%Wa[|c ˆVRW炙 %H1`]XS9vtĠHEtcUGس;;UsSeSqT%Һs::8Д h ٔBmhIFKW؋J*G@$F5;/UolQWa-#R:sg7;: "'X,oBp#瞻k2^:J(;ZFv[+("4OfE1RH.y%S-bS)ms3ΰzfp`0ٔ_:?1=dJs7֖Bi;ӣ0oFF'$lHlmoltTPVSy+t<0Olvq+/M~v۶mmMꔹ*<_iliR47~2(VqʩEOkoU>vKiu*ULQ67$o[nx^ݯo0Ju IJem2K VXWO{h$6n\w/kN&ЀtkhsJ; kE?XN͛ߺuRR̝'Sw۾&[vOSu'?|.vW\Qc'xE `d2P ӱr_ OK?y=u|RryyR) {Uʍ<{Z$7ch*@km W"xIJjte27hu)\FH1op%\`Y16w%W"SҥsT,<;1 JVBYy0 o8H0>JJ"u1gWj ۴- (;Sp1M;e,{{1f@V*4ƁppnN) NWjH$EePU@I 9sxŊ_MSS9E"Ԑm8? K,VD G1 $4C$ rM}U)5==}#٬W(Op0l2ķ^B5c!u2AAEMb/稝NL?uh|8"Nd 2*%کY?p _ұcofP~`,gcYyB~zЊYC7iٙI zk IeY1~蛈8#fbWbBP͉I;ٞq)Ɗeӄl uF=!i8Lsf6Hó/l#)@x9LE"-ȅ>x9p4~uiof(peH8GCe=ơ V/-8jUAN;B^9V I>F C PW)TII n L'9"Ԍ,Gb؞B3f/%Dr#P'W$<7wd-A \Ϋ{uy k6)эhݾo{zb뀩W1uuRąZo}Xҥwil\㋏O6 ̟hODy[򏏎)Xz#;c+^:qiTXۯ{'7;>U(!e14Z+z61VJp,-<:Zxe!S,W^S\j;1AO v2#QUC? {cSO[[íA <5;rX?'Tqd5=5;ڙΌ^ݪ&S ey\1T{X0uWT۞'|UwmȪ{:K&ASk@qx}y5X!bU_[?qQ2Z?}oz{hFDM62޶jvD2= nKicٕLgVŋQ}) muc#+V'lHX#;»JNƍCӷG"Z?>bXITݚYjO1m??ĎɱƉ8(5J;5}^0,uHq΃gY[GggԲ^ C*Ww 0 ˏrd2iY//O=ԏ~QhN;^_!200ֺ̨6r>3šБHDZZc{N5k 7١!@Tm1?zR*vu7^jP1U{@[<9~8v ZX.>j!0& wcy^Ed*~߿>6< +)P+6L̚>f} ӑH琉iD`4 |ʘ (wp0&8N~j:9n*lvaxP#BĜA߀l@{-eS+s睿O&|Xl~k];hYvc]ttsxnڲrL<\_kcc[:Bv ΎMM_W6 eАx#_ǓTfZ{9ܝ~Jf7R <y/p?9%D$K4xn _clWL7_z' _M^< Bj8v)C[GZ:J6A xgwne2 FraE7<|_E@/or@DֿϚTGtԊƦcm/m/6Pc<) GբxL _2B+x G6 /+那a[`-8Pɦ_l BxdYazPSXL RD(VZ?#*mIVEQ]J+ J6 `@&< GT։Rޅy(PHO1+fK- ase*B:GG=1BJ7OL&K䊿+v/6m<}2Zi[/F"?33# 4Ls MMQ79pgV >TrYTl -?*y*{t'SwP14W[3"h:aٕSsz睯Yt#g5xa-_ͯA4q'<= ܂@8<_{Huel:𕤍fF"aqVIfKBao;xu Gk"kR^%e!f7ʜ&'۝r9*&a2hB˪7nJ#|7fD *BK.[ Nn+G o<&ٶyf"zQRaOnfHh[Xc #"fi`R3Jux-ZBP0m㎋D"uuuHc?w#l6-؇.x٦Mz]JT \ \ākˁ!@3)\k1P7S'¨ھN_81"]WXx.2/Kuv8:fbQ`7Fqr Ԧvںub#g˥tzUϻB*8b28έ3)REϓrjL5$hmm,Y{5VvknTkAU>L p( A \&Mj%&%TUE?!໠ E%|f?ۀtqP/*~!Ea4S'\um@ !|b&0?|ɇe4B_szC$GX =ѽ;cem۳s5 @YefFX:HsNM2 |hC^)EFe>qÌd@'Z>+X ):2L b*)c}E^ Ps| DW 2)V*Wf.! x>Rxdx'욉W3UgYNЏK6?= [ZfxVzWl۳̓C?p0vW|x.\ 0ȻD.&4[CBeXsךF<<\džCnxfҸ߾wlN~_L$[)z,tnKPx^{זNV#PBn;RPJu'M3~plX_φn<;2^fR6?Ӏ#OxA4"4&58f)e "(x{ _IUr>D̂]G<.#Ǚ6A׵Lfʶ߻yG4u\R9xyU4=-&e ~4DMb<\"נJ&݃\0>>'BE{z%DALJyVʺu>KEu#˗#kFRbd$Ϧhenҹ=- U!>97ɶvvP6 RPpρsJwE&A14L?[NՙTR[^Mf2EMRQQ.+ez͊Q/QWgDO}tM^8Y*SSN,Rn˧gi ?_8\a{aD><14w\ ݨ?_7E `C{+olcA6=$\A1TJ@h cܧx(•;\Ƣѧ:TjlC,Qp]yDo߾_}…\. |>fS444*qV===%Mk͚_n;5E=ebbMȽ{GH(Ƹa4Caqz䑬eEsC7Rhp֭;{kwT,`_T yEi ~!ضegJ!` d\,M5ۅ(+5Ā$}"1/04٭F X[K] @+0XyhR6~Zq1 P^b`h~ @=H~ Jp=\rCrndoOW@HXV{B|U"D--+RvGt=}橩"`> ~| nlkbqc1ǁum{vm_z_ MNfK/soEFb@`Apo5.Ap+v9=W5)ߧ=Fb` d_u@`,C"t V=kQ%@"؎qO  0UB> @ױURf2<{vylMn /yukIq1 8vN.@?&yi oIʻR 6N1< @@|@W2`'- 4 GB Tn@  (ԈU\`/H'V<+l5P+i'N ֺ[%F P5JQC3R ҈0PY5^K-C}x8mE~FX*+guyxb|Ƕֿւ`C] o@۩#h*` 4 4ÖipX,ӳ:*<$7M+Z'V~7_sP `nx=Md26ܶk+ރ#.-CezVG~]/O߿N\lL)\$d__H%$N|^y4 J蠽nͪ[VQws) ]UߡuT#id^z)Gu( p2iDxnĿ=Fs3 H,K3 Xrp]YhkFYad ^1G1bㆼ0xo[%wN Wtơhe2`k{K>;uz ڌBۺm"ڭQF#5ͫ)*5x| ]Im7e!xރoۖ_LuuU /^y92Zqa*Zo=2YEΚ}C^0}̿ VxDiF;R\( `RL)b\kPDyN%MPhჰ-tك a,Ո$=YLwJ:H#U: uE[l5_zR]G2yڵ k\|uY7lSN>̕>ۭ776A-Ɏ+ӲxÂzP0,rñajERrMOJkηX_]qaGhS<26wSZe+8.t)JAJ1P7֏hiqu:PٶO|Z+oFm?Y檆ߟ29Iu5 xn& J̝ TmZ4T0Tm\Scs/\\ z4[ɑfЁbqȹ\W^k]D-˩T< 3&LJRJ?^ tI٘N?tM371W*<\5m۩TV*ƀ|a!-hijwtYJ~w 4LdcaF H/MEO.WT ?鎺^˺` _}hG^oge;mïN;kՓco-b==b1ت?t׸X,Kiiҧ_Y.F]#MŒcM/ܵ:΂tu^Ճ+V6Z uuFJmjϏ{o0:/l9N ;W:{5B(R ̚Q$lTRr`IB(2AV{л" Mj®`O׹V] w_,s^P;S6|)PVQvL48Tr0uT{6py"AAY," p`pON{,$R"(3[B~:ZdTXӱ|柜9`vDĘv⦳|XuBMt=rOWs_FMٝr<bMM{نt\|1Qru:a| GG_\LvuRwy(Zc6ܽyxGX(RGܓn+;Zʇ%E?Ò}18]ĸ䃰њƒ"ݫh* (-;x9rw1`p.06YyVTe_byB Gs*þ}c茇Pq|D.mtG_4SWW?^VTbwpu-BF>/ı1{;Њ7 &q9(B<4{No^qw_u6O(83Ueb1 uj5L"ஸ0k:ǚw&nMuVE4 ؚ&rB$`~ϝa|[ !7vr+R!mEAS$4tXg%EםS-OFGZ;ft(+,DWa2>|Эh|a!^%Ϙ Hܾ>YqZw&51tty`nYH3:Ef'A 6_ٚurg1yԇeA*m~{?ScMYBhUյhRp &x=ܩ>1ڻw׿b;<}駷nnE3vzQuϻh#`a?Xnw'B%wy")[HT;y_"4͏i/{ؚsf<>:R7vuuOLcYɜ6 l5Ӵ!x".240LSٟ{kJz HI`Q)}tt.#_SkNjfFoq_I)f`3`qjMʊϹ5cUgfwU* D;re=H$\5Sh?ʀP:םHd

k(G@ 4K@qyMEbHx@ Xs4 Hj%ɒX2$Wk1 = tFFLa xdZnA0Svdϝ1 NutY{L܁7ۍ:o/:aN-@TQ]M/c!.mkS{s7~׎oe#R} #VDS)[Q2"B}$eP# s!/E.[NסxٜY\2w&I5k=u\嬻' XƨO$͂$90,=4=g}N ]b2^xi(dȱ22Nm83fMe7mGM{DB6c//uSׄ;` 2qύ:nvt?9S1k]7Hgw*NǓxb#N:Ugw~.r|LVZo]C54D6XQ=G7?`쳽XM&'\GFo\vY! )fX>o=_(JyXՈiP=O#dUY@.`RҪMTx9dVSnҧjڈL'ⷬVZ)<'??r5kgox/:=֪nBGGY:4F9;r0K/:$R{znN$6u еpaO4ݺ[\+6HkɫwlQaN:[/~XTRʶK6A$b\&4 ~\|T*0Xk@WJa](Szh_B=0BA߂mReڋV} w%1zsܰ l0H4od:Y4D ہ Xʪi! "O> hBnȵ36x7DBhNYv=[1i4]_Sck6T{_^)`)_E4gvq8M A4:W=ʕQ91^`x(P$ bf@}Nd<0 nN&3UHT2_Ӏ-I 5f3}ΤJDҦon2O3J*>*et%P\Off)4ޝ?96׽ҡ_TՈYj#2TTF+qW{mn9v׬X:L_ ';fC(KPTnlֽ} Ŋihb:PlAvAؔ35[L-T^,[v\[_?{Y&{^T–-5k:Ծ~N-j9%إ䒑:bꤓ:wlSStHRj߻W\n;S }X,I'5p& WnӠ3Yu=Ѐy[ǐŒ ::+'֬]_5Nh~ ]l`Idե);Ncan!qG&EXu74=ykXg&fhT `y8}z1iCd/uxcDϨnp_=46 ;zCSOAקu4 ccyHבN;FMǀÌX"6>S'KdL,͏H :RnMPrAsI<bȱWVLb>B܆uWڛ:'p'+uV]Y?v ?_M}9hvGpqH+.J;=-{Ȋo'E/ CVpo8J8e ׬X9 S1ӵ( QQ\RR(o4F2K-aM:_kkjm!"V xO?_xQaцH)WwvJ8Zj$7`A>4}GCXJᅗ!4AD4^aB cs? FB^"b'r麊2{6YQL%<'tRW?/!6,zkkpi7׀2V,Fa<Ĺ$-XD1V-B:; ^z/wE҉CבGv=ZRe(TWV]8|D]ʎCg fH J03WUOT V3%t<@ٳO!"fϗByj7i` Pby@zݻ/40hJtu64 ;pOR {> &99+zc ̃R ,&Vg/6~Yz]_+kqݯ [w_wMRy 49 "!д!j4@!4@> 7o.~;?NccŢ82ۚfnB) ឞdrZi RMaoR`*)U(XU}P>|0@x 2 tE` 0jÁ~)B0)SY(Ue\ Xkރ T< ^+_7ϪDUwHFKڔٻn9L@3P-ףqRx6/*Q NiQ?{{ ]HWVsIU=`d W!v,"&UVx2 5BHC?B!E.!4L۶\piA x@%.5Tu}G0x@ &ԄB=CסjHk"H6U'*jNGH!lT_1!i8 SL#Mj8۳l0!¨)puC8٠& PV}Iv>\V`e筴|֖[<}Jזi'ƞZ(@%bAT)zԉfwyg*mhh]e4 ӊF7ϩ"g-Ƿ(xGyB̊+]-XFCY=\ȣhF).*/G&ӾӳC:lӗA@3`)K6wN**JlOƋ.'w_gM{yw[[]~12/dlX~}m :O,[q9g!36b߻S7]=.'|F 9a޽o5%0H<]fc5BAMk~+REƣho`y]rFWj;Z )F UʳDq8ܣdyq;F :,HfJd< 2 WKU/ݓbsD{=g"*Y)JO?#}Ω3LSAۯT&'{Q N?Ֆ/ 8@D(AqIbg?BbT*>Oz@IJ#ψZVDߞ7AVA9xELQ$&4֘EQRT (X0XLq^f}xvJK"90^z 7'ܥi7 3R)Ȇ_rtyCdinIyϺ;ol"gv23ɮo'<r;p]N:S__?'Q-\N>wy祗^ZEҥK߭K;ʆի?s_ٻ78|4 ^}K0sn4 # ɬ*--?]hС)Fdf @p5p pPw<:hǓW6qX{uwRD%p4.Djuґ%;:"EEH$ F0~PVVNe.`0A*rQ,o)~oӁ2 f@!lsA' 1+SVЁmo'P@%HfFAF&`$ 1+t?*q5 HSA-cԊ`){c3 X@2aTuid&M+\f$ɉ)H`?88(2 8(L0LeP ,Ĉ}[>UQ!{ a )2_-'LDugE"gsQ[#+%/i^+kfm!(D5dlt` @0 ^z#^#NkU2f0)Յr4_7I9 *=IaOE@XR9a'g(F DjPPc,#+x~cc=#Oma<j@PJ q:fE`0eFo۶7I:\ݵkuݶm!D.3 ?ns~%x/DXl 7}}gs177^a_`ׂTPw̧mTZ1c e;ϩҘ0֢})EQE~yG7}k#{zì܎7s Q^4$\22p"=J"ZbsjJ*V,qK:Q6}rT@9/ɝ˖F;dɁ*GOې~.Pdjz@~nzQY ZacñX&u iېDCCᎳ/^]MϤ|ȧ v9Oy+?•eBR=Ê2ȒTX;o(  #O iLitF& >8&CKcWKJr\M94o៑ NOϚ5222ڗRySDc  ꠪R: =txl(Gf@[u##PU*)a@c#V!㇗~tXQUuvbo7ԋFOVcAu9Wr(( QE)nݻ-,! VF@Q<j G+EֈVXmua$9SKUsRT)%X5v :%YXɺvڎn_>[*<>g]]>nDRH-¼ s5~0Y]oYӓJ$ӏs97yz9 [/h`*ӘebWTXP#KKHU]ZO*cn4N+FS4.U- _ ks9=\^XfmxqKTl\'M % E  RhVe ц yV`$,JƇ!f0rGxt=bh|`IAvu3K1\ʂeҦck>ѣdxS8>9}P(sw,]rrYVtHͩ__=ݻ7sJN7KUG7߼j*ﰲjժ.̻7߼KoWZox7no.ρcqRx+|W;00Jm)-]Qqݔ)=P IDATaq;ߴ@`I2/{3ƉRʒ\.広On~qڤD[ 8 t.`:0p@+sd @"I&/j>vB6؇ P{{2D^3{?Q4[KC|>?QO'ޤ(/)Dm_Sl3)V! =u.!`#8`?)^wՀD歟|笳n7y8 cz?ߪrojsxhG&BTdj`"ѕys< o)N@v`*'qxע \B`h+y^=oX U@@+ܵn(qLW:07AyD+li9RUS> *@Ѐ, 6&Lr\P 8 H2(eVncZqAq׹K}968x/pa]`3BZV?_I5m<?CO<@UU#?.%K-ছn>8㌯ D;ӽ>7]‰ϔ}Bae;*zzzKDTݿw83&iS0~ǎN14aLI2Sp"n". 1TmxzWI>ݯHɾdveŃ)ت(KCKP&3lt.5.ΰ0H@ncFij\ i^2}>)1*0N\}#] '/(RX3'uK\ IH"reu1oO<>zF$׮ݪi;N(dc? 睟d xs84GQ 9 GDy955IuIW~ +'@:L&/Ol;rlaJi{QSO6ǘ I{R'Y2.]03"RV__8r":^?u")|1gN_E82'"Prr,.vԗ]7Qm(c1l@c3.lл{i欚=4qJO>=:;BVq7gֵď0X-5L-K/zp _{viDs`qIk[jk$aDFz5Enpߗ ^a?rWE 1?PQ\mzxɒ=7++Tq<(X?`{~,$_R>i~@y܃ܰaWB,|,6p/pZh `'P建])1[<@#eeɎ1FԺM[. `Y>op+U}XJrc" 1x|Ӏ+?q.x:Z`0 <hD={Cc>`\;n 2pΈ e9*!`0@pPW/~gȇO9%p[A55H00O=vΜ?'4-ML f(NpYIЍ *p!  A:D(ΗI (ǘ+a0q}&}48LjmJbǍQJ;e[ J!S}ǵYE\ <"q04G)S|'ğ>k"Ii'%fi% p $(<h\-X=v]!|TNp8@ \HBQ҈*'L_x¥/]+2M'83}=8>E0 l1F1jb6B8m`-8,gIlb,',)%X>t/W QXP|X@:ai@}UN)Iņ6p·]7op`CCa5r$a`Xy14nהF]-UJ++Op~i|>믿n۶i֭۳gϹkietAoH$%%%֭;wWiӦDooOml/Xp׹ .YU(y(3j6 #yk|xՇ+\=W=|kx{'&+{@}*z(}Ѣ}% /^xl&9:nrFτֆE=6UQ[O&'Wq6MtDVt*1]&'FT/'E55 PyXEjwE.~(VJU!`A S?i9)*6Q䮷&0B Si+ hz ۇdF_T:K%'fgB23bme/{Kٽi&$3!r0GRꚚ\$2sSy%rwn:5$t#%ΞSe#g05x0+z_"sÞ/~Zq(iv}`@P4(hnƚ5rrS'bC&".?AʾO"j06j.$"␀ q w'M~}*8G*!Mhr<>4TrK)#g'd<^Z) zܿ1KR&]PI|+dǶ4`A:RFm &V#EQ6۷{;@ioG}BA3l#v C ZͶi7=pUMuukֿv ㌄⺙2!ʐlV,o??QW){/s49<# f b8aG0OK$߸qY!$@q䷙t`B:hjĚ5 ,I_k$UB\F(uIMlOAB 8p{T0.Ř-ss7-BZju1٦(頪![XٕtNu$jh.Up1릮g&Gy|>4onnN}M1k_G:TjjRV} 10PUMfos.0k 1!7bxt9%5Nή]'% t&y@pp`'k|Wޙgy3M`}(`;pCFDD24K.Y />ɜ >rLQhf,qDQ_@RX(ր$$˿j`(` dt)BjqH|F+r L>s.XD+g϶zWrg#7H'Bl~ol>8/) 6I+&Λj'Kzۅx(ڀc,+aTF<+l`$TN+wgfG~$aNב$)Bji lޱyɦLwF#uAƙc;g(IJ&ܐ˼ï7z 042( TPQa:o!zhKTBK ,_TnrBGIdphK -8nCQ100Pd뻺=l[6۱)BԜj`) J9iŚǥ$ax1_]c5'l{cp=r!>ɓ'wy񍠣+vvv~Ưޣ7Ŀ?oNy{w߽+= |p}M9y|]y_Hp(v߲I ###]u탾u_$'ҲdN'?:iSgoAl.-w| Jqlo%~F1*j`J@U,^tͶ, L#o~{$’IT]]n8f\r-i.8ȉT\#TbSZ5 7B,cFx+W78vhC]ݼ b55g^w3"c o޼9e8dustrbq^xGs4Ӫ/YY[B\eLሗI]S5/RdpLSO4q.SТ"b(+9|S3[}lܤZcuFG 9.S(/GM5N? os|u8 WWI%'e=( '2ƍD[L1O; !;;ycy .HUћ\Gq0[RRQ9X@@t74C/QV, ϮNv%f2D])3N \9{;/4"P]DRX$R2:ymh(&߿nm%EaBx! ʃl $M# ̞e W~:kΌQ+bŠ+` ELF魭ummq D<ȶ'C@0Hm5Z`p\"cӀ\6$vi~s]ATx0w \F@87sF]^"\ \JHY~ U~q%@8x զycA@(ίcTb kP?tӁ@:t 00@~{%f.T Uj EUCMMKvD_x`5ۼ|- .ɤ[^@]L1zodjܼ(Dڷox*b/AvZ1 ڤ֬+y±zxk 62 r_C؍(#<7ۡ 0"mǖ[1 sؔmxI3I\0<;Zg&!1[Q_ݹ.#*oI؀X@G]Xg;mxacƓNNhr `pմ8 P L6U02iI` ]5nnp(+ G5xl-+++#@IfcYbd&L)XڇC܌+Iz'@XX&(ْ'ycKLLc|[9 oQb )p]WyW5[Ugc~O(b8PUմL$Y @ʬY'"p±bH'f3pҎ4%cL&$ctE)ޯbVExv}VMSʧOޅ_~w!f!ocxG>o ?hXNlm9g㏏-_~߅.9D3.p^'/88jcƷ_|ܕ:1qιV(h6ʦ CÃ9+GFhKO4 RJ&[OKtz2y;ﯭ8Z+)MJ Gdy6ו3)N] e?0@@­ a;T5UAa #**| #$;>NT68g3}6XPw Q k>|W,pmG˳_qcSeKN=KRS= $c\15M$LQ `LK8: ID~s_ W6V =!DА"MlMMp]qhi"? sYWo8Չ@trrU87n+ IJĹ'Z@GEsOF[\- *. fT ;$KkW:yw>axCu-\|JW׷gKKdA%v2sA0ͺ:41ցdDdzبG>kը )?B>+w r55ʜ#E$J+G%zfxξq$g|ECu檱(۪S-rk&yPsa$*/4#e%SFRE,4A+&}3}"$dR`B;|KҺEJ ?euŮ *.2}ᜳnϣ-0{,ehG"g7nlwcpLU'*ɣ š9L/>y)\  ✳d1eD H'2%r`pl`{08@8(lo(>]w !@mr];Y&2!yw M@E0f.~gǁ#} D@;$0-TJ3gpMn| 0bjf3񖐃|N,Xʁ,3xf0:Pɓ@h$3ЇU9GK+a(<3I8Z&'Y#fT/}2jf3&j ewVPښNi[w.߉á1Z!3ԞxW#8H˫yټQN'd>FGQT@`@P*_j(9?(LaRJpE>`&+gXY$ @Z@Z:%srOkvFԓ~z8⿖:֭۴i77hkt_E ZZ|kߝ=}\p"94׾{o}orOu[o<`g9{=~a9p<~F &xu-1H-|R\QʚB#zArI5vIgcq+.68`B,VP0}#p-v#q騮cWp≹k9k5/\x^UW 6 kn5y^ P:_LuUeKƷlŒ&""J>J5,ȆN]a{E %[62ǔ%[Yla"Ug~1jkd8_9q\_`_[``|L։\Z帮Jd0m_rTiIyiDXHׯjl of.ځEuF0P<ꏗj˺rv!@'>p&P y @B@'p*!a ,A)я9*D=@S>@k@Xs4T>z.t26i ~P xX X.rR1m,]D;|@@0dJ'CvOɯ0G8. ^ˀ PJZ̍)/#k \mPbI u^!5[Β4I Ic8JAp bWy  "KYy洕vV;Q"Fvò x.0 EUxզ7L=, OAQP@5Q>Ļ:P U ` LMg`h>;e:CN蔂) ]Y]ݗO_~o׀AFc[XDb۶-2(8cSc)d3H^v=U.%3cK)vEDuݺM1OsNq$Pv  ɯf⥫W]Cgُۣ#ƵL-[ [S2擲xppo?/(RRɁ^=8MK97.ŸĹPM5DOؽ 0#FZ1S%-EUW{i[|TsڢK_߰^ Y[ {gyMX?>7gM΍r7PxV&O48\a۱![]ǠazHy$VN&D^ @JdC!wN7*׽sv_ͮjW%U ؠHF$`H$"*#H4 A@@BRJRMvjwǮ"9o{5jZk|> fT!X6vDk<l菻ʘ!cR"2~?}T{ZWPjj+J (~PMMi?y9۝ MgYũO&Pqmvll4URX#\+ HY>l*VDկcsELηk _+>=6JAr>!@Nk|M7n6$J*BZx6|>Q51J8h/cY7Tj5'uÎo*QbkMϭW[ LD5 r؁XGnkS&طO^yX> e;* bvsGhlhsxw5;b̸uǬ;YuX<|dO&?X3;ܾpѿd29>>~͹9<\e9V9ls.…ȡ}d>ĎxA]ꤽOۃ:zz̚ϛO~RUWi9̚U\-op$|/+cJ_f"CTFzW\OLR4 ov=>>aÝS1vȻb kY> ?F95N2˾ؗg3LȱK/!YAc>]1jW^_' wMi\*4hz's):Z,ӭ s M ²eVx_y[ U 篿۟~kw\.u1+eK7ZZΩq"Y{nK&nlmK4JWcafxEozz۶Vۘ>ǙW,seݥƬWpȶki구 bVJf pgW怂У u(."1#b! S0lSJס6{Pe\D ijACYX|8l eK\( Ra~ á_pR[]TPR,nlgp Yp<|n}.;2<rz'}嫂`H8\7kLRbcJMAŕT}wA M)K(m5$d,ß`]itsὅO[,]:{OG$=^%^7u:IP ܋ FkpG)d&T9]TF4Bl$ Qw S43 sQ 62BJL cZU1 eH8PgPȖ0"7M`(£aֲ,zs~ WFE|jGo8Uxjr*UDA 87d72veLX LOÉ0{ 7s L {ۧBPǗ YD^+⛂MFَ&kx^&߄` ^&ځ ?//E}@1alD$ xUP#߭Ҩ"/13ެqtTd4jX:dTcɫq8pSW/7w|s {VF0mxO]@SkL +n\桄`"KE_'2Kp2 .>,b=CQᆠys',("𽐣,=A1JIy+iR 8ZM(7"cکs]֭˞sNJaXow}橵͉3^b$ƚkEL`a=Ԙ++8[<.3uRfčwu0Zbm-egb-};R9L,{5}cܥݛJ2q.׿7}*2#&{ AD#j*\Q?MLW[UX :iUu /y:'zvT\>KT*RY53] {aه16d&+ h5c3f:-[ynA"e p`hhg(/Ŵr1+.ȷ?`Ԏ͛G7n 3ϘBAyUU-yճd!Wǰ1ƌEcg?Qh D&o9%?D fn T>} .k"7}TLf0jP{R8㘹sX7jxxe"Os1KM~8HX:Ov.n~Awy['J6"ښui]y8ON!8hz Wm 5̉ho~Su+1{]0ƍ۞|/:,}Qꋯz 7}\ˊ+DZcZT4M/57[GS6993ecA E@|cYgLX8oD](紶ͺJE^6ǹ XAeRyZn;4tD.7mYsv*rrq% [a D%(44-h+ذ ߁0v$RԁN,2 Jmq|&iFS_2֠ʞu|eX9\Q(n Bv— z1<(EqaU@^d߾V[\7 ;e7J9Y^p>\_Ĥ~exjE_*+ E"JaZ)6aWr'3# B#s(ַ1O!BtS[#/pD,Q_[iӫ7_vn@d2߄cl&x>wbi@Ġ3C<-4CRJICC^rvTɝ3mJnbͷg > p4]VuqN繝={)x'4pM`TO[Nlh?lh,2,r,;fg2?=X'YQ 8L)oړQa% <^ X 'ڂV>h@Cr8{X@T۔N: ܤ+>iT^5T4$NKѸ|*`3& Np+pR`xk?mRUJq6(:1خ][YO8`N I9$+%:C!e)+cEB*X-M-^Uo\Wt ;^m peEEś!ξG$?|m]|%gbbbҥo oXFYyuwo;7R ݣ `_J tTG-{R(+ncpK\@a{C)bm[z(zi1y Q(!SKVj G,Ygκo9ђBww᷿mV6sUL]NV4>,| IDATT(dy9Tʚ:{k-=LLP`GEcxH;Rxeeu&;u^m YB;vεk腧 ulS;=x.Q~IUX4OJـMMޞ= ={ @X#(g5awػGJ "--gLZv<'->;n !wNHW}L制w5 DLv:!1~`-bU`PCg5k.ti;9u:m;f'ƿO"J "([9sfϵm{xիׯ\˟:Ik+go@nUjnQ`kXB(u )Vv4˗mfw_s?qw@qR4 Шu TSm(S[$_ZdFȐ_܂m J)b߷.ZZ("(ݤR3>۶Rz/֯^ML#T.X1ђjUP ٓtjKG35O>wOְ/0VT*TYujjzf^ p@IlRc߳rTX)/pTsu9gxwnN[6 /V:k% 맟^8{~MqbUtetT~Rg: EХC<:}-Z͛O<0$SLLLӀ[D|X(p,*>5bPm޿{1_'=ϋMve eG{/hku* Z,6*3Q* 禶vEnw)J=UUG44|>7{vtR} E'}R ϱ||?5ȫŸKnݴiItK64f\=BΦny;y}cs^wd2Y?5-FqNHdI:[n+.:ps~Pof~8(|9D`9ζV]S"1p]/XZE"Ĵ'1_p]R_σ 1>Uc=O9"jo@u艄J)uH$~>~,jkU0i}G8,٬[Av%awCfB\Ϸ@,18vA=8eǿRÉp^ ]xύyBV,ᇧjkS##7(n U% X98|x )@+R%Ca7`N(Ic>8-&DBrH"TA-`8;fWsrxLϋtXYct60eY|Xt)gePm=1X(%*]bڠ_挝gke|./7vȮ])8y֬#jkN`)$ EE2c$V73]1zP'*A(aA 1zE)G/:^-|*a|)YX`,C QxAM7plCf;fQ13j.B+ h㶌H*#>^j1Ќ +2`C,B ^yH^TT_,#3QS1 j@W vHZMg}L&}꣪O[Eh|t}SɎL[fFkR0s}GʺSfO2,hM@d})b]ݻZv"+*%KI1;lèT;;{WJ¹ÇG;i>}3t/{KP{E, w~GB{<_qo-H'cg;.rŊU_ʓ3'2swm|KDA0bY@Vᚰq!OU3(ͫ.ϸqM2{ѬȼT t |e)kxyi~Wjw_Z2ۿ]/[)YT~{9ԇ P;yٌ3sQQ~62J9`PZk,QVTtm`Q0J)yq(< s48!=ؚʊYҷH*R%bd _SUﮮ73`+ҋ"!eĸVOϐR6/۪V[o O='/w{ g|Au㻞&?SS.E7#U8ȰRe/F3fs.zf:ON|43Q yMHdrZ*` 38ݿgQljFq]z{g! "o7H_q*#ۼ}Qܷ!t}~` 76piڧ6m{oyd+ SS&ASwgxxfj He *s9 "uhdd#cHIP(T :D+a8Szx_P Be&s---JѸlrzjoK^YaJϱ3,Y`]M;|rry'~{nEJ1}}[-Pm777r bں=|+hL|va@p댌tnڴY>r5O=uHD+-kB J={Ғˮ[d͢+l rYCXd,ϓ+NRS_R8mlvRSL)y ڊE5brc.˔< /7;Oĕ|'}}:Öu="R̔gm0[)#fkA\pjY\VB-|3}l X ^3*J~ZT{ODI8i0RkGcҝz` CMm"\ +- 1RQnX >fwv9qF8UqipNUM_V3vʩto`b]7ܰ-ˋ n/8cf5J{b|˧־l9VN53t'{&"}/kH$b7J?et׭%ˉJFEc E`0 OD4s )O1Z{ޔksơGI$be-h&F(/~W8@ RtvraN9U׊UwimEKE5|_ϯV^A 4%6lȟ~"cc5ᄏ'W J]1dieUo95dʵ Tj2HWWcL5NXN'w"sBLɴ͸a}MQD ߌTLR Ҋֶnyam0xa"yL6ְQ+KDA^Iy޸RАHڵ3_@#9{1'1ʛ'0@3dBZDi$\kQJ J;|pOkjU=EÑ(%mpFE9ךt9V<^J66Jsj֬9׮U/_SVJI䤝J5J−R {Rܑvt4K\%'+7%o1{7}NyVR[d8x?<<˹bٶBaeQ46fƘ`?Y)R^VҤymccãԎ="PJmF ߷eU=,P`1Da)Z ?/*KZ~ ilh0bnmu˜`p9\0 .|.P&,%j4fAp\ UhcBҖ>ǹ߿Vhlcј/nPE_^h) J`Sv,_t[lcRUZ%4 3\vV,냡Ъ)<p+t]E|9 WP# !\Ϳ(;ƞ܌(f׆^ AF7ۡn2܌v,ӌ)L%Y!L>79_ "r0nB[!o]ĮQ:.!'.cO iQ LClN,mQ}k7OA5.ŀc pty)`D U ?n#4wCq(uPeVZJچ xyT^8e l#]jry8AwP>F HDB ś g4㯌QJN5v4?5CӯA@H`bUg}i:8QJylnil #k(# 䓻>;/kAPĈ R"Ke,81i\5Tjn"hkLGs:Z(|j %(DOM *X| = $TSY(HUuSId*t澁ZD)rU2Xb0*IM6/_>ek\EC/M[{H2j?У;oe2; W߀uUk\|y:h3fooaZK̋+K fD)[XkkÊ s6>8yu3L=wkC!yV(߸qUW}lwd2wsդӸ>a)2]{Z1)Q%'Nh0.?A!UhOXgg8h ?ɼ[Ĕ]!c52qTkR E_>nہxSܾ+N;큗uy/7=ҏ~.zhn&4h߼Y77ŞzZ^獈LL\7F;2ޚf^2!>kMNZ[|ޥζ 8̞=c&;1A$B1-Y8(L&t06 ػ[ݍ{H`~;g21ҡX89;4YHnJ"pԮWALҕ̈́{\ JY,ٳ`Ęֱ[qm?W_Z{X*XƷožg$h@nx\txʃ'TɳఃWBeu|`{ZA`+"PUyc"ke8} l:,R,EWLM}p8bY)rr< Nr\AzބW0 ǑHLLL{pH{mMac.5pA8, R-Mg#(5(Pj 9|R/m 1P.QGS!>'(*noAD <@B.E e rEp3):,JFX&HÝ}c*`{-h,;* _{</G#BVK w5˵eu_cU2ƴ@*8. ? l\/I~x%@gQ)CPx{*QQXNax  VHvF(T,{C9KwMtv2K(Qq8 w+`QYUlap J]2Xs-V|Nj>k4&VVE=UHx qrS8HP /AQXftjR>h t9R0a)ҿ1v|$칯;SuڱyKd( aS[v|*V/Docy'oZ);VPQ}Z IDATXq@z$=ov d2>qmW"G vȠNhEx{LY,(r9QC s C1ˆA8Nrifx h/J@0f"rD,޼DKvbpΜ vܨJHZٯ/> JgWblKu нCqԒH⡡Ѡ[!W_~>B7V}zՓ>t% u NMKXfMͳZԏZxGxa f5{ve埲---fnU.(\QQxF*ץXgDp]JmBlG}Ο._0޳3d^Dׅ, pl $jiL1G5aO dWj}E X]]Lx\Ćj6ӹ- |ΖJj!׿mh򧮻n?ya=FRXwM7Y'Olb5PpxW+֚ҤUb4~WR9uThÆO7Jk@ʝkd'+9TQd2ejm[4E<;'_9ᇷsDof^L0cSNk¬`r.QZr֍%YXѹw*32RlFM7x?ȜOR]&ضtw~_vĞahT* f'6l>0WЯMƧ{YL(> gԱD :4T9p|ԕ"x0)hgļP* ^;yb ShۡX,в}c"JE,.|> ߆XfT-+,bW*m HDEJW LKH¾$`3\uŨu otbRB6 @) )UnZԋ藠|G"7Ş2JraZ<[F}*tlAP&xH,cgaζ>gfʪdIl SyOhC:V &1nR8weTk3sSLA4*0 O\3`h(*U<ݗyB|H+@M!eXpZ4^ضӁ瀷H lZ#Sv m=vuc0ɳaUL޸'PWGn{ɯW9o~8nhML-';p)_e.:b-- _rl餗+:7mEBaI, ;#0̏Dsm{Tnu8Oe|+Hy_j?,'3:a6F:ۘ,e}}֭kCEc:NnH1^|ar%ylkWߡw6gof@x Dԩ8?x^hD&WH)֯z(Ib|01LjhT K>57bZ~U`wm6{RyJ],M:|dW ƺt<5ȢŽ _.p'P|.XBX)c*IvBY59HRKUq` hbJ i}ňh!]y[Wɭk`iUl2P0^YבpZm8_xq.R-Y䓹(JO,VXqyve0Q쳱eQGvڱAiQǷ_O (ڶM4"rJ01\q& _c}붝tRQhGxc1ĺ8l&aaC(V<`-W}W\{}eѢFGP/4<ݻcȔ}vDptԧZ (F4 hHTavZ L0Fb5s ;r;Xr&HiE>W]呇<3` @ "').+OVquE<!|mo9Vn6R ;zvxjeu50A+D#zfgتUS{yٹܑ>-+y031p|7IRJ۶&J GWhwKBп g~$gw^te+YyR}p5~{ |EW0Z7tu8޾}թRJUV65yk_(A4h _IΑ2@$j|@9lN :x'KKDëLF3KoQj)09_ļ8Ht~ ,ap~&puaX 龤8KBW)H _؀lț J<|jQnߡ Y\\+dsz\ = .MܕK%mLpF l*J=a8D^`Ό9>TD1# A l P 4:aE 8"b0) =U/Y[bp]F> < M@R1l Ka!Nsp0E(FphI@@ cvqRtF x`u@+0 "2Ơޟ<˶R]z΃ț#  ':s}\O1L fvqR,,ѷ{\Cr m68yeeN93#gEB)'3q*U b5Yd]] [_iu"k:RD) 9 3'/PAF&/ʦ]:R'>Z n 7^M0y@_-]_ʹl)_@X=>uuy^Mjګ˜oE>D|_&cVڲpX4zzV$͎)Ώ bP}Q`K 4 c r5Gc:҉zsla@6%P2I< ]?# 9!ƭh'+xd ݀c۾`Y&q09r0#%f7\ŋQG5 67Ȟr5:FIبij1MƫW{bCh.,2nsŊKJ6ٶyv<~T<~! )d nl)Y1x穩V_h}YĔzze}=MKvUVn1>xwm 8 љ{XvI6OdK|l7 O>9 pWWI&0u K_6 1i`kR 7sKCoUT|?@qdۈsx(b"_hdLZTO{{UuDX1J^XuDLlۚe޴~ϓ۶'px͚>̏c1 X9{OR#kD0kE0茏g]`S.mmRfO1f00Dʶ g2{ΈŖykw\H}+÷%k!0++UD=fA`otv, do KYR ) 'e3kl`ЊD@7 ۀ8 le~GƢ!۞8(up1 C^m|8[ۀ4w5{j,yfiJ*5w( KiԄ_ 9@ \wȘ1?!:RR~"{xU{Ø3 !8`/SD'4`j{@N6duʒW!?*CbAm P)4[+`dX Q ց+>2$nFjЈUdefiF GG x |g)Bf{U۫-ewL!!`p}"@)`\) p4lp 8[\PcYV, Շ^ܩtfyc@@ 8v8Nrְ~P9 J!RsL6iBi?; eH PD[x%9 x 8 !J(יf kF5Ε;Fs A\8Fu7??΂qr=Q  P C)q/vtb!2*OVJXhooL37J AEE8O#Gw|~;a%2$H؎=*T"yc^lbT)J}/ӝɓV+q|hh?PCh`}}-[d7ݶ8 ~ugOK̔͊zKT4piӎXhi8ֶZjlH<JV;kMl`kh{7"%ߐqL <& ։0 N_[b#dTߋ5fW~(g+ۢb:^Rb_~y]w]tѢ/\OlVd'Z|BxՔֵܻVD)ON g/%ecl3dm<ô+u~G}}ee"K3$T,n_ts5CQd3%8sTįeCcKVxi]hTPW,RDugc7DkתbcL5!%h`cUU J W<}P]]ާVx{*==OOr݄ػ+B'rS"*ԼltPyEDtӊ΄ك6l{ay=t9'<,4@B6{ž`w' iYP/pOWH1,竾Z-0[ng?WG"S%UUw.Ye_<I60q/n|?|x?|Gfa 0W2<5[o\H J遁LF1o7/_̕+iSI J H <8buift(#)ϻDG G<HGI IDAT^< h` C(-k({AY!ڷou/-ZFG:Noncb&p.pr~0Qb[ܓeRbK[[ ^gOO.1WfΧ? i@0;h^SՅ3mfWҘ !D`KjVR'[s<5ׁp<$`f{-QG]ݱ淴94t%@LB́('2tȘ"zA,(0@HQUR)qj9( G"I99}nwMW o8a۲m<8 ^@ jy T/0HÀheOd "!2odp>X0]iWZ*VF0(~F?ad0\o1N <3CAL1Ȑ5j#|ViCFBcG|*A)$I/ # D~>p/PL}}ѹNo++9E, 1"@ %cadKvǼ;z;:w(( #y?|oS֛>Xhh]e E2F,W,r5O"gGp9۞hbxBhI/KJ>SM~b`" "E:{w]f&25p3h $`BMaB0sq57MZ?lRϣ~ A1]"wm@e`@.R0#ՓٷV('8`f/ԑA@i-6t$4e25,˅Ccn<+Z/e)Xs/&Ѝ@PGp3F)#&HSTwChm)Yęc-Jߓ@6cDѢ2w,# :b]?mDC$I>W[{s'l!kHd2-e'>E% ~ᴔ9!+p,LF Yd-K XNCh1*>c_ϟ뇜~j=v~wnڜs.UV6cYV3;GY';~ixUuYBV[aR/ hhC"uhzἑ;_rBF*UltBdl[q&+;O779b ]|[7~zo/Lٻ'UuqhÏ2P^poW߾:K\`h*enMuZw>xmlk%lRP%X{{/̉dr%!L6>QwH䶢ô{t{ްmST1}"؆ jǎ;_&ҢR/ e5EvLIq?C>N|4wo|B3Z \b٢Kxűw1:in&czAVgcG2P)6fض'{wϒ8-wn}^ؔMdG@襗4<|jϻ󪌩l<8*Y"QW\LZXV>!^6v{`/s3ZmdWW΋2lz1M`Da2 L--q xDs>|yĘo y;:y^1)c\ \#C4նuT@*abH"`7v.#(Y eu֗rWw޷R< B={)mc3@ P4c[ R 4{Q7'2*v]|@@EKT":q~ߘ^!1 ضUrcd!(DNKy Rʻ3m{b u}^//w9ZPȞy(fK@}/0gG~O rcz ;N ,[W d'!22A`h 3',/oܷ] =m-[E&Ry&l+4~P9Hz#6^}AtJwӃièn*Ov  @@ Pt'O@ lD|79Lq܌'~͸Foc(B:ޜڼk v1  /@>j#a"8 +6E Ey˲v(\.=ZGɿw%.`*4EZ&i%rO2L^TRR폴| Y*8Җ`M:1]uJuM,|/C)˲ dڳ';mW/[Z/p6 v~e@{{nw NnFg(QNnĊً.F׬~,SRBUR w/֬֬gɓ |P)(UYIӧ{g=d_rԽc?A8Yjkhťe-U\(]1 T [16Q t;~U f)A+h Rz2:p>m:pdyb2]![mQs3?<577[XZ`9 & ~WXreyI d^eknf=!tc#;||`Q DaeR#L{D/%xo < `;6ʌcg?#wnv^<Ľw9MӬ?nɅ+Vn^h$ժxP52bTIՆ;z[})Ab`+{g}UD?+lϥ@qrF}  8` 5k5lToUUI6u_M\ -W@8 ,kogllL)tYf2)cb^(͜+8J. XqӶ}1盀ֺz:{;;0O?v.2 `yJmD)HjҒAnlj(1&J@TkYyvrbD0[YtcL1? ׾ketzj:B |Z\0 0URrB}}e:vDN1x|. ' N\.qNa4_1ؑ1YcB 8#)ͼ_ɩS}F8 2|@l? h8p -2>%]R5@82! T.˗߼+7|%M ̩e@ʩM Q( 8dIRBOۀM IаKlgڼC2 L?̉!wGL,CDl1?`<#wqk|0I4)06 $S+eY)y6S:sOX2.|"lRv͝1qWwLb39ꎢ D(5;kXG҉rῺѶ=yOg!wT(Ƥۖ,AE-TmsxdZOYv®wݷccxRF,Kx,EϘSWZmhw(](5*u~ub1mqW-^?3z{֭|i{{O;s0%~ y4RIR[//r+1>^C'۷qyeeVYK@mKc1(D^ja>+2I<"C)ő!tJ i )AxÁB|hl_‹_lV٣c'%*G J}lO)cȄzVuwX#b*qHDszG,(.^Qrؠw/znr'(Ll[9TέRֲ >@S^# GIRE,F öEvޱR.2k  o$xMhhh4$W5 ˃/ dpym٥ɂC  ԑ a σOoE612 WL! F^LZJ!y8󮐲kDOZ88(D02 h.Wich}]zC%ip<ڴc.X5SfQyMM`s,g4kkϯzZfpk0o@~_aM䬪{gzȔr( @EAE!P DPdA , c HCzꚟas}:zju6lѱԬ`ZMs콾4Mms;:j^{%= '?d"2؟=ֻX,fM eR =ڻCk^zױnzppPj KuÀLP3t|cP<4EEh1F$~^Dbe(tr"` IDATb411cWm޻GY,>1o,!gh'wWôisyzޑL|?sJuB\  !xODY(4-lp鈷2{YM˚G[)75o!nN`#!X=@ 7J""RE dfDzKz'|kh}(8.1,+Q_t nv.7^˺¶|~MߟLՆqRq2JTRʩFt\wDüx  gx9S^N..ys%}۾WΜY;2=߿8vA4-Bd.!BR60'8\Vjpœ{dК2Zb Ad"K R&uKb"w۷)({u%\~.@$r m"$`F'Fa*y苣H@><gy|<ܣ?}x(|> 4&P( (akE@O0Xc5׶ծh}r^sTC F4D9b,ʀY`P L!b@8fmrRΟ={W~?\t[,8cЎtJj#' 4P(Y<CS\2hJ쪧bʁS<ϱhZ U2$`hN2eZ7ʉ6TB)Puc Aż`t>Sޗ-Lh4M7~91] W94Wi1'<^Sb5>RY·Ԕ? ١W̙'%C㬴ݫLG6SXk¨ⱡ oVzI2RBs+pTs˗u,L88hY,sL&/o#3L43 A2nYz|)*Hf wcЯͳU{OuO>}ʎ67't>AB8x7by`GڽdwdeY][2 7tVLRx)/Ybb yNWiqBa Ŭo>Xžd 'v 6!vAsAMw;|ZS0Pe6*T] @0!aZ@XNj];4ǁgKU%%!D0HFܔkV>Bp %b@x8$) $ uދU1j=m9V}K=JQ[Zt1F97!Rd|$( Sv8 6(D|)KMu]TW[B}cbg0Eap. `hC,h7$=x6`Rܻ,>Yʁt a mL6;#\}{QF)pav |1؁e /ߜ9ߣ2a s}F@-FO1Au{pUPVo_R3,h߲p=9sxI[Sf :wsbbgwG._7Lj:5Pifd>L77+ˍđOGfY(aAcP-v1j3geWȏx!)?;_!R**Q]ddj9>Ah b^o%僿U^ɻ:R`- _}OH0"wTKi?t k?zBe:P'hvQf@iPRЦ fըj(8Miwf7$A<9v5Ue`c"QSU@گ-FxU, k2ƥ!Ye#W@8bBAޱ goyq?;€ffBњ㿉.ԍDؕ1'=x|ݗTŅ0qǽ->͜0 V579LdaP UT-3qR$]+l,[ڛecO]L$,u.XU F9 ;v駍V4= ۥ5XSj7ӗ#ۂ]9'.( ){{3~BvWjj|X^|k豺Θ׾9iMn[b[4ߍvCj9SkQ1bK%ޭaXM4w|Od0LvI&)RD41RݳtD,(Q^l7ds?UĈ7n^_S]3>w5m&nB}See {B*k}\ cdIdQV6z8;,h}ll䀐lxw(7=3mtz) H6^($u!gE @g]5sH$Rֺh *vtw_\]=y_L`\|H@[)-@DuM0riǞuE\peSUv}sϭc%K ~|JLK@e. h"qx\\8CCہa-RPTut`3pgqtn9ۮ (ZJ/vpifo^"*W fN~]y9 P@ ^zmgO+2/g$0[OH K{{UUdYkq3x;phL@AnҼ, ʍk(|ҠQL`ӗ ܡC=#0#3[vр/'*@5HUc8ElG#P#fl"$D;u@PN2>Tqʀ

Ӄb}kVXjo=+9|~18pI s7+?(GsR!]x3(Ȗo0vm~Gv'^ng9a P|e/]fTE hYVgO<+k>!B.-/s¡b2:tuPS&[ `*O?),7cMwZ[?!T:608/+1`` t0h*axZi"(A4<TYظXzP ڇؘTkJNqfC xi_pN=r]10@L?9xǑN9Oo.Eh n<j&r7S p1BxsHe>,:0LrBi*!PzyF05/OeUF@"=osH0 kDVd.ϙSO Zl4O0AF~ If8,ZVڿhRew~uU(?#m*ʔK0 ӌhIygށ AV 9F dẆ0 V}2|;]p `/k'ٷt1ŚѪ&4#ؾ3R0;y1+?o%J PF_IZ"D嬮_jӳ1 ؘ22(\lkSӦif-r=?Xg{\xj@<Q 3Ț1  n(ZE/5g/Y+y'&~Q4)FM٠cs3;T롾$6-ẋ<~[^}ui&SITb&xkvt"\vP{nUzδ l(W޲Ə?I&&&\䟅Sbf/pw6@ b!ToTŇR-BHB$NX1X݊2*M/yCAk-!Lf"@Rąu!0w]>4#'|׉*|~޽;,n$`&P!PkYٌL yӲnr,UH^{`8XiY񉉧6MJC[;,f 0_wr^2 םMd0W*m۾ڶop~,BTVvg0 ޘw]̊(<7w<OXViF;:~8<|Z p) h`+cÙIuh9\C> l[9N3=zjۀL` w3}A9Mf8 |(V@+Q,9E+j4DB1] pG5}TK|4MzaFDB2 }> O 9@%QI̴F@/!ԐB#>t`Q.M6՟?{~Ks}hJe E2OdG41.+^f'z8 (< P2w,vDѷ J [DK2F ,ADc2$mv'\-4|@cJWqnzn-I:"X>_LλG F -Fᣅsy_~>N|4f4aYf},) wySON3[3f,UhTkmYֽN;?y ˜*MMkV:@+N4V.e9A%@Ł>)Qc4 ,zC1X"* a,()ҤQaBFRA 7N9++ 9R˖av^a= wN; pɈ2c2olo,[&N~TYvoC4]v.[j!H+HuW~|29Ydlۭwމ\D$c8 rWGJAT!-XD@$2[@6sO{|AzZWWT>Yg6tΰX ID+)F"A 5yFj"T?|mk>X~y٣oZ)oRKLۑuapPyt&Sxodf* jVz~Y$xh $:vY9)(4+5jS̎P CXmyyE @`‚$©a duKoz+b0F4cJp1fhZf} ~ig榱&S}~eؿ}x舀\x3$$ ˙ o~!s*4ZiYhn&ۖ;vȣ+?׷t(::pr|?^|O3-jj{3볞sbtizF5&omZ#}ݒ=z<-S3f@-ɑabי?K~a|hoRH$rQ1o]de `:jw:@+e꛱_}v2 CSO/L ]C{0+m"dT6/`-۴lD&:g"!"iq޶f)oQ@9"#2[pN@b9!(UQuG5"0+hvY `RMJYf&sUXwǺB`N IDAThjE9% `,ҬL+::C`ݻC?> X=iucc#J5]gj{Zj[S̶\.uu*[Z}ժ5h piZ?>8D͛gߘ;лv!_gϤ}0ꢹX솖/hx@Eƒ..I'u0qiFF)u CM9sR,kY`\t]l KT<"'Fسi?^@ῳ,>N -KEK.YuP(;wco+W,Xjջ"wi&\nF/7$`Y1c}tvpd{a "Vf2'wtI3f<͌LPW2;r3ᇃf̀\S뎎& qr 2EvUZs]:דv6CҮsPhXJ*Tzn&s 3'3+s-Q} !3pLs/ ?&.c>.0_kݭ}ٲxLAZ"w݅x,װ<q:U s[;Y{H*- ۲(rFeI Fk?<@% D\0bBK  "]]Ě@=;~|?>\r~~D R8g*o*mY_ځ$ (ƠB(ˀ$6d'^K?4<@!{)&6ovs5+-6+;>{g{zb }R)50U2{D@R6jkU !Xkr7n=EWGyX́7r0}ZyČZchTcB V&0`LN񪫅md]=4|2fvR}Mtt'iOc[fesYSh.}\MN56θCΰҨ@xU|K_}9v62DUu`z8b"Â@B!61dY^$X˾nEj%F'SG\VGat>F=@+EgKwFr/#4@PQ]ozyYYA~aZ "E6CG^T o ÿ_DrB;y<[~*W4 GOf'|qo_- 747J5'+>[JGMsi?4=~RJ,O͛請z/k/7o,4<72}!2 E{6(̍}V47 2U"7DuRN&cMEUJt|49먣f $` !J qd ЦuAeU74lh@Cå7^׉F6;_W;{Wr䤷iӳӯjfw[gGh]wvIwpX7~J/04.0D$riam `08$ZZW52.P(<V0kۧKy̓@#0;asm_Mf~ ' 3I9iYe==7TWS> , h$Z$Uҫ+. \7g1_'j'vm'gWZ' 1,X_மo~"sJ5-@#0`1;@QeՔmtZO,eB`P_z9$h0x'px5+s\wgt eЀfjhy'M0@=,̓\# էFB%`SIL3e0-s}޸bϯx~6VIpTK" a݆niw\7XfrEk;谠 LKjRs'JaEU`1%<(!Ҕ+˙23@dVNE*s4)@T8<`m` Vё5Eq5i,醁P^e,poVz酼q5nxgaN0332:" eGכeqݞ RBcth],X#;CT wBȉR\h@`ՙL@EE?Q߬"Ob5X8,1\KKPV6UX|7'?9^7 ;e*A`D5OtHw, CʪQFYWUMM5 AUUֈ a@&I>Q(kxg/7Ghexp8{b mA87ʷ Ƕd8`+5RA1l&YSO0j?^&x ?7oz4aY ٲqXgl4yӎF~0˕ bkOBScfKpyX&BJz@TNSM1ɐ!Ņ;y*O-Y<<0޽MٌȄ&OUDtYe+ϙBCOmؐ`n aMfR}Ev<_&4@ hq䈒LSD+%#Uruu|"Mj,,"'B${{[nmnח޾ʊK?mG,[,t_x9׾.\D~|f Z3M;֩4j2V _&pJQnrlDik#c xb̌L~b2 kނHXGdkv ,x"@=;~2 lEHͬȠ]AaXkf)CʢE6175Yk"$XKЁR *}p 1ԍ*vttA:,=1Vgnw40ò;x\ ˂G1Ѕ V"JJaY6 Û3?niϯО7/7xMΞ(Zjw.= _٧_lh BE~! Db,?SrM,j?XV`+r*h4 fzADR)^~FGG9JϻL齽ᰭ߀Db},vpݬR'yOẕ; mذ&~\!?} 4v5@B""!rZS/L*< ,+Cu\0H8h~i۲'==f6 4Ř/w%cH1(3T*|5p7p B:WUlޜ|\%c;p8|>` ~(Dֶ&b^y BA2+9U "轁@VK:ׁk9ZS O1_yF6T(]^t>b*a(m\⡬tx}gہk@p=wZ7]Aq]u'+>Sa04^IDĸgBɫlk3Șmy??`0+&O2` xA1& i'5S 9Fׁc11"tA# 0x XOk|vMaR¥OUOq#vY4NdQ&y;fL1C:Ӳ ,X3=r@0K|˴u OX`ɩK60@|&7k,^]>"m+ ""̐"?xKUq +K( ЏiQ'"MY#X(LÁxIX(x+;2\K iKU)@PpOOz* ټ8g bJ&o Zej='oYƺuTZ{"="]&P't١3(C v('SͧhgCÉX X3C@7R;^CNfx@H Ad *k+viBw3 0@0$ &HPD&d^<*Q A `ROtUUӺ5x'^b}⪩^U^JժB.w=2 ?]g ڝ_mcCS0Y:0v4SC}vW6ݶSJ}9{ر[}L?Au_uڝ;ѪOᨏꊊxLsUҚ]۶MTVs 0a;ߙlTCPn1#ye88bF F-V FqjȎWo%R]8,eULk^X*TLO/]]TdhНqUUQVEh NS6S` np-M7p1|d68 pG/UJ(e) k;9sޣ ֭|Kx.$ 0&0imJ̠3eu<ϴ4bTc UOMx z zhDk\w,̝["sb5~ۚh᯳'"ݻT~:{8/ɇ?4Gۈ0O&#"FBKTؓ_9.ޣD{Q8D3 Ú=a%>u"JD`]{XZ'ncֺftܛokrkViR(H" \Zʇ7 Kso+u`aDvXm0Q >W߅K悁rQN}Z) n"REh:Sx,VU,nR*1CвXX,n. Ɂo*!.k B,ͩgAalUjRW@?N8RB&"pRDJ{"<~%ZAd1]7>"A;;i۩ۿP,^iL_/73vb]F <āp'~(76}>ށI21(& Y:B"Z\8Gϛl(ʥaC,hA6 hsN  ;tPnUY1"X&@w+6VZ*f$2"GkXQ[rz04Jك2H(ޔ'qѵzbؑcc#mj^ z/L4xH :+%w?3?+N{+̔.1 RZZ Y\.3}dU&FHCeYPE *Vb,]Ij개--R ;r xއ1:N$1bx<$曷 ~hhjzW15].gU۷foo=Lҏ)׭FB7{N-6FW2|֕Ző=-ܵ{m(+==aE$t.顣v!c]TG"A#Eykn E\sQ}v[UUyo&꼳&:Eµk%0֒Jb@ix[s-G=*50 t!ZUmm%oYӟ:;}[1jM5G4sowh?ȟ|r0o B iUi:9\V1A @hT il QeOgV 3ͨf}L6o姃B}rck[/v0c>tʡNsF˜Wjfܒ`g6OTG dsJ(EczFahߛObUTM5UՃ=?Lf٪Uϟ{@[ekeL{` 'n5 ~_::e}}pJ+k7U&NvNY0Ce&_o}MCN t^ܸB%c!lo_a͛ 9X#~/ضё~=nSQob mŅ 'zW[a9;~%&iNC|/g<1p~sN8A]=D'Ii.үuHipEVP(E+RA%\Qt .,upTM*MQ) ȌHB{rmq7B:81O;pGC(B-ղ~xw{M5T2=a1q0mN;J[[߹lurrrժoyF011q)mEZ!yV->̝;o5~XL)eD6j o}n :L !$$Ssoo+!ԐT S>A =wmUuU&sK]( U08U/FP ytޮumQa5r9s"hB#OV/Mwlo9gLJ̏\ wb\ ϣ*溕m EIQ2UjQ$2΄{TKѮTtq&eK~iT =XQDlLh Fڰ;%ɧLJo_hњ;2^hUwpʩ&醻EEvGc?8~׷:cU0'FN_{-?~2BPm6dz ,EƊ=AI;t[ӂɱDFkw[c:ߛ UU[}{&o_努 +x-ݰy'魭-b17 P=8N9e۱-n?^Uy&~s5C_}{tj΄;dR|̮]˵DjHDuVa;qZ pqGyx";>vO<o;Wǯ \Vs>N[Dkjó4HjPܑ:|j*0= ;CR%}hUUOvw]Ž0qb1|SMhy~طt=䠳ۦXdz .T*6Pf  O=U, i*F"u&cՂ%(U{ZԨZL3[>DGH4--ƈ1 5qvgD,g84S'+}?^LKz\DGʓN y|埽*s{ue+jRWutyqcm}mW}܃|ǭhx&''o^u]-[xg'Jht1bD"w1Sn*-J)AAU _6=ۻp!og߾2J)ˢu3&_`mqp6x/x4{4X&v !G%`J]*2>B :=8;Nq,+.0+ =`n~;T}n:H0v9v!Z|Ox"_'sp`Yǡ@, C]y헳jJ=ReUA*Jq"sð_+^8p9,1l|[@"ё; ^aLپVU 6*82I#>Ɏ~1lRzY0T6+@*E)5.#K$ݹ@,_D  vP3瓇&("oS0`%iPȋJ8Q͊WQDc]LU&J'caBS,u^ݑ%Tϯ?{x?n(lT柠2ȆgȒh˨ry4^}D)O8ʣ!&xG 80cb RPE+s]b:{Y.#oM ,ԛ܎˝/ox?ݹ~#񊊊~F 1xbփSWkՠb *_̛eR1Wv?LzF+ԕDoQ>J+15FUZ{چ-i{CX]]+֬lKޖN 4C=M{m?' Bב|B RJꉉs{b{ėtǎsLL)eܹ_|;߹Os7ןfb{aqS5^=x)%KRJvUW?VKw~|ŝ^Vթ";Gsb_dJn czyvFO*j\7exxL'g-lڤ̉NIgkkm$u(2 @T$ؘDUV6'1y6Nw)),IjjRP]ZsOQMFM`= ŽR_^NxR>у:冚Ј[H0ȶÃh\땏ܳH }g*sD!s¬\ʪHT.WXTݪ9u6ֵoLhmq(ҍ'Toz*tb&y*V1]UhVl\քbtDRi M]J";bqc>;E˒0Tu c5fYcڹ޷b/fA >ٜYlY=dE.$,nݠsv nZCnTQUzM}T|qҵW4~kza+S*KUdcc! WNcL2[?:Fc~ଳG&>JctWӞbvbI]hcv.aRcDF) !\Ҋz#WDVW=z:,üy%O|ffthh7h=| RS☈mcG+5~O>ٞ=?gOV{&5o'x/@o_{Rczz Rzt{˿ỉ?kFG/l֮ ǿ#2oy*:|ez bNut|sh&c^Zpx\I{K)LvNMm*"f<'2aY.H\1'zh4*b7°q]gncYaJDdz0qhABĂ<߂s#q{`0{@-z VItY`Xd "Z\J'VkZ0=>9mLR"!X"Sp \J#J&ðVYm 6dR"[{7/V\XF {`|yPvJpX khl<{tDrBWBfbBƑV@6A!%KɁ ۰ MfeXΪʁG,"*9ύ! Du8J]x%Hp4,nzams:FFGFmzƙ+ "ɐ:*0zL4\JF]7=Gx,?aP Y13C H&gz0 7,dXh$ m.kVb5 1^.+ ȤAu/33f!9R%@OkMfIxB/<)Hc0*ы<ϓaѯiÎ+{]iUNmރi2J)0l&W.dVC;Zl]Т1BQ9R.ªhXа-jJEcQC+toړ@и&Ζ2/ߪ|\-\E 28QF91'˷mν,⿧@6q7 { ߷1T5O[n8ns+_UzjFGZx^?Wc ˥Z ѱUn>KK Ci\߭:"?-jФ~߰v1(EVێ`#]Zii+?[qr[Uۚ_lbDRhC>A+VZG JT\,2xdHkxyRZW"ʴD"Njk맦r7/;9E؉ 1SU5OwAu[{YjN{sWzw6sywVVnFR67-ݞJ쉐T2S9j;26cTNol틌'xyޜ9"~[Va~ zotD#J"%ꖪ f|cTЗ=tyR|ΐL{uPĎFǙhJVNe|,Qa88ۏ;㸫>Wu#]]tzv?LU\vĸymBcdiEfيhr.a*C 5|ACMAi.x%zyUcʶS~/8*!^ꦹshTGwyIzHysvtGRUON  @ytw{X"Եr >~.D lZlTP&-Ki=&*|jPo>gpߝ^U޻3G̉)rnww}-t߼LIOQ(ÝI}H2y*1 aYVn]$ 58ln)-qxWERMc:5TRLI>b Vj` F 7'p8&_A;C8~ 7 ̇7WDa:rZ0Ȱ*(\\|h0>-6Cik]m3fb x nɉW _2usL`dd"wEy_PӋnGڸZXyn[: ##u{^[%qћM GULtlJK}Q% "Yo;'Q(Qx3|릆 T9 O|58DB)w\f,ց!2"??3GKh`d%` q+(&x{#=LOj" o6vZw[~uϽwUp|vIc5U~pwoV򱸹BT3Z41P*gSFdwYƄoUUER( ӷ*T6[SXZNΞ=Q[Myc;sEYd~Ǝ"vUU_[E@"h4Lmmj׿ DOm{ɾ^ш1ҷ{v]4-Ŷ6%8κ:/ ihЋ#݃bƺb6yQڋxe%duuNg` ױjw |̏5#Jaף'&+Ǟ,q7_)-;q\zjONN޿re|@}c`e|B?j'b i @uZ3>Kc\7R/#G]O+sm?Z%nʍ^^T!b?6j&s^hUSm驥 IDATxJE++c֦͋3fӨ1nĄ'Jc@J5C9eg8ceE2E$ԁ3??֖szq[|CA]ݮ03`W߰*5TJ)N֬ɲ^5fgo4hrNbWw gїH5lzONN\yu*Q/?-O]-5rq,򥗮u;zvZ+јh~|;iK/hx>pW^Fawp$!7`ͰJ뗻8\_dy8[ף9aحu"+| "XJi@dҘU0&FH5ez*PPYY耯;@C,([OeEqpA aϣ&C\Ji>~{w<(˥>κaC?li8&p'Dd uEs׭3WRN7~o{_ש]0Oks6^U3ѦdW24ᦻ7a8,+3j{h|QB(ЯH}ckm}Gٮ5F9xyAA4ީT\ap']5NSYupԗ,ʗ2)+ ǝ6g-sha;iW9m[ֺgV>`jw >b E%2Ģ=7BmOmF@p(2{fbRj5se y"DXESnl;^151JAONfjF{nL'Ynknt_nHmS̊?.[b ƽ6"ѪSoq^pYЮC$98TV>,?gYP:}bŻ3֟&Cɰ(bȰVI֝~zG?F7~Vţ*l5=̯Þ1JЧ"Jġm.5)l1JR~{ "b֮8/۵ 8Tv}=pN hLc9Sy]^Oh.6W)mB{pptժG @5uNȦŘz"P̎Bw^vӷ;,(;ʛBDKSmۅ†'"?0d8(ꅽ6fGa<63Ic| tQ>!nA  _P[of|[c`mmq1<<@㈉ ic<?cfG]|žDRʉ_2hEC%AQ$‰ĭpԢI34㤓p]! J@<E)+LL-Z5>~wkD Ml>u$v¡"rg/OFN!#{9&ctW6?ĀX!Ug,61VnBD4TmmV,ӱ#Z/jךDJ`9!d o]xP|D{ˎN) @;)]LHUPF۶UD]ugK=O/ D"e?K GmǷmFo]/30DNAaLOiD¶ ՌEcͭb_҈ƗEŔ<%t"Z0xYd  gjf bHS"-%'298ziM =$'`ZB$@jl٪VI#̞]~px'dfvYYM P3IӴrgWuMp߂&$,ꎌfg-mV⊰ ̍7EB>ٻ SH׮h3:*ZM.2yFvLRRV0;:m&^'oQy-/|=[ -Ua#^;^OC-u M4M`UW%;wy]19۴ctͭv tRJAHQd{$R$ڀ1Nd>Z'VqĺcM ##QDO?C"Rʈw֧L} ֈmxլ2<ԸeMt87D[e˽_8"h*_ݱ)"#]]lE}WrQ7, "IHôBGO]3"[U䚛=k?ɼ  6~;_BxihMhر=ա_J",R=1V_wujʣtÞ]O{;ƥ2{,*+g 6 w?qm0UUOM&"L؟s1Ѯ5JƓՇT;;WΚaljluu--EW~hڿb/?v]qō^xu\xSD!5{[ߵEuMq}`h ̅‰{'>oG/Nx8N6 8x *B)mL[%fq1:tl(#Ǧ<);fw)u1 O&k/o__mll-aolv T@{)A^[z9 3! `%TA'a0H/gբwI {B%h W 1ȃƜgACNS*E"@X(tb= _ϗ=. ×AX l,*aC]MJf<DZ `Z`8*`3Wr '~ﶬi=T^;;UعsL7Z/a(WIŧ8K<  Hajhŭy{NIx%MLE8>~oлcAlS̞kםS~+Ol$/?]W-sS[:_{Ƙw JÍ%K6=1J)[Q\O7vU{>8'WT43gIG#PB.7 K$&#O>}Dd0KI_]ߟ0cH`cG)z'aGNNn_bB]KQJ hscA:L4g'0(J̋e'^ĹM-NǢ4u5  q$(cNd-tA=br2ƣg$M/Ckħ`[V`Q cbvuF[/!)kjs}㚛nȫefq#O4`R& Tc e%;z83!wO0_.3cZTVʉRn)"7"@ƌ͙Uq睫`nږ̝[ٰ?,lTSǡvX/tU Qr갰p6*8s7|{ů5DR}~*> Z7]l=%|C glu膑(P6KR ',b IHp1\—[_7@8Y!ΤR|tt <+e=a3]T1Nh'd!`A)0Д:b|cð,Аk`;T @tԋ\&-yRD~%.p`=e#X?RS'XRe [:s[]7 CeY{dxRd/}Ed^#\؇tɣbub#eNl|ԓ۶𤋮(+/ 7DgI~., yA s8fds%Ķ1V=e& ou '(Ÿ!ޕ8[֗NtL\qŭdJl_7nHB/kѠ `ذiC=k Fp($pRʣ4ԃB)%}g{}3'{:N~MC-[bZ"8O9nk6I`4<[ę4P%&ajK1TBUx_UUU]qZ]7x[( i!0"!)Q|8U'`mF:>6 ptୃ^tT#\P00*  Ga)1VLٝfM~)<)IrdGT"'yo}֠>PNIWD~xG:gkpc=_+;9 D <ݶmxb"#ֺ۶b_w yg]4b 7_l6dv;',/\z;g9]7,-~~TׯxLCR\CPWW5)%6GFx~TX9;@0>cfz{(4B_ӁVvr߰t秓@P9X639Ts#c %6kUI]j@I}gB|*NDOŭgG{ӫ/tk3wyZkcSGA3h@ Q9<]a}c$|ϋ`PjnJ)ihd<TLD G}K)ㅲ>_20=Dnҗ-NbW$x?3~إZ$Dުu+f+=4/*u0,Vt IDAT 1*k齨ڂh)Jz,]g//[6ؘPꡇ̗1]Qik>iZ:ԬuGǎtor&N*;a\{UsV/aso \,( L[*":~# D4&yiUY6bM.w94 olG>pŧΛk--1xX+ cF"r]' @֮ Ō\3f #'*‡ˤoo4A˗/ݯW"&X_K=0m6*UhkyuܚY~%?%Mm(/պ"FfwI tp=߻;ׯeϞm75 `ڴ|>[40i"a;l, l-PxJd!Cb/4ተ]I h Q3 B?,4  . CYp Uz{~+.jLغ\+[ESߢgჰBU2e/yRO`㥼nү^s -0 +|(<KJ8pN T>z$:b2:#v'j z&hce8Z:%"]Ix #~Ɍq(T!%}7kϾ+,rR>OY/ԡ@Ngr8j& pnLi~Mwp=BkK%kk;;M̞=gtoob+5W]{ݺsܓH$}; +zp[s?M$fǮr_9`p7I8/E{Z3QH쉏 jVyEyݵ=ZrHBT4%:ʒ{%uvJLuo-~7=hÛ$(OIF=JeG|~OM-1b*21ы23NB‚{CaF+#iA螞dN1H#}&P>&J{;&P}-OF[82F֭)*?g|8(@( DyQI]E.DC\ً$}1J+p$(P1}$Ӫ9 l"bL5ӌm<Gϖd\`xdPiw^ُ*s'b0 GApbr?Us1AT)8)ͦ&LΤƦh2 KcNBUďʒ1]&RؼZ4‹U4ȹ]{,I *dZy537L_oO4's>RXvRd&nv}3,tY JwĞyƏ% ʓNŚs?ؑ4g U"90{f`:cn=fCꪠOM}k؈%(aƝ,IJ1W:Mv5;LzJǙ-_6Dz.*\ShȌۯؗV9+LkbrxwGn[f5гL~d7:4v%AHu^&^-J9-K'"0쁹^wJra4)ГnhE@{"ill1 X~em$Iઉ|0[['%"JA_d-YU{V8Ҿl36%k{l8WEf,^<1k H LeD ՁgRw o/R:`LJgOy+/jk֭eպZטE'W8{SZB֬jm1Jli&߿RJ1Sq,ju<2qa2ro l8u$m~˚=B}9_JT;bFZИEi sK +%YT XWAfȞ\Nr>ʸfcw."v= Cײd8 q]}啛>+wNDr"Ӿ@9sJO`Vl[X֜۷?ok°QuʶW~k]= +ZD0 >ٍ(mEE͓`9$6X͞j8Ј9_UW^uUSlw{ $c)r]_>(VI4ɯ2NɘAJl4(C%*'Lx =yNx> -(&oQ'ZTe3Yg}GJbGATÓ0 QWḒ`BBT_ѱ]2kܦx$xo=nTIE,xb7(e ;#!,\i3ٌ]nA M(ulMr*z!Qz8fhX١:FcӺMQT #4<8G?,^VkҕVFQQELUg]cbJ)1hߣ/|tu^c~&O&a܌h_yq/鑀1;@-[ETWÍb1>>^Θ1?GzՏyR3gΒtg+H+8 #qp"~`Yo_;+OFHTVn.~%Ӵ3cnj1LrzzL0*WYJLuu" O뚩q̙x=q D>/_/:[X{9oT (=o'bd;e#VQE7WX%nq J2hwmǪ~dM" zzɔNR*iD1Q< _ye(=mj)Ub&sxVxPQq">nG iYE" eyjn-25wպA+s,J}yrKP+*,k"Ød*nҥ#ws͚Sј}/q\U()JTHvw5& 9[LgVd5&r\h3 sUAXoS良 F솺`~l4BFMi2QE6#3bnl>s _mmj͌2Uώ&CAe6^.ƵOX]Vf⸌T)Pe2xhÆO) ;wx TZnQOʁ1#3{"iߤ`@d:yC>Lvw֯DG ^^z)r{m⦛ιTX5.sfU9X#ʘx8dJ{{cl˲ӹP1&%s.zb>ij>  <묮ygL.ںiCW]Qdz\&X 'w GUUU/ ljj}?Z_ݷ~}g*eor))2x^ܸ~[mBko  C? 7EJD̾ORjͶmNa߄O{!YDTM##KaJLNk3\ Jޘρ>p|'p,¿ *y8TC=RXP_/(< -"}JՔJ4&9i !%Ajf\Ƙw+ p XJ,fGKbEۘ#Zׁ'RφERf ж\w "UX{mLCCmm>k7-DOkih"6 :'}ɝ~^.mWEKcLqQ2؁.NJ2F^Qc*ԡQ\kM qqBTAO~>HI e6ϣ*r D7^d0997Ҋ>8a3r8 aĹAh,<#A;7=jn,4n7[~rKUUo۱pL>H~+)C7C :*&!xvxOɼϻyA Feb5aٞl}!6P! Ppk+ULF|5 ŽBgg Bz-+2{֌ >㎻scNx> @)n3"!)}/%Oud7 >Xx-_x;Rzt޶ھD*-͖BE,mBlG4-mm#TT2),o8^bՒif@P΍u[m/p=}^赵Yp|<| [}ٳ+?,Y5PUgvw1s&Z`Z%={y{)޽}zķ__ž?^Hhs;~<ޤ6vXs _ ؙ˧\{S~xH]-e[#+/.+S ЀQg`Ξoh;v{kgp=+ZP$mO6GFJA(l}3DR;H_Zjdy'u_wud*H>w]ײ ˲ maX^VIұآK#߶f J EٸQ0ftXGS/_zikGGgExR$Kۮ,u۞y_Y0 ?ճg_s%\SP9E C *D^s_D{`.sn-p*A򐇓p |L)!N~ꌅex~!k.W2 NWg_r]RwTr.h7K_0^U ^ ?:`PLѬ_dC7aiomWE ĶT*[(t\u :;{]ׂRF=h?Ȉ7Ր@ }&~|V&3XZ"" [AYu N*Ҍ4Nߋ4B EUVXS1mt D9b+l!ˠ 7k2Ea`2k(V솊 _]jX2 w, ^di[T!'Ī/C9XHV`@=*D%/ޟ<7E=^|4мhv|H䐦NɬǿHC'" [v?pmSE_$a<Ct}(rp9@AFG6{U%@18j%""E=Sn&82TOԒPVYh\( HĤVX>`Vq Gqm׿-P<zݭZ)(QDѓ>Ƙ]׍7sŠ3Q|g7z; 77~fEx܏y՝[:Nے%K//.Y#==?s ,C/ht6t+wl bZǬWG麆jc^ oba4\; Ƙb Ιv483͐,XT]tĽc7m9s kvd/})Fy-W*++/7+++?<ᄲ{w^)C"a:#n?ly9޿liԮ2չ=`QZdbK8h!r˶kk-9 }ӝ96Z#A `P&C>-$PZH%lb3ϴtuϽKC;_~l _st瘵[{.';θ̸q~*nPȍf Ue5$~_5N"E), b#9er'UZUWaݑѱ_J)ŝn rg !28.9(G1 -3߷o)NnRdز/m3CztHǢ}s~yLعkǴ~J.LשI{Brz7.^ݙ3JI",6qUx8ȜHU3Y翮N MQ ٵ͵(7I+5?5i _JzNOV|>P&[vJCۛs͘#K4r9DXy+ˣeK6N9%馡x|H`PoW}cìgO K6fWU[`GGMX9h$JNɽS saxFy69oS^04UE/ַ^UX&m?Bz2y/](# .A\Ur\, )ˊ ycDDDb=\a#f}Vy߈F("Q8$b J)}AY0k|?κ o D)ϰ*Jݡd`T)5WpH> ;`%"( ` Y6#,%+<ʡbBJyJƌa6!A𥁁;/3g^#۶D\*Z u73yuC3ڷJ#ٌYiYWX5 yvZ w1 Kx)\c/,+"""&-A5"؊x|2*/X9^ؘm6q#Bt'srX^d7-nwR`Ap"tlǯ9^#NRTH9H5pF:@tBc!HFHP?Z=>v .\ya7mjYu!J21S+E3l-\bM%yѰB A||pǃ6'xU\w~sz6*a/l,}q( %"a*cPVB H䜜γUbIFFiTrCXKD bK*#^3{%WumεO]-&d``2ۘ ,2DsAHjBHT+z?K{o qF uT9\3@alkQ(m$Ko PEOq=&an6t7\zǥ]u}1X'ww\zXOOKɗ$Yl\LN7\yU7X8ug75ݔN%d&`1:LST[-鮟}۹[ ]bhȊ{sɝK[VIDjO(ށ BS*}'w7V̊[S0յ?\_(-M$ :z>JKs-:HJfBjYF^E[瞋F 2$֩g[Z)!Y wƱ'=Pat]ͯN{ Ty;映"1J&:I_f^ iEBq;2˫3Ė.A$d@8a8زQkzZ/C$ &t'j"tBMu4hmM`:ں^^brśyʳNo4H ^׏:kvxBmJ%ɗ퍍!pe&s܄ቖ8HC*3AR!Q3UW{UUkRЀ#G4V|Capxfz MD\R֩9?Ufcኰi~ϸf_,m}p#si /JL9ldɗYJZ^5]w `V)B\<:H}eS$5ܠ-^ϻy:,tu v"}YC@aWn@7ppā}p gTn`XD\) 4vZ^Iiٱ_7T+v gȩ(be}F*gܾjA^ЙQR۶M9#sGhљmeik瞛Wp.A`(ffJkƤ$U2Pdž3;"Wh,T%r_t"aؾr$B!%Ør!DWN=~y6]0R6ɕϛ_?ܳy0P܉CC󿭨Xktfd{c 3E`'4h'w+TE,FYSqE``>ddc柌&_oA r_OWSeeNaHO2tQyݣ_)Oi nYRnE5iLQC5#}w/dn)- whzZQZ!djqb RN#Хm U8vEg ^C HO(Lm[~:%$Ka0XXW 5d,WGE%/dlT ni?[/ٶSmwFS%Wx'\)n`rWT*o~\  8J[|;H-[r1yQ`( H 0,Rn F6!(s x5CR^ M@pp PWʮ땺hP!!LV9PQ@Ly\4^cJ \ <JZ+e(j?g! b?3ˆǥ&uحu]Jb^/DS6L;O?8 y^c@YV Ynf@poˁ?\; c]|k:Vnߎ^54{~#/wv_YGP7<y;491ѫF` ԥ@&Ѐ^ o ۷@Dc8cFSl6u ÓZeZ_*ג/@#?Ѕ(BL/~h| [B@(M`6 e,@';ܲ'74'HH@\4`29" 䀷a}|۸֥ÿ 0]I_i(9.} wY@I p   & Sv5T`ڠA:PJ !DPk@ c_@P# @ Rcx'5߮ LL5U5Fw(R4_" L 10_#T>wԀIo8*vS.BFG}*'^h/U~lX،iS z z%˸|M!09_'ޛ0v7#ΰÛY'v4s{i@@ÿ顔MdEEv]w=vmǫ?zqL튆ڵ(8VU9kXP' 1,)wof$28>&+fz8QvjSU%wxՍ.XUINMvP(&>NToWV׏=zqI܁-BLAA&v+X;dK?xOe]o: ՠKźtbR۽` $h q(TQU;NyvKrP"UHp }{e4utE_{t]u͛)461;LCğ}l<Q;v͝2|t fWږ;˗>oy؝'dϜiQ,Y RG:9hBV(q{j=Ҙ΄24#Z% i ='=ð@g(aXYVg2yu UetmW*W/ ˂;\/ #u6PU(T30n1a}'̋|vYs..]bلdO̿qyw@D4-vo(tS<_ŋWtvy_zx.G\bٛ l  xx\09?x+:;*#_zoKq*:r(r:㈕7e `Er3.v(VS5o_3jdA" f8p'YX |X 2d7٦ak|d:3O)N`WYq:.(S2)h5'K t @CSJd(#fb4\Bm'&/iRsMSjn9[sу%熞{Ww߂{dR e_٥qu: p88DNH1ABdLkGk^ՕFrh1Hh.f~y+MY/;($k l T(OWo,{ܗ;A 2(`Y0*^2;x=~QewxT#tDG`6wvbk/\" @%pX ,*&FЁZ@+ = @B:^~ 4AvDZ ` !:4o!m% +2t|͗L}xl(G5, t0j MJ j24r_ggi|7b80He~mۥ pv,]d+zo CF ]&{4;8JR!YR4q1p /NP=>`Bdb W8h^v Tm-Rz9$NG950 EHܧ]j " `P[l/1%!PؾQS:5 (c?`?CC4UUT#<IlFz Lc/@8 a >i="EkߨGBspDk"n7ŧ99.0&]AUJqQ9\8y ۲#)d &P'%9/ |>˲BLDl{mÓ^E<=g#7E/6TRBP.6{ޜG&= QĬ$Id;nqԼ~M+AMvj޺r%_~xm֯\mHjuޚFY|RL/ǴA)zzS<7fiHgrall0}G^p5eV%[q৲;@*!'͌Y[̥꜅Nk(m\x)1d}c/yZCRy^X'ߏ6lR@]n0'ͧXՑܵڠ\ʐM"D*5X]W":pi@-;!at(8RoIC{墩 *+$>C]3f,]ZrWx4YQ@T +^;<^o+TPhrX8 y-X0H0 R{{3V*rCX 1oLN*ktOK$p~f΄A_sHD͙AW}}WV:,57G4reo@+( P57 /YX_&AP 8}QHo /[{MezyTE/t/)Df(zr R)s%UPi{덋NMCʠDl@Fz/Q/6H `-S4[qDm-Y*^_װ,n,S/uۼrlNzQ w?cvxÊxd@^|ԛ-1&l< bf0Ű#$HRj@[˲Hdp]P(!b3{ v4eH&/MSy]nb74ҶwK&?K(kh}}Æ@<"址~$q2@;[\ v%* ]mXw%WrXV/g BIM}`@3rWӶDSF曀; @P T;H 1{D_03ۉ QkQ@UҮ7s7WM8h`9u`& h~ @,#D̆mSO_eO;ˁO|1ј뮱È $efX\6 } P?&t5%X,@1D!:' WU>9ٺǗN$,_YFU,٣t͟~{ݼ-n9S%# Rzg{-@Iq(d!Y(ވw/Sc:HGCQg \!:c7M`/ vX!39FQep- AS}1@SWT΀ ڔ7rғBK͐#zHO],XT0ʟ+# vy 2W lv++S,!A d0zV;p?Έyq HI xҐ Pn2:sO=zhaM!O}_!  e[zWUe\ܹ3@OaN&t] B0y)ƀƀ3N`x),m]&eMG4]ǤJ\Ϧk^~4|4{1'Z !***ij^]߹;\Mdr2&⺾qs뱻:FKC[@K6qͺ sK_=y4 ZZ:9]&oYv|r#^::}lٲ3-~ժ0nm,B+M/>mͰ@1~CR:<3YwlXqKD:"MMC<E Ss&3fWeKpaI"Pjxp0dl(=<^8Uj|<^[4kV0+6}觛NOjʕkV4suדK=ᾑm#Dok~~{ ?r@0olƆ1ݘ,ŌAQ]T̰ c E By50@oओ"Ar ,G=!x?n ^EVL@Ɋ[L,L= Urg.~}g kD<9H$2_+A鞼ƛU)۵<WRN'z(c w^pyhh~Ct} u@(LhD5DRvmM1dl\Q.?A>IiUc@ -p)GSL<3v -pK(<ڹ&8tnh@ 'j[VI <4L:B.zjvД>=Ijn9;_x@,$ J{f=Ɓڍ8T4BXb`{{z6o~ Q@,+TN=9J$Tcї_? Y*tӊ+y* )£ U:hp Ɩ\[k,jjѳGD0`2Kg.<'< R<؏eK;SNs^}-8RrTߦc> xzM4`l1A9+ׂ dwE}ILNfrT_zty0pҸNJ2˨DcBC#pid\`kͨ5]lG oj1Xioh+ѱsOϾz«~eA ۙ=ᄟlo 2M55a k|9[*,>81uGp7ԌT .Tz=B$$ XL 3[κ7qu~yÿQDn |a\yCuJMEp=}r):6wv|GFGSAдb\`gF `7N`Ej9 p1c`.e󘯌F6cuʕ>'PK?*4ԗ3KD;O)aoVʟ=O{WPJq,>j hi4y\.zi%U= ,+ LuݏsD27hZi8)ux00 xxh$`@X m.2rGw-@a](vu@E9%zY ]bǹЁLSJ0>\ dzM ϋkZ{7 xxd HۀvY^{ٯE C2-ߘu R_jۥD"mt矿ONPnP/ rdM iT dh.ցj0$P * 8H%mmjaQ =7DMĕ/O(Rah@zv ĀQ_7JDz.֢I)@JG.K beׁJQҖ*Iǘ|@2`(4 9E`0cgПwas)TM4PD53Q`7/{.M@'P Z@L),V_.3(6_[Y{YLK_3^׿]B@#:o 8`~K@%pU! pu19#d`gGۥP \p TA%*8P20h hx4Yl>uX7c;Cμ ҉/|>m; MNNJ) CάggGNM$n^s'Yg)?M?in[蹒"*6556JK\30pa ԙk?٘9s4jo5m+V,O_Y$4]ݜ#3!8r!9Rvl&DžmmE Ѡ8Zk3B~`r{d3)V'X^:d;V0_Ʉ3[le$H2tձm&96SOtbCCX Ïͽ'/أ炙r)i a>0pD7k$)wד/)lZ@B)HS>,Y}ԴZbUE~SN kEf6v]% bJiA[FǠ u0m4U80 8mݲIN@T}췄imuR穥֡5R~_lY$X'س_ 9>H `""$=G_絙3qjb׬AER,bA}yr: 5pxk =!ĤLWV twN"z$5_- jdqqhQC*m0:ZLZpA0xcfcڿKGܠ#=֞q@AP x8|( 05":!FT2*<,j5T-*v{Ƿo^u;P9ig}BfYD;{7O;uuRn~1É'Nښ]]xE o!E& ^iN™'DgKH7, @/(Yը9s>/֎/R'%2: %#ի\}QrX]4!tjq洦DYvR@1U2wBSpOD,DVIR0uDa(MˀfGGW[w Ɓ{qh("@V } ۉo? :y10 lB7͙j1 (LqG}@ߠ\cP/ p.̇\ \q8W*T{2Ic-RʮZD'kSJ•prkBB]1.xR/HdRiRP>p9åJ5+uZTcZON  Ҭ֜ڔϳq$P(֦KqF /m [a5fpE4A]g0qvMa46dPBW2.$AkRv*.ʏs[s^}iW _2C$l7a?h\؝Z)ڢP}p]T9EyJ!q #e &S@BLHBTTɠP ̃MD܃]yD:_s_o.[9Vʷ_ar`1*OC| θ'ι]߰/"VJc%(B,5a1vlp[T4p(dPV1[%aKS;Fi|_ﷷm=y瑲UۖyZX3%X 2R'ٛbgL)?\5Ѣktda$u;swS'arUUUJ5B^rċD0 L]^Xw1._ζuYEC. ]tZ^3DG$t4iM\sy-:N_$6?=&vϯS̼inVJMjt>n2Qϛ+6^zfU"QƖџx=#{K4Zc IDAThв3KSMATɕwqt"UpJg/fA(r"\6RTCL aݲmS4qľoMb<;gxj*3N}}h(Bkkk֘V"XZ׉b̯tk7b/aWVV'_;Xnx66n凓*O' _X]z&]cd2!ۼul6Ģ5A뒟/V 9xnxdh%NxI6xڊr%3;|.{L@}iR15Kwފt:<{M?GF:K3M 頧yi XM܄{ܮfZ>+)q㓧|67uJ)0NUm->G]&LP]]êUM~{0:sJޯt'գ a jb.gּ0:<$|3Sʇ?Bu-'ɸvx:'o61UZW(5C3 *o{/wv;kH2Uخ cRmMKB$ FV0g3{hvD/ހ[HN@0q'OO=TWudgW` *1Pʝqoҿ zA55W ~"]PS4XDLGrԉ_XZ=S5z :U#U.B+ĻgNiEЎr#0Ι빦8)aF ?=x| hH&$22bFZkVWYvX<UiDmhUU'Pǒ%mF J94S@`Z(Z`/dҋDhzl,4&R*R>0p.oefmlXy{i΅ q] 7xRN$mkX|q}{Zt aQ΅PV] eaDbp%hX(6up&q_澼G= 0 IP^O$fޯԅ|,B^T@,U%==,kXW"]PIpFVpDPf +*(l=33{~W|kVjqTn42ic;67z~7$p<IE Ìِ.߯8 Uh G}@]2qQ:] e?S"4(J%iPDl*xY*4B L _~N31Ϙ{uνyv3E&HA 1`m#&}eo}'Sq8S5j@ _wua2? 8$5oՖ0:a 56 Idlܶ1R A;9&j8㈿˹;/[E(T9]2)/(, [%Q}>@5OkƃmmD/ѡ vGmdFD[Axh&w&3D"_/r+g__sw<={b]x]Ҧ.8G"ܹsJr߽ Y9?Te+ʈ^*>g]˯[~ELݣ׺ W(rVueJxʊwW,t \Lڎ*G_v5+Ub,Da]~hm q:V$*n¾I w%v&t#YS,Q+ ][om>RSB"{{Kw=}{ӥE~DBU׼N&NayϺj̀tuzjT21]_?zFu߹sb-a𬯶7o|?Ϟɂm⡫(\93u2Yf$YXQ{ V!V ےg\~Zsslkq{x&Di7jjJ]a{vZ)enҺDvck~^>ߓH4~[~oR9$D)kAR)p;$3Jn# {#TW_C0~ w4̇@ȷl @ `?V*mm00I90 S` \d__Hu׽>a{ZڂȘR+Dn 6wC=7[j8Xa0nAcmZ7 sCC@HRqaF@Gc.~JU84pEERuaغe׬E "5p~E&N_!ҬP^Z3m5:0@b 9 .s*1s Áp2!W3^.G/".Gkg__?k۲eGYO$fFqDIHO<b6ǝC==,W*B'bѼ o:A45 FT,1wFċLSVݲ xiKF-ąCxnҜTJd2iEXddpyG0ZobLC)JQXk!5n0' 42؂%d'DdCcs2sڻڃhj&oHËrm1~x"xдpA*6N؋O+[/}sm )a *R]q(aMq 8P +&188봞y`G3l112h d8l K` R-ݴ}Ma y]FOKI; NVg#J[mK[Je^;踃Ξ"ߕN 4dd2;վnݢw{s+_ܲSڛT@HM[Owwd,_9oأnd` j sOX(u4jwLJ mm]u3ݡ~?GD]^KˇF$PNi ̉ս66S8SF3ZGgc?iTjeWݤEWR;?>H7NdigߥnUI#Eb Da.\I P)+N?hٓpW̡[ ^8{JĖJo GX(JYCIcԋ8)zzׯ?U N?u%Q؈&liv W9!Iv^WzJ^ JgƒF5/0(fcxs ;:]XmDK8fUi4"Ԧ|zL36{bς9lx+"* F7Wm3ՠT]bh"6`M mv:NI+㍏M4O6mFWwo /qMޞS}[j-I~tl]-N(uy wn1VpF# ^'317XRF{ގBM*HcdQW=\sMzA C c˕Z1ຮD PyUP.M-*(3eo|3UUXRǼf BJf2yTptGʛ*1P1Q3Ԟ+#/om|Ŋ['xEp+#5Ӟzݽib1N&-eegpĸqS60z"&f8'kmwst(+* ԉǮH$H$v_w7b5 ~s]v,(9eb۾9kdZҶ||~ _[{ĩ^pC+F}䟲KE8N8DjsaEW~@M4:{Μ54\zr 19kERi繣lgʧ}[")tt u/"j=UDlCg$qD(K`u \o[ۂ~SSCCJMW$C.΁ PTބupQ1*@j82# yI$f64@ZymD)'w=g'z8.+˕8 .f4Z(,7Fd:D68Rɷ~UJ{_)[-z8DDfF1MX19BjFkc]ؙq/g87(+Ds|X\ᱹé $@`Xal  y{-YG<4uTG|~ᜁG` ʪh, '҃ʫZ{ h? WO r*P8B X&&m^}7xLPT@Xä`-qڅ_ XđJ+4 WzD=!ARnËD?->U,Cvxs< D,1:>*5"~Q36l20a>/0=Bl2#Kƚ`,h t\[yR8F*J,.Hbf ǨJ::XG8 |4U֊R~A}dZV.| 7>RNwkov`@)8<{p5o7NJf2 /Y" T"0qiU$.߾SNmiMah=R h8E_VG"nu}GHa, GF*(kĝ=Z:c $J&zuOii-.vu a1H(iEL~;;RcR5=_!ZWTM\m_^PC\Hbl7sUH O*nN1EFv젱\_ ֢t{ԦcUj{lM=)?.s Ro::3Fj(l B֐K>I>):&e\D$2̂?i5FD~ BLzHbÛ";j m ?+)w_~AV&JP7spB+XR(+QԴ3{QŢټ3/ OWjhB!f$\Ck ө{rnr4ZxyOo)ggGUw1#N>0=c/\uF 1S{5zMӦZ,~ǟ`%&K]2]7Y?Om^t0%)߫]q:Xe)CRgDc4{Փ[o8sDdƌ/'|F^S1E?ԐG]GO~nze/7 qkPq׭5z[*]B̂+W3^oqw (ϖlK˵vpfep7^r")D^O&g}`nJ]yf_JTTzHR0[6KFP@tqHZT* JHnmmvd2EK%/@UeHYV!4'˱ JZژ O/*|̃,\$ZZ[2ަG=4mCPȃuݺ0lWDJ˫@Ad.+7h |铎@p!{ީ"߲,6vx ~,aaRʁyJD"Ûp:DŲbe>2nRJ=[\MNt.\+ҌY@ {(@|F`*DUZpQ %u zsjgx [؁"Ǒ83_@Cb~{?̓jy <5/l/o/RH^ *&`ijSۏ=rRƧ?5yu۫&mP GB"1 )WCc~?5(i!VhW0nH^_@JP\%Jʙ/r샱rczͺau(kEQLv'b? IDAT*P CTe'Pu Lk aYPUBXAP^x >QяHŇb)zI+2)(WCs$'@L6+7)J𯇃(ĊlioP,ظ-_A!VJHx7u]0cvI4g.оaXUZ=g̷ʎw_}wɱ`evbm rV"x1ֈꮎD$uB^|={[]o|\$l0q[32rWK,v =7צֈܰO~h t:t[&jMP@ ֣'̈w3g8j(AY}}SAD6|yؔpc' "&.+?Lq0#9ʠqC+o% OL81!tvuGŴ"2ڜ+JDbiLJɆ#"HD'ꍕkM$Xm +XCuDqJw<#J;h_Z5 GI48v{v]\ZTkP^wl!g>D:{8|m1{k]54L&Sk8SXq+A5&صn8q"WN^Pn&R>榛Fm  N$w=,FՕֺRPs(TA>*YtUQg<lS:;#aX;QI&\?EjLtvDS$F&ZjàhjA٠p\oD *y!1H%AwaxԦ3oZ{I2;`J{kn 'xWG;̘uȈDc˸ y)֗jLZILoeޝZ%B膖z5Ab~e R{. E!e80pRM b <a]𑱱qv8(k_?8PsAi$ P*Q,Dd" /vg޵28^(O__wxbl~H6Bz\YcLo0R>sg=[wa{#]ĤB:=rbŵA]Ǚ",=6 }PԷ[+ R|B _ڈvIOd_]…lyfbFNpȉeBhb<)1_TGDr2-]avJE~V5UX&<ϱ֊x"`zE>ZIv(k WQXlڽ* 9J;AEl߾_3W9ξJiØ?ghoYp֩X,v %U2/; vX`|h_wOp<MPz}kZgLUW_V|ڳaHPa'xAz  ^sd$8zjp$ӺU %V\HqDImT{gt#f{WpN9,^Mj\Ry%"%ܐ@T^yiϖD{E(w7CgtC̡CBţx-Y^}` Bgyyk]S%U#/o D!뺿.(iCV-ϰdo yS2U0/"xFa62&`Wٲ\H(b·:GFG ǘ1{i숵#CaJyQMSbR$ =P1RJx4;~*P5$ :sU-\JX0<*UX Jn`%7T%i7D`BC,ۅWXF^"%3orCdžOǺʩsiGKPKQ4' Sv4;*ӹdZSԉwʎ ]镎TWWJ[w_wu]W\}cꝫ;owaw>Z0 G/cOa4"tuocV8u/(cHS>NW$Ep}%6EpcLֿ𗟹s ?ڵo;=Ӻ*H8gHK,sox b*M>uv*H\ &MMz*@**PL%%ypjaёӑ=E"6pe:ΖXnn=i)[f|yĉl]]΃riK':;%b(_Q2JVJډQNyPrI_8J~3v .C(Er+\PVOhT)/gxNd8%H>8}U¨"9rB_7I$բ>~f;QC Vs.۶mu[[fbD``Գd 4$7~Vymߵ)i75MS$@=HG__̙h,VZn& vS?G8yAlHRl ɖPIq _)}/>Kwx KN35zN]:~lvVg?5 B+P 5wV;>U^F5mXJ LSqS{$E^|nh<'?y!{R"VxzJj:"6?9Gv:atI(u@o7U8ջ2fNh)٢fh}|ko[yW^ݹhAkmzkr788ۻe˖S /qw¿yػX\H&wh!wݍ*r;I.ֵ;אݧgrz r{XT\)D-LLt'Qiy -PDZFbL^VUyf5}/-_~N$&&"\TZy:ÌRR)vf)UT`mH)cCC٦{:jfa8$ R8\(2ڙ")5Z(rS(7+c/X"∔ R50rJ5i"|C;w LŲ"W ,yOKɾ3.{Rؕ"lavq(3F+ Jeϕ:K$@RrRS\T\nAِ NjG +$ƒ6ey{%*(^-Tu'[%j%Z#&ăepP~ȪiJ7b p|G_2(P0k@PUq=0+ŝEsvԴ KA x~6JXM,/Q/)F]2)JM/mR(Lh*[>ZsݬDŦĜVsLh&U|-s ~ * J(|$t`C[|Qd;&CޮWhajf$ :z@SkKIzԄݪM`؅C=&2 SiԉwLX,oݕcq"MHן~ӧO_Q?Y1hT~bͱ~w?lQ6VHT K5(lc۷#hvSRSX#k|K_iJ{X:%Ŀjt`qn_ vSbÂ?0kB_'OI74q}4Dl{;7d7o2>qm^ 󙫼᠐AN-k8PP H#KJW*F<.B0 .Ʒq' PNKhba@@;dl/H^OhJ[5^iY%STCC;+ $b4 1fz0MJB@#o n`djupxK8]Ǚ՜8 @= p<0(2K~ -uǟR}7B} fI[߼a < 25U MT7,dWW|N6k'|'FY[}{zZږe' zKU]iZ 86`Z3>x޽DaS~djdՂAk80{^qnAm"Qe KKz,+yS\%tk5#'ֳdG:,h瞟Ih6Q's`,ǹ0N4u]X`6|mDt!=V|HCC-iZRWiڍJ)9\,ҴtgmI9S$ϛ\ L ˑ,`.!WU]h@J1(hPb zf nPj3]~,)/sFtŬ6Ҷ `+%u}N7rHߌDT__o*5=2x \\ D:@Wn&2͛KgB@;p9`?S2`+jb 8I?i72/ye8@"52J4xt_DJ5fliMo @4*p*% 8@300ҩtyX/y !@*pGQ~TɌ(N8݌mM@%Gg2#`8x8gZ-&A% ]Jr=Od=N1M3ka-@J/yd`r-,ogͺ|A챗Po*+NudF謇NjB:n[]j *&eǢ/`pzͪ>{F<p4P $C?j%C<ZzDz8@i6.cG ] o.OЌxuV! @(4y5.ǔ`]{R>N|45gLWWWT*[7 J?86yߞ,;6m}۳鯛Y?7y{fu==`uVi`zhpl?/ 'O.>)U@rF|NO8/X訫C_M*o ݓ՞I7]yd,F0't*p膙3K>s8H0Wkz] /xaD>yy_q꩟暥t:}e%I_W649k))۝ Va<n6mFsڭc]og&z-Wd8<LJ-98uݗ:Ykv^G" ۻJH)B=f'AJ}tǿ?q3oţ[a0ںȴy~pѷ/\Mk&u;-#pJ$` XFe>si TW}=[ RV;Ky/ޕ`؉vMUF ϚݼfNux3Trp\vJBOek ;T2!CچۆE9JnsZ+ L%[P*30Sa8% usXWU $0VJ}:PJ%'C8ȪIy;,Ԯ5&nWJ*7; ? l ~,u}**FZs] g1X,˖pjh`> 3kP&ZȰLae@:#(FGf)<JK. u]]wݽX@@U|ȎTnՆ9S2#}~ūjJ#2 n]ѻuxj1!H`Rq!6o<:6ռiݧi'dWSήHnջ q ]]gS> ~5F 0kb%E޹0Pd67̙=/.X7 *evn%buk\Y~f~sWvۍgQWbM޳ӭSbe7SDߖ')Dd|xRz]G=888N6K.\xf2L&N^gjjj>ZJ2 MCKjY?j*\tz+pwF B ax5\ W:WiɒUUdm +טvS *սt1ۻVtvv|w+u"XG$xF'  S"ՠdWg"-x piwE9sF0{Ԭ\\]a `i:w|E53lb>BPa KQ~ I1{pa2G҉=,J۶m'krqg/K&/Z'*C3B~|[}soЄ2e$EO~|nB/^\;}z--/{MTo@T:6z5%p)WЦPa(ޮTgg,\62oJMQjsp Lfll e<L&B\ŖcPPԯ]ۄ, e~[/Eep\`o`X~9"ꋉ6`Y,A'smmWb N?]]]o7qlh[#?r|4N2uOy U[;J4 MC0x`xϞk< `_6^+uLhe^<=W?k{jBuM)G#)_XK/]+_קS 89Y[Z\kbg`ujlRzd@rJ|Ё<2J ӿJJl !i:M-Qi;p(wȗ)\a5/R|pc8+إ/,]6v>)ݦuyۢ{WhF}MQ%fBe @ꚦE"ڌJ]4Nή\&Js:^UiȔ*sTʝ#ՃkƂ\ = d ?1YA@ONa#Bxݞe@z{JBnǠ%22J2IoSt ȧ|ʮ~n =JE  Ą\d1+K34I܌FF>J]ܼ#W~7*4!"XߏJDD %9t*!3..CPJ;)S*D~ߪJUpJl,vrUdQDER;yK/;}x U%|~nmtSYEO6~7:}43:|}f)E/P,H' a8]rxXGްr}E^$hK&w9ck8'O 5[h]zVch9#go~_=y/ח\uJ\b(ך rhr 4Z۶g̘qT"]C>uꟉO/g[VWX] f8Ni.u{ ˚ bzB_i.N&G @ĦNF54,篖9fR%:)UUlT4׶h4:w6 KY' D:<'/_n 0T*nJ72_+)_n.THR->+ ]G$ڀ N9ӖNO>D#Iy="(UzDfs"eYT,z1 ]E@hopxV8R 0`"q[F] h AxoYZ|b,sC~Z2oۺF r4 E`77ÒR*$! nM U566~s_[eXN8/"g"Tz@͸>sǀ&e@T3 B xu'(Ni6kͧq%_%k1t@Uc@5p0Joz=;zuM' 2ABcli#t.lrwoϢY~T*5l7ej ~q8*FNr9i=4V(p' vR {3 [Fղuc[ppQ6ȃ=ofٞ>^a#<*zDXALvfM 2<" J{= CW{'G)URBƮ?_w G@G@#y@X.P^v۲_D8_V24ǩA29ihЄyr,, uTG֙ و;oN,xW]Y=R_{m:yGIyf,"m:dVwtW/nr|$d\$J?RIF-N,C53P~qǵ cF-tW;dž zwȝ34GcfTI$Di_EQf\3Xu5yr7tw8NRů{i=n`J!zdx4bFi=SrDR)i??^ ٥^`^H$_u+|m*W[wn/=ew (Bir]xlcȎW^Q;w~F,6|1rHC(ԓ/| #q-5ـ`V\z:-KEyŞpi2I-%K֬0mc\5 fAu(|gq+W-{ >jW-"~91ʹ{{uӂUs B2 /f௙25˖E"ի/=zcB8'\Zj3{0>fzu'ҥWJ/1^QnY>; +>`?rz٫<<ɢm`#-!23ɵdw60OYMY:5u]\\1:!D BCW^yci's{Eɬ 1M 1Sq"3k#yM;TJ+\`tBݲB]JO)2{,%"0u{g7p,| aLWJ}w` i6r""RRv 1$ d##2[Ӧk;CM՘4wMs׌^rOR.\.eU3pK%4r9]p75.3 j/L73pq  \~nYQo1yLb&plmo9,urMSI]7upцИD{\(uc5%4-fgTiR@cn׀*]M׿ϖ{_;xָ(*I8LT @NRݜKai{rȊZ%Ă130eqyW\C7M3ۡ S((Mwvuvuu-_|xp<dpE Aqc cO|@TЋE2}c:Kz؟W >#^>%:Jp43|&xrw9Ozp/{7x b<-{:սi\$,"X)6>b`ւ_Zo;;cRTHcםu$aiFM%: CӅ4e~w~. .Rx޻[(VQ-̑,^yN_ֽ;<`1{y-S5+'6qa*7} hBY:B47[кu2ߵ/[B]c λ鼓|2B@  7Xŋ8@R>T3#ܽxO]l>+@05ݎFEXxhn'!`R{VgekP=&gJ}E"I' |e3KBEk۴|qFFF֬y7R2މG,K/^ŮR+LPcߒK-wb{%`1 8iJNGW;:SF}E;6Cu[8om=+V xg8CMm%"x?< ̜ gc\\( Ncŗ~~Hc$} oQm'jٝ:]+оD){Yg Ja<"PD_CLFQxpgfJ1| 5zDh+i]_pY8 :$uSur*A1. {3ǜ-.ߵ/ KpZ]bN&y&,p_oW 65?-5T0*S0[11/ |w,;ǘME k:u C]F\H:_7|ŋ7}L,&u}(=Xu.fzuS !qwWAHir{F"aV[5GF$LPp\9\*0Qr~gcw?XvB-g65:WK-~[__600eɃV5*@2L9~$iBP*9LG=O4]_3n 4PZ?y?%g.~r~[/U,8`- J`Ժ[~+dY!y uq=b29&eH/w0`H)/I&75-/P|@s}BYD.1͞;\3iP+z{wڦi>."H#zȲfz9O`n>vcXwՎs?sg9Q@uZ=歆qG{۶]D 8܇$PD+yeĵU@J#-78YXDMt 8hs-f0L"On-mkKzけ nSR&^SQyPp@M0.fRM>_ B$lrD̽JGU|āO&xR"!Zˀ& @~ (CEpG被ٻw%ܼkWJ)ӶӮL)_A `0: >_żv}uCr`. qgȖUi[4䭤Yva/ЄeJ}T2p p xy;B!@Pr-h .ٌn9ՋaOP(J`"G U<79ݎ~nϱ ơѕtj` (}*A䄎=߀#@ *03{΄|@ P E-qG;sMW)Q%@UA` Jf ,wݺҵ<'OB*Pj ,S8";왧09[yy/L5݇ÕRҜg  31W<>3 5nlLmŗ M.2" ?.92@,y젱D+B=Ş}k?ҖVrء9A=Ѷ;;Ű;.vv{t[  ق Yo}E_G[T\-GG@ ʐdi~]s'Q\3DVL-4fUKx~ć ]0r*&\\ TH pobaPpQЀվH諲38egXhR̞Fs3/Y2zu>WREal78"#"k==hm42|Vߐ t\{U51>wnd7Jx ;T] T5PC[=:U>~N='ipi/nܸa-/Jrrx{WSHSL/w̙]cG v^aJ[ߖeN袟5{n9d_oo9ىY"S6r>7Ǿ*X]Lz͏lǧvj Du]Os"SB  joO?/; Ʊ tfϓັB&F">@+o N?厃Hc {Bg+gmjMrԑ+Ʒl Y&M? su'qkP%~~KѨiەO0TY_1,@"jҞNkÆ#6: 򱢭 g|z> Њqc?=>dy2uf褔r{7w^-q3v}oe{~0_:G, IDATCW^yN]݉˪Oƒɑ|a\v\5S+3vfkSQ\4OMpAIow. .7H8Jy#ge~EX1.RMѱd7 iS}wD#" οK4$];tZW D8S5ʕ<ؿ;$Xz"Sr6\^Fg?qTm)>Bñ5m0)HƙzR^?rJ[<bˉѳ\ꋒǪT=+NɢjM%8MH$ .Ԍwkg76 *xj=R& w_it4T󕿽X.go8kK/=ooXTדbEaz=q׭!LջN9}'f㲿_wJS6dfWwW5z)ǒ!˟9gPi;dk֮^+1_UDxyoGu] @e(Ú]j kҨuSa璸sjb:=5'\_iE;nUCOw(hWJt֯w [^[AQ}xs|! , l'SޞL%xpXJcM4)=]o]yVggia6 BSŸ0@} e~tvZ5mJB ()`s8 R^Zw^WGjTGx XSc:Hex d3(+\VdcqC0#0p ۿ jM7fw;vy|e=bfNRS^L[~󋳥Cw^度:Q%45OOkuF$Q3Wbpnф`Vib0ҭB'K@Z(tKq &smw4Ӱ0rѼ@GXT}s 2BgM+3. 8`DJY3M1U<'  ؽlURbwQQi@&qgy- Jao'N[a۶QxtYtudGp(c8P;XU]mIڲT{[C!m+61rHm k|`KMޢvA5Ts;L;Rp :{Ts0pm Y,"ȕ^NDyzஷO6?\ CI`%MqJ_)ƶm۶gϞ hD"]]]mmmg '4 g_L.N,rޮ?ya螷hJWXƿxo`ݴi{UC7z놇#%BDFHӴL 1ӧ7+Ƽ9lt󝀦T/N*1Aɜ} P[]\SrrkP& Biy -{IU`-:*;drUDB ø|RQFj /҄RV7i{gu?eʌH$[6n`LI `H1K 'BhƄ\rC1B(ntĴ@ t#nE}$͌c4ǽ[b//W[~ۖb2@^)hm}ZCt!v|ͥO޽ v1Y\x 8`s@/SR^aY@+c/r3ט捽?#:Ht>40`,w Q@?Qoe=>{SOf̓;ujeZ7feZn{!0P|]m QQYBYYTVTwR21J'lfw ps;ppl"O"[~ 8Xp?P2?crv^æzX_R˵<(pr[?[݀  d,Qqesq$P^wR C$ MIJ4ͧNA 'Ѕ:R}B)D O :PC hȹy88u@9KkskuMu݈;o6[;T3 a]CߦLlSfqrI S@8BNㄜDqIaR29:<{\UPEi,G+ӝiG9ҔRXEEQ5DEOpٯ|B\|?_ve'%*NY 9NJ7p >8m1/,>Hj} Qk~ۼjڐ7M6Ppڗ02qsuoq%B7صZ{/h쁺Z%P*ݕzzI/{cմԿ^gJŖF`rLa[tV9${ @2Sbr{o~Y KSdzV9FmbNre{bnض^QZjdooR9|sKknk. Jq1w*uȨy@= c|Ġbjypӏ巏cT۶q6ڵKHiaE(u~O֖54=lDPm`$1\;ҐVwn듏21eg/r9~K948թHflUkB%U^o@.zu|])VĈ}gH猧8Rceg`eKkS\ϟiޒ`u n:  6LJ`2uװGBzɄʝ1댛iz[dmBW_ gK ﷷ\rU{2RzS\|M;3o ~w0PUU}O>g-?iH&]`NXlH8kpe:eY\u\ɜQk͚ǟ[Vmhہ@8 `<%u=`0t=F-~V,"ɿȐ:[/r7 m`;7oV` aW'f:-jFҎ57VW7@:e?Vtz+0XT`mEE'> !@at65ݱg#>PpSƁ~`1U (P4,  :kځB49 q M/M?# T{p~훔)wݝ[l$23Q×7X}teN9~,? o. D0%H:ve(ЁH)_H0J?oٔ'^8SB; *dY: \4|iPyh'#2?nu(T@p:k, L 4c # 3b"T@9W >91 8 q3kVP.iD h4l)͖L6ihRȘF c#~`$)۶]$.u]cݻ{<z /ƌп/v]x=cƌs9s/yW?h21|_udWk-u98iS\w XWTW_S`OQt>͆r3}XьU ,+nVw~GK ۚ7BsWY"6›ke2RͭhIJ{9t2=?kZUkU%.ϸ!K̜c!.䫁DMCq:Mj6P{]=;Uw~Veٲ==;:nqDA(+m,NSX-Jx{ZVi-+HfH0RdOV.:+ Cvm|W6;EH{Rb/L=~vzzUaw$?A1Daq6tCي3tںP>3O9&gJ`^$eF:*ݪ`J淚ύGkGՆ/]bt؅FTYntrx* C0JvA%@ B(|hK 4AހYIӔ4tkV.n>en%푶uTD3%m;vцm15gGÒqϛ~Zm L$5qܴ&mW1u@a8EGHGC&-}w\%ʫ^Q-0R\Z:d?q6SDB.$xL/l gwc xtkzѩc+|ȍ[w05-N? ~4;\ce,:s\K)MkPec=˴gG ҽX((tmܶM~Ib-U5!؟ŨAuV"(r1ͻ4dsZ^5tCrD̚2V2J0U 5mk@|~øqħ':|kZY{˖˼:zf$RWj%%SJJ; zy*% 8\nMH X {R7Ul|F]x'OE"_w=SqժpyuoRG!38es|R/+Y"#ߎuЎnuzfѢdR:H̊(] \5|yTl@r ؅:lC'era ͣvM+C7ADhc[mCTB GMw_ w==Er h%J},Y(Ѓ XPyU"PR9m,8yGhBR4҈].|a!g,8]9J CGx BQWp.SSkWh x?}/OTKX`uBXQ)TqT DgUG=*sC>bGyXZP@bP1E.iNseZR  X>FE狵EzyhBՒKXntYTCjTp?{BVlGII˞_Vx.s{j=$Us IDAT_Ot&rfD5)ם;d!gd fTȂ,L&ee2^z)[5gD"Q,D0|7;KU5UsswM/~6qa4tks((8g>sa-O msNwlRBLG|(93ZFpC,w[~\%|kF]\_>!=b.M2;PI]~vGM2Y*G?r2LQس'ܟcgDF5Wh{Q@TĖDZsKkW%tbR zae˴߱$X{iԘ93dkCCл( Kbi<՝wi֡u #xSU4y;vН8 @ש5n6zr?^+kO0)Rrg燽[]! Yy /r*k<ޙ"8qaݱS:9튩^~>ϲ,"Zӣc3e|>&?cncÐz hOT97 fYfTQ3+{ۂ@ '2:\ "b0\jv"۶--C .3Q&V~JsB]H"Ht^6&]@V {;oM -ee]$5X{DF|leNTK鱜|<.s2,AC5["SP(ڽ{vAΓNjzɫW\T (enu,&}&WW:` QyY_x\BB2_YE"]p]~ (~|1 |*}L_UV z%[2CCsG0pЛgVREKSY9*қLf7Z88Gy@D6f27Zl_nٲ7y-@J@ e6h6p $kj`JqPhj_$ɠjOC6uAV…O|iL[޳[" d?c`|@tcҬ} ,=D:[:z\u-34ԠTAtݻof  @b>+-i3^ `Tv.4P s}Ѿ%U\'UIDN|pemۉlB:j:( .uiii\Jv57]AwH?R9Iq18 Ad` LaWJ#53[Lq dZB|Q9`[*M >Q-Z<+K.wp#;˶O`By8z}7 `$hPX| ;Pd1 :=oXq}e^L*q|u!4Csq?)rIʹH "D` 0JSX"a膄(`GU:Zv#~G̟ = -{ٽܻ.rj~۫ ·7}u @a#r ˖-+XdoWG|.а;vUOk9hPhDqWб`f N}?d;^ 4 ż!C8/!VoYkg5+p 5C(/!PZfL9{^EQ%BHDO)B$&؎2[&^{&;]x{S瞌M]fAtu 4*<tc˛<zy-u9SO>!D1\5HweyPb@Xi2zײہ䯰"LHo#Lg(MU4^D*tTjcG^dx\[{Yg&a"^ݳ17uWHk<+gbժ'--z*m8GmuUOo0ͪ}~w^OlV4z]W .Ï~$b!w5CL8Tkv<[K~vݱL?T]LFVQa[8cɅ!_mYR]=eڴ9snpF[Zj:O>+.:eP ׍orq 3Qy+ fC1Dy)z5+;+g͐M \tݑ2_Q?xӲy/7$G)$N|״z$ٛjjN;$Rg##6d3j} ypT 0l;ʎqg{*Z:ֲx׭ [V6tm&]hD" \\lhVqT5ͻPH (%Nsؤ|>,1̍}5=zǣG/- 3ÚYiN7f3,%'5I!E+y+z2I&&X1Vh_ hHAHZz߯+//?Gdu^kb`8VP`0ݠ@)VÝvpfCA8ݙ :TL07H Ad0@P()d 2 AbM B J)ak #>1Be/K)qM Ba@5E *)DTHBKi" kx<p>s ++m_9.ml ֌S>2}ty4i̝;H?iМ T]$qVWK>Cم6x' j" RӺ^@~G9g9Ai<w SZ:1hD}2iPnA(u3/0Z[$(eQeC8\a|rƛe@`7ZCIDh(Q^&],jns maZ D 0˂!Шǘ6%k}B!xW&͓'SZڣI/w8nre%I(?Z1}1Ǎ3gξr J}\~Yo() 7oh)*UWϹ /~}ױ-]f|#J\(wܻhtf.rɡl!,4uм.vH)Q\/xDxTo~x5DqHF Ԅl=)Vm0WX><ơ sP}H'5ls=~AEh؊Kr/:E+8pgM-ms8+)!={Kyf%~/q@cqCV> ;shVCy(+Oa{S2{v.RB* .^2>z -fTN # xPu&;) |#QZ#kڻQMCl'WBwmgoݱe0}vdjcו4%j/-M[NxSO//ͷ6g^cH] ْB/d*@#' v"/:Srygyu!'B>'`RHSw9-xnٸK0LO,4r / N\^Z fNgO r駟~w|2?AN" ^e\B'l5JtUzmw)4i(BH,~k|MDz}; p 8 x 7NNQ 9488H( wUCHr<%ۇF7Ya+IH' ?%@LQ.Q4P jUnˮNz|g<jim2Txd ޻E7F!I@a\ȶg-BTP@9è  RNT T1qEOwp[3# (6=\/u h͍N̋suڰ29C.~S$Ѷ~lܙP(|ʕԍ4 B VϢZȒΝj\s͹ӧG/R;?PL[,3JA_Oij($WAj(30{ˑ/P(d|逸YhĊ0t1g-@3kֿ1*TIe>h5LA0 {y^zBrPb֢G?={OS$q]3r6bq@#0PSOZpa`ģG0HZ[ T MA Fϥ yKPW=E+٠fDuG2{:TΛ3 ZضM;`ڬg-_tݻwuwz&Uw)> #ve2b ڎCm)=Β%uXRNe{H)w򩓽^Ȉ{0?pstP)ս{W6/$ě՞<5WVVI)57'ڵ%P 4*q(<^ *3;Q?et̀Gh&%ƌf̐#i f$ hARǺ\e ݴcO׿n$Ӭ1 i,+069/J&ǂ5VdcǕh, Ao3p4fwG>ߝtdf$==\^I7k8*~KYah^GHͻ>S 1`k23β{|yvZ5bףюs[&J!ݾ=PN]/j#PaPs#{:"u&\*eN9sQX,v̙TtL)r:,&ϝ3gGH1o?~\kpcg}VAFo2bvd߻7yhɒ,E|@Su˻W'̟k㏿i$*HJdMd p.gg/Qs%%F"}[!z0 da@ `pipp]M4xR [g϶lv! 咀`ax~ \ O޼|>3Ϝydz띜P:o#'uJ$|~ϪU;Ma8\X|~hBj ¼ fl}@iVL%RuЇ~ m(>kf5-[,\q:)œ+EHWw&8q5@Az%p7p0uu@Hv"!S@ڮ޶5z]Y fltf5z{ݱ."4oSjmi+k IDATDXlS^%PgWO& 1fÖDeGc/j/b!'v,) )6 b4xXt@׶˔u<  oĔ#f:k8W WCv[(2 : Wn3N8c0cdAe5ȢC T9 ġV 4de78^u-; ;R_7 :FZsBSgn[('O3UTD H t a^őYa 0RaZ4̂`E-`#PVԕ( PV,\`X dlXp8 ꀏÀJ @$ Ҋ,_ S3jw+gO~[xǒ;-__ _۷O? p6{ozN'sッsXӐB *D Pԩ*9^ǎmؤt>F,a9[q*=jּZ*"VٽᑶO35ۭ;~lc8׭[q챦P.6x>`+a?jOԴR%ӏHE4jd. ͕M|RةBfW>k/7:L; @`@  0=de+LRx@൲`(Ԍfr~T%.nT1gsN660f}@UU6Zy0&z6BRB%vi<,wktAou54ׄm[QD80n:ӪI)B"K[Z4Mǝ[7~;#]_|GFMӔ›>ayu`(?fҸ O#\ h b ß#78k|[ c5=~ɞAo]#.G~M[;~_8z:;1weҹ4ؕph/lvx 꺚RvLӬoӳkW \X#|o3^ M/Xw1-9Yb`zAmq,;lJZ %bЕrZy>Ͷ6x(|2: T^a@}˲OΌNO&k?;Nβ\M2[f{M%$@BP)"( ABB5"*EBR$" QC( d7lٝ;μyYbD;ߑf}ߧu_uMTy#H]b*(3"J0syVm;[!F$uv2cpWqڃf? OѬ8Љa`Ju+MMa/A`ųR@@R1ϫW޷-#kR+{HEڶsX8ƶaT Uf<'M 7Fz!&Hiw\ .XdӥK/K$~d1MF*E7^l _hhh!'E}lMr⊻5k( B}KOO'|Ygr-.c ݈3brvu֍7eWiZU:)vg?#7ݴgߐ*M Nرf00p~wE'[kqG1  <Y@ "Zμa̚}˄XIB\nk՟Lfڦ%pp0+%] j'  -R-+@-DRfe#MTy5]] 1.ϔZ6:ZiDm{ + ׉Y)ǔb R"˹BbۏBޏ@q`^D((_p"R@'86jZadT(2QF;pJ@;M̳rh.7F4|,p-yQ#_p|}rwK5 0dEc4pjV \IQsϽ1m{Q'%F;/cI}q]n?kMFXZBkR|"S< IR)S7 ey`#0ZUEi@ Q.v>;Ch>3f H xy_?8&htt=lg@-dQ 8#:NC@ Ѐr` RJC7tlɝK|Ͻ] HY0o0F xdZJ`U@lolcz=u¡ P~ϭɽa̜MȠ$XD<`8A@7J֒\6x!ެU8e x@9MD5g"3TO {fbb9`,mw0d}0V`(Kx )$^PZH).ƀ<SœajƊGH?E 0@Sh'h9~;y7/|)?fwvvvA/p'y7ojJ$J^šrЩCgTHBP^Q4fAP0$bjM -P4% Pg;Wx#p^03mNig=' oN f0 0PSnD)Ӓyb @9EMi۶1!f0M\`% H:Ya` E<.񼕦y9,*KE)EүPoz-=_yV[\|T*ͮ૬PU׃nAWN7uiwvn;.o#R@~>w#P?#AWl3pp8 npH}M=QE Pvx宕=緡SB0MӦOo7@m Tۼl3@8x8M1lspu \+^{ԖT"P* 2x`I'.P ? ' J)'`뻾tꗞ|6抝+3cڀ-Q$6`@ahdФE}].W9sU}@ O@a'`H@ͼ$.# {ԖHGEڢtYX5yD;", +!:*z+rscJ4A&[h0HP"beYffΐS^ Yd֛ˤI-SMA3ʂn(>HVo6j9((V~_ugggee]::&z'>>4H&g-:J%Hj!5Eoڴٺ:rJl'OB['|>л+pR+25M 0"iLX `Y9쳋,]}_7Hz^ U̔ U;{h)Ud|TF|`Dv 15bsol|&57v*uAqǃן A8cp8 XP@HamltZO[D{΅R,_N%*gZDa)GO+]vuN@)麶ǘ^k@308@8 X < 1s UyF?=i=D3b 9]BIe'vN X@U3JnV @Л yƏFɟ[?1 ?Qъ~_>pK̓F`!TV.>lG:@`@x~ڟ譙ʁX陛::\eVKMӪ*R)s9쩥E!   /X*N>ᵗ}{Fǖ>vw)x. P(cÀ JS{bqZ3.pkz*{' $VG f T6AПrʽklj¡\x/("@Ё< hGLH<a` 8Zd1#T]" TQ C&-LP9.gƜ9;xg.g%6Yߡ[[򓒇82i<kV7T>o켯i/H.؊UP@Ձ_%oy%_~' >Z@3;?N쟘 I7FQA s/&ED ^{hmj2>Xn_QǮR  _4M`4Q .뭇Da ,RH"Y55E~ԜЛz5\[FGFXU0)j )LwO=5wn''P[$Ǔ2z?sS3TCH#g7~ƲG4JI3DulUI{X4tykA)m`uf^?O7\ BDEo,P>J F'1={δ;/jVB{Ly@ף޶ߩTչꚋ IDATfM D=. 2E v*q jW`lÆͮ6'r>`&YAKGMeo$hlU!pp#X+.lvK|d!Vz$]6†'<R%.@@@ !]ID%f q~Qe(`} ſ.]Ytsd!# 8xЁO@f+?ߓ7?w~/p N<ĵk}ÇO*qcҟKk*("eh4蝏}= "qX1ȗ7޳-619ƠK=(ߧXy`eD&&BDyR 0<l(nCׁ_a\( [6o>lK2>okh,]vPR*>O$3DLXUaa F3˟RSw>72ft-<_vMR|>ieM̳DžB!]vƌhP( q_&K,;"pw_嗯I}4s#u[YX~ΏVewYP&P ټT?Q׵?_ؚ{w"x˖[ -C0|g,cڴy]]Nzgg@^yŢ ) Mf1sPP;)`fP QH8}}NCs؃OCEPv9ՈtBR BpBD"eAl{&/͎ΎZPY_=|dAII@.532Z7 :UܴPK=A\^/'jF7[2Tkii5 u?Hm߹O^xV~N4N2o`e|\!Z[g2UO-KfwO{F*h :HN$翛σYß?'?r M+F3\ohoo6_xamѴ5k`$S13Z@s~k~z-`n\p@"=0dXu ؏ ~ӧшNNO4x[qnY'ë`gƲR&8s8 -ɒ.¾7Je=@w4?G9"\^Kbd5T>LQ/)ğ*ݻKvEWK֟|z L"طr`>YrY #DE"\fl]iF2r`R;BH6ۣpRA?KqcrݰA5QqrN طA; 0[~@ 4&C44qt:T~~l3! KLrJ8һ^(T !s;w ñb u4wd]][l 1tDt l,yLꁓ=ͯ{y4j҂u(gL'b$NR Dq}Ugw{6JCXx}>2`Lڈ(+/\adžt(o X'N 1L.YV/)Q!8 @p<(]BKD`Y1|%Lh!M>P4]-4xf䎹 ?)d* _(C.+J ]4!~2{_漙| 2+1ȭF#bvZ7۶-[9^pL樣ZdWY/d\|œ(؇_{Җ0R^}0M0Ӧ;Ћ/Vpi6ݰ֬$3^MG]Q쨮7~#LGEEknb8jk>{Eiζm)TYl3-No_Aӹ a f!*ܱX$/f<cٍh=ΎϼC:30`4~4T٘I$+EL#Dnj!9L&ˈl"VJDSJ&(6E\".CQG=M!bx(?"9vaGta{|P##K3P0P˾iJ&5˼aZ?쮆UeJI U^-,44Q5[//}v>Hr0 L)N=:pۘFP\ ɱ)ї.'{z^klքԾ'ϟď Jax0+1#R~s X9=)ax=W6 nRuWʌi(_NY_%;؏lЙJ$Rp8?`>/&r:/=;ґ^eIH7=NB(ڿRe;iс@Z5"bHp X7*+_hp/L.}8,8ڲ 9,xόd;㮭[2*tzꆧ4RD1'H9iE,RlxU$gNV 14 Z@<|ܰ(=i;D4"eԷ@Tb$`NF <։tcʼn̶۬{@:f >P+o1g4Z_i|uTVo3~6ݻи7CW4zaa(l<#0:pRYX_%+m [YK_WS{pS\°NuXtQ _;^1k Mv^o*7@8izLND9^n[D;Zl|?1w9,7fxR:k/zט4@0'UsTNVϘW܆2\d]ë|2!0J)J"< 18P\L*`<˪ڱcG6{?Pl^ZQЁ93LA\D\,ܒB'xm}ƼҴoW(umѓB]@vw]ہCoU41)$'jcX +S*MV[ż0:-M<\6`@-PS2x<8ujm+ lJy L`ںY;w.bc"@ 5%[3l6h`3S`) 00 Tg-R7E;TrN.{mommvmWr ",=0 {c4M@{`}4Nn_ͻE@3htGlٵg}vrΖiK-G&x=+1@YT4>:21HA e@58~O{lkMloF8l_ \Z>!@x0DBx4/ϸ~Gu% X]l)d'+H9fw=N8JPr {ZbnEvJ\V\ͣ+㕷pwE|lo6%REݨ7OsF'~[ QjLaTL.PAίʒ5 (F ̌CVBZ*xۊZHZ[ZzdHR,XzR&eO0bYǟ˔.p'1b@Ga PyeRS3;| ̜RH/ԢE;{>_8Y/K&aN/nDBXw75zHR^{{qGgOq#>x船l:0;;|W~w®5o K^: wt^\Q=RwۘH#grMB'-SSj?kF9Ԝ)7 RqUX́6fFGVo-hdIaJX*?J~2Kt6!~qsgK MeE|~Ŋj[.4͡Ee9VЫ鍍͍hh`Ͼ)/*ma?&@BR2QnK *<}zc 0iBXFx K3g2!,bj >BHt9 l Azܧ:c+Gblj|{4}Hb/C! %l2WC瘶ʹ^/@$V}# 0Dl-JQ-7_ʼnQnkk9$Vz,tsPHOO zfe$U!<٥T@XlNv6ϟpu<":OR S@8<EڑˍJɤY4K" "~5+./_arԼyҶ몾>b>xd<&l 0R#N5,("1>懍B#AAb mM槴Q,ʴPY`˘})n{o1vK ڿK7 ՀL*ЦޞVCk覟[=|g,P6k= guʨkW>|/3߲`6ZР7 Kkjӗ~{׮]K "^ttMU_)M{&' jBX`;ʫK IK#ӜCyPQΖ@"jtwXK C}g=|cyi(%s%b,Ph7os|]Ѱ }ϗJ)u.|ӣ M)<Y5ch Puu/ ED BAױo_2l޼ӟ%KQ:@DŽǹRrq2k(Nh4zsv옟9$B!J?6vi0X i~:IǢ5kDW(ŎrCXVy,ʀXDY/9)d63JP=@'Q9Bt`BTt;Kb질(YS02Iʏ\ dLĎÕ}F~|?nwqF5L[3߷NMSRJ"(ayJ] 4 tM yRVT/e3_H47EYuեx-6(JZ\(]$4gTЬ͜86uD&iTzu+| \phN9!`1(p0p=ϭ{ZۛꃓXxTe3؛x"d;EUS؁Htànk6L g|~鉶DןFK+aӏ<}C3RZ*9D6 @9`?*S~wΖl!Лpg8'zv5S8YNP@%0 X |(f?E40㢰"F#T'?9 8* W c xmvrKRH(8B)V "glY&@C@宧vFQVtxzX{Ql$&>/\ ` &v (ؘԏoͽoIUaz! Lc0X1, RЁ:k sD`ov{VBH0YVUdo/ϗWZ9)S$M4;wB@(D EEfsv{ ''{C}447+O3DSAֽ*f[~2JthenpO?S[ug~Mfg-Z-]ᰦi}#g]fOh+!n-'.^lO&=xoj98(|W;t:柪ɐHXQL-ВyZL-Й49[^ʏ CP(Z[+4L&_5]o`Nͯ{_ӧca/9yCㅁ߽@YaDJAz`Hfh~fT(Euh47yc-}My#k]"SLt}e h1%4AՆ:E }(( * y==D.TAa+<~5AcQY;?kʈ0+dvtI~˥72uq}HbEK= +̆>Yhs}wOY)ïH/@& b mj+|GF lV&;>Z~>ufFeT-`lBo 4S 1CB $t5 `JZBBm dʌi}80$e9seg=yA$"ę u+eN`kڇ*^QQXrM Rzm9tF--%y[zz+pH "uuE16^ZMv1aժ\7 l{; * T #nq).: :P lN!*oYiiOZ0x5sP7꘏nNʀ0|< }:MMġ۲RXQ,)Uf&L8d|yM S<`/E^t``GW نQM/0yO2\|%}}yèerV)`ϛobcpkY{M@÷li0pp?1&;y80`/`)ppOHH Oe/o$q"vɈ?})6`h^7[Hދ!WdRYnPArVnן7 ؀s:d˶-T-$"u>NAqdzE.j>yִY6f?uT E'pv 4[spx>;j/*D.Cxl15h q-~#Sq}gVSbǝ;} YVѶTRU qO>_}iSk֬|.%:a/z'3Q1X%3*Ƥ?[Z=>@I ݷĜJyC첛,kTye…G>\*m"l"Im8;yN 餓L6o^%Mir "[oG:6NNq }LK@ư{Ѹ_Y&%e!v̇45)S"/ܑs%qRNDW @ sPYapu]+ϥ]G0|bfԢ\YҠp+u\'=Dƒ*W\of%oZgo1泥\2-os~O]Zl^ JIPk]ܑPŒmNߨDl^- Ph&Ѷ 1U,ǂν.8?}MuIg&,3s8_B;*: lIdHFUBYSp`HA*=2%%z5k6UUUe.2-׶*yrk߭K.84U]HG|j3ū+\ܳ,|FNvK1}65lV]:R,b$l㎻ߘlΨl`!ЀP_ =*}<'SiY']WNپZ 8e52G\Mz1ם,>|(ӈgHcekjsc{I`cb<#] Pe[5?袭[WwUgM<;мXp_ o!R4RyɳNgS»N\V^|6JED.:g~k[Id/Sb$}Mȇ*'l23.VǀO& oWCE.}ݠ.L$lo owܵͱXl޼Y6TVVzX)tt.TV:ͧbح.EozG{KsUud\C9ho@05㭭7qetLӴm{7(?>c?Kߋ?|YV>Z b_xϞ]⋟]qm.M}?&Q\Yl`R 7u̦瘛2эDO0/wŘӈ3D*u+0 Ѐ7r@Ql8ljt/* < \D"@MaYߡiZccuOOmm"}֬~ ~ysH"rP裦7s0SDJx^CJ]R` 3s~'QHJT#P\DD¶ۯ6uG"  A4Lf{!00ͧQ%TSĤImR!.q@;"ț28c ;Zȴy+ ]3Lɮ#:iZMS zcGgC( >;N Pfhc#+ #m~OpHG7LO4&mWms&ySeOgfNڹ3G^C 2!)%ږK(Ȓug?CD, p4&Z3|-J`,P`'G]2\ndW jnp\~+wWƧͧڈ.Or{ L'ѹf7/,2ND gNs:]m&хw DDPЃ?i7vpK/z^{5C`QiEEN/p!q㍿{;Wx=<#䒳 Cd2yZiI -o6wa{J!'~o)(~,zQJi[Ѵ+JD0",ͧ>b! 3Othٳm}J9 !?:W1,/memkڴDbu; u1/OƤ"ǻ4;u8zw3KYG C)%¢Gn╟ }d0K06g~I&\m,c-sg?_恗7o^7{/E@n!f˼WJ;$ղĪWt$L} R幓sW傘_PU duӄΠ%.-hDBp30$pOG-)#:Ғv)nKβe0.n""/N:O`@)!R?Oj:HH`sTm$|1*P<Й9/rÈ|adOkv'}RN焘Yq 끀'spq9.rO$ٶ6Ғ}]/(BBzSvwygjjJm-YR9n&0M T0S$P zՍDp3aiJ- ͪwUDuv&'N=++E55ᣎ[ݧ})ٵ{?5{0Yd jHjé2#4locb|8VfbYQ\RDqq䓋.}4}˴<ϕ #n<Ɠp~|7^Mxm lP˖ݳ}"ظT\\QT&:>X߷侵Y+!u%5&퇗&Բd0{zQޜ~~OPիW/ϟ%p/YO򣏞#x'g}2_.n-I?VP cl@Bj/Jiެi&MR[vH7ʫj0⮻y+0HykEJ-J!"RƔ hڭ1UJh4e:suPjrusU(tU,vH@ p7 d+ cYp/m4J,sLmL$,Zxhؕ/뻁|!9NQ9s9PW qx3'0`!@90$|0 |714 Ú4f4=$ׅ0?-J8G' ۇ ptٱeP:Z;[K>*9S\64.L)W\0tMw=ZƊ-=t.Pn|ҍHA%Foz@0԰ʿǁ*3^1P4zUЅJ* l.\2k"0[JEN8wa#qNq[]p s=LUFd=ֿ?;νKf#L$Vq }W}xM JQ~EBvH/W}Fqґޞ:;4ʹ`օvMF RV]~{{ꃆ>цO)--&[ӴPjkig=AHfx.[|˲޳kDai)ض-bEG[ ϝXD>3{.4Yғҗ`!0@n&Jg68q$3WU/_y뭟:Ѩ~\[[V'yP8"J?)M۹nt턁HC=YALֈ:RO>>8~wJкu]='<[D𷙡E^z=[ AWx3ycҥqֻ=E`Df*MdWD\J&jBO>I9.`B DV!J5B/u{{E;;ŋ3'Pe#eޖ,| :ȘDQx tdRYߍ>^z3"Du賏N?3 ҧ 4CәY U,,~isze]iGشiޢ}V>^OqG1N 7|̇q740*ڵRj4k ? w.XpmEvno@pݺL&C`a뺖e7UVmvg2a$@ IDAT=읧ru"qƸp.A󟟗fKJJv7O>8N RHx~ʔSsffQRA51(NF_w==N / dmYy?e)%?`&UW.@?`=>`[O`Twu4MO$8׵=JlDbΟ4w x {XeWOyX/bxxIڲ1 wT3~O6$ qmZRL.v)0{<*}+|&8:)[zު*۴sn2diȷQD l@:ЇM@0P  &? )>H`(He[ 07eF2>pA9XdЄ2\ 0x# ~ۖo; >! E>/ ,y7:MXȺԫ)#jP"聶R;3X:lDs[I#+fyihiYw'p0m>BY-=,V [XI`Dnrh>4fΑs:zm32}JȧaA0ݞZv^o|)%o<ƅ)5ۦ];VaY9fgcW/<-M?>adsu=cԫz=Zúiޕ[[׮BHɓgzks,K&Aqx!v둲nFv e`S#0%Ůu};./"$sW@וmu穧g ׄ}deLw?#a4IB;b"l[c[٨q XiMde+c߮~禳g?8c{] ;:ǖ%dn}~phh)w{ ѹ]R"ø 0`n~8~^ĥ\8W:;{kQ\v-- 75GxE @Guu!˴ԩe;j*Bu稱~㍍-ۖRP7P|O!hk?⅝smJ5k~5tMϲ4"!]'5~s1Rʧ~YquV:KRJFC1`[1Z-]d@7s?8oYӚs/2BhUU;Z[|BRqMc㯫K:;_fo"t 5 6s8+HFf8fR Gt=k_q6nUnN&#^)c<4_-L2s Q440𳆆5"RjWM cd \xeD%ڇ ~f?^zCt=\XP^kuYs.[G۾1lVUuϥ\ |a8C׿P*ϼtBq/m{Ey=wkne⽕:9XlAo%hq \h` ](87|O'^Vh~WvQ@oǒ&Q"I)/!^t2?'w {m9Ȍl}O㾏d FQ\N!&]h0+@p!4=l|hTP nBM(qFS{V 9A}`pg{P :ia գ*-g! U* jt~G=O b0HeZͻ[7mͮrR@h1MP\ʘ '23)J5WCfw2M"BC^9%ZBD| š5*W ݴLA.CZ({HiϦqu3d~qiqjpsSc[fGR$Į0aU6Biyp shw*n|aqiT4k[}H"(ۥNpd]w݇Nejia( ]Cђ\_TTDDAe2w-hC K^K7%̮T'|_WBH_m۱n=<aU۬M:D #dFE E#[#bh 3V~G5 ZACRjA4ޛ[ӟ`5- _ՠGxu`Ѡ6l4 lU3L8ƲeeNw]mK_&7CG){ )' qS?.&d;eBo2җ,@ a`C9lnϬ*:T2S Ӫ"mOtboooo]c۶KH4?,njI)Q\9ᄢ'ٹ3ݛ˴sxܱ s8lU( y. s6QY*?Z]啭o^ij|]` YQQF__X卙VhcL e)N 3OĄRX .%uv_.t7{.Я: myJ?lTZg~8f.#T]>z ;#4MruBg.V7SnSg]lucc$(^TP [a֓Js5f%mXڴ'_Hgۊ娮L=:A(Jݕ {Da##Pj's08c5?iZ߽bŝX\.F/~Wr9 `p3 L1M'oHYhBHЀees|Lf^}TPWYo"\۸9 *&]˪q.b H4TT4hZE2yq(/[. 9,ϫZqHdfؼtj3d!t|DR>Q *p2Jtg8<+9j]50xvrmL{&sR6W.Ni! 1!?RH0⒆Csy=&!p8ƍ|yT~g1p g2@!0Hb;r)2+ٺJ 4 BD-sĈW4LY96n2/U~P4Oz^' &h:}tv5DtɿIBdb8/:(lF9w"M P#`%B&OBI?Ǿ؀UiYV׫ A_Y~_#ӣUbp3j-|!T`.⃊<276 f @P<ޏ1PP񖰾e9{h=#cxA6銔\ kzo_}]>cl'_=ʋk'ڦ=%Ν*+KȺ|bpb$7<꨾/=^oEy3/4GOlym.,)Se&C^{xR&qUws-suْ-ۀM1%B1HtL P HbLI 0`bp7.,443s?$ Cw}}*suh/Lt7i@0" .R۶=u=ϛw3ϼn?RfXDm/9D?XU5̟_o2 )' a2v7s4-]r*>TYMP(8MQ(eleL3=̙ygc~TlfY`.RJ| lsf MĀ@Xؿ2fS˅0\)D! 3˘  @Ƥtqp:C ~8 KY%et=^Ss;5qe|l"4f6i 2,QN @1eRƿ˾Wpl)@/{PQƔzq. +(>\oLך{IebghC4h:.\iO,:rؾ|r7I~1I4>|r -zI+c|!Ta y@ >ீ+eHyN31rk{bQu.!u799V錕3 }xx-AO43H1"Py3=VŌRO_"$>WqltrFzW3 06񡏭kt tBu?qV#W}:Jg[,H)aw=q78 G)h05{*uw}@DߪB_!䈋0u;g}g ?T*?|opMxlå[B%{ƧIBh4iGy䣏>Zz^k@;4a``ٶm c>< F>'Q"ラ=rpE!|bo9 4n4 ّHE`UW4Z(4M[8eRGpbܱN02+~'Qࡑ* ?lդ8z5a;"83 p3*[tzrGtv@`h,4H4a,}75Z4\g҄IFw{ qܕ ^(1Xߘrʏ/c+c}QK$|?[QAC\{j`AdH:\w- Zd [|œ }9Nq4¾rjkxg8"`IFiKٹ V ]J;kkDZx8;''׮]X1GyӗHAZ:Ǘ&:)Y]](v y?k\UUc>˔z;3>uQ_͆G6JQTjLm,ƊoyBL|2͐:41;GSNLHBn4jýW?e/r]_U6Y ?ܙ Ճʵ[K7_XWk"=d` Dpj  O\p^"r|w[C fҖrYCCbSW~G?PBę3b554z22؀Mkliq|rPԛ(sh1XĚ5]ͳ0gdlN=ZGfi/OO7 IDAT[gl4Vz{k?F4ɲ8YD?N*80Dr^+/I0U(G2oc~dlR!{N3;@}i^=v]wOƲ`l"OFCL&-R`>SCյ="3Llq6tfUYXamTeYk"zZ ΘbڐwF' )2Όjc`@Q#/| }[(/}!y ge )$L|zI;dfF%P0/3&V5#T26doDѬeafn&׻ xf,.^}')*R;8J49,AO43b ,Y\\lj&cLd۳mAovp3= x<^RR}O/|xw憢!Dd^,Rl׆fhz.=ɍ +VX#E:LBoֿU|5 3+M9v.Ɔ߼c9뺁/ohh(By륥{^S#\YsZZV\wݪ;|s43g7oR'{w4!Y/{9Rc,trly89\sĊB=> 8abUNM[>Mj.GMUfL#QkkY凾K5[-cBt 纫-;'7Tl+ij򼍟iʽٟ(CB DLL?mC= ࿜3C#3o X'{Y5k^BbQ u;D!(lܮۄ(u}G3!B5^@ D( K@ XٲfG򗿜s9=ٳ{%͎啖\裏;:ưØ yO= ϔ,Z5לg& 1Ȓ 566XoNs-BR|_ym]Hmm]{{Qgصb]3Ř6zb,c@2 .`mn݅P&*D'%DRøFJN 7[KKWܓJ]aY߷m-. 8ؑB%0%+4E xȗaƃ5:錱|wޫ(D#q1U|X r4h4 6Zƺ_-;w!IGBAm9&$Qeee7]w7۷7 v(03YQu1d]Cf$R*'rc`a3+**nc5ni#nְ L)v*.bqԉ_׋-?<(:꨽m/?t \~^J.zɓNH==\so~<~CToP`DrzLFo]@KؚyÂDw>uG^?礔6B*lB!mKod=l߶Ye'j3<{Lz ,/s:x汵ݶ[lt 'W^ ޽E'y4x|RЈN:[?8L$f*r"7=f8嗫aۿm޸LFp8gHoMc\ס6>kt>6ݾm^4 5MK&)S<+e<b}*֬3p8#>$Ҡ>I)zHr$/dj".h`@(Mq{XX$/g 5cqƠiiB W]_4yą 5\]wlҴ_2v c\inO&̉Ч^k55WmY!33.b'јʯ* eyc~h}(NۆBG e2-ٸЕr1JN+b;iYmkP灵$ 0 (~y-ȵ]Z&CjL''ϘRV* #qUg[6Ƙxpaf!ٺ"p,`Cc#$U;^WFΈD`8'g={ʬdq;'1&NW;ݱb FeA8#@ǀ0 "ր$CS;AViZc]cצ.jL/Q_[_.K047KM5뚟>!;V)% O,޾ގ}OV2Qi^~ŧnOh=~ժf:1W3]&Qp0Hȼ$dEC~ NܔjUf&>"dZG ׼=$ T>WJx%p m?ógzcuD" Z.ÑG=`)Eم ss6Md\Ecq_ߟm6k *>`m>/.--='LX1y`hHb82o=x<D6Ѳe{H$ 5ădmBqW 뇔pʏGyi5wѾ+beMYd HlMo!.WjCօKq7ܱ%OUc}&C4g2n#YoCȳHV$rwI moWEޜym#/߹}UZ:?X3vEnN!X^V= M$uj no i9?2*4junqN(-'5tHюu?*~ݨ ȋFF̙sǺutd<]FlB]V[[Ed"=VWe<R=YuߊJ رPfB]FE46TOD{Gko'W\rnwٶ`\V$vgͺhTH;'CSd`&d; (Z@*ά =@ اN[gYH .#j2T4$ȈBF$:Hb|p ""rU `v#IJ^]pbĊvRdʋ6-2KC" %BT54A)r TR|x|WV%S)sOvX̷L_."ӰgM+1*3r, rIFϥ"!CXsmuuݼj˗؄ÁڟscݓEccM8yt*@>8m͝{֪U7[]G<=Bd> 9`OϥWp@RҶx9swex.%K|{,4҉˰vERCĔR 55|qu|G%DJ^x<׬YPΟ8SC!z{RVrn)$Ix-vuUDO?ްaQ+0utpinf J) 8pׁ'[t22870 hIWWW8κkkYoe-=pXXD:NL[xmO%Tu[~)/?9L:?r10ڱep"p M;Ra xe@'Ra:M[%@D8 (bLf] ,iXM6/~c;+*f+zT~iRڑH9|ow_ns׿p˖x>"Q/#ާ(\mTF̃A VFe&@HѲ|81*B -x^-^eҬ3 eںڰ5mf2#O;M+߱*,"hc;/7@|+'v;Jͨ9V f6 @G:IQ$Pm\wܳ^⼝E\DH/p?T* bŌN?U*J:'׼5XJS<8i3AuAw/?'M4iҤ~x|^^X7f&g0N9Ebꬳj?vEƱ(8TS,,#tcm^xLSSgU{ō75+UQ)!*sWyScY6qQ10S]Q4%o[*O(h7vc)+VS@2̵|4y+S1ƟzFY E]㏟x{G<؈0!Բ|_G c'< c2 dCxLgqhn1!>qŊ ^J-LLƊHr^oOp-f̷ IDATʀCP:P ܱJM ~a lƶ2%øGr2딺-HHAy08**]v/Wt@~ R <4Mkni,G(# a!2;wU>Q^vy n[/O36Z6NBq(. ,<5p 0Jm2zYt&꺦 x4p~8> 1YƲr?3͝{|c0 H OKYhBmJJ@6BKPd",aA?e~)dAwA ~=㶪YUe%e+;ӝH; b%\5tn(ơ b HTjXp$\}zuCeC?Dy|4 !6:Ul`A%ׁb@ 6xzPQefS&'slEHEK@%f_x˃H2e=c7>VJ]7紐L{c+"ͺY jOIup*1Y,?GKŧ_:M3Dypg ׁ"ER@xObxdO <lc;y?O+R+|0);0 ҉Ř*SS_x͂jKMvwyoSZFq<u͛7W_݋25708kE2R^)"2?ȸǦrmZe{ŌZZ^Y`Yyyw,_tq~X| X)c0ׁ?t]wr^fN=so@hH~ϻ8C5y͇6(kj16"i^`pߢi9\LX'x|̘VTjYJ1&Gna'׬i~Fֽ>50p? ˜t%ÒV y^lT[ASn&F"C]LMz4hS̏oէvmaCrs J)dNΑi(@D`0~.N2Ύ7@[CCCs̙?!_]O>7>c,8NvOoPmIhQCC_RHsO,KLj!sH(`=1Ld͚ZWWaTH3@ GXQdBR*PP q6U]ҍVd颗TQeG&Zrfs #C3shVey~&tʷ4>nDsI-[vO4:x,q(K \$ˍ- zz^xU"`3ϬRc;v"zgc6~A o!WMmb5k +P!0I}ޛ7_)qBlH&_$x]im]aCxjc Π I{큳vZЧV$h44Tuj'&UHeIeex/px;e3+i>/)j{f \5=w?lY5MNuG2dZ&L$ìeb5l}}"j50hܯK2/%vO 50rA!8Xe#sn$jD-c,`ՎW)zcc'˂#Bhx٥C+M;Z 84<xsw[*M+Fט뭯ZqWi@D\fg43ƥ݅1Ӄ҉R"l?A5zoԌ;Gz1RW'xSC*|0m HP&2=zj0d{ovڙ HiܶK3S|e}pex+%]aF4\0ּs^{[:VMQz+EvҲ=li2ۦ|-.74'ؙ=0%m͚qnYY(CPB|&/^r%O??r555L&o#F"f6kAkP5~ 7XWjռ@DL7}&;|~f`.N"PrHJh'4-dGKYs6= McFzmU*~i*3\P8Y3NL&zz* :"Jd$2%q"H\3[[,uDe@(l$!$^u͜aY3gԩF˚Q(16}teR:γ`n/9.^-[lP\K.ղe?%25M,tDk ؾDD uƔR閕d ~"eEӦ2M\@4U L+7ow~c?\!;wT+{3=\xTJ˚9#R/w-[64=#nm`0/F 0Ռk#XČ|Y5f$[1kR(`!ISV:T/dF ߬7仾t|#r3x`Ti2JRezC 0/U^{Q(E5k6n(QR`PJqb$=+dx-i2t}unF"6=Ovǜn/j( 0v/ +04XA!c!K$O4b}K+gWZ_TBBa71@#+84rM,`4szybĉa3jv&_8GJOVȀЊ|!Q>mJ@r203FcE?|;? 0y߻ox E,\p"" :UW]u\qǽ{AdQEEr׮ B!A©c;ݩ?rc.hm{}4R,f1S<)e Vo-RjM:DT]ao8EmA4@Fݙ4D?Ou55lTowK>2Rw^]xS N1*A*!D7UWWi'ǰ1efGojHaIj:v=//RJ;[iXfhN}4Cȉ R^ ""MRzHV؎]݋&3fΜ8wg+-416 5[I8oh4!HdCXz%*L5zӬ92Թs|sObPQٓ$ɞGUժֽ"QAm]Z|w*.VKҺ" ;Bg&I2YqRg/+29sy繟oRb~XO' '@Cß!eʺ,_+i]XJ(FNG^~|X8r`S]p8V9y'+L-==|X:~5T>Ś?f7OfyE&K Z`;ش/|W#Cfg-[v틽(-AN6~.NTjG#+VlմW돁Rg UU3Ĉ & lذcsu1VPQo&[ B ׫= m?.]g_94Q3PRٷ/Px,chiBo,i̥d"(-Tه SY$~ǎyiZ`Z+> "=_&q"Y߰m^9U0H[[ӎ訨:Q©>~gMv,[+~0 錧byF]eVRRCÚn[߮0"/ ӟnW_}Zʾx<?ӏf}4F{ %-b@Jaa?/0} x qz P/29 vq~@ӂ5z mݺSQ̋D~ #Mu!bm.RsM!nYTJI&35;.{YFf^ow^^A8K$2.D[] NڳgO2 cc@7c& :? CY졃'kD1FdfTi3w"^xDU_4qbՎ.HUۅj zWF[w 91)kW4w&(RRNob,ƘeYv DmE/N07wuoY38O}cO P[۴S?ظ34/{_O{m;`ZEt>)[8 lnLKflaDh1`4HZZUc2<X_x{ĞqͩpL,i?j6DU;1:1 t{<36gH~aXlWW>RR6;>QTf粃/ 22q΋ mA0.K{޸g ;ڜιs'fwsz՜qC^$ 7pؖ<*Gi)f%-WE>KB)$zp<Y>nB%%`A8t SZisEXw;o}&sd92eSBN4][@-OӮ]I >7_y5c֗/ 8xc@)ka E6d2Bwh_dɆ 6lO(u(?sP_UVV{{S; er"==^E9*]& "pn[VCC )Dhh`%%;:;,UՑ6#3LYfn{{(d0MJ&'g܊Sܜ3!̦(]+tɝ /PTW}8pqDp(<9勖Oyq-C*SU)s-+-e`'`,s3cƔNeE,=*+Moe]Fԕt/X0nڐز<}P]C' R.TWy =odyZAsRO*7P )"s⇾aPGQwh'g_|!8;ㅿ@Q]ow\kiBт+/r aWjW\?iR*peX^S@Oe MjNߑ9*%fWpN)t ffV+Y>Di1sM73L8{) hn3ˊ`u驔gVzaO} ϰxOFsWTW%ς)"5ݢn-r396aUQY)ihgsYYԩUw"RJM`ڐ$IۦrnkAmPE=Lk[KM@HiμɅΝ1~g*t#/8a޽lyW]i' oI*܈/#u t#mﺶ`.}P("mm]KsF̽Lp*5Vꞎ7XCC̯h 5ǙWHyamY=a92>}c+W3B묳qͅE72{Sm:A$T W1c믿~i_;\wuwqǫ:g_4o]êp3LKs>v_ 67=f6uMR[N;,;;crh:0උBa8|1ƲbӅcFK3O–j(kˊ54i7gR-B p)DPa1Gp)ʕs.\m,HT`;0(M3Ig|pvuDpN,MTudmȃf2o۞4f2:PpKLp{26FkdHCv4`*N| qf0LcdI䋆*/T8ū=k' |gNf,ハBHW+9n•DӏnFR+FHڲ{K6c!9S#i969;/>@p{ GuwӾGN,Ȩ(_9_aUkLcttzQ S5li!Vlr]wI3> 4Ol֜9~puXJW<X;,*:*@ܝ7o"LZt:ଳ<Y] 9Iͷ sɤ!DN1hnΓ;Z--qc=WUkw[ߪ|iKU6(JgJW7 2c75STYJue 뵩ءάzKJpi 8vC2d`k` 2E|re'aanoR0nƼXcERE +:p`mo^,&0mO,UU#Hċ$t']H pA{ 2j qp)}YM(qjn 2d6pZlW>ՌC9c?fMg2ԩ7Lw*qàG^3=;I%0YqKRŰD()'-춀f0#|BxԴHG.YHo*իf{M`X݀!L6I_PЦT`+b0/zuPe`@^(++V Y҃1m& 7DJZ}\>ݙߺSbƬJfϧٹ}vo=!:_ S.gʔ*B;[_2ڒ9H:ܹ/Lfۈ\rO$2 @XDOdLOEr\IV';@e"PtSQx]:}g;mcsiyimկuppg4覶\hQZsd4a&l[f m̰ dR1D^{m֬YW_4ֶΦMnj~;q@Ü9s~g}Nk|ɣi7+=,.YJ}!ND◕oܸOLBO̙s& vA\&b@aL0.ca?b$r94;ﱬl (2 0Op~W(t7xŴAV2Ũ~.zs#;W9 BDin2;诨āMnͽW!gW5:10@ h A`@aeY4*jj5]~W0/hJXd 0p[āİa*S\Q[w6$ qF$e߁}bY YPNS!$D"4ʗ]r^_zzMNmm3V=>:J&KY'&8SlK%Du}Vګ~vr Ӵ,8܄<7) S-Ǘfq3cRZ@*:JŖdE36mi>E  LX֞`RU].m?V{2S^U8؇yF"?EqIiṗ< =xAEp9%F~6]pٍ7.oTQM#/ Y6v "3̽OIq6@ R>}~ &M]AA-BSjOxeej-@"nb\\oaѐdYc+ݴ,dD1op6-=nO<۷$AaY]{+^Ƚi>m0畷^eA!1bO˜+SFYh8gfS t:8kۛ4")~uKsvovoߗW_vbJtuwvf ¶mmN˴kaE:G@0ƺ"ey>phO'z=[A`U =>B>$%ӬǤf<=?q*r'>߸x<&򒠽`,QD iδaRIHrMg[׼Z*dO3<72/r-k֬9C<뮻ne}]=퍴epD^W}SO|vZs}Ĉg7>e q?u:8MU((IU}:F4 Ps^Um'=ݚc'*,gOi P lO]3-O}b]8z4hADkdL2t{7bBqe\%I q9;r;ah̝y3L#zhSuDiЉJŌ3ZZnDXcO%==.ܚ6S@:edyX(d'7vmXЀ82g̮>/D6oߝLj`pa $"[NY!ҹ# ?xʍhH"M\cX2i{zY@r͟~Sӑ1L5-@$ɍMvIB/IY{}9eE E/?@߸CXlov4_ZO )f#V(F(!-egeDzԤ*%e} =`c_ʆu B@ ,94dnonwP0$D#eZϾ|6}@Îx%Olڵi })Dmv\Z|\g6Q T6^mrW3V)y9qũȾ\1+}sR+@K}j`V`=0ʻ _Ĺ`W*ɍwZS?ԊH %rn f7n܌3:R~<[#0._Jm۶mٵg\rUFaK!]ȸB8~1Z:'a77oNrꚫ#U%nƸ?,/xPHTaimyMUKJ3yR8-%#]шoqKJX Nop6^;N?b2Ow8ZZ̼THɄ0u}oee͹((0^Xd͘FӖB~nᚶ5/})SBPA\SK|eI-ٗ4jĶRp?Ap~ rbםug&kο<xp}^~ySIIP DHT bRd'ntX)th{h%{uqdB6=!; ՀZz;JcuqSS2`cL|ek İ\<۶wQgh0R;y3g^ziq2/azK~y645gTw`<0rš>!TҶ9`q#v3CTT$D"]b2DZc Hg3FRiD-_~$^CCݧT;󧈢Ls%f5*;4u dh^AD`c\wxCjY x.k% 35z.;wɲE&L6c=@f`pZ2DGn>Labjs;+j&+,g+)<*o,mqY'՚k1UO*}2v[r䄞J:t|j㿴![r…_=1sdaժUs}7O<ģ(CT*uwDACll2XP?ьq"ݽ\rstv!z0a^PצoUPm%v)]R^kDN!>p~(~/9x(QUi)R^L. D[88zI)SnfY(L ŀ_ӥrrd0RMӭi~AoƌݳTj-a ƖfjHZr흥Ʀ+BTղBDuO0αiOx N d}{au>xUCD0"zcHE2.{`o~~vaaPU--wmc6JkomIy ^"IU[*w>Se|})d~.+H!2 YR,qr@UvJS5M$ :Q@`ak%Y\3aNi27SAdӴ s:FfGM&b`&2Z5P3f@sP ˲ZZZu֪V1V=:e(q%;NDt:UUXVn0كgמs\ͫݪJ>+JQcH|D;-fU{{Ǟ= zzL ~uYo]|>|&!TE=/[ŊN(-u) 򓟔OP0'CrSeBq|G<)J|Pme NqLժ*Ι3gTpvjˎ}rB:SIf5~rB}\!^oqIɻ'AL_`LN4K00.L;\QfHB[iQReY tg.j–5k+z4|+U@<0nDVgC:=]=}1 M ߥ F::>Q<6eYzϼlj'~NG$rq5>F'SJ--Ze?ҙ6|df b@Jux' ܔ<Ȭh{G?{UU׿YSI4Qm7Js<ʰbŊ_o 'p4x]pY:Pu2]߾{wy:؁bop:HIpg21 az#Ev_T4.}/i-噌1)o #pܗ<,eLeL(J}eRU eT0=&<1 zX<dvW+)g[Vitwo8>UD`f2Ky=~!.T3m+z)=ȉ&28yyW=0 xg>ߝz4ٜRdՐ$c 0]#p 45$i,ow{ccBU?=ǫ}h#44߳bYGqfOfyϾQDToY"s9K2KX@7 I ^ zUFpn+R+)`ԴZ0 /HBj1 4M}4֭[εk{Z]Gơ´EyaւP[7?9)yER&I4G4R_QsFqs/Pَ{|Aq&O. IDATܵABR]\LެWxJOzʑmlp*WiTղ,5=;(66XJI#0-XTj;cBSn%4H}*cҺnhTeJ cLJ-C)~\QgjW\riΘC+Yޱ.ڑbezY}Qy-#BD;݁\),n1ifJsOi?( c F;xL,_J65-NTW^_fVv >L8OsNiή-ΰ ={6VLzk% 2̘1.6)KKK=>4BcʇfvyG#ќc G9r|yx\ňy}uH ^ؿwZ1世wN|.@UT3&z+3oTq'9e 7PbVm+<@9tK^Ɲ ^6no-ktYȆ.Z h١C ~9'}0r_2o>;:.Ϯ7jYv(ë/pW).2:xo#Y9p}9<=% 2`5 $4CGDөsl; .O9'ZYII|lLԺvx盜^yEK)SѲe뮷~?!Q`07hcn 뿔οWG"l"++*ʴn)D,cR)7 L[`eW]uO.31! ZV/8/4HjZ > {t؎J,^)s Yy)?߽rUGn4u1v 0Xp rŊ 1h6VB?ʕ۬4aӬp2uuYYX0xY*ui^d[)SUp[LNfBJ ت99=`}aߣFIIۭf\MB 0 4?ܹ᷾xEy:}$󩕕%'d2Ln!eO3F&uE23JšVJIpc &)lHsYЙTC5R|ǧ;$e-*K+7~/Ն7f7oޤIwCQ@3a 7Gsj Ezîg̛;0d2 9Elɇ]:@)F| O>J]y4ƌ!"׫RU`׈5R!0ȯqYƦc#G=l"r;vݻ=Ev?xՕ^/WUYXHW^Ų˱truϧVӴwo˒%Óɛ8')S8b3g޿p᪃>&3iiK9{7+@"rJ͓Uba[[8W!D ߽⻗/kLqGLGۣJl3-zi}v $UpNڛs4\u#w/6blapNaa ,f֦Mرӻ`aeiuLKt٭h<O=;X{S뛺20R>>[>*cj6Ϗ};Z3H%UO[6Sd*%܌A,ehSQ\T"$ i=Vg-FcWr),+aQ:6Ms۶ViT+V,4)?,[a I]Κs.ZpA$jk'\[ E?[)i S:AI`DSVxV֚5>;͎ kЯ|Y0UEUݒNV8O6廴d~k>Q7kD퀻yj@bu28W5\Q]0-Š8.ޱ#mz(q1bL@!(p|NI]VXԜ9rrr~eݍRNwdX`Avw:L&s8! {(?];Z1)_?lڝUUT*,!NQv1G|噌uB8@vM IT-D/cX(躮m.PH#Ubrnڀ>]];(/2y%U9S;LV"p8t(JB|}D9@`K9Mc!e=cb12a8`q=e,ӓ*Ѵ@QѥԽ$F=`>]ieg?BTݝQU'CU-& Bo|/LOf6EH Sb@;iAxSn. or̙l`"AдXIWcutFs:vߒNCr #cbc`7D!W^L6홗lKd R"ш,n}]Kzj~aʸÈyB ׉1blinrBzDzӻ{{\=no]l慡ŽH 2DK̜3pZsqjtOl/lO΀LE_[`}d6XKq+ՑRr6XI1)$ 1| lT``^@P$ɫ,8DFP3J-rQv)wL=s-XƏ708ۇ>hK H3N5k֘1cfΜ.p(𵌆Ckg8ϻ)@B(b׆6$ 04Mz8~L%ɡ $sqy-|3gڃIs~aak*UjY. $3Sq%;8;+80n0[@]aaq@Dz7>;60r$c{ N;@ p렐t+޾tiKQeAz9_IKI8άH&Nzmp= }c[qmW~x<̊g6mΘ $Ej^"W4t1OIzAq hWW^i֎痸S{E+\|]r9"ؒ%%YYU|Υ\xZ3%G K\?BO֦n%%HUTNz M ٬d .:[+6t(%jYfC~mq@H )%0A. sK k^udc߫bp0k-x՜.ظ={ԴHaaId1/t\͖l.sׁ2L&6N͘t:B1EQX"t)g(JvmmYcciFšC"I?S_(-QU9w;K2$3Y -.UZ` w*"(VEj~"EŰd!d%d{qaD|8fΝ{y<] [ zoRz(A!V QCSYCTƏ(}҇C~{fXT(}_ ;vEq^MM/Xf;vciT2/>#]FF aK^ (DS$,ᆟ>9p#YTUt,jF/^hkꖶ4Ri}\s #;]e$ſx<iT1ZW Lh0TCky'k dD}Geg83OE!!dC}H\#,l:EA W; P*{,4Cpzjz8;>1, xQhE@\0DG4q4E'v#_fҼO\;H ]v{YIY k9uhU?sB{,[oVf DOx*mVUUظB1](Ahj^2%iݠ0ljRβG|ثtU3"]\'O/N'O;T}0(쥜?|?Dq$D=: 32ɎdžLǧr_|1a3dݯ9o}oO9[zAޛˢ 4ށPD [9آ{o!H2ޤ )V"pŖ\_j<&37?YA@]G9Ր j͑ul$s+SmiQr|ۭT衻{΂X@'KY*dYVsvf*]!CE|dUUlٺ$Q)mmHߍ9Bb'74M6.)ºXzttQR"$(_EtgBt4ZCʄq>>4GИAۭO2aQ~7k\r?XX: Rl; Wk}qIA@]UEDDю'5|„CINUL2Ĥ4Yrzo>;tRP(X,G)섐zCGۣQÎTc8;xMMmg_{c{޽{ϩ h_i+w/|FcsML)"2߳gO꟟s9?֮]kXN'GVVVj${="S΀aYl6X`8&c$ʔ;8*6wRs !\\ƞ|%#KTQ8.sRWnm'r}(8,Dl8L]g@@#@=@9!c8.;m|ln68x0 .[})s1nhdbk4*ePX?D Jebj;tZ6;Y [Q:ƍ:aByי={ʕXq(罄X Jyeecdž2GyK#=MK0v\O+@]yQ7域]6d6a!A@:EiH0&u^/ϝo ? Hd\-U BTw:Ctt oǫ  Q$|Iix}ޘ !؉ 5#X,پ||a4$&3|;k^}[6e:SNR)In3+#I=cfC9ۭh8 ', Xʚʽ채 šE @܄RN2 !q!HQ<0Fᦢ"yrdt;S78p. #iM/֪^x텗Yu.X=#}3$I2zD,++SU5x$\rɿh8?}hhHH(YrKTr:ig_rU_~M=mM5Ԓa1;B͕D`ʔڻtr]P966&=E#xTc+z`ArUX86 YBwgP9p==8!R.@[EEQ*֐,;Ҡ3Ql̘~_[,s jjvpr96ƷW6 1yy]cvⱢr?4 TQ1oYC;뇏{Ak)=u4-fXC2d!,`ڡwoz&5СC lئCQasGnvo' : B5vI@A JU*[hRt H uiȑOnz2(% ˖3vK~(;i"9P<i9lI/]c 6jjJwյģ6rlg{148JWgy1k.1Bkuu V;p F +]!⨊\4IL%.=} 0])SF\.'LH>==J ¶!CI CJC="r@xj?ޗt+JXknBAU?P Nm 1KC]ePJP(iS0k-DQt rP` uLlٲEӴ_|7߼rssCGp8<7uCC?~/^ kNd<ǐCqwnV䜛!D~]w!Jfdo ЊX`jx|Wn Ӧcc F.\KErohf{q{8_w`OO =X,wMWM+l2|+@uD@xyhՔ>9yZb(Fĉwmm6[iNU-!9kejZڔ)?"Cǜpk}sUU.**ϧ55jkN{@ ysc<~%F_ IDATg״q~+!96-//`l/>+|m&!cذF0+Mzճ&Nk8+81 ̄Ef-b^d7WO}= )q"ߨU.?Q=JDcuRK@hXZ\qG]؆( LL:i#Ap"VjNJhY#/'(!98bu;2O+*mv5nj^̈1#jIyxAUU5MS%)O0nx#^8In( Y60hHbME鉾UǪ`ftG$}NX d@"[eQ0 m* +̇ 9t3)=1`1dYNm8s93 45W[ -It1Mʚ[IIɪe?_xwRR!/R@>Ī[WG)\4,F;4scwnIA0N;YE>Eգcj}Gz^Zֲ} |>٘jRmmS̙ni(,iB#/'?z,l`γο;M=Α @+x(w}~B`}T>^4c c{G&{iB7"\nx">iڵ|-IHj ڱ3 [|K5}O.*(aƘ Ymra3$)^a}{Oe6*8ׄ"ٞ(}^XBt5?&wV7`m ̝*#";pp;Q*%o{I$+UT{X% gyD36z1GcsO2I!Br GZ,+|X,H>zG(TAEB8)dsa 7@z+ċƙ/s%FLK-~bj1[t̒=;Zno} 4bI󛎤/HCu^z?QFW^yRj2ԩS<'馛233 p o2?.+ի-1I)6`ҲñX'T:.Bsr:.臷PvvvJzG~ }@mݵ{o<%h!_Èyqc]ZQ\g񱌵zQ(;Q3c"x1dy%[ZƂ>ߊXLmX.[qAEuȘ r- ]φB_5y? x-`w+7R:n$c::^q=rñ5F"aYn}YYYe ,=.K}EF]t9&'@P n"n=z(;;ޭ *XLS%)O6{r^V7i!CedwNkKPB0I[nKtE| Bb$!(8!֗h!fp'`1OiRHM$_4 'YRjy/S'NN.ms'Nݧe$0$ qfDmSoKj_~@~5FpR$(x|YC7KY0-*DXviWkb;n-+O?薳,,@$HL OUd` !Oː Q:VswnI _rȑ#gΜݚ8 4GǬfmyS;kАG/sYuḾs(//=9o5[-٥`TWrIMS gF>oaQ}LgF Tqɗ)-?tv~D)C++k&Od<)0:F46Z P(*ȑ#ۆ o/ K,`(:G՗ݦv:fpH^s2U*_V:;^R0@˞K/_~{inn6K/>$t:Mi 1 l5?p(`/'ky|T{oDk0+^jQhȦh`=n),|0%ٹouPK8&Y~Z_ceYnUW=sExٔfX p5@pcxUU̙/|3w{6n|nWڂi== Um(/w">i[al׻]G'b7🧞:(vuu5vvNK"^to/"f$]c#~`wKa~]ྃ{sR_h4saY-Ś !49[ zz "33ZE 0k"h7fB9@v/lrH=Z.&Q~#.Gl!Ĉ;ٙek8T >l$HoMP% HRgw%- (pn ƐN4Ax0|u3@GVZ` gfel ""9`雚W\tz4{wC>ŖL#4G<`Ϛru{aA] <y6.rȽdq[/ϹsNmr=wʕW\uI[[br2OVZZ26ncݞ1xD?aG+}2tI#( `(8IMM5o^!3\趸%@S$z^ߺ9ӗoT#[#,aٚeq Bim]]RpE ! [[ogwQ]C)镟Y@4:zřb1C䀔P2rXW LV)CEˆC\(]z_JҥK? L9>iGvww/^>!o DX,O?W˹q` %V^|͗rYJ7B)ڟ|v($aN u0[o=(6ن1Ao4Gn|g-65k:[ s(J$Bd _}SYAayFo%c7S:ѮTbLVӰ>]шmFWg@,qs /߼gC&qmҰ;7WyGh\$q‘ezQˮEQLDoO?]Y܈RĀuz;cjY$ҋJyS)(FRP]Q f D!\p:(">6 o;Ψ7J|\@# N   V-YpF:/رMEV0!TBA8"~T@CR`8Ad9JLzr=]*v$:gղU.ko^~(gJTd?⪦rGR p&ps'nñ@UUӟb {{w͚5ߨH8q$^sb.}GHٝsS\#PDL$,KV-cɽ!|'oYS%$ su#2dۺZD4+!?p 0*qP{y󮬭E1Q|O]vJ~Zhk 7A"c`:cx|,۸s"m0}>5j^t1LuLs 튼%3^BԄycLv0E2H"gt9s/y B8~E6_͒%aWW]wMBmwsn4o]}\^|7ZQ(!O(k'Oښp.fYԔ~nEmIήl`"@2}/_XsrE=&uks145=Tw鈷A`4 g=/7"t=0ci /d(Z-;vdN@#1J|弤%ð~ɩ2)SjN4PZ[]EB(PD=l;33\ ùWq)r}J>u>;mof: 74ubV$u_C!8I"[;߃EȽ4|Y='vb] X3{yL, γYBGQXQ{yři["C7$.8$шCiբN# 3DUU9SA 4 e(2."H]o/^n1?9 vz0/y \lHk?N(!H䰼ESƣD -H)DPb_{}O;^e`Mg0"^?@bJ/@ F1 :d)(%[$ MofB(EO3UH$2y9sL0_:y< 4W+t]FVdl/D{,N8kڇi>QX E|) 3U[jC6TƢwe%*mB'1][S"#޽E SŊo%mP6>LBLA8Bpx=to>S(4[0P{$_ZF)!ȹ /鷁1S|W93:݌ysS.rDp Jh4Kxa#IfB= #"1]j7LHh'oG&Jw\u=gٔ#{OuΜW_} }FI @ E M Zxj lxTCRoa*FjKr[bPgF58siEs]*R}ʴ'tӽ|@Uǚw`D7lܴ'Y,x<JkQQ&b&bVG<YVVPћ78w-[U3z@ʖ[+}j4ljMJo\zEj嚻jy? qB}ؠ':GTK52b⍈EoSB8I'S-eNt]߽gw`D i^{ls+ Rw?k Y|q b7⳺s d!#cMtnyy#Gz֮W1aFA@2fCTSY+h!G^9?d-ųPu"ڣ# UíB`/m~kqv8JQGydժU~iEEt饗ۗ]vYvv/\ZZzB*+>!$33s֤k#cAwE,ֈH.'^Y]]?C1at$}=F@o>8Nf.W= Db&! 0-BY>1Xo=r[pVU-8xX6bu `Aĸk7|+ grޗ=<@НM A?tVXJ&tH͛7[O܅hJzVCUU/uu}yLz=VD4D6N==X[VV@)elpl;{1W IzEujcF!&"lH *#u8#FB&w13tɦ9÷n]\q6۱Bfa j i_PHf )_1&NJ8x@:U"VBrZ"8 IDATPm"wrUV ð[EQ+zP&xK 6 "J"x,0v=˞%ą4o,Y{?Tѐ-008&@0rHW7vSjA1G~+"bj6Q3fo5"H!p~7޷;Rs.p&3B o;-q \0ڏ\`08+_^BRQ5тȍ||xa\On #7qr:b\̗ :X!܂j\ $v!⭷:|ɞǓ@ÿb ^[o->t1T7UeURCx)b " ~p=ISȠi f_D"ӻio3yZCYCl<18A[5ի r05q"sCn]7W3:%!Y9$Y02'y #x<=%"#qPOWbQ(:㢇,^ `jv9Nbؠ)<|0 r dQ[8d C|t0tH[ npjm b™0Qef0np@8nK7i|rzGD"δ hJ~DgMdMXKLh|(8m΋~t] gi"^|Ŝ;n}njPG)!*w[/ )"` E@C9eqm,Lrwtw1O-hfVc+Ozǰi a褡;5#nFW?}2kۚaƍ&k='D"]]]?<矯5EЪ]48r5Al" iy  x’׺ȶ"F}7D(/_xd)SAߴpSKVA'ԝKI B#vơQ &WbKMKgLe7poKگj+%xR$j|CO~ĭE̍hӟeEHҺAIH_C襥b|H}@FWO=HJ)ՙ󬪪(I Нcr;"4/Nik fy msOns'|2hqOqmB/D庾;ߩ2]LElTjjJ'O~j>3g q/qT>2aR0ԼCZ)6OZ5t~k)է+?Y̺'@1i\߮` v@yV񖶖"OQ'[RDp%(slׂidBy7F {-v];]s\C29_H$TbQۨA9>?Tm*% Z{ t;%tD>r"$w$*?-߱QVVj3&mF [-gBNK+q*B BRor"ݪ19ݻwϞ={͚5i!АɞǓ@ÿv'j"_tQWedMմ!4Tsῐh\YnΗ080ҫ4D+ʬ' xח痕׭[Wq 7444[.ɓE[F虙?{ l1b M/Ą.2%Kzvx-5}0tEWaLDvI`-HIDd8͹0gr$rw,@!!vD pY5MGM#Ui -f5mwn_O.uf}"ř@SWƅxc{9 HJ9bTA-8û,i?3W-Ԝ/^x${_]Io~TGnȢnh8 œbJ#9[ )R؀%ԞSJ%u_7C0|˕OUU~.y[[Հ;Vgȅ| XA5'`}<2JWkjhlݢ*_=HD7$p`1 yp`bBwB:aI1$xi縇.pYg"v3W5o?ٲeKaadw(++Ȩ ^w„ QoU,/? iR.aEB.WkyәV ,H7}Z}dn:C$KKRQJ}jzzjM(IR%8gώ0[Aic+|N/5o)Iiȑի2!"sp8~q䫯}i,''rR3.QjDRR_RZ{k1?b9cP)= pgBnW躎P <&ӌ>:Ip?}D[mێ_ v;) `B6tsEyreB|u6k0 i䔈*'l!s>pq6.n~"q*pM34#@X  xk;9%<|G|@ Jv.R @Ngoxd9x^ )v&t`.]i1hϑ=M̧s1м$&Dh[Rԣ!;ءjޫg]wDغcL MΗ@zzi [au@x c an*c/ 5B^QlhU\J2jBBqf͚5hРǐf8Cc?#2" iiileDH~JۚABϋt2UӤp,V6NYz,嗷rQ@7\x8AT(]Uʑ#U&H1o9?$Fi] e $Y2zt]~_[kvt\{6Qnщo8.P`[UU\4ALI_w- M9•pc<-o^Eݮ:"Iw%_<%\0K8yLS'D$[iϹ>įW^pMSQE\|5{}rX[4 B~z#WF(,ɘҚ )ѹ{K9~w +qOjsT\J8t(3&" rLA@(L8.~vʔ"!!ӄ rOᦛ!W-)u d  rjJUG=(G)%|*;٢{nadsPAƧH.Zj$r6MZS޸Õ<ϳl])筷^3bɻ:ѹ!p"+SjلRJ1A)(%wԘ} KN9R6Wv۳yyKS GH{ٙ3fijF1EQIٵV(U 4}/Lc*/u-##! 0L$+Wa>pPvCn(;ya?@!B0.(  82FQ LOi0gΜO?t˖-e޼yo6 >~[n P6m4m48sΝ,g;wƕ'[SJuJK *ϟE3cII=ĉkC5ڵkau%^7c(D8=ERs&uZ]7]Lkڵ46b,^;khx0n.</]ep8S/Emm5ua]GmA8`D7 `"߭r;!WL)c,-0QBVAt80BqEG46xi p!Mwi $ѱ}ҤW/>2fMvkioo߽b~@GhJ뮻0yal%Ӽ- )!. PP{K4.kxAr u0B~_ĭ6Ö4J7PHhh9[ɳ2RX+]hzs}KD}NwSJ@ŒC{v^uI. BP@[hdҋSܥkU`V)6b# 4M5x6ɹ2!T ћnν(a{$IÄXvz:8H k X{jX QK5 Ӊl6Q~'ճ%:Lfŕf/~ i3=@? KF d  +jk!Cƥ%*˗_ZQaB]z5T IDATLh @pb3,F?L?ʄL%aֳimJW7++lj)JO: ټzŊE]Bһ9 8n.QDiŪMXcH>x/+PA+ d@!Lp'eyIcm^].K)sb(-53aʕ=gUEFR&chAt)tMbw4tϼҠg1cΝT\.-1FÇ￟8Pomjr%d$WLk3 ėq}a[JG8tC7)@7(N͉rD[1vMsdd2`wPBe^P]s8  "@R =}cx<= } :𠪪*A@ :V@O^Q1BUUs׷ o/vjz;^ʳaTJT'* /I1+}7;N%li<=ӏ4}57iP")qYhj8eAĺ▵Pϸt g^z}T(يo>  Ե֩J1 [9gb%4ή?;QnNfř8NI3/?su|5Wpl'\gscƿ/ٗg[ B(t?,m6L(NVWG :Lu]4YJ3LJ9Jv/ĝD$ z7)$q*hk3aoD@O8sÇ3,y̝; cwY1BGfAYu?Z7>IHUUOC.gBPIUU bE XhSŐ$W]tEJ1q:g:Ӥ\GZTOhn?zrO8{x_{k;qB](7jiiMoA' NdRB'GjYz2yUUU[lq:pC@ @)MIIajJQmMܺOQLUO=pժMS}5R0  J!l3&K0. y R$_z]-a#BBnEVȲc(0dG|]M\lBICTAh%BA&~}E)QYX>n4B0Nik fc|G>MsQ,+ƍ+:]Mvaap.ה@`~wQsk׾%?/DR 7sBǝP;LqFGPQT0@%̇ȎԬp Hq:s 㸬,ɓ~B4F Z\DQ< ‘Ϋ!66[C`"$zӧǂ߉z@^|-W. ┙׿8Ai.46H f 2y>?y/ q4YN@<|2B}/UCß=}]ĉmwH)Z AQ% 'Ք ê }e')JСbҸrMPp'DWƵKc 0 ?tΏ兝5̿8 gddů, W0R0ɗؽ.HB }ܬԮO\tU\']QzTW".FI3O| [6> nK+fWΎ"]H FlB[c\ Ԥdqou_]y͕pBv;YH@-m-y9y8ӹ`We! A\CB[/{U_L/auQ["Y:4 :rȶzUUʬj 1~['XOa i2qff&j$,/Iר;3J ,0==$Oڳ!Qf7ad ""ݵ|6:IUW\,Ԏ` ׿n_;/ KؿCPRsovgdd3ݶ꭫V}z "?IKFw˧(D 9P/ʕ&3|pq%XUU/G#9ΗL0 I}vj.kfS[?3Ŏ!QQtI'?g76RSo*oݴiS?w֦7%b7}\ $IbEvv}M,9Ƙ{6YF)a(tSOA)4 @ptOF(`y>\jj}Mzg-YV̈QmՊRҲ: cZQfE֚D+16uOKsҞ4dpWz!14k)v{$>XQ#%}W$ ?'ʢ#(փ.7|3(%Ǖ>R|lq\qv-VZ+8'?n,ĦBQy(S :?TePxqa+==ޜi&7s\j$SDOmEL 6-/"Ǖ'!/}%@?AwxU(8!x saN̺I*$[h&{B!sL2eʔ~ӟ37~W`P(>UPJ1Lmu F[rssc)+^N-]:~i^ΪUv,%kÆ< 1[!82 //7oޝ)lF(&21qq̙B>޾}50nv8ĂC{;XE~_Y ~sF0B@ELRJ7 ss2[\mfTRg^ABK#w:n>(ϑEʌT ]5 ^oHi5V\Am( ,9LվlD;E-] I4GQٲeddsN|*맠l9Pqk+W>c/4͜GQ(bcUU#BR <q1>ztq )apv==kY\ t..3fH(;Q(}ieC},qׯ?(#ښ.Ӱa%4Bokm}0g k0(l29hiP(0mڴG~'?LTu@lۭLDɲ v?aQPY'R<mdus-۰ဪfJRal{cxA(FȨ1N<&w=z) HF"9WVTl'OБ#)J+G~o%+./"iPj"mFy FDa+Q[B"K  {>9B|}#WjrWW *,FnD1 gl;D a2M6B,c8^]W}7dPԆ-SJouBk!J)e{^^f:apwa S7 I"vRJ23G~>$wbv;Pjv~WXBiJ$AlcHܧ;m,k :5ůHί *() 1BLO'Blya!| ƚ~;"Cif% ]2ȼ.b $ pGT3j[2֬YCF.ڱUreP_P˯y|3.LBw\3'%%%q[-z*. F]WaHHzPڼ;6{(&62Ru*\F©7 =ZաfDQl>։ZHc܍ϷK޿}vNA2}wŻɒ4T9Ҹ}v]q)^KnWN)5kVyyY~p[K2B !Qǎ$uѓ{^1J>5^Y龛"iqsWK/ IBSj6|X]Cޗ(땊&z5"Q?$- ԥ<Ԥ[^]{-*: ۶|6 %?''hk}#6cT:h>2Omd\ED1OW܁Ւ3' $S |YPX# dI6<mۋYG2 4!dD3< Cc$V?}I{XP(>_Hٺ!ضPkG] %'' !_-HB ]? /TԸ>5#FC?i@%509Wl(.BѽhI2*)%w=`Æ (سH '^L#{ߒI#O!V0oHC @N巟YZԖQu*}lELq@ԃ{@%)1ZG4Q{#[®[a`7""y '1:B|/P|Y!gm*'%HN1HMĿAOm]xў=y&AȲ=/zG,.:vŮ^} 8|եNp^y镱PNWpZPگ\9NWB0qKx?*nO>$;ǚ<ۼ^?yW@lJdp@ΝdGǎ$uQQ"(AM6s=IBDmP0+wѮK"kt޽' h=u*926ۊjQJK$F̚[=15xG}3(1aIi$fQL޽x9kiq< H;5g6-wh)U^ I6Hn4hl$l9N0G)u OuGM áXgƌ-@M7_(h(+gI0kځfx]ZzcXd q@I8m )nu|xb۶_ɳ--!at!q-ُ "iQ&L|mmms zi^x^Cly?.k֢Hbv!=I(cɽ'ĉ_iyqe_ :DžC <}0cƔvvvfv]uE5kʎ${cjǎ DS٥6N8 2@z82~ Q:#xomg߆{  n1k EGĢ d$r\42 jɲOMM'lqaK֢o0ĖPz?]/$`\. t-{<ݻu͈_~2>6Des};w;6 aPkl8i M8cw{{M7=y^|۶G_yȷ#DO?zstYf3DqxsgYiwzީSvﰦPPyyqYq)Eeo_z)apq\8E1PԽ_yG!ι&EՍvg7lm0Ǜ(ԁ ) f>$/t7OAvl>F]\Nph#ˁSAgϼufJJJԑB>̺/KDXEf(s{a`k:oM_$Mt]O$0u{;~ꫯ暸ܹsnjSRR_|Mw~{E3e`EQ 6R1x>6>q'FQJbyՑՕ),]nH^YFFV`3DxSZkuua"'Nyۜ$Hr$&xłu=6R8g_y0xA0>l;va`,Q,no&`Cʺg1eJY_gK7U絆nd4"maJnD]c=2>QwB~Lh5 HA"tȬv-_uQyZHj\3,hCz`>m`+*nB)e5$gKS0&`ogJ;`33cb zQA~1S>]ez $2O2zuשĆkqI`FoKk*ϛ~XRA]xQtNt0ط(so[?3n:8uǎ}k-(8e2 <r\p|mmv2WG? 4MUU)I{9wSJEqXU˚EX Frs+sqSb~orf') {;쫳هAX{KD#.wg8CbS`8r#(B<"2%8˚A.ruPHZMz<5iZV\=_ "]MAy*otc+Rb휱3qCF e) ݮ}\.lkDž%һᄏ=z#U7o袋޹lٲ-[X;a„Mh8C-^%Vebǒ-I=zÆgA(%L< 4H@ I,{|Yjjj?`v܂vg8n'B!U= #%+^ZqGhfMh&$.*!LzQ4&M*RP 4kk %N]O#ˎɓ/3g%׼ғzu5ҡ83MhQ]SH"{D]W\q{N4J\QT &o{eB"M,΀bg^qSÑDN%v mz$̇(e]&}%FA|iJLШNr )Yj*pjV dEbXi[5HA{bH`.#Ɉl荚P(4i$47l`Ugg'8---Ju5I'oP}Z?H~ۣre|EQ+•{0Q0$fwrͶ9--DRƖ^Yo0 UU#K,1[Z FBūVDn~{+s93 3ޗ}72i_tM_U"K# n;8o}HCuMDQC;c:YgQq)ZP38Ԣ ԝVG  {.  yd3)%,}ufa85K<> @-_^1ruWX K"8 x7cm)ҕ) H=vJK8&^z;wH lCz%336ֶl27o#7~ ~_u (UӈBƘNG\OiFAGjyA٬3]n{vI}4m# Vnf퉣@pN1^ e~Z~}a͏ 4%C % p睓 t6A4m99f~D$j)ײ4+߫3ʼnF I(N A(TMQ{~wj w8煮/vO9h-"IR, a=J:#?85#5"7gëA&l=RL27 b TvNU`-qLD%0[ yM{݄LIgzW~2Z܃P: pէ5"M4JvBՀ8reY|})dG,wgF䔲dI3{ {t?Z/a^SpS{e7)Yqǽ[nd>鷤%K>*ߡL-OȔ&7}l_"\D>'NޞVoeG5ĖiqHۻbŊqfʀqh,=Į!r!#_`'3>R%1GU-hjM'a,(@Lh-{aN0gΧݎ颅IzII,{S[[/'\0asx6ܑ:-zy$&zzMh%xEw{!.OTO9M20a۫f]:jWa|kas"aVe?ßpFٷWwa:I4M6XF!dffT&4 QD_3J?Z~\<QST 7~f:Vr|cLvv|+'%&8|*!LK s3'Zg4oP($8ĉ^Tz2 IDAT!Kp\`]={xohFqÐ,#LJjE&QN3ך4q}I71Ӻ >'N:!xE)x@8!D~0uSqNEa$ z`'admIi$I@IKzKM&)eBĖiS+Vj L0.ptnai~X|k#Mc G-p˥T*~ӟ~ 벗FÅ!gvd3LOՎ>nqߠ.k;aTTۗtuE/iuaTNSӶ}=}G&r7 `58떻>rR8r^tʚ0H$?#)((""oQƯu5`kCбq |CL&f TWWW&Mz<z js>:bBX.kJ pTzR=,}cuu!+zIB LsM9 ^kIӲAkMqLufT@S r7DjjlپmU~oS8{/x}g|*) &28Ib0O\\XZ!R^[׭zz/pbGi錴dhB"/^$ŜAZ޸qNN}#g?~93cLl[ٞDR{iS^'d\ֹqgG`t{2ˤ_=%)Õ+WxI&}ᇑz`\;,7ncMHǏ/Us;]taKC.,Po5[2)p.l=FA{5)?IQ1*Ϲ.T&9r;μJS'_mX'Obڟ551mʩJ>ԘI3)!t BlD%!"]D)>nɆO/DԆCA'N()) *bdddGl6[pfJ*l-IA -pC^W&)J6!^wu~t];Rh$ܤ[n ڸO? Y#ԉl XBܔRE8ۅWkM8fUWֶnXE3oloS|yݖ$)+eX}} TJvw䨇H[.(NNNۀ]$u~ vޭ?sBz'9rs,88NazKaoaVUUG#,^>I I6.epGԩSA/g]BX%޶)g[jIJad29m1!$1kNw!Lz߼?4ov-dIRǠE~Qzww?>mڴ}ݨ㒸O-G&&01z__:4~\02ЫzhN 2q2|?"&H9 "{ϲM7"[!r!ڔH#ehov!C_OHR'\2=4M\r"!$0LG_/!ħIpHSN^b!{IIwBnjks<)Va8'uR]/+1DNMH$鲃?OV䓒O:|)imm=-=Oq۽{7QR#a8E7NB;o/giϵgd]qJu#ߑhG`*Z# Vuvۻ{c`\Wtr"oe_i=}SnH3~_02);c 3Дy@qݧ,|>LbZbĄ?7f͜ K{pËUm(Uzzz^48^xAT:Np8tӃ,,,6  kl6jQ(jZ&]r.[oZ-ȧ$|I%6b||v!D~!,ˆ3<;NogǏx-(~U3^4|! G!iQۻa_tN̔q/o˃K$ں2T6}j;)!9mFy/[Yf?Cqvw7%#C*HRyFywzw=Ļo?T* O  8A8¸^jPFB++zLX8vwvs͘@;bw<>߽3Ïz uuu=裳fzwbp…۷+D:aW^yEPd2\S#T)# ۋBs)*2D)aFgF@Y'&&F5{j{/Gğ;w';#=39ur~eMI|3* !?kDrmD"s_) qq߈p\.jTnp"/D҈'90~K39lNNʺyTZVnrG__ߏ~͛7~ihhApϬ 7|ꩧBKZ SD̦|s&xc.I}͛դX-(( I FGٕ@r[o5*?- ? J#ħD>MU*d,Tj~}Iyi,$ҏ3V˫WӀ趜m|=|u^ސa˖uui.ILxNGn+asM>BXƛ56}5_ub@˅ #b{'W t3IlBș3ܧ-n=`C?^2Lñ4Mkk+_eYd۫ZmmACJPŧFD*z~~V BpcZ1$ дLZ%.JH@ԫ3]]R=3ji;;OGӦ%0 zrs_37?ؿ3 czv120_kɋ޹U fU`֬ymRy'0wJM*q@cr!)JD˗.]zرӒa~gaEww;w^`qmM'\ "UfaLܐd B*r~S=y<FqRAOt ;dK:_rL#>2G_B~@aLZJmuŞu[u\p,.}ѿǟo6FYpaz}~~ZF0H \;I&M4ipM%hq…^x!33N&ja9Cny%Ȗ-mV-Lp.-O+B3ftAjҩ-Dz fǎ7$$u*w|"XL*A_,| Kf^'|-ҥKK,y72 b²L&\K|_{ހU$J *f0 ~?#B- RIa/$ a h! a҅$HGt;7"D7}\aG4DI&^I{ (.-q:>/999x %%%Wl6%S~LgwaϵC/&Qi27~{ھ-E_΋y3rK[:a={зB[os=+W3 yve~߆Ay,]HB;R'Pkb0|.K"( ?yS@ZQ!).{tҙx@jtm677@#INO?)s%+8ry7.;BNQ7 m?~iP:}H>߮#?dh-E].q±C=C={_|.'1Qնsss" v=x&,ۦ0Yj!O>{EY===w# iEǀY Ih- f" ΅$N6(hK^X 9:uԳ>{a*9PfYR=AI&}gzg!SmA5^zr"cDj8\r\.+KyyFC9:NsS*~Lslt?!-]vHE7XtZi%K^W_eY699yԩ=lµ*1\ꢢ"VSo=BA~aҀfa\ro\\ a ,"°Zǯ=p!# 1؉0\.] 5faB$I#!?}-X //AI@Aga㸞BHENz㶲.k2[ntNz RllZm͛wQ: 5 c0A]m6wW__hѢ~S ɓ'̕^ʡhnlK1[1n%k5T(vNBYseKHb=IDATIe]WkD2b] nx 0k*8B8BЎ:8p,0C$2w6wǗ.]nڴ醤 06 =ذaBO"GU!0BVҥKot: !R4Bσka,$(e2?=n^{mǎ]mX|M.|̙3g|邂y\ Ec@dbR a] q@ZKf]aBJ$X_6?ؿZa{| 9q99!;n^85wno!w_ۣrٴoC?{ נS<…/?.]ZZZ_!1R# 8FYf(Q8s\oQFYl2\0aB-ل3gΔwkiiIOONjA@>/\gjv].Jӧ\R*"1D59ǹk8VΜ5Urm'}CFO0h2;vlٲe?ƍoN5G!X 7jHQ°lWsZ6:::?.KۓN4-;}'?޻dx>4}G|rao;FN=|W_}hlv@VTT444CVggg>|{b8yٳo^QQA----!lzl6k4zkIŒUQQi&0xn-99o7JLJ JX08xD'"ScmݺuHB2Nt:]ww7zmhh"TVV'm6[}}Hf9;;4⋬T" ?P*OL*rh&Z̔H$IIIO}7֮]! XB׫j m6^JI L&Bq@b8R ->JO.]㏯Yf,J ђ2|yyy۷o_z5R~m۶`0aWDh4%AJ%@Uff&v JHjvT:u~S b1s%Fo*9eOV\sHĠGmUUU323376 hѝJ|yyy3gܱcqS :WB*V|J?U2e6M&v% .S ꫯ>V Jйv߹D䶠JDN?YF"e+..6²!t:˲PDne?ǏJ\'N8Q|*AWp!S DFT8òL&|njﳱqڵˑ2uu"_(..tbn(7>!S!;K% AGD8p֞&iҥ͖?9417m6^4׍cDID~ ,={6!bl9s`"h>Tx j4n("7I>cǎ5kЬο6ɓ&IV?>`و>rȼy'tM6BjkkB%%%|V__fL_vzr7 voFnf09h"eCC?h\xp jׯ_?F{*Θ8|GGܹsKa] \.w l-ZTSSC{477ϛ7my nڪl6oݺ+++Fsu)|>캸1g@u%~ׯ[n׮]W\ N%.^ / \JsffޗPT7M&bA,VJ? l6WXA_/eeekmmW@~444|*TXXOgPTXb̊9@qw;w,P( G4b x0`AUQq oU?lB`HgV^/3xb̙1 5 GLg14<2f913;xv=xo#@3+?(77WoCL#2ȟ`2ƚ63+4XP\\l4Qnzl c?đCccd?*3; ZYfO0v#{ @lBeee~n0l6 ol,YI~h%D\\\Yc?92{8E ,(..e~~~qqqIIIFFF^^U`XUTTz^j%&3~DlT\㮢փLF|ޒ ,W f͙3;pglL4`7kX_<'~8T[[K>yqY^L`BHii)˲+СCc| +xEn ټxbw3~d0 fɵW&]h #G,Z~cMfbK5h=/h4;RzfB:;;RRRw*1 ^gs&Qe TVVz:\)(++AfϧcG]amۆc]s%$\KKKFFh$⹸ "^566YR.X j\TK|uvvۖxٝv{AAAuu5^xX)*'-bFKK 0Gjuccc틊,K|F1:fQBt:V?XUUhV˲qjl\o2r<weeeƜ|uj8)///6۶mo)#X1QKLE6Hzz̴X,c$BiJJJh?aBP -l',*m#g 8eWWoOwssV-//csxa\XXXTTdB~x$ª̿Bnq K' ΦbޏBZmmmm|3JKK͛GEѪgD.ݶm[UUYNNNWqqqyyyzzz}}}UUUiiЯA8bSTn@ .aFV^8=YEX_0:wm$fQ-!$77l60vq9P x$)8w\ḱh4ۑ'oA@m4e@p`p_ Ԅ  ~xLɿmbmCoqqq^^)lCBƼz?ܑ3gNiin455x߆J/1"cvvV]~}f&oɲlSS_*>쾡m6!3;n!r3Ef֭[:~iKKKU*Մ :;;{9xb0ˏ9nFaYa`F(]v< "oTVVуn/((2On)C!FzJJʘ= JhsCvv0ih4!`fh4²"`èhZ[[?0\xbᚑ/aĞ@T477߿h4677deeѸ?`r 3A3-;;lFV!2/**HcF?/#X؁vDt /^lٴZmEE"?_0FF@ Aͭh4UUUL&Syyy(1A@lA fÇfsaaaQQfB_)B(K'`*...//OOO*--s)//_reʹZpp bs'h;w.eAA͛Fczf!DR566!r3fNjX=z(v}AJMl=> !&Lx$+++6E>"7-T*ݻfsee%hg.@s1LvWMMMO<?6rssWX!\7o޼[bD pCTVVT*zMt:]YYYgg'nT &tvv>sE`09r$wFŋ~?HvvV]~H>6v{FFFff#G 4-7}~9|lXRRRsƺ|ҒAs`*,,ܽ{d={6}bdee-Z_X:c^WTyyyt`]SS06ݻw)!$##c۶mw.f4Q6@ h bNsA A B( J4Q6@ h5`Cl(Œ -eMMf.`4؅FQ5QAD  5 j4@ hAQAD  5 j4@ hAQAD  5?jJIENDB`pyzoltan-1.0.1/docs/Makefile000066400000000000000000000011411340064767300157700ustar00rootroot00000000000000# Minimal makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build SPHINXPROJ = PyZoltan SOURCEDIR = source BUILDDIR = build # Put it first so that "make" without argument is like "make help". help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) .PHONY: help Makefile # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)pyzoltan-1.0.1/docs/source/000077500000000000000000000000001340064767300156335ustar00rootroot00000000000000pyzoltan-1.0.1/docs/source/conf.py000066400000000000000000000121621340064767300171340ustar00rootroot00000000000000#!/usr/bin/env python3 # -*- coding: utf-8 -*- # # PyZoltan documentation build configuration file, created by # sphinx-quickstart on Fri Nov 30 00:39:26 2018. # # This file is execfile()d with the current directory set to its # containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # # import os # import sys # sys.path.insert(0, os.path.abspath('.')) # -- General configuration ------------------------------------------------ # If your documentation needs a minimal Sphinx version, state it here. # # needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = ['sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'sphinx.ext.mathjax', 'sphinx.ext.viewcode', 'sphinx.ext.napoleon'] autodoc_default_flags = ['show-inheritance'] autoclass_content = "both" napoleon_google_docstring = True napoleon_numpy_docstring = True napoleon_include_private_with_doc = False napoleon_include_special_with_doc = True # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix(es) of source filenames. # You can specify multiple suffix as a list of string: # # source_suffix = ['.rst', '.md'] source_suffix = '.rst' # The master toctree document. master_doc = 'index' # General information about the project. project = 'PyZoltan' copyright = '2018, PyZoltan Developers' author = 'PyZoltan Developers' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '1.0' # The full version, including alpha/beta/rc tags. release = '1.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. language = None # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This patterns also effect to html_static_path and html_extra_path exclude_patterns = [] # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # If true, `todo` and `todoList` produce output, else they produce nothing. todo_include_todos = False # -- Options for HTML output ---------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # html_theme = 'sphinx_rtd_theme' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. # # html_theme_options = {} # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # -- Options for HTMLHelp output ------------------------------------------ # Output file base name for HTML help builder. htmlhelp_basename = 'PyZoltandoc' # -- Options for LaTeX output --------------------------------------------- latex_elements = { # The paper size ('letterpaper' or 'a4paper'). # # 'papersize': 'letterpaper', # The font size ('10pt', '11pt' or '12pt'). # # 'pointsize': '10pt', # Additional stuff for the LaTeX preamble. # # 'preamble': '', # Latex figure (float) alignment # # 'figure_align': 'htbp', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). latex_documents = [ (master_doc, 'PyZoltan.tex', 'PyZoltan Documentation', 'PyZoltan Developers', 'manual'), ] # -- Options for manual page output --------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ (master_doc, 'pyzoltan', 'PyZoltan Documentation', [author], 1) ] # -- Options for Texinfo output ------------------------------------------- # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ (master_doc, 'PyZoltan', 'PyZoltan Documentation', author, 'PyZoltan', 'One line description of project.', 'Miscellaneous'), ] # Example configuration for intersphinx: refer to the Python standard library. intersphinx_mapping = {'https://docs.python.org/': None} pyzoltan-1.0.1/docs/source/index.rst000066400000000000000000000014401340064767300174730ustar00rootroot00000000000000.. PyZoltan documentation master file, created by sphinx-quickstart on Fri Nov 30 00:39:26 2018. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. Welcome to PyZoltan's documentation! ==================================== PyZoltan is as the name suggests, is a Python wrapper for the Zoltan_ data management library. .. _Zoltan: http://www.cs.sandia.gov/Zoltan/ .. toctree:: :maxdepth: 2 :caption: Contents: start.rst overview.rst ************************ Reference documentation ************************ Autogenerated from doc strings using sphinx's autodoc feature. .. toctree:: :maxdepth: 2 reference/index Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search` pyzoltan-1.0.1/docs/source/overview.rst000066400000000000000000000467711340064767300202520ustar00rootroot00000000000000.. _pyzoltan-docs: ========================= Introduction to PyZoltan ========================= .. py:currentmodule:: pyzoltan.core.zoltan PyZoltan is as the name suggests, is a Python wrapper for the Zoltan_ data management library. Although it's primary purpose is a tool for dynamic load balancing for PySPH, the features are general enough to warrant a separate discussion. In this document, we will introduce the PyZoltan interface in it's native non-SPH format. In PyZoltan, we wrap the specific routines and objects that we wish to use. The following features of Zoltan are currently supported: - Dynamic load balancing using geometric algorithms - Unstructured point-to-point communication - Distributed data directories PyZoltan interfaces with Zoltan, which is itself a library that is called to perform specific tasks on the application data. Information about the application data is provided to Zoltan through the `method of callbacks `_, whereby, query functions are registered with Zoltan. These query functions are called internally by Zoltan and are responsible to provide the correct information about the application data to the library. The user is responsible to make available this data in consonance with the application requirement. ------------------------------------- A simple example: Partitioning points ------------------------------------- The following simple example demonstrates the partitioning of a random collection of points in the unit cube :math:`[0,1]^3`. The objects to be partitioned in this case is therefore the points themselves which can be thought of as particles in an SPH simulation. We begin with some imports: .. code-block:: python # Imports import mpi4py.MPI as mpi from cyarray.api import UIntArray, DoubleArray from pyzoltan.core import zoltan from numpy import random import numpy as np from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt comm = mpi.COMM_WORLD rank = comm.Get_rank() size = comm.Get_size() colors = ['r', 'g', 'b', 'y', 'm', 'k', 'c', 'burlywood'] ^^^^^^^^^^^^^^^^^ Creating the data ^^^^^^^^^^^^^^^^^ After the initial imports, we define the local data on each processor and broadcast this to the root node for plotting the initial assignment: .. code-block:: python numPoints = 1<<12 x = random.random( numPoints ) y = random.random( numPoints ) z = random.random( numPoints ) gid = np.arange( numPoints*size, dtype=np.uint32 )[rank*numPoints:(rank+1)*numPoints] X = np.zeros( size * numPoints ) Y = np.zeros( size * numPoints ) Z = np.zeros( size * numPoints ) GID = np.arange( numPoints*size, dtype=np.uint32 ) comm.Gather( sendbuf=x, recvbuf=X, root=0 ) comm.Gather( sendbuf=y, recvbuf=Y, root=0 ) comm.Gather( sendbuf=z, recvbuf=Z, root=0 ) .. note:: Each object (point) is assigned a *unique* global identifier (the `gid` array). The identifiers must be unique for a load balancing cycle. .. note:: The data type of the global identifiers is of type `ZOLTAN_ID_TYPE` (default uint32). This is set at the time of building the Zoltan library. ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ZoltanGeometricPartitioner ^^^^^^^^^^^^^^^^^^^^^^^^^^^ The :py:class:`ZoltanGeometricPartitioner` is a concrete sub-class of :py:class:`PyZoltan`. This class defines all helper methods needed for a domain decomposition using a geometric algorithm. After the data has been initialized, we instantiate the :py:class:`ZoltanGeometricPartitioner` object and set some parameters: .. code-block:: python xa = DoubleArray(numPoints); xa.set_data(x) ya = DoubleArray(numPoints); ya.set_data(y) za = DoubleArray(numPoints); za.set_data(z) gida = UIntArray(numPoints); gida.set_data(gid) pz = zoltan.ZoltanGeometricPartitioner( dim=3, comm=comm, x=xa, y=ya, z=za, gid=gida) pz.set_lb_method('RCB') pz.Zoltan_Set_Param('DEBUG_LEVEL', '1') .. note:: We use CArrays internally to represent the data in PyZoltan. This is done mainly for compatibility with the PySPH particle data structure. The complete list of parameters can be found in the Zoltan reference manual. All parameters are supported through the wrapper :py:meth:`PyZoltan.Zoltan_Set_Param` method. In this example, we set the desired load balancing algorithm (Recursive Coordinate Bisection) and the output debug level. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Calling the load balance function ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Once all the parameters are appropriately set-up, we can ask Zoltan to provide new assignments for the particles: .. code-block:: python pz.Zoltan_LB_Balance() This will call the chosen load balancing function internally and upon return, set a number of lists (arrays) indicating which objects need to be exported and which objects need to be imported. The data attributes for the export lists are: - *numExport* : Number of objects to be exported - *exportLocalids* : Local indices of the objects to be exported - *exportGlobalids* : Global indices of the objects to be exported - *exportProcs* : A list of size `numExport` indicating to which processor each object is exported And similar arrays for the import lists. The import/export lists returned by Zoltan give an application all the information required to initiate the data transfer. .. note:: Zoltan does **not** perform the data transfer. The data transfer must be done by the application or using the Unstructured communication utilities provided by Zoltan. Given the new assignments, we once again broadcast this to the root to plot the final partition. The partition generated by this approach is shown below. .. figure:: ../Images/point-partition.png :scale: 50 :align: center Point assignment to 4 processors where color indicates assignment. We can see that the `RCB` method has resulted in cuts orthogonal to the domain axes. Each processor has exactly one fourth of the total number of particles. The code for this example can be found in `pyzoltan/core/tests/3d_partition.py` ---------------------------------- Inverting the Import/Export lists ---------------------------------- In the example above, Zoltan returned a list of objects that were to be imported and exported. There arise situations in applications however, when only one set of arrays is available. For example, a common scenario is that we might know which objects need to be exported to remote processors but do not know in advance which objects need to be imported. The matter is complicated for dynamic applications because without a knowledge of the number of objects to be imported, we cannot allocate buffers of appropriate size on the receiving end. For these scenarios when only one set (either import or export) of arrays is available, we use the :py:meth:`PyZoltan.Zoltan_Invert_Lists` method to get the other set. :py:class:`PyZoltan` exposes this important utility function from Zoltan by assuming that the export lists are known to the application. Upon return from this method, the relevant import lists are also known. Note that the behaviour of import and export lists can be interchanged from the application. A simple example demonstrating this is given below: .. code-block:: python from cyarray import carray from pyzoltan.core import zoltan import numpy import mpi4py.MPI as mpi comm = mpi.COMM_WORLD; rank = comm.Get_rank(); size = comm.Get_size() if rank == 0: proclist = numpy.array( [1, 1, 2, 1], dtype=numpy.int32 ) locids = numpy.array( [1, 3, 5, 7], dtype=numpy.uint32 ) glbids = numpy.array( [1, 3, 5, 7], dtype=numpy.uint32 ) if rank == 1: proclist = numpy.array( [0, 2, 0], dtype=numpy.int32 ) locids = numpy.array( [1, 3, 5], dtype=numpy.uint32 ) glbids = numpy.array( [11, 33, 55], dtype=numpy.uint32 ) if rank == 2: proclist = numpy.array( [1, 1], dtype=numpy.int32 ) locids = numpy.array( [1, 3], dtype=numpy.uint32 ) glbids = numpy.array( [111, 333], dtype=numpy.uint32 ) # create the Zoltan object zz = zoltan.PyZoltan(comm) # set the export lists numExport = proclist.size; zz.numExport = numExport zz.exportLocalids.resize(numExport); zz.exportLocalids.set_data(locids) zz.exportGlobalids.resize(numExport); zz.exportGlobalids.set_data(glbids) zz.exportProcs.resize(numExport); zz.exportProcs.set_data(proclist) print('Proc %d to send %s to %s'%(rank, glbids, proclist)) # Invert the lists zz.Zoltan_Invert_Lists() # get the import lists numImport = zz.numImport importlocids = zz.importLocalids.get_npy_array() importglbids = zz.importGlobalids.get_npy_array() importprocs = zz.importProcs.get_npy_array() print('Proc %d to recv %s from %s'%(rank, importglbids, importprocs)) In this example (which is hard coded for up to 3 processors), each processor artificially creates a list of objects it knows it must send to remote processors, which is set-up as the export lists for the :py:class:`PyZoltan` object. Thereafter, :py:meth:`PyZoltan.Zoltan_Invert_Lists` is called to get the lists that must be imported by each processor. The output from this example is shown below:: $ mpirun -n 3 python invert_lists.py Proc 2 to send [111 333] to [1 1] Proc 1 to send [11 33 55] to [0 2 0] Proc 0 to send [1 3 5 7] to [1 1 2 1] Proc 2 to recv [ 5 33] from [0 1] Proc 0 to recv [11 55] from [1 1] Proc 1 to recv [ 1 3 7 111 333] from [0 0 0 2 2] We can see that after a call to this method, each processor knows of remote data that must be received. In an application, this information can be used to effect the data transfer. Another option is to use the unstructured communication utilities offered by Zoltan. This is described next. ------------------------------------------ Unstructured point to point communication ------------------------------------------ .. py:currentmodule:: pyzoltan.core.zoltan_comm In the previous section, we saw how to use the Zoltan library function to invert a set of export indices to get corresponding import indices. Naturally, with a little bit of work, we can structure the requisite communication (`MPI` send and receives) to exchange the data. This set of operations is fairly common and Zoltan_ (PyZoltan) provides a very convenient utility called :py:class:`ZComm` to perform such communication. The typical use case for :py:class:`ZComm` is when we know the list of local objects to send to remote processors but have no information about the objects to be received. An example (`pyzoltan/core/tests/zcomm.py`) demonstrating the use of the :py:class:`ZComm` object is outlined below. The example can be run with an arbitrary number of processors. Each processor allocates some data locally and randomly picks :math:`5` of these objects to be sent to remote processors. The remote processors are also picked randomly: .. code-block:: python import mpi4py.MPI as mpi import numpy as np from numpy import random # import the unstructured communication package from pyzoltan.core import zoltan_comm from pyzoltan.core import zoltan # MPI comm, rank and size comm = mpi.COMM_WORLD; rank = comm.Get_rank(); size = comm.Get_size() # each processor creates some random data numObjectsTotal = 1<<10 x = random.random(numObjectsTotal) gids = np.array( np.arange(size * numObjectsTotal) )[rank*numObjectsTotal:(rank+1)*numObjectsTotal] gids = gids.astype(np.uint32) # arbitrarily assign some objects to be sent to some other processor nsend = np.int32( random.random_integers(low=1, high=10) ) object_ids = random.random_integers( low=0, high=numObjectsTotal, size=nsend ) proclist = random.random_integers(low=0, high=size-1, size=nsend).astype(np.int32) my_indices = np.where(proclist == rank)[0] proclist[my_indices] = (rank+1)%size This information is sufficient enough to instantiate the :py:class:`ZComm` object which will be used as the communication plan to exchange this data. Once the communication plan is setup, each processor knows of the data it must receive with the `ZComm.nreturn` attribute. This is used to allocate receive buffers: .. code-block:: python # create the ZComm object tag = np.int32(0) zcomm = zoltan_comm.ZComm(comm, tag=tag, nsend=nsend, proclist=proclist) # the data to send and receive senddata = x[ object_ids ] recvdata = np.ones( zcomm.nreturn ) With the send buffer and the allocated receive buffer, we can perform the communication using the :py:meth:`ZComm.Comm_Do` method: .. code-block:: python # use zoltan to exchange doubles print("Proc %d, Sending %s to %s"%(rank, senddata, proclist)) zcomm.Comm_Do(senddata, recvdata) print("Proc %d, Received %s"%(rank, recvdata)) Note that the user does not need to explicitly write the `MPI` send and receive calls. All that is required from the user is to correctly allocate the data on the receive side. The output from this example is (it will vary given the use of random numbers):: $ mpirun -n 3 python zcomm.py Proc 2, Sending [ 0.83476393 0.07041833 0.20059537 0.7722934 0.4529769 ] to [0 1 0 0 1] Proc 2, Received [ 0.50391764 0.40028207] Proc 0, Sending [ 0.50391764] to [2] Proc 1, Sending [ 0.29755463 0.40028207 0.69433472] to [0 2 0] Proc 1, Received [ 0.07041833 0.4529769 ] Proc 0, Received [ 0.29755463 0.69433472 0.83476393 0.20059537 0.7722934 ] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Using the plan for similar communication ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The :py:class:`ZComm` object was used to send values of type `float64` in this example. If the number of objects to be sent and their destinations are the same, we can modify the :py:class:`ZComm` to send other objects. For example, the same object can be used to exchange the global indices (`uint32`) like so: .. code-block:: python senddata = gids[ object_ids ] recvdata = np.ones(zcomm.nreturn, dtype=np.uint32) zcomm.set_nbytes(recvdata.itemsize) print("Proc %d, Sending %s to %s"%(rank, senddata, proclist)) zcomm.Comm_Do(senddata, recvdata) print("Proc %d, Received %s"%(rank, recvdata)) .. note:: The :py:meth:`ZComm.set_nbytes` method is used to indicate the size of the individual objects that is communicated via :py:meth:`ZComm.Comm_Do` The output with this change is:: $ mpirun -n 3 python zcomm.py Proc 1, Sending [1054 1692 2034] to [0 2 0] Proc 0, Sending [214] to [2] Proc 2, Sending [2720 3034 2511 2412 2975] to [0 1 0 0 1] Proc 2, Received [ 214 1692] Proc 1, Received [3034 2975] Proc 0, Received [1054 2034 2720 2511 2412] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Reversing the communication plan ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ It is often the case for dynamic applications that objects initially shared with remote processors have their values updated on remote processors. Subsequently, these updated values are required on the originating processor, necessitating them to be communicated back. For such scenarios, the communication plan represented by :py:class:`ZComm` can be used to *reverse* the communication. That is the data that was originally sent will be treated as a receive and vice-versa. To illustrate the use of this feature, we continue with our example. The received data (array of unsigned ints) is modified on the remote processor and communicated back using the :py:meth:`ZComm.Comm_Do_Reverse` method: .. code-block:: python recvdata[:] = rank updated_info = np.zeros(zcomm.nsend, dtype=senddata.dtype) print('Proc %d, sending updated data %s'%(rank, recvdata)) zcomm.Comm_Do_Reverse(recvdata, updated_info) print('Proc %d, received updated data %s'%(rank, updated_info)) .. note:: The size of the buffer each processor will receive in the reverse communication phase is equal to the number of objects initially sent. This is available through the `ZComm.send` attribute The output from this when run on 3 processors is:: $ mpirun -n 3 python zcomm.py Proc 1, Sending [1054 1692 2034] to [0 2 0] Proc 0, Sending [214] to [2] Proc 2, Sending [2720 3034 2511 2412 2975] to [0 1 0 0 1] Proc 2, Received [ 214 1692] Proc 1, Received [3034 2975] Proc 0, Received [1054 2034 2720 2511 2412] Proc 0, sending updated data [0 0 0 0 0] Proc 2, sending updated data [2 2] Proc 1, sending updated data [1 1] Proc 0, received updated data [2] Proc 1, received updated data [0 2 0] Proc 2, received updated data [0 1 0 0 1] ------------------------------------------ Distributed data directories ------------------------------------------ .. py:currentmodule:: pyzoltan.core.zoltan_dd The Zoltan `Distributed Data Directory`_ utility is a convenient way for a processor to locate remote data. It is implemented as a parallel hash map, keyed on the object identifiers (global indices) and with arbitrary user data associated with each entry. The use of this feature is highly problem dependent since the user defined data will necessarily change for different applications. We use a simple example demonstrating it's use. Each processor stores ownership of the object in the distributed directory *without* any user data associated with each entry. We begin with the standard set of imports and create some data on each processor and assign each object a unique global identifier: .. code-block:: python import numpy import pyzoltan.api as pz import mpi4py.MPI as mpi comm = mpi.COMM_WORLD rank = comm.Get_rank() size = comm.Get_size() # every processor owns some data numObjectsTotal = 5 my_indices = numpy.array( range( rank*numObjectsTotal,(rank+1)*numObjectsTotal ), dtype=numpy.uint32 ) gid = pz.UIntArray(my_indices.size); gid.set_data( my_indices ) Additionally, each processor has an **IntArray** which denotes object assignment: .. code-block:: python part_assignment = numpy.array( [rank]*numObjectsTotal, dtype=numpy.int32 ) part = pz.IntArray( part_assignment.size ); part.set_data( part_assignment ) This is sufficient data to create the distributed directory: .. code-block:: python # create a zoltan dd and store the object assignments dd = pz.Zoltan_DD(comm) # update the dd with the data dd.Zoltan_DD_Update(gid, part) Note that after instantiation of the :py:class:`Zoltan_DD` object, we call the :py:meth:`Zoltan_DD.Zoltan_DD_Update` method to update the data associated with this directory. Now, given the shared data available with each processor, we can query for object assignments. In the example below, each processor queries for the objects with global indices `numObjectsTotal + rank` and `numObjectsTotal - rank`: .. code-block:: python # now we can query the dd owner_data = pz.IntArray() # output array for the object data assignment owner_parts = pz.IntArray() # output array for the object assignment # every processor requests for information about some data query_gids = pz.UIntArray(2); query_gids.set_data( numpy.array([numObjectsTotal+rank, numObjectsTotal-rank], dtype=numpy.uint32) ) # use Zoltan_DD_Find to query the data dd.Zoltan_DD_Find(query_gids, owner_parts, owner_data) The result from this quey with :math:`3` processors is shown below:: $ mpirun -n 3 python zoltan_dd.py Processor 0, query_gids = [5 5], owner_parts = [1 1], owner_data = [1 1] Processor 1, query_gids = [6 4], owner_parts = [1 0], owner_data = [1 0] Processor 2, query_gids = [7 3], owner_parts = [1 0], owner_data = [1 0] .. _`Distributed Data Directory`: http://www.cs.sandia.gov/Zoltan/ug_html/ug_util_dd.html .. _Zoltan: http://www.cs.sandia.gov/Zoltan/ pyzoltan-1.0.1/docs/source/reference/000077500000000000000000000000001340064767300175715ustar00rootroot00000000000000pyzoltan-1.0.1/docs/source/reference/index.rst000066400000000000000000000002551340064767300214340ustar00rootroot00000000000000PyZoltan reference documentation ================================ Autogenerated from doc strings using sphinx’s autodoc feature. .. toctree:: :maxdepth: 3 zoltan pyzoltan-1.0.1/docs/source/reference/zoltan.rst000066400000000000000000000003151340064767300216310ustar00rootroot00000000000000============================================= Module zoltan: A Python wrapper for Zoltan ============================================= .. automodule:: pyzoltan.core.zoltan :members: :undoc-members: pyzoltan-1.0.1/docs/source/start.rst000066400000000000000000000125631340064767300175310ustar00rootroot00000000000000============================== Getting started with PyZoltan ============================== PyZoltan is as the name suggests, is a Python wrapper for the Zoltan_ data management library. In PyZoltan, we wrap the specific routines and objects that we wish to use. The following features of Zoltan are currently supported: - Dynamic load balancing using geometric algorithms - Unstructured point-to-point communication - Distributed data directories .. _Zoltan: http://www.cs.sandia.gov/Zoltan/ Installation ------------- PyZoltan requires the following: - numpy - cyarray_ - Cython_ - mpi4py_ - Zoltan_ .. _mpi4py: http://mpi4py.scipy.org/ .. _Cython: https://cython.org .. _cyarray: https://github.com/pypr/cyarray These dependencies can be installed using pip:: $ pip install -r requirements.txt Once this is installed one can install PyZoltan as follows:: $ pip install pyzoltan or via the usual ``setup.py`` method:: $ python setup.py install # or develop Building and linking PyZoltan on OSX/Linux ------------------------------------------- We've provided a simple Zoltan build script in the repository. This works on Linux and OS X but not on Windows. It can be used as:: $ ./build_zoltan.sh INSTALL_PREFIX where the ``INSTALL_PREFIX`` is where the library and includes will be installed. You may edit and tweak the build to suit your installation. However, this script is what we use to build Zoltan on our continuous integration servers. After Zoltan is build, set the environment variable ``ZOLTAN`` to point to the ``INSTALL_PREFIX`` that you used above:: $ export ZOLTAN=$INSTALL_PREFIX Note that replace ``$INSTALL_PREFIX`` with the directory you specified above. After this, follow the instructions to build PySPH. The PyZoltan wrappers will be compiled and available. .. note:: The installation will use ``$ZOLTAN/include`` and ``$ZOLTAN/lib`` to find the actual directories, if these do not work for your particular installation for whatever reason, set the environment variables ``ZOLTAN_INCLUDE`` and ``ZOLTAN_LIBRARY`` explicitly without setting up ``ZOLTAN``. If you used the above script, this would be:: $ export ZOLTAN_INCLUDE=$INSTALL_PREFIX/include $ export ZOLTAN_LIBRARY=$INSTALL_PREFIX/lib Setting up on Ubuntu --------------------- On Xenial and Bionic, Zoltan is already packaged as the ``libtrilinos-zoltan-dev`` package. You can setup a suitable MPI like so:: $ sudo apt-get install openmpi-bin libopenmpi-dev libtrilinos-zoltan-dev Of course, you may use some other MPI implementation. With this you do not need to build your own Zoltan. With this you may setup PyZoltan as follows:: $ export ZOLTAN_INCLUDE=/usr/include/trilinos $ export ZOLTAN_LIBRARY=/usr/lib/x86_64-linux-gnu $ export USE_TRILINOS=1 After this you can build PyZoltan as usual using ``python setup.py install`` or ``python setup.py develop``. Installing mpi4py and Zoltan on OS X -------------------------------------- In order to build/install mpi4py_ one first has to install the MPI library. This is easily done with Homebrew_ as follows (you need to have ``brew`` installed for this but that is relatively easy to do):: $ sudo brew install open-mpi After this is done, one can install mpi4py by hand. First download mpi4py from `here `_. Then run the following (modify these to suit your XCode installation and version of mpi4py):: $ cd /tmp $ tar xvzf ~/Downloads/mpi4py-1.3.1.tar.gz $ cd mpi4py-1.3.1 $ export MACOSX_DEPLOYMENT_TARGET=10.7 $ export SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/ $ python setup.py install Change the above environment variables to suite your SDK version. If this installs correctly, mpi4py should be available. You can now build Zoltan, (the script to do this is in the pyzoltan sources) :: $ cd pyzoltan $ ./build_zoltan.sh ~/zoltan # Replace ~/zoltan with what you want $ export ZOLTAN=~/zoltan You should be set now and should be able to build/install pyzoltan as:: $ python setup.py install # or $ python setup.py develop .. _Homebrew: http://brew.sh/ Installing with conda ---------------------- With conda_, on some platforms, it is possible to just use pre-built Zoltan_ libraries. The pyzoltan repository has an `environment.yml `_ file that shows how this can be done. The ``setup.py`` script is configured so if you have zoltan installed with the erdc channel's zoltan package, you don't need to export any environment variables. .. _conda: https://conda.io Credits -------- PyZoltan was largely implemented by Kunal Puri at the `Department of Aerospace Engineering, IIT Bombay `_ with some improvements and additions by Prabhu. It was originally a separate project and then pulled into PySPH and then pulled out into a separate project due to its use outside of SPH and particle methods. Citing PyZoltan --------------- You may use the following to cite PyZoltan: - Kunal Puri, Prabhu Ramachandran, Pushkar Godbole, "Load Balancing Strategies for SPH", 2013 National Conference on Parallel Computing Technologies (PARCOMPTECH), Bangalore, India, 21-23 February 2013. `URL `_ Changelog ----------- .. include:: ../../CHANGES.rst pyzoltan-1.0.1/environment.yml000066400000000000000000000002201340064767300164640ustar00rootroot00000000000000name: pyzoltan channels: - conda-forge - erdc dependencies: - numpy - cython - mpi4py - openmpi - zoltan - pip: - cyarray pyzoltan-1.0.1/pyzoltan/000077500000000000000000000000001340064767300152635ustar00rootroot00000000000000pyzoltan-1.0.1/pyzoltan/__init__.py000066400000000000000000000012331340064767300173730ustar00rootroot00000000000000__version__ = '1.0.1' def get_include(): """Return the directory in the package that contains header files.""" from os.path import dirname, abspath, join return abspath(join(dirname(__file__), '../')) _has_mpi = None def has_mpi(): """Return True if mpi4py is available. """ global _has_mpi if _has_mpi is None: _has_mpi = True try: import mpi4py # noqa: 401 except ImportError: _has_mpi = False else: mpi4py.rc.initialize = False mpi4py.rc.finalize = True return _has_mpi # Call this to disable mpi4py from initializing MPI on import. has_mpi() pyzoltan-1.0.1/pyzoltan/api.py000066400000000000000000000007141340064767300164100ustar00rootroot00000000000000"""General imports for PyZoltan""" # CArrays import cyarray.carray as carray from cyarray.carray import UIntArray, IntArray, LongArray, \ DoubleArray # Main Zoltan load balancer from pyzoltan.core.zoltan import get_zoltan_id_type_max from pyzoltan.core.zoltan import PyZoltan, ZoltanGeometricPartitioner # Zoltan unstructured comm from pyzoltan.core.zoltan_comm import ZComm # Zoltan distributed directory from pyzoltan.core.zoltan_dd import Zoltan_DD pyzoltan-1.0.1/pyzoltan/core/000077500000000000000000000000001340064767300162135ustar00rootroot00000000000000pyzoltan-1.0.1/pyzoltan/core/__init__.pxd000066400000000000000000000000001340064767300204550ustar00rootroot00000000000000pyzoltan-1.0.1/pyzoltan/core/__init__.py000066400000000000000000000000001340064767300203120ustar00rootroot00000000000000pyzoltan-1.0.1/pyzoltan/core/msstdint.h000066400000000000000000000176451340064767300202460ustar00rootroot00000000000000// ISO C9x compliant stdint.h for Microsoft Visual Studio // Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 // // Copyright (c) 2006-2013 Alexander Chemeris // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // 1. Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // 3. Neither the name of the product nor the names of its contributors may // be used to endorse or promote products derived from this software // without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO // EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // /////////////////////////////////////////////////////////////////////////////// #ifndef _MSC_VER // [ #error "Use this header only with Microsoft Visual C++ compilers!" #endif // _MSC_VER ] #ifndef _MSC_STDINT_H_ // [ #define _MSC_STDINT_H_ #if _MSC_VER > 1000 #pragma once #endif #if _MSC_VER >= 1600 // [ #include #else // ] _MSC_VER >= 1600 [ #include // For Visual Studio 6 in C++ mode and for many Visual Studio versions when // compiling for ARM we should wrap include with 'extern "C++" {}' // or compiler give many errors like this: // error C2733: second C linkage of overloaded function 'wmemchr' not allowed #ifdef __cplusplus extern "C" { #endif # include #ifdef __cplusplus } #endif // Define _W64 macros to mark types changing their size, like intptr_t. #ifndef _W64 # if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300 # define _W64 __w64 # else # define _W64 # endif #endif // 7.18.1 Integer types // 7.18.1.1 Exact-width integer types // Visual Studio 6 and Embedded Visual C++ 4 doesn't // realize that, e.g. char has the same size as __int8 // so we give up on __intX for them. #if (_MSC_VER < 1300) typedef signed char int8_t; typedef signed short int16_t; typedef signed int int32_t; typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; #else typedef signed __int8 int8_t; typedef signed __int16 int16_t; typedef signed __int32 int32_t; typedef unsigned __int8 uint8_t; typedef unsigned __int16 uint16_t; typedef unsigned __int32 uint32_t; #endif typedef signed __int64 int64_t; typedef unsigned __int64 uint64_t; // 7.18.1.2 Minimum-width integer types typedef int8_t int_least8_t; typedef int16_t int_least16_t; typedef int32_t int_least32_t; typedef int64_t int_least64_t; typedef uint8_t uint_least8_t; typedef uint16_t uint_least16_t; typedef uint32_t uint_least32_t; typedef uint64_t uint_least64_t; // 7.18.1.3 Fastest minimum-width integer types typedef int8_t int_fast8_t; typedef int16_t int_fast16_t; typedef int32_t int_fast32_t; typedef int64_t int_fast64_t; typedef uint8_t uint_fast8_t; typedef uint16_t uint_fast16_t; typedef uint32_t uint_fast32_t; typedef uint64_t uint_fast64_t; // 7.18.1.4 Integer types capable of holding object pointers #ifdef _WIN64 // [ typedef signed __int64 intptr_t; typedef unsigned __int64 uintptr_t; #else // _WIN64 ][ typedef _W64 signed int intptr_t; typedef _W64 unsigned int uintptr_t; #endif // _WIN64 ] // 7.18.1.5 Greatest-width integer types typedef int64_t intmax_t; typedef uint64_t uintmax_t; // 7.18.2 Limits of specified-width integer types #if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259 // 7.18.2.1 Limits of exact-width integer types #define INT8_MIN ((int8_t)_I8_MIN) #define INT8_MAX _I8_MAX #define INT16_MIN ((int16_t)_I16_MIN) #define INT16_MAX _I16_MAX #define INT32_MIN ((int32_t)_I32_MIN) #define INT32_MAX _I32_MAX #define INT64_MIN ((int64_t)_I64_MIN) #define INT64_MAX _I64_MAX #define UINT8_MAX _UI8_MAX #define UINT16_MAX _UI16_MAX #define UINT32_MAX _UI32_MAX #define UINT64_MAX _UI64_MAX // 7.18.2.2 Limits of minimum-width integer types #define INT_LEAST8_MIN INT8_MIN #define INT_LEAST8_MAX INT8_MAX #define INT_LEAST16_MIN INT16_MIN #define INT_LEAST16_MAX INT16_MAX #define INT_LEAST32_MIN INT32_MIN #define INT_LEAST32_MAX INT32_MAX #define INT_LEAST64_MIN INT64_MIN #define INT_LEAST64_MAX INT64_MAX #define UINT_LEAST8_MAX UINT8_MAX #define UINT_LEAST16_MAX UINT16_MAX #define UINT_LEAST32_MAX UINT32_MAX #define UINT_LEAST64_MAX UINT64_MAX // 7.18.2.3 Limits of fastest minimum-width integer types #define INT_FAST8_MIN INT8_MIN #define INT_FAST8_MAX INT8_MAX #define INT_FAST16_MIN INT16_MIN #define INT_FAST16_MAX INT16_MAX #define INT_FAST32_MIN INT32_MIN #define INT_FAST32_MAX INT32_MAX #define INT_FAST64_MIN INT64_MIN #define INT_FAST64_MAX INT64_MAX #define UINT_FAST8_MAX UINT8_MAX #define UINT_FAST16_MAX UINT16_MAX #define UINT_FAST32_MAX UINT32_MAX #define UINT_FAST64_MAX UINT64_MAX // 7.18.2.4 Limits of integer types capable of holding object pointers #ifdef _WIN64 // [ # define INTPTR_MIN INT64_MIN # define INTPTR_MAX INT64_MAX # define UINTPTR_MAX UINT64_MAX #else // _WIN64 ][ # define INTPTR_MIN INT32_MIN # define INTPTR_MAX INT32_MAX # define UINTPTR_MAX UINT32_MAX #endif // _WIN64 ] // 7.18.2.5 Limits of greatest-width integer types #define INTMAX_MIN INT64_MIN #define INTMAX_MAX INT64_MAX #define UINTMAX_MAX UINT64_MAX // 7.18.3 Limits of other integer types #ifdef _WIN64 // [ # define PTRDIFF_MIN _I64_MIN # define PTRDIFF_MAX _I64_MAX #else // _WIN64 ][ # define PTRDIFF_MIN _I32_MIN # define PTRDIFF_MAX _I32_MAX #endif // _WIN64 ] #define SIG_ATOMIC_MIN INT_MIN #define SIG_ATOMIC_MAX INT_MAX #ifndef SIZE_MAX // [ # ifdef _WIN64 // [ # define SIZE_MAX _UI64_MAX # else // _WIN64 ][ # define SIZE_MAX _UI32_MAX # endif // _WIN64 ] #endif // SIZE_MAX ] // WCHAR_MIN and WCHAR_MAX are also defined in #ifndef WCHAR_MIN // [ # define WCHAR_MIN 0 #endif // WCHAR_MIN ] #ifndef WCHAR_MAX // [ # define WCHAR_MAX _UI16_MAX #endif // WCHAR_MAX ] #define WINT_MIN 0 #define WINT_MAX _UI16_MAX #endif // __STDC_LIMIT_MACROS ] // 7.18.4 Limits of other integer types #if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260 // 7.18.4.1 Macros for minimum-width integer constants #define INT8_C(val) val##i8 #define INT16_C(val) val##i16 #define INT32_C(val) val##i32 #define INT64_C(val) val##i64 #define UINT8_C(val) val##ui8 #define UINT16_C(val) val##ui16 #define UINT32_C(val) val##ui32 #define UINT64_C(val) val##ui64 // 7.18.4.2 Macros for greatest-width integer constants // These #ifndef's are needed to prevent collisions with . // Check out Issue 9 for the details. #ifndef INTMAX_C // [ # define INTMAX_C INT64_C #endif // INTMAX_C ] #ifndef UINTMAX_C // [ # define UINTMAX_C UINT64_C #endif // UINTMAX_C ] #endif // __STDC_CONSTANT_MACROS ] #endif // _MSC_VER >= 1600 ] #endif // _MSC_STDINT_H_ ] pyzoltan-1.0.1/pyzoltan/core/tests/000077500000000000000000000000001340064767300173555ustar00rootroot00000000000000pyzoltan-1.0.1/pyzoltan/core/tests/3d_partition.py000066400000000000000000000054141340064767300223320ustar00rootroot00000000000000"""3 dimensional tests for the Zoltan partitioner. The test follows the same pattern as the 2D test. To see the output from the script try the following:: $ mpirun -np 4 python 3d_partition.py --plot """ import sys import mpi4py.MPI as mpi comm = mpi.COMM_WORLD rank = comm.Get_rank() size = comm.Get_size() from cyarray.api import UIntArray, DoubleArray from pyzoltan.core import zoltan from numpy import random import numpy as np colors = ['r', 'g', 'b', 'y', 'm', 'k', 'c', 'burlywood'] def plot_points(x, y, z, slice_data, title, filename): if '--plot' not in sys.argv: return from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt fig = plt.figure() s1 = fig.add_subplot(111) s1.axes = Axes3D(fig) for i in range(size): s1.axes.plot3D( x[slice_data[i]], y[slice_data[i]], z[slice_data[i]], c=colors[i], marker='o', linestyle='None', alpha=0.5 ) s1.axes.set_xlabel( 'X' ) s1.axes.set_ylabel( 'Y' ) s1.axes.set_zlabel( 'Z' ) plt.title(title) plt.savefig(filename) numPoints = 1<<12 x = random.random( numPoints ) y = random.random( numPoints ) z = random.random( numPoints ) gid = np.arange( numPoints*size, dtype=np.uint32 )[rank*numPoints:(rank+1)*numPoints] X = np.zeros( size * numPoints ) Y = np.zeros( size * numPoints ) Z = np.zeros( size * numPoints ) GID = np.arange( numPoints*size, dtype=np.uint32 ) comm.Gather( sendbuf=x, recvbuf=X, root=0 ) comm.Gather( sendbuf=y, recvbuf=Y, root=0 ) comm.Gather( sendbuf=z, recvbuf=Z, root=0 ) if rank == 0: slice_data = [slice(i*numPoints, (i+1)*numPoints) for i in range(size)] plot_points( X, Y, Z, slice_data, title="Initial Distribution", filename="initial.pdf" ) # partition the points using PyZoltan xa = DoubleArray(numPoints); xa.set_data(x) ya = DoubleArray(numPoints); ya.set_data(y) za = DoubleArray(numPoints); za.set_data(z) gida = UIntArray(numPoints); gida.set_data(gid) # create the geometric partitioner pz = zoltan.ZoltanGeometricPartitioner( dim=3, comm=comm, x=xa, y=ya, z=za, gid=gida) # call the load balancing function pz.set_lb_method('RIB') pz.Zoltan_Set_Param('DEBUG_LEVEL', '1') pz.Zoltan_LB_Balance() # get the new assignments my_global_ids = list( gid ) # remove points to be exported for i in range(pz.numExport): my_global_ids.remove( pz.exportGlobalids[i] ) # add points to be imported for i in range(pz.numImport): my_global_ids.append( pz.importGlobalids[i] ) new_gids = np.array( my_global_ids, dtype=np.uint32 ) # gather the new gids on root as a list NEW_GIDS = comm.gather( new_gids, root=0 ) # save the new partition if rank == 0: plot_points( X, Y, Z, NEW_GIDS, title='Final Distribution', filename='final.pdf' ) comm.barrier() pyzoltan-1.0.1/pyzoltan/core/tests/__init__.py000066400000000000000000000000001340064767300214540ustar00rootroot00000000000000pyzoltan-1.0.1/pyzoltan/core/tests/geometric_partitioner.py000066400000000000000000000114641340064767300243330ustar00rootroot00000000000000"""Clone of the Zoltan tests for the geometric partitioners (RCB, RIB and HSFC)""" from __future__ import print_function from os.path import abspath, dirname, join import sys import mpi4py.MPI as mpi comm = mpi.COMM_WORLD from cyarray.api import UIntArray, DoubleArray from pyzoltan.core import zoltan MY_DIR = dirname(abspath(__file__)) ack_tag = 5 count_tag = 10 id_tag = 15 x_tag = 20 y_tag = 25 ack = 0 import numpy as np from numpy import loadtxt def read_input_file(fname=join(MY_DIR, 'mesh.txt')): rank = comm.Get_rank() size = comm.Get_size() if rank == 0: # read the data data_line = 0 data = loadtxt( fname, dtype=int ) numGlobalPoints = data[data_line][0]; data_line += 1 if size > 1: nobj = numGlobalPoints // 2 remaining = numGlobalPoints - nobj else: nobj = numGlobalPoints remaining = 0 myGlobalIds = np.ones(shape=nobj, dtype=np.uint32) x = np.ones(shape=nobj, dtype=np.float64) y = np.ones(shape=nobj, dtype=np.float64) numMyPoints = nobj for i in range(nobj): myGlobalIds[i], x[i], y[i] = data[data_line]; data_line += 1 gids = np.ones(shape=(nobj+1), dtype=np.uint32) xcoord = np.ones(shape=(nobj+1), dtype=np.float64) ycoord = np.ones(shape=(nobj+1), dtype=np.float64) for i in range(1,size): if (remaining > 1): nobj = remaining // 2 remaining -= nobj elif (remaining == 1): nobj = 1 remaining = 0 else: nobj = 0 if ( (i== size-1) and (remaining > 0) ): nobj += remaining if (nobj > 0): for j in range(nobj): gids[j],xcoord[j],ycoord[j] = data[data_line];data_line += 1 comm.send(obj=nobj, dest=i, tag=count_tag) ack = comm.recv(source=i, tag=ack_tag) if (nobj > 0): comm.send(gids[:nobj], dest=i, tag=id_tag) comm.send(xcoord[:nobj], dest=i, tag=x_tag) comm.send(ycoord[:nobj], dest=i, tag=y_tag) ack = 0 for i in range(1, size): comm.send(ack, dest=i, tag=0) else: numMyPoints = comm.recv(source=0, tag=count_tag) ack = 0 if (numMyPoints > 0): myGlobalIds = np.ones(shape=numMyPoints, dtype=np.uint32) x = np.ones(shape=numMyPoints, dtype=np.float64) y = np.ones(shape=numMyPoints, dtype=np.float64) comm.send(obj=ack, dest=0, tag=ack_tag) myGlobalIds[:] = comm.recv(source=0, tag=id_tag) x[:] = comm.recv(source=0, tag=x_tag) y[:] = comm.recv(source=0, tag=y_tag) elif ( numMyPoints == 0 ): comm.send(obj=ack, dest=0, tag=ack_tag) else: sys.exit(-1) ack = comm.recv( source=0, tag=0 ) if ( ack < 0 ): sys.exit(-1) return numMyPoints, myGlobalIds, x, y def show_mesh(rank, numPoints, gids, parts): partAssign = np.zeros(shape=25, dtype=np.int32) allPartAssign = np.zeros(shape=25, dtype=np.int32) i = j = part = 0 for i in range(numPoints): partAssign[ gids[i]-1 ] = parts[i] comm.Reduce(sendbuf=partAssign, recvbuf=allPartAssign, op=mpi.MAX, root=0) if rank==0: for i in range(20, -1, -5): for j in range(5): part = allPartAssign[i+j] if j < 4: print("%d----"%(part),) else: print("%d"%(part)) if i > 0: print("| | | | |") print() # read the input file and distribute objects across processors numMyPoints, myGlobalIds, x, y = read_input_file() rank = comm.Get_rank() parts = np.ones(shape=numMyPoints, dtype=np.int32) for i in range(numMyPoints): parts[i] = rank # now do the load balancing _x = np.asarray(x); _y = np.asarray(y); _gid = np.asarray(myGlobalIds) _z = np.zeros_like(x) x = DoubleArray(numMyPoints); x.set_data(_x) y = DoubleArray(numMyPoints); y.set_data(_y) z = DoubleArray(numMyPoints); z.set_data(_z) gid = UIntArray(numMyPoints); gid.set_data(_gid) pz = zoltan.ZoltanGeometricPartitioner(dim=2, comm=comm, x=x, y=y, z=z, gid=gid) # set the weights to 0 by default weights = pz.weights.get_npy_array() weights[:] = 0 pz.set_lb_method("RCB") pz.Zoltan_Set_Param("DEBUG_LEVEL","0") pz.Zoltan_LB_Balance() if rank == 0: print("\nMesh partition before Zoltan\n") comm.barrier() show_mesh(rank, numMyPoints, myGlobalIds, parts) for i in range(pz.numExport): parts[ pz.exportLocalids[i] ] = pz.exportProcs[i] if rank == 0: print("Mesh partition assignment after calling Zoltan") show_mesh(rank, numMyPoints, myGlobalIds, parts) pyzoltan-1.0.1/pyzoltan/core/tests/mesh.txt000066400000000000000000000015151340064767300210540ustar00rootroot00000000000000## ## This simple structure is used by many of the nightly Zoltan tests. ## It can be interpreted as a mesh, a graph, a hypergraph, or simply ## as 25 objects to be partitioned. ## ## 21----22----23----24---25 ## | | | | | ## 16----17----18----19---20 ## | | | | | ## 11----12----13----14---15 ## | | | | | ## 6-----7-----8-----9----10 ## | | | | | ## 1-----2-----3-----4----5 ## ## Regarded as a mesh, vertex 1 is at location (0,0) ## and vertex 25 is at location (4,4); ## ## Number of vertices: 25 -1 -1 ## Here we list for each vertex, its global ID and location. 1 0 0 2 1 0 3 2 0 4 3 0 5 4 0 6 0 1 7 1 1 8 2 1 9 3 1 10 4 1 11 0 2 12 1 2 13 2 2 14 3 2 15 4 2 16 0 3 17 1 3 18 2 3 19 3 3 20 4 3 21 0 4 22 1 4 23 2 4 24 3 4 25 4 4 pyzoltan-1.0.1/pyzoltan/core/tests/test_zoltan.py000066400000000000000000000016301340064767300222750ustar00rootroot00000000000000"""Running script for Zoltan""" import unittest from pytest import mark, importorskip from pyzoltan.tools import run_parallel_script path = run_parallel_script.get_directory(__file__) class PyZoltanTests(unittest.TestCase): @classmethod def setUpClass(cls): importorskip("mpi4py.MPI") importorskip("pyzoltan.core.zoltan") @mark.parallel def test_zoltan_geometric_partitioner(self): run_parallel_script.run( filename='geometric_partitioner.py', nprocs=4, path=path ) @mark.slow @mark.parallel def test_zoltan_partition(self): run_parallel_script.run( filename='3d_partition.py', nprocs=4, timeout=90.0, path=path ) @mark.parallel def test_zoltan_zcomm(self): run_parallel_script.run( filename='zcomm.py', nprocs=4, path=path ) if __name__ == '__main__': unittest.main() pyzoltan-1.0.1/pyzoltan/core/tests/zcomm.py000066400000000000000000000040401340064767300210520ustar00rootroot00000000000000"""Tests for the Zoltan unstructured communication package""" import mpi4py.MPI as mpi import numpy as np from numpy import random # import the unstructured communication package from pyzoltan.core import zoltan_comm from pyzoltan.core import zoltan # MPI comm, rank and size comm = mpi.COMM_WORLD rank = comm.Get_rank() size = comm.Get_size() # Initialize the Zoltan library zoltan_version = zoltan.Zoltan_Initialize() # each processor creates some random data numObjectsTotal = 1 << 10 x = random.random(numObjectsTotal) gids = np.array(np.arange(size * numObjectsTotal) )[rank * numObjectsTotal:(rank + 1) * numObjectsTotal] gids = gids.astype(np.uint32) # arbitrarily assign some objects to be sent to some other processor nsend = np.int32(random.random_integers(low=1, high=5)) object_ids = random.random_integers(low=0, high=numObjectsTotal, size=nsend) proclist = random.random_integers( low=0, high=size - 1, size=nsend ).astype(np.int32) my_indices = np.where(proclist == rank)[0] proclist[my_indices] = (rank + 1) % size # create the ZComm object tag = np.int32(0) zcomm = zoltan_comm.ZComm(comm, tag=tag, nsend=nsend, proclist=proclist) # the data to send and receive senddata = x[object_ids] recvdata = np.ones(zcomm.nreturn) # use zoltan to exchange doubles print("Proc %d, Sending %s to %s" % (rank, senddata, proclist)) zcomm.Comm_Do(senddata, recvdata) print("Proc %d, Received %s" % (rank, recvdata)) # use zoltan to exchange unsigned ints senddata = gids[object_ids] recvdata = np.ones(zcomm.nreturn, dtype=np.uint32) zcomm.set_nbytes(recvdata.itemsize, recvdata.dtype) print("Proc %d, Sending %s to %s" % (rank, senddata, proclist)) zcomm.Comm_Do(senddata, recvdata) print("Proc %d, Received %s" % (rank, recvdata)) # Test the Comm Reverse function # modify the received data recvdata[:] = rank updated_info = np.zeros(zcomm.nsend, dtype=senddata.dtype) print('Proc %d, sending updated data %s' % (rank, recvdata)) zcomm.Comm_Do_Reverse(recvdata, updated_info) print('Proc %d, received updated data %s' % (rank, updated_info)) pyzoltan-1.0.1/pyzoltan/core/zoltan.pxd000066400000000000000000000100651340064767300202410ustar00rootroot00000000000000cimport mpi4py.MPI as mpi if MPI4PY_V2: from mpi4py cimport libmpi as mpic else: from mpi4py cimport mpi_c as mpic # Zoltan imports from pyzoltan.czoltan cimport czoltan from pyzoltan.czoltan.czoltan cimport Zoltan_Struct # Zoltan type imports from pyzoltan.czoltan.czoltan_types cimport ZOLTAN_ID_PTR, ZOLTAN_ID_TYPE, \ ZOLTAN_OK, ZOLTAN_WARN, ZOLTAN_FATAL, ZOLTAN_MEMERR # NUMPY import numpy as np cimport numpy as np # Carrays from cyarray.carray cimport UIntArray, IntArray, LongArray, DoubleArray # Compatibility for older MPI versions and later # mpi4py releases (Ubuntu 14.04 is one such). cdef extern from 'mpi-compat.h': pass # Error checking for Zoltan cdef _check_error(int ierr) # Pointer to the Zoltan struct cdef struct _Zoltan_Struct: czoltan.Zoltan_Struct* zz cdef class PyZoltan: # problem dimensionsionality cdef public int dim # version number cdef public double version # mpi.Comm object and associated rank and size cdef public object comm cdef public int rank, size # Pointer to the Zoltan structure upon creation cdef _Zoltan_Struct _zstruct # string to store the current load balancing method cdef public str lb_method # Arrays returned by Zoltan cdef public UIntArray exportGlobalids cdef public UIntArray exportLocalids cdef public IntArray exportProcs cdef public UIntArray importGlobalids cdef public UIntArray importLocalids cdef public IntArray importProcs # the number of objects to import/export cdef public int numImport, numExport cdef public np.ndarray procs # processors of range size cdef public np.ndarray parts # partitions of range size # data array for the object weights cdef public DoubleArray weights # General Zoltan parameters (refer the user guide) cdef public str debug_level cdef public str obj_weight_dim cdef public str edge_weight_dim cdef public str return_lists ############################################################### # Member functions ############################################################### # after a load balance, copy the Zoltan allocated lists to local # numpy arrays. The Zoltan lists are subsequently deallocated cdef _set_zoltan_lists( self, int numExport, # number of objects to export ZOLTAN_ID_PTR _exportGlobal, # global indices of export objects ZOLTAN_ID_PTR _exportLocal, # local indices of export objects int* _exportProcs, # target processors to export int numImport, # number of objects to import ZOLTAN_ID_PTR _importGlobal, # global indices of import objects ZOLTAN_ID_PTR _importLocal, # local indices of import objects int* _importProcs # target processors to import ) # Invert the export lists. Given a situation where every processor # knows which objects must be exported to remote processors, a # call to invert lists will return a list of objects that must be # imported from remote processors. cpdef Zoltan_Invert_Lists(self) # User defined data for the RCB, RIB and HSFC methods cdef struct CoordinateData: # flag for using weights bint use_weights # dimensionality of the problem int dim # number of local/global points int numGlobalPoints int numMyPoints # pointers to the object data ZOLTAN_ID_PTR myGlobalIDs double* obj_wts double* x double* y double *z cdef class ZoltanGeometricPartitioner(PyZoltan): # data arrays for the coordinates cdef public DoubleArray x, y, z # data array for the global indices cdef public UIntArray gid # User defined structure to hold the coordinate data for the # Zoltan interface cdef CoordinateData _cdata # number of global and local objects cdef public int num_global_objects, num_local_objects # ZOLTAN parameters for Geometric partitioners cdef public str keep_cuts pyzoltan-1.0.1/pyzoltan/core/zoltan.pyx000066400000000000000000000650211340064767300202700ustar00rootroot00000000000000"""Definitions for the Zoltan wrapper This module defines the main wrapper for the Zoltan library. Users can use derived classes of PyZoltan to perform a domain decomposition on their data. Currently, the following partitioners are available: - ZoltanGeometricPartitioner : Dynamic load balancing using RCB, RIB, HSFC Zoltan works by calling user defined call back functions that have to be registered with Zoltan. These functions query a user defined data structure and provide the requisite information for Zoltan to proceed with the load balancing. The user defined data structures are defined as structs in the accompanying header (.pxd) file. The user is responsible to populate this struct appropriately with application specific data and register the right query functions with Zoltan for the chosen algorithm. Refer to the Zoltan reference manual for a complete list of available query functions, load balancing algorithms and auxiliary functions. """ cimport mpi4py.MPI as mpi # Cython for pure mode cimport cython # NUMPY import numpy as np cimport numpy as np # malloc and friends from libc.stdlib cimport malloc, free # Zoltan config imports ZOLTAN_UNSIGNED_INT=True try: from pyzoltan.czoltan.czoltan_config cimport UNSIGNED_INT_GLOBAL_IDS except ImportError: ZOLTAN_UNSIGNED_INT=False from cyarray.carray import DoubleArray, IntArray, UIntArray # Python standard library imports from warnings import warn # Local imports import zoltan_utils def get_zoltan_id_type_max(): if ZOLTAN_UNSIGNED_INT: return (1<<32) - 1 cdef extern from "limits.h": cdef unsigned int UINT_MAX cdef int INT_MAX cdef int INT_MIN # Zoltan error function cdef _check_error(int ierr): if ierr == ZOLTAN_WARN: warn("ZOTLAN WARNING") if ierr == ZOLTAN_FATAL: raise RuntimeError("Zoltan FATAL error!") if ierr == ZOLTAN_MEMERR: raise MemoryError("Zoltan MEMERR error!") def Zoltan_Initialize(argc=0, args=''): """Initialize Zoltan""" cdef float version cdef char **c_argv args = [ bytes(x) for x in args ] c_argv = malloc( sizeof(char*) *len(args) ) if c_argv is NULL: raise MemoryError() try: for idx, s in enumerate( args ): c_argv[idx] = s finally: free( c_argv ) # call the Zoltan Init function error_code = cython.declare(cython.int) error_code = czoltan.Zoltan_Initialize(len(args), c_argv, &version) _check_error(error_code) return version ############################################################### # ZOLTAN QUERY FUNCTIONS FOR GEOMETRIC PARTITIONING ############################################################### cdef int get_number_of_objects(void* data, int* ierr): """Return the number of local objects on a processor. Methods: RCB, RIB, HSFC """ cdef CoordinateData* _data = data return _data.numMyPoints cdef void get_obj_list(void* data, int sizeGID, int sizeLID, ZOLTAN_ID_PTR globalID, ZOLTAN_ID_PTR localID, int wgt_dim, float* obj_wts, int* ierr): """Return the local and global ids of the objects. Methods: RCB, RIB, HSFC """ cdef CoordinateData* _data = data cdef int numMyPoints = _data.numMyPoints cdef int i # check object weight dimensions if wgt_dim > 1: raise ValueError("Object weight %d not supported"%wgt_dim) for i in range (numMyPoints): globalID[i] = _data.myGlobalIDs[i] localID[i] = i # set the object weights if _data.use_weights: obj_wts[i] = _data.obj_wts[i] cdef int get_num_geom(void* data, int* ierr): """Return the dimensionality of the problem.""" cdef CoordinateData* _data = data cdef int dim = _data.dim ierr[0] = 0 return dim cdef void get_geometry_list(void* data, int sizeGID, int sizeLID, int num_obj, ZOLTAN_ID_PTR globalID, ZOLTAN_ID_PTR localID, int num_dim, double* geom_vec, int* ierr): """Return the coordinate locations for Zoltan. Methods: RCB, RIB, HSFC """ cdef CoordinateData* _data = data cdef int i, dim = _data.dim if dim == 2: for i in range( num_obj ): geom_vec[2*i + 0] = _data.x[i] geom_vec[2*i + 1] = _data.y[i] elif dim == 3: for i in range( num_obj ): geom_vec[3*i + 0] = _data.x[i] geom_vec[3*i + 1] = _data.y[i] geom_vec[3*i + 2] = _data.z[i] else: raise ValueError("Dimension %d invalid for PyZoltan!"%dim) ######################################################################### # Zoltan Wrapper ######################################################################### cdef class PyZoltan: """Base class for the Python wrapper for Zoltan All Zoltan partitioners are derived from PyZoltan. This class sets up the basic arrays used (import/export lists) for load balancing, methods to set Zoltan parameters and the actual load balancing method itself. The specific Zoltan interface functions that are exposed through this class are: - Zoltan_LB_Balance : The main load balancing routine. Upon return, a list of indices (local, global) to be imported and exported are available. - Zoltan_Invert_Lists : Invert import/export lists. Upon return, a given set of lists is inverted. - Zoltan_Set_Param : Set the value of a Zoltan parameter """ def __init__(self, object comm, str obj_weight_dim="0", str edge_weight_dim="0", debug_level="0", str return_lists="ALL"): """Initialize the Zoltan wrapper Parameters ---------- comm : MPI communicator MPI communicator to be used obj_weight_dim : str, default "0" Number of weights accociated with an object. The default value implies all objects have the same weight. edge_weight_dim : str, default "0" Number of weights associated with an edge. The default value implies all edges have the same weight. debug_level : str, default "0" Zoltan debug level. Values in the range [0, 10] are accepted return_lists : str, default "ALL" Kind of lists to be returned by Zoltan. Valid values are "IMPORT", "EXPORT", "ALL", "PART", "NONE". For explanation see notes section below. Notes ----- Valid values of the return_lists argument are: - "IMPORT": return only lists for objects to be imported, - "EXPORT": return only lists for objects to be exported, - "ALL": return both import and export lists, - "PART": return the processor and partition assignment for all local objects, - "NONE": don't return anything Instantiation of the PyZoltan object initializes the Zoltan library, creates the Zoltan struct ubiquitous in Zoltan calls and also sets up the import/export lists that will be used for the data exchange. It also sets up some reasonable default values. In general though, any parameter can be set using the Zoltan_Set_Param function wrapper """ self.comm = comm self.rank = comm.Get_rank() self.size = comm.Get_size() # initialize the Zoltan library self.version = Zoltan_Initialize() # Create the Zoltan struct self.Zoltan_Create(comm) # setup the required arrays self._setup_zoltan_arrays() # set default values self.edge_weight_dim = edge_weight_dim self.obj_weight_dim = obj_weight_dim self.return_lists = return_lists self.debug_level = debug_level self._set_default() ####################################################################### # Public interface ####################################################################### def set_num_local_objects(self, int num_local_objects): """Set the number of local objects""" self.num_local_objects = num_local_objects def set_num_global_objects(self, int num_global_objects): """Set the number of global objects""" self.num_global_objects = num_global_objects def Zoltan_Create(self, mpi.Comm comm): """Create the Zoltan struct""" cdef mpic.MPI_Comm _comm = comm.ob_mpi cdef czoltan.Zoltan_Struct* zz = czoltan.Zoltan_Create( _comm ) self._zstruct.zz = zz def Zoltan_Set_Param(self, str _name, str _value): """Set a general Zoltan Parameter""" cdef bytes tmp_name = _name.encode() cdef bytes tmp_value = _value.encode() cdef char* name = tmp_name cdef char* value = tmp_value cdef czoltan.Zoltan_Struct* zz = self._zstruct.zz czoltan.Zoltan_Set_Param( zz, name, value ) def set_lb_method(self, str value): """Set the Zoltan load balancing method""" cdef str name = "LB_METHOD" self.lb_method = value self.Zoltan_Set_Param(name, value) def Zoltan_Destroy(self): """Destroy the Zoltan struct""" czoltan.Zoltan_Destroy( &self._zstruct.zz ) def Zoltan_LB_Balance(self): """Call the Zoltan load balancing function. After a call to this function, the import/export lists required for load balancing are available as data attributes. The method returns an integer (1:True, 0:False) indicating whether a change in the assignment of the objects is necessary. """ cdef Zoltan_Struct* zz = self._zstruct.zz # set the object data. We must ensure that the global ids are # unique and properly set up before calling LB_Balance self._set_data() # initialize the data buffers for input to Zoltan cython.declare(changes=cython.int, numGidEntries=cython.int, numLidEntries=cython.int, numImport=cython.int, numExport=cython.int, ierr=cython.int) cython.declare(importGlobal=ZOLTAN_ID_PTR,importLocal=ZOLTAN_ID_PTR, exportGlobal=ZOLTAN_ID_PTR,exportLocal=ZOLTAN_ID_PTR) cython.declare(importProcs=cython.p_int, exportProcs=cython.p_int) # call the load balance function ierr = czoltan.Zoltan_LB_Balance( zz, cython.address(changes), cython.address(numGidEntries), cython.address(numLidEntries), cython.address(numImport), &importGlobal, &importLocal, &importProcs, cython.address(numExport), &exportGlobal, &exportLocal, &exportProcs ) _check_error(ierr) # Copy the Zoltan allocated lists locally self.reset_zoltan_lists() self._set_zoltan_lists(numExport, exportGlobal, exportLocal, exportProcs, numImport, importGlobal, importLocal, importProcs) # free the Zoltan allocated data ierr = czoltan.Zoltan_LB_Free_Data( &importGlobal, &importLocal, &importProcs, &exportGlobal, &exportLocal, &exportProcs ) _check_error(ierr) # return changes to determine if we need to do data movement return changes def reset_zoltan_lists(self): """Reset all Zoltan Import/Export lists""" self.exportGlobalids.reset() self.exportLocalids.reset() self.exportProcs.reset() self.importGlobalids.reset() self.importLocalids.reset() self.importProcs.reset() self.numExport = 0 self.numImport = 0 cpdef Zoltan_Invert_Lists(self): """Invert export lists to get import lists At times, we know which particles to export without any information aobut import requirements. Two situations in which this arises is in computing neighbors for geometric partitioners and load balancing using cell lists. """ cdef Zoltan_Struct* zz = self._zstruct.zz cdef UIntArray exportGlobalids = self.exportGlobalids cdef UIntArray exportLocalids = self.exportLocalids cdef IntArray exportProcs = self.exportProcs cdef UIntArray importGlobalids = self.importGlobalids cdef UIntArray importLocalids = self.importLocalids cdef IntArray importProcs = self.importProcs cdef int numExport = self.numExport cdef int i, ierr # declare the import arrays cython.declare(_importGlobalids=ZOLTAN_ID_PTR, _importLocalids=ZOLTAN_ID_PTR, _importProcs=cython.p_int, numImport=cython.int) ierr = czoltan.Zoltan_Compute_Destinations( zz, numExport, exportGlobalids.data, exportLocalids.data, exportProcs.data, &numImport, &_importGlobalids, &_importLocalids, &_importProcs, ) _check_error(ierr) # save the data in the local import lists importGlobalids.resize(numImport) importLocalids.resize(numImport) importProcs.resize(numImport) for i in range(numImport): importGlobalids.data[i] = _importGlobalids[i] importLocalids.data[i] = _importLocalids[i] importProcs.data[i] = _importProcs[i] self.numImport = numImport # free the Zoltan allocated lists ierr = czoltan.Zoltan_LB_Free_Part( &_importGlobalids, &_importLocalids, &_importProcs, NULL, ) _check_error(ierr) ####################################################################### # Private interface ####################################################################### cdef _set_zoltan_lists(self, int numExport, ZOLTAN_ID_PTR _exportGlobal, ZOLTAN_ID_PTR _exportLocal, int* _exportProcs, int numImport, ZOLTAN_ID_PTR _importGlobal, ZOLTAN_ID_PTR _importLocal, int* _importProcs): "Copy the import/export lists returned by Zoltan" cdef int i cdef UIntArray exportGlobalids = self.exportGlobalids cdef UIntArray exportLocalids = self.exportLocalids cdef IntArray exportProcs = self.exportProcs cdef UIntArray importGlobalids = self.importGlobalids cdef UIntArray importLocalids = self.importLocalids cdef IntArray importProcs = self.importProcs # set the values for the number of import and export objects self.numImport = numImport; self.numExport = numExport # resize the PyZoltan import lists importGlobalids.resize(numImport) importLocalids.resize(numImport) importProcs.resize(numImport) # resize the PyZoltan export lists exportGlobalids.resize(numExport) exportLocalids.resize(numExport) exportProcs.resize(numExport) # set the Import/Export lists for i in range(numExport): exportGlobalids.data[i] = _exportGlobal[i] exportLocalids.data[i] = _exportLocal[i] exportProcs.data[i] = _exportProcs[i] for i in range(numImport): importGlobalids.data[i] = _importGlobal[i] importLocalids.data[i] = _importLocal[i] importProcs.data[i] = _importProcs[i] def _update_gid(self, UIntArray gid): """Update the unique global indices. We call a utility function to get the new number of particles across the processors and then linearly assign indices to the objects. """ cdef int num_global_objects, num_local_objects, _sum, i cdef np.ndarray[ndim=1, dtype=np.int32_t] num_objects_data cdef mpi.Comm comm = self.comm cdef int rank = self.rank cdef int size = self.size num_objects_data = zoltan_utils.get_num_objects_per_proc( comm, self.num_local_objects) num_local_objects = num_objects_data[ rank ] num_global_objects = np.sum( num_objects_data ) _sum = np.sum( num_objects_data[:rank] ) gid.resize( num_local_objects ) for i in range( num_local_objects ): gid.data[i] = ( _sum + i ) self.num_global_objects = num_global_objects self.num_local_objects = num_local_objects def _setup_zoltan_arrays(self): """Import/Export lists used by Zoltan""" self.exportGlobalids = UIntArray() self.exportLocalids = UIntArray() self.exportProcs = IntArray() self.importGlobalids = UIntArray() self.importLocalids = UIntArray() self.importProcs = IntArray() self.procs = np.ones(shape=self.size, dtype=np.int32) self.parts = np.ones(shape=self.size, dtype=np.int32) # object weight arrays self.weights = DoubleArray() def _set_default(self): "Set reasonable default values" self.Zoltan_Set_Param("DEBUG_LEVEL", self.debug_level) self.Zoltan_Set_Param("OBJ_WEIGHT_DIM", self.obj_weight_dim) self.Zoltan_Set_Param("EDGE_WEIGHT_DIM", self.edge_weight_dim) self.Zoltan_Set_Param("RETURN_LISTS", self.return_lists) def _set_data(self): raise NotImplementedError("PyZoltan::_set_data should not be called!") def __dealloc__(self): self.Zoltan_Destroy() cdef class ZoltanGeometricPartitioner(PyZoltan): """Concrete implementation of PyZoltan using the geometric algorithms. Use the ZoltanGeometricPartitioner to load balance/partition a set of objects defined by their coordinates (x, y & z) and an array of unique global indices. Additionally, each object can also have a weight associated with it. """ def __init__(self, int dim, object comm, DoubleArray x, DoubleArray y, DoubleArray z, UIntArray gid, str obj_weight_dim="0", str return_lists="ALL", str lb_method="RCB", str keep_cuts="1" ): """Constructor Parameters ---------- dim : int Problem dimensionality comm : mpi4py.MPI.Comm MPI communicator (typically COMM_WORLD) x, y, z : DoubleArray Coordinate arrays for the objects to be partitioned gid : UIntArray Global indices for the objects to be partitioned obj_weight_dim : str Optional weights for the objects (this should be 1 at most) return_lists : str Specify lists requested from Zoltan (Import/Export) lb_method : str String specifying the load balancing method to use keep_cuts : str Parameter used for adding items to a decomposition """ # sanity check if not ( x.length == y.length == z.length ): raise ValueError('Coordinate data (x, y, z) lengths not equal!') # values needed for defaults self.lb_method = lb_method self.keep_cuts = keep_cuts # Base class initialization super(ZoltanGeometricPartitioner, self).__init__( comm, obj_weight_dim=obj_weight_dim, return_lists=return_lists) # set the problem dimensionality self.dim = dim # set the data arrays self.x = x; self.y = y; self.z = z; self.gid = gid # number of local objects. This is taken equal to the length # of the data supplied initially self.num_local_objects = num_local_objects = x.length # object weights. If obj_weight_dim == "0" this array should be 0 self.weights.resize( num_local_objects ) # register the query functions with Zoltan self._zoltan_register_query_functions() ####################################################################### # Private interface ####################################################################### def Zoltan_Box_PP_Assign(self, double xmin, double ymin, double zmin, double xmax, double ymax, double zmax): """Find the processors that intersect with a box For Zoltan, given a domain decomposition using a geometric algorithm, we can use Zoltan_Box_PP_Assign to find processors that intersect with a rectilinear box defined by the values xmin, .... zmax """ cdef Zoltan_Struct* zz = self._zstruct.zz cdef np.ndarray[ndim=1, dtype=np.int32_t] procs = self.procs cdef np.ndarray[ndim=1, dtype=np.int32_t] parts = self.parts cdef int numprocs = 0 cdef int numparts = 0 cdef int ierr # initialize procs and parts procs[:] = -1 parts[:] = -1 ierr = czoltan.Zoltan_LB_Box_PP_Assign( zz, xmin, ymin, zmin, xmax, ymax, zmax, procs.data, &numprocs, parts.data, &numparts ) _check_error(ierr) return numprocs def Zoltan_Point_PP_Assign(self, double x, double y, double z): """Find to which processor a given point must be sent to For Zoltan, given a domain decomposition using a geometric algorithm, we can use Zoltan_Point_PP_Assign to find a processor in the decomposition to which a given point (x, y, z) belongs to """ cdef Zoltan_Struct* zz = self._zstruct.zz cdef int ierr, proc = -1, part = -1 cdef double[3] coords coords[0] = x; coords[1] = y; coords[2] = z ierr = czoltan.Zoltan_LB_Point_PP_Assign( zz, coords, &proc, &part) _check_error(ierr) return proc # Load balancing options def set_rcb_lock_directions(self, str flag): """Flag to fix the directions of the RCB cuts Legal values are: 0 : don't fix directions (default when using RCB) 1 : fix directions Notes: This option is only valid for the RCB based geometric partitioner. Setting this option to True (1) will mean the direction of the cuts used at the beginning is re-used for the duration of the simulation. """ self._check_lb_method('RCB') self.Zoltan_Set_Param("RCB_LOCK_DIRECTIONS", flag) def set_rcb_reuse(self, str flag): """Flag to use the previous cut direction as a guess Legal values are: 0 : don't reuse 1 : reuse """ self._check_lb_method('RCB') self.Zoltan_Set_Param('RCB_REUSE', flag) def set_rcb_rectilinear_blocks(self, str flag): """Flag controlling the shape of the RCB regions This option will avoid any unwanted projections of the different partitions at the cost of a slight imbalance. """ self._check_lb_method('RCB') self.Zoltan_Set_Param('RCB_RECTILINEAR_BLOCKS', flag) def set_rcb_directions(self, str flag): """Flag to group the cuts along a given direction Legal values (refer to the Zoltan User Guide): '0' = don't order cuts; '1' = xyz '2' = xzy '3' = yzx '4' = yxz '5' = zxy '6' = zyx """ self._check_lb_method('RCB') self.Zoltan_Set_Param('RCB_SET_DIRECTIONS', flag) ####################################################################### # Private interface ####################################################################### def _check_lb_method(self, str expected): if not self.lb_method == expected: raise ValueError('Invalid LB_METHOD %s'%(self.lb_method)) def _zoltan_register_query_functions(self): """Register query functions for the Geometric based partitioners The Geometric based partitioners are the simplest kind of dynamic load balancing algorithms provided by Zoltan. These require four callbakcs to be registered, two geometry based and two object base callbakcs respectively: Num_Obj_Fn : Returns the number of objects assigned locally Obj_List_Fn : Populates Zoltan allocated arrays with local and global indices for objects assigned locally Num_Geom_Fn : Returns the number of objects used to represent the geometry of an object (2 for 2D applications, 3 for 3D applications etc) Geom_Multi_Fn : Populates Zoltan allocated arrays with geometry information (x, y, z, weights) of the objects assigned locally. """ cdef Zoltan_Struct* zz = self._zstruct.zz cdef int err # Num_Obj_Fn err = czoltan.Zoltan_Set_Num_Obj_Fn( zz, &get_number_of_objects, &self._cdata) _check_error(err) # Obj_List_Fn err = czoltan.Zoltan_Set_Obj_List_Fn( zz, &get_obj_list, &self._cdata) _check_error(err) # Num_Geom_Fn err = czoltan.Zoltan_Set_Num_Geom_Fn( zz, &get_num_geom, &self._cdata) _check_error(err) # Geom_Multi_Fn err = czoltan.Zoltan_Set_Geom_Multi_Fn( zz, &get_geometry_list, &self._cdata) _check_error(err) def _set_data(self): """Set the user defined particle data structure for Zoltan. This is called just before load balancing to update the user defined data structure (CoordinateData) for Zoltan. """ self._cdata.dim = self.dim self._cdata.numGlobalPoints = self.num_global_objects self._cdata.numMyPoints = self.num_local_objects self._cdata.myGlobalIDs = self.gid.data self._cdata.x = self.x.data self._cdata.y = self.y.data self._cdata.z = self.z.data cdef int i cdef DoubleArray weights = self.weights # set the weights self._cdata.obj_wts = weights.data self._cdata.use_weights = True if self.obj_weight_dim == "0": self._cdata.use_weights = False def _set_default(self): """Resonable defaults?""" PyZoltan._set_default(self) self.Zoltan_Set_Param("LB_METHOD", self.lb_method) self.Zoltan_Set_Param("KEEP_CUTS", self.keep_cuts) pyzoltan-1.0.1/pyzoltan/core/zoltan_comm.pxd000066400000000000000000000012701340064767300212520ustar00rootroot00000000000000import numpy as np cimport numpy as np # Zoltan comm objects and headers from pyzoltan.czoltan cimport czoltan_comm as zcomm cdef class ZComm: # pointer to the zoltan comm object cdef zcomm.ZOLTAN_COMM_OBJ* _zoltan_comm_obj # mpi communicator, rank and size cdef public object comm cdef public int rank, size # tag for the communicator cdef public int tag # number of objects to send cdef public int nsend # processor list for particles to be exported cdef public np.ndarray proclist # number of objects to be received cdef public int nreturn # size of each element and dtype cdef public int nbytes cdef public object dtype pyzoltan-1.0.1/pyzoltan/core/zoltan_comm.pyx000066400000000000000000000263151340064767300213060ustar00rootroot00000000000000"""Wrapper for the Zoltan Unstructured Communication Package The Unstructured Communication utilities simplifies some common point-to-point message passing paradigms required for dynamic applications. The main wrapper object for this package is the ZComm object which is described below. """ cimport mpi4py.MPI as mpi if MPI4PY_V2: from mpi4py cimport libmpi as mpic else: from mpi4py cimport mpi_c as mpic # Cython for pure mode cimport cython # NUMPY import numpy as np cimport numpy as np # Zoltan error checking from zoltan cimport _check_error cdef class ZComm: """Wrapper for simplified unstructured point-to-point communication The ZComm wrapper is used when each processor knows a list of objects it must send to other processors but does not know of what objects it must receive from them. It is designed to work with NumPy arrays for convenience. Processor 0 sends data (uint32) [4, 9, 6] to processors [1, 2, 2] Processor 1 sends data (uint32) [5, 3] to processors [0, 0] Processor 2 sends data (uint32) [1, 9, 0, 2] to processors [0, 1, 1, 0] Note that the size of data to be sent is different on each processor. Each processor instantiates the data and the ZComm object like so: >>> sendbuf = numpy.array( [...], dtype=numpy.uint32 ) >>> proclist = numpy.array( [...], dtype=numpy.int32 ) >>> nsend = sendbuf.size >>> zcomm = ZComm(comm, tag=0, nsend=nsend, proclist=proclist) """ def __init__(self, object comm, int tag, int nsend, np.ndarray proclist): """Constructor for the ZComm object Parameters: comm : MPI Comm MPI communicator (mpi4py.MPI.COMM_WORLD) tag : int Message tag for the unstructured communication nsend : int Number of objects this processor has to send proclist : numpy.ndarray Array of size 'nsend' indicating where each object in the sendbuf (to be defined) will be sent. Notes: In the general case, every processor has some data it knows it must share with remote processors. As an example, we may have that processor 2 sends 4 ojects of data to processors to [0, 3, 1, 0]. In this example, the first object is sent to processor 0, the second to processor 3 and so on and so forth. The ZComm for this processor can be constructed as >>> nsend = 4 >>> proclist = numpy.array( [0, 3, 1, 0], dtype=nupmy.int32 ) >>> zcomm = ZComm(mpi.COMM_WORLD, nsend=nsend, tag=0, proclist=proclist) Upon instantiation, the zcomm object will know of the number of objects it must receive from all remote processors: >>> nrecv = zcomm.nreturn Knowing the number of objects that must be received, we can allocate buffers of the appropriate size to collect this data. The actual transfer of data is effected with a call to the `ZComm.Comm_Do` method We can use the same ZComm object for multiple exchanges of data of different types as long as the number of objects to be exchanged are the same. For example, a processor may want to exchange solution data (doubles) along with indices (uints). The same plan can be used in this case with the provision to alter the number of bytes per object with the method `ZComm.set_nbytes` """ self.comm = comm self.rank = comm.Get_rank() self.size = comm.Get_size() self.tag = tag self.nsend = nsend self.proclist = proclist.astype(np.int32) self.nreturn = 0 # the size of each element to exchange self.nbytes = 8 # internally call Zoltan_Comm_Create self.initialize() def __dealloc__(self): "Cleanup" cdef zcomm.ZOLTAN_COMM_OBJ* _zoltan_comm_obj = self._zoltan_comm_obj zcomm.Zoltan_Comm_Destroy(&_zoltan_comm_obj) def initialize(self): """Zoltan_Comm_Create This function calls the Zoltan_Comm_Create function to create the unstructured communication plan. This plan can subsequently be used to effect data transfers in an unstructured manner between processors. Upon return, each processor knows the number of objects that are to be received through the data attribute `nreturn` """ cdef zcomm.ZOLTAN_COMM_OBJ** zoltan_comm_obj = &self._zoltan_comm_obj cdef np.ndarray[ndim=1, dtype=np.int32_t] _proclist = self.proclist cdef int* proclist = _proclist.data cdef mpi.Comm _comm = self.comm cdef mpic.MPI_Comm comm = _comm.ob_mpi cdef int nsend = self.nsend, tag = self.tag # cython declarations cdef int ierr, _nreturn = -1 cdef int* nreturn = &_nreturn # create the communication plan ierr = zcomm.Zoltan_Comm_Create(zoltan_comm_obj, nsend, proclist, comm, tag, nreturn) # check for the error _check_error(ierr) # save the number of objects to be returned self.nreturn = _nreturn def Comm_Do(self, np.ndarray _sendbuf, np.ndarray _recvbuf): """Perform an unstructured communication between processors Parameters: _sendbuf : np.ndarray The array of data to be sent by this processor _recvbuf : np.ndarray The array of data to be received by this processor Notes: Internally, Zoltan_Comm_Do accepts char* buffers to move the data between processors. The number of objects is determined by the `nbytes` argument. The `nsend` argument used to create the ZComm object and the `nbytes` argument should be consistent to avoid strange behaviour. """ cdef zcomm.ZOLTAN_COMM_OBJ* _zoltan_comm_obj = self._zoltan_comm_obj cdef char* send_data = _sendbuf.data cdef char* recv_data = _recvbuf.data cdef int ierr, tag = self.tag, nbytes = self.nbytes ierr = zcomm.Zoltan_Comm_Do( _zoltan_comm_obj, tag, send_data, nbytes, recv_data) _check_error(ierr) def Comm_Do_Post(self, np.ndarray _sendbuf, np.ndarray _recvbuf): """Initiate unstructured communication between processors Parameters: _sendbuf : np.ndarray The array of data to be sent by this processor _recvbuf : np.ndarray The array of data to be received by this processor Notes: Internally, Zoltan_Comm_Do accepts char* buffers to move the data between processors. The number of objects is determined by the `nbytes` argument. The `nsend` argument used to create the ZComm object and the `nbytes` argument should be consistent to avoid strange behaviour. """ cdef zcomm.ZOLTAN_COMM_OBJ* _zoltan_comm_obj = self._zoltan_comm_obj cdef char* send_data = _sendbuf.data cdef char* recv_data = _recvbuf.data cdef int ierr, tag = self.tag, nbytes = self.nbytes # Note that this variant only "posts" the message for # sending. Control should be returned back to the calling # program instantly. The message can only be safely viewed # after the Comm_Do_Wait which acts as a memory fence ierr = zcomm.Zoltan_Comm_Do_Post( _zoltan_comm_obj, tag, send_data, nbytes, recv_data) _check_error(ierr) def Comm_Do_Wait(self, np.ndarray _sendbuf, np.ndarray _recvbuf): """Mem fence for the unstructured communication between processors initiated by Comm_Do_Post Parameters: _sendbuf : np.ndarray The array of data to be sent by this processor _recvbuf : np.ndarray The array of data to be received by this processor Notes: Internally, Zoltan_Comm_Do accepts char* buffers to move the data between processors. The number of objects is determined by the `nbytes` argument. The `nsend` argument used to create the ZComm object and the `nbytes` argument should be consistent to avoid strange behaviour. """ cdef zcomm.ZOLTAN_COMM_OBJ* _zoltan_comm_obj = self._zoltan_comm_obj cdef char* send_data = _sendbuf.data cdef char* recv_data = _recvbuf.data cdef int ierr, tag = self.tag, nbytes = self.nbytes ierr = zcomm.Zoltan_Comm_Do_Wait( _zoltan_comm_obj, tag, send_data, nbytes, recv_data) _check_error(ierr) def Comm_Resize(self, np.ndarray _sizes, int total_recv_size): """Set the individual sizes for the communicated objects Parameters: _sizes : np.ndarray An input array of length equal to the nsend argument in the call to Zoltan_Comm_Create which generated the plan. Each entry in the array is the size of the corresponding object to be sent (c.f. Zoltan User Manual) total_recv_size : int Sum of the sizes of the incoming messages Notes: """ cdef zcomm.ZOLTAN_COMM_OBJ* _zoltan_comm_obj = self._zoltan_comm_obj cdef int* sizes = _sizes.data cdef int ierr, tag = self.tag, nbytes = self.nbytes ierr = zcomm.Zoltan_Comm_Resize( _zoltan_comm_obj, sizes, tag, &total_recv_size) _check_error(ierr) def Comm_Do_Reverse(self, np.ndarray _sendbuf, np.ndarray recvbuf): """Perform the reverse of the unstructured communication between processors Parameters: _sendbuf : np.ndarray The array of data to be sent by this processor Notes: Internally, Zoltan_Comm_Do accepts char* buffers to move the data between processors. The number of objects is determined by the `nbytes` argument. """ cdef zcomm.ZOLTAN_COMM_OBJ* _zoltan_comm_obj = self._zoltan_comm_obj cdef char* send_data = _sendbuf.data cdef int ierr, tag = self.tag, nbytes = self.nbytes # the returned data will be updated. The number of objects to # send for Do_Reverse is therefore equal to nreturn cdef int nsend = self.nreturn # sizes pointer is null for equal sized objects cdef int* sizesp = NULL #cdef np.ndarray recvbuf = np.zeros( self.nsend, dtype=dtype ) cdef char* _recvbuf = recvbuf.data # Zoltan interface function ierr = zcomm.Zoltan_Comm_Do_Reverse( _zoltan_comm_obj, tag, send_data, nbytes, sizesp, _recvbuf) _check_error(ierr) #return recvbuf def set_nbytes(self, int nbytes, object dtype=None): "Set the number of bytes for each object" self.nbytes = nbytes self.dtype = dtype def set_tag(self, int tag): "Set the message tag for this plan" self.tag = tag pyzoltan-1.0.1/pyzoltan/core/zoltan_dd.pxd000066400000000000000000000007511340064767300207110ustar00rootroot00000000000000"""Wrapper for the Zoltan Distributed Directory and routines""" cimport mpi4py.MPI as mpi if MPI4PY_V2: from mpi4py.libmpi cimport MPI_Comm else: from mpi4py.mpi_c cimport MPI_Comm from cyarray.carray cimport UIntArray, IntArray from pyzoltan.czoltan.czoltan_dd cimport * from pyzoltan.czoltan.czoltan_types cimport ZOLTAN_ID_TYPE, ZOLTAN_ID_PTR cdef class Zoltan_DD: # Pointer to the Zoltan DD cdef Zoltan_DD_Directory* dd # MPI communicator cdef MPI_Comm comm pyzoltan-1.0.1/pyzoltan/core/zoltan_dd.pyx000066400000000000000000000052251340064767300207370ustar00rootroot00000000000000"""Example for the Zoltan Distributed data directory""" from zoltan cimport _check_error cdef class Zoltan_DD: """A Zoltan Distributed data directory is used as a parallel hash map. The hash map is implemented as keys of type ZOLTAN_ID_TYPE which can be global indices for the objects being partitioned for example. Each entry is owned by a processor and has associated with it, additional user data. """ def __init__(self, mpi.Comm comm): """Initialize the Zoltan DD (ZDD) Parameters: ----------- comm : mpi.Comm MPI communicator ( COMM_WORLD ) All processes must instantiate a copy of the Zoltan DD. A pointer to the ZDD is created and stored for furhter calls. Upon destruction, Zoltan_Destroy is called to get rid of the allocated ZDD """ self.comm = comm.ob_mpi ierr = Zoltan_DD_Create(&self.dd, self.comm, 1, 1, 0, 0, 0) _check_error( ierr ) def Zoltan_DD_Update(self, UIntArray gid, IntArray part): """Populate the ZDD with some data. Parameters: ------------ gid : UIntArray Global indices for the keys in the hash map part : UIntArray Partition/Processor which owns the data The ZDD can store additional user data and local indices with each hash entry. To skip these, we pass in Cython NULL pointers as recommended by the Zoltan user guide. """ cdef int nentries = gid.length ierr = Zoltan_DD_Update(self.dd, gid.data, NULL, NULL, part.data, nentries) _check_error( ierr ) def Zoltan_DD_Find(self, UIntArray gid, IntArray part, IntArray own, object lid=None, data=None): """Look up ownership and partitions for a given entry. Parameters: ----------- gid : UIntArray (in) Global indices for requested data part : IntArray (out) Partition/Processor to which the entry belongs own : IntArray (out) Partition/Processor to which the associated data belongs. lid, data : None (not used) """ cdef int count = gid.length cdef int ierr # resize the own and part arrays own.resize( count ) part.resize( count ) ierr = Zoltan_DD_Find( self.dd, gid.data, NULL, NULL, part.data, count, own.data ) _check_error( ierr ) def Zoltan_DD_Print(self): """Print the contents of the DD""" Zoltan_DD_Print( self.dd ) def __dealloc__(self): """Boom!""" Zoltan_DD_Destroy( &self.dd ) pyzoltan-1.0.1/pyzoltan/core/zoltan_utils.py000066400000000000000000000016221340064767300213150ustar00rootroot00000000000000"""Utility functions to work with the Zoltan generated lists""" import numpy from mpi4py import MPI def get_num_objects_per_proc(comm, num_objects): """Utility function to get number of objects on each processor. Parameters: ----------- comm : mpi.Comm The communicator (COMM_WORLD) num_objects : int Number of objects per processor This function uses MPI.Allreduce to get, on each processor, an array of size 'comm.Get_size()' which stores the number of particles per processor. Using this array, we can compute the new unique global indices. """ size = comm.Get_size() rank = comm.Get_rank() send_data = numpy.zeros(shape=size, dtype=numpy.int32) send_data[rank] = num_objects num_objects_data = numpy.zeros(shape=size, dtype=numpy.int32) comm.Allreduce(send_data, num_objects_data, op=MPI.MAX) return num_objects_data pyzoltan-1.0.1/pyzoltan/czoltan/000077500000000000000000000000001340064767300167355ustar00rootroot00000000000000pyzoltan-1.0.1/pyzoltan/czoltan/__init__.pxd000066400000000000000000000000001340064767300211770ustar00rootroot00000000000000pyzoltan-1.0.1/pyzoltan/czoltan/__init__.py000066400000000000000000000000001340064767300210340ustar00rootroot00000000000000pyzoltan-1.0.1/pyzoltan/czoltan/czoltan.pxd000066400000000000000000000574171340064767300211420ustar00rootroot00000000000000"""Cython Wrapper for Zoltan. """ if MPI4PY_V2: from mpi4py.libmpi cimport MPI_Comm else: from mpi4py.mpi_c cimport MPI_Comm from czoltan_types cimport ZOLTAN_ID_PTR cdef extern from "zoltan.h": # Zoltan version number float ZOLTAN_VERSION_NUMBER # ****************************************************************** # # * Enumerated type used to indicate which function is to be set by # * ZOLTAN_Set_Fn. enum Zoltan_Fn_Type: ZOLTAN_NUM_EDGES_FN_TYPE ZOLTAN_NUM_EDGES_MULTI_FN_TYPE ZOLTAN_EDGE_LIST_FN_TYPE ZOLTAN_EDGE_LIST_MULTI_FN_TYPE ZOLTAN_NUM_GEOM_FN_TYPE ZOLTAN_GEOM_MULTI_FN_TYPE ZOLTAN_GEOM_FN_TYPE ZOLTAN_NUM_OBJ_FN_TYPE ZOLTAN_OBJ_LIST_FN_TYPE ZOLTAN_FIRST_OBJ_FN_TYPE ZOLTAN_NEXT_OBJ_FN_TYPE ZOLTAN_NUM_BORDER_OBJ_FN_TYPE ZOLTAN_BORDER_OBJ_LIST_FN_TYPE ZOLTAN_FIRST_BORDER_OBJ_FN_TYPE ZOLTAN_NEXT_BORDER_OBJ_FN_TYPE ZOLTAN_PRE_MIGRATE_PP_FN_TYPE ZOLTAN_MID_MIGRATE_PP_FN_TYPE ZOLTAN_POST_MIGRATE_PP_FN_TYPE ZOLTAN_PRE_MIGRATE_FN_TYPE ZOLTAN_MID_MIGRATE_FN_TYPE ZOLTAN_POST_MIGRATE_FN_TYPE ZOLTAN_OBJ_SIZE_FN_TYPE ZOLTAN_PACK_OBJ_FN_TYPE ZOLTAN_UNPACK_OBJ_FN_TYPE ZOLTAN_NUM_COARSE_OBJ_FN_TYPE ZOLTAN_COARSE_OBJ_LIST_FN_TYPE ZOLTAN_FIRST_COARSE_OBJ_FN_TYPE ZOLTAN_NEXT_COARSE_OBJ_FN_TYPE ZOLTAN_NUM_CHILD_FN_TYPE ZOLTAN_CHILD_LIST_FN_TYPE ZOLTAN_CHILD_WEIGHT_FN_TYPE ZOLTAN_OBJ_SIZE_MULTI_FN_TYPE ZOLTAN_PACK_OBJ_MULTI_FN_TYPE ZOLTAN_UNPACK_OBJ_MULTI_FN_TYPE ZOLTAN_PART_FN_TYPE ZOLTAN_PART_MULTI_FN_TYPE ZOLTAN_PROC_NAME_FN_TYPE ZOLTAN_HG_SIZE_CS_FN_TYPE ZOLTAN_HG_CS_FN_TYPE ZOLTAN_HG_SIZE_EDGE_WTS_FN_TYPE ZOLTAN_HG_EDGE_WTS_FN_TYPE ZOLTAN_NUM_FIXED_OBJ_FN_TYPE ZOLTAN_FIXED_OBJ_LIST_FN_TYPE ZOLTAN_HIER_NUM_LEVELS_FN_TYPE ZOLTAN_HIER_PART_FN_TYPE ZOLTAN_HIER_METHOD_FN_TYPE ZOLTAN_MAX_FN_TYPES ctypedef Zoltan_Fn_Type ZOLTAN_FN_TYPE # ************************************************************************ # * Enumerated type used to indicate what type of refinement was used when # * building a refinement tree. # */ enum Zoltan_Ref_Type: ZOLTAN_OTHER_REF ZOLTAN_IN_ORDER ZOLTAN_TRI_BISECT ZOLTAN_QUAD_QUAD ZOLTAN_HEX3D_OCT ctypedef Zoltan_Ref_Type ZOLTAN_REF_TYPE # /*********************************************************************** # /*********************************************************************** # /******* Functions to set-up Zoltan load-balancing data structure **** # /*********************************************************************** # /*********************************************************************** # /* # * Function to initialize values needed in load balancing tools, and # * returns which version of the library this is. If the application # * uses MPI, call this function after calling MPI_Init. If the # * application does not use MPI, this function calls MPI_Init for # * use by Zoltan. This function returns the version of # * the Zoltan library. # * Input: # * argc -- Argument count from main() # * argv -- Argument list from main() # * Output: # * ver -- Version of Zoltan library # * Returned value: -- Error code # */ extern int Zoltan_Initialize(int, char**, float* ver) # Zoltan structure struct Zoltan_Struct: pass # function to create a zoltan structure extern Zoltan_Struct* Zoltan_Create(MPI_Comm) # /*****************************************************************************/ # /* # * Function to free the space associated with a Zoltan structure. # * The input pointer is set to NULL when the routine returns. # * Input/Output: # * zz -- Pointer to a Zoltan structure. # */ extern void Zoltan_Destroy( Zoltan_Struct **zz ) # /*****************************************************************************/ # /* # * Function to change a parameter value within Zoltan. # * Default values will be used for all parameters not explicitly altered # * by a call to this routine. # * # * Input # * zz -- The Zoltan structure to which this # * parameter alteration applies. # * name -- The name of the parameter to have its # * value changed. # * val -- The new value of the parameter. # * # * Returned value: -- Error code # */ extern int Zoltan_Set_Param( Zoltan_Struct *zz, char *name, char *val ) # /*****************************************************************************/ # /* # * Function to return, for the calling processor, the number of objects # * located in that processor's memory. # * Input: # * data -- pointer to user defined data structure # * Output: # * ierr -- error code # * Returned value: -- the number of local objects. # */ ctypedef int ZOLTAN_NUM_OBJ_FN( void *data, int *ierr ) extern int Zoltan_Set_Num_Obj_Fn( Zoltan_Struct *zz, ZOLTAN_NUM_OBJ_FN *fn_ptr, void *data_ptr) # /*****************************************************************************/ # /* # * Function to return a list of all local objects on a processor. # * Input: # * data -- pointer to user defined data structure # * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE # * in a global ID # * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE # * in a local ID # * wdim -- dimension of object weights, or 0 if # * object weights are not sought. # * Output: # * global_ids -- array of Global IDs of all objects on the # * processor. # * local_ids -- array of Local IDs of all objects on the # * processor. # * objwgts -- objwgts[i*wdim:(i+1)*wdim-1] correponds # * to the weight of object i # * ierr -- error code # */ ctypedef void ZOLTAN_OBJ_LIST_FN( void *data, int num_gid_entries, int num_lid_entries, ZOLTAN_ID_PTR global_ids, ZOLTAN_ID_PTR local_ids, int wdim, float *objwgts, int *ierr ) extern int Zoltan_Set_Obj_List_Fn( Zoltan_Struct *zz, ZOLTAN_OBJ_LIST_FN *fn_ptr, void *data_ptr ) # /*****************************************************************************/ # /* # * Function to return # * the number of geometry fields per object (e.g., the number of values # * used to express the coordinates of the object). # * Input: # * data -- pointer to user defined data structure # * Output: # * ierr -- error code # * Returned value: -- the number of geometry fields. # */ # A ZOLTAN_NUM_GEOM_FN query function returns the number of values # needed to express the geometry of an object. For example, for a # two-dimensional mesh-based application, (x,y) coordinates are needed # to describe an object's geometry; thus the ZOLTAN_NUM_GEOM_FN query # function should return the value of two. For a similar # three-dimensional application, the return value should be three. ctypedef int ZOLTAN_NUM_GEOM_FN( void *data, int *ierr ) extern int Zoltan_Set_Num_Geom_Fn( Zoltan_Struct *zz, ZOLTAN_NUM_GEOM_FN *fn_ptr, void *data_ptr ) # /*****************************************************************************/ # A ZOLTAN_GEOM_MULTI FN query function returns a vector of geometry # values for a list of given objects. The geometry vector is # allocated by Zoltan to be of size num_obj * num_dim; its format is # described below # /* # * Function to return the geometry information (e.g., coordinates) for # * all objects. # * Input: # * data -- pointer to user defined data structure # * num_gid_entries -- number of array entries of type ZOLTAN_ID_TYPE # * in a global ID # * num_lid_entries -- number of array entries of type ZOLTAN_ID_TYPE # * in a local ID # * num_obj -- number of objects whose coordinates are needed. # * global_id -- array of Global IDs for the objects # * local_id -- array of Local IDs for the objects; # * NULL if num_lid_entries == 0. # * num_dim -- dimension of coordinates for each object. # * Output: # * geom_vec -- the geometry info for the objects; # * (e.g., coordinates) # * If num_dim == n, geom_vec[i*n+j] is the # * jth coordinate for object i. # * ierr -- error code # */ ctypedef void ZOLTAN_GEOM_MULTI_FN( void *data, int num_gid_entries, int num_lid_entries, int num_obj, ZOLTAN_ID_PTR global_id, ZOLTAN_ID_PTR local_id, int num_dim, double *geom_vec, int *ierr ) extern int Zoltan_Set_Geom_Multi_Fn( Zoltan_Struct *zz, ZOLTAN_GEOM_MULTI_FN *fn_ptr, void *data_ptr ) # /*****************************************************************************/ # /* # * Function to invoke the partitioner. # * # * Input: # * zz -- The Zoltan structure returned by Zoltan_Create. # * Output: # * changes -- This value tells whether the new # * decomposition computed by Zoltan differs # * from the one given as input to Zoltan. # * It can be either a one or a zero: # * zero - No changes to the decomposition # * were made by the partitioning # * algorithm; migration isn't needed. # * one - A new decomposition is suggested # * by the partitioner; migration # * is needed to establish the new # * decomposition. # * num_gid_entries -- number of entries of type ZOLTAN_ID_TYPE # * in a global ID # * num_lid_entries -- number of entries of type ZOLTAN_ID_TYPE # * in a local ID # * num_import -- The number of non-local objects in the # * processor's new decomposition (i.e., # * number of objects to be imported). # * import_global_ids -- Pointer to array of Global IDs for the # * objects to be imported. # * import_local_ids -- Pointer to array of Local IDs for the # * objects to be imported (local to the # * exporting processor). # * import_procs -- Pointer to array of Processor IDs for the # * objects to be imported (processor IDs of # * source processor). # * import_to_part -- Pointer to array of partition numbers to # * which the imported objects should be assigned. # * num_export -- The number of local objects that must be # * exported from the processor to establish # * the new decomposition. # * export_global_ids -- Pointer to array of Global IDs for the # * objects to be exported from the current # * processor. # * export_local_ids -- Pointer to array of Local IDs for the # * objects to be exported (local to the # * current processor). # * export_procs -- Pointer to array of Processor IDs for the # * objects to be exported (processor IDs of # * destination processors). # * export_to_part -- Pointer to array of partition numbers to # * which the exported objects should be assigned. # * Returned value: -- Error code # */ extern int Zoltan_LB_Partition( Zoltan_Struct *zz, int *changes, int *num_gid_entries, int *num_lid_entries, int *num_import, ZOLTAN_ID_PTR *import_global_ids, ZOLTAN_ID_PTR *import_local_ids, int **import_procs, int **import_to_part, int *num_export, ZOLTAN_ID_PTR *export_global_ids, ZOLTAN_ID_PTR *export_local_ids, int **export_procs, int **export_to_part ) # /*****************************************************************************/ # /* # * Function to invoke the load-balancer. # * Appropriate only when the number of requested partitions is equal to the # * number of processors. # * # * Input and output: # * Arguments are analogous to Zoltan_LB_Partition. Arrays import_to_part # * and export_to_part are not included, as Zoltan_LB_Balance assumes # * partitions and processors are equivalent. # * Returned value: -- Error code # */ extern int Zoltan_LB_Balance( Zoltan_Struct *zz, int *changes, int *num_gid_entries, int *num_lid_entries, int *num_import, ZOLTAN_ID_PTR *import_global_ids, ZOLTAN_ID_PTR *import_local_ids, int **import_procs, int *num_export, ZOLTAN_ID_PTR *export_global_ids, ZOLTAN_ID_PTR *export_local_ids, int **export_procs ) # /*****************************************************************************/ # /* # * Routine to free the data arrays returned by Zoltan_Balance. The arrays # * are freed and the pointers are set to NULL. # * # * Input: # * import_global_ids -- Pointer to array of global IDs for # * imported objects. # * import_local_ids -- Pointer to array of local IDs for # * imported objects. # * import_procs -- Pointer to array of processor IDs of # * imported objects. # * export_global_ids -- Pointer to array of global IDs for # * exported objects. # * export_local_ids -- Pointer to array of local IDs for # * exported objects. # * export_procs -- Pointer to array of destination processor # * IDs of exported objects. # * Returned value: -- Error code # */ extern int Zoltan_LB_Free_Data( ZOLTAN_ID_PTR *import_global_ids, ZOLTAN_ID_PTR *import_local_ids, int **import_procs, ZOLTAN_ID_PTR *export_global_ids, ZOLTAN_ID_PTR *export_local_ids, int **export_procs ) # /*****************************************************************************/ # /* # * Function to return the bounding box of a partition generated by RCB. # * Input: # * zz -- The Zoltan structure returned by Zoltan_Create. # * part -- The partition number whose bounding box is to # * be returned. # * Output: # * ndim -- Number of dimensions in the bounding box. # * xmin -- lower x extent of box # * ymin -- lower y extent of box # * zmin -- lower z extent of box # * xmax -- upper x extent of box # * ymax -- upper y extent of box # * zmax -- upper z extent of box # * Returned value: -- Error code # */ int Zoltan_RCB_Box( Zoltan_Struct *zz, int part, int *ndim, double *xmin, double *ymin, double *zmin, double *xmax, double *ymax, double *zmax ) # /*****************************************************************************/ # /* # * Routine to determine which partitions and processors # * a bounding box intersects. # * Note that this only works of the current partition was produced via a # * geometric algorithm - currently RCB, RIB, HSFC. # * # * Input: # * zz -- pointer to Zoltan structure # * xmin, ymin, zmin -- lower left corner of bounding box # * xmax, ymax, zmax -- upper right corner of bounding box # * # * Output: # * procs -- list of processors that box intersects. # * Note: application is # * responsible for ensuring sufficient memory. # * numprocs -- number of processors box intersects # * parts -- list of partitions that box intersects. # * Note: application is # * responsible for ensuring sufficient memory. # * numparts -- number of partitions box intersects (may differ # * from numprocs). # * # * Returned value: -- Error code # */ extern int Zoltan_LB_Box_PP_Assign( Zoltan_Struct *zz, double xmin, double ymin, double zmin, double xmax, double ymax, double zmax, int *procs, int *numprocs, int *parts, int *numparts ) # /*****************************************************************************/ # /* # * Routine to determine which processor and partition a new point should be # * assigned to. # * Note that this only works of the current partition was produced via a # * geometric algorithm - currently RCB, RIB, HSFC. # * # * Input: # * zz -- pointer to Zoltan structure # * coords -- vector of coordinates of new point # * # * Output: # * proc -- processor that point should be assigned to # * part -- partition that point should be assigned to # * # * Returned value: -- Error code # */ extern int Zoltan_LB_Point_PP_Assign( Zoltan_Struct *zz, double *coords, int *proc, int *part ) extern int Zoltan_LB_Point_Assign( Zoltan_Struct *zz, double *coords, int *proc ) # /*****************************************************************************/ # /* # * Routine to compute the inverse map: Given, for each processor, a list # * of objects to be received by a processor, compute the list of objects # * that processor needs to send to other processors to complete a # * remapping. Conversely, given a list of objects to be sent to other # * processors, compute the list of objects to be received. # * # * Input: # * zz -- Zoltan structure for current # * balance. # * num_input -- Number of objects known to be # * sent/received. # * input_global_ids -- Array of global IDs for known objects. # * input_local_ids -- Array of local IDs for known objects. # * input_procs -- Array of IDs of processors to/from whom the # * known objects will be sent/received. # * input_to_part -- Array of partition numbers to # * which the known objects should be assigned. # * Output: # * num_output -- The number of objects will be received/sent. # * output_global_ids -- Pointer to array of Global IDs for the # * objects to be received/sent. # * output_local_ids -- Pointer to array of Local IDs for the # * objects to be received/sent. # * output_procs -- Pointer to array of Processor IDs # * from/to which the output_global_ids will be # * received/sent. # * output_to_part -- Pointer to array of partition numbers to # * which the output_global_ids should be assigned. # * Returned value: -- Error code # */ extern int Zoltan_Invert_Lists( Zoltan_Struct *zz, int num_input, ZOLTAN_ID_PTR input_global_ids, ZOLTAN_ID_PTR input_local_ids, int *input_procs, int *input_to_part, int *num_output, ZOLTAN_ID_PTR *output_global_ids, ZOLTAN_ID_PTR *output_local_ids, int **output_procs, int **output_to_part ) # /*****************************************************************************/ # /* # * Wrapper around Zoltan_Invert_Lists, appropriate only when # * number of partitions == number of processors (or when partition information # * is not desired). # * # * Input and Output: # * Arguments are analogous to Zoltan_Invert_Lists. Arrays import_to_part # * and export_to_part are not included, as Zoltan_Compute_Destinations # * assumes partitions and processors are equivalent. # * Returned value: -- Error code # */ extern int Zoltan_Compute_Destinations( Zoltan_Struct *zz, int num_input, ZOLTAN_ID_PTR input_global_ids, ZOLTAN_ID_PTR input_local_ids, int *input_procs, int *num_output, ZOLTAN_ID_PTR *output_global_ids, ZOLTAN_ID_PTR *output_local_ids, int **output_procs ) # /*****************************************************************************/ # /* # * Routine to free the data arrays returned by Zoltan_LB_Partition, # * Zoltan_LB_Balance, Zoltan_Invert_Lists, and # * Zoltan_Compute_Destinations. The arrays # * are freed and the pointers are set to NULL. # * # * Input: # * global_ids -- Pointer to array of global IDs # * local_ids -- Pointer to array of local IDs # * procs -- Pointer to array of processor IDs # * to_proc -- Pointer to array of partition assignments # * Returned value: -- Error code # */ extern int Zoltan_LB_Free_Part( ZOLTAN_ID_PTR *global_ids, ZOLTAN_ID_PTR *local_ids, int **procs, int **to_part ) pyzoltan-1.0.1/pyzoltan/czoltan/czoltan_comm.pxd000066400000000000000000000023371340064767300221440ustar00rootroot00000000000000"""Cython wrapper for the Zoltan unstructured communication package""" if MPI4PY_V2: from mpi4py.libmpi cimport MPI_Comm else: from mpi4py.mpi_c cimport MPI_Comm cdef extern from "zoltan_comm.h": struct Zoltan_Comm_Obj: pass ctypedef Zoltan_Comm_Obj ZOLTAN_COMM_OBJ #/* function prototypes */ int Zoltan_Comm_Create(ZOLTAN_COMM_OBJ**, int, int*, MPI_Comm, int, int*) int Zoltan_Comm_Destroy(ZOLTAN_COMM_OBJ**) int Zoltan_Comm_Do (ZOLTAN_COMM_OBJ*, int, char*, int, char*) int Zoltan_Comm_Do_Post(ZOLTAN_COMM_OBJ*, int, char*, int, char*) int Zoltan_Comm_Do_Wait(ZOLTAN_COMM_OBJ*, int, char*, int, char*) int Zoltan_Comm_Do_AlltoAll(ZOLTAN_COMM_OBJ*, char*, int, char*) int Zoltan_Comm_Do_Reverse (ZOLTAN_COMM_OBJ*, int, char*, int, int*, char*) int Zoltan_Comm_Do_Reverse_Post(ZOLTAN_COMM_OBJ*, int, char*, int, int*, char*) int Zoltan_Comm_Do_Reverse_Wait(ZOLTAN_COMM_OBJ*, int, char*, int, int*, char*) int Zoltan_Comm_Info(ZOLTAN_COMM_OBJ*, int*, int*, int*, int*, int*, int*, int*, int*, int*, int*, int*, int*, int*) int Zoltan_Comm_Invert_Plan(ZOLTAN_COMM_OBJ**) int Zoltan_Comm_Resize(ZOLTAN_COMM_OBJ*, int*, int, int*) pyzoltan-1.0.1/pyzoltan/czoltan/czoltan_config.pxd000066400000000000000000000003101340064767300224430ustar00rootroot00000000000000cdef extern from "Zoltan_config.h": # package string #cdef str PACKAGE_STRING # package version #cdef str PACKAGE_VERSION # ZOLTAN_ID_TYPE cdef bint UNSIGNED_INT_GLOBAL_IDS pyzoltan-1.0.1/pyzoltan/czoltan/czoltan_dd.pxd000066400000000000000000000025001340064767300215700ustar00rootroot00000000000000"""Cython wrapper for the Zoltan Distributed Directory""" if MPI4PY_V2: from mpi4py.libmpi cimport MPI_Comm else: from mpi4py.mpi_c cimport MPI_Comm from czoltan_types cimport ZOLTAN_ID_TYPE, ZOLTAN_ID_PTR cdef extern from "zoltan_dd.h": struct Zoltan_DD_Struct: pass ctypedef Zoltan_DD_Struct Zoltan_DD_Directory #/*********** Distributed Directory Function Prototypes ************/ int Zoltan_DD_Create( Zoltan_DD_Directory** dd, MPI_Comm comm, int num_gid, int num_lid, int user_length, int table_length, int debug_level) void Zoltan_DD_Destroy( Zoltan_DD_Directory** dd) int Zoltan_DD_Update (Zoltan_DD_Directory *dd, ZOLTAN_ID_PTR gid, ZOLTAN_ID_PTR lid, char *user, int *partition, int count) int Zoltan_DD_Find (Zoltan_DD_Directory *dd, ZOLTAN_ID_PTR gid, ZOLTAN_ID_PTR lid, char *data, int *partition, int count, int *owner) int Zoltan_DD_GetLocalKeys( Zoltan_DD_Directory* dd, ZOLTAN_ID_PTR* gid, int* size ) int Zoltan_DD_Remove (Zoltan_DD_Directory *dd, ZOLTAN_ID_PTR gid, int count) void Zoltan_DD_Stats (Zoltan_DD_Directory *dd) int Zoltan_DD_Print (Zoltan_DD_Directory *dd) pyzoltan-1.0.1/pyzoltan/czoltan/czoltan_types.pxd000066400000000000000000000024421340064767300223520ustar00rootroot00000000000000cdef extern from "zoltan_types.h": # basic type used by all of Zoltan ctypedef unsigned int ZOLTAN_ID_TYPE # MPI data type cdef unsigned int ZOLTAN_ID_MPI_TYPE # pointer to the basic type ctypedef ZOLTAN_ID_TYPE* ZOLTAN_ID_PTR # /*****************************************************************************/ # /* # * Error codes for Zoltan library # * ZOLTAN_OK - no errors # * ZOLTAN_WARN - some warning occurred in Zoltan library; # * application should be able to continue running # * ZOLTAN_FATAL - a fatal error occurred # * ZOLTAN_MEMERR - memory allocation failed; with this error, it could be # * possible to try a different, more memory-friendly, # * algorithm. # */ # /*****************************************************************************/ cdef int ZOLTAN_OK cdef int ZOLTAN_WARN cdef int ZOLTAN_FATAL cdef int ZOLTAN_MEMERR # /*****************************************************************************/ # /* Hypergraph query function types # */ # /*****************************************************************************/ cdef int _ZOLTAN_COMPRESSED_EDGE cdef int _ZOLTAN_COMPRESSED_VERTEX pyzoltan-1.0.1/pyzoltan/czoltan/mpi-compat.h000066400000000000000000000005461340064767300211610ustar00rootroot00000000000000/* Author: Lisandro Dalcin */ /* Contact: dalcinl@gmail.com */ /* This file is taken verbatim from mpi4py's demo/cython example. */ #ifndef MPI_COMPAT_H #define MPI_COMPAT_H #include #if (MPI_VERSION < 3) && !defined(PyMPI_HAVE_MPI_Message) typedef void *PyMPI_MPI_Message; #define MPI_Message PyMPI_MPI_Message #endif #endif/*MPI_COMPAT_H*/ pyzoltan-1.0.1/pyzoltan/tools/000077500000000000000000000000001340064767300164235ustar00rootroot00000000000000pyzoltan-1.0.1/pyzoltan/tools/__init__.py000066400000000000000000000000001340064767300205220ustar00rootroot00000000000000pyzoltan-1.0.1/pyzoltan/tools/run_parallel_script.py000066400000000000000000000032301340064767300230370ustar00rootroot00000000000000from __future__ import print_function from os.path import abspath, dirname, join from subprocess import Popen, PIPE import sys from threading import Timer def get_directory(file): return dirname(abspath(file)) def kill_process(process): print('KILLING PROCESS ON TIMEOUT') process.kill() def run(filename, args=None, nprocs=2, timeout=30.0, path=None): """Run a python script with MPI or in serial (if nprocs=1). Kill process if it takes longer than the specified timeout. Parameters: ----------- filename - filename of python script to run under mpi. args - List of arguments to pass to script. nprocs - number of processes to run (1 => serial non-mpi run). timeout - time in seconds to wait for the script to finish running, else raise a RuntimeError exception. path - the path under which the script is located Defaults to the location of this file (__file__), not curdir. """ if args is None: args = [] file_path = abspath(join(path, filename)) cmd = [sys.executable, file_path] + args if nprocs > 1: cmd = ['mpiexec', '-n', str(nprocs)] + cmd print('running test:', cmd) process = Popen(cmd, stdout=PIPE, stderr=PIPE) timer = Timer(timeout, kill_process, [process]) timer.start() out, err = process.communicate() timer.cancel() retcode = process.returncode if retcode: msg = 'test ' + filename + ' failed with returncode ' + str(retcode) print(out.decode('utf-8')) print(err.decode('utf-8')) print('#'*80) print(msg) print('#'*80) raise RuntimeError(msg) return retcode, out, err pyzoltan-1.0.1/readthedocs.yml000066400000000000000000000001651340064767300164150ustar00rootroot00000000000000build: image: latest python: version: 3.6 setup_py_install: true conda: file: environment.yml formats: [] pyzoltan-1.0.1/requirements.txt000066400000000000000000000000761340064767300166720ustar00rootroot00000000000000cyarray Cython>=0.20 setuptools>=6.0 numpy pytest mpi4py>=1.2 pyzoltan-1.0.1/setup.py000066400000000000000000000265101340064767300151210ustar00rootroot00000000000000import os import sys from subprocess import check_output if len(os.environ.get('COVERAGE', '')) > 0: MACROS = [("CYTHON_TRACE", "1"), ("CYTHON_TRACE_NOGIL", "1")] COMPILER_DIRECTIVES = {"linetrace": True} print("-" * 80) print("Enabling linetracing for cython and setting CYTHON_TRACE = 1") print("-" * 80) else: MACROS = [] COMPILER_DIRECTIVES = {} MODE = 'normal' if len(sys.argv) >= 2 and \ ('--help' in sys.argv[1:] or sys.argv[1] in ('--help-commands', 'egg_info', '--version', 'clean', 'sdist')): MODE = 'info' HAVE_MPI = True try: import mpi4py except ImportError: HAVE_MPI = False compiler = 'gcc' # compiler = 'intel' if compiler == 'intel': extra_compile_args = ['-O3'] else: extra_compile_args = [] def get_deps(*args): """Given a list of basenames, this checks if a .pyx or .pxd exists and returns the list. """ result = [] for basename in args: for ext in ('.pyx', '.pxd'): f = basename + ext if os.path.exists(f): result.append(f) return result def get_zoltan_directory(varname): global USE_ZOLTAN d = os.environ.get(varname, '') if len(d) == 0: USE_ZOLTAN = False return '' else: USE_ZOLTAN = True if not os.path.exists(d): print("*" * 80) print("%s incorrectly set to %s, not using ZOLTAN!" % (varname, d)) print("*" * 80) USE_ZOLTAN = False return '' return d def get_mpi_flags(): """Returns mpi_inc_dirs, mpi_compile_args, mpi_link_args. """ global HAVE_MPI mpi_inc_dirs = [] mpi_compile_args = [] mpi_link_args = [] if not HAVE_MPI: return mpi_inc_dirs, mpi_compile_args, mpi_link_args try: mpic = 'mpic++' if compiler == 'intel': link_args = check_output( [mpic, '-cc=icc', '-link_info'], universal_newlines=True ).strip() link_args = link_args[3:] compile_args = check_output( [mpic, '-cc=icc', '-compile_info'], universal_newlines=True ).strip() compile_args = compile_args[3:] else: link_args = check_output( [mpic, '--showme:link'], universal_newlines=True ).strip() compile_args = check_output( [mpic, '--showme:compile'], universal_newlines=True ).strip() except: # noqa: E722 print('-' * 80) print("Unable to run mpic++ correctly, skipping parallel build") print('-' * 80) HAVE_MPI = False else: mpi_link_args.extend(link_args.split()) mpi_compile_args.extend(compile_args.split()) mpi_inc_dirs.append(mpi4py.get_include()) return mpi_inc_dirs, mpi_compile_args, mpi_link_args def get_zoltan_args(): """Returns zoltan_include_dirs, zoltan_library_dirs """ global HAVE_MPI, USE_ZOLTAN zoltan_include_dirs, zoltan_library_dirs = [], [] if not HAVE_MPI: return zoltan_include_dirs, zoltan_library_dirs # First try with the environment variable 'ZOLTAN' zoltan_base = get_zoltan_directory('ZOLTAN') inc = lib = '' if len(zoltan_base) > 0: inc = os.path.join(zoltan_base, 'include') lib = os.path.join(zoltan_base, 'lib') if not os.path.exists(inc) or not os.path.exists(lib): inc = lib = '' # try with the older ZOLTAN include directories if len(inc) == 0 or len(lib) == 0: inc = get_zoltan_directory('ZOLTAN_INCLUDE') lib = get_zoltan_directory('ZOLTAN_LIBRARY') if not USE_ZOLTAN: # Try with default in sys.prefix/{include,lib}, this is what is done # by any conda installs of zoltan. inc = os.path.join(sys.prefix, 'include') lib = os.path.join(sys.prefix, 'lib') if os.path.exists(os.path.join(inc, 'zoltan.h')): USE_ZOLTAN = True if (not USE_ZOLTAN): print("*" * 80) print("Zoltan Environment variable not set, not using ZOLTAN!") print("*" * 80) HAVE_MPI = False else: print('-' * 70) print("Using Zoltan from:\n%s\n%s" % (inc, lib)) print('-' * 70) zoltan_include_dirs = [inc] zoltan_library_dirs = [lib] # PyZoltan includes zoltan_cython_include = [os.path.abspath('./pyzoltan/czoltan')] zoltan_include_dirs += zoltan_cython_include # Not sure we need this but doing so just to be safe. import cyarray cyarray_include_dirs = [os.path.abspath(os.path.dirname(cyarray.__file__))] zoltan_include_dirs += cyarray_include_dirs return zoltan_include_dirs, zoltan_library_dirs def get_parallel_extensions(): if not HAVE_MPI: return [] if MODE == 'info': from distutils.core import Extension include_dirs = [] mpi_inc_dirs, mpi_compile_args, mpi_link_args = [], [], [] zoltan_include_dirs, zoltan_library_dirs = [], [] else: from Cython.Distutils import Extension import numpy include_dirs = [numpy.get_include()] mpi_inc_dirs, mpi_compile_args, mpi_link_args = get_mpi_flags() zoltan_include_dirs, zoltan_library_dirs = get_zoltan_args() # We should check again here as HAVE_MPI may be set to False when we try to # get the MPI flags and are not successful. if not HAVE_MPI: return [] MPI4PY_V2 = False if mpi4py.__version__.startswith('1.') else True cython_compile_time_env = {'MPI4PY_V2': MPI4PY_V2} zoltan_lib = 'zoltan' if os.environ.get('USE_TRILINOS', None) is not None: zoltan_lib = 'trilinos_zoltan' zoltan_modules = [ Extension( name="pyzoltan.core.zoltan", sources=["pyzoltan/core/zoltan.pyx"], depends=get_deps( "pyzoltan/czoltan/czoltan", "pyzoltan/czoltan/czoltan_types", ), include_dirs=include_dirs + zoltan_include_dirs + mpi_inc_dirs, library_dirs=zoltan_library_dirs, libraries=[zoltan_lib, 'mpi'], extra_link_args=mpi_link_args, extra_compile_args=mpi_compile_args + extra_compile_args, cython_compile_time_env=cython_compile_time_env, language="c++", define_macros=MACROS, ), Extension( name="pyzoltan.core.zoltan_dd", sources=["pyzoltan/core/zoltan_dd.pyx"], depends=get_deps( "pyzoltan/core/carray", "pyzoltan/czoltan/czoltan_dd", "pyzoltan/czoltan/czoltan_types" ), include_dirs=include_dirs + zoltan_include_dirs + mpi_inc_dirs, library_dirs=zoltan_library_dirs, libraries=[zoltan_lib, 'mpi'], extra_link_args=mpi_link_args, extra_compile_args=mpi_compile_args + extra_compile_args, cython_compile_time_env=cython_compile_time_env, language="c++", define_macros=MACROS, ), Extension( name="pyzoltan.core.zoltan_comm", sources=["pyzoltan/core/zoltan_comm.pyx"], depends=get_deps( "pyzoltan/core/carray", "pyzoltan/czoltan/zoltan_comm" ), include_dirs=include_dirs + zoltan_include_dirs + mpi_inc_dirs, library_dirs=zoltan_library_dirs, libraries=[zoltan_lib, 'mpi'], extra_link_args=mpi_link_args, extra_compile_args=mpi_compile_args + extra_compile_args, cython_compile_time_env=cython_compile_time_env, language="c++", define_macros=MACROS, ), ] return zoltan_modules def _is_cythonize_default(): import warnings result = True with warnings.catch_warnings(): warnings.simplefilter("ignore") try: # old_build_ext was introduced in Cython 0.25 and this is when # cythonize was made the default. from Cython.Distutils import old_build_ext # noqa: F401 except ImportError: result = False return result def setup_package(): from setuptools import find_packages, setup if MODE == 'info': cmdclass = {} else: from Cython.Distutils import build_ext cmdclass = {'build_ext': build_ext} # Extract the version information from pysph/__init__.py info = {} module = os.path.join('pyzoltan', '__init__.py') exec(compile(open(module).read(), module, 'exec'), info) # The requirements. install_requires = [ 'cyarray', 'numpy', 'Cython>=0.20', 'setuptools>=6.0', 'mpi4py>=1.2', 'pytest>=3.0' ] ext_modules = get_parallel_extensions() if MODE != 'info' and _is_cythonize_default(): # Cython >= 0.25 uses cythonize to compile the extensions. This # requires the compile_time_env to be set explicitly to work. compile_env = {} include_path = set() if HAVE_MPI: MPI4PY_V2 = False if mpi4py.__version__.startswith('1.') else True compile_env.update({'MPI4PY_V2': MPI4PY_V2}) for mod in ext_modules: compile_env.update(mod.cython_compile_time_env or {}) include_path.update(mod.include_dirs) from Cython.Build import cythonize ext_modules = cythonize( ext_modules, compile_time_env=compile_env, include_path=list(include_path), compiler_directives=COMPILER_DIRECTIVES, ) if len(ext_modules) == 0: raise RuntimeError( 'There are no extension modules, Nothing to do!' ) setup(name='PyZoltan', version=info['__version__'], author='PySPH Developers', author_email='pysph-dev@googlegroups.com', description='Wrapper for the Zoltan data management library', long_description=open('README.rst').read(), url='http://github.com/pypr/pyzoltan', license="BSD", keywords="Cython Zoltan Dynamic load balancing", packages=find_packages(), package_data={ '': ['*.pxd', '*.mako', '*.rst'] }, # exclude package data in installation. exclude_package_data={ '': ['Makefile', '*.bat', '*.cfg', '*.rst', '*.sh', '*.yml'], }, ext_modules=ext_modules, include_package_data=True, cmdclass=cmdclass, install_requires=install_requires, zip_safe=False, platforms=['Linux', 'Mac OS-X', 'Unix', 'Windows'], classifiers=[c.strip() for c in """\ Development Status :: 5 - Production/Stable Environment :: Console Intended Audience :: Developers Intended Audience :: Science/Research License :: OSI Approved :: BSD License Natural Language :: English Operating System :: MacOS :: MacOS X Operating System :: Microsoft :: Windows Operating System :: POSIX Operating System :: Unix Programming Language :: Python Programming Language :: Python :: 3 Topic :: Scientific/Engineering Topic :: Scientific/Engineering :: Physics Topic :: Software Development :: Libraries """.splitlines() if len(c.split()) > 0], ) if __name__ == '__main__': setup_package()