GDPCN<res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex xV+]}] 0res://assets/robot_head/godot3_robot_head.mesh_SNs(8res://assets/robot_head/godot3_robot_head_collision.tres\ȞU.cEres://icon.png Y{ &+^aݶsres://icon.png.import fe6B^ Ures://main.tscn@ 8e]VC :R4res://project.binary f@DBhres://test.gd.remapЊ Vgqres://test.gdc | ? tycKres://tests.gd.remap Dza4res://tests/functional/test_moving_platform.gd.remap @{ڜxv\=0res://tests/functional/test_moving_platform.gdc J d~ڇrVGc0res://tests/functional/test_moving_platform.tscnc H|%Ŕ;8i2,res://tests/functional/test_pyramid.gd.remapЋ 8{`l# 9(res://tests/functional/test_pyramid.gdc x VƲrӌrGx(res://tests/functional/test_pyramid.tscn L'~hmhvc0res://tests/functional/test_raycasting.gd.remap ;@ꖪZ8a:d,res://tests/functional/test_raycasting.gdcЁ w=/}MKJ,res://tests/functional/test_raycasting.tscn  M:d;@ϋI8<res://tests/functional/test_rigidbody_ground_check.gd.remapP GS>?#pv8res://tests/functional/test_rigidbody_ground_check.gdc L G 'nC8res://tests/functional/test_rigidbody_ground_check.tscn0 .qi&ٺ4res://tests/functional/test_rigidbody_impact.tscn RX!"WkHsRJ(res://tests/functional/test_shapes.tscn # Fz-e~v#,res://tests/functional/test_stack.gd.remap 6cGf?!(res://tests/functional/test_stack.gdc vaCSG-&zQ(res://tests/functional/test_stack.tscn0 H+|Hk8res://tests/performance/test_perf_broadphase.gd.remap Adzr4Ч0res://tests/performance/test_perf_broadphase.gdc cd TE3iv?4res://tests/performance/test_perf_broadphase.tscn  84獯`~!O8res://tests/performance/test_perf_contact_islands.tscn`  H )+E~4res://tests/performance/test_perf_contacts.gd.remap0 ?|D vO0res://tests/performance/test_perf_contacts.gdc@ "^wìSM_e0res://tests/performance/test_perf_contacts.tscn5 Y8(٫IsβW res://tests/static_scene.tscnC :djo 60c< $res://tests/static_scene_plane.tscnF 7?<%E| % res://tests/test_options.tscnI e$'d><rͣSjres://tests_menu.gd.remapp %tp_ L3Zres://tests_menu.gdcpJ Wey|S1ˋ$res://utils/camera_orbit.gd.remap -(t}&je- res://utils/camera_orbit.gdcP ;0-|Ѧͥ!n3$res://utils/container_log.gd.remapЍ .#luGzQ res://utils/container_log.gdcU Tf )RF res://utils/control3d.gd.remap *AH8.ti.0res://utils/control3d.gdcpZ iY?^7'+,res://utils/kinematicbody_physics.gd.remap0 6fHEj+b;(res://utils/kinematicbody_physics.gdc] 7CV%tسw<$res://utils/label_engine.gd.remapp -*}=6Wres://utils/label_engine.gdc a t,Dy S res://utils/label_fps.gd.remap *)L-2\C$Z-Eres://utils/label_fps.gdcc a;ˡ<6 res://utils/label_pause.gd.remapЎ ,T۬nOcU0res://utils/label_pause.gdcd 5MN6 res://utils/label_test.gd.remap + Ͼhres://utils/label_test.gdce vJ͐5z2w m&$res://utils/label_version.gd.remap0 .3:^WȢi res://utils/label_version.gdcg =k][yp{\l7B res://utils/option_menu.gd.remap` ,U5l]BTures://utils/option_menu.gdch !1`F=4jl,res://utils/rigidbody_ground_check.gd.remap 7~Ŭ+'g"u>/(res://utils/rigidbody_ground_check.gdcp GEUXtPzK}OX33/ew"yq7c%'PX˓\fEܝ$BVO-h+ZfK_{&I&$",Vntq+l@K%*NkyGmBP%pp32M+8A8 z_?QkYu% 5 dˋ JDAe  }jm}-`ıX\!_+#XE9!O,%Y_O.!YEp,-2e{ZmybYy-_# ˋDZ!NG@G0 *R9C@$\l$/VYK?CN{#/ܗ]-Do?90Mt=yotN [{ol Y*Rk$gf{Vh]4}im3Ve&Vt7xG=ymGylFl,[ι4o "h?E0avoN@v4H4tg/k]t-g7c)Kݢx^d)1T&WE,UsZ˚'IeM ڥ$I>E}F5-_JR"nߜwĪEf_;:r(ԡ5M'͘%Rl,cÌƶ@)|ەVbn%ӺiᙲN-Kt =h)_VlIN{/ݸ]ls4ӃM7ZKrё >RPoZ4/P :QS牡˴=^lu1aa3h082dfQn>,16ȸu~WSm.'l8LA7'c`Y^Sҋ}{uH@Fc>jUwaM~LM4a>LRMwaݔzDPKjQam|1|A+5 O'F%K=~lWQ64 2v3`?SdΑjybfOl6e\rt/"־\g M 2R%6Ai Z).6"CCo9`'jΉ,x 1F.Bĉ \$خ06!g/v1t#h"x<\P{# \fؕӚKL_ 3w"Wntr1K)3ەHrVSw[#I_d%-NGfNKҮg;bw^Rx?jDH2H#zYTT 2z4CHM3,GE>)ҨA/% H:M Ԩ:9I2cya=>$O"u;qq؇nS ڃ[3ҪKuEaSYFj-,Dnbԏ<4 &"S0]uV5?2NjK!"Cǩ򎜐;fIYú 9Xg nv<*V0_pYwC0.Wxz Bm8X:5 i래]=nZ( z"-5 _LIKs0 GJoW= 8Ud]wǯ޷2A~M@Q}"U%4ʠ8d+#|0tbTg_*4<7(NZN'Xb| 7psې<BO{DaTɃ)ϨQe~(7!Mchx`@Ʉo#&\sbG@ 9A}GkG5SxbT$M8Fa2 ˄ܹcI&=3%nA*"Uhhȁ4=NSfS5i6Iu,\NDD1õ\N^i4Ԙ R8Jl|7n &Cwh g$scdnM1xҦM@4P*DMIb!<[`7*8o]:d(# 31Op&#,}7;$ajqC]"3Y}}Gk.cs[ɎEG/7VRS(O:#VnR33xCIzD)S*٧|dnqT+=y*(/`[꥔%KP /N,' rsM& { fk|l AVؾUI;%O;)J\@-*&Tz9FJʇQ7f-Q4(]z178 aL*\%*y3h'x D ͕KFV(ݸ @{7cҸw ad&&VvV͋74+$y0;?Z)elkM~"L_sI쯓hN P 2ڙ<+v^J@G:W ־3;>͏%W[^頧KB|e=~ &+Iqա>O9bO\TΛ0FN |qwJMA K$ޅ25{Rԛ`h$Q-x+8I`ÇܰbP1Nѽ-+wn/W}:)nATR29ǿe."NdGJbe{tn*ߪb}m$,EjÝv,>"M>,%:8b}"8B&9pb1vbLZeHt;<t~ á|J! I(TTx W9/dʇ_ZIوyp*eUP [%[Y|𤳳a0[B<p! jwZƩK pBj8l[H}+8GgέAH&7յx+W$ýTJXU*o *u+ď`Ckq&._"V ) ădF1L*=& Cqsbʋbp K6YhƕɂKCzy,. aK9_{Y:W27卜mV=ZX&?E"hKQl1opuF|P@ *7O\Gk QQhQ^H/BtPPqgʊ=%!V&{,.^vʱ'l~/Ozz& 3}U">j4uF(aqt-ٺWqgImvJʽ5sm3j$/l@FwhXNs&G&?M/:9SIA8*gSنH%gH߼3Ff;Y"f?Xɭy(WA#V/ÂadmYp ^oe([`G#Ǣ^ V_DxZچ'i`$]S1PsdQx6]}4P)Z#٣:7}哼E.Cb^IbCkԓ/9D;y :yF>NT~a:]|Jiϑ/4'*w(Ԅy[m<g~Po?h.;I.ܹFP7Q*Ch3kOЇZ-!9<gfiSk9ɦS0vju?ԩ^YNlŕc0{ߐ5hݿÁ;q86% ?)?ȰOf}c!RZ ,w.LW\6jP/OV~Jwe.viMqc1#T+㓘/C.fM#ʄ7(a/&Kg+SomhhLpqR348`"PP<]d=Jh{s 'ߌS!!/"ckݗrR JXF|_V^Vi-nƕZQeu|[JLpzHɍ 9)0ăUoHy9S!7r[μvvGIy9ȻaAL|&pMɭLѬr+vs,R>fފP`1=\s~ ^v,9pј&ڸgFtrkl/Ad3weLc|ܒNv[˖c&ܻ~1~4`>c`lI()Y4+1D%` <,&Ԁ}z+ܹTDX?Cb㠫䵀 [jܺiHŌ@8;"|t6MwbDS3_hi@syWVK,v5&te 8  Uxiƨy6b1ܹMcFѰFƽ~MRI38 A % C}hzf?Zmp4>+odܼɹk0źn!|nT^zbp^GU1i׵đqٗᖁ(|ݑp-27 h7נo^!d>l3e hV[iGDzxd&9-6m!nm2w}Rd0[+|(/`]^&LJ o<H(Y% h5^r$Oڣ|qїxh [> |Js;ke?'YYjĤt),簢E YW>x+ W)6Ar`9X{mkMhwr2uz*Cgy1xq-#:GJ!=͛ۋt^g2dOTT)vb41}TVͬ.t/V~$~o^(3Ýh]ꯏN~|h}{q|cZWßH+wE[譯ayQ%6v>*JŲqۻmc^Sq 4AS Cpo67g-t O\fBJJ8e-q:0FON9d⡵Hz+'Vgb%ۍȽ"ޭ,|L66\I%jy蕚. ʋ3-X.8˶-dty훜@'W+p\9 _dg#ܼ3da+O/GPOy-$thsd_%ݠ8B/e2WSo7%c?`S4 t¥$ۍGXFWS=.F ?Iy<Ϙ' xO,6ÂS_eY)|˧d%v&Zb,I>=6xT&y-|k7L)wEWyDT/:SeD*Wf̿\O"Y_R2W/< Mv)3r_8ݟ]yA6FBSX˃,>ɩoMX$YPs9hBz7slP|vxꇠ:s8(ZY/]yf灲Ypvjtty:$#&+6r9"yqT~T\ 8ۖ&֛o;`wE$EMςSWlHLZeU]u8W/D|zqR@M-,FrԟPMMmL_Xqq$F%C}%l|+c '?=Ml/ċF90 "=u"oA2 ba(=  ]: y5 mC5ލJ4d1%d1 Mxs(6D&d+!ZNv1;/2*Q4֔|)s!Wx{05b,`o/9ɠ]ߋy՟!NzѪIg҄s#۹Rph?F<~rsAG"=viK>`H^Cu2-5g_Gs C9ͯʜn7:O}) oP% 7$'Dl3<3.ɼAt"SN(/`5^*L'L <[uu/nYdEӺ{Q6#kHޑGo=l+arO7%ƑϳnE  tnVL:5/ۉ<u>q;v"baVu;bњG+^Gt׻ ^Y\J +[&0$\+G0NFdk>5]$Sΐ{ K!xݭum>$5?LvWJqˆdzIJ/nvxv|$Z~TK_6:,vJkRC9 Q/Sx+S6s'5Op0(T&kކTOsG=]2s,J[1?׋.e3Dŏjync+222О0UqcvȍՆLߙZ]>io3u×F,? &f(Z@vFVN+nP91?~,z Z4OdB#8RL0#b3sDSnElB%e"N=3D?zNa$Hmɉ=FmwKl`Ne:h,‰yTr܏p{v~Lփ`[iNBuMm??Cu)z3syӇբo V۝+v*dwMO[م/qT"({&VB+`P) }Khbd Kx$Jc0tu5d*EGCThӏ)^ 2Oyn$Xh{Jm7XcQ"r:b5= };3zxU㆜ZK,ܻw:'/7ڣ&,k3P)ZQ/FSK_6( (a9}Lr3NYDhSCksfUOhnnra*S qARNwLF{{vaސ&Z ^Gt1;]㵸ppzԍ?ev68XM2J%́P=%ʄxʗ ^ FCn+ s}$}V sK6^4ۀxHFx)rOzP骉lG;ɜ.)UdϱN=V$yϛU@1,Jܦ>rh{I3仕^O>wdWf >bPṇ] V#<$82a1KΚT = OLMN{6s0)3(s#l.^B5]/*<O &+NёqPffsQ/jpo@FK'j{q!\J 1nl3D0.'ZA?hQwӀ:jn [.a7*6>[ta36qwclVU͓ڇ9luMp+3)7ק>Y BZzhTq#U HTxVe$BNsd<͓Z=Hp<׏WTPj$*B|yH~<19Wc4!k_{1+xHKǨTk) 6o._cof"}؝ܟuK&NجM2\խ[tB[k E׳VR}C|!rվ1UEC܋5HpwIzhk1{dt#}{3F]Nq;biyv5wZ,} W"EE~'np~i? 5_V) 2P&:_+.:Xeh55d}װ=Z tY&i˧u5e:|N *SvߤB7"%0p2,3U<cc/dĝCĦ(o ,)`5O}a `1N1st4 q(4@d36ia#u75ۚ '5_`gNlMAΗN~-۸J35ƌ@ڏ76dE̱Hr2ʬ8m.ʕ7Kt}D*F8\)g$GN3ӂˠ9ztn4'{1繛ϣ3֋icquF;Zᗝsym| 0pyH7yxx1Hj>7CҠOǘ ay_#ݿHL!~B> UEt2c}ɔLpzOK91EK=Im桛L4)sX wҠx̵GaXr#,>|3> (%%hxMN@[C@Q#7%7&g>k4Aw(/`=eZ՜.KԺK;?l \_ XlJ8C94ú2[D9RQ JK8&\T%Ef;CKN]r}8fᒍ b)mWCQ<;.~ e1ȳGj'm'Ʋ̀hud?D@9H>WUs%bUa9}'D؇bL]ra _M𞾃C~*.?UD.Qz+e}daGR]@vQԪ WiI5fO%OB9$SifB XT Zh7j>iCwDCI3ZMQzr pk%3:%'0epMm(A%> L~X=l#{ FƂG"RwC`3ψ(l]?#|) #Kw`{BDz r؀Xf6 BC̰fRz5Y[[K`5vh%;G(1 (~c̍&YA֙AtoXz;`j]jxqM{ (}M6j9Tsi4Vֆj4I)pVi#&sm玐&!Ơ_ Kk,}f_X([k!uFZ lH6xŕ@vJWjP] !?2 ?5."v?򩉛-+1bQo]KFպ8,`=,_Qu$ȳM\ZPcOq?VX*NӂIpƯ&,C ")>Kc у/ yؤKBg*V1'Pj!搫RڠI,hh25Zv/#rF>[\I=f̍oXmFyFV7jhOO0ɜK.F#*OOˠI- ꥣG19ҝԊa#%y8ԛ{aQl D!J&B) `Lg b&m˕t tӆ,G*CrAgfcO1~Dou3؍ReS "(rҸqȟ@>=" Yn~GVpD:Wi1WI2Q CzOEbwe,ҫT>̢&SʧhvF"Wf`!&1@iUŽ!făL)s6Y$ MZ96 S&b\8iuXrQs)K0]x`qѤ.]'%k$r.(2T8;WݧE .2==LS}gd*T͞}*~rMT>듽oSΛ~v|(aK&|8|`K6M̐)K>?#2dJiAxyF`J%G|aAοCkܹd;)e0¥0%z'o1x>mBi\iʹ͚Cyzobn@ډK 7'ūZ6V i#4' Z, 7;BLuT: \>efLK*a.L0s@i5 +ܞ+g?~Ufw[v/,~㑐N[UejAL~ ec/2@vr٢Z?RMaUf0dOz ȕ6U|$|Z^b)t,l >g"a^kt08{=A R"Gl ';6d>uf=~AJj_pj ,w*ޟw`1]ؙưO*@ efuz\Iy=Vq@D]E4&8!| ኞW " &/:2CYM(TnXCB9QSMg0RG!\i@y.-:7ڭ,={h"G@Ѕ0WށK{;h @@ҽTdZ^?%*gs7KoQ&MyX>6? O הyԙjdy[줛qY\U7[Y3X`V ~`=q ;xWB}qʯ8fr-S=/2JTx&$=*煊T;>tj;س@s~܆~Ճ_tT3xBm*DJ(,mg}U L@~ >0o^=9ocO` CSl{2dG; Znl .kpZ3yHFY<6"`y'@4F)CqObBF4žQ"|iEC (㗐,ѢqSM*Jgٴ@ d|rc[T.(ETS`}PD*;"}M6q"Efޣ[]aKfl8µk73,}ܷ!Aa=w;SMn9ݙj+slpdw-yh3%\,cKh,_vn@}ϐ&a:gV/ *`.U/*yՇM?uu㏎K[>+8Q-FF{*ӅU tSK):W"aIѼ>O_ʱKju4Y#uI_.f} A,AeʙP"i3I C w;n{eI&}qJl G;+Ăˍ`'VҴߛ-3i)[ 54Y)a;+YRMCw?0gD~ :) 6yWZDNPC75KӐ!̑]_Ee{RDa;ǖ<656bmvwI5Ifpoٻ'E}BYةc<C0( h>|/2qr FYXfֵ?k,HLBݥouRuuQ3(,E!aarG=CɆJQ16P լ1Fvy5 ;5И>D͂Jƾ_y ;U,[D%Q X_Qby?ܛCyvj%KBǩ1vK}k:X it_iclS<!g9=8Av:aϦi^LfT>V;;A)RR hi/=Pt$U[m}Vn-g&"3m6RŴ=9/CTca (=T*g,b=| + ۠z+ƽQ&VR6Sb0-xc= U 0ܨ I?,rTl;BbR3 K`KK!wAE!' ]~߿dE"Xh2ZBUq^!GXӽ} ŠT;-wׅ)[, JTqoTU9YzU5p,w$CwL'X#XG!#tapIt_D} "+@c|=1(+` ;Wt=cн[{L/N%4E tDJjb jSMG@PG.cNZg,EL4L1 waֳu>e,vjUMr$ǬCj۸_B_]ͪiMLwѝlB8J5k39׫3\B85^EGd;`xL"B u˗9/ %[Y lzn/ tofOU4[0{ :OY:׍{nIhgѪ]II=?M S5J} c:,y䎿q_mD}95Z,l=s8%8HW0Q_~KTZ{"(&K~Ho ]0N%ߞ%!ҿ0G@?+į7T9c(ý:sQ}aX:U ®ApTbʟݣ,7ngi•(]ܣG?rp=j~E>'&qd}BP$U`#ͦ'y)fjL nt>|LRK 7i7%Ky?:'AY##{~T L09KhO9 [黼B@fu-t9A a'l ,:ˈ0,xvFgɆajd^'+\hFi&.t'[uMM5MUHT9 iGyp(rFx='ΛG ֻxo JP=G qo~ 7Xlv.\T5 E֣y95VeK,cJj~s<}BL:O݊{"PVSSvvsv@âυWhf33%쏹% e]?u;g0+eX q  ԁ +X~=ghOQ3(sܣF)bMqo{0 ަ+ ASFȰs5MJA l3,WUZʲkY.Bkl>-:9KJs~YmKt'K76R1c|@ۈ64>ǿa {u˕O[.k V+\ʲa.[:|kY0T(ʵ,LHPenzueՀCdˊ[{8OHKOn['~u"jOLrYO34p~Bif #i氾fV0'y5:!t~Ccd#A ؈Mw32w3×/WUg\'&K?d 8_䥟SrSydt3p5a-wdax~!׏1⏆1ĔG sht^?)9oDAH8^u"b:KZM?~4W=bZ֥6vyinv!L!( V AU @%%W&[ H[x#Gb?lO4D#5 o3FghތkŹ]@W/Es =%OaG4u l| 1pGGӑf^sxWrJQ&u𧿨E V,_r/p Pw9Jeby2>bI%1e "J{c*6g4pr=p0P>!r֨UOcO^PnvcY>%aślJ1APTRIm$'/$ X$+$;~ZʺDC-4-S B~wQQU]Z.o85Soh: ofBBY*Bo9eLH]Zc$!ά2*AI5n(7iȣ*Q-\CqjxE|ZB%.5 atzM¢uVr[҈| jKGr(`FtR\nI"؟'mUI-d,Ɠt\C~4t&ڲ%&Ү7g\F)*b&Zq "ˑpN6HtY|2 o6lclx" DZ}Vik?vzi#8NkӪh;FNTi/kD6Fyw[AEmˤupJ"PTD2zE%aQOҡͲ&3a :l4Y%]FPTz@<3qj6i=V.?yR=r\\SL нQp4YUA&N2RKDZ^Chc9WP'ϩY곏8f|2|ZU4}D՘ǾzMvP,eDm}ڨMy(.bDPTK"(<;g*`O!p8YB>4ժu+e R*j͓3qU@[CۜD_eGVnYyA D%Һ08 +@$IZ((s5y9wUh>SOkVrNrL&>^Xh-wv[U6LM띚|PT#]EORԞ٧C~P.Lg5f! 4d߬ vUR2hWw@:ZZO5e$AGY@X^  D xV5>,ד5l H q۰",I@}a/JCnkimR0 kC-Cv[ !j]NPS>R(";COsI/M9z+Lf6C~Pipj{s)|F95GC:jVC?K#КP'h/o)/E hdbUxxZ HezG σe_cd)lWA3i,Zi"7ͻ5sJ|Z[dԯV1oL΢^S*,g?FV}`yjM|2, HE=|$I:)CQ2 KӮiƮY$QpQRXh7VjdEQ6P!h)dD>!VAiy99)NU#}j? ,UI1iXF mJHyx~NÞP7ͳ5qŐ>űH*Tݍy5Uuߖ4NꌅRzŚ0aIV H[92ò4? L+bQ0~KNhEfb0v9RЪL̖`H݊?32{QM8!Wr VNԱap&?"V_rcR#r iNj^#a—i}>k0ɣK}kF Zd}"d3*A=({Y]3к+@~) Hy F hahא?+3#`אyf3vuaNU? ' "Y6#֝i:s*`ϴ3r? ft.oF}Z75IiA,1MДL^Ǻ1QSS cٌj_։znY8Ƶ%ZG9̲mǢIJ)ڢR&RJ:PTdiv:>2I>Oұ#K#uI>|' (A)'ߚ\|c:s>{G`<,#~\߉ kwhݯZ>G2{WC_P)O@QieCFq7{8uIJDT=~/ބ|Ez9Gw=#W*wU 3vLaw"lzsWD1ȚV6/˧l6C0?kDӺ:@VͲj**?HbEUL6I> >')]bZvzbC[x,MXe+uגL_rĩ#rjX4z&# = f2I8Nn BA8aA( d]&~PxB*+Q*B;9Q"MAf*Ejy\fMo@K+5yK[iM66~F13 })lF13jk8Vs%\T*o~M%(ywSWG:YoLѬTz]-ĈfO"i)#AOLc.AU.>t+~n4͠&[P8aA.a0<6udW1t2%x'v ĞZp+hf_/hS[{V9A:lQ-CBk/o(3Sc ~<)lYf1=1~0aoWvO" -Ԥ=J[JyGZ΃ba})}T9 ,7| H u:/pd ,U6uVnO v}}} =U5HY| HV\)}YJJDOj+F/ NožN%b ?JR~U ,' ʉN4GJ!礠6|blSKvz) *6>*uZϜJK`hʚu3Q&JPg\Ն@zUq%6dTs4\0s "#j; ѳ DG ʀ}ɉ,` <m&٤sKt$Nt:a4 _݆ZIԎj&.<_ NRl^OxSjth ɣ|dKyk ~ ߒAhN閍dQL_hVX)c}F) eYEbL0>)R=3KrH]b4&| >ɮcr?)iRl[CAYRߗ2`4|g /=]gӸG,%j 1MSjص}G*<|!6dYEP+QԡHTT.~L,]Z"#MUbtЁC6ӆ5V+4vӆrU`iH6ɴa&+gPkYfY&?GsBK2[B߀axߚ !(3[(Jx9?)TS }3%u{K.{Cy@K;xiVx| xtS"N͔*/%e۴G%.X++OI6At쒭jNYZEv W7(':v))4KlZוyr*a/yH›W%TNér7t(p[8U#+?}Pn rA> qWL=Ǖo )vp#!0iJoI$ͳ_-e?(Q%kxpJ~妠k w@pe1j6MˡQL\NS4A$dt5)GbOGɩ:qyd5iWG}8RkIMJu][ζTnrw޳kPBP֓3|4c ՆkB)>OZ/=T'n>G!0cO IVgX*ͤ%Ez^-L/VOtS94 0Pr4fMAbT:9e^U tG\i) k6垈[j QrNi'zwXvR!Xr2Q266Zm\r~UZOY_(A[wHQ]FU>:v|V+B#EjcTyvv|Y]zTGQa4,;O˨:i Y.$X^j]>JBVl^CŹ/f2ȽLفcXޠMk8<\p-K;rXa':ckje$i؅vf<Ȇo4?{QD|ECFI\F÷ Lk:SPp Ȗ]n:sG2}Tv{TA:WrT%1:(4qX(AըPN{UvR\-hVژU_Y< {y{GB>`0vu-&O"^],ɭnj]*׀vC,Ol]ujSOM7uoc y0ii=Epڱq N\lBJEa3-*UF7Nʍ6bq+߁Omjzoߩ3+8r T\#7|"ԑI}r\@Uz(1KՅBQVp4?D1$u;yX|~Xa \1DhL)B  L|xBOʲEׇH+?MhŰ]"EX9pS%ӍcR 7 С{Í-}izw'{;-񻏧- /vCGZs|dp\NOrwf-?{3(/`a,I73{IpUUcJJMf.D _/EIdD3,fߙ"AI&v;LsoC~8ivasa`jt _M ߘP:o<;Њ0Gǔ|x.($t{ 98|ƻ)3k#b/$FQ 16ԓCԐ˾7ţ̂W^a-b+JŮq9=S%B&bmh%:(st,;>V)ՠIx؂a*YJh63JBZ!r:AD7؂WOAG)(V@,~8}I6\]G^P$HJ`}&Z38x^WO\`hc=GÔʼ *1X5D1CI`-̑gi&/"6UGB&੾aw%]h;Xg8n5dr8J i.aCnm0i^;}cŰ~:&MNkS\Mc"-C"dGȟ4QHI6 cir6rTWkr ZG`VSu0LC:]0S:V7d!W5fY \a袻-ه-34zXg\7meݍrJRٙɖugrLB[w& [s[*A[s[#Y n A҅c[lAؖia5H?aG`aʏVNC QLH?Au*$pnS) PN?M󍧠)-WyqQ-~Ch:%Oa}04Ld?M_֍^O`G9m' z=E'`fy>NO?Q {ƻ:~"BbxLm6F좁Bu;JQQԎF4/Cz HWPճaQ($U\zAXP#\BysS)_=rJ;mOYr󌧠4+(]znbIR EqWlSZ+OUU^D(d9b 6h~\3Q\~cfe9dvJu3=!r#;r∨g5 X9B)f[=S('7@Y-i>ܖ|e(Q1btK?/mh:Bhn,k˰X«W-~{-d'rf('l&aiݮk-0IeT ;NG$'Њ_<\in-,X\V7[A&`x(ʓok# W @XG/-,USl yF̢$yY)xF`BɩgpA2=6avK6MG隽aۈsu4`xR&{t ;;Wtb(U`Xz< ll\ciNW_}r$)6m@}[sWCrm 5,I"Ldʮm|u_pݎKFJgNx#(%V[:zOxI^}:ə>Ng|^=Y(|"zm <DzҌ6oMZڙ@u dт|.uS4|̖1OAe˴2J&V44U@qK&LMRH:~!wu:0z%&2%{SZ2JZ.YwT6eu.z$)5hy[sWJArR6Wv'gZs-m[0 YOaQfvmp.qHaU&uP8[ Dr d'L-E/<)cظUAEP1&Giٺ՛Wi:RrM+ȒD֌at 8XUW$`T8~A'u^vLJeH84Ի$)[m=ILglUշY)c]b)\GDϵ1ACyi:N [9 dXTw;p-q`2{H&4`v]q>l_y J-1pe/ɜ~_+Jcu6 . ˁͩW1W8ZH|+SX2BmGu «O.ʐI1;Z1D!&`@R` A27ܘ_# N_%yaxs<+J1 @P吕7&2,W3^*Qp*񰐸GstdyXzh}l)︀H YO V XSh_գe.h4ԽKZ2|fG4Z1]T8ta,F67׉b MxRBq0ӚM/pP%iK~D<B +05]`%C#P8RXCVA'eٹO)1,∩UO~$Ɯ<:TÂޛt$M(檎w=6H>Z`K9ZAf(t@k"C썕/~D0b4b p/[05}58RGK}RSfQ'CWQ2b.aVf7*yHIb&_*+Ts$"IbND\-qo&F X;vV+#`K TZ(zż2PEQd*AQc!]6t`L7)gx\615m4~h0r4I{&ӯd3&BL&_{+V =3ȏy m =s FDDL9TÊ'D:I ƸD[4zBixVEQ/u0 K=w{c#g˲6-H(> bz^<8=e>2Ȯ=^wnGV#ra8L;. 蘎*er<-7gƥg0#9gEJFM-g~/#I.$Gu=%#4bѾ=U6}uVS-F( g?chTb~2|fVvI)Nom eȋH~Oq=`B8y 5^8۰Bzp7#rN3Wf09a0k!7R^͇&^b7=4GwYoh (5Y0<1(P =S, XigW OL&+x-J5}~\p"b1#+mv$Q^8[ }p#rB0YCnLG9 sho|NkRX[x:]d %#&^Q1u*Gܛ$w"Iۼ`Tw qJ{xd"lQ_!{B{z~BX?-KpdHMjLS e[7ȞLA75Xy72R\E?>SڮuJ+BzsԸ-6~l2tߔKmpڈ1g]HjL>YߎDkOQB=$'FF4ם;߄u}~RR4,FNj~lj,$529/5 |*pCQfKM9Ɓ~%5:Fبkd)0TLijt>J[u()yuOh: $zg15"({Ijl6i W{U.52ݜ6PƤ'4UNw{e2(?(czR㏎j e5JFo \*5D!='k=Jj\ap N_م'`bq6,et̤%$ܗ9IOif}|4'uG@ar*$NjA!3Hf@M`9M:k(NWTo+`Πyz ?n f,Q!̡2Өe,Q}P:dvij#-KTAV6b<$JD$Z5naC5,Ѯ +s%v-'*VIcb6RK\}@UICd (P7LceCksB֬1\XF,?(KDB`ˑ&OpKTԨz\,oph+%*5A9O%:ǜp Nx,I&gL,#HY"S-q'KlI,$8iPfͷ2c7iY}5 1>㷴.-x5GZЯ)?I3ڎfbù܇ݡVqM S9uETrٰ֨gL$Y[oh{êufa_%sųXc!u'kwXd16ón|qrzEY8a+nQ[}A&h'vbEcu_60$@I"`B2X*@-fsVʋ;dS<+5<߂&7K%\@}+p-e8{2(!~:-lV:Y@B1]+ B_"Uᖲn73^ :9K 9*|~fkrƍH*.`)5ZEx y,%L{ϭNj[+5P wIXX䧮Vh59nQ82Do9*ۛjhHiKMg(1YHUc>1(Q:rD2UP7[.ȣVhu|a[p-{3<7 C<,*b7'0kxD3F3';fmˢ*1/-/tOCȈD7C\̠%dRRsU'fې9kV;=Ԗ9a67|Ka1XQӖ?o qUQ-YSj6Im i/oZ-{j_]Dl;2B񞳨-}(GLDvl[fVnS1~TF 1[b܂yP-Ǩ1JEB$BR>~iHP5G; ȵ?--pdnQ )R\R< B*% 2pd*ae vzXYԖᖬ4)<}Hp a|fbG[QNJXbD'K,mGã2̮nK!볹(L: +|ަL׫.Dܭد _2m.tLKG`+8U!vv 3MZ6I3[f67X]{W5պMϹ96PY[}\VWB96mFcZ 5KNG_:eFqyQ%cĿ|a766%_`lZ&5."^…ln-#y*gs,rgr4lf ysJSenF;Zb(zLO,Fx,PަIZ:W@2aٱ:3P 7b67u"71k!C6< vQSK zWٽe.g]y T,7˙ǖ=%\Eirمi6*bTA[ցeW o44L>N51 pDbJ;ڧ34Oй8 0ږbMs8mU5kK< [>r{zN޶F@az@: D7Cy$4#h- MX͌P?-ަ.: ^yyh:gPzۮZU\U@]mWf":ެaXL_y2' u_,HWچ^h>o GΨ3G">a>%l:-K(lA߶$sl-֐KɩEX9NtəGRDbV~<Ʀ0ɇ &QaźY}16kk^dcbcgpB^xQ-bz* e#*-ih??T$;*+Gm.Ђ:'p,ܥX =ȓjmfz%cnΰr}ΩƩU>i(]8[u, A U%8 +b1a\oia (@H`ƠK) 84\xx\쟆런I-94*oUh^K7cwѶ&sjf/}2~.4t"c8Y`}~n-q\}п{fq}9mZ]_ak8o㺱5+|wU9[\$/sMϜǯA&eWA%ȍ 8[Y3όߏ*:B]hGo{{CEokAy/HC4NFߵܒa8Emf]j-MBK$O[d(/`Z&IX`v~6< _r)rMAYN,_Q%~Γ+ '#$IQ^R/k/[9)m&eUOûs(=|_b9Dz#qk|pk4pn>*d6Jأ7N2WQb>POdwŸ|g2BU@c:PVm [ (|.=WQ3g x#╳^Z~`V|+K{ |7_0ֻL*Aڋ(u*0Ak٪cђ*zJrQ ,}*E^V,_Y$\NݶQϣR(nyKU/ʚo[!y(y{å8&?~ Q׊Nc*O7.`1>5FC9g66GM&㉮jG=K8 4nT&76##QۚNrkD/Wq-sa}1_!f~2Xc3'̊xUxF7>,wje9QzɻR12ԧF~В5.W&.*yhF fA|MYEL@8`XB{_|.g B ;@ՅԠ<35T!f}ygV,xƬ1 rH-R)0 qRˈ"0 h/$ Vdb2Ս@M>f4)KU ]`SzS D]yzQ66btaraLzG`dQ(ϖwlQz- |LLUlZ͂m5ħ뒾֣%Ր UѲjH'e].D˦wUbwKl9d:PH."ke]jCÉ҇huiHEʺ4%:ˬK8W~~t/(eBpځu`}V4(w |+H;,Qukd=J9h2B4 9TK>+;+X_(:B݊rXʔHT-f)rPQ+ڛ"<[9 &hnaI )5/5R1`:E||BC5TVTph̉! X'HD1 ,ˌi9nڌh`^>Qr0.s0e`K34LA-I7gz /)7rqIJEIc 7'07h|i!$nS{i2 |+zSirP}LSfg j~?~)pAڌwRz+3R4L7 +$*IŘ1 .C ӌl$m.HSRêFHjA (O*I/PPϠ^)[f#iLaShT]66dN.8wܧn =L'1i뗯{JAN>$ZBis9$CC=!z ^|iIkN0k\d#ݯ^ #\pi4yyPkX&͵BKC;'&iGatoֱH?lyz365;ӐO~0Dr`tu`U4SFKȷʸ |M{dХ$ȃ9cI&^* :Eabp֘^UFݞ >&|)HoZiց*(/`lJ3HH,+ϔR HYH%r`ŝFTB;\V8QA+ɲ߿/Pʅa(@( /"a%BC:egysL)I}9}ȅ?5e:i኎+r-tIL ROYf k6K~l1[sItj8LHk4R Bi­#wjhqi:MJf鈬Z'|VfӬS4Sкt$?u mTJ$= 5 ա -~+|h\kX>ʣuK4bnKN_|jŔ[.Re/iemm TSC#S/3;njq5;4Hg sM[;t.})ݙ6 MF |5ٚKia 5PiI F:cyG&TDkm0*iB5}=f*Rj lBB v"ŗB6OeZCrVг=Qucu|WĻB: zaoUXZ˖թ^.A)3c|}a3P`V,>S14(@vj.4EEcJ)ʥ`HWB\23ltD@$aqҸjk;8$i Lȿocd4DFnr;gKrP4O8q0U40URt?jFrH +@WPڎKJV (J)Mo,)-SGh> D |#jE>Q: q~B!sPjIk5,\ꗎAIo)s?Mj.ThC|,- *Tn R[DZңyqU:kVN2Z:{H'.cl?5j;"(N ÿ&Z1$ g #X_Ѯ,7ͰJĹU&ehbvNywq:  pli'v!,J .s /-׮ơBP`x˒:c׺U˒,!|RW@"L3zfe ΄_qSOb);m^UzZՉ0#i,ZQ/fк!3.ϺͨYa5SV,ivU .PO/vUWcK׉_lTemxEعe+C!b|-[ݮ:P3|u ..{ޖ36>_KĽB-}YD ,Fq?c jS~vnrYE)J 1=# AE*\(d@$toolpu=uC D j pqLbDn@O ߊf;Sqh.m!AYNŠټL.d'6)E(m>-S-TB#?״~+\C4G@YaSФ^+E.-D "Ƃ.]8ևniTDnZ1 br]ѐ[n(0=|vSE u4 pp`HPR^5W);?h%%Ö%wω67`IK0Oבz|d*[O@)a ϗq^AٔQ_tJV9vQ 4^!""'r4G7IC CFC*K1nڦ>jv$#$SDu|KUK@̝$oLX骮u 3'ܬ)ߘGAW48%|0HEUzOπ:"xsGqv`8#hGn"J~?.R juh|ll&T/xQ">VzDKh*OFwB .iPa>ZMJ+Ѣ6j`0l~Q.MDk,æcSMzbmloҊ!CzKLfv+3L'P/:/)5\_cs>w#$ Mc˔>n0 = !D}ljA9do Zɮ<' z/3kh9pιgJ7֡p2qc ҳ} env)1nІYig9,bo;ѭ2+`D[J{NX&sx Bg+\WrSet (/`]]j*LJoトK[fÙjHHTEXuQ\G]76($*"I:Iw' Co"Aw'0R?HDu_-l<ǵPdi(8(Y6Bj~N3Dq0LgO±vROh!1K<.\&0WgHaKŽ~BHVpPsu.h2=ͥґ6dY8B[8$[փ5=#.e"n t;)| rl1EZ/d\4j/RqD}o OB8nWwHM~{&O2pPrK[~&_AQ8EHmFY0G˒VItg^Y>hC4iĂ4Jw|+BR:A犕 v '_~Tqlp0oڡF?$YwyXS":G>NK@/ ơNi&,z΂OI}az %|+ 'f՝~#]` =eM]qM^!14W@Gl2 fi+@_̂ ~n| U 4XoϮ!מlhhә *%qnD-AM8GC/)H'|G`՝Řօl4o݁4ʥևK!vj-?b*J[-~ ll&X6^* ] ;_)]cx+sTBd"1󠫣6VxOJ8e(;|vRrw#Y竉}e: OzAZC9bɼ,E&F:7ZdpZZIpA87dSw~=$l);pˆΕGqdXQr ^>@R/ ,O9⑗>~_Nl@Apok ׾`aaoU@V%a x S]~2jud$S0+IM3ΛB -3^D(myϲHc@8I4v| o 8:M~6Cz_v"L]Jo dB*`*Nqᡐ`})@"+]͗>u`% Z'.+0fCY$/'| Ruyt̳ Ux0"-Cn՟]%)Ĉ{7ݐZgu&ɼߨ↵>ϕ9yY]jۥ?^-_m}e1vs.\/5Xo!mryFYtq.gtq;7|_ƣ:T5"U;0h4T5rtHU!c`y)R9DK>EZT5 wVda#;Q+Htό3*&o ͇du&BD&KԨzOVD'Y<'.>11?Q>ڮH5m_Dh;%LsT .cP`l .SU.}mw)IEu| X/Z]N,![K@j`>$7Z>_E'?hAKHO1Ʃ$i.#)$+ǟR%Y'gՐ~CpZkC dCSGYh5X?֑<!M48/lqi)$'ԅxɏ QV¨'2Q,lm52>Q"Ug\sh[QϚ6VW8"_JAᠦX+ $o)T-OVs&GL[} [3ڦ$grìzi1K /bgrF"wIUX]Fsu}Gڍhw7ŠfwG-CJh6*0Ţ{Ku* 7bXTu * I]`M5| y *NW0FL(Bjy B1j-k3+ԡd%mhj Z"G"h6sBAT0 ֭) Rȡ|L2Z]~a8Zb0ʮ؝i~Tڈcw4ΒA[n d~Ճl: VnT7*h7- h7E˿ U.M]=tzIG92"_z&O2^7f4uKXTW8=%F OV>IJL]$cJpE7|HT*=m[rR}*ZVf#wJc+Œܮn\%^]Dէַ|wњ_Vt:ͳOC+v)UΨQ8*A0@` ZLjm|7 -Ln >Kk 77+ηx$]TϋV 6T& ,++/ թ]}ZE8?䚳ȟ8gEw0wW"?%E AE>Ao[#;^_|FC Lku IkC^KH#.wp;&]>Z_J|ՋZ׽T⥡sȟ (Ngñ0?.}B°WD:(/`e@0JJ}\#~ - (yjߜqfE@FQ ԏ/fMieVsBO=K  Г\${yRE*r,TB#I"D4>]_"!.j=u"G%w Y #Ъu$Vh'Xu:tx]MV.E~R&VYc\`w a*6L.!K~"$xb['? #o=NݚYI񰜬 Qu5oƲqYsRoҨS2a@J_Լ]ydQ%Dv8W]`_c ГZ0)i!LqZRCL$U 5%g2؂1NK.DaQ*|o&,YU2 fې&dlN8y7KU@+зQ캫<㲞jv\՝t kd~&ƻ"nYGF3jiTջ.F20Cߎ͚]k9x.w}VRY6rQ+`6omi$=F2գJːow{FqH$ppEN^4'=œYBɰJVHyj$U+$dn+^VO B[q}TxcņF+fDhi+qKlZdv%ӎ7 KE۳&^aԢƻQ!x%X'ԝwxFx:d&$LP}[MR=V!yryWu!lWTkEV-M6>ƒf# uc-앁HQR﨑_KSg\wtrE #1݋Q7/o˦K%lxom43[x.PB[`'Io~G A8cJ7V\{2I7TTAĻ'c:'xBd :2%W:Ytӈ< G8x?Mg5)+6;lWD֓~.fSuzc#ԛwيd旱xKw,Z',߆[[\kdYĻRvl0c˻ZDMrj/s9X0?hB/˹/g; I'x3XT cE'8(Ix#n>k/-d;Ey`ð8H~/DO7ϛf#jLDix>bκ2Di,=4;6/nu^8x?>Eq_u켡U.hþ IUyGUԙ2OSUIyKH\&k2M?wcMS6rM22 nǖv ez].^bK+Y.^X7 NeAsjQlWjFTy?VmUƠ|KӂFBJKi~ʶ3E0l9w Y"@v M^n;g69.$ CVmKRH#hx-ZmHhGK@fb/9#ډ 2G)YJ/4+tHX}ʇ}ʧ G%\`IeWf y#ðueGoZgz+~IÎ$SS $~o8-LGlIaR\ƞY-kD2T"&Y-փF D:x4eEĪ+R2<Д %LkcS&ݓ)xz; 28e:Y{˞0.03'X[{m^Ue {x3`1xRuMp%]~A1fVLT$4b>" Rh:\?IO :> jEUZdp:,!-< i:Qdi`?W+Och9M,x嚻G[px-o eL1(Ʉ`@43D=C0&1B7*69\~Uq_[_M7:gQZK)[׸oIµlsOO*K{ <.|?v~nq}_ zGtFɐ݋5/j{wHv.U)(/`b,FN5Y5&KQ @JSR.n.@  ?)"B(La[3-fZj , M$Z/yDRqbZdMxB9Iܮƿtn&dSD÷n5JE_9uwTJ+|((D:Wu#%x?iA*#iETJn ]cq Kp{-T4ͅ/߶Om :QEUk0\aïrb-P_]#rcB-ƒ;IWH78hCAm+hu5TQ*_Q;>p{:떋m 2n & 땍P TD[N !|vaDӌXF `_OR,-j^ :7nGDw)d$,Ruq' 9DTQrmed H SD kQz +5+.57]#ʹ" ehbr&ïl9gh=y5=LCz5%(7gi@Z:\]K(nSMT5T0]* 8[jc "!Ef* xYbl\pώȷ/R'%O?=|[4 ?N)|㖉Gg@ߚݬ(WZgPbc+-%hq(5ސjŷ`#j'5iEDgHʨsڅ/[;to0QAI&UKq2E|kW}@~U[/B:g /dA y*so#6ِzAg1'x1^GÿEyRŴs}t?hԴ" 1o+YBiZ{t&*7; Tٔq#҃{f(rRӚDNPLE!j0մv"t!\ǿbY(;`~l(!\ՠ$E|uǿFlݓr(W<cĿ$,P:H*.S'@d3&djq#uc2 =hLc5PHCMup/?|Kբ㞪c42'q|ݞJk :u ;KiFg]Z.Ec4RjTֈ_:5d g|(loI/AH W ̨ќ]pv박A ˿W#~@FvKSM'@>ޥ~ٗXdIK'zDk`31a; wS+g6^PӚa%5 f>] \Zcrut`! fy˛QRi t>[%O5Z ֕ i93wT&M qʱ+ם_ %NL؝Wr!GG.ˋ>!O ƿSzKR X%=/7%.ߕ7*g{R2uT_ɝ0pȠb׫(ɠ.dFh!kL2X1F(ް[5虱iQiF>q-Q9hi]ְ˙NnV \$:;M҉ӈP̆"]`6 ]hbN]_|6FJpXB֭g|AlB7hwsC i0g5îfbdvSWWid \cK\Ћl:ۆS5qR-/q%H Ϙjh&A[emJ3pu- 矡9#'zk6L(G+PWԱS2T[pY_qa!pr,`u_ Ԫem?7NjThW!R" u2Bĩ8=]W3c?G1(1"b6-g*fB 1 02CLaXF31B5Ja?Ć 7˵c0q_( Lbs};R5~A,3S֊\*J~@sɂ|4 _ (:WB[>K>>=X|ܧR.Ϗ* %r}!:t ^}!(/`ed.IN;]3[EUn !˖BbsllA IN d4gL{oX1 )BT I6vXN@ C :%ǃ.M2l-Z܏h~ګ>¤s7\f[GthI-UrZ\&;;Z9GwdR$1GK)<_˦SFwݴq?6퉽f ǚОعHx8M]L}k"~J[}=G! CiI7LAmȗ> }:KMVCڸ3͟#cPJZi;ݡ=|i h_9*Kudiл_B3A6(~3{iHh[F cpO@,i+1B~з g5?dcOُe 76PwHt~hrXTE.?bI&K ə"'_n04n<\~̓oc)Jj uܭJN&VqIi˭VI% ԀV 50@q1 vVط:f9W**` Z~ ;fbWvTEoLs,CbwߒSej`fO|l5(ndr #(nQV @\XT>NjUp[*D8N|ȽGT3|#ݼLk|\]ƙ)#^) ɓSuI176ѨjA8\I&79ZW+t#eiRUO)z4 PqLEM9]#gL~ @JQEi%֦!㖏 iQrzaK.:|'iކɂċ f ]o-׍Ί<ɔi.mXrDU Z6l!@W8yBXyYD<-3VdG F Hfhk0ZGcS$Vd'Qί\/$[$ MI q!pSS'zYݥb^#HNYJ9]ps <{  nV$G:wY`T3DqyDKwK u &UE&$֚&n¿`kBsiHIE|K=%]C0ke넇aP4D?6C;7׾,|KHlп&uBQj#xW)AǰXN(bU긦gHF9ʁӈfTE &9DF4K_e|Uhkœw)a } 7c.5m!Қ_&^=$$ʏ*)(^gsOA$+L^7aQ0h$(o EeC؞ .ݡT >]u5pҎ5x3`~8f4'gvk'yS]>&:Mp`o&TZnqG&+34v:͈E:Wф vd{,M'Ja|rFu\{d; /lij%5Lsmѩ}v-K2UxSiFN\ h4%gBh\CI)B_%Ҋ̷Ԣ<7ekvKZ˦}wNZd=WGTz|Q2\^U&)ɬ ~ǟJw=1 %0)1c8_x{{XK:X= 0]uB^n̒yӾ${v\}&Yw:ޅMl@# O2_뻕X,_/yVd.K^L~XB 6}QߞsY}̳,C0v?݉<K3cy)8W2[)& 1ǰ }cra29S19&m|%A:]V4$T e= h8w k40̆3IoIeM t^Wܙ]YyP)LXy]hV9R䃕f:|p"sM#u;gxt6#4 !g/@H>5"Y |:J}x>8IG{\a󗶨{pVK̗.JC8EK!6Α h/K%?\e$i ."^aUЈbT脕ZH̙fPx D͙?,*XQhؙ1j6"Ѿ$rg %Q(@I~w чS p!YN`&-Cd)3{ _K>dj9N/iOec-mڗhcK{Z멕I-h=miR(&/QpFw jR8<^ci>O$>}=w`;j8vcg? QF79k7ͪ9FS9U>jۂ)ioK6V ч`Ò54$M[C5>v+ UjBGqh>9iXUT=vp,kx9)|#5Y.1}qhU8hB< $}bݎ]ݜ'tx&uiC(UQ{(DPwiE0xc ύr=jZH!OuȶA-Jɖ`,8xr حsT\,Ԫ_8bIyٍ|HFI.%Zb5SܺNd^|wHb;G83f]@EZ;Qj,YsAgXGT=[fɎ?"8i9'@Ǒc&ZzJ HӟJ[l@busI~s{gӜ".Qg}8Ϯ9t8|HtŸ^w2ACNn#,?pLj~ $K4SwD>I,H^I)Իp"B,b"TB@_Y|&j'ecbCXTuf). 2Aw)!**B Aa+}!tk|aZ9RgA5)m$_QNbI(G*a/͠mVrOp@Jl~Zp5  e_§s>1>/a\/|^JU2ކbq/?X8|)א-QljҘR3gX_ħ CJpaf?/O/ )Sxz˵{ Md: 8\ŒXԃR brvoФn3_Rwڤ&.S4zm9Lu8- at|i 1h]/,uN ͆u0յ2V0V#zuFi* gf ĺ_ğҭ)*Ұd tTCX)Xkq",)NrӨՄ8;f:;fٌ:Z1c\h6I^wQ,mа;f45$?I wǒi)‚(c;meE7%v[* 9|j pRU< ߩk%R qbL)gE$<Kқ-9vk PH۔RѽU,iG4m#{VR^U4KճRv.Sr~cjH~ZFq M!u#+BmriX&ZmX|NLR*nз Gބ$$]3™q]C7`!gblxQWΊ1&gf]9+g0u0ټ&!(xl-&[D]d4" ˌ!v2 i R9lFj@?uBpQ1P5a2s(_آThe_x%FQ<_ܲIYHi VC,뜴J !b))kETdW`?фOlbEZrcX)@5=#RbI,QcfaB+pF3 ΤE`A9OQ@q # oitC's;|[2prf*yoH[:Lt0uӏVYzko֘׆D\Sk¡~ޚ D{5TzR$`њ^ª8LޯܷAْK}MfyUy}/.{qOȐ7#'a6Trj[gb7jWQ˗mmPNX.XT(/`]hZ(1JRQ.˰k ~VՌ=<3It 5+.$.'|ާ s.RqvFCkuhI7iHt\&WI/D\;kRcY*Aڇ\[ >Blh8,&xj HQ܊h|V.l !bNlQ|`4/fZ wPF]cԢgU'31HX<* oRs"UI!^s)?vxg#5,lZAs&IWlՀaġpLp%TctgYW*g/RM{1G6fg;d`켊_8CzmbB]vfeoA<Vχ[Hg1ݯRV O5ߕ2) TT| [V}Ӂ0)GMjኌb-n!ڇ+SpPi4B֯@PGa@iZelP(C!pRIlR|KWX>UJMyKcQv!R9Ν4JSe(vf LVA_bp^:ZZ[I-HH!1r"S{4'"DV51'{.1a@Z5e.f YP$+${`sv9μΙCp#t8b>˃)Gw-3C8:PiviT!f1͜2ESA Z].gYLx$"-.Q[TϜ O5:@w j,$C9r/H\@ԥ<>t{ƚO0>@hkvaGDT\d~UL0="dI6Mmo2<͉lK9l Fsj2UOzW,Wy Y?NP˪Rj&|ci0A|HF-_@&cϷN]x<#pG Ĺt ڝxWif˛T5 eI¿H?Kvc4+y2¿!p(Z,+>v1:5or/>{j >Xl:ڱ( ! -M/iЛ+ ʊEm*ХؒHGv!ԣTjM|ܳkc:6q ߼Ŭ]d5qloRek0B x?0 Hģ0Si4J׈v ,KeJf4lO* |{H6=D%kIDA[):0Br 5[8*N ի4'S<7yװsPjVI H&^h2Or0gH,S&!̓8bYp=j Y͟,usԼL3՘rQ 8ШpЀp 3Bcsr|qxU;W:d0SIXAѓl& !qzFPl!|NngN7Sgat2 VnSDI$nN_ضzmoAbPŴ&]eԈÚa&1ؘ(+SsjP|.de8 :7\oYg&56>tYvW8;Tbn2<)Z(zG5_7bf(zP<e N5w|tԒ4,F'ӱſ~SM@ƣD@U)$ kF ;ŠtM`%^.  ͠k)&>FL+^9K+!J(6 BFt5Qa +X9G/Q4:SR`phۊUDVYg]ӁڒWH@)lVQ!2V{}|1*, WskaCJ(JYgאּ^ےMS5XxΒ{ыMYg>!Y>*2r-OTYVƠ`3<9$p=R;O%X8z?R92&hUofejb]J/P-2`nXGVMYr C -r )>zjʣnse |tC2@MTBdaq?0^qnzM9Sn8 huT5!6j4) Ѡ B NAʯaѐX,*(=mk]_ղ?vhBmK6[j\kq"tbHG{Aߦvįki+5\UPS wd[&ȥ㄀tH.}gMɾ!zN[qG00P$F|!qQ=SAXI^WBcĀ(Q k8Gh7(Rt#*B3>BihzNIP "0@ T@!L p)Sh WneeC<.0 WԩPcT r@MyW;@06H_0Afl<.WkH ZՍ/ݾ{6.a}ǥe2BZ$|0ZN{ĸ!,EIҝf@cKẚ(/`c Լ.KRR^k~|)ARtNVS@r;O㚥r}M&V@#+zUS(X'L2n) q'r$Fc.|~x%F`C>b~7aOh?Hb -lHػ d >=DsIVM (;gUy #օRYf`:5;s%[?lciz7P崞'~0PuA+gL3+4(.14W`DCyM`kHX$5"aNtuV\3U4Ϧk爊Eo(NL,[P9gΙS]s5~!PKBZ(>KJ_E~/J_Id1G`k1߅X@IJGi͌~V*hR5$L*CD7Ҫ$3kɫ0"R+Qz3tAۆ L'ŷ.T|o` tD%-kPjF>VvX(=gj1HG0j^?I |'>w,!"`vCtzz~Tkf^a=k^i.F9X=M=v ǛHJ T?NI~u\oC"0HBqߏl$fb4j@s܏X7}Fׯ$QGKIB3^#\J)Uy |Th,*UP4gLU:˳'2 Ʀ; Pv2Oj4 ufQi4IdϤҮ4ySfSL a;H3x쒾;"_L& R`5c/BE gҾ @VS!v ۈzJhU{X6ݶtſ{E!UcGأ!(6P?H#8hI\Za:G@*ZD; &\ꛦ]vrRVZaHVn~Hγ1`YX>%BFtI1ӎIZ V{|ٽ6z OٽIh J$zMv)?XinŇFxXwB|Z,ͬH~y@v,mMR=7KrkF)*:+F>\MՊ}w ^| UME:R(&LxpD#~\5!t G>R+;!v$UӪ_)I Pa-N .(H~RKΫ$ʦ,*Dm7ɀSr+gRWzx8ITG*~sT n9R'JI.n9lWE@PرiJ\&֬E~[TovXMnR0/M@dݦّК_F-SR&p![J|&XvuJWuiN({敪U t U7bݾZ:=͇C^#,TCh6@/Z㠈r@Sݞ?A0:5(L@1ThM(\f;$H9YʼN s#d )i!f(;]"^SmOmg%b"Jv+$SEөdoDހxP*HE^a/:dﳥ"_L&>!fhEڧdtA?هȺToǽb] /+[\zD Xj7PP!H*(kB^[U1D!~FpSj7GSנrLm.F #r)YC}&{ZH>KF3𙲉K Pv20RN 3ٰqN.D&9TVi!xd;d;eU s.GH sL*r ؍ЂiQ]bndVz nEjc5@Jh!HvVij%KD={TFpZҪjBtcB?Io'U:ΎE)P?kV5#sxA(f\T!tP#-X R$[nͱTIߓh;l@+M=re>Z]Q~x,3+7'%IdĤWEtי͖ɹdJKHp\:Aִ{ڔtx>t!8TtQ[njW!Uئa(/`f0EP2n ;'%!!f3V{8)$cJj {7P;e qn%;iBb)B_-"$⦠sMvYɾ]hVۡ73qMt)nDQb[C8꾸ghɦd&}q Ƚ/C:2*:os&|6K(S"$X@l$QCZ uq OZkCdpC." ~ 1*t]^kWs>!W"*xJLӖ'5:El=J'FugϖWt+.TEpI TWJD3gDl, 69̾fF|6Z8ϲpбNۡv%$|6epi/7?q%mTVijdWg1,MDWtz3qT1$|?9c,Y~зtʡR4W_mـBdRWx@scƳ>fZ@vpGW8AC%Jh9 HMs1|Q $gUkt2($CfY0DݨE`AюX6*kc )!e#Ȳ*r_4EH%DaM-D 5dE*ׂ˂4SqD~E[6QA(]>sZLTfV Q0gmad2wJBĽ2nd&h[E6Wf)wf03G4Ix2s%be / Հ@DӁ> sOvqԝ' tX 3=5 ՝M;wY?msV%~-|3:(Ҩn9PFmw r% /t Ժs'byzͪa #ʪGtU0;.ia.(JIȲղh@XVu> e1g$="B|+k|҄;A,T.i"I4C(ӟ;qƷO, .7r |K^1eT:i0v'.b% u*t!.4S'dU._s?CooRohW-|NOeO hЯ'@c{~=ipz'Ds&qT<Ll]T){t A[$h5\^!:˃\oE4D=煶<D`АnB«_o c]_1^jR)]*)~)/bձ]NM &DvsDYHoAs݂`WB? `8zHc cT -)qJ ݚȼQ"? '2n<3WW#|RpPFe~e7$VaS SHa[L(zV!ZAT$q0y@j~')moERNs%X 1 d]5it$LrkK^W5#!!@7 (YE k#X 5!c 5Oy3U %rGsNޙ @Jk9`8;9 ɢz ])'Bk/(WL:JAѸC~gI^r\_%·0 #@\ѕ;CTCQ(4F^Ckvdo0ROQ\dRClRNuoklU  YNq#5a2HgD2I;&F['AB|Ɨ:T nV qNm;j3Qr0d!KâஃQ]a)HJ(=Fxw(a:SD)LG[&"b efY %$: @!%߮!ʳvR qG o0` M)_޾ØoiE%Ԅ(ƑuKˍJͅCW v'yb.)< 7 ?&d `QǤ%:ᗋHdQ-IwֈaW#4Et#=sđ9&DmW>] ̻UBQ7В0vd .rJAL!h(C 8h~Veqi%8 r?՚ۋ0Fze_mt›}}Q5ܡkR? ă.3&o*Ņc]jWb,@=(/`_Z*IRg/Iޓڊh̙MnBT0 |3<$ъr%f$wj#S TDLº 96--eҘ^!'A0"MnUYŎ.ȕ`fh}30O+ʖDc0S|A|zOS~/|-Y&yDi+4}$ $*NR>:Gh`eaOd,5S yǒmz9Z;.C˅$O0RZvpUtQXO0 m2F_~zJ7xI]A&?e@}r_S~D]q-4\D@~ZCUr \skayP'?\0X;Q B=r3生oܼ#Ls+,e$ Z(a _!%] Y[ oƻWh*[K+_%7@r!@YKWq^) , TY(θ :U= G4g1Sq=Hl9WB*2K_}'Ttαۤ}nFujp:9uZ!xWa4 <elretZSGf*cEgHLmY!"g GY p }8bg P-ԷBT=dJ \@d8kMh.OY 4,ٗ꿥r=}PTT&Wo=l*H)t=6)Cu}tYV]-T]4"ç4!.ɩ*{Mזe:G̓5SÐXDMJ.uIXMFfUHN]|: KpH6,ˁ1Ԁi-1RCJx`.>>oTG-t7EB1y piIr4 9F ?W* 4-w;sWW^]&Q+FWYEwai@eGhJ>i̿iR!5€pr`I+GOY5( k)Ail_?#ܻJ6U̵Lߏ4;fFyȃ1{`gcEY"ߵL>&i4 O~lDyQLtywɄ8Ór$stڎbTK0dԢ)BcQbpQEz6%S@I0|KI̹#zJ[혴E/MEs qt30 F" -9 ?M!MP>\C 1C ɺEt`shcFE"(YxPAd!CB"@héIU?b0ԠC6la|čqW[6㌝'K@] }4[-; +d< h0r X@1_B~`ޮ;̗ޮLs[+]FtgoF=~ԵdgZO1W8zΝ)пh-GFR ~'#&v-ۦ&O?іIW5%0݄N`#S$C`-tjB -t3]QSN6e9'q*c .Y]́m^qOYqT5?f؀<_#>99zLf.Ҧ#|)M8N D hՙ<fO."up  9\5pȬX ;ݤ\WNUCG>T0 +PƑ>1<$-K)Y8 t04?0pZ_a& ybjndbPU d9%"14G0 @3ʋ5A͑[H&%Q9+aI7ePU6욋:1{6|#Ecl!+d knkAU!rά%Ohưs٢cDMEX& Xt:WS(T00(19tt/Q.ǪKhF Hh.]18%(JzsHtrJ@8k9'/yʚwT؅TC"6SΓ>Gך5ܢO#Uj&%ټT. (ʲ`MAbJZpwQ\Scb,rpГr( -Jk0\T jryuKK\G@9"𮃱TE #)Ɋ1\)QAzv#s[uQDD>Z?ݒ?wL+E(s<@ yJb# DSTF,dZɨLo iytLt>n{7|g0ҳf)w\͖VZiJ4&)%X*R*(''IIITIְ5IGz_5Rr]jYbǎv ZͪXŪW*UZUNUQר)BuHOҦ:թM RT RQ5tGyGwQQ6z7jFgFitF.5Fct0ho1xґ# GgX+f4xъb+*)Fth)bCІ.4NF뮻溜\||\<|: R U2P6uj))TEZkZק.ШFu>UR}jTSi]JպiEjU)U}ҫ^UH:Wꫯ TH:׬fuJZ*UN%R^u[b6T{ꐊ;RVdjU,WZUWrW UY5R#guW%]HJ*[M$o V*dtc ,28ٰ&:i2铽nOq6B).铊I4JȓT-HIؓ*)URUIG:SzJ*QJTSZNZֲ:i5UZauJ+RVY,\ֲ6YڤPjeR,-YϊYh*g;*hEQϪָ5q=,Z*׸jir)fZj]ڥfִZzfiR/MZtӵLڥo/}kۥlek~iLZn4i=7|n0S.mk[tKTKTLxsyS1S/u[4ضn阎zOsuLɔ,sukdJBݾ󝺕wJJy_蘺W1OŴm> 3x S0ek 6صv)uKTiEYJ,$BB@E1 F/( M\a%a>C\ӆj=Q~Z4ި7,X A}7y^A#z&GPhKG2"g*g^O7 :.y'Smx7<Ɲ<<`h*C8h(/`] .6XE4o0Z-gywM ܉E@Dڻ%I$I=Yэ4 ?'zύn‰vhHя&gHCτaFG:Ҍ-iI#Џ'=hD)MGO\Jd3a-mm5ӘN5QLg\gִ&ܗ7]iM9͉q9,3 2ιӝ8g+iO\^/۰ aNӜa4AKy8kPwx:ÛaP_zwқaPZԠGr(N8?R7<OMmQpԧuAw jT:XC<ĢS0qZOTԪV5}و I ߼U|#YjS}؇M}ĪnuUįF]j!_CZ%K,W:Lĩ.bW 1a-ĩVbW;ֲ^uc#xG7Zݼ]xgnY׺մu8G\Zq8ַukv#!Iϐ ِ"E:cXG:_] j8G.aøjE.q\ cѐdD4X9x3i|D#K9axf(5QiD/_"KDjDcۈF|1^|8d Ȃg#hF7YPgTA7 a _p X0eH_8 ʠ 7pd@6!7~x.,8`7v`!B` wfKlA8桞lz` Hi.B) .2\d !'9Cv`Ͷ` 6{-{Kۂ/Lf2#8|DVr$_pN6rPqQ s f1YnL3fHǺ3];3iNC; Vn4nͬf6,(W0\cr(r}e[nv嶻n8ùn7y8yn4]f9˹sn:n9ۙ:י5v3s8Ymslwg=K#e>9z3g89vvyy4gA9ЁfA ts M> x.t|@І3hD#:ІV4h>#hE0[ˋ^-9:8J@mFoFQ 32*1 @aE_E]EYtE UѷխnmkZֵ5gE+ZjֲdXU^+Wڒz-b-"-,>AYtN dLp *WlEWtVLHpYWTTEUL"HQqATAOM@R,R$EEqGQy EC1OEPh;=k DNMxHX('1%Q#1B#>#:" lEdDF\hXH(|؇}ȇ{&ws I/ {4bb"4஻h{믿0l0s#\=6a1d1 \v`.;7h{o8o ĥ^{Rfk(FqZmnm=n-6^cY|6pmbbb]bY _f5@v:1f5gܶev_gvb3׸+VS,mlc 07vqkb&`xkט 8:qI\15wcZӘ^d! !☌ eYYUZ'STS8[77U[}ӻ⽽{o{^ {m뵽}}^z([UTc{c7^{aO쉽WjV#]Y*RjW*g~fʞ+>yeK{i=zgbpO-='S{`/*V&m/ZV&eЊ;{fuR'ϬO^#kFydRop{cO셽z]=co߽U[MZu[kVgUVXuD(2%JTUVMHtUYUWTUUUM"JDQuQTATOTMPR-R%UCEuTGUTy UCC5OUPjC;S=Sk( TNMzJZ*C'5R%UR#5B>:* mEeTF]jZJ* |ڧ}ʧ{xywjtZuJs*pq omz׻]ٔu+]TM皦i:W4=SʵLtL10u` .P//ڥ*KTPjBO 5%jnPYXBA^ZUA;hr :TJS*J4JI3h:6)KʤLJjA4II+(5#=R#HH4B!}tHh R! e GHT&QQz@wGytG (/`] y.-n\@BT2rssYC|Eq24q߇H .]7Lf1әb3<99i>|f;v3l'{?9ۼf=yx^s4wa~)3({Sp,hAs3g?tm׶}5]Ml]M4DIm6umBx{PE|ĆZ$6XoCzꈪ_FTш*bw}}Av/ڮ!^hڋ5 .tޏ~tގ{Ўvvߍnߌ>ޒޑ޻БtGCҏDmiKMMiJZҔ'-iʡִ~S?ØTESѾB5ÞsjrӜaMsZӛ޴3C7,jQ0nA 4=O{S3MmLä&U ԢEL_Zժ4/¨F =U>Ղ;iWzӬtYLժ^UPZֲ4?iXúӮ_jWԣuGMQִi-YZֱu.O[:mm?a+׼]\TzS]Z׺5.⫁ Wl}ռ5{k^8~Y16l`׶6mMl[󞉽a{O-LºVul]Ƶmcu^/$e.ae';-fn[+hx3'01gc _l *jwCPx:@bkXqXI {h*{ha]+je+C$qAv m{Mm]$$V{#V[pmk8lహ9ls0+^1)F)N1Nq(Fq'q/~q-N-nW+VqG<8#qc,0]|bo|ck6׸5v`؁X(Qc89>s|c6v1}c*1Ucmwc8Aa>~=1\d 2m|#۸G.\d"&7%%/YI^r$#o?oc=` q1Nvr4DM<)5q艣'^;kCk(4m5p5S{TB2mhC]l.rhZгYz g9K/,c9|e)Cne(x[.<瞱5`3Le){RtwtsUUb-b0)Xqq9+WsLf2Y\[jshq39@r.\f3f6ykVsf99pNWTp7_݊hVԣ!q{cGx,"zֱE>""G> "ڭh-PmXy|G̣#qFl?2!Q%qBH,GGDH|}DK#%)Q)Q'q%Q2"j&*"&*b";%^: 艞؈؈ȉȈȉ(!QEAC (bDPODOJDS4I$IH"PIQGqE13UQ//]: "O-@MtEWDVLdEVDUdEU\UTT OEYDXNEXDWEW|WtV,QZEZPEZ EYEYYXs1׵xZ[-mяaSE^M]R]E]\u-mt%+}{WkFGGb$w" 1qmm1-I..22".*2"2*#2&c2"1b/6c3"3* 2# 2 @:28d0`S`3@،'-e1Vh?MK` && [ Xx8@V`hЄh;@f(3/+pW Kkq x)x8'x\a Gpg(-l0"+]UPQծ*~TEUT@ DSOQ4QO}ڧ~W>k_OuO=SCC=T=ӽ橡j^t{<kj]A(5yjPֵpӻ)\Juj9]NUNjW9@SA8S@@ T8?}S@7S?u?S7}>mS?6uS>e>S6m=]S>5eS=U=S5] @?ڣ<ַ򨏺uG{GwGu4GQQQQQ)}w`9-G;-[z{ T$DB" y#W#_(/`[,:8t)PJ*U"R^5N)^z nuW~Fߥi^{{]] qA̡E]?S{CO[mk6[elZ]XƳZUXM<&V"5VUE[mUN«ja N5U [<MuXSTIsC%T%5RC5T#T3 k詒>*Fjc{*XRel` ve,cXu+`W*֯El_ؾ|E,bW+_ WV{%l^ [ؼux%,aWSvTjǎjj6*bi^)TkWR%U5u`jW5k]:Wvt\Wεq_*Wµ}k\Vpի[W5mի^V~j^mUO+^=SGXO NUQTNP wU+Z/ծi]ӪֺծvEkZzֺhYJWU:׹ZYZrkZ*\׸RJV•euXֱbu[:O k[Vz*~RjX=XJT.TNITjuUZ jUKTEҴ&Z՚VDMkZ5QzhE"Y g5CB5Y P+P-R P:ZJdԲUPuJVP:V@ ԰XJ~ְR~ʥ^:}* ꨌڨʨx['pAe0[`29XZg98Z`,oc9|e +cl+_p1l zL\2|d$KS"KYE62G9Njd"CD>!?C&rd' yLrd!/Lf2/y?r}d% INrOV`F`6`$G}d#<w|#EֱqcǏ8C1|c Co Y51i Ӹ?16:ALJuTG(yX+qyX(QX:>1ql'qq$I\mcMb] 1Z]x]{M#G5=>`ǘ,1_b,^1W\{X[x[sXZ8ZwYYkmbO|b.&6X$ꯩl:?h 7i}ovfgmmi?bO{ŕs.nkMo[Ӛfmtkؘt3M/=iLczҔV[җ'vV;ҒFi Hh~4vg;іnf7іz.fq+bFElE]=v&;ъcD}h>4)m6']hJSІ4'=iB:҃MhH :ґhHC:Ђv4h@v F=gØь1V4h>9{VgD9щgD#:z64}hzv7z3݌59kfՌg pMf6.a2d6z$T#=3C(Ħo[\RJ-Zq[bYXE+jI,fUrZj9E*b),"XFQVB+*J(HUV$S:I%N>'N9߯+^WGGWF)((LleKdbhE+*qTLbD%NT"(#NqGDb(E)PD(FBOJ(xN'X'I'H'.D'?A A~6a  2!ޠ .ڠ` *`%0 /$"%В<#ViipggPepe0pcPcPa0a0 |A;!?胙̤ brOt@TTLALAADDG>'sܣH=&RyLd"<ƉH|@ <VZ`RѐcrS%BB| IH7ҍm (6Qdc xg y' v?:#ssqN9G9('G2ꑌcԣǘ1ƙ#B wc#sqg'p|#ol@76 э FGm孷ЇErw\-oYY2:Pk ZktO;uNcW?W_ddnrMfrU3j&/j<rG6rQFU2"B! 3a;&2w<xCֱuc! 9A1d0ol| mL61p41i@?v{>q=nw{[-<`wPO=w2Lfry8bc0w0au9/q_8ơ 7bv!؆\\C.piZLcjjaff!bqXxM7y?0VX U9{3{3zz3 79o7x;`k4׼{||g5Yvv4׹is3ֻn47F3yM>|f9yn9y8m8xYnrp.ɬ f"ۼTf6RgyǽǼ51Ŭf1íf5m7omi~4nFslltӽVgV{nӞ{͜6f63r}r]3.s&3V@LQO7ˎ;\6c3b&{l1yln~[~;lmnnkm^^kZmNN{k2h/}60K9x갖Ĵ`:k09벳ƺ첱&&걯z챭갫:착{ꯧ_ck,_kk:jz+(/`^ -/1(? 'x#W/@CeTWcM +.l6۬P`<*8 6pCh`_`uYe[0/5P *JAyA/}M־j&"*"kk++j*kk+ +UX׽kXz *[U Vkʶ*)`{$9_ԯE:+үYվUV}UV꫾^kj***ꮾꪮjjj****_Y5|k^U^WVWzxUڪ֪lk**")iꬢ꬞ʪ^MTRR%XURURUXQ}QW}UQuUQ UWuPmPVmUPeUPTVeOzj^ꩫw]U+^jWծjmUպ&ij")[jFJWTk*vv*rrꦚnjn\KTJsTR%UMUMQLLTQUL ULP KKTPUKTKOJJTOTJ+N]:vm\j]PtFW+5lek\WҕpT>jvr:*rn6njεQus]TM]TETMULUDLMTLMTDTLEKECK=TK=TCTK5J5TBJ%TJ%TATJImTIirKCY(EZ$z$ 5RAԸF*5 WH@ L>+6vil"OyEr,e)9DriLc%K,-ccӎqӆq$1Ib/G]hxEbvCo_F[ޕN]o )! +^UaXN;w0Qsx'>Ma .3\gX cXm16/v&-Lb[x>{#>+6ql[vCԭKH_BHpYu t x1%a ?ḇawÝ=0 7.\afg8fccp!| C:-tvgu,ۮPek S_uK&i'4Y= E"%,ǎ=Vcc}+{K,;{aa'h s0S8|/zPP7~1 09Nts|d lD#)LHf@I1g0lB5p0̓y Z0ox?:pπRb,@VI-^ STOMUZKkGph+zC0?p;70}3s@zZHO704|fB@ZŰP - Xd[z-w䠲e,T&9O}@O';'|'|g;'l'l:i'\'߮[ot-ݦr[I9%ݞpssnrrlqRqjRpp~hoovfnn-ܦj9OղiI_k6k3|5wV՜f;9uN3\g43|f3әfvev2Ϲd,g2-g98c3,79vsٶ6[Jg0Mk`f3f6y_e5{jVse.9\F3f4o[Ϭe3k9f6s˜e,X&3Lf2_+[yj^`/ã1OVHykzrJQʓ{&ossSc<5oT8yj (Cʠ y} A^{c /c; 88!/΃ y^ZoM yk?>̞{<lN.KdA PU-OP',O; wcG klg3Âv),ilw;"S'sٕ+.+.]U8q殸t]-2*N:tVY[g_-NL _(RPJ. p  0 CiV!r B(('L)p MJ'd&lB&l%+pTT2Te*P OT"%*QI$a0 &\>ۘgl&<0Ii<++bA, / n X5؀C?x'(`wp˘)x7 p))F@Uީ*TVa.!P KYJ)$B N؄de*az*2 IR Oy.,%*H+ n` `@,bXj ($qC 213 +n?0Vh P1dbP'|/0V@.+>U#0R_u2؀ Cj~wV1XVaINqwԝOiSszӦ6KiMԚ&3MjRg3i$FbL1/}G|i#؈-=jKWzԣ+MiQҡCIzҒ5%iIGӟ# iO{E Gq?h"&bGxx?9b@7ntNwќfܜܛ{ћ5h5i3-3iEcZщ4}D}KmmiK#҈ҕpҔ>mIOВ6t%-BGЄt iBҐ-G?ZЎt@o h@}sgFyόf޳[ϋs<˝g<-7;+ZwNNtߎmmD66mn|h;ЇLgC΅ ]9zllm9zr,hA9co^>9}s6g4gֳϜ39y63\f2|d#/9JVr\Ә3Ald#E2qMlx,bpA氆7a 7QJRI*|rTJG)*eQF(CedQ.JP *\S~JE);S!LiJ_8Ғt!GCҏvhG7э^4hE/:ъVthF4].‡>t YІfB +LVaBZ)a4M&\s I~&>#a>YCX ޳?zγ{p;8x3w;y7l:k9L `:c0< /lr[p+8 \<,  7+yovf=zsf69l3׌gf[o3Y2m2dL1ya 0`e/{\'o-,gXnrXrW+_o[pnnpnno{n[n厛o;nnfz3U.2\d"80qw#s,e)Q^2d%O~2GѰhX: Ws4G_*Woԫ]v6j\Qh֨Ҩ(hh((艚hƨ¨(hh苾((舶舊h( ]%k(Y cX?TbC;4aPv(UЯ~uCUjhW5jW[\*z*n5ESt(U(jD=ѬhVj&UKDJW*UGԪ:#"U!ZcC4ďQ;Î7C?X7TpQC;Fr(Ouçfnf|vž≽ܰZڰY^جf]X ',V&ՄWMժVjKMaRԣZժGEv\ԡvP7jP78S O:՟F=jT{ԞOi;ioZMkZq53xF<ӘFqLK~ 7҅[҅^i+Mi OԒtK iRCѤ&GhFzԌ5-jQ+:ԊFtChP#Р?}hCӆ iOӅ&t;MhNzМ7=hAozӂִiM:Ӂt3 hLϘ/g?_~liK}s+'^Z@ P/RJ@NKNMtKMMTKMM4K۴MMKٔMt-歷WSjjTԔ*X4l`M{왞)`5S3kկeZ~%SLɴcWULW1ӽ^aW0ի)ZZi~VV)zRiRviN)Nr)JJinFF)jBiBfi>)z%WMSrS󊗛rS*XUk`j֮k] غt_Wկ~k_*׾U|k\׸5p^W2^ʤVʤKjVUJZUTIJTSH:SRG*RzQzFQjPjE PZO:@:1X"&m! i^*x +^A w+HԮvѺ[Z׷n+]:Wusm\VʕqeZ׵uj+\ʤjM+2iZ4h]%EJgMҳ5IԬHjֲ")HGz>j>*@Hh%R"!Q!Q!R! Q Q R Qѷ荾7QFj5ֶ([kFV]+Z:jQUZe42iMk5Fahѳ苞/juQE-Zֲ(]QJ%X{Gʣc+XwTa(/`^-+( 9{|-Cr&Z,P$efZ*P ji,XY0Ka!+ĂX U]RWX%+jF>*֪jU[[ZEL A&tUUSVi5"=CpHOuVOTguVMUVMTeUVK5VKTc5VIVIuTaVGUGUT_UEUiU>ū**^wMD+ծv]}C==CSCS=5TCB<-BSBS JJAJA|A;ASA *:A-HV/E+ }NNONOOtNOts*{ݫUNTzӼ)5pڧp}ڧo7uSMu]j׺]ANlK'H:946ot{E1l8E1>볉\k<2ԑrrYa #PjBN I@JRi>t 2FҸ1c,>qk|G<#3w#uW4YquH7FF51k|Jl(k|42.㦑ox|31a >c)2X2qqE",~Yb{-0WȊl8(^Q"S"G &( ؀_'6wShOxBCh kk&kݵ lM6QcD%p2ʬ!Lb xc=C MlC]mVf{0G,b8ސ]]] QK*RQ%wJ N9^UԡxE-(D+fYΰAr˭o'J_)$J},@/g:(E%p1)NQ7'kXC(yC1qC1` LsE#L@0ĒDL򕲇.ta'|s>7iC'~~: D&0%&" .qxI D]ЈF䒆E,.\rI! Q'n_)u|qj},@wJ4@wJ'҆6Bu:(!}sߜ13w|W`Aw+u{yc'q2;w e8`esv7i i!!..+sH}tn:6qR7v)ͱ59'JIC:)N}{۽ڌr/ۤ&??oWH:WJss{N ]Xbvi21W-v[|>V;)vR|[|O|vF|V;# _.Ȃl`%Y+y8C \O ~ғp(E*:0Qp<9M%MR2R$!IJ$xH t$")F T$$!$"E*$$!1F dR&1I 4 IГ`q`V5; Mz 9)|ӔXJP:2(IRR889ɁF(C 'td&AHF7! hH-IOf%%mG ܣ)8J$#Гd'-I7!Pt$'HNn2H̤&5IL^d%)9II$4d"#DBNG>l HD|s|S$! ID"[2>P6Zֲ&mv\YβM^`.lWqle+'T>r|$5\d.rRzScYR&2by챇L( Yl<䰃(Y`9찁 6?2dC>=~{&kd'kcy&Xk6`6`'Lf2%+l$'HG>2\䬻:ksiE. gM!0H5,Ty ʰ(" 90(?D5J?Dwouڻ=ku kuL9sL,]c6qkLYg9+[2'+QJV,BV;0=W[*8S9ƒcC* 0.`v+DAW[J-tA-B,d%+P 0  WYWxUhS\eV!JNFyiB!^O:لLKJ|~n>mv{|ټg5v4Yl6i3g439gF͌g|T0(/`-\ .70(İm5Xk$x"|ϵo@#xf=5La<0_;Aܟn;6l vj_q>5^ml>ll.[Ƕ0d[Xk?<;,07ao09 _(50γuuX-cauUqŏM&Vq"~X&ýa]wհo\sU ꪷꪶBYVYuUIU@E]* ꨂ ڧZiPUEYUTX UXPUW%쫾*a lc+.6el`X.v lb?UT"M_?Xz_ ֯ڪ}5aUk*_ʪک|=US='TSj6*RjJ驞*j*ꨊj2**.*aZu+a W ,^ػ Vw+`ZWv+]?SZWO_:WUrk_WU|MԾ5QکW*jNjr*Fj*fjb)ZiRNJjB>:j2.i kuujySNs׼)UNW9S]rZW8]4Nu\ݔtu7kumqeSʕM4Q4qUS6Urlf3Sdrr|d$_XƲl"_E6rle+Tr4 FЋ&4MB=E/zЄ[{-Ahty:wo h|~s}>n>]7<{|[sϭ=ǝgγs}gE+xFh;لKш.a;·>4\9s3\By΃3 g9 ΃47 Zo3@n3f735kf3>y{N3f5{3Ӝ3YgF3͜#x86oYOL^}©[ժS(/`_j..(xA%"p howӍwhE95i^ CÍhCn[nC+:х.t `4WjCЇ擯IPNυ&[06oyo~s}r_0mgtg?Wptfv.'e'#'c%VVZBJHq-=*_'[MwwYxs|g;ӹusg8n76yn[5YjNsh>Ab{e.3Ǥd$ feE#Р Je`}0.J mAhWҠl: M*S3)SɎAfGy [ L-(CK$I%nnӘX򖱬e-c9Yef`/I8'xd++y0o%UNd%SU2<#SGFr<)R6rl"J<>Hb d'Av,d&Mrc&3@`}% ~u5 =w@^;qꂺxk .k ֱs[9$G9F2dGod$E#old622dcLbǘB0ra?~1b?_v},~mmmxc}OѢMmh?vvlei!-,)k_ͷlc.v޶um+w 1v6s]׽5y]ֺۚ5s[m}Zֵ\RZnRєr/)-YZҲte-Dɽge,W=kYzղVjUO6U%ޯ]]JzҮ' hBYԃc-jP:֠5<4aDchD:ұu# GJD?Q"Ji2iO`O*Qettl.K}WԮ>u]8:Щ` NuSVլFzU%,$^WMoZ՚V55i<9AAx PRp6umTԩN5QM*jTq- Sԥ6KMRhRJGq-K)I%1iL[ӝ4-hNsc{mnE=PZԡuT5A_}Δԙt/iL_җ-gFwT4+=iJSzҒ4%-iB'ёNs# H?Ґ~e(+%,7( _.13ьYz3l7Sw9n39n2y܃{/w}3h;vo׵6i-mh0u^TByG%4Bg4IiFnu+J[HWűrA2BFhJ[<=R#} -"!??(ɶ lK$Z5r4R cKG}dַlnY{4Fy4ɞWu|4GF8X#(ިF!hUzUƿ[Ea$[FxZrȵ\K be@6NLXmc"Ce4댔0m-Z7Onٿ]/)$Drٖ D凁*_;BLbe")$\ $JCCH١0W5ESd_[,E_@hEYtE@([UU實%bD!"(ߢ_S(?A ?A/ &bh†&[(-֨= FIW@ SkBO5QFtk^(@33ktP@hM C==!ڡ0 iDeߟߟ#*@<:@..]ʢ~,'\ "ʵVP6ڧ}=.ʉgDBROT7&Mۤyt|}qC[Eжml{g#.K ]byPWE(=Nv-N뤓V[|Q:/j7Dmk[4ѹ8:s]D'4N>钌}R'*X%4Il`#k6iUGuImeRQQiO||'ofnyukjp^Ůu=-+yNvM\׾i \:?0i0 CFb؞;T4k"Fq8+MdۭD?NMTͻm׮4ƒy9(/`} C Fzd698){u!n1M7ӾS).g5.F=YFk>讑k e5[mcN9Gm76~쳏hZc}ovnάj(YeLm#GgU{ٴثժVv^{]cVbۮqM2P~L V=ce%l_b-&oڴxvwmvwA'8w !5ϓ_%$ՙ$K Š-/E:ql##Am& 6Ⱛ$7I]Wx7骈e)bա-LܞAjJ-RWZvH=Unu(rZ7tO鞶Q(tR2J(Z6 %3!5Z6ײ7*HPZuU ptBJ$-uXc]hPO]&tP屔GJl cUFx%*/] J=1i*+V ԃjUU>s% {faժ򙍚?OHˍUR.5)h;A7@vQm*KG[!@vNd^_:cUsUH}r>T-JAJH0n!W-*w7;DƪlEpOWdښSէv|~8 2{u :㵴^]G!WN<33;sD-cjgvhUGAtZ˾j:h^&GƊ{5]S&nΚ)263EI7c2*O7r { 4yW-KWJf jAų0(۲Ck,^|šؖ/S#:\YNN*_S k{j(4gM0p*N5Pd͜Q ݵ5P`-Rg4[%<V7Cff33{3: -oSwm5c([ <š|s)[ 5&~JDTP&;/0؄Vб5;7iT"QyW!-ٹ-jO б=I]`P}JAim2ái8t@FnaRĊL,0)ͷ]rh7q-rD2^+}-r&..p@~9*`GHQ `9*) n,B\E915nws2W^ UXQdX3lbjx>s+*&3]񧡓I"-uvv,Z$/)9+~ZkH# e7ȩ~D =|WJ5_R`W_?*^lB@@p${Y/\wzӀ@CWRx< qh~劀`r~M9[=ςE@'30aMb`P@',bk*W=` M9G+hY_: К&tO7iY_`mxԄ^xu^x5 !% ̀ZA׃B@s". aV7^. h:Gh:VALx5Y(q!`+q?. 8.Pkxn!F_ I|D`ʨtLTe WBj2ш2tʁ2ʹ5zm>4x!{R% r'#@;Y}xJ !{\RY^y\=JH7YizI93io]N4a`m:P"& Yݹf3d/v4ƛFlw6kbM';^#h_jq׊4y*n؝kYSZlTo?uȾSE kiiuɃxɃo(ND78@Uεe}}7:5!Or6n+g3zkB~8tZs\%7BkYS};WWאG dl5Jssm6k*㎄&@Hót#tyBm9/t>Kg٬g߱S#e;dq<= s+5zRP! >ы3WUL7LJff|hiƇ)MBka8m6/K|6fT6;*k*NTVC6Zxq ũK^ŹS "}'s&P*ãTp&S+`(Ta/ KŹ9mF1 ɨ g-G[rE؞x:'.Sqg9M-_W1 =HfM\εmsV3]&7J͇V8njۜefMf4U/IAb[ԯX @M4"f%/I^>>Z]bՂeAT g׳dңc'ƪ *ynA@@vrlK 5ۙ*j^]|~+N+cU jE@@kbf=BW+qGssD g ^zXXf=e©| WmL 6wS> Ѿ/ ظz1ς*!Z~'rJZE ̫G7؄! oz*)ZחBsМ[7XiԐfDNTjEE|dYXYsts[ߵ;z̧<.*rU+J/Z Z4ruvl}"OmAs;׾84=Q NJ]8q<ԹySGz(7Ϗ5yoYƣ`񡣳GAbj!ZlcG2U}Y48QGiff/A_UҴJ+H*B\i R [G+H_*}$˕tJwh+dL~eѲoUS˾,]T#_0.GTS( tU"H=ˏaϐ"@ZJ@ ).`*#R)R (z*蓌x#^I"'!" R/Gha 90օF ȼ )jmX(Ax*`fzG*<?@GMQW\]^irs |!"#$%&'()*+,-./0123456789: ; <=>?@A%B*C0D6E7F8GIHRIXJ^K_LhMoNpOtP|QRSTUVWXYZ[\]^_`abcdefghijklmn opqrs!t&u'v(w/x3y6z7{8|>}B~2Y3YYYBPQYY8;YY;Y;YY;YY;LMYYY0PQV&V PQT YYY0 P QV& V&V PQYYY0PRRQV;TPQY;TPQTTTY;TPQTTTYTPQPQYT T!YYY0"P#R$RQV;%#T&PQY;'TPQ'T$$'T%Y;TPQTT'TYP'QTP'QYYY0(PQV))V*P)Q)T+PQT,PQYYY0-P#R.R$ T/QV;01TPQ0T##0T$$Y;23TPQ2TP0QY&.V;4LPQ2T5P4QY.2YYY06P7R.R$ T/QV;#8TPQ#T97Y.-P#R.R$QYYY0:P;QV&V<TPQT=PQT>P RR Q(V?PQYT@P;QY.YYY0?PQV&VTAT P QTAYYY0BPQV.TAYYY0CPDQVD.YYY0EPQVY`GDSC DӶŶ϶ ö ö¶ ¶Ҷ޶idFunctional Tests/Shapespath'res://tests/functional/test_shapes.tscn Functional Tests/Compound Shapes0res://tests/functional/test_compound_shapes.tscnFunctional Tests/Friction)res://tests/functional/test_friction.tscnFunctional Tests/Box Stack&res://tests/functional/test_stack.tscnFunctional Tests/Box Pyramid(res://tests/functional/test_pyramid.tscn Functional Tests/Collision Pairs0res://tests/functional/test_collision_pairs.tscnFunctional Tests/Joints'res://tests/functional/test_joints.tscnFunctional Tests/Raycasting+res://tests/functional/test_raycasting.tscn!Functional Tests/RigidBody Impact1res://tests/functional/test_rigidbody_impact.tscn'Functional Tests/RigidBody Ground Check7res://tests/functional/test_rigidbody_ground_check.tscn Functional Tests/Moving Platform0res://tests/functional/test_moving_platform.tscnPerformance Tests/Broadphase1res://tests/performance/test_perf_broadphase.tscnPerformance Tests/Contacts/res://tests/performance/test_perf_contacts.tscn!Performance Tests/Contact Islands6res://tests/performance/test_perf_contact_islands.tscn     $ ' ).368=BEGLQTV[`cejo r!t"y#~$%&'()*+,-./0123456789:;<=>?@ABCD3YYY;LNVRVRORNVRVRORNVRVRORNVRV RORNV RV RORNV RV RORNVRVRORNVRVRORNVRVRORNVRVRORNVRVRORNVRVRORNVRVRORNVRVRORYMYYY0PQV;W)VTPTRTQY`GDSC k'Q¶䶶󶶶䶶 󶶶¶ضζ¶Ŷ϶ ŶŶ۶¶ ĶҶ¶¶ ¶϶Ҷ Ӷ釶Ҷ鄶酶邶郶Ŷ׶¶¶Ӷζ¶϶¶̶ĶӶŶض϶ ϶ӶӶӶӶĶ޶ ݶŶѶ Ѷ ϶Ŷ Ӷ Ӷ ۶ ﶶҶӶ Ӷ ҶӶĶ۶ضŶض϶ŶŶӶĶӶ Ҷض Ӷ Ŷ ӶҶضζ Ӷ ζӶ ӶҶ ĶҶҶӶ Ҷ Ҷ ӶCollision type/Box (1)Collision type/Sphere (2)Collision type/Capsule (3)Collision type/Cylinder (4)!Collision type/Convex Polygon (5)Shape type/BoxShape type/SphereShape type/CapsuleShape type/CylinderShape type/Convex PolygonShape type/Concave Polygon@@option_selected_on_option_selectedoption_changed_on_option_changed?timeout RigidBody* Start %s collision tests... * Testing: %sCollision center inside: %sNO HITHIT* Done.?BoxSphereCapsuleCylinder ConvexPolygonInvalid collision type: ConcavePolygon RigidBody%sInvalid shape type:    # ( - 27<=BCNOTY`fghnrs{ !"#$%&'()*+,-./0123456%7.869;:C;H<P=U>]?b@jAoBpCqDxE}FGHIJKLMNOPQRSTUVWXYZ[\]^_`ab c defghij&k'l2m3n<oCpOq\r]shtouqvrwyxyz{|}~  (),-.59<CGJQUX_cfmqt{  "&'(/<=BKLO3YYY:Y:Y:Y:Y:YY:Y:Y:Y: Y:  Y:  YY:  YY8PQ; TYY; Y; Y;TY;LMYYY0PQVPQYWTPQWTPQWTPQWTPQWTPQYWTPRRQWTPRRQWTPRRQWTP RRQWTP RRQWTP RRQYWTPRRQWTPRRQYAPPQRQ&PQV.YYYY0PQV;<& TV&T V!PQ'T"V!PQ'T#V!PQ'T$V!PQ'T%V!PQYYY0&P'QV&V.Y Y(PQYYY0)P*QV T+* YYY0,P*QV T-* YYY0.P*QV T/* YYY0PQVT0PQY)1W2T3PQV;41<5;64T7P R Q6T8P1T9QT:PT;PQQYT<P6QYYY0(PQV=PQY;6LMY>T?P6T8QY;@ATBPQ@TCP6Q;DPRRQ@TE TFTGPDQY)1W2T3PQV&1THV,Y;41<5;I4TJPQTKY>T?P4T9QY;L4TMTNY;OPPIRLR6R@Q>T?PP&OTQPQ(QQY>T?PQYYY0PPIRRR6R@QV@TETNR ;SITTP@QY;U&STQPQVUTVTWPQ(VUTXYYP6R@TERUQY)ZSV[PZRRT\QY.SYYY0!P]QV/]VV^PQV^PQV^PQV^P QV^P!QYYY0^P_QV)`KPTaPQQV;bL`M&bT8TcP_Q "V.`Y>TdP#_Q."YYY0eP]RfQV;1Y/]VV1gPQV1gPQV1gPQ V1gP Q V1gP!Q V1gP$QY&1V1THf1ThP QTifYYY0gP_QV;1W2TjP%_QY&1V>TdP&_QY.1Y`[gd_scene load_steps=10 format=2] [ext_resource path="res://assets/robot_head/godot3_robot_head_collision.tres" type="Shape" id=1] [ext_resource path="res://tests/functional/test_collision_pairs.gd" type="Script" id=2] [ext_resource path="res://utils/camera_orbit.gd" type="Script" id=4] [ext_resource path="res://tests/test_options.tscn" type="PackedScene" id=5] [sub_resource type="BoxShape" id=1] [sub_resource type="SphereShape" id=2] [sub_resource type="CapsuleShape" id=3] [sub_resource type="CylinderShape" id=4] [sub_resource type="ConvexPolygonShape" id=5] points = PoolVector3Array( -0.7, 0, -0.7, -0.3, 0, 0.8, 0.8, 0, -0.3, 0, -1, 0 ) [node name="Test" type="Spatial"] script = ExtResource( 2 ) [node name="Options" parent="." instance=ExtResource( 5 )] [node name="Controls" type="VBoxContainer" parent="."] pause_mode = 2 anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 25.0 margin_top = 417.0 margin_right = -806.0 margin_bottom = -141.0 custom_constants/separation = 10 __meta__ = { "_edit_use_anchors_": false } [node name="OffsetX" type="HBoxContainer" parent="Controls"] margin_right = 193.0 margin_bottom = 16.0 custom_constants/separation = 20 alignment = 2 __meta__ = { "_edit_use_anchors_": false } [node name="Label" type="Label" parent="Controls/OffsetX"] margin_left = 2.0 margin_top = 1.0 margin_right = 53.0 margin_bottom = 15.0 text = "Offset X" [node name="HSlider" type="HSlider" parent="Controls/OffsetX"] margin_left = 73.0 margin_right = 193.0 margin_bottom = 16.0 rect_min_size = Vector2( 120, 0 ) min_value = -1.0 max_value = 1.0 step = 0.01 [node name="OffsetY" type="HBoxContainer" parent="Controls"] margin_top = 26.0 margin_right = 193.0 margin_bottom = 42.0 custom_constants/separation = 20 alignment = 2 __meta__ = { "_edit_use_anchors_": false } [node name="Label" type="Label" parent="Controls/OffsetY"] margin_left = 3.0 margin_top = 1.0 margin_right = 53.0 margin_bottom = 15.0 text = "Offset Y" [node name="HSlider" type="HSlider" parent="Controls/OffsetY"] margin_left = 73.0 margin_right = 193.0 margin_bottom = 16.0 rect_min_size = Vector2( 120, 0 ) min_value = -1.0 max_value = 1.0 step = 0.01 [node name="OffsetZ" type="HBoxContainer" parent="Controls"] margin_top = 52.0 margin_right = 193.0 margin_bottom = 68.0 custom_constants/separation = 20 alignment = 2 __meta__ = { "_edit_use_anchors_": false } [node name="Label" type="Label" parent="Controls/OffsetZ"] margin_left = 2.0 margin_top = 1.0 margin_right = 53.0 margin_bottom = 15.0 text = "Offset Z" [node name="HSlider" type="HSlider" parent="Controls/OffsetZ"] margin_left = 73.0 margin_right = 193.0 margin_bottom = 16.0 rect_min_size = Vector2( 120, 0 ) min_value = -1.0 max_value = 1.0 step = 0.01 [node name="Shapes" type="Spatial" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 9.35591, 0 ) [node name="RigidBodyBox" type="RigidBody" parent="Shapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, 0 ) mode = 3 [node name="CollisionShape" type="CollisionShape" parent="Shapes/RigidBodyBox"] transform = Transform( 0.579556, 0.0885213, 0.145926, 0, 0.939693, -0.205212, -0.155291, 0.330366, 0.544604, 0, 0, 0 ) shape = SubResource( 1 ) [node name="RigidBodySphere" type="RigidBody" parent="Shapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 0 ) mode = 3 [node name="CollisionShape" type="CollisionShape" parent="Shapes/RigidBodySphere"] transform = Transform( 1.2, 0, 0, 0, 1.2, 0, 0, 0, 1.2, 0, 0, 0 ) shape = SubResource( 2 ) [node name="RigidBodyCapsule" type="RigidBody" parent="Shapes"] mode = 3 [node name="CollisionShape" type="CollisionShape" parent="Shapes/RigidBodyCapsule"] transform = Transform( 0.8, 0, 0, 0, -1.30337e-07, -0.8, 0, 0.8, -1.30337e-07, 0, 0, 0 ) shape = SubResource( 3 ) [node name="RigidBodyCylinder" type="RigidBody" parent="Shapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 0 ) mode = 3 [node name="CollisionShape" type="CollisionShape" parent="Shapes/RigidBodyCylinder"] transform = Transform( 0.772741, -0.258819, 2.59821e-08, 0.2, 0.933013, -0.207055, 0.0535898, 0.25, 0.772741, 0, 0, 0 ) shape = SubResource( 4 ) [node name="RigidBodyConvexPolygon" type="RigidBody" parent="Shapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 6, -0.211, 0 ) mode = 3 [node name="CollisionShape" type="CollisionShape" parent="Shapes/RigidBodyConvexPolygon"] transform = Transform( 2, 0, 0, 0, 2.89766, -0.517939, 0, 0.776908, 1.93177, 0, 0.3533, 0 ) shape = SubResource( 5 ) [node name="RigidBodyConcavePolygon" type="StaticBody" parent="Shapes"] transform = Transform( 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, -6, 3.93357 ) [node name="CollisionShape" type="CollisionShape" parent="Shapes/RigidBodyConcavePolygon"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0 ) shape = ExtResource( 1 ) [node name="Camera" type="Camera" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5.8667, 11.8164 ) script = ExtResource( 4 ) [connection signal="value_changed" from="Controls/OffsetX/HSlider" to="." method="set_x_offset"] [connection signal="value_changed" from="Controls/OffsetY/HSlider" to="." method="set_y_offset"] [connection signal="value_changed" from="Controls/OffsetZ/HSlider" to="." method="set_z_offset"] [gd_scene load_steps=6 format=2] [ext_resource path="res://tests/static_scene.tscn" type="PackedScene" id=1] [ext_resource path="res://test.gd" type="Script" id=2] [ext_resource path="res://utils/camera_orbit.gd" type="Script" id=3] [sub_resource type="BoxShape" id=1] [sub_resource type="CapsuleShape" id=2] radius = 0.2 [node name="Test" type="Spatial"] script = ExtResource( 2 ) [node name="DynamicShapes" type="Spatial" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 9.35591, 0 ) [node name="RigidBodyG" type="RigidBody" parent="DynamicShapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.51361, 0, 0 ) [node name="CollisionShape1" type="CollisionShape" parent="DynamicShapes/RigidBodyG"] transform = Transform( -2.44381e-07, -0.3, 0, 1.5, -4.88762e-08, 0, 0, 0, 0.3, -0.8, 0, 0 ) shape = SubResource( 1 ) [node name="CollisionShape2" type="CollisionShape" parent="DynamicShapes/RigidBodyG"] transform = Transform( 0.8, 0, 4.26326e-15, 0, 0.3, 0, -1.13687e-14, 0, 0.3, 0.3, -1.2, 0 ) shape = SubResource( 1 ) [node name="CollisionShape3" type="CollisionShape" parent="DynamicShapes/RigidBodyG"] transform = Transform( -8.14603e-08, -0.3, 0, 0.5, -4.88762e-08, 0, 0, 0, 0.3, 0.8, -0.5, 0 ) shape = SubResource( 1 ) [node name="CollisionShape4" type="CollisionShape" parent="DynamicShapes/RigidBodyG"] transform = Transform( 0.8, 0, 4.26326e-15, 0, 0.3, 0, -1.13687e-14, 0, 0.3, 0.3, 1.2, 0 ) shape = SubResource( 1 ) [node name="RigidBodyO" type="RigidBody" parent="DynamicShapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -2.65654, 0, 0 ) [node name="CollisionShape1" type="CollisionShape" parent="DynamicShapes/RigidBodyO"] transform = Transform( -2.44381e-07, -0.3, 0, 1.5, -4.88762e-08, 0, 0, 0, 0.3, -0.8, 0, 0 ) shape = SubResource( 1 ) [node name="CollisionShape2" type="CollisionShape" parent="DynamicShapes/RigidBodyO"] transform = Transform( 0.5, 0, 4.26326e-15, 0, 0.3, 0, -7.10543e-15, 0, 0.3, 0, 1.2, 0 ) shape = SubResource( 1 ) [node name="CollisionShape3" type="CollisionShape" parent="DynamicShapes/RigidBodyO"] transform = Transform( 0.5, 0, 4.26326e-15, 0, 0.3, 0, -7.10543e-15, 0, 0.3, 0, -1.2, 0 ) shape = SubResource( 1 ) [node name="CollisionShape4" type="CollisionShape" parent="DynamicShapes/RigidBodyO"] transform = Transform( -2.44381e-07, -0.3, 0, 1.5, -4.88762e-08, 0, 0, 0, 0.3, 0.8, 0, 0 ) shape = SubResource( 1 ) [node name="RigidBodyD" type="RigidBody" parent="DynamicShapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.248918, 0, 0 ) [node name="CollisionShape1" type="CollisionShape" parent="DynamicShapes/RigidBodyD"] transform = Transform( -2.44381e-07, -0.3, 0, 1.5, -4.88762e-08, 0, 0, 0, 0.3, -0.8, 0, 0 ) shape = SubResource( 1 ) [node name="CollisionShape2" type="CollisionShape" parent="DynamicShapes/RigidBodyD"] transform = Transform( 0.5, 0, 4.26326e-15, 0, 0.3, 0, -7.10543e-15, 0, 0.3, 0, 1.2, 0 ) shape = SubResource( 1 ) [node name="CollisionShape3" type="CollisionShape" parent="DynamicShapes/RigidBodyD"] transform = Transform( 0.5, 0, 4.26326e-15, 0, 0.3, 0, -7.10543e-15, 0, 0.3, 0, -1.2, 0 ) shape = SubResource( 1 ) [node name="CollisionShape4" type="CollisionShape" parent="DynamicShapes/RigidBodyD"] transform = Transform( -1.46629e-07, -0.3, 0, 0.9, -4.88762e-08, 0, 0, 0, 0.3, 0.8, 0, 0 ) shape = SubResource( 1 ) [node name="RigidBodyO2" type="RigidBody" parent="DynamicShapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 2.97932, 0, 0 ) [node name="CollisionShape1" type="CollisionShape" parent="DynamicShapes/RigidBodyO2"] transform = Transform( -2.44381e-07, -0.3, 0, 1.5, -4.88762e-08, 0, 0, 0, 0.3, -0.8, 0, 0 ) shape = SubResource( 1 ) [node name="CollisionShape2" type="CollisionShape" parent="DynamicShapes/RigidBodyO2"] transform = Transform( 0.5, 0, 4.26326e-15, 0, 0.3, 0, -7.10543e-15, 0, 0.3, 0, 1.2, 0 ) shape = SubResource( 1 ) [node name="CollisionShape3" type="CollisionShape" parent="DynamicShapes/RigidBodyO2"] transform = Transform( 0.5, 0, 4.26326e-15, 0, 0.3, 0, -7.10543e-15, 0, 0.3, 0, -1.2, 0 ) shape = SubResource( 1 ) [node name="CollisionShape4" type="CollisionShape" parent="DynamicShapes/RigidBodyO2"] transform = Transform( -2.44381e-07, -0.3, 0, 1.5, -4.88762e-08, 0, 0, 0, 0.3, 0.8, 0, 0 ) shape = SubResource( 1 ) [node name="RigidBodyT" type="RigidBody" parent="DynamicShapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 5.46836, 0, 0 ) [node name="CollisionShape1" type="CollisionShape" parent="DynamicShapes/RigidBodyT"] transform = Transform( -1.95505e-07, -0.3, 0, 1.2, -4.88762e-08, 0, 0, 0, 0.3, 0, -0.3, 0 ) shape = SubResource( 1 ) [node name="CollisionShape2" type="CollisionShape" parent="DynamicShapes/RigidBodyT"] transform = Transform( 1, 0, 4.26326e-15, 0, 0.3, 0, -1.42109e-14, 0, 0.3, 0, 1.2, 0 ) shape = SubResource( 1 ) [node name="StaticBodyPins" type="StaticBody" parent="."] [node name="CollisionShape" type="CollisionShape" parent="StaticBodyPins"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 9.13207, 0 ) shape = SubResource( 2 ) [node name="CollisionShape2" type="CollisionShape" parent="StaticBodyPins"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -2.71742, 9.13207, 0 ) shape = SubResource( 2 ) [node name="CollisionShape3" type="CollisionShape" parent="StaticBodyPins"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.64188, 9.13207, 0 ) shape = SubResource( 2 ) [node name="CollisionShape4" type="CollisionShape" parent="StaticBodyPins"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 2.87444, 9.13207, 0 ) shape = SubResource( 2 ) [node name="CollisionShape5" type="CollisionShape" parent="StaticBodyPins"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 4.81639, 9.13207, 0 ) shape = SubResource( 2 ) [node name="StaticScene" parent="." instance=ExtResource( 1 )] [node name="Camera" type="Camera" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4.53602, 22.1236 ) script = ExtResource( 3 ) [node name="OmniLight" type="OmniLight" parent="Camera"] omni_range = 50.0 [gd_scene load_steps=10 format=2] [ext_resource path="res://test.gd" type="Script" id=1] [ext_resource path="res://utils/control3d.gd" type="Script" id=2] [sub_resource type="PhysicsMaterial" id=1] friction = 0.0 [sub_resource type="ConcavePolygonShape" id=2] data = PoolVector3Array( -1, 0, 1, 1, 0, -1, 1, 0, 1, -1, 0, 1, -1, 0, -1, 1, 0, -1 ) [sub_resource type="PhysicsMaterial" id=3] friction = 0.0 [sub_resource type="BoxShape" id=4] [sub_resource type="PhysicsMaterial" id=5] friction = 0.5 [sub_resource type="PhysicsMaterial" id=6] [sub_resource type="PhysicsMaterial" id=7] [node name="Test" type="Spatial"] script = ExtResource( 1 ) [node name="StaticBodyFriction0" type="StaticBody" parent="."] transform = Transform( 1, 0, 0, 0, 0.866025, -0.5, 0, 0.5, 0.866025, -6, 8.581, 0 ) physics_material_override = SubResource( 1 ) [node name="CollisionShape" type="CollisionShape" parent="StaticBodyFriction0"] transform = Transform( 5, 0, 0, 0, 1, 0, 0, 0, 50, 0, 0, 0 ) shape = SubResource( 2 ) [node name="RigidBodies" type="Spatial" parent="StaticBodyFriction0"] transform = Transform( 1, 0, 0, 0, 0.866026, 0.5, 0, -0.5, 0.866026, -3, -7.431, 4.291 ) [node name="RigidBodyFriction0" type="RigidBody" parent="StaticBodyFriction0/RigidBodies"] transform = Transform( 1, 0, 0, 0, 0.866025, -0.5, 0, 0.5, 0.866025, 0, 10, 0 ) physics_material_override = SubResource( 3 ) [node name="CollisionShape" type="CollisionShape" parent="StaticBodyFriction0/RigidBodies/RigidBodyFriction0"] shape = SubResource( 4 ) [node name="LabelFriction" type="Label" parent="StaticBodyFriction0/RigidBodies/RigidBodyFriction0"] margin_right = 40.0 margin_bottom = 14.0 text = "0" align = 1 script = ExtResource( 2 ) __meta__ = { "_edit_use_anchors_": false } world_offset = Vector3( 0, 1.5, 0 ) [node name="RigidBodyFriction05" type="RigidBody" parent="StaticBodyFriction0/RigidBodies"] transform = Transform( 1, 0, 0, 0, 0.866025, -0.5, 0, 0.5, 0.866025, 3, 10, 0 ) physics_material_override = SubResource( 5 ) [node name="CollisionShape" type="CollisionShape" parent="StaticBodyFriction0/RigidBodies/RigidBodyFriction05"] shape = SubResource( 4 ) [node name="LabelFriction" type="Label" parent="StaticBodyFriction0/RigidBodies/RigidBodyFriction05"] margin_right = 40.0 margin_bottom = 14.0 text = "0.5" align = 1 script = ExtResource( 2 ) __meta__ = { "_edit_use_anchors_": false } world_offset = Vector3( 0, 1.5, 0 ) [node name="RigidBodyFriction1" type="RigidBody" parent="StaticBodyFriction0/RigidBodies"] transform = Transform( 1, 0, 0, 0, 0.866025, -0.5, 0, 0.5, 0.866025, 6, 10, 0 ) physics_material_override = SubResource( 6 ) [node name="CollisionShape" type="CollisionShape" parent="StaticBodyFriction0/RigidBodies/RigidBodyFriction1"] shape = SubResource( 4 ) [node name="LabelFriction" type="Label" parent="StaticBodyFriction0/RigidBodies/RigidBodyFriction1"] margin_right = 40.0 margin_bottom = 14.0 text = "1" align = 1 script = ExtResource( 2 ) __meta__ = { "_edit_use_anchors_": false } world_offset = Vector3( 0, 1.5, 0 ) [node name="StaticBodyFriction1" type="StaticBody" parent="."] transform = Transform( 1, 0, 0, 0, 0.866025, -0.5, 0, 0.5, 0.866025, 6, 8.581, 0 ) physics_material_override = SubResource( 7 ) [node name="CollisionShape" type="CollisionShape" parent="StaticBodyFriction1"] transform = Transform( 5, 0, 0, 0, 1, 0, 0, 0, 50, 0, 0, 0 ) shape = SubResource( 2 ) [node name="RigidBodies" type="Spatial" parent="StaticBodyFriction1"] transform = Transform( 1, 0, 0, 0, 0.866026, 0.5, 0, -0.5, 0.866026, -3, -7.431, 4.291 ) [node name="RigidBodyFriction0" type="RigidBody" parent="StaticBodyFriction1/RigidBodies"] transform = Transform( 1, 0, 0, 0, 0.866025, -0.5, 0, 0.5, 0.866025, 0, 10, 0 ) physics_material_override = SubResource( 3 ) [node name="CollisionShape" type="CollisionShape" parent="StaticBodyFriction1/RigidBodies/RigidBodyFriction0"] shape = SubResource( 4 ) [node name="LabelFriction" type="Label" parent="StaticBodyFriction1/RigidBodies/RigidBodyFriction0"] margin_right = 40.0 margin_bottom = 14.0 text = "0" align = 1 script = ExtResource( 2 ) __meta__ = { "_edit_use_anchors_": false } world_offset = Vector3( 0, 1.5, 0 ) [node name="RigidBodyFriction05" type="RigidBody" parent="StaticBodyFriction1/RigidBodies"] transform = Transform( 1, 0, 0, 0, 0.866025, -0.5, 0, 0.5, 0.866025, 3, 10, 0 ) physics_material_override = SubResource( 5 ) [node name="CollisionShape" type="CollisionShape" parent="StaticBodyFriction1/RigidBodies/RigidBodyFriction05"] shape = SubResource( 4 ) [node name="LabelFriction" type="Label" parent="StaticBodyFriction1/RigidBodies/RigidBodyFriction05"] margin_right = 40.0 margin_bottom = 14.0 text = "0.5" align = 1 script = ExtResource( 2 ) __meta__ = { "_edit_use_anchors_": false } world_offset = Vector3( 0, 1.5, 0 ) [node name="RigidBodyFriction1" type="RigidBody" parent="StaticBodyFriction1/RigidBodies"] transform = Transform( 1, 0, 0, 0, 0.866025, -0.5, 0, 0.5, 0.866025, 6, 10, 0 ) physics_material_override = SubResource( 6 ) [node name="CollisionShape" type="CollisionShape" parent="StaticBodyFriction1/RigidBodies/RigidBodyFriction1"] shape = SubResource( 4 ) [node name="LabelFriction" type="Label" parent="StaticBodyFriction1/RigidBodies/RigidBodyFriction1"] margin_right = 40.0 margin_bottom = 14.0 text = "1" align = 1 script = ExtResource( 2 ) __meta__ = { "_edit_use_anchors_": false } world_offset = Vector3( 0, 1.5, 0 ) [node name="Camera" type="Camera" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4.53602, 22.1236 ) [node name="OmniLight" type="OmniLight" parent="Camera"] omni_range = 50.0 [node name="LabelGround0" type="Label" parent="."] anchor_left = 0.5 anchor_right = 0.5 margin_left = -164.0 margin_top = 80.0 margin_right = -28.0 margin_bottom = 94.0 text = "GROUND FRICTION 0" __meta__ = { "_edit_use_anchors_": false } [node name="LabelGround1" type="Label" parent="."] anchor_left = 0.5 anchor_right = 0.5 margin_left = 31.0 margin_top = 80.0 margin_right = 167.0 margin_bottom = 94.0 text = "GROUND FRICTION 1" __meta__ = { "_edit_use_anchors_": false } GDSC O)¶󶶶 $ⶶ$ ﶶ$嶶 󶶶¶¶Ӷ¶¶϶ŶŶ϶ŶŶŶŶ ζ¶ Ӷ ҶӶ ӶӶ ¶Ķ޶ Ӷ۶¶Ŷ Ŷ׶¶Ӷ¶¶¶ ¶϶Ҷ Ӷ釶ӶҶضŶҶҶͶŶζ ҶҶ Ӷ ϶ζӶ ϶ Ҷ ۶ض ϶Ӷ ¶ Ӷ$ض ׶ ޶ Զ ĶҶJoint Type/%s Joint (%d)!Test case/Attached bodies collideTest case/No parent body-Test case/Parent body is dynamic (no gravity)Test case/Destroy attached body1Test case/Set body positions after added to scene?option_selected_on_option_selectedoption_changed_on_option_changed Joint Type: ??timeout    # $ 0 16;<AFKPUV\]^djkq{ !"#$%&'()*+,-./0123 4'5+6/738>9?:@;G<N=W>`?n@yA}B~CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh)i1j5k<lLmOn_ofpgqlrqszt~uvwxyz{|}~   !'3YYY:YY:Y:Y:Y:Y:YY:PRRQYY;Y; YY; Y; Y; Y; Y;YY;NOYYY0PQV;WY;W)TPQV;TPQT;T;TP RTPQ Q;LR MT PQLMYT PR RQT PR RQT PR RQT PR RQT PR RQYT!P RRQT!PRRQY T"PQL M YYY0#P$QV&V%PQW&T' TYYY0(P)QV;*)<+&* *T,V;*T-.&  T/PQV T"PQLM YYY00P1QV&T2P1QV L1M YYY03P1R4QV/1VV 4 V 4 V 4 V 4 V4 YYY0%PQV5PQY;6W7Y*6TPQV;86TPQ ;96TP8Q6T:P9Q9T;PQY;<=PR Q<T>?T@&V6TAP<Q<TBTCPRRQ(V<TBTCPRRQ6TAP<QY;D& VD=PR Q& VDT>?T@DTE<TE(VDT>?TF&V6TAPDQDTBTCPRRQ(VDTBTCPRRQ6TAPDQY;G THPQGT GTIP Q&DVGTJPDTKPQQGTLP<TKPQQ6TAPGQY& VAPMPQRQ&NPQV.Y<T;PQY`[gd_scene load_steps=4 format=2] [ext_resource path="res://utils/camera_orbit.gd" type="Script" id=1] [ext_resource path="res://tests/functional/test_joints.gd" type="Script" id=2] [ext_resource path="res://tests/test_options.tscn" type="PackedScene" id=3] [node name="Test" type="Spatial"] script = ExtResource( 2 ) [node name="LabelJointType" type="Label" parent="."] margin_left = 14.0 margin_top = 78.0 margin_right = 171.0 margin_bottom = 92.0 text = "Joint Type: " __meta__ = { "_edit_use_anchors_": false } [node name="Options" parent="." instance=ExtResource( 3 )] [node name="Joints" type="Spatial" parent="."] [node name="PinJoint" type="PinJoint" parent="Joints"] [node name="HingeJoint" type="HingeJoint" parent="Joints"] [node name="SliderJoint" type="SliderJoint" parent="Joints"] [node name="ConeTwistJoint" type="ConeTwistJoint" parent="Joints"] [node name="Generic6DOFJoint" type="Generic6DOFJoint" parent="Joints"] [node name="Objects" type="Spatial" parent="."] [node name="Camera" type="Camera" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 6.19796 ) script = ExtResource( 1 ) [node name="OmniLight" type="OmniLight" parent="Camera"] omni_range = 50.0 GDSC _$¶󶶶ﶶ󶶶 嶶󶶶 䶶󶶶 ﶶ ϶Ӷƶ ض޶Ŷ Ӷ ¶ζ϶϶ ӶŶӶ϶ŶŶŶŶض߶Ӷ϶ ӶӶ۶ҶӶ Ӷ¶ζ¶¶ ¶϶Ҷζ Ӷ釶ҶضŶ϶ҶҶ ζ ¶ Ӷ ϶ Ҷ ¶ ϶Ҷ϶ĶŶ ƶ ϶Ӷ޶ ضӶӶĶ Ŷ۶ĶƶӶ嶶϶Ӷ¶ӶҶĶӶ ӶݶBody Type/%s (%d)1Physics options/Gravity on floor (Kinematic only).Physics options/Stop on slope (Kinematic only))Physics options/Use snap (Kinematic only)%Physics options/Friction (Rigid only)"Physics options/Rough (Rigid only)4Physics options/AnimationPlayer physics process modeCollision shapes/CapsuleCollision shapes/BoxCollision shapes/CylinderCollision shapes/SphereCollision shapes/ConvexCollision shapes/Ray KinematicBody RigidBodyoption_selected_on_option_selectedoption_changed_on_option_changedCapsuleBoxCylinderSphereConvexRay?Move Body Type:  Collision Shape:     # ( ) .38=BGHMRW\afgmsx} !"#$%&'()*+,-./01234 5678%90:;;F<Q=\>]?h@sAtB{CDEFGHIJKLMNOPQRSTUVWXYZ[\ ]^_`a&b+c.d5e:f=gDhIiLjSkXlYmZncogpjqnrssvtzuvwxyz{|}~ '+/6:;<BHNTZ`ht~3YYY:YY:Y:Y:Y:Y:Y:YY:Y: Y:  Y:  Y:  Y:  YY; Y; Y; Y; Y; Y; YY;NOY;LMY;Y;Y;Y;LRMYY;NOY;YYY0PQV;W;W T!PQ)"T#PQV;$L"M;%L$T&R"MT'P%QT(P%QL%M)P$Q$T*PQYT'PQT'P QT'P QT'P QT'P QT'P QYT'PRR QT'PRR QT'PRR QT'PRR QT'PRR QT'PRR QYT+PRRQT+PRRQYLML ML ML ML ML MLMY,PQYYY0-P.QV;/.<0&/ /T1V;2/T34&2  2 T#PQV,P2QYYY05P6QV&T7P6QV8P6Q(V/6VVLM,PQ VL M,PQ VL M,PQ VL M,PQ VL M,PQ VL M,PQYYY09P6R:QV/6VV:,PQV:,PQV:,PQV:,PQV:,PQV:,PQYYY0,P;QV&VT*PQ;L;M;<W ;$LL;MMT=PQ$>PQ<T?P$Q@PQYYY08PAQV&VT*PQATBPAQ;<W ;$LAMT=PQ$>PQ<T?P$Q@PQYYY0>PQV&4CVTDTETF'4GVTHTITHTJ&( )KT!PQV&K4LV&KT&VKT*PQYYY0@PQV;MWNOPMTQPQ&VMTRPTS(VMTRPTTMTUP!QYWVTW"LM#YYY0)PXQV)YXT!PQVYTZX;[\T]PQ[T^PXQ.[Y`[gd_scene load_steps=14 format=2] [ext_resource path="res://utils/camera_orbit.gd" type="Script" id=1] [ext_resource path="res://tests/functional/test_moving_platform.gd" type="Script" id=2] [ext_resource path="res://tests/test_options.tscn" type="PackedScene" id=3] [ext_resource path="res://utils/kinematicbody_physics.gd" type="Script" id=4] [sub_resource type="CapsuleShape" id=1] radius = 0.3 [sub_resource type="BoxShape" id=2] extents = Vector3( 0.3, 0.8, 0.3 ) [sub_resource type="CylinderShape" id=3] radius = 0.3 height = 1.60005 [sub_resource type="SphereShape" id=4] radius = 0.79945 [sub_resource type="ConvexPolygonShape" id=5] points = PoolVector3Array( -0.7, 0, -0.7, -0.3, 0, 0.8, 0.8, 0, -0.3, 0, -0.8, 0 ) [sub_resource type="RayShape" id=6] length = 0.8 [sub_resource type="PhysicsMaterial" id=7] [sub_resource type="BoxShape" id=8] extents = Vector3( 2, 0.2, 1 ) [sub_resource type="Animation" id=9] length = 9.0 tracks/0/type = "bezier" tracks/0/path = NodePath(".:translation:x") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "points": PoolRealArray( -7, -0.25, 0, 0.25, 0, -7, -0.25, 0, 0.25, 0, 6, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 3, 6.5 ) } tracks/1/type = "bezier" tracks/1/path = NodePath(".:translation:y") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { "points": PoolRealArray( -4.23538, -0.25, 0, 0.25, 0, -4.23538, -0.25, 0, 0.25, 0, 3, -0.25, 0, 0.25, 0, 3, -0.25, 0, 0.25, 0, -4.23538, -0.25, 0, 0.25, 0 ), "times": PoolRealArray( 0, 0.5, 3, 6.5, 9 ) } [node name="Test" type="Spatial"] script = ExtResource( 2 ) [node name="LabelBodyType" type="Label" parent="."] margin_left = 14.0 margin_top = 78.0 margin_right = 171.0 margin_bottom = 92.0 text = "Body Type: " __meta__ = { "_edit_use_anchors_": false } [node name="Options" parent="." instance=ExtResource( 3 )] margin_top = 120.0 margin_bottom = 140.0 [node name="Bodies" type="Spatial" parent="."] [node name="KinematicBody" type="KinematicBody" parent="Bodies"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -7, -4.18538, 0 ) collision_layer = 2 script = ExtResource( 4 ) _stop_on_slopes = true _use_snap = true [node name="Capsule" type="CollisionShape" parent="Bodies/KinematicBody"] transform = Transform( 1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0.8, 0 ) shape = SubResource( 1 ) [node name="Box" type="CollisionShape" parent="Bodies/KinematicBody"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.8, 0 ) shape = SubResource( 2 ) [node name="Cylinder" type="CollisionShape" parent="Bodies/KinematicBody"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.8, 0 ) shape = SubResource( 3 ) [node name="Sphere" type="CollisionShape" parent="Bodies/KinematicBody"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.8, 0 ) shape = SubResource( 4 ) [node name="Convex" type="CollisionShape" parent="Bodies/KinematicBody"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.8, 0 ) shape = SubResource( 5 ) [node name="Ray" type="CollisionShape" parent="Bodies/KinematicBody"] transform = Transform( 1, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0.8, 0 ) shape = SubResource( 6 ) [node name="RigidBody" type="RigidBody" parent="Bodies"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -7, -4.18538, 0 ) collision_layer = 4 physics_material_override = SubResource( 7 ) axis_lock_angular_x = true axis_lock_angular_y = true axis_lock_angular_z = true [node name="Capsule" type="CollisionShape" parent="Bodies/RigidBody"] transform = Transform( 1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0.8, 0 ) shape = SubResource( 1 ) [node name="Box" type="CollisionShape" parent="Bodies/RigidBody"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.8, 0 ) shape = SubResource( 2 ) [node name="Cylinder" type="CollisionShape" parent="Bodies/RigidBody"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.8, 0 ) shape = SubResource( 3 ) [node name="Sphere" type="CollisionShape" parent="Bodies/RigidBody"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.8, 0 ) shape = SubResource( 4 ) [node name="Convex" type="CollisionShape" parent="Bodies/RigidBody"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.8, 0 ) shape = SubResource( 5 ) [node name="Ray" type="CollisionShape" parent="Bodies/RigidBody"] transform = Transform( 1, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0.8, 0 ) shape = SubResource( 6 ) [node name="Platforms" type="Spatial" parent="."] [node name="KinematicPlatform" type="KinematicBody" parent="Platforms"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -7, -4.25, 0 ) [node name="CollisionShape" type="CollisionShape" parent="Platforms/KinematicPlatform"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.2, 0 ) shape = SubResource( 8 ) [node name="AnimationPlayer" type="AnimationPlayer" parent="Platforms/KinematicPlatform"] anims/Move = SubResource( 9 ) [node name="Camera" type="Camera" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 10 ) script = ExtResource( 1 ) [node name="OmniLight" type="OmniLight" parent="Camera"] omni_range = 50.0 GDSC $ 4n¶¶ ζ ζ Ӷ Ѷ϶Ҷ ӶҶ϶ζ϶϶ڶ ζ Ŷ޶޶ Ӷڶ ۶ضӶ Ҷζζ ζ̶̶ ̶ ζζ Ӷ Ӷd ??Row%02dBox%02d+;K L M S W XY_efpq~ !"#$ % &'(")1*=+D,E-O.P/Z0[1e2f3l43YYY8PRRQ;Y8PRRQ;Y8PRRQ;Y8PQ;PRRQY8PQ;PRRQYYY0PQVPQYYY0PQV;W Y;  PRQY; T T Y)V;;;4PRQ;4PRQY;TPQTTPR RQTPQTPQY;PQPTTQY)V;PQPTTQY)V; ;! T"PQ!TTPRRQ!T P QTP!QYTTYTTY T T Y T#PQY`[gd_scene load_steps=4 format=2] [ext_resource path="res://tests/functional/test_pyramid.gd" type="Script" id=1] [ext_resource path="res://tests/static_scene_plane.tscn" type="PackedScene" id=2] [ext_resource path="res://utils/camera_orbit.gd" type="Script" id=4] [node name="Test" type="Spatial"] script = ExtResource( 1 ) [node name="Pyramid" type="Spatial" parent="."] [node name="StaticBodyPlane" parent="." instance=ExtResource( 2 )] [node name="Camera" type="Camera" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 6.62348, 22.9474 ) script = ExtResource( 4 ) GDSC 1O¶ŶŶ϶϶ ڶڶҶٶӶ Ҷ Ҷ¶ ĶҶŶ׶Ѷ ѶĶض޶ӶŶض϶ ϶ Ӷ ҶӶӶĶ۶ضŶ¶ζҶ ¶Ҷ¶϶ ĶضҶ Ҷ ζ?timeout* Start Raycasting... * Testing: %s@Raycast in: %sHITNO HIT?@@Raycast out: %s??Raycast inside: %s??    % + 1 78=FGQWYZ^_`glnost{ |!"#$%&'()*+,-./01234567,8;9<:B;C<D=O>[?_@hAkByCzD{EFGHIJKLMNO3YYY;YY5;TPQYYY0PQV;TPQTT T Y PQ PR PQQYAPPQRQ&PQV.YYYY0PQV&V.YYTPQYTPQTPTQY)WTPQV;<;TPQTYTPT QY;!T"T#Y;$%PR!PRRQR!QTPP &$( QQY!T& $%PR!R!PR RQQTP P &$( QQY!T&$%PR!R!PRRQQTPP &$( QQYT'PQYYY0%PR(R)QV;*T+P(R)Q&*VT,PT-Q(VT,PT.T/PQQYT0P(QT0P)QYT0P)QT0P)PRRQQT0P)QT0P)PRRQQY.*Y`[gd_scene load_steps=9 format=2] [ext_resource path="res://assets/robot_head/godot3_robot_head_collision.tres" type="Shape" id=1] [ext_resource path="res://tests/functional/test_raycasting.gd" type="Script" id=2] [ext_resource path="res://utils/camera_orbit.gd" type="Script" id=4] [sub_resource type="BoxShape" id=1] [sub_resource type="SphereShape" id=2] [sub_resource type="CapsuleShape" id=3] [sub_resource type="CylinderShape" id=4] [sub_resource type="ConvexPolygonShape" id=5] points = PoolVector3Array( -0.7, 0, -0.7, -0.3, 0, 0.8, 0.8, 0, -0.3, 0, -1, 0 ) [node name="Test" type="Spatial"] script = ExtResource( 2 ) [node name="Shapes" type="Spatial" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 9.35591, 0 ) [node name="RigidBodyBox" type="RigidBody" parent="Shapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, 0 ) mode = 3 [node name="CollisionShape" type="CollisionShape" parent="Shapes/RigidBodyBox"] transform = Transform( 0.579556, 0.0885213, 0.145926, 0, 0.939693, -0.205212, -0.155291, 0.330366, 0.544604, 0, 0, 0 ) shape = SubResource( 1 ) [node name="RigidBodySphere" type="RigidBody" parent="Shapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 0 ) mode = 3 [node name="CollisionShape" type="CollisionShape" parent="Shapes/RigidBodySphere"] transform = Transform( 1.2, 0, 0, 0, 1.2, 0, 0, 0, 1.2, 0, 0, 0 ) shape = SubResource( 2 ) [node name="RigidBodyCapsule" type="RigidBody" parent="Shapes"] mode = 3 [node name="CollisionShape" type="CollisionShape" parent="Shapes/RigidBodyCapsule"] transform = Transform( 0.8, 0, 0, 0, -1.30337e-07, -0.8, 0, 0.8, -1.30337e-07, 0, 0, 0 ) shape = SubResource( 3 ) [node name="RigidBodyCylinder" type="RigidBody" parent="Shapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 0 ) mode = 3 [node name="CollisionShape" type="CollisionShape" parent="Shapes/RigidBodyCylinder"] transform = Transform( 0.772741, -0.258819, 2.59821e-08, 0.2, 0.933013, -0.207055, 0.0535898, 0.25, 0.772741, 0, 0, 0 ) shape = SubResource( 4 ) [node name="RigidBodyConvexPolygon" type="RigidBody" parent="Shapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 6, -0.211, 0 ) mode = 3 [node name="CollisionShape" type="CollisionShape" parent="Shapes/RigidBodyConvexPolygon"] transform = Transform( 2, 0, 0, 0, 2.89766, -0.517939, 0, 0.776908, 1.93177, 0, 0.3533, 0 ) shape = SubResource( 5 ) [node name="StaticBodyHead" type="StaticBody" parent="Shapes"] transform = Transform( 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, -6, 3.93357 ) [node name="CollisionShape" type="CollisionShape" parent="Shapes/StaticBodyHead"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0 ) shape = ExtResource( 1 ) [node name="Camera" type="Camera" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5.8667, 11.8164 ) script = ExtResource( 4 ) GDSC +R¶ 󶶶 ӶŶ ӶӶŶĶ϶ŶŶӶŶŶ Ӷ ӶŶض۶¶ӶҶضŶ Ӷ Ҷ ¶Ӷ¶¶ӶҶĶ҇҄Ӷ ӶݶFloor options/BigFloor options/SmallCollision shapes/ConcaveCollision shapes/ConvexCollision shapes/BoxSmallFloors/ConvexSmallBigFloors/ConvexBigFloors/ConcaveBigFloors/ConcaveSmall Floors/BoxBigFloors/BoxSmalloption_selected_on_option_selected Floor Type: / Size:     " ( -.369:;AGQ^kx !"#$%&'()*+,-./01 2345678%9):/;0<9==>B?C@QAUB]C^DwExFyGHIJKLMNOPQR3YYY:Y:YY:Y:Y:YY;Y;NOY;YY; Y; Y; YYY0 PQV; WPWQLMPWQLMPWQLMPW QLMPW QLMPW QLMPW QWTPQ)WTPQVTPQY TPQ TPQ TPQ TPQ TPQY TP RRQPQYYY0PQV/VVV\V PQYYY0PQV& V TPQ& V TPQY;TPQ PQY;L MTPQ WTPQYWT  T!PRRQLMYYY0P"QV)#"TPQV#T$")%#TPQV%T$")&%TPQV&T$";'(T)PQ'T*P"Q.'YY`[gd_scene load_steps=35 format=2] [ext_resource path="res://utils/rigidbody_ground_check.gd" type="Script" id=1] [ext_resource path="res://tests/test_options.tscn" type="PackedScene" id=2] [ext_resource path="res://tests/functional/test_rigidbody_ground_check.gd" type="Script" id=3] [ext_resource path="res://utils/camera_orbit.gd" type="Script" id=4] [sub_resource type="PhysicsMaterial" id=1] friction = 0.0 [sub_resource type="BoxShape" id=2] [sub_resource type="CubeMesh" id=3] [sub_resource type="SpatialMaterial" id=4] [sub_resource type="PhysicsMaterial" id=5] friction = 0.0 [sub_resource type="CapsuleShape" id=6] [sub_resource type="CapsuleMesh" id=7] [sub_resource type="SpatialMaterial" id=8] [sub_resource type="PhysicsMaterial" id=9] friction = 0.0 [sub_resource type="CylinderShape" id=10] [sub_resource type="CylinderMesh" id=11] [sub_resource type="SpatialMaterial" id=12] [sub_resource type="PhysicsMaterial" id=13] friction = 0.0 [sub_resource type="ConvexPolygonShape" id=14] points = PoolVector3Array( -0.7, 0, -0.7, -0.3, 0, 0.8, 0.8, 0, -0.3, 0, -1, 0 ) [sub_resource type="ArrayMesh" id=15] surfaces/0 = { "aabb": AABB( -0.7, -1, -0.7, 1.5, 1.00001, 1.5 ), "array_data": PoolByteArray( 51, 51, 51, 191, 0, 0, 0, 0, 51, 51, 51, 191, 167, 0, 167, 0, 154, 153, 153, 190, 0, 0, 0, 0, 205, 204, 76, 63, 212, 0, 118, 0, 205, 204, 76, 63, 0, 0, 0, 0, 154, 153, 153, 190, 118, 0, 212, 0, 0, 0, 0, 0, 0, 0, 128, 191, 0, 0, 0, 0, 0, 129, 0, 0 ), "array_index_data": PoolByteArray( 0, 0, 1, 0, 3, 0, 1, 0, 2, 0, 3, 0, 2, 0, 0, 0, 3, 0, 2, 0, 1, 0, 0, 0 ), "blend_shape_data": [ ], "format": 97539, "index_count": 12, "primitive": 4, "skeleton_aabb": [ ], "vertex_count": 4 } [sub_resource type="SpatialMaterial" id=16] [sub_resource type="PhysicsMaterial" id=17] friction = 0.0 [sub_resource type="SphereShape" id=18] [sub_resource type="SphereMesh" id=19] [sub_resource type="SpatialMaterial" id=20] [sub_resource type="RayShape" id=21] length = 1.5 [sub_resource type="SphereMesh" id=22] radius = 0.5 height = 1.0 [sub_resource type="PlaneMesh" id=23] size = Vector2( 50, 20 ) [sub_resource type="ConvexPolygonShape" id=24] points = PoolVector3Array( 25, 0, 10, -25, 0, 10, 25, 0, -10, -25, 0, -10 ) [sub_resource type="ConvexPolygonShape" id=25] points = PoolVector3Array( 25, 0, 10, -25, 0, 10, 25, 0, -10, -25, 0, -10 ) [sub_resource type="ConvexPolygonShape" id=26] points = PoolVector3Array( 50, 0, 50, -50, 0, 50, 50, 0, -50, -50, 0, -50 ) [sub_resource type="ConcavePolygonShape" id=27] data = PoolVector3Array( -1, 0, 1, 1, 0, -1, 1, 0, 1, -1, 0, 1, -1, 0, -1, 1, 0, -1 ) [sub_resource type="ConcavePolygonShape" id=28] data = PoolVector3Array( 50, 0, 50, -50, 0, 50, 50, 0, -50, -50, 0, 50, -50, 0, -50, 50, 0, -50 ) [sub_resource type="BoxShape" id=29] extents = Vector3( 50, 1, 20 ) [sub_resource type="BoxShape" id=30] extents = Vector3( 100, 1, 100 ) [node name="Test" type="Spatial"] script = ExtResource( 3 ) [node name="LabelBodyType" type="Label" parent="."] margin_left = 14.0 margin_top = 78.0 margin_right = 171.0 margin_bottom = 92.0 text = "Floor Type: " __meta__ = { "_edit_use_anchors_": false } [node name="Options" parent="." instance=ExtResource( 2 )] margin_top = 120.0 margin_bottom = 140.0 focus_mode = 2 [node name="DynamicShapes" type="Spatial" parent="."] [node name="Bodies" type="Spatial" parent="DynamicShapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5.2912, 0 ) [node name="RigidBodyBox" type="RigidBody" parent="DynamicShapes/Bodies"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, 0 ) physics_material_override = SubResource( 1 ) axis_lock_angular_x = true axis_lock_angular_y = true axis_lock_angular_z = true script = ExtResource( 1 ) [node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/Bodies/RigidBodyBox"] transform = Transform( 0.6, 0, 0, 0, 1, 0, 0, 0, 0.6, 0, 0, 0 ) shape = SubResource( 2 ) [node name="MeshInstance" type="MeshInstance" parent="DynamicShapes/Bodies/RigidBodyBox/CollisionShape"] mesh = SubResource( 3 ) material/0 = SubResource( 4 ) [node name="RigidBodyCapsule" type="RigidBody" parent="DynamicShapes/Bodies"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 0 ) physics_material_override = SubResource( 5 ) axis_lock_angular_x = true axis_lock_angular_y = true axis_lock_angular_z = true script = ExtResource( 1 ) [node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/Bodies/RigidBodyCapsule"] transform = Transform( 0.8, 0, 0, 0, -3.49691e-08, -0.8, 0, 0.8, -3.49691e-08, 0, 0, 0 ) shape = SubResource( 6 ) [node name="MeshInstance" type="MeshInstance" parent="DynamicShapes/Bodies/RigidBodyCapsule/CollisionShape"] mesh = SubResource( 7 ) material/0 = SubResource( 8 ) [node name="RigidBodyCylinder" type="RigidBody" parent="DynamicShapes/Bodies"] physics_material_override = SubResource( 9 ) axis_lock_angular_x = true axis_lock_angular_y = true axis_lock_angular_z = true script = ExtResource( 1 ) [node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/Bodies/RigidBodyCylinder"] transform = Transform( 0.8, 0, 0, 0, 1, 0, 0, 0, 0.8, 0, 0, 0 ) shape = SubResource( 10 ) [node name="MeshInstance" type="MeshInstance" parent="DynamicShapes/Bodies/RigidBodyCylinder/CollisionShape"] mesh = SubResource( 11 ) material/0 = SubResource( 12 ) [node name="RigidBodyConvex" type="RigidBody" parent="DynamicShapes/Bodies"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0.974548, 0 ) physics_material_override = SubResource( 13 ) axis_lock_angular_x = true axis_lock_angular_y = true axis_lock_angular_z = true script = ExtResource( 1 ) [node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/Bodies/RigidBodyConvex"] transform = Transform( 1.5, 0, 0, 0, 2, 0, 0, 0, 1.5, 0, 0, 0 ) shape = SubResource( 14 ) [node name="MeshInstance" type="MeshInstance" parent="DynamicShapes/Bodies/RigidBodyConvex/CollisionShape"] mesh = SubResource( 15 ) material/0 = SubResource( 16 ) [node name="RigidBodySphere" type="RigidBody" parent="DynamicShapes/Bodies"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 0 ) physics_material_override = SubResource( 17 ) axis_lock_angular_x = true axis_lock_angular_y = true axis_lock_angular_z = true script = ExtResource( 1 ) [node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/Bodies/RigidBodySphere"] transform = Transform( 0.8, 0, 0, 0, 0.8, 0, 0, 0, 0.8, 0, 0, 0 ) shape = SubResource( 18 ) [node name="MeshInstance" type="MeshInstance" parent="DynamicShapes/Bodies/RigidBodySphere/CollisionShape"] mesh = SubResource( 19 ) material/0 = SubResource( 20 ) [node name="RigidBodyRay" type="RigidBody" parent="DynamicShapes/Bodies"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 8.42391, 0, 0 ) physics_material_override = SubResource( 17 ) axis_lock_angular_x = true axis_lock_angular_y = true axis_lock_angular_z = true script = ExtResource( 1 ) [node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/Bodies/RigidBodyRay"] transform = Transform( 0.8, 0, 0, 0, 0, -0.8, 0, 0.8, 0, 0, 0, 0 ) shape = SubResource( 21 ) [node name="MeshInstance" type="MeshInstance" parent="DynamicShapes/Bodies/RigidBodyRay/CollisionShape"] mesh = SubResource( 22 ) material/0 = SubResource( 20 ) [node name="Floors" type="Spatial" parent="."] [node name="ConvexSmall" type="Spatial" parent="Floors"] [node name="ConvexFloor" type="StaticBody" parent="Floors/ConvexSmall"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -10 ) collision_layer = 2 collision_mask = 3 [node name="MeshInstance" type="MeshInstance" parent="Floors/ConvexSmall/ConvexFloor"] visible = false mesh = SubResource( 23 ) material/0 = null [node name="CollisionShape" type="CollisionShape" parent="Floors/ConvexSmall/ConvexFloor"] shape = SubResource( 24 ) [node name="ConvexFloor2" type="StaticBody" parent="Floors/ConvexSmall"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 10 ) collision_layer = 2 collision_mask = 3 [node name="MeshInstance" type="MeshInstance" parent="Floors/ConvexSmall/ConvexFloor2"] visible = false mesh = SubResource( 23 ) material/0 = null [node name="CollisionShape" type="CollisionShape" parent="Floors/ConvexSmall/ConvexFloor2"] shape = SubResource( 25 ) [node name="ConvexBig" type="Spatial" parent="Floors"] [node name="ConvexFloor" type="StaticBody" parent="Floors/ConvexBig"] collision_layer = 2 collision_mask = 3 [node name="MeshInstance" type="MeshInstance" parent="Floors/ConvexBig/ConvexFloor"] visible = false mesh = SubResource( 23 ) material/0 = null [node name="CollisionShape" type="CollisionShape" parent="Floors/ConvexBig/ConvexFloor"] shape = SubResource( 26 ) [node name="ConcaveSmall" type="Spatial" parent="Floors"] [node name="ConcaveFloor" type="StaticBody" parent="Floors/ConcaveSmall"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -10 ) collision_layer = 2 collision_mask = 3 [node name="MeshInstance" type="MeshInstance" parent="Floors/ConcaveSmall/ConcaveFloor"] visible = false mesh = SubResource( 23 ) material/0 = null [node name="CollisionShape" type="CollisionShape" parent="Floors/ConcaveSmall/ConcaveFloor"] transform = Transform( 25, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0 ) shape = SubResource( 27 ) [node name="ConcaveFloor2" type="StaticBody" parent="Floors/ConcaveSmall"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 10 ) collision_layer = 2 collision_mask = 3 [node name="MeshInstance" type="MeshInstance" parent="Floors/ConcaveSmall/ConcaveFloor2"] visible = false mesh = SubResource( 23 ) material/0 = null [node name="CollisionShape" type="CollisionShape" parent="Floors/ConcaveSmall/ConcaveFloor2"] transform = Transform( 25, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0 ) shape = SubResource( 27 ) [node name="ConcaveBig" type="Spatial" parent="Floors"] [node name="ConcaveFloor" type="StaticBody" parent="Floors/ConcaveBig"] collision_layer = 2 collision_mask = 3 [node name="MeshInstance" type="MeshInstance" parent="Floors/ConcaveBig/ConcaveFloor"] visible = false mesh = SubResource( 23 ) material/0 = null [node name="CollisionShape" type="CollisionShape" parent="Floors/ConcaveBig/ConcaveFloor"] shape = SubResource( 28 ) [node name="BoxSmall" type="Spatial" parent="Floors"] [node name="BoxFloor" type="StaticBody" parent="Floors/BoxSmall"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -10 ) collision_layer = 2 collision_mask = 3 [node name="MeshInstance" type="MeshInstance" parent="Floors/BoxSmall/BoxFloor"] visible = false mesh = SubResource( 23 ) material/0 = null [node name="CollisionShape" type="CollisionShape" parent="Floors/BoxSmall/BoxFloor"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0 ) shape = SubResource( 29 ) [node name="BoxFloor2" type="StaticBody" parent="Floors/BoxSmall"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 10 ) collision_layer = 2 collision_mask = 3 [node name="MeshInstance" type="MeshInstance" parent="Floors/BoxSmall/BoxFloor2"] visible = false mesh = SubResource( 23 ) material/0 = null [node name="CollisionShape" type="CollisionShape" parent="Floors/BoxSmall/BoxFloor2"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0 ) shape = SubResource( 29 ) [node name="BoxBig" type="Spatial" parent="Floors"] [node name="BoxFloor" type="StaticBody" parent="Floors/BoxBig"] collision_layer = 2 collision_mask = 3 [node name="MeshInstance" type="MeshInstance" parent="Floors/BoxBig/BoxFloor"] visible = false mesh = SubResource( 23 ) material/0 = null [node name="CollisionShape" type="CollisionShape" parent="Floors/BoxBig/BoxFloor"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0 ) shape = SubResource( 30 ) [node name="Camera" type="Camera" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.604, 22.124 ) far = 1000.0 script = ExtResource( 4 ) [node name="OmniLight" type="OmniLight" parent="Camera"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 14.6965, -5.95932 ) omni_range = 50.0 [gd_scene load_steps=11 format=2] [ext_resource path="res://utils/rigidbody_pick.gd" type="Script" id=1] [ext_resource path="res://test.gd" type="Script" id=2] [ext_resource path="res://tests/static_scene_plane.tscn" type="PackedScene" id=3] [ext_resource path="res://utils/camera_orbit.gd" type="Script" id=4] [sub_resource type="BoxShape" id=1] [sub_resource type="CapsuleShape" id=2] [sub_resource type="CylinderShape" id=3] [sub_resource type="ConvexPolygonShape" id=4] points = PoolVector3Array( -0.7, 0, -0.7, -0.3, 0, 0.8, 0.8, 0, -0.3, 0, -1, 0 ) [sub_resource type="SphereShape" id=5] [sub_resource type="RayShape" id=6] [node name="Test" type="Spatial"] script = ExtResource( 2 ) [node name="DynamicShapes" type="Spatial" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 9.35591, 0 ) [node name="RigidBodyBox" type="RigidBody" parent="DynamicShapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 1, 0 ) axis_lock_angular_x = true axis_lock_angular_y = true axis_lock_angular_z = true script = ExtResource( 1 ) [node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyBox"] transform = Transform( 0.6, 0, 0, 0, 1, 0, 0, 0, 0.6, 0, 0, 0 ) shape = SubResource( 1 ) [node name="RigidBodyCapsule" type="RigidBody" parent="DynamicShapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 1.0034, 0 ) axis_lock_angular_x = true axis_lock_angular_y = true axis_lock_angular_z = true script = ExtResource( 1 ) [node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyCapsule"] transform = Transform( 0.8, 0, 0, 0, -3.49691e-08, -0.8, 0, 0.8, -3.49691e-08, 0, 0, 0 ) shape = SubResource( 2 ) [node name="RigidBodyCylinder" type="RigidBody" parent="DynamicShapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.0034, 0 ) axis_lock_angular_x = true axis_lock_angular_y = true axis_lock_angular_z = true script = ExtResource( 1 ) [node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyCylinder"] transform = Transform( 0.8, 0, 0, 0, 1, 0, 0, 0, 0.8, 0, 0, 0 ) shape = SubResource( 3 ) [node name="RigidBodyConvex" type="RigidBody" parent="DynamicShapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 1.97795, 0 ) axis_lock_angular_x = true axis_lock_angular_y = true axis_lock_angular_z = true script = ExtResource( 1 ) [node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyConvex"] transform = Transform( 1.5, 0, 0, 0, 2, 0, 0, 0, 1.5, 0, 0, 0 ) shape = SubResource( 4 ) [node name="RigidBodySphere" type="RigidBody" parent="DynamicShapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 1, 0 ) axis_lock_angular_x = true axis_lock_angular_y = true axis_lock_angular_z = true script = ExtResource( 1 ) [node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodySphere"] transform = Transform( 0.8, 0, 0, 0, 0.8, 0, 0, 0, 0.8, 0, 0, 0 ) shape = SubResource( 5 ) [node name="RigidBodyRay" type="RigidBody" parent="DynamicShapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 1, 0 ) axis_lock_angular_x = true axis_lock_angular_y = true axis_lock_angular_z = true script = ExtResource( 1 ) [node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyRay"] transform = Transform( 0.8, 0, 0, 0, 0, -0.8, 0, 0.8, 0, 0, 0, 0 ) shape = SubResource( 6 ) [node name="StaticBodyPlane" parent="." instance=ExtResource( 3 )] [node name="Camera" type="Camera" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.604, 22.124 ) fov = 35.0 script = ExtResource( 4 ) [node name="OmniLight" type="OmniLight" parent="Camera"] omni_range = 50.0 [gd_scene load_steps=10 format=2] [ext_resource path="res://utils/rigidbody_pick.gd" type="Script" id=1] [ext_resource path="res://test.gd" type="Script" id=2] [ext_resource path="res://utils/camera_orbit.gd" type="Script" id=4] [ext_resource path="res://tests/static_scene.tscn" type="PackedScene" id=6] [sub_resource type="BoxShape" id=1] [sub_resource type="CapsuleShape" id=2] [sub_resource type="CylinderShape" id=3] [sub_resource type="ConvexPolygonShape" id=4] points = PoolVector3Array( -0.7, 0, -0.7, -0.3, 0, 0.8, 0.8, 0, -0.3, 0, -1, 0 ) [sub_resource type="SphereShape" id=5] [node name="Test" type="Spatial"] script = ExtResource( 2 ) [node name="DynamicShapes" type="Spatial" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 9.35591, 0 ) [node name="RigidBodyBox" type="RigidBody" parent="DynamicShapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, 0 ) script = ExtResource( 1 ) [node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyBox"] transform = Transform( 0.579556, 0.0885213, 0.145926, 0, 0.939693, -0.205212, -0.155291, 0.330366, 0.544604, 0, 0, 0 ) shape = SubResource( 1 ) [node name="RigidBodyCapsule" type="RigidBody" parent="DynamicShapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 0 ) script = ExtResource( 1 ) [node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyCapsule"] transform = Transform( 0.8, 0, 0, 0, -1.30337e-07, -0.8, 0, 0.8, -1.30337e-07, 0, 0, 0 ) shape = SubResource( 2 ) [node name="RigidBodyCylinder" type="RigidBody" parent="DynamicShapes"] script = ExtResource( 1 ) [node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyCylinder"] transform = Transform( 0.772741, -0.258819, 2.59821e-08, 0.2, 0.933013, -0.207055, 0.0535898, 0.25, 0.772741, 0, 0, 0 ) shape = SubResource( 3 ) [node name="RigidBodyConvex" type="RigidBody" parent="DynamicShapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 0 ) script = ExtResource( 1 ) [node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyConvex"] transform = Transform( 1.5, 0, 0, 0, 1.93185, -0.388229, 0, 0.517638, 1.44889, 0, 0, 0 ) shape = SubResource( 4 ) [node name="RigidBodySphere" type="RigidBody" parent="DynamicShapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 0 ) script = ExtResource( 1 ) [node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodySphere"] transform = Transform( 0.8, 0, 0, 0, 0.8, 0, 0, 0, 0.8, 0, 0, 0 ) shape = SubResource( 5 ) [node name="StaticScene" parent="." instance=ExtResource( 6 )] [node name="Camera" type="Camera" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4.53602, 22.1236 ) script = ExtResource( 4 ) [node name="OmniLight" type="OmniLight" parent="Camera"] omni_range = 50.0 GDSC /G¶¶޶޶ Ӷ Ѷ϶ݶ Ӷݶ϶ζ϶϶ڶ Ӷڶ ۶ضӶ Ҷζζ ζ̶̶ ̶ ζζ Ӷ Ӷd ??Row%02dBox%02d+;K L M S W XY_efpq~ !"#$ %&'(())*3+4,>-?.E/3YYY8PRRQ;Y8PRRQ;Y8PRRQ;Y8PQ;PRRQY8PQ;PRRQYYY0PQVPQYYY0PQV;W Y;  PRQY; T T Y)V;TPQTTPR RQTPQTPQY;PQPTTQY)V;PQPTTQY)V;; TPQTTPRRQTPQTPQYTTYTTY T T Y TPQY`[gd_scene load_steps=4 format=2] [ext_resource path="res://tests/functional/test_stack.gd" type="Script" id=1] [ext_resource path="res://tests/static_scene_plane.tscn" type="PackedScene" id=2] [ext_resource path="res://utils/camera_orbit.gd" type="Script" id=4] [node name="Test" type="Spatial"] script = ExtResource( 1 ) [node name="Stack" type="Spatial" parent="."] [node name="StaticBodyPlane" parent="." instance=ExtResource( 2 )] [node name="Camera" type="Camera" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4.53602, 12.2684 ) script = ExtResource( 4 ) GDSC 84¶ 󶶶 󶶶 Ӷ Ӷ Ӷ ŶŶӶ¶϶ ĶҶ¶ŶŶƶŶŶŶѶ Ѷ Ӷ¶ӶŶ׶Ӷ嶶ն ׶ ڶĶĶζζ϶϶ض̶̶޶ζζӶ ۶ض ݶ ӶŶ Ҷ¶ӶζҶ??timeout wait_done* Done.) Physics Tick: %.3f ms (total = %.3f ms)MbP?* Creating objects...? Create Time: %.3f ms* Adding objects... Add Time: %.3f ms* Moving objects... Move Time: %.3f ms* Removing objects... Remove Time: %.3f ms*7 D E K L QV[\]cmsuvz{ !"#$%&'()*+,-./0123456789:;<=>?@#A%B&C-D.E/F5G;HAIBJCKJLNMWN^OePiQzR{S|TUVWXYZ[\]^_`abcdefghijklmn op!q(r)s/t0u6v7w=x>yHzU{V|W}]~cdktu{ %23YYY:PRRQY:PRRQYY8PRRQ;Y8PRRQ;Y8PRRQ;YY;LMYY;Y;Y; YYY0 PQVAP PQRQ& PQV.Y PQYPQYAPPQR QPQYAP PQRQ& PQV.Y PQYPQYAPPQR QPQYAP PQRQ& PQV.Y PQYPQYAPPQR QPQYAP PQRQ& PQV.Y PQYPQYAPPQR QPQYAP PQRQ& PQV.YTP QYYY0PQV)VTPQYYY0PQV&V;TPQ;; TP L R MQYYY0 PQV  TPQ YYY0PQVYYY0PQVT PQYTPQ;!TPQY;"PQT#Y)$V;%PQT&Y)'V;(PQT)Y)*V;+,PQ+T-+T.T/P"R%R(QT0P+QY(T)Y%T&Y"T#Y!TPQ!TPP !QQYYY0PQV;1W2YTPQ;!TPQY)V1T3PQY!TPQ!TPP !QQYYY0PQVTPQ;!TPQY)VT.T/Y!TPQ!TPP !QQYYY0PQV;1W2YTPQ;!TPQY;4T5PQ)6KP4QV1T7PL46MQY!TPQ!TPP !QQY`[gd_scene load_steps=2 format=2] [ext_resource path="res://tests/performance/test_perf_broadphase.gd" type="Script" id=1] [node name="Test" type="Spatial"] script = ExtResource( 1 ) _enable_debug_collision = false row_size = 50 column_size = 50 depth_size = 50 [node name="Objects" type="Spatial" parent="."] [gd_scene load_steps=11 format=2] [ext_resource path="res://tests/performance/test_perf_contacts.gd" type="Script" id=1] [ext_resource path="res://utils/camera_orbit.gd" type="Script" id=3] [ext_resource path="res://tests/test_options.tscn" type="PackedScene" id=4] [ext_resource path="res://tests/static_scene.tscn" type="PackedScene" id=5] [sub_resource type="BoxShape" id=1] extents = Vector3( 0.5, 0.5, 0.5 ) [sub_resource type="CapsuleShape" id=2] radius = 0.5 height = 0.5 [sub_resource type="CylinderShape" id=3] radius = 0.5 height = 1.0 [sub_resource type="ConvexPolygonShape" id=4] points = PoolVector3Array( -0.7, 0, -0.7, -0.3, 0, 0.8, 0.8, 0, -0.3, 0, -1, 0 ) [sub_resource type="SphereShape" id=5] radius = 0.5 [sub_resource type="PlaneShape" id=6] [node name="Test" type="Spatial"] script = ExtResource( 1 ) _enable_debug_collision = false spawns = [ "SpawnTarget1", "SpawnTarget2", "SpawnTarget3", "SpawnTarget4", "SpawnTarget5", "SpawnTarget6", "SpawnTarget7", "SpawnTarget8", "SpawnTarget9", "SpawnTarget10", "SpawnTarget11", "SpawnTarget12", "SpawnTarget13", "SpawnTarget14", "SpawnTarget15", "SpawnTarget16" ] spawn_count = 200 spawn_randomize = Vector3( 0.2, 0.2, 0.2 ) [node name="Options" parent="." instance=ExtResource( 4 )] [node name="SpawnTarget1" type="Spatial" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 40, 7, -37.715 ) [node name="SpawnTarget2" type="Spatial" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 40, 7, -19.7248 ) [node name="SpawnTarget3" type="Spatial" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 21.4903, 7, -37.715 ) [node name="SpawnTarget4" type="Spatial" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 21.4903, 7, -19.7248 ) [node name="SpawnTarget5" type="Spatial" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 40, 7, 10.7172 ) [node name="SpawnTarget6" type="Spatial" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 40, 7, 28.7073 ) [node name="SpawnTarget7" type="Spatial" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 21.4903, 7, 10.7172 ) [node name="SpawnTarget8" type="Spatial" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 21.4903, 7, 28.7073 ) [node name="SpawnTarget9" type="Spatial" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -19.8583, 7, 10.7172 ) [node name="SpawnTarget10" type="Spatial" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -19.8583, 7, 28.7073 ) [node name="SpawnTarget11" type="Spatial" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -38.368, 7, 10.7172 ) [node name="SpawnTarget12" type="Spatial" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -38.368, 7, 28.7073 ) [node name="SpawnTarget13" type="Spatial" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -19.8583, 7, -38.798 ) [node name="SpawnTarget14" type="Spatial" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -19.8583, 7, -20.8078 ) [node name="SpawnTarget15" type="Spatial" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -38.368, 7, -38.798 ) [node name="SpawnTarget16" type="Spatial" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -38.368, 7, -20.8078 ) [node name="DynamicShapes" type="Spatial" parent="."] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -26.3192, 1.2359, 38.0117 ) [node name="RigidBodyBox" type="RigidBody" parent="DynamicShapes"] [node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyBox"] shape = SubResource( 1 ) [node name="RigidBodyCapsule" type="RigidBody" parent="DynamicShapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 0 ) [node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyCapsule"] shape = SubResource( 2 ) [node name="RigidBodyCylinder" type="RigidBody" parent="DynamicShapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 0 ) [node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyCylinder"] shape = SubResource( 3 ) [node name="RigidBodyConvex" type="RigidBody" parent="DynamicShapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 0 ) [node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyConvex"] transform = Transform( 0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0 ) shape = SubResource( 4 ) [node name="RigidBodySphere" type="RigidBody" parent="DynamicShapes"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 0 ) [node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodySphere"] shape = SubResource( 5 ) [node name="StaticScene" parent="." instance=ExtResource( 5 )] [node name="StaticBodyWalls" type="StaticBody" parent="."] [node name="CollisionShape1" type="CollisionShape" parent="StaticBodyWalls"] transform = Transform( -1.62921e-07, 1, 0, -1, -1.62921e-07, 0, 0, 0, 1, -50, 0, 0 ) shape = SubResource( 6 ) [node name="CollisionShape2" type="CollisionShape" parent="StaticBodyWalls"] transform = Transform( -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0, 1, 50, 0, 0 ) shape = SubResource( 6 ) [node name="CollisionShape3" type="CollisionShape" parent="StaticBodyWalls"] transform = Transform( 2.6543e-14, 1.62921e-07, 1, 1, -1.62921e-07, 1.56125e-19, 1.62921e-07, 1, -1.62921e-07, 0, 0, -50 ) shape = SubResource( 6 ) [node name="CollisionShape4" type="CollisionShape" parent="StaticBodyWalls"] transform = Transform( 2.6543e-14, 1.62921e-07, -1, 1, -1.62921e-07, -1.56125e-19, -1.62921e-07, -1, -1.62921e-07, 0, 0, 50 ) shape = SubResource( 6 ) [node name="Camera" type="Camera" parent="."] transform = Transform( 1, 0, 0, 0, 0.881757, 0.471705, 0, -0.471705, 0.881757, 0, 20.4125, 41.0426 ) script = ExtResource( 3 ) [node name="OmniLight" type="OmniLight" parent="Camera"] omni_range = 80.0 GDSC Q!¶䶶Ŷ ¶ӶŶŶӶ¶϶ ĶҶŶ¶ Ӷ Ҷ ݶҶŶ۶¶Ŷ ӶӶӶŶ׶Ӷ嶶ն ׶ ڶѶ Ѷ¶ƶҶضĶŶ Ӷζ Ӷ ζӶӶҶ ĶŶŶŶӶض¶ Ӷ ζ ض ӶӶ϶ ۶ ﶶضζ϶̶ض Ӷ ҶѶ ζӶ ϶¶ζShape type/AllShape type/BoxShape type/SphereShape type/CapsuleShape type/CylinderShape type/Convexd?timeoutoption_selected_on_option_selected) Physics Tick: %.3f ms (total = %.3f ms)MbP?BoxSphereCapsuleCylinderConvexInvalid shape type: ? wait_done@* Start all types. completed* Done all types. * Spawning:  * Activating * Despawning  " # 0 9 @AGHMRWXY_ioqr{ !"#$%&'()*+,-./0123456$7%8&9,:0;8<<==>>?D@HAIBJCQDUEVFZG[H_IbJfKiLqMtN|OPQRSTUVWXYZ[\]^_`abcdefgh i jklmno#p'q(r2s8t:u;v?w@xDyEzO{S|T}^~dfgklpq{#+;K[elry 3YYY:Y:Y:Y:Y:Y:YY8PRQ;PQY8PQ;Y8PQ; YY; LMYY; Y; Y; YYY0PQVAPP QR Q&PQV.Y*WTPQV;WTPQ TPQWTPQYWTPQWTPQWTPQWTPQWTPQWTPQWTP RR QYPQYYY0PQV) VTPQYYY0PQV& V; !T"PQ;#  ;$    %T&P L#R$MQYYY0'PQV  !T"PQ  YYY0(PQV YYY0)P*QV+PQY,PQY/*VVPQV-P.PQQV-P.PQQV-P.PQQV-P.PQQV-P.PQQYYY0.P/QV)0KP T1PQQV; L0M&PT2QT3P/Q V.0Y%T4P/Q.YYY0-P0QV&0 V.&0 T1PQV.YAPPQR Q&PQV.Y'PQY5P0QYAP6PQRQ(PQYAPPQR Q&PQV.Y'PQY7PQYAP6PQRQ(PQYAPPQR Q&PQV.Y'PQY,PQYAP6PQRQ(PQYAPPQR QYYY0PQV%T&PQY)0KP T1PQQVAP-P0QRQ&PQV.Y%T&PQYYY05P0QV;8 L0MY%T&P8T2QY)9V;:;P9QY)<KPQV;=8TPQT>PQ=T?=T?T>PQ;@8T>PQ@TA TB& TCV@TATDTE'PQ TE@TATDTF'PQ TF@TATDTG'PQ TG;H@TPQ@TPHQHTIPQ@TJP=Q@TKPQ:TJP@QYYY07PQV%T&PQY)9V;:;P9QY)LKP:TPQQV;M:TPLQ?EKW\bcdmxy !"#$%&'()*3YYY:YY;YYY0PQVTPRRQYPQ<PQYYY0 PQVT PQYYY0 PQV* PQV; P PQQP Q TPQYYY0PRQV;TPQ<YTPQ&TTVTT(VTTY& PQ V;PQ<PQTPQYPQY`GDSC |ڶ¶ ¶ ¶϶ض ¶ڶ Ŷ׶ ¶¶׶ ׶ Ŷ۶ض Ŷض Ӷ?      & '(/578?EGHQWYZeopz3YYY8PQ;YY;Y;YYY0PQVPQ<YYY0P QV&V.Y;  PQ& V.Y;  T PQ& V.Y;TT; TPQYY`GDSC ϶ĶŶ ƶ ϶ ϶Ŷ׶ƶ Ķƶ涶ӶA?  % , - . 5 >FPS]cdhwz3YYY8PQ;Y8PQ;Y8PQ;YY;Y;TYYY0PQV; T & PQ VT (VT  TY&V PR RT RQ(VPRT RQY`GDSC Nڶ Ŷ׶ Ӷ۶ӶӶⶶ嶶䶶ѶŶ Ѷ ¶Bullet Godot Physicsphysics/3d/physics_engine Other (%s)Physics engine: %s # * . 5 ? EL3YYY0PQV;/TPQVTTVTTVTT V;  T PQ  PQY`GDSC ڶ Ŷ׶ ¶ӶҶFPS: %d 3YYY0PQVPTPQQY`GDSC ڶ Ŷ׶Ӷ ӶҶ 3YYY0PQVPQTY`GDSC ,ڶ ӶӶ϶ ¶Ӷ'Select a test from the menu to start itTest: %s       # *3YYY;9YYY0PQVPQYYY0PQVPQY`GDSC ڶ Ŷ׶ ¶ӶٶѶGodot Version: %s 3YYY0PQVPTPQTQY`GDSC * =l ö ضҶ ޶ҶҶ۶ ζŶ¶¶Ӷ޶ƶ ƶζ ڶ ƶڶ۶Ҷ¶ ۶ ۶ƶ Ӷ Ӷ Ӷ ö öӶ$ض Ҷ۶¶Ҷ ζ¶ӶҶ ڶ/ index_pressed_on_item_pressedoption_changedoption_selected  & 2 ; B CHOZbhst~ !"#$%&'()*+,- . /01 2!3"4-596:7C8N9W:`;c<j=2Y3YYYBPQYBPRQYYY0PRRQV;T PRQ; T PQ@P QY; ; PQ)KP QV;LM  P R RQY;L M&V TPQ TP TPQRQ(V TPQYYY0PRQVTPQYYY0PR RQV&TPQV;TPQ;<@PQ.Y;TPQTT YT!PQT"PRQYT#PRRRLR MQY.YYY0$P%RR QV; T&P%QY&T'P%QV;T(P%QTP%RQ)PRRQ(V)PRQY`GDSC * / ϶ Ҷ ۶Ŷ̶ӶӶ ڶӶڶĶ Ӷ ҶضӶĶ Ŷ׶ĶӶҶŶӶ׶ƶ ϶϶涶ضݶ Ӷ ҶӶӶŶ۶ ҶҶݶ¶ٶ? ABAA$%* / 4 9 > CDELPX[cdels !"#$%&'()*+, - ./3YYY5;TTY5;WY5;WT PQYY; Y; Y; Y; Y;Y;YYY0PQV&VTT(VTTYYY0PQV;T;P  QPTTQTTT#PR QY&TTT  V &TTT V YPQYYY0PQV;PQT ;!"T#PQ!TT$!T%T!T&PQ!T';(T)P!Q&(V (VY`GDSC ,:) ϶ҶŶ Ŷ϶Ӷ¶¶ ¶ضҶζ ضض ض¶ ¶ Ŷڶ ζŶ׶ ׶ ׶ζ϶׶¶ ׶Ŷ۶Ŷ ¶ض ٶ¶Ӷ ϶{Gz??B  " # $ * ./07>GOST[_efgv} !"#$%&'()*+,-./0123 45678#9':3YYY:Y:YY;Y;TY;TYYY0PQVYYY0 P QV;  < &  T V& TVY; <&VTYYY0PR RRRQV;  < & T V& TV TYYY0PQV&V;Y;TTTTTY;PQT PQ&V;!T"T#!Y;$T"T%T&P"T%Q;'T($'Y&)*V"T%(V+Y`GDSC :Ķ ڶڶ Ŷ׶ ĶĶӶ Ӷ # + , - 483YYY8PQ;9YYY0PQV&V;PQTTYYY0PQVY`GDSC  ;ӶӶⶶ嶶䶶Ӷ Ӷ Ӷ嶶 Ӷ¶ѶŶ Ѷ Ŷ׶¶Ҷ嶶ضҶҶ ҶѶ ѶҶ¶ӶҶphysics/3d/physics_engineDEFAULTBullet GodotPhysicstoggle_full_screentoggle_debug_collisionDebug Collision ONDebug Collision OFF toggle_pauseexit      #)*23=ADJMSV\_efgnw !"#$%&'()*+,-./0123456789:;3YYY>NRRRYOYY;TYYY0PQVTY PQT Y;  T PQ/ VVTVTVT\VTYYY0PQV&TPQVTTY&TPQV;PQPQ&VTPQ(VTPQY&TP QV PQT PQTY&TP QV PQTPQYYY0PQV.YYY0PQV PQT YYY0PQV. PQT Y`GDSC RӶӶ䶶ҶӶӶ Ѷ ڶ Ķ entry_logged     " '234;@EP3YYY>NRRYOYYBPRQYYY0PQV?PQPRRTQYYY0 PQVEPQBPQPRRTQY`[remap] path="res://test.gdc" [remap] path="res://tests.gdc" [remap] path="res://tests/functional/test_collision_pairs.gdc" [remap] path="res://tests/functional/test_joints.gdc" [remap] path="res://tests/functional/test_moving_platform.gdc" [remap] path="res://tests/functional/test_pyramid.gdc" [remap] path="res://tests/functional/test_raycasting.gdc" [remap] path="res://tests/functional/test_rigidbody_ground_check.gdc" [remap] path="res://tests/functional/test_stack.gdc" [remap] path="res://tests/performance/test_perf_broadphase.gdc" [remap] path="res://tests/performance/test_perf_contacts.gdc" [remap] path="res://tests_menu.gdc" [remap] path="res://utils/camera_orbit.gdc" [remap] path="res://utils/container_log.gdc" [remap] path="res://utils/control3d.gdc" [remap] path="res://utils/kinematicbody_physics.gdc" [remap] path="res://utils/label_engine.gdc" [remap] path="res://utils/label_fps.gdc" [remap] path="res://utils/label_pause.gdc" [remap] path="res://utils/label_test.gdc" [remap] path="res://utils/label_version.gdc" [remap] path="res://utils/option_menu.gdc" [remap] path="res://utils/rigidbody_ground_check.gdc" [remap] path="res://utils/rigidbody_pick.gdc" [remap] path="res://utils/scroll_log.gdc" [remap] path="res://utils/system.gdc" [remap] path="res://utils/system_log.gdc" PNG  IHDR>a IDATxصA$uwuYByB4% uu~NW}WvFά|kl꡴HBd~%:RGE`VacS*ȈV >;fa)Z/EFZ01\эDǘbձy*;VMSAStZD&`9;LcisFׅg˫7fϒh܉-X[Yĭ^(9u0h)eE`X1D̩# mW1ƆYkw=Z@7s%}@B3ߡ۾K'{in> 21'6fO8V ] ^Gִ^"MC%,[{{Bh5|a~\y¹DyEuR71hJO全d y)Yp'R$Y8h,vT_} ER ģy:NEEetu]9 ʢLʦ@lǮ< V #˓go&WK-L~[}>'Xe8˥nbL6GDbNlV:l|DJu2O묃 v~p]Mɐ'b05#?dfXtu E,"6b$Vlx仄Q ?}樃O_9yeyȃO$e">)/hXh@KxWx ߽' ڏ^Ty;M 'L V'Єt 8x| p'"VjCYy;{KҧzyI+$%#GLAŕW_ @MxmZ<]ȁ̜|p䕻TLɔn[C14(}kXfhFyަÒ/N\K<3 g&Vy ՓB[Z]x.h2!)M<vpx9;5?R )y2h#kQDj^Cq@&71Q 6>`E~2c0g\)[$цFڏF|'T1^T[ c=ܕ)vEHL9=ZK&ъf:/Tx0 Ecf>SUy@$ #́Џd%*5Dy!QS4׸%͖O\5nhZ5hmjӱv{D&XⵂkhQ k"c\g1XlNHgmieZ0NBLFJĎ:Pxcsȧt+='ཏ0Q}7'bhA "T?( u>/ {&V/+uu m?Mx X}ԆyT0ԁ-w6ŧN'&@M#\ K+ĉK/IRF)QQζf{&'b2c$fbwh #)0Vر;e7{}:cDZ &Qǹ;1^>xP]E4x ߮ Ç]ňhEMcb"!!A2CRYY)`ƩXW0;\K:MhIHHh dM/_8Ⴠ!^su.u%F4@M%0XnO^~CFOKoh \vس{O憄hWt'u%ƽ{40:+!233$6Q<>]:wue 6FO.@nbD hEM:n#""5?ZIjj=?PN'.@P_nnmSp\bu붴nզFS{#ϟ?75YSXj`)Qm+ʒʬdah"9sש.d #svv@mA %ncOʜRq|. Є6蒬 &틎8v58m8k%& *g6pԡ'ksiA=̼`[7FJ{6D&MK66 KD^Qp9G؟Dy4NYv< <<+<J2I!X2ӡZĪh@ TZ= H;Xa<  `u⫍tSI9E~ f]A 9G /xWxwA hA8D\u 8}yxLl P8Р@ъfw>prxsw3ʷ@Y@m[\{C)>󉜣,/1SOXƢQ}}Cc=\.ߺOv|sp2)۹8$z&O1bש끟]H.l;3<'6Drn(0*].巓)|w<bGZL=# <?!}y2ST 32ua8d%b2 ۟8ox rCncj< C;[Zm0紓~ Xr tNcOaѢH/UЮ g!QyfKBQ<#mlK<+2hV%dch1 v/Mp/3cW9pcf't)DzApbEJ1M/m^p?۟zYy^X wq_&f;lIj G-*S2ĉ[/Ҥb:1)]i $|6;o2բhs4]=P>_nGHM(*R~ Q6O@9t&8^ոxCțLaw" m#sM@G2tFol=ú]„Yd.ׄd8&b!FOhU&gKA=:hgzX9ƛM^sǹAYn_P]C W6LvLV9-ffI"=;OX_BMOl;rpHN {55nb6F-˒'dϙጦ,q")- ʢL~۱ke)('D#龸,:> BHfjtS%F+߯qc9[NiQ[{1.?8{H `[c/6ɮp44s?8}>-+`.IS:i_x!8sa-,`^}e蜍bRxлxec>t~[ddI I,}[76fBc;kk5+[[ӌj7t csM_!L? )_\wHI,tc8[d+ _dAacZv`Ex鄴?M9;BtPht\s J8O4?c\\KgKLjH -=R0C,yW^+hr&)[Wܲ.c`Vay (7+_IENDB`ECFG_global_script_classes$class OptionMenulanguageGDScriptpathres://utils/option_menu.gdbase MenuButtonclassTestlanguageGDScriptpath res://test.gdbaseNode_global_script_class_icons8 OptionMenuTestapplication/config/name3D Physics Testsapplication/config/description This demo contains a series of tests for the 3D physics engine. They can be used for different purposes: - Functional tests to check for regressions and compare the behavior between physics engines - Performance tests to evaluate and compare performance between physics enginesapplication/run/main_sceneres://main.tscnapplication/config/iconres://icon.png autoload/Log$*res://utils/system_log.gdautoload/System *res://utils/system.gd.debug/gdscript/warnings/return_value_discardeddisplay/window/dpi/allow_hidpidisplay/window/stretch/mode 2ddisplay/window/stretch/aspectexpand input/ui_left8deadzone?eventsinput/ui_right8deadzone?events input/ui_up8deadzone?events input/ui_down8deadzone?eventsinput/toggle_full_screendeadzone?events InputEventKeyresource_local_to_scene resource_namedevicealtshiftcontrolmetacommandpressedscancodeFphysical_scancodeunicodeechoscript input/exitdeadzone?events InputEventKeyresource_local_to_scene resource_namedevicealtshiftcontrolmetacommandpressedscancodephysical_scancodeunicodeechoscriptinput/toggle_debug_collisiondeadzone?events InputEventKeyresource_local_to_scene resource_namedevicealtshiftcontrolmetacommandpressedscancodeCphysical_scancodeunicodeechoscriptinput/restart_testdeadzone?events InputEventKeyresource_local_to_scene resource_namedevicealtshiftcontrolmetacommandpressedscancodeRphysical_scancodeunicodeechoscriptinput/toggle_pausedeadzone?events InputEventKeyresource_local_to_scene resource_namedevicealtshiftcontrolmetacommandpressedscancodePphysical_scancodeunicodeechoscriptinput/character_rightdeadzone?events InputEventKeyresource_local_to_scene resource_namedevicealtshiftcontrolmetacommandpressedscancodeDphysical_scancodeunicodeechoscript InputEventKeyresource_local_to_scene resource_namedevicealtshiftcontrolmetacommandpressedscancodephysical_scancodeunicodeechoscriptinput/character_leftdeadzone?events InputEventKeyresource_local_to_scene resource_namedevicealtshiftcontrolmetacommandpressedscancodeAphysical_scancodeunicodeechoscript InputEventKeyresource_local_to_scene resource_namedevicealtshiftcontrolmetacommandpressedscancodephysical_scancodeunicodeechoscriptinput/character_jumpdeadzone?events InputEventKeyresource_local_to_scene resource_namedevicealtshiftcontrolmetacommandpressedscancodeWphysical_scancodeunicodeechoscript InputEventKeyresource_local_to_scene resource_namedevicealtshiftcontrolmetacommandpressedscancode physical_scancodeunicodeechoscript$rendering/quality/driver/driver_nameGLES2%rendering/vram_compression/import_etc&rendering/vram_compression/import_etc2)rendering/environment/default_clear_colorϼ<>ϼ<>ϼ<>?rendering/quality/filters/msaa