ࡱ> nXZ,( ֳaPNG  IHDRgXXbKGD#2 cmPPJCmp0712OmKIDAThO۸(,9: L/09uHG'GYy/VNo1b{l,ϡk z||(fj#DA8nEVп}ׯcZQZ_g*cb~>]u:FWO#:l2Jo".tq^(9BWP -Lш1~ i#u&#tU/B\vV"ɯYku@׍T6L7ZoCڼ^+01vY7bVW^Zߠ5+M4@ߛWpa^.L ]c|5B3 /Lb.ĕ_D+'R1L7K%eôũz0i=֠{t:Z]>= ~fQA)4.ˆi9ܳ6|fvFױ3]ǖ{ƾ w^nS]g?vF=mH\pߑFBҵDc/I4)2%p'9D78BIG鹧vdΣ͘G>J A7xr!}Q٧$!4qR5Ar5Se' mc}7ýGN ajGg|Q%먐~Vr"ݜi-ɬvT}7: .ݽGB\ƶ1`VeF i)ɺ$ٕoK\k;Z‚ X)Z>u@ ؘ B[UA]$3y[􍄛FrڥW:mH moz F >L6^\4R6O\lm:Wlu" o^@*Kuw4h wӋ>H7$+R86&t4 n,F*m{1J]]f4EM s-p]H;՟tcWݤ!٧]3Ӊ!FLzaSi\ƪp}x9W_Euq753h}"$.uK/\ cѬO Es%?+LE![abztcES߇hpUorM˽2n}PI4XlU_ 'f-OJ`N Hny2 j0d]X 4+5yv4H%ʾN4|h%@s#}+r[znoˍi#:o5BUE!Ӗmiu45(@%34=ڧ dزydqֲ.@>Tֲ> x*ѵ&n },^`g{@х9/>wwɖˬKEMjUV-]2?h.F5g3 5 c;SΡlyhtAGiG$&n |$06LKȽgYSک#M kr'ۜGf-lw *["oKE .赣IżKиZG&V4SX wU0Ho(Rܹ~-s[b/V-&}42 ta9!MLF蠂M(D} PH[:ݖfn)PPed=Bw,S[i4wE Oc*EtW"H߶sh0}vgyݠߢR :+GM06 Pێg uFK%'m!= [:_0K_ĴJ(`V!ޣH#j"zWb z?ôs#D,&ZOҙVOяᠪ!z[":;L{F6t4F`A[ ?L6.iuovu޾p tU/QwMxӣأq~ʌzDtt*ɼQ >m39J>[5)m6Bx7"ٶ<&GÎUF4rPGҸ)D k@SzKT2J40ahCsrS EpL4EZudb;'GS$ZD gI6F.s4hј,tߣMFUk;L̹͟TFeFi"FMZӤM1j/ T i005Zo{4H]ݹ lc4w_GUl>t*20hg8/4&;Ⱦc i(#mi(`; 7rL&nvkGi,bQˮ/( ~vj4nyۓ :RXIծN[2sXG~O KlR $,'H-'QZʬK'.h/x,Ƕ>*㒟} _ـ;hXbˆ>*Rw RgMt$܇Ct/mCtJg<:plO]Wd+0Ãu~2:[IKh(>7NI լ'i<6O; ۂu4k%_fyNN^BesGЗ}2~Z`I B?A#&t˞So#_1eb6rNZ\+~$f|_ߞշ j(}Ak?~vep}?Zm fՍ]<Ž=n0lw3vH5?9g{ {&@if5β⽘ۙtNNӚi욭:54oJL_^8N Q6>69N:H+>t/gT*N#R 9tVH7Oy4Ͱeb0m*{yUd wtFi4%3IWm]~At+Oы- .h?lU0U=OG#t-)[ex'cZae6=.ZtwvaMr g!dPTV)e(o? NʡgҶښ=bn;C%xl򮲢3~3)ͅ|^:??Lߜ@QMO3:q{x`i=Zb}Y&ϥ kAnSv ًC:9#:,PL&hghZ &jP9GZᡇpwŨڃAZxp0Daa)Q`t<TqU^5Do czr~4@: K, / gJFK-¬߹as0o};[ \5!r@ꄔtH}2P@B׏OKFh~~8ߎGNb׏,^j]a)];׆Ua^j]^󪧟E}4aƄih+q_|tOF~RRGsORxѸ )N FO! >7Rm;t}R RvD|g3 H.zH-&]7+)+&-z{֚6RiO8< p1iR@:쥷磘6k^K=f쥡Lݟ4Z:}i~7ů<2[~ZKCKxqÊ oNk -5U#.}(".5#.}(Y7ŧ#=4HwK{hKOMSiqŴi |zݲ>bsFuv@jD[ );2Ԋ4|0.O4^L |z 9wxNCZsᙣlʴ;RDc5gϮ{b?o)Dxy3*̣#f-@s\K uD:~;fR&8UDKzh A)] -uy4Cz /šñB iulP1^fCZ-H&73+F4!4yeK'70;}'C{1Q?AyޥNсR?+/m)y)zf餥@\TJcu#W@7YyiK^ޏ KAujQLH4ymKh\Hׂ @g-'1.53KgZyi9kqRO,9)xbZ1D >!yi+(^R>Ohw}Z XtwAR2 &="yYk:#u}TOdcjBkxVBԆ\7RҎeL_rK:Cpմ J<}"ģotZA7 $Nx/m+q:QYrG5{ܣvSuvܣO'\rU}}ST:+p>7|]j0 >X;xOGk9e#彑T^^GK55v1+od .Ţ[ki.!ˉD2l .@\zVVdŕbf:|{uQ)e{6~MnaV\ ,..&hgĺKo3׫BuCjQFZq\'ނT] z#{ 58&d8`EϟxirS%QgoaL:,k-ěMinH"5i~T}@y|uRg7-LGOӔGiiڿ`F::ϼ^=` vHˑڂpnH?|>Ɓet:f^(QHqu}tu҅ $7)imx_84ǟwv:z>6#yy-l_Av94l&^7oDFHG#lՑYlhfN36E:X!}DV{"!t9^81 h3w .R$0(RD%P(0,; mLUHS]iΎ&zV13͚2=)>b}J>/}.)H]GTHZXHKKsdK=6Itw-MmT@TD -%e2JxŔ٥2-OR$%=~MtK=Py2y!u2洸lxR&sIBszKJdDnZt׸|3Ke>z:}9HXJK #qh)>dlpxB3o }̙G^Y޷!w[nZ*x}c^ۉ17^T2oy.X%s"5Ҟw4!l xNC@ "??5jxlܾIz/x;qQE3@D@W'XNG9M M#ͼZ[ǥs"5HEdVSL<<2sy8W|jbAVsRB(yKWE,Qoy" =>u'K鎐OCe{8iI/M^hߟ2,qoەx:ZQ1?D>D)75}=~詺p|E:3[!"eAB]GNOi~_I'6Q);O0V2]JӦjpRh;UsO#ZUZpmqUM%Kb01x /$UgAcڜ.0Re QG =^ZLyCs/C tHs ;θ(I2}~*~ !TH:##K2m Z#ST($Rv `ry)VJl"Rѓp륩QCKJmx`7z%Hۅok H__rhGs-x)SMEDw4c7HώZ[XUV*kaZih!ddT4N3ϖ abIIhB0ot禋/oy)o⥬' &Zr󼋑/o 1G@RBLsM69^@zWe7h5Js2JQ༢3ol'v}a]"2\E?LhkSgKt]+RlhzvuەޢRFJS \5z(\tF-!B&+Sg-~[E"gήL1yED>CSW3BK=J`Xvo\᧩ -݅6DZL0j(먥u0Ș[8!m-% 8 *Uc"%MD6ٛʕYOEJLOۘފ~js;HLϮ}Cn^ =/.zsӼ>2> 9}-S'R? d ΍/WFls/c`jETNdބ.VHDZԠj_9^wB*Q>fAjҵH!M3YKj*^Sxx1RmS-=RԢ1[{Ĝ=9 .4EXT4Z:^s/꼫xK:49Wب"#-0;xhZKwRV {ɪjzmxvL7B L%3sv-U T95Y'^Tt&ތԲHo?*uS#UF !JK 39"5R #אoMY{Z+^y<Ҥl".@:^ xE-.}?[(QLH"Y +~^KLMB1MHձ^Hɲ'|N6›!25ϻͳ]܄j)<'ڍ5D 톴|XOe;*oWŤ;3}ZJiCԤzpG!- 6i1<]tা>Zs Gg9Z6k#k?"řO\)kf﫥wRC5#u޵*+ޚp@O2ʧZ::*qi/ސ&mVkGM3R{%/bzg!5kGO\gGz KM3R~_}&oYH]4fsD:k9FxԬN“baQ|u~V6Gj˻}呃6f79ʪ֥/s5Ez%UR㓽^Κx{-lDeQ['^eXA5O;Dz=_ōݯym/ұ.YߑkxR⪍ ϭ`\LϝxQ:D?ۼpi\4utXgψf^VW_.޺}9HI=raJ[ BR927ax/3,DMbTOMĨ'2X1PHgՍ{QkiڱhO1Y{>S]H5q޷ŊUÓ+T2ʮ*m@W.ծnHo anLjG5h YTص8kz&Ru8W0Z2 U]x_=:;۠n֠IHe.gQ<KpԻ#" UQ0,zKp2nw CڂayE|oH]e~4c!ݑ9X }1RWs>@ c|Bc \H](! 'Pp!ݞIENDB`FP5?ԈΩ'JFIFddDucky<Adobed       , !1AQ"a2BqR#b3rC$Scᒲ4Td%5&!1AQaq"2Br#Rb3CS ?, ^>G!ahԍY)c#`q>236#DD223]=O0pZ?vyr#YNvclB;k~ޮR\0qy {NI~};Ҕ?r{~eԱ8o\,1{qkG\qm:BwݙL:w5O#GvҮ0#7̻v˻)_>"upx _=u6w,u1ToɹzMǧ}c_T[fK3?ϞD}7״.B #ڸ5xPY1];3 tJ2K0$zbVf #nA=u>.YIXG/Pټے?3? <}nbR9Cv[/^I=+Ov_.?\}"cǿ}ئpWY/+:pY$4 ?PG"Úmd|zk2gIY.ŽW~CkK ְ?oˍrړՖ^݇wYɴV9ODE{=i!#B-f&'I^;+J<>a&ZF·s~!U&OaƱ ⯷髕v9lͷ{kuŞ/Ô+iɶb&4q-hɹ,9b{f([b^4z*f#.𷥽}5q7R&ٯ~&dFm4Oӓ߷e?5rM Ѹ5ה2>id{)IkSԓ1&5\ԝ2} ݫ곗g>sGۓrmLy<-ɱJā$dǴsO{\4R^n՚Γ[TX]%|lxԶ.C '_?5iks\4sOA(1CS)4-+/Nx/(R'acH Xյm5btK"DL{i+eђiCil|kƾ_Su}LrxO4w-b:R=s{vT^-›wɷ$i?>mZ+pؖ:+Aw'7a]"f#T,|"_YΛuCyfGmֳQ]Z6j;Ǵ{pZS,߄ғս'6z_OozB6{w{ F~s5Icur9H9~/a ?j-Ygw]O8×646lcL٢vٓw+.F#ڔ"Fy{ʧɒo:M="HokvFK{1{7E%]{dnp*:{-Xj8I .f\V1>g ۦ5n~庅ŜLHm lLb#5ƀAvR)nHS/u.ݎF?{{q yo~g%j'X]f>%yc+l~='6zO_ 9#{ipЂ;*dKZttZޑh]ۜ/=6~cmaw԰}u~[}ka ?r7f ):>7?aR"bcXRdlv4>؜eB [ӻx\}q+[+ˮm|#>+/l&0jyI$u6[:mF:r|R1wlb)+{&~ޤ󓏂wm#=?oeoIv잤vk@ZґX9ng92NQ8ъfktEQk-ځw͵0 ]/Mڲ'w.0KiλL]\? d)vܳ-2gH$X-˖-7iElM9z֡' ZaFo?͏^gǞwkN3Wٍ%2\!ţ=+aF,8nў;TIs\5t״99 g'c1LT$RC*{IB}(3t9y=zi+~Tl}g.5G=3)iڟ iԾ٢ ӧZI uv8>v~f?/O&8c#<\Rt^zZ+ABzQ{lc4'omF,u>ϚGһ_t4s~+b&fxG532~"Oi8鿶4yryBIp0ѿ\]v838;>qyrɰ?Ɏ4xgx<Ͷ)K^sriQoqLo;>cN5x{cw!s]`s]u'u{)zK=FOnЦ\kIb=׵%D7W4b{@$c,i9+&Rq^U="Rut4* ]>krGu#5Z5s&>G~.gSǔ~ ûQrˊ/Jwo6:>sk8e{2F_it h1k;m1}S_!Nad ѭB?bMbgꏭwۮE_kFwtz;ԵkO0䐇O0{Ւgª>;J8Z,U#Hu^߻VSE6Ӛ[DFOHeF{ʭބ^xqW4LinlV+V;vܤWqN⷗ ΓouN{ZtmUWT:ˣrۗJ&B @Ԏ;\ԘsN۬Y2R:Eb_˓W#tV0ZF8 Vwy+ ;-FL]:jJg#sGN@ )X{_n݌wJ =q>]֓S&?v8?/Z]xpӎÖNXeq2iZƗrg֓0[J7ifx\Snf*I "8J8}(56w]|3'y='X##4kilB?-?JF}R=T_sk|`0۱U&hF=x[$O ^{6*,qjƚxGU{xH۩__O҄]Kuv[x)ff-#g~O7[dn~Ƹ>b tl8,/={B~2تyJ/)߂;5QPzTXi;s`1L(q&PflY'TfV *Izͭ5VQ4hSGi:Չ[VY'E_Y,zq_pÙ^w5pyӗii3fVukǏ͊ˍVJ6@p[^Q1N:]^VӬ5҃t=>v!X2Ѱ&i7G~B7hv$.w湺}`ް%Ҟ~/w'|DPƗMw{E_x|t疝ULn\=]>'_n:Pza?_IUN-ilhP=psp =2ysOH𷞾r feAacoڮ:%&oY] յۋksG4oi,7״2t{5kkISrwdq&`8CۮeUg1+X=tsE!KVr:hPgS-,\MlŚt|uh]j5Çoޗ[v3d+f0Nuw g z{ԭ1`k,~[tewhG8R6t``[om~ݭ{Oq0ҦڲM{o1\ {t~( gd!eg-2@Bޣn0|Qhs7&fc#ft{uha45 o+"6g%XwOO&w5L>^&~WU{_[G~QynkXmIooe|tkolWYj?%~(iէ =Mw]KTFܭѐ<1`D|[ʂk45Vq@@@@@@@@@@@@@@@@@@@@@@@@@@@A]&v׵eOkL6G"N)6ͳ1 i:dv=#w%UjNsF4`GV7{>~)-7qӰz><_1hZ_σij;kFWe=2׏j8kF4=wiܫrW)> >7—NrK6ck><>iZrӰ|{@>a,vt6\2[}5ly e=)~=~pA:yݗbz0fY!o 앿ϿE r#Ѷ+Q?O==EwVa{c&oIl}$;M$䡕-y]cڂoX ,Zo|V8=-'w9Y+z6Q`<=㆓hC$r#p|o{H-sHGh(?;6Uٕ@9v: d *\e;h|ois](2X>kܝ63Mn]cPǚHלws tt`n+zד-RzO~ӡ?G K9mr3B\$ - NxeзRteqD*666c뽮Hcjb/^ؾ>mӑVǸ-L` Cg#::GnMvb2Z6ҵ{$l-r04,ƫK黮1S-lڹV6NK9%<'uӈ@Azcpnlf!eӣl]o7Jh[yhBϫ< f]߭dgZ;LњG'H+eu-Kn!Whq8 [qA:mܟgSëN~Gihyn;k2mc`E#-=5`NPU,oyijǗKubĒs'9fMQ٤aO7~Q9:K|1w ;Xqx Z2`Tl׮Dhorw㋦9kޱmboXb*&߼]18Zoʛףs؟pbܛ6ߓ&]Z`{5}>ۘͣ6fż%ڣWXٺ)cxpR  ~z펥EtmfFvs4y%^czV 7ҧN7fJlgOXw<'y7@w򐃍/G2LC_: ԣQ*բhk fy]Qѵ+:=sy\qA}6}"}Y~M@V=: |ĠJ_=SZrR _Vm;+\O:%[z3l4l5K6{#wZ\/#<}^oOO'&T) {+!nsl֞0={`k/-{ԟM5Þ+cfxqb ӞǑɍan ~9*׻595py5^uzt0(dZ/d#\G+>d(?rlM; _qy\=BP.UK$͵:-%VbY]8>ɨ n]jGD^p<#pD|M}A-T{aٌF=tTw"B7hw7;H2\6:wЍ8Taq/AWSڔC|6,yw٧! srѼF ۻYߊg uKQ;h%Vc>'So͆DtSkys8rjr7?c@-FYlZ#*w&нrjJRw/5 0G?b>؍zlɉc.ՆqgVo7Gwӝ2=o0s.rtr|33=ݠ ͙;Gʒd-)ig6ʳrǒw={~ FB)].?nԠV`ʷ!F`oOpp]0Z7s.ؚK2_sُq{f!k痱i7ٹQZ0f<+܂PKa>>XF'[qtWЫ!VJZ KKKy qW#n,;o9<#x<ࣝ66NaIxIx: 'N w-Wmf>q$Ӕ]u C>,Klo ,=S5`{5|Zӛim׆]ۛ&'pcЗ)iLppsH(2U I_16Locbܬi6Vۍc[JȤo нmM1uF6@ǥ];v8H#d:ũHu$N-jkxS\! < sa:x UY~yc-uӆ4>+G^=>M8rR٠F} |aI`JFIFHHExifMM*bj(1r2i ' 'Adobe Photoshop CS2 Windows2005:11:03 15:29:22\4&(.HHJFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$nK,uM$g@$5'@1귛aWPAkg5Y31Ml\we%>.qqZ47.6BhG;_{)>[W^{3uґ]K81v~)F8=snP0!5 T.r[GYnrsʡ{Էq Kܳr{ ܬٗ8>UZ,-?Ȯ]mx?Ͱ4Znwb6fsݒ|eˈ˝e^X;F?cguh> (yz_F ©CV YKJEKUښTvCP<;FQ=ZOVT1?ȠK-=rF>-a#^Sw -mAϩglz>-e>Ä2_TI%<v?y vqq )K,/?.zwRo73do B7~V6ijSUjV J Y.XV~SQo5\Kޗ\Owf &n{z%Եum@]Gñpr/SgT̪.˺},zk`F\׬G `}==j^_~@ˆ&]wc¬E|xmi/x!a/?-G++-fl̘b_73R2%TriTrZ^FƷ;Ie[QCtojp̖p3ogayK21m%VC׷ڼ*'^g [T-{ɘǽ'⼮ 1H L8G/궱JGC!Ku96۶Fk]~a9zYcq/h~ۙk?jP)$Ѯǟ]/S113ľx -CxWj+`:3:}.8Mf?;f!c]UVlweޛN\*$>:uY;?֟s\vasqͩCa"|"QGb@++.ֹ-5Wه@gx?R _ޱuq:o>ΧN\R8wѷ/0nyGSLE5c]WUM 5XUkDb": lUvGZ[T.Uۋ^Y~IK+:I'ZF;6^Q}T?_OoRpTks]ל׌v+`g>ӌ\fhJF+A W\HypЇ]7LԱ+Ȍm>عʂSW3xm7H[cfy}'$Wүl>^Rz%OZyXB,uO5I_괏鬖Hjʏ/ǹ=tpIm`jk|KoZ=cf}dwݒQ5m*z=Wu.xE'[k,w_\5̃!1>gdYs t ֞f`Ḗ<f~Ԥw7qN6On=~b~C;ȿfuNx-/»IL7?+nwƥzJl_8_0;hnY-~ı5{w1ZZk nWq>t-*ù4X3{EO2o?W̳3g2h ƶ_ʾϡߧ~],S2p_5lq!{we3ӢuQO!K`ϴ; ZWK2ǟ$_?O>7Oj13fU-Y b-[½P*-[+qTʷaV~Mh/w`.w Cr\t ~Q9V`Rv^GZͿ]⺮̛[c>;jYZmb|peRI$TI%)$IJI$RI${g8;6I~g[wwҚumt<ZRwԖO_?SXVO3, R2d0t>vҬ`N_j)u}.EY8ۑ_6,|tɆcatَ@G! oR`,׎sUKTz9cov=))ib]2?WWK&׶ &zmu"@1cu5-<|dnU,hd+uTc۫O?GnGWyOrNo pf,@! ,z+ǫ$AT+fI$TPhotoshop 3.08BIM%8BIMHH8BIM&?8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM08BIM-8BIM@@8BIM8BIMI4\ Untitled-2\4nullboundsObjcRct1Top longLeftlongBtomlong4Rghtlong\slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong4Rghtlong\urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM  @JFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$nK,uM$g@$5'@1귛aWPAkg5Y31Ml\we%>.qqZ47.6BhG;_{)>[W^{3uґ]K81v~)F8=snP0!5 T.r[GYnrsʡ{Էq Kܳr{ ܬٗ8>UZ,-?Ȯ]mx?Ͱ4Znwb6fsݒ|eˈ˝e^X;F?cguh> (yz_F ©CV YKJEKUښTvCP<;FQ=ZOVT1?ȠK-=rF>-a#^Sw -mAϩglz>-e>Ä2_TI%<v?y vqq )K,/?.zwRo73do B7~V6ijSUjV J Y.XV~SQo5\Kޗ\Owf &n{z%Եum@]Gñpr/SgT̪.˺},zk`F\׬G `}==j^_~@ˆ&]wc¬E|xmi/x!a/?-G++-fl̘b_73R2%TriTrZ^FƷ;Ie[QCtojp̖p3ogayK21m%VC׷ڼ*'^g [T-{ɘǽ'⼮ 1H L8G/궱JGC!Ku96۶Fk]~a9zYcq/h~ۙk?jP)$Ѯǟ]/S113ľx -CxWj+`:3:}.8Mf?;f!c]UVlweޛN\*$>:uY;?֟s\vasqͩCa"|"QGb@++.ֹ-5Wه@gx?R _ޱuq:o>ΧN\R8wѷ/0nyGSLE5c]WUM 5XUkDb": lUvGZ[T.Uۋ^Y~IK+:I'ZF;6^Q}T?_OoRpTks]ל׌v+`g>ӌ\fhJF+A W\HypЇ]7LԱ+Ȍm>عʂSW3xm7H[cfy}'$Wүl>^Rz%OZyXB,uO5I_괏鬖Hjʏ/ǹ=tpIm`jk|KoZ=cf}dwݒQ5m*z=Wu.xE'[k,w_\5̃!1>gdYs t ֞f`Ḗ<f~Ԥw7qN6On=~b~C;ȿfuNx-/»IL7?+nwƥzJl_8_0;hnY-~ı5{w1ZZk nWq>t-*ù4X3{EO2o?W̳3g2h ƶ_ʾϡߧ~],S2p_5lq!{we3ӢuQO!K`ϴ; ZWK2ǟ$_?O>7Oj13fU-Y b-[½P*-[+qTʷaV~Mh/w`.w Cr\t ~Q9V`Rv^GZͿ]⺮̛[c>;jYZmb|peRI$TI%)$IJI$RI${g8;6I~g[wwҚumt<ZRwԖO_?SXVO3, R2d0t>vҬ`N_j)u}.EY8ۑ_6,|tɆcatَ@G! oR`,׎sUKTz9cov=))ib]2?WWK&׶ &zmu"@1cu5-<|dnU,hd+uTc۫O?GnGWyOrNo pf,@! ,z+ǫ$AT+fI$T8BIM!UAdobe PhotoshopAdobe Photoshop CS28BIM:http://ns.adobe.com/xap/1.0/ image/jpeg Adobe Photoshop CS2 Windows 2005-11-03T15:29:22+11:00 2005-11-03T15:29:22+11:00 2005-11-03T15:29:22+11:00 uuid:68CB72501E4CDA11A80FEAF157F2CCA0 uuid:69CB72501E4CDA11A80FEAF157F2CCA0 uuid:67CB72501E4CDA11A80FEAF157F2CCA0 uuid:67CB72501E4CDA11A80FEAF157F2CCA0 1 720000/10000 720000/10000 2 256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;20BC80330A886EF07B5067B6838C6871 348 308 1 36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;0BBE1D1A720123581CD87A743262BBD5 3 sRGB IEC61966-2.1 XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed         4\,  s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?N*UثWb]v*Uتյf[RW'1#j E %a%ۊf/l`#O 0/,g2?}#9XF_?ҥW^n$] ho0v@93N?җu'5+Q>ޫ(aY9G(C(K'5k,VcK4/r͏X[U5Kۅ#&j1rIiqXm֫q@~Y8w_u_78u.Igdjq0>h̹ثWb]v*UثWb]v*UثWb]N*UثWb]v*,,j=j0vgNpb}.KZׇO'a~zJYiy-?a} <{Bw=yY_D]<\NS7"d#Q#>\ hFɖCD nT ͕IȈALQr"q(/k*6\̖ͅ?dc&&Ӓ(I>Sd,Ya[^q~&_^s[9ro?{> \[*;C^~yQq6.L2 a8]v*UثWb]v*UثWb]N*UثWb]I<몝/ښK?dūzO9ݛC-TnAsӦS]L/L.,a,!2s6U'"!3eRr"3Qr"S6S'"!3dfb /k( _P36_U4_3k~_["g^OɉxKFlq(F3\ DJf;$?ٽrs/)Cg=c6>UثWb]v*UثWb]v*UثN*UثWb]y>N4q(&1~sߴya꽖Id?8ӼN!&S]eˢYL"2U'"!3e%Ȉ@rD l1# e3e e3e eQ?1kG^PA/.zgLUټ<^9<;Wb]v*UثWb]v*UثWbN*UثWb]xO.GMbk6p}ԑ;OA&s[S]̦/L.,:1E\y)L!3e%ȈALr@ fl&!3e%Ȉ@( ͗Ŭ&n|CY@r ͗5͗5.hּ",-O%͇9ˢiY2ƎY+tBfʋD lNDBfx@dPP36_P6_P37\!&l!fm___~J'徑 7_> &8o47wTFwf}yxڣ.\^saЍdɑz7?6|ҿ 5vĖQC_[w%K"9=W * {rI;?ѝ1e'strsdUثWb]v*UlG"8 U?^W*og_]+'6ju=Ű>$K4C̼#i3|*8˚ivlM>1d'̿~5+8icͿpW?NGN*UثWb]ͭSV6i&*N4ݻNGYﳺRLc%.p{| EřL ^tC2@2eVS2EPS6S'"!1ʤD flNDB fʤD fn܁3e e3e e3ufʷti52i<}oc3gNG2C@8z)K>("xEӀ,k/X:W)Ѹ4Vǜ%,مY<?c#A$ wk`f ?>68?ˍK^"ȣ\EGPAt#(ͼ!V8n.x/ٓLv6~B~si]NKv$$Hq78=$Lm2=yNKRb]4N?z?6=So-'Pzea͎HˑUFk(f!?XǙYڄNb&SF0_XR̍5oLOJZc&0"a_WIS^ym94KU.?V5{u-$bT|쏠f.6cJMFd) C7=mFMXwvoɳ1ʭN*UثWb]wS7>bSy0&<"q缑gcOÊY?.ab.hb) .qfS]e."fK(͕"!3eEȈ@Ir"S7\1e3e e3e e3uf5͗56<6Xtfu4֟i v;5{5cq}EyOV&t@'{Iကش7fQ?ȟ8 #  IGBDe, :$XtK(Ȕ*(P1I~ e+e7NIf_5|B$\Uh(6) cȱ(Iڃ*إw-0 Srs*a7skpݮgiۛO3^'/o?_U)N*UثWb\*& 튾rukډ53;_7fs}bl\!aˢYD8(2hy [b31)*.DBcIȈALQr"q(/k( /k(_ e3e ƽFTi6r)'0gA_+qz^Ρ~ZRe8^jzD?yWaIG¹Dr ,J:$XtK*B2%¨Ȇ*bȗ Fˀ(bPǑbPW-Pܿ\ˀd{q; ̼QLTzN&*KIzz~1 ;Nt|6?N*UثWbXuOѾS'V,r])yv0N.)VAu&S.qS_̦/L.,!ZdPAT ͕IȈALQr"37\)Ar@lX͗5 ͗5 /k( _Pf9g rVƣ19e$A'?,hh~]t cowdPju;;ːFG5XRs(eS}-G>__ DK=ípyp{Ƌ_l4S),+2Yt+H(W(`QQ"ģ^DzdTdK"\UUg4H !$X<1P\\\ wPR|#6z|S ؅2^LZK̙|*&_z9dN*UثWb^cϩ:n_e#K3&zq8ze9?8:ș.]L^tC2@2-q"S7\NDB c"!3eEȈALT ͂-3ek( /k(/k(/k( _Yg΃o'IהNo)n9%~rycGlf} ļSh|mD}ܤd7 ~ y >dX"? D8ī֒83LE )(W(`QЮQ"ģ\EGBAbp*2%¨Ȇ*qTdC !ʤPPǑb2R˗2 M\ |;w_Qݘ t(_`;CMV8y)YvaeN*UثWb^ O/SXZHvo(_8.jOt=G-?|yb@v) EřL ^t\Ytb\8QK8͔"!3eEɈ@Qr"SJ!%3e e3ufff5.hZ6ՖKGDZkaSh _88`lˑ֔s1=eǔzogEɉf5f5cw9 2(WQ"\LJ>$\EGD2#"^UȗFDBQq*!$X<1Xm0 Ut\0[i?_͍:'^vppogabӷ;N*UثWb=gQM7Ik Cܪr dq6rN0D_9Fd䳟cR~)HDenQ ) řGtC2;&X 3ern@QrbSNDBcH)V36Y͗5 $ e'΅w:7Ue_9aÌLҗ0D'CK; BGqPm֯YP ~6//9(WdȲ(WQ"^Dr ,J6%Ѝt¨*qTdC ˑHr% !y%rp(Jn_e@2 t J~R4Z >)Ws#̼7]ޗ:/slثN*UثWb{TM$&T#+I4!wi<]1/y 8Gt\YˢYƙU,"9*D lNDBf ]&l-e3e e3e e3ek()hyIGуCFz||RfJ^OQTP3|~ikKFgQiӞ'c#6H(X'q2|ܸWdH^Dr ,J:$bFDUQ UUr!9"ġmPX/.HJn_e@3 3η|mRwn{;LLyΑn{?+}sÇ9ͳ)._N*UثWb=>Œm ~,^pK?R8}2@tC2A0gˏ Jϡq ­eXSsdbF[F9>Y?>XokЄj|Ȏ%Y@8ךV/2$>^4RSNFW"^3ᬏL'F"Dӏr>9@;\ZtgBͨzlz$Wf%ۼQxG h1G̽pU[t2.ц4?zQ8S9s$96bZtGRR*?U>Fjݱ"> c8',>I?h-7k6^ׄ .?z,>dg|'4Lj;&-4^Kۘrv?i,ͧJ.Pnc ;jc˵!q%䤆0؃q@~WCGfg9!zf_Z51jEa0_ݱspHgqfnT(W,dQQ"ģ^Dr% , :%ʐp2!FD1TdC FˀFCH9"Ġ[ M̨A'GN QL)<{ʼ bzz giٸC΀};b_N*UثU;xm)ѣCe A21 $T_QWG1Ov7Ni1v8Kc6o?$p+id_Y_z;׏9ŦAgeHv*qwkl&HS`$d K2A sJ $>6',ʏgg(KO)!G[yPeò5M?z)T,N]_OQG栭OKc?Ő HHM|Šߐ,k=9Q.M&X}QlHD&ثVɯ)t}X`(f-_~vN?fyD\A \Gw"Em<[4ASS0kj?w/ãTzV6ۭ;jM+#;73)^g՗G=ޔAV/Rhk&3LXY%6pZA9RxW2Yt+H(WQ"\EGBDlKTdC "\UQ * d$P((ycȱK_NBSrs.blt4i>M;n!;GQxͫz~!,> qsb|dUثN*UثWb3*f (ܓoUZ3x.]65ad9o?4OS5w\uvK2?qQٲؐ#/zZA.}wƷZOX"A[ll0cIe-"5gw r]H l6`bP[Ġ9tX$ĥ!젞Č$4a3 ?GsċoR? 9.QE/2Mdye]B`'Cui19غSN90՞ޡ9ykPMsx 2Qh3`>3 "fbbh)QdWe`z`"bw/4pmXdMD@?eesh0jg83/K1^M@?.T0~&)>pakh>s% b"V!8yj T\EG½2% $Xt+PXb\UQ UQq *܇*ACHsEB Srs.`ki5]:ZYYQTwg<@o;Ĺ8ϲ$oy1Fb,)NYfմ(n8KfW'7v(<hSHaihBQBa2,#bXl+Ȱ(WQ&%hFDUQq U¨d<(ACsE@\\0 kۈp'0-k"Bܤ M[㋽[ _!BEzG 7_Q{mv*UN*UثϿ<5y0#R]Nt58~=HLc\Ml9V;NDs-8N2Ts-!R$.bPrtCر(9N]%;eYp`d\7\%,n`d\6L%+l2o,t/EnHÛNM3Xe?Ŝ#f}APAHPEFyA6mٵsuok\ȰrcH&1$[i{iwm*ʀЕ5>VULP5!JِylF}FG}J&oH`) 6cg'1Es?| I2kjԬ@qUdYI4h,skq"h,M"&%=#3s /*AE)5m^.??g: pf"QE,q *:LUثWbN*Uث=uLFzu'mDٜ8eR_au=;sNpqj3e'0[BqjIS*P]%)ʼnAr(9N]p`T)]u$)euɆIee/Pb/IuY%Ȥ?u'sQÀCR_`㽾 y榦f##_^(;'/9{U"#qbtS]uYu FC$`ƴeNrG1/7JwK_DU-Ȱ;Qǧ,4} r_'/8y4o3`2#GaTZցC|JY0U9\FPkMs6swLwQ2|S0r^9rىcw$/_} L?W\?K΋?[݁QIOaOB_m?64o*Hǧ¥+l'GY±ls {G%= Ge/d0L_ߛڗtuk{4=Wf?tIO|=?!5h}_NY /<'G6"#J2#'N!^y+H? (ozfO8#Xoe292DثWb]N*UĀ &nI_)U:ϙu-PV:"zlTN&PT阓-8N2h#SͰ(rqAArر(9O\, SEBJlXK.L2K.X\7\2K.&\7\2}I8AWxϭXޣ-QZIFhObsS7~b$e2f-qOڏFdi{G6>KϘzf_K3(}#:M/gAK<,)-.LFz4l~Ş踒*]v*UثVA,@;`&-6kQ%3؊7ܕn4~7l CVB9_mҟ̇f1-k`V{ªR`?wn5ǜ1]_?su Akdzv4Fv=!HF#f#zo\Wb]N*Uc'H^vf9֟.\aZSaiOi6Y ͢t9МZLÙm ͢tIm в,JS.b JSŁANe[p`d\7\JYpr偒Yp0yR0%K!Qd*hPYX@oQܢɪڌ&ILv)4jIVo#Ñ)KxyV:u?Vi @9oT?M dC2d"LdC* e2,ceuulx\tdbG$n$E͓Xy2vo6X}.?2JN2uZZ=՝?_cS`S\J^׎YkGm֙G4[#ٱJ mo]Q( 'Bԋ !./1q#|evk9 #@(<DYDC|y}"P b#_NŐEJm>K7Sq vF:e'I;3lUثWbN*U_-?Ɍpgo ܧ:О/)N̺МڧLęm Ūt9МڧLÙl ҜYD0(9N[%+e JSD1(C,n0偒Yrra,-^VڅJ1櫷]7`yy:nFy܂ÔwMO.O.VY7ҋHC~vCr*Q  \C)d.S"#"TdK3FD6%ؗFĸsEScH 2 $vD1)müI.4~)wy t=dje>tM$[w*}>/C˘v*UثN*Ug断WϺ+rˍ^gE<=oO!Mj3:e'60[qh3e&EbLJ((9[-(9[.؆%/l*Yp`JYpraWpr偒Ypr?]Iy^=>տɌzSa_Zq4v%.rnK17h~'Q8i3x1v(ÉQsHE23ȆS"#"L\C*0td#"HؗFĸ⨴\V2,“f<02IK2"fߧ|Ɉ`K~h;PZH/q|?s?>_F|\]kWb]N*u(&Q&j३-`9̈B)%&宇bHܟU^A?vN]/˲f7[[Kq)PHTTB 6o5BYnd?.O KS y˩$ Mad"\L2!ɘFD23ȗ*,2%J6%Q bB9D0ُ&a;aAK2b[uPٝ0rʢSm5]nEe)j%=7+Wb]N* c^M6HԗT M?y'D/,{9t8αj3t8N2D阓-8N2r e!BJr(9N])bĠ9tXuC,l$%-, KnX"|7q rpN}dَ6@}檪TPV옗枨l|uM|i5]^hi0x8#y*qj3e'61&[BkbmFV+eAr(9N]%3uCRˇɆIee)eu$)euɄk-`uη4ӯiy״RGL~a5摹5{wjōgoY}"Lz`qG c$\C*0e2,2!IE23ȆRYd+"lKFĸ⨱JB9D01Y4!%-lȈ`R(F3+8R4!ZjQ ԜB|tm{tWb]v*f'ʷxb ųeS)VD`KHH]NmSa̶:f`NmSa̶{le3|?,lTMԘUm&#ǃL# 55V 2xbb{ۈgJfL$"v[pr+lJYp`JYpr,n`dԵ]6r;h@y"-͔c"#L=2R> y6Iv`R:,j7He2?3])y6|察FNR3q(.S،}.һ؆dIFD23U&a2f.S""QfL Fĸ Ȇ*r69D01 lB [pٓ7zD v>]Nm{;QQ*ӿ"_y%.i.+O 'DnX̿].sw=6]v*Uث_wg}zq-'uiSzz#wB{:gU2@O,eƈ:lNم`7F*7~sQyFXm>T0eޖΣ'_,_kWk2h 6Ǹ'6nF,X[\zAҿ){:<տp>/{ك2m=Ӈ߉eވ_o9]b_3x"Kn?CCb.{ַoG09H#L}pb_ /o焹Ȕ'd{{I/k8zKKKR׺-{sn&?f NX?inէ}SM+B%:$qr5X_&%[©&b b:$%w , ˆǟ/~Ѳוק5_RNcLE=r#O\9K}+Dw+36+#] ^eHOpc͙%P L2!ȳS".U&ALѰLUTlKb cH LsEQ$.bRۆ̘y,~)!yv^: LML, i B)B_=#>4:i6Xv*UثWb2MXᶶ ZVv=,D=FW)~?uP2ƴ9|RɞZ&S{~Lb&̂45%f!6`=X-LatދȟypnZ<_ck]Gl෷a!6XP$eSv*UثT.zZV7چ5eLOPE^O|<[Ԇmٞߗly/uW7_i3lfM3y<*,?Hh9qDYv Gr\,%#sjۛ RtK1y t)塛._˚dJI܋hmF#{QcMk{sC15_͚ڵc-u\hsx#7m -.cH#"\L.%ɘFD23ȗ*fq L6!dtQ.Fĸ-DLraIcȳylRR2"fߧS̘!:3Õ߲4G<_Ih띊v*UثWb-6:kqfI$'Kcd"2DS$EE*( -]v*UثWb]莌 Tv 4 㾉&?S?cWgEG/qɧ|O(W i3XyBEKp R㝖 v#! 8}yo"#m#/Fl]v):NIVV7Eo$RfYDf|ͮ^JZ)HndU;þydrg#$ Mad#"L0r3ȆS&aʋ0r)F½1TlC"\Ud$R1$Y&9" nbR1 E}WL! Ͷ&><4D?mHз)3.z/cS3޺MAǛثWb]v*N*UثWb]v*UثWb]Q +Xv4[XoƢRnx-3OۚNr4 mL[vq$ 6pA辳F@rj~Śjv۫1y{^յf*Wjy$'[GUɀφQ$$0,/qC3_)W=WMhzd dqLdC)0r3ȗ+dqTdCF1TdbV)f<014ӷ\K.D^NōeB7ɮE%1>(ZhcgSz{c$n{T*QE{ )7v*UثWb_N*UثWb]v*UثWb]v*UBO-^QC)FpE\Q.׾V0>/NǏ9zd-RG7^WG4 l}b5[s]Kv}qnN(A$Ho4gB=e<@erf Q.*z`TlKeȔraFWD^NWō2I5/1V9h2:LybU[e ?ٶٿqgBi(:}FOCz7NʜɨK.*&Ʃv茑C 1.gjmW:~\r7/.\B3rv*UثWb]N*UثWb]v*UثWb]v*UثT=6mmջP H{+˗'KԈdN~?طQ!͈^~^~hh65Ke8sO/- WrrJ&&d)7bYGˎM<WaKA6MQ4d~nkFd?+j|hw<.AbN?c$V!z}񢄹рۓE?Yg!X~ӰgcbR d=d-QD[KG[`~<(@(! g+'ǘ9-^-wB}_C_م?ud'[fV?G83[5FI]v*UثWb]v*Un -yh RmPNG  IHDR-珠PLTE3f3333f333ff3fffff3f3f̙3f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙333333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffffff3fffffff3fff̙ffff3fffff3f̙3333f33̙3ff3ffff̙f3f̙3f̙̙3f̙3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3fDbPtRNS%bbKGDH cmPPJCmp0712Hs)qIDATx^]McGb/Dh- ڇG>-in]UP@! QwQ[DETV{x 3i11˘ixh̭9]R~nW<^vPѿK`-8C:2k#iB\SdF;iiZ |zĜ(t£i%`R_Z12|u>Ɋ`H&__ciL1#0|#}?f } ƓS}7ՖwIZsM;*oeY1 ɻkݲ* 0U˦LO%cy^Wo_'Y/ 0l%_溠]Zhd?feK&fV8)aZU114qvi`csɱ 0y=ϏA-µ5!\d@ ~$?Ecd$嬦C."C^Վ3f8T\fAo$M ʅ'Im}r12+TOz*(N|)]՘wW+42 he}5,\Fej 7i%Dٴdlqsf!svY.&X=kexG'k w&2m|p*Ao1 *8Ą􌡳oFz6bsn0&QJ(TM\+ "<-E)=h#wyn6Oyn7ۭJ Y:skb1 sg[tF/+'u4\DUohʲ{*j6ٖY~<_%񈯏Ǫbk/sVb%Mf\~.˟(JDO*|Zt̘_F]Cʹ"dy֔I`\wAN[*\$nm9rB x?7(ߟ-gelx,V9 0' ë<)X~;wy4Й3^qBߡ=,I8_/V 0mRZoUU{ءc/,w|QGUYU [JԮI=Գg[X3?C^1^Xu`tD%dD t{ 9c~ Wh l3nlzb y)1 1fU1Cை3W( y"WfZ>_ZbuƼ~~2I'%[Hoq- K[o۫׫^lqZQo~s/,=}qcɯ2׋6WAļI@sŃ˰޼}ƉR,.KØ{Q2h]t<2x4ˏ lGo>yw`1Va$nCTԆ z2 EK#6Eb#Ky>XcX̕sf> 4dj>XZ̒@|Ec`0>?f@cz`|KYZ *R'J/` 3r|;1Yq~ ^Gov|\m=mV_8Qnh =_d5; 41J(إ5Eh]nJATh0 BͨFF_h~N] s-~L7<1O"o 6-V8+ 8']dVF5F@AJh_A]_lfQ9z?GRNgK82c? ѹ V1q}-:kP]nPU!c$[=*kDGW̷5RxB$ U1Ն,Zs< R;ymO?]O3w |IWnUf`j9&O!/k"la 4`u8s:dϢcd.N 凣)Pt &LM8Ҧ3ʬ c%CI_L@U8Onp _5>BlDecJ֏+Y1v\Y"SW,Wb.#aD\~JXeڶ Mˀz-ӡ96DmߥVi =rp _?21Xכq#鑫2klɊ 0S"t}wz}5}(#%;ۋ굕QbUn?!Ywu-kpU1|of)`LAc>S0X`dIzHTh¯îjFf!`Ltj,~Uᨈجҙ"tvpy4 4^١Xmw!~󊊈Y,W^=%d 9}:ž+crFn hf=. 9YzXr;l&tx}3a}>`FjV<7ǫv)}y3 L;Bh@k>h_R߃vBtT`S_hC"c'ŻT:O+ MgcSGw>wj.2&yӯGw:3Kr| IP5,i) ;ۏgc-6zs~U/@f BϖxvjCn{|{TyE;ێEcQS<`|X&ʰߴ2S)Sv 1ҭs9 oTx姺Z׃HJw}f=FV6`LGvnGBȘmwR7?LY,Ƹ]3TzB#k1nc7= ~5wbp3j ?iwQw{8_?P ks;,quю.4]v'4zmƬ59Ϣ#(Q:f+klNaY`do]QK^v]htgZz]3C .-^o9ƙs1 {P5LwkB0=J$ Zz23ɴJ(Tw{^/_=*w=MT8 @IhO%iOgqlRsFX7,. iڵ[:}LSXOYF*:cſ2ij~|4.Ƣ4u-{+$$7V/m;Sgt|Iݬ"SU0Sc0 =Ʌ/٧̤1{$,&a`LȬYp#fdfS$ׇU0:/rş&g牯乨֬0 ""?اv߼dC?aL~_fjo0OL%G/fڤEh-L` feNcgfc6X]8 Kz=>s7>a,ZCj]LuIHFx2{T889i1섋Vg=2vi0ab]n[m55Zha¯';+%}Y995TuU:e4TDo^[?ڗs0E?;! ;uw`>Lo&<~+DVZ~Ǐ>a `n\Ҧ  \|)@C`u/1mpgSsvg_4bu~aNnp~)v١v]ם%>2볉kcov 1K>g݀_ _nic&o$rA1ѣQCuDt>+)C~d1#_a Cni5~LhOǀU)Nj?<S7#n^?ۻ֘p/f Aq[F{w%R10&hWǀT4fJwCvl156/ck`eL'Yt`ЗmddtAdzI'؛%(E(1k4Bs@0vRC40dCq0x}f|Xv3׷ۿIԵ>c$1۠_sّ{_d3L`nSOHd S04>?~gY͞k63Q{VR~8Bb_0bq7PdhB1CX">2,k4y(,{]^΄!논.O'$ۼ\1058/ɉt zT)g3cQyscRS13)joa~?fU|VN GlkN%r Y4kXRrf77c^i01/5e}19,?ΰcOJ8xOD_쫣2J?JtN59po(2SaOJҲI5s֬X"0gٰJ#\]%:0}/g;~OOO&yd9um>{p>ieoԣ>>M4^o[g֌pDNa؝=@6Yf8Fm`>|\_yp݆/{[~I @Y97u7d0;Uf F7G"5*q@w{37ٱ3=jU1~ly߽W;튈}8(xW <:fɪ߃ =@1~6wǏFN [5Gj Y*ݗN` Dcrc&Eɱvikb"zQ]$>忴t*f7[b0!? #e1oԯ쐾؟{wS< I!s6;$|qlX'e OQRӽӈ7Ӯ #`/H^MLdLY|nsZjG}_0P{}m9hI0\fWl^`wrdo1߿eC뀁h= -9g9}FvovNc8.59zAsU2$9m:)cN'{y$`< Ebsz}8Sik ui_?+yZʱhDj{Ƞo_7*ai^=-ǒ|wi/S`wt.3rvp`AXwZ%9/ꍾ-jQd|(bq2nsP k;sehwh'fj(A1Id8#:#)_sfsOc72s#6wqOk ZS~N]Gyf5F&?6-|sOdkhб~ ƋJ!ώYh\=d<_ދ#Xm+f\p`/Q?5j꜌^݇O_V]C,b:[LěR83~L6U 5}0gb61[2kT!(6?$V~v뇕oX%iјG"thzlD)Lc WC#qQ d[>Fw?+Yj#؅z+k{T~|П񜒟1631z 2{*sB:=KrQqS/01u S3Ϥ#*Ɛ/"g>:FSԿyAf1Re7Ǐf:z6{:VscC[9_J֬ FiL8Lbg|Vȍ\g6ȘއLd2c0;^B c\?&XSrZk jr:PFVFOq@NTpdR卪1ޝ Ør$x1Rg7Scx!fc>u}b0Ue,7R"z$h gy~ 0k%`sa;*iqϜK+??٦!eqǺZclg;]R.ڝo`>W3q^a$&.a7_4|?BGctxFɹ`1w՘wsh HD u곁.Κ# 34[q/* c81s&L8ۮUt1#l=ܮ?ϬG)Iˬz}/K> .nhcLu6y^9GgFCWP99f.Wzo6{[0/xPV^gUǸu&A~Gڕjɖ,OHݍVEc`SQ`>Q4*ŕ_Y?Tٮ%1mS0{ֹ_SUV;H׽^lSZrx&k=p$11Nz:e6jh445%319_IZ#?.C b&_/9+uHI3ߩ*QwN8XpMd`fxP_N+Ŝ1f _ UH5oP*tUVJX;GdY"6s4o:-X3N5Fޚ3ZoBޗsxZ-UJy#8-ևi c_d5'%&x&2W[ mWScďF+9\yD[Q?vֶ>=ƿ1&CS1 #B_TIXfXmŸ&_7u~.(C J#vI|.Q=}#g.tbLS7J_',1n뇄1Xwx}C|3S o_vܹw(9BpRp/緆C];y_Wޠm9 c&ڧm-e;f*O.~ @3:ugL?z0HV5#wjO2;QRjE؃=AL}aWk)+A9j9j |w#| sBd;pK$!^\Gj2U=^o])PgלU][h#WOa(Ģ0G95]%Z+/j{k˕x'gE^lkP? Lol sj*ώO2Y%BXHo-Ի%rԛ3Tsu#b'㳛vzСcڪ@ͺ=9qDEWC7)gFTC偖DE}6-9N^_c~FD_ wb`Tcns13-?y<Pq#rGӲ<44O7.0pKS18zxcAoX O/~_`n1^ IENDB`nViw¡Sr8UPNG  IHDR?e|sRGBIDATx^$Gu'Ƌ:,P@s" ࿱160`r`0&gL4IlE`$N7Noկ{?}{=W^J6ƱZRr9RA0dFLzNݲxHnwMx {R)PVqZ lw՚`䭏R %10^@)5!S?[NVlz}:$ nl~PhUwNe}a++,;103RT(Պ"AR] YOs.Ν;[vƠwumWr|>g<_3|355[/nzޤgj`p[.!{=\D^o}[Us* ңN"w6)cj5&=83UӹG>Nm0LXژI.qlwy0&GycR9tЇ>]z'ľ%i0}ɛrJ lhCi[D&W_g?22 7ow'<᷿dfInE(+QA73: ^/Jk0Yj|?q'?BXҺ&YlQ٫s9ِX|暯|+'w}1n{̹}ccDO Rqo|OI`nmo oԜ-w~_}Lf9b# da74FWh(j^Wnxы^$J ΀/o=9nZ`nM` D+h5E-}X??>>Ѭ*4 ?Ӟ4ADRſoPdvf E<)ndZgohΫ̇`p+7yFZ'G>viZA7{ؐbA iUd&ZYg磓*ȉ'[gab5vH&64[(e%C9M={/e ty)Ƽ299@F#M&[hV7лZ-ξ\SA^: d)"y\ɧZ˂G<T2:Y ׮r+os/>OԤ"^x?ě6mrzf6Vvma%@ZG>ZDhȉ.Qzԥ^Jeܒ)2Y/O:({MzK/ynLAlhΫ҄7W@ ,JCsWU@W 3\JJK8o@wu|CN;Hj*}7d3?DRHι955{ic*wzWx+x_/rRD=C]0KV]v^w_Q))ƀ*Ʊr`V(9+{wc^wmuem6KG=yYVu-Ð׿VXV Eo몾= hoBQ{/G?Zy5CNI"poeg\3 Z 3ˇ.9k:?p[$9hGƌшvg+}sĈh{0>)zOt1GQ\(J_qM˷!{״7xu/bVR-TU^p^Vg"lhNXi(״qH#Go\Y\Eo; AװLxWt;rtruX;UyUH9z㖛tP% BʼnG<J5>u|+Yv7Zlā(csdӬZiX˞3D\lTu5sl>&DHVvĕleN%hjӄFjJRs5J6YXXܺeSiq!&Rz#L wgCgvV+kҾ?!_76c&RfmQs͸z%1V"49#.r`57m>\&ղ@.Q~yL%MZ"JSͤg3@4ȸ.czcjʖt*LRL:Y-vl/h@irGa:ӌԭCɀRivrj|LWvѬ9fqD/Ao*y,RQ4r0CG2J#&jn7.}Zɏ/MrqDf՗=oG@'u7__+f]Q*Z E>6t2;3au-#ҟG({ŢbDo4 [@s8F5MDF7uT591MF˜a+0sFIsS.U+}m/|)ZچqU_dzg>9r(0]ZÏ<̖Z볩 jRjCTHTĘ"|.@N'D-D$S ֑1(MĠ@A/J,m?z᳞&< q.Ӿ7}{.,J*j-./ fd4%u햰M>H9Pѫed́8警t>1HD5f(8Td/՜<ȥyϩ/. k.i*3}{sr<7殼$=OGG%PʹcT@3=҂.$SYbbfRY#Hƽm<1آDr}CYoxt:Hɝqono;ᑣwy 5@dQ`2`6]~%;t1U~=aXzUW}}Mc:[AmۣSNgweKyۨ/zEu@Żm5zj~30tH+r*p#JuiG<1Y a*D [MZժZcYXܷBz m&dze{',Cb| OTx=Gfiq =1MۓJvgn*i$]r}<*עuU=&MU"0]oFUc kRu}l H@?5cOk4dܭiӐY֘ٯ_[q\}.x$2x&鏼曌AW2Pʠ/7#X8o=@hܫ9V|Ÿ0?dmVMfFK;ґ\F,*Փjcrbչ?f"mXᜲ .Ђ5+fgov tfxԼ1:=zYgu9YggGF؂[Rѯ~y~w-Ϩ/a3I3PqZxGvys8iŪ]Q 2E^'~W#6&Y8 ĴdesfJ1Jf(άY7qNF=IE˞,ja4N3{x=_׾z}xYUf=8ҰЍ#B^lrP\Wni86g{tA~IؘQ;D֝cZ}wX2@)g?[+,y,vó% mVſ`bkbҜ6PEjbHzj5XkbqWf10sXø|bkBUj2!?^_RZi3Q&SIejvlQ ˤJj3_6_j1ow/WiJ6Q0R-w;>ѪX,óyV֦ N&3٘ #qV@$3鬉ߝLçDKePC*db=}RXYn4`YK6Xv)6He5*rz2r`ůY`tZ`X[T)g8+R3X̖T#KT`R6ҍl(ga'.kp u_AzZ./&o82+ qC!鷽#Hщfv74޿Z+CW!Pӹf]{FVjkbB _13q퐷4C\Z 5윱6U*^גFsf t@׌W 8i*;ƛTax}3_Uf2}f!_%-Ѕa:Μ^1<2@A+g;UH*qn텢Q;0ZBfJO@aKa٤#diTRY W߾tZ~rrlf2/2ZR}hRDhXݪfУ{{q'fю0Gwd,({(y-cLUaJRB4rt;K_mgggjI hbl˞\aU&@LV[l???Y(mahQUH&@}92T!0;8ZuCUSSG^J)Bn0[j3!YK%e'9mƒl'V(y],xqϾ9?Ɨelڨ04kM[_~;jLPvȎ'kc@HlX_g?uŴ[ Wo!{o[|2h,Žc]}G^75l`Rv܋KXkFwfȌF#=|۬ЅىꩥհfB9Uf:'f#"޵wG~ hxh\~,v+ы'BҠW.svjh}~637vl`^ o!FzwOe6=.}k_HKa0KtOaG"bW /}QFV d?ZeL2b ɺ|f|Hz׻()kRJ^D$UiVF4R0&|Rs$VTwӆD2+iKIip':ct>Y\GU}Qֺ9'sƺZ?Ev07VsQF㫱`KRU:ӸYb8eubwOv_ԭ@w{j TkO୺RZMm 'ke5Ӳ@n8rCYd\ ƛqj:q ̉9~j] FzW.\cȲ,UjJT"-B]Sf ?cѕ\lLfJp2=e#bD%5 ԜF (eĉt:i6A,s֬r6\)J5˅+!D]H;ѝ̎qrv^ 8}ZOTlZ[PY .$ΧAoZ#{QQQdg}{N'>HFXO,V\:[/E3مr}BgXfWaAZ MJA\ K @@+Q KQQ-kpWdXެ^#y̪";`9Nwy'ZGsޠd٥%ýk ZMy#b$AIRkrC'aBN7Ҙ-['L^vA+eR5[!f#G| KMJ2m).։ҒqWSA~Y7Jz*z}X9? 33fo?_g8-_(i(A #Rݦ!r&Y]pB7Y4ٺڜmi%svtoN?[i ^cJu6my“Ī} A]g73fc֚?m}8km[5AKt7Kgl3\g$?Xq2U49K5('8i.5mcaM8R^!&{}mf#aW7kr-ٿg]{vs^~Wu޽8?XS.eQ.áQauXoƜlڞl3:J h юakѶ3f[b8 륓;o&4=ea|7%lz۶m{ff" Y|j(CG6QRF63GKFg-L.W]2AK3qPyXfhcN7zp,V.;0[V36%Ǚ)Br QHfcKU.  WV/_x_Ⴝ jO}fj7-$v2{+1ΔFh&\pSBH3Թق 03Z!#8WZ@-b^r̗&̈́4C:k*b)NO ZݩY[~VN 6RN;74zj*&Qg<-]3de̙Y~aDY5}l|1S31%EyQz܎ tLhTĊFz,4~jJllOfu߱uf9@L& H=9,¹X[9竹Jv)YNrVRs4|-ùPϖnL9`!}04r[DS)')b#Gq }QX LRڽxjkz*  qG :qJH|7x oT NS)p&K/FqZی1>~᷹f^]s@{s|vʒ(BD[_JsӢQDbTD޹s~q®ry C)1ֆw _F@3ȆH]4] 6TM7^~]gt1dv5]w=NLĖfV7 ^ZfuriR43#Ǵ'8.K"f:W3 Fq)";ŽRt`̾gqC{6Ys`T}Op8r$8#=:{vۣ턨܍U18*`IyH[CL}Lo=m1~/W귤_,\)`g)9ӄvO h܍S=9z O&3`Dof=(uh[)U&e2)t cRc\a 7^ 9dbjgfk:p{2Qe؟^H]u|Z\L.ǑATߺ@k'նsw⾫K'hR2ZHKs{v7nt֒c=@$#Go2tTb{Q#30.`֬;DkI]ҙ e/ӡ#ݏ{&K/ڔ!\ܦM?HfTRL[ݵƣJP/wacZkLq %cu3N07h-hW(+|}-UeB-ӥnhLB7kVhV9!$J45˅vݒO'_Q#b]SYM,jcZvkt~igw5xe"lYkq5F9ҔfmU\ f{= k^UOJgTdS;k(Zj;KsXmetZ{u|~e'GR>{Cg(5 k7Xؑt ?9[r;:~GGɷ4\v[y= ^>Vb6l R4TR\ƅl;j3f| 6Nw63Ae >96Nd)QG kYPR0$ $TXZ#߼ys1X`,Zl!qC7 @9ܜ*M7=1dz+X`'25\٤ܪ!B}Ћ '҅ܡ'du;NJrb㳇jaێv#Ob \~TEc^uElhDǃc&NQfVksહeO9}1'Nm?j!Gn;}waLn;rQǟtm&ֈї"PQW^VӴcLpި BX+/6*%T,;2?Ш@fS}Ȋ[Kk Q,2ɌRqtpvs*ԁqص>6:ZDljPF/ԛZO;Xbm$n9V'L 2ƺ|]9zM(N\:j-2! -h 0! hLXclVu qihɺ0sdA.Ũ:HA ̝.&Vƴ&Q6Ekf3vz¸o2}=܁z6_:Lʿk{Q_3:i!i?1< =#l!66MwE"JK jUwå3$/ rFc#b@FAA#[+ a~¡8+ֆ,^0iE8HV"iFDO'}OXw_WJ.D[(-r;=Df9N͡ G5D#q__ccLr_K.B{yTw}\~9RH [bٯilYЛ(c 4ΐ,CcI=L)#ͦ&4K_Gd5iDv|>}`-$3ؖfh]*9ȍdWyZ{"V+?G^vy,q#tMf+[q3@u" u¾~~3gED_$^#!q^ ݙh+CpxW_#rzvXnxm{'2mlqkKzE2],}4&kUXKps^U{OY`c}5u.$@DM43c ƴ?骙XpFNڰV vb)ib{b 3{r1[is&..VfcX l5L>Uv@.4>#n~8nSvQ$XK"8t `r֝k[Dew RPP>2s JyfMtLHVin;d;.VRϰk _9j>pEzyqutN3r5bbqZ0ɮ/&v{9+v,Nv/ZF5N"`$nژf֒Z7,&4gao ]ǭ^HWɒwMط?3ˏ[utXMU sfD)9rRp<(x<Vr/w+]~ K;;0wG2w 9+M/؛#Go,YZK:lDJ]o@Jӕ=HFUXFF7~@&.PH|.W8pBuyK{mjȣ/B q5i5Fknɑr؇hqOڝ!6rTN,5-*bxak"})flOf:;ք{hlN~򹑦Y{FE;0dom(3nvԾzqlqoq1]gwurFǧv:KRlYGժhc_v _Y^oGT&trαH9AB ne6!*"lM:|(7>uUUa2K hwby(R7@}-s { æ>$fwvرcG]牙NCmFjc ~Cn_KBiLe,dcc uBXrYt]oaBbC[_ٿ?8F-YrPnXAX,ϫ$qkKyn^BmVl6U 恲Yg'q퓙zROs1Z?\j-vzgК6iB #ݸj>o&4kX Wn6(9z.|g4N~A=<Ԝ`{T+.̲7/{ '9^cֶ@W:{;7EFŁV>zY`RG׈qp f}qv^еF)&z2ͤglu~\C=3XdiB@K4CzlD~'.׉KK'tˀ}%]w kU=z4e v% 1F1CzyQ 'dLX#8V  z~HVi{iPhZ˭Wِ_ڌ7'jEmEm6o݂UUL)]]P!ޯZѕZN0 G"7nw\u[vyJuH/p2T<~o$]ڥE͚q:#&Ƨj3g|k>S Ƶ{k'<ζ2fdoU?Rq-ﮰoPө3LL Suc΢|d[6u;=>l2q7 ԽIDP{!D{Kfw:tΑ"]z':׮+{fBˮJw~vۊ=1)V>stm~ ; y[~S_0Ahkbe 8M$+UavݽԞg>&sʄ fw iDФrOgho] v^Wʔjhz6 &h4i/>b&[d&2\{8~8W t9n68x6-gV`Ɯv Gh,z 3j ;l"r[Curzq\PU/2M0oϭ_Uv "of2990۬m  pNo޺M|Ǿ*oNl&^cKizIcGf9mS5js%%X@y MNz]\dQڭ F7FvoO WK&Xs{mN zlߺ}KH1[!)C9DG{\k6_K)ut>CuSf&fW `xƥxcSC78*?"/ ]C,*df 5ɾjyΒ[_Ŧe-©5qٍm ۭdaD>ZZ2QHB̴&Zy5CoB5RvBxƍSg)0U\cm>*8L6'{(z+VXO;ݚΊVpg'CbGUPGҽqFqakv[ 2Y Y+B5!v)kG`U%Mhmv9 MS9ȪPܮbr˶3:g۞weC_l'3MbT]jI]o5hwZΥ@~'jVgv= FHD#oslXG].kHs׷?-@9zWX$[gq׋PlpQџľL6k^3%2yo?{۽:~%l ؘY\* ǽ >3wdp 0FސR4Ԕ5;ɄzZJ@l*6?i".r tn܄Kedqkqf(ksQ_DsGpKjٮ}!s mБjV%<]XX`"i\d2If4H3[i#y Gz<39(mTr6$LGFB2~Gw%ε z]m;Q/Gt q;tJAlY\OTr0Sa^qR7mOe6g$7F>eY]lg4NC/aFB8(]R>/)7&m,cqq䷻{Z,LX)n[CފvKo|t'rA1jۏ#;%EwiYfo{s$cUdqʯ;)+J%rF*7(lM3x>42ټqMW꠷ev$5. bz4zf dX 1zɹ5%6O; kG_!zMw&RE?e_xE/RY0[3! V1B2+`*=ZI/xd|_?YFfP 3vJ+8_;w+n8e9su1vM݇ݮ2B Mdh}D'*|NV#O&;U!~2OUKh'sԖJѬ\tLyWa;|")M/){,F^SI7Nƙ!4H3lZ[ Bذm9 sG冹+=ݺY6TMmX]/cEvY- H|TӕMp |zd'5µ!t32 ڮ0ܘwpuH; sd;a7-%mNvY-5t{/"SEu?Fb8\0Zp8\KηR$ּ&k@|۵qr~b «qѲV ݇K8S7oV\xGȐG6}Gdq\B]ґWܧkvYW(}W\m# ۸z4N&aBTe"QJ]~M e67C"d}Iu!]_lO2rFxdP# >*î>h;3q1Vs6Zϑ]Iow=05z}> K)B:;䳪V{W(EHtuԹoJw4kG234sܺc/UnkeHvLX'wpH!j苧vr#,B/av61;2 =S8욱Y+a+VȅHytn,AG^g8X}֨|ZNjPg3쾿xjzs4FqZ^f/SeL5em6Uvf qcj)x6stŤm l&! 9kmOkrZ-y\T1>XY>T\w>p&RR\I&w:*ȍ%ʍdȧ %}UVpAGgc'riŎe#Ky_.Y f!*dzs=[=?a<%'r=<%OWz5k|ydzaAe d4NZwziS^>LnxjqUcE+ff\oXqjRսPiYMә|%=+7,hOMiF;Ի|H -j>fK@UCpzA߹>cf#!j*5x= 0 j'Z+`KЫL\z}׽ŖleC&MڜO4*!Itث9C4qhrB:3ʍmk}ϙp:ׂeЋ~WȲLtزިes#<#@o/ȏz: ZJ#d \򳳒sy\63pK2OhT'bꏸl%ԠBj'?nkSRRTz3S)gK DYs$Baaύs;AWKĄaԨO>976N` 6=#Y曁')mPnB]?0 .W! ͍k dKfF&rCu+$;xwd>]#뷷ڳr$TxoVrXI͗ȳĜR3_[KT}<]}}0MJtfV:[X;Ue3C 7;BT(z1CtNrbSHv?LIr`'OkG:>CݣHFYkɉFc,'F5ٱ4t*x=5%oDʃzzZuUնo~qǗX14lL^JsPZ ^ ~@Ӿ gG'l k/iϳ]\;WMՓFb(7f4JgYʹe&5Kn2,koWx '#*՚ Nivߕ0ꢶz P?P³w2Y6s/|}`5\ZjLyjI,|>O.xdw6cLVKDvu1>#&2|6sfe{^: x`bXaF^Շ>f^"W/(WRͱ2WPMdSlbZk41l6F?NMhWGj"ģnbY'Zu-vx sj m}疾d-o.q._νZlQJj`*MZ.fk\R [gYљ9׹-PSٛgw^U&ŸpV*98km'I%R\H׫yLZplȵjhm7fƭ] N9j`(ER1|뻣Bo hr^Rp};b ?^TۅAeW>Qg8߰[4{ȡ{/ţN sC/iX$՚H<#hW2 `ؗfnDs 2VImV@6ț!P7t)C #>H%ʊ`'{wc2 xkZ ƴف 7v .V`9QMwzGqt&޿>}!qz-M^2_-Qmd8D~CKP !vmf.lU؜ݻ+(棌 '7m=숣ސd0ץ'FPC+ Vޡkr8@ž䤨$|~\nƷ Ɛ ;.m:D"]qݿ$m\@nR*C;MXw^99[/׏+,Fu=^ʰfA jM]-LV@UFgEve,1-H1yӧ_e^1"%gѓ[e2)ͽqǟȾG)V_o&dl_t ;gvm }5 nQr/aRJr ܂d|l-!(lV] > p(nTkM⭒ޞ QZɶrǽ9 ,<hP'i-KX7&q BKO.ʻ[+bXWsm#٠RC?B!v[#VWn"[dL6S&4o!__ɤK56:oCkűu3fk hYĺkM Sĺ6Qgӧ ܚ7I&uN#Qy0:&cV[3;#L.8T5f}fp{!>_iC$DNnR#JjcaLUGgi&'x:-Tq?GJrTZfEOXlG^W/:B|m`KcI^+U|{^itzSg#]?6wι7{9o'J!;Rlk|Dbmi er926ᗣvUФTҨj#J,eTr㓸a?a&3Pٱ6'Ar3O~0=K9'?1fZ{[A ~-ѻE%--ӥPYU8, J͋B~иWt__osO7oKRi$J|Pc{yB[O92m Ʈ#HnRBWz_rm^\*#=:Ƣwrjj~ M}?Dy ܢ\X9`yyL:I%ry薱}7~{?ݛ^.U&u_w[6qٸvVZ߽ȣ3q;^I ڡwLk ACTw }hRk sF#WifcŽ\?ϗnLf"..?> ب>;>JdXj$@Ҍ߯"pQS&?#֧;!}tjV&ii릁6lR[lݼysS!"0=„gҩZL9f8 XlѭVEtks3W;(Ir.Q4M~%x_SN5z]IL,6eu b\(Sh>TP9iT֩,,e^)J2yֱ)y%RMҜ 6O0l'$*\xg}I*Oy & ~gT25FPt>4[UkmUZ[^q+xu-A;(>ߟNגhAϑhddy*]ɧݻw~-W~M7}#~>$5YHmC" 4mLp#_Y {N}Fc֢ jZ/+s4[l.Jӯ"jMbTIlqq ig?T[ rX0ة,hl׾|z<ƕ@_Kk,{C<" _7VbuLOSM/WT?ĘU!Y4Evtm~d-ş~{?XNT% (ڣ썓H8QF K6e*i:a_nPz.|痿;gܛ >߽﹗_~޽{)8*AFfoKeFR*Ӹ1x0T7И7(E!x(W\^g|޿D L֘\̩ i`VC6kt?r0>1+9B]IVC|wT񜩭L|bqz~Mܿoa^F`=TU Ï Č^Yi7؀;RwW|>7Q00dTZajJ`}hdXdHWf%fm'㔻l>Ѩe܃ lo arHxpB#7v٠3fjю ̻)zŃ4VKxrv … gO#qsw_r*P3o ˀ={޿0Wˋfb`&((ۮe5g؟uɥhZMm!7qQ;0.EJU;oݯ~QX͸;,!f ӌM舙ǜg+tl~qq9Ę*Զlб*a}|x΄9]<c1F蜽Y͡b@Q#"S(M'u񙦚}_}~MaWęHOQq2GqsչD}g&|)Ύ[wjY&j$q!F!_/ P@^c ƍ\vJ| pdrYU9I}\ Hv<0cQq;bzq1Y-3--ӹ|^ߵ+?{^wtWNT^7Ҭ[Iv]Voٺ'Y #eo [$5AnrcrXׅVvįmڒ]?U!'BSQ\" ,Z]ҡx>dPd67V?vvر'o=I&D6cvkuCKI#lH3aFf[ Lf -! K r*2ל4pqհ׶n5!NYٷXb^_ޓ Cu>ps4M,c rOo&Du.X@dCX' /#13 &o3O% *(84ǜ|ٓym9B>+&wo$xH4Os Ex}b}rs5=?2C=&`MDD($x#U`.r'm;ǟeՉlgB0Jg bB] ٴg23H,~ȍ>\qO0ۨQbj"3~{>hXy3е|A SC$ *IX&P7y0qbc\(.\u%W^u7_oĤQu TTW4OCxgIf:я|=Jx0:ӉqADo\r7@%ww"ڸ?$n},%)rThO3NR$+XПj%^4Ҝk,aYB)E4\yruntjXI%Rfunv_~zf"Ke1+@ -/VKQTd~sDbjkn[?fGOmٞ2;SHP JX6ߟt 9C{V#לz9S^(V6DljK6=ocl24bǏN=p]W'*MĉƾjaҨϊAkLXP\ ZM >ATGkNS<&AU.XZͰ̎gv0ǑQ3`wK>-9SG16g 4~ǞvGdj0@r07SXXi{^5]sō7\gg>[W `9?+4:Q=w>ᏹ۽wÖzc)ҬZI>ރҜAWkU.VЫ~u{5[2܉_fMSjn7OF=ڼ-U=:u%_*Y+ zI4~ Ѝk^(ekYPي6s"|"?ޒ<ĦS[Ol1>%56P- V@ɨ_ s|ŗYi'>wonjguӍna߮]ݵƙ} ;V4_Tl+/ےe7A'gC[3zn0ƝH2lĪ3f6zswOnfr[ 5=[I+m} xP*$f+ >& };@CnW M7{̜g-'{mAŦ m ׍f 5`sW_2+okjiI9o]@1P}2i_|tyЬTd Ocs!$lckC.eiV<+`rS[RqRT[3/og];ؗXC e> fOG4lDf۲R5ߘxA;v(M9H~h?J9u+嶾nDc,J'Jfv~;gwG59iTh f1Ff;*zF]5g( G>z5m̸;r ea7fɎ@.QݕOSM5b4cz[r};uW.Dyf>LsH3a%A1[pDQsGQkho%2D51@蚰&zuA !̛vDvX@#r+S;q;<~1S{ t$`V7^<c#qi [04Nfd~K?e!c!3B7[X^+[6؎87aVU7,ո@Z!uX>,{EovR8Wx| |wvaj-r8=Nec 0j%emf5@uͅR6їŋ܌_F~acǃtaGx?lnXcHq`#4vaV#l>7^˓Ü>aE͟I -BK0a8kn_)Q,CfFf93ƚi7 ד}w~߮=7\ݸ͉z;l mCJt Kn:iGfȫ'f!KH .t eTeGuI'rmOmO8ml/@Ѭ=B"3RZtVkLCգC"ѻh{:Ik#|O0Gism>8gP<|\&kB;[ ^2F:{rب `pZ+T)"׵Q tSBGy !X/sŃsBiq>{KuCot]Gwy`Ќʲ`r8`VhV!Їծ_m8ua 6yOk Wpۓ'jM0&['Q#DuLZcf̼l> |F$ɭV|qۧ88+6_RdD#yBx,C"%{4[ʰ gg/uz-aI'~ҭns1'n~DFiYC[bco/JcUM;oipܔZ[okw"vEGu9*q B!Jzr l֑]_6hB;]W#%_+_Ҹ}i{25k'[`*. l/7?幽yq{3{˴͗@dƢٜ;s ue3#5F ٪#l:Wlt4~] ދFc$6mLĩM[ÏȚ"j㘧Fǵ@$f!0IO0EWegb,#ykRjTޙٝLlCG,XG4j95MnwuJӄb5eLL?{oP37"d64Ҽo|m+^M &`U*AVY?zR8O ?5P z|""/jլ3lAv^q٫y`759E}íhkpݶZUXÚ36 F%i֩OwL,]LN z&\}rxY˳.ĬQ8K8N_vS:94_L[9OV+/鯾XɅ&$?,{O53Ƣ$!< wբbEцMX$hy*.nLGg뀛9]MRӄZ3?}&{lna *M]t : Grܛںoܶ(A: 𩠆hvȝeP*,r2dg cV L;ðR+4{EfXeX'E|Y': *㬊"8Aq8tvvH9s`\&}ߍTG|5ہu !v'[%:=m ҎӫS4\s"*0%+.LcL0kzؑ65&@43_`'F/Lbl3cIPcq>OTdlVs'l3U,fe뜤&w'&J§FeL5#w[isj7ɴ3\2754T\0, VV:U0tN!ݺB:O\a fegނ;H$l=cZRZRӘ>fN48˚g &&b6L,kVCkqGhfa5q`AB5A<4:61ئB-,ǭ63ILٵ}"nf$|=Ƅ n)^Vb,- 5Md{&8-Ɏiê={zl95_vmth Is2:>nGhw6jv$7`851rXd<{k=# hromJYCtECY06~` hA˘yu7Rް cN]0EBrQg "{ܖvӜAqkƎ{%c%x/hlQF0; Xsq 4]:ŷ =m:X bܷoGq#:~3D'}W[J)zm'SD4CbЃCq #>h mM0A7F_Q&C]cƵ6.OD 'âwjesl >%vHSD.WvvߋK&Bww?3t=*Fo%3eِ3f]h'aèʉ no$[0FapF2zӷh,򹉟 dO)+!^69S v$'oAWw4>#fXzCc 35.A5$ӎaS[ Nŝ@ny ,W}͗ڇz7$u3jxZ۟Q"tV+'&3`!;!pu\eYc;ZpzmUfqo(MК O#f[BX` -YYVK3u'ϖwNu*n`ymŀԵF!QR>V[Q1YmLfs&t)Úx׸-I?s Nmv&- Tv.ޞ VBv)tި$0!uZfq;ptxq 龯t}e5#eE4 }0331Ɉ˛3hgw͂99i]&}1էfHYYj|DuSj~w'~ 6#0Cj l~ %Y}ZCdV~';q;w.,O묚8Zd)S׈YOnz/n줶`,y)VqG.ͬ)ZuL 0;&fLn>*Βw1-vTk8'pM"8n>F#YC>.x# 9u'"+ЛКًP3vْ 76R,ar!z^LAwbzz Ci$,SŶM )tqN2kd# f}xO3C6BA: r0{`hegݵodZvM9.f%ڥPmy,pqfY%vGչkHok5Co$)ws-@׾>\&*1qlH2G/ܴ` dZuG5d- <1آ̠v}eVݿw[>9DB  H:.՞+HWy9%z uOdGXh!'{%m;fnyqƋÛq3fYl3Љ|n?;O?5"ߜjdu*nc ٰ]]kt$z kGxa\ \ڛ>R>-}80J٤orQDF;cG: Ά-Nm d/4]iB4*xeEMGV{";q\\5zu2~47NRqmHvչzsu,Sfg?ܨʅZ۽g0Znǭ׍<_7?$Z]on}@m }.X.n}@=eVWҬ]jaX*.fۿYD&ȳǍ|M^yKvhW?.،L0zN8Ѱ0D d[D ~ڝv#NUOjaOP3._0+xZf uR/ŢRu6ɖ' E "Ϭ1(g`WY쏶!!TT)HZ>䲹\_5pzY;CiV{; cW1rDDx$E޷*Y,q 1/ vqom?KWF)VoYI'O<}['6o/LLʧn?5wJ/u_նG-Jg7 %>CIw5ߖ2gܛˤF=] .T"ݵPG#J-;j)fT8+6ݎiL"8W!Psw^>~q;&7Kfm.+?L墯 #cd>Y/zɷ=8bPV8 ;:V(c/zcrGNO>|r Лj5=jUC>r;=t2n:t]{L^n+viز2:} 7g-{nU\= e3|9QɳدfDLZr=aJR*&3j#ad/z;jE]ˬFsd[ڱ@̤B\?fKcuZͥdvlt6ѢJlX\\\'|TB]#%zO5\QsMQiy`rͲk]wݛ_bՄ߲Ow*u׻/x"!''M(W+/: "ga %&&&m1k,1z]vhQXϲ=68paDkv]u_#?yPq'^]ŵ+jlbtf{^611}aOә*q5?CGo.ݱuZ.W`0[9Xp}^ @&7Ϳϑ4CKL6=f ͮ ѹ 'UVqchAT*r]ړ${} wKe[[J.̵jIZaHK:`[7[hp J@ܧ?|\G >:'>O}S̻ ԮZQ'\žk>zYzE;H]'x|.s`h>[c(Wќr͊FV=`)`͙_3LU*_ׯxK a%:@-37;7b4(עFphGǧTe)z%xuj]/ 5A]\*(v[݊ajKHFߊsW/-a/GBUJZ @rk 3ePCӜ'1ә^ 4j#d -֫?ُH;۲ZDg> k1( P}^\N&CmѫybZhِI;jZoua+N+͙ 3W*e9[2Ip-.|;,5ȵy[kԲ7.ÙB8"Ej7O aOT._^?Sٽ @!Qnڴ}s3ѫ^<(eC1j9z]uF05_C;ocG/U;_iJciO{Y# v}\^w8<~_cPxؕDdoq ^ebGjOOWrGjM^~vw_:aCSyHgoS4w6iֶ4$83|*v!Pٷ\}?}yw,7G?51 RwEZlQzTk]^~ǥ ;_>Cѱw[H jqG~Gq#^ t}P@>s1oB!oF4q Wѻ$ (Sm9_>(*䕽&vZb_2y{߻\!ܥņ3skl[ߺdLG:5W?f| b6CV7A ޼y3aC=K}ݔji_ׅ[H!ĎYFz7"@*Z`t3ϴ z- b1\߿w3G&[e{UW6лn$ks9p_=%\ӟT%.N붾Y6{uh]X;N-H~ +Kaџ. zo _~:+ e¡*6?VVn'?9Ake9(zJl:(g~j  {cbٮD Qr/ʳGfU1hѷa@KyY(]eT8T3*Jh gJ̡(9R)x3H&b@LjG@sAv ̰Rm^NRˆ8vq;A}nAjA9o<~?7;=>ADs`޾} WtlsE}۸p@)lw{`dQH2AnnlWf+~:R2zG׶Rn+Y6tYwG>o 3H~Y:6;::@@9$~6߳:k֭T <2\!^\k~@j=zld\eUzq '~XpcŒ y&6"]_Zxdf[n߇j,՞ 2$`Ql"MX1%͎ ,W`ecX,ϷМC^7Zy-ƑqFQ| FgVg<==M@((ch;Of)hTa4N9唣:4}p˨XZ\8O]_7лdK$ 3E c(XK\gЛigHuo؜J}d54 8+2] gO9;nv(=Ɇ]9xfZ1+bBs PԍSSSn/]:`8fo35 $&6;<rSc V `O,ė 0#clW,WΕfRָ|8Yz۞OnrĬrJrh1aϖ[-|4ͺzMW(HXHT[{ pJIFC1f*=# alLHNJƺQHbc Y10*|%:0:|Dn0?jB[eޡzޤv>z9[Z({EA`:lz۞an]SdF>KAFkT Q8\[6! {JIU:ݻi+5nyuͫЀjj9-a+b1V)F^+ ĂPF߾7\T]ȴ;VeVlzjgtR8Zֵ)>ο7ڵI7*ax02=4zr{4m7x\ A!UY"qGg|PFV#G֑n7?r"S4$riwFA |g4tvNr]%+k9Ho@km$F.{}3ݻw7@]grTyiPaO=jY~," 㡇J\9z&#{~KBUJ2C4` h4ok۶mVq~3_ _V׫F y؍k:-U*vؗ [~ f[jn|h=5g0V #uMh4DxEaHqqUs yfp Փ-4t&tS<5FZo.2eHSmT_W2v e^X >6[`T"! ]ǽ \(c_r%lMXju({~[~)AeXE<4R nh=FI 1[*Ѵ#_$KktM|׿d"9@[C+IH^8ُ~| 7bAsFRrn+PcL4Kxkͻ`uB%X-0r.Uj %!R: s .kMuNkլZ!l!<ŏJ U;ƺJΤWIVo-еVv}RrUdNS7JZ&.C^{O~Gk8>`avo.,4/ VK}-#aJU_aR-Ek7n$EjѥΡ!óZRHʳud /!d  ^ *U=W wjZ*U3T~nb߈z}z5Ks\6尤S0T._g\~_^u啢^V3KKŠH_םwdJN2#g0bUFnwQ\ٮzZ]j#\Qf[BH_~ q 5g_lFW\qy'bL\kLYn<*mdƱ=+ 8F'Z" y]>w_[J7nuMi\[=#O=T4W5Fn-C Nq/D;T<wQG7n׷{В5hH-JUi+*o ?.$]ԖͷfJA&Ũ5o7j*r Np"}HMMg(7<"OQYj~]75l֍k?k{-0r!REV(АY |; dׁ_#2v_HGj L ƒlٲ-XˌFZ9zi&.089j5inr_ڹF_WX"5LdXX\;R>Q]qwjq.HQƱ[`5d־ Ld!JOb'h|\0䪏ILͰ?Qf-]&O{;݉bsSSbNeU}/ֲA-еVWXSCE*(X se9uOXϭnu*S]#8 &zrnMXG4FILЍ*ԶaƫP@Ӿ-d}mmiymyz]ƮW 73r,Wqͨ0vn Nǁk*ǂUZI&p zԵn@HWWH*~Ք!/7~q3?b"X_6o5ΕP$qyn Wyc7e t>$Wiſۿ}_/}wwHi[Z@T%ryx`_I&>E 5ݿ?m 馛@]r(Ld*i0xӱ{s  scf6N{ZIuzWt^zik]v1.6K/ծ4 Vj^6(Ȏ3?qv*!wQ+̮#GD{}{sK^zs_™giyIk>q-BtF2G>~'HZf#>JҌV}{|+F3y?p w??,\qՍP}a/n@ݫb@#ȇ?K]eWg{kFa$ڲj/O?۱c;9k-45'"tV[XN<Źq|C~EouJUk6 tۍ4txx;?>HPA+; 7g!YI J8(OU '~ӡbP:۞}O~15/ WYq:i&ޟg_||Ҋn]s)pPC*`=qs0p`^v5l*[몪:uciEoMR5#/A4BT Myn#[!nH=)hp][M&=w[HDU_׽Qz)@Lrz% +(C9lO>dVőuwgo{i}؊GӽoEoۉV UiYhqw(T!˖ږoC%tIijz,{SM3Rf"sC!b?B| g/yKgHòz%FW5EZI-&n҉/h> o-6 ⫁^Ifh |4v֭nu#_U+w۽kl4Ds@)Erz]nBCʬ9oSҺdRJ}(% A$}-8Nk'W#׼5aT#O]{;m;1>xm~vp6 m./ISvF$I}xKuje{oАA2BL +I*KoWP0f4l&u(Ҍ#qhrUMqH"Kӡ.ipF(6_$G\Hw8䂺8#_NWWu8. H\nzr=~ܪS(OWvPu( /|3`R1wɛ,&׾n" ue"ҘR(a5dXtp1&$l ΔW Gx  Cb,ˆE*%A_bEjϭH 6"}J{\<[Hk |NӶ|Y\{:!%8f$v[غxطu1,C[71/ù ikE"ų>/0ą$0_@$N1]ЀUe+^,HhXjN@+])ґHOU'z'CH,R'4B*;Kf8'Slah,Dnn;ȥt*4jQJDpMDp ( B琯^,`8,}Tمy߷mيG?QTNTP{u\sG-8R9E+DjPuS#u&v<*%IaKB\rj6:Qd A/2VӨGizr*[V ?"}I-u3#]ϩ%튤DONMI#p\ɟ !_QXi%R+DHa˓=icL0Y3G b ITSiJ[y )\{l\Jj׿|'ÌB/^PnN5=71zL.F5|.iH,^&| }WAF8R%L}[Tw'?-6B|φ_L$( nzЃ>Ϛ=YN3_jU-kj0J3{+ͺydVz' /{鳟l=w9Rl-Ƌx3Zbel)K2qBeaIPԆTQ$) gxؾT~-Hyr'{&j!rQb Gy _,Һ.j* G`w)*0Tmҁ;pbu"! s#\x'ry݄gw pU.㥏x#p#2TȂѩ%.G oTftexT*1䈮O|֧hN)~r+=S/ab:8uQT<я;0@1 .2LaH,(Cn"{2Jj^M!IBmyjF%h׈)}Kbuo,*S?cei+J_f#*Dr ɤV{ի^O~P R1;nt8%q$ `j9ci1ؐ^q@}Bz`̿Pu5gpIrBGykOk4@UҜiiYj,AB\J#ZƢڮC)_衫9#;(`Νْ]!>FE9]]inҜ$/Dr["^jĸaxbLj{(}ÿ/|#yы^tWUnW]n:!p^O~XÌ{FCP0x;ݼs' !^K\( ]x~>1)|5x@VN\tp͛}'~1dDž:٨Nu'e̦-[tRӬzYWeЉ %*5Bpq94 24 ij\ߨc)ʢ?5=]͌ьp*"a Q ?PH!/S#TT$J29q; },E==S, S ,*2з?򱏲 %,8Zz[* &?}}.{"BHLJ H[tZ oxy!0 j)!ԧ={ہ’X Rz,10u,"$-:څڋ -;UVOa]~3d`ЫOB Z@*BSK(Ԫ񕯴+7UGi8u:+~P9x4* 8rM- #;ǰ xF$H}fZH$*C,o%C/,U|JAҘ4z.j SJX&vR:6:2#B^gc Fx6)V 0~Q-6'ߩ_ #4:^q ԾʇB`E3|:@-SW g'DhڬO;įKS]nEES/V`徫v!%%ЖyMoy3 52_fbo}_Q{0e/ $@ꪗfJ 7bCBblFhڸi=ߑs:(y;*y~ՏX%j֤MT^ Ͽv@&X;J(FV@"%ik@ a nF$CDuƅ@bC_ wӇîJ?/te(HөZy"XQ0,V P-iz6K^RaN"Qd\I|SbG 37X5ͅz ЂpX>>acҟn'W_}]8FGR)IW VK ߫yD婳k2iTF]bPSTga dͮ6~*$sURΪNC̶Ai'LUn 2܇|\ !KQf=[fQ*q!g%yƻZ:SX,'C6k\O/H;ySLUE66b93qja( sG<[y]O}֬䫄^L&⾒ $Rf-nJ<&j\k#qQ}},?7@j,+Yng>KKvjoM3('J461~d!h]d43C0]q5tGzI%a0wS#v15|&B&T("p)iV4-VK2[0]s^j R^AEmVky+$7zGl$9A;^uݵ{ Bf,oְ_-#M۵rPtt)ۛq+$HQG ۸ VJLːIVv-%*'*Vo\KʕK b4@\MBW XLL9ÀDxb _!-\C}љOj# #Y7e.q"&CJT2]FD?\xąRrc`g-q 󝘰$ѫ4NrbMbo]WK+jxb > Xd>E ʳ<,GͤF1qTt/)EjNV ~;xQ+$qĸCMCuer9ΐ&^Tk``L$T7Ix <%s_TjvZc9ziwA*U.`yzXaW0\.=V kPDs_иZ[D1;~K_ÂhYNY-:|(IJN#įٳW1_Py%D35*$\WB$RH >]wn"R;v`뗡.؍hsM*zvP=2gq;.߮w+iU{w&zH$$mnQdy%~?g-9nM)Y,bYD  ! -JTv@/gڛ v+d kpہ\!ן^L& F5:qCVj!&E#۝?ZTM d `۳k%]_'?wozk_׼V'nN:RpgӺkϏh>t4o/`]C#{uBuJF|tzɩ)`N`N,ݸ/ Y/㤡F*^l$h~VGuCogqJVgfY{ӹ@"Br)0YTl/~_?ĩcӧ,|&|1.wF>R*KY烮t՝Ha6BEtTY "C$xV^ ^;|Ud/$D\ ~!E]O8-QDhߒ|qǩSqCYvFϥ[rWR_u 7^<''$ 7`QfrA kmAm5qޙhcs\O#hg{M~^Y Bk:E6>J籖g{?lbICrd5dkޕ͓[Y};DEZڲm4`z`W'>q{_O +{"7?m+8uNMؘJ]k1] LCUvJvK* H"3^bdn%bq; SGC%SG9!dIT8$ඹ;k(ĵ$H)K_YHWO| vI ƫLijRkzFhYj&f=OHUb}^饚(;X_=H(%)&zzN3rb?{7}X$b?'tMtc 1X[ɟ>Vj?ҍ ; ~BE=:P *!˸)$ÇD|\zékY3!Ysvc+ /,.UZɯKcZx%ᵯ|c?ʛ&&k\od= &f]V-v nƥw@(8WІ Ht[SZ|kgv( `oܑ$q-eu6R n2w!+EҤPdGq͵> *APvc%MnĮb3J(Byojtdޮ:cpYUJmWm}.;tiO2ER8),1-.H"jHdTty~q*‹P e!A AzzN!%IwHu% =H,C@ 6̈́\faoxSэٿo6'K uZT䄃4ƮicQ;P%aWWĻъ% A>_{ %BB#2Q/W+rbC{ \pJB!IFa@6d:^Ò݁?ڵ+[ tiQ0ԹJ/M>D +):OO%URܷEFz܆HЊyEy)$PTr1 i nE_xc(]ˆeqKLδda#D'&>PMq+rHJLX#: W641֠E29|`ZhәfőW(8(^s.(Qd{9S%(jd} n襧dNWNqNn2Ie+i?*"'׷$:UYvu& KaLTg9^4gUʇ0}E/z+^A $֍P 1I ϒrfyЂU"wiy,ثԧw}kq 8!77X T#EfZp owG^*BABЅJfzp.|QָWyj FuԤ:/C euNRx]: Fd*QZ#3wpOl~>ILZć(W4QJ,˹>az?W9k_—|;w|s>48> K<\үHkы"5uX;skȥ qyǻ܅`ˍG -ɢ"Ռ%GȒZ|m +*tJЁ!˪:[;2ۈbCkR tx5X+2gЇ>(h|Fipt %T2ttUvJSgڶβ#G/ktQt$]95 ;YCTz X(M^K2kRḐ0ب l@|$yd2SX8Nw<̝j̜@%i,wC]Df.^>4;2O&bFZ6b+/3ͲgfG~#_7^WںR|5ܵ,E@ |ltnnY4Gz}sOt M0tE +sW Md?OiO7ծsj|fee$)=3c\5)M:ԧxk+J(#U@e-ccxMÿ4$)W. ,^$h5u׬ܼeKי*OfJ$UTsU;8 veYz*'Zm4L*c`Yhݒ@ePkw2L{HOo֮ZCrh.8U@[u1 r3( d*($Z^ 0/~-3 5osgNW@mKɝL{iقQ1ӛ6Y&7`f[u C8DZ Noo 釉^ 41-4JO>!,j zR_ARZ8۹}Wj2 'Ć6_EB*4̶~ -&JpM}T w7D9WFi .tݚ@}>L [jM>G!qs8H`DGYAUrb |֞3W5;R5 CO#DvDZf;gBЫqo/ .Kҙ3w;WT]5e]&foR6Yj(o6YG\btad~~s#Yu@&zѫ"I ׅQHd0ȤX(~tzhIy$!Iuڇ6?!}?#x`fVԕk*0UzqB۱[a\m@4$B^@I]i~YgRT J&r3z)Wӻq@‰4e[g?dBwl$EB]}&Bc h+GY$ կ|>|X KW'뫯*:MaKGI4\4p#'Crl.$%$$~Ex }x8 <:5Bgt:p QeskUև|_&g w_T˷~KKWD$qϬs)[Ϲ*:H}_׿f3@+CCoJbx*!J? 4_bhƈTnw;A$ջ2MI [KU K1n7crxr s°zE|1HpPH$ W9b}|W4@gfd= 5͵h|}8E*@"OۿEҸWT'|mao~'_?0P!gYp AO:N۵b^tD2A4蕯~1G=j7ba5|!|d7_{:(B8sE;)jX)Seqswr c *-#K&bCՑw]XPN: {!3q2X<:2Ć}tԎa `V."կ~sT'I=}?%Bp%IǵIj ZC j񖷼,ωĵ% n%2.!~1w/81Dž4~{}{'1я~rv8xBo u Z븠aF8==@k5YnPZ=cTUHݮ̛Pl F{j`uFXg>z(E;ܻ? 7e1Х S@Lns&nYsA12ћ#T]sѿ/_S+__B'QD5\C,7MO{S1%stfr|\\9H< vU_yvC<$$끧\"|g=̄8w90j#WUC~s љ7aT)>Xw, Rb[O|"*KIP1Hu˶%+sF4~ _jŕ_94¾aDu&&B $#mZq:3~K_b%F/vthc}"JW*;AglS10ƴ-?/{ٻn y>נ&kj$L hh+X=~c91*OW*Kʼn ΁;7:>lӗa{{ EZB)/QBͮ;;" +][O9CHF۴[ɧ9%Y1#7ox kU)e-ol~8Nfh1R(>$CV)/-R p@Ib|$\"7GXX>B|i׿Wt3Ͷ9Tk4驮~}W~_G=J d9 n[w8`7zҖE~5IdLT{V'}9#,ץE :>)MCڀ6l͉BԇjfC.IFBu'ad-naҞO;c6rκ\tz^@4hjuEqoF8AsP1HFE@'G*@Q2{Pl$$rCI9ZCcH/d),ffzV.Ys.uf{J"jiu}z#A;v:uБ#6C?b Z_R[tr(Pϟ?N?_br@@ C"5'׿(t{[t`m|,B:^ =L\gGa(^ Ya+2^qăw5R޻wFW 2f.xMAU [o{mϞnaz ׍q$jC"QMw~v&6x0Uyv#u]!=w7ߒ kN,/nAB溺y"ddsK ys6#>@s 8{T0ru0X떁?$F5yBeqҥ- ;*B|i r${fB* ~hZvg- OY?Rc^eۊӧOV7ޱZ3LDUE?UЀۉ'VϣUުICT[jEt{Cxl 0*k൏KsE 3}<_P!kRAYhטl=C9jas~9knq4Đ3%i{%J>Np>LW3S[C {t#\ܦ#zu|'NtdGx{IVS\6??_߾JI#.K\vOz]w:|?DƒIx UYەRWh^(҈K.}g˭W/4G bL])/?+_\˟cݤQ5Cc*Cћ0tnXsc\7?^U)A8,yJ0&׈pDգ'IWm祓vƽ}$J` c`԰ez"JNF:"vE1*6 qp:NfDN8eJN3z#Q<{.r~ SWe'cvEKەI U`wk4YjSJtS//..[$F)QhYռߏ6ȵXdbyPY4+=SQPҋT˳: ;^%˽ʧX sƟRə UqA RC\+ʼn5M%-J豶IFpLR* Ϻ""P0QESG3s?ߵf⳴$  Q Bm`FnTQ2L. ut+Q!,% 0pn$Kc+EXͬmPyhi[0P0:T;tQ0P0{`-$ ( @6*m & {'i6 ,m0P JۂI@IK@ mҶ``0PwfR0{`-$ ( ړ`_IENDB`n ɾPڳ_hrPNG  IHDR[W bKGDtIME ) => IDATxy\Tסߝ`X]Y}Wܢ1jbӨٗ&i6I/MMMM&iڗٚei}AP]QWaYȝ{g<9N^ߜs9r7B pZDDDdC ~Ok`j9vT>[du8Pj;reu+QưE=@&>4@iBGƑ9 !(2ň.wk0X#[ˡgliS/n24VJkk@P[,e8` Rw4#'959wIHH{tzB/X {o1y lQgRqjC*jnԻA* h4 Bpp0Nzt:46kuxdT*ϛLݰ|9F`آRpip{cA h4 c?jک4Kӡ^2R8tlLHZ*Uh ܯa.yN'7:48]7 Bjj*tDGG_ XAo=d2="ɓX3?^Zchl\cpaFo-k lvSV#%%iiHMMEjj*bcc!bzUXBTTTt)C#A 8HD7!9?r$$$oRTbhj*P(`OQTXUTTT1 ` Qӽ 'QŰ{uQ]<23yJ`dTיzkXkWQQN>~^VCN'+JZA>u>IDDa; ֐5.{@&G""rJJ !yh41cfϙ>1"(`V`Q"(Po뭡ICCm-ZPW:]Nz50EV MHChC "80AW sK3,X=tضm7nav? dWSSp˾EDD [i\ǔ)S0{?λ2|aT򅮩 %E%()G<9 =#Vf/w4$ #G!-3Æg 9%~ L ks0y 7oƦlc@`斖O4]v [e:? `'ɝUI0k,L22̿`Q / M(-.AYaFC<~L&RGA=Ң(\<G '"wnQBDBr a#G#mH$'CLz053g`Sv6QZZTƌ`:t0Ǣ 3gCeðffDĜpt cǎŬY0} R3 E?ZL(.)Ai?#qSjM}{zI8QZ#'#gNS ih*Q6<IC`inQA/ ԩSh40O9<z.e,- ֐5|||ڷ=gj{A@F3ˎeGXa>^|%[&].Q*Ujceg4Z-4Z?[υ׷֠Z:\[:>dh*\|}2lᙣX z4᫨7b8wRDn;g j?`""] [}LL(##MMM3gfΚhJNU`8t0ǎFc0Ti  jb SZZ@[P&ua@:^W[> Pt8}Un{/HᙙQQD :lIG@޾8 !Q@r\PwGPp(9dgM{`,\y56u*&#ZCF}>ٳi&mhg++W0l a4d­!G MFl۶ ;wzDّ< ErF&@R$gDXTl԰uR]ٌe8z(yy8wohp‚cZUK`056EGKKOm҆{. ""5֐5ET1+}[m !)6jw #1c5X Čɛ֥KYf(+A~^.D~n. bţ s ƼEk0juG8sݺ+4,3OpDD4c.!kA3p˭"11ӬEEΖhjxߙШhT; u` g qX3CPRaK|̄%?xy;ÇШcػc; _)I=w߬ DRFmX; ]DDջ5dMut >}:n YfЩs8DCmUȜ !>91CP(m8X0lIu!@Ʉ"ߋ~=]Z4.>\0-ϧlǙӧDD VO7BVKi]j/8?/ZP"}DL^G&Xzl랩_}oy%IIKǢ]3sS6>΄>}j^zX ~@ Z"A0u4~=,'+ac6v._ ^ےG+b⼫001l|x\^Zo}.5j8\yB4?Ja9}B~DZ\z!"~aL$P346xAOXs/6goľ ߻TwPJ*&^,BdLð^c{7lu|? 7_|o|',Rn ~o$+ x5|/.(+C [`%( }|| ki[4 Js/wp `;xr"caEt"&t)01l]v-,݋o|9^!z` .^@Ks3BZ0|Е1b:$xǿrxs""br&wrȑh4{$dڃ D熎{%uB""1~Lr22;  [}?luk2mXqZH\M2{lr5Æ#PMRVCӿ+_ È-,G(.8p }1=/S`νX[(301e͗1f*lZ#c`LLŕ'On֍<Ö2`]7k fϞ> 4[^ {?s:d-ů9(ޥİŰ%1g^jdJTbhZڿ9r͉VTiC? Z-~r Z,cp"dr8d{ٷu3t V* N:7!"P [ڛ5ӧOC? Vĸ!luw.w/QTXGA3m˖[^HDG5 ֥lO( Y%V>͆Fɹx懈Kyz+|5eܓZ/7SVº̃Hdd$V^}hX𗿿q#p|ɨ%9sbvt).,|pnu/'m jjDFFvX?ʞO:6B]?uψ#p`srrn4iweaj-TTxɶGŎ͛dϏ_ ˟>juODCG1`vrqp"<1lM1l?Fݥ>}>>$=)'T#Vők}#322rӈD<-9$@퉻 sM܇S'%*\ v]7 >( 99|^nQ;O [n#q5oM+**#$>ArN/ #,ҽiZ޳ CpssÇrӈxN G+Ĕ)St555x'PWSs6\pT4n=$6Q/Md@DqqF|X#"Uњh{"==+yK󨚚FeEb6RD&$!:1wD InۉddI>=q)E"e Ӈ"xq.wh6G|QyKABD}׬Y;gٳfQ? OOb)μ`Aa[ %ұqkIcu.mC[SW-mR!W7?{'+;;p/ѱܽú.µӥN]k=pTwĈCƍsر rؚ RTXjӻt}1Gm(n~;a/ -AgÖk'-6mΝ;}ANiiŋȍ0=GXkia>xI^x ad"KX|dT _@DF}5l`HI>>>ZK@N˰X,rA߯D,7&*J}-^,;`0`kΝ۵ooDDNak>;`ذa]^K +V<Eb?SftDԷ+e( vM<9FDH_ [ť_wϟO>Ɔzɹߎ1W_ץgǫjS|)^ױ@gfB. IDAT.7<w܁E=_XXw6_ܡ/kf[x…0a73xz38QV&97xx,|K.{fǞ~)iٽ$"'J mq|3ł/sC? J~i"N o~aW_^j}%l @ x}]do )DFaʿ/0 %"ϵ|r,]5|/G{ID􅰵2kFrfk ,Ze/HnCԟw0Lo^^l{YD.wkH\\n۱cx IB2"$wD="""5† tR'ٸa-  |I7...+,97׏`j(y%K[ouxMUUbϞ=[.]5[.gغ'E/_aÇtf|q%A e7L6^̵H_G\\QQQP'Nlf\a+붅C w=Ŋ;3~ѵPȻwmd(ףwNk M$"/q9–XWoRSOǵ%>UPuW,‚GWp--"k[f~sۏ7o%K$fۈ{\u+m oft#իWKi)}}1p--"ԟg 25'OrS"[ l[8tPtM.w I?𮴏 Bp\s͟zYDEz3l  O>T*K7kHӲ@9i'3YYYx:.;;kfX/4Ho[d_ !!zKX,p}+WbСt‰'6V z+lx a' e$w7Ĺg%Ԛn4+|P*kKxvs){us wĈ>xҍލޒYy0a-_:[p+u[.u.mC[SW-mlvC|n}O]}DuEgg?%:=qXa]~TKu]aO\\ F#j5;&{ݩS-^GV:!zg+@؞lÝwpAA9:z&23[KDۊ+p ۽F %%%?AD7>(~ cVUW] BAu8'  M""a+c˖/K7駟% 1+箻BLLLmܸ믿~J/4|ooTDDθ; *khh)%T*F`_>+|\6DO;l= cZg.^"d¤[BDb[KD {[۶mϮ8 ;\"V0mZ3_*XPw4F_{;HD%~; "*GP` DǏ̟?=_pg-Ўjt:|C"|||OK׬YٳKl<nAmZ}Deh $"nMw+2*JiyyyЂ Q㮰 ]Wz IeWJ%ۻ0sLI#G{=w|haBqW?~ ZDԷvm5):qDЂ ~ߛ#a>tWk֬[ιZDԷT*XBRn:ٹ[[DZw?ٶBW{>SzQ&23=7|3 #GĘ1c0$1*Jtmyyy {7ZATj<裒{jjja4ESqCuK^*?n{٩zp^sn ҝ2m.ֵ{Ս恵½Dr'~: O:tKu;=KP ""/^`@ii)h0`(.*]4%Mugƶ,_nn.N\FQWka7wӕ,Y3gy$_6O<xUWI_Npmܜ{jjj_JrqXXOqq1,X )?tУhy+a%O8'`0ʂzUyoQRn:|-[ .Co-ɧ̜9s\]]dz,ZD͛0v8v, Z(Ҙ&jra?FSS~{3뮓o޴ 7t||_O<pgz}D7t5l-б -- NUڵk%cZ<y믿^RvZ 4 ٻEDzZn[?HW+mU]l呕QӧQ^^o s[fJ؊0c N!^x֭['( ޭ?\uKd^^C`Qѕ(ep*^-"2˗K:_" ^EՕ%y !ZA/;vmP8<Q_3a„{TUUh~>"""pt뱊_{& `jJ,*oټB;0ѩA@0{ %7x#jD䄏9_帴`ܸqh4NUޘ >} g @;px'{p u:梬 VvQs5lI2;שΝCDe2yM "{ #GqAĉa6E 'f,yW0:aʔ)NUޔ E%s) t DD}\}A1bDjkk}F-$"JؒjM2NU޸q,e.<Qv 7@D3-?@T]"G{}Dty$߾][%%%2 7م'"I&ʚgndfG".Ά :aĉNUnѐ3S;DD%oɈʉ'+#ٰ%>}dU{eg87ȓ\wuP*-[@fn _Jp&l)э PQQ!*S nxyH>M&v@~(ѣ>"}΄INhf9,, njq6n )K:kkײ]TPX777 SLDy"/Lؚ` QQQE5s&ΫflڴIR!D"^^{-N,=`4ȏ $Ls =yi{rssQUU%* ᙮ȃhZ477c˖-ɁNhٳgX]"0! `h/,WVn.74md#j""o3nZ ǨQ5a20f̘'zqDԫ:K=:DGGC|gKK n*)OΚB<҇ ٳ\M u:uݻv^Tdy2 UAӧOoMIIItddsCD1: [OC:ucygp{"(ѣj4L0Atb --^k$–dҁ3=[zZהO!QT*1fɄS'O %8qg=8"Ul9De) vqDDLn()S @-byy611Q:<@h:"{ [Gi_'O\áD"/(lM-pW K "fr?߿AAArC%%%D-ɓiN-[d2@PGDɒ&*+..mT=n89sL`rrrV4z%NqIÇadf&i/cG `XVٌǎT*d͜ ERR7JD=-AZ!''yX~ A3b K#"lwK@t43+  lFii)lق .p+Dt,3s^ϠCBN""d۳X7U(.}&ԩSU@ee`pW$jH"S\nڿhӠ Ɗill䉼ե:&"QE蠴TԋFGGOQ$+;ճe3"ٳEDz[ec9"##Xȅ-89޶gKOrn/E""o%ޖ uȅ $[JتD]],$.>jȣ:t89%E4iΜ9ηU#>N?bI3OJ89H׷ ]ب"'6_K&lqr<DQى'`0De钺 ٓm#TrgPg㉈*))} EDB%S @RLX,HNqԋb # D L4 ?41N"r?۰-JRaw<ԩS2j'GӧEe㤤$(JL3gP0<0h_&:ɜED&4TmNJv ~y0a 4No"$b8' [2>2R$QYSSnnObDD 5 0[,JLLc #9[=[\HBn:r+k4N'P [Fe*UdQ%d–555zQD:Ftñc`47<JɝDD$D0h  qΜ9DĢ/&D ww\V]]Ee 3pX,jTWW7 P, iaK+88neN4ŏy{[ 8PRoh;Cq"#* |f_/ |y"-{e7 >ar4H7Q?0"L.l^kg-"1lfdvC]]/aH+a+D~  Ed4zðե [DDlUUUA}V]骨D9Ft [>j(\HDeN-̧<9[-d}!9fۻUSS#;")kiiQaXDe\c1y[z^,C477-_r "؁юF""G@BRYw+((H4Dcc"":FC+V [F$"rǏj455I ~QqQ:Zm}DD]xQt$;A=Dޢն'l#1-""FdT <<\2-{<ðgKvU]-EXXfvg"0ÖFm6-""$e-.lJaْrtN0DDlɭ*Fn3jgt [mO.Z*:ǧ\boQn-[~/ #1l:tgˏs.JD퓈=[!!!1nm8E_e<Ϟ-""\F۟7ڭ"0lzL&ȑ]g+%Z– F$0*c:쇁VŠxT7Ѥo@Kc#{ [AE Brr2  e ['eֹspĉcR)YɅ-;; JJJDe #p?ov Ʉzꉈ;W{k477wkuc? [Djiia"0aKIPkgKnϮ-""{–ZZm,HLjOzϖ̷1#g|||kz; [DӰeo3ja&][EDll|:-"`QIgT"LףITfutÈe艨O0"Q/z`[Ȃti/Mnr|XXð9[DޡaĺZyXr iD""yraKbki"0.Pog\b϶Pm8'I566"??_TVo'yz ezP&k\5JiGr'L no8ԱH$y%ݻWR6vXǫl566qkÈWȅzqZTVVJ.*DDۿ_2`aÆ9e\dmDD [aD"d/lIH [2-"KpQQYPPV=D^ؒL0=DDdMرc谞}i< I򅅅=5crCcǎECCz"–hQ^SN.ŰEDN.leffl6;"+"@r`Dǂ 48<"08g0l@S=l[!55N XDGG.\S$(lpGǂB\q U2M "%"4, z=***`XPWWGBW">0"Ķ= VD76"`q[֡]YŲG"\%%cŌ %'&mӑ];7#"(lXԄǏ.:t{Z*ߏV:<mJm38Ԧg gh>l |AU\\,{.z\B IDAT.VlB){h8piQBP6Qpg˦{;<<ᢲSܶK _\\,g69H: [y;h͛JdgrF)e;zЊCDPшRqo$y"b$"{-ذq8%%ERټy3Μ9#*0`S-N'pΆa}2|܂T--"g>#Is455\-fIDly8gV ;X,PF$k֬_bMM Ξ=+*S( "Olm 6vJjoBÅs]n'QU%~0(11wZWn?DN'w,(++% ?V,[ ֵ +aK`ma-J/z` `ܹN !8pZ ㉼a y*qMPL>h|q*t/,*:u*|}}qP*8p`h*]] [[XPSS#33qQ->">On!e˖ӺطC LoD^+a {ڞJ0a4\])+J3g`˖-2Jiӧ;5m6F]d.'"ԕ %nݺPT1cB6Oa2DesΕ +ڳqlt=y}J:zڵ 0{I`rDD}K{bɒ%ֽx"lMQհȬ){5j(.nQRVV={ `رNΖjp- $>;aKͽsNzfI*lDy"|$,-Zȩ^-dHgGN: `ǂflݺ0Gf(خ0D}BW\qER8TTTh[GD}Fw 3Q~Ν[Ɗ5pbn$嗛zQVEZzS;+:_/yyya2}vTVVb鲟yrJJJP^.Ƭ:w.-_~ v؁b <Mߵ /KDtyd'"ePٳvwsW ޭ?H6LthDv~gÚ5k$6js7 "㮰nڅ̕JDY?JzL$flټY;VX0s,(◪< DD='//_~ܼP]]m[\`WHD};Ѷ`ݨ1cD[D1zM!C!O`]6n}O%ne"Zyc;z}"[BqrZeZfUlkԦO9WhtPV/(k!?UVٔ6ˉ5giB4=y O۝F!ܹsw}6III,\Vz@\ ܔ !: [Ư(;nBᐻkTxZheڬJ !:[Ed~oyVIYXuٔ?#ՙ1z^z!CUs*@**4\!l]!44O//_639u?l32 b 7`2:;CVViiiviB a +`e|J,e E;露V;O?݇dgY_p… ,$\%l<4Ce%663yٴɶu7݇PUVʷ/h4mW3!D/s탁o';;˹\r  a 1FCyy9>󌽖0ː !f*Pɹs[ND5 CY#k=z4A<۷wwwz=`"""l߶HϘA٬hK¶|oBÕ^Y{;{{s oFUk_Fsy?~q58w3[k}XrlQ\ͻ5?nuls\^;W{NŹԱރ&[=pح[2ctz=E9y$:Ç3bzAHHnn-**b׮]h4.\o-!K.N=_G6 _>_ͼ$lw;6&Nh3̓Vl6} ˘-X-!D#\9l:t`XN?|Q;%pA̚9Si4Ea„ ̛7wwz7ͤp),,5G?B[* 4K|xԷCdZ7c~jnDF;V3ktnJM~ f?FnD{B>Əch4<==Yl{'OGǼy8q>*))!99Cq1ʬۼ+**֣Nxj4B.uXTXG~qMFS-%lٹ\%lW3{t<` Z?0u)^z%*++YlYl9ɓs! C]|fjb`]/*:z8nNŜlʋsU%l9}ly$lIت>&,\ȶ[h4ٓK}0''_|EQx0ݻwoRVVdҺϏaÆQ\\LUUx8P sz%6RZE@xW,M+%h9{q뉋ٳKf|A݋0|駵f/**b̚5#G;99[8we#H*!:KxD=spm5"0YF#^v/oo*+*+1b;_|>}4%%%,_Lk?8߀VEՠhQ3={wcE[ylVeVgF9^5p&(vOc~jnDF,+-cMիx"Ư~+ϟ? /@UU8uXX8q:^51aD6l@`y߷7RBNPspQ14>BV=3F!\v۸VҥKUV\\Oyy9svr޽{yg)(( 8+W2p El6c6+(Z( }Yb%5OgfUL!u\3PTa2+x9{. OjJJswy֓fW_%$[Pe/hYʒy׼?\A!D@0XcoQw{{hΝLo(,,dĉŜ#5e?ut:fϝii̞=}ھj*EaѢEDFFիWm6hzoxyyך,))(l[^DޔeunĚ^Tƽ>d_Ǩ׷aRS6q<GlLJ^|d?~|텅޽???t:22xyycU밥oO1EQ4͗&1!a me67ޠwl߶ ƍWkbvI~q{O>G'""&h]PZ&hYnv-[fljNI!Ka˲@ rY?qtmZ1!:r~أOh4l5z4~߄J+ȷ~`hRVZZ+W HÃe~KϞ=$h5֭w_>Wf2!{wfѼ٫ M7||}%//Zcu/_n͍|X;3X 9֭h/h]n٪ZohbB aKUVh6uׯ%7q"y݄ժ*+O0뚩8f+.w o~Sk$&&:ߦMwlܸKu׿ްf IDAT 5uEGnh4mzB~'k,+SVX@̰(d;S8yl!S?t̩sf:kEQa!,nn&>l-Zd]~GQ֭[G=9s&R7|ÇחKY {9̓^+) w60a.~2b;pyH!D!-[ AQ~3^&N&]̈́pa'fNLƑvGaf=RSSZv);FllSٱcG8~g᪫rEy݊j5ڥ(Se 2 e!e nŒvx6wo^yCUULt -k'瞵;`,- jw{AAQQQ*] gժU={d) .Sw+6}EEwq`0PUU&KIV6N.x]}kKp*綩.h4?IH?`1y9zA=F6]xyy9<݃({TUX4MQ̭,4 =8\sUUUyyyFN.؎NenghEw!Os^3gQ#2}F#G%>>f1l߾ SսłVsLtdj6V /tX$l50؎f?\kKqȡVd2ʋ WsJ}BxͲe fd [U5䳲6SA'??5kX_GEEqSxw+݄f5s, ٹ B#a1u|1^V6zƯd5Sq͘oͨ#>Ǐp(l)»k kZoVۂ{m..-?s<sS@VkFcC$p $l5k K4d0q˼ht./ƍeW  ݓ6k6wߍN>d2YqUVV{LݧZ-sG:xdbu+fϞm!?!K$a&yFDEE{,]ĊG 爄.*++x7d O.{wՄ 4aB\7##FΞ=˦M-[ zrܸ+ѣKVh4<̙3ʂ$p ڻ܏8(?^eoО>(޵ûo-iV^\k+?6uj\h4Z0h4l߾rrrV˄ ksRQm2su˗YVZjASVmPjx u`??}#- !MFlBԧC9dWaמ+t6{\ ՛5\Щ5dmD;s}SVc:\QϘcy\q>_MiiKqsuDGGv[PU) auzߵZ-ӦM%''n \B+ [-/X TWфqqCτEpx-k=%l~}–`+ Y,Z| 3fuzsf>z)- =D;wn}6oLqq1}G2\[u5-S.;$p Ѿ$l3Xb(6NL[^G.kx Xr;_^EiI!_'|ѣGHu~;6|ufٛ5uDݻW1 PذauD"##ipӶA™V6K:s DQOM&.!ځ]D3O^B5%ǵw!$lIj4l zV}h5V'{+$$L pBHj#w0+0$''{!9/_OӦo8tH? _eEQ1f,{`?7-XY-ߒs=G} -h9/Y^q lմ:u2| VZeY!!t:.!ڈ2yP+ O=O?Tk[Hdw.Y70W_k?l$ZVVck ٴ+}~p>h0*7ȼs[d.]g~JFFZ%oPJiI`9j $ ,ϷPv!Z̓O>g}faݺu+v̙,uHjWNP0,,R***d=zA:xE0b굌n}C$l\**_ YJ*))O?e͚5內u*e:}Ա\`"9uV7p Fs`0=܊]- Nc1L8+ ___u!jk{`0RЧO,ͽcc\%hYi4GYoX@@[nWeeeٛTV \WU h ]ONVV7of֭ -bCՒ8|$cWڽk{R+/-%3 ۿoX˹ O:ZVeȰaL4W]EPPY,!kՔ59+ZR D}q >>9s\.hu O=Z-\޽{OIOO柖-:у@@C;h"ϘNl޲۶lW~8_`1g@b "¢zHj\^/ UUdHZ*iNK䱣HK dҤL80iRVZŪU Y3NȪd)3flViyZ 4୷޲0???ctt5[sq8.ZČ3pssh4?9[Ν rO>Ouo}[T2 8r@ǏhS d 6/'ObĉٳZJ' Y5Uo)2d(\s]OZ5Yo)&&fFzzvt$lu!xHLLs:l6–͛ٱcGVHΝ;gj:hi0lNZ +ᩧ 0ඔ3C?w5BW^.>}: r;FFFGə3g `=9zk=?_|Ɠ}̱{zzObB" $&&һwoZmԭ!pal̶m۸xbbbrO<UCg2pV ZœGJIIy>3!:, [W[W t䠄\}5&M"<zrl GPO{gg,wHLH *&&m&++-7erss9$kPB0k֜1s+<%'O \ ?55 [_Kh4 4)S0qD&,**v=Z8x)+qP2~NmsQYYI>}HHL$O>5˖-[زy3YYN3څ5BVM35K;w>qqq&h5NWt 6}؎e4 A:Ç3꫹K”Q\\LIIKTRBiI.QZZʥK()-ux嘸<~̡}}??~2?_~~~DDDzm6lܔHWx::wwwnAi!ڵkYl5piZؾ}mMCVפE]z0u.3fXLjפkAT^Rj:-vMHKK jgOdnVP3Ãn{:֭]mw!V˰aT;~nBth)-^1`1̚=Ȉ۷WWSKŋ|׵&u@j[#xꟋ,Xv Zms]GqF~aÆ}oM'aK0MBb" $$$зo_<<=5ƺ|ؠOl,Y'N8r`-jp*uqE}Hݻs k>p5ڵefnzvׇ&%ŸfP:R vV^^ѣGk=yh47l%5ut-/# ,&$$PӖwwo零zLFaIKK{]?9!\-@lWe'sss#&&F _-`qq.7TUU]f6PZE-Eci@`` .&00 O-GB?dҥTT\Æ {#%%v̄pYQCnF:BBBIV9RU-~:BKXԢtcTj֮{rS^^nqÆ {'%%v̄pYDsFD]jO>Mhߟ듈~~ .YSP[zdy ZTPUU@RRGipHUhq:=ԮtYh1^^ލךo_2~%%%ڥ8f̘sw;}nB [r9Sc :G 2fU2/OOO.^h7899AqjfUF4; s r2tUs)RZZʘ1cسg\s_M[PUND–hm -_Y,>}.rx/gyxx[qqqǏmd \VpuU*$ძ-{Gs V{ygٶm%%%m8rt$p.N–h: 5|Y^5===]~d0.TY[.\=RǼyqwwor\]>-B~~o?z@ \%\bٖ:+;O4{`p|ꯋ@ P`u%O f)HHHdΜyt;Ckvq,XPk}>vDd7EIIjB) vV#-k5)\LT`YI˽EP[.[ :TrS,XC铒uЪB" [+v @ np=Q[Z δi6;hwke ~~̚5;wKB̔-!h|'R$S{VR9xlj^ >>̚5ݻws:oiiiPDDĭeee!] %MwuBϟjZoYj֮med۷3gPVVz{yy@]$bn IDATE–B4OK ĉpW^u+6yzz2gl7$$䎊E'&aK!/ ꟫ǎ%<?3z[| ^$aK!Z^ L0L=ILL,>Tqtv+jz*ee$''`0<==osssh4f7 r$l !Du+ Gfҷo<^L|kW[-UpҤF ht[LMp l"3gNOOZ[^rf`ΝL&V]j02B [BѺZ6Ox:MJꇻG#A˹p1/{1}vfVQ}||&}!\-!h}_=E*++:A~I7؊Ԛcڿ[/{GefEl6kF/|||N f|B [B`0 P^^ΩSHJJBskV$ǃVw+_!C÷~((1Ls|}}&}B# [B6L` PZZ™3g㸱݊E=eƍ1DDDh44V7 ?4 n$l !D1.s9j4֊1~ݚ/11Fna^ҬOB6$aK!VuB HHHj1Smӭh{eoQ]ח~^`0lp $l !D+G \s|OhvRGb넿hƍ_MUUaOo8!\-!hO)ˣ8V$AZhe ={`Ҥɬ[J 0ooFspI͓d$&&ju[[1""iӮo kh\.G–BB,rrrjՋZt+:/4ӧOgÆ \t kh!!\-!hy6f ;;//ow™c[c{ne f̙lٲ/`4cPBeHBp8q""")4/hF̞=m۶h1d2}.A–B@*j;vnB kEm WVe޼ڵ\L&S|ɴ !!ڝ-!p-G `>8v(8xlˠnls+U3g.DNN&)Fɴ(r#eIBs8:FQͤG@AKռnEOO̙ˁ?d tss[`6Mh!5>x=l&33޽{@k-Uv+ږ\ks%#GtE|s b$l !u*L&mErnElt:-g&;;C(N[(6 @ aK!\ h4q 2)k1Sӭ~Wj>}:(V]( @摰%o30 dffg"Zӭpr-ӦM~ EQܵZBEQҀL?!N–Bt 1P^GILLãnE{ɓt(h47tnM'aK!:@JNG+Vw]clƍߟ۷[VGD6@IBC#xr󉋋CskנռnE)k~5j4l޼EQ,g>!B–Bt,&s1ޅe'O ):cZ݊6dPƍ1T߀3ΐ%5p5} K8>݊?ÕW^W_}ň#GkQ#aK!:2A7yy穨 66ma\֚ Zu_Ϟ=2j|M-r00(DsIB _ܳfchc u[[~mYddӦMcYe0slD \O݃={AKXQ/s'4T?~aaᄄtkFj'^Vje޼yڵgZe_E!j%QZEQ8z4=d{A%\[?O&;;r/Q[ @–Btf@0Иf233?cZ"hv̛7C9v^ :!aK!:L&G!..__?Z;hZ[Ѷ̑z@=mcΜ9deeqa˽A}s'pʱ/-! Ί>d2qiJq5v]Vˌ3˻@ZZ^zppS]-!GJ@ffII5LFb:9ʦhk())e߾,5p2D$aK!MV;v~nA^׽){ %D$l !D ˃*++9q8ͭnE{uZl^uUm6˽Ԣ.s3]-!Z 9u*~ӹXW^v+젥rm1DFFi&ElTf/!j%] RRRٳgׯZ]V݊-7t07|lTn[ D aK!&B˓^E员VZm߭lg_h%]5p] /^xZ*[=z _~rO=-BHB. urf31mxp8hJbLL4Ǐ端rO)D'&aK!D9j0DEE>|]OXV4ԊVٳSNeݺu[@9`g]-!PKKK9szkYjZ|o꓉?x?""믿뿦rP`({wyyYUy}AʶՒ6-c6% Di&c::혙7==ލg6bc3=")ReQLݒ%I AP}TVe]@(\UBz}(lox 3<)//c Lf/Tw+VGqIaڵ } ؃Ȥ6DD$xr@[E-Z̚5"h>]%K9p`?o"/QVwBn [""x".bJVZI Ujܷ3[S={o_5>ظEM(lH>%hoEKyjkװ|"LVfhjjޣÿ+qE YDDV7mhi9XdiɂQڶbqg&9xO?/t)Ќ –,ІYpr]ϱy&-Z(9sƿU1qE YDDcH$8wTVV3j+wN ew^kZp} \ĽFaKDD& | s9vIyym/h^[qf=8>}ڿϓ6%""2f {b--hlMYYɇVw\U|j^{5&ظO`(ldl0::B[[+vE8eL60N-=ɄZ~_yBe+-F[nq%v ۶sBu[qUl߾u aZrP0.`xx.waۡyxJw\tmݻ_'Nq~36boo [""2UfMׯΝ;,{NV1Sǘb}}={/Ǐ' d7C/-8&p=g``Ak&ڊV1Vܺu+< < X̿ lTeRaZ{1T7oRWcmJդۊ6}'NFk{7 xSIHaKDDJ! 06c3&WEb5\{2<<_]W0DQwC-)sA`1@WW6mT?"-+xG9y$|Ɗ!2?(lH) /)//gݺ @qJn;,Yy饗vm`K:w;d>PRL[8Pf Wee%L=5{mE9OXSCtwwv=Ec [""21s>Bvo~+VdժUڊPlli]f}]kN׋2DDd﹮spllҥK^y0cN`Z2)lL<Ο?Xt,V?oTVVM W_]@3<%–̴%B˖뺜?-[PSdA˘m9M5!C{{;gΜ"0p )ȬR Џ܍8?m۶S]]S*ܶ\Js\m}G}_*Lz,ȬQfy=xرVf7h[em+0]!FaKDDfӛJƸp;(/?j 5^OaKDD1SSSC___ٳ@EEe PL#h75mɝLT"͜9svײs~ 8kp HP4Pž9{W`Y& Anޖ7h^OojgDmP(DSS;SKCs@꧋2u [""мYwb{n"q9mCm[MzVF+ ѦVjl;C}v>S/@_Dơ%"" I` p7u]adUjw5װ㸦V,\e ?wy3Vm}_̴0dDDd:4Dtw& e"2 U1[wBt7We_۶ٻw/WW+Eɡ%"" ô sw @V:xGx+[*[`aۘjW nM'e[1\o_'+CaKDD237ԷMCCظ;O V6-;s?;jUlIomŇzqx7\YmR7G -YLI?CC44H.:xV0p-+0F+Nz٨vf[6+u.1SpNDDvT+z{FAa*VBʖ Zɓ+A[o|Eq):G0SR-]Dg0r.r uVpVR9+X J[~+_aƍ.cG=T H S}bZ#1U 3JWRKMmڊ.ZCs5z7_\ ["""F3Xy]]]!6nܔN%CV2{c[[Yҋ_g?Zx Yk\r_MM ^Ͽ!Si –H 9q9y$wvν-)ld~ <TK[[K-vjV- k^`PU[qz\/W^/v>L \ ["""o`Wu].zu-+VH, T?d"oͧ[f*kE,E[qz_uu5͜:urlìx[.-:@qZ[/nz-[(Z ag2OL+0U^p ]~Ek[i+VUU/LwwߒIaKDDVs 8/y-ZoD-#nb`+=P>!"_ <2?gf~?UUUqa^y\ W;(lsL۶m:cP|fe+2ޒ _yݟLu]Bvp3j Z~Çk_M–~ \0zz***S 0+V՘Z:F4qY6{rؖpdX)E[A+yF%m+9|0o&|FE–HqoFΝ[X O gh+gʖjft,`\qܷyx뭷hoo/z!DDD 3U-.H$,to0st<`V@f_7ev=<B2erݶ_կ~˗52՛6DDD&E@nݼIWg' CUpV>A.VC $'<#\3?DUbYYwޡk1fGaKDDd=ƍsg#]`" )頕@Lrm;OКhTضbPUjWYY|{ fbn|%""2yf144D5v6*Ghew HGΧ8mYyqUkmŲ2:ć~ȅ +P e.-q02g7a$wTM6s`ڊ Zف0sA~_ג^g4%""Rz1\x 0::˗ؾ}tdN&$hi!H4ۂ 0A 㚍UbEE򗿤u%""270@O$زe#cc2+ZS@<g/TUYYɡCxzew`ڸO3KKaKDDdjOX6m"#ayS+Eb,p3eڗ|j+R\hjjɓ_ c–,q\u֙= 2eVo!NbpxZg~ǯYEuu5瞣bG%""2f:Hɢŋ],`)T[ͷŶl*\׳>˵k ؉ \q%%""2?o`WE"Wb@y&s*Zb T檭8ZEMM MMM8q~  \ ["""G&pEcctttKґr[jMbqc\ ?AضeY,Zp /wP2- 8b_ŋ d)H(\mJ|_ڶbs"^Zx1gahh͛7_~#@-|2u ["""9"btwwaFj 4 jN ~e{slBee WU/ZqMrR;Ul[qɒ%|_ȑ# _kޕ)P>nˢ(Wtm6*+*BS2jp]7Ięh+._~zh4oax;]$-m_u&==QVV5j2S@hB, S~; g`y8E'r1bq 7rOH$7??w6IaKDDda;3ets[7 7\eY1!&%"" 'Tq:;;XtV&Sva0n!f>V a`,llwwb˲~3~PYz1k=D8Z+D׃ف+;`g/?/s]OiڊZ?Lgg'U۶ĴuR=t]Kduǰp=vڊVww^ZZZbΎb_ĦMYfQ/LM4.;5kzm|A+}UlGO>ܹsxW?1SsdP|r=X_̖ۨ$j`QL7s˲<١I;LCMMM\xuG"o$YKaKDD1f#ttm[dWsÔ,/ă=ul;r&Z՚z[1H066F<u]Dӧu&_`fDDDnW`; G4ʕ.vPVVF0^ec U_G1E+{9!w甽SvD(++#SUUU߿SN @"^UUx jyfn |I< 3,%""r'^8X+o*/ާ) ޖ% \ÄBt,??5~n ["""w.L 466FgG;k׮cɒ%dVzɝE>XE*:̌V*XbߧFyGO&f=k %"""mgX,FlڴE]c&\tJbjDki!ɟ j +싫%"""g5::Jlݶ* z5u'h8FnK/˶2VUbCXɓ'<ɣwaDDD p>(l۶='V}_G1 6d:H8y]ֵkxljFTUU݈F]T- z޺Eו.(++&\뺄åZ3gΤ޻f͚7nUl{=͛\n"qTFfh)<DLaa[PQQ:cn>xc򅰟ש34T|^/zǍacǎ/p ) 2PUUM<:Vs!l>7663c|A ["""R3@\b`p;v`ajrn!8E"fVV[E>eYFFF\`\ ["""R \[]eph7d\_7 S's,DE ZݖZp[ggO<}}} 3:: b.–' \ֻC?##QX֧P_$n󷛊Vuu8qˮlMujOWWWD"–L( \?V;Cߵk[nZ^' W'AeE%]5^ qrA؍[IDATkpp??-x-;o,3-)F8:W{ ٸq=դя_DrZvM?b=M)lHnՉD+TUUfVzlD=c U-GumH>˷-Z!,?!}Y?!fIQ^9P`e\*Knj:=8U9}:ծG}/N(ldOx7hM.?^ ~@?S Z%"""S vdd_v,e6mDM"$|.p]򲲜P2ҩU ["""2]wnEtuumv**'Eb) Ǵ!ڊx\B|0]L–¯ xnޤ;D"E8.u BX|jrծׯgg\v @2L`ǒPRyy\fl;>O.M8cP|/V?5x=%h)lH)<а32-D"AY$RgΜ??x(Q0HaKDDDJ,Us]۶S@8K(Ÿ +:dض⫯O~FG3:4a*y-)=8 |.DQoߞ'@;C(dcv~-]y?ۿ[\7c/EK6F+–̄84fZqG<`\,&T '3'O}n?3fұ ["""2SbuX8W^Ų,6ndO$tbmgs8$7hZϰPʕn?|r\08-f|VFOq(lL~Yй:HŋY0!u=¡BuY sxx /DaKDDDfCPhgʕXu,&L%hb1zIN>MOOOOÔxb(lli85k׳x"Bpbn22'7~֯pkxFŴ3g||V>Ļ#Ee˖q!6mܘ<ضc?DTv3X}?`b1:/u6*2f/4~u]x o?\ kN)l\3p###\luTVVfm+vttx>2RW1; c\R.`DQΟ?Gc.+r*[ο~]{֭)1["""2~Kq}yhtw˲[_銈,,?0+S{eyϣDEDDD0eY7mn#0x6W':Yj#|Q_ynY. 9IENDB`FNF(< JFIFPhotoshop 3.08BIMhExifMM*JR(iZC#!$.M2.**.^CG8Mobusmbki{{ikћwžC!##.(.Z22Zk" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?h(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((($($k2\ʣy JiwK"hkz|B%y[tެrh]C#7%iq0o?r]i(ШsED`[ݷ>䇷(h(((((((((((((((((((((((((((((((((((()T'2{2Lw5jcr@;g?@j+V)*yo.vXS:8 {ʶvā}ƤgŤ[WHFjJ*QEQEQEQEQEGqGQ*J(ӥ;oTF>wG.^ Fµ6Äjx}5mw{8}GW=Pi8xܫГ/H-yVĪ@h((((((((((((((((((((((((((((((+7P &1GkJ]GB7?տKy]^$|!TV>ՏAQM2FXh!H"XS)Xi\knw۠>®QEbfX(@QEQEQEQEQEQEQEQE#u #"4x-loG֕hVL'2cJN$WX@#dƩϦMoTZ*q(kv7MzracbOΙ1 mԩ#i+:V pr)s5nWCkNW1:,#)M֌r7W_U9( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ؽzb:+?΀/ny/SMmn?ѤoW?Xi(QEQEG4pր$x]8aGRPEPEPEPYwDn^ yJ/#1]ʞqWɚnӿ67VjҮV 3$NkGY]z0Q8":(((()"uV3N(ˤIʃd6:d kr69i`#eH&U8Fƪͦ,TV.k%?p'JϛF"n QhceVbO>:FEyO01X$%c(b +ĐOphZ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (+= yhoC#;+J4/?ilQEHŠ(˟,}?q(=f,ŏ$ҚL%m0:zWNC@ ð+<: (D(̠((Mr- (:Tux"s T?[-k isy7o5 tTQE`hQEQEQEQEQE6m7XTOH08q٢IXeH[lTuֲoFF= EzsC $ޝEh专!G^ Vu y p6$B=cŋa7OY'iERԠL\}=G(((((((((((((((((((((((Cן`z^~hwC7|!Z5GGx[-(QE!!T8d 7mn>aӖn%k|ro[keO<ֶo$npKEaEPEPEPMP&QЬUG"jyWρJb6<{uW}'qqV+3TQE ( ( ( ( ( ( (!WP{ǽҚ+M_Cdv˹OzEhӬW @ S-7h((4p߽>h]ҸQ=sdm\YrHiPKy3-YlI>MhXh7xr<06Xd]}?j$=?B0GX[Y.!ǖ?ZwIunR~tJ#z?kjl͕F3Siv^l=$\~=d7((((((((((*h.GU)gpj+Jk&\xak-67#+p4[]z;6vRRQEQEQEQEQEQEQEQEQEQEQEQEQEQEQUg--ΊG'? ^!?;?H}3UZ`P?vTWF}~;+MJ:]K?Χ[[n(4\>%@=TkB ~P73V)wF5%QEGIlxrG]H#^OҶ-4[3(o7&$sի\NxlO?+jA  (((((((((((( RP4E1'Z)s;~c(Ʒ Ѣ3 #4 >5 2F+b9Ymy`;5P}뭨bX{N9xww`2/fZiՎ]#R29\fM`|DzWUgy >d-iEPEP6?8Aȼ5Ǜ< 5EQI R}_?]KEQEQEQEQEQESեt(uҔX s*((W1QEQEQEQEQEQEQEQEQEQEQERJF9{M}Eu:tV9xCNڱ~h7_gd|BwFl먢b ( ( ( ( ( ( ( ( ( (!hb`wq_5CV֚0ے'm5\WFE5{V]~b;%8dcirDQE!S/SM9iBsY${{Csm{$=zKY6=t5dV:;P GZms-,-5_>W}3UEPEPEPEPEPEPEPEP53qyTՏj7]Dp?Z&UaT}8bz'z(B((((((((((((/AQ\ұF ;WY\^Mԩ1ҵ#\05Syblc5ZQEQEQEQEQEQEQEQEQU.Ⳁ)v>ss&Yjֹ=OSB2V~T}o2Hp i۱ o2Hx좝_ɨOEV;vۉQ}}&4v&\CkEbe`*FQEQEQEQEQEQEQEVk|u}kKYH9Gz*d𷡫%;O1[#Z#F M|~NU(T$ͺy?y_N̷a^9? sgttՍ캂d$FGcEPETԭm8PY13{@ԕKHNH+5Jkˉ#BPlwX TM٪Cǣ\=6)?4+;;~? Z~R(8Qyl%MGJ(4"D<2Zr+AQ@ju !GҖl7FNpEj[j6 q.-&Z*QEQEQEQEQEQEQEQEQEQEQE^<)\ՊB7wZw"p\q]fns&?.?th((((((i!A$ HONZ O9aٮA@=GMDX" *:QE# ( ( ( ( )ʐ^F noo.`?ZR[hNPH*{P8jZ<̅c\, |> E wͿ%ҮlO"Em>SEWG.h{1 FƗGAd֩ $FC)E+u4V6wp 6'=J's;X |j®2J-&33UvZK&Ā}E\UTPR7wrCuS5]4ihѹ|z?Zb%C(ceYVbN?^D2Ojж% 1STB+yf86oth@aϫVz Qt)pQ>')>~EKerv,ƦvMEM숾o<";ʏy)Qv 10 ƄE0[a*j( [Nn$T/72/Тf+#!C,%Q{5QTÕ##aZʮ0zqA.Ly~UjkF+oOZbmf\~j[r( (((((bX_¯1 <qzὼy2vz Hfc]@\^\{ YN] (((((()Ȱ9¨ɧ2VPz2 d$sjy|)Z $ ;zP-SĐQE# ( ku Sm!,b\*j(QES& T~~/~.?N֪1v+\34қ 2N#Bڤ{( 蠂;xDOֵIJM;N12K([lQE ( ( ( ( ( ( (#ei jM6M! \ԅl_}`kae\N Vɩ"6:InSS뜱{I?Gt("F QE# ( ( ( ( ( ( ( ( (1Đ#?zVW GPy1sGUcGuQEP(((()BOrhWEC|z77+I&vo/^_ڴk.1tҹ¨Q\EPEPEPEPEPEPEPEPE $9$[F Tulf;c+:+y_Fbz֑r[t6 sA8 m,#~=C)TWSH݇RJQ<#?3ұ⍥cAcD4,$֮lyopַ(vh["4:SRE`((((((((((6B=Ɂ*>ҮQM;0j&ARA#eː)V5?y{8αm$:+7Hc$?:Jj;QH(((((((( l!jf~oXxU C[Cb%EdQ@Q@Q@Q@eYAJvҵ+%Ǜ݉q€3miX׫}+UT`=C2)(>k)l\PQEAEPEPEPEPEPEPEPEBSH2aM+v-\llgOҳ'6*}Lh3r_0AUEVO&TQRc (sڥ.01 kWT0Y߼hx dvupV>UUD z n~[ڭWeEQP0(((((((((((C)V0A+6 QOt՟[h’1adCSf$^3RK^=~esWDŚQEbXQEQEQEQEQEQEQEQEKWفjw$~`?V-֊JZB((((RI.e3I+uv-](LP+PYPCGeUDPK\ݚ)QEQEQEQEQEQEQEt[M:r5E4&QE!Q@PH'@Z`zls檅{]1,h>Uk'ʬBWc袊Ȱ((((((((((((eXd9ixf1ZҬZ2ƒڴH@qҖ* ( ( ( ( ( ( ( (( +oi +om iKIKVHQEQEQEQEf#NP;s l|Q F#I4tTQEsQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@!B0ih Z;Kqvj)}`)QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE-sV~![޼B8 m63{-%-P(((( &3?pfO*'3Yɥ\(컿#\]uTVDQK\(((((((((((((((((((((((((((((((((((((7HP3Kݪ1jYLJ#+;Ξ( ((((9񞎥O\)V*x#^\Vθ-~<& шɉ˟ʶ 3EQE# ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ;Q\?TҀ9s+z?oUGp({4l}-+բ(((((k0TZ vLd??΀9 |ȟjkͶ?^EԨEaEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPE! II5F\ U(&kGZQEQEQEQEQEQEaLgI?m{H{~A:rQU<p6Ufڳ5AER(((((((((((_U OAM&.Y8DT Ѓ޴i;QH((((((BA,@'hÉl~I4-#QܜVUޯR縖HŏaU=)|/sN% S[vZ|v3aҬD#P;OIQP0((((((((((7[l w9?AY65pWlT[ʧ?Z^vSVFoVt*(QEQEQEQEQEQEWA}NeJ|S0N1G KJ֮sLʾo51kW,I>aԴQEfPQEQEQEQEQEQEQEQEQEQEQEU RF$fD*ӳ5s}fSWQaG=֦c% /~=PHQuo. 9X/QUصKT8>6h1֯stq?򲮉覇BpI )٤EFYT/wn J=kkBS(hqS=5((((((((((((()C)V4PyNS1yQFV28+r6ʎm ~*N- z5O NHE]x0hR?jeQXQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@zEynXzV-\T&sH=ŸDU84 `@`Ԡ0:RQEQEQEQEQEQEQEQEQEQExB1!7AOAncsM~IԁeQXQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@R3R@dP1x* ),KB\ں} Xa;Ϸ4b ( ( ( ( ( ( ( ( ( (9oF??cF_QTр3Sh"}\ Tw4(İ(((((}u[}Aujik֛BtQEHŠ((((((((((((((((((((()Hw`;uba0D~AwQ}*U+kinBCְd6[,Mf ahV rG,ާ֬քQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@X6 ªW==?dꭿS?ЏˊӀMD*;hİ(((((-jm"!c@=Z姓͝ZSZ"* Q$g ?Z H".pqP]YXvaZt6w]( 't'U䳊oB6/]GYv)H(bUJ=Vn-tKERQEQEQEQEQEQEQEQEQEQEQE}hfFLaQg9f'VMFu|pOѢ[Q`'kRăOѵE`rzQ6v =1ӭs wpyzƢgfOau-,j icXqL72g rSh\Fu;>{XE>D: @lg們j I2Y]I-ad!ȅv\Z"Sܜϖi&mһ15o۩2D= +VAH ?/]4.`Xiw2]UV0?ՐQEQEQEQEQEQEQEQEQEQEQEIYNBG>\II'ܷk]/\)g :]`Vu QEaEPEPEPEPEPmFS:;4,h2@֮7GZˆqmdD7mV!^vORK s.cW_F($ɸ#PS(305@TM9nz)SC^LxAUaFhybF\z@(M&OlѷU9|9hD?\VC59Xƥ]m?F[??jSLm ~G"f_Ϳ%?dxo }ff"36hF|>i:°~74}o'hA;?N{+)?GR&Dִ4kZy~`Y٣35?m/?ƏK/_ԋj2-3G"f\:9'#1>oGSG1>D+#˃P\in?յnzS/r2SjWm-}0+u<7j>ltlLW?ҝ\LLyWGQlSVGBfKi܀I5ܬQƪ}SLqŬ]Pl~h=?ZhQ<;zLKcH?~h2k9ၞn;S'l ۢ2öKVO]6LlйJ(;N}ƞE>̜z(v[Ĺ@*z(  uPEPEPEPEPEPEPEPEPEPEPEPEPEPY Ҥr~yX^)-a?5pOҷk*+2((((*8р8gG3Ssv9W_Z +4u=! (((((((J)h(((((((((((((((((((((((((((_Jc9º5I??^Г' sZWL˰waU[-(QEQEQEQEW=\SZבlUO${ZY3 ^V]H7[O eď=hQEhHQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE#U&E ,uf5çj~iNÿK;פ@T*5 ( ( ( ( ksQiՍW{Oª*Mإw;]ܗGuUX7Ͻc{Nrʧ`>tQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE5PI8@lj/ xSE;Cl2JG;GYW2%db@q{MZ(,((((^%y82Ҹ ԯ>coz,^fpoA4PڹyZ8mQݘ'ֶ3nƱF*EB ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( Oil_\lj|ˤ^Q3^!#Ot5GHʴG'?jXݚEQP0((QK3Qԓd^ŁKlT؛jP[`R<4q}s $*u#՘ >29kT!i[Sv*QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEG, M#FI1-ۛVlj6Zgǧa}*cI!\h( 0-W9QEQPK{oߕs9?PZb9Tخk$ R~X+XqBG~U%qzD^(PK˛[eW[Lp ЇJВ{xaBv ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (8Z)㿔܃݈튦wD]}dU ;GϪ~Ļ\ XZأ\<27d9u"j !C1Ua}UYH5#*eFx!Ӳ N:y8's+N÷rcd9?PT)f[hvV,kҴ@ =)PEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP@= qu<;jG̖nuM0= x] l;`8Lb J㴡\c~D5b?Q\ \Im8C Pib%EhiRERZ ETF Μ{{0zy{ߛ{ %T tgx0!YS˧Bɞ %'ثRwM@Fϛ^ApTd8`M2} ~ &~nU<+@VP=!R4R,YF~H"YdYLհU}*d>ϧ;dK-~ Snǡnk5E YAf5a˯TST# kx{4i~3IcDzݵ ;~rse<їQ|4h{Ou6Pط9{< KcX=?ػ;\pbrZ|2$T'.\ Qy cx<4f Šye ԣR uCy~O9\sc1yRd\`=\2hlے mޖ8hˣ C[ h~o'‡<|u~7|.Sjh/~KW~)T01h)4}cfi~R' dT4IA71+ SN&`2( |7Oִ?}39F{}~`Y,Wt1V0ESõPAG1hQ?́0G\;zA;p~)5|‘c J bb0}m =V. jp9~-r4"G1p&=CPCb0}>7$G1S|"v7%? 架O}lW5+Q-4y 䈄j01&oE{]7$.Ġ]Liͅ@h:Q :(C}}S'ᯤbЕLZ{G9'5'5C}}4'7iG1(7[UJ ܍)ڶȍR"FrXvkr.rl:H%G*z*+J[(?*ۊEѷ(:E_*~ǐ/C\߈ٯN`ZE_+CC+~H"nnM6Gk3)L (bmפfRk_;!6zimfX).扰:N}s~| {톋¿R%6%_uorkԐJY䢟L? P֦whր<⹐9͌o|'/d7ֶ>skIpLPϣ~2|1.aўcI<?! |cѿkOB/T ;VRph7=/Xg姑#jθGCbn,h>|+q%#xLK֑ Nǒ Ťۀ.x-~"7 sUS_F dn~um=<·Ξoco{ӻ {ؗ8[\r̕ W4-G6oI#yl·Ξoo6ĢO8[Pd\ h[·Wd|8ᨹ6!6I_>M5rj[j[·|{z~8߄)jӕV緜${V( e[boo5|U|kqnPSF^gǷ /yԐŢO5Լߞ|Q[Y~} Q淏y߼I7{r]rOmk$oeݥo/y9u^|&:|(&&i[ ~&>| \wA9O`^gǷ$qλZ{[VUosIF(WC_ۓ~~yysB{.n~0+Tb-CC*$ǭǭK0Pބ.:6Opx*1VoEV5o/dVlT^g~|s?|+b |+QCۙs1W+m/˓y~:>҄ߊ5D&+|kV^?.vb΋φrso%6YJ־Q?߲[|loټ~77u%Լ&}VoS|ڢoԼYMiϷد̟[M v|k7|@;5yr{A[;sG||.0yy([/qKMx7MnwA<o z_wt_`=7!;hr8 ρท)h e ࿭F ? }|\ iq7gpDž}㞷}Oq8,pָ8 mgqWqܭ]qWX.tt}k[qX8Vr?q\Woi17jlzzA9W'a>QyO޼#}!r>ke `rx]J^ g tng//sxofɆsf>ἣ|L'|?bwXwEh|..l[H<+#d|Pl[IgͿi(6?<679=ze9YFݖgF[ss{.5%rm츾 ,oW\^al>+W1&/68ު|!KWMVM_asS8|`^8yZ9RfOi gil /d713 <Y^(x-'ǀHy~,E]#-0R=KwN ,No5~Rڟo@=2 f'$YQ^xM x\}lw`/@Ki)5ĺ`VPc 4-V@$ A`pJ! ) i(4Pik GS0JE}ow̍nnv}3f޾eHYHVyе=)U(%?s%!y @B? H#~x̀db&J/Ӑ||T},}>NT,Jjs{~i V\"d]3X;Vwqcۂ`|9m64AF7P>\2úW˿/V Ӑ6J1]jm΂)mx_uBBY|&!. e˓6zOr_tt|D篋F;x})"a2g;p|!pKv)(l8?P'I}?ҹt/ +#>A!F>7Ҽ Xs67lאGHs$4 @qAYc Y! @ V9 V1F"6I'fq?4M!F\5&"vm}fiV};&!R#X1 kL S&5 ӿY n<& BbcΝB~ʜOs$c k0i~ 򽦯 9ؘz,xLd9& ?ɔ!o6Jk`gE֢NM3Z̓ O+YIx>|>Ey:OF>+^%Ԛd&mAp&>O| k2Qӱ{M>}ωB~ ;DAVbҡ64,oJ4<& f ?ܷɧw<+cv ?ܷoJVѤ[9_(c|7XuQ Xjsc2sϏBTdt?]VW{%EK~'I_k 5RTE HBxvdxW|(8+aZ_}F8g~¿o*|j(}Sl،WFæhgܴejHo@x6!RbǢP  |]/;;@׌:3_R+˲b,\=hX'Tѹ Ez6yMiPgC`{!)簡/UdH/& F"X2 Ff1)"'RS^O!-FzvtMo/uG;Vl?Mۦ)$!|ih;1u m9iRbNJ5V27^NtML^啷BVn3дI)@o}i0RX08~ŧoH(x;x3GƬn%-v]c% +vU~ofLfoo3g3ެB<k.0ˮ[Xޮj5oL?ގ0 ގ:'MIo޸i4 ˹X"1vUޮiuox9G?ƣj&*x)oV9mzӰ?e^b]׀odA^ѻ/ =VL"mDyIţMyX^H ]׀ W2?݇}}_|o@2h8*ҒxЀŁvy~\fokv~)aֳA o7z7ŠU)x;$m| ޖ:IoSf!&Ui[_xh~a:v9m "-yʙ:,_O Ui[mQKm3JoERXƯ*Y3H_[4_[5_*ay^?^z A6:xaߓ񂎼 ]EP,#2q2Ka 1[#?=\\jc"WN@l$7Fn ΋ q{FQW({{܃6rz[a#xa/w %g[.[*.,<]{mf=hv|F??6S:'BOawWlMͷGy^Ә<Űlͧd} d-dKvOm|`Т(ƫ>a#@=sA9Z`Njq?A]whh{AXI~^4GE/Xp?w4y.'4V^=5~mW,z}I֎Xnu;T2ynEYGYWdRj?ˬopl.rC!~ag_.+fWt_]~u~e_3Մ;W_ŪK&5纄,{ֺ|m@=J :,hu6,fuMJ> x]pT GjBNuʏ6@8(: Cq8C4@@:t?[)c8L8M6f>yٷJYHN!IdEHv9Pr*B~"K&Ā^VmI.`Ed.x xyb $>TqA2lgT=q| ڋ%[Oh^U}5~%ɣ$,&?&O{qd_x?giT([Umt& /EV3ȸ'zKg ӆ#_j9KW ג.C*' 65[zK=iqWt>~ ۵[~іT{q^SXCqCDߣ}⇜A%NG_!+ .210<>p!K!iV D.34t\m1G6mx\}^8WWj#U?#zƶ.Suup eq2r7{C1 qWjHeIubP XFcJ1)٦Mp .WCI;ANERa@% a8B:ȟG a<(̿_-Z8F!0#= =p>_īI?օưG cnX2()f02Rn1ۡ ]Q^?W~(RA19haMcNcaz1W5c蒡" '`蒡q('C7t< š={ˀ'6dt^ l6{F~&'ihƔKw,ޜzT". [ANmRR-%䳃X }y9NVk%s@+Ge=z|5'뭛m2(.y C,4 ~BokGުUz+~`797?/T`H^cަRjZKѠj zQKۙ :t~~כÏeslkj zѠZEoe@07y:'z;\<ަ U(g)i>  ՠȺ뼬>}0`5)Ewy}nJh)N&j5mSV-ߧ_omϏ譍)XoS^4?1"=Co{5m)zzE> }_;SNIb>O9q;l> zӠzEo2~g_j~wH,^fz}lEw%4^~a?v*^fL[o<%:*A֠AozLhSy~<9yɰs%u2%?F14tנAwtפN]gJWt)Mb>Oyox F zkҠfEo]_ouEo/O9$f zkѠVEoގӯ7Ͻy}rR-yz<8y zkՠޚdׯ6S9S'bSj~ zkS,Fy^ SF7cs;볔먫1@rqj|Sa6cqeW8n\X+7Tx͎w"[vsxya,a=ju5o%=h[~jͻ](jͻ>io~i{.J-a?LoB1oԱ&7(2o?ONy1"-E+Lw#+yybOFɺxy"5)a-QJLsx33Ugye+_Tż_Rf+oݬ8.6qxݸI @<+3dP|^+p}> Pm|]G(zߣYce5=Wlӯ1?>^f|zkH>BqL}Kjde6SW\G*8v 1pPC  wCoJޡxH)xh ~:_9c >&Xpzr5ϟ\vzωޑҌ%>%3@=  ^s$ auMJ> x\ pT>w$Ek O5NG>(`N@тP:H,`Zpj;ÌX姶šiqjԒ4={7wo{ .3y{޽{oGtA  5x0@I xD,I]DT@iB['~[ϋu*zv(W!b D?vTG,T'Qϡ{*b!|BBS1Vna<A L,ƭɸڧJ|7~&בua@zC6v8o:^[ƚ/#Jh9 =X3Q_Ѓ@ՑuC`yMsv_5P#O|ƚ ގw0QxٗR1L{3hCy r{{:<\cOO4>:K=6S'<1b#PlUBg$#bV4L\>{[}\9OH#(^i; Pmۖ/ˀ|2~-6"DP L9`qw:\F^:+mX3bmOEb>UNq'}تÚ˼ŵmQÚS@4&C}*8jSԿuu,8,#B\un1Qfq`=_ɠɊ8 j>ID]5,X5GM m)oAWƚq(12!H8,ؚx McF>b38F?7'VҘ(O)菏̞򔜨О#X^hwor.kw9Tۢr&ոp%ݮSj/*/䥚<_kϴ|}M&ߣh|&B?iyvM~&/yUROk5M>xc1MOԷIj{9y2ɵ Z[*k Aok ~\[5rp+k `%Y $Nvt߹W}V_Ls)o#_&+ Q{?!]zu뚻ۿOCC8V ut等<XWf(5z&[a1g^sDѸg/,"=\A#n(0>_4iȋXlͯclj:F]|~_/Hp=.&[Jy*64?L[\h+;ɕ U5}'ۖAc}>]jZX.Gρە] Ny'ИM5 Q=z6V Zoò'ZQƷ}&|qk?·TR+E1[Ʒ* 0ϷĿɞ sx~ǵ!}*~<װ|6#Թr|k4&o}TEjolhsIkoOҵc~k2S֬ʷ1U'viR$G;o Z4]w4<ߦ:w]Y3ҿ)yMīW\Jqď^!7 Vb nV5nY[Mud{f1jj{ܪ=gFЈ+rxwL<,^S5W#.)JS zQB ެ2|xF\_p1qP+> ^I=yWT}Wߏw?Ļ */u$ ΁%hE ;D])5dx>(WWWye;ܻɥ&OqyaX~O-.~ mP["sm^%U^^mΤ^~)#wGlN0m_=vOf%mVfew_24[m{i}F-΍ 2_SdSEgd6[6Nf٩6F &Mⷴiypπ @ x2yV9y|:KOuH#YAgH'j8/vS2B?p@=E D&٦-ң5\suM0= x]PT=C =ikb3& r GyE)VQ֩mM4$2h["jJv0vX+i4)1iVf[{q3?ݻA !eDP! dß IVRL%GV&$HxO^s`$dR28!q[C唐Tx_R @ @RN^l XvgGxR@9e'+^57jJy ICd5qxE4K^ٟxɐnz/y=I^un#uʉIW2^ytgBAOa/dWI8^/qW4^W+7zp^%$-Xm}Ogg=f}ϮqCrۍg.nho/t46^po? 8jT gAy!fqx]a6+cڔeZ9vYC,]xR:e"V{ /RqlmJ>4mu;)o@N-Fp2տ !ANF86O2 M/}.K>8gh)Ǿ09_Kulk@#Fk9{=vH/ 4 @Y#Fz4Z'-``c[u36郀&r8_9o9]Я#з31a}~H+t?3ht10;݈*7ҵV6r 87e?ܷ]o9= ~n6{Q%o0maMۭ?V6q ̧Y ]sC]a}\H eйpΠ a}t=`4ZQٷ[ѷ t](F[9} 9a{s2fV*ZqҼGuqNs;}E^ss;X+}kc z=!GJ RyT-ե[)T~H*?$KR_*KˤeRCRCRy&d}fD[URyT~D*?"MӥRv|TTT^/Tk3>Ț,6%+}ho)^[w`-=5xanbS.-5{KBCZ'ߪow?bޛ6&kc¿d >_[U~ ?goO;|՞g}/oÎ7/H`S/XoL?k}⽯DߛOwgauE7A+IJLe _yKvYo6[(d6=㓉 1uפ k}.$ُ姡?C՜iHi-`7৸ hJ GO~\> 'k&]\]u*wpfr ~X9|/K PDӨ)QogO#ަiRѡ z@oΈz;/z+~#Iz+nQ %C[m7~7𢤷ݘgˊaE>.g]XzRlIoXϫu[-q!=q,zVqΊz+Saȴ 8[7Qlz@o9ΉzQϛ!] ^Io 1?.Jo a\ Sz˕v^۬a x".8.q0.qEM\ Gr.O;NPqO,zs<7y*zMr-O%]63Wj}&@^@+xIoz;z5`\e@C\"8qTDmM5|O/'1z|\ W sComHz=-yџuIogdK>.}(z+P7MW2JQoegŰ"hƸ (Л@o.~]>.Ђqcq@|\}DCw*DIw7{GϿt uIwuGq羉-a@ {{CgP-2jcK=93$N?@wџxQf;x,x#5қެ !Y ĚyohҚw'6Yt8]-xW9|N|-h}k[,x KP"x( m$ExFgݮ8('.݆6}^5IbE{Fչ CgBLKZN9Nf29dɧ9F_wY'k:Ƴ擓ec>>߲KOt qqڟ=_mdg7.~lR6wm^i^ͽNm>m6gh $mmkNI{6Ksl 6) ?Ru6gvϥMk̳ {B>u6/R`lsjmhs6l><6r*2kܘ}T>0-ԩ6ǫg =ǫxOJP~Ӣlܟؿ8X~ xG$gx2g-'\[# B>5ϴ7I񳃄Y`ss;zeDO^>C}v9"g *?'쑬-` lZG8_ f}u61#iaEd7ݵb%-e,˂mL/VAѴp|&850+.M_%pwSmwPs%|w+y,ȼ +y@=WyouQ!ĹCRa,?rH!0pPP#(ӔOȼ/ iNHOʼouާ86ūQ]s8[:9Z1lM6ɧ͝gU6Cggs}n9LFu)qbgP,Q!q1NC{|9a%L9^~合H~ qฌvK)O|\; .#!.f{WI=gİ ; 9:iJe|:?>1bAXN' (ҔKyi$tr&E#!6Dȧ-W6w|29Ϳ`(q?$N tV3e Ql^&*i֤@Bp+ YtC? :Y)pbeJ3}JTT)K\8Gy8EUh9U (6($!?+VQlqIi 8Ql^,dM`uB ꄰV:q6[&!6V4x oZ| >2^ɯsg "u̗ۨ%pbj!%qw/w;_(6.dY#Sl;d-s,C*bA_e6yq؏}d]ǭR8GBJ㈿}d6)l~k(6G<~7('69' Xv+dqk}&?z7  77Mމ ywfG۸DaL^ (6?SHiyfwW9Tġ>2ܿ+pb=Bơ>2@a'Z(6>nfE-, BQnyKxMѿ˪sRG#=Oa3'Ql#du#7+CBX5PupUqEʱS8Idx r>@۔35|-|-rk5Z->(r.w1 s]NT=$-(N8ο'}2w>wcb>*a3ArމAQ[xq]Qe\ ๸{mk_0PD,H[+E] s>Lt=Lax=η? 5/@x zG6許Z +t-z=wihC }@Pd{qh~h|giQ^6v4\sI0HD6/}-yޢ~Lg!+l??0+_K9|{';54c~_64;7p +ʡCW^Ҫ;~^ؑE}h-vPy{B1xC=0prgC 8p r3!3mgwwU*w۹cPiwvn(pEz9sGLS1g޻;s݁7/;GtVbhMSy-1+i}\m Vʴi=w_wArVlxjy| 6hO~~].Ma84}t)06Ch} |977 }Ke2\KDYu^0moר՗7a9*o#ޤڸ9.&"Mw[μ̛pgnJ5fܽ9|;rM:ϛl~7筇+nH{Zw4"9xiRxVy7FpMm&j]Z{Mg,^hX4U`wY-AZ5 ??X-bva}4[HRV;,v1;]2k-T_ {._8]꠾SlBfl&-lw gAf ʧ+[L_Ib @eEG˱E]{7`O859lƀ X60606p6P6Pk X60Y,_i0 z @,z7/ٍƕ>PgXPX멐fcoPePXB-X#>bc W 8-qCn-~ukN/{ZǟV=^ ˸| r>ӧu\)lg\@½ugcgc:ΑtSx)k[[>xk_xx[[cSco[ookc_ooƀkx|So||gxxg|tc|to[|kct|totkgo|oooo||ktt|txtxk||||||xx|xx|txt|||t|||||x||||xx||||||||||x|||||x||tx|||||||x|txtxx|||||x||xxxt|||||t|||xx||||||xx|x||||x||||||xox||o|gc||tok||ttotxx|t|x|xx||o|x|||x|txx||x||xxxxx||||||xxx|x||||||||x||||||||||||||||||||||tx|x||txt||xx|x|xxxxxxx|||||xxxxx|||x||||||x|||toxxxxg|ox|ott|c|x|ox|tt||||||||xtt|||||||||||||||||x|||x|txxx|xx|||x||x||||||||||x|||||x|x||xx||||||||x|||||||||||||||||x||||||||||||||||||x||||||x||||||||||||x|x||xxx|x||||||||x|||x|||xx|||tx||||ot|o|x||xt||xtt|||||||||||||||xx||||xxtxx|||||||x|||txx|xxxxx|txxt||t|x||xx||||||xx|xxx|||xxx|xtx|t||||x|||||||||x|||||x|xt|xxxtx|x|x|xx||||||xxxx||xxxt|xx|xtx|t|xxt|x|x|txx||x|||xx||x|x||||||||x|x|||t|txx|xt|t|txx|t||xxx||x|x||xx|t|x||x||x|x||x|t||txttx|t||xt||x||||xxxx|xttx|t|txx|||x|t|x|||||x|||x|||x||txto|x|x||txx|||xx|xx|x||xox|tt||x|x||x|tt|||||x|x||x|x||x|tt||tot||x|t|x||||||x|||||xx||t||xx||x|xo||ttx||x||||x|x||x|||xxt|ox|xtxx|||txx|||tt||x|||o||t|t|xtxxx|||xxo||xt|x|xtkkkot|x|t||||x|||||x|||xx||x|x||x|||ttxxx|Nktg|gocxo|o|ttgt|xxxxt|t||x||x|txx|x||xx|||xt|||x|x|||||||tt|||||t|x|||||xt|t|x|x|tx||t||x||ox|ttxt|xtot|g|xt|||||xxx|||||xtxx||t|t|x|xx||||||||x|||t|||xt|||tx||x|ttttxt|x||||t|x|xo||tx||txxx||x|||t||||x|||xxxtt||||xt|x||xxxxxx|tt|o|gxt||tg|txx||tkkFokx_toc|tot||cxxoo|xxtxoo|kx|xktx||ot|txx|x|||x|txxkt|xtxxt|xtktt|t|xxxxxxx|xk||t||x||||x|xttot|xoto|oxxtoxx||xxx|t|x|txx|x||xxt|o|||kxxx||x|x|||t|||x|||xxkxttxxxxk||xtox|xx|xtt||t|txx|t||x||x|xtcߌƑct__|SWo|Nott[_t|gokx|tkxgtttcokkxxxxgc||||xxt|||x|x|xtxxx||||tt||x||||x||x|||||||||x|||xx||||x||||||||||x|||||||||||||||||xx|||||||||||||||||||||||||||||||||x||||||x|||||xx||||||||x|||||||||||||||||||||||||||||||x|||||x|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||x|||||xx|||||||x||||||||||||||||||||||||||xx|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||*whoosh.wav.WAV 20103RIFFWAVEfmt ++data~~~~~~~~~~~~~~~~~~~~~~~~~~~|||~~~~~zvtvxz|~zvrnlrv||vtrpptz~|xvtv|~~zxvvvz|~xrlhntzzvrrpprrx~|j[QU_|bICCYn[ICY~zlnh]_r|]SUSSjz|x__l~v_]drnUb|nfd_]d]5=rrnj]jz~lMldrx[[_f|YQfWK_xh[zx[CIjzxxdSQz|_fI9WӹM;QnvK;OUx~xj]]YS~ɵlM?plM;CGpٵ[)Kh|% %;xtKQS]ɖbGr|lSnvz~nfS[nëx;Az=+AYݻ|=/1r_ ?|潄W5/Czãf)/pvbMQr|O=OtjdhjlG?G_ɊK3לdQCMppW;1SŷAMz/#?bx͖SAM[hvhYp~~zrvt[]ptWOUtxxd]v~vvxzd_xzh_nrSQltbdp~_lrQ_l][tf]W]~hWfp|fWhnhbU[hzlSCWbYbnxpdhjvjM9Ot]GQ[dpp~hhhdpx~xh]Yntnrp]dlvjQMb|vdjpzxzztljr||_[r~~jb_j|z|xpp~~v]Wh||zx|x|zzndhpxr]Yfntzjl|z||~vppnrzphrxz|~|xtrjjtv~~vz|z||xrrv~xrprtz|||vzxvx|xtx~~~~~~~zxxxx|zxz~~~rrz~|xz~~|vtx|zxz|~~~||zx|||~~zz|zz~~~~|~~||~~||zz|~||z~~~~zxzz|~~~~|~~~|~||~~~~~~~~~~~~~|||~~~~~~~~~~~~~||~~||~||~~~~|||~~~~||||~~~~~~||||~~~~~~~~~~~|~~~~|zz~~~~~~~||||~~||~~~~~|||~~~~~|||~|~|~~~~|z|~~~~~~~|||~~~~~~~~||~~~~~~~~   XB W  +0'#S !5` W 1 CZ@  D I  "$)?).02468:<>LM* DF<O ,QRUJS TWN'[% )G"&(*,b$XZ,( ֳa*b$Xȗ4M39VMl*R$?ԈΩ'X5/)*R$} |aI`^*b$yh Rm-_"*b$iw¡Sr8U^pO*b$ ɾPڳ_hrB*R$F(< N *$*"$qu<;jG̖ X*"$f'$YQ: e*"$:,hu6R r*"$ ^s$ X~*"$D&٦-ң5\M i*"$=Q ٚQΘK* 0e0e    3f A@ A5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||S" ffff1f3@ffh ʚ;2ʚ;g4adad0ppp@ <4!d!d 0LT6<4dddd 0LT6 <4BdBd. 0Lg4VdVd0Jp@ pp? %O =G51Binary Translation Using Peephole Superoptimizers22,Sorav Bansal, Alex Aiken Stanford University"-3!Binary TranslationAllow one ISA to run on another Applications Portability (e.g., running legacy software) Virtualization Backward and Forward Compatibility On-chip binary translation Java Virtual Machines*--Binary Translation Binary Translation Wish-list Talk Outline Superoptimization Peephole Superoptimization Application to Binary Translation Implementation & Experimental Results Conclusion$ TSuperoptimizationpSuperoptimizer is a unique code generator that uses brute-force search to attempt to find the optimal code Eg. 6kH$^CSuperoptimization{Enumerate all sequences up to a certain length and Compare each enumerated sequence with target function for equivalence N0G o= Talk Outline Superoptimization Peephole Superoptimization Application to Binary Translation Implementation & Experimental Results Conclusion$ T Peephole Superoptimization& 3 BUse a superoptimizer to automatically infer peephole optimizations&C,1/Peephole Superoptimizer Step 1   !Peephole Superoptimization Step 2""  KEquivalence Test  !Peephole Superoptimization Step 3""$    Talk Outline }Superoptimization Peephole Superoptimizers Application to Binary Translation Implementation & Experimental Results Conclusion~~$ T$!Application to Binary Translation""2Our approach: Use lots of peephole transformations 3"Peephole Binary TranslationRegister Map SelectionThe best code may require changing the register map from one code point to another The choice of register maps affects the choice of instruction selection and vice-versa*SWFRegister Map Selection ERegister Map Selection H  IRegister Map SelectionUse Dynamic Programming near-optimal solution account for translations spanning multiple instructions simultaneously perform instruction-selection and register-mapping*3( Talk Outline }Superoptimization Peephole Superoptimizers Application to Binary Translation Implementation & Experimental Results Conclusion~~$ T4)PPowerpc X86 Translator Implementation*) "Superoptimizer Use a PPC emulator (Qemu) for execution test Use a SAT solver (zChaff) for boolean test Static user-level translator ELF 32-bit ppc/Linux binary ELF 32-bit x86/Linux binary Translate most (but not all) system callszXdX*Z'.V5*ImplementationMany Issues Condition Codes, Endianness, System Calls, Stack and Heap, Indirect Jumps, Function Calls and Returns, Register Name Constraints, Untranslated Opcodes, Compiler Optimizations4 ZZ , f6+Experimental Results.Setup Pentium4 3.0 GHz, 1MB Cache, 4GB Memory gcc 4.0.1, glibc 2.3.6 Use soft-float library Statically-linked input executables Benchmarks Microbenchmarks, SPEC CINT2000 Metrics Compare against natively-compiled code Compare against other binary translators Qemu, Apple s RosettaZzZ ZZZPZZz P  P.Lhp5Experimental SetupFor our experiments there are around 750 translation rules in the peephole table the translation table is computed offline and it can take up to a week to compute the peephole rules*7,Experimental Results: Setup @.Microbenchmarks 8-Microbenchmarks D/%Experimental Results: Microbenchmarks&&"We sometimes outperform native performance on these small benchmarks! gcc generates better code for powerpc primarily because it has the luxury of many registers Our register-mapping algorithm performs an efficient  re-allocation of the PowerPC registers to x86 registers..FZZF,FH0$Experimental Results: SPEC CINT2000 %% S1!Comparisons with Qemu and Rosetta"" 2Qemu Use same PowerPC and x86 executables as used for our own translator Rosetta Runs on Mac OS X and hence supports on Mac executables Recompiled the benchmarks on Mac using the same compiler version (gcc 4.0.1) Mac Hardware: Intel Core 2 Duo 1.83GHz processor, 32KB L1-cache, 2MB L2-cache and 2GB memorydZEZZZE$dT2!Comparisons with Qemu and Rosetta"" q6Translation Time(Takes 2-6 minutes to translate a 650KB executable (around 100K instructions) majority of time spent in optimal register map computation It is possible to reduce this to <10 seconds For 98K instructions (<0.01% of time), use any register map. Fast (<1second) For other 2K, use optimal computationxM;.sM;.+Er7Conclusions and Future WorkA scheme to perform efficient binary translation using a superoptimizer Competitive performance Simplified Design Other applications Just-in-time compilation Machine virtualization\HZ+ZZ0ZH+09ns8Q&A Thank you. < Backup Slides :&Experimental Results: Variants of peep''No-reorder (aka do not  de-optimize ) Do not reorder instructions inside basic block (recall compiler optimizations) With-profile Profile executables in a separate offline phase. Use this data to determine predecessor weights during register mapping\&P x&P x ;!Comparisons with Variants of peep"">  @ Our Approach +Use only peephole rules to translate E.g.,4&ZZ++BSuperoptimizationrCode generator that attempts to generate the optimal code to compute a given function Use brute force search Eg. TV-"nA Superoptimization: Previous Work!!H. Massalin, 1987 Motorola 68020 Reached sequences lengths 12 (very specialized) GNU Superoptimizer (GSO), 1992 Portable and efficient Used for eliminating branches Reached sequence lengths of 4 Denali, HP Labs, 2002 Goal-Directed Superoptimization using Theorem ProversZ?ZZSZZ6Z?S6  PJDBinary TranslationiUse pattern-matching rules to translate code from one architecture to another Simple Efficient Portable >iO1/  %R U a u wxy{|}~#$%&'()*+,-./0123456789:;P ` ` ̙33` 333MMM` ff3333f` f` f` 3>?" dd@,|?" dd@   " @ ` n?" dd@   @@``PR    @ ` ` p>> 0 (    6x P  T Click to edit Master title style! !  0z   RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  0 ``  X*  0 `   Z*  0܉ `   Z*B  s *޽h ? ̙33 Default Design 0 @(2(  ( ( 0M P    Z*  ( 0$R     \* d ( c $ ?   ( 0\U  @  RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S ( 6Y `P   Z*  ( 6pZ `   \* H ( 0޽h ? ̙33   $(  r  S T`0  r  S  `    B  s *޽h ? ̙33  P$(  r  S (P   r  S   H  0޽h ? ̙33  pA P(   `l  @`  = @` ,$D 0 :  0f@  \ Hypervisor  4  < @`  @ x86 hardware    5  68̙ @ :x86 OS  6  6@ @ ;x86 app  7  6  ;x86 app  8  6@  EBinary Translator  9  6,ff   Y powerpc app    <  0,̙  X powerpc OS    A TD ,?",$D  0 @    S ,P<$D 0  , l ` x ? @0 ,$D 0 ,  <,`  @ x86 hardware    -  6,̙` 0 8 OS  .  6,xH ;x86 app  /  6<,xH ;x86 app  0  60,` 0 EBinary Translator  1  6|,ff 00 Y powerpc app    @ T#,?",$D 0 @  l P 0  > @0 ,$D  0   <%,P 0  @ x86 hardware      6),̙p P  6OS    6-,  p ;x86 app  #  640,P  p ;x86 app  $  6 4, p EBinary Translator  '  67,ff0P Y powerpc app   H  0޽h ? ̙33   D < V (  r  S F,P  ,  T B@C DE0F: p   @P @``,$D  0l `  Jp0 } ,$D 0 ) C AzC:\Documents and Settings\Sorav Bansal\Desktop\tmp\clock.gif I 0I,@`  C Performance 2  l p m  L m ,$D 0 ; C A|C:\Documents and Settings\Sorav Bansal\Desktop\tmp\jigsaw.gif ` K < N,p @m  ^Large Complex ISAs  !l @  NP t ,$D 0 D C AC:\Documents and Settings\Sorav Bansal\Desktop\tmp\screwdriver.jpg pP  M <\Q,@P  [Retargetability l   P ,$D 0 E C AC:\Documents and Settings\Sorav Bansal\Desktop\tmp\windows-logo_microsoft.jpg   F C AC:\Documents and Settings\Sorav Bansal\Desktop\tmp\linux_logo.GIF` *  G C AC:\Documents and Settings\Sorav Bansal\Desktop\tmp\mac_logo.bmp   O < V, P ` BOS Compatibility H  0޽h ? ̙33  zr  (     H?"0,$D 0  S hd,P<$D 0  , r  S $e, , H  0޽h ? ̙33  4, $(  $r $ S ${,P  , r $ S {, , ^   $ #"   $ H,3f ?"   ^On Motorola 68020: add.l d0, d0 subx.l d1, d1 negx.l d0 addx.l d1, d1&_N>+   @` $ H,3f ?"  ,int signum(int x) { if (x > 0) return 1; if (x < 0) return  1; else return 0; }\\$ N @`B $ No ?"  B $ No ?"B  $ No ?" B  $ H1 ?"  B  $ No ?" H $ 0޽h ? ̙33 5 8$(  8r 8 S ,P  , r 8 S , , H 8 0޽h ? ̙33 0 ZR(    H?"`,$D 0x  c $h,P  , x  c $$, , H  0޽h ? ̙33z   04(  4r 4 S ,P  , r 4 S l, ,  l  ` 4 #"`  4 Hd,3f ?" ` L&  @` 4 H@,3f ?"  L&  @` 4 HT,3f ?" `  shl reg. @` 4 H,3f ?"   mul $2, reg$ $ @`   4 HPY,3f ?" `  inc reg$ @`  4 Hl,3f ?"   add $1, reg.  @`B  4 No ?" ` B  4 H1 ?" ` B  4 H1 ?" ` B 4 No ?"`B 4 No ?" B 4 H1 ?" B 4 No ?"` ` 4 N$A3f ?"  UTable of Peephole Optimizations  : 4 NA3f ?"  V[S. Bansal, A. Aiken. Automatic Generation of Peephole Superoptimizers, ASPLOS 2006]WW7 4 N$ A3f ?" =pattern 4 N$ A3f ?"  B replace-with  H 4 0޽h ? ̙33:  P*<b(  <r < S (AP  A 8 P  #<pP @ 0P   <0P z < <3f?" z < <3f?"@  < Bp,A3f?"p@0P  @    < N,3f ?"0p4j ;a.out  < Bx/A3f ?"pd  01000100101111010001110110101110101010001010101000101010001000101010100101010010101010100101000010101111110110010101010110111101001010100101010010101001010100111001111101001000110111101101110101000100110101010101010101010101010101010101010011010010010101010101010101010100001111110101011110101000111101010101110111011011101110111011101010011011001010101101101& ii < C AC:\Documents and Settings\Sorav Bansal\Desktop\tmp\magnifying_glass.png@;   < B5A3f ?"  >01100101   j  `  (< #""ppp  < H,f?"    J&  @`x < HdAAf?"   ,movl (%eax), %ecx inc %ecx movl %ecx, (%eax)--l @`) < HJAf?"   sub $123, %eax add $456, %eax,   @`W < HLAf?" ` mov %eax, %ecx mov %ecx, %eaxZ @`B < Tffo ?" ``B < Nff1 ?" B < Nff1 ?"  B < Nff1 ?"   B < Tffo ?"  B < Tffo ?" ` B < Tffo ?"` B %< TD?"pp` 1 )< BUA3f ?"p` ]Harvest instruction sequences that can potentially be optimized. Canonicalize and store them.^^A  *< N\ZA3f ?" @ DTarget SequencesH < 0޽h ? ̙33X  p /H(  Hr H S (mAP  A  p  `  H #""  H H tAf?"    J&  @`x H HLAf?"   ,movl (%eax), %ecx inc %ecx movl %ecx, (%eax)--l @`) H HAf?"   sub $123, %eax add $456, %eax,   @`W H HAf?" ` mov %eax, %ecx mov %ecx, %eaxZ @`B H Tffo ?" ``B H Nff1 ?" B H Nff1 ?"  B H Nff1 ?"   B H Tffo ?"  B H Tffo ?" ` B H Tffo ?"`  H NA3f ?" 9+@ DTarget Sequences H c A|C:\Documents and Settings\Sorav Bansal\Desktop\tmp\muscle.jpg@@ j   *H #""  H HAff?"   J&  @`  H HhAff?"G   w inc (%eax)    @` !H H8Aff?"G  zadd $333, %eax  @`$ "H HAff?" mov %eax, %ecx6 @`B #H Tffo ?"B $H Nff1 ?"B %H Nff1 ?"G G B &H Nff1 ?"  B 'H Tffo ?"  B (H Tffo ?" B )H Tffo ?"  +H NXA3f ?"   LBrute force Optimization ,H BA3f ?"  GOptimized SequencesB -H TD?"` @` B .H TD?"` @` H H 0޽h ? ̙33s  ;   t (  tx t c $AP  A ~ t H3f ?" 0`  t N8A3f ?"P   FExecution Test~ t H3f ?"     t NA3f ?"P8   D Boolean Test   t NPA3f ?" E Two sequencesB t TD?"@` @B t TD?" 000  t NA3f ?"P` $ <pass t NDA3f ?" 0n  <failB t TD?" @@0  t NA3f ?" @~  <fail t NtA3f ?"` P}G  Fnot-equivalent t N111 [ NPE3f ?" P   r1eax> ] NԯE3f ?"   r1eax>> ^ N\E3f ?" z r1eax; r2ecx> ,H  0޽h ? ̙33l  )4(  r  S 8EP  E  j i 1 #""i  HEf?" i J&  @`G  HEf?"g   1ldl r2, (r1) addi r2, r2, 1 stl r2, (r1)226    @`,  HEf?"g  (lis r1, 0x12 ori r1, r1, 0x3456))$   @`  HEf?" mr r1, r2 mr r2, r1$ @`B  Tffo ?"B   Nff1 ?"B   Nff1 ?"g g B   Nff1 ?"  B   Tffo ?"iiB   Tffo ?"iB  Tffo ?"ip p pP   #""Tp  HPEff?"p pP  J&  @`  HFff?"p D p  w inc (%eax)    @`  HhFff?"p pD  mov $0x123456, Mr1&  @`$  HFff?"p p mov %eax, %ecx6 @`B  Tffo ?"p pB  Nff1 ?"p pB  Nff1 ?"p D pD B  Nff1 ?"p p B  Tffo ?"p P pP B  Tffo ?"p p P B  Tffo ?"ppP . j i 4 #""i  HH#F?" i J&  @`@  H,F?"g   $r1 eax r2 ecx (, @`  H6F?"g  r1 Mr1F   @`J  HAF?" "r1 eax r2 ecx4, @`B   Tffo ?"B ! Nff1 ?"B " Nff1 ?"g g B # Nff1 ?"  B $ Tffo ?"iiB % Tffo ?"iB & Tffo ?"i * NLDF3f ?"@ jsource arch. (ppc) + NIF3f ?"pX  B register map   , NKF3f ?"e Mdestination arch. (x86)H  0޽h ? ̙33  0l$(  lr l S xaFP  F r l S 4bF F H l 0޽h ? ̙33J 7 PLf(  Lr L S yF`  F V L NzF3f ?"p  Dli r1, 123 addi r2, r2, 1 subf r2, r1, r2 ori r1, r1, 31EEH     L N,8F3f ?" o cpowerpc sequence:  L NF3f ?"@e- 7? L NdF3f ?"p W E x86 sequence:Tl    L  ,$D  0  L NF3f ?" p ,$D 0 2Instruction costs If accesses memory, 10 Else, 1 Switching Costs RM or MR : 10rS   L NF3f ?" z  B Cost Model  B  L ZD?"  B L ZD?"  B L ZD?"B L ZD?"zzB L ZD?"0 0  L T\F3f ?"w :P0 L TF3f ?"P7 :P1 L T(F3f ?" :P2 L TF3f ?"  :P3 L TF3f ?"` lG  <exit:l @ `  L`@  ,$D  0\ L NF3f ?"@ `G 2At entry: r1Mr1 ; r2Mr2z Z L N0F3f ?" 0   0At exit: r1Mr1 ; r2Mr2z  L NԷF3f ?"0u w,$D 0 ?ExampleH L 0޽h ? ̙33C 8 kCcCpGZHB(  Hr H S F`  F   H NF3f ?"0 ,$D 0 `li r1, 123 B H ND?" H@ ,$D 0B H ND?"@P@@B H ND?"` P@` B  H ND?"P@p  H T8F3f ?"1 ,$D 0 &r1 Mr1 ; r2 Mr2h   H NpF3f ?"P2,$D 0 =entry H NF3f ?"   `addi r2,r2,1 H T\F3f ?"p,5W  tsubf r2,r1,r20  H T$F3f ?" 81w  vori r1,r1,310 B H ND?" P@  l 5 PH5,$D 0 H NF3f ?"0s movl $123, Mr1B  /@ 5  KH5 <  H TF3f ?"50 ,$D 0 nr1 Mr1B @   ` FH  `v@ P  ` $H  ` "H  00e0e    B`CDEF3f A@  5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||0 `@```0@  S"  `B #HB ZD?"P ` ` .H NF3f ?"   90 2H NF3f ?"0 :10 l `7 QH`7,$D 0 H NF3f ?"P7  incl Mr2B C@ ` 7 LH` 7<  H TH3f ?"P 7,$D 0 nr2 Mr2B @  `  GH ` N P  ` %H    &H  60e0e    B`CDEF3f @  5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||0 `@```0@  S"  `B 'HB ZD?"P ` ` /H NH3f ?" ` G 90 3H NH H3f ?"P7 :10 l W  RHW ,$D 0. H N H3f ?"pW  subl Mr1, eaxD$N@  W  MH W R H T|H3f ?"p W  &r1 Mr1 ; r2 eaxT @    HH  N P  ` (H    )H  60e0e    B`CDEF3f @  5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||0 `@```0@  S"  `B *HB ZD?"P ` ` 0H BLH3f ?"  g :10 4H NH3f ?"pW  :10 :H NH3f ?"   <exitl t  SHt ,$D 0  H N|#H3f ?" w  vorl $31, Mr12   5H N,(H3f ?" w  :10 @ t   OHt   H T+H3f ?"t ) w  ^r1 Mr12 @    IH  N P  ` +H  0  ,H  60e0e    B`CDEF3f @  5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||0 `@```0@  S"  `B -HB ZD?"P ` ` 1H Nh1H3f ?"   90@    JH  N P  ` ;H  P   B6BDFTA(  T  T N4lH3f ?"0 ,$D 0 `li r1, 123 B T ND?" H@ ,$D 0B T ND?"@P@@B T ND?"` P@` B T ND?"P@p T TLvH3f ?"1 ,$D 0 &r1 Mr1 ; r2 Mr2h   T N|H3f ?"P2,$D 0 =entry  T NH3f ?"   `addi r2,r2,1  T TH3f ?"p,5W  tsubf r2,r1,r20   T TH3f ?" 81w  vori r1,r1,310 B  T ND?" P@  ,T NH3f ?"  ,$D 0 <exit;3l g FTg,$D 0  * T *,$D 0 T N`H3f ?"0~ movl $123, eax0$N *  T * ^ T TܗH3f ?"*0 ,$D 0 r1 eaxB N   ` T   `N P  ` T   ` T  60e0e    B`CDEF3f @  5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||0 `@```0@  S"  `B TB ZD?"P ` ` T NH3f ?"   :10 T N`H3f ?"0 91   `7 T  `7,$D 0 T N@H3f ?"P7  incl ecxB  N  ` 7 T  ` 7^ T TPH3f ?" P 7,$D 0 r2 ecxB N  `  T  ` N P  ` T    T  60e0e    B`CDEF3f @  5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||0 `@```0@  S"  `B TB ZD?"P ` `  T N|H3f ?" ` G :10 !T NH3f ?"P7 91  W  "T W ,$D 0 #T NlH3f ?"pW  tsubl eax, ecx$ {N  W  $T  W d %T TH3f ?"p W  &r1 eax ; r2 ecxT ,N    &T   N P  ` 'T    (T  60e0e    B`CDEF3f @  5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||0 `@```0@  S"  `B )TB ZD?"P ` ` *T BH3f ?"  g 90 +T NPH3f ?"pW  91 i  -T i ,$D 0 .T NTH3f ?" w  orl $31, eax2$ /T NH3f ?" w  91 N i  0T i  1T TpH3f ?"i 4 w  r1 eax2 N    2T   N P  ` 3T  0  4T  60e0e    B`CDEF3f @  5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||0 `@```0@  S"  `B 5TB ZD?"P ` ` 6T NH3f ?"   90N    7T   N P  ` 8T  P   9T  60e0e    B`CDEF3f @  5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||0 `@```0@  S"  `B :TB ZD?"P ` ` ;T NH3f ?"   :20  0 g T NH3f ?" 0   A Total 40  B ?T TD?"p   @T NH3f ?" Ig GGrand Total 44fD AT TH3f ?" ^ g  &r1 Mr1 ; r2 Mr2h  BT NH3f ?"0 }*~ 2Switching Costs RM or MR : 10 Instruction costs If accesses memory, 10 Else, 1rS CT 6I ` jRegister Map Selection,  DT NI3f ?"CG,$D 0 JOptimal SolutionH T 0޽h ? ̙33 : X$(  Xr X S IP  I r X S `I`  I H X 0޽h ? ̙33 # ZR(    H?"0  ,$D 0x  c $hIP  I x  c $( I I H  0޽h ? ̙33 $ $(  r  S +IP  I r  S +I I H  0޽h ? ̙33q  %     (    S HIP<$D 0  I B  TD?" @P ,$D 0zl Pp0` pP0`,$D  0  H?"` p `,$D 0<  0DQI P 0`,$D 0 Endianness: ppc big-endian ; x86 little-endian Convert all memory writes to big-endian (source) Convert all memory reads to little-endian (dest) V00Zb0 Z0 Z &c~ ",l p   p ,$D  0   H?"P  ,$D 0@ p0  p0   H?"` p `,$D 0  H?" ,$D 0   0dbI  0,$D 0 KCompiler Optimizations Problem:PowerPC optimizer staggers data-dependent instructions to reduce pipeline stalls Solution: Cluster data-dependent instructions in basic block before translationZ0Z0 ZRHr  S eIP  I H  0޽h ? ̙33 & 0$(  r  S t|IP  I r  S 0}I I H  0޽h ? ̙33 ' PD$(  Dr D S IP  I r D S ğI I H D 0޽h ? ̙33"  (   pJ (  r  S IP  I   N(I?"  @C source    NL@?"  JPowerPC executable  NI?"p  Fx86 executableB  @ TD?"p0 B   TD?"`    N$I3f ?"` {gcc -arch=ppc$   NI3f ?". igcc -arch=x86B  TD?"0 ppP   N I3f ?"@  :  SPeephole Binary TranslationB  ND?" ppp   NI?" ` Fx86 executableB  ZD?" @   NI3f ?"0 p a*  ACompareB  ZD?" P ` H  0޽h ? ̙33& ) %B N(   r   S @I`  I  P` B  #":. P 4  HI3f ?"0 Quicksort on 64-bit integers  @` 2  HV3f ?"@@' <peepl 0 N  , 0N ,$D 02 , N3f jJ?"0 ` ,$D 02 , N3f jJ?"  ,$D 02 , N3f jJ?" N ,$D 02 , N3f jJ?"  ,$D 0H , 0޽h ? ̙33 - PH$(  Hr H S \JV`  V r H S RV  V H H 0޽h ? ̙33 . pL$(  Lr L S aVP  V r L S bV V H L 0޽h ? ̙33/ T(  Tr T S sVp V H T 0޽h ? ̙33 (  r  S p  H  0޽h ? ̙33  0(  x  c $XP   x  c $蒖@  H  0޽h ? ̙33  ,  z  (  x  c $ȓVP  V l  0A ??    NV3f ?" 9-O0  NlV3f ?" 9-O2  N̞V3f ?"L  m7No-reorder: 0% slower With-profile: 0.56% faster88l  0A ??@    NV?"p0 B ~   H3f?"~   H3f?" P ~   H?"0    N3f ?"peW B no-reorder     NV3f ?"pP W D with-profile    BtV3f ?"p` W ?default  NV3f ?"L 0 n8No-reorder: 6.9% slower With-profile: 1.4 % faster99H  0޽h ? ̙33 1 3+ (   F @   @    NV3f?"p@ @Hardware  $   NV3f?"@p@ @Software  $   TVGj@HY?"0 E Intel Pentium   TlVGVHr?"0 ?PowerPC   N$V3f ?" `,$D 0 SWe need a binary translator,r   S  VP  V H   0޽h ?/    ̙33  2 v n   (   x   c $VP  V x   c $0 0(  0x 0 c $x5\P  \ x 0 c $46\ \ d   0 #"   0 HV3f ?"   ^On Motorola 68020: add.l d0, d0 subx.l d1, d1 negx.l d0 addx.l d1, d1&_N>+   @` 0 HB\3f ?"  ,int signum(int x) { if (x > 0) return 1; if (x < 0) return  1; else return 0; }\\$ N @`B 0 No ?"  B 0 No ?"B  0 No ?" B  0 H1 ?"  B  0 No ?" H 0 0޽h ? ̙33 3 P(0(  (x ( c $U\P  \ x ( c $$^\ \ H ( 0޽h ? ̙33 6 p@0(  @x @ c $h\P  \ x @ c $@i\ \ H @ 0޽h ? ̙33> 0 ,(  ,X , C (   , , S ,( @  , Superoptimization is a term that was coined by Henry Massalin in 1987. A superoptimizer is a unique code generator that uses brute-force search to attempt to find the optimal code, where optimality is defined with respect to a cost function on the instructions. Massalin called it  super optimization, to emphasize that this technique is actually attempting to find the optimal code and not just improved code. An interesting fact about a superoptimizer is that it often suggests surprising code sequences to compute a function. This slide shows an interesting way of computing the signum function on a Motorola processor.$o] l$  #H , 0޽h ? ̙33 0 ^V@8(  8X 8 C (   AV 8 S xA( @  A A peephole superoptimizer is a system that uses a superoptimizer to automatically infer peephole optimizations. A peephole optimization is a pattern-matching transformation rule designed to optimize code. It states that if you see a pattern X in the code, you can safely replace it with a faster sequence Y. In the next four slides, I will explain, how a peephole superoptimizer works at a very high level.> +H 8 0޽h ? ̙33 0 D<(  ^ S    E6 c $E @  E 2Our idea is to use lots of pattern-matching rules to perform binary translation. We call these pattern-matching rules, peephole transformations. A peephole transformation states that if we see pattern X in a source-architecture instruction stream, then it is possible to translate it to sequence Y on the destination architecture. But wait-a-minute. This does not look correct. How do we know, which registers on the destination architecture hold the emulated register values on the source architecture. We need a middle column called register-maps to specify how registers should be mapped from source to destination for this translation to be valid. As you see in this picture, the first rule states that addi r1,r1,1 on powerpc can be translated to increment-eax on x86 if register r1 is mapped to x86 register eax.$3+P 0H  0޽h ? ̙330 0 sk(  X  C (   Sk  S V( @  S uWe were able to translate 7 of the 12 SPEC benchmarks successfully. The bars show performance for unoptimized O0 and optimized O2 executables. The O2 bar for vortex is missing because of a failed translation. Once again, the performance is shown relative to a natively-compiled executable. Our translator achieves a performance of 42-164% of the natively compiled executable. The median performance of the translator on these compute-intensive benchmarks is 67%. A very surprising result is the performance of the twolf benchmark where the performance of our translator is significantly better than the performance of natively compiled code. On further investigation, we found that twolf, when compiled with -msoft-float flag spends a significant fraction of time in the floating point emulation library (which is part of glibc). The x86 floating point emulation library functions contain a redundant function call to determine the current instruction pointer, while the PowerPC floating point emulation code contains no such call. This is the default glibc behavior and we have not found a way to change it. Coupled with the optimizations produced by our translator, this extra overhead in natively compiled x86 code leads to better overall performance for translated code. We do not see this effect in all our other benchmarks as they spend almost no (<0.01%) of time in floating point emulationtb lTH  0޽h ? ̙3361 0  $(  $X $ C (   V $ S V( @  V In the next few slides, I compare the performance of our translator to Qemu and Rosetta. In our comparisons with Qemu, we use exactly the same PowerPC and x86 executables as used for our own translator to minimize any bias. For Rosetta, we could not do so, because Rosetta runs on Mac OSX and hence supports only Mac executables. We recompiled the benchmarks on Mac using the same compiler version as that used for our Linux experiments. Our benchmarks spend very little time in the kernel, and hence we do not expect any bias in results due to differences in the two operating systems. The differences in hardware could cause some bias in the performance comparisons of the two translators. While, it is hard to predict the direction and magnitude of the bias, we expect it to be insignificant. Both Qemu and Rosetta are dynamic translators, while our translator is a static translator. Hence, running times for Qemu and Rosetta include the translation overhead. I will soon discuss the translation overhead of our translator.PG%knH $ 0޽h ? ̙332 0 \T@0(  0X 0 C (   VT 0 S CV( @  V LThis slide shows the comparisons in two separate charts. The chart on the left shows comparisons on unoptimized O0 executables, and the chart on the right shows comparisons on optimized O2 executables. Again, the performance is shown relative to a natively compiled executable. The green bars are for qemu, the blue bars are for rosetta, and the orange bars are for our own translator peep. Rosetta fails on one of these benchmarks, namely twolf which is probably a bug in their translator. For gap, we were unable to obtain rosetta numbers because the compilation of this benchmark failedon Mac OS. Our translator performs 1.3-4x times better than Qemu overall. Comparing with Rosetta, our translator performs 12% better on the executables compiled with  O2 and 3% better on executables compiled with  O0.d hO29H 0 0޽h ? ̙33 0 0\(  \X \ C (    \ S j( @   Hello everyone.. I will talk about binary translation using peephole superoptimizers. This is joint work with Alex Aiken at Stanford University. Before I begin my talk, I must warn you that this is really a compilers paper. We decided to submit to OSDI because of it s history of having published papers on binary translation, and we were pleased to see it get accepted.EH \ 0޽h ? ̙33  0   `d& (  dX d C (     d S @( @   ( In this talk, I am talking about translation between two different instruction set architectures, that is, we allow on ISA to run on another. The most important application of binary translation perhaps, is portability  such as the ability to run legacy software on current hardware. A popular example of this is Apple s Rosetta which is a binary translator that enabled Apple to continue to run their PowerPC applications on their new x86-based computers. Binary translation is also used for machine virtualization. All virtualization engines use a binary translator to efficiently abstract the hardware interface. Binary translation also allows backward and forward compatibility between generations of the same ISA such as the Intel line of chips. On-chip binary translation has been used to optimize hardware. An example of this is Transmeta Crusoe And finally, binary translation is used in software virtual machines such as Java for efficient execution of bytecode. In summary, binary translation is an important tool with a variety of applications. A binary translator could be present in different layers of the software stack.,E tH d 0޽h ? ̙33[ 0 h(  hX h C (   , h S >,( @  , SFor an OS virtualization engine, the binary translator is present in the hypervisor below the guest OS. For an application virtualization engine, the translator could be a part of the OS such as Apple Rosetta. Alternatively, the binary translator itself could be run as a userland application which translates another userland application.>I  %H h 0޽h ? ̙33 0 g_l(  lX l C (   ,_ l S H],( @  , There are four main difficulties in constructing a good binary translator. A. Some performance is normally lost in translation. A good binary translator needs to minimize this performance loss. B. It is hard to write optimization engines to handle large and complex instruction sets like x86. C. It is hard to re-target a binary translator to a new set of architectures. Often, that involves writing the translator all over again. And finally, if the binary translator is a userlevel binary translator, then it needs to ensure compatibility across operating system interfaces on the two platforms. In this talk, I will present a method of code-generation that is well suited to solve the first three issues. H l 0޽h ? ̙33 0 pht(  tX t C (   ,h t S p,( @  , Here is an outline of my talk. The technique that enables us to do this effectively is Peephole Superoptimization. I will start with a discussion on superoptimization, and then discuss peephole superoptimization. I will then discuss the application of this technique to binary translation and the issues involved there. And finally I will discuss our implementation and experimental result before concluding. >`$H t 0޽h ? ̙33 0 [S`x(  xX x C (   AS x S cA( @  A A peephole superoptimizer works in three steps. It first harvests instruction sequences from existing executables. All sequences that can potentially be optimized are harvested. The executables are chosen from many different application domains. It canonicalizes the harvested sequences to eliminate duplicates and stores them as a table of target sequences. These instruction sequences are the ones, we seek to optimize., H x 0޽h ? ̙33   0 |Y(  |X | C (   A | S A( @  A [%A brute-force optimizer, also known as the superoptimizer, is then used to find equivalent and cheaper sequences for the set of target sequences harvested in Step 1. I will discuss the internals of the brute-force optimizer in more detail, a little later. At a high level, the brute force optimizer takes a target sequence and exhaustively searches the space of instruction sequences for an equivalent, but more efficient sequence. In this figure, I show the optimized sequences on the right which are equivalent to the target sequences on the left.*H | 0޽h ? ̙33  0 nf(  X  C (   Ef  S `_E( @  E And finally, the target and optimized sequences are combined to generate pattern-matching optimizations, or peephole optimizations. This table of peephole optimizations can then be used to optimize binary-level code any number of times.H  0޽h ? ̙33>  0 (  X  C (   E  S lE( @  E ZNext, I will talk about the application of peephole superoptimizers to binary translation.4H  0޽h ? ̙33' 0  w(  X  C (   F  S  ^F( @  F yeThis slide gives some examples of peephole transformations that can be used to translate code from PowerPC ISA to Intel x86 ISA. The middle column shows the register map that needs to be used for it to be valid to apply that rule. Notice that while we call it a register map, it is really a map between registers and memory locations in the source architecture to registers and memory locations on the destination architecture. For example, if there are more registers in the source architecture than the destination architecture, we would like to spill some of the source registers to memory. In this case, we use a special memory address to store a particular register. As I show in the second peephole rule, the PowerPC register is spilled to memory location M-sub-r1. It is important to chose the best possible register map to obtain a good quality of translation.H  0޽h ? ̙33I 0  @(  X  C (   F  S tF( @  F At this point, I will make two observations about the problem of selecting the best register map. In different code regions of the executable, different registers may be used more often than others. Because the register mapping algorithm needs to account for these differences, the best code may require changing the register map from one code point to another. And secondly, the choice of register maps directly influences the choice of instruction selection and the selection of instructions influences the choice of register maps at successive code points. Hence, the problems of instruction selection and register mapping are inter-dependent.H  0޽h ? ̙33( 0 S(  X  C (   I  S &I( @  I UANext, I will discuss our implementation, experiments and results.H  0޽h ? ̙33J) 0  (  X  C (   I  S @I( @  I 0We have developed a PowerPC to x86 binary translator using the peephole-transformation based approach. We use a superoptimizer, much in the same way that I described earlier. For the execution equivalence test, we use a PowerPC emulator, Qemu. And for the boolean equivalence test, we use zChaff as our SAT solver Our translator is a static user-level translator capable of converting a 32-bit PowerPC/Linux ELF binary to a 32-bit x86/Linux ELF binary. It was a deliberate decision to develop a static translator due to it s clean separation between translation time and run-time. We have translated most, but not all, system calls from PowerPC/Linux to x86/Linux.PppqH  0޽h ? ̙33F * 0    (  X  C (   I   S uI( @  I Implemenation Issues. There are many issues specific to a PowerPC->x86 translator implementation, and I am going to discuss all of them J. Well, not really. I will just highlight some of the most interesting ones. Endianness. PowerPC is a big-endian architecture, while x86 is a little-endian architecture. To translate correctly, we must ensure that the layout of memory is exactly as a PowerPC program would expect. On the other hand, we would like to keep the registers in little-endianness to perform arithmetic operations efficiently. Hence, we convert all memory reads to little-endianness before storing them in registers, and all memory-writes to big-endianness. Comiler Optimizations. This is an interesting observation we made during our experiments. On RISC architectures like PowerPC, the compiler separates data-dependent instructions to minimize data stalls. This leads to fewer optimizations by our peephole optimizer because it leads to a longer effective peephole window. To counter this effect, we  de-optimize a basic block by bring back together data-dependent instructions before translating it.$a $ [ ? H  0޽h ? ̙33V+ 0 @(  X  C (   I  S I( @  I NI will move on to our experimental results. Here is the setup of our experiments. Because our translator does not handle floating point instructions, we used the glibc soft-float library to emulate floating point instructions. This makes no difference in all but one of our benchmarks. In our benchmarks, we first study a set of compute-intensive microbenchmarks and then apply the translator to larger SPEC integer benchmarks. We make our comparisons to a natively-compiled executable of the benchmark. We also compare ourselves to other available binary translators like Qemu and Rosetta.> H  0޽h ? ̙33 5 0 `p(  X  C (   I  S I( @  I r^In our experiments, we use a peephole size of at most 2 PowerPC instructions. During enumeration, we are able to enumerate all length-3 x86 sequences which are means billions of sequences. For our experiments, there are around 750 translation rules in our peephole table. The computation of the peephole table can take up to a week of processor time.H  0޽h ? ̙33, 0 |(  X  C (   I|  S I( @  I Here is a picture of our evaluation methodology when comparing translated executables with natively compiled executables. We compile the source code of the benchmark using gcc for both PowerPC and x86. On both branches, we use exactly the same optimization options. We then translate the PowerPC executable using our binary translator to produce a translated x86 executable. The translated x86 executable is then compared with the natively compiled x86 executable for performance.1H  0޽h ? ̙33g. 0 '(  X  C (   S  S S( @  S Here is a list of microbenchmarks that we use for evaluation. These microbenchmarks are highly compute-intensive and are designed to stress-test the translator. Emptyloop is a for loop that just counts to a high number without doing anything. Fibo computes the first few fibonacci numbers We then use three different sorting algorithms and three different algorithms to solve the towers of hanoi problem. The next microbenchmark traverses a linked-list data structure. And our last benchmark performs a binary search on a sorted array."M I mkH  0޽h ? ̙33- 0 IA(  X  C (   SA  S S( @  S A Here is a performance plot on these microbenchmarks. The Y-axis shows performance relative to natively compiled benchmark with 100% meaning that the translated executable shows same performance as a natively compiled one. We plot three different bars, one each for the optimization option used with gcc on both branches: O0, O2 and O2-with-omit-frame-pointer. I will talk about, why we need the last one in a moment. On average, we see around 90% of the native performance on these small benchmarks. What is most interesting is that for three of these benchmarks, the performance of the translated executable is greater than 100% of the natively compiled executable. It is especially surprising to see these improvements, when gcc has already optimized code using O2. When we performed these experiments, we found an anomalous result where translated fibo benchmark ran thrice as fast as a natively compiled executable on O2. We discovered that the anomaly was because gcc, on x86, uses one dedicated register to store the frame pointer by default. Because our translator has no such requirement, we avoid a memory spill in the inner loop of this benchmark. Hence, for a more equal comparison, we also compare with O2 and omit-frame-pointer options to gcc. Using a fairer comparison, our translator performs better by a much-more plausible 28%.~$yqZH  0޽h ? ̙33d/ 0 $(  X  C (   S  S S( @d  SLD___PPT9& bWe identified two reasons why the performance of the translated executable was better in some of these benchmarks. We found that gcc optimizer generates good code for PowerPC, perhaps because it has the luxury of using many registers. And because our register-map selection procedure uses dynamic programming to exhaustively search the space of all register maps, it proves to be a very good register  re-allocator . Next, we measure our translator on the SPEC Integer benchmarks<s/" ?" sn, CH  0޽h ? ̙33; 0 :(  ^ S    V c $V @  V 0For  O0 executables, the performance impact of re-ordering instructions is negligible. For  O2 executables, the re-ordering of instructions inside a basic block has a significant impact. The PowerPC optimizing compiler separates data-dependent instructions to minimize data stalls. To produce efficient code, it helps to  de-optimize the code by bringing data-dependent instructions back together.H  0޽h ? ̙336 0 `,(  X  C (   V  S T[V( @  V .This slide presents a summary of the translation time characteristics of our translator. It takes around 2-6 minutes to translate a typical statically-linked SPEC benchmark which has around 100 thousand instructions. The majority of this time is spent in optimal register map computation. In a dynamic translator, it is possible to dramatically decrease this translation overhead by noting that 98% of these instructions are executed less than 0.01% of the time in these benchmarks. Hence, if we choose an arbitrary register map for these rare code paths, it makes little difference to performance. Using this approach, we estimate the overhead of translating the entire executable to be less than 10 seconds in a dynamic setting. For a SPEC benchmark, this is less than 4% of the running time.H  0޽h ? ̙33+7 0 {(  X  C (   V  S ?( @  V }GIn conclusion, I present a scheme to perform efficient binary translation using a superoptimizer. This approach leads to a simplified design with competitive performance. In future, we are interested in exploring other applications of this code-generation technique, such as just-in-time compilation and machine virtualization.RH  0޽h ? ̙338 0 7(  X  C (   V  S V( @  V 9%It is time for questions and answers.H  0޽h ? ̙33= 0  n(  ^ S    , c $, @  , d.Now, I will discuss Peephole superoptimizationH  0޽h ? ̙33> 0 7(  ^ S    V c $ V @  V -Binary translation is used in a number of settings. In this talk, I am talking about translation between two completely different Instruction Set Architectures or ISAs. In other words, we are interested in efficiently emulating one ISA on another.QH  0޽h ? ̙33;@ 0  $(  $^ $S    \ $c $t\ @d  \LD___PPT9& -Our approach is to use only peephole rules to translate one instruction-set binary to another instruction set. A peephole rule is a pattern-matching rule which specifies that if you see a pattern X in the source-architecture instruction stream, replace it with pattern Y to produce code for the destination architecture. Here is an example of a peephole rule from an accumulator-based RISC instruction set to a CISC instruction set. The rule states that if a pattern is seen where a memory location is loaded into the accumulator, incremented and then written back to the same address, it can be replaced by a single increment instruction on the CISC architecture, provided the register r2 on RISC is mapped to register er3 on CISC. The main difficulties in following this approach are: Several such peephole rules are required. It is hard to decide, how to best map the state of one architecture to another. I will present ways to solve both these problems.<{" 2" H $ 0޽h ? ̙33 A 0   `, (  ,^ ,S    \ ,c $p\ @  \ <Three previous well-known papers have developed the superoptimization technique. Henry Massalin first proposed the idea and demonstrated highly optimized programs for small mathematical functions on Motorola 68020. Massalin s superoptimizer worked on very specialized instructions and was able to reach sequence lengths of up to 12 instructions. The GNU Superoptimizer in 1992, used this approach to eliminate branches in gcc-generated code. The GNU superoptimizer was written in C and was both portable and efficient. The GSO was able to reach sequence lengths of 4 instructions on some architectures. In 2002, HP labs published a system called Denali. Denali is a goal-directed superoptimizer and uses theorem provers to allow the superoptimizer to scale to longer length sequences. In almost all these efforts, the focus has been to use the superoptimizer to optimize certain performance critical functions or inner loops.4 wr5 `CH , 0޽h ? ̙33 B 0 @4h(  4^ 4S    \ 4c $O\ @  \ ^Superoptimization is a term that was coined by Henry Massalin in 1987 to describe code generators that attempt to generate the optimal code to compute a given function. Optimality is defined with respect to a cost function on the sequence. Almost all superoptimizers use some variant of a brute-force search through the space of possible operations. For this reason, the space of searched sequences is quite small (e.g. sequences containing 2-5 instructions). Here is an example of a superoptimized sequence. On the left-hand side is the signum function that returns  1, 0 or 1 depending on whether the input integer was less than, equal to or greater than zero. Using a brute-force search based superoptimizer, Massalin, in his 1987 paper, showed that it is possible to compute this function in four instructions on Motorola 68020 without using branch instructions.~$' H 4 0޽h ? ̙33C 0 y<(  <X < C (   ,y < S ̱,( @  ,  At a very high level, superoptimization works by enumerating all sequences up to a certain length AND Compares each enumerated sequence for equivalence with the target function$>qH < 0޽h ? ̙33D 0 D!(  D^ DS    \ Dc $x\ @  \ We use lots of pattern matching rules to translate code from one architecture to another. I claim that this approach is simple efficient and portable. It is simple and efficient because the complexity of optimizations is hidden in the peephole rules. And it is portable because it is easier to construct these peephole transformations automatically. The difference between a binary translator and a peephole optimizer is that now, we need a way to map state elements, or registers, from one architecture to another.H D 0޽h ? ̙33F 0 `\m(  \X \ C (   F \ S F( @  F o[To understand this problem better, let us walk through a simplified example. Here is a PowerPC sequence of four instructions involving two registers; that needs to be translated to x86. We need to decide the register maps, and then obtain the corresponding translation. I will assume a simplified cost model, where, the cost of each instruction is 1 unit, and the cost of an instruction that accesses memory is 10 units. Also, the cost of switching the location of a PowerPC register from and x86 register to memory and vice versa is 10 units. Let us assume that, at entry, when this sequence is called, and at exit, when this sequence finishes, both r1 and r2 need to be mapped to their corresponding memory locations Mr1 and Mr2. Hence, we are interested in finding the best possible translation by determining the register maps at points P0, P1, P2 and P3.H \ 0޽h ? ̙33SE 0  `(  `X ` C (   H  ` S fH( @  H I will first describe the greedy strategy to show, what does NOT work. In this strategy, we try to minimize the cost at the current code point, without worrying about the successor code points. At point P0, the best solution is to map r1 to a memory location to obtain a translation of cost 10 with 0 switching cost. A similar translation then works best at point P1 with 0 switching cost and an instruction cost of 10. Iterating this procedure on the next two steps, gives us this translation of four instructions. Notice, that almost all instructions in the translation access memory and hence we obtain a costly translation with a total cost of 60 units.H ` 0޽h ? ̙33H 0 dV(  dX d C (   I d S  I( @  I XDIf we look at the optimal solution, we find that it is possible to avoid all these memory accesses by selecting more intelligent register maps. Notice that none of the four instructions produced by the translation access memory, resulting in a total cost of 44 much lower than the cost of 60 produced by the greedy strategy.H d 0޽h ? ̙33I 0 h6(  hX h C (   I h S I( @  I 8$We use dynamic programming to strive to obtain the optimal solution. While searching for the optimal solution, we consider translations spanning multiple source-architecture instructions. This approach lets us simultaneously optimize the process of instruction selection and register mapping.H h 0޽h ? ̙33@K 0 x(  x^ xS    A xc $\E @  A >This step exhaustively enumerates sequences up to a certain length checking each of them for equivalence with a target sequence. Because, we need to enumerate hundreds of millions of sequences, the equivalence test needs to be lightning fast. We use a fast execution test that involves executing both the target and the enumerated sequence on random inputs to see if they produce the same result. The few sequences that pass the execution test, are then subjected to a thorough but slower boolean equivalence test which uses a satisfiability solver to determine equivalence.,!H x 0޽h ? ̙33^x\p]E?{I MC,mB˿6֤MڤiijG؊_~2D80ձNX~1v7:Ntswk抾_{ܳ7~r_z|sD'@h4wҿUz 0,D6"!rttP. .DD!f!! BF\(DC!#  K%RR%Kt?Ip.7%1S>z+⁕-?~(,nLi;%)hl(?ޫw.mPf; 98<Xx ;J/o+q/J ĕ{k{|bXpZK)N MW]^~A"Wl+ъ]xY1w`2)J]|ux\L-^wͣ.&b9ށnQG 4WaJ Do _t*0~1Ji-!6bY/-;14Ѿ׺si`-(c&[f ע0OޖRjφg*_z)cwn+oB3g~aw\ o V ͌˾PH5UwA^). qxQӿhc3CD_CC(s1a< 'OFÊQ\k:,Os2J80Lm0~H*ODk{TGxqD 3~UB=b5JJv YlK;?sj;SD_wM7JHOWfjrξnRX5إ8Z8 :+*CU(*CUx@;?ݿ[ )]=wvwo„"ܱ*tk0okvֺQS݂gv6U,;b*94+E{(o|&Q߮0uJ N9NadBgEW"fu k}҉X߬qX߲\3Ct q|GQsrf35F^?t˵*~ &}"R/_DcQգ& Goy<6R:2;3FɾǴ%Cri%Z .]q<$"0 ܇ 4.64^SbgKQp1!#[ѳm3HD6c\43gE=OI߭=b[>=X0|_$dʗZ>t|2wҿzz\E柉XH Zݤ)Us;PG@?yZ:PyKiwnNHRN9 \%>5-Jkj4Tz?i=}Ȗ;ֵȡWo| QTڍD I2۫eL(GgαJNB)[n9Ѝ3jKy>~B>dFHj K>s>M_2̤EB+JX@|]?R!Aj~\Tϔ$M912!NfTGqۯX?{_ H_ħ%7km"|Cy%DO !h䢓aX..#3.5e'xj-CP7 vWVhg8*F)_lݔ"ZG"-AA+ FSv\?c88vS/C G>8=GM_#26v0a3~([)do,Ԛ|7'ZJXbkWEtJ_b-6\p!ý .23{pO np7fm6f5p%+1\luݭڲ nPOݖ{9 G|ᘘϋ*99>j_R O?ѧ+a=׊n(>>؇`ڱHw[Zp:1V_"%="=nHfEe*+4\oU D!Py8.&\\E8p\;*=[45k-\-sVd/\jKg.(`Y<}w&59pzD!Ato"YnIדz m)EQzc?tKǗc:*o$űÿȿw،ɍ;CgoRfhY8qq`~;.>k;6>ezRil]cwQ&^K4,2=umy5'Nj[XFS[~"|*~17Z}l?;a˗hM}OFc 阛g,l#C8Yˉ'&"?]gX|jw xxw4R8K;)- ] @x[}pT?n|S>%C::(j,,FICZ4hfTӎ38-ւ3~tjA;ډδЙ*uic?Qk{ݷe YSs~7(<9,z! N6ףhԡ_/UЃYD.‹rBg .S!Y"lD1rD k9yR-tO?:؉}pOR2c8h=r%To5aQ~4LK;@ w&ڮnE;]i량i >MT?ͨnOz=i'[?W 2D9q%b*bD%jRDuD Q!5ZDb9b|֤JBmqCڊѹV,oXm Y?No޵|*>BSW{_ϮH;U`놆HcwÿWū.F^:0{=z]Pvg2Xg4FcYEY+[r.Zz`ϋ+}CgJ`Zpʔ%JaTcn!h֗WiQK`N.QBkq\LMsژZ\JciiU RZkQ}Q%`4ua,u^S.O5ƁbiFIQ hb;D;lpL|E~aYT*nJь/)/r -Ƽs*%Y[":KStVtqt #+NUG eNo<Ї] id.25)FCg|HZmtIBR+;ՏcpʱG2ɖ+N1瞬t?B܄{7^j,1b!N}Eb~;٪k)JRKb oc[lcj+$9d=ATՔ4% \ђh6-C3%llsFp.}]%װÂ"#!wL$Lyt9H cRlsnٺG"uO(nA|H-T+RYE/;$OR'նtm^zoEkkD_5~݋I'ȟXH{Nd)]S N Wаp۷I7K,NNHRN9(М:Q._ΖY5-Jkje*=3y^qc74tw[v7 ?^'Kln2brޙ0$~+y^K]]ԖpÏf$#BRi(XiOWNU,TfA<4hwn@ٞ|Y-( %氬"@ JgIra5FpdB\/\qmD; ,)[E2&MZW#cFǃ Tw;=qД'ao0Nq:a{Nl3xɔUcc GO* Q:!FX2s.y?TaFXakF-(ҵS!}`1's*D$D5plD]p1JðvƄab|?{>=xT;.m^᧾dD;~ #p:|d_ք/b'˵#.7"dЗrytOEr9_> K$ݗ!xUzPF|e_?[V[ݛo5֋2Y3i g#ɫN~ fpy:y*tf}β/WLw_~umwAh❼veÝN^;_K4'`3|;p/u՗6DZzDzEP͈@|Z,`, R檂yrqg5W~#պ=sqrW3M`I:/cfW@gk'=G_wLIh4.V#-mmE~ _fnL5~6:xfHiᷨΏuLܔ;KKZjs= r:6kJ= }|5*D_cvO0i,8R1 HWf<wްG7w;檋/3_@cQGx8ArR)w~M~c9+AqV\x5V (SYce Fx[ pT>&Y!$YA@AMv1b cUQ:e+UaFm:m##V[ٞs}wnr/w==e{錄BFY>8,|RlKI&1ͥrѢZU.N3zV쿏$y/t9?mA`gS]IVzoBQ=,8DIXTEҊ65ކ#i]>֓ErdU |npR9\uϕ+|0Ju!u4kC7?.`N ز(%J6Y^^^ |~z>F? S"_J;z6IF?UA飾}βIO}O]h)I@/!KJ' .vEa=NVP5J.Mв!Jl=HEkgG{aNPUTuk[g_Wy>闵V4a#P A_a^ttow+JjϖMQ@5VGwO,XoGm0uAQb̝}\kJyMMiJJT {)g4i)БZ2==-R 3*/mԔ?r\V1vqDgi yd/1#OG5(}h_RYG~V>2f@'FLl }g`C3ٞ^ڐM"RLTҩ5jY|9Aj+:"]qi6gDZw\>K~^dhdƪV#tِG-iLD|X3Rب5WZX(o4 ){'Ok[=G=7>)R^/TSe8}xOLQGQFX/~Ա:8 h :T"-+X9_q XBL4MG5uǭ2==۝k斫7G$G?4!-ﰎ9(NJs:e7_'}8M[O,`F&wZΰU?|?=͗Gpňa=0j9!'OzmZ꯮b7F&#qN gnk-?c-ɯ:/ lIp(v-0rba b KD]$(5u/) / N1u)(p) E&A 1%x{'!tZs!ؚtc?-F y|?g_yK|Y9w]缜6^R}Y˪\僰o=eM2PqY![]X%kOqc/v.Wb<;u>\Ef(9>Cp\r-G\ z0w>f6jpZs~(>}0VkW .qi\ aF!aP\=pn N؄_Lx$z`{E[=GjWt?y'2CQsTP#X cX}^Yw,4[g47=wj]\\ջ57_ByQY9@X+G >x[}pT?f q /!,YB}ъ * $1KDbѱC[Tj1:kG[mZVvbՙN{ݷ5w痽w=s=osM K 2Qy8ԐdXT&qgSNbz^B9".cR~ a,\paa<9IɄ)rT-VVz@6z;Ciy+A b L_N$M1;+We4~4-?s 1T?׿Yב.t=q݇s*soZzJJՉ\9̵fђ̯'MW#&ܸY?DJ)u6RjZs]nҹ(W[>G套fE,Уm?q^˅dTY .'i'×>7Di5Co鹸:OⰊ{}&nq([̅T/}m cPB5m<׾ GSr'ËkeOruw~B8bZ+]+3kb}BZ5jE7S6O)- R r`?/ C>> 9vQ~Ç)ײuFXGTg ~6ԶYv:Ɂ6&~سgm%iHeKI%_IXoTj;hِ` HLۢԮ0|e| 4YU&7:׊ lBPUhIe fKI )=[Y֎mjzSQhNK)QZMMIj$Z!#kf }6 4q5+{QT0JM i*>;[[;N@ oY(*9u}INǯTboqdtGԪxzs/#| H Q6e*ll΅ayJeFw5=#)q3)|rhRsq먜SyvϷI2[·((YFUX$ħ ּLMz'g| #?i =jfh1 Z(.a3 4Vsd8H9)>ϰY_R$x&{8DR6MT=4X+3=KɾBƴ\|e 866Xڋ}A_"?q8ϐ~5Zށ @Q5\\`cop I49t*DDg-FhzNx.ve6?+ҎsW9|F4]YH}P&8bIݢ>˷|XCUN랥?y(i$m[Fd4Zg;}˽Ա!:ZfWqY\h8r)3QrshrqnƹR8b=i*'u>2+SaZcFmho76ohѧ}w>],}똏nf{uʱchYwtvp^k~tmֻt{Xj A9:[ ȧ|J K'3%t[-)`,r ON.)-D^R4edB̐{Slx2+Al_A7q5 嶛#7jťCB=u'Mn('[I@)K.ЍGȼø[=i 7"؟%QF ̕6OlF#gcl9k18o~6>]-_Qwvvn^S`הxI) '  0ekq \+XfN8"p`){˄,#xsxwe$Xxɋcll85ʬ*U.j{\nnm҆[i[`Fm̺S2}pUDS9n7.g=f5X;{ԙi-"P}dA .;pv4 #MLRM?M jswON:1eլ)x-o-&ݖD-3˚bpvlϖ_/*v[p>b˚n}_h˽kemmyzx]hxY /IlW, o?}o Eif6rQ?^-Hw.sIŨbb/WcoXa]џI᠏|~ \TTNG['w-/1ާQl?[[mWw90 ?|eTlY,Md҃s'1)dEe*ߣ$jK7'e2S%J [ᾧZM-pݚpk..JFC20*_͝ѝ%bd3uCJdOsz+Lu(2>*󲹩 ["Q ;pĉYנfq_/Ab|8,3$G =K# WIJJgݡ; zJ}^ Fx[ l{`; is hP I>py؜LDTzAM@)4"!DV*pBPZ їTJۈ:31r7xJ2PbJ2ɛKU@ Rk,GAN!`b8b"q b$V(hmvDb}ܘRMjŵ=.H` ټkE塊wڇX1>X ,A0SK<4W(=P6ú>'^ȧ7X֯unSAC ;w"&"&!&# "! E0bAD Jer,lcVL)eЦ # (ZqQ.E;|% JK UM-MւpkX}ۊ歭?g䜏%w;]~ڲcY ExCXw,Do M6~|x䯬d=>65 v NET>L& J㦺W߮$Kz\1I VġE)&PAi#*pN&*YQa(8!ip$TY0wvE0M8[ضI Ɩj|ߌ50ш1.a]1@2_4jY˽hl֩Vћޡ^-& c?GWIti ^6^y § ]COg.6~O~x0po?qh6"ʉ'  D:# G4*1IK2[Ut$ ؜IX"Hބ"c hooTH")%H0yE`93ԒJa`,.ם.w?,3 Jx9r= Vmil.r~f/Z5CvVǼ) 4[kںi䓝omacSa)^`O!"TX\)I&E)GZ(W>XH<*E=2z"tSń ׷R7CN,ʉUH}ib*EʶgQH>C-jq67-l77P_MHγ8fWDeB"f^|6M\M?ij+˫Dqi6wo;Q韜M^ؤ`PlWqϽ~B!Ql[[⽒g3s &ޥI{p '9S cAa}#pC -zu-8*)-fx،94Z4F|#t܉]CQҧO܃1nLwY!yd}y<4J>`t>r|8!eL`Չidbk_3}b{H/4VHV^>|3otU#9;)i+3q'9eJYf s%9=Ǐ}y'8.HqI&EK2e(*/W@D+I쩯ZgTc2u7|7 ? Lcy,C}sr 2W.=C;nԾ7S]s +9 S-۴cê S++<1P-8$F$'%MRDSyJ9$J]V;iCں-Ux6(+$PXc1UqaGZZ6gia?F L^5?R[1 ͸'x7F(tdO8v\k3[ib%׍},}l"WK+n1Ҙ3/!ˊiG ߀+ jNaD~޳{1JXitQژ=&8kiYjf %M2Ӊ-^`lqі`'%ݖm1h˭KeYr1L{Z`h.2Ul˒Yݖ(ހwb߃1d|)8 虿߲gg'4zXby婨0V-ᩋ#fr'|~~yvbaFS \9TTZ6NEa8s*z2Wσ$TpTC.1He>p(}0IAll~d8]=0w xg>}D^yE&z2 GMyp$wYGf`.0s4wqVˊV=hZ\Vݥhôq/eԕ^=[9o}~i=̓r2C*Cz,˚fw$l3G(7$\VǮ/傾nr {^S0dg=pk~Tf&gH?c}Lr}fSLzNWi '= Bx[}pT?A"g%KFqt(D!@C\ 1 Q(A\x^*_mYRxM١`2=E6~L6kza}h;uX2% p3qE`˿8pEIʧT >Mp߈\0\%Ժ )F ./ELF! "!#f f"sJ\D 1Q## 5.řiܛܹ %L:zBEJX$X6lʜ)Sbkʯ]=ӾY]^⟌>)+Zݕ٩ \te{5LYv,nk z5*%3`PVQƭZeQ[Larnxj.uu繄 9w>_*? Eڡh9z6`6ز=x]xh#fY޼6QBvh܋6`z?$ӻl'›Bҥ^ tu{}GwCސ1\+wQhjj| 5tnIjYh B !1p*R(/1+[l*ǎ z!49rDҨ$%-oUa*+KziL/+N!ׇtME$}vލ$ $88+ќATV~ q fOB L7 ̝v;fP(*?W^\\˒pÆ0A\TWkJr J=S}fƎTkGj]kʇclsŒ$C>YH<=X&,S$㕊pzټyP<7Z͛wS7Cd+,IrRUH>mE끇)'vVErfQڂT=mdVSIR 6Zdh!O+!5( MrOߪHAg-V pTpsJ,6iEp߮z+L ps Þ&ͥ|~fE@ Gl|q{%/a٘q֡ k0o@mN2(b#F 5)'T?B}ĺDJ Cf!=Gqƴh7,jq\=#fInҀzn.0t~TXuԐ'1fn¨D _ $JhC-@`6\N\ԨOQ>A{l`}($F{tjif)FFƧy0r{-(X1粇1wYE;ADChno"aD~ۋyDvBVrWJ w"<5*kGrw$9WwZ8R)ɜ2},Qǒܞƾ\HqE.ɞ&3̽PfFuTLW#Yɮ$qjc e4ቫgNT%1C'!_ȌJY0ڏϥ*zv+.ge<{S2vﯦlp_um@+CS[&q+=F & N5hjKbArJX !:w2u!z&O)~n]VoRؼO¯IkR볞 aSX<. 4bdxR6>X5aKc0OF20l8L?ZR \(4HaY|]B/kpj ݚ֐ Xt{m#V2>x±؛aY5ODCm66<#>ȰDSGo鶐x&0,b?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root EntrydO)PicturesiCurrent UserSummaryInformation(PowerPoint Document(SDocumentSummaryInformation8