BLENDER_v249REND dSceneGLOB X 2xSRxSR1-AnimationP(x5DATA8DATA8DATA8DATADATAXDATAXDATAXDATA0DATA0xDATAx0DATAxDATADATAP8DATAPDATA(XDATA(p8DATAp(DATApDATAH0DATAHX0DATAHxDATA xDATA h0xDATAh XDATAhDATA@DATA@DATA@XDATADATADATA(J0`DATA`xLink and MaterialsEditing>DATAx`MeshEditingF>DATAxAnim settingsObject>DATADrawObjectF>DATAConstraintsObject>DATAEffectsObjectDATA0333?\<@DhC)DhCC(BDC?z?DATA0333?\</9DATA(8DATAx0|+9=U_=o?  #$SpDATATransform PropertiesView3d>DATA3D Viewport propertiesView3d>"DATAp333?e|????????|+9=U_=o?;AkA?|+9=U_=o??????;A B?=C  DATAp333?e|/9DATA0xX??Pף  #$(DATATransform PropertiesIpo!>DATAX(333?kzC̽̌?zC@ #< #<`jFzD OBzC̽̌?DATA(333?k@zAAQAQAB A@CC #<@DATA 333?k6 j>DATA333?k??? ???? A???PA A!O?j?}GCHB? A B? #<C DATA333?k/9DATAX 'DATALink and MaterialsEditing>DATAMeshEditingF>DATA 333?v<zCCHBC'?CFC= ADATA333?v<#DhC`DpJgChCC(BDC?z?DATA333?v</9SRxHvSR2-Model 8jxw4xDATADATA DATA hxDATAh xDATAhDATA@xDATA@,DATA@x,DATA<,DATA`<DATA`<DATA`xDATA8DDATA8DDATA DATADATAX DATAXDATAX@DATA0@DATA0xhDATAx0@DATAxDATAPDATAPDATAP@DATA(hDATA(p`DATAp(`DATApDATAHDATAH`DATAH`DATA DATA h8DATAh 8DATAh8DATA xxxyuuDATA `\?c?+L=x-=x-G=xH<PDATATransform PropertiesView3d>"DATA333?~C@C~C@C<?@C|H@C= ADATAH333? D]6 D0<< D`C??,?DATA ? DATA xxxxnVVVVVVVVVV V V V V VVVVVVVVVVVVVVVVVVV V!V npX`^`pppppppppp p p p p ppppppppppppppppppp p!p"p#pVVVVVVVVV V V V V VVVVVVVVVVVVVVVVVVV V!Vnnnnnnnnn n n n n nnnnnnnnnnnnnnnnnnn n!nVVVVVVVVVV V V V V VVVVVVVVVVVVVVVVVVV V!VX`^`DATAH 333? >DATAHH333??eM'<o(<]=A~1 E~?=(R jSA s??q(<rf~= E~? L'~?A~?\S1 ,?A:B sBT?;ʳ`|2#7#=6?{JCQA2Bí@\?c?+L?eM'<o(<]=A~1 E~?=(R jSA s?;??O0*O_{ZJ]B B??=Ca:?u3AgW,  DATAH$333?CC_樚?L/˺?C]?D*KBDATA$H333?DdC8CnD fCC(BDC?z?DATAX$333?zC AzC A #< #<`jFzD OBDATA333?Open Text FileICTURES/shard/Shared/1MiaGrafica/Blending/Mylopolis/loomish/online/hared.blend/../Vmapped3.blendtesto.txtnd01.tgajpgblenddapped3.blendase4.blend nDATA @Ź>M>o?;-;-G;H <$0 h]xD  DATA  Transform PropertiesView3deight Paint PropertiesH>"DATA  PreviewView3d hL"DATA0 333? -?e>/=yhN{?_@>=*>z??? *?-?}h횘=d>/=N{?*>_@>z?t!ǾĴ@yS?z?>"5<9ڪ > rEP筿U5.;?[@νV>*)>Y"s@7eAvL<£tw!ǾĴ@uS?Ź>M>o?-?e>/=yhN{?_@>=*>z??? *?~?=rd=LĴyS> SD@p 9???? {DATA0 333? DdC8CnD fCC(BDC?z?DATAX333? zC AzC A #< #<`jFzD OBDATA333? ASave AsgaE PICTURESC:\Caio\C3DE_Project\Art\newCharacters\lis/loomish/online/swimmer//DEF5-UVmapped3.blendSwimmerMocapWeighted2.blendblenddi.blend DATA] @hR=IJ?o?x+x+x yOU[8 gTDATATransform PropertiesView3d>"DATA0OutputRender>DATA0HRenderRenderF>DATAH`0AnimRender>DATA`xHFormatRender>DATAx`PreviewMaterial>DATAxMaterialMaterial>DATARampsMaterial>DATAShadersMaterial>DATAMirror TranspMaterial>DATA TextureMaterial^>DATA  !PreviewWorld>DATA !8" WorldWorldF>DATA8"P# !Mist / Stars / PhysicsWorld>DATAP#h$8"Amb OccWorld>8"DATAh$%P#Texture and InputWorld>DATA%&h$Map ToWorld>h$DATA&'%Link and MaterialsEditing>DATA'(&MeshEditingF>DATA()'Mesh ToolsEditing^>DATA)*(Mesh Tools 1Editing>DATA*,)PreviewTexture>DATA,(-*CameraEditingF>DATA(-@.,TextureTextureF>DATA@.X/(-PreviewLamp>DATAX/p0@.LampLampF>DATAp01X/Shadow and SpotLamp>DATA12p0Texture and InputLamp>DATA231Map ToLamp>1DATA342ScriptlinksScript>DATA453Texture faceEditing>x<DATA574UV CalculationEditing>x<DATA785ColorsTextureF>(-DATA8097ImageTexture>DATA09H:8Anim and MovieTexture>DATAH:`;09Map InputMaterial^>DATA`;x<H:Map ToMaterial^>DATAx<=`;PaintEditing>DATA=>x<ArmatureEditingF>DATA>?=Armature BonesEditing>DATA?@>Anim settingsObject>DATA@A?DrawObject>DATAAC@HooksObjectF>@DATAC DAConstraintsObject>DATA D8ECParticle InteractionObject>CDATA8EPF DEffectsObject>CDATAPFhG8ESoftbodyObject>CDATAhGHPFLinks and PipelineMaterialF>DATAHIhGSSSMaterial>DATAIJHModifiersEditing>DATAJKIShapesEditing>IDATAKLJMultiresEditing>DATALMKObject and LinksObjectF>DATAMOLRender LayersRender>DATAO(PMBakeRender>HDATA(P@QOStampRender>`DATA@QXR(PMesh Tools MoreEditing>DATAXRpS@QTexture FaceEditing>KDATApSTXRArmature VisualisationsEditingF>=DATATpSConstraintsEditing>DATAUV333? ExhCӬDWZdCC(BDC?z?yVDATA$VWU333?DATAWXZV333??22+~?+5s?xHAo???y#?2+5so?pH?R=/ @h7w;5RJ?Q18>d A/F?+,A$?8C:2so?oH?R=IJ?o??22+~?+5s?xHAo??5?5\3\3+,A B??=C4s?ooHA:A@ c DATAXXZ[W333?zC AzC A #< #<`jFzD OBDATA[XZ333?Save Targay PICTURES/home/erwan/Desktop/blender for architecture/sh/ragazzo-definpkd.blend/Object/pped3.blendswimmer.jpglane.002dig1.blendd3.blendase4.blend DATA]j8\?c?+LEx Ex #Ex$  4_h^^DATA^Transform PropertiesView3d>"DATA_` 333?]ș# -?DATA$``_333?]DATA`0b`333?]DDnavH?g'Z>@|?`C]?D*KBDATA0be`333?]?eM'<o(<]=A~1 E~?=(R jSA s??q(<rf~= E~? L'~?A~?\S1 ,?A:B sBT?;ʳ`|2#7#=6?{JCQA2Bí@\?c?+L?eM'<o(<]=A~1 E~?=(R jSA s?;??O0*O_{ZJ]B B??=Ca:?u3AgW,  DATAef0b333?]DdC8CnD fCC(BDC?z?DATAXfhe333?]zC AzC A #< #<`jFzD OBDATAhf333?]Open Text FileICTURESC:\Caio\C3DE_Game\tools\Tools\blenderScripts\loomish/i/..//../DEF5-UVmapped3.blendC3DESkinnedMeshExporter2.pymized1.pyed3.blendase4.blend DATAj]`8\?c?+L=C =C #=C$  (lPtx.x.kkDATAkTransform PropertiesView3d>"DATA(ll 333?j# =?rtpDATA$l0m(l333?jDATA0mhnl333?jDDnavH?g'Z>@|?`C]?D*KBDATAhnq0m333?j?eM'<o(<]=A~1 E~?=(R jSA s??q(<rf~= E~? L'~?A~?\S1 ,?A:B sBT?;ʳ`|2#7#=6?{JCQA2Bí@\?c?+L?eM'<o(<]=A~1 E~?=(R jSA s?;??O0*O_{ZJ]B B??=Ca:?u3AgW,  DATAqrhn333?jDdC8CnD fCC(BDC?z?DATAXrPtq333?jzC AzC A #< #<`jFzD OBDATAPtr333?jOpen Text FileICTURESC:\Caio\C3DE_Game\tools\Tools\blenderScripts\loomish/i/..//../DEF5-UVmapped3.blendC3DESkinnedMeshExporter_Optimized1.pyed3.blendase4.blend SRxHvSR3-Materialodel SingvzzXx5DATAv8wDATA8wwvDATAww8wDATAwxwDATAxXxw,DATAXxxx,DATAxxXxDATAx0yxDATA0yxyx,DATAxyy0yDATAyzxy DATAzPzy DATAPzzz DATAzPzDATAz({8wwDATA({p{zvwDATAp{{({vxDATA{|p{wXxDATA|H|{xXxDATAH|||8wxDATA||H|wxDATA| }|xxDATA }h}|XxxDATAh}} }x0yDATA}}h}Xx0yDATA}@~}xxyDATA@~~}0yxyDATA~~@~xyDATA~~xyDATA`~xyzDATA`0yzDATA`yzDATA8yPzDATA8zPzDATAȀ8xzDATAȀxyzDATAȀPzzDATAX(vxXxw?@Pף++ ,0XDATAXpOutputRender>DATApXRenderRenderF>DATApAnimRender>DATAFormatRender>DATA 333?zCCHBC,?CFC= ADATA333?DhC?DhCC(BDC?z?mDATA333???? ???? A??@PA Aj?c3>}GCHB? A B? #<C DATA0333?@̌AR|B1@lA A@CC #<@DATA0333?/9DATA((Xx8wwxDATA((0yxyxXxG@? JL - -G Hh~(DATA(@OutputRender>DATA@X(RenderRender>DATAXp@AnimRender0>DATApXFormatRenderH>DATApPreviewMaterial>DATAMaterialMaterial>DATAИShadersMaterial0>DATAИTextureMaterialH>DATAИMap InputMaterialD>DATAMap ToMaterial`>DATA(333?lCqhCC~qLmCC(BDC?z?hDATA(x333?lJ>H!?)xu?i6>Pbܗ=(?^L?a?滎z?J>#xu?ܗ=Hi6>(? ?Pb^L?\FAA?4[?[!?@jG>gb>Pb>4Im>k&?]M^L<0@AzA=>Kc<2֍7&> ?:x¸A1vB,jB~@G@? JLJ>H!?)xu?i6>Pbܗ=(?^L?a?滎z?@?$$OA B?=Ch?j(4?t'>d DATAXx(333?lzC AzC A #< #<`jFzD OBDATAx333?l;SAVE FILE/usr/home/intrr/blender/blend/untitled.blendDATAج(xyz0yU.=z=o?- -GH SDATAH333?\???h?j(4?t'>????hj(4t'?U.=z=o??OA B?=Ch?j(4?t'>d DATAHX333?\DdC>9C,DeCC(BDC?z?DATAXXH333?\zC AzC A #< #<`jFzD OBDATAX333?\ SAVE FILE/Users/ton/Desktop/der/blend/untitled.blendDATAجPzzxyze?8?AHM    SحDATAح(333?,L?В ?K?ȳ>?M?K?<ȳ>T5L?В ?ZI? @μ@?ƾ\?lU В (??3>>]`b4AAVl>K?x<4쓾S>>3ApןAAA)@e?8?AHML?В ?K?ȳ>?L?ՙξAE;OA B?=Ch?j(4?t'>d DATA(8ح333?,DdC>9C,DeCC(BDC?z?DATAX8(333?,zC AzC A #< #<`jFzD OBDATA8333?, SAVE FILE/Users/ton/Desktop/der/blend/untitled.blendDATAجyxzPz(.=^=o?    SDATA333??3?3^I2(o(4?? 3?3^=i(4J2(A?(.=0n;^=ꉖW5jOT{:?OA2 5AC^=k(4J2(A?(.=^=o??3?3^I2(o(4?5?5OA B?=C^j(4?J2(d DATA333?DdC>9C,DeCC(BDC?z?DATAX333?zC AzC A #< #<`jFzD OBDATA333? SAVE FILE/Users/ton/Desktop/der/blend/untitled.blendSRxHvSR4-Sequence@Xhx5DATA@DATAп@DATAпDATA`пDATA`DATA`DATA8DATA8DATA8\DATA\DATAX\DATAXDATAпDATA0@DATA0x@`DATAx0DATAx`DATAPDATAPп8DATAP8DATA(`DATA(pDATAp(8DATApDATAHDATAHDATAHDATA XDATA h8XDATAh XDATA@` DATAOutputRender>DATARenderRenderF>DATAAnimRender>DATAFormatRender>DATA 333?uDhC&ԓDhCC(BDC?z?DATA 333?u/9DATAп8DATA``8=i>o?[  [P hDATA333?}|zCAzCAPP A@FB= A ?DATAh333?}|????????8=i>o?fffAD&@??fffA B? #<C DATAh333?}|AVE TARGA/t1.blend9DATA`X88=H>o?]]]]S HDATAH`333? zCAzCA1||1 A@FB= A ?DATA`H333? ????????8=H>o?fffA*@??fffA B? #<C DATA`333? AVE TARGA/t1.blend9DATA`X8=>o?]]wx8DATAX0333?ሜB̽̌?B̽̌?88 #< #<`jFzD SQB̽̌?DATA0333?ሜ????????8=>o?fffA@??fffA B? #<C DATA0333?ሜOAD FILE/9SC|xSCScenetageain(x(:Cx@~| v@,v@,v@,'k? dd??< 2Z @=fff?=fff????????//backbuf/tmp\L?L?L??>??_??D 8DATA({x$.nDATAx{(.pDATA(z,d'=A@DATA L?B ?o: ??P22 2d 22 22 22 22 22 > #<===ff??AHz?=???CDATA8'????C?N $,=N +=p??????DATAHp%?=Vy?>`fff?Ou<?DATAH1 RenderLayerIM` IMuvUniPlane3.png.001//textures\uvUniPlane3.png.001g/primi/loomish/uvUniPlane3.pngh(h(`^??DATA`DATAPNG  IHDRxbKGD pHYs  tIME9e IDATxymUY{sνܭրIR A2 H0'TB?2 ʘ' !@5iuK=~o9{?>ZIHY{ }k(c1c1 *x c1cLc1c1c1c1`1c11c1$oAy*/Axd'}h"g㪍ozkω+DPEAv 9=Nw?|?|?Yc1_ M^aic&!/{w8āTМ%8 E >OG_Sy{sRLx}][U_ϼ\8lW)8^ 9g?:$⨃cZy|/1[w|9md)iLor`6J_58JZ*H"=U|m~-hcy,ێ岣3*屮}O{<]~,SDeJĤ@QWiSS7O_{Mo{KŸH!J""κ`98gzE"JM٨?gQc g!Q_7gE?Iu(3_Yɰ&X.ZT;FTi*{~mWŋO*xL^m,-ŒHIIY"xBxI~rxo<:kpי-]RڔIYI{KR*04MwdlT=?j=aKy(sʣdHڷʣ#e,pyW@FWv w'4^}~ 5w|Ky,U/ꆴC,@\ G,I)dS$ƌwBlybT$_sU9o=ŝgpi֒3$ME67,]\,H]"L3 My=7s<.\8^7w+.lKK5&e#x&Ӛp*ٜ?oymn=^ukncVPWU.rpԪad^,VWf'WXI ]K/=n8cǏ5|#,W2"ŕ>YKpjNmq3%6E1+p81q-\ %WYD|di6&lm%#wKrؼw^xK8Mw?[Oqmx-Yve(z:/TuC*6U#9\;Zw'8!-w]wL|9"ProgrNӶ RqMq:tˤd;UWe|Xvn8[_Çq1^@W||}Ǘ|_OEɩe5[C4S&~,߽6jĔ]bvĘI1rQ;׷#00Tk.&eG3.&/LԵej|PO&TuMhiAtmGuȢ,]'E՚|'7o2Z"yoɓ V͋%WiNgrynYS9g!3)or߭w1;q۸̖2qd"挨*Zړ\_Vf`@;|AA[Y#N9:{oZ;;Tw}eUҶ !DžӀs_NZ*n3薉)eDLw@uSU >BE^.h#H)DbYC0O]g?Uf^t1+>8j jbK1DY}Eʗ\4:e*88on hw^ogc1m76a`㡊ϊf;Rwe/{TE*O<S ѣ-)f%Ц̃/}#_x BۆjK! gRc;@[%BF@)uJl#d3c'qચ>Tr%KvAl;bѶqDRa刺 ]֓*{99۾$JuP2NqWD3M! > Iض׺q/zѧ8w1Ƹ32oRHuзt99s)R|lCrIMVs΄Ql}R ΙPs˘_yU@ *v\:+v4Ce.Ҷ-br2-HMCU{|SQO¹X?²Ę(npUL |ό]G\,i3%EdXߣ9clㅔ ^ #87y~=o;+o=E e 'F*!Cz?!zuVbyFڸ\uHh q1|G&EW=K9f$R|r1@ 1)vX7+s$ FCTe@Z˖[Ra#L1'R=<e>s F B9b[~-ey?//}n@Kn%/KGH.f}XւBl}3I7ĸS1 9o#Ӛ2R9HZU%lf?X{;%ʞodk%qX{qͰlac[̃8Z[o׾yږ5AZ$CK5o $Oe<=ٴJ坔dT\t/d4TU]/SKvĔ9@* 4U068d]'eͥ7l)]o}*ط|)G6&,c.Uj[+qZƻ%λ0 g@?rNWJ2H.0@iNpl,cr1@o{틹,cZb-EU%1׬Ե}IwL?vΐ\;YuVU}?2^6"7y-w,5ur{g}!> `ЅBETp];B劺c ^$+sj-o9=7b5(>6aoסK7^nC&8 ^T+K.܈ui c1l7l)ㅚCO)4P@SuH}_ db2H ij 'C 9+/}^-=־5̊g~!xy]Kc!H^4 J[`9srd.H-m 9M㭺Zڶ],9f$vP75iCp"PZe*ߋ+&An4:Fw~Wk+or&jq+.CvϧNźl&%BOL -@Nj:dUd)*O = #S1|\_`n 1=Xu_x6/.'_"N^K@iHr*=ꢍy n;<_ύێ[;q] {ȅ{nc^krt`3_RI&#YftH򂺵~Ȧ(ҏnۺ\RׂQP!p >~a_7b.,Y - ;o%#^\V_kz)φ1-2ʟ/TYS4?~0$N*G&5?;cP;?.2]Mi9oY. GӪ-QD I}ZQv@ᓽ{p2$./w?;_]˟P-[9T mH#L'T 6ʈ |eH͖{G,>W;7zIldCYMܩ U0_8)^{b-+d޲"-Y+^>gJ 9/{pxl:r)a]ʲ*@yBJPj*~=w1xv Ϗm_"NϗT")'IW)v>Mg4{P*~W[6J /[a.2)Y#Œ47_|G r -]hc68b(nP }0o!shw/рK]&HRSN)cgZ!𕭡:8I4tऻ9el$hPĤ4)e+n8~gFڜHYWMEUЃcֻتjIl$)OXa 誟XkYfVYGl[MC.9Wi|Z4?]76{gwIxVOWLvIJ HKA;$LE^fZ =1F~e׽ '4{nʜ~ogrŔǹv[͊{ a 1Z=BYYH̚9áII h=M4MC__+ VNÀ Ylݞwq`&(hrSCg|ы[w2R EO*O_ d|UWW z:$=0h9ϟs"k99=˶WK1UCTbF"9&ەX:Y֥zeDr;.KY4r"B]z Mw|y--7kwX&;vBp e#+Z xRv My!fQۣ2D m00 `0P!ҡjP*=P.*K7>'[On_ڶ#xuSCbS()'7WMd홐^Xp@[MJF&M=ۓ4c1&x>)]߻A1gfyuϩ5_m89'`RNveuSZlKk^IJOUGh]Tku*פbO9q?c'a6&Px)ن#BX_^v\FѤ8PPJ@r eϩxk^DWޭ$)c g{_29լ٭Q.35ö%r}C$8Ϣ"&cr'Q ] *Xn9`ZϮOlA]1g89 9p\P<@ x63~+@qxH$\>V:oپ/w1gʜBRLXwy&M)p^u?kuڞ)&D{]/2ռ"&J#{%?{N,6LD%t1ɴ߅\'F߳}_q1{Ęfau(D9,cbwҵXI@Ŵ!6!2 @U#[EQ2Lt? p"fE-Xb+qCe%='ŧw {.FXkC.!8;|uMR[3U{kr? Wi~Y[ w18g3٬CٔRSf}Q#5_.k5S9_0+!ȴCp}!(I T)ށ \0,Z%wΏfzzHHpD7u/aoic0(EDi &L~5*]txد1m{^8+N,t)tR'vqgc15uAx%yiVKuRP=fYB~:m(bJ?ODXZ"': ȝ~7 WĬM&*vf iePc 4XHJ4ٱ IDATr\pb$df<}qǫS@r5LC`Xl4,A;`tX3 [*R2ѯ>n=}~)_+o:I:tpɔD%rqT߶=+އih W丽OeBԴZ>yXAk K M0i*v&5?c <`D_%9HFs*Nt0|TCv ER^fe,Όo̻]un:t1 ~rYPM.<-$Ⱥd;ٞ֜?i0k3E ; dsd*dwBʙg=.QfnMq56DG+5v V+s?,ˮ=@?eEjU_*g%2kHvJ)닲h^?DZ`/*aYˏhͺ[;]Nۖ=Z6'󖤙 >^vt |hjb*F 8oIK{pUV@ad Pm^~}_ŝ0_Řky*'=ƣg|FЬĨT:i,?C°0%6FGcgt&!ĥٸ#1 (>-!(]U77~Xfуh٬(\!ZhlJEՁӛѡuY .à:S2tov]D^yI|sk/.]WYsøڽxRNj xoRfa".!qTS؞Nh;I;*h&=y.gakkfA~ܭb\;iW&b>*{B[OK:׼'ZٙT 睠` V19l?ɣuQ^z&1 KUFvU63_g ;YK_f2@.In.U5׿d¿?_|k8l.R*: a4] ޘ{|:f uep: JuL3D٣ؘV;h)mؙNQg~ 9ڈ˪:u;fBpHB{e\bZ&&rtCy-y)mL^]g<;P;( dZĪRH]t<|hA^2?C{F !!2K9LK2d=?c1L'?`qt%h'Eگ$}VsK  !o8aS_1+)emx?㭯 =[O8{?~ |׭bّجu=Z6r r=!\X~:68wȩ-v3Nݡvs.%rOp~eNţ8QsfɹCy!'w4uUwg-uUQU_a _R&\ƾ$tҨ p.y~O~Fp-G_qm.&呧['HKlJBBIh^g0Pcn}[)_IrҶ:Zٛrq-+Ȭ UߥdR.Cξڋ0;x| cL>x!{rOliE)G|j˥;RE-sHoCyZΩ L&;D# Ԣcbšܼ3EwL6&G~C4SO.K \sK}X(*%M1rlkEA˘8M7_s/[On7ԁ&s{9uIXZ/#~J.09rA5a5C2R0K|o9+o<ν7K6%b<~i2:(Y,Y E]q]:uJ21So~d]W'n[[\ܮ(EBݩ{}6]XZM3"'RF&>[TQo1?ȯu) >8b`IA gʀZNü7B]G'3Ze'r"],:bn\|"TfEW\3Y]H4 wHud-P;bܴ+Je]5u?1b[{UW1~fϛI.r2kTyPKY*V.gNkNjU%S,&+ht9ۿ+t<>xI[گl3H&4K¼(mha/;n9ô |K3>m,@^H`;|] jp/| qlk.(ɋ{lO8!6Q<~'j.:K 2+MMU.rnrdsًqm-E6ip:Є q.ZK9!D@FƩ#8D nESx7WHu7qմn(.BSׄPxBB\e"P**+N tX Oz8^k&«ܹqŖgRvTyK+4+c2\w.h2L=ˀl6/'J}xnzg@q] k?CYmLDh.+f U0[?<δ n`98XE$oRͰA{qT(OP=jj&c\hC[U-z)lfҘppUBմa2mht #Ԟͦm[ǩe":1GzfJUWBM]OE u8OJ\N 0r 9p1+k䕆u03 3P.q%v1eS6;|bc|;`\렗VdSs>Rj=upUԇ Ij6QbKel+=ͤa:ik"[[pj/V ]2 tPoUq4ͺBLvV=[(wD@u\8EQZb|sp{6bV{"\ڟh;;yŲ`u Y,#uO^xH:H*f`w{M JŭNpسbrC5LFIIIQ{IӍ fCQs3@Y#49\@%58VYi]ibr4UAL4Pc6oM%+UYFo {s vUͤf{gX0m2=RloNpNG۟5mK. Y4'/6bӊgv9IV=̘4!3Nls6)EfK:lck<)mQ5>8gs`ŒsSDž9f3H -[|)+m$@( zG&mLlO} ;;pi]^#T*\8oº@Ό4PV$= pUFUY{Ze.IL$ɺjPl;R ͚?w1sy1ݙV[)/ByeTVa~诏 +l?R1r&GevF-F#sAjOtBՄbwr}['1zLF ;!P[Y{7&:%2<˔N* u @ .Nx<珱dkRѰ1*?s=UK:kGarȔ'r|fl;ڒ\jiU=qlL꺦9JaZ\<=%8aC$+, xg34'e -!eBJ'G68=e͆IL@elU1㱖hBQRF>M0 Se0S{,b6S&/٨]*R9d% " uV~N0$3d6DN"XH1Ũ[gQ>޸1gڻo˺j {W0 ΅kpq4EXYݱS9ji0iԘp>L&ƒe%l֩+B{iTNh|`RW8Tb- ZŽ삙ԞfKά}^:$f8l#uژH)3;<etp.)%N!(|Kxy>'t0l4%;5lO+eq~yˉimfxboMn<|αMb\{w,#f3=iSe#t^9O|:|f*.7'L8u|iET6[G(!{W'{X˲0jb1Jק4v*S~6 1siXkQ4p9`/ kzXѿi-H,po7=<|w><|1=o]O|\^O?pn5nu8u]vh߀;ux>b;0WZo0sT Ȕ=,uTk U&hM0O3ꮢ5 #|r>+3!n#P~;6uWD!.}[63v \^ݽ -^D !s8^8]ew/^;R~ݮ&}u$ abܠ /aϪNA`0e*o D Ɔ2Ո!y\>H)Up0 ZZ9Ha*hFH# .mMQ)$5zH 8['\Q//qr `8J 8l ȻyXg|R!*|A [6'S#́ qBq(09Wyqȇ%1G4^PSA* !W>{jS@UŻg;Ů)j(QV 9W"r'NRL" -}dR2a4`S2=]{˼{\ 8W4QKo&*+d7]?O~̄*~=ǿ델}>9)TNՉS8Rb=q8z|t}~B/IHk?gM<ˆz:AG0Hn"0 ٖLfXk-, uÐn3 ڶR HDٚ|ģE1Iúdp=Azτ{ۆU|W!*Ȕ0;Qs½],xs093MxU6#!xbƧ^jxlG|&O y*Xe0ׄ6~@J)-~V')8>M8i@ E㪠?epJ\϶܇=',kEku1$J@&<.rp/.kVanu0 $qv4/.a7IUo[})lg'•hw\RA5gVFp1{f~E5˾no+{p;kf0P(` `8 rrK]m"LRȋW?{sXE{W  4vCh7R^ۓbKe!#Wyu aaqwKd/9',$Tlg?/޹ D/+V: 1nq40[n;;a0dx|=|Mzd3cA U|7;Ml_JJ&+8, U2,)ThY!PČ {X_$Fp`I )|Ge 5yp9G7o{|Ǔ7'oM(^w~(6cBc\r?b2cHbԢdKxUOEo| /z[öaL=UH ͷʆd $C[*a,>mfj;_jj j'*zS`~;k?<-H#\k3#8`cPU!}Ht4g<^# (|>2bő F™vB HHGD.Rܰp Ű*GTcJRG%0գoqX b\1t‹]a}ƽV{=y N'|޾`322'DŽ<{;ܙo#.vC7wd .O_^̃qlQ͍,<nhsID9%s8dgRL`QV__)KU磤{OᏴӈA"O!TdLQE!ኹX7%90|Y)/&TKpzCn\Һ* ?O?u`DZ7"Kp*;WYS#{Q/B9 Kv.dAGmSLb'^DmIӌםq3L,m`i6dJnnl\&ONXaͣļ`Z(ux ?pk=>[83)1a]LbV4{zJr?\" #;*=o~'cW^_.^>]hH&~oSyQ}D40P+SOlf70qrRcuUJ'8_>$筏  a0$XDbJa(20VhAxX5φQ1T2o1 Jb -À*h+o}g^~}_{ ֥nZ}3o|tҷJN;LH{5afd^t/bY! C#5~e_[r9&l?MZ@s@X2{8 %đ  K.~ILfX-qaF8p5X%q_;wUU$6ڬpj b #Q7JYeE]4Lr _'Q1Oijq#iQ~z~p7nh 0d'M0aUO'?Тi9pKL]S_ČqHϟ}3=ߊ1cۜtשSSfaW#G#>0`R0t?3G(>mjeE*spp OK\_57G08r2Te  hv1GyRgH50> MaoS srxGNO#jMo{̑kC{Wsûp⠧z}G}D谹L~?EAtnk3He#`uKWw H@9|JEܖT?NGC\NhvG/vMV1!?>#eԢqrJng_p5WGL9a$"\ [i8YG%3y %1- 44n /t$~xt; uϼgvTg@Q੅`B*)5ub }QLaunU韥7!*@txMND糠հ6M<Zk D(#;P2BX.u_uoW#8E~Ǽ޹-Էm⅀..}dfbN5PRO j:] RbjTfY$ƒG#'/]_`n?gRfg{b &Ƣ79phh~ۻvT4}-x> ؎oq +%IuI)?1B}i_Dmuv,4s a1+㈱d(p^pU`g|L Na'!3ج ]ZJX0%' `8=Oe MqŸHu |Rss9@& 9?Y|4,Sh{ Q'$RN{@ e tPb4EedtDds08l3/gt_z, g7rfb1FB ӘyP*7FXeCctO`C0?RǾp?ks}a"58K)' ]=3rSBS uǐ=KD15RX2 @()iFm1jp4&mGNW/p~]| .g[xd*{OmIRꎀA$ %6mKSN}K8~/fw[Ű@G'0Rt. KaC*O%ĭ~$@9rZG3JNGa(VPJAN%3JrJ8[p9ϸ}y֚QSë3nnFoG.WwXF 9c(~iuнA'.2UjgNP-:S*K.u P' @":Ъ;Ze;/.76w-7?˪>P4{;UN r^Ő'qv9x)@07!ePÝSe`FN&btpV9^}P2{3X< (U7 =| ~țQxl/;. #Zл0-زͼC_KUAoDѓic;NS[s`E 9'䔼?mv688KjR̛S}%L҂ptD"o h5`nf_`=t XxHpGnz80u(%#{9G.)zpPƌQq_/>Ka:Y'?7t=sQyf(gș 7pāEG3PMQ[m# 9ATuIˀ{S7/c zK|ۣxhb`L ?D@fx#A]?7EUGsJSFIUL{(Sw"\т#*Q,wC@ <›:Ƌ/L_z&}`5:^:cЁޙe},ps:C˟/*nF&I 99(XXR*zjGGq%'_>^}1V슍J1 ɉ|i1= S8ؓ[$^}U!J0>&najJqla+Ozq]|~{Ssk.Bm pW bqTT2s/FwDIlP(ݜ'66候kȅw ?<>w\Y- u_dQi jVd{m}ƫp#a jU JCSG〓5ö a@R =OaIrVzkayB'Av%-Ŷ!=J:"HJs>t5'.M-=ҴPET {@Vzњrt3 ׍,aHPk<7h RLn< xh_{=ߎ?kUNQoQ&LajSPrl)F71cf fVKFPk8 of(p<ƌ͘QJB~铸g>GLbԼ3A,hJHdX G% ٛ#3j$&G )zKhfTu`\M)d-\,\>|1gjn}5]Ocgk]ITjŁ;9Y23~{һ߇!_ECGwr@=6.]}Ha_t!멂 E+K}" $R Wpu4}T\ޥÚ IDAT R8=!lBB!r:4GQTsqI |FȉtB&GZ8>!Tbp*'-!@>qKBESn $6C(ܴI5V-VSYoǿ*'N7A-la-}OK"cU따*)pStbraUb_S7K7D$fPd?Wz%c7 rN?M).g/%_qt/9t̋ƪM6CCa5%%y vSU*Jr”&GŊ'C-6w [?Ob~ƬPnv_Wt}^f h2nպ,0f*!#rsvM2& ["iY"~:X#@S*b?ZbHصi8;Z:9xƝ-jxCx3T1ʀjjU 롄ϼSb_ajw fY:uG2R. )}!#0Fь{A!UQ E-'v2ЈCBfT)N_TQBA] $&Z]-Ί m6HD9fXKՐpǿo`j[O2=He14V Zkh %Z4ܜ7ϫG^dHM*%Ɇt5`{{Ag 4G'WV;?),W%c58IQUfpeӁᱏ)1Pfn 9! x\L Ws #476h, +i+i&߁>#<׽}5'+;^Ho C-ݴh^G`IcIƜea9_`,֒ܥm5̮x,>[PAD2ƒ|HqW#0x %c.'{ 3Kw@`, 9x=J|^B nu챸N cP'u@-1S6̮(~prI J% rf#dK6M)~bIOA#y@uɼaIzp4q?[1]s+Wk3W3r#&"F)C_b f ( Ӡ>QKV9.j'JH X0s6#cGc?gWίO«GNpp/ila6?{;QyYC 0!g)6^X%~7;U%{IS_ksH8`{>z7>tu|?g:SV'y(nqHzew걽͍CZt^ T|"|E5PrhKX_sI1{K,1|rBa/,lY")hy 6Z!9Xk8j(N^wU<|u])aU2%-/.[Es"RvGCG8?[i |%F5y^ D" mPlىbN4YC91ozsk{8T'xͪ(L.PRrN4 ,' gM%1CtK՟U#$ b Xf`( b" 2 ZUq.83>su>s ԃ̆ DN#Ea=lu!Ϊ2c7+VQsuV\% cnhts, G).56c6hgj]J/uxğΧ˟~o7DpjƻOƽ,hp~ٞ4jG( &uj@Μ8-lY4-ҼaK֝|Cu {~oDfTXƅ|-pAݏ)Y(qrJN wQŌnцwpn߽{{zJbw#T':漐8KrM]2B W&rTvBG#AJeɻS5BL`JKFȦOrU3L.&u1Q7iNqًPOo}E<Ɵ|mmy)::3.ΚD!-cKxqHxv2Mq5&3YmjX焒ϳJr"3|~qgwn_͋ǜǾ4UdlIADCfHkl|]v ,۹2]u X0匔4Z2[X"bڗ~]O zZ2QXW@ы33+ B5iXP0`@r2 8"QB3Q/0VC)E ݺjus3:氯NקzO@Cf rfО\<dÅ2bW1tnF^p; %l0n+D1c=d* QpjnB5uqMo|Aj_?/g; "j̐bm,c qcJHŃE:KmCCⴟQ/8%[_2* :\3Sq Nr("q ݗ"lm?7sp4 (C$917TT%7DX c>W+_:Yo}?Orns592;SH#Ywfn2U/PT}̥΂gݘ spW* Eb &h`Լ+#PF|Nx1ċ,a+뻽}Y/tEh>2u9S8s8d`ߑx 0 P6E㑽fTG+V:Jz=*ޮh5bη+8 GgA hUdKHn}˽3["Il N7sXZe$1j9g$T矹-H7(\l":PyD/E*Tu3h( %!v=x1o.&em ptHcɁ[G%uoɍc{{Qt0氃v̌~h+Nq&[GI$<,g`80*``380pOz#-jv uo RÎPzfp~uR 1k׆wP0䌱dT1:9B"iB0[t 1~GQBjbB@l`۫ggޓ%Cs09{|)(Y C(>1> B ~x8LHC>Go3ئg$b%f|—!U4^E Ӝ e͍iQrrl[ U%g3l˜05%$Fht)*!{nl  1cy&`#PɓRtfxdݏ`imW'|)SCbM1R!  o ='`;vLhU4 4brr30,s `EI j L$q CCJ`k%EÙPٹ.UIjF=}o}o5ռMoyp;ޝ|.߻;Ć;D# e/2bpt#>PtD;EXPtݺsD,t4Bi 5(%C+]7Tg20Rbt\SOѹK=HU'c'ƫ3Jɸl lg~6j=SEUÍӵ#1b xy_TF=“PBw$L1UN:=G^@F{C/ַC`eb`A}z?|]T)ȃD{A8[VPh.3`RZ_ƘyHۚ2)({$=) C%UUlČR"?=sMQq:1':1aV7ډ,YW#pSK|#Q^Z2A'yw0 q15Ç`hE m m&"V+LjuiIh@ELh- D8mfО.Сued"3>2ʙɼ'43#^'n-N1}1}Y]%ʎ\j5fli{3E،p JN03b[5 D<J *a6 p|wU0U]bÑ DGWb&u}]$3#GC>#yn>^5`uq'?&' fq.Uʎ0P>V\ )%T.P# SLc2U[%%S0Ca0޶a[4tJ<ML,؉b~۟|ǟ{k;dft! *h*`s?M}9_Ex^So3jއxV-2R(2WHp6{pɻWmcK\VV3N8q(wCkܾ`'r*n2@`&P4h`tL oblb\CV-#-qHwNބ@j[XH Lgâ{[-EC=]Ra? st<=ťS"Mw4!;R4s_zߏ~3HdTk0 *{x1? 9&zf _W:%Cb݆YWw,Ɂfhѹp ?Q@M1p˜ð,3Luf\F0d¥_z'^q䜎YTQmJvk+fW@kUwPSSXeP*_3yv`pgc"(9?dG\NRFIYePc$V CAaD`{;[sw9~MAfB_@*(ó$7\}]BÆT``:CAtq2_tK:4y@Gp%X";`|‘J0'a(d}wOBgb,~߆\ `7+yӣb10vAwᄅeӰt^Tyu/?/H R8ݮ{x|owBDpD*[ ?$d 6 >_Oka6`Us8&X=8_~6]=][ǐM0sx®*fQ?9q"d6m10#YmU¢p>7Lƙ)&?Gz=)G\6`rs~jP0y;\L S$qp9_|-!'(:34͆ZPkgO-ɛVLKVWG &8!'^@HYC!z M~0$d/uhSBFe;-Bf4:t$9ј=/(bvơy›J!TA,B1'_s}]xu;ijʸMfB,l -dT࣏Y:P9{ǃL=3ؘ)3P\c6&F 6d 0rekš>fׅ!B8tjBm1dޏ箯p%(zoP((1-cA36Y7%a"= SS:˧3#:'2bA{pi11NƂ&E쉢%$]ӑ?b o~7?7ls8*b$7ii{=8'o(cq5[Kb @=.[[( +戾E0Z V Y.ɘ|@4dY 0' f4%l1'`opqo;#Aٌ&̵8(Sk^;#CZ]F$9P)AγA܋<&w ?݈F 9'0rJ.̔7elweA޸?{]hG  e$.5BO! IDATٖ$AkwL|ӷk_}o{"R+񋺞"}mZ01 ];_aW !U/QGE29TZ+VU@x3d8 'Ix`fF\aג2Nמ?:ӯܽ>@JIPcZ}Pr{X۲<c̹4֭Ub-RlĄ#98rl,H92Czջ_MqS2gT~ƣׇӄ/x5O.5 :$I(䶆;M3VA\Ju|4?5[ }LZdGY'Z](ҐQ{%%m}:ji9"A_ zkR&$ʩq8(?5L=T 8 ~~Ü~ YcZPnEROŵ&) V-[u)P,T%ZKyi((8" i"d Z@T)5¾C`>!h_Ѯ&96|3{_4*fj2u#H.ͅ )*f4r-79aGذ;XDbkTP]!C 8xΥLC@UR8[c3nT Aʽo&8:߿ Wm S~Mqpv}NGo;%gWP +5DNNiN5}wX#zzC x kHXUNTx!THh'TdMXA;t$DT1s F}fC-jf*^<p 1\L#RJ[gKi Abd[+)J5]_(~ )\m$A85[%ۄG_.+Q/˄SVR 0+4#E]58"ʗCOB>QjCZx/F #'S(I0HS)\ 7MJ"Tv ,4Ҋbdc0/s zܵÙ*S;m9V&Ppk>gß7EnG| @`F`*D/~:W `P N[yES^T@}XsEɿc95rAqIT;w*rY}S]U1T:2o{dic qO? \iƓ\?<%;XZ4T`FB@RF.$dD5)_+NB JsI j-Ud:){( %OPiTN }SKoqDh;6N@XI'˿&t1!8R sJ;WIT+K{-;xf9&磡ֈր !JB8/TV18PRJ0]eS ~6v`m`~Gϼ%* .Pw=S=~3\[l^Y<[w 8%QDYS6>glw Rcqg9O}|/ߕ΍p>GF9a"?nezL#'H(*14krGJr63꓇P,KNAaR J~),T]'V>| o~o~o{W)HuVZOA0dfVs"FQ5_143O{& ? %S5 1ADhAЀA1 5T>)c &Z 6cp'[YP\q2)Z1*T9Q MB\ ʩ*'\PZ(WJAr D6P ^{__q$*H裕m^=U=,ROR1ꆔz>5N=>֮]9;~:M$j*ߟgW4g7YA-xށ#wj9_rIЗKƒ+^_c74i0cZ9D{W;lCVK1XCY0Dh0G)oL"QdRcTw@8/[[y"|][:'=8ZFKVJGFMqPNƈ#ԭ >X.Pd/<譮ԃ~z,C&yG5hB!s$@8. K԰}f,rn7:*b?R`2vt pk8/"U|5>wwxm<}{[^ ?F\7 "kƁT|T26^M!ۛOY\ KȲ}[.j7k‘?y\3aSӠb3.hs6BEp|dVLj`,oP[Mb_#t*'cP} ƕR+]6h|7_фKe<1]peC!QxB* `KZpq6X!1 ˂A]~fOP&p2%>O-ճ-#s[F#T}R@KGn4ϊo\t.gzۜX=hG:NCNeSĠ='^|eNj73a>dxnuI^R^wmb>N,^9:"R3@jA)C:F96A}]Z0p]1=ħ| >cgl|w?'/>{DC+ U1(yGR  s6*N{b^@eןfrܡk qGEi;Z1hp{{Xf- 6^Ƞ_k>8-T$kǥ?*0]Y@0R?@>xքLrS oW $r2P+,*V_=,P1 4*, P5pD 0 1F!r"l!"Q w<%q h֟Mg/\|D9W䅣^4m\h,kw~NQ*CPD6)J6u/8@Up69]\ dU(ag8lT;nO73ӿFoz+ΧC"Qkg!j0f<77 3: DsBS~Ug.e>x x99p}D[wkeWc1~OaB\q0O<KaWA8U>sQc⫫(@7 WAPW~g>)Yh 8pd0-t']uy9'&Gg@k(U|u! ^s;)F \ʊTgP'P$hbiAq.m* t1kRO `. a&㑳C@.eu`IX5TeFJ3zƘI˧q"\sđ́:.D-ZpnF B\ʱB LaM}֗'3J6g> ?uoœ)(-Rj*ҭa;FQGaɭҕqGATP gS,~p}H^ QJ=đ &Z@*Ts) r sfrۉn±sxz<ą+yGU.ql AQŭIR{R?E6JPeEaX9<2= O%c﫨gy4~/Kq{¨qwP \<_bG̥T4sY[4!Ɔ0F]plX-|b3)uIu6FL1-c#- (Vh *f魏G? WяϿXB w)|jQ9g7wECV= dKYN_I `mGU?9nK^ Vrmj$VY}ӈ u[c-\|\ε/wpMoL.1Ń7 3vsg_^߹qnP(!TqbnIDeKXEP [ qozW۩nl6ƕ"kN%{OV;~qAg i:ű\Y(4a怺W5xbd&{a0lcLG4}HB* XAZbڠl}5Hq3M%q H8E(B"Vgs)b4hP)#e*~Z{§aԊZ g]65")yIpk3Mvxބ7=~L3UL|9GV8Ξ\u- kOؾwʰpV*55TG.&İjK|۞¿?ܫ40q Ι}&*7q*"dX hcʩ4kѬ*+.<Ue4u$(+!  Dp>9VV0% [e.e9& I _W|U_}|z3w8bښ{} v\L#:p$ǝDj5]D+/֊Ps^,P;<([)GA+/NiɅw`=A7zVu]p fPps )WKZ|. .s\U\l'Vq> +KW&3TkFM|Xk]* ˾_ocFŋ>5=xI'("1nX4aA\u͎ \{ u `%C ɗ\6=1O8,ݷ'{k1Tvp6vVKt3Mc&V` .F >?hgtp \P~.y!]6ыNy|K'_|x=Αz\Zb10'/o^u,T~_%~2L_om j]PJ!̦1g_9M]n;V1ȺWU@=p*SU\6Klt^{{3v b#[plՀ8".? I˘^)$Tn؍D2>W}Ed[j^j%`Ϲsh?uX;>=Zcڔuw!,EEƃHV9vOV0j5g?{e?ގ1\A];d7-AҾZHP ` W[pv?T` keltT<8ߧҼ'{^4 jȅwiR*T4OgT (z8, s0 ?Y|SVdvN Ukwz6cf3`3z?u2MzhTϟM!u-JS)a)*S&bׇCx3|kG>ww3CJ.}<:uT[C04N=]{F+>Tq1a,vSa\Rw9Wc & A_nR.H~OctLu)OڸX FuGݍgjN>VRIJwjn%S`WcbOVjP\]Bj[j(뗵u۟l]rVMAuYW]H; h};Y}Z8 "FSmFܻ> b#siG*R;Pgn]lQj`M6NWbnxCl[m" r@<LI.*aE'OB`;LtJյ%Jh~}e?d?o&7vuv! ^֧+x{H\̸n9sz.y%/udtuFUEPsVbK IDAT],|vNOkh8xhBaG__݉.&M/[^bT#1bb ؎ζl6./Fl 1`LS}H!b1 !6cf ؄v n̩1`4],E֛@ɻ;Pi pc4cclǀ1(rS0CZ2QԿ2;Tb~+&MPlI e''O YvH+.Cf5gjhċ:s@ Bzi snxń黯͒o| r]ymk>&QΘEkWK(ݼzc.qNZ#.+״*WK= ZbBǁCRR+X?Tфš4LC*yا9U/q>^DeD5~.a=u0WmK 2Ry55aׇ!p<DJlTAt,N[ ʜ2Dl#Wsx e0=FcJ ))2:M?+_/ކ) ]͓2GUJ[gӀq0af2lf)&cw4Naqv0/a%RA Hy4Igrہő0N*ٗ~9 l6`-pk,u4,.rd/"Hqs9^1*J! I|Di|'  ŀ)RʩTm KI}1EH5ر;onrx*vv,RGǑwlILU|vjVV.[vY\H,h5cN3rS "8lpyx7geAi oy~sw$4Ol9 i kq% F2=!I^ДX=Nq]7/7 e_buRWT&J #Zv1*www>$NϠW,gWXPđ1bT  C5CҀLghs@W 3cwx̤b 6Ol).'/W~ ۿ8PTz,P9_êjZWX)UNW"'}4k J-8L&ƨX@A0 j횔1)X)$Zj # TSAc4#D1# p75S7+ɏݥ_v m4 XĵT7?~s^~?癡U^i“xQL ZI]:ʺRo&(/hpl`2mŦ\.!-b^ZBQS=TRΗu\L1`LV-U;2є1Rqk~O:&'_?ɻxS0x'AH`0f*#[4AU6{_~\$FU~Di MLWB%Vse}V8R$O5lzRňmZD %^p1; qna^`<a0x48I[w\e-3mRneCcڪ:uX&чćK8ÅBsC>J0'(Jg ' P*](B3|e79ǻ7ɟO]Vh2J{v'S䮔jEhjN Th)VÌ`iZʂy.Hb.F{mĞ8C­.cQ(t,vi@ a4|=K~)})WÃ9A!8ѧ%-c&:$:3)8iji(l 5 ݀xڗK%:0J#XD[M0 !OG1<ϰ? @nf nUFk<5Fִ~o{7}{ mkm'O+gsڛ|UoVۯwzٷƎwռZDSgˉPQ\BUЧNl |?ɱ1n2@afjg^R Gs엌v; !b"ܺw\2ȵ SO{!wL8ycr&G뺦YF'=z$jʑWOѰN5.3SXP R̭/1_q R#}}c/DT[+rFP"dPoN7uzGϩ:O>:86#eZĢ+K  C)b~6UnIg7\26cto^?7VxA}p|B/t=Q:6cĭ 1`06Bp,󮾊+$ #,D$p] gNdު=syf8腯OpL ;ďS$kɠF:~H&BIӆm$-sH+ 5°X ]aʝǏka< ִ٪g(4D=M%$Mu'LFΜD3 էs;J!x|xY͛=c#rj[64Gm QT-b |/'1H<>muaZCdu c*"Q )P${B'V}>^+^}.xDzp$C!¼ YX̎5jY!!-YL"MQxmsK{x<-p~ >h{awa+y5tX 0 g〛 v; UOz]OnY#HΜ٥]h;^qɲzw-=O4`%̋89(AhPZ ;,F@|AZ&ˋ{v䠤<(8FU?o96Te'Y]~RSAcdx0yOTJ́a/XR`ɅdO+> 5epb`M X2 9uR5E[KhXREF)j>x#*C`hWE95ȇ?{$*n)G'shP1B)U VnWufp 1$Z~@AiUvyR7~v]@ߧoC#L5#1FӒqVKvn"u_x/c}6 ٸcgl%[R&VSxkY_p}(K\})}-5# KvCϾ|7Q>u9/}y얺N:.61 '71nHVݏy@jpb?u>9|G}1/M(Ӧz2j5~6fp(PmEmT[BnR82Rŀyrɗ%37>)5wĄQҕST(Ps1IÂ`) ;H\/s*(U h$NF]JU>-N L\K0,m0P*EUU"Cl|𓟼=v%TZ<\a+!>.noAD/ Yי0z$MXXRKZa=R9 T|V#x; v`0K+Bqk;/5 TO*q3πii>es0$~Ypuq{;X㕠VuEPNrs=_h Q5 vɿhV9g 9_hd;|sf _^awiԎJ i%jͅ]HT%/LACi{o m VDzW QT8}59H φZpsH8 آ]vqe nJ B?B??!{ց qUp vKv!vicouuD`Uҋyy9u3!E kLs°yPh@+S59k'bA6$>1Qy RsH =z?G^³QQfXv3R#\)+Jnă}B4?AB,$$XTy>{l0<"l}y(gy<X8/%\ S\ )5ETG^[_OxXU\Hfh'4Y,zLi;\=0z2zn tuP`rOVjwCu׽I;m:HS4,|\D5r*(`Qk" 9]j6(vpHdoF.'3‰\ PZ#pj; Vq<vlQZgt+"G">lGw ͝(%DFB`G a!@&0o_K@_z!HxGV PŻ(ohTq=dGNLp6.[#\7(TEj,@<h:BdX \օC<ĔZ zz U PC~SVjUTժBOdDWV=UІ=+8 ]O#eQWҎFA d4㽤\^J[300vb_JߋCW#)]ՒjpGAX EO(4;!m"~s5{s≋-v Kv;"w&1ȌE~bĝ HOKI!D>4Lte?P,|)s@:av.u/XXGZE7+p;1Fl؎Q1;w#.c j33&xd|۟/|GqO\[\88ПgSUq2v)! gܖ%(zȕk"ZYn6bP>PO\x0%v̋R DiCiC-5i*D:s-zQM Z/^6x58"`"8ow^G>[;R2JJHsFeB}#z?ӹZk/ɒQr^}욂+yEk$q2z@!B#ýYeKm S;n1!(`hh6E0P[ݠ#\qؒ$4X%[LQ"s{N.p.|2 ӤE码9eOJ*q~QQe%2[ Ult7'rL|m7$:tEnsQ=X7践]l"F4YRmY`%F%ijl21p3T۬ԜEy$KGv88#6,wn"+oxKNW~e{h-qtl֒坑<N.UnNGKz*CɪϢK#yX*`΍44U0.7`nYn$eOi?Ru5Kఛ]V *`X%!LRar<]w'?/} SaAƚz̐f_^GYs .xԋ!32ojM8qJiqD{~+X#F!yf=>a2mFoE[~s_9{y1Da  :^u8NPEAƺӄMNxi`˵v9˨x)$0]! ^ hϲF\jʹYPPi,Gē ׏SfLSm:jaևziq9e}"oiU-aDh4mJY@&$sb J*sDžBlX {7ω@X|3*5٥REdw;8VCM59H有`E,LmPJMu3S1IPTpI~wx$dwz>66ݞlSfpҋs2*Yū8^R ZGV9]{b&+8Ǧ0VjV%|,qT)(e?JӚr\t eZ4d-:IaܗS 17]oJ;XsD,Ph z AA.*Л(>_s][-< rlƁyg9Kt*ҊײP鬻hmViҙ+d?!Q'6gh?)zط+ϣ6,Bj C`-?gK;Gxc'n< ՂR#"w 4*k1iA ׃9Zo4XW]3RevbrX*:NW+ga*pLz , %3G]X'cYgC\{c-yg|nlzCSuK?t'+keSe*conex֜0}ɴDE.| ^fڲ 03I3Pٖ4+M>N-sЕd˽ny#YDh4{PyMO }Zqb'i:fVRP`ZR)&8}$.er17t-Rs΅SLU\5hrlYtBOұ#S;Ŕ(Yْ[ R El8g+)Km_g>›Ŀ`7dϩ|jRΣ>n %gwn^Q3:U_q9#ص́xǯŎY K@:sP{zUZC1g$\ygwh\;Zsa(1R(ua[qcbTWP@ Q"LSLh\Uǫg|&y+|; $k:׬A*FI NWF2 EEnG} qX\Pqcҟ-x)f*Dʡ-\yͩ|K3}JYPǪ#r6;^R}T*} #*x9J+Wt%EzE: ?M첰4!rhr?1N>x:mF%8sI/ZU~Zfo 3 FwvvD+2_/;-K&|ͱs30[Wkb2~ejA"sU-!YLxѳ'}`1ʷHY}f*9i,J쳈Xw8 8dlL2uryɕ(yO3A]tREК 5[z7q*aScmE"S. aG^tSjeRqhN֊NKo$R6 9ٹ++^~krm>fyɎPL,1eNP2\.9xH,Z!mկU,Se*i쭗XֽX ]Jc C)m1'7U;h<"IVXEu Cւs ϘP<^Hv".KReLYib0p4l$h[j[s隭YL5iji}M 5^{[T@~f/.ZGb&R0jm{Xy;A)͔Y ۊ'UOg~k%m'd] (kqR{p:u.OI,GA\؎ Cm<;dYᏩ2,E?FxXrA-*ZDbRaHY4%#HΟ-%FVsG5:02Bghꪤ/|o/]l@O̠\$UMm\YBUzAv޲ן_C?o> zۃȟ|?c.\ԕ Ua!eh:R2%Etf|RA.ZWV^}d >2L8;^?~-x9KgZj{I'Q˜aP#5U|)'rY5r]4QEBJ*>->]o<<}b)>Cr;:{ 4OOfZ,h o=>2ǜRU&Vc%+B˟k yߣe\V7Yi̻f+b)긲,\3C<32L\ ;Ʃ1e)w8k[֑r%~;T 0V|g-\u"`t25oDlVKSۢ~QB_Jgp+v ڄਭ`PG& /Ls oX& lQ f&Xbg^NS;t4 ƛ+++vȦWe0kz,.,V5z&eڂ":"*qYAhM^S3;v"L ۡ.Cc*C-RlJnɻAjN!Kap !ST:gre2V?'&Y:Cl}*jɓd_25)KHA@=w6vi~_,uemQL[vʬP,1v%*GcԩbRV1UȓvH폝/,^ǞͿ累dkgMpEbtƐsGx%w| wO+69_zi1?>Sa_M-WȔV)@@1MBF4x^MW IDATZRw!MPβYw߲kXcMB#vis[n&$[ k zK*K< )SؔPh a? '͓~cgn_N fe;n\TJd髂`fVoC{r.BcSm]/wc5QqFыOZZfH Ӭ \LȜdc8d4@i֒+P%ŭa邜WE-Kgc5uyTؗBVbJJ+&+/iF4[y)lSʲ bwl v%Z3VR`iW}pnUDZՀ&yF>.^a.jZebdyE>|<'XjѼvc WFkPpQf.hD2mIJn<L]bƠvL<6}Huɖ-ejq';cI*_߀rX+dgyN֯ERI $t![RoqY}'qEkFb8t3jz$ZU2O krcd2霈s6o4oا$˱'otat5nHgNBz3>Ϲ% ?vfrqAY5[o YRJIzFďCCJcA 灣 cʜ*Gye;"c)qLXcRfK,:L1D/MGMiiL&ʨ+vGo `''ŏo1Tßx0%92|9PZedj4\f=B*YE{ȕHdNۘ5Q5*lo& !ZNsQSmiqZhA Fr- %;vS"*|Gٚۆm18IBs?}?-neYr"_Z!v+GZɓذV$`*%;G3:'V+Ǜ\+ÀW[Rf,a`YzEcd,Vkc*1ei-cY ?9>+ϿkH{=T;\T8+ֿ!]n׎{~_s/g Euqnk9MբXUOE+ZfTugەvѺ%`gPZa0Vm^MGbu,ab?*VȀ<#.,J\k,ipV#q/})%\H\- \CdQĀވU>*ImMoWVv&8801(aU3b Je:.m%)w$u6{Kg2)cPs.=#Voۯ~ï) #ْ&遵0el:O~{R?;Cg=34:Kn8QHa:I2r *Mʣ3f`Sd  UJiFtZ1 لqF04S"YzVɹ)`=C҉52$1g+Qpʍ!:,H(#l#XpPhAu ck{ p1Jݷj 5Cud׊,3NPԟo` (c .: ߯5V0Inv$ kOH EҸDeJ&]N34 lfĈK$i \pNv!TVSi8ZZ4e}+~ʺZZ ˤ ٕIQWvTIԠʨ& "|5F"4Zޘqa;$YI̹8\?:?gg[}pUEEh{Kyu _}o GÝ-e{Gn&iM_-䔗N_Y(&['x#(Ø ',7Oz=ܹ-c憌7)34ɟwg,!v&Z2y gν!yiy"Č] .,s/j$R+ژrYCΙdUo?CsF4INє.&s6+G.GɭiZLMoY\y:C WTIMFS{!.^B-!xLc)nF!:)%o/Lօ}lm]9}$1Z8D9se9Юkwa9CW/":4d8Ɖ~`zO^7:)*j_ ѵ A@3b}Q8:Xkf8ABWlVF֊~7%=xXrFwcfD<\rʌ]O݊4#-)3p5 5AL"!WuhXͣ5")UCƴFñnؔE{>W ^*9c3|.F*6Jpтk'y Oݺ_>k?fx2r.\vݚ=^=\o <D,\۬8=iz=aVDNqYõg$puhž(T1(Y9ld/a>cu͉b˳b̼kzBO}M+*MhV*Қ(91R] /; Y+3$[DQ6*HQs6KY;JʒְR4>Kd+MGʆI-;0r-r3^vr62 ZcUժI郐߄g@.XS+8f.xL>b򒋋;;U(A ^;."4;(i.%^82nԖe%Q w.R2Ðoҝs>Yqt͇V֛\;^SȕBˬ8X, 0 {i*EϱjV*BkHҟiR;n>P,g>eeWypPHjQMg W͕!j'ZqTwit]`\ ; X%1B3=8%&&M׵UI3CVzz`7Y~`(Bkk J.Qi*\\;G ~/l x5ƔU [PêEϹFlvUm4oBV'뎻#f`$+:ke[랠d]>My=Rj|$9a k6Xۨ:ۏ|nC}^Gb `,>*r8+}m3R"*XAn^srUlxc3a_%gʢF]#9⠦pn$! |T'tVc>`ib*rj %ƜF? 'Ylk'5+z+7[T[׊55SA9tnIڲ JMg|O=s?{N2 >ݬ؍#\xS=G[f-/YU>r,@Ɓrg[>;lĝAu˄f"ʶvg|ᣟ͊w>twt]T]B~a*rpEv4+M%Ӫиnjmx?m>'x%Y7M[FOW~k5= 1MI:W c1 Is&#Pc Ye[$Ea >![e7f|V3w$qN.0EXu)Q0΁LQ(UBU蹱Ƽ< ;N,Y1H!r5wѬyѕȩn%F ErDEcv3_h3T%fu|v`::X;0roW}qKKv;*8bਏt3n7`<2MJ) VB 4jQ]|䋷Wo!?<~ʱ"C5Ҝ@42&:~ן y#((VWމ)+|xNR!QOUШư(kgYӌHueƳ"qV,]Cf<\g$ %6$\rŐ+ѓYwf-TcLM%B9XGS|Nmw缠zՁ%6rc_ j531 ]g喕5um;Z@@}Fo,S)ܺS 0'-5S2ՒV>ӿ;ܺW.cD&~7 |17:~Mۮmxxb=0rr3~( b'U2'- u j/e5Vu1PCq#\4pGn;V޳=D))!i򣵒1PeG8j*7fBή,;.ǜ4ha)!:KM.2Uݎ ; JUt 9z/+̋ i1c_ov' P#厕 y9.rr'7?v U0&AUwk!=Zz\R ]4 Ava7jRKTɉK93j*'ED7Q;3tֽ|9q* /__~KL&bkŎ$!]&TUF>Xti,`^"A,lOАiqtU$F4M%Ø˽RR])-xU x̝1ȭ}D2V=FrwYr :nGV6r=XZ zzptNci VwoY8 ]R/˔pRp"鞋U˸5$_jd,Hv:]s^X=(Tl8Yrx3ґOS.5K.|/f_~6Cx29Z˅h鼥Dpɚu#8aElCFň~e,fƋݝ%z8r?IYd&D󠌍 8iLGGQ IDAT,Op X݉ =w//0/kf~N᳋rJfu-,}֒Rf+Ly!}wFNY>Il"jMd Bc\|۩T*cǖ/Zy1lV4 V=__0Uf% Zi%mBS܄%RHКtkѺ! XlN ƈYDDvI,u,4j)YAcU18N4#LeYre3Lzjf?vYP ^7dr)UdAi6s4btc JM'(ӽM'Ւ NlF9@&nۑ)SWQxx Nבw]bܻdHIB=ؘFJpD'5pYM4MSLwk 2ݎgT$?HS9R688g.RtKNQSi`UFR2rCOHZ*"Ec,6t{K<g<]>ZEV[8h7rry]dYŀÊ/z:ZvM{WY00LX#TSŧ@W+).z?&^NIEܪ$r7(R9H\yc <\P6GǾ4VrX)El[s#zMa&]Y{q8lذhtlѦt+q~Xo& >xĝx12Y_k)*Ox+pa,1:quDr N]ɥ JX2}e; tcnlWe;|zECc,go7 oE~srۉ"k?`WϹqr"9]񦹃I E4fEE\ja?H^r{XݱQb (QEB wq\HD%Q\ qqsZk9Xkjw\}Jjמk뿊cO *g'~۫!K6V1rapp;.2Sg!!pys:޻U-ubw_ӯ=+\hd,Zm$S.Ib\\lp{o\۹{0f0:R d5p\Ko} !`-ٰtD#aԅAYyG[զR3|sOxv6ALl׌75uaǓG[p&4[OqcjwGc?Wޝ3O=1KܗJJɳ5nfp̲_,#iBQ-,@281n]\gn@w/or>x޻b\ 8M rL Ur\jvbX i$`E}?-<(Z=Mg"m!V,RNV=N͵K nó$;j;,'REPjE1 |o&7Ŝzi?RO˽CM3BeYmg|w}럟Sr"c^ͽ>[xnfM~}~bm 0emKN2cG&*C}fQBZ?ZjpDN`+x+5O_ 6=:;ьVd&,j}r*ʳ-e\RPuR,Xeʥ0ll=Ǵ.18nS`^|ȰZCco`B{&׎l:~pLҸ9e<],\l#EkBƦ57+xe;߹曗5ʴ̤q.P>1}h׋^{'u;oZXX;Ejh9ۼݿg'Rv&hcOuv){z%>H=U}\vDy71qVL]\tݔhNm9:Mc_J!xO {KtsMx6FlX60v9, sjyN g0ٖRyqX*/n<;_3xav,4{gb7mP:Ev;}s" +CZ *h+l0FC{F繮o=߱Ols_+dѾƻww2ͯ3ė?1ߐYޞ3; !y..W$慲&޻s},Uye '|ߴ9wsww;I+7ɯ7k~]$ g)򩋑ɖjð^nI)C`8c\?6Eqb@#oB 9樭psw`=bG2jvнZ\xq3糟@Zb`5Dy֨ 77rĆlWuAcDRX:cO9\=@,:.Pr%a e >7Ģ[1O V4۞C8&yoHMJ),9b޿}9gκ8G̽p"LM\\L)V }B~Eq7/pwNڇo\~(Dj1Cn /ɹ"Gra=dUrm]g_;':q VċuCztj-35ˁh諣j6bJj͂s͵( !>/U ɳop=e*O#IWUb4"HKC9Gp 8-M,J1)d;r lrW:O"Bifܮ9C'$^{HmI)_Y^6c o~7߻kjy(m,E߉,'@ O<]Ws?"lO4g`.*ڻ~; jE>r[Лجh@,gv=4ʡB`3 i(̀8Վ'fC[{󁆉S*l5>Wsob-`HrJHSnJQ h钍FP bo}jW8}wm1F޺y]wwiL.rd{eHlV!|gEc O * ߦ-՛i? WRG>:GT]". bCa.fs!TSm;q1/iaM]^5:g:Ē+2$*t>ܸ v<=i*svijG.J &L=2YtQq+eGi|rynT{ЗZ 6;[  5t݂+?wС4)R+H7{ǧ#c,ÿ ?Bov\c=83クo]q+K6zL< "#I:q.\0fQAUVnJOϿ*?2 }eG_}OoO>9.|p3,w)"+>>X!;*{(}MJ4 !ν:GnVl{nf.KQ._yL)o"SaY Bc6c`OR>,0k)_H1E?绞@P$Ei{q8dC*6·fAaHGB1H9f4w HƽI1{U#=-R]QPׄ=CZxLndz\@^L…{y"aw˚kEpwl!y|?޹90 ogvͰ<=،zW:ֹ*xQ6aNj;dR`F~>xͧ>DO#クo_( x|q&C'Gw:8ێșU j?kJzJńGy=24t,"ib{w{{XxT3ޣZy2T Lh&]LߖNs45Ÿε8#[+ݔ@XGKsLK8*ji싞lє o߾,׋;>)RDuq^i^ت.,o0|o02Xu_],Z&1 ݇;˥RT|.r=U:/Q KV뜼Bi)6cdS >͑CYz[u8U }Į&8AHJQ޻>p(Rx31"MRd0 cR}Li|9ݘ\YdMЦm/ 7"4wsFXC ~j;hW77Go\W8X[(soE(6VO{Qj6-"dT 5;ã!St"2kGvTR*`JjEhwIybb-~ 9+Xh)bmTwR+ V !"᝿/֚f,N.Aπ>5[V)EƈzbfCbOt5bGQv>zeh=*;xIX;?xn?3b8R6Cd8f!:) 8DvUy;h5]$Gt֭ٴ#sq=\CŲE"y&+1e%5ea,ܥgT<^G z̥N 8q?'v>Aul!_?)M}~)j]`j:SgoB'JexF7_O߹O7(|Ы)s=i2|EB딻E+6Tw4 y,0vœ`bn}MOKĂҵiVxPk֨Eyr4h!Piqԭ>-3d?M(:{`OUL`,g)MS9V|8L0杧@8,0)Ji#v gmAqd]@ %WTu̥[$EmLhB#/#ga7uxމD001F|Hh?O+r> 4֦wnuvGAu/L7i{1pob hM\-z|U+H~ xJwX'#gx̢ذ,EjZC0(j?[Z{uUCIۃd1&DZbeU%xǺZZϮmF?}eJf CL4W@?ulgu#8( j %wF]|SuȬSdߓ;*sQ\Σv]Eq'tľ҄*XCg]gQFȲ()q$Je?khcwqٰxcp˺,=G݉Q ]Ӭ||)1x`*RO ;,zͅQfZ8/a?\iVZ6F:W|]kF TpD0,hRsh-a;iLj%g(:j%V T 3OR Êǎ2/%#΄G0ҰfHb"$Q23N>{yNZ0RWhZN !rw&ۯVrnr(=n IDATVWGbCv+X`VSꗢ'YA/C`sQjkx90UUdzmJ+SXQn*@_?/^pr援;]]]ѣh "GƷZ~CBk/|1Y|aF[=mRpu2}1WIFcv.ZقW{w&`i\Z3MAQ;i3Gᜱ j RVU)n"Y {֏iDT 1_{FV/:Ӝ]%+efv!avkbxVv@hcÇTMZ+(Z Qq"X%S[3 o *.x;gRX8||qLSwi`5qH(JuNW~^ܘ0“Tk_X:u>gl& t^H5AkZY4obaOcUL\rd !xBV23M̮V엮},=8f,'x60G5nlEE㰕G1rjΆd[wvZd urʜ39 ܰ6[U[wyq?[N]o_2g^xT=v='81Z4j;g<7SW|Y1wݡ08뎫ZHPp NL~̥X9υ#cpG&r(}T笫.r>Lo]k1 6kBCeqP{8Vc js\Sķ7+y{|뇧$Tf1Cqdm4YM;K1xO8U楒s6S9>E/)c"dBfSͪ~M*V;&nXO[_4V v xyk~a-Y3F6| 9\nU  1QR%׍Cp1y6*C0k`S(]˒-3\xt6k^yk=ޠ̕(&N8_;~-$iQeޯxWG76(msوQ%mj8.kd:E;o9- q`7$[OJ- -JX;g.īhr 8>`Mk&n;vcnV J_eJmy:{MZ4z\nWuz7bPn9w߼7{lF\ٮ~.Jh0&;yaS80@}s1e%j4{hklS䐕YH'1_VY<RQZ] gW޾zYSAmlg1By*߱a}wpdA4X'#dJ.qݺUPSZ)CK;L>G Q!'zp tM-Ly 輅RBd C +V)b7mO==w1z0QFWѳ 뽰b!}^XaswrDdSܱFsi87&4h^NN8R3ivߦ 9Տ2J9"6Yj.K3w@-ʛw *9VnlVi̵r6$1Zo5Q/ `)}[-ɥ?@dS)m)8EZHW nׯo\c\˦lV~0[R+c_x/=.OD}FitIDY|`RXiurH,|p3ya3z%[n&OԚƒ.ƀJ D{ -Wl`!2 6e5HYy?t9&nxKEH4|uΝ:_;akIQoW똩 K! ⪏'B8jwWF zZL^E^ؤ^T-T-u~VFS_E;cvB_39>9(k BZu$xkg4ioj|gk᠍E E41I41TD-LHr3F8#<)9-Ka;X։6x~XM툈O4J)Q{VPR Mw߽,^^-:;tHKwnM7C~|ڂyDϝwG9ad<ڽs.CtIV'\Mkb遾f9c ED=^G 9 O9;]$"PѬ! }Gp&ZS6ځ_SCs֊u ;@#BwvS+͑\ək!D9̲,_,(0D8z,o6фbU V3-5Am:o.(΄j~ZN(guCo`شBkX$(0Kfns.|i:8W^{ukap8(CʍVr5:<<ڬP,\j0U;B)s{S$`A/lSK9U"AGL /D8hTCm@?ŷc nW޼'Y`=x'6jh=SVBp =:XhɭdZG: B`.s*6|0kIDSZs/69R3W>F4xo r_xbzpyyt7y 6*+ [Z-:O>+C'mfd\ /p7-} \ñr,{ zMڪ3sVze>УVO}uu; x~ÿ~+bRìH1ilRm4We=6V3VukަN’CucEm~(@ CO*uBOv!:U˫Dˡ< 8q]V bR z0Tvk3iMubdUJ()/ 54qm#vR' @ˏazj*4u4e unmNƠs]^!xL C@1|{ڎcSK+Jt6<ћiDWΓh33aϙ\űaW<-x\imCjȽ6%Z YzMت߁|KN6ƂڽtC8(lqUsQn&x:=.w~{ {7/U߳߼ǟmqf$"(`Zl]>&o8RYm9r1HC`4/i@0T3z HwNXuZR<+bps)j)>s[r/fTK SЌFdFI뻞 bnݰ]GOrs' 0,a1i 5ggk5Z^_SpnxzܰE]`6G"ݦ2hE{,yՎ:笈N_ӒqOT9@nЊp֢6HI% wsXlM-q$Bo/&[>?(>c".!S@6w:+` ڠJvkxHGY;HӧE J<{LRje){$+d[?ϓ=|] 1{v/C!0܋Y@_zq*-p&ϕ>N!:髰&rhVΒ#:V~L0gfZ,fjnAYUJɕ޺2(Gme d M;G;{N+9XB z,)܂N՘ }|\9 6nIGf+ipvqn[^U#żWț^!B"НGP;QL1k8XDy. - kvQa|Z){QҚEA(Xjp(>%8?!:yVu~36( en,2ʒCrX?9h:1F_YQ7c$96ib:U\LԞ̉CE &!WKW|Cx9=+y ~uA' U?ym+Rl_+C?x]#f&e(g̛w)Y=UUB BSgyM&VmlzF^81Pb7x{MK)Df60fT:v"rR6㺧 ;HHFw#X"D50㝚DVBjﻀ_m Ukל[ asv:+j(a$օ.wLK΀z7Te#Оؐ㺡s*ZЏjw*J5 |$B}4z8R7z*`aA(6y^h\H=NΑgЋ#>R(ѡ4 mX\6( G \z-ox(*d_c?WOEew̹2Elo^4H/ S)`=Hv@ 9_& o;?5 !*痾d~^7/p5Ɣ,od`Z+{{ ptW}0ZwP^XXC(z;Vll*bW`1y~y.H#=Kn//S=ȥQʒzOJ?&0otg*p.B>tmMgp @ߵ!>G;/h48i#mDXJ&gZ9<*?!mq1GJSwM1eFLѱ Y;MXsiIv@h}u[8thݔqΘW߽yY~v׷h8~`pLK|-_F,E[Wos_{}SsW"Er? .Vl#џ2^U>K_.F*z}u4҄w N{\lTp1DY=M̒/ZDm蔹o=A+:|TM/B=;<|߽s؋ѵs?,Ê;6XPt@O>k|g H9T+"2jw.#L)6[i7o^bQl͓,-ߛTؗ'SuX#6n0[;I΍P?uGNrQir?N4j7KYB1دTNσ!Z`Pmf<䂟y`n\&rfyW 79SAxgJꁿ(ѼRخק}<ʃ-w/n+w~K?~,ߍ{$r-g+K6xLu5=ow]T_~};x ۑ#R-*Z@Oz;ӓrE{ť҅ܮ9\wFaBQ bk-0x|kP1θTh,d4z{#~\ ' c&`㦞[r=@>ux-ڙZkj=nx6;׼s~+_zuâ1͊z i]Ч=;uػ pXpA[y.8Ujrw>Dmz1X"8i=T7|rpPr;}fY@I Mmuژr!e*9F/Tfu+ IDAT*LN|Y+%[L8/ cQ—{ R>Z_ 'lb?_~{O}:nO_ڧ\X'D5jM 5h1.2O p;ƜM[ s,E^,}pN4=:v8.N{ b]T?LJ~}W g]s66 x#vTiUcqru"G&˃⽉CD|:}Ni*/ZYat3خ?/b~ӏ7r12M?5V:֪{w9>gp8zQ%J")ۄ6`Ljc/@ @81?N,Ŷ G~H!0HDJ(C!g8w>9ݽUc]Cs=OwݵV}{xܻ6 NOVXoNw`ot̪}e,P VbȊHt|BjT`q2jЙyL+FcTA*)&ӠP3N,匜E*ZOU0!dIb6NsMnlt 'цqc0%0wzO Qt|s}]9YcԈa&\#~-~o}8_8l)~"P,ELHA0^{nos|,1^]G;>ɫީ{ Mt=֭nJȺhߏ~9pq&F([(*NrFC[ɤF3 {` zgO^n>̀ aXu UgXQ-4xHleJOd bXgQD2KZb3o 3qFå }hlƼnD;4Mv`&ULZ5dh΀l) ct  /%'I hsRL Σ5ad)%^VG?Ev~览U2EVMGEՋ%;{M1`&_t7Yn}~?y]0uǿ?.5 {7E>}M MU`416V^7a}$^2)f#ԛ0QHOڎ H_ W5nI6+NO=: 1a;d2)FDz)V3^! B>I%)Ӥ6cyh{Y zس ~nHcn?a;L⣁HA  " . )$D8kTx9/}5vExCծ?]Sy+HFB}29Se&ȓ2SH}P{"#LiTb* \I3R\̚\lVJ:̙l fyph¥FzI@6ONw7!;;n `$MK矽/> ^taw7kqn0L#$FZ".k٬M v&tYf aF(IQ^eb3a2ya_6VI1aJӨ)&D#8H!˽6wČՑo4؈.v =m"C~$ 5 cV0wb4N:vZ[qk݂\bxxj#F`>7W ݴ_~kGG฾(@0Ne?h9 [J'{wmG'_ ~^@h$(I/}75O~ơkДg3G,Ԉa z"Rx:ǦsZUXјntq(I5JzG0 tiqzjFf`8C!b"枢 lGacT"6{'ݘ}!x@`u =4\XQ(E$ v_~ C|~h;zSOƽ;gpc >/O=< d( I,@ob. gN&i_PObݖFx!DiaRCR*64f+A$6=')b<ur+Ox8봡H:Z{):gDf<%aӀYy޹j!F S'Y Cpbɓw7 nv'-~=wR{p\a5y;vAenR,o|r#& {lV SQnC\coY s>iI v)i&;5zunKx;<~GxNvOzdcu"6\U`_`LAmS&ifb#!0"'O < [Vq ӔJC613 u{CZ hbd*м{x?p-at.߶޻b܏w#֝I3Odژpҩ?Ɣ*lS*6Dj:=@y"|ٻ q}.bE O)/Yx{,Sr 7 P37Q!';Ldl!1*;98ѭ:,j<(f710 1Lv3)ɟpdwW3wB!s92g%'=E$0֝$]m&s8zo> 6Uxu\ơmr CH'F"b5tZIG.jd3 NSH]h;*DW}!v=3}$Mf 53nth!ٍ~BXۂ(LԽ|rdKaj6f=%JGdF6UA( Q)6 V Z(?z~^]̝x n߼֣p=ƾm`{ݧ@x5 %BNxMt > ˏpҵ؜훖9WREd0).AИutNCdriQqJj-vYA!a#C8$2q ΃.}pN JA\@EH k M !  74jp6s"Ƅ +5Κ쒚V:}[o0I7VegcOW6m,ګw{snTu֚4VGdlpK3A)9ޝZ8"Ljxwh<0 j~cl->Yf1!*,Z0'oM[@VͱRHJ D( jvcI}"|셇x 7G|/ __@„GDcl7}|~0M}>D|vL# ibP]4S6BL9C V3fH*΁1 GL1*&+Z$Ƴ( Q6<#7Qc ]._I`6vQ /#$[`9GmpkӡiNVjpLHYA=z4Dg ?{1ūb(4kDˇ=%_|3֫뺦};'y솠eŞ?f0y\ӐfcRc2y#=!uN7[O: Mao2T<$#e2xĜZZ}u՛_+ٙNi GB {0ىIVǩ.#{gn` g5~=gnag2j d kݓhI AQ 8MzW`c (׾5(^qL}Mgn72ş2!J8ғnVIڿE3W>Ĥ{db c?"[SKtdnn IDATyt&߉"^e05aX%kD05sMOB6 43#&IvDq a!@lЭWxxǫm(A ciO-S:j uXufa61? sI3Y~ 4P}I۶Tw~>`?LA'ޡX 3+iҕ_U,1l3n?6{ʍKYZI_1 J8xE~ۼ8d,&cG?~W?wl5 [y?~ !9X>m O xf|gW?!!,+Iwզ?-]7oĀ8y<)/UH173;5]JA:ga}iJ"Xcb7Lu.v )5Zk$?- H&)h$d3)*<S ('pxPUgdD[kf;]CZ+6 (*MвG3/.9#ϸĤ%M%J艟,d)`#vQAA M)7KE0͊ ʦAa| ybG C _y0KgYvA)YmlT4 aU~t-XJ֚D Lb$Ɣo44(z|竦? !{^!7.u?]1(r9, Ȧ)gUHN>Sיa@>e9*kdqسF X6_$"e?Wv̂ 4ߍӄq b5%N"u6 #)8YZ׀9a6D2C;FÔn4 _tY78NV ?V9(c Jي^ʦJрnَ7&u K)5Fx|w: F46>2-/uqpjA"ͻ`=%,QX6~a֛daL%PQ2(;@J\ͯ~?cp\X?F^vz'o|UOӵ?c|7;?SE#a Gv.IJ+SK[k8of94Lē9 Llcznzp4݂x/2ZEWr,kyF:4óڵIU 1DC@ > `A'ꙡ xf+?B[K5֤:nMۢY7ج;S#;t8/V%2-/%̐X o=V5Nnqrc5i }Y۷6h7jUgg&tF{A&Xd2Ы2 RH vQ<]1KB#q'Ǩ,ެ<+Ά .Yɗ2G̨J3Ĺqx;˲!PC9Bx/ZٞzΟ9wtxEɸAiG}~~SA?:N\) nݡm?g&eAך1>`_̫oyqk $6 4(;T3NJf5/u+ҜQU3/9&XqTl [RX꒖˥T?BW 0{/pNXfRA!5ׁe]K.T3L<rD'.b=ΡiZC"n޺q5nYwXo89Yõ8m.Rioq`5շ ֓ɽKJ$4fiaFj"Ɛ ~u`ӵ:oI5M|WĿjUCy,()km.5B܋,.98xw*H!ge~s_m% Y1]>:1/><"u\lvCxWF`W>|>PHmsfG['Q_h6yY3+lԍ.qu. @ࠔْ;e}bR sFid(q((j |r#׳ )#$~k#;6u\_{?~\cP8r{cO+[}Ϝf5OvsO=-$T &@sH^JG3o?-`{ !چ/W'5W+(༹e g|/\>kξ3OU9k0% ɋ rCYnAE+(0bI[UA5U0aSL!O!bGVhWଚ hl/J$$"aB :#Ɛݏ/>Iشc!@qSH`1"rD Q$ZI(.Q@! )(G`l>*?A5@xhw` AzJsHtKb-fΏ. SB)A$ h@bps+RrDzl븾W'O" [0B8ϐK( Fh K@PX&Iq?@W `Mi}Wua[\[_:Da:ܿqs`ʉ6!:ψSčI0l ͺk΃RĀ'я┊2 D)CI~€l$DqUXtsay@,H4F:Χrke>8/KI1nUH`5?ΧJXXwcxѿ=!ۘ[}&;X>s $x)8z<$B+HhZ2Ir󱆪sM=_?=4?)'OFk!yQe՜e SU+M@{p#`q3LdYJ1M cz"bix]xLX5A_:py<\vOČM0w1LCJ9D)o@-0Fn{b8h:-Mƀ1VIc0c"a8)!pM$"4l 9qy4mArQRJrN8|\>1Pp}(^^lPrlD4{^HZ_BeI.w@H!WT}|^ ^x4\7I xl"k cHANDmtl%Mo%JSItoeYܼ/Z(dElyY>5{>O56vTOft &k:L4NpV9)?<4C 0+2)@1OBh}{4ZY`ňiJ#%=_^ql븾_s~BtJ π8/2H'JuTRhܙ񈛩POUҧXe.eN$p+p\kZv +ڑ,0IWQ*~;M.3ι]tfGz􃱺]h& `q27QJG5TqcLpLHQZ"lVg c"VZJBDe.Xx!46_ IDATMxuA%ʼx#d1n*ɞ' _LZ 5Õ" 4@3)|4iҲ|z$,&;̧8^%X(JV AO7ɢ Pۺq(?I u&wqQj@)fC3 KuAD+xuCgb(\5lIE+Ej] {|rG懪@MЁ3 <ךgt  MRB\imj {tv! Bދ o8vX???Ǘ#vS4%9^f}q@9 ډl|rO 7{"OS@2x]l[4R=bZ,ag7dh!pTY Թm8Z9(A346TRDr3aYl$ PIQz*"uN7ij=NZͪA\ɟB}VJA~b^*"#V,DQfLlBù!ʟO3oH` QϽv׶ñ8zVS-@k L.PYPm} yeZ#s _JI]FTTZ|ȗXP5FM |WLs%^|9ϑKVIe8r[ɾ]Ө\1Ktp%UIdO 302k 3Zm<:M۪o籶4?zw 1ATq>@RBLz<+jdLX4fd N!@՘`cz0]%M*lC>zn1{ 2ޝIg #_w~%<ܽ9#cp\M\_~;o|0 !Ex@B" or3T4 dq(x Pj-)ö|բgP5 &[n^Mf-Qeů  d~>R֧X :mA|sgA3ע0=58b.䬉e 9|=3RT2e0ڕi5X5qjÞxډ4vK )jM]7tŊ.\LZoU -[GM!@H~"Vgbi! B!U*O?vCXr<6{"~yxMWBЎ븎_waG쇈i qQ5sZ}e|3cI:*}WsM*$Ut4Hr^Ӡ^^$-rB:E ˟sqlU~p/-OL[s dd&CD sa6V2s`N+3XpGA;Czúh[c7|'VI4KW!!FA Q̀AS _}_t,tHF54@& T *l& ּcϤ>Xuٓ:X`L+3ޘSC!'vU4}hZ=cAU@eax\yN%PGmDhDVe̮Et@kC,Ŷ@h@P%+Ĩw?[`jW9Mb=fMYX?wםxbb i c^nĄrƱf> #Bc%TE!|QCʵm m(JdJD ,(H!VXg[hxPMFuFp>UNL|QI5' - Q5*Р>PL+}Jc8vXĈ1bTS]T)" Ƈ>!@"yV(}B~N&PWεd'&_ Ĝ"Nd3Jy\²sJUuыi wlpOR<jG 5E uBR"`<!]OR͞ <\Y o+_x Pl4 eF͍ʡx#Z uـ`U$;ܢmm,} U<(4r%0wN;DR@[eU4D&=b& \\ S]LP30ԟq";tayJcxߡy/ c  K 81QqQ:I`Zj!YM8҅U.#”Dʩ<βwϞpzz k]OoO0jx(*L+M#$ZC$Qp~'||lf}9K;g^ъzg3ԛkӉ U~F&6ңqMFVX(s])PV[^4Cq:e2ȏ3卲2 ^.I0͟PùJA:cTz%0W=D8q2 4@ZS~IOF%_ ް&4x'PsƀhE3|Ek6MD#((jB/R6ŠCB cF o\ eZ-@8D TI6kFBV)cm 74)廭reA-#^+R鏙tASݖv#d}ըy^adL <@ƈ>H𿣕2FZ]R쩅]!V-$F뭨мo(B($)Rʻe;N78n:TGcz?KШ08Hb7I%j6<2gtHedziSjr|u[LQ3(O#${iq( Lj57}Yz "Tɺ<^T_Q5 ]Сc`h ezӦYALE FN-pY'켻m,x\j2Pegg`6XD#b,EM(&c~Nw/rtG23Cٔ$HLuO*uȇ)jMC]qTa1CL@$տĒ|#D{G|ƗByp_FcIHI1v4؇5f^n6%WdpSP5)uƟwKC̪JĨ'X,CEAD7?z&جz&&~eMa[`Dk\i]"qJ Sx:ߦ2#3ӞJ7COpcR ,ʍ*Z;;3Z `'F&\r0J]FFI ʥ.]ߣ3++0J&f;P*mѨ+iD[ P23k:@N"$8V&?MZ.IqAĚQ&VHb>*NZ>1W4]%smdueΝ#l;M \;6fsTI[6.9%bΡ$n/lڬ׽KFYv' CD=;|h"IDGʆr3RP9Ė>/XOc|1m(n{AE{صle&li:BLvd=K0HIQ*zQ`Xb/XK!m@@p`/-։z&\S - O;ݖ!F4΀+E*=Vz3;:QL/Mj"VoB%5G,: ACQԿKJ?k(0ߏ*sTRE#uqCą_I6kz_BH-M0471'C@ 8NC:K$5CܛQP#gcvo4oQ 41RWDSWƅ=`ӕLFz@18OT~J/YYA-ypClT-+ y)0AaH]N4s38jr5Hvl)0%J٦oΙr#919而Z05\G BMHUi jy`ɍQxeXw[̯+^@%nڬ~<>c82wyw4|#uyñk|[[hd*ȟ܄!4d[CJ[kh7uEZA JV`\ThOv'\y2 -rDZw"!NOŒo<[ YJ 8Τ@]e \(J=y^DoMw"A.@QU"ƌi.c&!H &G1Z *$ьZS,?_%fUVK-ĀLpn81EaxI}wGhUM<|έ1ΩsSkvYuG?J }bVt4UaY1`pI/\lvLvpTY /Y,8"ƑN FJ]f6`:,@kע29Rv%g9Y' Mi H 11-)p*' Ή&\{v3<Da#zQC[lR(XYE lQ qVZ<6HlR ]A: 1a 2WcdV5sAɑϊ N0f5YȧH@ dZhy 8Jd !=Dá-[wxڬzgk[Nbgx ,mGbckN*Xo`@\hPẸ\P( b4V1Rd\6d,1 I:A=k)mԃ%J (;wp̚ 13;&:cH0bQ1'4'8p 9G0} !{ ZzH٢OD vsWҘqX!̻KB$dj2>GS=[FDV-B##4,BQNGGLmOk2b @PFhH"8. kS.X=F.j'pRߖa&T!k0s{'pCM6fm3_npio{%Er !q9t3ފTChK q9O9bk n,\2ĺ4 r *C5H%7GJ9g2D-V5 "Z(i HMRQS4/*K+,ᣤz B';evܰ؉(>F SqtY!! BR|,ρ-GEj!P$}}2 % f)O~_MKfDF[o$#8+Z pYؠ?H{y|Afmf=Gӯn$Ya{{7&TbǢq,%"ƺ!V4%# 3BW=(fX1lz1|1fn  WEQPJݚwp3Ec0 8aHa1d_ZIAIb+DEfEfU #lbY zAW = +8 bԩ dg!`ȈƐiPFq:I7$m&KN)u0o&OCձ:NO`PEja,(,m:kń AV09t0 w>w+ޣ6 fmW`}ߝ/Ϝ^t >MlD^Ԥ&R98"RiytoeAyN %WY˸^sؚy|sgI/mڬx-'"ˀeeĊh;m*g#TQۺN4c4k3~R0(4 g L:tGK埝uq:YI,W"x?Q5=(曔j][~ީVG9۟?gd?$Y_SGUxËC"CH~c`IrRcQ~k=XZ"fU .-\LRTPEU%"KvM'R)3Jlɘ++p4%3;B I1Hc؁i~s"$D ,C@>"Ȣ:DU)bt^`":Qjl%Ii3 J!bz*Nq:62 +=LiiO#uv 1s;")ޛ, N 2#8i,"b}@?hdPE&}65<{S 0mXlW|䄀Zء + NP\;mcsϘw?w^I6kt+xӭ,>Rhgd9ȕSwBp1`LIC3`4 Q:(!&tdp/> P@.>`$ 7S2s Im=Hy]EH"~Lzz`J!9&YuSsq[3{q Wqxx{}02 JrǓR DŽ[}0f9{'^}Q`5ŭhI.|\5CIB^c+T-ylPִ8yJ &Rej;)enyXIu;8G`7wNJו U-ICbz4%Dt4!I1L2HbžRu`,J gIV@dPEWD,ɓEZ 5}!q-\cX|oZhPH [ H"̙cٚ~wq#{&xәxxч!zyސQUf؞3~_ 7܆~.LU~Fd$J3s Ϫ y^%%w _sq! zi'$Di>K+(2#~1c8fQjG^lyL_@mpѴ/,2A%&D&nV˨`L#i&_mo `svV߂,Lcv!1Q->1 xT 0@:5B+SF* WKn;[ h=Vd` t |+|i,',e&A/h< 1TWOtOv/ǻ5f^w}շގ{K}َ*Z8Hycw'*=ь;{'<>x+7 C2c\j:MB츚W(YMO4 yLYhV4hתbElq\MW, 33|`ׁ.%^ K1.3hx4 ! dS;iQu+6pEEDR`FO4ז w*PPBX"[$̓"?5C.GIN0wJg`NRa w/3CU{&xGNo~˰b@$`p#7}Q؏ V* &qD /Z@#9%/ﳸݯnbt~^WpPG B2qf.1U9BY zW*DL :OϜ:w7ܢ0DsY[Kt#ԗ'I 0E ]\p6*F-K4p~ۗXiq$#id zdK}af|;~d8:!*.DB>S9]Ґ1}"bLc^4}uKVFB C׎pXH1KxjZL!/#:O<_B*7<Մ$ PY$h; `$MD>'gI׿8],P$A+I!Ʋln#Kjj0:l?FA? =eD+L!xrx?ԃ_?u57%!0^q A*眆 IʓU=%Ë RLwGQՉ zC߄ Klh|{˨ d7LF\* :O.Fȶ p4@Yr"VJR Eb+8+ Ё.U"+ kWc !E F} zĈCJږ { 9F\H-Ð^?q6U+J&d!$)ލi4=0N[ ¥1>ET 8YA?нϪh{щ0\8&lwgޱI`x 'k@թ=+P"A?Mb eN:8" 0D@,$r0Շ'{w㳏b9aT'}kqq_JZEh=R=& )я :L, q[QD{KIB@r#ƌ5;O7>|uG#odBZpGe2Bo͋ y4zg 0 ] USAm T^hλiL×w3ʛ1MZbNcE_||K8@;=n1D0Ŕ|Sd:]`}"EչPGkGibж,މ :hp9 _L#}WBZMRӻ { @cgKڳI.g}~nE\F8c4:ι"2Ðd7GMӍ .b. 8pv/#;$ypr7e/8> CExrwH81cud8Xpt-tfATTV6;DtS&V>13ZTޤ<>G?}WwNDKL%(P! 34^cMʸa4dZu$p zTFp. 0'~졁\8H%ч Zҩ"5J~l"F5MBjdDhٛ_چ ',lZI8PV3d@ʼnjk ,3Q7u(S(`{M(e'`m @WއDqL:t ?Mc lQΨ[⧞º1 7( ʈ~?%p~ O?e[ DXZ-=a0 !4ңD*هчؑ#A"m`kkK€C[ۘ: }?`ww@L;e'£sp NK@"Bxop0mkD;R8!BHZ@OBx{^c diYW)bv>{+6 qǍ'ͳzbfza@"}B5!dz`a`w?#z]݈@H΃I D*!`0 )б: z6}9n?|ê)3#ceR`blg8}ۇ=c1 Ccqao ~v<;'q-̺^yk8*nާ]PRԶ <:u1ӃO#?1ڣoyv%e3]Fejc7$ U})Ad*BM GM:xm*׶Vn8\IN`""2M'.QNbv_ q# ;z,)mumD%!Wt' ~mpPSYgĂ@:QAqd8!,ՠ0SRd5F';?7 h6CD! Jf&d$l}BFAXٷcx%|f]ߩ  }蕬V1Q GW&/Lb#WBԊ;$P_=Sq1V14 &A,!Mvȁ&C{bv)"Bh3V&1$x h¹TA90HmpIk L$'q_z^g3/<>zUƿ}S:`й}I_n!:M;c+;4EԿwX.¼;!F-[n<:s a1ikZR"rX;&ZO3f'?^~(-fDv46Wh",΁ 5~L@Vy:Rŏ`=`WLDʣ{% y^%AIL!+"Cq5(eN |e$Q-Y+1'd$"[8 ѐ}N!%7@sPv,)B`F# d%%Èc;:| Oiū6=݁W. iL-ƈ!*f+ܙ[h~YO1}tSj/>/~t̘,ڣ[.X~H\;%N Z?`@vR 6Bоf-f!`4|W7)YLO2F.} phd"ɮKV*n!!%Q@YTTwuU6_'2AiiꜾTNVyB'&E`bE %Lf$vk,~q|۶%d|l@mtN* *82_sw?{mSuxuGqqOrAg!,L9&xN"\{c४uh@uV VtJIID&%{ҸԎUCdG8yqΣs]/<3Npwiʇ #@zR%2ryV8=S=/>r\^{?-n:E$}6(7Bj;\QXc$ 9T5BHd`Uށ՟W`8 v`saD 1C,=m"@2<} IDATV )K+: 6Da{Ŏ*,y2#dM?[YO).!i8 <4^0}Q_X+ڱBycsă~#qyϾ/9u{52S8*R#%U%T?X,z/"qxgw#a{6ea@ǁHGltrcH$*n~4 j0eaE`4QI7'0͒w.{YߤHɩBsI]D2̘fbcgk ǯ9kesO?Jdj=l~I~jUP.kLpr9%@)Pa7춂B5iҎ6+z_g%v`EkԲwsc (Y*7!4T_)Kp_ALO_;Rmbڗmo@j5}1_fBc;{s*>ϼ/_|6cJ! H2,CXC%@Kқ* c-%I9S2ҝ6}ظzE۳txsWd4@D3k2ָHB&ɶ8ahXO J҈[zǎsX{cp 'wtUu?#o}9^w a: V+ _sF5Mba,CFӅ^H%ħ \y6.͇+ڙ0YW xp@VdH<89J2\k/5`6:$ɟ 5ˁ!3r3F7L?Hme_?M㪟F4b2pxfagw7>ϫ}Gpn/"B":m@b [ |.]QH>pXB :w9aϪڄ2'ɇ^S&yApmR}\2䣁V4'?͐Z/֬ ti!V7Ϋ9Ā~#%8@"pjq?9e$=f:`909tǶ;;??~I 9u p2hS6 [V,)k{ OV3EK"Nzt9IAAS #,yH'4C/CD3eQA|4gȩ"Aͷ&jrrs7?z\Qt*lbv?]p5"%'|s:&>o-/ǙGL,@ ]~O?s=p1"7p}/e-=g/RHVW2%kS(m1!5LV"{͔U߫Hd/#7m)HSjTVy,%;̻-a6d\.A֦fspN3Ƿp3Yk6pxc6s92$ xO I\^Fq.Ϟj^ Ek쒫ސi=z K {{/)I$ *z'*iMEXA6X)_|gjv&0WSGpq#ĀO=t]" ,wpÀ*+ y%E3U>!ncw9qJ~ᇛXV#7 $S)d(2<-q K<s>JU $o[t;wB@2̜`FmO L[plg Ǐÿg%󕬟;ڛcoЇ!Mw` 8FP3*` eؠI'?.ۚK O 'B3WE?L|X%s`rj(k߅1ƴ jnEq44TLs!&;67.HK29>EQqgvԈ4=Z$2gLk1c99{?_|YW>p1Ir~V^23`/LЛ v`Q; 8(Zm֎f ]w9퀃=4YELM/@!Љ bq 2à{>kͼ `\Ⰿrkp1|r諾wΜ>{57"$UXdTa[Yu(wP;J"b7s)9a7KOp IPJJlsa2_5 P{`Nz=b$kt^>n#%CkLLc~t MR[-,ӌݦ`FUz>ݎ>oEŨ3Ҵh'o9y] phka@1UӋ"R8Xy2`mVK#8lzWS{D\i[W8z>O>RL\!`kǁ/[S_ @PpN{o>BK8shs@^S_:|~/%Y0kzg.;Y=۶р̸ `54-` {4#'Sń&0pA*`s_v6?8RQ >dCd[͛ʈpS,}C[s7{OVI# vID:NIIgCW~K'zIMv|R;<~Z+Mf>qeT A(C=lBH.~Mj_mM'D:GmgϮ ?ya @ntv\6˺]T^*@LA(@LbؾVٹv?sC{,K%%Y^avN.Пu7E|p>`<>_M<@'= ѪqV?y6d%f7[BJ Fjw7ٿd\2ƨw5+ y r< 0&9r+!Ȟta0 H1Ĥ )e/|.\|r|ܣx~ ;D D) ɗKnbԂ5 " 8!bEF, pm0zߦR|\ʦ{BN O-'JEB蔀t콚 b* Dr;LБ edH'ɴ2e7Y.fؓoMZk"(Z9q"HAlϹSpb1ĖT|>vc'q$W:qt0@$p'nqtyx7"x O4 tY] =I"*5?^J}@IzDm4#{sJatjQG )v 4:n-rq9k  4fh()^yf:^zv_>U}|-o_y]T4\}2HUL֬k&zkN ^I {!((FbHa ,;Y %;yPKBQy#w9|'"I8xA@L,bJ05Op1 r ?O)7^;n< *!_bY[)/ҎQTb_Xԯ9h&I]HL'D@*y\<u`R?1 y ?/Z\ 1! %wK_=x!tBuZ u57vUc&%`RʯgOmg WfLWVU= m{Aa IK7`,l޳MgɚI̥OHOۯbzqw?g3]? U7 `HV4ȴSz)OK*E**r R1>ūL$w4d:N(qJ?_Oj_KWtn:7x,| bt:/Ǿ$0$kowpLA5},DEm.3"&FiD?1:_P4iUL'U̧K?|q&?kvvp4b>p$s^߂7x7Sс.KD+q,$nr2NP]D` @[>F?i-\GM#2Ħ頩K`]"a88 Ic{qx9| {oǫA}6TIIb֫Ov錕s2`D]~/^"iQEar9| ]/O?g۟}_{5k0+B E!Db)mCH܉~pI\ET5 _PKӞY=;c8&o1:}lCpIE D m88_[{O{~=:a^a i՚4=S(T oc־iMF{ï>C9L> ~U[L'['Kw&.#O7Rqawy|gt]o6ȔRD|+y/g?0Dݻ9y/8qB/0$pvzo׎^[1G5)v~SMV+ 0 jQoiLm,|,ȁv5:rU8n[&JjkRN Ϻsx;z0t(rM ҿ!UQ0=#*d2ȉ5^2}s]X7!G|F́0$rTՄtPf3eM ]Z-ʫp=g=ٳ>&0r_#XЁp!m<!g,e5 ?5Okud$eNK`4EOuW%tJ>]gTb0,j]Y%Ůi" hQ8{'({r $HHG0<#7>v > w} !cQ5@}T3{6r\޺B@? nn^1R#.+"Є8PKW}j؀Vk%/W"h擧kM&F֡?7EOLO%+m el_N_ u]@͛FM40_\&wsg_8+r!HA]KM&P .FVsdC.]U~ S\BLr?C @~oӎp&|fxx2a шO0ηrm?t& M $C{hW`_ی+˫'QB V9N骺Lt٢5caӛ[,6;Un>__8S;3|z3[[w+?x'o><υue\,pl{oy|#^"moACe-:JjBf'O_ؘ֗0칌u% hn*ՙ{&/b#$H~f8)N`di5c8T2> +bw[:w:7;U6/ G6+~7R<|aysP CA A${=}{S?\xOrH1ީ70s ]7w38`bEq31fS%09W(d:$)z QcQT46 @H8`ɀ4F8AJ@M2Td /ҦT)X {v v;t]=Σf]mlo?[3lͷ΃; .e+ jэG@W3/{N)D}+q27S!bNknS-=b!` Y\/oawX=DxRf>8#pJb}?`}pfw4 CD `ӱ('Lu@:>7޹4Vk ޜJ RUu#q_y 9 dD=]jɀ(ɾFs!&E!TbBdbA|#(5+@r`{6VȩUaVHlcEaDW7ތ'.,=#D 2z͍2[Nƫo8 }Un^[NmSYZC81t/q#[Em;DxX; "8 ;qb3->-P CXz`{0㉋ <7$1b蓦w`'{,A[ BbB?(xWFjLVS SD%[CHi\TDwtĊH1fDb̘q#0$`c3=@U,^^>(8gX FƎ1G|r]%̩G! :O=?gpzoE~h۪Ƕ9PϷѣkeY{Zk}9OwOoҌf4BI !P`lpJ*b*劝`S*ǶlSSeR16XFB,tIL_9{[><^Hѫ{ew^Kn|Ka Z+a{nHxxBNxk)BH4c;捧uc춞bVHޓ(ȅ!&;x |#gG>w8pό!Ġ};/.Ks|4p4K!{10T"sgYl',˅qbK*yEP!bz_0 b0Sa+\Cʉ~`8i<׎:,0&!r5&9<QUZ,6wN*~wDH"1h叟=?X.,y#apj(̬|-U͟9m§ ĚmﭡpۢeQ)-!dJ.,g 3!SX3R2Gvwtaъ!tD`-XK-$ ƓSњ|bW @ȁ,“@vs!;.hC!O;Ƥz6'¢"`_hr,35#7rnǹFƘ,2ssB!0}Ĝq"xuYG%zq TUaL2γ3󎐴SVkk9]r۲#ȥk-ok:ڍv7t/!xoГIL5S'W@y?!sw"_y^sa90J9fS*1idM3ިgxΈrD8!ed(B'4ܤsS$HNXa:Ɯ}oɬt1oȳV%xc ;m=Ӳ!\ۚWJ%Qv Xn]/! <F"\?}G?xko})Cnt>]x_#9.S&TOឥk/rfwgNeFO Q7"8FMzs.rޢmhg^aR"{JɬB,yuЏqPKx,[TB-1isag8DGۧ8*o=)E /uOMI7oّ9%o;eSxa31c2o,yEw11㬲BYk)58" )x>&rVGH"9Zq&++?ER)A%ug6 bxhMc Ƴ3C,xc,tShti3;XU2d2N,9>*n]K$;?'n^s|Y,ooW=x~᷒jC^{?}O]~!BCof5Rұ&쩠cEa?1.[qٳĜ)1ƌ%r s;ء/y!F$93Ȁw!댎 b.B,wW,pݓkXc=Y"!gXP#]J~ȼQ9YHq3գWBE>w%B <_ږB`-0H9] BzL췅~<ޫ^Dpbu)OjaNbR}Ie\0vuXdlDSڪg61}霥ȵ1¹݆b1foIE93G̅gs^: f}00Z:oIpmC:xlHĨ5_xxE]#.1t^^P?s3CO3?Ow.,SƋ͝>U>%~=33:h:[QrښD`[~_zH௪[sI _$:SxoHEYvt2k w #sXvvc)8#c ts8 @?&B)v:NtUӵ∷ש2)eD,1-wSBm,GC *X2o*l dcʌ1j1c8Jˬ{?^[13Lk }( 9:rL!kcu! P"1csfN̂11f*Se\2 ߨڣ^B̼ʼnI_x|ZCB=s![;+N?pGWΘz/˜2d YT;~~ڻK\T2l xi;cuY#cЦ$z[&^Zٚ~ c_uþO{3-ݶ q ki@E~=F 0XR:dvۆGl`zpnٰ ,-8XJ,`QV@Cu̅|`8Nַ*'f!( |Eֻ\/kc&-yt43f=`L;_{oݹ'c4Hjdx"$3ɥSm<)&R )Sy}*RkTqZgtru~ĔD.[:3Z48#X U95ާI-U$㵋}Ɯyʊ !pq1o/|ȵ@qYy[W:Dbɧ:OW)(Es0̘Pb!I! Z^USܽ?g2-YuC~ # Yt'Ԇdߴc!'޳n/zEo;8`gjΜi2z3])F_WHQZ̅y; ?obwNϵbEH'L[֨<%\SȀ3̜')H|] fZvZO'$3ˮYCg5ӆi ԊOĒ!$ ":CV3;[ YyCxw7 F 1fXbIt01,kƪFpk1j,AMn"s"f)ܱxzq\^ڙ!n`og/n,6WʅR?ʄ[fSa!2Ĕxý]йF|ﶁIlF&bK!g/%'RRQWJFt:cm2!*\>#T^YۆYxT8_3?Xvרf 4p}5Y5z7pJ< cRHku7(Sxܵ7qzuxc}=|;_{bJ7`L\= AT?f-c{h~T芀-0;_sg^vϙxy2ӚMHhUЪKdUr?L%z ](`< Įo {VS 1Mc:p** ;{3ae9Z7`|Cn3{~(Bo%$ ]1 Fg 7b[3J.7w$kך73LB*8AML8$2vu{!%xx?UB13!F@Nvls׹]n퀶jk6Z2JԂTuΒ뼴1@&Z02 J( '!3̽z҇BS dXe19WƑew0ZurhΌ~L1Kf=ZczGʅޢ%j$ę [% (#B(e򾧮󾧮a'soqC]\ _z0Tq73Icڞu~uB"H[[,L@/uZ?wyu w=ob/nH|*U΄zvC0}RMZ39W.7O>Ͽ[7+sYR4Rx߱O"3|!Fo IGP> G\ D#v;tus!3w壀bYդJwq Ɣi}_LYW+WpM|E#kkg/PIuǔLz[ސ⻒t#~.j+|RONʙ6&Oшm@" |6naowάcqNPvbY%SFl=ȡG]c5i{9g(z{7JSauH Ko)" qċ` mj }12k2ĆOmy7e d,&.r3̘"H68)e I+/8kV5L2Avi7LJu=o Yv1""qT"FXfWH)0DnuzhJW0XäCBU-ԱR2F`~+s=Xun~]O}ux !1փT7ɭ_= #okTM4b #IHP\r [HWF FxM}35f 8k?9ieBtlUm:v3HPD\s1EceǛ8w~n_=|ܳ`3E^9CM#jbB@;8Ŏ)53 h2jZCJqI}kՒiu0k*uswXFL #Z ukDp.*H \rMyRrx9{x1Fӎ%!To}a!|޶O7yx iIN!&g=r炈&BA#dBk bw5O'!1"uYaG=;9ȉUx3o뀏?ȕV_U-;|yٛ ZӲ bjK!4R,Ts oA՛JayTB^1ڍ4nY3H_m]ް#FJՅ+5V-+.Xlƙi؇3 @S|*#]JLAO9>>&VTmK8UجJeRO\>`˙myR\x3tM<k>Z YA 9&׃"!}OAzU&QwƮ1 %!'RQZmcxHdƚR՘hBwZXDuNg05c9[ .%JŬS xq̼'N繺y1Gʩ7 15,[̥:u;1,L.~FA2o["ʟJy%C jRL:@J$qXW %rI#݂5hS,b4i5D Wxgzg_Qk}_*V#ihZOrmȜxl; =zENnNfl46LꁩyNiR^>qxUkb[c,{D=C vZ=9xo KxqYwZP&c<%$ZoikЇZst@%Ykh\8_-N XEe37G,jom!D*zR6beۉu;dNdp1. IDATEs=jdT4=S8ta;>˙eKuS<*i/D1A aH#q%E~1S5 :SA yf4][G^FgE,TY217kX:V;Wa>lL<\ʔ轎k>V^b1р\Z1j xcJ5waH UW!|:$QƊ( 7 Z1Yb)!G?jWcb٪MXΑ11*:K!Dk[ck9)1V~loS&3ݩ6X xb1!bQYH†t¶E67zIqpTb?l͏_ϯ i: nDũ;`|("V72 STV-IȠ")+Ӧ ١@XJuWD f=wwf\bPG0:8kXY HYs5/OIgXD TgXb&U"WQ 0d%kR'ČeHѺgg0B#p}csuV^[\qOι%ʉ>B]s~B4 |#/Jx5[?L Qo!3"qԂ Uy>qx*O^Y}x%CdW1d7l|rU6 ZNZĺ6I#[I5<`㇚$(T/y$1e%YcH%a.$ߔ 1 u|W_5{#r<3vƓ]5VGb)rik-/&UNm"6B)p{ H;wLDW_]Ũn"SSrt~n)4'S3#|#-oU%xJ4SY7YbZ:\mGp RèdIR"!ik7РD@ ӹ4N f3w2!gZ7FVFKG=35qA5!e5Ϣ+1QЛsv#ژdUXԿXPg00\t h"//n8"2ImK>aK_GcoX+3`U&RZkYgkLTlxԙ(Z{j.{1mT6z:X"j-,JPG)9X] cP' ` YˇJ9p#S8!0fP3s?ok-cA Fҵ Qh[j,:T¤W.jPYyn_g맾Dva9U L^]]G )'5!uբ>b*hr_g }촎3gn%nySH,w[pvc#X :xPC#1˖HU*d C|CB ̝̎ Vu5)I 1sTl-GCW`ܼQWw}"1QO_Ƈg;wy!^bwz<ʶC_z1n@yyџP")";P V x;coC$mq%l u18۠i?xuq틠rÈ`8Y\Uc&&Z ~[~F\IGEF6M"BAi"+ EI%ĝyzsg/ `-HP j~`M;s@ cjRUmNrrˇkf /;" T%Z?fV Vg$W6u23< [<ӎ?|fiB$$mH 5j__N;xp:({o}g|胟eZt~+AOGK]kU[66Jd7DE"y@nrZIN J$T/BiNX8"}!yNE&TTYE|%/X7)I$}vS$&`f!~O][;-޶G.?\Fᚍ,tx{2uNVVX e#6RHFY/颈VVv!GPrXE GȁkiK?F4*W#J7 )a;!t\:\se49xL,mnƱkUJˬHe+ ^*9I)҉;o5,R(SJPMS%FbB뫘o[B,%eSMYӃm_bbS-XWQE裾l-}Ƨ';%C4Pz/[K歫FQl@@z^11hfE~z?uS8&VgX!3kyv)i,QJ&䌩Ƹi3`}vIs'f+DhYĐ0SsH$zmAYagf,8ELߵN`+b?|˾XXGcJ=s"sQwxN|"~< \]kmbȵTR0IYِmLE"d./:bTl"u(:f~lg^SRlseYtX6jSJb[WG" YRP>0o}M-T%_@3Z+¬us0zuյI-j(5X)hEt,4 1h<}tz7NGh1Pit6Ecݘ3m()3uiu3l0o/ܯG. 0F%naJJn0ݹqL5YU ʙ.zE!#_b BF~"JUQO1A]$+S]rШ2GC_"/<~B}60e`hyyrHdk^Q<.n_TTBF36o:(ZgURm:fٟp$F;R\G"͠y{?)u~ WlqM~ K-ԢV"m SHR7VوW_P&:f֣CK ?t* apwf^xE!1mBccUM0*/x 7NH٭L =EN`a&Zqn$hg>DJNլ3ǐ 0U]:(vfhCfsOXΫiQ(0V_0 54]֜טAv:Z 8ֱ4x#FhEb4,o saI)^II‰i:91#;ս<&pMH-`X}v 5B #Wq?(s?)-. Z1pnqutĨEl̊($rIg,vTMMEx6j=&9kf-x+ o~!DC6@fvC$jL.L%v|y<9RT(ղM<(ź/uýp 0AUA$Glmsď^.ur;'? ?+-|"w8hy}P7i?kk?Y%{_laeNb̫}rt44GMXV`.T|:U] oK'fE;cʌQg y: sv_'6b$fFQC]HՓrYΫ&:91XȀ)4X !eVcմ׉ㄶQRI1'Ws{:;7zqۄY( }1V}!ɆTԔQ;Mh8Br4oǾ%lNW\EBtސmaaU0fp}'RjƂ5Dʖ}o q?Bg_wkYqswUu9H!"#x ,!@<2bbAk A} 7k@CZ~_w3⌟ޯWt -/mV`3E9X)Ȓnn~پ|FE@y(!BtCCj"U$6@D0O2߽o;>#~S4#qJYV\+t?UWr* YzI&5S)׮?X jXؐW k([&j-'`p)ޥ[chnv-۪2OʏjݭiK-jh+.,;ĘR933bq#;etc99ItV9`p?Gb*499{4 cPM/0,X¢Șq-Feղ&d9!S̘K3R)e#Ugw3rQL|^{\Nv!ќjıb[gAKș<SX\\SZz֫jLKdoJtyA/M <ΩeIʺԟQ]W"sz-f )TPq 8N SƧIQJT 28[r 3Xb>X,)Q2[ 3xPLŲ%M8ǟ,"pȍ3=9Ͽ']}E*aYr6򖣡v}qH%ī %mfDjX<tp_o+iXQ5\UHS|rq‹iN, _7  0ӂON gܝg\bFBQJY:4=(=ܨ큟_7jZ9c^zQ%RbHỶ2q䒵Ϋf-NFhX^&l9OX[o>v]I4SPYcCַIe$,f} ($q0ci.0NC qǧL7_5{s?,:i1$FOl(`*^PJhf_AŔȷaDp7E% JaE`0Tƿ`bҟM-YrSYe3cffu憟VCb#@l:6/lFQY*f-lRA4*b_819x 3_G-Zq"k>3R L UΜĀaEc1?#jji7cA Xt-޵7(*=g9ɬ"#F4j0md2 @s,$T{ʱ,Gf.x);oQ5F2 .bZRfsap$M;!E6!WZTUyfƐKT py}h7{i0}W>=vA3zq` lc*jQ=.X"vGNsDRfu/g|ӌhG ! 쁒  VƷa%5V x_5]k, ;G+o`I:ViZo||³ TdYw)1wU0  IA0h4UUܨTE ~+O7#ۣqmBSy~:˪CY}4y6ª(tF:m[kˇ5E&GE-`^3@Ey n!j|rB6nJ'O7cJY-m=v)HC,NðnKI­l)^??gEQTx!%*qD5 Vnd^$SxkG*CcV.ijh u@Ah<]ڪG;?1 k)R´ ؄Slm"a5U;wȊB ~3zr&ωcA6yJ` fujO)6FC~Nxv3n s wBkb> [ي w>'Gӹ`և3^#+ImpkVTQu\=;`qDB Ӵ QiTVƔ#w&UrZ8x9ύ@4YQP0X)fV(@)nxf0ff*d)uqxe,㬫^ ֐dv8imT&kn@,XۣrYI~MJڊFkh&D3vE(`6EGm.߃>6N, -(IS{- |p"C/?op"D Az unV[/^UL[S|D&-rTH8$"n2 \À0 [[Wu^MA-ݎ79T])ᗟpuֵ}T-eiauy[G8v?x|r@ xXlycfWpV=-d?qGkPQƵ+o{ FXB*lĴ_UҤ6GN:JߦWAjc.Èc ˂&%1n!ffp_{S7~Z_.+!k+kvtȩ3&\nFӒ 9U|r9n!OѳfXbK0jVx?+ )/e\f#9Q^tn2L8Cȴ0^zZb[spqTN`?ݺyŽ& s< b78xCgGc Gt0-~Q劰2YG8"J}ͩ|WVm6 4&_mwk+|7"3㵬vU*3smyv7`癥b~l5ů~yϿ`FD3ü>S8/$YP}5$(x =M k[/ϗL-n#[ٓJwt?(5bKgNV"[ebgĵ k*#v2ji?~yp~_p1/kb'{'(෎&ȗbb5iz5I ]YDJ춀 J8OYs1'a[ cʚyxཇ7NxZ+8 OnJfJwV#iBTܸc&e3Eja#؏YS|ggwT{5(lVJQS9k1Z1TAFn>`Q 1"3É?ۚ6uϟ~r`@`-&Z񊥂݇vGB^x]ēq/ȠNkVWw1gFR<?OOschKtBb$sxe: SE%4ec7n0F(ic` kcAEmiV+䬚O)WZ1Y#z\  ׅI*jyvCc F :"{Α✁qSF̑{A)0r8U0M mg} }ݔ[6 (/@ sBT-qܐ )Wÿ? HYL%b[*gG,UzDJ qH1"eQ?Ҟk֟i&(는2sD jfW݀[g--|C\rÞ*@z+Dl#:r\O?RhuƣvUB{`%4-f hrNH~z5nAzׅ1-iUWa3ѐEAs0"8/NVt-=oCh,T8ޘ؄?BTTUk0zv7S*+vzc|Zgwgewi8ՃP _718~?~x}%@tx+HCxfv| @XqO͸wPmVh!o0lɈ&M `(kkԃ`d#xrہ@.D&BYm[#9JKH9%rIJĔ2># mFS`P횂5Z?wR60|*.iZ ~;Sm%?#kzЫuZX ^ RZz /= _c{Kq#8/L]k9>hւuJ!VtwXcߙZFԹyƭݶp@dh{0Z 3 ϥ@G渒hqhbM nƔU늋w_TcƲD,1!mvEGPMebS8t‚)o5=8OEhs5.N*1&,iAΩ.V<^p9tAZ2]p e"QkGЉ5i&1*7v3D"ܰ;L3o5styPBv ;NZy,yNg3!Nk9tYqbN$(Z+@+ K*Fp3FHr-ݮ9v)ocJzuLlgiK^Pp3ܬ[{,yE'6#AU>FFҞ>/jl&{~8vp N/F*(r&X)`2ʀcSV;T%9}p⣗'<с$)f8 өb ؔPJgSf8. dNU=VxЪ<ϰ?\ץ(bP }+T0jZ8kg)m:T+1׃ `|`ڼ%tFIͰh")p+YȴBZXy @s> 0T<\}0Reί<_YMmKeH%IzZk4+MX8\5X O?A,kxNi6,Pd۩SwY fYNW'T5*;fe KĄ9nȀq~+Gyϟ+RJ;^p#{62ҹ6F#썢"/CVLjV6*坈4i4A.i SXvsԺ>nŀ~E8I=oi~㜱Gv!.!@:SIg !bctQ;zn<Lvݻmf~aW:{~Y>"hLU{ 7¿ϙ{h[[ ½u}ͲzO1ze+dg~cx_+8_EpϏ XԖwpnkBjMynW]qI{7js#) ќ3޻g/qΐ[aP[9&DapD,bZ 99O 3АJS*8KiȑCՑJ@j9>`?7ߙȪEIn^6@;vGcB݄ 7Us T2xX@~kt A0%z,h}&vwVW=J,KD޸pJRNxnMJHgQoh[T@DbumY wݤ"A)%PR9yyѼ3eD4;1z3]`,cw0X;p4(b.ٮ8W*xP`˙iSmfIG| OQ?NdMG[{F^[nʡ<dnv|0ov416gB_&nΈrZ hÓ)V`"j5$i3RFsI ($ .x5tq]VFM栛X+oK{3X'J ;]h>,93nvO`705v͕+>n#Tq7-%' NES,x~Ta.8]O ﴋ"; \Do͈*Gw<)KBp}S.8%VLi"y V2]N%wkC2]'Fj[*ߘW!MEUvCsZi%{`sʪpI2'ZPnl5Yx;Y+}dB紃P IDAThD,]F u{DUʒbpZRKV1^jE,F}fjQ wA{HAYLKRM7W}pˤRp;|r7aFoqw\PVyу-juQIt&>5˂v#b.xt:.@}lE:, (A̟_ʇ(9Cw}3Mvə]2S 8x~Zdî:8pHsK+Z_Gd~y^0e]`h[idS T°Rp2Q2s,p3ny!:^^> Mk` ~O؂FՌH437(ԮV68€tLNET}rN1H84/`)Fܟ'JZ!SDYhLBX޲б͏5UkSvhˀ8m4՜!X>o?7;`TRdD.@[X}UR1^}p83UBWa8M3^+297D-JJfBV@}#0„9FQ|c#lf]j"H.KXjv͌kwP\C*7_ NM1V6nlL3F} gJ,D4t]-AMc3kb1s"%$n~5Qh4б9Vd"QR9Si>lk5@#^)"E*)5];RW?暅4DŽnFL2 Xr}jYh3pd\ R&h[rwsL9eo/߻܅,m1|G3`.ë'r3-<[ k=LS/9fo0/zX6.e=ki ~$;t|ٶR[#cc܃nps !X‹ICCJi5/ih6?JҐGUZIZ~ VL |p;gp= ׿7]MuC/ fí@:]1ra@U}uC < {Nj!8|Ki"5*7QF, Jb|US)ˌQEMq RY>886 Q6>&Vg {G{;uu-즐KtيjgV^kzc aDf;b?:Cʔhg}*,KDZ"Nӂ 9 '+CXKRFrS$otM #kT3eNvqv u!*K|~J 3M23%H9wE)> ,[/ғP9f7C Y]Z@6W~-I(67V'5R ϑ9f (ptkY38֗*=j-!IНQQF<ddq /Ct}B %z;Ghr v xq9Wj"T`?XBk: 2)s3ы\BڤԂ T!8oƠ6҂{Kas!D8jg)QZ~n:H~ &VWیD,!Sr+KvE< (|2mdr{SK˅eN(52k|D)]0H$Y`箵p/:KA XRsn=#,Z('*7T0DŽ8Apws!IoV;A@K؏sH]FAS +1fگUW@62?X0iC}ZZO{@JB}g'7X|Y>E0q 4)oI#q y9q`8Mpm5|:~RЋ^ޟVCFW%I]mc8AS|1q`FwxшEIsO[ '`#ӄ\+NKD nFsR*{w͎>8lWwE׋5: ^PmGUKk/guh En?#CںA[VM5vl.T4RAy(k%z/%_*yΡB}kUOZ0YKLd Y[vfyeɸ;EyҴ0A\ʥjŶx9YдsclmXjFM1gG"կ|H&F6&O݋lЉJ%1xc;G'^ş*˂ܼ~RQ58͸ݏ}䷘ ܎b$bV5`RQQpv##SL40ՖM%"Xq?EP(Mp ei(2ך J(9…Zy%qXޥܻ8o\uUT`u TR ,m-_}?e]Ӳa` 23O{aJT+׼>ŒiS¦3xcSqa*%SX /SLK7qRxN oG{[G2*ۨp4_#:`Ԓ{,Ը?o:ȥn5@EUbL dUvβBMLTPӽNxOsJ` c>)љѽA{k`qNȣ[WE %m@QC?_0&š^9a *pKO|<&~Р+Mݯ36CR`t3W~]l&7.dyZp3Rq X9vs m7UP+e!3x@4D O#Bsw+ 537Ӽfxݔx xq\Jf% Y٨s($A. 2@6 "\oQ#AA*9!愜" "@eflwqQQ5G__0I`n248ܝ9.z;Xs0˒`Oãc `z }.€iʸ* 1(b k")ɉHDdXfY\Ϋi97?z' XUڭ1F4-𧮐i1y#8 ~5ڏiaxBV\$ւh̨83vG|r8/DN y0cc0R+EQ~'Ѓ%b/uʥpFY?W0i\廐( b_*n]1 ]F4Y[q,!3J|S 0)M{^t[4 ݀Z<ư͡P^ϡpQ]SՖ_KAYXYKtfm4f^zõA9g̑$A#VRDq#S%f!qO=a NK1+3?FjY! K΋/r #g Z{;4n5W;~粐~O1u"Vuצ@uqW/RpLx4:On{7<96$MA{K*xցXBX[F-3?/F4zy%?AV nG@V [.f&3kcf@#^W֦?XNP{hk9jxΗY#$T =J^ЅU>#\cP%-K3ь VVP0g\K Rݴmd)ߢ\-ԛ޻ab%r=]rt4-AO;ؘ fxSR(I7|]PR&~4rQ~J On/ |4_K\C# kO-=})[KMX{챒BͶ]T`,||7A* tPOqY,}W71"K&:c"/M8 B, SK/fuNR<8`D.KsKV/$*J3O'ē"2N@'lD?YHndWw-j32XTJMX۞o7׬;_Tr6rÈ18 GGs+b^2갧N0x94)%&䔑 uJ&nyQ1H,dxKMy++Y`H&EK\66u[):BF 1'/d?68/P d nVS9 ;f[ʻ6AbT ~7~?=b5ba6j,URu4P7HPDмHy@6~@`?K.,'R0- s59gӌÀ2vÀV2GF؄MضMچ1kV]5j.k82Щo]\R{-Lx `Tp&Wy(j(d2s]5L;g`WBxե6y; *>p0$e@#m1v,k]1xF~fǻfm+Y+uo?s]Ly;7C?;׮4-Z|f*$Ŭ~`]@y/;5)9XdZ+_ڴӜ=V|@X{6̥ɐ~/N>01[L)AP!P2a n@ c Hl,20IcrkA.tq@ aQy^zk ~]b)ͼYEt5SQ: MHB`t煆cr s%?x)Ry癁WܝI,5qs<>05ﭾȲ-o_ɿ:No^迬cyqx܇2^XC~'7;\RAQՏ7׶` F56Z"_ܟ Œ).o- "-1ͭ郀Vpƪ k }Qł Zמs*BS Jre3p(ҤEgr"s>30zN1<& IDATECB+E ^k޸*is^A2+%*kcr8#i$=kEaA  !4Bw,#J;gqo7qƯ?؋3W>jy onE>7 rb.Ȳ-1M4-$H~y~FJϻ: Eyy~ z4+T`1njN!awffM!fa u !4Q)Eb NSVKQ/&~e̘K@s~9EM*:Y͢K)a,e!k  &ڰqoΠV?D$zΉ<#"Wm;$nr>E")O >BiէMh%vZZM 1k[ged;x)3蒱z9h?7?zA?L7cD ^p{e`vA'-G*D8%: w$*M,9t0n 1*6D*(<,p)7ct̨bC4 9DddT=ւ-ƴMB5UtJ@i= ×YgV}aS6#&R8 w`<9`)pw%zw8}/˻ĄqW#/;W XZ7֍yooiE.HS/5,RRE}Bөxgh4^d#Ų%Fgs'G\yC)Haϫ_C-B.W "ڞcvR~>?yoU IH@)"f}xTe RCN(eŠID7fGjStW{-KFЮXT£729պ4r&iJ):ÈY^Ӣvf9WkUV,;$A ષ7U%O[ ]. 58[\A&W#ճ~oIՖ!@NRU3vlěh8iZ&; YRAJEV01:{B80 ).֬ۍcœnӣ*jLisMS[4i)Xiz鄀PYMV4$cJm ur2_P+=3h$XVhASdEp,F2](9IZ$,¿7_ܢegb%0&mx3-ItIU/gqs;-U7nSJx9d(e7+?p<_@f}H\@<9"BmSK] HK\T/ײ.M^'*B9 Y %`麗\2vጱx|;a,spw6rqUa ۖ'%F,܈bE#j6eVi`/R.p̉1{0`r)(c?`IґC X+^94(gNP`dX do7-Q33K" յ8xo0jje/T/U[`ZYol`,А6%71R=@uOzjRo_{3{~?˾u˵L Tw_m + a} Ԫ3j豢#Ce+csb"c,I{WGJ¥?Nw Q҃)bHC*DخGa#ϓK`"ɓw>gEt (H:Ijjbe^.$vku\D{M.kzn͈[H!DkYkX[06 .!L F<:HT_B$gI~Ώd|xÿ1ue@vk#f,ݒ??FEXVQiLyoS^#䄜 R^ɐBXbS i׮[}u]+K4)VQIŝt_\O} @@LQH"]D*}p3R!MAA 968sa3!C>`3,c1y A`?9gx+EG sB)E8+k!)([["&qV]RQr JO s7bkz^{ak!/KCŽU #+XatS \Qs,z@ULso Tཁ1b׻7t8-Iy$#8+1eXɼD a(%! ˒n4+lפk?H,b3/}JB*-}+ͨ]Jsn倫O0K_X1Y/SP o`܊aQcѿDN[+GV> ?i(EY o,ɡo>?^`UJ'Eff Z.ϴ/Z;qө"^MвAgDKSe lXN?rtq)kqY&V3^1&^Pheڑ)h3# "0lڨg+Ϝw)Qzktvm{KnWJm8M K|Ji5DsF ot;Ӕ-)#ܰB߻i,6$+!QO3!n-/ӦWvUu 6Օ[[w7 T9=rif?;Bkl~tϒ pJ MCM(9{*RIf:uƠnmf;yVRe9 C ro sP,S23v֡@W4ðAKθI4ڈjOXХ*LbU{36mW_ٜIe5@=_5lk{9d2K)*%p+F1gQTSn.*K1"D%:6ϭCoAx1cŭqZB^qZ)f|SgjNK)("1:j]>koTAIjk;g/oXB6uK%6\|'t RNչ!TPW(XK-=Nҹ!&9$;}(V} !iSÈl]3  IDATT6<N>f5ЦzF+(m^q` bCB CG "i n^$ H2G;UV U0F˪\cuϬ/݌Fc$fk:z#(w )jT`o: ͫ qgDo_֏^'0{MBMy{y99@^7ιtUk,c2& 97x 6R})&T{"BN琱Ĉ1R@XDxW-W0R5(h9c<;,1bp^FG٨^5xKXlLkMMTS)[E 'Ώ7 ߟo}؍]c\A5JŁD$DjjܜT׋x'&1)4X9F9?9eϱx%|g"!:\*Kn%DKH!UŰ3P !` ƒa!Weͭv@9/P.dAXJHټߤ3bJmJF5Z$UE1"q JRLp\~thPU,ldE眛XHS띀VMש6~'uo O?淿#V+Ңܡ51f-& ش)ʄuNBv=L_>;Fw?z yFg,$&ZyȔQRALi2.2 f+eI:\uSR %oʁ?/Hޗ] rU y;Bϖn/%"*%Ō*&tPYA`:9baXz9&,@qK7B c &";U~.Y\cH0ЇpWl$EiԨR>O>/z?x b>]q}cF5zJLkb.9`9wy^d:=b?8L! Aҽa8gjfp))H ɔ D",eBXfp$d'gpTdDsg]gYa;+%C%j7EG-C]yK_Emk[m)U\Me$PA¸{Xo1! ]kG0$ӣÄa;qgX0lp ޽с@8 XåVݓtm:rJ-tjCNB& e%ϞOje$@D7H5a by+ւ+C;egY9X_YcVU֦8ȱ1)ZSTKLS2mU?tV1"S.26[Rij6 Q|i`l5˜ὁ5$p<%X6CPnƲB :ft$cN xeiY༤w~: |]L9 p7 i`CbI]i{`_Fo)h8`1K&o~/^CǨ ?;ɨ>צ6~>v@rn%7γc9,_w9 321k,1` {o=T'ɨ>H%B83 &X!gIhh9%Ί j9`^ 0No^ƢQ~ Hx-[^%3A\|!>+  W 2-xrw“#)R=klIޓߪ@ QV7jO39՝WUgNMp={ଁ_~0xx_?:h.D 19Ja&U ՗l&|^ھ0_Gw`Wz,KJ\xf@ fp#z#SS[<%6PQs1ڨrF'< [FEXE4Tgo-["$y)C),a ˯^7DfV,A./#mffbv (/dD+#B#`__} ai^R4 x<5\w"IaSKewx ^Bb n3ߞq5!Y, gDd I.[Q_N,M9-d9 b 2rNL HE4EYG†ϟlާ > Y| (:kᬃ53~Z " @8B(RY/#0Wov="fam{3|E2QG1VJ˴VqΒd\r9fJQ0O~ oo+5tI]SU1ňJ+wzG>f?|6!g`<7_F{ U1v[ Ҩ}1DŽgY^~5M g-9{QJ,@(j/TM_8U:4Tpv*0 FȢN6u4#reM1jdݜ1M:&KS^uѫ;(bsծޮǽPpĥ0/Τ P0ͳϪEFou ҺPm<ė`ZwԃN$#f}Vy3~,>M6bͻmZ\M@c{YƜ !GɫQ%°q0'YNup}@Y`QFz ɡ%t,a0qN:HQb\y01΋D:$wfuep=[u) _?xsؑW@.iAI\sdhH +pi zv%q݄ô f՛)XnA( JɈY,SSk23JR,N_IW!OYD$_?ޟ`wWUNZ* )+!5#euUFLbٝ+qBu ؉#K3"03iZhBr&x^A2bgTRq2:cՑ!Jo*j +/ JykU՚)Du9)9L8Oiy )#,Yb}O d,K}Ht$9m He钜BSTN!:g\4F|7uaSɠq:0z+{1_1^͚aV:vz}3 ;KЉ6zdz)bhb1&M ;C,vV˰`0:gqD5Ǝ{oP4gqK*ks^cMQbnJXBvɰD%t,vKNC>D,~#BOL!yF(qF[gYxS탲NAWEaмfwUQ1 HF9Ui?70_<cF%CQVw! T!8XyZѝj6&,1a猌!uFV:@\9#¿|4s)轻JN,I%r)E?2NennqjZv[Y@n 0ƠTp53pN\ bRjj jI:#)nbBJ()V/\RJ (8c;!uw0yIwЫRwn%ap\%D2Rgwg('i},Y.w'U_Q^=odڻuF:o(~} f~RQ -3g5ِ ZyS?0gcsi(F:݌9#nLRu@nX'Z >ƈ^9&,1"E)RsXiUݷ>FYHY)o2gJ1]Ƹ eAfS9K7T}k-z'kW#XH,3,/1v7x<9ΘCD*E4P.dP,S%6 WN5Hvo?OZ?n4KAzER9)b%Je8ЬyvB jKaiq{Qx|8$ |_u,:ndzb7GXr(<a "MztN<μI6;׾Ҥ !Ō匼DU}Pp;D< N,c*F3+BaykGd}c DSAg)3~-Biuq;Gj.yҼZ6aJ $S *e'S%_c5uSRFH"a&r RT~w JA^{ꝂBR@R4*Ϻ8t5E B||7!$vN‚D,˂"UK1_}-ϟ`a# C*QUAH1j(FE{*+~6%:6d `2ΈK1#&ɇ~6!Z!g"ڐsAHiHmYYXKu kYjRs H_?x130$"*[u!cZd挰D%!)D$R@BśKA;5Yx0a-B*e/u!vxF7{]q5x;'XkP(f7Ck׋H/!GnPǛ2,ILq3y?+-]ouE,_"J&_mM{Wq(9Ts%,xTS@3+|[9 .[Čwz\u1F 4"ve;- S4^ nLIR)TFA ׷gb $aY|ED3B4ؖt-&"ZZnq; wY"&,)b,N˂S7;y9!fќxoSa04(%E$,KBJ(QXQE֢X$p`[?~7w0Zۊx[iHYZ fWQU֋o}_4+[!1ӌ7?T7 zxtZ0Xƾ=<:θ=`u`/5:})Mzѕ*IYVS-@T%[H VΆX:`~#)`3iRH̐OIKO ހ:a ósc'*qߣzyqb?T-p5x\ XRBJ5Hw`6`!" Qm{揖XIDXO zG2. */(!UVaa뛑C&q5e2勨do-a)y%j怇ώW#B˯#Np?:Q ;+ށ]4l&x5x 1R2YU=>MN3;oq=:M zc X9=8K:e1t?ǟ灙$:6EPaq΂fo/`gZVoUlUY212D!as8SN,_aD?}tBgo;%&Czt"Wnz,#yg2&YĬ$U2b3JcKɹcl`qΛG:kZ[-H I-!j _"'z8{)&NAD^`qFEzвa 8YWv 9DgE~% 21}; ^y5H261uJUƂق:4_[upufC&wB=2q3{钬q;<;6-o{1D&23Tp^R*n"6&m6Jʎp൷d-劶b@Da_όRa IDATx ļq X7KJSA{LARӢ$ݿ&&T̲ޡ;\_` `S c(v8.-7Y9eX.Ag7,8`Z$"1X `] N'Yw9|"ۈdDW7QYYZ+hԌc Rc*8,3%$}N3zgSg U ma,S`.6,8Z:jR AW%IU9cb}機_~lu`ZS1+{VBxr^"YY'| %.$t aZ 1gE DFrXL]"4&0___m"7Z`%U; Z*匰,b?+w#h7q0+W"1Ĝye_βmh #P#3K}'B~^:;Gxp0F"&`0v^:}aף륐uFR>o_D |x ӆba2-!aZ4BW$KPߖTr? j7 aG71">H4p8Pg͕~uO7brZKHVAN(U!,"|'FKpFZ:kp 8y+O)]ֽ/eVU'| >~o}FmoQfK&ϫ5]Pm*j6-py:}r{i]O;aNj3u\ DEEtjwnG8H*)(g"G!ɭs΅U?Dwx-u8Lad&H'\`0W`龋i[^ln+뺒RZMm)k!ZJ3sDji9<{:a*Yd{# 0ZKe[ðwZxF$ qpqV@#uM~w'<q]ԉ%8.Q͊~&~=̥po υ:Rp^ySwPG%Ы:TH*&u^<κFr!IVHkVrYH)oJ}ݴ\PL3>얿}v[+%I8D>|@|94<9#KOYjZ9qДl"\!R7ՏF5sZ )j^4G!Nv9 tc*cSro4>zeY3]XںVR&7VY |W_>KT1*iYY Z+Xs*;)W:`x/~t8Zh"jL?pwljuͤ"8cYũ;GMC A-<7caL | ~T/'K7u=[a~q8DQӮޢ ׎GV*;u9/8oiiɬfq彻U_rB#X`ןGG8^Wy3140Cdm)%mrv%x1}=mω0EG~x1`E8cwWÅp ZcBR+FOj$U?8\g,i:ΫV-Fb%)F9?:jk:HIa? NJQMn[o;{Rmq(^qcizM'|^ {zw<=ҝ;O !л8>;Na iVʚso-tS;t/]H^8n4eu+;㵰b@/׶]!)D~{5oK Kͺ5FapqP)w\\p\.0FJ+;!K%պٚu&ehVE߫eI쀭o8Z+kn#.GUPOKF -3=8sV79'םK5*!&eu^|l@H}U! Ja\7c68.q!(9t䢁4kiVyIƩǑi^'{y?Qq^/ϿcęZ*;.Y`M/^D T1Ġ[a;80(pCT@ʤqMX՚]lLoۀzb8AjsY0ή,B6?mz}#coe%-IոW (N$D0+aהؒͷ atԏ;!-0xB8jڐZE/;HAt3)Wdǚ K1%wn0q%x2 |s{ >rIsw~ X꒽ Uy[_E:ZMX{Rt9RUuZ k*4;U-In΅CTZ*\Hr*^qMrûqن3_<_ 'ö"rM:1xnqHrnGe|d!8p=H 1:znnHE 85{7 W5WJlZ6ܴ hR%KNWSFD1;zEF8^'Q0ݻYQVF:GUXBqI-1[k!Ɨ9sV_c ط/ܛ :LݍZ7p~/Ôl57kR`^UЖL3 A!8>+޶oL)MlEirv^91ؤGV- r[)hS㢱-!5Z\k T.Z ==CΕuJWtliR՚ZɌ-]x#ST$rNI' 7c4͌U}S^4XZNj0rj]h_k:*,3\{Qo:AT VSdG{|YGhFʍsJ)/Qâ\^9Υ AU8Q;ۦ<Pl:o|ϿVGMۣ{NoKxҸK,1Fex9N􌭽1 nB#=IZq3 TE\ںh՞#M&.rTjڻY$tكz{~yr.LÀu94ςWs9&cNMyC \"B";姈 0Gu{M |]b}[QkRW=W^3wڙ6뿏/ߺ{O.j٢x)!:Nh8Gk9CԔ56cCFs@$7\)ЪMrjIet-LI.MskbJ6fw@tلdB 7`H[,{K~);.r=πnE?= k}ɮ!Pfj/OLѱJfnқѫ`&';!ܟ2Kffi=¹g#Snyňub.'ntOڽo0{% 866ʵq'TdLi FPZѫ*y\ CT ޳—3St݌d^jlQ6+.޾~^ K0 1wt/wQ͎~Zz]V?uz)]31hUpoyH4O4{MD:'ٹkYۯN+[zԜ%J+,=[!ФƊed]j`nڅقpw; l|h4 BNEĖ: //ML: ICМ}_7C`m wNEMQGQؼV1*.8Ba͙腛)q[VPn=Fo},{ͦ]ײF67k 8?߿j?_kڶlۯw[|nfЅ6RL%UfrwQb悝Su6RVy镞V&#riRu˜D+yM%[%J#:\{6E5}0.ˈȽo_m}|-֦/A+BNwǙ7j)+ZVicƙVqBTƒ9GM< yvzjI:{梖TRayb;n0#2kq@vIBo /-TCu;7R&/*}{taN6A1 NU:wǁʜ+wӨIt@cT<3 e}u!n(q3z; Ze;^W^uo15:?c፾S w+xTy2a潛Iq3_CPU#L_oZk"+Z7.j}ҵܬ7u ֟At=[j[oZMJ_]xy݁*X~Ɂ9|p,EŬt[|ptIB^TK|||ms{Uv/zI9ʓà*\:-5дؗ c|;@br݄X T@CvZԴJ*ozyK׺u+BK4=J-H/uv<U=itRzk7zſ8!n0!_S|+bxf%eZ0y} O_ =V|[7wg˪G2=;%K&Tngs.r{<%Uno=w8DnwGwngQ%`cM} 8rMlڕJ6Wd2䠢\/(IłUWԪ)-zzJped$륛k4u. sIBϙuYRheRxq:ssG%::=[LGPT[}NO[T2] m/XݐzVx[f8:Z*?9pZ3q!Ni5qZ#Ղr&9E:-Sq$"QZߕݚx^i/ͧj@/7{~vWy}r7 w6#>_Sܟc4F1 Pv[: S|ÜyrA[Eנ/Qkr ߬9ZjSQo7= ?U|wr[딮Z-T j֑}bƚ 9_U\Z(SFAyIYནV *Q:A92gZɔ@_ydͤ5𸰦jSup.N^/%z&1u0e&)BPqTw?Ѡ|&2{גWˋz]{!:o{}'/ w@ ޓ;ݖ΁h蝎R!5rz`7];jr [l#Z%ϿDiziST;@M8`iԻ8;y]U"EV-u8kw.Z*9J)lW4WwԆww?yFvh ejmiƼ7ŀ7KnIŠ|)jӒ+\5b /gGw9T"ע3~CzADצ=C|oG?bZVNYyful+M严֙s6r^3TR;D5y-֘Ո>0r"sVy%նq7^0lS1p5{l5#'NxOdmVe5=J%BB΅Pj"ɹ1x!D^,īeLnHi-kb߷ȵ쪳f8Z;9E VYO頯96e}\SfZ-9X+SۙOv)o^1gbx0$[ À88ucDHoG7^-U |ʩPP;vֵzdX56z˄via b-TbjE: -m.T0NS)߯eӜl [1V,'C-}hQ"̮*IrkJyQ:uj N ;@ɕs.܍\+) s&N e[>=Ftt0 Q=^_ݯ2kaߍG7<)sJKqJw<_-'-mn}s '>;ZD dZ>9D4[3Y7ڤ2e0: ʵY6;*C>~e^׭ЛZTk"d5Wrm-U Ewmth$%FFnZh,+i%SlSnx:Ө:ZѸ$^VZi=wYgT_ttrɝ1Ȼ_h԰mknX8#ye{PqOHGil9w״g\!0xRBiZ;QvR׵਴0љ8rPY\)B.I)PrHY%Vzm|Fk7w;0:[G\_g]FR[mhDk q`tqT켵49,!y0 Z.܎V;/NgnH\{a0~sz򙸱^΅7a>QW8םzdq4dx$vT]zG0M qNWyp^_2Tx~Zbr[wω6Y;j*gTRo\h$[(?^ NDq PuҲRҚY’ 9Қ).xM1-WOKEJ֮!c];@*z>>f9,סιe f}]~tLP !F$x8aF^&pq9D/Kv+x-UDc-d"w'3M٥,E2xFxz儎[K|1ajdysΒtPiYɳ y ˚Y̲f E.؁Z??^wmкMhժ&UAyb/ Fs^ ;0buHMWr"AxXwZrq8 o)MyU+i3 $'w~my5>ߦ(]rffg#??so'LJ 8EXVND6ĬARCYesu_/O !}H(zKzD.)㠈g*MTg΍R4 5jgͅT*%E+.. /ފ;M{ {whڝYq^S $m}Sf^K*vǙ֔.wwSvaNSJ|p7sJ=N)i/MJs(:{k+ U=6Y?R);_|9_ hU騾7F PZ8h <S֙:1cq7E^ΉJ{gy5'@h[Pjblh3v-K08j0C^_Xsձg:&͹S,^:)h,zus#8יܵq\{1/DҥWa7\uso_уx >NUDwqܘƨF֙De[lfH4 {vazr;0Wѝ,{}ygc$F?G /!!%S(^SΜ0xpݯyq$鴞Qa.42N͊^M_['ybn`U+&_ZqөecohGj3ogmsx 졈 xfԦǕp:o>!a : 9W'g%ImMdӽ-{iGmE@i]\fA\?k^Mඥwwn'vbR3RT1*}`A:B) S:k%Ŀh)P AY(Nr7xvw HNUKew ŘUt+XHqa 0]}73#. &ԟQK7|qR@}&zmcY^85#ZK3n%/<XYJ9G3Kq~Q,x%1zG{lӺ29 Q: _zvGpPtNƠ6@ԩq^M2任oA5Nu "-7uԟ$Hm18CE:J8b z]1D0DnNird) OsVѫZNGv3B}s:^ۉ;-M|Nq1->Vbп\ޢ 3-ű6_W8n8BiUBwSżD,ktZa@- yr5^<}*Szˇo=c-<A6߉> -\ZoHk|/~ڼ\ۥSy#hy :8Ƌs20L'N}0xUÒ)%8(]p^2GSNY81RM/I{N@߹kXJRβk">Ҕ"Nq1afBd#ڹ4s,Y;s1}t[$p9ei)x(R`M泶Z2@pF:z!#K.S^$^G`N1!⽿-#ݠ1ۊĈWqD@6l ~6&h`q ZtlНpʜWc(F0rsIs{a1{$^PhEDž "+PrkL#BkZZNR䊉 1q 'EwݽuoG }f&&ݐlZ]nN}S߸8[Ooȹ2%+:e`cpvQiMsrM#k M$ʗ畻!Pk9pB98޻;)@gzٽ?KKs)Ĩ.+:Rj)3Ā ْ/C~ǫɍw͑=\j" zB<\r/#}mB`ZArѦƿ_/qqa#a M#sn˘ t֪VCvXYr%K=1F܀{Xd Qytrav8CQ:Uq$ #iUofC.:-V։ExH,!>rFat1dUV}vOnx\Qq^ p<и_;CSl!9޺;ZscK'u Auk{ܒa.ÀD x!\ ՑCyV,aҋDж=!F"iձaFix'+Mx\x2JiѱIF+hq7*To_yǁV=Jɶ .:19ݓY `>$ι]?x3ITD{^>άIqصUn֓:M%&=RNnC 8*byI K<;FjSÚ4ы|9 ze:p{Bq$Ĉ̏4?pBww7PFJ]TׄTaыW= RbA~| a?|¹.]w@AG^:8  QJaSRG-OR,t]y;$!'bH6q =y^@VDWE_n~S6 UgSgHU rsB1e'ӈ1`b3;<;pp^rV`Δ]AMdf݂8 o{}MzqՒfcV@J\ri{ qr{D'Nﴳ괲Jه8nGzR8xpJ \5 w-q)>y+|S7L@ęR>O"kf_Al_5qbWq^*qJa )sSʣ)JP#`Y|qR2Ǽ6ъ~;{{hHްγw;#DSvwNT`P[shf{tGq^ ];x^ k&Džt B|-fqgcbnڄ#K'q;D/ DjkӉѦV/כu]m(7r![ 8=#7ۑ1^+ O&JQhk#CiJSpQ9eR*O"M{{0x bE9{?`@XOI IDATKE6F88C8r\/̹p^9͙5rmS3T*u#z8ϓ88c^ ;~OyrP;Y}&c=Udolm%O_W3ծl>Tq̍ `v)Jsa"*ps|u&93-R 4{¼\x2R/ qN CӠ+ߏD61~V/[&;J]?PV 8Ђڔ5qxMXkӣGzkIn={14ӪӥkN<;rVl̝MoqQo)x}#-IT]?ZyrYJË&:wUX5UEQT{r5E2ϼ3X. jis=oT"eQki0bؕ&]Ȣ" Ӽ珫ً3>8gQ僊j:J]u;cLVƕڸVjU@]Ti%=O^Ƿ=r7(>ٜ"܌Qv!sKRhg+Oq:'sNS*Y!kW3uqs=N굼~RQ. ך1wuHȓ w.nm 00 `bmKws>rntN Ix%HDI <BK@B"81& J"$Bq}!vWUWꜳ^k9a9ڧ}iӧ9Ze_R Doʮ\stɼ"=r߹yχmُ3.# mw/X=cf;v~%a.>6'[)j%l]F<lS12 yvU W*BM N sQ鶆(yu邮*97.LoB 7zx=S-]dq2e v)ާk+!k H:e~a2'Ezg)o>=d?qu3lqƒ /]np;y4e'|QKY荷$ ^gnjK >k+O|7Cߦ9P- :k86]`Wljwz\:'.7Lvy'd1(p7cj?+jf3}0 8jɈ\b8NeuԛJU]~i*li[yGkl)޹!E9,y~< \'&f XzV_;B_ Z_ O9ͨ`I D6{u]bz9fb碹 U@j睛G=LGaV‘RtT Q/*ՂkK&}la6-xSqP%CLme yZF')Z[]muQ%^QM8L3}ng6}OlċEtrcH 6 i$ko^SJerc\I!К0r[NH_z_S612>huĐShSs&xY{M;\{GDK ܸ83\ԸgjyujѠ3֝5drBW'דrcC =Cg~j{kBcE硰DkB"SSO~Hǃmϳ6Fn!DSXk85yknäSS:#*i&BʼnY?"㬝=fyf{ [9Akǥly6;O͸O׳ΩWYNȩS Hk.wZKc"XO@Gz37Fk"ҊLr SiZtKfA|*rR\xºìc͗.YgFhP.E޷{o?OucV1j]Xm{p}l@'73n&% pgznʻ XVYlA[;ٟWk8˰͉"˭* ڱ~̙WU9^m C!I妄-ص5%5#DH;ioìŠ*jK1B3 }κRլqaC'" , C~|tO rн=4:1RJ!8^)8ca+COm0t'\xr 7<f WD<.rf(Phq^LIy>^3AJikgfY~1(l?S#V339ϸDh'˴[^Kȗ )#uG^ѹਫ਼۲msix4ͩj究xIhM[];W?q>H02ڈf7vd5r. Vİ1̕>x6 VhI-2ڿ!:#=eߊqb'\DV&u7C$ 79ʘ+wӃ*Jj UCr֮0n`̍M8c w+ ڬg]GmХEyrx1(?uaFNay}RXir3~z,9,̱og ~8mBu1oWgN1/Vmdc]i#cn\ P\Τ[M"]?sUB`2ҷ#Wcθ)q /g-+8EgwzyYNmsCccF*i&V0H*VGϹ|v$U1jX.9\8΅1КJiB)e-k@ tqүmԑ0^姇;'6=XKM{E`LZWׇC&nӑsK&W݋ɜc;D5kCGa%hPp3 1ni!g7O r"|{g ձv8g)y|ǃE>lm߱:M̍oeƣ|`"9+0O~ ׺1guhͦ[X7LgPW{~wv_ӦлP;qTh<^9W%MWSnu4ʦ7Z5n?%R CIfUYcemf#:sK\|67XFmc[gc{?G. wSIع6W BV+kw.(hpjk5HfLھWF'!,g. *SrqIs'yŦȄ^%J(J(_v|ɞe9Mha|] \Dϗߺ3}l BRYn*˾c{J+D'%#s4FDQsmFj;J㓯힟WןGZFQ>pj`H9΅]M<+2O$As@rxHfxfb?O<;K}ӻoW>}[>&[_v'ɉUႧJSÈpiNì$]H&]l\j%%UMyV;3i\K;tY=qRjM=׬E'h7- ۖ@U;<ur>V2\`T9#ekdE t)|7hq iF;/ Ozk4nR꘹ "q,<#M4Y:ӛ*ɍ <"M?sΐM[h z6o; '^!O@Ԉt~xZӠAt0g3MCʣMϮV ^=bmFhok9! Xm=էoy:-P/%F.\k~U%\*Bףڿb §8,1wUELyiZAjA"N!/ p񶻙FLNr@[Qn&jEJ,MGJ0r,>: <^569&.쬿 ,PjR9J;=H׮Lg.< C?~冋m&ါ1Sjc]`ja<=N̹<.Mzt>9f4Zag'{C 3KOמ0JHEEeޑi89$KW##Csئ~T\վ;j=0㋎qԷ4mmئ9x{ yW O\WfmhtA#t1Ve:j{9D{y8h%M_iy=M nIj[KC Z" R TYG|{Y.`};l;o0ޝo4IhU ba׊-o?hDc>p=5C9}01U Zـ)j0)1HNdT|pkw~}/|!zIfOzgF%935]0gMxɞ>ީݰ&@>\XmŁAׄ >3F ԧ^{]=|MAҋk\Q19 ǂ97.^dm <=LLS%x3~Ѷ|MU&nz˭q;S[w|OsR1ىՆF~rt3)~ ʩ+UpQD0&ia,dc;T#)iK]IM:ׇ,e6Z5J+4)TVyM+YkMjA4].[+4-ysiB uն KSV0tƲ/UQ8IPSUGYOT#E];OlOCTy_Pjh,Pv[~?@8@l yWDɻZBձY|:WEDxv33eg~qsj㭫}rZ R"ת(aɥ_®D{M"5@\(Et>uYmŷ17ok !8.h@V߫DngBrCGCnHl| rք)þ.6}=t1r}yv,l뉓stUSPͭbfn,3CIW̗hd]KSKVq!ڊj4}C<xxg?!r*;Q1Z4nÁeWjmsc'-ު(Jiv] o瞿/]OQT)hc.Lי,sQ)sEƉ^niTuCo4Lnʡk4-/8^} ͼX|NBS/I<:s>p9W.7 HyyinKр% WC fk+9[&gLғX:g=>7L)ka׿E]88u0$-9ꎷIuzGSZEtǩVW>;]锹0Xr8cou9VD]CG܍5>Uc*+ rruQFpNup1:9[G\Mɭ񍫑.9vaPv)9w#]O zg^NP.* MM.6YU8Әuwj=!0l?jy3U>7}bˉwZCK@SbJ9{ Ou@ itn9gܞ17c.$]P.wkC@~ӯ{K_ Ks&Z58Jpy.-fy"(YT~2u,=B٘4ok*Dx4(o'}YVzH)PsàD™bvG0& l) xּw[5:*b[9 KkܙMJ@O逜"ZkËιRkc+7Fo6UXsaI Ae}$21obΤv#B9-\ҫB=S}q!g[tmGp5lLc&xŦc?iO:j )p,)#l4}aѭF0vcN מ7C>f?< ɱM4I|f$EǛώpѩ񖽏Ew, .xU * ^ )y} m_x{5W3D?|gΧneV+ dQnHke¹.U# izZOX*֊_W^mB:-# YliYu|q"6$#YL'_eKzwPoM4v& Ba $.6QOAH E.7n:m4St9w8rzV{{w /ArZZ@MZUhֲ'5- $!byX-qEƢx0t̵)x\t }Od qN0:@-elY@tr*r`LoCᳯI,#(\rVcUltv98Ǧs!BFH~͗γ)8jiڙ8̐< Cבs$h*V}jgi ɸ2wHP -#|ջU$_-xELl)#D+R /n.*Rd57&Eg]4Tu0z>1 0% 1jiO_ŏhym"իg,Xn}S[.c'7<q,Xz^{UzeKyt1gv}Ң_%)^pܛ%y޸zϾnt<j"'OEֲZp;p(U/r7 %jEڔ+>8d#,(@D2g>%w9ZzgӃ:J+sbN}!!ъ' FЇī߸䯑3_.u}=E\<*x-dk9\e1ѧTKmj}tJ 4GVj\ vI*S$iΪ/e):M|mma2c0C$\BN_0YZH&D !8 -hMԢ7ϑ>*#8Rb̅75¶D^;L4SS>FHSW7`HfnsUOn /l}p24jAqѠ x/\F(;,'`_Ύ%)|H{yŧ_{;71ŞX%pQJʋjMCE(U{\ 6_=UM9+S\pevɑ[S"~=䥞~3ҩ |8NM_)rJl߭M5쥽>,YacR܌3XgPj\Jn4qJc7X3Š7.zXD#o/LXȸ6f[r4iЄn)t1[UQa"˜ e&p55s:vU5WYx]C>:7wY@ 2K籖,.FM^Y6/O3hXm̓!Og<MlE^i^?Wy=w ܫo0DE ]ER fc?.j|ɹcil̟{5=ǃMp,"xg+*}oY~M>#='9RQSX[AeYSRy'=~/br0Sii)l㲗-e5QFu3~&Fσ!r9Ra?(79K8e ANQ;kEShqQȿ-Pqd1Dko߯Rڪl@u?W,BQΤN mnog#LLMsDc MfΕifr[!Nr_d1YFc[%mTx_ϼw-rB/` wĘyftf!*1{9Ĩb6}d. obcfGvCǐ*1S"]GxMk.k¶nk0id".d\=7c0W:xrsdTZ^E%"\T _#wSNiHiuΒ`fhf4ǐJ%E8)Էxysp1WN=p0xW,zm#P~^d6Uv~IB/֠6:_?GExƧ_yC!Zxu׵[̃\YzJ7x Oz7ZυZϘ+)#fD#)BDžuXWŕ6N2p<4:]FʥԪ!1eQ>Oi}%OжJ6M8n&:RMt$[*4df9{W> <^Ub:7uQ.ܰp=- ĦW\RJ%עfB02Kc?+ix?ΌsVɳ[;BV5WagǑ}>~.XޚtlZ7sjPF:ydљ7DHЋ>sJ,[U*sQ–,lN/ĒZ1\d-;JOr<|,i:;3ꌳN:V NDX}TF45pf$ǐ<}g;.-k TRXs)J&ZBZUH@CA/a?—a ̲ۛ9̃Aߦ-YzZyH!p9tHse;h^#DOI=; 7߼ÏC /iB(+K<gƱ2mZ;1g^W%A\tyA.@m۩\Ș5s]bwEޢ__X"'}AٜPU[8*&DJ.7&`Zɘ"*,q V  ԰˷63cg }[<sl>JrĂ)SʹSҹ~.jAq~֨!q8V唠gvC?ՐGr- '\5"OiBΗV郣UQ#^yпfL|sA.nK9u9#wkp!%ݴ2uM%p +L>h~,6evD7pqu,J6+lk7v+ހ&l,~/®ֈA[?+nӪp+jF-mq5M:ﮝ}oL`)l]B4C"c;̵hem2) 6/ Oŵc R"'_{kc/_2jYoUjE2A=kS5W6}GȥpH8(M/׾qM΍GCk \ A!hƀ(g-*0:Ɵc~v }CV$=hM[q̭[YșDE @cq; *҈߹?/C-ESzv{BpKnApԍׯzrir!qC Ji\Ze<чusURf+!c& PG0'`a2;B{nP,n?,gG[quxLA ÜɥAÝ 4x됦!yv}5 ZtUΫ4FSx8Tsя}m<_=V@6-9K=v,CMKq{'7 1h̰)Nh)pE r6_Y>5^/g Ӝpy+nP+et^}5 B]8#PŠn\8ƒM`\>,zR}O~sݺhxn$*RPݺso5QJ^}^6_&yWZ-(+ q3^ w=o݌x1WcnؤHk NSpy6jps QOtcKnfhA5k>:~_S|qk>=ܹ1c9!~TyUƜ+|Áy.[7G.{h[5Q+xI!}\1П7y\pqxAS?#W~*xгv#<;׽XkAETԷ8EBΛBۊ"9Jm|K>ps_N/;;׎Y>dU8G] z8fa7x5>9)Rtc I'|*%tO8A}gCo*QɽN#'o~+G$bNUT"ixW?VƋK:v4v~fw].xJCg8!Klljc#({vH< 5j ԫw^$vǹ%lC@x9'DcqgS!~c o]k7Di ԰fʕ~}t_|??6\.uŖsccY嘥TmpZU42uOsEZcJkPそR*MZqI*̧fr 'X>ď|8Llxف,(q93R0zRE}NjN eIG9ClT!9's}D'`HF|$}R$/Do.J(r8}w?K܌:嬈 ko.xwZ)lijS\O3O35W^y={==Fy_gM~w=W@/]gPU_{Si43dV|jFPmO!#US)?zMRr1vH^5]8M9V0nm˩D/s[3"+`©S読> ?v&Q\&Lַ幗SV wN!_.)W]8n$;pj9ՄJ";Jk\Sm$xZV&繲EɉA[ Qv on?1by}h?)ʻy2ΌU*s.ѳٸՖţ#Ci)F>'81DbpJgCٞ~xAQ1B[!t>8ע6xI4/{i&\ .8&g@%U-8YW'+~1[[hҐ\%J*r8fΠnHŘN3ޅT1*]V.w7.К^ w*` IDATXY!<:ƒn#lUSDΘKluwwqU\i\-̩9+LmdQxg^:j>%upH\tj^&l1|+H? }h2~n_!j~w~w")1;}MZ9C.`좪jk$#6's#x*16ExcsxˑX2&63c/?/qA>vސXH6%9ZZFsxZإ}I+kE**<̕t⿩-vt͸~AY ["}/^p|맡: h=`oU[)i[{4}Òfnvz3ftS+Iq̕Mxj%v.dDM<1kr 羗R '8e^h(Gw[s5xQd FG9);`^7S%_@_{Jt)vqxRJ!/?!8&v.ƩJ+@qNxz( И`oSvU}<S]y8$u)`\(E[NOp,w8NOk'f*M!RP_ksayiB!xs%ϳ 'wVR-t[S)/)d).݈_ȋ7+֙)[)2[g9ߋЛG'B|6}Q%ŀID`y0#R U5K9sìG1GJ,ݹ?pT=tcbsv3T]]=CǃMa˞è愋Mrsu,t)07焩6}Ӽhc+x6vW_sE@3XLiz)pH^cMmK;agV-ZݒVk2B 6`&Ƒ-!e8Ă؎$qL9)HRlM ]BRwa5S>{}c]9'ߌr@_7CXG~6#1C̊e]U)0!dpڠ͞P+6>pЊY'ңȫWAm ;Bu9Mpe q}𕋇E9BsFkSy4WcbKv1ESʖ/ebVZqPWTN^>DHaUɂ_3w@ iV+˖E-#4}_1=?~/1b,͢K(evDi5uڂh5[eeEqepڰj X9"[ƔV0b6'ypeLɯJKAi3 vnO| _1?!'){OO1֎[=)ýW1g(!9SMBAoD4%؃Ql:1Č@d[eYayJLBOzt"6פtz(>/=4 8vrE9lqSVTVsҏ3t,2j ~LA@մn+l$dW^Xpж4k+Wģq$MmhKڃk%kNsV+SWf:g `QXH dRWT06L5V2.nw(`ޯr<roFLi&D/*˘2Uel3rep6x6Tg0Lҵ圉^vg4/{ctعB/̅ag8L3jښu ![+%$f0BUH0LQJAV_\MDQGښъfbCȑo~x3 ~ycэ#Ykl[QXh-c-*)on[64c}=^5u k=-[X/D5"DX ƻm-hE.[֗+McGAvĴ6_R)Gt@D*^ijb*~WW nȚ65\t۰\uC@i8ThtQdY{fq8f 9Ғ.\d=va).:% vWJ^P\A<ר]bY[b!P[Cp4zqlb[itFzL4#ԕ&wh8c ?>xy8#f1Ņ,lmk$KM,YͲ6IFދKEC7D11qTgIH͞O{L([Q9rƹjA.c$q>x<^W#w a~I';MhhKVFؘ |A*99N j?+,F:93X[ӳA[aTںf*[Q9âZcQiv8kʖ(Īf΅a1K<\*=Jl"mrm Jâm11U9h^܌jIW{.uʲ1;u>Sb4Ƒ wGhA|[rk"J1ִ$^zD!]6lJh•Rd=zuɇ(EUm@LQm=hlZ+621&tOm`8ec wpؤiC s /)mi%ycSVCrkH(k9sIh~$&8\Xe->sT X r")jWOyJ([8GEO#9\X.Wԕ##;ox4M.[ȉ=*rq$ C&IQ%f폨V4Cey]gkU[hb*kg1hӚS9W}wyPRCATHowu 1e>\:)B[qS|'S4NjM9Fjg0Jj\,22bH^EY" O?fy |ͻ 33;\yb!5+\1fb?ct}{"*Lb4ڸcB .M )}A\UCD8aY[RSYI$pZRђk؎Q$nJF(S19kn)dw{:`;JEaIehYS|ں6>\T,5eAZ֎vaѮ*Sj/lBx"cQ*dŧ$H̰X/h Ҵųd;F)^EC<|uMšm㰵]4ŏ#{RDJ1}$HywJEy轶ҥ.k$WM -1 YDziȈ+i?^T1y8#O-k(T(m*d80`T]D$. Pf(F9Y1~Pefɬ >Gs6GLD  Q La X+s)=e3"1) C,^ zF;^;_n}'U /RPNڵoSlpQIf;?J%\)JHIO4Ëg=;^I4ǜ #VZ۲ٶ_͸îxB}5~ 5YvY/겡27˶b;FB|! f4JYu0E;*#U!}}nhWtER{ީbǪ9aO{(S>h+V379gJ3g,mkG*$^L̴b0+ZϽLd <%`.RFI3b`0Ѣfy (<2tSZTN3Urz V,Q|LdFz |(f/!|w-^C^zIibF>μqĥ5_7gJq曹ȵUDΥD?QW1G2)l-u9RY͐l|^yBEb)p$e06dc/7.$ J=v/ jqtUͲ9Jjc*A O6ySe.`ڰ'oRjo +s5+5z/Yc֔j;Oke[9lV6X.M^KɥJgHPO@0ϣB+zkD\O1ӇU5>޶Ti $fwO&9)Lg5 9NH+c4iYU(}#ӍP6 L)3}|(owx' ;읹LXUPZ $X̢|Eh3 FPA+9jkYf1!rjlL3ͤ/+=#kb#$f3֡x>,[zbP7do{={gx=}lYc,n6gR6z l#>3?(-Z /u.JRxU[qYs5v+,X'pN$PJq hߏ̓! c}ޑ*U%VUt]/Ąp9~ԧQ}?J2֍r1~ʷ%DEU"Oe|1̽B6NI Ɯ?.vQiLαXD7<+CVfw? [%A`y2DfN1rư@FyЦ$)n)MunOvrNb ʚ)1ZcLBT;>E8<9!D EU0DRCl*U,hI8-0"|a*c>Xཧ^wt\U \Q+T.cquqRgg3v* 2s.0+h pWJ8P:` g녡}pA)0Fxk gV,B1a,^>|{mN pU &(wG;i Da I\?j/i,+@O{vNə9Чrʒ8l*6@m,>4II̘P|A?jP97]<J5-Mz[0f~6g5DŽ)3բbe(jCm4U9c]?CM NYZkʳ5:^"!0 J\rX`m1]ވ!Dqt5NZa<4VNG@tCZCe.MEy!R%3COi5wi(S[ES1XȡjF|R[It4F)f.M&H.'DV bA(86{`mH7Xíy煘Q @FV(A+RB0df4f{_8 #yLOB#.5Ay|t?5ow|Eov~y#1d{yS3ܶ3Tl@Roo6Ŕl !ӇȵU 'NJhG*g @h Ye6:+gnTQ cmnJD!}^w2=Ĕ߈aM-^ ,W\&MJD-b"EXԖDZf;ppb!gxqӡ"E񪦟%%ǘ@ s ) !2@L X`TrSKDe/*=O=ss` JWIfXSRhԳ0Gb4̔"GT3Y7Kun'`Q*XK:c) mCVFx9V+-u@qE;U,Xf^֍B)7ýO_Fr؋k0-mEg!? a;y8役PYG҉' n-*;;å#]{O 22gwԅLB6a;B1Co{|wo~{xc:E /|HgQHbؔս̘ mnjY֕Ʀ,ucQdd$")޳n1Fnq5!Y׋|]ay^Js{K˔*^Vԋml5KHWmBB{%Kl:yg,ØX/jg(Cac&7),z78HA$00Y!#-cy|^|~)!R#xwkkQت _o<)sb05Q\=l|$ ND>5r/5"Խ)٨rBHI;{<,lT(1 ]kꑻtwWq{ _f'Ȏ?! l IDAT!.hCV~,W2T!`*&cAbO *FY657E-vΘ!)rC1(rWW5ϟ ,+҅$1)V Os `Z|S3we  jJwJ}?0* ᚙd̍SVi 4Ϟl9\48knʺw5mfB8@?xH?1H!`s 9c"U<*&z \[VĔͥow.&7^YoE>,+v*etLqdA$!$111 2~ C`ۍtgeBv;u#1L1LAAb]d0Ej[ѕ!*⸙^EDhZ@Fc0(\[aieaL9zm]/o4CLH<.sL^< .AfRP4BB >@ ᴝMqCSM%$d Xl+E1ַ3;3N43k1tVWFbaykkںb u0) )EMkq5YNH}i bFJ8 <}*a$V2>&!usE1wö#ҚYL.OÖ+W|C_|!ϙoy~3̭!>uyb*p%HFnK?&1qE69!D qHc`1b8gt 2H)|0y4m3($#&I֞׊0xƾ5U{u A@n6 9,%^`"b9h-OpFma}q8XXO rZ e[ c, Ncv_H*Td.F0SzCzP{V m>+|!}\yKQ1wz2|ٓrZ($P^.y/ի芊dqn <1(* )mHmEzv:7ؘ9Xفl^꥿w& &)[i.Q(rÆ8ݖB!J֖Ã%hNkƐXٵ̌IЕQeDؙHFqMI8Da2{NQ\zJa$,S|7 ړ3wu;pvE%~8x֖70uE2'l72J*FOg>p>x[Mپ"Xxbޔbzq/c +tVԍÇȦ cֶ n)sUHєDvt ~F?3z5-_\iFWs5URX:NQf6/jTEv犇Ẍ'hxd)rĜ,h.v[b^SwMD2Vb"hfLķUg}>VA@>Ƽ8%}XmH`Wfn(EJ&|UYEci*':$m U[U1'?{UL[2bK n?e.D~{uGˌc$9+10l3R^vB19Z/ +j*XgTsw7Rh#|$ bQ3(") j k Okn2!JxZ)13Qžy6r֤ `^`l]L"'-H>I\<>Ɖry^+׿ݼcfH6sdO;s !$Z>O6lܒ2C9Ѣ؎Nf3 rXىt#{*1y*0W.09%қD}-hN6Bb|O=8^u aݵ"2f_Ͼy w3 HMp*R wńO_綱CT tuLdg5*gbbN}['8Z4E+''LNK].ZJqQL9W{WwTp!Gkλ.a*c'EI:K*a(Q2CU5Xcѥ4yT>'@d;G$~jW !ɑ?K;O{_,qN5JϚal{N7Why{_O]KF+4쩓kTAAHV J9)gz2Sf竡5]aV8Π+Y45ikρb$gNN\)En/{W_+wC'8޼gSs ya]!XFUŖĘYT, gTl*,N'&#Vɨ=יQla py {uG-gD*a%*jM/WG{]L\ػ %g2P%Ea>L.TRxRvՃb-torO 9:RY1E11BdSB'J'!ݦO$(Ӝ(dy* |;x:vgCHL7sRVۣ9F{EE=ca1gm 7"+EQҧd%;B%w苋dAie?oZO#BcEŭsnkG|ٓKu~W(j)~҅@4kK^4$Tf6'o=uv_21 Z+ flօT[&;X5I{`\M]ma72!|i>p>t[ e^rTdG^^w֏!fb+T2s\vӏ2/nGʂԵ Ia:MLyv My7rbU6À3lG/q'Y<SV %_GOmpgfT"2K>JfƧCWrǾmlǀߋRFkpRicKg\{9{fLݗ3{@$ P\ߘf|3RkpInx_bCξ21=B֐QZ 3e#c0'D<)HS D&$!51iwD.` ̹"Y7Pޣƞw h+ҮY bBZ\h ],#'O )U(Y9~i:__,~ƲPTAH ڑ1u/t}sO[Y5bG NA [[~#~Fϰ n_'ҵGCD8[I_L\%U-BdFiؐ3أ̝q1`R,N%eoH0g|E/y=G#~,܅.s,sxl*C1}3"mF Aֵ#ghaŠ!rXv  ψnF3k!~Y4D[VH`g]=k(lHŰSa _Uvoz+1c wҦX#_v#W0gOIPSz/d2"U wXŢ9 )gjkFO[ٚu3K$\)^܌Xk~ !H 'ő"1>)=D>\Q 9<_W][ 9v^TMb /ٓN2rs. CЏ楄sأR K6ʘ\܋_\!JBbLҴDHeJht/O{>G> \YQi:Qe9^/_¥wOt8-v)g,JelδƱn+ۚϝlǟ/O_/OR[|09GQ$F-'RP ߫27qIhRby6*Yœs{٫XKha} |-'g;vJi F#oB[N{Ҝ#ǫ$p""RYRLZ> _C-> h! R*8fTV1G qp*Ҁ55)zTBSp㮣@BP|s 2K;7 h{Ԧ~ c6cf`qg ?E D9psя#9fX/*·@i+-d@َ+еeIDtjXhVX861q53zY:햬߿I6pOqYe軑w_ſx_‹|ȐÒ9S\6~<{QJsi?/Ƚ8'XOYmǭgb#m'njV S cDM?kO՞_>,lgO/w#V|7k~8 _c"F$T.xiUX@cW-0$qP׆~RX q '=_~pU+ UH(EvWďܗ޷w=pw'ϟ*Ol&A#鶶X$'5}7 (в<y% +s\E(97L 9X7c+y& 1܇LXSP ]$m$FI )Ţa1>:)mɌ3\,@\;;^? j1ujoT! toT13 Y.W-y;@asYyK}54$-U0DFѢ/ /1"gZǶTJC$͠˦MEVi%5WӈBq1H ?%-o:^]k>ףRϝ%,p>#!&'w#RE)EYW Y9ue>.t)\xO\]74n fJJ]Q&N)^+m=9ofO*y7HGy'O_}PPAŽe &@ dV*gnmyɖY`ݢ  :Gbdg7zOUiЕ͏?`5|5=/.;y]?ׄ$]3#߉561it޵(R¶k Ye6crdLj%.m3 ڱfIR*Y8)@QdvbS2KJtɡˋh'?Ʉa-F!!r IDATVzJ"{Ʈ'vKc[t?/"$4Jjb{9̪HEvBI>`\դJU$1*T!l2ePZ๼>6- ˆ$뼌6%hM1!Qin7I)l"}^FO[)xQ|ף`ן=ϝNytm5(gTǏc CeC]Y5KLch荙+ GMgƘkC8DNL#bv;XA C*xxgn_?\7Z}[y<)р CG6 -y/P8ÓgvVvmNs:nDu+{ 2\m+B|0:[BlX8`Nj~;،_:[ݗn%FaDk-ݚqSM]EM3/K!JFAcTFn-ū=O]":^8QlZt8{Dk-I# }`8nu˚u]qdUu;[ZC'FN&c]"iCec$Dd/!T,c@ŨDLaCVxȥʞq{Im &|H1H5c$F2D`V ΀mfU>IZ.ΉXNvYY1q R'VKG (-jDyզ6WVUe9$OуҊuh!pP9ަɻD9!T9}:%gQ]c@IF+G o{{Kgх4^9[):dUzQRBHʊoG _ڝhTCGX7"]sEyѲo/A31FFd4Vs736Ae1yhɛ,{/o?Ʒ7"HkB࡫ =ly4n>w=:´s&%MF!6OąaoE!gBQc=9Pck+Ím{v)"0e^-Vv}HT:\_,`h+"=}.ٌ1y>Jׯ`?M,;C!u U瀾l:2MIxLUۢї 82W\pCetaǔH[YnnF[8h+"+dzS$k0TQޯ !a8()$%|Dt<9KBq=ї|zVsev4FЖ\y޳9 )[JHcŢؒRJ\HIJQ\"!RE UJRJ%),QBI$JIZ,Nqb=쩻ה\HŮB {ݽַ}W9QWڼZc9ܣd$ΜK%'H*CxE%g `ZSD+Qig@1.W XJkì(YE|bk]yciMf&̢vY6B3+Hzq*Y>F6P=ůO{~9'oo2Xm_?W:Ƿ=x?.9j{.B&&!朩!]}M]_zt> uI}:q#9r=Muq ョirzb9+. v5zyǽґ[ 9e (q64JYdtm`[jzZtIJ >FjSĚL|q-Бxٟղ8(-J=6bm$s}mhj˴7!_9|MLe !D6]bCl3t EA fli\w/hZ s׾~G-ߢ;ѳԻ hLִp045,ZNƃֳ&BtV$쑘2Ja2E->b ]\"gWm5 o<5XcL*MI!e Ka_bfyϟ"ٟ37~o})]k_ZchW|VEkOo=)?~'4[1[1h%@"]VĘ aqk20G-o9%wLتb: ܿWlӎ,P2}. Gosp.;j_{}u%LS{_f]l_ Lֲ8+2}oq8U[QE+r1k,AHg3DhC`ob!A<,K'!#Ų`!f:|~`mL g0ܝ2ЪGE B7">ڌ/M>ߘq_1'nyz~Yȿ,=TW,PPU"E3Mhv|&krz0JVL+܀-?ZPٔ*84MD+՚@T,>A0MmQDm_Xu`-ä([SŒ@mJr*lql(PG6R`FSk?|2~y1o9=%@O;{V6^q'16{F((I,{ !֪EkMSYLgAʪ,ؑ`UHg2K9ZwGZ"v)t΢bD==ȺTU tBg~9ѠɞX+ Yq~x~1鯹Wsl5)x$jM+MOKPYmd;ȊvcTRNOxBD͹Ц߲5~H{E=0l~.J嗶K?^DWQYC];*gqaXFgdZXMc8QN29IjS,0 x/'& ֮b,=6`$3yL(8J)ӂ-#!;u_K/౨S m }/b !>|.  ̣9 c,XG|!(T1ɽN]/HqȌnhϖ6D/iS۵QHN NªM=>ae\6J9="ǛN,@H1DPkf5io5*a4JI(˨g7oB3ܵ @W>' ԥ(F7ijvkG-o>?'O&̡H^z/7L,.paP9tZa]z ˮ!DMyMvvΦMM9(=TN΁=1d t|<;Xt^[)rH[7ZOC:ӊyEL!*Zx=>gͅ_yKG-5c+$XF„PqeͦTp~*6ΞT\!%f5g2H`>$@*|~Z%gSOcLR1R1J>% yӰ܈{P|B$=0N9-6VZD`j;_ 5E>̆u$cQ{]"KT y﹏ieiW~W=h9>st!@ ~o'BDN#X#EɲCq R!nguڌj5Dp*,P|QRY}Oir +ޥTĐ[ELQ.{'9[R4 xwާ!<(鲹2Z|{;]"p߬BHb4m{_zHNе2;c6ٯ }r` =29s]L Jg/ ,9 uğRҶ5JYiըaJ6΅5G|/'҉PM穬e)ጡ>@qF!I[qWmP9Ƒ(`8H%%g Z4W5#"0 Q,k%c|;}׽tAOUWvRYcR9v\p€ABܶٴߕd4TW/}ATF\/ 16btޏc,1)EKRס}ܪsEaRIQc/j絲ckw!~* ~쑗]D23Yex(U2JLj]UrtzU c9ω3К&٬rqMaZs4: I'6D {?>՝4̚S "oAC'N+ec/Fjh&t݄Gtzʏ|{`E8/ˣ(i*iQb4uHB]/h{ϲ섫}麞d:h-`9s޾εK zD_Cwe𚁀O<Ņi^V @Z3RueHkQfL ֣+Mo&d|dR9VmGmK+5u~,=jú kpނ.As I}}b-/:R?D0(|Ki\ʽW6ZӮE+|ŘJ'G92VDU52#V1־. C_n4rOS&6}մ1p0c5=k8 )g K{̩Y-4B1a 90eqz$qJ2&IEs&iAP jOZ]0wvgft=uZ4UEYc+=I;063Ym|,7c30d*k8:j958W80ڠlMFKiA4RՖx#֖M߲^ul"1,V[c2Fx}LUW傦[{Lޒ]!ue?opƌF *YR,ZFb`Vr3~D`8A<1xtŸj}J&I)>vh ;?dNJT yɯdJ)хa,>)eZI-fYvX+CUY\m6W!Zu%.K;:(UX+vya2qMjgYtb1V$O2N>&ٴ=}ȥcH 1ғޙ aOD,~bG>CʤBi*GRL+QBlC)y?#liP BMbA!;D 73z_5O՛po=Aeu٠W"DcxՖMmG[X5޵A @w=wf:#+ jk{l9n>%yWR;-/?յ?u'?YC3 )uPnA2vi{/SN`(nJV*끮um&4 3f5#Э Õ>}c 9|^m6sj[qj^sm^~m8{ %fITN0ӷorx6à0VY76 m8Zµr_6g[Xr,ix/\"@Np N"ѢcV[*gXʢmVI^"Ŧ:|Z|Q 8L Odr:Q- RNl<Ɉ/rCj⁗4!be5U%ZJDϮ^ 9 f/YqV7`.]bª'er+.*R aFlwr3K3Cc#,Yw! #E:("\(bL'mFNW"VNID"W֐1Ţx9jFԭ5Ӽ/\[p)}̲H%i^qZkX&'LuS%9Z֛zR3N)ԆM&֐놺39 r8$8Ji~}7O9Zҹ"LZgH|J>e;)R/=FQ,uC!3-P$VEκ 95=:gADG랇NM~wx+xR;Kۋ AqGJ9K}?xhyGFmEf>5SLU^(0Fȭu}]qM@h 9)!a#|LrքrkϽpWgk7g^gJ6DDn{z:͢Um[%aZ;TVZVN1eL55TOc۶HZhwL2K`GZEAK{g514L& yESWT+&#$gV˩D m*:k*3 `ƖK* f|R>JAp$͇7&INtb,6i b Eè3-V8XJƢet}Qfş,)BglP^?K4zpZqhM"µʲj=]+GT6IצZH=$z]4A=I!@ $ϢтjoSSmOL`ٛԓ>)|(BċL1J`X SĐ!i#$M3;Ȩ{6ZOaWfKG D DT B^+1+SG] prpŏoϽ?/Jdo ^QLTuE߮6+' ҬKqѮ7ĜQGϤ68<3+Á|cA Y֫~1/!\_๣OsrL2N.%IU?>b+ .<[fjˉ92GoEmJ{_ E 9U,y着M! ;7S*{ٜ +O(_KMYhE`pl&ZɦAԺ. ~׹@bf2B:ZnD, IDAT;cDhS&F=a*V®b`b({kjqhN0q#'V"h4˂jXX%#g ab5g>PRt{g٦ W 3αquZǮK yl|ٴVkAktNS;RȰN4m`uhjac:ߣ2Z(q̤b6k0('LȢ[ϼp׿gk~ W9#ҚLEW9tAЗ1" CcWJN?TPS +~-n;yҊٴox,okS73sN%d^f9̦CMew75Aʦ7iUL`g+wϻ͉Cjz.k5ހF, Ś_P kJҐWTN*G-@|*;A'6]H%qd8-A(pVCv5H1Y;/5YsC.@mz}DiÜ ?\g_dj ٔX(cۇDXDƢP E8Cx^S9H\"$ɀ7`6> [W+F ˼7;W,|77<^ɴVXp(̠gəcISUcw5Sʀ6 ȦR"A* 'tLCC?%E w@隄#>*U;yrF4^V,XPa+Ai[+}bJw7׿͐0)t,^"~֛SgP! 2h7 KG-E4eCk[ snc.¹8V|P(gFcjNE v"*6iUGކvv4Xe? )"@'73k @h,d0O$:S(k$d Kw e,-FCaKhuRůFǓH"bypﰴ(l^\k54MEOiY{2ڟa^TLS6}֤qڌ"0:\mߕ`G9So,'zh/<".XqjfC@%wтŒRgILQM,}shɴ2]҆Ɗvh*I]G׉,XkL(|%{5V-2V!)Bv3V 0LL3p=Kbhs;3w ASm}.E鈈JZ􈙔X*\SY"2(c85kԖumZӇ[[?z9%#v=*ySd4*87w,hs)Nv KGL{-\q`M[ Yf³V8~W}]c ϿeZ[B^2qoRF۝WDٖ̩QgHjs0IE޼#&ЪtRZ%DT).c5jT(p5-S"Cl0jB`J%jw:2!äqcD{PrOϧ\;Z0TβЙZ mZW$$"2ѠBg3F}"Ի3?^ WG_޾5N *gf!zafZ7͋׎x֚vEi7>luy>p_믿ܿpkђdԕĬј ;qFyp6j3x%U""޽g%]O!eSU;;dRړIK|V`QΐFQAUkf'Gx֚Ͼ%[wJBT=jhϙ nZr>U3-]u,)=Q>cTH=sz&0؇>~yIUUC{+t ˤZ=[kJPDa*Q;ES #$؟OLkW0֨,9%Y.\sOhbAk%m|MlJ Jt'JGdP5]D1J-%SVwQ?~J [ynse,$]/1ZZ5%/\#EȿK㦚1)P/6seaiKM$Rev! ڪ&j/0sC:.˔֙gԝ{?$!=u{G>?$V/̤2J*äJLJ͵Tc1ctD@ݿ`BXQISC:&ƼJk.^_~٧OseU"ͺL6*t/<:^Ƨi#:Fc"U>Kr,B7W*z\%o 9xb > V9e#`,ZzloFոx<73kF}CfF<1M#ɀ>7LXw%x%-th& T:+ٟƳ7_~w_z*o==ܴޞnKCڵ]f 4mX3٤! }LLjv]\99#-i{]6-j,kغ!{/nLĐ CP9m'P^g8wFQDnJ _5a*o]:#8-J^Σ1iTX17,nWc)vV9tV Gqoĸњ92+P87aˢR9KH,>aTAdNiyR}}3a'JڔZ\.={ ?oBp{ç<撿4k-1ŔbÃNIZYu4ME"o93޳S}QGRr֚>;p܅?´ңeeJndŚ5 .Ҳq.V BFnEPOj< k4vFڊPveel$@1H&ku"y@kcN!J|ec}xtD@I,ϔE-Gt(It3w_5zR,Y!Ħ}ԵvX@+}%5hV 5RM٤(0bY}h]bFlZ6~ J ֬[O1-&g >XS!V?Ky|=l7˹~[^&pS{Xkج7(f^[pէ0oثYt%Z]J=Y?7}T]. Ul{C7M:i .w^~պi0tRMɱ~JZ)xAbcaHAlК1ٛwH,=W~Ox2/mMKɴ̹SLOM8WL,V@Ȋb2m,ijܦ]t<5|Yyawe]]\:jo>A,EvB կ#Xf#$zi-=žXeٲ22H1yP822-A0lsKWϔwz:]5QHo@6< F++x ~} Rt"A CG9'FH*J'}@. Z|eSѲ|xr(5Yʒnc 1'Vtx&S9-;cUabj ??:p?΅33BHܸm=8Xy5`9nvީ3̧XBlp1o]:[TaTv9&r1j /w\9Xjd: HJ5gg:]?+9CzhJespT=ɜss&jR)g4U\v3yY6 OxęyË淟|]G_X8?~?ץ5V=AcFFA ̩̍ӽ)n/9:ZS;ü6-=o>?W6"|+Պ>*g?C'uhf5uƎ g%1&B$I/d|ج{ڶ/6BաRF4EErh݋/\;2z]6zRS],ksv-ʼ'DO[dZfT,o-Յ)63JEL?^:3=e%Fk7'D14lyEa^y-"R,Z|X|0N]~ݿG_ȩᵟdEUD:̦('he$Zh d&SZIAS (A;w1P;MөXcw+DngU9OCuZ]? A/X:=L>Un^_ppIEQ=ipu?˗i7#!ZejkWi[NMXDS97ZB3h3O^!iT"MG='?9d|*?EHMĜN[~/R JfXooqkzҷ-wB$)&bITt!Q5+P` ʨ1Ӆ#Ǿϼfa*]s+WO> 7̌֜ڟ۸<:pp0 Iõ劫KW{]9/\6m漫3!tb(j dtRCfZ9Q:Cg*cVS;K4݇8<Rh `fx.6M+!@esSb[HEblֲIn#NaBыh*iI:>Hj 6=]S %Hh_PJm;'SEmESpGe,Q@=.cO)aRiA̤1qNNKT31t%ȌƙVJW:/>Vÿ~t76|n,[.^;"j~r7Gxϝ_yfGSU\-rRO0%/xm%)cDk-z^iҽ(˳"ܸflYm:$E@8c~[_MQCkL%i(WoY{MOZ|ےc1tQُ}UU1[h]H-;>}٣ ?Q1vHJӵ gbJ$mqܳ[{oK?=O^I).s ^zwsvRC*(ɀUʊ&{ >Ygܖ3( S;C{lom(;N9L-q XcŽ<덧󑮍?{u1_#>$B%>/eW}mR%$Efπ.'-#aaHtNys6r\N02c$qrR9*zAQWT֠BDe76g}bxh]臭!儖"!xRxǘdU`Р̭5 yGu~{Jn؛UjSxƊ3󚮏< hyuYK~O*#\^t>9G,Foj ;tRQF轴o-7In~*5t]G~{d*d*90f>G>!x."A{`gBcbIɒ%wxw" SVqx wxLV<1nOsL"/d cXL8%}b3)8rK?q bߢ0 VTvĒ-Wdw[_JeIޔɺn娮vȉg) .@p|qhZOz/-͜4 B,+!\p]R4!xYˉMִJi?̬qĔYk NCbWO:LҊYSwOĵcrrs/3 o{tRC`k˺9XY;z5icז\:-x`^qD9:ge`is@zםf ]/U 1] LaO|hQzu2k;q 镑zspŭ ˖ߓ|_t=1tV+ ŕ\R~g~NK$ڄqTw{O7?Cpnḍΰebbn,7Vc0\t[L8;^@Ck) `Th+"xםgV;TS%epGWE?rl L,&IdɝzQ/jNbhe[=svZjg@o`BVK.N]OM9ݸlfvGc HCLs. SIE%&f!:B>|̹D0 RD* "x[wVgZWǼe5˶Ŧ,na?H t*Rs/Pm,O'qw޻SGB5˶Uϙ Oy n=ʲ RV3gO}g[C2 IDATm\?JX}Q5ttZU{+"Ӕ#9B+XQ>wx SWNb{ VAZ!b]S7dSlȪH6DVved q)$uv(ݺ1?)0Ba3hфy>sNOkTMc}&=̋GNM+9޴,5U{/Q7 zqolCK'wE` ʪRAK n1'Z&Ym5[5FB2R41%QkEyC9]dN'(*0Y1Jvr<^tmO2}_5;hvOz R1 3w{=x{3b!0 =MS#Ux8sH?oC$i<%i@z:]C2zpFNr}/IT4; e/c/S;1G7\y[H:Y"4:擊Sˇo ץLt<~Ш(y9DQ1⓰S;Ҍwf pZK,UkQRۼtBLtmGGRŰk; -EǢdvm|C_&X<y?Ig.<͈;xˡ$gt#U WfvN_%е6]`ykϺhlGncPFӧ%/\]p֒G7 +~{<$EREI$'+%V8.;ʷ_Sr,)Tl%Jb'vYrYђIi DY3zD7N=>@$M@U"l羻k_?'NjlEtˎբg>X%Uq:mQѮX_?1Xe:C-zr,DdޟU.C8O>9oOKBrbљ+bވ-㙶#S_:6oe3_lHk^ +uIxdRkə!EV;!ݮ^שdh+%1em{=BFw{kt:R/ARY 0A嶡JĦZ(En )lāCAׄaq70R@c=$(+ aZS}' jX+:Fͬ?=ٿyggG-gG; ;-r섑wfٝzF✨νGf\*#vf8OjNXc HG) +SRO0Tj{gTB. /$pP*_)=ۚPֽ5WC"QT!C,* IU©lZ/k?Ĭ/i^ɇ+l*Bqmun AI}'Z6a2xe:3mx{ܳpn˙copnGpeߵ}>؋ꡫd#%V V! Z\elJFޭ>d PZl@\߄̊&( U2^`*ٕNUyoHj6ZSuiʼ?(݂]Fl(ZrIcmTPgm VMD F%IԦRC ۾3Xc:: !17VX,[$ۙhZO<ɋn{cݖŏ;.\VF)Fӟ1|1JR21?%$r p("}2 AndUAL&JR{H(=0jF'u-i_C>E8ƔH(>,CLQtl;CZlj۲:_'JRǍkb!ejaLdtJm.?_s}y3%'C\Of(Y=C#ﺸ!Y"*3,DgI_7*7AU$0SVɵo_y!cjYBfZD7H%!ELD`}[NeV-QEdV)>߱(Bz1%lE6JQL}cmB%kQLghЕMuisZFAL*TC¸B2sIs*.mMCQ\mʅeF ;͘~Ֆ݉cҬg*x`B9[NrKI_~VN >qRNtދzƠ(:;#\lG}$Dr- e(zUqb!ˍĢbĐ]@NyT=v#rR7co(w;-7lEEZA+R e80g8u#RPlZ7egqc-o c,YLӠ׬Ir*!wn @[JJ^Au[rn)hs- ۂWkVRR )E+4WASo|*7{k\q ]DMm -VBf<7hcP쬌 (:SB$UEMbJ-[&;ԭx]Rꖋkn*o4_hȵBH]9 d,LjVJ%bUmŭtH2,75?r^XaT>we}]=!F@X 0 TK#]hY{zȑ4Cޖ Kz,[ ))IM2$>1RRx`Z ("7+9"Gΐ0Y0Ae5c/#^]Xb}:2Ē$c-8̔7=൲Ztc+$ Zpw(Eʄʆv,Uj HfM%Iy}gw̕9n,Vrf2W^]Dd#ZJAc1)K Za?B/y)mOuo97fՇUvLZky`ƿe;^}ًXG\LjتGuǔbWFŰZHFL9]>~y>$}❁K\pRRStuCA.BGXuȅ\ХmqQ_,P^ʬV=C lIl]/v9EB,!ِN^*^X%ERVI̅!6r8scto^Ek[V5IPJ^|d\m brDA,=>ŝ~O4UHHu! ,Lh*Bhe ){|vo;Ǵ{v[go;78y)ݛȽ(/ V0ZXa Dc1>KgHAfoi8Z/<ݙ^o:KNu(ѴZŴ\:ß|ROJ)!3**d8BZi*YNI[FCNJ/7" L"^j*U!1 | B <8^0[.WK0BIUxŝV^ph{mfF12E[TUBǵ/~5r [녳c.\r8iMasɭdB Zˋm5!fcQ{JSN|祺sZPuVT%E+6X+-̛Q[,Tk=p\?d}Yf}ʍֳ7rXy脑w[bJUU|2b\I )!sBti3L\-/x|?IbkG^bMnB Ilf{j)b`j0:ZW`by!H ysKưУI) =II~F& ip )UXPgu!u1iZbvmm|y'^9+BJ2P5'K@0;Mu?)Xe6%c%/ NCR\t̻Ny#>t TXCm5E5YW0 6ZgsL0LNg#x+5DWG̲eUϊ@ũB *)0Dٟ72xCbְ2]ӎHʰ9&\k٢kRnt}`:5# ֨ooCoHR_nbyQU(u HA %|ZJ1Yc97SL`L~g{w\:O>Aʘ"mP I0 9qY12i.H1"XK,"-Eml‡Ie 6Bp(NnŪ cD<+v.d3X]pVxǹN:qNբvm7=sV0uC)FEl7[e0Dh-UXwB_#oJ(q UUGrPU,JEŀNb鍸 Q\>3i,Zǽg;ˎc6 pmƹ]VU-ƈb7X.ag"Ul/[nUk< jϕjqi@׹m{}R ^>8}zM٢…P }b11 {KLrg PAr@%؝z&co,&ESbnM~-6RΛd?BF3qJvpJXr7"Scqbt11= b*~|m ~ B&T.JrsL3>ijp]2!U*(!'q6xP?^S-R;TpG|O~`me7 ʑ$xGH xpɃ{#֢Ipڜ~eh7U$)JUmkH)L$eH_H*n3޴Ӯɦ\C E`uCI?CfrR/ zB hkِ@4<+FWoH4c g:iNUQ+QnЇ9TU437;7!WÐ!%L=D4ưC9517j"s(Fc;Vܬ|"V]VwEoWF!5mqюX62N`kBHI 䗬VMBw[[n!mm]Z!#uF'Ĝb!X+Js VKk|ca♆eH9s0[rh.~FZZ/T,içuX#J!{IDAT%ȥ2 qk[sV?h[RzM_f.NAӅVfF[kWa:,:o8Z(ycuh 8醈AiètzWXŨuܻ78mx?X5FIV&o>X[#INchU*3$2Zc6a)rY9Ps!=F=u=G+pZ+$ƈ_@c![AS(m8 Mi0;6CqZY`cl6HT0Ok*˔iZ!`[OQ{ƌZISA0жf"_k5~ v#^hًHa"|:l7D)5)If nm=*(t45mlJAIew"̷xRu<༡;ڑc4XV dRX"!E 2.:K dzZj#Uv4Ci-/p !Ӗ U@+řQZCZKvZˢR3j{@)]ʰ.^Zաi/i{8%{#IN(ʪ&CpE rփnXI(F7~/D%|,E0j1r"RT@fB2<$,2c)MSyU96&"=$IѹOeJ3qX=],;ϴ Հ΅ #z~-Mc !p /д2Zr՚={*r&lE -"U$A@y/\;rc J l]&EbZTR$>c֟Jz~ 炫#׸\;b?$x>$ܜs/zܻ7ao",@J`Fe|}>5n/NќqCWOxCnY P^xmӠ¶zWoPb:m=։&UPKZAUX(iL) '(jկ9+9'FȱVP0=n QOF1]XUh5DLD)I+FSvl#^0_jwKTOEX,]Գ;8YfQ|{ ̍Eϥo2n-CHRΉ_|ܔUYX<9rJ8gP0j I YiҖRdQa\ZSw w]`JK/8iqJ99KHJafK>aN}?y8绿]ȤqqܘCXv .3P8fӗoR Npżʍ9!fwҊ.`bQFmnjyy;Urk\ꭵOSD@Ɨh*%n"JB.(#ƨ;(JLRLNSlV<'.µ9MkhxhFrOB !L")p" SN&_Wg=OXT Tٌ-Of{ƭm<]<Ͻ#V] `-a ]17fKU G7OV#t'?ܗ}Ο:;YWBx%; #j[98Zr`Ƶɒ~ðCU8Wh/nLbs|ƍ9mDJf4m{ɒU(+/}Ҹxy+S2+W CxѲ 5 :!rmqϙe *aX0bJb"?kOj3e: в+%O#";3 BL2BA[-fΨ"˯:z33NjW^9ÀU2W@?BqV N WlG` KƏS<~cQZa1oZIOSҧjY` [8cZsxɕc!⭣qr[rxVo,13l3s|? =6HEY [_[Pց֤s}5c6N[0P_8#~!9B|Uǯ_~NĐsP:4V+M6RiAe`Rzo Cm-l+_K橣3Xj=;gZN=;#1Xͺ0H%51o,;ӖgzIcikAWK"1 .G>Q%WwAki>y є '7OH)JBiJ1~W$E;Y1ZFcuybщ#aaET2}06Y:\n7`-s)Ҟ4ސ"lt#[ᘌ,hiViV"bSo5!^Ĩ@IL[zcͮ+'#nc,>@tÀRml!~}vK}*J)bH1ȳ:F3+v[Ï\[ 3~=Ψ8%*r<fv=&a=NU!$!ˤsuԕna4夏 o 9S0`F [$NVc)e5#$Ԕ3?>ϝz>1&QUY.2ꊂ>&`4di)E*Y7|W 5 {7|'=y*S,qV3Z)سZƭ秿xEj*'_]g]:秼̘>%)GʣZn)'Vczk{F.ryt:;6vLuS7^ݲ哎'td;^D/~Ę< ^|X;Gn,3X73V"`q , $2D2J>CC!DWs2( .V}hiq-_X@+FD8K )<3M:~.g"B\/EtGk> ?翍KQ0S*k_ǯ?{n,t줵G"eDkf ~z-=#~`}v('}7z\X 5NɈhALss ĂSIU2Wʷ4`)L Rᬓ~I04J"dd4.&·ݷM ?^W?o>OR_㯀xn07/q˘z͹rB#86_}z zZbUR!銔}eR(C(X1Bb WGYuq.,݉ PTaR+v֋6f"QC,R3kcWO`B\>?6jikL ?EkL)xjG5aGqh ̢2c^ܕcw_ķ~%VJf:n.Fނʐ C.oB_ *'!n VϾ/6m\E;?6VFix0ykư3i{q !JKkͤ8xh<|F- 1Aab ]YvLX%BzW `lcݜX9 ݘ}cp8Q*01ҧЅL?$Thbwd?k|'gwhA)2DFcAb:(SN]")%LIE@&6qސir ] X o7$H?DAo/q\=x3cԉq)`hJa((q"Ow666G|ևΌv)JTAkv!lmlcxw^b.h0Ulclc6W'"mlc6ހVOuZIENDB`DATA IPThIPActIpo?zC@ACDATA\(AC 1?DATA\AC?DATA\8hAC?DATA\8AC ?DATA\X8ACZ'WDATA\XHAC"DATA\xXACB?DATA\xACِ;DATA\x(ACjZDATA\AC"tDATAp(.h?@?A?  B?/B?pB?B?DATAp.h?@?A?  B?/B?pB?B?DATAph.h?@?A?  B?/B?pB?B?DATAp.?@ ?A ? B ?/BRn?pBRn?BRn?DATAp.?@Z'WAZ'W BZ'W/BLe<pBLe<BLe<DATApH.p?@"A"  B"/Bo[pBo[Bo[DATAp.?@B?AB? BB?p/BctpBctHBctDATAp.h?@ِ;Aِ;  Bِ;/Bl <pBl <Bl <DATAp(.h?@jZAjZ  BjZ/B.pB.B.DATAp.h?@"tA"t  B"t/B l:pB l:B l:IPThIPActIpo.001?zC@ACDATA\AC 1?DATA\0AC?DATA\AC?DATA\0pACc?DATA\0ACgDATA\P0AC=DATA\PPACUDATA\pPACׄDATA\pACDATA\p0AC] ;DATAp._B? B?;?B?_PB?pB?НB?DATAp0._B? B?;?B?_PB?pB?НB?DATAp._B? B?;?B?_PB?pB?НB?DATApp.gBc? Bc?;?Bc?gPBMBq?pBMBq?̝BMBq?DATAp.dBg Bg;?BgdPBm<pBm<ΝBm<DATAp.cB= B=;?B=cPBuZ:pBuZ:ϝBuZ:DATApP.BU BU#:?BUPB(>pB(>B(>DATAp.aBׄ Bׄ;?BׄaPB|0pB|0НB|0DATAp.`B B;?B`PB*pB*НB*DATAp0._B] ; B] ;;?B] ;_PB;pB;НB;WOlyWOWorld)\>)\>)\>===??A <@pA A?L= ף;>TXxpșTXC3DESkinnedMeshEx!<ADATA@C:\Caio\C3DE_Game\tools\C3DESkinnedMeshExporter_Optimized1.pyDATA<FREEDATA=@DATA`=FREEDATA`=c3dDATA`0>txtDATA8>FREEDATA8>FREEDATA8? FREEDATAH?DATAX?DATAX?DATAX@ QDATA0P@`/TDATA0x@DATAx0@iSDATAxAxQDATAPXAFREEDATAPADATAPA DATA(8BDATA(ppBDATAp(B DATApCDATAHHCDATAHC DATAHC DATA DDATA hHDDATAh D DATAhDDATA@DDATA@HE"DATA@E15-NDATAE@%UDATA`0FGameDATA`xFFREEDATA`F25-DDATA8GDATA8HGhDATA8GFREEDATAGDATAXH%DATAXPH'DATAXH'DATA0HDATA0x IDATAx0pIDATAxIDATAPIDATAP@JN DATAPJ DATA(J DATA(pK DATAp(XK1M DATApK DATAHKDATAH0L=)DATAHL<DATA MDATA hHMDATAh M%DATAhMDATA@N7DATA@`NDATA@NDATANDATA`HO DATA`ODATA`ODATA8PDATA8XPLLLJDATA8PDATAPDATAX8QDATAXQ OOODATAXQMMMJDATA0R(!!!DATA0x`RDATAx0RDATAxRDATAPSDATAPXS DATAPSDATA(SDATA(pTDATAp(PTDATApTDATAHT0DATAH(UDATAHxUDATA UDATA hVDATAh @V>>>DATAhV)aaaDATA@V DATA@ WDATA@XWDATAW444DATA`WDATA`0X+DATA`X'000DATA8X000DATA88Y000DATA8pY0000DATA YDATA X ZDATAX   XZDATA  X ZDATA 0  ZDATA0 x  0[DATAx  0 x[DATA  x [DATA P  [DATAP   (\DATA  P p\DATA (  \3DATA( p  ]DATAp  ( H]FDATA  p ]DATA H  ^DATAH   `^DATA  H ^9DATA   _DATA h @_DATAh _DATAh_/DATA@@`(DATA@`GDATA@a1DATAaFDATA`aDATA`8bDATA`pbDATA8bDATA8bDATA8(cDATApcDATAXc,oDATAXch-DATAX(dQDATA0`dCDATA0xdHkeDATAx0Xe=DATAxe(DATAPe\DDATAPhf&ʷ/DATAPfeDATA(g,1DATA(p`gDATAp(gaDATApg DATAHhdDATAHhhWBDATAHhݠDATA hfDATA h0i"—DATAh i"t DATAhi!DATA@8j5DATA@pjP6MDATA@jΊDATA0kDATA`k&gDATA`k DATA`lDATA8hlЖ),DATA8lhvDATA8mDATA@mIDATAXmDATAXn"DATAXhn!DATA0n!DATA0xoDATAx0Po3DATAxoEDATAP0pDATAPhpBDATAPpLDATA(`qPDATA(pqDATAp( rDATApXrDATAHr@DATAHsDATAH@sDATA( sDATA( p s"DATAp  ( (tDATA !p `t$DATA!H! t%DATAH!!!uDATA!!H!HuHDATA! "!uDATA "h"!vDATAh"" "PvDATA""h"vDATA"@#"vDATA@##"(wDATA##@#xwDATA#$#w DATA$`$#x DATA`$$$PxDATA$$`$x%DATA$8%$xDATA8%%$yDATA%%8%Xy0DATA%&%y(DATA&X&%yDATAX&&&Hz DATA&&X&z DATA&0'&z9<DATA0'x'&@{SDATAx''0'x{cDATA'(x'{DATA(P('{"%DATAP(((H|"GDATA((P(|0DATA(()(}DATA()p)(@}>RDATAp))()}%DATA)*p)~WDATA*H*)@~DATAH***~+DATA**H*~DATA* +*( DATA +h+*x DATAh++ +$?. DATA++h+( 8 DATA+@,+`DL DATA@,,+؀W DATA,,@,(bDATA,-,p,DATA-`-,Ё5DATA`---8ADATA--`-RDATA-8.-8 ---DATA8..-(DATA..8.DATA./.(an-1DATA/X/.`/---DATAX////---DATA//X/ /---DATA/00/---DATA00x0/DATAx0000DATA01x0(DATA1P10`---DATAP111DATA11P1ІDATA1(21&DATA(2p21`DATAp22(29DATA23p2---DATA3H320DATAH333hDATA33H3---DATA3 43-DATA 4h43PDATAh44 4DATA44h4ЉDATA4@54,8+?DATA@554xDATA55@5DATA565DATA6`65@DATA`666$DATA66`6DATA68760DATA8776h<DATA7787،:DATA787HDATA8X87mDATAX888 DATA88X8XDATA8098 DATA09x989DATAx9909hDATA9:x9+DATA:P:9hDATAP:::DATA::P:DATA:(;:DATA(;p;:(DATAp;;(;`DATA;<p;DATA<H<;DATAH<<<(DATA<H<`DATA<import BlenderEDATAD=from Blender import Types, Object, NMesh, Material,Armature,MeshpdDATA =from Blender.Mathutils import *DATA =from Blender import Draw, BGLDATA0>from Blender.BGL import *DATA>from Blender import WindowDATA>\DeDATA ?import mathDATAH?import struct, stringDATA?from types import *DATA?\MyDATA@bone_list =[]EEDATAP@index_list = []DATA@bones_order = []*DATA@oolDATAAdef event(evt, val): EEDATAXA if evt == Draw.ESCKEY:DATA A Draw.Exit() DATA A return2.DATA8B\DeDATApBdef button_event(evt): DATAB if evt == 0:EEDATAC xexport = xExport()DATAHC xexport.start()DATAC if evt == 1:EEDATAC Draw.Exit()EEDATAD yDATAHD DATA Ddef draw():DATAD DATA D glClearColor(0.55,0.6,0.6,1)DATA$HE glClear(BGL.GL_COLOR_BUFFER_BIT)pDATAE #external boxDATAE glColor3f(0.2,0.3,0.3)DATA0F rect(10,402,300,382)DATAxF DATAF glColor3f(0.5,0.75,0.65)DATAG rect(14,398,292,30)DATAHG #--UDATAG glColor3f(0.5,0.75,0.65)DATAG rect(14,366,292,160)DATAH #--GDATAPH glColor3f(0.5,0.75,0.65)DATAH rect(14,202,292,60)DATAH #--@DATA I glColor3f(0.5,0.75,0.65)DATApI rect(14,138,292,40)DATAI #--XDATAI glColor3f(0.5,0.75,0.65)DATA@J rect(14,94,292,70) DATAJ DATAJ glColor3f(0.8,.8,0.6)DATAK glRasterPos2i(20, 380)DATA4XK Draw.Text("C3DE Skinned Mesh Exporter",'large')iDATAK DATAK DATA@0L sel_butt = Draw.Button("Start",0,120, 155, 75, 30, "Start")EEDATA@L exit_butt = Draw.Button("Exit",1,220, 155, 75, 30, "Exit")DATAM DATAHM DATAMdef rect(x,y,width,height):DATAM glBegin(GL_LINE_LOOP)DATAN glVertex2i(x,y)DATA`N glVertex2i(x+width,y)DATA N glVertex2i(x+width,y-height)DATAN glVertex2i(x,y-height)DATA HO glEnd()DATAO DATA Odef rectFill(x,y,width,height):DATAP glBegin(GL_POLYGON)!DATAXP glVertex2i(x,y)?@DATAP glVertex2i(x+width,y)DATA P glVertex2i(x+width,y-height)DATA8Q glVertex2i(x,y-height)DATAQ glEnd() EEDATAQ DATA,RDraw.Register(draw, event, button_event)DATA`RDATARclass xExport:DATAR DATAS def start(self): DATA XS tex = []DATAS DATAS DATAT Window.EditMode(0)DATAPT DATAT ߅DATA4T for obj in Blender.Scene.GetCurrent().objects:DEDATA(U if obj.type == 'Mesh':DATAxU mesh = obj.data DATAU self.writeMesh(obj)DATAV ߅DATA @V else:DATA,V print("not a mesh %s" % obj.type) DATAV Draw.Exit()EEDATA W DATAXW DATAW def writeMesh(self, obj):DATA W global index_list,flip_z DATA,0X mesh = NMesh.GetRawFromObject(obj.name) DATA(X path = ("..\SkinnedMeshOut0.c3d") DATA X file = open(path, "wb") DATA8Y DATA4pY file2 = open("..\SkinnedMeshOut.txt", "wb") olsDATAY DATAZ me = Mesh.New() DATA XZ me.getFromObject(obj.name) DATAZ hasTexture = me.faceUVDATAZ DATA0[ objData = obj.dataDATAx[ SDATA[ DATA[ vert_uvsU =[]DATA(\ vert_uvsV =[] DATAp\ DATA4\ vertex_groups_names = objData.getVertGroupNames()DATA] DATAHH] #this will hold a list of vertex indices list for every vertex groupEDATA ] #[ (1,2,3,4), (4,5,6) ... ] DATA^ vertices_groups = [] DATA`^ DATA<^ file2.write("Vertex group names: [vertex indices]\n\n").pDATA_ DATA @_ #store vertice groups order, DATA _ vertice_group_iterator = 0 DATA0_ for vertex_group_name in vertex_groups_names:DATA,@` bones_order.append(vertex_group_name)DATAH` vertice_group_indices = objData.getVertsFromGroup(vertex_group_name)DATA4a vertices_groups.append(vertice_group_indices) t.DATAHa file2.write("%s: %s\n" %(vertex_group_name, vertice_group_indices))EDATA a DATA8b DATApb DATAb verts = me.verts[:]DATAb DATA(c me.verts = verts DATApc DATAc DATAc g_indices = [] DATA(d DATAD`d #full verts will contain coords, normals and uvs for every vertexDATALd #[ (coordObj, normalObj, uvObj), (coordObj, normalObj, uvObj) .. ] DATAXe full_verts = []">DATAe DATA`e #list of lists of bones influenced for each vertex, every entry is aligned with full_vertsDATA(hf #[ (1,2), (1,-1), (2,3), (2-1)... ] EDATA f g_vertex_bone_indices = [] DATA g g_vertex_bone_weights = [] DATA`g DATAg DATAg for f in me.faces: $DATA h iteration = range(0,3) DATAhh DATA h for iterator in iteration:DATAh entry = []EDATA$0i entry.append(f.v[iterator].co)?DATA$i entry.append(f.v[iterator].no)?DATA$i entry.append(f.uv[iterator]) ?DATA8j DATATpj #we only store vertex that has unique coords, normals and uvs ")DATAj DATA 0k if((entry in full_verts)):DATA(k index = full_verts.index(entry) EDATA k else:DATA l full_verts.append(entry) DATAhl bone_indices_nil = []DATAl bone_weights_nil = []DATAm DATAL@m #we set the bones weights and indices for every vertex to -1 for now DATA m iteration2 = range(0,5) DATA$n for iterator2 in iteration2: ?DATA$hn bone_indices_nil.append(-1)?DATA$n bone_weights_nil.append(-1)?DATAo DATA4Po g_vertex_bone_indices.append(bone_indices_nil)DATAHo g_vertex_bone_weights.append(bone_weights_nil) EEDATA0p DATADhp file2.write("\ntotal unique vertices %i\n" % (len(full_verts))) DATAPp file2.write("\ntotal unique indices %i\n" % (len(g_vertex_bone_indices))) REEDATAT`q file2.write("\ntotal unique weights %i\n\n\n" % (len(g_vertex_bone_weights))) bDATAq DATA r DATAXrDATADr #in this loop, we will calculate the bones indices and weights$UDATAs DATA@s #for every triangleDATAs for f in me.faces:DATA$s iteration = range(0,3) ?DATA(t DATA(`t #for every vertex in the triangleREEDATA(t for iterator in iteration: EEDATAu DATALHu #will hold a list of bones indices that this vertex is influenced byDATAu DATAv bone_indices = [] DATAPv DATAv bone_indices.append(-1)DATAv bone_indices.append(-1)DATA(w bone_indices.append(-1)DATAxw bone_indices.append(-1)DATAw bone_indices.append(-1)DATAx DATAPx bone_weights = []DATAx DATAx DATAy bone_weights.append(-1)DATAXy bone_weights.append(-1)DATAy bone_weights.append(-1)DATAy bone_weights.append(-1)DATAHz bone_weights.append(-1)DATAz DATA<z #we create a new entry with the values of this vertexGDATA@{ YDATAx{ entry = []EDATA{ DATA${ entry.append(f.v[iterator].co)?DATA$H| entry.append(f.v[iterator].no)?DATA4| entry.append(f.uv[iterator]) DATA} DATA@@} #we get the index of this vertex in our unique vertex listDATA(} index = full_verts.index(entry) EEDATA~ DATA@~ #store the unique indexDATA,~ g_indices.append(index) DATA~ 6DATA ( valid_entry_iterator = 0 DATA x bone_indices_iterator = 0DATA( bone_weight_indices_iterator = 0REEDATA( DATAH` influenceList = objData.getVertexInfluences(f.v[iterator].index)REEDATA؀ a DATA, for vertex_group in vertices_groups:DATA0p for vertex_group_entry in vertex_group:ADATA8Ё if(f.v[iterator].index == vertex_group_entry) :EEDATAD8 bone_indices[valid_entry_iterator] = bone_indices_iteratorTDATAT bone_weights[valid_entry_iterator] = influenceList[valid_entry_iterator][1]DATA$8 valid_entry_iterator += 1?DATA, bone_indices_iterator += 1 --DATA DATA( DATA0` #store the bones info for the unique vertexDATA0 g_vertex_bone_indices[index] = bone_indicesDATA0  g_vertex_bone_weights[index] = bone_weightsDATA DATA DATA DATA( DATA` DATA DATAІ DATA( #1 indicates the vertex is optimizedEDATA ` data = struct.pack("i", 1) DATA file.write(data)DATA DATA0 DATAh format = "i"EDATA # number of verticesDATA0 data = struct.pack(format, len(full_verts))DATAP file.write(data)DATA DATAЉ # number of indicesi?DATA0 data = struct.pack(format, len(g_indices))DATAx file.write(data)DATA DATA #store indicesDATA@ for index in g_indices: DATA( data = struct.pack(format, index)REEDATA file.write(data)DATA0 DATA@h file2.write("\nnumber of vertices %i\n" % len(full_verts))DATA<، file2.write("\nnumber of indices %i\n" % len(g_indices))DATAH DATAp file2.write("\nVertices; index , x, y, z, nx, ny, nz, u, v, bone 0 weight, bone index 0, bone index 1\n\n")EEDATA  DATAX vert_iterator = 0;DATA$ for entry in full_verts: ?DATA< format = "fffffffffii" # one integerDATAh if hasTexture:DATA, data = struct.pack(format, entry[0][0], entry[0][1], entry[0][2], entry[1][0], entry[1][1], entry[1][2], entry[2][0], (1.0 - entry[2][1]), g_vertex_bone_weights[vert_iterator][0], g_vertex_bone_indices[vert_iterator][0], g_vertex_bone_indices[vert_iterator][1]) # pack integer in a binary stringDATAl #file2.write("%f %f %f %f %f %f %f %f %f %i %i\n" % (vv[0], vv[1], vv[2], new_vert_normals[vert_iterator][0], new_vert_normals[vert_iterator][1], new_vert_normals[vert_iterator][2], new_vert_uvs[vert_iterator][0], (1.0 - new_vert_uvs[vert_iterator][1]), g_bone_weights[vert_iterator][0], g_bone_indices[vert_iterator][0], g_bone_indices[vert_iterator][1]))DATA  else:DATA data = struct.pack(format, vv[0], vv[1], vv[2], new_vert_normals[vert_iterator][0], new_vert_normals[vert_iterator][1], new_vert_normals[vert_iterator][2], 0.0, 0.0) # pack integer in a binary stringDATA DATA( DATA` file.write(data)DATA vert_iterator += 1DATA DATA( DATA` TXxșx7pTXC3DESkinnedMeshEx.001pؚxxH3ADATA4pC:\Caio\C3DE_Game\tools\C3DESkinnedMeshExporter2.pyDATAؚ  DATA hؚ@DATAh FREEDATAhc3dDATA@(txtDATA@xFREEDATAМ@FREEDATAМ DATA`М@DATA`FREEDATA`FREEDATA8FREEDATA8@ FREEDATAȞ8DATAȞ DATAXȞDATAX8DATAXDATA0DATA0xDATAx0@0DATAx5DATAPFREEDATAPXFREEDATAP0FREEDATA(FREEDATA(p00FREEDATAp(FREEDATApFREEDATAHDATAHhDATAأH DATAأ DATA hأ0DATAh xDATAhDATA@ DATA@(DATAХ@`DATAХDATA`Х DATA`0 DATA`pDATA8DATA8 DATAȧ8 )DATAȧODATAXȧDATAXP"DATAXFREEDATA0FREEDATA0x8FREEDATAx0FREEDATAxFREEDATAPFREEDATAPPFREEDATAPFREEDATA(DATA(p FREEDATAp(XEDATApB@DATAHFREEDATAH(FREEDATAجHxa)DATAج  DrDATA hجDATAh HDATAhDATA@11-JDATA@25-DDATAЮ@`DATAЮ7DATA`ЮDATA`05ratoDATA` DATA8DATA8=DATAȰ8x<DATAȰDATAXȰ FREEDATAXXDATAXDATA0DATA0x8DATAx0DATAxDATAP  DATAP`DATAPDATA(DATA(p0DATAp(xDATApDATAHDATAH` DATAصHDATAص DATA hصDATAh H(DATAhFREEDATA@FREEDATA@FREEDATAз@XDATAзDATA`зDATA` DATA`PFREEDATA8DATA8 DATAȹ8DATAȹPFREEDATAXȹ0DATAXpPPDATAX8!DATA0!pPPDATA0xne()DATAx00DATAxp% DATAPDATAP1DATAPhDATA(DATA(ppPPDATAp(P DATAppPPDATAHor +DATAH&DATAؾHXpPPDATAؾ 1indeDATA hؾDATAh 0 2<DATAh th, DATA@ <,DATA@@ FREEDATA@x DATA DATA` @DATA`x DATA` /DATA8 )pPPDATA8p Arm2DATA8 DATA DDATAX in iDATAXp ~DATAX 3DATA04DATA0xxDATAx0"LDATAxts.aDATAP@(DATAPter.DATAP,DATA(8textDATA(p8LDATAp(6grouDATApX_NDATAH!DATAHDATAH DATA hben DATA hDATAh %PbWDATAhHDATA@FREEDATA@WDATA@HDATADATA`(eriaDATA`(DATA``DATA8malsDATA8malsDATA8 DATAp DATAX*erteDATAX ,DATAXDATA0DATA0xDATAx0P?DATAxDATAPDATAP@0DATAPxDATA(DATA(pDATAp(P(DATApDATAHDATAH(%sDATAH DATA YDATA hhYDATAh DATAhDATA@ 'ExDATA@@DATA@xDATADATA`.DATA``DATA`%ame)DATA8DATA8( ,4DATA8 .wriDATA DATAX! DATAXh!-ttinDATAX!DATA0"!ile DATA0xX"&DATAx0"DATAx" DATAP(#(DATAP#pPPDATAP#DATA($pPPDATA(p8$!VDATAp($$DATAp$DATAH % DATAHp%ADATAH%DATA & DATA hH&Q DATAh &aDATAh&h DATA@' DATA@8'$0zDATA@'FREEDATA' DATA`(%0zDATA`X(FREEDATA`(3LDATA8(packDATA80)a)DATA8h)DATA)0DATAX)DATAX*_indDATAXH*oiterDATA0*DATA0x + g_DATAx0X+weigDATAx+DATAP+cDATAP,DATAPh,DATA((. packDATA(ph.q DATAp(0fileDATAp`00WDATAH0=DATAH0riteDATAH 1d^DATA `1N^DATA h1D^DATAh (2|^DATAh`2pPPDATA@2 DATA@2ip_nDATA@3= 0;DATAimport BlenderEDATADfrom Blender import Types, Object, NMesh, Material,Armature,MeshndDATA from Blender.Mathutils import *DATA from Blender import Draw, BGLDATA(from Blender.BGL import *DATAxfrom Blender import WindowDATA\DeDATA import mathDATA@import struct, stringEEDATAfrom types import *DATA\MyDATAoolDATA@bone_list =[]EEDATAindex_list = []DATAmat_dict = {}gDATA\DeDATA8bones_order = []DATA bones_matrix_combinations = []DATA\MyDATADATA4@#***********************************************DEDATA8# DirectX file spec only allows letters, digits, and EEDATA# underscore in Names.EDATAXDATA4#***********************************************t0.DATA# MAINDATA40#***********************************************st.DATADATAdef event(evt, val): DATA if evt == Draw.ESCKEY:DATA h Draw.Exit() DATA  returnDATADATA0def button_event(evt): DATAx DATA DATA if evt == 0:EEDATA( DATA` xexport = xExport()DATA xexport.start()DATA if evt == 1:EEDATA0 Draw.Exit()EEDATAp DATA DATA def draw():DATA,  global animsg,flipmsg,swapmsg,anim_tickDATAP global flip_z,swap_yz,flip_norm,anim,ticks,speed,recalc_norm,Bl_norm,no_lightDATA  glClearColor(0.55,0.6,0.6,1)DATA$P glClear(BGL.GL_COLOR_BUFFER_BIT)pDATA #external boxDATA glColor3f(0.2,0.3,0.3)DATA8 rect(10,402,300,382)EDATA #--UDATA #glColor3f(0.3,0.4,0.4)DATA #rect(11,399,298,398)DATAP #--UDATA glColor3f(0.5,0.75,0.65)DATA rect(14,398,292,30)DATA  #--UDATAX glColor3f(0.5,0.75,0.65)DATA rect(14,366,292,160)EDATA #--VDATA( glColor3f(0.5,0.75,0.65)DATAx rect(14,202,292,60)itDATA #--VDATA glColor3f(0.5,0.75,0.65)DATAH rect(14,138,292,40)BlDATA #--WDATA glColor3f(0.5,0.75,0.65)DATA rect(14,94,292,70)1-JDATA` DATA glColor3f(0.8,.8,0.6)DATA glRasterPos2i(20, 380)DATA80 Draw.Text("C3DE Skinned Mesh Exporter (2)",'large')EEDATA DATA DATA@ sel_butt = Draw.Button("Start",0,120, 155, 75, 30, "Start")EEDATA@x exit_butt = Draw.Button("Exit",1,220, 155, 75, 30, "Exit")REEDATA DATA  DATAXdef rect(x,y,width,height):DATA glBegin(GL_LINE_LOOP)DATA glVertex2i(x,y)DATA8 glVertex2i(x+width,y)DATA  glVertex2i(x+width,y-height)DATA glVertex2i(x,y-height)DATA  glEnd()TADATA` DATA def rectFill(x,y,width,height):DATA glBegin(GL_POLYGON)DATA0 glVertex2i(x,y)WDATAx glVertex2i(x+width,y)DATA  glVertex2i(x+width,y-height)DATA glVertex2i(x,y-height)DATA ` glEnd()TADATA DATA DATA DATA,HDraw.Register(draw, event, button_event)DATADATADATAclass xExport: DATAX DATA def start(self):DATA DATA  tex = []DATAP DATA Window.EditMode(0)PPDATA DATA iterator = 0 DATAP XDATA4 for obj in Blender.Scene.GetCurrent().objects:DATA print("pass")ratDATA$8 if obj.type == 'Mesh': ?DATA$ self.writeMeshBonesOrder(obj)?DATA iterator += 1VDATA 0 else:DATA(p print("not a mesh %s" % obj.type)EEDATA DATA4 for obj2 in Blender.Scene.GetCurrent().objects:DATA h if obj2.type == 'Armature':DATA self.writeBones(obj2)DATA print "...finished"erDATAP Draw.Exit()EEDATA DATA DATA( def writeMeshBonesOrder(self, obj): EDATAX DATA4 mesh = NMesh.GetRawFromObject(obj.name) DATA DATA40  me = Mesh.New() # Create a new meshDATA  )DATA@  me.getFromObject(obj.name) # Get the object's mesh dataDATA@  DATA x  hasTexture = me.faceUV DATA  9DATAD  vertex_groups_names = obj.data.getVertGroupNames() dDATAx  9DATA0  for vertex_group_name in vertex_groups_names:DATA,  bones_order.append(vertex_group_name) DATAp  DATA  EDATA  9DATA  def writeBones(self, obj): DATAp  70)DATA4  file = open("..\SkinnedMeshOutBones.c3d", "wb") DATA8 file2 = open("..\SkinnedMeshOutBones.txt", "wb") REEDATAx 0, DATA$ armature_obj = obj.getData() ?DATA 2DATA,@ bones = armature_obj.bones.values() DATA 9DATA0 file2.write("bones original position\n\n")DATA8 for bone in bones:DATA< print("bones %s %s\n\n\n" % (bone.name, bone.matrix))2.pDATA8 file2.write("%s %s\n\n" % (bone.name, bone.matrix))EDATAX 9DATA$ totalBones = len(bones_order) ?DATA 9DATA  frameStart = 1FWDATAh frameEnd = 61DATA rootName = "Pelvis",rDATA( totalFrames = frameEnd - frameStartEEDATAH 9DATA format = "ii"DATAX data = struct.pack(format, totalFrames, totalBones) # pack integer in a binary stringDATAH file.write(data) DATA DATA, bones = armature_obj.bones.values() DATA( 2DATA` DATA  #offset matrix for each boneDATA DATA  for bone_name in bones_order:DATAp for bone in bones: DATA, if(bone.name == bone_name) : uDATA0  t_matrix = bone.matrix["ARMATURESPACE"]oupDATA DATA it = range(0,16)DATA  for count in it: DATA@P data = struct.pack("f", t_matrix[count/4][count%4]) DATA file.write(data)DATA DATA@ ritDATAx #bones heads and tailsDATA DATA  for bone_name in bones_order:DATA,P t_poseObject = obj.getPose() DATA DATA  #HEREEEDATA(( t_poseBones = t_poseObject.bones EEDATA$ bone = t_poseBones[bone_name]?DATA\ print("bone %s head %f %f %f" % (bone_name, bone.head[0], bone.head[1], bone.head[2]))DATA\h print("bone %s tail %f %f %f" % (bone_name, bone.tail[0], bone.tail[1], bone.tail[2]))2DATA data = struct.pack("ffffff", bone.head[0], bone.head[1], bone.head[2],bone.tail[0], bone.tail[1], bone.tail[2]) # pack integer in a binary stringREEDATA file.write(data) DATA DATA@ DATAx iterator = 0 DATA rDATA0 framesIteration = range(frameStart,frameEnd)nDATA` DATA( Blender.Set('curframe', frameStart)EEDATA DATA0(  file2.write("\n\nbones new positions\n\n") DATA  for count in framesIteration:DATA  eDATA$! armature_obj = obj.getData() ?DATA0h! file2.write("\n\nframe %i \n\n" % (count))EEDATA! DATA$" Blender.Set('curframe', count)?DATA(X" poseObject = obj.getPose() EDATA" DATA " #HEREDATA,(# poseBones = poseObject.bones ATADATA# DATA# iterator = 0DATA$ DATA$8$ rootPose = poseBones[rootName]?DATA($ rootMatrix = rootPose.localMatrixREEDATA$ ESCDATA % rootX = rootMatrix[3][0]DATAp% rootY = rootMatrix[3][1]DATA% rootZ = rootMatrix[3][2]DATA& DATAH& alignRoot = 0] DATA& DATA& DATA' DATA(8' for bone_name in bones_order: REEDATA' DATA' zDATA(( #localPose = poseBones[bone_name]EEDATAX( +VDATA4( finalMatrix = poseBones[bone_name].localMatrix DATA( DATA0) 'VDATAh) DATA) fiDATA)  DATA* PPDATApH* file2.write("pose %s %s\n\n" % (bone_name, poseBones[bone_name].localMatrix)) DATA* DATA + DATAX+ ?DATA+ DATA + format = "ffffffffffffffff"DATA, if(alignRoot == 1) :DATAh, data = struct.pack(format, finalMatrix[0][0], finalMatrix[0][1], finalMatrix[0][2], finalMatrix[0][3], finalMatrix[1][0], finalMatrix[1][1], finalMatrix[1][2], finalMatrix[1][3], finalMatrix[2][0], finalMatrix[2][1], finalMatrix[2][2], finalMatrix[2][3], finalMatrix[3][0] - rootX, finalMatrix[3][1] - rootY, finalMatrix[3][2] - rootZ, finalMatrix[3][3]) # pack integer in a binary stringgDATA (. else:5,DATAth. data = struct.pack(format, finalMatrix[0][0], finalMatrix[0][1], finalMatrix[0][2], finalMatrix[0][3], finalMatrix[1][0], finalMatrix[1][1], finalMatrix[1][2], finalMatrix[1][3], finalMatrix[2][0], finalMatrix[2][1], finalMatrix[2][2], finalMatrix[2][3], finalMatrix[3][0], finalMatrix[3][1], finalMatrix[3][2], finalMatrix[3][3]) # pack integer in a binary stringDATA 0 file.write(data) reeDATA`0 DATA 0 iterator += 1 reeDATA0 DATA 1 format = "ii"DATAP`1 data = struct.pack(format, 1, totalFrames) # pack integer in a binary stringiDATA1 file.write(data)DATA(2 UWDATA`2 aDATA2 Draw.Exit()EEDATA2 DATA3 TXxx7șTXC3DESkinnedMeshEx.002 8!8X=X=ADATA@ 8C:\Caio\C3DE_Game\tools\C3DESkinnedMeshExporter_Optimized1.pyDATA88؉ DATA8 98@DATA 9h98FREEDATAh99 9c3dDATA99h90txtDATA9@:9FREEDATA@::9ЋFREEDATA::@: DATA:;:HDATA;`;:10-JDATA`;;;،25-DDATA;;`; WDATA;8<;P10-JDATA8<<;WDATA<<8<؍HUDATA<=<GameDATA=X=<XDATAX===DATA==X= DATA=0>=8esDATA0>x>=pDATAx>>0> DATA>?x>DATA?P?>HappeDATAP??? @DATA??P?А indiDATA?(@?WDATA(@p@?HDATAp@@(@ ,EEDATA@Ap@DATAAHA@DATAHAAAH"DATAAAHAFREEDATAA BADATA BhBA0[DATAhBB BxP^DATABBhBDATAB@CBDATA@CCBHDATACC@CDATACDCДmodiDATAD`DCs puDATA`DDDPGWDATADD`D of DATAD8EDDATA8EED DATAEE8EpppedDATAEFE0dUDATAFXFEDATAXFFF@DATAFFXFSB=DATAF0GFpPPDATA0GxGFY}DATApvv(v%DATAvwpvDATAwHwv@DATAHwww+DATAwwHwDATAw xw(DATA xhxwxDATAhxx x$DATAxxhx DATAx@yxXDDATA@yyxDATAyy@y(DATAyzyh,DATAz`zy5DATA`zzz0ADATAzz`zRDATAz8{z0 DATA8{{z(DATA{{8{DATA{|{ IDATA|X|{X/KDATAX|||/LDATA||X|/MDATA|0}|xoODATA0}x}|>PDATAx}}0}ZDATAH`[DATA؀H2]DATA؀ -"_DATA h؀H`DATAh cbDATAh3dDATA@,fDATA@phDATAЂ@PDATAЂϐ@DATA`Ђ8333?DATA`$DATA`DATA8(DATA8`<DATAȄ8:333DATAȄ@DATAXȄxm000DATAX000DATAXPDATA0 DATA0x9DATAx0`DATAx+DATAPh DATAP###tDATAP$$$DATA(DATA(p DATAp(XDATApDATAHDATAH 000DATAHXe = DATA؉import BlenderEDATADfrom Blender import Types, Object, NMesh, Material,Armature,Meshs.cDATA from Blender.Mathutils import *DATA from Blender import Draw, BGLEEDATA0from Blender.BGL import *e%DATAfrom Blender import WindowDATAЋ\DeDATA import mathDATAHimport struct, string-JDATAfrom types import *DATA،\MyDATAbone_list =[]EEDATAPindex_list = []DATAbones_order = []er DATA؍oolDATAdef event(evt, val): erDATAX if evt == Draw.ESCKEY:DATA  Draw.Exit() DATA  return.pDATA8\DeDATApdef button_event(evt): DATA if evt == 0:gDATA xexport = xExport()PDATAH xexport.start()TADATA if evt == 1:EEDATAА Draw.Exit()EEDATA yDATAH (-DATA def draw():DATA DATA  glClearColor(0.55,0.6,0.6,1).DATA$H glClear(BGL.GL_COLOR_BUFFER_BIT)pDATA #external boxDATA glColor3f(0.2,0.3,0.3)DATA0 rect(10,402,300,382)DATAx EDATA glColor3f(0.5,0.75,0.65)DATA rect(14,398,292,30)DATAH #--DATA glColor3f(0.5,0.75,0.65)DATAД rect(14,366,292,160)DATA #-- DATAP glColor3f(0.5,0.75,0.65)DATA rect(14,202,292,60)WDATA #--onDATA  glColor3f(0.5,0.75,0.65)DATAp rect(14,138,292,40)DATA #-- DATA glColor3f(0.5,0.75,0.65)DATA@ rect(14,94,292,70)G`>DATA ?DATA glColor3f(0.8,.8,0.6)DATA glRasterPos2i(20, 380)DATA4X Draw.Text("C3DE Skinned Mesh Exporter",'large')iDATA DATA DATA@0 sel_butt = Draw.Button("Start",0,120, 155, 75, 30, "Start")EEDATA@ exit_butt = Draw.Button("Exit",1,220, 155, 75, 30, "Exit")PDATA DATAH DATAdef rect(x,y,width,height):DATAК glBegin(GL_LINE_LOOP)DATA glVertex2i(x,y)DATA` glVertex2i(x+width,y)DATA  glVertex2i(x+width,y-height)eDATA glVertex2i(x,y-height)DATA H glEnd()DATA DATA def rectFill(x,y,width,height):DATA glBegin(GL_POLYGON)DATAX glVertex2i(x,y)DATA glVertex2i(x+width,y)DATA  glVertex2i(x+width,y-height)tDATA8 glVertex2i(x,y-height)DATA glEnd() EEDATAȞ DATA,Draw.Register(draw, event, button_event)DATA`DATAclass xExport:EDATA؟ DATA def start(self): DATA X tex = [] DATA DATAР DATA Window.EditMode(0)= 1DATAP DATA PPDATA4 for obj in Blender.Scene.GetCurrent().objects:DEDATA( if obj.type == 'Mesh':DATAx mesh = obj.data s_nDATA self.writeMesh(obj)DATA ?DATA @ else:TADATA, print("not a mesh %s" % obj.type) DATA Draw.Exit()EEDATA  DATAX DATA def writeMesh(self, obj):DATA  global index_list,flip_z ubeDATA,0 mesh = NMesh.GetRawFromObject(obj.name) DATA( path = ("..\SkinnedMeshOut0.c3d") DATA  file = open(path, "wb") DATA8 DATA4p file2 = open("..\SkinnedMeshOut.txt", "wb") olsDATAئ DATA me = Mesh.New() DATA X me.getFromObject(obj.name) lDATA hasTexture = me.faceUVDATA DATA0 objData = obj.dataDATAx DATA *DATA vert_uvsU =[]DATA( vert_uvsV =[] cDATAp NDATA4 vertex_groups_names = objData.getVertGroupNames()DATA wDATAHH #this will hold a list of vertex indices list for every vertex groupDATA  #[ (1,2,3,4), (4,5,6) ... ]MyDATA vertices_groups = [] DATA` EDATA< file2.write("Vertex group names: [vertex indices]\n\n").pDATA EDATA @ #store vertice groups order, DATA  vertice_group_iterator = 0DATA0 for vertex_group_name in vertex_groups_names:DATA,@ bones_order.append(vertex_group_name)DATAH vertice_group_indices = objData.getVertsFromGroup(vertex_group_name)DATA4 vertices_groups.append(vertice_group_indices) t.DATAH file2.write("%s: %s\n" %(vertex_group_name, vertice_group_indices))EDATA  EEDATA8 DATAp DATA verts = me.verts[:]DATA DATA( me.verts = verts DATAp DATA DATA g_indices = [] XDATA( EDATAD` #full verts will contain coords, normals and uvs for every vertexDATALر #[ (coordObj, normalObj, uvObj), (coordObj, normalObj, uvObj) .. ] zWDATAX full_verts = []DATA hDATA`ز #list of lists of bones influenced for each vertex, every entry is aligned with full_vertsDATA(h #[ (1,2), (1,-1), (2,3), (2-1)... ] EDATA  g_vertex_bone_indices = [] DATA  g_vertex_bone_weights = [] DATA` DATA DATAд for f in me.faces: DATA  iteration = range(0,3) DATAh DATA  for iterator in iteration:DATA entry = []EDATA$0 entry.append(f.v[iterator].co)?DATA$ entry.append(f.v[iterator].no)?DATA$ entry.append(f.uv[iterator]) ?DATA8 33?DATATp #we only store vertex that has unique coords, normals and uvs \n"DATA DATA 0 if((entry in full_verts)):DATA( index = full_verts.index(entry) EDATA ظ else:DATA  full_verts.append(entry)DATAh bone_indices_nil = []DATA bone_weights_nil = []DATA DATAL@ #we set the bones weights and indices for every vertex to -1 for nowDATA  iteration2 = range(0,5) DATA$ for iterator2 in iteration2: ?DATA$h bone_indices_nil.append(-1)?DATA$ bone_weights_nil.append(-1)?DATA DATA4P g_vertex_bone_indices.append(bone_indices_nil)DATAH g_vertex_bone_weights.append(bone_weights_nil) WDATA0 DATADh file2.write("\ntotal unique vertices %i\n" % (len(full_verts))) DATAP file2.write("\ntotal unique indices %i\n" % (len(g_vertex_bone_indices))) DATAT` file2.write("\ntotal unique weights %i\n\n\n" % (len(g_vertex_bone_weights))) DATA pDATA  DATAX" %DATAD #in this loop, we will calculate the bones indices and weights-XDATA DATA@ #for every triangleDATA for f in me.faces:DATA$ iteration = range(0,3) ?DATA( DATA(` #for every vertex in the triangleREEDATA( for iterator in iteration: EEDATA DATALH #will hold a list of bones indices that this vertex is influenced byDATA DATA bone_indices = [] DATAP mDATA bone_indices.append(-1)DATA bone_indices.append(-1)DATA( bone_indices.append(-1)DATAx bone_indices.append(-1)DATA bone_indices.append(-1)DATA DATAP bone_weights = []DATA DATA DATA bone_weights.append(-1)DATAX bone_weights.append(-1)DATA bone_weights.append(-1)DATA bone_weights.append(-1)DATAH bone_weights.append(-1)DATA ffsDATA< #we create a new entry with the values of this vertexl DATA@ PPDATAx entry = []EDATA DATA$ entry.append(f.v[iterator].co)?DATA$H entry.append(f.v[iterator].no)?DATA4 entry.append(f.uv[iterator]) DATA DATA@@ #we get the index of this vertex in our unique vertex listDATA( index = full_verts.index(entry) EEDATA DATA@ #store the unique indexDATA, g_indices.append(index) DATA DATA ( valid_entry_iterator = 0 DATA x bone_indices_iterator = 0DATA( bone_weight_indices_iterator = 0REEDATA  DATAHX influenceList = objData.getVertexInfluences(f.v[iterator].index)DATA DATA, for vertex_group in vertices_groups:DATA0h for vertex_group_entry in vertex_group:DATA8 if(f.v[iterator].index == vertex_group_entry) :EEDATAD0 bone_indices[valid_entry_iterator] = bone_indices_iteratorDATAT bone_weights[valid_entry_iterator] = influenceList[valid_entry_iterator][1]DATA$0 valid_entry_iterator += 1?DATA, bone_indices_iterator += 1 DATA DATA  JDATA0X #store the bones info for the unique vertexDATA0 g_vertex_bone_indices[index] = bone_indicesDATA0 g_vertex_bone_weights[index] = bone_weightsDATAx ODATA DATA QDATA  DATAX DATA DATA DATA( #1 indicates the vertex is optimizedEDATA X data = struct.pack("i", 1) DATA file.write(data)DATA DATA( DATA` format = "i"EDATA # number of verticesDATA0 data = struct.pack(format, len(full_verts))DATAH file.write(data)DATA DATA # number of indicesDATA0 data = struct.pack(format, len(g_indices))gDATAp file.write(data)DATA DATA #store indicestDATA8 for index in g_indices: DATA( data = struct.pack(format, index)REEDATA file.write(data)DATA( DATA@` file2.write("\nnumber of vertices %i\n" % len(full_verts))DATA< file2.write("\nnumber of indices %i\n" % len(g_indices))DATA@ DATApx file2.write("\nVertices; index , x, y, z, nx, ny, nz, u, v, bone 0 weight, bone index 0, bone index 1\n\n")EEDATA DATAP vert_iterator = 0;DATA$ for entry in full_verts: ?DATA< format = "fffffffffii" # one integerDATA` if hasTexture:DATA, data = struct.pack(format, entry[0][0], entry[0][1], entry[0][2], entry[1][0], entry[1][1], entry[1][2], entry[2][0], (1.0 - entry[2][1]), g_vertex_bone_weights[vert_iterator][0], g_vertex_bone_indices[vert_iterator][0], g_vertex_bone_indices[vert_iterator][1]) # pack integer in a binary stringDATAl #file2.write("%f %f %f %f %f %f %f %f %f %i %i\n" % (vv[0], vv[1], vv[2], new_vert_normals[vert_iterator][0], new_vert_normals[vert_iterator][1], new_vert_normals[vert_iterator][2], new_vert_uvs[vert_iterator][0], (1.0 - new_vert_uvs[vert_iterator][1]), g_bone_weights[vert_iterator][0], g_bone_indices[vert_iterator][0], g_bone_indices[vert_iterator][1]))DATA  else:tiDATA data = struct.pack(format, vv[0], vv[1], vv[2], new_vert_normals[vert_iterator][0], new_vert_normals[vert_iterator][1], new_vert_normals[vert_iterator][2], 0.0, 0.0) # pack integer in a binary stringDATA DATA  DATAX file.write(data)DATA vert_iterator += 1DATA DATA  DATAX .TXxx7TXC3DESkinnedMeshEx.003h!8)(ADATA@hC:\Caio\C3DE_Game\tools\C3DESkinnedMeshExporter_Optimized1.py DATA (9 DATA hh9@DATAh 9FREEDATAh0:c3dDATA@:txtDATA@:FREEDATA@ ;FREEDATAX; DATA`;DATA`; 0 BDATA`(<12-JDATA8`< ZUDATA8<GameDATA8<DATA(=DATAX`== DATAX=DATAX= DATA0H> DATA0x>ХWDATAx0>DATAx? DATAPP?DATAP? DATAP? ХWDATA((@ DATA(ph@DATAp(@DATAp@ DATAHA DATAHPA DATAHA"ХWDATA ADATA h8BDATAh BDATAhB DATA@C DATA@XCХWDATA@CDATACDATA`(DDATA`pD DATA`DХWDATA8DDATA8@EDATA8xE0WDATAEc DATAXFХWDATAXHFDATAXFDATA0FoperDATA0xGY DATAx0`GХWDATAxG1DATAPHDATAPPHDATAPH=DATA(H< DATA(phI DATAp(IХWDATApIDATAH(JDATAHpJDATAHJ DATA KDATA hPKDATAh K DATAhKDATA@LT DATA@hL DATA@LDATAL-DATA`@MDATA`MDATA`M DATA8 NDATA8XN(DATA8NDATANDATAX0ODATAXhODATAXO DATA0ODATA0x(PDATAx0`PDATAxPDATAPPDATAPQ01 foDATAPQ DATA(Q@DATA(pRWDATAp(`Rne_wDATApRDATAHR)1 foDATAH8S DATAHxS@DATA Sr2 iDATA hSVDATAh 8TuDATAhT+ne_wDATA@T'DATA@@UDATA@UDATAU0DATA`0VH}EDATA`hVDATA`VDATA8WDATA8PWDATA8WDATAWmFDATAXXDATAX@XDATAXXDATA0XDATA0xY3DATAx0hYDATA xYF0iFDATA P ZDATAP   hZDATA  P ZDATA (  Z9DATA( p  `[DATAp  ( [DATA  p [DATA H  8\/DATAH   \(DATA  H \GDATA   p]1DATA h  ]F@DATAh   P^DATA  h ^DATA @  ^dDATA@   _DATA  @ H_DATA  _DATA` _DATA``DATA`8`AfDATA8`DATA8`C?DATA80aHDATAaDATAXaDATAX0b\DATAXb&xA\DATA0cpPPDATA0xhcFREEDATAx0cDATAxcDATAP(dDATAPpdDATAPdDATA(dDATA(pHeDATAp(e"or))DATApe"DDATAH8f!iterDATAHfLDATAHfP%i);DATA PgDATA hgDATAh g&DATAh0h  DATA@ph(DATA@hTranDATA@iDATA`iDATA`iIDATA`jHWDATA`hj"[ DATA8j!nderDATA8k!DATA8pk@DATAk3nderDATAXlE WDATAXlDATAXlBDATA08mLDATA0xmPDATAx0@niX?DATAxxnXQDATAPnQDATAPn@QDATAP`oQDATA(orQDATA(poQDATAp((p"ug FDATAppDATAHp$DATAHq%untiDATAHhqDATA qHDATA h rDATAh XrDATAhrDATA@rDATA@0sDATA@sDATA sDATA `  tDATA`   ptDATA  ` tDATA 8! tDATA8!! (uDATA!!8!`uDATA!"!uDATA"X"!vDATAX"""PvDATA""X"vDATA"0#"vDATA0#x#"(w9DATAx##0#wDATA#$x#wDATA$P$#xDATAP$$$Hx"DATA$$P$x"DATA$(%$x0DATA(%p%$`yDATAp%%(%y>DATA%&p%z%DATA&H&%`zvDATAH&&&zCDATA&&H&z+DATA& '&H{DATA 'h'&{2DATAh'' '{̜DATA''h' |$uDATA'@('x|DATA@(('|DDATA((@((}DATA()(`}(DATA)`)(},$DATA`))) ~5DATA))`)~AKDATA)8*)RLDATA8**) [DATA**8*(;DATA*+*@ԧDATA+X+*xDDATAX+++/٨DATA++X+/nDATA+0,+p/DATA0,x,+ЁDATAx,,0,߫DATA,-x,@DATA-P-,x?DATAP---DATA--P-կDATA-(.- DATA(.p.-X&4DATAp..(.DATA./p.޲DATA/H/.H鴎DATAH///NDATA//H/UDATA/(0/4DATA(0p0/@-DATAp00(0DATA01p0DATA1H10 DATAH111h,DATA11H1ȆDATA1 21DATA 2h21HDATAh22 2DATA22h2$dÎDATA2@3280ɎDATA@332͎DATA33@3<PώDATA343(:DATA4`43DATA`444ЉmDATA44`4pDATA4854DATA8554 DATA5585H9FREEDATA565%DATA6X65+DATAX666`h DATA66X6mDATA6076@ DATA07x76@) DATAx7707x]3 DATA78x7{"DATA8P87__ DATAP888@DATA88P8xDATA88DATA(9import BlenderEDATADh9from Blender import Types, Object, NMesh, Material,Armature,MeshpdDATA 9from Blender.Mathutils import *DATA 0:from Blender import Draw, BGL DATA:from Blender.BGL import *DATA:from Blender import WindowDATA ;\DeDATA X;import mathDATA;import struct, stringgDATA;from types import *DATA(<\MyDATA`<bone_list =[]EEDATA<index_list = []DATA<bones_order = []DATA(=oolDATA`=def event(evt, val): DATA= if evt == Draw.ESCKEY:DATA = Draw.Exit() DATA H> return2.DATA>\DeDATA>def button_event(evt): DATA? if evt == 0:EEDATAP? xexport = xExport()DATA? xexport.start()EEDATA? if evt == 1:EEDATA(@ Draw.Exit()EEDATAh@ yDATA@ DATA @def draw():DATAA DATA PA glClearColor(0.55,0.6,0.6,1)DATA$A glClear(BGL.GL_COLOR_BUFFER_BIT)pDATAA #external boxDATA8B glColor3f(0.2,0.3,0.3)DATAB rect(10,402,300,382)DATAB DATAC glColor3f(0.5,0.75,0.65)DATAXC rect(14,398,292,30)DATAC #--VDATAC glColor3f(0.5,0.75,0.65)DATA(D rect(14,366,292,160)DATApD #--WDATAD glColor3f(0.5,0.75,0.65)DATAD rect(14,202,292,60)DATA@E #--WDATAxE glColor3f(0.5,0.75,0.65)DATAE rect(14,138,292,40)DATAF #--WDATAHF glColor3f(0.5,0.75,0.65)DATAF rect(14,94,292,70) DATAF DATAG glColor3f(0.8,.8,0.6)DATA`G glRasterPos2i(20, 380)DATA4G Draw.Text("C3DE Skinned Mesh Exporter",'large')iDATAH DATAPH DATA@H sel_butt = Draw.Button("Start",0,120, 155, 75, 30, "Start")EEDATA@H exit_butt = Draw.Button("Exit",1,220, 155, 75, 30, "Exit")DATAhI DATAI DATAIdef rect(x,y,width,height):DATA(J glBegin(GL_LINE_LOOP)DATApJ glVertex2i(x,y)DATAJ glVertex2i(x+width,y)DATA K glVertex2i(x+width,y-height)DATAPK glVertex2i(x,y-height)DATA K glEnd() DATAK DATA Ldef rectFill(x,y,width,height):DATAhL glBegin(GL_POLYGON)WDATAL glVertex2i(x,y)EEDATAL glVertex2i(x+width,y)DATA @M glVertex2i(x+width,y-height)DATAM glVertex2i(x,y-height)DATAM glEnd() EEDATA N DATA,XNDraw.Register(draw, event, button_event)DATANDATANclass xExport:EDATA0O DATAhO def start(self): DATA O tex = []DATAO DATA(P DATA`P Window.EditMode(0)DATAP DATAP VDATA4Q for obj in Blender.Scene.GetCurrent().objects:DEDATAQ if obj.type == 'Mesh':DATAQ mesh = obj.data 2 iDATAR self.writeMesh(obj)DATA`R VDATA R else:DATA,R print("not a mesh %s" % obj.type) DATA8S Draw.Exit()EEDATAxS DATAS DATAS def writeMesh(self, obj):DATA 8T global index_list,flip_z 9DATA,T mesh = NMesh.GetRawFromObject(obj.name) DATA(T path = ("..\SkinnedMeshOut0.c3d") DATA @U file = open(path, "wb") DATAU DATA4U file2 = open("..\SkinnedMeshOut.txt", "wb") olsDATA0V DATAhV me = Mesh.New() DATA V me.getFromObject(obj.name) 9DATAW hasTexture = me.faceUVDATAPW DATAW objData = obj.dataDATAW WDATAX DATA@X vert_uvsU =[]DATAX vert_uvsV =[] ^DATAX DATA4Y vertex_groups_names = objData.getVertGroupNames()DATAhY DATAHY #this will hold a list of vertex indices list for every vertex groupEDATA Z #[ (1,2,3,4), (4,5,6) ... ]9DATAhZ vertices_groups = [] DATAZ DATA<Z file2.write("Vertex group names: [vertex indices]\n\n").pDATA`[ DATA [ #store vertice groups order, DATA [ vertice_group_iterator = 0 9DATA08\ for vertex_group_name in vertex_groups_names:DATA,\ bones_order.append(vertex_group_name)ew(DATAH\ vertice_group_indices = objData.getVertsFromGroup(vertex_group_name)DATA4p] vertices_groups.append(vertice_group_indices) t.DATAH] file2.write("%s: %s\n" %(vertex_group_name, vertice_group_indices))EDATA P^ DATA^ DATA^ DATA_ verts = me.verts[:]DATAH_ WDATA_ me.verts = verts DATA_ DATA` DATA8` g_indices = [] DATA@n DATAxn DATAnREEDATADn #in this loop, we will calculate the bones indices and weightsQDATA`o DATAo #for every triangleQDATAo for f in me.faces:DATA$(p iteration = range(0,3) DATAp DATA(p #for every vertex in the triangleREEDATA(q for iterator in iteration: EEDATAhq DATALq #will hold a list of bones indices that this vertex is influenced byDATA r DATAXr bone_indices = [] DATAr DATAr bone_indices.append(-1)DATA0s bone_indices.append(-1)DATAs bone_indices.append(-1)DATAs bone_indices.append(-1)DATA t bone_indices.append(-1)DATApt DATAt bone_weights = []DATAt wDATA(u REEDATA`u bone_weights.append(-1)DATAu bone_weights.append(-1)DATAv bone_weights.append(-1)DATAPv bone_weights.append(-1)DATAv bone_weights.append(-1)DATAv REEDATA<(w #we create a new entry with the values of this vertexDATAw DATAw entry = []EDATAx REEDATA$Hx entry.append(f.v[iterator].co)DATA$x entry.append(f.v[iterator].no)DATA4x entry.append(f.uv[iterator]) DATA`y REEDATA@y #we get the index of this vertex in our unique vertex listDATA(z index = full_verts.index(entry) EEDATA`z DATAz #store the unique indexDATA,z g_indices.append(index) DATAH{ DATA { valid_entry_iterator = 0 DATA { bone_indices_iterator = 0DATA( | bone_weight_indices_iterator = 0REEDATAx| REEDATAH| influenceList = objData.getVertexInfluences(f.v[iterator].index)DATA(} ATADATA,`} for vertex_group in vertices_groups::EDATA0} for vertex_group_entry in vertex_group:REEDATA8 ~ if(f.v[iterator].index == vertex_group_entry) :DATAD~ bone_indices[valid_entry_iterator] = bone_indices_iteratorDATAT bone_weights[valid_entry_iterator] = influenceList[valid_entry_iterator][1]DATA$ valid_entry_iterator += 1DATA, bone_indices_iterator += 1 x,yDATA@ REEDATAx REEDATA0 #store the bones info for the unique vertexDATA0 g_vertex_bone_indices[index] = bone_indicesDATA0p g_vertex_bone_weights[index] = bone_weightsDATAЁ DATA DATA@ REEDATAx EEDATA toDATA ?DATA  %DATA(X #1 indicates the vertex is optimizedEDATA  data = struct.pack("i", 1) DATA file.write(data)DATAH "DATA DATA format = "i"EDATA # number of verticesDATA0@ data = struct.pack(format, len(full_verts))EEDATA file.write(data)DATA rDATA  # number of indicesDATA0h data = struct.pack(format, len(g_indices))TADATAȆ file.write(data)eDATA DATAH #store indicesDATA for index in g_indices: DATA( data = struct.pack(format, index)REEDATA8 file.write(data)DATA 9DATA@ file2.write("\nnumber of vertices %i\n" % len(full_verts))ێDATA<( file2.write("\nnumber of indices %i\n" % len(g_indices))DATA >DATApЉ file2.write("\nVertices; index , x, y, z, nx, ny, nz, u, v, bone 0 weight, bone index 0, bone index 1\n\n")EEDATAp DATA vert_iterator = 0;DATA$ for entry in full_verts: DATA<H format = "fffffffffii" # one integerDATA if hasTexture:DATA, data = struct.pack(format, entry[0][0], entry[0][1], entry[0][2], entry[1][0], entry[1][1], entry[1][2], entry[2][0], (1.0 - entry[2][1]), g_vertex_bone_weights[vert_iterator][0], g_vertex_bone_indices[vert_iterator][0], g_vertex_bone_indices[vert_iterator][1]) # pack integer in a binary stringDATAl` #file2.write("%f %f %f %f %f %f %f %f %f %i %i\n" % (vv[0], vv[1], vv[2], new_vert_normals[vert_iterator][0], new_vert_normals[vert_iterator][1], new_vert_normals[vert_iterator][2], new_vert_uvs[vert_iterator][0], (1.0 - new_vert_uvs[vert_iterator][1]), g_bone_weights[vert_iterator][0], g_bone_indices[vert_iterator][0], g_bone_indices[vert_iterator][1]))DATA  else:)DATA@ data = struct.pack(format, vv[0], vv[1], vv[2], new_vert_normals[vert_iterator][0], new_vert_normals[vert_iterator][1], new_vert_normals[vert_iterator][2], 0.0, 0.0) # pack integer in a binary stringDATA@ DATAx DATA file.write(data)DATA vert_iterator += 1h DATA@ DATAx DATA TXxTXC3DESkinnedMeshExports@XG R@ADATALC:\Caio\C3DE_Project\C3DE\Tools\blenderScripts\C3DESkinnedMeshExporter1.pyeDATA@GFREEDATAЗ@GDATAЗHpEEDATA`ЗHHFREEDATA`HFREEDATA`HFREEDATA8HFREEDATA8(IFREEDATAș8`IFREEDATAșIpEDATAXșIFREEDATAXJFREEDATAX@JhEEDATA0xJFREEDATA0xJFREEDATAx0JdDATAx KFREEDATAPXKFREEDATAPKFREEDATAPKFREEDATA(LFREEDATA(pPLFREEDATAp(LDATApL[FREEDATAHhMFREEDATAHMrFREEDATA؞HHNFREEDATA؞ 0OFREEDATA h؞xOFREEDATAh OFREEDATAhOIppEDATA@xPREEDATA@PREEDATAР@P FREEDATAР(QJpDATA`РQ FREEDATA`QFREEDATA` R cppDATA8xR=hDATA8RDATAȢ8 SFFREEDATAȢSFFREEDATAXȢTCFREEDATAXT%FREEDATAXTFREEDATA0UApDATA0xU@FREEDATAx0V?FREEDATAxxV.FREEDATAPVFREEDATAPWHFREEDATAPWLFREEDATA(XFREEDATA(pHX3FREEDATAp(XFREEDATApX DATAH(YCFREEDATAHYXDATAاH0ZFREEDATAا hZDATA hاZ@DATAh  [hDATAhp[;DATA@[DATA@\HdDATAЩ@`\#DATAЩ\ XDATA`Щ\DATA` ]DATA`h]`DATA8]3UDATA8^MDATAȫ8^ DATAȫ^@DATAXȫ_ xDATAXH_DATAX_xDATA0_FREEDATA0x`CDATAx0`(pDATAx`&DATAP(aDATAPhavDATAPaDATA(a DATA(p(b@DATAp(hbpxDATApbDATAHbDATAH(cDATAذHxc@{DATAذ c0DATA hذd5DATAh dDATAhdDATA@e0xDATA@hexDATAв@e0*DATAвf^DATA`в@fiDATA`fhDATA`fWDATA8(g xDATA8hgRDATAȴ8gDATAȴgfFREEDATAXȴhNFREEDATAXiDATAXPiDATA0i endDATA0xi+REEDATAx0(jH1EEDATAxjGdEEDATAP kd1DATAPpkFREEDATAPk FREEDATA(l dEEDATA(p@lFREEDATAp(xlndEDATApl nd1DATAHl) DATAHPmODATAعHmFREEDATAع  n"FREEDATA hعxnFREEDATAh nFREEDATAhoFREEDATA@Po DATA@olDATAл@o DATAл(pdataDATA`л`pindiDATA`patorDATA`p,0.6DATA80q,0.6DATA8q,0.6DATAȽ8q,0.6DATAȽr,0.4DATAXȽPr DATAXrDATAXr~DATA0 sDATA0xhsDATAx0sDATAxsxDATAP8tDATAPptDATAPt0DATA(u(DATA(phu*DATAp(uxDATApvWVDATAHv<pDATAHvDATAH0w % (DATA hwormaDATA hwh %sDATAh xDATAhHx[DATA@xDATA@xDATA@0y DATApyeDATA`yDATA`y DATA`@zDATA8zDATA8zSDATA8 {SDATAp{ SDATAX{SDATAX{DATAX |lDATA0X|(DATA0x|tDATAx0|DATAx(}DATAP`}DATAP}0DATAP~0DATA(h~DATA(p~0DATAp( 0DATApDATAHxDATAHDATAHP"DATA DATA hDATAh 1bDATAhXxDATA@P1DATA@hzDATA@bDATAP1rDATA`2s = DATA` ,****DATA`(UDATA8?DATA80DATA8DATAЅ7DATAXDATAXP1DATAXDATA0DATA0x1DATAx0`DATAx1DATAPdDATAPhDATAPiDATA(DATA(pH DATAp(DATAp؉DATAH(9DATAH`DATAH DATA pDATA h0DATAh pDATAhDATA@DATA@(20-SDATA@p24-ADATA09-MDATA`15-FDATA`X#24-FDATA`/10-MDATA809-MDATA8X05-SDATA8%05-SDATA/05-ODATAXP%26-ADATAX+13-SDATAX*10-SDATA0h17-ADATA0x14-SDATAx005-ODATAxX06-ADATAP10-MDATAP08-MDATAP@09-MDATA(710-MDATA(p!14-SDATAp(P18-SDATAp08-SDATAH030-ADATAHX 10-DDATAH.05-ADATA 05-ODATA h@07-ADATAh 21-SDATAh102-SDATA@H02-SDATA@ 05-ODATA@Ж20-SDATA08-MDATA`@08-MDATA`x109-ADATA` 09-MDATA88111-NDATA8724-MDATA824-MDATAXhDATAXDATAX630-ADATAXX)DATA031-MDATA0xMDATAx0(31-MDATAxp12-MDATAPDATAPh12-ADATAPNDATA(P09-MDATA(pDATAp(07-MDATApDATAHH12-MDATAHDATAH07-MDATA  DATA hX05-SDATAh 2DATAh10-MDATA@0<kDATA@09-MDATA@ؠDATA(04-NDATA`xvDATA`08-JDATA`08-JDATA8@07-ADATA8PDATA807-JDATA21-ADATAX@`xDATAXx213-ADATAXvDATA0,05-ODATA0xx DATAx012-ADATAx30-SDATAP0HxDATAPh15-DDATAPUUDATA( 15-DDATA(p0/aw.EDATAp((05-ADATAp(DATAHPF29-ODATAHȧ,(xDATAH(026-ADATA(IDATA(p 09-MDATAp(PDATAp<22-ODATAHoundDATAH008-JDATAHp?() DATA 05-NDATA h(!29-ODATAh !PyDATAhث07-ADATA@(DATA@x05-ODATA@ȬvDATA\DATA`XrDATA`#10-NDATA`DATA8 11-ODATA8h29-ADATA8X}DATAخ31-MDATAXvSDATAXH03-SDATAX;l:ArDATA003-SDATA0x@}DATAx0x#10-SDATAxб$}DATAP(09-MDATAP`}DATAP09-NDATA(}DATA(p(}DATAp(p}DATAp28-JDATAH07-DDATAH(}DATAHp}DATA }DATA h20-SDATAh 811-ADATAhp}DATA@}DATA@A25-MDATA@&}DATAض%02-NDATA`0}DATA`12-MDATA`з'}DATA8(11-MDATA8xrameDATA8eArmDATA13-FDATAX@12-FDATAX}DATAXȹ10-FDATA0}DATA0xh10-MDATAx0}DATAx13-FDATAPXDATAP13-FDATAP$DATA(808-JDATA(pp"DATAp(ȼ"26-JDATAp "DATAHx"26-JDATAHн" DATAH(21-ADATA `> DATA h08-ADATAh = DATAhXDATA@(28-FDATA@, DATA@P/ODATAAF DATA`(YDATA` FREEDATA`tionDATA8"ip_zDATA8"DATA8#dFREEDATA#mr.ScDATAX8$DATAXp$fyz,fDATAX%i DATA0 %r****DATA0 x P&pDATAx  0 &DATA  x 0'' DATA P  '.DATAP   ' DATA  P  (DATA (  h(DATA( p  (DATAp  ( (DATA  p H)5}DATA H  )=DATAH    *  DATA  H h*DATA   *cDATA h  *}DATAh   (+DATA  h `+!&DATA @ + }DATA@ ,DATA@H,(DATA,}DATA`,.DATA`X-IDATA`-}DATA8(.#DATA8.!0DATA8.}DATA/DATAXX/}DATAX/DATAX/}DATA0 0!bDATA0xx1*}DATAx01DATAx3DATAP4T}DATAP`5rDATAP6v, DATA(7SDATA(p7)DATAp(H DATApP8SDATAHh9-DATAH:FREEDATAH;DATA 8;9DATA h;DATAh ;o}DATAh=DATA@=DATA@>}DATA@ ?DATAh?}DATA`?DATA`?}DATA`DATA8}DATA8PDATA8-}DATA4DATAX`9FDATAX0 DATAX8DSDATA0DATA0x DATAx0HDATAxx_liDATAPDATAPcalcDATAP(FREEDATA(`M DATA(pme()DATAp(jectDATApjs =DATAHP== NDATAH+("adDATAH parDATA 8,y-hDATA hrectDATAh 6DATAh8}DATA@ pDATA@  SDATA  @ 0}DATA ! hQDATA!`! TDATA`!!!xDATA!!`!DATA!8"!}DATA8""! DATA""8"pDATA"#"}DATA#X#"DATAX###HDATA##X#}DATA#0$#DATA0$x$#"xDATAx$$0$`}DATA$%x$%DATA%P%$ DATAP%%%( DATA%%P%pDATA%(&%DATA(&p&%}DATAp&&(&8DATA&'p&cDATA'H'&}DATAH'''DATA''H'H-fDATA' ('T}DATA (h('0bDATAh(( ([2], DATA((h(X[DATA(@)( DATA@))( - DATA))@)TpendDATA)*)bDATA*`*)[FREEDATA`***0[b DATA**`*DATA*8+*}DATA8++*0&DATA++8+DATA+,+}DATA,X,+DATAX,,,80DATA,,X,}DATA,0-,+DATA0-x-, ~DATAx--0-X }DATA-.x-DATA.P.-DATAP...8X}DATA..P.>DATA.(/.8F4DATA(/p/.NoneDATAp//(/TDATA/0p/0DATA0H0/h0DATAH000SDATA00H0%DATA0 10`DATA 1h10&DATAh11 1$FREEDATA11h1HGDATA1@21U}DATA@221HUDATA22@2UVDATA232XU?DATA3`32UFREEDATA`333hUFREEDATA33`3UDATA3843xU?DATA8443UDATA4484U?DATA454UesBeDATA5X54U;\n\DATAX555 8DATA55X5XUits,DATA5065U}DATA06x65hUDATAx6606WDATA67x6xH?DATA7P76nesEDATAP7770boneDATA77P7h.taiDATA7(87FPACEDATA(8p870NnesBDATAp88(8)boneDATA89p8=.heaDATA9H98PACEDATAH999ratoDATA99H9 1], DATA9 :9XDATA :h:9}DATAh:: :$DATA::h: 5DATA:@;:BFDATA@;;:}DATA;;@;0GDATA;<;ADATA<`<; Kin =DATA`<<<gDATA<<`<8ansfDATA<8=<(@_iteDATA8==<`<DATA==8=$}DATA=>=PA5DATA>X>=ABDATAX>>>0BttonDATA>>X>`CGDATA>0?>CAxit"DATA0?x?>PDKDATAx??0?D DATA?@x?EUSDATA@P@?EUes->DATAP@@@FUuvs[DATA@@P@FUDATA@(A@(GUxDATA(ApA@GUDATApAA(A8HUDATAABpAHUDATABHBAHIUDATAHBBBIU****DATABBHBXJU****DATAB CBJUelMeDATA ChCBhKUDATAhCC CKU1)DATACChCxLUertiDATAC@DCMWrt_iDATA@DDCM_indDATADD@DMgFREEDATADEDXN#totDATAE`EDOle.wDATA`EEEP?DATAEE`EPćDATAE8FEQȤDATA8FFE`QtDATAFF8FQ$dDATAFGFQ &DATAGXGF0RDATAXGGhRDATAG#!BPYtoDATAG\MyDATAH\MyDATAHHoolDATAHABBDATAHubeDATAHubeDATA(IebuDATA`IwarDATAIontDATAIX.cDATAJx.hDATA@JameDATAxJrasDATAJridDATAJmagDATA KnpuDATAXKighDATAKathDATAK"""DATAL# Name: 'DirectX (.x)...'DATAPL# Blender: 242EDATAL# Group: 'Export'6DATA\L# Tooltip: 'Export to DirectX text file format format for XNA Animation Component Library.'DATAhM"""DATAtM__author__ = "vertex color exporting feature is added by mnemoto (original:minahito (original:Arben (Ben) Omari))"DATAHN__url__ = ("blender.org", "blenderartists.org", "Adjuster's site http://sunday-lab.blogspot.com/, Author's site http://www.omariben.too.it","Adjuster's site http://ex.homeunix.net/")EDATA0O__version__ = "3.1"DATAxOBB.DATAO__bpydoc__ = """\inDATALOThis script exports a Blender mesh with armature to DirectX 8's text fileblDATAxPformat.DATAPivoDATA PNotes:
.DATAL(Q Check author's site or the elYsiun forum for a new beta version of thepDATAQDX exporter..hDATAQ"""DATA$ R# DirectXExporter.py version 3.0t.pDATA@xR# Copyright (C) 2006 Arben OMARI -- omariarben@everyday.com DATAR#enDATAH S# This program is free software; you can redistribute it and/or modifyEDATAHS# it under the terms of the GNU General Public License as published byEDATADT# the Free Software Foundation; either version 2 of the License, orDATA(T# (at your option) any later version.EEDATAT#apDATADU# This program is distributed in the hope that it will be useful,EEDATADU# but WITHOUT ANY WARRANTY; without even the implied warranty ofDATA@V# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theDATA0xV# GNU General Public License for more details.EDATAVextDATALW# This script export meshes created with Blender in DirectX8 file format.hDATAPW# it exports meshes,armatures,materials,normals,texturecoords and animationsrDATAXreeDATA4HX# Grab the latest version here :www.omariben.too.itDATAXreeDATA X# [Notice]cDATAD(Y# This script is the custom version of Mr.Arben Omari's great work.DATA\Y# If you have a question about the adjusted part, visit http://sunday-lab.blogspot.com/.EEDATA0ZreeDATAhZimport BlenderEDATADZfrom Blender import Types, Object, NMesh, Material,Armature,MeshnamDATA [from Blender.Mathutils import *DATA p[from Blender import Draw, BGLEEDATA[from Blender.BGL import *dDATA\from Blender import WindownDATA`\reeDATA \import mathDATA\import struct, stringDATA ]from types import *DATAh]allDATA4]global mat_flip,index_list,space,bone_list,mat_dictDATAP^global anim,flip_norm,swap_zy,flip_z,speed,ticks,no_light,recalc_norm,Bl_normEEDATA^bone_list =[]EEDATA^index_list = []DATA_mat_dict = {}EEDATAH_aveDATA_bones_order = []DATA _bones_matrix_combinations = []DATAD`space = 0;flip_z = 1;anim=0;swap_yz=0;flip_norm=0;speed=0;ticks= 25DATA,`Bl_norm = 1;recalc_norm = 0;no_light = 0DATA`\DeDATA(atoggle_val = 0EDATAhatoggle1_val = 0DATAatoggle2_val = 0DATAatoggle3_val = 1DATA(btoggle4_val = 0DATAhbtoggle5_val = 1DATAbtoggle6_val = 0DATAbtoggle7_val = 0DATA(canim_tick = Draw.Create(25)DATAxc\MyDATA4c#***********************************************ntiDATA8d# DirectX file spec only allows letters, digits, and bDATAd# underscore in Names.DATAdDATA4e#***********************************************BB.DATAhe# MAIN?DATA4e#***********************************************ttoDATAfDATA@fdef event(evt, val): DATAf if evt == Draw.ESCKEY:o.uDATA f Draw.Exit() EDATA (g returnjaDATAhgDATAgdef button_event(evt): DATAhg global toggle_val,toggle1_val,toggle2_val,toggle3_val,toggle4_val,toggle5_val,toggle6_val,toggle7_valDATAPh global flip_z,swap_yz,flip_norm,anim,ticks,speed,no_light,Bl_norm,recalc_normEDATAi arg = __script__['arg']1DATAPi DATAi if evt == 8:EEDATA,i #fname = Blender.sys.makename(ext = ".x")DATAL(j #Blender.Window.FileSelector(my_callback_sel, "Export DirectX", fname)ppDATAHj filename = "C:\documents and Settings\csabino\Desktop\outputMesh.txt"DATA k xexport = xExport(filename)EEDATApk xexport.exportSelMesh()%DATAk if evt == 9:EEDATAl Draw.Exit()EEDATA@l DATAxl DATA ldef draw():DATA,l global animsg,flipmsg,swapmsg,anim_tick>DATAPPm global flip_z,swap_yz,flip_norm,anim,ticks,speed,recalc_norm,Bl_norm,no_lightDATA m glClearColor(0.55,0.6,0.6,1)DATA$ n glClear(BGL.GL_COLOR_BUFFER_BIT)?DATAxn #external boxDATAn glColor3f(0.2,0.3,0.3).hDATAo rect(10,402,300,382)DATAPo #--?DATAo #glColor3f(0.3,0.4,0.4)hDATAo #rect(11,399,298,398)DATA(p #--?DATA`p glColor3f(0.5,0.75,0.65)DATAp rect(14,398,292,30)0)DATAp #--?DATA0q glColor3f(0.5,0.75,0.65)DATAq rect(14,366,292,160)6DATAq #--?DATAr glColor3f(0.5,0.75,0.65)DATAPr rect(14,202,292,60)?DATAr #--?DATAr glColor3f(0.5,0.75,0.65)DATA s rect(14,138,292,40)DATAhs #--?DATAs glColor3f(0.5,0.75,0.65)DATAs rect(14,94,292,70)DATA8t DATApt glColor3f(0.8,.8,0.6)DATAt glRasterPos2i(20, 380)DATA,u Draw.Text("DirectX Exporter ",'large')>DATA,hu Draw.Text("(for Blender 2.41)", 'small')>DATAu DATAXv sel_butt = Draw.Button("Export Sel",8,120, 155, 75, 30, "export the selected object")DATA@v exit_butt = Draw.Button("Exit",9,220, 155, 75, 30, "exit")REEDATAv DATA0w DATAhwdef rect(x,y,width,height):DATAw glBegin(GL_LINE_LOOP)DATAx glVertex2i(x,y)DATAHx glVertex2i(x+width,y)DATA x glVertex2i(x+width,y-height)DATAx glVertex2i(x,y-height)DATA 0y glEnd()cpDATApy DATA ydef rectFill(x,y,width,height):DATAy glBegin(GL_POLYGON)ADATA@z glVertex2i(x,y)DATAz glVertex2i(x+width,y)DATA z glVertex2i(x+width,y-height)DATA { glVertex2i(x,y-height)DATA p{ glEnd()hDATA{ DATA{ DATA | DATA,X|Draw.Register(draw, event, button_event)?DATA|DATA|DATA(}DATA`}DATA4}#***********************************************DE.DATA4~#***********************************************merDATAh~# EXPORTERDATA4~#***********************************************stlDATA4 #***********************************************be.DATADATAclass xExport:DATA  def __init__(self, filename):DATA$P self.file = open(filename, "wb")?DATADATA#*********************************************************************************************************************************************EDATA4 #***********************************************e.DATA #Select Scene objectsDATA4P #***********************************************e2DATA def analyzeScene(self):DATA parent_list = []DATA4P for obj in Blender.Scene.GetCurrent().objects:ugDATA4 #if obj.type in ('Mesh', 'Armature', 'Empty'):fDATA0  #print("here is a object %s" % obj.type)REEDATA, if obj.type in ('Mesh', 'Armature'):?DATA  #if obj.parent == None :DATA 0 # print("adding %s" % obj)DATA  parent_list.append(obj) DATAЅ ?DATA return parent_listDATAP DATA DATA DATA4 #***********************************************t.DATA` #Export the Selected MeshDATA4 #***********************************************t.DATA def exportSelMesh(self):DATAh print "exporting ..."DATA #self.writeHeader()DATA #self.writeRootFrame()DATA H tex = []DATA  #objs = Object.GetSelected()DATA ؉ objs = self.analyzeScene() DATA( DATA` Window.EditMode(0)DATA DATA  #print("objs %s" & (objs[0]))DATA0 iterator = 0EDATAp DATA ?DATA for obj in objs: DATA( print("pass")er DATAp if obj.type == 'Mesh':DATA print("found a mesh")DATA mesh = obj.dataDATA$X #self.writeTextures(obj, tex) DATA0 self.writeMeshcoordArm(obj, mesh, iterator)DATA iterator += 1r DATA X else:DATA( print("not a mesh %s" % obj.type)DATA0 #self.writeMeshMaterialList(obj, mesh, tex)DATA(P #self.writeMeshNormals(obj, mesh)1DATA, #self.writeMeshTextureCoords(obj, mesh)DATA, #self.writeMeshVertexColors(obj, mesh)[DATA h #self.file.write(" }\n") DATA #self.file.write("}\n")DATA #ind = objs.index(obj)DATAX #if ind == len(objs)-1:DATA  #self.file.write("}\n") DATA #ip_list = obj.ipoJDATA@ #if ip_list != None :DATA8 # self.file.write("AnimationSet AnimationSet0 {\n")DATA$ # self.writeAnimationObj(obj)DATA P # self.file.write("}\n") DATA  #if obj.type == 'Armature':DATA4 # self.writeMeshcoordArm2(obj, arm_ob = None).hDATA X #else :pDATA0 # print "The selected object is not a mesh"EDATA for obj2 in objs:DATA @ if obj2.type == 'Armature':DATA  print("found an armature")DATA4 #self.writeMeshcoordArm2(obj2, arm_ob = None)e.DATAH print "...finished"-ODATA Draw.Exit()EEDATAЖ DATA DATA@DATA4x #***********************************************e.DATA$ #EXPORT MESH DATA with Armature?DATA48 #***********************************************ssDATA8 def writeMeshcoordArm(self, obj ,arm_ob, objectIndex):DATA global index_list,flip_zDATAX #TransformMatrix DATA  #mat = self.getLocMat(obj) DATA8 #self.writeArmFrames(mat, make_legal_name(obj.name))EDATA,X mesh = NMesh.GetRawFromObject(obj.name)trDATA DATA DATA( print "Here we go\n"DATAp DATA DATAl path = ("C:\documents and Settings\csabino\Desktop\exportedMeshes\SkinnedMeshOut%d.c3d" % objectIndex) CDATAP path2 = ("C:\documents and Settings\csabino\Desktop\exportedMeshes\out.txt")EDATAT path20 = ("C:\documents and Settings\csabino\Desktop\exportedMeshes\out2.txt"):DATA DATA file = open(path, "wb")DATA DATAH file2 = open(path2, "wb")DATA  file20 = open(path20, "wb")DATA DATA  DATAX DATA4 me = Mesh.New() # Create a new meshnDATA DATA@0 me.getFromObject(obj.name) # Get the object's mesh dataREEDATA DATAؠ hasTexture = me.faceUVDATA( print "has " , me.faceUVDATAx DATA vert_coords =[]DATA vert_normals =[]DATA@ vert_uvsU =[]DATA vert_uvsV =[]DATA vert_indices = []DATA DATA@ DATA4x vertex_groups_names = arm_ob.getVertGroupNames()oDATA DATA0 #print("groups: %s" % vertex_groups_names)a)DATAx DATA vertices_groups = []DATA DATA0 DATAh DATA  vertice_group_iterator = 0DATA  auei = 0pDATA00 for vertex_group_name in vertex_groups_names:DATA, bones_order.append(vertex_group_name)ureDATA, #print("name %s" % vertex_group_name)2 +DATAHP vertice_group_indices = arm_ob.getVertsFromGroup(vertex_group_name)DATA0ȧ #print("auei %s" % vertice_group_indices)v:DATA4( vertices_groups.append(vertice_group_indices)ageDATAL file20.write(" vertex group %i name %s\n" % (auei,vertex_group_name)) *DATA auei += 1REEDATAP DATA@ verts = me.verts[:] # Save a copy of the vertices.hDATA DATA0 iterator = 0EDATA@p #me.transform(obj.matrix) # Convert verts to world spaceDATA for v in me.verts:DATA$( #vert_coords[iterator] = v.co?DATA$ #vert_normals[iterator] = v.no?DATAث #vert_uvs[iterator] = 0DATA( vert_coords.append(v.co)DATA x vert_normals.append(v.no) DATAȬ vert_uvsU.append(0)SDATA vert_uvsV.append(0)MDATAX DATA$ #print("porra %f" % (v.uvco[0]))DATA DATA  iterator += 1xDATAh DATA DATAخ #print ("vertice coord: %f; %f; %f; normal: %f;%f;%f; uv: %f;%f" % (v.co[0], v.co[1], v.co[2], v.no[0], v.no[1], v.no[2], v.uvco[0], v.uvco[1]))DATAx #print ("vertice coord: %f; %f; %f; normal: %f;%f;%f; " % (v.co[0], v.co[1], v.co[2], v.no[0], v.no[1], v.no[2], ))DATA H #print "\nindex " , v.indexDATA< me.verts = verts # Restore the original vertsDATA DATA@ DATA$x file2.write("D3DXVECTOR3 in;\n" )DATA(б file2.write("D3DXVECTOR4 out;\n" )REEDATA( DATA` indices = []EDATA new_vert = []DATA new_vert_normals = []DATA( new_vert_uvs = []DATAp DATA indice_it = 0;DATA DATA( g_bone_indices = []-NDATAp g_bone_weights = []-ADATADATA vert_objs = []DATA8 DATAp for f in me.faces:5-MDATA for vertice in f.v: DATAD #print ("face: %d;, vertice: %d;" % (f.index, vertice.index))DATA( vert_indices.append(vertice.index)EDATA(ض #print("vertice %s" % vertice.co)EDATA 0 vert_objs.append(vertice) DATA  new_vert.append(vertice.co)DATA(з new_vert_normals.append(vertice.no)DATA ( indices.append(indice_it)DATAx indice_it += 1 DATA ?DATA bone_indices = []DATA @ bone_indices_iterator = 0DATA ?DATAȹ bone_indices.append(-1)DATA bone_indices.append(-1)DATAh bone_indices.append(-1)DATA bone_indices.append(-1)DATA bone_indices.append(-1)DATAX ?DATA  bone_weight_indices = [] DATA( bone_weight_indices_iterator = 0REEDATA8 ?DATA$p bone_weight_indices.append(-1)?DATA$ȼ bone_weight_indices.append(-1)?DATA$  bone_weight_indices.append(-1)?DATA$x bone_weight_indices.append(-1)?DATA$н bone_weight_indices.append(-1)?DATA( ?DATA ` valid_entry_iterator = 0 DATA ?DATA@ influenceList = arm_ob.getVertexInfluences(vertice.index)EEDATAX ?DATA, for vertex_group in vertices_groups:ureDATA0 for vertex_group_entry in vertex_group:DATA0P if(vertice.index == vertex_group_entry) :DATAD bone_indices[valid_entry_iterator] = bone_indices_iteratorpDATA\( bone_weight_indices[valid_entry_iterator] = influenceList[valid_entry_iterator][1]toDATA$ valid_entry_iterator += 1?DATA  bone_indices_iterator += 1DATA" ?DATA" ?DATAh# #print("bone indices for vertex %i iteration %i %s" % (vertice.index, indice_it, bone_indices)) ))DATAp# #file20.write("bone indices for vertex %i iteration %i %s\n" % (vertice.index, indice_it, bone_indices)) EEDATA8$ ?DATAhp$ print("!!!!!!!!! INFLUENCE LIST name %s, value %f " % (influenceList[0][0], influenceList[0][1])) EDATAl% print("bone influences for vertex %i iteration %i %s\n" % (vertice.index, indice_it, influenceList)) DATAt% file20.write("!!!!!!!!! INFLUENCE LIST name %s, value %f \n" % (bone_weight_indices[0], influenceList[0][1])) rDATAtP& file20.write("bone influences for vertex %i iteration %i %s\n" % (vertice.index, indice_it, influenceList)) DATA& ?DATA(0' g_bone_indices.append(bone_indices)DATA0' g_bone_weights.append(bone_weight_indices)DATA' ?DATA ( iterator2 = 0xDATAh( if hasTexture:DATA( for tt in f.uv:DATA( #print "tt: " , tt DATA8H) vert_uvsU[f.v[iterator2].index] = round(tt[0],2)EDATA@) vert_uvsV[f.v[iterator2].index] = (1.0 - round(tt[1],2)) DATA * iterator2 += 1DATA h* new_vert_uvs.append(tt) DATA* ?DATA* ?DATA(+ ?DATA$`+ #for picles in g_bone_indices:?DATA$+ # print("picles %s" % picles)?DATA, DATA,H, print("total vertices %i" % indice_it) 0;DATA , #data=struct.pack(indice_it)DATA0, format = "i" # one integerDATALX- data = struct.pack(format, indice_it) # pack integer in a binary string**DATA- #self.file.write(data)DATA$(. file.write(data) #total verticesDATA$. file.write(data) #total indices?DATA. ?DATA/ vert_iterator = 0;DATAX/ for vv in new_vert:DATA/ DATA/ if hasTexture:hDATA$ 0 #print("m_vertices->push_back(VertexPos(%ff, %ff, %ff, %ff, %ff, %ff, %ff, %ff));" % (vv[0], vv[1], vv[2], new_vert_normals[vert_iterator][0], new_vert_normals[vert_iterator][1], new_vert_normals[vert_iterator][2], new_vert_uvs[vert_iterator][0], 1.0 - new_vert_uvs[vert_iterator][1]))DATA,x1 if(vert_objs[vert_iterator].sel == 1):DATA1 file2.write("\n//is selected below belngs to bone %i %i %ff %ff %ff:\n" % (g_bone_indices[vert_iterator][0], vert_objs[vert_iterator].sel, vert_objs[vert_iterator].co[0], vert_objs[vert_iterator].co[1], vert_objs[vert_iterator].co[2])) [2DATA3 file2.write("m_vertices3->push_back(VertexPosBones(%ff, %ff, %ff, %ff, %ff, %ff, %ff, %ff, %ff, %i, %i));\n" % (vv[0], vv[1], vv[2], new_vert_normals[vert_iterator][0], new_vert_normals[vert_iterator][1], new_vert_normals[vert_iterator][2], new_vert_uvs[vert_iterator][0], 1.0 - new_vert_uvs[vert_iterator][1], g_bone_weights[vert_iterator][0], g_bone_indices[vert_iterator][0], g_bone_indices[vert_iterator][1]))DATAX4 #file2.write("\nin = D3DXVECTOR3(%ff, %ff, %ff) * 1;\n" % (vv[0], vv[1], vv[2]))EEDATAt`5 #file2.write("D3DXVec3Transform(&out, &in, &m_currentFrameToRoots[%i]);\n" % g_bone_indices[vert_iterator][0])DATAx6 #file2.write("m_vertices3->push_back(VertexPosBones(out.x, out.y, out.z, %ff, %ff, %ff, %ff, %ff, %ff, %i, %i));\n" % (new_vert_normals[vert_iterator][0], new_vert_normals[vert_iterator][1], new_vert_normals[vert_iterator][2], new_vert_uvs[vert_iterator][0], 1.0 - new_vert_uvs[vert_iterator][1], 1.0, g_bone_indices[vert_iterator][0], g_bone_indices[vert_iterator][1]))EDATA 7 else:DATA,7 #print("(VertexPos(%ff));" % (vv[0]))EDATAL file2.write("m_vertices3->push_back(VertexPosBones(%ff, %ff, %ff, %ff, %ff, %ff, %ff, %ff, %ff, %i, %i));\n" % (vv[0], vv[1], vv[2], new_vert_normals[vert_iterator][0], new_vert_normals[vert_iterator][1], new_vert_normals[vert_iterator][2], 0.0, 0.0, 1.0, g_bone_indices[vert_iterator][0], g_bone_indices[vert_iterator][1]))REEDATAP8 #print("m_vertices->push_back(VertexPos(%ff, %ff, %ff, %ff, %ff, %ff, %ff, %ff));" % (vv[0], vv[1], vv[2], new_vert_normals[vert_iterator][0], new_vert_normals[vert_iterator][1], new_vert_normals[vert_iterator][2], 0.0, 0.0))EEDATA0h9 #self.file.write("m_vertices->push_back(VertexPos(%ff, %ff, %ff, %ff, %ff, %ff, %ff, %ff));\n" % (vv[0], vv[1], vv[2], new_vert_normals[vert_iterator][0], new_vert_normals[vert_iterator][1], new_vert_normals[vert_iterator][2], new_vert_uvs[vert_iterator][0], 1.0 - new_vert_uvs[vert_iterator][1]))EEDATA: DATA; DATA<8; format = "fffffffffii" # one integerDATA; if hasTexture:DATAp; data = struct.pack(format, vv[0], vv[1], vv[2], new_vert_normals[vert_iterator][0], new_vert_normals[vert_iterator][1], new_vert_normals[vert_iterator][2], new_vert_uvs[vert_iterator][0], (1.0 - new_vert_uvs[vert_iterator][1]), g_bone_weights[vert_iterator][0], g_bone_indices[vert_iterator][0], g_bone_indices[vert_iterator][1]) # pack integer in a binary stringDATA = else:ry.DATA= data = struct.pack(format, vv[0], vv[1], vv[2], new_vert_normals[vert_iterator][0], new_vert_normals[vert_iterator][1], new_vert_normals[vert_iterator][2], 0.0, 0.0) # pack integer in a binary stringDATA> #self.file.write(data)DATA ? file.write(data)DATAh? vert_iterator += 1DATA? DATA? DATA file2.write("\n\n")DATA DATAP for ii in indices:DATA0 #print("m_indices->push_back(%d);" % (ii))DATA8 file2.write("m_indices->push_back(%d);\n" % (ii))hEDATA<` #self.file.write("m_indices->push_back(%d);\n" % (ii))DATA4 #format = "i" # one integerin.DATAH8 #data = struct.pack(format, ii) # pack integer in a binary stringREEDATA #self.file.write(data)DATA #file.write(data)SDATAH DATA DATA DATA DATA( DATA` print "here we end\n"DATA DATA DATA DATAP DATA, def writeMeshcoordArm2(self, obj ,arm_ob):DATA global index_list,flip_zDATA8 #TransformMatrixiDATA  #mat = self.getLocMat(obj)DATA8 #self.writeArmFrames(mat, make_legal_name(obj.name))DATA8 DATAp DATAT path3 = ("C:\documents and Settings\csabino\Desktop\exportedMeshes\outBones.txt")DATA0 DATATh path4 = ("C:\documents and Settings\csabino\Desktop\exportedMeshes\picles.txt")EEDATAX path5 = ("C:\documents and Settings\csabino\Desktop\exportedMeshes\outBones3.txt")DATAx DATA DATA DATA  file3 = open(path3, "wb")DATAp file4 = open(path4, "wb")DATA file5 = open(path5, "wb")DATA DATAH DATA  armature_obj = obj.getData()yDATA DATA$ armature_obj.restPosition = True?DATA` DATA( bones = armature_obj.bones.values()EEDATA DATA( bones_offset_x = []yDATAp bones_offset_y = []}DATA bones_offset_z = []DATA DATA8 total = len(bones_order)DATA DATA  #print("TOTAL: %i" % total)veDATA DATA0H file3.write("m_totalBones = %i;\n" % total)EEDATAX file3.write("m_roots = (D3DXMATRIX*)malloc(sizeof(D3DXMATRIX) * m_totalBones);\n")], DATAd0 file3.write("m_currentFrameToRoots = (D3DXMATRIX*)malloc(sizeof(D3DXMATRIX) * m_totalBones);\n")7DATA\ file3.write("m_bonesBegin = (D3DXVECTOR3*)malloc(sizeof(D3DXVECTOR3) * m_totalBones);\n")DATA\X file3.write("m_bonesEnd = (D3DXVECTOR3*)malloc(sizeof(D3DXVECTOR3) * m_totalBones);\n\n")DATA DATA0  file5.write("m_totalBones = %i;\n" % total)]DATAX file5.write("m_roots = (D3DXMATRIX*)malloc(sizeof(D3DXMATRIX) * m_totalBones);\n")DATAd file5.write("m_currentFrameToRoots = (D3DXMATRIX*)malloc(sizeof(D3DXMATRIX) * m_totalBones);\n"))DATA\ file5.write("m_bonesBegin = (D3DXVECTOR3*)malloc(sizeof(D3DXVECTOR3) * m_totalBones);\n")DATA\0 file5.write("m_bonesEnd = (D3DXVECTOR3*)malloc(sizeof(D3DXVECTOR3) * m_totalBones);\n\n")DATA DATA DATA(0 print "Here we are for amarmature\n"EDATA DATA iterator = 0EDATA DATA 8 poseObject = obj.getPose()allDATA DATA, print("poseBones: %s" % poseObject.bones)DATA  DATA$X poseObjects = poseObject.bones?DATA DATA  for bone_name in bones_order:DATA\8 #print("bones head: %s \n" % armature_obj.bones[bone_name].head["ARMATURESPACE"]) ppDATA@ #print("....bone name: %s" % armature_obj.bones[bone_name])DATAH8 #file4.write("....bone name: %s\n" % armature_obj.bones[bone_name])EDATA DATA ancestors = []DATA0 DATA4h parent = armature_obj.bones[bone_name].parentth.DATA DATA( localPose = poseObjects[bone_name]EEDATA` DATA( finalMatrix = localPose.localMatrixEDATA( file4.write("//%s\n" % bone_name)REEDATAHH file4.write("....... %s pose matrix %s\n" % (bone_name,finalMatrix))DATAX file4.write("t_currentFrameMatrix%i._11 = %ff;\n" % (iterator, finalMatrix[0][0]))DATAXH file4.write("t_currentFrameMatrix%i._12 = %ff;\n" % (iterator, finalMatrix[0][1]))DATAX file4.write("t_currentFrameMatrix%i._13 = %ff;\n" % (iterator, finalMatrix[0][2]))DATAXX file4.write("t_currentFrameMatrix%i._14 = %ff;\n" % (iterator, finalMatrix[0][3]))DATAX file4.write("t_currentFrameMatrix%i._21 = %ff;\n" % (iterator, finalMatrix[1][0]))DATAXh file4.write("t_currentFrameMatrix%i._22 = %ff;\n" % (iterator, finalMatrix[1][1]))DATAX file4.write("t_currentFrameMatrix%i._23 = %ff;\n" % (iterator, finalMatrix[1][2]))DATAXx file4.write("t_currentFrameMatrix%i._24 = %ff;\n" % (iterator, finalMatrix[1][3]))DATAX file4.write("t_currentFrameMatrix%i._31 = %ff;\n" % (iterator, finalMatrix[2][0]))DATAX file4.write("t_currentFrameMatrix%i._32 = %ff;\n" % (iterator, finalMatrix[2][1]))DATAX file4.write("t_currentFrameMatrix%i._33 = %ff;\n" % (iterator, finalMatrix[2][2]))"mDATAX file4.write("t_currentFrameMatrix%i._34 = %ff;\n" % (iterator, finalMatrix[2][3]))**DATA  DATAXX file4.write("t_currentFrameMatrix%i._41 = %ff;\n" % (iterator, finalMatrix[3][0]))DATAX file4.write("t_currentFrameMatrix%i._42 = %ff;\n" % (iterator, finalMatrix[3][1]))DATAXh file4.write("t_currentFrameMatrix%i._43 = %ff;\n" % (iterator, finalMatrix[3][2]))DATAX file4.write("t_currentFrameMatrix%i._44 = %ff;\n\n" % (iterator, finalMatrix[3][3]))DATALx #file4.write("....... %s pose loc %s\n" % (bone_name,localPose.quat))1*DATA DATA0 DATAh while parent != None:DATAH #print("ancestor : %s %s " % (parent, parent.matrix["BONESPACE"]))EDATAP0 #file4.write("ancestor : %s %s \n" % (parent, parent.matrix["BONESPACE"]))EDATA, parentPose = poseObjects[parent.name]]DATA@ #file4.write("parent pose %s\n" % parentPose.localMatrix)ffDATA  ancestors.append(parent)reeDATA parent = parent.parentDATA  ?DATAX ?DATA DATA( file3.write("//%s\n" % bone_name)REEDATA8  file3.write("D3DXMATRIX t_toRoot%i;\n" % iterator)pDATAD file3.write("D3DXMatrixIdentity(&t_toRoot%i);\n" % iterator) DATA file3.write("D3DXMatrixTranslation(&t_toRoot%i, %ff, %ff, %ff);\n" % (iterator, armature_obj.bones[bone_name].head["ARMATURESPACE"][0], armature_obj.bones[bone_name].head["ARMATURESPACE"][1], armature_obj.bones[bone_name].head["ARMATURESPACE"][2]))DATAH0 file3.write("m_roots[%i] = t_toRoot%i;\n" % (iterator, iterator)) DATAD file3.write("D3DXMATRIX t_currentFrameMatrix%i;\n" % iterator)teDATAL  file3.write("D3DXMatrixIdentity(&t_currentFrameMatrix%i);\n" % iterator)DATAh file3.write("m_currentFrameToRoots[%i] = t_currentFrameMatrix%i;//for now\n" % (iterator, iterator))DATA8 file3.write("m_bonesBegin[%i] = D3DXVECTOR3(%ff, %ff, %ff);\n" % (iterator, armature_obj.bones[bone_name].head["ARMATURESPACE"][0], armature_obj.bones[bone_name].head["ARMATURESPACE"][1], armature_obj.bones[bone_name].head["ARMATURESPACE"][2]))DATA(@ file3.write("m_bonesEnd[%i] = D3DXVECTOR3(%ff, %ff, %ff);\n\n" % (iterator, armature_obj.bones[bone_name].tail["ARMATURESPACE"][0], armature_obj.bones[bone_name].tail["ARMATURESPACE"][1], armature_obj.bones[bone_name].tail["ARMATURESPACE"][2]))DATA` DATA( file5.write("//%s\n" % bone_name)REEDATA8PA file5.write("D3DXMATRIX t_toRoot%i;\n" % iterator)EEDATADA file5.write("D3DXMatrixIdentity(&t_toRoot%i);\n" % iterator) DATA0B file5.write("D3DXMatrixTranslation(&t_toRoot%i, %ff, %ff, %ff);\n" % (iterator, armature_obj.bones[bone_name].head["ARMATURESPACE"][0], armature_obj.bones[bone_name].head["ARMATURESPACE"][1], armature_obj.bones[bone_name].head["ARMATURESPACE"][2]))DATAH`C file5.write("m_roots[%i] = t_toRoot%i;\n" % (iterator, iterator)) DATADC file5.write("D3DXMATRIX t_currentFrameMatrix%i;\n" % iterator)DATALPD file5.write("D3DXMatrixIdentity(&t_currentFrameMatrix%i);\n" % iterator)DATAD DATAXE file5.write("t_currentFrameMatrix%i._11 = %ff;\n" % (iterator, finalMatrix[0][0]))CDATAXE file5.write("t_currentFrameMatrix%i._12 = %ff;\n" % (iterator, finalMatrix[0][1]))rmDATAXF file5.write("t_currentFrameMatrix%i._13 = %ff;\n" % (iterator, finalMatrix[0][2]))DATAXF file5.write("t_currentFrameMatrix%i._14 = %ff;\n" % (iterator, finalMatrix[0][3]))DATAX(G file5.write("t_currentFrameMatrix%i._21 = %ff;\n" % (iterator, finalMatrix[1][0]))?DATAXG file5.write("t_currentFrameMatrix%i._22 = %ff;\n" % (iterator, finalMatrix[1][1]))DATAX8H file5.write("t_currentFrameMatrix%i._23 = %ff;\n" % (iterator, finalMatrix[1][2]))DATAXH file5.write("t_currentFrameMatrix%i._24 = %ff;\n" % (iterator, finalMatrix[1][3]))DATAXHI file5.write("t_currentFrameMatrix%i._31 = %ff;\n" % (iterator, finalMatrix[2][0]))DATAXI file5.write("t_currentFrameMatrix%i._32 = %ff;\n" % (iterator, finalMatrix[2][1]))DATAXXJ file5.write("t_currentFrameMatrix%i._33 = %ff;\n" % (iterator, finalMatrix[2][2]))DATAXJ file5.write("t_currentFrameMatrix%i._34 = %ff;\n" % (iterator, finalMatrix[2][3]))DATAXhK file5.write("t_currentFrameMatrix%i._41 = %ff;\n" % (iterator, finalMatrix[3][0]))DATAXK file5.write("t_currentFrameMatrix%i._42 = %ff;\n" % (iterator, finalMatrix[3][1]))DATAXxL file5.write("t_currentFrameMatrix%i._43 = %ff;\n" % (iterator, finalMatrix[3][2]))_iDATAXM file5.write("t_currentFrameMatrix%i._44 = %ff;\n\n" % (iterator, finalMatrix[3][3]))DATAM DATAhM file5.write("m_currentFrameToRoots[%i] = t_currentFrameMatrix%i;//for now\n" % (iterator, iterator))DATAXN file5.write("m_bonesBegin[%i] = D3DXVECTOR3(%ff, %ff, %ff);\n" % (iterator, armature_obj.bones[bone_name].head["ARMATURESPACE"][0], armature_obj.bones[bone_name].head["ARMATURESPACE"][1], armature_obj.bones[bone_name].head["ARMATURESPACE"][2]))DATAO file5.write("m_bonesEnd[%i] = D3DXVECTOR3(%ff, %ff, %ff);\n\n" % (iterator, armature_obj.bones[bone_name].tail["ARMATURESPACE"][0], armature_obj.bones[bone_name].tail["ARMATURESPACE"][1], armature_obj.bones[bone_name].tail["ARMATURESPACE"][2]))DATAP DATAP DATAQ iterator += 1bDATA`Q DATA(Q print "here we end for armature\n"REEDATAQ Draw.Exit()hDATA0R DATAhR ARtVARArmaturexWiDATAxWfXXPelvisB@ <@?B ?B? @ <@?B ?B?@?`2>?=`2?=`2>=???DATAXxWY8aBackw/"!?jE]?ѵ14&o?22=o?7 <@] &x@kE]?ѵ14@&o?22=o? <@?_H>?=_H?==@=???DATAYX\X [ [NeckqK'ᢷ>b<?e<;ng?=_8#?0] &x@kE]N'@@Wd?(g<"[;ng?_ ;?] &x@kE]?ʷ=?=ʷ>=ʷ=t=???DATA [YHead<;z0<鐧:˵c?=zF?=D==???DATAX\8aYX]]Shoulder_LKx=޽-Y?|,!:qKZq~:Ž}?@=D+}? =@aF,Y?/@UٽKZXG;X}?rNM=8=J}?=@aF?PcB>?=KcB?=$B==???DATA]X\^^UpperArm_LzLƼS"A?&\"=0T?=,{?=fO==???DATA^]``LowerArm_L?.%0>?b>( I`<fj?M>Z?\ >0K?2N@zE@\@?0̼-/#$E'?>CAZbvs>K?2N@z?w>?=w?= =&X=???DATA`^Palm_Lf<.;?7l< ?5ȱ䇓;?<-gET>E@\@??>?=?=M>%r=???DATA8aX\XpbpbShoulder_Rv<½޽,Y|,!qKZq~?;=}@==D+}? ½@aF,Y/@UٽKZWG?#=X=}rHM== :=I}?½@aF?IcB>?=JcB?="B==???DATApb8accUpperArm_R(=^D":@r l?l&G??MڥG?6V4=ɤ=~?(T/@Uٽ ݿ#@jp*>?7<ށ>*X<=?T/@Uٽ?3>?=1?=}Ę=JH=???DATAcpbddLowerArm_R|m^? ?&Z@?o3C<|f?A>]$VZj>0 ݿ#@jB@{>%OM&?!A?)x_t>h??,> ݿ#@j?ڑ>?=ڑ?=qN=]=???DATAdcPalm_RK UD=?Mk*F=< :?=+Ovl?0B@{>K0E@c*?%?C?<V?:"K?R>B@{>?|=?=|>=. = 7=???DATAfixWPgPgUpperLeg_LDA>TW@s>^? ?簣TW@s>^? ?簣TW@s?ǒ??=ǒ@=ǒ? T>???DATAPgfhhLowerLeg_L,;c>ͨ?2s/y?0>^? n>>^97?O 1Bʵ{1F =r8>^??>?=?=}e>t:>???DATAhPgFoot_L?}5K>^K>8 > >}? ܽ׽ =ݼ~?sl~n>>^?Sy>?=Ry?=Sy> p=???DATAifjjUpperLeg_R~?c?@s^? ?U?r;gU?`???DATAji0l0lLowerLeg_Rb=?>F=Uy?oG`>0a]=?b7?;G =1?SB=Ƶgk~]1?^T = 7^??>?=?=ce>t:>???DATA0ljFoot_RC>K<aI?YwL??Y}<ITd =y?g\=0nH>bKT7 >\ >}?@==0 ӽݼ~?=l~销nH>b?0y>?=5y?=0y>p=???ACThmACActionm`nDATA@m`nUpperArm_LDATA@`nmhUpperArm_ROBPnqpOBNageur-Armrm-NageurhmV???????????????????$DOBd??<?>Q8>u=?@???@???DATA@DPelvisxWD?????????B ?B?@?????@ <@4444C4C4CDATADXH@BacknaX@XH?????y%F':8?21 r1?f#5 ??ѵ14@&o?22=o? <@????? <@] &x@kE]4444C4C4CDATAXHPrDNeckGiuYD?????^11/Є0?MOL/+0?K4ED??(g<"[;ng?_ ;?] &x@kE]?????] &x@kE]N'@@Wd4444C4C4CDATAPrtXHHead [XH?????/`k~?̪+/@?0?L1ȴ1??Mr26wG(2<?ǁԼ:1m<?[/@9`?????[/@9`\5@=4444C4C4CDATAtuPrShoulder_LX\Du]=UL>߹ݻ???? :,Ƽx?ExE=?/b;9wc?ϽXb^-?PϽE~9f`|?۽= 38}? +>@8????? +>@8G?c@[4444C4C4CDATAuwtUpperArm_L]twِ;jZ"t??? ?Z'W"B?}}?LU)5Z>H[}?l伻լ6=&Ǿ?;+'=+c=?*A'<'?(@8=##=?G?c@[?????G?c@[??@4444C4C4CDATAwpyuLowerArm_L.R^upy????}?XH)5]>D[}?㼻Ϭ6=|&ƾ?F+,=b=?:u C ? (.e>6L¾>??@???????@@L @p>4444C4C4CDATApy8{wPalm_L`w????}}?fU)5[>D[}?C伻Ҭ6=Ɂ&ƾ?=+=c=? F=O?11>P6Q>@L @p>?????@L @p>DO4@{@7?4444C4C4CDATA8{}pyShoulder_R8aD˽>???0?v:_:ޣ.=?W=^~:Y?;lȻ?>~d?}T Y}?dp={u!=%I=;,5}?E课1t@5?????E课1t@5Gm@߸4444C4C4CDATA}~8{UpperArm_Rpb8{~ׄ] ;???c?g伖=U~?W="?z&A?V-AA>'"_i;˝?v@,?????v@,{@ 4444C4C4CDATA~}LowerArm_R.Lc}????~?jX=4<|?$r,5?\(?>?V6/>1?_ ?{@ ?????{@ 1k@_>4444C4C4CDATAX~Palm_Rd~????~?xX=I<{?dr,N5?}eG'?!$A?)i q>>?i}>1k@_>?????1k@_>E@@:?4444C4C4CDATAX UpperLeg_Lf ????Ayɱ2?0a3D(2>j?I3?w4~3p4? ?ʰTW@s?????A>TW@s>^?4444C4C4CDATA XLowerLeg_LPgX?????3űr? DU3?44?97?O 1Bʵ{1E =r8>^??????>^?2n>>^4444C4C4CDATA Foot_Lh ?????Y3k/2G?`15'3?41S4?}? ܽ׽ =Fݼ~?sl~₀2n>>^?????2n>>^K>!8 > >4444C4C4CDATAxUpperLeg_Rix????bH38E3?~Ӳ<_2?$*4@3t(?]t3%Y%? ?<U?dgU?`$c4444C4C4CDATA@xFoot_R0lx?????R²ꑵn2?$$4T3Uq$?^/?}?;==% ӽ'ݼ~?=l~@nH>$c?????nH>$cKN7 >H >4444C4C4CDATA8@@?OBPpqnOBNageur-Corps.lane.nX (????????????????@1h5@?/?|?h?OBd??<?>Q8>u=? ???@???`8yDATADATA((oPelvisddomeDATA(oؑ(BackchienaDATA(ؑo0NeckolloSuDATA(0oؑHeadestaDATA(o0Shoulder_Rpalla.RDATA(o8UpperArm_Ricipite.RDATA(8oLowerArm_Rvambraccio.RDATA(o8Palm_Rm_Rano.RDATA(o@Shoulder_Lla.LDATA(@oUpperArm_Lpite.LDATA(o@Palm_L.LDATA(oHUpperLeg_Ramba.RDATA(HoLowerLeg_Rolpaccio.RDATA(oHFoot_Riede.RDATA(oPUpperLeg_La.LDATA(PoLowerLeg_Laccio.LDATA(oPFoot_Le.LDATA(oLowerArm_LroupMAlX*MAcorpoL?L?L??????????????? ?? ף; ף;? ?????????@?=?==? ??????L?L?L?L==ff????DATA!`^??????????L>TE`^&TETex-busto>@?????=?@@????? @??<`ME4MEPlane.003h0$P P5 tiB@|r@.L?DATAXDATAT0*DATA0Z:^ʮm^ʮw^ʮ<@|D>56A@ ΅@D?9D:@@Ɓ ?rC$<@H0@T?4m8Δ8@:@l?&~J9@ζ@h7?J9@@6@?ӢDr6@.@yd?O;\;@@]?OEGF6?@.)@&Y2?u1O@>@@vqK?|iD[h;@6Չ@h?6Qȓ8 >@@@`?oP.L2:@B @l?, zp=@|@\?%_?9m?@ɉ@f4?v.[1?@D@4L?n>#T?ܗ@Ld8Np? (@>`|t?+@ Q|?@ߦ@lk>gOa?h^@ A=i`+?@DxG>$NB^r?li@7ҽN9ES? @ۻ=Hh|4D?~P@r7=T\iq?8@ ;T:?Դ@~4H)>Щ?J@̯wqF^_>@ۆ@??JgB1@@\%??أ(@ض@'?Y,a#@H@ ?P@֐@T>ԉTC@@`%@<[?BQH5@V@0"i?H|Ȫ;@@?i= 9@p@N?>:ᷔ@@?@\?X@@H? Z-+F"@>@d\2?*!$25@H@>1Ǐ/@pZ@4h`?.v.w%4@X@@r??]Ԟ-@@W?2O T4@F@8W?5XJ@7@$@?_'Tj8@֐@LSB?YbU"^ʮ@>)AewD?@I>׳XyBc?Z@*1> wKf+?~@j>!ex x=T*@`?;=n >8ه@ھ<*rLW>pf@Ja# ߑ>{u@8OCғ>R@α1..k?@c't>@66>@@;Cq@>&@ޅ*'i?!@: GCρ4?@1Ԣ^ʮ<@[оKhA6>·@NP?@҆XP]!?~@<{@p ?a@w>o^Tl ?hVL< c"?-O(҂Y?="?@]ce0,>g>>?hl$LS> =vO? =pVg>x{b~ ?">>>DjRGE >`ɱ>pw=f8y4>>x=o+?Fc8X5d>I>?pk:X@>)8m@ >={A?^Ui\== ?Ǔ5)\=K>x1G 8=L>̅>מL >>|ߙ^>L$>i^>4%>40m:>LJ>p(Kp| ,?>>|>qlP>> ?&>l?i t-=4==>iD=hh=hzw׉`JQ@rĪ@ 4>Jc?N@(>0{ @@4^>=7Hij@N@g>wh}?ǟ@(7>!Q|@h^@NZ>?榞@\z׍i@8@.F= @80@ v=>N92b@9@Q?UŤForU@Ж@b׏>X_:@8@*"?zY$@@o>ӯQK h@<@H?V-^ƽ@ؘ@M>jc&J@@>\WD>A?)` a=R>5?6|eE>x?h{WڧN->?`Ӿ2]R>}?VA$>ׂ?5 i>F4>ܯK?`[=7sp>hd?LN=זNy >? <#^rU.>ȏ>zɽ}C>*?yhcگ>7>٢.IO>B?a䃷= ??Z 4>x7?xǚ=o6M%m E>?٢=k7f? @0='s0j%?v(@ڽ}h?@҄8@6j>k @@RG zJ >z@੾GO억=B@@:(>~V@Z B>N\V>>@i>El\$@֐@i^?^H~iv @P@R;?m*D@j@N?~̳B@*@la?]Pk?@6@0"?J=@"@!?j>@*@g?H+0@࿏@@>$L)@ @U?o* v*r'@0@J?/Mxn.@h@xm>NH3@@`>L Ip.@@\M?-dI\><`H?b!\H/>=X@ٻ]|3>(=~ľZȑ>C6=<žh"4 ? < ?zm(=0h@>Jbv3>L>|>|HK=>r>ý y.>HE>5Ҿ+ChH>웖>&x<P>h>`>edI>Tƴ?4 =}lB=p@?((1'v>@;?珢Pv>$o?| o7?r?Vv?H?x;^HFV[>e?H=Ƅrd?|?ܾVӡ ?@7bb>u? _=Gݖ` ?z?TiGD?@2m $>(?˾! 9R>?d,@ 1Lp=>?Q〄 0>wPE8`v!@@v>ľZ#@e@HK>$@x^@M?< _UP ,@Zܓ@>GYt*'@@ޑ>`I%`@ܜ@V &?-hԗ)@L@^>'mR?t@()\W ŧ?ѭ@-~?<@P4>1e:f(?"@НW>O.}ۤ?@K@>5\Ff?$@㌾I1rL7?@عz3h?r+@L"h? ?@=/-&돇