From 95946bf4b4d715638d49d864941d0369c92d6bd0 Mon Sep 17 00:00:00 2001 From: skyace65 Date: Sat, 1 Feb 2025 12:20:10 -0500 Subject: [PATCH] Rename particle_process_material_2D.rst to particle_process_material_2d.rst rename title --- tutorials/2d/img/emission_shapes1.png | Bin 3734 -> 0 bytes tutorials/2d/img/emission_shapes1.webp | Bin 0 -> 3668 bytes tutorials/2d/img/emission_shapes2.png | Bin 6922 -> 0 bytes tutorials/2d/img/emission_shapes2.webp | Bin 0 -> 5230 bytes tutorials/2d/img/emission_shapes3.png | Bin 3980 -> 0 bytes tutorials/2d/img/emission_shapes3.webp | Bin 0 -> 3802 bytes tutorials/2d/img/emission_shapes4.png | Bin 21888 -> 0 bytes tutorials/2d/img/emission_shapes4.webp | Bin 0 -> 9458 bytes tutorials/2d/img/particles2.png | Bin 12751 -> 0 bytes tutorials/2d/img/particles2.webp | Bin 0 -> 18386 bytes tutorials/2d/img/particles_convert.webp | Bin 13290 -> 4574 bytes ...es_flipbook_create_canvasitemmaterial.webp | Bin 5904 -> 6154 bytes tutorials/2d/img/particles_material.png | Bin 9192 -> 0 bytes tutorials/2d/img/particles_material.webp | Bin 0 -> 10102 bytes tutorials/2d/index.rst | 1 + tutorials/2d/particle_process_material_2d.rst | 280 ++++++++++++++++++ tutorials/2d/particle_systems_2d.rst | 257 +--------------- .../particles/process_material_properties.rst | 4 + 18 files changed, 301 insertions(+), 241 deletions(-) delete mode 100644 tutorials/2d/img/emission_shapes1.png create mode 100644 tutorials/2d/img/emission_shapes1.webp delete mode 100644 tutorials/2d/img/emission_shapes2.png create mode 100644 tutorials/2d/img/emission_shapes2.webp delete mode 100644 tutorials/2d/img/emission_shapes3.png create mode 100644 tutorials/2d/img/emission_shapes3.webp delete mode 100644 tutorials/2d/img/emission_shapes4.png create mode 100644 tutorials/2d/img/emission_shapes4.webp delete mode 100644 tutorials/2d/img/particles2.png create mode 100644 tutorials/2d/img/particles2.webp delete mode 100644 tutorials/2d/img/particles_material.png create mode 100644 tutorials/2d/img/particles_material.webp create mode 100644 tutorials/2d/particle_process_material_2d.rst diff --git a/tutorials/2d/img/emission_shapes1.png b/tutorials/2d/img/emission_shapes1.png deleted file mode 100644 index e93b8fcda8b0b531f1e1c2c114a3621a9d088931..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3734 zcmV;H4r%d;P)+Rs+;NRch-rnEc-QC>X-P_yT*xB0G*Voq8*VWb4)YaC|(bLS%)631$%*@Zq%+brt z&dJNs%F4~i%FxHj&&J5k#Kz3S#mmCP%D}_P!NSJC!NtD8$G*VCy}!o1zQwz~#Js$` zy1c-;yTG`*!MeJ-xVpZ!xxl5j^R~FXw70&sw!5>ny0Nspu(P_KvFot0wym(ZoUZ4q zuC}VJwyUkOs;#q{tK+JyubQgksH?M?so|xlv7@H2q^7N;rKzE%uA!u@k)qe1qpXpk z)}5iMkDt?@prf3isg9o0o1dtfo~VqQ&zPL1n3WRu!`jJjiz*@%mlii?egik5|mm4%3rgNT%a zhmwMalVFU`g@%ZMhLM7Wj(>!agM@~EgO7iLi+zHRe1VRDfrDIy#C(5^>hjw~~Sbn*7d4hC#hgf~Mba;h#czSVng=cr3 zb#{1gb%Swres6Pqa&vWUbAfSjaZ_}uYjA#WaBymGePV8tZf}c4lX2S!IS^WOQR>WmaQ_Vq;`nVslDml3QVMUtnNaUvOAn zZdqMtTwPs9UWrv(Y*bonSz20CS!zXEfl*j#S65e4R$)+9XiQdeR#sL|R%caJRZ&%6 zPE=-4R9;O}Wm8jAOjBh+RCi2LV@*+8N>F1;P+~?;YEMs3NKRl)O-)8kUrbC)Jxy#y zOI}AyRzpf%LP=aeNMS-qTRTZ*NJvOKNM$}oUOz@zI7ekYMqNHdSUyBoI7MGQL{~sW zPd!9dJwsMILs~jPRXIRZI6zi7KT|b7S2jLTH9S!~JUlczP&YeAJ3BiwJ5Mz^ML0M( zHa0diG&Clt?Kh@28BY zTtZ5u9PHTvWE*i5$8iS$|A=!*nq!t>^n_hh3YLwV$}C$V!zfZ9L715g36I1nlVs2l3siyolwz4E_(DTIiV#EX?X zKK(b1{Y+3z+rWo;B#xpRHdH@_-)B z)GZi!fF!Qm-)U^ni0oqH=t&$+rE1r9;83ZMNe9Z06ERIkj54CNLAABW2xSI9Dh(fI6YAI;jAMhNp!#{IoBxvI8d$vC`5tU^Ke)-0R85Y;Rk@GJ=*FRIhf#7f zKMCo9Pc75)6$fJ5UY{GI%q&>PG%nA7X_k95W<#4twIUiDR;LhhngmECqvTvZohp!!prW0b8$Uy8=lW!1M})7a15l|xxHqk+J~Iwmve#-VG+WR%>jzZvy4 z+(M=e%Kpo)eG>o(15gySghMveeKT>uPVe>J4r#X~t{GPcWv{C7bWKp|@j)pl=YvvE z3Q8yir37U^LD^60p}afkNR$$kf->crQl3#>@%NlNULK1QN+|0Sf)Yw7q5K-ka&Uh{ z2_=+Jw(Q)2YZGS}$8otmHeG0IE4tN^WGYiaV``j=kyR}^HzigL7&KHFqO@iVhHbecMG1l5f3R!b#iZnY@6Ah^Fu*UE z7T&A%dLQ%V+VW^x_L0}q!NI5RQC0$_;qe*}X7qb(HSTjsSmdYW{Nm3;?^+9Sp%5hb z{ovM9A(TUXeM8oN`(#UXb<3pSI<0}(^-SjbvVUd5Yxggf3FWJ^`}d!HRbiArJWdsR zkqjr1Q>gM@9c8MCNKsNbQ8JN40!lrVK{+Txc}vT5Yc){1iRegqP(It$Y_{u}`i#g@ zP(BWvzW;Y|7b!#z2Z=aDt7u`{u%MntwYU3lEi%P@Pn?w5nNRZ)J?oasw|)lpa1xO)sMlgx-z zN0~Yu2m}UxOUqFLL0u1mpI%FS$ka!*I>ZIZQ6ZE>d`-P&MOh^I7Ofv<{aVW^pmfu6 zt-|95cV-^9<3>yo<&)`Lxy z(n^3_AN<{QaiUw+jl89D0XcYX0w{Tbd+~(w47ad+{<+_0KSX)vl|ch0+V%N z;M@@*%Jj`WS(JNjrWwCZ04I*A&xlk*`B#8-^80CsPv3CTFe3H!5e$=4M?u>t3bu|Y zdBBgYLyq$3F?+dCGL>aTDc`=?N3*vjqYN{XL|_nibXl!?elfdi&65|<#*o_l-Ki;pkyX(Zt^6=$Bk`G|uCt!B^h4n@9kki0=qV+Hwyk|l?CBW8s zC>cby&XS<)7+r!D%17}OW~0|oSPB5K_$WW@ShOjvgmT@+x-B=~FkC&ia&Ym2lnyxs+#Y3a zvVG^qZF^RWGI1BQQDcwJF?>t-hBQrR?cp`aq!Rt z#tt1E6{Adz9LSP9Fp|o>riA*8NM)1@CkOEM!pUj*w}cEM2!2Kl+2|_F9#O5qK}k*; zE(#?woguSrx4~~5Qz5g785Gn*L^70Fm9q1N%awZs2Q7cSawzxFa&GzOd(-F|2l8h( z;*X}L*O+bGG$TUEjiFSZ5vhz4-#rB0PD?M+FgZoCfbd$PBaB4^Je1@}D4>iJQ5Qso z<`zwpQ{dGjLHVwWoBPE0m{BA^&X_rTUCW zb(GT!^3!6kE6JgQADPud7-jOyQL?^*kGklx5M>nM(9fY5c%30)trwzXU6P{AeFL4p zCSD&Z=|*SGnjA{&A2YT|pDE=@P_jS&+h54gJs#akofpFVYACCX@lSENO^EV3<|hz~ zz)EF3Z&~B0R7WXaAFL2c-T$F?u52i?FyH^`8Y?ySZ##DY*+v+~VVo;yL#pViT{zZO zOB4zvKmY-P5Ojc0n5;$(U=WO%2%(BVh(l-)T&PwZ8{$<40$>1S&6aje(;Q23>6+@d zia1TOK0jPw{;Yjm>hiTeANAwQI3JkZ(nYhP(rbhlB2T>9wQBFXV=i!|LyZJtT>RdpSqmT0YVf*Ez z)QY#d7aL<3W#XAd`K{D`IrwFN{@uOsvkFm;L6kf1PC79joOdroNtEO8eY)9ca;F@p zD2cLV+wtbtQY(Jbz1Sm1ltg(Nk00925Al+789kyT%Ks2iCWim#%rj4v%o8PFcjk$b z`3aBGzDI!3AW9G=K$IX#fG9zf08wICLYBa8@6>)(JvmnZ|T0ONqJ-wW& z*UrQ>gU^B}6K(h6xj6D@U7n*0_wpHj7ThUo$5UF*)NxHz3cRDi*C@Xc3_Lrw#5rvIVKI@N&gu;eln9@=7S+TIlW>VC8v)9*(*~ft>t7)xI zx+)LlW-Sq8-jcwc+}aOFW>Y=}M9rCXqI70~fup=!)B3Dk%0roX5h>4R#sA8;8nN!8 zEU&~?w~C_T%sNpzv%sKHHfB2MI5cghArBod?1>fe?n^dpd|C}khv_@o4!;TMMl37} z>RG_8C?%=CSlabwr6c1trDIp$GW3it`4ytX6Tf{sEXmGV(qVcH>4|RV)}^?_+c#W} zvYOKRq^j}{;ed3d=gQ(J=vF~}r@WnYqI6~fS04!#&3tqrC&fsnkX(sMPiRj>&+mqK zBm~zVo||`1xy_oWY|kwQb0SvIH@_Y$izDkVizM}pf+(nGfx)6YyD)D*4>aBQJWxG5 zp1^?&fTL@eq$r;RK$IX#fG9zf08xS{0ip!{0B4%)A%0a$O8@`>07*qoM6N<$g5GKr AFaQ7m diff --git a/tutorials/2d/img/emission_shapes1.webp b/tutorials/2d/img/emission_shapes1.webp new file mode 100644 index 0000000000000000000000000000000000000000..0eade5d58b514ef6efadfc60be4c2ef06bbf8118 GIT binary patch literal 3668 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 wG#bzRj|-%up|4(g&o1PD0Nu1%AOHXW diff --git a/tutorials/2d/img/emission_shapes2.webp b/tutorials/2d/img/emission_shapes2.webp new file mode 100644 index 0000000000000000000000000000000000000000..d01adf6f9b11534b930a9af4274d25c7e16b9c9b GIT binary patch literal 5230 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 diff --git a/tutorials/2d/img/emission_shapes3.webp b/tutorials/2d/img/emission_shapes3.webp new file mode 100644 index 0000000000000000000000000000000000000000..407b38006c791689cd6b796024d70e71f8d0cdf4 GIT binary patch literal 3802 zcmV<04khtYNk&G}4gdgGMM6+kP&iD*4gdfzJHa>r6%CTr$XKCEOg2UQaRXJ=Dsfw+C~y29e+TN=^;#4QneBqNs=TvdfORq zW(}w7za-SQ?Y3E08ayFAPJXRqE)R`o`2CyfehRMs+Q5JBAh&R~YA2CVDdfHKMgHoo zBb}=KVYNi7$ypH*k-zs;St_lyNugB=b7wY`Dg3;rt~fcOLZv7m34X*>Rt!)O~qnu3am^igMu-s zsW4a!<;G34PBN1txd4IgZKNv|Zbiz)S-_E!;tj~(O^1xi0X5dJ)CAWvoM}Y>`rX<*1}H zG1As#wL{GfEt(b7*jVSOtSPycNTn<`_W(^AZ;VArbg^>J+>%Nc@OM8Sa{fxSA$Cr% zDh+n8R6(m#?RI#qfac9238pK9+=CbSG7@7NWAYCE?f}dSwbnC0djPvsH^821TlB1$!^ECP}7Z1ryOs)>(vV)PfRL6Rx z_6O?E_!5n4edA%|80wzskVS2ROBFPdxoks1#mh!o?w(v7E2h2lhTJmdt#l@a|NA90 zw#J8+O`(p+ceOtp_B%$P_ngf)R*B3oa_pT`RvkQB_0Tc=-S3aIhqC(&qJjUko+(m= zRBGaisp>l;Zk4L!GbLvRB&^uF@}NqVav`nSOq7BWt?sj#O4H4-LgSK1g{ji@R4Y}= z4Mf9o7Ev(gOY7iRVVIgeoJNGjVen#loC=(Cl~&OH$Sxbpef(3-xx(OwP!PhInv0|^ zhgI8bR?bR9>GaJ3v14&Ov(>SDPC~+KHoqV9=h=vXxU*I&F3I#%3&3U zwJUcW+XydMRwp^QQguO0Jv_Vy7 z;O!Z`7FSZwCX#}=wbaV>(49G#7*u13r#N3ummaPZYR-iHCwY2$?Rhs$muQ_$-0PB_ zc1KAD;jq;DDt94RMadqPnh$&L@Q?6@N5#hTF9CDS8{z+65$A}uY4@6oW zqz_26@x}@A-cZibvLpMwr|~fcG+0)D^;lTl3uR z?dBdUhb6LBM3flgixfEr^xwM1rd+We@%tX|#UkZmY01*AWAt0;0-_2*zEFh{J1iuscFxH|#CPk}JIbSCVau2Yj z7J^d&A9_ZzfT(g9d=@tJXL|nKIocgWagCSfAFl%1=BOOJ*Cye4Kb)O_Y9t6WkV4SjcTJ9SGXKxbH;N&@i1L*2!= z9XA2KRHB@GQbO#|8zaaAILTop8vNdao-JVSe$S*xchYDcL(-{%AHGou2ysV~S(8nN z^MOte36`h8t!+lL;*l``uHFOoRXf&l(SGeY6zHr3{EynPMmBbFadCJ;FdBf_a4@T< z#m2?O#Vun6`>SQ6J$@>H|0#lj`DRthS~F?&PoeIIFI_4tvr1cwX@cE@y|ZkzTUr8` zs0dDRKJivYXXEbxK+b5o73k5Gd9e$DY_u))c0db7VBpa^ES5&Oi*viX&cmr;?Aw7~ zeNayK!adx<^ns<*0W4{>^T(xD1Ebzuq73fI2VQWm@#uSW2!5AFKVd#} z?I#DVZ4A+K_;7A%zA-f1lO>G?$J~|msgwV%O%1Q-o&^DDQI8Cl{|rLeefFi`H1Hql zyVt8*PqKHeBLld8i@IiVOSQfvjoYi+J#VEJb@J9N1?7jjhrX+0X%vy$L;V5Q)@sqX zy}B!@8@6*-WnTa9CDAr^d8(^KavA#Uy?6?}Kswa{eO&N6LqA|mT5kM0cIu^Xc$G-g_3Gl_d9xF* z-{)YVhsb@>GfjNDW5QTKmQynG;ZXM^ox7^?CdQ{;_{I-cR%md64k~)rgK+C-bS8V0&xF~KrTZcij@QWyytTZ09iCbKIRYr|M@1c zJ3Sy3=w3hbVJVh@Y*q6QBu7BrY674$?5Mf?kJ?H6qG_vE`U!#|9DnqU{dBUdRm9v4K*#F<4;sK~<4J$F1?!)tLxmymJ;31O z;^NY#KkS_~U9axB=0j&4?htJU;PGQ+?JQa?flTMFioDTo8O;X?WHPYdcc9w`pT6Tz zIWDSVibl$M@`3I;NJP7{GwdhmFMgeY?!n$!)Ai~m#bW?GEphb<+{(WJ*6a_yDIV`2`*J!@7lv)@(%XSkY-@%Mn2H{ zt8TlfAQP=l{iCb@_k1f3D^u)PbJKrd--mm{-dWT2>K@v`s{EK3C&HowoIIW4PxgT&yY-5y$+g$gp!>d>)nBY+2ePQowT zJ-vI115Meh>r0XE6kM;aFI}p5KKpumBmfQk_jWg>|NdK+Qkx}wwU&CzR+gtU#m;#> zhFgxRKe&R!_cfM)B*XB6eXskz=j}^b{#lT<$W#b^`QmSa5X)p{vc4)==sRT?hiYy^ zU;2GThIvp(@~INTbN9_gSo7&ud|z0@EsH6x6rkfO1Ck^J%*X-|?T&zc4xKCt4Uh;iixMeaWJ!@ITSxynn8R4+m#)&^oMTgt` zl69+LGbMZhw9juo8w<}tcmkPwJlikbD^sb#%thbw{YBI4Z`|nVQa+|==Xu|h+Hgzd z&lJhXrpQ?=rv!^=&ZnWZHlZ;e7guu5`SesD26G;rXS1pe^J`IXL!pTHa?9N`+9^{~=9JA!_Oc&W-Tc-vosz07 zS$v%lS6;|DKTp=bH;|$p`uVWto2Xw;=h(W~@SM%fteI);eaT15;Onxc~3+ea&`Hp0U{D?mJTzGWXO%&4n{5-eGlFe2-tS}^v%zUg#N)Gm3xO4{|EH#4}m~q zEBncH+|K^-)8V_1nI+>j{97oLBCcFkUmn=yC$?eR3;BL+YUK+p+bs7zDKcW@ad}d3 z?64qkoaAX!933VKlsr!Iv0>2fGN$A9CDlcMIdSaPI?lbOR9usNSbE@(ssqZnSUN~} z5SUCEj*S8pE{vta1OWSMfFr(e(Fx91gxuT|sL^7DKri?zYE`~f z5h1Zx_^5VQR&kmNN;mGySLqEx3vCa-akJQINOe2d_6ZGcx*_zr@#Dv3Y*?TTFy>I9 zY2t@Mqm^+6a_Y>Q5gaI$NnN`YMbO}MlKFXmzPHz{q3>w3)l^?rhr84L_le7Vfr&E9 z`E^3>gLd~T*W3NP!b#hSxANLrqyB5tCsSVMQ65)frM=kKFC?hHw7MT2N-ci#wR?DL za&a1EdGM~)&2M?Fw4uRvk)?9x(tR1xOnrc%EGH^Nes%c#{>UrFJdl5__3c?5RRNA} zyJy6Y&``N7UZ`PQ*i~?nOtMEBn|AFlL2^F2%CFV=tz0yfgF>uY7rOOh{8WM@u$mL; z=OWh4KaB9)v~@fcrDQ)Us)BV0#L1lMDIrStOS?@!`Yps1>m!Y6hBI62al9l&2X?rH z%1UQ(383*%?Ko|PazYYb*JM^6ik98`z_9g;?%d)1C8v$b4=y@J%!VfdFG3ZXXh}h1_7V*aGGE~qB6Z!XNsci zwDbK140al)e#ep1vRrd*7!>?(>)tgX0qm^_)Q!D4>;$N0wvM&{D29&^`zP>gEDeUHh`WaEps{oRH}r$^{h zdtG^$0a4F%rGHF`lvTf=%aX!Nanscie3mrd$MSB34kB&q%GLi8RR%&Ic_iIe- zrN`neg$%*5C{S#p-k zEuR;ENaGuLsXX0az0-KF%z>60Ots^Jmx)WxRbRuNWAcVN12)if7z;^q4kWVi!DH6D zQSBFfqpG1JdkJF|;Sn^R;S!)n>44>F`m3D#XTK#HipM%WM@yM2+Z>PUZ;85oRn8;Q zy7=et<9Y($bLZ>bp2qyv(=s=FQgXeCsywS$#@Bir93W1nn%Zj9gzAgay*7^BqZBd9>%LK-8L4QTFxwdLQot6om^nS2`>X4@Z^v-3>^4_;8>>DR1DvFyw|a z+7eThvipOYTP}z@{H#Eh?pBy$?~~Q3d8G7QtmmqgTe@|9yhsE*!--zV9IF*X6TkQE zg>RRmEWG`G5GkZ$Co73;e2V}PR+sZ_>U|k3PPvMsQrtjo6`1QH^G#-m_S=_Cb)=AH zG+V4zsayNd=uSh2tPF6Rx1CyEwOY>d+xUZ_@KvvxnXpIbTQv;^V32aO>=6-HQ^ti0 zCE?C|0E#|hBS`FDYy>U=uu%sF*QA1ki@v4-jxj+1_yWlJH{#y@!u$(_DS^{KAAg-C z!@Aq)zwcUTvr2v7ZzRth-zG?-wO*Jkga}A;a_0SxtJGgzBXqg{o`h92?4xt>Y1yU6 z#D#bPBMS{WurR^S(Nzk09^7Epp>C{{9qxcz*PerN%LvEjA<}ssc+sq0j7*IX;b=oB8E?Gu$S0yA%`pOf@oExRBo2bp&~M%5EV!ajF!A2*Wm23>UNl zDTaUBik1Gsc$MyVwcimV&cGw!F+Q0ox%ZaU2{EX9vE^Y?|Ne)c2~FfX$9Eu{j6fA3 zIZIlmW!x3bVqXGKlJ2U4QCE6jOqL_z%a>7ukay>(e-5;jTY}HR&Gwmak{e@TF6kQ9 z_=?%EKlz<=3A_wxR|>*~H848^l7_y7q7kU&FytLIlyj$HP#WA~qMiPIjOC|z5-9hB zYNu2nFNKrqN6zy$&%H^N6({r05X&JnkQn%0^&KH`66j=9qgSz~_9J_Q1$6%tiClbj z99TuS1qynV5jFVjCql%L-|bNYJK4CFaN+aq>!{h=`5l7#!Abx6OUC;FlcXqi{M8G; z%jcIEotB_F)?+_{K|yE@;n4c3x>l^m-n9+cNzGVPy4z(-gUjjAq`x&&pMF#8Hbwtj z+eLO6>N0vb765Wp=$v+ec9uwkb zf&(~@3li$Gdx%Y4tCWv-{k)&j!Sdc_eG$PZ_EoyuTc-5}>S6Kq3!z(c0LVf`YqD~H zxuu@xbrj*8D!;p7*sC_aE&OO8`3#pP%+%xe6O>uFw!xMA^480a%!`OzsKK99nBDII zLHm=*%RZNl$>jqXqjU9Ufs=-l49e&E?c7!YRGX&ji6e)Edy^Vt{-)pkjl=oxzq_&D ziMK4x3LP`B#!3EPF#-hAV+1{h-~S1m|1|y`RF9De1mr(g;=hTT{^ew~I_npb=4p!* zY-V)pO^La-s(xhUdta&US7|o~8xZMwA>d8E?muX+ee}EF!F9R!VVt1tbn&}!#5+@| zgLrN`zuTlqPmHk09r%%-s!5(S3kqe+gC?qJ>E|3Esz=P?)9+(rT~6JB_jA^}qr?yq>Gh8Y-}>>(QExN*4XLiR!k# zS)tD&S*1aP+P!T8zL!f96i^i*PH6qAWpJ)${VKf`s4H(=-zOj%MJRwJAW!~ zqp>{$<(=qZX6SQ~7c+b>mJ?2Fj;4!-z1^+{-PU)|U&=4EL{oY2eSfzKi#%(q1)Z~^ywAzVA+oN1OZB^|Yg)h(F`&{(p= zpPxrw7c_@r8!S4q(hN#_N8yP_axD6HNHm4IxCVq0&qvRPKQ?!q^fnyO6yOrXcwUKJ zphy2fA`$Q&ztaTUELElOR2n5F_(-Zg%m^^WGjAZqgu9 z_R3=M7Dfe*Xe7c$7V2e$EW{pwFWU6xWzKhP4C{CP=%HHw-RMeuJj-jX%yM4_g)jT9r9-W0D-vJC8X#) zabM;QG4I7?hWUJu{KN?zt1@2h{VW&Q4(I)=L@YqF`}<2VwuUutpsL9IVH(o@Joz?WEiZtO59jiGY*Rz z6`rZb*S^K5q5*-$@NC(WZ-jbmrrCDZDpxH;p*vr+n9Dr z>Caw%J_I4(^trsmcM@x9pypVZXt?OiD{@}tq_faiQJkY5rK<$<3|OT`X}iLB&QGT! z28HlnHDfBHvXXm3Obx9P4*Io^>f?Vk6|Ygz9+f@h<`R7qaO7!ZGvcN96kp$o|6}252$EOm*3* zoR%=T<0Ls+9$CeIknW#gl!B~zn z#i+hdI@NQ^F5MVcmlD=9)onFiZ~jCX*Y9tl z#z;Bu=ga$? zD8lrblK~Y8`RM(LPaW=Q^gv<@J)+ng;Zb$_u4@n-CR6n04R+U=fwL_N)b>k&cwUP-Ywrtm zV&Jja5cy~^sNLZA*D~Bg_DE)sobeKkVPtIO1epb`#XuCE#F>JuxIb5 ze$o8(HD}r=$U-mj9@%xGq`A^nTju$h!X=n;)LOR-*NMZ+{q%Q6To~SWC@quL_I(6o z`BS7ogWI|CM6~%8{UV)QHyMd)PYebX!ESqRoO<*1PBafgZ^K(dK0M=(>nigW3GrV> z=wMSe8id#)s;js7*&7KE|7s_hcN}S)xV0%o+bvweCy|4B&_11}-Vu0G6WS5wgenpU ziUlgI{i_?rOjwKD66VgbN?271UzO-=+U%d7Wf6Fl_EWsHPz0|7nv4a$wBYdAL-(E0 z!H`rEn5B{>aaC~>TL0TtTnplPHj2_l2jz$!sD9$$J_78T+de% z2XmGL*Apsq)}+qTgMX+@^s#7UI$uenaX41d5N(AOnyi*49FHd$_sRWU9xD@yTd`7ucOPF5T|6n-MHEXKxIg=Z1K{3L zj1lo<7sKIJje1zW=Av%v^|yy=mbE^JYMqrbFPB>$$) z>;PGmNpszz{fFir>RZQ?A9DiF@@(kto_D2zvjqh_5uVmxH?92sT{SwImvEmEzNqc! zd@?y1`<2ISBs+97Ke}RJY5wM|pHgi-=fURo{>c&ghQh-)Tc5FT7+(b!h%amh<#oi` z{f%{heyiDH4v-ct39vm&ueY!30HLqcM_><6^0Ox?Dh?z@*#h$wvahphfv$@cspM|0T8 zr|D#y@)zh)#6rH9c)BgV6q52TN<4jpPRzHK5O6#-R)eOh?uZ9(t=l59`o1^h7~S`w z6CriJ*=OX%b|JM>UFl+6UXfm_x7XD`RAZ2{O`i={LoJXhriyUe&6k%|^l1S4;O#8EAb;(I@U<^3`%Pd(5ZJ|w%y-0h=lrhX%SYdlwXbglJg&!Pxd+YBU)HyI zpAo+HxC+v8?r>ch4k7R6`qFS9kSYTVW~u=p7t$FXV(IWT_FjY+cg1^LEabt`#PfVk zCW(OisG&~qDHD24#%1bc1QH`&AcN=h|7uWo*y6j5uU=vM{pS2QDgAbUO8^unm^%Fq zP$xxN8JOXc$Zo7R-;TX>UeCAsu(0vIptupac(t49e!Se-MbmcY)#`if;=F2h7U{9E z-&L6Gik5f9=T?95h0kZfyuKqwEFe&#Dc)>EKdZw&cqc{%?k#YXfh65@ zg_EG4zD0qTR5AVlS~uL_hmz|k%2?6N;wz`VfK*@cM#$3gr|PykXEH&LifzAqH1N0? zzRPHJq%DU{AFfXSX#FldQCgmtBFV$wkT^7Zg2vEx_npnv`IWcVJ;95T)1M z@(o&XBPl8E=k3)g(`$Ii*0sKA{NofqQGxfZ7lW}gUdvLuEd)nQoySC4cqvLnork~C zzEsAk+u!7KyRW{AjmBbK*5)|8AO@Irgrvdm)=#MOW7f5=iDHO^YJAKZK(F`Se={i- zSvTjRD7~E6IndOWyr^sET9M!iG!rZ{e{ZCzry0YM5iLpWK;(fv_ot$LzWp9!rk#sc zi!-9SKgf*?H#7m}P@ z*};DQ1nmp-$iY?|H=4mrD|b%n1-jDb*V9HkAE zROu9YHnT^|>M{v2^c9uVN(rqOr=6BsO6k+TpO$484=|_oyr5rEp)W0_$T2d>SoZY1 zIp3WX@&tf7d>e@ZDxe>^&{Ey3IGv#6NOxHtRolpg1{&((qk`soNKt=JisLcidVBsJ zSYA z7AxJ8D@bpDjPyyQ6@zM{LVWo2w@tvI}=e6E% zf8MKd4YM=A2;9A&j7{6IUj$Bopqel0W$KF+)1jk;nzZCC_ZZ10n&8W9rkqG(5ivY|< z%bA2=;U)*U$rE9Bp1azpu8%?KwViKJdeqh()_hVj;u?X(bH&OG zz2=UKUKU)hp1a#k>BU?hwwC+1^JjVTqYEr}Wxb&WEJl4bzXLkLEd5r#)OWeZ=}ilE z5?0&~>NWsm|8ef;G4H@~L!2`wr~_^X({{4dRwF*|gd>u6?3F+ck*Gh^EA{Yj)vGX{ z{Vgi$Q#x6w=9B-_iYT?lg)pPj)xNr|qxWkYbd$aPEM}_+Ji7o|TG)9kZvEbUwf`<+ zsYteB(_CeWXF#q4M`ea?P#^PC&BZcg4dRT4weOrl{Asf!%~$8-7pY?VqXq|=QP(Ynf zz*lc=MTF1myt;X`uY1SXyn*+|!~GQbRbsAn|AC$K$k|!CxJ1l59{0w2+m*33y=`nB zspeDkmn8hIL9hw9gU+;q^(elgp) z9PNXOOvbd}gx@)ScP#CCg)^1NOk9CBWx^%p50&acxO6RBo6^zC?q@5c%_kvlkP2k) z1Fw@p)WE>)j+4P%74eR-Kw^BN8e!9w-ooU`=wKPOQhG$#+YKt{g0Eqpe8%?|^v3oY zjEq(01=LPaH#38~Rr=ckEqq#{A_iX_&>PGsd3!uhMu?x&0F z8-|}O<=y`1lRWG`y;5gQ@z#8!$Pl3fr&@sMFvkdU)*EW#IQ$Ln|rG zC_YHEX&3pjd?s>==9Z=oe8|E1@+{pC3xLFL$O0g@x zdL#aN^bcPDtr=Y&+UJLJyfc&aR48ui+LTONlOey8j@ufFI?59Q#ymV@E9t8i)q zIiToz?dMF1?VUxN!Hai1Jf>6M#%Um0klf1Thninih=LDRk77`u-_hCe)~XCtk05ga zR=nNce=41QJz?a=E)14HQ7#HMb%@;FRMEm${J4&yv&TGEWFO{W)>|*Ni@hQiX1Z!}$98@cu%6;yViH;B&f7XFo^F=;{}ryA?Fr2P7nFDBY2b znB)x0(n2y1Amk6>P@0o}^WTgov_sdbPH1weMiP)u9%W61%NOrBZ zUP31?r`>(3%y#qf@F#D7Hn@u>QE~J0axt0>^Mju$I>N+3>SgDMO>?)P1~{MaHz z*98v{`yia2Qc2ZYO=V(lnqRmuBpKpKI`;{D@>T9bp<^Ux9bsg0jJs7X_S$Sf*$+7u zGUcJf&pQNMrPU5!po#Hqb`MWKZ0~OOOvPELx;FATn_FA&zV*;rX zd6>H7P?ZL*E09Zl8_dCeCcF;*YZ?CAknnGI@Sg+%j?JXiY-;Yl_~)k{s_=RuYLuK` zgF>uV@t+F|I5s0XF+q##9#ZZHmxY9qH^OBvfP2X~i;^vEqu9s*`>2))SDP&cq%|{@ zwvrDH&D|NF?+Z0L%YN-qz}5ZidZ53B|Gonb5p2BgY?IGwYrZfrn!k=3pw%Ge;XzHf z)yHGydk)omTD9*xictl&JSa5Znd3s3rnz|a zEl1IN%khGBf;h`qW}s*3ouF%OksB?kfM#9DUM5kSdsF9<&orWHIC#h5Q=XCs?#~_u z)=AOAC72SLL|^pM=B}sV)R2yj$bc2sE(vc?rj^VP^MnYr#Xvy7Gx3v>j`aJ9{7568 zr)v|0*GT6)1Wh@A=gV3UN#!86kteR|V>y zD6MUurMI}fdbTk0l@dAs+HFt%%lSK;MJ6dn-c?j_zD3U*pb zBv49YV+s9_ZRNY=9TQw#(UWwrk(druaIb7R{mkhrIR)2(DvE>XXa1H4>x4GkSwUHD zt{ojUfyLF@F*Ut31E0V%HSakWD(el?h2a$`g)*5v^DIbtz7Tt6V>~O62f~}vWotS- z^$Dvv&MC6t8ql+fQe_p-_8CzaYIiY1no zcK2gT;^FtNY8sFBct6GABy_7iQy@JZV$s|1hctVXA&MDk5e>ahb3cbZ=VEOPnM!r- zCx!)8x6V4pn{&~EfSQdMhxY?Ra3=M0i)i+!JT-_Txd231 zD~Bz(D}O2%?F52K?>&J|!JO3hlmr1z6g$Y$?&xuN7&iRGW@gOu^m1!N@OiCS_dZdf zZ$m#B4H;G(e~)ovBa(6jY(C$Seo&~(2&7ak%?Qt*`!yp~7{X7u^6jUdNyA$++=2E!+u)56HXd`xZyfiy*b@jy2w?=M1gZ?#xJUQY6ID!e;&?jy=6F{Y_OVTuudjrHPur@ZBwU@%Qw>=wfE{8nd|vB$PaSS;@W;4=8zp7r1A$fE@TkPELo zr2pA_G#>~TLi|PJpZ>M?uf*~X*W-Zy8PAl8x#4HJ|T+@obCS$MXuHTl=|)H|Xq+Dj#jHOySf zRpQa}vB~A9kuva9Sy1p`eE2m$gg8~+mb)D*5n@%X#9EFJl<(>K^v>5Apx-#xUnoh| zXk*}gOD)5yM>Y@SPSy;BjfXG;ltwmu%PJ_TZp>Q-K(vR>B1+ zGP05b&5mc2CwO+lx{ZUmbsmUoQ+9J6=eK8D?0Az%;xJRUUXriBPs?X7zP$GX3U48! zJg1vS?0c9%hFffEinoRKySC}SJr!|&6lfW)&-ST@ z{V`f7kI%WVlT3@{$@LIAjhrvxJJXX>)A>9spltY)k>^x5Y5v|{nVa8!Gc?9e1LC}V z*(PxorQM!+drt>6duoP+`cTFnMp61A~`>$d1b~1RUd0RpXQj+D)Ff;#oVMklaf&v0M_#Aoh2VHH8>5xnAy9 zBw({hu|qbg&oi|{?6%xjIdX&zg{$iIGH08VRX=H^Z)Chsa6LC?#Vn2M61E1jg7J&O z%?epVAm5jcu*_V~UUyRFe!y9gNZ8uKiceDhL<`t4NF^wx48le|X)3eM35tQ|8wLYS)q9n@&>f%bjGX&35+))$AYHzAp!qRZ~GH7*rFn@dey1Zov3{ zL{AWS@FlgcMp;Tox$wvXf_hq8l9Le|ECU6pV_|7&s+MwSHS+u$O7aL+6!GS`$&zEK zv*0Z7CsmWml6lGA&}TKuE0dYq7>CPi+WHS)r|jDG_qMqkAOuSsM!ZfSIvxZl{aTma zCNNB=h=lsX=b`e%qvA#uCDFq9xo%o`sF86@B(@<(4C4ng3c6?9CWO z!%08|$+eNS;kJ!l*`I8@3YO^ISWWVM1BLiU6A7)5yy+Zn8dL<9i=Y0isVN0i1)Qy^ zqil!MPIwn2Z~1+fcd^w$FYN2A9p7bFg1>IJa+s*gNjPJC8G4cXh=S5MFe1<-SHmW;{?Q`;tZGgg8REe4SoN_T`3 z!3OPu_kZTK6WZrnIY*~ST@NzcuRra^Rja5>jF;B7PJV=QSS}=Nd1Hdi-Y3dAYB4a9 z6HA2i;{Xb<6$&)VxfrNjCLsWh)ImBb$Z>Sgo~_U;XvMx2Ry+tOtD8i~sN%9@8QjH- z!@U6?792ufybygzlqoMl{pJ`a7q*RLvy@bFL=^=nJOEz)Eja(};{ufCE};H$hI}hP z1pp>{!hcIbkFG69A)qh|Vv;-@YQB{PJY1dqjJxA1_8N10{OCd8QAQc~OXTp6O;>9N zDW##xs=MPUfXgqIF3m@ZqqOPx7==^I{xjf+D;pb%ap}J8!ElGhs^E zT544bCGc(~6(x3yo5(UF-{1TD_y9kCCvD$YO8XCtbP@FBLr;L%-x`-i>L`Rl>{y>d199pRD3!G(dQQzsPY zy15!9U^RWTD?gg>{;qxhb@ZtAgG^9_;$nIG%dJ(;nxjaX?Z1rex>c#@7)@4Tnb82Q z-}Bpv39AM`c}0N^Q=f>P8a~2 z^b!}^$CC{3czGG_@DGNvR$t?cET1Ylbzw)>v*uUac8gy3%R>M}tYCunuGJIUn>#YFI-&diRoSNf)dK!%$$Qiq~G>YUihiQF37y9+v-17hi zXTYCl64hZhq91)%a-d@MFyD5Odags}nyfsEPK_EHBkv2?mhB#hSr%C%PlU-Q&1@|8 ztZnzQ|3Dx{w*iZW)CH^6_3)#F#pUeAA5H0ts`43#a>n||9(U^@X*067A`l235cN*K ztZVs+G#1*ONcba;R41(6k9Vm?p0(7hpvT-f^X0u=>K{)j=WnJ+~woiwy%u@=5&L2D9LL{XOdmK z`u!?jM5Puh13I~k2^Z@yT+vA168!<{Blbl6p3+z*Tm=1*fTWN7I;y9b&PeJ#>h-R2 zc|*2XP`?%n!mNP8lZo8Qvl+kpfKix_t8IzrX7P_MCU%h0-o#7IRk%@`KrmH|asD4l z{!P)*GOo1WtO+F~>Z1OQ1m9Im*a%(lI2Bim0|rs6%O=gTq~}{cr+&~nt<$?#S>{0YZ9J5Qz^_Gr%VuKkO_-tL*f!3+{%3(5)DjB2Y89&X3VkQ*ZKz_@yI%7 zHV3;DAA|7Din%=RZAz4Ew>Zp!U?w^`u`>i#jGJ}HNDdT2r_HHfyxflzQm~VS zFB?Irq2C7o48Gm^fh<}B4rIF4s<^v&{tNiUB3HK09!?@ONIg1qYgd_Gqd$wxl_w)p z&i{FKu1q=7_GsE`H`^)uuP+Gx3T5DX0!g?|HJ{`v>GA>Xbs~WFl#f{ae|>iFc=Ug= z{FhO3LO}6bdgRce9*@Zh&Ej|K%KBbQ$3qth;Cp$S88-Mcl&78lY$!KLc)f^}omBu@ zfDg#m#Jrx~_U`&}hIO%5Imd@F_#GFA|9V%eNync(DJUAz*KKsK%W;_fBv$%sRJEcV zV3l{v40r?V7#(W5wUD8**pl5){aM`(-i7Kmr>cn3GlgsA!9S>(X@hI~IWN#-CTz^l zQNkrqEP~m>nuOOwJY|B{01IXW1A)&ctT%`-R5=1~1gI^s6<|)$A$$u>(eK?G9`L{B zy0h#I$6qMh{}Pa4J z*UkwJ_QT5-Yjq8qdilr9iyob~60sJobPgZOezus*zFtv8ZOr_mKq!}_sy-+1yj`=g zx~=A7w3}T`$kJ-DV4m@%warXF@`3kE6u%~KPYkipxGnE{wm>fBGu@_{kl@6(4`XYD z1#5MH?tmsIJ7Vm^zJ}g$ZF*J6RL+RiS#lK6bY=2(D2tqo?&LU$@HYJJbQ(<{GWH5} z>rwxxSe@MSDw4}O*xc1_gmAi+2S=y_23sRHB+yZKo^js*j3A`~rJm+w)x!T}m|Ry1 z=KixBzSVuaOkD-UF};8)(ix#f^@hdvnpq(Zwz*_pNBi2wT)jHL$fg+}i-(l64S_8G z{Dw|r@m@u#DFBd+$)LrBt`sZ3=f~&v0pnnJlzf-I&(RrZa(+E|t^OP>^bf9`t%bVJ z$Fz1p$K~9=2dn`y$xTbswc2X!R#C=(cB$79RAdX&?P@Vps0$MBgfWrTLR=4o1UwyzEl+Gl=TiRQejX7p0URs=R9T7WuWkP?iv+5gtZw?S6%z z{B1)c!wA-HAa2-WX*cmwlnJh~!@h(As2lzv#I6$rBm)EjNZfwmIHj$-h1KhRLCx1p zjmvR?65oC!n=O7L4qp4Yk1@QHVJAB|VQ128KK#T26cCQY#NSMA#NM>Gtc(@~X$C$j zIv+*hjV)pAm6HT-mKJzdVuhktC|AeOe1T$_7EBPDv89<5nh97=4c-VMkr`HXM``hp zkaQ^U3;g7`5iZ0ajQvWQ(ECH(6Mqk(_jj03T`)d{OoOI3DjEnw1jA(|1SP(NS*sao z<7I+4V`c(4SM8HL92yR8iBz;yD~SV}rVi*SXz{n2b%dLK_?bdfgKO1WeEBZlzf!;C4zlolH&+<(1`TULr!a@-ZCs1xxvH#1X`SfpaMo%F%a zc%v1P2H0T6p=Oq&nCQ^txJssUt_F}*=4)s#L#?u@D+Wt~%4ZawmgX0puCGciIEF>2 z!zNpo)3V{%23<8SXD_X-EE*1>rETP-Q5N}qT7(WPTO=mx_}S6>z97M+`j^xRVrwoi zJJr2Hpa8KfwuOnC5Erky46#pEvnjK&=F&3VDMw*Oj!{=plEn-r$}$*S{vtk`He)U& zZ2qskrKCCmY8=9eN%Na`dkH6$5b{h@N$dH^+&He!#V)_|@hR^uS<%h@a@|%!3Hyh9 zB`C?U1N_NT`tjkdSPQq{R#7tcNV`60Ai0zlji1#r&Koqj!M95`i}xa;HGt3yXiFLK zn%_$?W&+um6F*U7ZJ)=qdZkwbGGUi?!kgo&R#48`!rcpxH-Ou3Xqo#}YJD6XU}#at zSFr*)_^hgU>;)vOsv@-29?VqLq$5^VCFoN{#4vEmS@@Tbl-#lGh*IvR9*W{R59KLzj zomq3FXvyt4+L(?sG&OYw4Pu$D2e7iIWe&;=)y%1?J2iXH+?=`!tp0xZbxle~RH9pu zRiG9^n($DwCNvWlHrPS}A;*HkDS=It8WblLD-|0ChL9(aCdB3=gHS$FKmL&c=V(3z zVUd3N>lARkDD_8R1I2}bKLOig7YNY)HxNu<`ybu?&&J0wNU@-rO(vj{Vt+6s{(xot zaUh`M^-OdS%46pcBoUJL;zxNuVn2hA_aMHJ*Doyk$!l8c*`0mzE}!S*C7cArK|5+n zGd9%3Kh7U*^;DJ=yq?-6`EsA6S|SYLP=jPhI1`g&K*V!iL;GpjTZ+kQvfC@xjygxT zPH*|^_%|+2K_QFl*xay@haPIC2JumiX7Ru@*tq>`5mNT5K(JLfchi>^LEjqU`((9A zK~@J(*OE0Aw8WhytJ$pL?4FwTvnt=6lNa3e=MnU?i3|-RS}&=78qNuU1|A5#ui)LE zW>@$-oY7-O9^w>pdOz3G=;@O-6ZC^_jBs$XmW7CU;^xQYBMQz49RuYtT?=GZt1< z0gO>ITt(N@?EQ~DNa6Y<4>|@7h-la%&VoE7;7`a!~Q zBT6-WR6f+1c_H5kb{OvLn{_YIN+-r%E@(X&PrB@r4A*2S^6`u(nHjpY}i}(3;Tuh$ycQN|_1ZxLgcU6in78)n$flQ6<&QZGBYS;I1cg z?uMnT|AQ8fjsJqee<0+)8~;U$$C&@ml|bVl z0ty+N5&;+q0U89H%Xoqz=a2k1viyxJz&T(rlz$N6ABg#%jsMQ}Z|wO010#JoQ`XZZ zV{D=3mlp8bLb}Smm%59$NvhBckdXLY0%LBhg=DKo2gdZJg!q+PN=Yxg`{%>`QVCy- zHgvRDMjQ%1eIYzVG_s;#s%0CcGQ4u zrV*04-!m*Q>za%~W@am%N|tQbvp=NcOX!cnhm&zvXCnw2*Q+eVq}%$IVQI|YzQyVn+%(Q<(*0SwRux;?8=_SoIXB~%Q zs2$z7XFXUC3jf8yL~A!{sjM_X{9cnYrf!+DPN=5BZ=TyW5^9yEGxGhW1i&2_l8B~F zNQq^I)tFVqtoYPf=btk>i-LwE3tRB6Y+cpe)^zY}qOv1Q)%V&_;fLc*pnBXc5hP81 zm9@Je?tg($oC)j}=4S2WrSDtTp9Wx%u()rgOB>vy_2~|}vXj;K8>x}fI;Nhu+T$N- zb!8UDWr(u6(DT^=4(|2yOIff`HH1#dWh?XQPeVe9{Hj3rRKk|MTm%@4_a%Z5Ajka3 z&;10m1lvQ?TxYZ`OD$y8_Lc`nWg5Xu<)iX$+NvVvbmJ@fs$D*Nj%UsU>EI(StLpl0 zwKC4Dqlo(tq_uTU#UZPHZ4-|ue2UtBF~OT~^t+J#??1e;fq8I*a_oH@@$A$j1f6tk`ofo*nlS2%B&ViT>nz5#v%_ zfGc?YndMKt*Bj$m!QY=lM`|?fXEcBwovN$d>@j_xIXk*)E?)Ee1zW3JrckJ}8>tD!Wn=-4FY<-I$d%s)|VATUlY zalE-x&#hQ+jxAl23H}YSlpRkAT`((t(YEJ)?D!!n=F7!ShWPyu=W*P8@^%gbZojp05Zre!@WXM9m;i3luRG$V;c`LyW@SE(vDa`+iLVuB%|JnG+Z2kh9 z|CjFkUkLOs2l}@Wi!z8b;SIo}08Rv)b9^Ss^OXE=7<;5O{{>BM0BV|g*qCizuUD2y zr}~HiqiF`887n{ZRq%34jUgD`c4aix+YmO?+ssaC2zu4q+`J#X0k7(|Va>O+^^%f5 z6b}yU!=j281vIB;8RF<&=3pv?yPL$-PH3~rprgj0Zx&%gEYe?J$xyI!kl)|L2z{+w z^zEFdXmPq2g*pxI3<1@TF=B(n`X8oL;|#2N6)J8QQJ+PNT5fti_n59@s~yytHoHr7 z8pS&v5i?5ftLcBrTycn?8lRY7oLqRmua}xGkIO%8j+`DN^_i>!-IvuLrn`mY*=NUBH6io2KMpuMT%TvX& z9GnBQ+owK@mgyfi=RL?q7}z3uOGuoq2CD_zJ>{LnIavFiiJZbJ2Es?Dk>`IIBiH6} zan$ppL8L38XqZQ7IInL6E1_n8!RvPG;joDy){zSs}mC9e;tKX2dR-amG$jxeRd+DIMO@2=8w z!i6(c!t=14?9;|;e*7ZPwRR+q0mr>FU=?gJPel!Vew9vH)7OD-K`F@_ zKTCGV7+Q|qYH!iH%o;rbzlWGnhQ3Zjy1k`Z*wFqbMpL6h+k&>Kqr<3I4G&~r}w(V?;&!Uv9c#QwQCaydj>aUAe#Mou2s4&(f zh8at;HYSomMM#7&jD7nFBU2hXSwUrMhegC`9 z{XXYD_nv#s=X}1;J?AhfQ@poc4)G8+;IAz8!p)mc8^nrMUv5+wyF#EvZSzRpCcZZY zwXcj}L-v+=7Y`yJUfDj$_AB$~eNcAW2;S+Uv#tG{(JF1*Pc$XsqG*2HU3Po+yJ1j! zFA;}O9V2X@kBbnJB>ybtZA~Hz*wVV5?^Qy5R%VWdJ@S$qrk&kQ(#gPKH~f6b4G3$c z0?dqM?(BWvk%jLRQMsxMNl{wSiTd8F63ApEx#Nws<1WuzQp1CEL`s{%^ci3l_O`wT?bP z&1ui6({7dNZLj4uC9qVZt7&>N&i)}axjAPNf9CtCFV73u?VC)_o@6@3^ zvKR{5bv8xh05^rMz2x5yX|`9uzIh=$nJUV2-! zoDJmH+*r;8vUtRJeb#PQAtbMBUtcb>(MBMWvl+gBqdjL#Zr--Ayl44>3s%U~;Iov1 zAkJ=>{}}EJA*m{=pKNK$JnBEO#7&lbskB?Mop5KE_FQE3j_Fv5=+53vaiCRzpQ`R%DGFohjS>3#6oKW+^j;Ys2A5?)8pC?b4qPmbz9A;xfz5^8=RM7-VG9e_9 zFd{}s3sQoix(QY4(h_@{8C>2hzlcr~lLO-(ePkp-8n!eQFz%5+vC)K~M8Wag1K&NW zG)ADC4fTKWeyU(oo1eS^5-nik!{(DC|}nIQ1~H ze=Qz+s8UT9&_E4AydMWCD4jmf#qi-Ys>|(+^49`~rhC1(^A=vFzgY8j(=d*>6GzW( zsg!>V0y1_#VW6PE@?6XGpIo=ORFej&28X+1Bnpsu4SUh1->=g`aSN2*rRMsBY*tUW zKJR_IP5M=C*qUboU!g_$RyTVsMvN@87mYq&Sqcrg4T!uSJC zk8er%Nc}zbXWy@Ks@%bu8?Fz{oy?1S`$*W+uj}}zC}^bY!wjo&TGxG>XO&Gzd!68y zvMwZxjyW1H5!i4H;pE}TyPlF=3Xsv7f8Q?c%w^%>6O~VfF=;O`8Fh*=6u;v284u#S+vf8F9V7n+pFU(p z5D3Fh7O~2Tx-;r7pC2MkH)yQ}UCdOQis&n=BTdsUV+^o}pVfww)ltwdf8`%by6e3v z;x34<8Qfvr=Zb{FRQH8;4NoFHJbnHov9eJ=S&vA2|BB~Zbmwtn>@Z9wtC%2&1QNNE zOU~#NM?oHi&rZd}r`t{%09*$C*Lh%J6u!UCbL?_#aKP1YlzmRM zjMp&i%pwA$mceoUcq;Z5E`fj+2wOC@sB_bB2a}#r6nTP7zMu!W>;M<_9c`cHFL=zs zcD9(KkpL$n#j+c_IkJ+o#@OtqAdzu3Ks5KU%u;olNw1Dc_2j<0`m?t@vkuyAQyn0C zp!APgq-icTz;CT7n|A}Ga6qQqcb%$Qq6w!a)P&eWqm!l_y1_X|-J^ONPP55xa}<0x zYjN>!8h*Hs)uXK8W*+EAH}V=dU{U#nW0qBcgQ0D%6fg&;%*W4&j|7B~g;~+db(IWi zm-NB!Rju{2g_ae52NCf$K5JhMkAQ|!afE-B#e0Dgh(2=!?zFl%V{k{&i)$>3*K%R^ zsERr{Cs*sJu~7z|EAyCrzqEVG#pA*9OzrJX-)!Nonv6G>-29K4d6ACH5UZQ^oK8I8 z67RWX9bKb$5)pp7!*2eEIZ9S`oa~QKU9}3zl@-Bw1#UcAzBYY5a3Gxp>1dqg5wy45 z-#ayTEmI%&6XQJ1D0oqK;vb?yLV;etjrEt7^JD|0>r#F-`m2X4F)znOCPr5gmlmiB z6uN&2{8vb@x8_uZUs%M4Uqu=bgN4S^3yCwruC|`zZ5OJRVV`EEftZ$YxS7S55|efU zCPQo&lhMhPZrylSN&lF>G;-9`12i0KlS0)W{idgNY6tBs$a2=WhQ_rcXG;f*#sfEZ zHOzB?)C$Afoimi*BDky!N6Wom>w|%8=KY*nz-40wabco@cDf)!=f`sfmFnQuXR6n? zavHK<8-Yo&lzN&l!4C?zK68sn3QLJECSS0KJ#sHY(-}}B+ zGi8U9DY)s2lfjYDfc34GcO5#zPlOT(q7*W+FfB7^^xOAR1xfyZA-Tqq+o))HF&KTo zQAJlRbK)+oESkD_^!N`9Erzg8Kg^zBnOvvkcQ(i?+x5lM*lT$4#S0gP&&fULK+8p8 zrk`5Z`r!X)20>fL6oilWLx0}+sH;V5Z1yZyKqdi;*}Ta zPm*2X5rlT_SlKHdvX|lvCWTm*J)$u1%W6G^Z`a->C8x*SWPj@5wYgzkBBSl#-X`T( zZrU;+w$sfCD(!)(AbgQ*pg7PRG*TW)2A@(f{hbLcph4O!vid@un38HS z)nFMyf=%fulM)s07{I2!mj7i1WaLs0AN=^*9FNJuUwb+x1b?9{`526{E{k|gPrRFJ zovRO8&yp2!+so17qt%fZmWk9uv_^$Us1B;gf`4ygXFl%XA9_)nE;r8xYjgp9pv?gM zn8fh|b8q8XB1n)xr)zi}O_~XznCq+ZX{3227!9 zVg8Vdv8K=B;sLWU8nns=#Xo&?+1!n%>f-k8u606W)lrjozr0m-z=4&{aFuvAzmN}) z^KXA9r+rVCUkk$3ZpM-Vu~q%taC%_31$RX@M@H4Mg!9)XGqm2ltVTrLKNpf{s7t(W zZb)T6TG0yDr(Q1UX;l+?Db>G!>iS|w-)aj$Es5-?oDLg+y2PD|O0;RISwHfqK+I zX3B%@iK%n#_dQ`IeQW5e)(yRwpEC}cal&Crv;DXdz^r!L@6S|Tcv9m^k`OL`5P}L$ z|CJQU%rI9huT<~5Qfj}V^sCJ3B{Ux@qnw)BgwE{Iy8RF|KCjO}Brd%^nBs-pjjVf+ z^5Yl)`xo}hjM`4G( z?^evXDFV(UQ%ahs#zl7nwN*My8F@*fuoh5(p_Om=3@YmXsOK?(#Q}^Ih?xLv9S_1S zOpsxnIEr{$$Mi<*%lgQ;9*{DqXMZyFpIowS1BqSue_jof-%$zd|Y#cN% z%<}y3Ourrw8oyD$+rAZM@IzJ8VT?4O7ysshz-tEv!4_M? zQBF^m_&07pxqeFU7z4>q0q@rKP*RIzEx+w!){aI*5w5k28H9pBS@i)s?VpCZ=Kq|- z%^f^?QyO#_uC|4Iqdwp~M9ER@5C>#SFH%v~1z z%jWQYR=X41ok2`vBl|uS$kigrvv+o$mYW%5Dx$@7yPf6n%Gm)G&moFa@do+v8XM;d z=2jS!L}<_5hse6E&j}&&cQTsKMg!@%l8=IpWNx*wj0t46h7!g(I}Dg+{!me}G6hx7 zU%><^4m#y4+9F4&-I#%Or&$0`GdsA4da~lrcx$%+fY=G7L^vt4&Fa+Yp?paTm8+R< zShZ_$;Zn*}wRfQ8aTPU%z`$$z>d^D5KwUgH2dax><{u$w8+n$YGv_T8Thg2!|P=oqyF2M{q7e2Od65uYGxg5s~Arp0I16S@Bz&Y(b z?O3Que_&Qhm?xcrbKDs(!8wU677nW6AC-IcZswI{-aJTWG_4$P}@sf*`Ndx0;* z0iaS~0RDJ@00@BCnHd1TP(tIVaA7cDZO72F%vQp4TCU#DCc_L%OC zoas;aL!TS=BqRwo{yu=;7e!L+tPWuXZEn-`KxmpRG)jahRFW!!r&uGcz-D zmYJCu3y-+}%AWH(=bjtic%T@`lI3NHk4w@RiFrP-a;2qE)778J(2-Ekk5kaXE<;eYIlPwr!-_f8UG0IA!3rZQSVA#PN}~ z|BxU_avJ3bGiZSUosoA>-I)zV~TWrPwbmT8w!L+3Bhk^yOXMSLCBP?o~t`*NO#| zjF^rP<gh!9(3|ZK5AXs-I>nFiSzHBVFygHZy^`{U42a-!_}hvQv!8O3#R^f_2DE zuKimqi`^hExlg@D5+}Tr%%`D5qU8pVY`cqjD8GPVdBW+j4gwp)P zSEFHKB;MB{6D{$HQA6f+&PXF96gh0BVb}Q-UX83O3Xh2p6iK{XskQ@N!*V>Uiw&kC zA==0be#}aJI;=z)M7e}M!|P`BksFC*t-d?(?tEWc9aTw-)Qj;7sO#~BM$PT!7=RJajOCv;l2d*=#p9U=hqSw& zPF?L>)1d|Mi|9&6XES!UmMm`|Gktfn;__g_$iTrkn*bo+yM*rqhUa+}VxzKNTj)*!0x-&F zB&)nQ1dGV z0BM-zVf!a#02NLyAI46((<`h>N_S0}Pl%LWO~iyEXi>=I&=0=J1}^fuX!jOx@EeQ~ zT?~_wi~7HTHA0xY*WopGSJap)Qd}7?v}~r7*3sfK95yLmRqrpbuPUk)z;Goa3DGLR zt73)#3|QjSNTnoLp65ut9r5OeP%h&N36@EC!-j3a8jT2@_?Buv-2nHu&0irUdkGXA4D*aKRc&P0gPXIT(WqBo$D|HmG~51^*_md zYO@S}F+2RaaK5;6=$UmAI?U5+YJuWqk@Pv*uEF|DDoK|5dV( z=}a#TQmNn$Jec*rW;bv)>3T7)Hi*H*FLG#9NKl7n z5f|en_BtNL5js5UdA-b1ARBz-j>Z!dac7rS5Glj2@^02%kEv{SqY(ZPm)C4*^B(Q~ zl%cN``xEkuIzW8v4&47z`CeJA=zoC-S( zelTNl9$q$^q0>tob+0vYTNnO^cSugV;R?OPNT6 z&}Z39{A+7YQl-FNjg5HfrGR>CpWbVdqJ(Ly_wE%Tms_=lvVF z#2zmLK!Y8Pv%pbze~@@)Y?^1W2(#!y^?oXzGCsc zKho};v*d|%4wPU6kGx-3(?sI4(Wou<+;4WK5={5gE1x(f+k4d-gPpLvio3>nk-jw<$QTNkNZKSow zZerbTY)uIJ@pZfLHPaX1!d61f@8@%M@-KAw%e>sKwYb8^2i%<3VCCZAByNsFUc$lY zdCS(uUtt079ua%rD~nk$!^smiebwwvVnkeod5!MGz*?L_SrO`{$M|OzzYU{}hmPqZPrJFTo7qqsldJQRd&a|kSoP@{~zOBx+nT!owbf@?ZfSFRQ?cV4rhY8?YX?q@dxfbtKYR8%dF!*2JCU+(m z%BW3PGeihc%&Lcw?fsfv|A=W+PWT37v?{j&>}s?NWFpUvhpm6*2B5zd0OQ-TSnF-C z*t|j1xw*{2R|c*7d~&4!rdC?L6R*hO+_lsK;95x-)42(`Bd-O%`f}TGkr=b(iiZHq zOF5^awdti$b@?OKVV@xi8Gnu~zA6VIN>E2zjIUhF*$E(nxSObYR{&7ERWJiE=R76m zEcAUF04TG_=Ml2ImV0Ujn5a~&2);_RS%7Pe1h_&j69B5T)g^A#Iz+^d-4oj&rGz-# z{qvO-TfgJz=;(eLQP0DKuQLSr(|EVZAXIT5% zXddJa-v$60T#35-TXW8)t~DD_lZa6(Vv-=V)GsNk3EGx>x5O>M$lTBZ9TcRqx8e|kmq$fUDIXBr96s(hEw zdl=?Hg;l76M};3}nS+-!<&|DxX5;N`Z3ftdx!9vwbna2x2Q5UDBqpyVQ3YWVDH<#u zlh4!`Z8}6Jy*lP~gCII1ftg&$MhjulhMoD}rKZ(~s+aBZU? zYV$bcc0W2$A;F=GFhoRS-U+CV+a7G;=9XB|81d*lrV$oRunXFm>;jR6!Lw(yrO0aK zvVz29voJnQ6otWj)**`HULWVW)lNbN(aS0dx5>_luNIV>?GO>o$xT4hv9A$Lkt&&^ zw?F!bhfvnfAFMdxb?3^VDOaHSQY3lR20NYmc@&8_^V!eSujL|-MWsXBsOjQ3trt6N z`!Aw0*lB6RXxw=vmx7kib1z`$H}hL7p3=Afm~#OulNFhZ7y&!KoZH$XvmKQ|%w{D} z7P5QYIhDeRf@HS#%3;N2MlOLkDyLP@%q&Gi5a+}`d5#lGE&G^16FUnATJ4q9jo1Zr`FEK^gFo3 zHso=H_DQZdEjx6OqF(06?Xs95DX_3Pj9Gy&G2~{qGDx?H#>8RpMfXZCEfJBM-X4$W zGCLA72e(INiK82JVb_Omgoaq{RU;!Ym@HPOB``jd*W4&5jT{JhQ%vg%RVKSM;WoEsvdn0KT@ z6(W;&B_>``q=^;lw+^rvKtx_xIiyM<;?+6X?Cum+D7uHFgi3A;RY<02kMALFGfv>g0>~WgJ|yX{S3iz!XVq`l*s!ev+Vxz$IR* zD{jPFla-9-nP54W-NqE*!kCLV%2{fn$}+SnMn`LaO7VVvKY zTShjv86vfbDupfbPq%5}^fXM76JOEp{}GenP566edo>+1+eX-;9ixcF)_DrZ*(V?G znrde%g#9?fKALtN_cNRs2VB(1+>eeU>GB0l2Nhg$TIO~%WC>TXp6-1xB!?u*!MVqU zqaZ!`CIzEpa!6Fiz zkCEFG;{9&byocvcvR4z(1N-k@p6g3f80+ke%TnaLZOBEzyiCe>Rf5 zYLlH;`J=xt5w%~qv(u3e^y?m0Zn$t~Hr@9BaHcD|l9%?j$GcwL1%nZ*vyIq}tp9jN#!$`c`uJ78y-8B{Za z52tD&mI`lV^{F_KY%#3+jSgDOq9YzGQJC8;+-}W-Sf-#)B|2E~y*!$Y`6D_+foOy*{W{1e?w)K}UEI|g@s&+<}yOgw|%*t{s z>~s$U+=T-khg_VfMF(0)soDfrmgOoYB|v0ZHpaD;7Y<~T<#=48pOSZMx^ukiKk`Y; z$Z{;?eUHGDHQtfSL|=8X*F^KvL39RLo^x)M@EGlnKGecomgOL-WR@_$ zWAP@LpVDMWxSU5ExlKnb4qecIJ>-@t|>| znscM+y6I%Cg|f=IqzH3mdHmh7$iigzpP?2za(0_8VKi6%2`X>Ohgi^ef0^xkKD*os!Gikxe>TuH^CF-s5Fee#e8}{qJe< z7nWzd^D7)+hu)Xt^?2cBmJfVXvQ|9}}U;AI8KMUdL^p@LHdOk>yV~`r)f? zTYni1%Sy?-%r{RlV;ClL%SE%k>L>fiB6zu#U}0cqPLmtMSMZT?abfnbR=${>FN9 z1cLR)fi9{{IZW(W7Pn9gIw!nS!QjRF8LkKF2=Nb`2A*HRQE zgVp$sqUZ(Ng~Vf@k6p7VHCqXhJ6GDi&x2yk#>bA%XfcZI{KYM!%}$K)UubldUNW6) zI}v!dbkAyiz%DkQ%W3**9y;pWw2E#Zqr}de-HX-iPXCb93SZ0iJO0jY_MZ&C`Ul0v zcIkb0fWPbQzh2ozxow8q2^nfuL=N+zSY|R@R$~NjOW2Jg?9j;V^4zP?o3I};bMus zlLVivgo#+j4PYiunF$bYqD062Wc?d}Fl+@)^h3mm?H4AVeYj>XNQzhV44k@|b?}NY zX9L6aTkt}BvYJunp5Y1JAkOK@;ZqYLXBpujV(iYrG(*SHJ&*qu|8+KizZ>nlURZ!& zLCxOzw=P{yHTf4oY_iyXA@SJfW7p(!BT`Ho9XjHzgM%OBsIS#Fli5A$`H*kB&*wU+ zVApL@=zY4~A4F`?yTfMvdvp5SbcFt*egIB=M}+qIDPY6;?#@0P2Z1PZztDK>^RZi| z=bwE$EIeLH@O5156~MFBwx5oKu#q1+qZ3Z84ukw7rO_>_5I^LyK|^$c$*Ds8kjn-Q z(Mcv(R}g_HLvP0i3mHb7=0WV{Ap(5JWo{MJKgIL^OTxtl73DV`2vIeB79Ra}|` zlCaWmUgamz8%Ob4hemMGJZ*2+3lk&Yhg?=DW}s74`zXm|`$+5fR4qC>?kXgT$Q6oj zQk+~}o){!`ch{wAnx?yBCz=}w_#u}S@==1-{;vb&W`;+CE6Z-2l4Hfuxfh(X5=Rp7 zKpDl!RlYc=K$N-vKTh+|KoLLWGLkl@=_Qfp*9aXSlvCchCq(7wh8N%yNF)B33gzFt z%ABRMjD4LX?S1zZf`T7%nOhMe{Sul7Bfb42rR!Vm=td-wGqk{LC{L~~A1s)@w-Z<( zO4ivAQ$0a}54o(EXN0Z@lAV@U-rA?eYDW*sUXCjXdZdh@IJvsECuki+Z5SE;xgbMd z$2SKe|9KEUw6j1-F8FW=$?U#FAe)=Dh)$%a&YtuY?)u)&%k5g%?Ra@x8!vAi-aVG9!rrI)C3B|tY4E>HmQCoSv3_dP z{@&*TQu9|6<08owZzr{BfA8~y&LVu!PVH-b{i|>obG8nHKO~TcobVP(>wBL8qt|1c z+rEc?D*BeN#h3WaT+^E;bHZEN-}`hb5V{x4cmhE07Xo4Q9Sg8bfXoSRX@Bn%-~*mK zxL9BZ&E7dTBW!Hlt3HF@h9`5vTN>Z{6ojA8&x6l!rULh$F#aE0f+2IlTiV_G5eLa6siLv*FdY3_Yubc>|{oQVp(Pe^p~y-!GTT6>>l1Tquyy-!ed;=NB$ za@u;IAmn?Wpyi6%zsFfMmmEgqy<^ZUG=uHqs(mfk|+1e2n zu`VNuDMY=+L{k~d3^~R7A6wS^6~lSo@J$s&F9z^f>LL%3M-j1*6c)relwvLOE`{3J z5H(^$?2+Umq8WSDyX(C=jB0f{*1^n#fk`60mham2z}-MIbk@CjQ@s+A^Ka; zixDmKG_cD!_*f~(jdH>c7Bl2sDG(s&Y-}`@F=I0Keh1j@2>?d_{iX(@mjIYULCPYp zfLp54CDT(MGmMmq9E75(F}NFMo5i*}xA~)H=h+Fs*Uyo#rvXmQusgwv0jw>Dm`w`c z;qozdxo+kToY-T9@?i5gs6;-u*4$xHaK1};n(vzhuxACAN6gtA+!jh?#x64lZsO&3 ztz{=rhij5s`uQL~Z4v})?aP0AaASBS`Lu$Wb_zQy$*mPd*XQe97=mv(K($@~b?hAI zj)q}pCAoFOt7x;f=bls`R4>tGM#HePlH9uf6#&dHcK`_akmj$nMR&UL-@Sko0y7$i ziIwCy^HQgQ;JdFjwM)6}D+IS|m{>`UGMbkVse6?_gn^+i01#=eE-|7Ookr}eB)3-d z%H;Mguz*zO8UVm1KpncSYhc38N^dz8)sj%b?|>eGzrd1JH~J zB$YM0%R)K{wnqcy^vM9;2*b)`1O13h;GeZ;9SkGF+KCXQi=+f#^0~)f0_J@AI<3Ae z@ugvmSBFzJULYZ!oeD{8Sy%PYyDX(Vt z8$iH~b-3Zd8|whL-I&(^La}llC9eWNi7Y0hu(YXzJrJR_T$N>{hPMBxi5EywlxBSa*q!oO>qZ_SCuljcBuP-RzyN zl4oY3+srD;3&URCM%E-h%t`$DC5|)?RYDswl_|jhev0UGqeYEmmFr@ zE4}mGZNbialD=}008!`v^aU5|{9Iop1M|D#a5&=LYI>LOMr;E5IQPl7ImMcT zeI60~vphIv&OLrF4!ZoI&kwfPxut(kppQ8|tzbs8t!qNj^Xst39A|nDbwKjx?iLvt z5keeTK^hEsm?K7)Q!Gy`wx5ceNdbBLFLD;{hvwM-9sH2C1v`bfBu+PNtkt53 z>$duzm)PAy9U1OeYbq*xk?kscTRj@m=TxRytp?l7H;ux7Hv8S E06IyVUH||9 literal 0 HcmV?d00001 diff --git a/tutorials/2d/img/particles2.png b/tutorials/2d/img/particles2.png deleted file mode 100644 index 84a6b0ef9127644109807ff3a38885ff6982716c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12751 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 z%0A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 diff --git a/tutorials/2d/img/particles2.webp b/tutorials/2d/img/particles2.webp new file mode 100644 index 0000000000000000000000000000000000000000..8d4e45d84ffb87ec13de360cd31774218e6df0fb GIT binary patch literal 18386 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 I>sZrb1)xL1{{R30 literal 13290 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 diff --git a/tutorials/2d/img/particles_flipbook_create_canvasitemmaterial.webp b/tutorials/2d/img/particles_flipbook_create_canvasitemmaterial.webp index 0e362339b61904ca1b72acd3713ff3c3c4e0aa03..4a9030967125b3bd3f33effd5b99abcc410ad5ff 100644 GIT binary patch literal 6154 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 literal 5904 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 diff --git a/tutorials/2d/img/particles_material.png b/tutorials/2d/img/particles_material.png deleted file mode 100644 index 860e10d30e3e5c217ff1ef5c2ce5c47cf590725b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9192 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

3U;3N5Qv_p{;+aR*T->gT4JE4}HL` z4`~B>$eyc!#`O>a0A_bGKIVFe4_N&h71eBh0Uhz?@1hwQE~&n~_z&$Rme=?eCXCEY zZ%MVUU~VVSFv?2f!n{3&V?-Dp~2R?s34FdG9a zh%%e@x-^P_H^`DIAhIwJ(yNCS z%rv2nbWj8735Hqxxk&z+3T>k*=A_pG`2n=sTZdK@PDx-J_Ub|pXrqlB0HcF&1pRZ+ z4PbhvVDN!S+_TuICR*v7QE3mnWm(RFn}RP~vZ9s*uP5Ive) zm#^`x7hVF!mxtro*dqU4#f0hUpzKR zs^VGczr$IpKtPxlN+3)q==w;Qk(>+R{ikmSE~&SC^`+;fAx0UY$ z7E%21_0Z}h!#r!>bYTkG3FZ8UjR6cyCAp)~bgdGXPN0EI4y<@PM-!s2K`(uW0ZF1u zci%RHF*>Wt9sv=HpL&7k1f9|}50L&HI~g_9s8$#(tJXDdjG)(@R!6P+8>gE0rff+I^B%L zpdKzw6Vtk1lFL-NJ8*!*JXkh;EqYiaX45dY@2(TjU5LG$@q*^v__G!PKy*!KG#!D8jOi;@pgH#<|82-f(c zZ|Pzw`v+lq56;|Y$*~$uq(c1Osrn|Lu{&XU7|zwA?r)l|wkenMgX3_O^-v=;(0lSt zI_$}osSo@T=hU(9*#r+lv#)vBw$HL>q?!eS+a*Z|)Nac^5uL|L zOf#xsTF#ps2drGtoHOm8NsfPJLd@TjIgJ|EgL6>a`TkXT5;TjF*K2Idy2R+On9^BK zl#X2qH}h?9&}8a#vVC>2B9UdZ4^a`O&k00;ABF->57Q4ueVol{k*_0+rn|A-N2jdR z9TjgQx4CPd?4mS z=qCtLp=?`RyEqi^Dhuz>0w*f=ajxDw#eJy6O8jf&bv*0(O=PYMYOd~*o~4MV590=k z+A~i&-NZuYIC?&Ha+uq^GF)LRw27ArkJUksx`}jC`xwKy4YkhhGVZ;gjfs~KzYp>& z(+~j(S?G8M`dhr}NH<2sFNlvoCZpmO8{g!$i`S5NbGd@w^l-lN+eC~XY2z4iVhmu? z(u$>xoa9R%q*ReI_E6U-S1QR~8k7jUo+L%2JUM&{R^)A}->SfbM&mX{-~-+C|35be zYny>yM3ZDWaX`TogL}EI=FrQ8`)D4>(P0Y=P^NE^P!fi*o}3=-0$2+9p=rHUv?|Q zwtt`-*mDc87JO7T!Ikl$>F zXt2>Eb_`p~#o@>cznO4Pya(ensN--(Lw9Si(X2N~#lr=|R?aR9`Geln@pU{u)E0nA zgnw5{_oR4)q!c{<7ptrrUkm*+M2GnV1PmZ`)ZhSq_O$tN7NF>bqKXE)=u04XEj|BR bg086GoI1eiFOC&}hezp!np~xf8RGu{l=uQJ diff --git a/tutorials/2d/img/particles_material.webp b/tutorials/2d/img/particles_material.webp new file mode 100644 index 0000000000000000000000000000000000000000..fc99f6d8e17da0feee556789685752670bbdf492 GIT binary patch literal 10102 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 Yzwbal{)fQKfqj^neS3UjUWwih7#D$h;s5{u literal 0 HcmV?d00001 diff --git a/tutorials/2d/index.rst b/tutorials/2d/index.rst index 2bc60e0de..9203c19e5 100644 --- a/tutorials/2d/index.rst +++ b/tutorials/2d/index.rst @@ -33,6 +33,7 @@ Rendering 2d_meshes 2d_sprite_animation particle_systems_2d + particle_process_material_2d 2d_antialiasing custom_drawing_in_2d 2d_parallax diff --git a/tutorials/2d/particle_process_material_2d.rst b/tutorials/2d/particle_process_material_2d.rst new file mode 100644 index 000000000..08a9d46e1 --- /dev/null +++ b/tutorials/2d/particle_process_material_2d.rst @@ -0,0 +1,280 @@ +.. _doc_particle_process_material_2d: + +ParticleProcessMaterial 2D Usage +================================ + +Process material properties +--------------------------- + +The properties in this material control how particles behave and change over their lifetime. +A lot of them have ``Min``, ``Max``, and ``Curve`` values that allow you to fine-tune +their behavior. The relationship between these values is this: When a particle is spawned, +the property is set with a random value between ``Min`` and ``Max``. If ``Min`` and ``Max`` are +the same, the value will always be the same for every particle. If the ``Curve`` is also set, +the value of the property will be multiplied by the value of the curve at the current point +in a particle's lifetime. Use the curve to change a property over the particle lifetime. Very +complex behavior can be expressed this way. + +.. note:: + This page covers how to use ParticleProcessMaterial for 2D scenes specifically. + For information on how to use it in a 3D scene see :ref:`doc_process_material_properties`. + +Lifetime Randomness +~~~~~~~~~~~~~~~~~~~ + +The ``Lifetime Randomness`` property controls how much randomness to apply to each particle's +lifetime. A value of ``0`` means there is no randomness at all and all particles live for +the same amount of time, set by the :ref:`Lifetime ` property. A value of ``1`` means +that a particle's lifetime is completely random within the range of [0.0, ``Lifetime``]. + +Particle Flags +-------------- + +Spawn +----- + +Angle +~~~~~ + +Determines the initial angle of the particle (in degrees). This parameter +is mostly useful randomized. + +.. image:: img/paranim11.gif + +Velocity +~~~~~~~~ + +Direction +^^^^^^^^^ + +This is the base direction at which particles emit. The default is +``Vector3(1, 0, 0)`` which makes particles emit to the right. However, +with the default gravity settings, particles will go straight down. + +.. image:: img/direction1.png + +For this property to be noticeable, you need an *initial velocity* greater +than 0. Here, we set the initial velocity to 40. You'll notice that +particles emit toward the right, then go down because of gravity. + +.. image:: img/direction2.png + +Spread +^^^^^^ + +This parameter is the angle in degrees which will be randomly added in +either direction to the base ``Direction``. A spread of ``180`` will emit +in all directions (+/- 180). For spread to do anything the "Initial Velocity" +parameter must be greater than 0. + +.. image:: img/paranim3.gif + +Flatness +^^^^^^^^ + +This property is only useful for 3D particles. + +Initial Velocity +^^^^^^^^^^^^^^^^ + +Initial velocity is the speed at which particles will be emitted (in +pixels/sec). Speed might later be modified by gravity or other +accelerations (as described further below). + +.. image:: img/paranim4.gif + +Animated Velocity +----------------- + +Angular Velocity +~~~~~~~~~~~~~~~~ + +Angular velocity is the speed at which particles rotate around their center +(in degrees/sec). + +.. image:: img/paranim5.gif + +Orbit Velocity +~~~~~~~~~~~~~~ + +Orbit velocity is used to make particles turn around their center. + +.. image:: img/paranim6.gif + +Accelerations +------------- + +Gravity +~~~~~~~ + +The gravity applied to every particle. + +.. image:: img/paranim7.gif + +Linear Acceleration +~~~~~~~~~~~~~~~~~~~ + +The linear acceleration applied to each particle. + +Radial Acceleration +~~~~~~~~~~~~~~~~~~~ + +If this acceleration is positive, particles are accelerated away from +the center. If negative, they are absorbed towards it. + +.. image:: img/paranim8.gif + +Tangential Acceleration +~~~~~~~~~~~~~~~~~~~~~~~ + +This acceleration will use the tangent vector to the center. Combining +with radial acceleration can do nice effects. + +.. image:: img/paranim9.gif + +Damping +~~~~~~~ + +Damping applies friction to the particles, forcing them to stop. It is +especially useful for sparks or explosions, which usually begin with a +high linear velocity and then stop as they fade. + +.. image:: img/paranim10.gif + +Display +------- + +Scale +~~~~~ + +Determines the initial scale of the particles. + +.. image:: img/paranim12.gif + +Color Curves +~~~~~~~~~~~~ + +Color +^^^^^ + +Used to change the color of the particles being emitted. + +Hue Variation +~~~~~~~~~~~~~ + +The ``Variation`` value sets the initial hue variation applied to each +particle. The ``Variation Random`` value controls the hue variation +randomness ratio. + +.. _doc_particle_systems_2d_animation: + +Animation +~~~~~~~~~ + +.. note:: + + Particle flipbook animation is only effective if the CanvasItemMaterial used + on the GPUParticles2D or CPUParticles2D node has been + :ref:`configured accordingly `. + +To set up the particle flipbook for linear playback, set the **Speed Min** and **Speed Max** values to 1: + +.. figure:: img/particles_flipbook_configure_animation_speed.webp + :align: center + :alt: Setting up particle animation for playback during the particle's lifetime + + Setting up particle animation for playback during the particle's lifetime + +By default, looping is disabled. If the particle is done playing before its +lifetime ends, the particle will keep using the flipbook's last frame (which may +be fully transparent depending on how the flipbook texture is designed). If +looping is enabled, the animation will loop back to the first frame and resume +playing. + +Depending on how many images your sprite sheet contains and for how long your +particle is alive, the animation might not look smooth. The relationship between +particle lifetime, animation speed, and number of images in the sprite sheet is +this: + +.. note:: + + At an animation speed of ``1.0``, the animation will reach the last image + in the sequence just as the particle's lifetime ends. + + .. math:: + Animation\ FPS = \frac{Number\ of\ images}{Lifetime} + +If you wish the particle flipbook to be used as a source of random particle +textures for every particle, keep the speed values at 0 and set **Offset Max** +to 1 instead: + +.. figure:: img/particles_flipbook_configure_animation_offset.webp + :align: center + :alt: Setting up particle animation for random offset on emission + + Setting up particle animation for random offset on emission + +Note that the GPUParticles2D node's **Fixed FPS** also affects animation +playback. For smooth animation playback, it's recommended to set it to 0 so that +the particle is simulated on every rendered frame. If this is not an option for +your use case, set **Fixed FPS** to be equal to the effective framerate used by +the flipbook animation (see above for the formula). + +Emission Shapes +--------------- + +ParticleProcessMaterials allow you to set an Emission Mask, which dictates +the area and direction in which particles are emitted. +These can be generated from textures in your project. + +Ensure that a ParticleProcessMaterial is set, and the GPUParticles2D node is selected. +A "Particles" menu should appear in the Toolbar: + +.. image:: img/emission_shapes1.webp + +Open it and select "Load Emission Mask": + +.. image:: img/emission_shapes2.webp + +Then select which texture you want to use as your mask: + +.. image:: img/emission_shapes3.webp + +A dialog box with several settings will appear. + +Emission Mask +~~~~~~~~~~~~~ + +Three types of emission masks can be generated from a texture: + +- Solid Pixels: Particles will spawn from any area of the texture, + excluding transparent areas. + +.. image:: img/emission_mask_solid.gif + +- Border Pixels: Particles will spawn from the outer edges of the texture. + +.. image:: img/emission_mask_border.gif + +- Directed Border Pixels: Similar to Border Pixels, but adds extra + information to the mask to give particles the ability to emit away + from the borders. Note that an ``Initial Velocity`` will need to + be set in order to utilize this. + +.. image:: img/emission_mask_directed_border.gif + +Emission Colors +~~~~~~~~~~~~~~~ + +``Capture from Pixel`` will cause the particles to inherit the color of the mask at their spawn points. + +Once you click "OK", the mask will be generated and set to the +ParticleProcessMaterial, under ``Spawn`` and then ``Position`` + +.. image:: img/emission_shapes4.webp + +All of the values within this section have been automatically generated by the +"Load Emission Mask" menu, so they should generally be left alone. + +.. note:: An image should not be added to ``Point Texture`` or ``Color Texture`` directly. + The "Load Emission Mask" menu should always be used instead. diff --git a/tutorials/2d/particle_systems_2d.rst b/tutorials/2d/particle_systems_2d.rst index 4e9e152a4..5e67109c4 100644 --- a/tutorials/2d/particle_systems_2d.rst +++ b/tutorials/2d/particle_systems_2d.rst @@ -32,12 +32,20 @@ While GPUParticles2D is configured via a :ref:`class_ParticleProcessMaterial` (and optionally with a custom shader), the matching options are provided via node properties in CPUParticles2D (with the exception of the trail settings). -You can convert a GPUParticles2D node into a CPUParticles2D node by clicking on -the node in the inspector, selecting the 2D viewport, and selecting -**GPUParticles2D > Convert to CPUParticles2D** in the viewport toolbar. +Going forward there are no plans to add new features to CPUParticles2D, though +pull requests to add features already in GPUParticles2D will be accepted. For +that reason we recommend using GPUParticles3D unless you have an explicit reason +not to. + +You can convert a CPUParticles2D node into a GPUParticles2D node by clicking on +the node in the scene tree, selecting the 2D workspace, and selecting +**CPUParticles2D > Convert to GPUParticles2D** in the toolbar. .. image:: img/particles_convert.webp +It is also possible to convert a GPUParticles2D node to a CPUParticles2D node, +however there may be issues if you use GPU-only features. + The rest of this tutorial is going to use the GPUParticles2D node. First, add a GPUParticles2D node to your scene. After creating that node you will notice that only a white dot was created, and that there is a warning icon next to your GPUParticles2D node in the scene dock. This @@ -50,7 +58,7 @@ To add a process material to your particles node, go to ``Process Material`` in your inspector panel. Click on the box next to ``Material``, and from the dropdown menu select ``New ParticleProcessMaterial``. -.. image:: img/particles_material.png +.. image:: img/particles_material.webp Your GPUParticles2D node should now be emitting white points downward. @@ -67,7 +75,7 @@ spritesheet for particles. The texture is set via the **Texture** property: -.. image:: img/particles2.png +.. image:: img/particles2.webp .. _doc_particle_systems_2d_using_flipbook: @@ -257,240 +265,7 @@ This controls the order in which individual particles are drawn. ``Index`` means particles are drawn according to their emission order (default). ``Lifetime`` means they are drawn in order of remaining lifetime. -ParticleProcessMaterial settings --------------------------------- +Particle Process Material Settings +---------------------------------- -Direction -~~~~~~~~~ - -This is the base direction at which particles emit. The default is -``Vector3(1, 0, 0)`` which makes particles emit to the right. However, -with the default gravity settings, particles will go straight down. - -.. image:: img/direction1.png - -For this property to be noticeable, you need an *initial velocity* greater -than 0. Here, we set the initial velocity to 40. You'll notice that -particles emit toward the right, then go down because of gravity. - -.. image:: img/direction2.png - -Spread -~~~~~~ - -This parameter is the angle in degrees which will be randomly added in -either direction to the base ``Direction``. A spread of ``180`` will emit -in all directions (+/- 180). For spread to do anything the "Initial Velocity" -parameter must be greater than 0. - -.. image:: img/paranim3.gif - -Flatness -~~~~~~~~ - -This property is only useful for 3D particles. - -Gravity -~~~~~~~ - -The gravity applied to every particle. - -.. image:: img/paranim7.gif - -Initial Velocity -~~~~~~~~~~~~~~~~ - -Initial velocity is the speed at which particles will be emitted (in -pixels/sec). Speed might later be modified by gravity or other -accelerations (as described further below). - -.. image:: img/paranim4.gif - -Angular Velocity -~~~~~~~~~~~~~~~~ - -Angular velocity is the initial angular velocity applied to particles. - -Spin Velocity -~~~~~~~~~~~~~ - -Spin velocity is the speed at which particles turn around their center -(in degrees/sec). - -.. image:: img/paranim5.gif - -Orbit Velocity -~~~~~~~~~~~~~~ - -Orbit velocity is used to make particles turn around their center. - -.. image:: img/paranim6.gif - -Linear Acceleration -~~~~~~~~~~~~~~~~~~~ - -The linear acceleration applied to each particle. - -Radial Acceleration -~~~~~~~~~~~~~~~~~~~ - -If this acceleration is positive, particles are accelerated away from -the center. If negative, they are absorbed towards it. - -.. image:: img/paranim8.gif - -Tangential Acceleration -~~~~~~~~~~~~~~~~~~~~~~~ - -This acceleration will use the tangent vector to the center. Combining -with radial acceleration can do nice effects. - -.. image:: img/paranim9.gif - -Damping -~~~~~~~ - -Damping applies friction to the particles, forcing them to stop. It is -especially useful for sparks or explosions, which usually begin with a -high linear velocity and then stop as they fade. - -.. image:: img/paranim10.gif - -Angle -~~~~~ - -Determines the initial angle of the particle (in degrees). This parameter -is mostly useful randomized. - -.. image:: img/paranim11.gif - -Scale -~~~~~ - -Determines the initial scale of the particles. - -.. image:: img/paranim12.gif - -Color -~~~~~ - -Used to change the color of the particles being emitted. - -Hue Variation -~~~~~~~~~~~~~ - -The ``Variation`` value sets the initial hue variation applied to each -particle. The ``Variation Random`` value controls the hue variation -randomness ratio. - -.. _doc_particle_systems_2d_animation: - -Animation -~~~~~~~~~ - -.. note:: - - Particle flipbook animation is only effective if the CanvasItemMaterial used - on the GPUParticles2D or CPUParticles2D node has been - :ref:`configured accordingly `. - -To set up the particle flipbook for linear playback, set the **Speed Min** and **Speed Max** values to 1: - -.. figure:: img/particles_flipbook_configure_animation_speed.webp - :align: center - :alt: Setting up particle animation for playback during the particle's lifetime - - Setting up particle animation for playback during the particle's lifetime - -By default, looping is disabled. If the particle is done playing before its -lifetime ends, the particle will keep using the flipbook's last frame (which may -be fully transparent depending on how the flipbook texture is designed). If -looping is enabled, the animation will loop back to the first frame and resume -playing. - -Depending on how many images your sprite sheet contains and for how long your -particle is alive, the animation might not look smooth. The relationship between -particle lifetime, animation speed, and number of images in the sprite sheet is -this: - -.. note:: - - At an animation speed of ``1.0``, the animation will reach the last image - in the sequence just as the particle's lifetime ends. - - .. math:: - Animation\ FPS = \frac{Number\ of\ images}{Lifetime} - -If you wish the particle flipbook to be used as a source of random particle -textures for every particle, keep the speed values at 0 and set **Offset Max** -to 1 instead: - -.. figure:: img/particles_flipbook_configure_animation_offset.webp - :align: center - :alt: Setting up particle animation for random offset on emission - - Setting up particle animation for random offset on emission - -Note that the GPUParticles2D node's **Fixed FPS** also affects animation -playback. For smooth animation playback, it's recommended to set it to 0 so that -the particle is simulated on every rendered frame. If this is not an option for -your use case, set **Fixed FPS** to be equal to the effective framerate used by -the flipbook animation (see above for the formula). - -Emission Shapes ---------------- - -ParticleProcessMaterials allow you to set an Emission Mask, which dictates -the area and direction in which particles are emitted. -These can be generated from textures in your project. - -Ensure that a ParticleProcessMaterial is set, and the GPUParticles2D node is selected. -A "Particles" menu should appear in the Toolbar: - -.. image:: img/emission_shapes1.png - -Open it and select "Load Emission Mask": - -.. image:: img/emission_shapes2.png - -Then select which texture you want to use as your mask: - -.. image:: img/emission_shapes3.png - -A dialog box with several settings will appear. - -Emission Mask -~~~~~~~~~~~~~ - -Three types of emission masks can be generated from a texture: - -- Solid Pixels: Particles will spawn from any area of the texture, - excluding transparent areas. - -.. image:: img/emission_mask_solid.gif - -- Border Pixels: Particles will spawn from the outer edges of the texture. - -.. image:: img/emission_mask_border.gif - -- Directed Border Pixels: Similar to Border Pixels, but adds extra - information to the mask to give particles the ability to emit away - from the borders. Note that an ``Initial Velocity`` will need to - be set in order to utilize this. - -.. image:: img/emission_mask_directed_border.gif - -Emission Colors -~~~~~~~~~~~~~~~ - -``Capture from Pixel`` will cause the particles to inherit the color of the mask at their spawn points. - -Once you click "OK", the mask will be generated and set to the ParticleProcessMaterial, under the ``Emission Shape`` section: - -.. image:: img/emission_shapes4.png - -All of the values within this section have been automatically generated by the -"Load Emission Mask" menu, so they should generally be left alone. - -.. note:: An image should not be added to ``Point Texture`` or ``Color Texture`` directly. - The "Load Emission Mask" menu should always be used instead. +For information on the settings in the ParticleProcessMaterial see :ref:`this page`. diff --git a/tutorials/3d/particles/process_material_properties.rst b/tutorials/3d/particles/process_material_properties.rst index 5b6220011..4ee3604f2 100644 --- a/tutorials/3d/particles/process_material_properties.rst +++ b/tutorials/3d/particles/process_material_properties.rst @@ -18,6 +18,10 @@ the value of the property will be multiplied by the value of the curve at the cu in a particle's lifetime. Use the curve to change a property over the particle lifetime. Very complex behavior can be expressed this way. +.. note:: + This page covers how to use ParticleProcessMaterial for 3D scenes specifically. + For information on how to use it in a 2D Scene see :ref:`doc_particle_process_material_2d`. + Time ~~~~