BLENDER_v245REND 1GLOB  0o0j  SRx00SR4 vuesBHFFKP.P#.j 1RDATAB0CDATA0CxCBRDATAxCC0CRDATACDxCDATADPDCDATAPDDDDATADDPD4DATAD(ED4DATA(EpEDDATApEE(E4DATAEFpE8DATAFHFE8DATAHFF8DATAFF0CxCDATAF GFBCDATA GhGFBDDATAhGG GCPDDATAGGhGDPDDATAG@HG0CDDATA@HHGxCDDATAHH@HDDDATAHIHDpEDATAI`IHPD(EDATA`IIIDpEDATAII`ID(EDATAI8JIDEDATA8JJIDEDATAJJ8JpEFDATAJKJ(EFDATAKXKJEFDATAXKKKDHFDATAKKXKPDHFDATAKKFHFDATAP.P.BDPDC^P.50<</DATA//OutputRender>DATA/ //RenderRender@>DATA /8//AnimRender>DATA8/P/ /FormatRender>DATAP/h/8/Link and MaterialsEditing> DATAh//P/MeshEditingF> DATA/ /h/Mesh ToolsEditing>DATA /!//Mesh Tools 1Editing>DATA!/"/ /ArmatureEditing@>DATA"/#/!/Armature BonesEditing>DATA#/$/"/Anim settingsObject>DATA$/&/#/DrawObject@>DATA&/('/$/ConstraintsObject>DATA('/@(/&/EffectsObject&/DATA@(/X)/('/PaintEditing>DATAX)/p*/@(/Texture faceEditing>DATAp*/+/X)/PreviewMaterial>DATA+/,/p*/MaterialMaterial@>DATA,/-/+/RampsMaterial@>+/DATA-/./,/ShadersMaterial>DATA./`-/Mirror TranspMaterial>-/DATA`x./TextureMaterial>DATAx`CameraEditing@>DATAxPreviewWorld>DATAWorldWorld@>DATAبMist / Stars / PhysicsWorld>DATAبAmb OccWorld>DATAبTexture and InputWorld>DATA Map ToWorld>DATA 8Map InputMaterial>`DATA8P Map ToMaterial>`DATAPh8PreviewTexture>DATAhPTextureTexture@>DATAhColorsTexture@>hDATAImageTexture>DATAȳAnim and MovieTexture>DATAȳPreviewLamp>DATAȳLampLamp@>DATAShadow and SpotLamp>DATA(Texture and InputLamp>DATA(@Map ToLamp>DATA@X(ScriptlinksScript>DATAXp@HooksObject@>$/DATApXParticle InteractionObject>&/DATApWoodTexture>DATAStucciTexture>DATAпMagicTexture>DATAпBlendTexture>DATAпMusgraveTexture>DATA`Distorted NoiseTexture>DATA`xYafRayRender@>/DATAx`YafRay GIRender@>/DATAxSoftbodyObject>&/DATACloudsTexture>DATAVoronoiTexture>DATAModifiersEditing> DATAShapesEditing> DATA Fields and DeflectionPhysics>DATA 8Particles Physics@>DATA8P Soft BodyPhysics>DATAPh8Fluid SimulationPhysics>8DATAhPRadio RenderRadio>DATAhRadio ToolRadio@>DATAMultiresEditing> DATAP.w50P.DHhCƻDhCC(BEC?H?DATAh50yP.333?P.1Save AstimeC:\Program Files\Blender Foundation\bagor.blend*nDATAP.P.P.D0CxCD5R5OPR<<DATAP.P .P.DEF(E^>W<?o?77 `70DATATransform PropertiesView3dU>"9ODATAView PropertiesView3dT>"DATABackground ImageView3dT>"DATA`rH#333?P.?3?3'2F:ܴ??3?2'2>ܴF:??^>2n;V<?[B3;?@|3?zC'2>ܴF:??^>W<?o??3?3'2F:ܴ?5?5@?p B?=b<=C'2ܴ?F:8|=`s = ???? DATAH#($` 333?P.?zDzDB\CFzD #<HB DATA($zhH#333?P.@̌A\;\;BA( A@CC #<@(DATA$h~P%($333?P.DATA(P%vP.h333?P.zC AzC A #< #<`jFzD OBDATAP.w70P%333?P.DdCDv@CC(BDC??DATAh70yP.333?P.GLOAD UI FONT PICTURES/WINDOWS\Fonts\ Settings\Yann\Mes documents\Mes images\Blender\s//lend/Armature/timb____.ttftfta13.blendip verts.blend  DATAP .P!.P.(EFHFPD诅>6?o?77 90ppDATATransform PropertiesView3d>"DATAView PropertiesView3dT>"DATAr&333?P .???ܴ?F:'2??% ??%'2>ܴF:??诅o诅>66?o!3>jn6:?3u@4h%h h?yy'2>ܴF:??诅>6?o????ܴ?F:'2??u@?p B?=ɸ!<=C'2ܴ?F:8|=`s =???? DATA&{90333?P .CC?`=r??DATAh90y&333?P .SELECT IMAGE/Documents and Settings\Yann\Mes documents\Mes images\Gimp\Azde.jpgjpg jDATAP!.P#.P .EDpEF*<<o?939ST3 :0DATATransform PropertiesView3dCR>"9ODATAr'333?P!.???EM0T????E?M0T@?*<<oz¼GY<?жB#B6yE?M0T@?*<<o????EM0T??жBp B? AM>=CEM0T8|=`s = ???? DATA'z333?P!.@̌A\;\;BA( A@CC #<@(HHDATA,HOB`ApDATA$~('333?P!.DATA((vP".333?P!.zC AzC A #< #<`jFzD OBDATAP".w:0(333?P!.DdCDv@CC(BDC??DATAh:0yP".333?P!./OpenFileRY PATHC:\Program Files\Blender Foundation\ake Human 1.8b\..\\t\ions//lend/Armature/aquarium.blenda13.blendip verts.blendnDATAP#.P!.FpEDHF?r@AHM939ST38P*@@((DATA(Transform PropertiesView3dA>"DATA8rP*333?P#.bL?~gV??EV>~.F"q=s?G>ﱳ>h?`L??"q=~gEV>s?V?.FH>:+A0ldj@?_?Y[VF'?J?F?~.F?ރ=f@9Gꚾ]ľ"?`AhA1;? ?(x\= 3@t3b=>h3U9B׌6ןSB[ºA!)@?r@AHMbL?~gV??EV>~.F"q=s?G>ﱳ>h?B?C5j'ƳoR@p B??"n; #<C8|;`s 8|=`s = DATAP*{8333?P#.CC?=m??SRx000SRAction0LHOO.P$.P+.j DATA0LxLDATAxLL0LDATALMxLDATAMPMLDATAPMMMDATAMMPMDATAM(NMDATA(NpNMDATApNN(NDATANOpNDATAOHONDATAHOODATAOOxLLDATAO PO0LMDATA PhPO0LPMDATAhPP PMMDATAPPhPPMMDATAP@QPxLMDATA@QQPL(NDATAQQ@QM(NDATAQ+QM(NDATA++QpNNDATA+ ,+(NNDATA ,h,+MpNDATAh,, ,MNDATA,,h,PMpNDATA,@-,PMODATA@--,MODATA--@-NHODATA-.-pNHODATA.-OHODATAP$.P&.0LPMMM =x[P%.@ BDATA@XOutputRender>DATAXp@RenderRender@>DATApXAnimRender>DATApFormatRender>DATALink and MaterialsEditing>DATAMeshEditing@>DATAMesh ToolsEditing>DATAMesh Tools 1Editing>DATA;ArmatureEditing@>DATA;<Armature BonesEditing>DATA<=;Anim settingsObject>DATA=><DrawObject@>DATA>?=ConstraintsObject>DATA?A>EffectsObject>DATAA B?PaintEditing>DATA BATexture faceEditing>DATAx[X\ 333?(S ?zDzDBCFzD #<HB DATA(X\vH0x[333?(S ?̽̌?R~?ף?@ #< #<`jF@F OB?̽̌?DATAxH0}]X\ 333?(S  DATA]|H<0H0 333?(S ?zDzDBCzDzD=HB DATAhH<0yP%.]333?(S %Save Runtime/ DATAP%.wH<0333?(S D hCSDaaCC(BDC??DATAP&.P'.P$.MxLL(NDATAP'.P).P&.PMOHOpN =>o?=08C8CDATA8CTransform PropertiesView3dCR>"9ODATAr^333?8e ?3?3@/s???3@/:s?? =B'2n;>/an<?AK`@zC@/:s?? =>o??3?3@/s?5?5Ap B??S<=C@/s@  DATA^z333?8e @̌A\;\;BA( A@CC #<@(DATA$~_^333?8e DATA(_vP(.333?8e zC AzC A #< #<`jFzD OBDATAP(.w=0_333?8e DdCDv@CC(BDC??DATAh=0yP(.333?8e Save AsRARY PATHD:\Blender\Makehuman\Main\h180.blend\Text\Object\t\ions//lend/Armature/mh180b.blendeta13.blendip verts.blendjDATAP).P+.P'.pNN(NM!>>o?Lax?0PDPDDATAPDTransform PropertiesView3dA>"DATA(av`b333?(o ?̽̌?R~?ף?@   #< #<`jFzD OB?̽̌?DATA`ba 333?(o ?zDzDBCFzD #<HB DATArp`b333?(o )X僾>'>B^ =`?3w4w?O= )(>N@B??)X(>4w僾P^ =4w?>`?O=<"˿F!?w Hvǚ=;>Eջ<>T?pުmA@ÿ@q>th@jMo<<"˿F!?!>>o?)X僾>'>B^ =`?3w4w?O= )(>N@B??o>2訽1*0 @p B?=Cݽ"?E!@  DATA$p~0333?(o DATAx0}Xcp 333?(o P'  D?IK9kDATAXc{P*.0333?(o CC???DATAP*.wx?0Xc333?(o DdCDv@CC(BDC??DATAhx?0yP*.333?(o TLoad Body settingd:\Blender\Makehuman\lab\h180.blend\Text\nder\scripts\provasetting.txtget.blendDATAP+.P).OMNHO?B`@AHMA0hEhEDATAhETransform PropertiesView3dCR>"9ODATArd333?z `L?zgV??EV>~.F"q=s?F>:8+$?^L??"q=egEV>s?V?.FL>~@7@?_?KVF'?d;?F?~.F?ރ=VU@9Fꚾ3!A+$A(1;? ?`y\=4hHt=>4ҢBײן1A–ǰA(@?B`@AHM`L?zgV??EV>~.F"q=s?F>:8+$?B?C7j'ij >Ap B??--;=CI?,@  DATAdzȒ333?z @̌A\;\;BA( A@CC #<@(DATA$Ȓ~(5d333?z DATA((5vP,.Ȓ333?z zC AzC A #< #<`jFzD OBDATAP,.wA0(5333?z DdCDv@CC(BDC??DATAhA0yP,.333?z Save AsRARY PATHD:\Blender\Makehuman\Main\h180.blend\Text\Object\t\ions//lend/Armature/mh180b.blendeta13.blendip verts.blendjSRx0@00SRDetail`.00p3P-.P0.j DATA`..DATA..`.DATA.8/.DATA8//.DATA//8/DATA/0/DATA0X0/DATAX000DATA0X0|DATA001..DATA01x10`.8/DATAx1101`./DATA12x18//DATA2P21//DATAP222.0DATA22P2.X0DATA2(320X0DATA(3p32/X0DATAp3(3/0DATAP-.P/.`.//8/P..B0FTDATAFGAnim settingsObject>DATAGHFDrawObject@>DATAHIGHooksObject@>GDATAIJHConstraintsObject>DATAJKIEffectsObjectIDATAKMJParticle InteractionObject>IDATAM(NKOutputRender>DATA(N@OMRenderRender@>DATA@OXP(NAnimRender>DATAXPpQ@OFormatRender>DATApQRXPLink and MaterialsEditing>DATARSpQMeshEditing@>DATASTRMesh ToolsEditing>DATATSMesh Tools 1Editing>DATAP..wB0333? DdCaJ¦DPydCC(BDC??DATAhB0yP..333? /9DATAP/.P0.P-.0..X0DATAP0.P/./0X0/?B@PףX@D0DATAXr@D0333? Fw?e>>F>%V҇߳]?>Nn>>ݐ????Fw?냄>4F>ڳ]?e>%V>6V*@7l*W@?:?•UeeM>d?)(V?%V?Tɍ?JHP>(*@K?A??A)b?Mr>65`jZ>}4>O7{ï+Dy÷ HsCVxC HB?B@PףFw?e>>F>%V҇߳]?>Nn>>ݐ????M[?Z?Ap B??): #<CJ<? w? DATAh@D0yX333? (Save Runtime/ SRx@00SRMontage367P1.P6.j DATA34DATA4H43DATAH444DATA44H4DATA4 54DATA 5h54DATAh55 5DATA55h5DATA5@65DATA@665DATA66@6dDATA66dDATA7`74H4DATA`77734DATA77`734DATA78874 5DATA88874 5DATA88884h5DATA898H45DATA9X98h55DATAX99945DATA99X9h55DATA90:95@6DATA0:x:9 5@6DATAx::0:5@6DATA:;x:56DATA;X:@66DATAX;h56DATAX56DATA66DATAP1.P3.34 54P2.XUYDATAUVOutputRender>DATAVXURenderRender@>DATAXYVAnimRender>DATAYXFormatRender>DATAP2.wX333?h DdCaJ¦DO(dCC(BDC??DATAhXyP2.333?h /9DATAP3.P4.P1.h54H45DATAP4.P5.P3.45@6 58=i>o? @DATA@x333?X zCAzCA A@FB= A DATAr@333?X ????????8=i>o?fffAD&@??fffAp B? #<C DATAhy333?X AVE TARGA/t1.blend9DATAP5.P6.P4.665@68=H>o?eee (DATA(x333? zCAzCA1||1 A@FB= A DATAr(333? ????????8=H>o?fffA*@??fffAp B? #<C DATAhy333? AVE TARGA/t1.blend9DATAP6.P5.5h5668=>o?cccd5 DATA(5v0333? B̽̌?B̽̌?## #< #<`jFzD SQB̽̌?DATA0r 5333? ????????8=>o?fffA@??fffAp B? #<C DATAh y0333? OAD FILE/9SCj pSC1p5(*('2>ܴF:?XܴF:?XܴF:?XܴF:?= dd??< Kddd!@??8 8 ???? d?fff?????o:?L=//C:\Documents and Settings\Yann\Mes documents\Mes images\Blender\//#D BDATA(c(c~xDATA(c0)(.+ DATA0)c)(.>DATA)c)0).>DATA)c *)_PDATA *cp*) eDATAp*c* * v(DATA*cp*.<pDATA( b,xd'=A@DATALmL?B ?u< ?? #<=DATA@8 h1 RenderLayerMB8-)MBMeta???>L>?DATAl(????@@DATAl(X=Ě?R\????@ ADATAlX(=V3????@@DATAl(X_ @'hKH4????@@DATAl(x ~(????@@DATAlx( `Q@????@@DATAl(8x DQ????@@DATAl8(i)xm2]?λλ2 ???? 0?@DATAl(8zoR@)4xm ?]?S??? 0?@DATAl(}=)ְ?@?>?>??? 0?@DATAl(=)=>???? 0?@DATAl(8=B>???? 0?@DATAl8(=|>???? 0?@DATAl(x8O|1????@Ф?DATAlx(=})@?>?>??? 0?@DATAl(x 5=6@?>?>??? 0?@DATAl(X!"P#|(%T@????@Ф?DATAlX(#$=xK? ????@ ADATAl(X%&@k5xm ?]?S??? 0?@DATAl(8'(ʩ@i25xm ?]?S??? 0?@DATAl8()*CPsI3]?λλ2 ???? 0?@DATAl(x8+,E3]?λλ2 ???? 0?@DATAlx(|1ךw????@Ф?DATAl(x@|1(w????@Ф?CA@ CACameraL>DB=B B@?LA(5$`5LALamp?????A4B>??? B4B?@@???LA`5$5(5LALamp.001?????A4B>??? B4B?@@???LA5$5`5LALamp.003?????A4B>??? B4B?@@???LA5$55LALamp.007?????A4B>??? B4B?@@???LA5$5LALamp.008?????A4B>??? B4B?@@???IPT`J.J.IPAction.handACIPTJ.`J.IPConstCOWO(5aWOWorld?k;>?A@pA A?L=0DATAx0@5??????????TXh@TXGui.pyb@ @ @ DATAb@ Xb@ ? FREEDATAXb@ b@ b@ `O (DATAb@ b@ Xb@ FREEDATAb@ 0c@ b@  FREEDATA0c@ xc@ b@ FREEDATAxc@ c@ 0c@ P %FREEDATAc@ d@ xc@ ? FREEDATAd@ Pd@ c@ ? FREEDATAPd@ d@ d@ P? FREEDATAd@ d@ Pd@ +FREEDATAd@ (e@ d@ ? FREEDATA(e@ pe@ d@ oO 7FREEDATApe@ e@ (e@ #FREEDATAe@ f@ pe@ 0pO 4FREEDATAf@ Hf@ e@ ? FREEDATAHf@ f@ f@  FREEDATAf@ f@ Hf@ `+FREEDATAf@  g@ f@  FREEDATA g@ hg@ f@ ? FREEDATAhg@ g@ g@ 8 FREEDATAg@ g@ hg@ 0? FREEDATAg@ @h@ g@ ;FREEDATA@h@ h@ g@ FREEDATAh@ h@ @h@ +FREEDATAh@ i@ h@ ,FREEDATAi@ `i@ h@ P,FREEDATA`i@ i@ i@ ` FREEDATAi@ i@ `i@ xFREEDATAi@ 8j@ i@  FREEDATA8j@ j@ i@ Ђ FREEDATAj@ j@ 8j@ ? FREEDATAj@ k@ j@  8FREEDATAk@ Xk@ j@ ? FREEDATAXk@ k@ k@ ,FREEDATAk@ k@ Xk@ #FREEDATAk@ 0l@ k@ FREEDATA0l@ xl@ k@ @ FREEDATAxl@ l@ 0l@ x FREEDATAl@ m@ xl@ X %FREEDATAm@ Pm@ l@ O -FREEDATAPm@ m@ m@ 8FREEDATAm@ m@ Pm@ 8 FREEDATAm@ (n@ m@ 8 FREEDATA(n@ pn@ m@ DATApn@ n@ (n@ FREEDATAn@ o@ pn@ h FREEDATAo@ Ho@ n@ FREEDATAHo@ o@ o@ ؀ FREEDATAo@ o@ Ho@ O .FREEDATAo@  p@ o@ ,FREEDATA p@ hp@ o@ P? FREEDATAhp@ p@ p@ FREEDATAp@ p@ hp@ H FREEDATAp@ @q@ p@ 8[]DATA@q@ q@ p@ DATAq@ q@ @q@  FREEDATAq@ r@ q@ ? FREEDATAr@ `r@ q@ pO 3FREEDATA`r@ r@ r@ ? FREEDATAr@ r@ `r@ @-e(fuDATAr@ 8s@ r@ 87 BFREEDATA8s@ s@ r@  e(fuDATAs@ s@ 8s@ %FREEDATAs@ t@ s@ O -FREEDATAt@ Xt@ s@ qO 1FREEDATAXt@ t@ t@ -FREEDATAt@ t@ Xt@ p nPatDATAt@ 0u@ t@ 8FREEDATA0u@ xu@ t@ :  FREEDATAxu@ u@ 0u@ x: "FREEDATAu@ v@ xu@ ( )EDATAv@ Pv@ u@ x FREEDATAPv@ v@ v@ ? FREEDATAv@ v@ Pv@ p? FREEDATAv@ (w@ v@ ~ FREEDATA(w@ pw@ v@ 8? FREEDATApw@ w@ (w@ >FREEDATAw@ x@ pw@ -FREEDATAx@ Hx@ w@ 0.FREEDATAHx@ x@ x@ ? FREEDATAx@ x@ Hx@ .FREEDATAx@  y@ x@ .FREEDATA y@ hy@ x@ : #FREEDATAhy@ y@ y@ O (FREEDATAy@ y@ hy@ (; $FREEDATAy@ @z@ y@ /FREEDATA@z@ z@ y@ @O )FREEDATAz@ z@ @z@ FREEDATAz@ {@ z@ O )FREEDATA{@ `{@ z@ p/FREEDATA`{@ {@ {@ /FREEDATA{@ {@ `{@ O ,FREEDATA{@ 8|@ {@ x FREEDATA8|@ |@ {@ hqO 6FREEDATA|@ |@ 8|@ ; "FREEDATA|@ }@ |@ ; #FREEDATA}@ X}@ |@ ? FREEDATAX}@ }@ }@ qO 4FREEDATA}@ }@ X}@ pK.RFREEDATA}@ 0~@ }@ OFREEDATA0~@ x~@ }@  FREEDATAx~@ ~@ 0~@ `O (FREEDATA~@ @ x~@ 0FREEDATA@ P@ ~@ OFREEDATAP@ @ @ ? FREEDATA@ @ P@ X? FREEDATA@ (@ @ 0< &sitiDATA(@ p@ @ < !sitiDATAp@ @ (@ ~ FREEDATA@ @ p@ ? FREEDATA@ H@ @ `0FREEDATAH@ @ @ 0FREEDATA@ ؁@ H@ 1FREEDATA؁@  @ @ P1FREEDATA @ h@ ؁@ P~ DATAh@ @ @ ~ FREEDATA@ @ h@ } FREEDATA@ @@ @ ? FREEDATA@@ @ @ 8rO 2FREEDATA@ Ѓ@ @@ ? FREEDATAЃ@ @ @ 1FREEDATA@ `@ Ѓ@ 1FREEDATA`@ @ @ O -FREEDATA@ @ `@ @2FREEDATA@ 8@ @ x? FREEDATA8@ @ @ < #FREEDATA@ ȅ@ 8@ x} FREEDATAȅ@ @ @ 8=  FREEDATA@ X@ ȅ@ @? FREEDATAX@ @ @ 8FREEDATA@ @ X@ FREEDATA@ 0@ @ 0} FREEDATA0@ x@ @ 2FREEDATAx@ @ 0@ ? FREEDATA@ @ x@ | FREEDATA@ P@ @ 2FREEDATAP@ @ @ = 'FREEDATA@ @ P@ = 'FREEDATA@ (@ @ ? FREEDATA(@ p@ @ | FREEDATAp@ @ (@ 03FREEDATA@ @ p@ @> 'FREEDATA@ H@ @ >  FREEDATAH@ @ @ ? FREEDATA@ ؊@ H@  FREEDATA؊@  @ @ 3FREEDATA @ h@ ؊@ 3FREEDATAh@ @ @ X| FREEDATA@ @ h@ ? FREEDATA@ @@ @ | FREEDATA@@ @ @ 4FREEDATA@ Ќ@ @@ p4FREEDATAЌ@ @ @ > #FREEDATA@ `@ Ќ@ H? FREEDATA`@ @ @ { FREEDATA@ @ `@ 4FREEDATA@ F@ Z FREEDATAFPF@ O *FREEDATAPFFF? FREEDATAFFPF{ FREEDATAF(GFpZ FREEDATA(GpGFZ FREEDATApGG(GH? &FREEDATAGHpG? FREEDATAHHHG8{ FREEDATAHHHH[ FREEDATAHHHH? 'FREEDATAH IH? %FREEDATA IhIH? FREEDATAhII I`[ s():DATAIIhIO )FREEDATAI@JIx FREEDATA@JJI[ FREEDATAJJ@J\ FREEDATAJKJh>FREEDATAK`KJrO 1FREEDATA`KKK(? FREEDATAKK`KP\ (setDATAK8LKO )FREEDATA8LLKsO 7FREEDATALL8L\ FREEDATALML\ FREEDATAMXMLP@ #(setDATAXMMM@ %FREEDATAMMXM@O -FREEDATAM0NM@] FREEDATA0NxNMpsO 0FREEDATAxNN0NsO 2FREEDATANOxN`? FREEDATAOPON(setDATAPOOOO )(setDATAOOPOA "FREEDATAO(PO] FREEDATA(PpPO] FREEDATApPP(PO /FREEDATAPQpPz FREEDATAQHQP? FREEDATAHQQQ`O *FREEDATAQQHQ? FUNDATAQ RQ FREEDATA RhRQx FUNDATAhRR RXA !FREEDATARRhR0^ FREEDATAR@SRz FREEDATA@SSR7 DDATASS@S;FREEDATASTS(8 CFREEDATAT`TS^ FREEDATA`TTT? FREEDATATT`T^ FREEDATAT8UT _ FREEDATA8UUTp_ FREEDATAUU8U8 FFREEDATAUVU`z FREEDATAVXVUA %FREEDATAXVVV@? FREEDATAVVXVB &FREEDATAV0WVz FREEDATA0WxWV`B #FREEDATAxWW0Wx? FREEDATAWXxWB $FREEDATAXPXW \FREEDATAPXXXO *FREEDATAXXPXK.PFREEDATAX(YX XFREEDATA(YpYX? FREEDATApYY(Y O (FREEDATAYZpY_ FREEDATAZHZYO *FREEDATAHZZZy FREEDATAZZHZC &FREEDATAZ [ZZ FREEDATA [h[ZhC &FREEDATAh[[ [y FREEDATA[[h[C 'FREEDATA[@\[`Z FREEDATA@\\[D 'FREEDATA\\@\ Z FREEDATA\]\pD 'FREEDATA]`]\@y FREEDATA`]]]? FREEDATA]]`]Z  FREEDATA]8^]L.WFREEDATA8^^]U.WFREEDATA^^8^V.WFREEDATA^_^V.WFREEDATA_X_^ W.VFREEDATAX___ ? FREEDATA__X_D 'FREEDATA_0`_` FREEDATA0`x`_`` FREEDATAx``0`` FREEDATA`ax` E #FREEDATAaPa`^ FREEDATAPaaaxE &FREEDATAaaPaX? FREEDATAa(baa FREEDATA(bpbaPa FREEDATApbb(bE  FREEDATAbcpbO ,FREEDATAcHcb@O (FREEDATAHcccO *FREEDATAccHc /rnamDATAc dc`_  slidDATA dhdc? FREEDATAhdd d? FREEDATAddhd 1)EDATAd@eda FREEDATA@eedO -FREEDATAee@e@tO 4FREEDATAefe? FREEDATAf`fea FREEDATA`fffx FREEDATAff`f0 FREEDATAf8gf_ FREEDATA8ggf FREEDATAgg8gH<FREEDATAghg8? FREEDATAhXhg`O -FREEDATAXhhhp? FREEDATAhhXh FREEDATAh0ihNFREEDATA0ixih\  FREEDATAxii0iX REEDATAijxi@b REEDATAjPjitO 4rm =DATAPjjj^ FREEDATAjjPj9 @FREEDATAj(kjO +FREEDATA(kpkj`\ FREEDATApkk(kuO 6FREEDATAklpk`[  FREEDATAlHlk _  FREEDATAHlll[ FREEDATAllHl9t|QUDATAl mlxuO 2FREEDATA mhml FREEDATAhmm mb FREEDATAmmhm`^  FREEDATAm@nmȍ FREEDATA@nnm(F &FREEDATAnn@nF 'FREEDATAnonb FREEDATAo`on FREEDATA`ooo O .FREEDATAoo`o8 FREEDATAo8po [  FREEDATA8ppoO .FREEDATApp8px FREEDATApqp0c FREEDATAqXqpc FREEDATAXqqqO -FREEDATAqqXqx FREEDATAq0rq]  FREEDATA0rxrq@O -DATADATAxrr0rhx  = 0DATArsxrF %FREEDATAsPsr x FREEDATAPsss0G $FREEDATAssPsO (FREEDATAs(tsw FREEDATA(tptsO (FREEDATAptt(tG 'FREEDATAtuptX+FREEDATAuHut+FREEDATAHuuuw FREEDATAuuHuc FREEDATAu vuuO 2FREEDATA vhvu d FREEDATAhvv vX:FREEDATAvvhvpd FREEDATAv@wv:FREEDATA@wwvG "FREEDATAww@wHw FREEDATAwxw88FREEDATAx`xww FREEDATA`xxx? DATAxx`x0? $ DATAx8yxv ent DATA8yyx.i+1,DATAyy8yJerHeDATAy y@@d1DATA P yh? ip)DATAP   d |LDATA  P ? FREEDATA p  8H &T GUDATAp (  ? T GUDATA(  p e FREEDATA  ( x)FREEDATA P  ? FREEDATAP   `e FREEDATA  P H  FREEDATA x  pv .mesDATAx 0  e FREEDATA0  x س)FREEDATA  0 H? FREEDATA X  H  FREEDATAX   (v .mesDATA Ȅ X f FREEDATAȄ   HvO 6FREEDATA 8 Ȅ ? FREEDATA8   u FREEDATA 8 ? FREEDATA? #!BPY7DATA,`O """ Registration info for Blender menus:DATA Name: 'MakeHuman-GUI'DATABlender: 230i(1DATAGroup: 'Import'DATA(P Tooltip: 'Make a parametric humanoid' DATA? REEDATA? """DATAP? ""DATA +print "starting MakeHuman 1.8a"DATA?  32DATA8oO ############IMPORT OF OS or NT#########################DATA$ #This if-else is to make the scriptDATA80pO #available under Windows without install full pythonssDATA? DATA import sysDATA`+if sys.platform == "win32":DATA  import ntDATA? else:7DATA 8 import osDATA0?  32DATA< ############IMPORT OF SOME MODULES#########################DATAimport BlenderDATA+from Blender.Draw import *DATA,from Blender.BGL import *DATAP,from Blender import WindowDATA` import MorphFilesEEDATAximport MorphingDATA import MHsymmetryEEDATAЂ #import PreviewerEEDATA? DATA< ############SOME GLOBAL VARIABLES#######################tDaDATA? DATA ,WinSize = Buffer(GL_FLOAT,4)namDATA$ glGetFloatv(GL_SCISSOR_BOX,WinSize)DATA buttonWidth = 120EEDATA@ buttonHeight = 18EEDATA xBorder = 90DATA(X nColumn = int(WinSize[2]/buttonWidth)DATA0O nRows = int((WinSize[3]-Border)/buttonHeight)DATA8idxOfGroup = 0DATA 8pathOK = 0DATA8mainPath = ""DATA MenuButton = Create(0)DATA MenuButton1 = Create(0)DATAh MenuButton2 = Create(0)DATA MenuButton3 = Create(0)DATA؀ MenuButton4 = Create(0)DATA0 O message = "OSI Certified Open Source Software"DATA ,paintMode, riggingMode = 0,0DATAP?  32DATA nameOfGroups = []EEDATAH targetsPaths = []EEDATA8buttonList = []DATA buttonTooltips = []DATA buttonNames = [] EEDATA?  32DATA4pO ############ PATH FUNCTIONS #######################DATA?  32DATA @-def startSequence(fullPath):DATAD87  global pathOK, positionOfButtons ,Morph, nRows, nColumn, mainPathEDATA  pathOK = 0DATA(  if fullPath.find("base.mesh") != -1:DATA0O  mainPath = fullPath.replace("base.mesh","")DATA4qO  print "mainPath from browse function", mainPathEEDATA - MorphFiles.saveIni(mainPath)DATAp  makeButtons(mainPath)DATA<  positionOfButtons = makeButtonPosition(nRows, nColumn),MoDATA$ :  MorphFiles.buildMesh(mainPath)EDATA$x:  Morph = Morphing.Morph(mainPath)EDATA(  Blender.Redraw()EDATAx pathOK = 1yDATA?  DATAp?  32DATA~ def makeButtons(path):DATA8?  32DATA@  global targetsPaths, nameOfGroups, buttonList, buttonTooltipsDATA - if sys.platform == "win32":)DATA 0. fileList = nt.listdir(path)~DATA?  else:DATA . fileList = os.listdir(path)orDATA. for fileName in fileList:DATA$:  if len(fileName.split(".")) == 1:DATA,O  targetFolder = fileName.split(".")[0]DATA((;  nameOfGroups.append(targetFolder)[0DATA / if sys.platform == "win32":DATA,@O  fileList2 = nt.listdir(path+fileName)`DATA  else:EEDATA,O  fileList2 = os.listdir(path+fileName)DATA p/ for fileName2 in fileList2: DATA / if sys.platform == "win32":DATA0O  localPath = targetFolder+"\\"+fileName2DATA x else:DATA8hqO  localPath = os.path.join(targetFolder, fileName2)DATA$;  targetsPaths.append(localPath)EDATA$;  buttonList.append(Create(0.00))DATA?  67DATA8qO  if len(fileName2.split(".")[0].split("-")) == 2: lDATATpK. buttonTooltips.append(fileName2.split(".")[0].split("-")[1].replace("_"," "))"DATAP buttonNames.append(fileName2.split(".")[0].split("-")[0].replace("_"," "))DATA  else:DATA,`O  buttonTooltips.append("no tooltip")DATA 0 buttonNames.append("???")-DATAP print "WARNING: target name "+fileName2.split(".")[0]+" have wrong sintax"DATA?  7DATAX?  32DATA(0< def makeButtonPosition(rowns,columns):DATA$<  global buttonHeight, buttonWidthEEDATA~  positionsList = []DATA ?  x=10DATA`0 for i in range(columns):DATA0 y = int(WinSize[3]-80)1rDATA1 for i2 in range(rowns):eDATA P1 positionsList.append([x,y])lDATAP~  y -= buttonHeightDATA~  x += buttonWidth DATA}  return positionsList DATA?  32DATA48rO ############ MAKEHUMAN FUNCTIONS #################EDATA? 32DATA1def saveTarget(targetPath):DATA1 global mainPath, messageutDATA0O  MorphFiles.writeTarget(targetPath, mainPath)DATA @2 message = "Saved" + targetPathDATAx?  32DATA$< def applyTarget(targetPath, value):DATAx}  global Morph, messageDATA$8=  Morph.doMorph(targetPath,value)REEDATA@?  32DATA8def makeSymm():DATA global messageDATA0}  MHsymmetry.MHsym()DATA2 message ="Symmetry done"DATA?  DATA| def saveVGroup():EEDATA2 global mainPath, messageDATA(=  MorphFiles.save_vertexgroups(mainPath)DATA(=  message ="VGroup Saved in " + mainPathDATA? DATA| def loadVGroup():EEDATA03 global mainPath, messageDATA(@>  MorphFiles.load_vertexgroups(mainPath)DATA$>  message ="Auto Vertex Group OK"evtDATA?  DATAdef autoUV():DATA3 global mainPath, messageDATA 3 MorphFiles.applyUV(mainPath)DATAX|  message ="Auto UV OK"DATA? DATA| def saveUVcoo():REEDATA 4 global mainPath, messageDATA p4 MorphFiles.saveUV(mainPath) DATA$>  message ="UV saved in " + mainPathDATAH?  DATA{ def buildBase():REEDATA4 global mainPath, messageDATA Z  MorphFiles.buildMesh(mainPath)DATA, O  message = "build mesh in cursor position",DATA? DATA{ def saveBaseFaces():DATApZ  global mainPath, messageDATA Z  MorphFiles.saveFaces(mainPath)DATA(H?  message = "Saved faces in "+ mainPathDATA? DATA8{ def saveBaseVerts():DATA[  global mainPath, messageDATA(?  MorphFiles.writeOriginalMesh(mainPath)DATA(?  message = "Saved mesh in "+ mainPathDATA?  32DATA `[ def saveSettings(settingPath):DATA,O  global buttonList, targetsPaths, messageDATA x vList = []DATA [  for eachButton in buttonList:gDATA \  vList.append(eachButton.val)DATA@h MorphFiles.saveTargetsValue(settingPath, targetsPaths, vList)0DATA4rO  message = "Saved Body setting in "+ settingPathEEDATA(?  32DATA P\ def loadSettings(settingPath):iDATA,O  global buttonList, targetsPaths, messageDATA8sO  settingData = MorphFiles.loadTargetsValue(settingPath)DATA\  for line in settingData:PDATA \  tpath = line.split(",")[0]DATA$P@  tval = float(line.split(",")[1])DATA(@  for i in range(len(targetsPaths))::DATA0@O  if targetsPaths[i] == tpath and tval != 0:DATA @]  buttonList[i].val = tvalh aDATA4psO  applyTarget(mainPath + targetsPaths[i],tval)DATA4sO  message = "Load Body setting from "+ settingPathEDATA`?  32DATAdef resetAll():DATA,O  global buttonList, targetsPaths, messageDATA$A  for i in range(len(buttonList)):EDATA ]  if buttonList[i].val != 0:enDATA]  buttonList[i].val = 0.00DATA0O  applyTarget(mainPath + targetsPaths[i],0.00)DATAz  message = "Reset Done"DATA?  32DATA,`O ############DRAW FUNCTION#################DATA?  32DATA def draw():DATAx global pathOKDATA$XA  glClearColor(0.0, 0.0, 0.0, 0.0)##DATA 0^  glClear(GL_COLOR_BUFFER_BIT)##DATAz  if pathOK == 1:REEDATAH7  global buttonTooltips,positionOfButtons,WinSize,message,buttonListgeDATA< global buttonWidth, buttonHeight, idxOfGroup,nameOfGroupsDATAD(8  global MenuButton,MenuButton1,MenuButton2,MenuButton3,MenuButton4DATA ^  global paintMode, riggingModeDATA?  ##DATA ^  #Generation of menu stringslsDATA _  menuOfGroups = "Anatomy %t"DATAp_  for name in nameOfGroups:DATAH8  menuOfGroups += "| " + name + " %x" + str(nameOfGroups.index(name))DATA`z  if paintMode == 0:DATA(A  paintCommand = "Paint mode "+ "ON"DATA@?  else:DATA(B  paintCommand = "Paint mode "+ "OFF"DATAz  if riggingMode == 0:DATA$`B  riggCommand = "Rigg mode "+ "ON"DATAx?  else:DATA(B  riggCommand = "Rigg mode "+ "OFF"DATA`  commands1 = "Edit %t|Symm%x0|Build%x1|"+paintCommand+"%x2|"+riggCommand+"%x3|Reset All%x4"DATA,O  commands2 = "Auto %t| UV%x0| VGroups%x1"DATATK. commands3 = "Advanc %t|Save Groups%x0|Save UV%x1|Save faces%x2|Save vertex%x3"##DATA\  commands4 = "File %t|Save Target%x0|Save Body Setting%x1|Load Body Setting%x2|Exit%x3"DATA? 50,DATA, O  #Buttons background and buttons title#DATA_  glColor3f(0.5,0.5,0.5)DATA,O  glRectf(0,WinSize[3],1000,WinSize[3]-45)DATAy  glColor3f(1,1,1)EDATA(C  glRasterPos2i(10,int(WinSize[3]-15))DATAZ  Text("File")DATA(hC  glRasterPos2i(90,int(WinSize[3]-15))DATAy  Text("Anatomy")EEDATA(C  glRasterPos2i(170,int(WinSize[3]-15))DATA`Z  Text("Edit")DATA(D  glRasterPos2i(250,int(WinSize[3]-15))DATA Z  Text("Auto")DATA(pD  glRasterPos2i(330,int(WinSize[3]-15))DATA@y  Text("Advanced")EDATA?  DATA Z  #ButtonsDATAXL. MenuButton = Menu(menuOfGroups, 1000, 90, int(WinSize[3]-40), 80, 18, MenuButton.val)DATAXU. MenuButton1 = Menu(commands1, 1001, 170, int(WinSize[3]-40), 80, 18, MenuButton1.val)DATAXV. MenuButton2 = Menu(commands2, 1002, 250, int(WinSize[3]-40), 80, 18, MenuButton2.val)DATAXV. MenuButton3 = Menu(commands3, 1003, 330, int(WinSize[3]-40), 80, 18, MenuButton3.val)DATAX W. MenuButton4 = Menu(commands4, 1004, 10, int(WinSize[3]-40), 80, 18, MenuButton4.val)DATA ?  i = 0DATA(D  groupToSee = nameOfGroups[idxOfGroup]DATA`  sliderTtip = "no tooltip"DATA ``  for eachPath in targetsPaths:DATA `  if sys.platform == "win32":kDATA$ E  pathData = eachPath.split("\\")DATA ^  else:DATA(xE  pathData = os.path.split(eachPath)DATAX?  32DATA a  buttonGroup = pathData[0]1lDATAPa  targetInfo = pathData[1]DATA$E  if buttonGroup == groupToSee:DATA0O  buttonIdx = targetsPaths.index(eachPath)DATA,@O  buttonLabel = buttonNames[buttonIdx]DATA,O  buttonTtip = buttonTooltips[buttonIdx]DATA / buttonList[buttonIdx] = Number(buttonLabel, buttonIdx+1, positionOfButtons[i][0], positionOfButtons[i][1], buttonWidth, buttonHeight, buttonList[buttonIdx].val,-2.00,2.00,buttonTtip)DATA `_  i += 1DATA?  1DATA?  else:DATA  glColor3f(1,1,1)EDATAa  glRasterPos2i(100,150)1%DATA0O  Text("base.mesh not found, please load it")DATA8@tO  Button("Load base.mesh", 10000, 100, 100, 150, 20)DATA?  !DATA a  #Copyright and message lines 2DATAx  glColor3f(1,1,1)EEDATA0  glRasterPos2i(10,25)DATA_  Text(message)DATA  glRasterPos2i(10,10)DATA@H Text("MAKEHUMAN 1.8 (c) Manuel Bastioni, 2002-2004","tiny")lenDATA8?  32DATA0`O ############ EVENT FUNCTIONS#################DATAp?  32DATA def bevent(evt):REEDATAP global paintMode, riggingMode, idxOfGroup, targetsPaths, mainPath, buttonListDATA \  if (evt):DATAX  if evt < 1000:REEDATA @b  if sys.platform == "win32":DATA8tO  targetPathFull = mainPath + targetsPaths[evt-1]DATA ^  else:DATAD9  targetPathFull = os.path.join(mainPath,targetsPaths[evt-1])REEDATA,O  if MorphFiles.fileExist(targetPathFull):DATA `\  try:DATA8uO  applyTarget(targetPathFull,buttonList[evt-1].val)DATA `[  except:DATA _  passDATA [  else:DATA< PupMenu("Warning%t|Target not found, check console" )DATA4xuO  print "The file ", targetPathFull, "not exist"EDATA  if (evt == 1000):DATA b  idxOfGroup = MenuButton.valDATA `^  Draw()DATAȍ  if (evt == 1001):DATA((F  if MenuButton1.val == 0: makeSymm()DATA(F  if MenuButton1.val == 1: buildBase()DATA b  if MenuButton1.val == 2: elDATA  if paintMode == 0:DATA0 O  applyTarget(mainPath+"paint.target",1.00)EDATA8  paintMode = 1EDATA [  else:DATA0O  applyTarget(mainPath+"paint.target",0.00)EDATAx  paintMode = 0EDATA0c  if MenuButton1.val == 3:DATAc  if riggingMode == 0:DATA0O  applyTarget(mainPath+"rigg.target",1.00)EEDATAx  riggingMode = 1DATA ]  else:DATA0@O  applyTarget(mainPath+"rigg.target",0.00)EEDATAhx  riggingMode = 0DATA(F  if MenuButton1.val == 4:resetAll()oDATA x  if (evt == 1002):DATA(0G  if MenuButton2.val == 0: autoUV()DATA,O  if MenuButton2.val == 1: loadVGroup()DATAw  if (evt == 1003):DATA,O  if MenuButton3.val == 0: saveVGroup()DATA(G  if MenuButton3.val == 1: saveUVcoo()DATA,X if MenuButton3.val == 2: saveBaseFaces()DATA, if MenuButton3.val == 3: saveBaseVerts()DATAw  if (evt == 1004):DATAc  if MenuButton4.val == 0:DATA4uO  Window.FileSelector(saveTarget, "Save Target")EDATA d  if MenuButton4.val == 1: ndoDATA<X Window.FileSelector(saveSettings, "Save Body setting")eDATApd  if MenuButton4.val == 2:DATA< Window.FileSelector(loadSettings, "Load Body setting")DATA$G  if MenuButton4.val == 3: Exit()EDATAHw  if (evt == 10000):DATA<8 Window.FileSelector(startSequence, "Select BaseMesh");DATAw  Window.RedrawAll()DATA?  DATA0?  DATAv def event(evt, val):DATA0 if (evt== ESCKEY and not val): Exit(); returnEDATAL else: return # this is important: only re-register if an event was caught DATAD@ Register(draw, event, bevent) # re-register to stay in the loopideDATAh?  )DATA d Register(draw, event, bevent)DATA?  32DATA(8H ############START GUI#################ADATA? ###DATA e mainPath = MorphFiles.readIni()DATA,xprint "mainPath from ini file: ",mainPathDATA? try:7DATA `e  if sys.platform == "win32": 0DATA$H  for f in nt.listdir(mainPath):REEDATApv  if f == "base.mesh":DATAe  print "base.mesh found"DATA,س startSequence(mainPath + "base.mesh")DATAH?  else:DATA$H  for f in os.listdir(mainPath):REEDATA(v  if f == "base.mesh":DATAf  print "base.mesh found"DATA8HvO  startSequence(os.path.join(mainPath, "base.mesh"))DATA? except:DATAu  print "no ini file"DATA?  TXh@ TXMHsymmetry.pyu Bu u pDATAHc:\Programmi\Blender Foundation\Blender\.blender\scripts\MHsymmetry.pyDATAu Pu 8*DATAPu u u W.RFREEDATAu t Pu vO 0DATAt xt u ? FREEDATAxt 0t t  \  FREEDATA0t s xt (? [[[DATAs s 0t  ^ DATAs s Pf DATAs f DATAhf DATAh `? DATA h@g DATA `]  vvvDATAHXBDATAH? DATAHg DATAp? DATAp(g DATA(p0h DATA(? DATAP]  DATAP@? DATAP\  2DATAx[  5DATAx0p6 9DATA0xx? 2DATA0@I #DATAX? 9DATAX>DATAX? 6DATAh DATA8h 8DATA806 DATA8k-DATA` DATA`06 DATA` ? DATA,3DATA@h (DATA@X? DATA@ i DATAh? DATAh  DATA h 8DATA @ DATAH? DATAHI !DATAH DATAp DATAp(( DATA(p DATA(` DATAP6 DATAP? xDATAPpi DATAx8? DATAx06 DATA0xi DATA0j DATAX`j xDATAXj DATAX)DATAwO 7DATA8wO 3DATA8k DATA8p? DATAX6 DATAX? DATAX? DATA0E 0 MDATA8? DATA8Pk DATA8P? DATA`k DATA`6 DATA`? DATAk DATA@@l DATA@#&DATAH@? I]?DATAHl u?DATAH? DATAp DATAp(0? DATA(pl DATA(6 DATAPp6 DATAPxh? DATAxPCDATAx? DATAhmDATAXX*DATAX06 DATA0X? DATA0В DATAВ08 DATA@В0m DATA@? DATA@m DATAhm &DATAh ص#DATA ؐh n EDATAؐ H? DATAHؐ@ ZDATAHwO 3DATAH06 HDATAp? DATAp( DATA(p DATA(6 `7~DATAP? 9DATAPPxO 69DATAP? DATAxpn DATAx0n DATA0x(? DATA0o DATAX6 DATAX`? $f>DATAȋX6 m>DATAȋ? v)?DATA8ȋ98'?DATA8`o DATA8? `7~DATA`?  DATA`6 DATAЉ`@? DATAЉ DATA@Љp6 DATA@x? DATA@,DATAhX `7~DATAh  DATA ؇h6 JDATA؇ ? s!DATAH؇ BBDATAH? DATAHp6 DATAp ? DATAp(0 DATA(pX? DATA(o DATAPp =DATAPp6 s}DATAP? {DATAxPp {DATAx0p DATA0Wx%DATAWhW0xO 2`7~DATAhW WWp DATA WVhW? DATAVV W%DATAVHVV6 DATAHVVV@q DATAVUHVq DATAUpUV? oDATApU(UUM`7~DATA(UTpUp6 `7~DATATT(UK`7~DATATPTT06 DATAPTTT DATATSPT06 DATASxST0 DATAxS0SS8? DATA0SRxS8!DATARR0Sp? _DATARXRR6 {UDATAXR]R06 yDATA]]XR06 DATA]P]]6 ȑDATAP]]]x dDATA]\P]? /DATA\x\]p6 PxDATAx\0\\? mDATA0\[x\q QWDATA[[0\ nDATA[X[[ q8?DATAX[d [P DATAd ؎d X[ iDATA؎d  d d 0r DATA d hd ؎d DATAhd d d ( DATAd d hd r DATAd @d d ? ջDATA@d d d p `7~DATAd Аd @d  `7~DATAАd d d P? `7~DATAd Hd Аd 6 `7~DATAHd d d yO 2ջDATAd ؅d Hd r L?DATA؅d  d d ? DATA d hd ؅d s DATAhd d d ps DATAd d hd ? DATAd @d d ? DATA@d d d 0? DATAd Їd @d 6 DATAЇd d d  DATAd `d Їd EDATA`d d d h? DATAd d `d ADATAd 8d d ? ZľDATA8d d d ? ȑDATAd ȉd 8d 6 DATAȉd d ? -DATAȉd 6 DATAp9#DATAp(8DATA(pADATA(H? )0@DATAP6 dZ7DATAP6 ;8DATA@P? 0/6DATA@06 B6DATA@? DATAh? DATAh 06 DATA ؃h(? DATA؃ `? DATAH؃? DATAHЅs DATAЅH'DATAЅ? CDATAW0H (DATAW0xZ0? `7~DATAxZ00Z0W0p6 `7~DATA0Z0Y0xZ06 ]DATAY0Y00Z06 `7~DATAY0XY0Y06 MDATAXY0Y0Y0@? `7~DATAY0X0XY0Pa0DATAX0X0Y0x? ;?DATAX08X0X0t :]n?DATA8X0V0X0ML?DATAV0W08X0? @DATAW0`W0V06  @DATA`W0BW0&֐&@DATAB`W0 DATA,8# Adapted from symetry.py by vnd@seznam.czDATATW.# This is stripped down to help with target creation...NO UV or coloring done hereDATA4vO # Use the original for a more robust symetry applenDATA? #yDATA \ # Craig SmithsDATA(? pyDATA ^ import BlenderDATAPf from Blender import NMeshanDATAf from Blender.Draw import *rDATAf from Blender.BGL import *urDATA`? pyDATA @g adjustVertexCoords = Create(1)xDATA`] delta = 0.001DATAXBdelta2 = delta * deltaDATA? pyDATA g def MHdist2sym (verts, v1, v2):DATA?  DATAg  x1, y1, z1 = verts[v1].conDATA0h  x2, y2, z2 = verts[v2].conDATA? DATA ]  x2 = -x2DATA@? DATA\  dx = x1 - x2DATA[  dy = y1 - y2DATAp6  dz = z1 - z2DATAx? DATA$@I  return dx * dx + dy * dy + dz * dzDATA? DATA@def MHmakeSymetry (verts, faces, left, right, centr, corresp):gDATA? DATAh  moved = [0] * len(verts)inDATA h  for i in range(0, len(right)):DATA06  vi = right[i]DATAk- cvi = corresp[vi]DATA  if (cvi == -1):DATA 06  continueDATA ? DATA0 if (MHdist2sym(verts, vi, cvi) >= delta2):DATAh  moved[vi] = 1DATAX?  DATA i  x, y, z = verts[cvi].cokuDATA?  DATA  verts[vi].co[0] = -xDATA  verts[vi].co[1] = yDATA@  verts[vi].co[2] = zDATA?  DATA$I  for i in range(0, len(corresp)):liDATA  if (i == corresp[i]):DATA  x = verts[i].co[0]DATA$( if (x < -delta or x > delta):.pyDATA  moved[i] = 2DATA`  verts[i].co[0] = 0DATA6  return movedDATA? DATA pi def MHcreateEdgeDict(faces):t.bDATA8? DATA 6  edges = {}DATA i  for i in range(0, len(faces)):DATAj  numf = len(faces[i].v)latDATA`j  for vi in range(0, numf):DATA j  v1 = faces[i].v[vi].indexDATA, v2 = faces[i].v[(vi + 1) % numf].indexDATA8wO  if ((v1,v2) in edges and edges[(v1,v2)] != (i, vi)):DATA4wO  print "edge in 2 faces, this should not happen"DATAk  edges[(v1,v2)] = (i, vi)DATAp? DATA6  return edgesDATA?  DATA? DATAH0def MHcheckCorrespFace(faces, corresp, correspfaces, f1, f2, offset):V?DATA?  DATAPk  numf = len(faces[f1].v)>DATAP? DATA k  if (numf != len(faces[f2].v)):DATA 6  return 0DATA? DATAk  for vi in range(0, numf): DATA @l  v1 = faces[f1].v[vi].indexDATA$ vi2 = (numf - vi + offset) % numfDATA? DATA l  v2 = faces[f2].v[vi2].indexDATA?  DATA  c1 = corresp[v1]DATA0? DATA l  if (c1 != -1 and c1 != v2):DATA 6  return 0DATA p6  return 1DATAh?  DATADdef MHsetCorrespFace(faces, corresp, correspfaces, f1, f2, offset):DATA? DATAph if (correspfaces[f1] != -1 and correspfaces[f1] != f2 or correspfaces[f2] != -1 and correspfaces[f2] != f1):DATA,X print "corresp face already set", f1, f2DATA 06  return 0DATA? DATA  correspfaces[f1] = f2;DATA8  correspfaces[f2] = f1;DATA0m  numf = len(faces[f1].v)xDATA? DATAm  for vi in range(0, numf): DATA m  v1 = faces[f1].v[vi].indexhDATA$ص vi2 = (numf - vi + offset) % numfDATA n  v2 = faces[f2].v[vi2].indexDATAH?  DATA\@  if (corresp[v1] != -1 and corresp[v1] != v2 or corresp[v2] != -1 and corresp[v2] != v1):DATA4wO  print "corresp face already set", f1, f2, v1, v2DATA 06  return 0DATA?  DATA  corresp[v1] = v2DATA  corresp[v2] = v1DATA 6  return 1DATA? DATA8PxO def MHfindCorresp(verts, left, right, ylist, corresp):DATA? DATA pn  for i in range(0, len(ylist)):DATAn  y0, vi0, side0 = ylist[i]DATA(?  DATAo  if (corresp[vi0] != -1):DATA 6  continueDATA`?  DATA6  i2 = i + 1_?DATA?  DATA< while (i2 < len(ylist) and ylist[i2][0] - y0 <= delta):>DATA`o  y, vi, side = ylist[i2]DATA?  DATA?  DATA6  i2 = i2 + 1DATA@?  DATA  if (side == side0):DATAp6  continueDATAx?  DATA0 if (MHdist2sym(verts, vi0, vi) < delta2):DATAX  corresp[vi0] = viDATA  corresp[vi] = vi0DATA 6  breakDATA?  DATAD def MHfindCorrespFaces(faces, left, right, corresp, correspfaces):DATA? DATAp6  notchanged = 1DATA ?  DATA$0 edges = MHcreateEdgeDict(faces)DATAX?  DATA o  for i in range(0, len(faces)):DATA p  if (correspfaces[i] != -1):<=DATA p6  continueDATA?  DATAPp  numf = len(faces[i].v)DATAp  for vi in range(0, numf):DATA( c1 = corresp[faces[i].v[vi].index]DATA4xO  c2 = corresp[faces[i].v[(vi + 1) % numf].index]DATA p  if (c1 != -1 and c2 != -1):DATA?  DATA( if ((c2,c1) not in edges):DATA6  continueDATA @q  cf, offset = edges[(c2,c1)]DATA q  offset = offset - vi + 1DATA?  DATAP if (not MHcheckCorrespFace(faces, corresp, correspfaces, i, cf, offset)):s\DATAp6  continueDATAL if (not MHsetCorrespFace(faces, corresp, correspfaces, i, cf, offset)):DATA06  continueDATA  notchanged = 0DATA 06  break~DATA0  return notchangedDATA8? DATA$8def MHfindSymetry (verts, faces):DATAp? DATA 6  left = []DATA 06  right = []DATA 06  centr = []DATA6  corresp = []?DATAx  correspfaces = []DATA?  DATA p6  ylist = []DATA?  DATA q  for i in range(0, len(verts)):DATA  corresp.append(-1)q=DATA  x, y, z = verts[i].coDATAP  if (x <= -delta):DATA  left.append(i)DATA0r  ylist.append([y,i,'l'])DATA  elif (x >= delta):DATA(  right.append(i)DATAr  ylist.append([y,i,'r'])DATA?  else:DATAp  centr.append(i)DATA  corresp[i] = iDATAP? DATA6  ylist.sort()DATA4 yO  MHfindCorresp(verts, left, right, ylist, corresp)?DATAr  correspVerts = corresp[:]?DATA? DATA s  for i in range(0, len(faces)):DATAps  correspfaces.append(-1)~DATA? DATA? DATA0? DATA 6  res = 0DATA  while (res == 0):DATAH res = MHfindCorrespFaces(faces, left, right, corresp, correspfaces)DATAh? DATAD return (left, right, centr, corresp, correspVerts, correspfaces)_DATA?  DATA? DATA6 def MHsym():ΧDATA?  """DATA6  DESCRIPTION:>DATA< Attempts to make the both sides of the mesh symmetrical.DATA< This code has been adapted from the original symetry.pyDATAD from vnd@seznam.cz. The homepage is http://sweb.cz/vnd/symetry/@DATAH?  DATA 6  SYNOPSIS:DATA 6  MHsym()1DATA?  DATA06  PARAMETERS:DATA?  NoneDATA? DATA06  RETURN VALUES:DATA(?  NoneDATA`?  """DATA? DATAs  global adjustVertexCoordsDATA( Objects = Blender.Object.GetSelected()DATA?  DATAH  mesh = Objects[0].dataDATA? DATA p6  left = []DATA 6  right = []DATA 6  centr = []DATA6  corresp = []DATA@? DATAdP left, right, centr, corresp, correspVerts, correspFaces = MHfindSymetry (mesh.verts, mesh.faces)?DATAx? DATA t  if (adjustVertexCoords.val):H>DATAP moved = MHmakeSymetry (mesh.verts, mesh.faces, left, right, centr, corresp)DATA? DATA6  mesh.update()DATA( Objects[0].makeDisplayList() # addedDATA  Blender.Redraw()TXh @TXMorphFiles.py _YY(DATAHc:\Programmi\Blender Foundation\Blender\.blender\scripts\MorphFiles.pyDATA   06 FREEDATA  h  p6 FREEDATAh    `t FREEDATA  h t FREEDATA @  p6 FREEDATA@   ? FREEDATA  @ 6 FREEDATA    ? 2tl;DATA `  `2tl;DATA`   yO 2xL;DATA  ` X? 2tl;DATA 8  @ 2tl;DATA8   ? a?DATA  8 6 DATA   'DATA X  )b?DATAX   x)DATA  X ? ό?DATA 0  06 DATA0 x  u DATAx  0 ? @DATA  x 6 DATA P  h>DATAP   :DATA  P 8? ---DATA (  p? DATA( p  6 ---DATAp  ( #---DATA  p ? DATA H  ? ---DATAH   ? DATA  H yO 2---DATA   p6 3DATA h  P? 6DATAh   H%DATA  h ? 8DATA @  ض)DATA@   # 34 DATA  @ XzO 0DATA   X`DATA `  Pu DATA`   u DATA  ` 8)DATA 8  u  DATA8   06 DATA  8 'DATA   ? DATA X  zO 0DATAX   ? DATA  X P'DATA 0  06 _DATA0 x  'en(fDATAx  0 p6 (f.uDATA  x `TIONDATA P  0? REDATAP   H8 # DATA  P @v roblDATA (  v  = fDATA( p  `asUVDATAp  ( #uvVeDATA  p ({O 0end(DATA H  v  lisDATAH   0w a[0]DATA  H w lf.oDATA    p6 sh.vDATA  h  h? ame,DATAh    X"placDATA  h w DATA @  ? DATA@    DATA  @ 6 uDATA   ?  uDATA `  h? +DATA`    x  uDATA  ` 0a3 10DATA 8  px 3 15DATA8   ?  0 MDATA  8 ) 0 MDATA   /--- DATA X  6  DATAX   # DATA  X 6 n22DATA 0  X+cameDATA0 x  ( uDATAx  0 xasssDATA  x )DATA P  xFsssDATAP   ` DATA  P p6 H!DATA (  mDATA( p  a`7~DATAp  ( {O 2`7~DATA  p ? DATA H  bDATAH   x DATA  H 6 DATA    H? DATA  h  y DATAh    ? DATA  h 06 DATA @  {O 5DATA@   `|O 5AQDATA  @ ? DATA   p6 DATA `  `y DATA`   ? !DATA  `  `7~DATA 8!  &p!DATA8! !  (? `v?DATA! ! 8! Pb?DATA! " ! &Y@DATA" X" ! `? DATAX" " " ? DATA" " X" ? DATA" 0# " bDATA0# x# " ? DATAx# # 0# h"DATA# $ x# y DATA$ P$ # HDATAP$ $ $  z DATA$ $ P$ HDATA$ (% $ 0? DATA(% p% $ %DATAp% % (% x.FREEDATA% & p% h? FREEDATA& H& % ع/FREEDATAH& & & FREEDATA& & H& !DATA&  ' & 8+DATA ' h' & (DATAh' '  ' ? j 5DATA' ' h' <UeDATA' @( ' p `7~DATA@( ( ' Ⱦ T@DATA( ( @( bDATA( ) ( |O 0DATA) `) ( pz DATA`) ) )  >DATA) ) `) )7>DATA) 8* ) (c 0=DATA8* * ) r=DATA* * 8* pG|DATA* + * H CY=DATA+ X+ * pc%R>DATAX+ + + +(j>DATA+ + X+ DATA+ 0, + 8DATA0, x, +  DATAx, , 0, cDATA, - x, DATA- P- ,  DATAP- - - z DATA- - P-  $DATA- (. - 0}O 2DATA(. p. -  DATAp. . (. HDATA. / p. ȸDATA/ H/ . DATAH/ / / XDATA/ / H/  0?DATA/  0 / x"mpDATA 0 h0 / { DATAh0 0  0 impoDATA0 0 h0 `{ a2 =DATA0 @1 0 H2 DATA@1 1 0 e(0,DATA1 1 @1 п$ cDATA1 2 1 {  foDATA2 `2 1 d movDATA`2 2 2 HdacesDATA2 2 `2 (#, thDATA2 83 2 | s[f1DATA83 3 2 P| [f2]DATA3 3 83 d): DATA3 4 3 #set"DATA4 X4 3 | 2 = DATAX4 4 4 | rintDATA4 4 X4 @} respDATA4 05 4 H ist[DATA05 x5 4 , viDATAx5 5 05 xeak DATA5 6 x5 d nDATA6 P6 5 @(facDATAP6 6 6  indeDATA6 6 P6 ' DATA6 (7 6 0& ifDATA(7 p7 6 #s, fDATAp7 7 (7 & verDATA7 8 p7 8$r.apDATA8 H8 7 rresDATAH8 8 8  spFaDATA8 8 H8  eRIPTDATA8  9 8 ж ThDATA 9 h9 8  ARAMDATAh9 9  9 } t = DATA9  N h9 } exCoDATA N hN 9 H raw(DATAhN N  N  ---DATAN N hN X++?DATAN @O N  ---DATA@O O N ---DATAO O @O 'DATAO P O 0~ DATAP `P O ~ 7@DATA`P P P he DATAP P `P e DATAP 8Q P ~  DATA8Q Q P e---DATAQ Q 8Q   ---DATAQ R Q &DATAR XR Q `1DATAXR R R p DATAR R XR   0@DATAR 0S R  297 DATA0S xS R @f---DATAxS S 0S @$---DATAS T xS !DATAT PT S ` eb-0DATAPT T T  DATAT T PT  DATAT (U T #DATA(U pU T P DATApU U (U BA@DATAU V pU H BA@DATAV HV U  169 DATAHV V V f---DATAV V HV $---DATAV  W V fDATA W hW V  DATAhW W  W gan-0DATAW W hW .an-0DATAW @X W m7 &DATA@X X W m7 $DATAX X @X @ DATAX Y X HA@DATAY `Y X Pn7 &A@DATA`Y Y Y  203 DATAY Y `Y (9---DATAY 8Z Y )DATA8Z Z Y ADATAZ Z 8Z x.166 DATAZ [ Z  DATA[ X[ Z (eb-0DATAX[ [ [ argeDATA[ [ X[ `ggetsDATA[ 0\ [ p = DATA0\ x\ [   = 0:DATAx\ \ 0\ 0 dVGrDATA\ ] x\  MenDATA] P] \ H ton4DATAP] ] ] (staDATA] ] P] H thiDATA] (^ ]  aw, DATA(^ p^ ] n7 $ilesDATAp^ ^ (^  f iDATA^ _ p^ DATA_ H_ ^ DATAH_ _ _ شDATA_ _ H_ FREEDATA_  ` _ o7 #DATA ` h` _ gDATAh` `  ` FREEDATA` ` h`  DATA` @a ` DATA@a a ` Xo7 "DATAa a @a hDATAa b a 0DATAb `b a DATA`b b b DATAb b `b  DATAb 8c b Ѓ DATA8c c b DATAc c 8c H  DATAc d c  DATAd Xd c DATAXd d d  DATAd d Xd  DATAd 0e d DATA0e xe d DATAxe e 0e  DATAe f xe PDATAf Pf e DATAPf f f p DATAf f Pf  DATAf (g f FREEDATA(g pg f gDATApg g (g lDATAg h pg o7 &DATAh Hh g DATAHh h h DATAh h Hh pDATAh  i h 8DATA i hi h }O 0DATAhi i  i DATAi i hi k DATAi @j i  DATA@j j i ȱDATAj j @j Hr DATAj k j ~O 1DATAk `k j DATA`k k k o DATAk k `k h~O 0DATAk 8l k hCDATA8l l k nDATAl l 8l HnDATAl m l XDATAm Xm l  DATAXm m m DATAm m Xm ` DATAm 0n m DATA0n xn m xDATAxn n 0n ؼ.DATAn o xn 8.DATAo Po n  DATAPo o o gDATAo o Po ~O 0DATAo (p o @DATA(p pp o  DATApp p (p P DATAp q pp DATAq Hq p p7 %DATAHq q q  DATAq q Hq mDATAq  r q  DATA r hr q nDATAhr r  r ЯDATAr r hr `p7 &DATAr @s r p7 'DATA@s s r :DATAs s @s xT.SDATAs t s DATAt `t s dDATA`t t t @ DATAt t `t  DATAt 8u t  DATA8u u t 8O 4DATAu u 8u O 6DATAu v u q DATAv Xv u 8zDATAXv v v ADATAv v Xv pzDATAv 0w v zDATA0w xw v l DATAxw w 0w :DATAw x xw zDATAx Px w Hm DATAPx x x x>DATAx x Px {DATAx (y x Hq DATA(y py x q7 'DATApy y (y XCDATAy z py U.WDATAz Hz y qDATAHz z z rDATAz z Hz P{DATAz  { z {DATA { h{ z {DATAh{ {  { 0 DATA{ { h{ {DATA{ @| { 0|DATA@| | { .DATA| | @| cDATA| } |  DATA} `} | HP,DATA`} } } hq7 "nnnDATA} } `} sssDATA} 8~ } O 0sssDATA8~ ~ } /sssDATA~ ~ 8~ pO 3sssDATA~  ~ h|sssDATA X ~ Ј sssDATAX    FREEDATA  X |DATA 0  q7 %DATA0 x  p DATAx  0 mDATA  x  DATA P  qDATAP   |DATA  P 8hDATA (  r7 'DATA( p  0ZDATAp  ( }DATA  p  DATA H  HoDATAH   /DATA ؃ H kDATA؃   H}DATA h ؃ ` DATAh   Hh DATA  h .VDATA @  pr7 #DATA@   0.TDATA Ѕ @ 9-DATAЅ   ؀O 3DATA ` Ѕ hDATA`   ;DATA  ` hDATA 8   DATA8   iDATA ȇ 8  DATAȇ   P DATA X ȇ  DATAX   mDATA  X DATA 0  Hk DATA0 x  X=DATAx  0 p DATA  x  DATA P  o DATAP   }DATA  P XiDATA (  }DATA( p  Hp DATAp  ( r7 'DATA  p }DATA H  j DATAH   l DATA ، H (~DATA،   k DATA h ،  s7 &FFFDATAh   oDATA 7h pDATA7 8 `~DATA 8h87~DATAh88 8@ DATA88h8iDATA8@98~DATA@998xs7 "DATA99@9 DATA9:9HlDATA:`:9 DATA`:::pDATA::`:DATA:8;:0 DATA8;;:nDATA;;8; DATA;<;3DATA<X<;@DATAX<<<Ѝ DATA<<X<iv)DATA<0=<5FREEDATA0=x=<s7 FREEDATAx==0=2 PPPDATA=>x= PPPDATA>P>=@O 6PPPDATAP>>>;DATA>>P>0jDATA>(?>/ DATA(?p?>xDATAp??(?xjDATA?@p?DATA@H@?P1 DATAH@@@X+DATA@@H@DATA@ A@2 DATA AhA@4 DATAhAA A DATAAAhAP/ DATAA@BA(t7 &DATA@BBA3DATABB@B0DATABCBXDATAC`CBDATA`CCCjDATACC`CkDATAC8DCȀDATA8DDCt7 "DATADD8Dp DATADEDP9DATAEXEDt7 "DATAXEEE1DATAEEXEPkDATAE0FEDATA0FxFEkDATAxFF0F9DATAFGxF0u7 $DATAGPGF4DATAPGGG8DATAGGPG DATAG(HG DATA(HpHG` DATApHH(HkDATAHIpHP8 DATAIHIHpDATAHIIIP0 DATAIIHIDATAI JI DATA JhJIu7 #DATAhJJ J DATAJJhJP DATAJ@KJ1 DATA@KKJ(lDATAKK@K9 DATAKLKplDATAL`LK4 DATA`LLL,DATALL`L/ DATAL8ML DATA8MMLl(1)DATAMM8MFREEDATAMNM FREEDATANXNMhFREEDATAXNNN FREEDATANNXNu7 FREEDATAN0ONmFREEDATA0OxON0FREEDATAxOO0OFREEDATAOPxOHmFREEDATAPPPO(REEDATAPPPP( FREEDATAPPPPFREEDATAP(QPh FREEDATA(QpQPFREEDATApQQ(QFREEDATAQRpQO 7):EDATARHRQPFREEDATAHRRRȬe FREEDATARRHR8v7 'FREEDATAR SRFREEDATA ShSRe FREEDATAhSS SO 3FREEDATASShSFREEDATAS@TSHe FREEDATA@TTSv7 $FREEDATATT@T-FREEDATATUTxO 1FREEDATAU`UTe FREEDATA`UUUȭe FREEDATAUU`UFREEDATAU8VUpFREEDATA8VVU8FREEDATAVV8V@ FREEDATAVWVv7 !FREEDATAWXWVO 7FREEDATAXWWWe FREEDATAWWXWx(FREEDATAW0XWHe FREEDATA0XxXW@w7 'FREEDATAxXX0XFREEDATAXYxXȇFREEDATAYPYX FREEDATAPYYYFREEDATAYYPYe FREEDATAY(ZYw7 #FREEDATA(ZpZYXFREEDATApZZ(ZȮe FREEDATAZ[pZ FREEDATA[H[Z FREEDATAH[[[e FREEDATA[[H[He FREEDATA[ \[e FREEDATA \h\[ȯe FREEDATAh\\ \e FREEDATA\\h\FREEDATA\@]\FREEDATA@]]\mFREEDATA]]@]w7 !FREEDATA]^]mth+"DATA^`^] nFREEDATA`^^^Hx7 #FREEDATA^^`^x7 "FREEDATA^8_^He FREEDATA8__^hnFREEDATA__8_e FREEDATA__x7 &DATA06 import BlenderDATA p6 import sysDATA`t from Blender import NMeshanDATAt if sys.platform == "win32":DATA p6  import ntDATA? else:DATA 6  import osDATA ? pyDATA`def normcube(vector):DATA4yO  return vector[0]**2 + vector[1]**2 + vector[2]**2EDATAX? pyDATA$@def writeTarget(filename, path):bleDATA?  """eDATA6  DESCRIPTION?DATA( Create target file from "Base" obj in DATA, the scene, where only different verticesplDATA,x between the original Basemesh are storedDATA?  DATA 06  SYNOPSIS/@DATA u  writeTarget(filename, path)eDATA?  DATA 6  PARAMATERSDATA@h filename : Full path of file to put vertex coordinates inDATA< path : the path where search the vertex list of BasemeshDATA8?  DATAp?  DATA6  RETURN VALUES:DATA$ Return 1 if success, 0 otherwise. DATA?  """ DATA? DATA? DATA4yO  #Open the file to retrieve the comments, if existDATAp6  comments = []DATAP?  try:DATA(H fileDescriptor = open(filename,'r')lDATA?  try:DATA,ض lineToRead = fileDescriptor.readline()DATA$ except IOError, (errno,strerror):DATA4XzO  print "I/O error(%s): %s" % (errno, strerror)DATAX` while lineToRead:DATAPu  if "#" in lineToRead:sinDATA u  comments.append(lineToRead)DATA,8 lineToRead = fileDescriptor.readline()DATAu  fileDescriptor.close()ckuDATA 06  except:@DATA( print "Error in opening %s" %filenameDATA? DATA4zO  #Reopen the file to read the points coordinatesDATA?  try:DATA(P fileDescriptor = open(filename,'w+') DATA 06  except: pDATA( print "Error in opening %s" %filenameDATA p6  return 0rDATA` sourceVertexList = []PDATA0? DATA<H #Open the base file to read the points init coordinates" DATA @v  file = open(path+"base.mesh")bDATA v  vertexData = file.readline().bDATA` while vertexData:tDATA$ vertexCoo = vertexData.split(',')DATA4({O  sourceVertexList.append([float(vertexCoo[0]),\e(1DATA v  float(vertexCoo[1]),\171DATA 0w  float(vertexCoo[2])]) flDATA w  vertexData = file.readline()+DATAp6  file.close()2]DATAh?  DATA$X #Write the comments, if retriviedcDATAw  for comment in comments:edDATA?  try:DATA$ fileDescriptor.write(comment) uDATA 6  except:DATA?  passDATAh? DATA x  #Write the points of target 0DATA0a epsilon = 0.001 12DATApx  targetVertexList = None DATA?  try:DATA, targetData = Blender.Object.Get("Base")DATA0 targetVertexList = targetData.getData().vertsDATA 6  except: 14DATA$ print "No target object in scene"DATA 6  return0 RDATA,X for index in range(len(sourceVertexList)):DATA, sourceVertex = sourceVertexList[index]ssDATAxa if targetVertexList:DATA, targetVertex = targetVertexList[index]sDATAHx if abs(normcube(sourceVertex)-normcube(targetVertex.co)) > epsilon:DATA$` # write to the target file #7~DATA p6  try:DATAp fileDescriptor.write("%d,%f,%f,%f\n" % (index,targetVertex.co[0],targetVertex.co[1],targetVertex.co[2]))DATAa except IOError:DATA4{O  print "Error in writing data in %s" %filenameDATA?  DATAb # for file flushing #DATAx  fileDescriptor.close() DATA 6  return 1DATAH? DATA y def writeOriginalMesh(path):DATA?  """DATA06  DESCRIPTION6DATA8{O  Create the base.mesh, an indexed list of all vertexDATA8`|O  of baseMesh, in their original no modified position-DATA?  DATA p6  SYNOPSISDATA`y  writeOriginalMesh(path)DATA?  DATA PARAMATERSDATA( path : the path where save the fileDATA(?  DATAPb RETURN VALUES:?DATA( Return 1 if success, 0 otherwise. DATA`?  """ DATA?  DATA? DATAb # Get Raw mesh data #DATA?  try:DATA$h obj = Blender.Object.Get("Base")DATAy  obj_mesh = obj.getData()DATA H except:DATA z  print "Base obj not in scene"DATA H returnDATA0? DATA( sourceMeshVertexData = obj.getData()DATA0x sourceVertexList = sourceMeshVertexData.vertsDATAh?  try:DATA0ع fileDescriptor = open(path+"base.faces", "w")DATA  except:DATA$ print "error to save mesh file"EEDATA,8 for index in range(len(sourceVertexList)):DATA, sourceVertex = sourceVertexList[index]FZ@DATA?  try:DATA@ fileDescriptor.write("%f,%f,%f\n" % (sourceVertex.co[0],\DATA$p sourceVertex.co[1],\T@DATA$Ⱦ sourceVertex.co[2]))DATAb except IOError:DATA4|O  print "Error in writing data in %s" %filenameDATApz  fileDescriptor.close() DATA  return 1~DATADATA(cdef saveFaces(path):wDATADATAp """DATAH DESCRIPTIONDATApc Save an ascii file:?DATA, each line is a the index of the vertex in DATA  a face.DATA8DATA  SYNOPSISDATAc saveFaces(path)DATADATA  PARAMATERSDATAz  filename: the name of fileDATA(  path: the path where save the files DATA40}O  SourceObject: the object in Blender scene to saveDATA =DATAH RETURN VALUES:DATAȸ NoneDATA """DATAX DATA  try:DATA$x obj = Blender.Object.Get("Base")zDATA{  obj_mesh = obj.getData() DATA  except: * DATA `{  print "Base obj not in scene"DATA H return faDATA DATA(п file = open(path+"base.faces", "w")a.DATA{  for f in obj_mesh.faces: DATAd nfaces = len(f)acDATAHd if nfaces == 3:2)DATA$( file.write(str(f.v[0].index)+",\DATA |  "+str(f.v[1].index)+",\1 =DATA P|  "+str(f.v[2].index)+"\n")uDATAd if nfaces == 4:[fDATA$ file.write(str(f.v[0].index)+",\DATA|  "+str(f.v[1].index)+",\DATA|  "+str(f.v[2].index)+",\DATA @}  "+str(f.v[3].index)+"\n")i0DATAH file.close()i2DATADATAxDATAddef buildMesh(path):(faDATA@ """DATA DESCRIPTION= -DATA( Build the mesh reading two ascii file:DATA(0 a vertex list and a faces list, namedcDATA$ Basedata.vertex and Basedata.facesDATA( If the Base object already exist, theaDATA(8 function only print a short messagep) DATA DATA  SYNOPSIS rDATA e buildMesh(path)codDATAжDATA  PARAMATERSDATA }  filename : The list of facestsDATA }  filename2 : The list of vertexDATAH DATA  RETURN VALUES:DATA,X Return an object named Base, using a mesh DATA named Base.DATA """DATA( #test if an obj named Base or Base.***DATA0~  #is already in the scene.DATA ~  allObjs = Blender.Object.Get()DATAhe obAlreadyInScene = 0DATAe for ob in allObjs:DATA~  if ob.name[:4] == "Base":DATAe obAlreadyInScene = 1DATA   if obAlreadyInScene == 1:DATA( print "Base object already in scene"DATA` else:DATA p  newBaseMesh = NMesh.GetRaw()DATA   file = open(path+"base.mesh")DATA   vertexData = file.readline()DATA@f while vertexData:DATA(@ vertexCoo = vertexData.split(',')DATA$ vx,vy,vz=float(vertexCoo[0]),\A@DATA`  float(vertexCoo[1]),\@DATA  float(vertexCoo[2])03 DATA  vertex=NMesh.Vert(vx,vy,vz)rDATA$ newBaseMesh.verts.append(vertex)DATA P  vertexData = file.readline()DATA file.close()DATA$H file = open(path+"base.faces")DATA  faceData = file.readline()DATAf while faceData:DATA( vertexIndex = faceData.split(',')DATAf newFace=NMesh.Face()DATA  for i in vertexIndex:DATAg index=int(i)7@DATA0 newFace.v.append(newBaseMesh.verts[index])DATA(m7  #newFace.smooth=1 # addedDATA(m7  newBaseMesh.faces.append(newFace)8-FDATA @  faceData = file.readline()DATAH file.close()DATA(Pn7  newBaseObj=NMesh.PutRaw(newBaseMesh)DATA  newBaseObj.setName("Base")DATA<( #newBaseMesh.setMode('SubSurf', 'Optimal') # addedA@DATA, newBaseMesh.update(1) # added-DATAD newBaseObj.setLocation(Blender.Window.GetCursorPos()) # addedDATA0x newBaseObj.makeDisplayList() # addedDATA  Blender.Window.RedrawAll()DATA( DATADATA`gdef saveIni(path):pDATA """DATA  DESCRIPTION100DATA 0  Save a text file makehuman.iniDATA DATA H SYNOPSIS DATA saveIni(path)eDATAHDATA  PARAMATERSDATA(n7  path: the path where save the files"baDATA DATA RETURN VALUES:DATA NoneDATAش """DATA try:DATA$o7  file = open("makehuman.ini", "w")DATAg file.write(path)DATA file.close()DATA  print "saved new ini file"PatDATA  except:DATA$Xo7  print "problem to save ini file"DATAhDATA0DATAdef readIni():DATA """DATA DESCRIPTIONDATA Ѓ  Read a text file makehuman.iniDATA DATA H  SYNOPSISDATA  readIni()DATADATA  PARAMATERSDATA no parameterDATA DATA RETURN VALUES:DATA  the path of targets libDATAP """DATA try:DATA p  file = open("makehuman.ini")DATA  targetsPath = file.readline()DATA file.close()DATAg return targetsPathDATA l except:DATA(o7  print "problem to retrieve ini file"DATADATADATAp32DATA8 DATA4}O def save_vertexgroups(path, names_to_save = []):DATA """DATAk DESCRIPTIONDATA   save the vertexgroup of a meshDATAȱ DATA Hr SYNOPSISDATA4~O  save_vertexgroups (filename, names_to_save = [])DATADATA o PARAMATERSDATA4h~O  path = the path into save the vertexgroups fileDATADh names_to_save = name of vertexgroup to save. If not gived save allDATAn DATAHn RETURN VALUES:DATAX noDATA  DATA OTHERDATA`  thanks to Michael ShardtDATA DATAx USAGEDATA0ؼ The scene must contain a object called "Base"DATA08 to save all vertexgroups in "C:/base.vgroup":DATA  save_vertexgroups ("C:/")DATAh to save vertexgroups named "group1" and "group2" (if existing) of object obj to file "C:/base.vgroup":DATA4~O  save_vertexgroups ("C:/", ["group1", "group2"])DATA@ """DATA  filename = path+"base.vgroup"DATAP  # Get Raw mesh data #DATA try:DATA(p7  object = Blender.Object.Get("Base")DATA  mesh = object.getData()DATA m except:DATA  print "Base obj not in scene"DATA n returnDATAЯ DATA(`p7  if not names_to_save: # save allDATA(p7  groupnames = mesh.getVertGroupNames()DATA< else: # save only specified groups (if existing)DATATxT. groupnames = [name for name in names_to_save if name in mesh.getVertGroupNames()]DATADATAh if groupnames: # is there anything to save? If not - no need to create an empty file, right?DATA@  f = file (filename, "w")DATA  for groupname in groupnames:DATA  f.write (groupname + ":\n")DATA88O  for data in mesh.getVertsFromGroup(groupname, 1):DATA8O  f.write (str(data[0]) + "," + str(data[1]) + "\n")DATA q f.close()DATA8zDATADdef load_vertexgroups(path, names_to_load = [], append_mode = 0):DATApzDATAz """DATAl DESCRIPTIONDATA< load the vertexgroup from file, and apply it yo an objectDATAz DATA Hm SYNOPSISDATA@x load_vertexgroups (path, names_to_load = [], append_mode = 0)DATA{DATA Hq PARAMATERSDATA(q7  path = path from load the vertexgroupsDATADX names_to_load = name of vertexgroup to load. If not gived load allDATAXU. append_mode = if true, the vertexgroup will be append to existent, else it replace allDATAq DATAr RETURN VALUES:DATAP{ noDATA{ DATA{ OTHERDATA0  thanks to Michael ShardtDATA{ DATA0| USAGEDATA0 The scene must contain a object called "Base"DATAd to load all vertexgroups from file "C:/base.vgroup" to object obj, deleting existing groups first:DATA  load_vertexgroups ("C:/")DATAH to load all vertexgroups from file "C:/base.vgroup" to object obj, keeping existing groups (except for name-collisions - see remark below):nnDATA$hq7  load_vertexgroups ("C:/", [], 1)DATA to load only vertexgroups named "group1" and "group2" (if existing) from file "C:/base.vgroup" to object obj, deleting existing groups first:DATA4O  load_vertexgroups ("C:/", ["group1", "group2"])ssDATA/ to load only vertexgroups named "group1" and "group2" (if existing) from file "C:/base.vgroup" to object obj, keeping existing groups (except for name-collisions - see remark below):DATA4pO  load_vertexgroups ("C:/", ["group1", "group2"], 1)DATAh| """DATA Ј  filename = path+"base.vgroup"DATA  # Get Raw mesh data #DATA| try:DATA(q7  object = Blender.Object.Get("Base")DATAp  mesh = object.getData()DATA m except:DATA  print "Base obj not in scene"DATA q returnDATA| DATA8h if not append_mode:DATA(r7  for name in mesh.getVertGroupNames():DATA\0 mesh.removeVertGroup(name) # remove all existing vertexgroups before loading new onesDATA} try:DATA  f = file (filename, "r")DATA Ho except:DATA0 print "Problem to open the vertex group file"DATA k returnDATAH}DATA `  line = (f.readline()).strip()DATAHh while line:DATAX. if line[len(line) - 1] == ":": # last character is a colon - it's a new groupnameDATA$pr7  groupname = line[:len(line) - 1]DATAX0. if (not names_to_load) or (groupname in names_to_load): # new group will be addedDATA9- if groupname in mesh.getVertGroupNames(): mesh.removeVertGroup(groupname) # name conflict - remove (old) duplicate group firstDATA4؀O  mesh.addVertGroup (groupname) # now add new oneDATAh skip_data = 0DATA< else: # skip this group (and the data following) DATAh skip_data = 1DATA  else: # it's dataDATAi if not skip_data:DATA  data = line.split(",")DATAP  index = int(data[0]) DATA  weight = float(data[1])DATA m try:DATA mesh.assignVertsToGroup (groupname, [index], weight, "replace") # could also use "add" or "substract" instead of "replace" - dont't knowDATA Hk except:DATA@X print "vertex group file corrupted or not for this mesh"DATA p returnDATA  line = (f.readline()).strip()DATA o f.close()DATA} DATAXidef saveUV(path):DATA} """DATAHp DESCRIPTIONDATA(r7  save the UV coordinates in a text fileDATA} DATA j SYNOPSISDATAl saveUV(path)DATA(~DATA k PARAMATERSDATA( s7  path = the full path for file to saveDATAo DATAp RETURN VALUES:DATA`~ noDATA~ """DATA@  # Get Raw mesh data #DATAi path = path+"base.uv"DATA~ try:DATA$xs7  obj = Blender.Object.Get("Base")DATA  obj_mesh = obj.getData()DATA Hl except:DATA  print "Base obj not in scene"DATA p returnDATA try:DATA0  file = open(path, "w")DATA n except:DATA  print "problem to save file"DATA 3 returnDATA@ DATAЍ  for f in obj_mesh.faces:DATAi nvrt = len(f.uv)EDATA5 if nvrt == 0:DATA$s7  print "Object do not have UV"REEDATA 2 returnDATA  for n in range(nvrt-1):PDATA8@O  file.write(str(f.uv[n][0])+","+str(f.uv[n][1])+";")DATA< file.write(str(f.uv[nvrt-1][0])+","+str(f.uv[nvrt-1][1]))DATA0j file.write("\n")DATA/ file.close()DATAxDATAxjdef applyUV(path):DATA """DATAP1 DESCRIPTIONDATA,X apply the UV coordinates from a text fileDATA DATA 2 SYNOPSISDATA4 saveUV(path)DATA DATA P/ PARAMATERSDATA((t7  path = the full path for file to saveDATA3 DATA0 RETURN VALUES:DATAX noDATA """DATAj path = path+"base.uv"DATAk # Get Raw mesh data #DATAȀ try:DATA$t7  obj = Blender.Object.Get("Base")DATAp  obj_mesh = obj.getData()DATA P9 except:DATA$t7  print "Select the human, please"DATA 1 returnDATAPk obj_mesh.hasFaceUV(0)DATA try:DATAk file = open(path)DATA 9 except:DATA(0u7  print "problem to open file", pathDATA 4 returnDATA8 DATA  for f in obj_mesh.faces:DATA  uvData = file.readline()DATA`  uvCoo = uvData.split(';')DATAk if len(f.uv) != 0:DATAP8 hasUV = 1DATAp else:DATAP0 hasUV = 0DATA try:DATA  for i in range(len(f.v)):DATA$u7  uvVertCoo = uvCoo[i].split(',')DATA  x = float(uvVertCoo[0])DATAP  y = float(uvVertCoo[1])DATA1 if hasUV:DATA(l f.uv[i] = (x,y)DATA 9 else:DATApl f.uv.append((x,y))DATA 4 except:DATA0 print "the UV is not suitable for object"DATA / returnDATA file.close()DATAl obj_mesh.update(1)DATA 32DATA def fileExist(filename):1lDATAh """eDATA  this function will be deletedDATA$u7  when os module will be includedREEDATAm in blender built-inDATA0 """DATA try:alDATAHm file = open(filename)DATA( file.close()DATA ( return 1DATA  except: DATA h return 0DATA 32DATA 32DATA8O def saveTargetsValue(filePath, targetList, valuesList):DATAP """aDATAȬe  DESCRIPTIONDATA(8v7  Save a text file with row target,valueDATA DATA e  SYNOPSISDATA4O  saveTargetsValue(filePath, targetList, valuesList)DATADATA He  PARAMATERSDATA(v7  path: the path where save the filesalDATA0 targetList: a list of all targets local pathDATA4xO  valuesList: a list of all targets values appliedEEDATAe  DATAȭe  RETURN VALUES:DATA None?DATAp """DATA8 #try:DATA@  file = open(filePath, "w")DATA$v7  for i in range(len(targetList)):EDATA8O  file.write(targetList[i]+","+str(valuesList[i])+"\n")DATAe  file.close()DATA,x print "Body setting saved to ",filePathDATA He  #except:DATA(@w7  # print "problem to save body setting"DATADATAȇDATA def loadTargetsValue(filePath):DATA """?DATAe  DESCRIPTION nDATA$w7  Read file with slider setting infoDATAX DATA Ȯe  SYNOPSISDATA  loadTargetsValue(filePath)DATA ?DATA e  PARAMATERSDATAHe  no parameterDATAe  DATAȯe  RETURN VALUES:DATA e  filePathDATA """DATA try:DATAm file = open(filePath)DATA$w7  nameAndValues = file.readline()EEDATAm valuesData = []EEDATA n while nameAndValues:DATA$Hx7  valuesData.append(nameAndValues)DATA$x7  nameAndValues = file.readline()EDATAHe  file.close()DATAhn return valuesDataDATA e  except:DATA(x7  print "problem to open setiing file"ETXh TXMorphing.pyGnФ nnDATAHc:\Programmi\Blender Foundation\Blender\.blender\scripts\Morphing.pyDATAnnȰe DATAn@one DATA@oon0 FREEDATAoo@oHe DATAopoxu@DATAp`poe 8@DATA`ppp@3j@DATApp`p DATAp8qpDATA8qqp` DATAqq8q DATAqrqЅDATArXrq DATAXrrrDATArrXr DATAr0srPy7 $DATA0sxsrВ DATAxss0s8 DATAstxs DATAtPtsy7 $DATAPtttؿ*DATAttPt8*DATAt(ut.DATA(uput*DATApuu(u `7~DATAuvpuȱe `7~DATAvHvu``7~DATAHvvvz7 $z!DATAvvHv(jDATAv wvX)`7~DATA whwvHO 4DATAhw  wDATA h hwȦ DATAh   DATA  h Xz7 %DATA @  )DATA@   z7 $eA2DATA Л @ D!DATAЛ   H{DATA ` Л {7 $KADATA`   `{7 #q8>DATA  ` O 0MDATA 8  DATA8   RR )DATA ȝ 8 {7 #DATAȝ   O 0DATA X ȝ ؃{DATAX   9g?DATA  X  UDATA 0  HA}e>DATA0 x  A`7~DATAx  0 |7 $DATA  x e DATA P  h|7 "DATAP   |7 DATA  P }7 DATA (  bR DATA( p  hDATAp  ( cDATA  p xcDATA H  cDATAH   X aDATA آ H 8@`7~DATAآ   He DATA h آ SR /DATAh   xSR )!@DATA  h 0DATA @  p DATA@    DATA Ф @ SR )DATAФ  8TR ((0!DATAȰe import BlenderDATA e import sysDATA0 if sys.platform == "win32":DATA He  import ntDATAxelse:DATA e  import osDATA@pyDATA class Morph(object):DATA yDATA`  originalPoints = []DATA  targetUsed = {}DATAЅpyDATA  def __init__(self,thePath):fixDATADATA  self.path = thePathDATA(Py7  file = open(self.path+"base.mesh")dDATA В  vertexData = file.readline()xDATA8  while vertexData:DATA  PointToDraw = []DATA(y7  vertexCoo = vertexData.split(',').blDATA,ؿ PointToDraw.append(float(vertexCoo[0]))DATA,8 PointToDraw.append(float(vertexCoo[1]))lDATA0 PointToDraw.append(float(vertexCoo[2])) DATA, self.originalPoints.append(PointToDraw)DATA  vertexData = file.readline()DATAȱe  file.close()DATA`DATA(z7  def doMorph(self,targetPath,Value):.blDATA( DATA,X if self.targetUsed.has_key(targetPath):>DATA8HO  morphFactor = Value - self.targetUsed[targetPath]DATA else:DATAȦ  morphFactor = ValueDATADATA(Xz7  self.targetUsed[targetPath] = ValueziDATA, actual_obj = Blender.Object.Get("Base")RDATA(z7  actual_mesh = actual_obj.getData().blDATADATAH try:DATA({7  fileDescriptor = open(targetPath)ps[DATA$`{7  except IOError, (errno,strerror):DATA4O  print "I/O error(%s): %s" % (errno, strerror)DATA try:DATA,RR  stringData = fileDescriptor.readline()#@DATA${7  except IOError, (errno,strerror):DATA4O  print "I/O error(%s): %s" % (errno, strerror)qh>DATA؃DATA DATA  while stringData:DATADH if stringData.find("#") == -1 and stringData.find(",") != -1: ~DATAD #The second condition above is to check the line is not emptyDATA(|7  listData = stringData.split(',')DATA e  try:DATA$h|7  pointIndex = int(listData[0])pDATA$|7  pointX = float(listData[1])endDATA$}7  pointY = float(listData[2])endDATA$bR  pointZ = float(listData[3])ascDATAhDATAd actual_mesh.verts[pointIndex].co[0] += (pointX-self.originalPoints[pointIndex][0])*morphFactorDATAdx actual_mesh.verts[pointIndex].co[1] += (pointY-self.originalPoints[pointIndex][1])*morphFactorDATAd actual_mesh.verts[pointIndex].co[2] += (pointZ-self.originalPoints[pointIndex][2])*morphFactorDATAX  except ValueError:DATAD8 print "the target file", fileName, "have some imperfection"DATA He  else:DATA0SR  print "COMMENT",stringData.replace("#"," ")DATA,xSR  stringData = fileDescriptor.readline()DATA0 DATAp  fileDescriptor.close()latDATA  actual_mesh.update(1)DATA,SR  actual_obj.makeDisplayList() # addedDATA,8TR  Blender.Window.RedrawAll() # addedNAC<8ACActionDATA<`J.TR TR hand.lDATA,TR J.ConstOB p[(OBCamera @ <+A2ldj@???W?FqA>$??aL??"q=}gEV>s?V?.FG><+A2ldj@??????o|2p@w?t = 2?5ǛQ<?OBd??)d??>)d?????OB ([pOBLamp (5:n K?????????:n K??????cL??"q=gEV>s?V?.FH>煣A( @?DOBd8? #=?>=??@???OB [(OBLamp.001 `5C'Az K?????????C'Az K??????aL??"q=gEV>s?V?.FH>v>u @?DOBd8? #=?>=??@???OB [POBLamp.002 5lXO*@????????lXO*@?????`L??"q=gEV>s?V?.FH>AI;W8@?DOBd8? #=?>=??@???OB P[OBLamp.003 5 A"<@???????? A"<@?????_L??"q=~gEV>s?V?.FH>01@Bio1??DOBd8? #=?>=??@???OB [ POBLamp.004 5~klXn@????????~klXn@?????_L??"q=gEV>s?V?.FI>$9AX;i??DOBd8? #=?>=??@???OB  [xOBMball8-`oO `oO j^dCa????????.;?.;3 '??.;3.;j^dCa???????"q=bL?EV>s?g.FI>V?(B z@xY?DOBd8? #=?>=??@???aj>OB x[ OBTubenO nO XܴF:????????.;?.;3 '??.;3.;XܴF:???????"q=aL?EV>s?g.FH>V?M!@.A?DOBd8? #=?>=??@???\=HjfyDATADATADESubsurfMA(&@MAMateriala?>,? V >????????????@R?^&???j ????????@?=?==???0????L?L?L?L==ff????DATAx0x5????????L=?L>TE@5"x5TETex>@???????@@????? @??<TEx5"@5TETex.001T<@???????@@????? @ ??[P=L=ME2METubeNd P*d H >}?}?( ?N$DATA(DATA,PDATAP8??t& ppᆇ?L#I?t& 熇t=?Ӌ ?t& v?B>p& Ւ?p3p& ?Bp& nu=?ы p& ؊?M#Ip& ?p& pM#I?p& #ы ?u=p& v'B>p& d*.p& 9+Bp& nd*݋ r=t& 'X#It& #t& @#Ix& #x=Ë x& 'Bx& d*nz5x& 9+B>|& d*o= ?|& 've#I?|& #熇 ?|& pᆇ2#I ?|& ܆ {=?|& ؆hB?|& nՆ6?x& ԆB>?x& Ն ?l=?x& v؆s#I? ?x& ܆?u?B>ZZ'Sw?mo?B>ljG'vi?2%?B>@v0'˱?n>B>}'}? }B>'?oB>}'ci?2%B>@v':w?oB>lj'?B>Z'o?EwB>G'2%?jiǿB>0']o>ıӿB>w'5}׿B>'nȱӿB>w'2%tiǿB>'koSwB>且'oB>'+woB>'Xiǿ 3%B>'ӿ pB>w'}׿綎B>'ұӿDn>B>w'iǿ92%?B>0'lw o?B>G'P?B>Z',ow?B>lj'c3%Gi?B>@v'p?B>}'DN}?B>'m>ڱ?B>}'1%?i?B>0@v'o?w?B>Glj'??}?44w%?(#I?}?w~=? ?}?uw?KB>}?;w?,R}? w?C}?wn=? }?u5w?a#I}?w?}?4wG#I?}?c%wՋ ?t=}?)wB>}?;,wZ5}?,wrB}?,w |=}?5)w&#I%}?c%w}?w#I}?c%we= }?)5w}ZC}?,wU}?,wA>}?,;w=j ?}?)w:"I?}?c%w0?}?4w#I?}?wd W=?}?5uwCu?}?wr-?}? wIA>?}?;w! ?=?}?uw"I?O?}?wA?d?t& rw䘇 ?mi?V >a@w ?D?B>b3Q'??V >RRF?)?t& ي똇? ?V >k,dp?xJ?B>pV<'c?+->t& vgO ?>W >r?i>B>|z'%'G?B >p& Կ?Z >t?Gn(>B>a 'G?B p& AJ ?Z >r8?%p(B>au'c?&-Ѿp& v֙ ? Z >kPӘ?jB>|z'F?)p& v?miZ >a Np?ɃJB>p'A?dp& rމ?[ >Rn^ ?DB>bͮ'd?Ap& w!mi?Z >@螘D?j B>3Q')?Fp& H& ?¿Z >,J?XpB>V<'"->cp& g)f>L οZ >xjj>ͿB>'%'B >Gp& 3+5ҿZ >:o(>տB> 'B Gp& A3+@M οW >8xn(տB>u'>-Ѿct& ) ¿V >PjͿB>ڄ')Ct& vH&miV > 螘|JdpB>'dAt& !V >nnDz B>ͮ'Adt& !niU > M EB>ͮ'J)x& H&v¿ R >PӘBpJB>'d-Ѿx& ) H οR >x8ͿkB>'GXB x& 3+AҿEQ >:տp(B>u'G C >x& 3+Q ο>Q >xտ\m(>B> 'cZ->|& )g¿ ?Q >,Ϳ[i>B>'%'?)?|& H&똇mi?N >@xp,J?B>V<'Ad?|& !w䘇nj?N >nR D?B>3Q'dA?|& rޘ!ni묮?N > a,E1 ?B>ͮb'r)N?|& v٘< ?Q >PkHJ,p?B>p',Ѿd?|& v֘C ?Q >8rk|?B>{z'B G?x& AԘ鱶?Q >tYr(?B>ua'IC >G?x& Ԙ>U ?R >rk(>?B> a'z->c?x& gv֘ ??R >,kh>?B>'%|z')?@a܂J?p?B>V3Qb'Œ??\D;?QQ?6A?d?}?[w?mi?]D;?d`h@?6R?h)?}?-طw? ?]D;?k],?6d?,>}?wQ ?>]D;?q?6G?A >}?ӓw?u]D;?s?6G?nC }?mwG ?]D;?qb?6c?t-Ѿ}? w? ]D;?k?6??)}?-Iw?mi]D;?d`?6A?d}?ݥw?]D;?Q?6d?A}?["wmi?]D;?h@?6)?F}?'w ?¿]D;?],?68->c}?6+wy>K ο]D;?L?6B >G}?,w5ҿ]D;??6GB G}?m,wO ο]D;?cL?6,Ѿd}? 6+w ¿]D;??6k)P}?I'wmi]D;??6~dA}?"wnj\D;??6xAؑd}?"wꬮ$ni\D;??64)}?'Iw¿F \D;?唣?6c-Ѿ}?6+ wB ο$\D;?Lb?6GD }?,mwҿM\D;??6GA >}?,wY οi>\D;?L?6dY,>}?6+w¿x ?\D;?],?6b()?}?'w(lmi?ZD;?h@?6ADd?}?"[w挔x?ZD;?Q?6d`A?}?wpniЬ?ZD;?d`?6)#?}?I-w ?\D;?k?6\.Ѿc?}? w9 ?\D;?bq?6JE G?}?mwH?\D;?s?6? >G?}?w>` ?\D;?q?6+>d?}?w# ? ?\D;?],k?6)?t?}?-w mi?A?\D;?h@e`?6bd?A?}?[w #I?-?>且 ?=?>#B>?>wA?>,C?>w i=?>0}#I?>G?>Z$&#I?>lj}= ?>@v^B>>}˶>B>}n= >@v0b#I>ljG>ZZ?#I>GljƋ w=>0@vB>}@K4>B>>}Ӌ ?t=>@vJ#I?>lj?>Z?W#I>Gr=? >0?B>w?ui˵>?~B>>wy=? ?>?:#I?>??>ᜡ?š?V >WZ$Ja?E?V >g7?>W >o!?#>X >Ntt ?#Z >Nt?NZ >oa?EZ >gԜ?ԡ[ >WZܵ͡?ڜ[ >$JE?aZ >7&>ȿZ >!*y#>пZ >t ,#пX >ȿW >*EaV >šV >̜ܵܡU >ܵa ET >ȿpR >*п#R >п#>Q >t ȿ>Q >*!aE?O >7육?N >$J졄œ?N >ܵWZ.Ea?O >g ?Q >o#?Q >Nt#>?R >t Nti>#?R >!oE?b?T >7g??U >$JWZ霡??\D;?YI6a?E?]D;?Tf66?>]D;? o!6?l#>]D;?ys_ 6?;#]D;?ys6?v]D;? oR6a?E]D;?TfN6Ϝ?١]D;?Yd6ˡ?ۜ]D;?IO6E?a]D;?662>ȿ]D;?!6#>п]D;?_ 6#п]D;?6ȿ]D;?R6Ea]D;?Nɬ6육\D;?dO6졄\D;?Od6a5E\D;?N6ȿ\D;?R6п#\D;?6п#>\D;?_ 6(ȿ,>\D;?!6brE?[D;?66?ZD;?OI6?ZD;?dY6Ea?[D;?NTf6?\D;?R o6b#?\D;?ys6+#>?\D;?_ ys6>5?\D;?! o6!E?%b?\D;?6Uf6??\D;?IY6A?d?>ͮL?|)?>d?,>>G?KB >>uG? C > c?M-Ѿ>'%C?)>V<A?d>3Qd?A>ͮb)?F>p.->c>|zB >G>uaB G> a-Ѿc>'%|z)J>V3QbAd>b3Q?)>pV<cf-Ѿ>|z'%G:C >a GB >>aud,>>|zPh)?>pAd?>bͮБd{A?>3Q)8?>V<-Ѿc?>'%C G?> A >G?>u,>d?>ڄM)?X?>d?A?>ͮDATA,H*d DATA$*d 5`#`#a#!a# b#!b#c# c#d#d#e#"e#!f#"f#g#g#h##h#"i##i#j#j#k#$k##l#$l#m#m#n#%n#$o#%o#p#p#q#&q#%r#&r#s#s#t#'t#&u#'u#v#v#w#(w#'x#(x#y# y# z#)z#({#){# |# |# }#*}#)~#*~# # # #+#*#+# # # #,#+#,# # # #-#,#-# ###.#-#.####/#.#/####0#/#0####1#0#1####2#1#2####3#2#3####4#3#4####5#4#5####6#5#6####7#6#7####8#7#8####9#8#9####:#9#:####;#:#;####<#;#<####=#<#=####>#=#>####?#>#?### #?# #@#@#A#!#A#A#B#"#B#B#C###C#C#D#$#D#D#E#%#E#E#F#&#F#F#G#'#G#G#H#(#H#H#I#)#I#I#J#*#J#J#K#+#K#K#L#,#L#L#M#-#M#M#N#.#N#N#O#/#O#O#P#0#P#P#Q#1#Q#Q#R#2#R#R#S#3#S#S#T#4#T#T#U#5#U#U#V#6#V#V#W#7#W#W#X#8#X#X#Y#9#Y#Y#Z#:#Z#Z#[#;#[#[#\#<#\#\#]#=#]#]#^#>#^#^#_#?#_#@#_##_##^##]##\##[##Z##Y##X##W# #V # #U # #T # #S # #R ##Q##P##O##N# #M# #L# #K# #J# #I##H##G##F##E##D##C##B##A##@#b !c #` !a #f!!a!#d!!e!#i"!e"#g"!h"#l#!h##j#!k##o$!k$#m$!n$#r%!n%#p%!q%#u&!q&#s&!t&#x'!t'#v'!w'#{(!w(#y(!z(#~)!z)#|)!})#*!}*#*!*#+!+#+!+#,!,#,!,#-!-#-!-#.!.#.!.#/!/#/!/#0!0#0!0#1!1#1!1#2!2#2!2#3!3#3!3#4!4#4!4#5!5#5!5#6!6#6!6#7!7#7!7#8!8#8!8#9!9#9!9#:!:#:!:#;!;#;!;#<!<#<!<#=!=#=!=#>!>#>!>#?!c?#?!?#@#b@!@#@!A#fA!A#A!B#iB!B#B!C#lC!C#C!D#oD!D#D!E#rE!E#E!F#uF!F#F!G#xG!G#G!H#{H!H#H!I#~I!I#I!J#J!J#J!K#K!K#K!L#L!L#L!M#M!M#M!N#N!N#N!O#O!O#O!P#P!P#P!Q#Q!Q#Q!R#R!R#R!S#S!S#S!T#T!T#T!U#U!U#U!V#V!V#V!W#W!W#W!X#X!X#X!Y#Y!Y#Y!Z#Z!Z#Z![#[![#[!\#\!\#\!]#]!]#]!^#^!^#^!_#_!_#_!`!``!`!`!a!a!a!da!b!b!b!gb!c!c!c!jc!d!d!d!md!e!e!e!pe!f!f!f!sf!g!g!g!vg!h!h!h!yh!i!i!i!|i!j!j!j!j!k!k!k!k!l!l!l!l!m!m!m!m!n!n!n!n!o!o!o!o!p!p!p!p!q!q! q!q! r!r! r!r! s!s! s!s! t!t! t!t! u!u! u!u! v!v!v!v!w!w!w!w!x!x!x!x!y!y!y!y!z!z!z!z!{!{!{!{!|!|!|!|!}!}!}!}!~!~!~!~!!!!!DATA,Nd DATANd 4c b c ` b!a` aa!f!a!d!f"ed!ee"i"e"g"i#hg"hh#l#h#j#l$kj#kk$o$k$m$o%nm$nn%r%n%p%r&qp%qq&u&q&s&u'ts&tt'x't'v'x(wv'ww({(w(y({)zy(z z)~) z)|)~*}|)} }** }**+* ++ ++,+ ,, ,,-, -- --.-...././///0/0000101111212222323333434444545555656666767777878888989999:9::::;:;;;;<;<<<<=<====>=>>>>?>c? c????b @!b@@@@Af!A"fAAAABi"B#iBBBBCl#C$lCCCCDo$D%oDDDDEr%E&rEEEEFu&F'uFFFFGx'G(xGGGGH{(H){HHHHI~)I*~IIIIJ*J+JJJJK+K,KKKKL,L-LLLLM-M.MMMMN.N/NNNNO/O0OOOOP0P1PPPPQ1Q2QQQQR2R3RRRRS3S4SSSST4T5TTTTU5U6UUUUV6V7VVVVW7W8WWWWX8X9XXXXY9Y:YYYYZ:Z;ZZZZ[;[<[[[[\<\=\\\\]=]>]]]]^>^?^^^^_?_ ____@`````A`@AaBaadadBbCbbgbgCcDccjcjDdEddmdmEeFeepepFfGffsfsGgHggvgvHhIhhyhy IiJii |i| JjKjj j KkLkk k LlMll l MmNmm mNnOnnnOoPoooPpQpppQqRq q qR rSr r  rS sTs s  sT tUt t  tU uVu u  uV vWvv vWwXwwwXxYxxxYyZyyyZz[zzz[{\{{{\|]|||]}^}}}^~_~~~@_DNA1rR SDNANAMEF*next*prev*first*lastxyzwxminxmaxyminymax*pointergroupvalpadname[32]typesubtypeflagsaveddatalentotallen*newid*libname[24]usicon_id*propertiesid*idblock*filedataname[240]filename[240]tot*parentcurvecurblocktypeshowkeyposcurvaladrcodetotelem*data*weightsvgroup[32]sliderminslidermax*refkeyelemstr[32]elemsizeblock*ipo*fromtotkeyslurph**scripts*flagactscripttotscript*line*formatblen*nameflagsnlineslines*curl*sellcurcselc*undo_bufundo_posundo_len*compiledsizeseekpassepartalphaangleclipstaclipendlensortho_scaledrawsizeshiftxshiftyYF_dofdistYF_apertureYF_bkhtypeYF_bkhbiasYF_bkhrotscriptlinkh*rectframenrframesoffsetsfrafie_imacyclokmulti_indexlayerpassmenunribufs*anim*rrsourcepad1lastframetpageflagtotbindxrepyreptwstatwendbindcode*repbind*packedfile*previewlastupdatelastusedanimspeedgen_xgen_ygen_type*vnodetexcomaptomaptonegblendtype*object*texuvname[32]projxprojyprojzmappingofs[3]size[3]texflagcolormodelrgbkdef_varcolfacnorfacvarfacdispfacwarpfacname[160]*handle*pname*stnamesstypesvars*varstr*result*cfradata[32](*doit)()(*instance_init)()(*callback)()versionaipotype*ima*cube[6]imat[4][4]obimat[3][3]stypeviewscalenotlaycuberesdepthrecalclastsizenoisesizeturbulbrightcontrastrfacgfacbfacfiltersizemg_Hmg_lacunaritymg_octavesmg_offsetmg_gaindist_amountns_outscalevn_w1vn_w2vn_w3vn_w4vn_mexpvn_distmvn_coltypenoisedepthnoisetypenoisebasisnoisebasis2imaflagcropxmincropymincropxmaxcropymaxxrepeatyrepeatextendcheckerdistnablaiuser*plugin*coba*envloc[3]rot[3]mat[4][4]min[3]max[3]*obmodetotexenergydistspotsizespotblendhaintatt1att2shadspotsizebiassoftbufsizesampbuffersfiltertypebufflagbuftyperay_sampray_sampyray_sampzray_samp_typearea_shapearea_sizearea_sizeyarea_sizeztexactshadhalostepYF_numphotonsYF_numsearchYF_phdepthYF_useqmcYF_bufsizeYF_padYF_causticblurYF_ltradiusYF_glowintYF_glowofsYF_glowtypeYF_pad2*mtex[10]specrspecgspecbmirrmirgmirbambrambbambgambemitangspectraray_mirroralpharefspeczoffsaddtranslucencyfresnel_mirfresnel_mir_ifresnel_trafresnel_tra_ifiltertx_limittx_falloffray_depthray_depth_traharseed1seed2mode_lflarecstarclinecringchasizeflaresizesubsizeflarebooststrand_stastrand_endstrand_easesbiasshad_alphapadfrgbselpr_typeuse_nodespr_backpr_lampseptexml_flagdiff_shaderspec_shaderroughnessrefracparam[4]rmsdarkness*ramp_col*ramp_specrampin_colrampin_specrampblend_colrampblend_specramp_showpad3rampfac_colrampfac_spec*nodetree*groupfrictionfhreflectfhdistxyfrictdynamodepad2sss_radius[3]sss_col[3]sss_errorsss_scalesss_iorsss_colfacsss_texfacsss_frontsss_backsss_flagsss_presetYF_arYF_agYF_abYF_dscaleYF_dpwrYF_dsmpYF_presetYF_djitname[256]scale*bbi1j1k1i2j2k2selcol1selcol2quat[4]expxexpyexpzradrad2s*mat*imatelemsdisp**mattotcolwiresizerendersizethreshvec[3][3]alfaweightradiush1h2f1f2f3hidevec[4]mat_nrpntsupntsvresoluresolvorderuordervflaguflagv*knotsu*knotsv*bp*beztcharidxkernnurb*bevobj*taperobj*textoncurve*path*keybevpathlenbevresolwidthext1ext2resolu_renresolv_renspacemodespacinglinedistshearfsizewordspaceulposulheightxofyoflinewidth*strfamily[24]*vfont*vfontb*vfonti*vfontbisepchartotboxactbox*tbselstartselend*strinfocurinfoname[128]maxrcttotrctvartypetotvertipoextraprtbitmaskslide_minslide_max*drivereffect*mface*mtface*tface*mvert*medge*dvert*mcol*msticky*texcomesh*mselect*oc*sumohandlevdataedatafdatatotedgetotfacetotselectcubemapsizesmoothreshsubdivsubdivrsubsurftype*mr*pv*tpageuv[4][2]col[4]transptileunwrapv1v2v3v4edcodecreasedef_nr*dwtotweightco[3]no[3]co[2]indexv[4]midchildrenstartpad[2]v[2]*verts*faces*colfaces*edges*vert_edge_map*vert_face_map*map_memlevelslevel_countcurrentnewlvledgelvlpinlvlrenderlvluse_col*edge_flags*edge_creases*vert_map*edge_map*old_faces*old_edges*errormodifiersubdivTyperenderLevels*emCache*mCachedefaxispad[6]startlengthrandomizeseed*start_cap*end_cap*curve_ob*offset_oboffset[3]scale[3]merge_distfit_typeoffset_typecountaxistolerancesplit_angle*texturestrengthdirectiondefgrp_name[32]midleveltexmapping*map_objectuvlayer_name[32]uvlayer_tmp*projectors[10]*imagenum_projectorsaspectxaspectypercentfaceCountfacrepeat*objectcenterstartxstartyheightnarrowspeeddamptimeoffslifetimedeformflagparentinv[4][4]cent[3]falloff*indexartotindexforceoperationpntswopntsuopntsvopntswtypeutypevtypewfufvfwdudvdw*defvec[8][3]dvec[3]max**obpartypepar1par2par3parsubstr[32]*track*proxy*proxy_group*proxy_from*action*poseconstraintChannelsnetworkdefbasemodifiersdloc[3]orig[3]dsize[3]drot[3]dquat[4]obmat[4][4]laycolbitstransflagipoflagtrackflagupflagnlaflagprotectflagipowinscaflagscavisflagboundtypedupondupoffdupstadupendsfctimemassdampinginertiaformfactorrdampingsizefacdtdtxactcolempty_drawtypepad1[7]empty_drawsizepropsensorscontrollersactuatorsbbsize[3]actdefgameflaggameflag2softflaganisotropicFriction[3]constraintsnlastripshooks*pd*soft*dup_groupfluidsimFlagrestrictflagshapenrshapeflagrecalcopad4*fluidsimSettings*derivedDeform*derivedFinallastDataMaskcurindexactivedeflectforcefieldpdef_damppdef_rdamppdef_permf_strengthf_powermaxdistpdef_sbdamppdef_sbiftpdef_sbofttotpointtotspring*bpoint*bspringnodemassgravmediafrictrklimitphysics_speedgoalspringgoalfrictmingoalmaxgoaldefgoalvertgroupfuzzynessinspringinfrictefraintervallocalsolverflags**keystotpointkeysecondspringcolballballdampballstiffsbc_modeaeroedgeminloopsmaxloopschokepad5*scratchshow_advancedoptionsresolutionxyzpreviewresxyzrealsizeguiDisplayModerenderDisplayModeviscosityValueviscosityModeviscosityExponentgravxgravygravzanimStartanimEndgstarmaxRefineiniVelxiniVelyiniVelz*orgMesh*meshSurface*meshBBsurfdataPath[240]bbStart[3]bbSize[3]typeFlagsdomainNovecgenvolumeInitTypepartSlipValuegenerateTracersgenerateParticlessurfaceSmoothingsurfaceSubdivsunusedDNADummyparticleInfSizeparticleInfAlphafarFieldSize*meshSurfNormalsmistypehorrhorghorbhorkzenrzengzenbzenkambkfastcolexposureexprangelinfaclogfacgravityactivityBoxRadiusskytypephysicsEnginemisimiststamistdistmisthistarrstargstarbstarkstarsizestarmindiststardiststarcolnoisedofstadofenddofmindofmaxaodistaodistfacaoenergyaobiasaomodeaosampaomixaocolor*aosphere*aotableshemiresmaxiterdrawtypesubshootpsubshootenodelimmaxsublamppamapamielmaelmimaxnodeconvergenceradfacgammaselcolsxsy*lpFormat*lpParmscbFormatcbParmsfccTypefccHandlerdwKeyFrameEverydwQualitydwBytesPerSeconddwFlagsdwInterleaveEveryavicodecname[128]*cdParms*padcdSizeqtcodecname[128]codecaudio_codecvideo_bitrateaudio_bitrategop_sizerc_min_raterc_max_raterc_buffer_sizemux_packet_sizemux_ratemixratemainpad[3]*mat_override*light_overridelayflagpassflagpass_xor*avicodecdata*qtcodecdataffcodecdatacfrapsfrapefraimagesframaptothreadsframelenblurfacedgeRedgeGedgeBfullscreenxplayyplayfreqplayattribrt1rt2stereomodedimensionspresetmaximsizexschyschxaspyaspxpartsypartswinposplanesimtypesubimtypequalityscemoderendererocresrpad[2]alphamodeosafrs_secedgeintsafetyborderdisprectlayersactlaygausspostmulpostgammaposthuepostsatdither_intensitybake_osabake_filterbake_modebake_flagGIqualityGIcacheGImethodGIphotonsGIdirectYF_AAYFexportxmlYF_nobumpYF_clamprgbyfpad1GIdepthGIcausdepthGIpixelspersampleGIphotoncountGImixphotonsGIphotonradiusYF_numprocsYF_raydepthYF_AApassesYF_AAsamplesGIshadowqualityGIrefinementGIpowerGIindirpowerYF_gammaYF_exposureYF_raybiasYF_AApixelsizeYF_AAthresholdbackbuf[160]pic[160]ftype[160]col[3]framename[64]*brushtoolcornertypeeditbutflagjointrilimitdegrstepturnextr_offsdoublimitsegmentsringsverticesunwrapperuvcalc_radiusuvcalc_cubesizeuvcalc_mapdiruvcalc_mapalignuvcalc_flagimapaintselect_threshclean_threshretopo_moderetopo_paint_toolline_divellipse_divretopo_hotspotmultires_subdiv_typepad4[2]dirairbrushview*sessiondrawbrushsmoothbrushpinchbrushinflatebrushgrabbrushlayerbrushflattenbrushbrush_typetexnrtexrepttexfadetexsepaveragingdraw_flagtablet_sizetablet_strengthsymm*camera*world*setbase*basactcursor[3]twcent[3]twmin[3]twmax[3]editbutsizeselectmodeproportionalprop_mode*ed*radioframing*toolsettingsaudiomarkersjumpframe*theDagdagisvaliddagflagssculptdatazoomblendximyimspacetypeblockscale*areablockhandler[8]viewmat[4][4]viewinv[4][4]persmat[4][4]persinv[4][4]winmat1[4][4]viewmat1[4][4]viewquat[4]zfacpad0persp*ob_centre*bgpic*localvd*ri*retopo_view_data*depthsob_centre_bone[32]localviewlayactscenelockaroundcamzoompivot_lastgridgridviewpixsizenearfarcamdxcamdygridlinesviewbutgridflagmodeselecttwtypetwmodetwflagtwdrawflagtwmat[4][4]clip[4][4]*clipbbafterdrawzbufxrayflag2gridsubdivsnap_target*properties_storageverthormaskmin[2]max[2]minzoommaxzoomscrollkeeptotkeepaspectkeepzoomoldwinxoldwinyrowbutv2d*editipoipokeyactname[32]constname[32]totipopinbutofschannellockmedian[3]cursenscuractaligntabomainbmainbo*lockpointexfromshowgroupmodeltypescriptblockre_alignoldkeypresstab[7]chanshown*filelisttotfiletitle[24]dir[160]file[80]ofssortmaxnamelencollums*libfiledataretvalmenuact(*returnfunc)()(*returnfunc_event)()(*returnfunc_args)()*arg1*arg2*menup*pupmenuoopsvisiflagtree*treestoresearch_string[32]search_tsesearch_flagsdo_outlinevisstoreflagdeps_flags*cumapimanrcurtileimtypenrshowsparecentxcenty*info_str*info_spare*spare*texttopviewlinesfont_idlheightleftshowlinenrstabnumbercurrtab_setshowsyntaxunused_paddpix_per_linetxtscrolltxtbar*script*but_refsredraws*idaspect*curfont*edittreetreetypetitle[28]fasesubfasemouse_move_redrawimafasemxmydirslidirsli_linesdirsli_sxdirsli_eydirsli_exdirsli_himaslifileselmenuitemimasli_sximasli_eyimasli_eximasli_hdssxdssydsexdseydesxdesydeexdeeyfssxfssyfsexfseydsdhfsdhfesxfesyfeexfeeyinfsxinfsyinfexinfeydnsxdnsydnwdnhfnsxfnsyfnwfnhfole[128]dor[128]file[128]dir[128]*firstdir*firstfiletopdirtotaldirshilitetopfiletotalfilesimage_sliderslider_heightslider_spacetopimatotalimacurimaxcurimay*first_sel_ima*hilite_imatotal_selectedima_redraw*cmapoutline[4]neutral[4]action[4]setting[4]setting1[4]setting2[4]num[4]textfield[4]textfield_hi[4]popup[4]text[4]text_hi[4]menu_back[4]menu_item[4]menu_hilite[4]menu_text[4]menu_text_hi[4]but_drawtypeiconfile[80]back[4]header[4]panel[4]shade1[4]shade2[4]hilite[4]grid[4]wire[4]select[4]lamp[4]active[4]group[4]group_active[4]transform[4]vertex[4]vertex_select[4]edge[4]edge_select[4]edge_seam[4]edge_sharp[4]edge_facesel[4]face[4]face_select[4]face_dot[4]normal[4]bone_solid[4]bone_pose[4]strip[4]strip_select[4]vertex_sizefacedot_sizebpad[2]syntaxl[4]syntaxn[4]syntaxb[4]syntaxv[4]syntaxc[4]movie[4]image[4]scene[4]audio[4]effect[4]plugin[4]transition[4]meta[4]bpad1[4]tuitbutstv3dtfiletipotinfotsndtacttnlatseqtimatimaseltexttoopsttimetnodebpad[4]spec[4]dupflagsavetimetempdir[160]fontdir[160]renderdir[160]textudir[160]plugtexdir[160]plugseqdir[160]pythondir[160]sounddir[160]yfexportdir[160]versionsvrmlflaggameflagswheellinescrolluiflaglanguageuserprefviewzoomconsole_bufferconsole_outmixbufsizefontsizeencodingtransoptsmenuthreshold1menuthreshold2fontname[256]themesundostepscurssizetb_leftmousetb_rightmouselight[3]tw_hotspottw_flagtw_handlesizetw_sizetextimeouttexcollectratememcachelimitframeserverportpad_rot_angleobcenter_diarvisizervibrightversemaster[160]verseuser[160]recent_filessmooth_viewtxvertbaseedgebaseareabase*sceneendxendysizexsizeyscenenrscreennrfullmainwinwinakthandler[8]*newvvec*v1*v2panelname[64]tabname[64]drawname[64]ofsxofsycontrolsnapold_ofsxold_ofsysortcounter*paneltab*v3*v4*fullwinmat[4][4]headrctwinrctheadwinwinheadertypebutspacetypewinxwinyhead_swaphead_equalwin_swapwin_equalheadbutlenheadbutofscursorspacedatauiblockspanelssubvstr[4]subversionpadsminversionminsubversiondisplaymode*curscreen*curscenefileflagsglobalfname[80]*ibuf*se1*se2*se3nrdone*stripdataorxory*instance_private_data**current_private_data*newseqstartofsendofsstartstillendstillmachinestartdispenddispmulhandsize*strip*curelemfacf0facf1*seq1*seq2*seq3seqbase*sound*hdaudiolevelpancurposstrobe*effectdataanim_preseek*oldbasep*parseq*seqbasepmetastackedgeWidthforwardwipetypefMinifClampfBoostdDistdQualitybNoCompScalexIniScaleyIniScalexFinScaleyFinxInixFinyIniyFinrotInirotFin*frameMapglobalSpeedbuttypeuserjitstaendtotpartnormfacobfacrandfactexfacrandlifeforce[3]vectsizemaxlendefvec[3]mult[4]life[4]child[4]mat[4]texmapcurmultstaticstepomattimetexspeedtexflag2negvertgroup_vvgroupname[32]vgroupname_v[32]*keysminfacusedusedelemdxdylinkotypeold*poin*oldpoinresetdistlastval*makeyqualqual2targetName[32]toggleName[32]value[32]maxvalue[32]materialName[32]damptimerdelaypropname[32]matname[32]axisflag*fromObjectsubject[32]body[32]pulsefreqtotlinks**linksinvertfreq2axisfbuttonbuttonfhathatfprecisionstr[128]*mynewinputstotslinks**slinksvalotime*actblendinprioritystrideaxisstridelengthsndnrpad1[2]makecopycopymadepad2[1]trackvolume*melinVelocity[3]localflagforceloc[3]forcerot[3]linearvelocity[3]angularvelocity[3]butstabutendminvisifacslowminloc[3]maxloc[3]minrot[3]maxrot[3]distributionint_arg_1int_arg_2float_arg_1float_arg_2toPropName[32]*toObjectbodyTypefilename[64]loadaniname[64]goaccellerationmaxspeedmaxrotspeedmaxtiltspeedrotdamptiltdampspeeddamp*sample*stream*newpackedfile*snd_soundpanningattenuationpitchmin_gainmax_gaindistancestreamlenchannelshighpriopad[10]gaindopplerfactordopplervelocitynumsoundsblendernumsoundsgameengine*lamprengobjectchildbaserollhead[3]tail[3]bone_mat[3][3]arm_head[3]arm_tail[3]arm_mat[4][4]xwidthzwidthease1ease2rad_headrad_tailbonebasechainbasepathflaglayer_protectedghostepghostsizeghosttypepathsizeghostsfghostefpathsfpathefconstflagikflagselectflag*bone*childiktree*b_bone_matschan_mat[4][4]pose_mat[4][4]pose_head[3]pose_tail[3]limitmin[3]limitmax[3]stiffness[3]ikstretch*customchanbaseproxy_layerstride_offset[3]cyclic_offset[3]reserved1autosnapactnractwidthtimeslidename[30]enforce*tariterationsrootbonesubtarget[32]orientweightgrabtarget[3]reserved2minmaxflagstickystuckcache[3]lockflagfollowflagzminzmaxvolmodeplaneorglengthbulgepivXpivYpivZaxXaxYaxZminLimit[6]maxLimit[6]extraFzchannel[32]no_rot_axisstride_axiscurmodactstartactendactoffsstridelenblendoutstridechannel[32]offs_bone[32]hasinputhasoutputdatatypesockettypenslimitstack_indexinternstack_index_extlocxlocyown_indexto_index*tosock*link*new_nodelastyoutputs*storageminiwidthcustom1custom2need_execexectotrbutrprvr*typeinfo*fromnode*tonode*fromsocknodeslinks**stackinitstacksizecur_indexalltypes*owntype(*timecursor)()(*stats_draw)()(*test_break)()cyclicmoviesamplesminspeedbokehhuesatt1t2t3fstrengthfalphakey[4]colname[32]bktyperotationpreviewgamcono_zbuffstopmaxblurbthreshshortymintablemaxtableext_in[2]ext_out[2]*curve*table*premultablecurrcliprcm[4]black[3]white[3]bwmul[3]offset[2]innerradiusratergb[3]cloneactive_rndpad[4]*layerstotlayermaxlayertotsizeTYPEcharucharshortushortintlongulongfloatdoublevoidLinkListBasevec2svec2ivec2fvec2dvec3ivec3fvec3dvec4ivec4fvec4drctirctfIDPropertyDataIDPropertyIDLibraryFileDataIpoKeyBlockKeyScriptLinkTextLineTextPackedFileCameraPreviewImageImageUserImageanimRenderResultMTexObjectTexPluginTexCBDataColorBandEnvMapImBufTexMappingLampWaveMaterialbNodeTreeGroupVFontVFontDataMetaElemBoundBoxMetaBallBezTripleBPointNurbCharInfoTextBoxCurvePathIpoDriverIpoCurveMeshMFaceMTFaceTFaceMVertMEdgeMDeformVertMColMStickyMSelectOcInfoCustomDataMultiresPartialVisibilityMDeformWeightMultiresColMultiresColFaceMultiresFaceMultiresEdgeMultiresLevelMultiresMapNodeModifierDataSubsurfModifierDataLatticeModifierDataCurveModifierDataBuildModifierDataArrayModifierDataMirrorModifierDataEdgeSplitModifierDataDisplaceModifierDataUVProjectModifierDataDecimateModifierDataSmoothModifierDataCastModifierDataWaveModifierDataArmatureModifierDataHookModifierDataSoftbodyModifierDataBooleanModifierDataLatticebDeformGroupLBufbActionbPosePartDeflectSoftBodyFluidsimSettingsDerivedMeshObHookSBVertexBodyPointBodySpringSBScratchWorldRadioBaseAviCodecDataQuicktimeCodecDataFFMpegCodecDataAudioDataSceneRenderLayerRenderDataGameFramingTimeMarkerImagePaintSettingsBrushToolSettingsBrushDataSculptDataSculptSessionSceneDagForestBGpicView3DSpaceLinkScrAreaRenderInfoRetopoViewDataViewDepthsView2DSpaceInfoSpaceIpoSpaceButsSpaceSeqSpaceFiledirentryBlendHandleSpaceOopsTreeStoreTreeStoreElemSpaceImageCurveMappingSpaceNlaSpaceTextSpaceScriptScriptSpaceTimeSpaceNodeSpaceImaSelImaDirOneSelectableImaThemeUIThemeSpacebThemeSolidLightUserDefbScreenScrVertScrEdgePanelFileGlobalStripElemStripPluginSeqSequencebSoundhdaudioMetaStackEditingWipeVarsGlowVarsTransformVarsSolidColorVarsSpeedControlVarsEffectBuildEffPartEffParticleWaveEffOopsbPropertybNearSensorbMouseSensorbTouchSensorbKeyboardSensorbPropertySensorbCollisionSensorbRadarSensorbRandomSensorbRaySensorbMessageSensorbSensorbControllerbJoystickSensorbExpressionContbPythonContbActuatorbAddObjectActuatorbActionActuatorbSoundActuatorbCDActuatorbEditObjectActuatorbSceneActuatorbPropertyActuatorbObjectActuatorbIpoActuatorbCameraActuatorbConstraintActuatorbGroupActuatorbRandomActuatorbMessageActuatorbGameActuatorbVisibilityActuatorFreeCamerabSamplebSoundListenerSpaceSoundGroupObjectBonebArmaturebPoseChannelbActionChannelSpaceActionbConstraintChannelbConstraintbKinematicConstraintbTrackToConstraintbRotateLikeConstraintbLocateLikeConstraintbMinMaxConstraintbSizeLikeConstraintbActionConstraintbLockTrackConstraintbFollowPathConstraintbDistanceLimitConstraintbRotationConstraintbStretchToConstraintbLocLimitConstraintbRotLimitConstraintbSizeLimitConstraintbRigidBodyJointConstraintbClampToConstraintbActionModifierbActionStripbNodeStackbNodeSocketbNodeLinkbNodebNodePreviewbNodeTypeNodeImageAnimNodeBlurDataNodeHueSatNodeImageFileNodeChromaNodeGeometryNodeVertexColNodeDefocusCurveMapPointCurveMapBrushCloneCustomDataLayerTLEN  L4(Thxh tx T8pDDlh8$88\,< @ @ 44DX`Dt<<<\h`4@t( <(,((0@XP Lt<$x$(h x$ 8x h (88,@0,HhH,(lDLP@< <@Lh48<8l(DlP<,4D4,,D,@,<4` <$t (@  ,<STRC                 !"#$ %&'( )*+, -./01 234* 56789 :;<=!!!>?@" ABC D!E!FGHIJK L#MNB -$OPQRSTUVWXYZ[\6 ]%^_& `abcdefghij'! k(l)mfnopqrstuvwx#y%z{|}~ *+,-   .)&/#&.0+'1QRfp,4dabc&6'-/02+34QR   * 6 ]465p  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI/J/KLMNOPQRS* 6T67UVWXYZ[\]^_`abcdefghijklmno ]8pq9-#y:::;rstuvwxyz{|}~<;r  65= >???>=@\A^B9;r  +++6C5 \D)8888A@@D+'+EEE>='+  *DF);r 65GHIJKLMNFOP QQQ\RS I GKTLTJMNOH'UVUWX Y YYJ W V X   ZR QQSGK[[[\[ !"B # $][ +^[ +%&_[ '()*` [ +++,+-+./0(123B4a[ 56b[ 7Bc [ ,89:;<=+>?@d [ +A'BBCDE?@e[ FGf[ H;Ig[ +HM;h[ +J;,8+>KLMNOP=@?QRi[ So\+;j [ +TUVWXYk[ l[ +Zm[\]^\_`abcdefg>h6Lnnn;iPjo#k+l+gmnopq+$+r+s+t+u6C;rpvqw - x  y  z {5|}~{T ]        rs7tuu vvv+$TUVWXYr ws(xycw8Qzt(FFF6     J{9 !"#$%&'()*+,-./0123456789:;<=6*  ]|>?@ABCDEFGHIJKL}}}MNO+~ P QRSTUVWXYZ[ \ ]^\_ `abcdBefghijkl 5m7nopqe~rstucvwxyz{|}~M \o\QQ\M9* %+{' }     >6T |  ] o\Q '&MD !"#$%&'()*+++,-./01@234567oS89:;<=>?@ABjCDEFGH;I JKLMNO\ P#&QRSTUVWXYZ[\]   ^\_ ` a67bcdefg('jhi#. jklm_njeo pqrstuvw _nx\ yz{|}~      _ e p  _'B&jh\1  jh_ "Bj Bjo __7j 6T6Q\1       l0   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ@R4STUVWXYZ[\]^_`abcdefghijklmn opqrstuvwxyz{|}~&   KL  ]      1f | p     ) 'c6(l      P B(c-R8*   P  M7UKLMNOPQR, - !" # $% & '()o\5*+,-./0123P\P5*456o7+89:$;<=o\ ->+?@ 5ABCDEFG"HI=$J\Q ->KLM+ pNOPQR STUVWSXY M+FZ[\+0+ ]^|_` o&ab+MckH5dPefghi l&ab7U*jklmn5o+p9qo\:rs H$t -+ uvwxyz{| }#y#~ 6YB_Sh\+ 7 h$ (h  @Sh \$  {+q 6 xp  _pveh6 - ++B++ +bo\+ +'ckpN++b+o\/   +   M   o   o++o\+ +6pN+';IO {ck -   o      j I   z           6       ac voHL\p`c !"#$ %&'()*+,q- ./01234 &56789:;'B; M<=>* ?b@A -QBCDEENDB