From 3b01c209b2931fdb2e39890f9ad14e0c6c870288 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 25 Apr 2017 16:24:07 -0700 Subject: [PATCH 01/40] Update libOMV --- bin/CSJ2K.dll | Bin 502784 -> 483328 bytes bin/OpenMetaverse.Rendering.Meshmerizer.dll | Bin 20480 -> 20480 bytes bin/OpenMetaverse.StructuredData.dll | Bin 102400 -> 102400 bytes bin/OpenMetaverse.dll | Bin 2199552 -> 2199552 bytes bin/OpenMetaverseTypes.dll | Bin 110592 -> 110592 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/bin/CSJ2K.dll b/bin/CSJ2K.dll index 238291f7e7ed6cf868afc1a1cf15ade5274313ba..e882e4c6c6a27ef0f6102a26089a564823ce6416 100755 GIT binary patch literal 483328 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%0DvGO|-f0&_(l>3Qmsq6ZT6agfe_A}?4= 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

sVs!a&}jR$ z?sMJ(neB5jx}}PRj9bWp8O!$%bh4OI9s8Jt>x|RRwq8_$qq|sADJGOLtf^$=%IuwZ zoywp~<$iqZE)~O6P6n}r9mKLCotiHLLxlv6R}hSvPC&$T!RHV29EUQn(RMP!-j&5d zcX_v4fZR?M!{5Wx&g`lXbI` zbz|T(oZS=dJGl;h2g5Hd<3*}mBn~qP!e-E+sWeKB2+lU=f0*j>UB4bfv|Xb0*B1${0L_7YR4(cHBKd+j*^}mw&9@ve)V@sUruv zO6g*9t~6JiOX7d`oLz3z?Z{(#*rLa33ELBeUTXY1mM)E|UfO2HZ3*}m0(7i0jQM-` z1Z(^N@Vg#v0QembGZ{|#+a7i(WrEvM_V*#|k=XR?IVi83^ZFOm=WUc7W9zunJhq;{ zy7E?9+RjFcZfyhb@Y3oxq$Z@UiSGDnwA>Vu5z^|wT*P&155WX!JFKnQf_dP&}E!@uZ^b z)Hb4&vPG*IXI7!wqP0;ed-*yoU>y;#db+jka+3k)!6vmC1EPpEpiKtkmwf_99HdB; zw;HRGjN-;vn1Jc$7_>0MA30E*O0iW=1A26=bOP4~{gq334 zAU9Y+DP}-cis_+@<>50VQcWBEh(Rf4BF0ncE!ilJR8dqHc`(7LVw>02gw!GCFx-xj zX^mga-pYv7A#fhbT7(p_aizX29IvTaxYU@1KgEYjof-JVV-59EWfo`;HAszF-~|R# z>dXS|GBgD}goMz>H+rQ;D8xNrLP3sqqXvLQL0-*57UEr!I6elS1w^QfNr9n^<+I>V z_{CuHEVzXuESQs(K=~|~r@#%EbQ|!*Ap>KnEeyvhr6?@4h2770gRIBu znU?i>97#sN2lChUJ~285`Pd8yx zMx*vH)qfP!3{mM+8RuptsluiJO%4Q5-y*14qSC3d7Bvf0Y`tsLHB9wgf|?^Lov<-+ z^IAzY2UM7P1ZoWHFBOyzv)Sr?NNX2Q{LJDTQ(agCe-9@1xs*(YsV50(T}vv@u6%Pp zlQOm70io{@DCKPh3b`K8L>Iz5;0U8*WvKf1l%3s`7`IX|DTiwiyXS>?LJ@aKbuWoR z67cev-fk}TNV6C$)pPSYoun!chl7@29yEUQ%ONOl^_J3lroR-R9l7}Ndl}y=774(n zk&SORktDuXOvaDjjExl5h*x(Zs8@QO7d9uNw?UFhajX@YeF< zvyX(pF)MZ5$~otL+EA;W`On_YXSuqP#rZ9;qBH>>gUxJN14+)l5JBvd*~rd(B=R=V zIaw94rT9`}>Bz(?$Xa&JzSGUJNth!;mT~RpP;rC%ZD@!Q!v%NQ!5Op0p#?TLHIgmrCuPE3ZlwGLD=HML<%! zRGI-eqoeV(u3Vhoh84oH7aK=E5WkSqQIe8`;3R-!5&{mA;<*}<5wBqYb_#jxgUH6_ zqskmq`Gb4LCZRGPP}zg3+j_9?k_&`k-=ZrRia8Wh#ar_1*3zjH^M%4eY>jf2&`Sl| zjcu@grCMRCw-sXQ_?=u0#6(GI@?G>mTcnI_P{-h-r#o@P?_dFoDIqA2-W)6psL}=* zJtC1^dkz!^)j-gTWB&m@Ik3qs45@zD$vvnB_KdxQHBwkpoDT!msy^icqhv9Lfe`|X zgleX+p|7w}l@91?DV(VWtn)0jrZ7|e%PjbHxUju?kdEzYcpEldksvy4>A>!5Dvrt& zPR9zii?IA|FCnz+>1sx;0X8W{e;&}-*}@sXE+VXZx0e^N&j^-P4JDL&P;EyscF!G9 z#e-@FWu_B^g22<&8R|@R)}dda5^qgxza1hRZS0I%xCo>t>34B4W} zsN67Y5|LRHwGNRhUgT}+v=+$LQN#@+O{vr7UD&TKtMPevE7n_l{!>Fsji-U7U3Xaz zEn0j5?7HruT@c@9By5LQH>RnfbExtI)uh@o4-qh>w&K${flfFEcJq3SG=;O>!j5uL zovn75bZ&-zh9PbTWbY0Dbsp14TMP137DSy5iaQiAoa^powWYALe1EmIa8CJbwNp*c zt8>)0`9og?^A)PCDM-poK-)6E1iY>Ds(PzB2jrXs-_+E5)lRr~B7Ab{4b@zVI*8A= zgNAJfE!VC#OuJfmHc|A)#QS*G_KFkW*&)q{6p*U|~FYe$?AyPoeBE&#ip zuPz9)>jmJ63jjP8yOz}X9oe-dS7Fx+g>bzlW<_28Yjb>IZJwIfc5TQ7DCmw;O@R+ogi^%Ahe zB>*0aTL;v|9l5n7SK-!6gn&8W5K9D>)bJFSCG^>*mJ3A1dFgF{vgy87%SDvwDO zXFoW@={C7ggb&w=@|Z4C@5#sY4D`S>7A~7yQOYMV7YzjE(@TXy5$7y(I3d#RQVd6?@f@)eD`K*hA_NO+OAV}c#09R*Au!cD{Y+&}aw;{;D=Thcp!zsmH+Bny z)hqA~Pz9D9JSnQqc?=h^gs?pzY(Ndh(DWCAFpnHqV8am=oIYkK8H1r>(lufnqN%&Iyl{FUlu10~`mvLoy(3adBR!qv`Ao=YcKMbzz9_W8`_9F2^DV zhz48XzZ?I9f&cPpmZPiB063p4m1IUT4W2Ej@M&U(9r)z#O5M2QbmgYg+|fO@{Iz#jjb&*=&`D9`uV4rs2W67464D9OgVC3_C>!!Qw$(%08+pc zj|g}?1I#g7)it}}e}4D7e5#VmP01Bf{D$&iTlQur@d% zga!LrE!gp)V8#p_A;k?Mu5sA}Zo zL@BT7Y7sT#)xJ10eievSW!>N&<39-vke$+}4JHVyaqlKh&%W6qW=w>$J%OSitzqJ5$L9`N0xu_YDD$U-o|zI zVR&If8{^g!=v@o%TD2Bzl84t*J8Hjy(lL>(zl$;wD{h$^p;VwQX~S<Sg2=!%79Ds{#CR={Eh)0CU1;Z z%gkKpKx~CYe%ZyKlWCc~BAu25o7kb?U=$>pt9}#(4J5jxuwmdMsT`BW(8cW;FKI!N zjStB@fP~8jvK@stqP1R`N#Y3T)!_`56uM+64{TT=8=hrt$wp8^IR#MdUWqgPGQ2~D z!l<0PV=HC0cf0N0at{6Dt3X*|I4)vKgNrJnMj0I=@r=>ik-WDkv-dTe98 zqed;z;A49WbtT(ff`~)kl0;AS8>rKi>RG}L3x6?)Nf88#04R-8mmUCUw%*{NK8|`* zjmOutKO=9+pWA|&>ftK6A8a$s^iiHj{G zxb@S^&8yl)RJ;;Fk3EMy{UsbFpXW6&ck%c_9Ge!(Ib zcXe!S!(nY9nL}+tf!18!CABH7R=Y&k zX29b$%a^<=L~VLCb`iPUyCxc=F9oK=nMQZV*I1k9>HPIR1+-Q0douDcl$U>PXFO=z zo<}&g{9GU5c$R!Sob{l&dm`Td7aH;JE&YXbSiP=Ks>g)HC=$1B+73{Pxw@R-%!c(obR$}#+p(Q@g^%VR*A(Y(&!Vc zJlL=(YR6ElI9I&3XBEt*;SNVAgFll?qu;=n1@ga?6@Xy`6IrZ z1f5BD$5rT)>C!cod7(WUCb~5Nn{cQwpfFe%cteF*hAkf0+}rV04slNDni-xn)zy}< z^;Lf8Ddc;cN;CzWd^JnAMVHRfzhb$B45-7H%|fbTXcRu3pZ&HuQ8hWS~GX6LG!h+9N@R`Hu&3|SfkUnL;-{kjBFvmCGxNbeDJ{Q=M-cym@ zb$g8GFU8aR7OHb%^W4dgxHY~+!-oZ`(n&;KV$+dMg8s23TYnF0Ro4BYjZYwEd@;ewJq3Q&oi#3k(rije@F^md?=a&;v-pJMCNmp`%EE--A|=TBdN zd3kAhwg*~SfQ5sit`)PjmYh}qIF54S*z{;V*7StR9;->&K~I3yEj^tuTeI&#&wF4t z3#uvEs7ZslaI>kJ95Z9%mcIy+$I3LHKO6O_bv|-pY%$JB$K?M`h6iP@mAty*$EL8_ zeGpHL&7_Uj6!GsjlDcq2YD> zZdiBbKnVfxkpH$~71N+J1~IB3)7kphJ$SV7X@Ib<^W^yOd1DViw7?yhXaXCQ`NW|o z0E{Q-bWb=F`1Txk8<5AiHNXBGb9Jmiz#cVe$;9QzIfRc${~4q)fQtdfoL~q>(}7*_ z#yT9?-F}@+_{r9_mmrlHY*<91PAob0SQ1J*vY3j~U-SG4ZR-;D$aHv8=gcLoiS4+& zrsC7IO~c{2oGdDttTlPu7;6BSeIqPk!(`xT@&t1EK@t{4zx{`{^;pmAq8pRbBux@s->i1a-waZZCLONQzAHE9L z4+=Tl2thI|>4iAFz){7sHkO0CjH4FWatVge$^|h;lM5M6iR)9+*?D&wDamo`+`K!P zt-tshkBKZwTn=dCa+0P?;VZ|%i}N~U45Kz!FRMs;HrjV>T4?di( zze)mzK>;h>hFGfDL^OoWZ*r+}iBo?E@W*b%$i%0jhB3j=K`Bi_{dT-OC}z+y^30PB zhHZhnocbMJT&MmKB1$@PT1XR&BLi_PusHP(0#i4rluV~6lkHp_J>u)p#?MI^sOC4e zG_kt=8AQ?V3fBLP`JgjELQKHA_f=JpHk-Ik56|K0Cy zx=G+iPuo-<`c>q58-Xt*NF8VecT@dg2-NNfQ+?$bNOdDq<;0({pQ~d_KwIp)z1aD9 zZ7rf4gNW7i@G!P;?uyQ&$}HFnl^Q<@x0lKZvPg8`XBHsKN3KdPnIIU;msYCAq12lg^Xtcq}y_RH2 zgoObA6TlE5_TR05bRddgkoiJsBmx+m=r?~Az>p|-FC-l07Xb{3@?QWzXZ0!VLlnNJ zAde|Dpn$}&8y;=2oV6dL;Z<_J`CFX|Kh59aC)K}=PqT=hOG+rhVq&g12cz1y)HQNNJv8K6}XUw(-oup-hp*A;EB z8&)7&S(`Y}35Z1gDF`pktJM7RQCz`eMYaSk-xw$&w=~$8l}Qw=jE#sSmU77AQ;>U| zA{Su1n5L*ZNDe88KHrQ@Hi5TYyKtZAn@`z6h6Vj>7&s|xqU|>1f zL|aqz$P8qUv}q5pl~`Slo!rMb*<4|PRw0g8@aC_jAi^sCX+hoU3THJus^)4x1GgY5 zIT5N8Kjy3n)Bx^*3zK2UWJqPr7+xE2O7)L|w`=`~$qgljY(F3SFkfzb#ii`^c>a}Hea&`R{P^f)+)Lh~acmO{)9$mAk{#}Fy)7K-91PAgd zU`%DIDl_!}U2yxNVg1tI8EuK-M&l^epCZr!l`)XP`gaKt4MHk5sxm@6?ae_2qU7Qk zBeJXN!akVU-q*ro`skNoek%ew#I^{M`+uZ5vXNC>u?@O}k;`SlX?75pt28qjH*Lier}uVqe6;t0M<$ zKg9%ibi&yrFY4mVvbuCiIKkPn4)?rY@$AkYB+?@Sk zN+ocvzhO>78;&7-3;!hGLHz3ws~fNz@eQVL;eQQy5FZ!7CH+sg;9K|)TJRqoi$u;x z`ftFuh%Y9Cz=%ZN0((?de1Cv%FyA@geFWpqFyIt47XJed$=C5M zAe{I-|M(Yhua*4;N_#%66=*i?aWH(JwrZ78d?2rgflYacD(Vi!`K~hGMwhW8bXd%9=5CP|FU<7gNT^iL*F6%j&6S*1+%X@_es>-$Rpy44wJT}cHho8G; zAUXVnZ7>kmyQl1`r3 zT~4}r4zSbK7*~JPOIl;SpM52cC6neX@Ng($Le4;n;tyNOSR0sUl&4Ti8Zxl#1A}Wg zYS-L_C{#wYqOvWIW9`#0wW}jz>v}b1wXpV?`cxiF_B-Ez`^=}09Gr<$oHZ8TL=jVG&2VCgr1DX%F)}|P!_r8 zVn%2@51`Tz_r`V%RWO4bC zv&`9Ob+9n5vWRRBq`qEeor#&lp zR*7E#d-+AbaVAs7g_G9Mh4Gt@Pv2>~V&0j4t6t*Hx~ArnOVLIObYM}EM0;M@`C-L+ z5Zs?K3*uXe=)bR5NE8dWhJxNDOXJ)9(2FsA;Vfw(W`UDrJ^YgOkryV3j4Jaq2mIUUjkCXr}bM*MiCWDBh@<4`0#$_i-5EaA0vUUfeZ-UXD>V^_@8J_tIx(lDu}=PJc<>=B$8 z^`TgXtw~5~ofuWq)TX;y%DE)b7b`!luy5{3@ z`NK-;`0Up)7c(VuxhIp1`~>{+KD4jdli@QZ6ctXGVLh+MupVSSCtavZy3iGYF0_kX z=nP)Et9_bnw^k$zYJ{8~bOgKF5&jz^vQ4-*BKaM0O zJoe`!Ya#Z}hS(qWBBvf5WPcuI1N&dKGW&bY(3$ z|FMY=#R_mOv=YiJVSlZ8hS-1QM9KbW6R#pSg~;;R|G8oI9}Td7nETNgei>qa;s0+! z-+n*&zi;f($T5TOqjb(PZt)xybbE3092KpKiH8TTv{feq49`{Fs4SOiFe?>vu$3$ zELKY+uio_)vXyC|p%Y;Ic768Y6zo;Zr(MUhE7? z<@FO2CsCl5*nzrHYv&8tY!&IeMkb^o>3qD}qKqbg`a(KP=4s&I)6{A4*-Odrx={Y2 zvl>J2m>NTecryeu49N{{fxQfTdtlRRbs2rVuv%>f(q@L8^JF5yIvtQ)d=-#}fJ8ps z1SGLscg{nIGzu?l+o9u~8I<_ccPQ^a0JgbL-uK@p@A2@{AD_HOf20QP%Zn3|_iI;@ z_rtC?7I4nkD(^?oe_+z1u-=8-rbIlsC3FbeX`o}9lFUW)%J!AAV6&7Qp9 zyrjmgyx*+G+T=Z85CVeLBJbCSo#g$o z6Bl_8{tU?bU`DD{-m_30do^&*Ij!>ki;(vpyieZKI#o#CuQ&Sr2Cd((_xiZ#_eR}U>plJ6AOPa) z_v@+OZ-}Y&M!#Rb1odC*_u};Q`}Jx=NBth~|I7NlRp^a=zaIR&Uadb_{r;Yn_ppEr zh0I$KX%+Xw5bGPOZ>Rh=b2#YHRPW6&Fv4NrnecNMxEf!M0+S3kqX1@bI|t}5sEtdI z{YDMls5WbH{~J-hMdb&~Vzr3-kzIFFSvTtax?LZouMY#uYv|Y*YYHhT687a?Le{@n_iULwMca-wOo|He40-dsyKVIU;lk!GwkI!DAwR#pR zAmxq14(0o!?P7gI#QI1;tpCl4i1o)3$xf%8*?&ohWAEVD);9|FHbhckz8uOKt_ z9Q-sn&_!1t!o{&nQ?H3j&*0L!e#z55LhW@J1D5G9o;cy+POSD%oac05?x%+>lpj8{Jqb2Zk6s)4;QnEyYHJg072a6g* zdRfJ86{V)X52I9RcL|nzlM{1zww5*~tHWPRq7(@CpsXn^S9>Cz?A$>Y^jHhzsc*d6#jOWT0 z0p3H^3!AY;zJkue=mjslM%;~u40AkR;a34hA-+Q-)n&&we@Bh6r#}Ia*rP25z_Lsc z$LwhDrnHD#1^5mu7Lxo9E*4V!u3jvp`E?gzbzgb*@Jd+Q!Wnq67O@-O@?&wdiAKh7 z(E!`IV+}G|rhIJ}`a})Ae;C@-(6hqO!y39S482K1v-LCM*qoO$N-Bl7RnLHBoE#SC zHsitGLU}brXb$#p0Km)2Vi-pymc8d4lG9(YFRZHc^oLYt0u0CFyAyf4cbJ;}3S`33 zRX3W}Jq=xfCnUJK&TXC;tqTeuGxJbfNH9=$dEAEUBNIH%&$EEQ-|M^TdI8=h?@Oj-4Vg6$MIm)9hT!tK z1`$Tkwt7yrW~l;2N>UhJf)8n~ox&3(K?v5XtSPU->Dw`TtNsJW+cgtOHM0HX;;g_q z^8z@v?cOp@HAxCk$S(Gr%xos;gNd~YCT#{2!2p1ObyGMI+ycau&}cI#8s1;oP{sLY z+5awje{DE8<`5OJPoTBR!lp{92PK<+Y9=WPb0UU|Ilwz*H9 z1zNVXWaP#0bMZhri*m(F3XUI0`f&VE9PVgAVK-m@E~7O5D%|YTIq2K-2qb@*nUE?h% zn7(@JV4S5cDOTWbMS*P6T%W&wDhE!yOTFbj|dus}!wV2ivs_Ha~U7_y&`Aj+S$0uB(M_pTEdHl;LMOnx&slidQ^4$z@rqa=7& z3OQ>kmgHue((hIS%4(neBD!`YnjBj|21j>}9mIe-hSe0uJ2mw(Ez7P#!vjRG{VB*CkDAEEIqk>Xz=?bXdf|sTH_-P^^ZKe^4&TkV4~YIEb;e0S z@N9vtxM{*;e$y3_dE8RQ38s7kud?(2jn`%Rw_w*a?|>Nkrl9Ze3ltzYv9W_7PCuKL zLQj+f;VIxs#$*n$doYhPkZ+@c1|gNX(F|{~rPNYdjF4w>pKn^h;L8p+1D(XxV_$F@FiKT0C>@Y17+mXy1WO(w_$;bD-DeV0di$HkCY# zBiix3l|nu#5%3`?uryjeh(MgHLEv5!c=(s_ZpGP~O!;3CfJ~=JPog z5Dh6!Z2}a>`{NbZ02c>z&CFyEEIaF2M3aH#%|u;qN+M<5w^vHF%|_FflKKl-B*UT? z&{o=k2_?=xvD&MBRL*mLdlldo%`Lq+^Ajo=dgVN+)vdIi(`pz}6OwVJ){9g71;!%0 z-)Pf-`NyNlu?rvzkHVCA@oYJlXPf3~E)!gyl&|O{tPn(uYt$~J0 zdk)o1(^YQzja3XGP`LBe*MNSn0cW45eJyQRIqc90keIxA`|+>c!K)Lr6!QvCc6#*-X-FN!u42B*d@ zR7maRc%OVc1bG=D&kEo)PLtF3UYtf5{`oMn|(=}`pjBFfw z4Wt5%Y_Q;sGtq=W%Nrq}Sl&Q+r@ZpUBfC&q=+n5W5vzR>YQ|`GIhk=r76673knds` z)ps|XisKZwq{_KN>!2`>A3Br2^$iZfzs;K_ACA?&gy=O00=$ST&KJQsf1u*(I}!2v z^MNdv;$(FW6;7S+*AOQkp)MwMUHf-^zlBxlG|7+9v>t$TnwwE#>mH-K!QT=zq;HW1 z(U1^+3317u)=fTigkjw&JlILEyA@VXl8E%zK)%r;l83FEeCP;&;y#KaY{{D}sZ?tu zvZswi#&jBlNKW)Jrx&zEB6rwGtbTC@cjT5i6LD&<082O7522yUM~FW3Wi<8w$KIE~$yHT(SKh07wRLs+ zrMjznNm5NhH$_!1Ni{+zkaPlsRYY97J7U;G5~9Vt4lb0{L>+ZT2@(hjEyNJ_6-UQ$ z7x!fp5ylM_1k`aC=X2CS1-}3PocmtA>aK3k@%w(?_xnwL>3a8`d+v7bIp^-@*2$kZ ze{V;w0mFT%!3Ph9`QWq=AI!`z>z?_5%K+2;ne6#DqU|vpO68UDPrY^<g;KXh>O`IQ=Ac<*T0p zXD6nxC~&0FB&UOf-ZOs18>$W7(0fqji4aaOmpiykE~EP6`fl&cHclXVO#JXgD$wg} z1WI#*UQPshCW7Tww-fwHNv{496yrL-q0_Tbd3vaC>N~_!y$wu)$49E4#5Ws@Zg>Uw z!IWzo%f1<9NARVH;>G|$DE?OBkE=OlXiQOcW#V?8gDbw6;5*}JHKfuAdEbltkXz@4 z+!Tadj}Y%UsE~gfPV~AIf<#e@h-@t^PcPzD@K-)9lxs{2bT$f9KE4Sq#Su6**n?8W zJSmL8aU?Y3mt^K$;AGT(BP`lrksYf?5@i%sjx`Q+@-goKUVS1ml@*9AugzgA0~7YX zfoyvnX~3#~TL9x(;N@jr+*#ghHkOQ)b)r;$g3J1u`g!EvY-0S?s3Pt`Brq@GuzoDh zcg3-3k(gS~1Kf1LYCVVOu!RIe?D-354GGBbs51o%L}ti+7?z3RmDesDQa`Jr^RCz^<>Gs(jUdQyouBKM(6e<2-B6nL}l9>V&D*ppHC9%rwFgP4V>q+U?1+wJwK=D*0p!RO{q|FsPQp z!9_fHMXIS|Dw`wKa(TS!;!~}Y9;I4W0y{EY+B`{d!Yu2u!`LccQJ(S%n8m~6rq56U z<`IjJk>?9(p&(+yyCwqjDQ>?1(Kzl>$qo8#+ozZT!Va*xF5P}8*xu=?+!Ad2xSNjy zt#LEi@EKRb91%AIkkv2IG6Ll*K*Eqjj5$^EbqF(NF2M-c_TB+@S53n4ffKn6y5uX= zCAdzI^xj{cq`XeOQ%rPoCdX|YbvS{VydCyfrjEeW8OI~pJVDw4dtjt zIEyOk7m{Ki{EjC|L4v+MKS=a~1bq-eu!`fW2BRriq{TJ(>rhr`aI*v?D>SH?Xw*h| z`;ah~%FAbl${RBUK8Gr7Q*(e6R|3%21l2$cDXavfLnRd@*5<~I62r!Gpsc_f!Fnh! z69xeeM?gl6C9y3UNNIuRj-!3+ra`E9^r%2)fb3?BzHEak9CBkdCXZ(ta81zX z!-H-j4NQRIMv3_sZ8Mdx`M0s$tg*6D zg{t;%kd2sxEuqJNB4q0}Wa}Kqb#%xh$<_r`MY83w<+Z}?B-zw4mCciEc?1Mx>!L@= zmP_(MbVIhNxK)vLVb}SYJ_$SVDvPhk5=ugX;zo_3N1|8sSbUxuL;45`)R=k4#m!aT z-*;M^x`co+PGHQq$&!Hkeu!vL)Ze8dL75G&!Hg2y%;-rUt^KVa9wpOx(-p$PT}Dlsqy!rRl`xf zvs9GvmkG9vj3o2cBO{h$eJIh`;sv4lmx7eB^&b>G<}F$bMu-kw==3(KI{rAS`X^NN zHI1rDltuG6lZ}2Jv+!#{{Ku>X@(6075f;rss|_;w#zlU__TiMpS-oQjq~P*~*yy4I zH-sKq4xKOS>fi~&oWdWF9dxf^cB&&k)`Xffs2!3fmr5i}I_9TIm{WLA(^O2PNymaT z3G_L(zRj?&%+^m4PmQ14dOYeQE|@SAvkvd>@Vl)b@~I}W_S>oYY4oSq%NP1F#s6~< zqg#|lCWv@C5R(`#MQe0*PjcXLFqu0r`x}hZDk-}D11_X-fx95rGZ+~41N5fQ^e0iwx}l5 zhO92n{sM`fr|ZqLzY;f$C;{>ye=puK)Z@Js`N1G*NAW8VVYM(M%P;wT{Se=@e%j(W z%SNr9h~$emV-kKik&EZ%4tMW6lDZy`V&vk7(ZwVHISN`p-tq~blRJ!ob(3G3jz+Mk zcZRp--DF|;4jI$K_(Kkl5~-5hhe8b^u>UuZupPY|ZC(JoO$oe|-WI|rUjf~Xy+vuu z`dK6b?x2@S=o4M~?F|T+R%0?(zl(u0u~{Gj1j~ zdQ)@=+$?Rvr7}06?c_HdVKD$@FseEiv)kURQRC4KoE)0?+*5Vq65l{L6Emhh!eDL~ z`W*u`ioqTuI9em?Ye_?4+*TRa$>b-Ang_^2UB>e zoJ2$AB;91LNyT7%-sD%6lWM4(l&^B|7%x;#SfS+IRFlf#d;m|>DQk;TD!&jTf2{JU z%6TR!5XaE|S!fOMwEOxd4LdejsFWbL<;<-~o6OIxgSqA04$Y1liIWA+C32&0Y%~&e z3#>3VHntq*^i#VGXLBVbG0zL5KQ~ zu^cn`YbKDP5`g8J2F9X(f-;0g%%XoBQwYLk?eJ3QiLZ&C(3NdY>G9Gr9)--cMTggz za-K?J%o}r7_ki-l?TS(TH55#yJo;Gpd;S1@o=MhrgCnlq*@h)q8NXZ#Z?eYU?x{X! z*zPVb>z&-rSrp7t#}XU(ET9|HsZ(4R&f@NJ|3tRGa2Bil3|xlg1K~RKvc>_6H44FE zo;uRL1BZVVf~8aGrFa}%SNG&Nc(xs{Kei47Ofah@15<#uTC#byuA7$>@@=v1jdRUdJlQt07I+IPp*dPDhl3TYoS_J&k2<34#G%Q9&d@5*EjyPt6bdGn5{lE#^8!OrC8*obvN@gx z9mtP1tVjJ43KQp`8f)h>T?^OFP4~b&drY%57grMQf&C~}=)k&0^7|yU$CbQa7Fc@rfNd4gz3?10n@r6IeRg7)af zCd$nne@rW3n^a5ZN1t=zhf&mX{i22l;8Q?^kn3Zx>=(IH%HM@7hx_gRbFf4=((TP4 zwv7?!J;)?9=@sjzAl4AEJFJ;1gD=BRoe;Zl&AN*<2d9O@kZfP9Pj+Vsn~@rOys%-)CX%S(05D> z%SUO??e$Xu8w%9q^gINl#-Ge`X+WVmbXw1?fV z=DMsl3EeF@V5!2-p`SkgC zy8U=`G{rlG@q|MCkS^E}#7Y_BG_{h1n1VdLkM!#Z=e8xt?OX(ch7^0DAstP*!P1_| zt$@Y1wD%lDXv(V4q4|uzw}IJD%uffH<~+cvl}5{(b}aOp5?+shRQd1xN8k_h{)Y4RhBH|R5Vi$QBdlz(mo|U~Y8qHY zm`0Ws7vT){w?u?>MrA}e%Q(X9BEmnJpF^_<{}{D3IV>W=k_$z+DHj^Z3*sS1Q|yok zOFW8jQ@qQ=@mh+o#G?o|#oL5<-dX)VHG{18`dMqI)#w4a$5m%PrUB^S&;!zs?v3_G z(Yay#xa_d^dL-)Ov`1e{;J_Iy#M7Dz@Nuw7kZZr6t5L@yXKc?mE-c}E34DPzPC+ET z>j=L_M)vjrAd)6>k}993UkwfH##2Ih?ZR}Bym;{_B4Vr8pMmsxo7Mo(uqmvPn$`hE z8`fqTlA6e4GY!>)&_)y8cwu@`NlnOzOwRGeB7a1)|69;^qwgD0d6te&rsjJ%ESfnQ zvW^Ew^D{?cyk2}G7N?!+y?`kl`Xk_i9Ybf~yw(;IpZYwcQ5Q=ppNki72~soXxyU$` z5BW)pviFNct-e@V#X~_t8dtZmsGdBE;$rdgxm@wh^P*z!=qwzi^J~LCH)L>osg&Ll zq+|})v43vV2J~jqnILIOTZl=QO8T8a(%|e2mh~x_e$r4B*zJWgdqBFb%SdVSQniPx$o~W;qpn=qE~Mc^rJmM9D0M1BFdYqF@uhYD=*R zQy`o8B@qTW6>RI5g#7V1*p}&#Jq*JNR|M4)uJB8<6jv}6a)n(8ZXOT2 z=CHvg3a7!TqHR9xC%u=fb~ah<1d}xTmZe!uwIa&+Zj`aXXY8o#x#)q)zl3>B&&)zo zM=Tj2)mH$`>XMyae7HGl6>Nvv zY40R-7iR33llclz8EzNf6Ht$Hlb_m}1bPX19j16Ig5}KYDJa)B&>ut#Clx=51&Btj zQSXkQ;S?qx`$|Q<_y5$m(@}5jX1Mw8N*j*ebJ4(wCuZ(MBo)*XyY`z zNKK~E=(?8G2~|Je(!|YCJdkc8zb(HR_2rup&b{D;L}Kjr2t8$MX}bZ4jLr>oFFirhb zBIN3)hwym(V*%c2K(O}>VmQ=+$MN=caBzAeBiY=J@2j5_a-XbjJWJA7pHTN|y0^mJ zNmC|LUU}%V&3O3QCy(>CkFSDaY{xNQ{HK|&A|f8PYRoEtxe8;J0St^zJZ3!~#v%l; z^U*}WV^IQFzs6;$6jtR0Weo2^5Z+KugUtz2;uut3cb;qmUoHsYwdYA5Q62|HBhKzT zQa|7>mseK($9l8Tcx!kp(Hia~Tf_OV8=Dq8EX#|ZLC(9g9bwRC1q9hwYRtLI<%QP6 zSR;?FuY|yJfV55RhUwnoD5P{Jjy)Lfhw0U4Ps=zY5+pRIZ@J>Qb8KEpaU6=+4THcY zrI_zEDe)E5`6&_RF2_> zjLxQOq{F@;t#_{6-w2z-VePcgZQo(3c@FxGN4Ygl<(s~Up>Uz3I0pp@^E|7iBBTeEaINB)39vw9k&aqbfF@tiRI|i zed9%>&*o3i?1r(JZclvgPmey@ZuDY0^2rsE$hW2cBY`pMn7ev-878)r$j&NFp&ME5 ztkOQZuYio1b3yZMovX(fJXeoeJ-2F9;Z@pF=c#V-(3m=H_lxJ1@Iaf1o0ilwYVVwO z($yt)((%|(Hly^o7e(P@`(SLK39wR50Pl8lKE^6wbRtRsfcS?ZgktGgM?rS zy5eqd`+&`2<5EjrvD4WxV0R%bGacjwY#f&LtLygST=8yqBMLq}xzp|1?QTG|=|nM6 zyox*K9^*b?=1&-x9*%B=#U5TxD7anOez$;Ppj=|s9S$0u?nhq8TnxX%L9^6HVBU3V9&8wqG0KR# z1w<|dk=Mf>V>4uA0CAf^qwY~tx%CP6Xty|(TX#yhMdoU+#5gLKJE)xxwUXOAm&@g5 z?t%~=)^24!bo{Oiw6pY9evmut4#7r;JL-<$(<*W+3L3b#-Y5Yn|JKT}%X1&q0$z3<) zZg$sC&D;m3%Z}4M*5QtW*yxv|^%IbKxe)jfT$-M2w8WGkxJboBLbn>NZ)!xMAHijb zWZHg85WvxrSoT==Sd-woq;cRC&SL=w1}KUQv&Xr|`I$C2_P7Nc3%qe)9y?Xvj3Pil zBxjQYbC(?GFgXANIiPeV2Pt8Lt2Ku(u#v+Aa%iTxw8R|p9GaR#-A1O|@x!b^b~AjV zo8|QoWS89pl;O=U!dZmzSEp(5pdsPiM!>s$`R*~|-6PT+&Hs;d{}s{=vz1N4ipA6x z0vbTaPqOAocfMJYT19S!VPGoV6S?dbNcV)hrCGYSfFrg5xVUs9QVZ#xS0<6}t-f@h zsM5Wa(tTn`y5U|*x=(B=-AH9A>E61CbW37OO81HXP3e}Lmz3_Ue_QFs$;Sq@u)AA{ZBw7$ z5~E45Ps(LahG3uMp4=?hCxaPI25@n~?siXVA=vYB6v5u+3-&20*xM-Br-TF>?xh6# zl$L^xRF)F#ZHoxDB(|hrpYq=nY{_{^!QS?_73}Ugcbf?IDMqkSgX}4wun}xzm)!;w z6>Rj_k5{gH{ztC=3c2o?C)YhK%u|E_)i}`c(I{X1P8Myl@(T zi_3M7duj{0o|mJ@_36G`pP_PnI_3I|kX*yPlw6Eh*P${5R!V za$ZudPygG>b=~f2k!xg^Jsl{f!`=w*Mpw-&Y;;#|{_%rY&DsFq z228bAZoVDf(#v#3lk>jN0;hOod9wsNknzZ?5|PMvFww&OZ>z@b1lbPb#SP>AEq0SC zR^BXs$*w>acEY)e;VzHq3I>*4xIr)kI5!ApzQkprjxu&TxEYb{h?@1+E;wZQHHS4o ztQPc?VM|5lCNZwE?HuKWY2O+yt}5T}=7+5u^5&G0DDBZXEYoyUzk(d_`7%BmVZtb4 z!9K*KT;!{t0aT>jTZX}QarZXesWDXRMe0AWtQt2eaA-*OD{9l5~x&3lYR^ z$BU&dtX$$<;q?iAatHGze$Dw9yy^HftHxc8p@fB!eI6xa!C3;_U6wEG?4gvS%NG{5 zZ~S$*7j4ShH#ZDB-ct0wrlOZkI&R-w^>!?tyPZ+DFQm7#ZnrEFxP1pU;8}4q@i$~c zB(5!T@i_#+a%qjzL4;!cFmTh@zC4P!a{Sj=vuy;pF#ioxAATHo6?FwoegE@(R9Ky^ z9goy`?@(7B@s*`UH!I7{3WWL2K3r9j5PrEvIhS&VuzdMz#NK!|Rsx*iD_Ws76@}Sx z9bf^F^ZW%snR$n6!st3#<~G>O3|ep?TR7|%u)z8oq<{@svdKYgSFUtd*-!u-)qevL z8N*&5yXRKyG~sD=1_+Q+yQN0E9{V(I4V=Q1?{*=SVW2O*(e2x(BI%7r9jj zUX&d><-w5`S~c$64OcZ(S##`sT;h`rJs5I$5`wXFcQ!w6U;WAaM(gK@S4mlait&*0 z^{2u^Lr_gMQb~fj$$L;LR03CMM7Hu{Po~X?kbjHshc$VvdlIj|10miscBI?UHy>Ik zjNvAl+p$Ulfau`CTd6SCFO!qhI?CyD^Bc&2bx-yh<^CwtO<)`Y7U5SL3!K=}NRRJ_ z5&%TaZl0@*qgFSg`E>aOdBaO?l16z(-L!9Yb2Xe{i;cM7NUNLC?lBmznuJLo)E>W@ zAgpwLzFb0jSSsfh1O;g!>l%%K^KyoY!*{|CR>kdDD$)VGbg&$%c2elnHhv*_Ud%Jv zaXpupYYS@pTrG}N1_L}=T3Wm~2Vgn0!%dlnF=@h@yc<85K-0lkkyKF)l$(me#^nPb zXpl{Q3fm8q#URT)4H90skc2~LKaLW)>Eu+X&ROhEJV-HXDqF@_PM_Znd;gjYq`pnL zIATcDPGEXQ<-g${*q0dnf8}EO|6M)gi#6kCngU*1^ z&=J$Jc*dbliW*-I*4RWOyI@;>%{~8ta@>3V;Qz@iuBOEJcIa13ob*QwA^f)++=(Q; zec+5fx6jQ@oc|CX$!_l6{>Hs$4$JSQ$X1#&!@p~>v}L0|xjr6=V2|C{qIV*@0msud z*mw>GE4USDwtdcmM#2Vp%pY&SIEIcl;&{s=(Q2@Pi|(i+4ROUW*obkk0o0^Ci;eeE z#=i(LG#ZM}+{>wxJzVY9ehtQ~VLcVsy{TIHm97isX@5yZb`IhS4K1MB2PUy&$O1e1 zW=q|)?1H#t9uwO{1@rJe?m<{DCcCI5U7vZ353k+$%wy=nQ5z2Dgfq>Q<-*fF!=1>&C`Uh24w~4L4Q-qh7E>TS@J-|5K#>wn!cONXwpL)udD6#pSS}(Iy~T8&~4QzUL0m z9QVrHm2w2h-!3Mz!rr#sz9=1_e zAPgMiiRX9VfYld-Jm+0f*gt|1Izw@+if7e0Kn;2A#DSHgsI;9ht+bNOLxgy4r5u5d z=k}+NY6>ST_n((?kYL*T63@wjEU7Ev-TU>}w87~yUSReDacFIT*xQWQ7a;0HVz?7$ z7dX~JtiKOpnMp>@gypB2LUX)-7>(c%QluTU?iO07?AkMt%#dr>o`J8E>(;AT<#xOF zbOWG8X(zXT^#u;*EaqKDB zWhFc=acu7D=cjg*ay-RHH~}dWcdBC<_HlQoLfA}K};o)NHvm4OW-W7sdfNDLj0mc&t?|LGz z<>~|vik^=!elOq`kDHF_SG-Glejm8@F z)+(?YmgI4TJ#C9*X({t`Uw|ho1U3zmQxLjI3}zHNaR8@oq~vpn19;XhJ~|N3l#jp( z)=GDKROV;Hau&RtNy2b^1}C_qu?+r_>%JGHk;KT>q~S&nI=S`7!R7$YNkq%bl4%YR z9!G)3ck%R8wDf+zvV8c5E$Tn~qgmwU5Ki!Pbn*cBW9C~B@X{K~E~a=k8G!E)fWv|N zfK3xz?#caW%kG)n-^MfV8#Qs-KV_c|lQO_9E(4U9;y@haLJ;DuR9Bni zM_9(P3n>L=d5Ruqbg9@dPl$G<@wLk_I|`x9wPnifcq1yg z|E6SoGJ|hv_o1h43HWZ zI#A_O93SVrFpo$dq3x*AgVr>unHX#%T-=B}OWU2S*0p0-z*cal3jIv`6djX!bLhHe zx`1}Yd;L*b4F@Wt^=rVhxVrHH1l3V0qyhQMJ2mQ)c2yrYniQ~WUUkl2IX zFaYALz8OiB$V;}!fYduziCKk?N?h*Hlw;m^lab2+D1HUFVrwAfR9^yj_xk0yswl3h z>Wcxus0U?dT36v~(&|Oj(JpU2vTRPI{4^_9S!MO}W;_r!EJPSH2sr5ogoVYx>26c3 zfnjG*??h{XdV`|%21R4JXeZp1YZc4Y?M*Dmb{xdVBdL{sQ?zdH?1eZVZQ!tU-QKwi zabBl5tRm`&8thzvQ@-3(G15VVC5VJ1mL^gpLNfm)L|PpXX>~v(6q&O2MXalU^IYM) ztkao|cV-ivS=cFe%*&C9v(G+P1d%Pwf9mZf|{&p@a=AcV)F)eljw7BtI( zX4%K4S=OgnwwY$?4bd#SIL(rkS0~%>q*OvQlh7;Cx`~9u&_&<)>qrcHMylXAZumKP z8*PHQH+AFe%kd+#BE2t*nYo2crnpla2HRjIM37#!5GftsfXfw_whO{PEJVPFU4s5` zVGu^}67=`YL7zr)JoYbPuV@j5RU8R>Ws5K!%ka`%afl`NUICVy$-{ZY#a8tpbTW4J zIQXpUAH|K=C3qikS%lBw@n7*rV2Hi!TfEOBYOxatd)a+?cLd%Vy>|y*_GjJ?124Nm z?^l6$mfk-E-Ye-{R`gS5kLRTWFPp*Z3cRF@R|vc$hIe$}W&ORez{}S0HU(a`g?DP; zCH=i~0`IHo-5z*fL+^6}?^W=YE)Ws1L?aCpw}33U;#U01tmVgathS2(?gKcw!1Tqd zG7;Z%bKt>DXJ)0+Iu^M|D2-;u?SroXh%pI&t!QyIzV(}syH&$weavdtU__$+o8ZqK zuxf9R@5~`$zJcXz!qD&;>=>I+_H$1{eloVwRQDl&t9~PMF@OsRm;(U%86$ZHIWt|h z933avnQ5cP%yn6^%H1XH+u!7;Ed|B}%@N1x89A%yUS@k@d;C%_#9x}#Zw2g^xLaSLe zK6gBBLeYXqwe{H7;KI2hAXlMV9Xk8 z9Ik^+Rja0Tzy(=1ovXB?AB*F9N4g9nr8s?X&@9dC{!B7n`LMr?Z`Yv9q7%==qQv+! zKt!wdx-f;1F8D4)zXRb=pME!*`kSaqKb)E1T|157)6Ycr=|?#N4&LcS9zO0|HKp`x z8-J(J&qPwPpnvfF0sVYH6aCs+(eE5TGtln_n9k*z(WTp6=TeN0z$;og&@i(GIY%lT z7%{~!1tBx#6ddK4fDg^5<~!Xs46oW;WGU1<9n>tRy}Ka~Do~9({S=~!%)?j^6+Xsj zBI5s%kN4nDN6>*jt5Ip~!4+~SAM$n-7xbubqI1<-z`eZtEf_GCVlXtkdILhSh(zYX zsiiSAbDci`ndoHms*RuW6-K(DKEv6uJ((SO0NEX0m>n@Ryn3T%$F`W4or&JaF70)d zeA3vtI_1JvF0Zpq@4*eBNVZ*+NRM|8P~G zcap-%oA$<2!eups-{ZXssfar2%-s9z>~fR#olJZAUy}Cn$4J|x!fS?hJM=~RfSSUZQvJC0gk&f1#`XHh8hi@^*e=^>^^o9<9GqzOnkd zl&~4RN3Iko`6(j`= zZ&?%rEhG)NfNHWt3NL;Jxt7)x+V;K`FgzYw7?QQn`aSR}VU<>DOIF6#3sEe4_Tx;F z>yxsF0l+5$z}K0SJ$qXK;C=-Fp9%onr2yd50f2iG0DLw8a7O}w&jkSPLjdsk0KnY` z0KO0axaR=C7Xtuy8UXlm0JwWT;JXU=*8t;t3V^ydmHWN|K1smC9KYYIfX@){2mwD( zz*h+PGXeL(h1mwo%#o&!J$pMpllygLNTFD#xKHUEjo?9T`KL79m8*UVO*Dwk{|>~v ztBNCjDWz^Gh$QxdST;Y%s{Rlwtydk^w@lGhRV$1m<$coM9M`9a>g4mFL5L+`8#3uEF*sh@ERE4`Ta=g2)7Z5S!HxvTAHvySi0sOdjz=P-8NRABhbf3L+ao==m|0aTf89o??n``#dgYhB@xTM?4mOKmPHy?1gi6}f10xT#xa<>!95CihaOi(*F@Rfyt418(O+?>KWO0`s2&|5mN6jG>CUDhB=<#_-g{$c>%c)5z)Eq47-AmGz zyr5h^ffwcaDL=9L&opo?8XW(Avt`=2?wgoY`wZCX+#Q5&FWu#jWSC49bD3ah!vvcE zOj-asPQg2T@^6)Y+-8$s6DB3gPprxIx0#wSJp=7EP#m{mq6WHBnARMi;gEyvqj{ZY z^75F6=sv3m`}B@XBD}2tin_CEze1GaXMOeOZAXYz`!#@9?-Z~%1BlusJ_M}!V&c>0 zzDFP2vK=%QLeVpyjF*JSco|SpKI-Tf;45PwOpIdK(Vs*aEf|}VfzK~c40z0zfBl#0 zHT(W`mfX?`$oZQ(OO0_szn0&L#tLnd4lW+cR=#cnA2jQbj9dA336nxb!V~Z#D&Rkd zPi)n_8RdF_d#A1FH~S#agnlWNmzqkgN}EzAp8~xhNSaRV32YRmgk5O zKTuo_3Md9AD%vR-!;{RU@=a%c8(;>4XQ4Rv*gIRDwZDL9C$&?|0jY%rTSg7_xFsb z{Bt?##(ynS`9pKG|7!L=6nJG+`A7AFXO#K=6a)(|{<+!vFua&3wJQ4~&6tnE8}M+) zGAXwexmJrEv1X6L>dlxVI|wCfw%Fu5T74e_2O+GazR#<#tUm6CAPj5MOyv#@8&==l z>Kjqt57jrSzF(=2PXi#{AL#Rzt;4VOdmj(Vw_Gu}|ABlu)W`h}_+0gIGX%aB>g!`F z)@)XN+>wE=Q+?c!fv-z_+>e1TuRd9Q1 z>GL-5m+v0%9S-UjY?rVZarQyzjl(6;*v$D95=UvSkP8(ev{lF@3K9A$1Wy++mb8sR z@T4Lk(mo0~TOra83c#F4g82%ahfwj@VW&}hxpW%(n#kdSUhkvN20(g1U3dLL(EY6kq0s$}@e`{b!wXW zSK@sze2aK@%#o?CRU^EJH_jYUaH?OHMfj>N|LGnXUMz9;l4*2POuXb8-7*s|*~TNA z6va!v(VaW-l5uqBPQ2tC-MJGlS;xcLvWc6cS2pq_l&qv1dEzB6=|-M-$xOOqC|+`t zNAA&LkexiTk9x^Zp(>DVyjKLFlv9s#smNpokAkUQa)RzuN=9TS5lsyxFL{(r^^!?E z3a5I>As(euy<`s&PxX>Fl|Jr+q;4*>_e6zCC6Z!yZ3?Z|3t zJaitYMb|X*Y_hPd#odqc{)qc$;oGP64ambP@_i93B^(Ejs$bS-b{s#rhEv{TI|9wv zju{MOaSg_FQrskCA~=ZW#%AuuYvOvv&w(mW$-ckRrt(q6tNs*urOW5UrS^ON#Jb}C zL#>7vZ)|*Df-gRGe2RF$4)-uEH!h+e)D;RfL2zc{QY1MTSGv4S+b0_NPt^CvtgjSL zE{CLMIYv&$dvWNm$C>V(p0wk^L{^r}92qbsaOyTx+H7nbGgLf_7A~@7%G@Z`9%;9@ zoor6hls+^xMRPU=t_Y^^3nbYyJBxZxPiA0)IY6JR3A_Ga4_p)WBc`<2Vvw}z*|ABDwkNUVh+C2O_9%vZ+b=bjx@Pq}BO#uX# z!r{*At2y<}aPtKMez7#5LB&_0$mGRXWQ)nS&ny|rI1jp2N6FNvcR+|Rq0pUtNyjML zUhkU>(uF>zHI20VG3@+0Oa$fg2en!>Hn4oC5luIsm&?vs-I>69XdYSRX?3+^NiUgru>EE{E3xJc|zTz zRb#SOT_|(L(42~C8|X?i)4~-7W?-PJz3)kz*T_K3a|`ms0S?GEQ!GZIC$J36bi|Ea zXvP+I8^IwS-;pqmp!ytUfN(+epNQBYLhh=cX#hd>&j3L6>Js(eiDaAV&sYoV z&%_tjpJixO|HhS)CjkRPiL>$XXHaL+O}>goo?_a?yC1aE^*3+XdUjP$X3E%_S*Gs- z90FAb2fWOpVe@A^nm!+q!WzHp9fgRq%vc|=;tnAuX4{&RQv~*k(xVMx)-~;T=L4yb zicf3Dc`1CMH6ipooS2=1l!=p=ytevt#FtG1O+=5Cr7CwjlDq=VY>iYYq_$V)9y^z# znsd1dExJr{3DL*&WSZ)^mD@GPMzu9>b50HSzo^smV@ZhD%;n&M5*;s~!?QZ=BHn_; zf%kpPsLuMK71<~V#7J2JV*;?E4IIwkh-+V~Ius2U`6*=py1O`o1YvRjPlY>0PCjvr zvpl5u@%V1&<=xwzVg=NT?Ow1naI;V>TKT&2^Ba*av{fiwt<01r1AFbbbX#*1yWQw? zCMk*)*uXIvx+$P5N}mb z|5|UfvNyDu`y%90B2UI-J>%yrdn`YhD|!g%O39iCwBJPR(%su}xRomu%*2U03utlI z&9Xvaum3)-Fez3$(BjkWF`?dcyEA3d^B1U0l-T+^qzoasyBzG?BzI3iu8YYX8Ebx6 zYq{(8#QV%kK}3+J^~x{eCld<~V{J+)Jp4ioFY)gEKiSbLnGczK<+i_;zxF;yiu-5#GW zrj0c0^*X>N|hyqYaq8^JyTFtZ#=T!S6d;g)K;4#(bPR%KD~TX(hvD zKw-MV&#HwCpXvn566`}Ubk>J-INI2T*s>P?baLQ+DJ_Pcl8SjL>kxVZJ-Dt?Re9fn zxno#VPNJwVHHZpJ)g&qeKvV)8iVAV<{Vn>bSGATEDd}VMQ+M68gse!q|5s&&MQ$xC zcij}0m5X(aJU^DeLE@_^Ecjl_?=ynVKDrN^6U*w)AZbB8e(f93ok*W{4!$zK@jJ5H z>dyoMBVUDNtZ=t4A&{qnCgM2SXX83KVn`2m=^^RiqLq6z{b=NANT2__v%xo}zq(u) zkddyMLdjb2I?H(V&d2Jp%)0(0kW1h7f)3GpsiZ$Y4c#4?f2oOcBusWAztk~_RN9t} z6O3wPWWymzy!<>jzW9&?$4{6WOge>zCYK&6SHk}6yrGF7hlle0ADMMJGeXKta&`*&Ru6ID`b{8+Ywf$<$$#ISC_-VH0dW}dcLC!4 zS9HGj)cb$47-C_}Px0tyz4kM|E53U%#4~+FtM)>aCwD-0OSD+r@e-GY<(CNS4uuVd zOZ?nM`Y&1{eTFTTKEoDEKSab=`8kDPycp+Qj{vK7Idh+r#z7$GeNc2Sg^;Etk z0^C#i=VYUAX`Q!KdjV1mFC7YFV$2S`p=}=s+hC%Rn#2HaCn9fy+==e#*>?v|#gV$Y zl5NWsfIRGKJd9GB)B4dmnG4I>!UJ+6fiWCg&dxb=Q3sFp6kmhf^+rMutjSZ4y&jM{ zYj1%w@qca4hh8=F*|+SRSo`faUA8Ip?W4D>^#vgiowWhSzm&0AQ}#FU$nznOzlJ>8 zdJu0K0du-c@LV9mcF0?>1~|LD8H}^;0)AFA80V-3tcl3_0u#wJB@%$KDjH6u0gp8$ zBTExZCJVxZ3e$kco6>2(6If%RJ|4({NW0e_d;9TEy3}{q{#DScHQ}NZKCYA^K-N;MZbC*W0%VpV zK$cRJw6Df1!I1~Sdp-MjX(Oedw4Iy7mPsVqMhCA3;DrB+!DzIs$!`wEfRc&n(czwb zysMDyz=gna7UtbtKxJrf*fm!Gdn!ML9m=}I!d1ap$6aB&E9OEMMdI#?=mH4LKmv|z zfKSUqE8$b8OmPk~1`*^CJ`>b}iGw2TuE6~ziZUR@Ik2v|n7E>6;tH%cEB35N30KZp zJe4r+4v0?#E9=A!Qao-uKy>G)0LO(3qTqd@gPK%NBZuBl4t1|xC%h9vy44qq$u(m;b$@?_?e%- zn4jZZG0K99i3UIG1)zlRbKLNAvV5iECSgg^@G~tFn3~4EH|2o=jOoWP|6sq4ua1y=B}(TKzhKS2x;>n z4tze3E>fc28y724pC2LuxoC;-3cDKK0j18J0KrJua0i4cue`2o@=hiSCh4_UfI zFrU7#L<$U-$Us;k{{>PvJ#jo`z?hN?WS}#UfoKFn_sD;s>2uh=4esN$#biDKl`{f; z4jVl%2fy;c*7cG5jiFyAKdCA208&f$mjKQFZSn zZ{+uq5xV!X(M`Yl6-b)gL7F+n%uyRttQ3rN08_`a??Sk^f{|lriWNq@GeGpmnu{Pl z?i3&LQ=F}%IE$pVD7D@4}0P*&(;$Pd)Vu&>#(WCt(8mqkDr=Cj z-BXw7Vt;hqu4dF=_ObqbWmvqG6xaH#Fb_4D$a8OHdad6C^H(23xvhVX@N_it8Pxr^ zkX1XRRiX`dCOMSA%d-jeZXNj9$ED~@G$|uA%rhwab^gFjty1R?+|&kj{=m(lW}QE9 zQzgm$M!2bu@qd-J$wSvOZk#`af5n;e>O;&c{(9vmDl3qtBKuR-Ht>vUZIBKJkt%d&yKZ zAu#h6j2Ey@hlwj~0F7O%qX@-;g$220cG5b zZ5dEnEa2$H0tOZf7+fr1bg=-KCs?HJFeJ7}$WaUdpU}1eEDc3|2Y&HRKi24Uz583l zLSKseblc*y*Md5t&b{k^Brd1QaPK|7U#adW2_>kprXedOnrh|!@%alJG@QotSK!Q& z*sr6fogQ2@dks9W^(fyVT=k~EI>f+SsifY{M`(x3R@KLwu3UexBd4HVzo#7Nj@<0u zBc?oym`XdNvvrv}<`>wakIF0yFT(yPtE!C3tt zkq(S4Uc*nc{%U@TACp{3&uHZP=p+Atd~>_fxwb-wEXdRFtW{%_gg#>~?qsgeA%&VUITJ^!N8ac^6iBzRgDZ9D=VvS3U;#WiQ@yG2lJN z`EaNI!pdd4#?szXL!e6l8gaGvPwa|M?ra<1jZUA=Y>c@^6RU9;3xDHyuL7g#$5+<0 z_u3#6zqlyU`Omv>-3q7w;^$m+;m8x!KQdW>Nqaf8k{#Pbpu3 z!_|`E%o?<8{k5PIhHpMBOBgw%yfJ_+BkXFzXoywgb`y3LVJiaIFk$2wt#o3S8=EM| z#DbX&gPuY8m6?X|tOnBFg|Sa$V#-1IYSZdXT%B)om5KMuQ`W#UN>BSS7w zWcl8zeh5r59GCMGFgkWU5JhgS>OUhOKVl3x;fRh1Uk4&eI8q{Mcte~Lqf-A7#8!Ai z$|MB4BqT&DY{C~}GqYCMQV1Emgzu^gm0Fa9@P%o!-CCth_So=^CGi{pC9?id6C)UYh>@U zWS^a=28`wLp4S;DBmcpEEC(tW;05CtxPx&F+`(7}?qCe$<8WYOi76FR_va(c|DrAy z8W&C%x)h7(Xsd(xv4tlgdUml7%vrLlpTH;O2;@#e9ND)ks=J$ec*Q>myhq&M5_jL2 z)mic$Wt~Jrz8Y9~as<|azJPG(Yz_~gv)R{M#ji3B%Ej^TcOg&GHrk6xDeE*S0n#y2 zwSZ*mw@Zr58 z=NyyXC0xbv$JvPa5XV*D2CC7~Y(tswiH=TtKl6jyyv#;}mGO@Do!C%Km3KNr14%iK zSv>?v9dvPrz~3pvZc)RHm0L2T6W$x->W4H?7>F)TS|$t&5v+1`QtnLz+3^yEdJ>@k zZ>wL-0kzhLOT&$EVz8;EcKTX};Q;o1tWwK}YVmJy{%Daz{x*rc*&p~@#qZEhnr{WO ziaknWo9Z|fo1T#ouZGg9Pft+=wyD(GXpdSObyRbxUa%u~BE3ISZ>i2UbJxfgWgnQ| zf*|ac{rq&?1b$~?y3Oes+Y@kDU>Aym!19?%%>TJ6bs!saV}2w)kdA?v8%x0QAU@sG z^FsmlW4f_}{xXh&uon4_WXG~{(divKQY~$H523ov*0!V^)E^zoXmVD@5#Pi2PfPQt zm{M#5A67%=1--4u`_q8N`i1vQAEfFJ+|s$k9H3^?SFXkYWD%8T@+tMEWADx&bv#;dnb25bAG1(wO4+!b%BT@w^qU zo`P_rRAqObMIwKeJXxM$j2T6d8P(;N1it{%B;NbrmkUZ6Wr<`n zJJ9%AsS768y4uugm-09+Fhs==RX4Kr|Ik51mP4J5X8}~540Ghho*FeY?iR36eo$_K zF*G0uUU-Mh-ox%qY@=~yKR%9o2|?<*c8iq{jn-@$&1~OIViQ@Gc(G5bYr8r|8BDj8 zkAZM$i=$NRA9FDCt_m`DU{c20O8e-6se?RJOqwU0%9s3OB|7w(;4BF%3Z@i+&8+cG zkVCtj1|`@D1(XoaoS_88?yy=K1A+$W5)(V)!}cB`h?TRfgH4+8e-uh6o>mb$+jzC6 z7@QhEM`Zye5(_DDtm`x=!GQrNaRbJe>?;YA^EF-4ryvN$Qy+&HpsR%jlRuZKy%m)ZAQ#Ur zN;EWsx7tTqsDUU)j?BgMAp1HWRT;*Si58|#CjgGA)3hIK)RIVY<+^fP!rK!B#icHZ z#*vP}1?wD`+%e}NOz!wKvq2-y(v_6Xz*9>cJ8QjUk*FCY%R|`NAQqZJsxON<^I)>{ z(;QXSqMAXnZq*EuWu|5j+D_}Ew!nSxOk&Wh4 z<;^_j#gO7U^z-Qid<+*~Thb3(kFbo3t85xbFKo)w#=2^^%14sU5PBOQ1? z4htTi1nIT2w&L}-gPvBR{tkYU^>^~)M(gjwm%Qgh-eE@~4~q_^nuC>suybxZz1%oY<#!A}0jqRvcxrGV77!K!{ivBl z<*O3Es|6Bbb|H%{x66%hUPonzLI-MY{9=$epl*iL#oCZiH*2U%Elwb{Y}C!F*-ArQ zD*9}v+X?D+J_dC;LC<#DZl_P(oKiO@)Xj#dn+>R&ZK7`OF{#@bP*)1;Qx_YDVd^f# z0>VO|P!}N~>Mle=INoQ?=Gd}O#13&n@g~1eh4QA(vo|x0P3hq>J)VbuvUv5rR z@1WY;rL1DhnAmqS;ps*YHMAc@tuu`wsW2E4p+Z+rRJ3F`j2(aFs+XcyyA25 zhW0uvgJaVMbC_v8Mcw(a6~-K@MvBfImPfvrTJd4jz0M^CGnAWWkCY*>a~Rko#XKsU zDvORjnWgkorMviNrpiDwD4Lh5L<^riWS94^| zGDF_!ww`^|G8uD3Eo#0o41Z2{V~*t*W4TGQM3Thnh%+Zcb#;pNkkvgm>Lm1-4npA3 zQ##V`_EbKQOOM}8m5$+JeD=Mlq#Mi4u^1e2$0u)?p1oCo`8g}!08Y-nPoUj%R(A+` z2pu<)`KMONyuW2KA6O)rZY1;1t&;g*%VhqgWirA-i3u3Pc{C|=ti7N=-jsNJ^yjPv z^yjKs7W9{InEqny8T1$P-;YIq&IS)JLjNBxLH`4nwrT)CTeSeexH+^)8!)MbjUY)a zYz055*6qNg7B++=wXh{LDbp66rY&r~TlD|InnZ5GOk)0;H3^JKmqoUtp8U5a64^Vk zml6gS+!U)dAK&wViM^#>;QlJ=Sk z$<6)K5Ai!|&Cs$$@iP3>KMV-R?L}-;SVarJ93w{~w<2@ciE;G-5{!7iM8w)x@N4!g z3E(4-eACgw3suXY|J0yVo!KaE_awHIh#A*MFx$#cRlj3ixik?6d-NzpGH1c61xj%+ znTIPOu5P%JbXhePH<{C`k4dpGVLD-ES$VV0El)w&Ey}N;H>`Vzi6*Ath{*^w>p_7{ z+g7~Th8(bc5HF_SC^>4k;ttix7W=aZY)_dqZ5eko62MAMG0kY8-Q&S!URqY#;;~Uy z?_{5aWrA2iA=Pgzw5=EQz^YJ9vv0t433uzGmJZg&V`jNJH_wf%Q()h7R0PO)jxn2rX%PdYI7J6685Q+ z+rlceXELNjl^JtMVWd)E(s3&?zztGx)>S8QSb%M&7YeAyGB&JaDH&YAHJFR>7jVBU)g~&zMXp1s{Jc5q(_Xj8DCR(|(bcH2hcJ*IT-91?E=?iyIoJlciDA<2a`H~i4{@cozl$6%LKpkS# z*+1}UEvi&>HZ*nmw1DiaR7eAAu4-#({543$m|J4`7SYUWgTxZW)lK>|)P9aP8bT`& z4K_d)G_&Jv3ZeBkq50aGtGX?;^G2hcwSzB>*bRD(*bVxO$Y~$ti;!|XlC7__y97## z|GYC%6yeiW{oR1~yr87DPm+kZ@35dg1KyPltlOHfTJ>^Z^Vc@;Kh@MUAz}`AH#V?7 zO{`Y59Pr-K!1_!R)*^Yor-A=j;A2Jk+kjw2`6u`YB}BGFU{TcHHqbw(=$X?6eLX(& z(7kPdNyNtf=%7j}W$t>=yB#uDXn(BEtUVab#W9-ORVV2!M^B#Zs*}W)vsyakI_YOQ zg_LxJI@OHVs0>Z_9C50zCSeb8y_ z<@iqz+j)P-ii^%0XuPt4FI%DE|9a!Wa@w>zuP zogA|AJQpX&J5|ns$1%%BeAB3FXUg`j;HeT^=t&Kyt=^uQqu|0#W!t;zwGDVr-oVXU z=MK*CR6hz#yLc>W1o??^{w!;cyle9k1f|O>Y<;-0x(i-4mhZ$XKbL3c#u*J|iAJ)B zr}_dTcicyIa*l5{{|d|dCP-Aj4^=nke(fsm^Q7uO0EALpJOSz8C>b&20h{6`0%G-h z3BW198bgX(BsbPQ8bR62d%K!$?H*v@bp!lfy>r)?GlNSAsVg)e1;ds<0>5!x5gMZ0 zHSz?!x&Z&sunE;*JQ%lYvQ9+j8?W64887}0=>!kB!pen|yttJ`VH>;^<%n}EGXpz9 zPza2gF7pvQx{z2~LXyKew_mmlw%8bGirA`jW4D!$$09Uim|`~yBb&RaB{CSvV+A!7 z)vxh;Ifm%N{Q3x#Ie{{pDqF<~)MoJB3~ub-iqvZ)jkIu`OjDy^mw!8GQj53U8%dP3pGihCxkww+f{khB482}Fk>8hL z*7X3ZY!~kU)lo(I_OTi2_rt~Vu;?xeCsWNVFP}aI>Vx5|@dOCY_XIo$E?g z@%Knr(}_iP2kB@;O=c<;%dN9=CA>dhi8-TI46Vv=4Yi|cJ~8G@b-+E@VVP_k%_Npv z--}^;tcXMFsSZ2VH5PYYFiP4x^Atiqq`c&ZcMt%d38 zbAW6W&M#b{uKq(nmM6f~pDXlNFA|i|>NDhf6t3Ab${PJv&xKFddy0sPwInwO9f@j4 zDpA=1hpIwR@&0%;9#f+_&iV%-qgJGhICxLgweL*XT_bC-$_BtX7*8Rxb4?zPUmItk z1APp&E%?leoDZ}#dAna0GEOERG78u<$&Xy`Qo*-{(6~(K#P4idVTsmIK{X-quCX84 z)jy&jmNRoIs#7N&t>TlVX3E!3M1K6YWPZ>KjoqtN0|843{cW zZtTu94pU(~6~Txpaw)XKS_ zIRUXq)E9>E3LRs|S%pVbJi>X!3&UfHZlnr(hmm+;WGvAO&k6AK;CoCciPd9nybZkw z>A4bN-4f=&#|sxRd|?@(Fglhj;ONKrA5m?;+_;FL(WKhwRgqC@BoQxUw)`8>v{|7r zg~4lV>!Cp`Oh{HhMUte~+azLU%Ny}s4L{BlAfe2b*Wz190`N*WEH_qs3R-UnTZtjM zjPF7iT3{rOk<{4;N2UyxfsinOWO1^=LN7(`i(dn}#Ym!UKA?AORlEpMP7UGJrcef? zmNP$(!mw09lE!NnAV?@iK6#&b>jICrLL^p5qKWanXSGMGNG*hEZ8s8xhsN{Q&)YY*NVk;=6pLQ`fa z$(BDrI><~9;>&uWhYX0CLA}TUBU^4p<@|s}3-oT2gkPXgad=3_yPuSwT*A9>0-mLCt{F=KRobVV1=~2S>U9kAZK@Zx3&(MhKhB;3DIlQgvw?VccsW>xWS00WtMBjYF+^R3-$OjuhuV`-Hav+wyc*ek=EATx5 zJZa!(3;YEEJZ;j)0X-CFT_qbY9JdatZQWF+(9ZS;yt&31KuAx}a$N(L0`2ev0G$&Y$EDmQTjaOz3t9bQ>%`!SP~e znstOh1aTx&#kM4ZdL6GT2r9QZ-m1W-8RyoYsWn#bHLJ(^9B&{%YR;(NDIBFd3^*xc zIJyD$P6|h57q0SSwg@@7=+=gzGq298LEIcrEjw1^a1vH8w{fJ4N8@?Di$U0%@NsbZ zhd5S^@CIUO#CtmOp24-e)D_KhG$P6zO){x5S)HRv2AYt}(HJgsH0(XMn4@V##cwr7 zljNjWE$3*G`lM7Rn4@9ixYZo(qne53mlbyjIpnV1z?!QQJH)9+qFj;6%ao3(V@lVk zq9$PnQ@Xz+XEvsE;-ze~n9p(Y70l;e4a#G9$2sxw%-)zJ%@Y)r5SccIQLGw$x^YH4 zSr={0nHebUA#rNN(DsltHL|n^!=3$@Gs}Dt!oah?FTxi(7GwMv-%`h=LmW`Xaj7E{ zQJh<((h4P$f%zdRV^ZJI)Wj79c}Ao0%9o*FQ29Au#MMMVY%RZ52R6qfU#Yr%mnxxHvDQp=@$Ry!-vcG>eDzb(p7co5 zPWkiM1#Pmw$hmLOCbMQ0%Nlqjz83*A*vv}JVAVNQ?;*YCmJUZ#zLMp7lD`-hin?nd z%!(>{#i}v&Dps3PycjJWEaRj&8Iyde_{8CdVqqr51CfGC&oJ%-&|_CIA8w?ANp1>C z)C6G)*9byeH$3f4c+0~<9rS=VI1hx?kO)v+3-dr{#j@i2NoP&GzXL0iyQXJcpjTJm zXYk%se8_Q%{|ub(BLS`vS&?XD?NN~wl0kaW$oONXhdyq4*W_ZU`e`0LtZ7m|Jqc-| z0&ehD$MsNO@>a(y&^FvGKI$p@WM1)A0Hjt#9?1=&crxzhlNS;!?{&zYk=ivlW#%P7 z9w_1!fmHSH*~l-jEP13QKP6kK4Ii$&;7MP!ST9)yO(@@kR;*Y@Jn+bM{N#(T;m0Z- zz^C>loU17Q16(Dc3(6k>-LXf*P^-F;2NFUwFK4jz^Fa`HP^Je~4cCFAL%+a?iH<5_ zJNI5-PBgrQJqLHJ(TX^wk-CTXPL2NqNd2A> z_}$o0+>I*lG`J|TY*IKUk~}hEZ<6uLx=3bI#NF(>pA>OV@ZCEi?h}0XWsy;wFu@w< zmm=#QinK8mE7B49U2K`*MJsX)U|`;6-nO+;(K?HZWowq+DzcbO-0kz>z|qQwZ2i?h zW$PErSNy?a7{wddu+h4NqRl&ae^UNgwIi5GtzWX5BX_(9a-#`B0SRPk0c3gsWcvch zix)uNxd8I61rW@O=H>q01&~`qklGq4|62JyQho>UTf8L-uIx1xc!oq^P3J5NTR?rA?wVZX6IP8S``_ffdwkFJ|NsAZ zo;Nl&rwy|W!?5#F$c8zeHf)&lc^GDd2(JlADhg9clA=-}6-5zN3Q2mSR4OS_sU#tN z@3;Ho@p`^C)#vy9eZSw&_n)uJ#eI+K zuM&=d`E$4(IVH4PU3$(loc_|fLHE4$$5PNN4K^h%!xG%mhMv(eO88gsL7-68Ka z=%PxH2*8-8A;!%Qd(yi_>i)rhciSU<+?kYp&X+GN`QO=&NZ*^UDR8bV@0YYhzOAT9 zxUY92yUc+X^&dK`f{Xf368@~H7fsL0*>wBW`vd6QEkBW==p*=8Lp!_awnDn;-gLVm zU3gKtbg>DSn=aqC_5NZir}?=Ip?-s6C~YWd^$ad<(F5&onEq;+>hRIQ{qSRBH1nOJ}tb8Nc}TtRV!Aobg`N3 zt5vtZ*J=^h3JO`PX14^FwQ6~budG$)TYSU0u0w9|rOLrvGjH{dWbY-ecllyh=vr$j z2zT<%RLXyvQ1sayNE7JKFV@m*P8(=`y;;yS!jG)b0b22XH>2ihc5#gyuT|))8^xo1 zL?gO=3lW;IhzjTpbt1(+K3**!=Z zGs`aSO+nRkOyAudT)xLqp%5zAS`kroXt`2{s->&8FF+*ii^R}6Bg=)VI6YeQ_9%TD zMW#q+E2ZUI9B){vDIt$Cbf<(@yi-C?^2KDye=(+?p_bl_xpF4gv=`~+3i2;=1`|Rh)6;*o5Nm zV-voAADi&~``Co<-^V6=|6y#h_y7N~*_%>xdvv));$MbA9}51j!=Uf2%3Fp3I!G=0 z%xa8H4-nh&_8izATVf6>FG{{O3ktGxySQ}13=p{dI)|2w@s zx<3U(kLJJFubcckA-w*-%6)nOh4?S~^bv2L&i97ArBCa#2a*Q;_yPr$gB&wOXkRZ? znAN(IH;<7)|B_zCN)^-f?{Er9e@5VscZajvTgAcTOP}7HjX*W&)}B6lD7hjd=p<#R zjL9lGP@athaN|=3sXMaXP?;txU?xtBrWn|XUeOe_u$~uCf%Vx#DDJIxvWq=#9rej? zQi&=%u){O1Z}SEYeKf)@e$VF<{!I56^U6hu00dZR36)AiK=XUxV?6mYyy@UN?@A6eTqB3e--D*H@ zOTOjvj{J-6g$l)iFbG>3&=I~%|nduU) z+^p&SaF1J1viDYeV4tpu@XWRJC(jk+`S&qdKrKXLavc76$K*cmm>fyI7?TJj$K)7t zsWHhhS%oo)1mu`R5FV49CMz%|IW00M#$;RXnA}Xwq0b&gF>W1`75cfm9*_2hyk+jH zID+^8A05F5{Rqk!|#7-1bZue%b@Xk|ND^nKR<$z=Rb~M zpW@$(^M7*$tMdG91jGLyN3idt;GlQRj;F8~Z~T|Xnqi%6W_NTL`iRJz4DSs;2r1JhW znaPAA=qh7!1x;lYC4%k?7M0V;0|O3R?^>^xCUuQDeJSRQjlBQfKIpu zS6G|#DQE?o7qbW1d>YqXEo*hvwLRJVj`IE$7HU-uM5Ha}>WV9YuMQu2>oA=Hq7M95 z&D(d=U*2;r<~q!vAh*^*pFNX&v3puaVU*>wq;E)ayj^_F^|p(r_opC~AT|A+6l?O= zIFa*Rc4GIr8bSE{uVRV2&YeXubk5%3Zv`~VFXts+itk8gy|`G6tEAIrt@u4kt6A|? zmW>CH8_!Y4QcuS}-)9p%NI7!k$f6O&Lnu`AaWYBd$f=`?ityrTF5` zF5(;O#f2_LBBKR9EG)jGc)g3G#@%s8@irI7Od5Ab@qQPlO&xhh@fjB*3n$JjzTrjc z7txcct>{N-)t+I_Y_x_s=PvxQ=FFi#%^E}mc;>Q$Zg1TS2X!a@dyRG+OAxZ=ocrXT zrSi}H^3MbE&x82m-IRPvt)NdngYJ3re>J)}`3uCSJ%}#4$Y!VKv*m}cxjgdgWU^4| z!`ECg_2FwSp88=AE~ENk4-{11NAVMMzgFJQpm#5Hy=J3IbD*{9FJj;?Qo&!OjK45} z&GwLK=%SyuY_m}+gJp6j`d~a0Wb$qFt$HR%dL(l;QZ-oO(O%?buuP_>Pf!AbB|Q^V zt6A5%%gE!FvE%b9H+HBT|1w4pyxbW1s^S=7^oLNx3%t$5s|u~QKuWuYbl29Z9ukI4KI zcl$}-DYr`&{mmx6M001uc7>BiATa%-V=k@V7wen*S0cEkB@5hKBq#3e(Ze``8clpd zS5A+Rekl3j3loph|7zq$xa#zuu9Z3b8v6S>{f9peN9m3myJ_n#8Y;ICO{jkOXNxzI zi|II{O$y{wNv-m#iifBh+oEbpKAoYTO`1xlpKFsL8>K*g%I?c7Yp|ThvNOx~IsA2& zuO;=NG~<)$turyI<8?Zv7?})tZ&E&O0alDe`dzv}&g7MDr2sN@3goEqA%iN3gN*{{ zHcVB{<)qd*yplLN;>VVi#N%Dz-@h~R>e>l1gi2LO#E1PzajUdN`pdY4^%}#S-5BLr z!uj544xa{QXL`h<4cDbTg{&f$cih^*7QaWssvmR6`JGUbrd=TGvd?#1qu4B@FewQk zUtyb1WVxz4{I9oy?9E}aIQOVVC}HJcke}<&rrwUy4r&t6x{~PE2xZpW!t&!e{rnW$Bc zp@(lM#lf@)XP3v#akS2CCBS6PI1V>E(7y3=~vG$v+hi9 zq&bMb_K4cvJ#t{ahbWMqN)8eq*aPzy5LMTpdwvXbBSZt%ou!8^mJ&rXS>XfoV~El@ zmDBiU7^5J(3GD!BYy+Y9ZXm1&7d?V zi6tEJ>$*s@NGxaF&m(5!ZxQpvDkgtQWsC5LH5x1*5;247ULw|Wy!IiK1G%1IT_KSm zyT8U%G+5FboJy;9GxGP4?k!1KGssF0iI14hwY}6fS3D-pFxAQhJubdxs+0|SQGCx7 zUk$WP{KE7Z$J;5Y>gYYs=Ur-hO6(Lhb(FI^#lw|gO?rqqNX+Sjc)RJ--{`G*<1e*6 zFZPIV4*79wgxo8da>yo}-(C^JAun{k)ONSnFA`ZdtsPR?FOr#(!~4@%d0(_M zeVI|cqP1VeI1YIyQ7-)k(|Fd^3-8g9)+()#>pnZLN5@k{lek7}V|vgmq-m2m7^-(rf|r4;Z6D?* zq<1;Z4HPn$bVs><r8P` zA2iA(`jc~r&jdBqGb4(_eoKV_*9E!s-5{sQLgx0Yr(XZbzf<%n9PpQoz*g!4zuop)|T=U zB6H9uMW@6CEsNg!2ojSfbf;c^RqMbZ5B386rS)Kn9@f3rcbcL1HPI>)!n^mP9;x@| zcxU?{WS~BXL;ldWd#^}6SRZVn#Rm55PNOPPpUAofT@jK#!NHVGx?FmDbv}m_xd_=s ze~5HK^e0^nJzIZ_L+N!*F)pxP3fQaT0eLoTHNQqkLAL<{nE-tSnm8FL9DO3Hty%e&kahhpgm-zPC zdMo1#PV*h2T+!P2%EWv&v2%R;og<hC^OwU8eCZw`P+e@$FBEZpKyCy~3%?QnZ;v z-ep|pkTYWt@*d+)4*5y1$En?y62XFfdxMr6mWBS3O;n^mYy>h@=8$WQ+Dx^XHXHFw zS9>Dfo5t-HQt3Lj64j{8=*qg!yMWFacxpdLbR^vZ{byr3Q%O(gs+tR!9%M>4cQGC6 z0bQ>74pVGb&_MGDQ!$4eZXRV?9ep8evp&ZBnCWFjC#Wp+{xMOm7-OEYV8N`;7s3XJ zL+Oi$J?SKUT^D8)(xk4kw#x@9#byG19>D-JWvV8YwjRk zUuyyD?xA=IMxJ#q(;SKiTEZbqt082bbsy^D9!z0C2BciPyO z`kA$#%QA^VuGW@YWgIew<2`MC$fPOy4^t0Cr=$#g&IN<>Y24AWoj=#!Kp z#4cuflCNHB+jlX|;dpiI<&H&ZeiNAnRW$(`rA90er4TYdlyq9rjhpBOdFZT+wU@k)2DTEMX`N| z=})@w$raP>qmDtN>gQNNzpOONK2GJNm24Drv+YxkP8MvEg)i;Rvp;2uWSURpQ2nxp zBjmjxHx$*}IVQa2@1v%ai;u3E<>_0yJYA{~FQfvcRS0QPOUpD9 z#h|X=HA@r=+x^fiSY(hpSo9#NiTtczl&mQpuJv29JkN~|S4qZ>hJ36$?1OT_g<3M~s8Q3{2P;O?FYSs2lbd~U?T-Dq$ex!bozE?+iIp|}B5Uzv_3UK`tn z{2K&8o~sHuq6*|~BimqL;fU^5yPgEtjRXd?*f}w$qJ<(SIcfVljKwR=!f$gqRb6~AkS5W z98m@GHkLK}%q4d&%Zu$%@^34{s?!5u|1l&r@o0UN>Lkl9-Qf1W9kQ?h+RfC@H8Hj6 zRT{t3X}nM?v(NGZlqYQvWI_-0!!L&4P4e@>Hz~}8!EjFsgS>Xz-PCH)<0~}}7Im`k zC3g_J+qFhddpq(0l6%vT^7?SdB`uIzW(T;h4}$EI^b3`CJ(oGM8cLqS?(NlK`Fdo- z9M7vXf^s~f2Etz&_5;bwkq=QiujfK$bStG=KUDcD`DZm*Lq6@BAY@0X7x_$q`}TnK zX*T}yxVi(D6nR`h#E=1kWw}yPHDdh1cuv^~|aNo&t0L!^7 zf6s;gbNOY|3ik#bB6*=HW|+rDLZ*{dEB4It{V<4nh%Kg2Ic@P(E=Jshq7P~Gb&Y`g zuc#B`M(!2M{KPPnb3_J8HJICX2hC%ec%tQ}!v;`9WLAYwVVD<3G=JX~M3HHu71IPVXZwkUe`*>rg9@OcTF4kb`Lc4;JmrJSxeZ z!+#>#aM)#%dfp!-2W8%@&azo#&g>-a}3?3U7f zFV*XC*FXxH!0rA*5iB#SNwpYD+}jJYV%NxD$etMWmWb~Jxh(~9V=wskXod0*_SJd6)ZSR2^96GD{h&gnRfsET^)Z#c~tN7g@&DL25TyUJKzA zsz6Q?kax1I$}?3Fhd)O()x;TIF+Zer3avAYY>2Xv#qH(mrFou6UTrT^t9h+mzIVmO!2hu@jH!_VEplFi>|{dTo`D*rW+2BS>F6y! zJ6NiXPI28|$wdk>d>ihcry4bmsU=2J?lik{$z@GtcsU=+kkVgyYH_GcXBY~ zCH8-w_nfb?{FLY6ebnM<;$zkpQSNCXkEKbLq}@pSUz+vtgprnhQYr8kl9wY}#u%b+ z3;0~4HQErzsc##+b{k?G?Huwvz1hM`DPQl->NT3F=nVswE&F4Y`E7Ux*`!*3?3&Ve z-B~sC1i9s&>NT3{4AE===C2;;f!W zcDopW7HP`z{oqdI^99RfTAQeSDR&yn;iD*4&G2y~2Q)*P)k)sEa!rcK@zkREJjb(= zEs#$(H$vZxXl z+B{hV)PQtYei($^owRK*`4}R$DkNq(LoA~C)(}s!oxfr!+u|HsW&qX55PsA{4571p z-5);PYeEM5K^|gxJ>Uenf3J@+%%|2#7M;1Jd@~_t@~N~Y=GU7^a?cQ?IlA{8YVn7| z=aV%$Q6I?jcxX43=V==ZnNKNbVqUv@$da7~qqnyhyp-e+o`L6$Jwdj8FXSQeITEs( z&h2I>iIhC=>49MTyE8O5?^9^8Q=Hc+f-!+8b{hkPe?FSYD8>gS1~ zKdn}Y;xt(-QN)uw$MX#Pr_x%M;~7h%AjdO@`gxA$E0%Avwl!-{kvqpTl`Nd&xr=0? zs8S2*T&@oJ9<_xg?hQd+_tUt@@mvv*Ct1F(!QF;sHp>w#V_42-8Nu>NmhZDX&vAp< z{V+>|W$FcmLWlavB%%SPZze&i=6va*0v>|L@|{87qWd`=Q59EyS+@ii$w7p%l2fSM3K%`+8nZp+GrWs zN)wNSyg=?ZL$;x<+2<9OEjqzpt~;13XpPS>@mNPFZa+lk{qho%1lhDnClQ z4!R2Cxut17MqXOm@2uWO1YoZ^`hqUL(#_F)AJ7)X;uKt=6yy!|6T?^(#mx_Wgu4b>w_SRha;9OTR%>r z)=>C(^M$)cKBUaIHoFri;@bb8ufOPNkkl_Je5=$-6y{tC#PT8Wru$)v6^aUh`X|D zkWVqoi&R3Ijd?d4&UW+7kaPyZ=Pk?nA`JSoCdS-`8O(FrRm$b3L04!eFucWelF4*U zYKhdAICJ<vb!sv1>MGFyUEvsheo4Rzhxn{fn6I@_=$~gz1k`m2+N$IwZ;-( z*MOXp0XdB&((#^uHf(@e?Ber;!;$f^<;zSb0CdhNuiY%sq94+HvR^9I?jr3FEOCzd zvn6JdRV`6WeSognCqtfR_tn~n`!21ImY6sZ@=ZDwq@(jtgt^9Xam8)%6*uj;XdR^1 zWS?s+FE(gNc@3uBFTIt(GL80}^Z|2{|K7*O*GC`A?10_%igd_L-5@vc9Ca=WXCPPj zlweU;te&0fWsnVVO7Fc|xh)-Q_ch)jr&1VA{LXH@1N=Xw6G#fravitA;VhiqtYG&6 zmakAQ)J9cty>ote7Ns9bXX%>QIvlNbgs+}<)1DS*hDhxR-UHO&STE8FtBKAT-6>Y{ zsyQU*aE~2D?OwihykQRH;sj65!^b(bcW*<=`7C>~oW^nu%VjJ#-G;r~6`D_SJd0V5 zXE~SU7M9Pj{EFpCmcv*cVL6TE>m=z!i{*Zn7g??$sfm=)m{H|uDu2?8eS#tOP(P%# zgJu#s6CRE|bN?`$on9S0kZN6J$Ow{!5d|b`@_B5}{3{ej?lI6e=(K^y)VK~4$sLrB zE6vRCVshh59;4$3#&n5zvR7=-N9q(A(mHoe%O$Yefu_=Lp0IW4{|b( zxRu-rGgv;z@?MsYv3!yxS{b{z1lljanZUdii z+PT@{51Q*Lo}b)0q7y|?J6w09@%2<4w)uFT&;0_>BKM_1&S1Hk<*O`TV7Z=U3CjsA zukni3n8tOUXHhN46+92uVxO7pvygn!#7FUvFDF7Cj)we<(=2~w`4!8fBsF35Ttcm;xx*JLMo?_ z$|3SS3 z70h<4#dgc_9FE4ln9o?AtP6KZ801xUzuf|EgVvoKPc+M#ELXGt%PgNJ87%y$48bBe z0rJxhkRQ;sd9Ya39MaPava~7WThwa7VibqGFaYlNb0EjkbwsdePFFy|VoC$ZU&cb- z7y~(>C1i8*uchi6!nJNh>Db~6%8O=K%8Tv{QeL(=PPx$jleJeU7h8Nux!7VlU#(

45U!r|L;D5W6^d$ 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 diff --git a/bin/OpenMetaverse.Rendering.Meshmerizer.dll b/bin/OpenMetaverse.Rendering.Meshmerizer.dll index 1a12a1e7744044d2136d7fd19b935420e472e622..70875842f58d90de2c2c97b78e3dcb1ad0633a4c 100755 GIT binary patch delta 46 zcmV+}0MY+|paFoO0g#9T-P!-Ki*X|Y^>VZRBdP}ws@(?Z+rIxvi^USvfMYJ7v$!ir EBq6jHApigX delta 46 zcmV+}0MY+|paFoO0g#9T{NZP@i*X|YJU+AjBdP}wy^30$K4;QLt!|VjMxm%0v$!ir EB;C9e00000 diff --git a/bin/OpenMetaverse.StructuredData.dll b/bin/OpenMetaverse.StructuredData.dll index 7aeb0894f2a071c91f3af89d305e43e2587632a4..dd3113dc59c154bbd555d0f2050e0f589619f87e 100755 GIT binary patch delta 42 zcmV+_0M-A1pay`T29SsY+S&hsi?xdZwNMa5J766BV}V4P&*h{tNgvI(P*DM}KBj{c AJOBUy delta 42 zcmV+_0M-A1pay`T29SsY`Qc}Qi?xdZwNMbeeZ3B}{enZWrZRTH1iUe~P*DM}KCHtN AeEyAHu%00z*uu2rt z{^1M)sJZkym_`N64aUe&%dlm?Rc N{FXnOFFUQD{s(UaM05ZE delta 172 zcmWN=ISv6)00!XqjD0MFu`fehz!HUtxPUl^3+RpFNAfp1jY8BSlZZ^E)VhNkj6|gw z?@K=Cw2_Xw-)X=1VogwjAy5OuU<8bUF)$7$z$B=HDKHIYz$|EhIWP|vKocy2C9n)u zz$#d~v);8slj+vA>uN)7sx8m8t=`hu>xcQ}@tU1Wfh*19YU^Ju&%d_KXQD4gVl0MY NaQn!w?n$Q;WdGrPLe~HQ diff --git a/bin/OpenMetaverseTypes.dll b/bin/OpenMetaverseTypes.dll index a07cc1daa01e7c46f90c83f8a2242858edbcc767..cf5080da2aa5d762dcdb36c68954b458a0cb167a 100755 GIT binary patch delta 1014 zcmXxhOH30%7zgkfpeTKADFSUNrIhjzR6whkfF}||q9|zy@fE}aN#i5>hnvPNk_ZML ztz(d)5)`5#Mvd-aJxDxyFwq!K!~;YR#u!7mdJwnsb@s6T-|l?#&F)NUtvIz-oSrOP zS=r1?h4@@%X@DORoa=ni7~{H|rv%r0w#k=_ak0Vo8ArA0>$a=IjM>HS>5qI+nD-Mr zDI7C#-(?58_#_tgV1l3_D-tsY^yllKPg72B5pvf!VzV0v%znQb=oPO6~#Fl?({%$X0(f$N05{zlg^1=R|ZY#@- z$fv&Je9;_f#Lr*FX4?31jdPVR>SwrW=d&7D+?I#;7~|SkUaRj>#xGdVV`GEb+W2ce zq8V3O_?Tv!2)pl?!<(Ui13E#$yw)OqgLOLvV@z5FY6YK~R9B3ve=ps0Air~T+!Hqe>2D~I>Vug@}-zq5^ znGUf>4k`#9G!eY$B=~TGkc%;bA9I8}ydVVdiI9&pMJyOZ6`=qJ2!%LLD8gOEDM}%H zq){>c>g%pXt-L~;yuFJzn#ZzR=3gPH)u}zYU#B-exNeO*`m|0DJzG&cgHFZ@TU%JA z#+brP?`&<_VP=CKe7m=uFB->6`N8VC%zoC(j<7z~&5p8uc9?ZBnB@W1X=a~!HpB+a zc_%w$`oE5`+|EB+l&)CvzMdLa!&&E_l;?r(A>(}qAM&}TFL84#`aO<2KNig5v&QgA XKHxU&QU24B^rqf$PV+C0SY_Hj=p{B} From 2b8cdb2a754b269aa8d0a2be230466806d52611a Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 25 Apr 2017 20:08:06 -0700 Subject: [PATCH 02/40] If we're going to show regions twice (in standalone) at least make the formatting consistent... --- OpenSim/Services/GridService/GridService.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/OpenSim/Services/GridService/GridService.cs b/OpenSim/Services/GridService/GridService.cs index 6153f5ea26..a5c7d34a50 100644 --- a/OpenSim/Services/GridService/GridService.cs +++ b/OpenSim/Services/GridService/GridService.cs @@ -909,9 +909,9 @@ namespace OpenSim.Services.GridService private void OutputRegionsToConsoleSummary(List regions) { ConsoleDisplayTable dispTable = new ConsoleDisplayTable(); - dispTable.AddColumn("Name", 44); - dispTable.AddColumn("ID", 36); - dispTable.AddColumn("Position", 11); + dispTable.AddColumn("Name", ConsoleDisplayUtil.RegionNameSize); + dispTable.AddColumn("ID", ConsoleDisplayUtil.UuidSize); + dispTable.AddColumn("Position", ConsoleDisplayUtil.CoordTupleSize); dispTable.AddColumn("Size", 11); dispTable.AddColumn("Flags", 60); From ce3af94a693aa05e90416649f832f36b62630c69 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Wed, 26 Apr 2017 07:19:44 +0100 Subject: [PATCH 03/40] mantis 6738: change parsing of the HTTP_CUSTOM_HEADER parameter and ignore entries in excess of 8 on the request --- .../Scripting/HttpRequest/ScriptsHttpRequests.cs | 12 ++++-------- .../Shared/Api/Implementation/LSL_Api.cs | 13 ++++++++++--- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs b/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs index 09891f7876..035097f8d2 100644 --- a/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs +++ b/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs @@ -223,20 +223,16 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest if (parms.Length - i < 2) break; - //Have we reached the end of the list of headers? - //End is marked by a string with a single digit. - //We already know we have at least one parameter - //so it is safe to do this check at top of loop. - if (Char.IsDigit(parms[i][0])) - break; - if (htc.HttpCustomHeaders == null) htc.HttpCustomHeaders = new List(); htc.HttpCustomHeaders.Add(parms[i]); htc.HttpCustomHeaders.Add(parms[i+1]); + int nexti = i + 2; + if (nexti >= parms.Length || Char.IsDigit(parms[nexti][0])) + break; - i += 2; + i = nexti; } break; diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 47c3cb89c6..2000c44628 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -13405,6 +13405,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api List param = new List(); bool ok; Int32 flag; + int nCustomHeaders = 0; for (int i = 0; i < parameters.Data.Length; i += 2) { @@ -13431,6 +13432,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api //Second Life documentation for llHTTPRequest. for (int count = 1; count <= 8; ++count) { + if(nCustomHeaders >= 8) + { + Error("llHTTPRequest", "Max number of custom headers is 8, excess ignored"); + break; + } + //Enough parameters remaining for (another) header? if (parameters.Data.Length - i < 2) { @@ -13445,15 +13452,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api param.Add(parameters.Data[i].ToString()); param.Add(parameters.Data[i+1].ToString()); + nCustomHeaders++; //Have we reached the end of the list of headers? //End is marked by a string with a single digit. - if (i+2 >= parameters.Data.Length || - Char.IsDigit(parameters.Data[i].ToString()[0])) + if (i + 2 >= parameters.Data.Length || + Char.IsDigit(parameters.Data[i + 2].ToString()[0])) { break; } - i += 2; } } From 1b8c71c965c82a79011290c2cfbcbc8eb1e409c4 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Wed, 26 Apr 2017 16:15:33 +0100 Subject: [PATCH 04/40] give more information on Fatal Error during region startup --- OpenSim/Framework/Servers/BaseOpenSimServer.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/OpenSim/Framework/Servers/BaseOpenSimServer.cs b/OpenSim/Framework/Servers/BaseOpenSimServer.cs index f761813560..62cd5439a6 100644 --- a/OpenSim/Framework/Servers/BaseOpenSimServer.cs +++ b/OpenSim/Framework/Servers/BaseOpenSimServer.cs @@ -163,8 +163,7 @@ namespace OpenSim.Framework.Servers } catch(Exception e) { - m_log.FatalFormat("Fatal error: {0}", - (e.Message == null || e.Message == String.Empty) ? "Unknown reason":e.Message ); + m_log.Fatal("Fatal error: " + e.ToString()); Environment.Exit(1); } From 8dfab8757ca4d8b8af6213f2d3b3bf1fd1d2f18e Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Wed, 26 Apr 2017 09:58:15 -0700 Subject: [PATCH 05/40] Fill out Current Outfit folder with links when creating the initial avatar appearance. Some viewers (e.g. Singularity 1.8.7) get seriously confused when the avatar has no current outfit links. --- .../UserAccountService/UserAccountService.cs | 43 ++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/OpenSim/Services/UserAccountService/UserAccountService.cs b/OpenSim/Services/UserAccountService/UserAccountService.cs index f6b003a1ad..a22754feee 100644 --- a/OpenSim/Services/UserAccountService/UserAccountService.cs +++ b/OpenSim/Services/UserAccountService/UserAccountService.cs @@ -640,9 +640,11 @@ namespace OpenSim.Services.UserAccountService m_log.DebugFormat("[USER ACCOUNT SERVICE]: Creating default appearance items for {0}", principalID); InventoryFolderBase bodyPartsFolder = m_InventoryService.GetFolderForType(principalID, FolderType.BodyPart); + // Get Current Outfit folder + InventoryFolderBase currentOutfitFolder = m_InventoryService.GetFolderForType(principalID, FolderType.CurrentOutfit); InventoryItemBase eyes = new InventoryItemBase(UUID.Random(), principalID); - eyes.AssetID = new UUID("4bb6fa4d-1cd2-498a-a84c-95c1a0e745a7"); + eyes.AssetID = AvatarWearable.DEFAULT_EYES_ASSET; eyes.Name = "Default Eyes"; eyes.CreatorId = principalID.ToString(); eyes.AssetType = (int)AssetType.Bodypart; @@ -655,6 +657,7 @@ namespace OpenSim.Services.UserAccountService eyes.NextPermissions = (uint)PermissionMask.All; eyes.Flags = (uint)WearableType.Eyes; m_InventoryService.AddItem(eyes); + CreateCurrentOutfitLink((int)InventoryType.Wearable, (uint)WearableType.Eyes, eyes.Name, eyes.ID, principalID, currentOutfitFolder.ID); InventoryItemBase shape = new InventoryItemBase(UUID.Random(), principalID); shape.AssetID = AvatarWearable.DEFAULT_BODY_ASSET; @@ -670,6 +673,7 @@ namespace OpenSim.Services.UserAccountService shape.NextPermissions = (uint)PermissionMask.All; shape.Flags = (uint)WearableType.Shape; m_InventoryService.AddItem(shape); + CreateCurrentOutfitLink((int)InventoryType.Wearable, (uint)WearableType.Shape, shape.Name, shape.ID, principalID, currentOutfitFolder.ID); InventoryItemBase skin = new InventoryItemBase(UUID.Random(), principalID); skin.AssetID = AvatarWearable.DEFAULT_SKIN_ASSET; @@ -685,6 +689,7 @@ namespace OpenSim.Services.UserAccountService skin.NextPermissions = (uint)PermissionMask.All; skin.Flags = (uint)WearableType.Skin; m_InventoryService.AddItem(skin); + CreateCurrentOutfitLink((int)InventoryType.Wearable, (uint)WearableType.Skin, skin.Name, skin.ID, principalID, currentOutfitFolder.ID); InventoryItemBase hair = new InventoryItemBase(UUID.Random(), principalID); hair.AssetID = AvatarWearable.DEFAULT_HAIR_ASSET; @@ -700,6 +705,7 @@ namespace OpenSim.Services.UserAccountService hair.NextPermissions = (uint)PermissionMask.All; hair.Flags = (uint)WearableType.Hair; m_InventoryService.AddItem(hair); + CreateCurrentOutfitLink((int)InventoryType.Wearable, (uint)WearableType.Hair, hair.Name, hair.ID, principalID, currentOutfitFolder.ID); InventoryFolderBase clothingFolder = m_InventoryService.GetFolderForType(principalID, FolderType.Clothing); @@ -717,6 +723,7 @@ namespace OpenSim.Services.UserAccountService shirt.NextPermissions = (uint)PermissionMask.All; shirt.Flags = (uint)WearableType.Shirt; m_InventoryService.AddItem(shirt); + CreateCurrentOutfitLink((int)InventoryType.Wearable, (uint)WearableType.Shirt, shirt.Name, shirt.ID, principalID, currentOutfitFolder.ID); InventoryItemBase pants = new InventoryItemBase(UUID.Random(), principalID); pants.AssetID = AvatarWearable.DEFAULT_PANTS_ASSET; @@ -732,6 +739,7 @@ namespace OpenSim.Services.UserAccountService pants.NextPermissions = (uint)PermissionMask.All; pants.Flags = (uint)WearableType.Pants; m_InventoryService.AddItem(pants); + CreateCurrentOutfitLink((int)InventoryType.Wearable, (uint)WearableType.Pants, pants.Name, pants.ID, principalID, currentOutfitFolder.ID); if (m_AvatarService != null) { @@ -815,6 +823,8 @@ namespace OpenSim.Services.UserAccountService { // Get Clothing folder of receiver InventoryFolderBase destinationFolder = m_InventoryService.GetFolderForType(destination, FolderType.Clothing); + // Get Current Outfit folder + InventoryFolderBase currentOutfitFolder = m_InventoryService.GetFolderForType(destination, FolderType.CurrentOutfit); if (destinationFolder == null) throw new Exception("Cannot locate folder(s)"); @@ -841,6 +851,7 @@ namespace OpenSim.Services.UserAccountService for (int i = 0; i < wearables.Length; i++) { wearable = wearables[i]; + m_log.DebugFormat("[XXX]: Getting item {0} from avie {1}", wearable[0].ItemID, source); if (wearable[0].ItemID != UUID.Zero) { // Get inventory item and copy it @@ -878,6 +889,9 @@ namespace OpenSim.Services.UserAccountService AvatarWearable newWearable = new AvatarWearable(); newWearable.Wear(destinationItem.ID, wearable[0].AssetID); avatarAppearance.SetWearable(i, newWearable); + + // Add to Current Outfit + CreateCurrentOutfitLink((int)InventoryType.Wearable, item.Flags, item.Name, destinationItem.ID, destination, currentOutfitFolder.ID); } else { @@ -930,6 +944,9 @@ namespace OpenSim.Services.UserAccountService // Attach item avatarAppearance.SetAttachment(attachpoint, destinationItem.ID, destinationItem.AssetID); m_log.DebugFormat("[USER ACCOUNT SERVICE]: Attached {0}", destinationItem.ID); + + // Add to Current Outfit + CreateCurrentOutfitLink(destinationItem.InvType, item.Flags, item.Name, destinationItem.ID, destination, currentOutfitFolder.ID); } else { @@ -939,6 +956,30 @@ namespace OpenSim.Services.UserAccountService } } + protected void CreateCurrentOutfitLink(int invType, uint itemType, string name, UUID itemID, UUID userID, UUID currentOutfitFolderUUID) + { + UUID LinkInvItem = UUID.Random(); + InventoryItemBase itembase = new InventoryItemBase(LinkInvItem, userID) + { + AssetID = itemID, + AssetType = (int)AssetType.Link, + CreatorId = userID.ToString(), + InvType = invType, + Description = "", + //Folder = m_InventoryService.GetFolderForType(userID, FolderType.CurrentOutfit).ID, + Folder = currentOutfitFolderUUID, + Flags = itemType, + Name = name, + BasePermissions = (uint)PermissionMask.Copy, + CurrentPermissions = (uint)PermissionMask.Copy, + EveryOnePermissions = (uint)PermissionMask.Copy, + GroupPermissions = (uint)PermissionMask.Copy, + NextPermissions = (uint)PermissionMask.Copy + }; + + m_InventoryService.AddItem(itembase); + } + ///

/// Apply next owner permissions. /// From ce655056cab400c0d0705861cef03eef541875c5 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Wed, 26 Apr 2017 18:21:35 +0100 Subject: [PATCH 06/40] ubMeshmerizer: fix the orientation of last triangle on top/bottom faces of hollow cylinders plz delete contents of bin/MeshCache to remove defective entries" --- OpenSim/Region/PhysicsModules/ubOdeMeshing/PrimMesher.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/PhysicsModules/ubOdeMeshing/PrimMesher.cs b/OpenSim/Region/PhysicsModules/ubOdeMeshing/PrimMesher.cs index 10facf2713..e93175f081 100644 --- a/OpenSim/Region/PhysicsModules/ubOdeMeshing/PrimMesher.cs +++ b/OpenSim/Region/PhysicsModules/ubOdeMeshing/PrimMesher.cs @@ -755,8 +755,8 @@ namespace PrimMesher if (hollowAngles.angles[0].angle - angles.angles[i].angle < angles.angles[i].angle - hollowAngles.angles[maxJ].angle + 0.000001f) { newFace.v1 = 0; - newFace.v2 = numTotalVerts - maxJ - 1; - newFace.v3 = numTotalVerts - 1; + newFace.v2 = numTotalVerts - 1; + newFace.v3 = numTotalVerts - maxJ - 1; faces.Add(newFace); } From 8d3d87e0b2be0fdaf06e1a6309cd1f1249dcf024 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Thu, 27 Apr 2017 00:02:01 +0100 Subject: [PATCH 07/40] add a usefull taint and update --- .../Scenes/SceneObjectGroup.Inventory.cs | 94 +++++++++++++------ .../Framework/Scenes/SceneObjectPart.cs | 2 + 2 files changed, 69 insertions(+), 27 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs index 12e53a8d27..081281e48f 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs @@ -252,18 +252,26 @@ namespace OpenSim.Region.Framework.Scenes } // new test code, to place in better place later - private object PermissionsLock = new object(); + private object m_PermissionsLock = new object(); + private bool m_EffectivePermsInvalid = true; + + public void InvalidateEffectivePerms() + { + lock(m_PermissionsLock) + m_EffectivePermsInvalid = true; + } private uint m_EffectiveEveryOnePerms; public uint EffectiveEveryOnePerms { get { - // this can't be done here but on every place where a change may happen (rez, (de)link, contents , perms, etc) - // bc this is on heavy duty code paths - // but for now we need to test the concept -// AggregateDeepPerms(); - return m_EffectiveEveryOnePerms; + lock(m_PermissionsLock) + { + if(m_EffectivePermsInvalid) + AggregatePerms(); + return m_EffectiveEveryOnePerms; + } } } @@ -272,11 +280,12 @@ namespace OpenSim.Region.Framework.Scenes { get { - // this can't be done here but on every place where a change may happen (rez, (de)link, contents , perms, etc) - // bc this is on heavy duty code paths - // but for now we need to test the concept -// AggregateDeepPerms(); - return m_EffectiveGroupPerms; + lock(m_PermissionsLock) + { + if(m_EffectivePermsInvalid) + AggregatePerms(); + return m_EffectiveGroupPerms; + } } } @@ -285,11 +294,12 @@ namespace OpenSim.Region.Framework.Scenes { get { - // this can't be done here but on every place where a change may happen (rez, (de)link, contents , perms, etc) - // bc this is on heavy duty code paths - // but for now we need to test the concept -// AggregateDeepPerms(); - return m_EffectiveGroupOrEveryOnePerms; + lock(m_PermissionsLock) + { + if(m_EffectivePermsInvalid) + AggregatePerms(); + return m_EffectiveGroupOrEveryOnePerms; + } } } @@ -298,11 +308,12 @@ namespace OpenSim.Region.Framework.Scenes { get { - // this can't be done here but on every place where a change may happen (rez, (de)link, contents , perms, etc) - // bc this is on heavy duty code paths - // but for now we need to test the concept - // AggregateDeepPerms(); - return m_EffectiveOwnerPerms; + lock(m_PermissionsLock) + { + if(m_EffectivePermsInvalid) + AggregatePerms(); + return m_EffectiveOwnerPerms; + } } } @@ -310,7 +321,7 @@ namespace OpenSim.Region.Framework.Scenes // AggregatePerms does same using cached parts content perms public void AggregateDeepPerms() { - lock(PermissionsLock) + lock(m_PermissionsLock) { // aux const uint allmask = (uint)PermissionMask.AllEffective; @@ -370,6 +381,7 @@ namespace OpenSim.Region.Framework.Scenes m_EffectiveEveryOnePerms = everyone & owner; m_EffectiveGroupOrEveryOnePerms = groupOrEveryone & owner; + m_EffectivePermsInvalid = false; } } @@ -377,7 +389,7 @@ namespace OpenSim.Region.Framework.Scenes // ie is AggregateDeepPerms without the part.AggregateInnerPerms() call on parts loop public void AggregatePerms() { - lock(PermissionsLock) + lock(m_PermissionsLock) { // aux const uint allmask = (uint)PermissionMask.AllEffective; @@ -394,6 +406,8 @@ namespace OpenSim.Region.Framework.Scenes uint rootEveryonePerms = RootPart.EveryoneMask; uint everyone = rootEveryonePerms; + bool needUpdate = false; + SceneObjectPart[] parts = m_parts.GetArray(); for (int i = 0; i < parts.Length; i++) { @@ -409,7 +423,12 @@ namespace OpenSim.Region.Framework.Scenes owner |= (uint)PermissionMask.Transfer; owner &= basePerms; - m_EffectiveOwnerPerms = owner; + if(owner != m_EffectiveOwnerPerms) + { + needUpdate = true; + m_EffectiveOwnerPerms = owner; + } + uint ownertransfermask = owner & (uint)PermissionMask.Transfer; // recover modify and move @@ -421,7 +440,12 @@ namespace OpenSim.Region.Framework.Scenes group |= ownertransfermask; uint groupOrEveryone = group; - m_EffectiveGroupPerms = group & owner; + uint tmpPerms = group & owner; + if(tmpPerms != m_EffectiveGroupPerms) + { + needUpdate = true; + m_EffectiveGroupPerms = tmpPerms; + } // recover move rootEveryonePerms &= (uint)PermissionMask.Move; @@ -434,8 +458,24 @@ namespace OpenSim.Region.Framework.Scenes groupOrEveryone |= everyone; - m_EffectiveEveryOnePerms = everyone & owner; - m_EffectiveGroupOrEveryOnePerms = groupOrEveryone & owner; + tmpPerms = everyone & owner; + if(tmpPerms != m_EffectiveEveryOnePerms) + { + needUpdate = true; + m_EffectiveEveryOnePerms = tmpPerms; + } + + tmpPerms = groupOrEveryone & owner; + if(tmpPerms != m_EffectiveGroupOrEveryOnePerms) + { + needUpdate = true; + m_EffectiveGroupOrEveryOnePerms = tmpPerms; + } + + m_EffectivePermsInvalid = false; + + if(needUpdate) + RootPart.ScheduleFullUpdate(); } } diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 19bf53f0fd..e4f18d9872 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -2579,6 +2579,8 @@ namespace OpenSim.Region.Framework.Scenes AggregatedInnerOwnerPerms = owner & mask; AggregatedInnerGroupPerms = group & mask; AggregatedInnerEveryonePerms = everyone & mask; + if(ParentGroup != null) + ParentGroup.InvalidateEffectivePerms(); } } From ba4e13ef55c378db13b6aa97316e99d651762a02 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Fri, 28 Apr 2017 20:03:44 +0100 Subject: [PATCH 08/40] a few changes to permissions folding... we are testing. at this point only use master for TESTING also --- OpenSim/Framework/Util.cs | 5 +- .../InventoryAccess/InventoryAccessModule.cs | 35 ++++++++------ .../Framework/Scenes/Scene.Inventory.cs | 13 ++++-- .../Scenes/SceneObjectGroup.Inventory.cs | 25 +++------- .../Framework/Scenes/SceneObjectPart.cs | 4 +- .../Scenes/SceneObjectPartInventory.cs | 46 +++++++++++-------- 6 files changed, 69 insertions(+), 59 deletions(-) diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index 0ec24e60f4..4d025a9346 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs @@ -79,7 +79,9 @@ namespace OpenSim.Framework FoldedMask = 0x0f, - // + FoldingShift = 13 , // number of bit shifts from normal perm to folded or back (same as Transfer shift below) + // when doing as a block + Transfer = 1 << 13, // 0x02000 Modify = 1 << 14, // 0x04000 Copy = 1 << 15, // 0x08000 @@ -91,6 +93,7 @@ namespace OpenSim.Framework All = 0x8e000, AllAndExport = 0x9e000, AllEffective = 0x9e000 + } /// diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 67c847b21d..eb7211cb60 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -574,8 +574,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess IClientAPI remoteClient) { uint effectivePerms = (uint)(PermissionMask.Copy | PermissionMask.Transfer | PermissionMask.Modify | PermissionMask.Move | PermissionMask.Export) | 7; - uint allObjectsNextOwnerPerms = 0x7fffffff; - + // For the porposes of inventory, an object is modify if the prims // are modify. This allows renaming an object that contains no // mod items. @@ -591,21 +590,27 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess if (remoteClient != null && (remoteClient.AgentId != so.RootPart.OwnerID) && m_Scene.Permissions.PropagatePermissions()) { - uint perms = effectivePerms; - uint nextPerms = (perms & 7) << 13; - if ((nextPerms & (uint)PermissionMask.Copy) == 0) - perms &= ~(uint)PermissionMask.Copy; - if ((nextPerms & (uint)PermissionMask.Transfer) == 0) - perms &= ~(uint)PermissionMask.Transfer; - if ((nextPerms & (uint)PermissionMask.Modify) == 0) - perms &= ~(uint)PermissionMask.Modify; + if ((effectivePerms & (uint)PermissionMask.FoldedCopy) == 0) + effectivePerms &= ~(uint)PermissionMask.Copy; + if ((effectivePerms & (uint)PermissionMask.FoldedTransfer) == 0) + effectivePerms &= ~(uint)PermissionMask.Transfer; + if ((effectivePerms & (uint)PermissionMask.FoldedExport) == 0) + effectivePerms &= ~(uint)PermissionMask.Export; -// item.BasePermissions = perms & so.RootPart.NextOwnerMask; + uint basePerms = effectivePerms & so.RootPart.NextOwnerMask; - uint nextp = so.RootPart.NextOwnerMask | (uint)PermissionMask.FoldedMask; - item.BasePermissions = perms & nextp; + if((basePerms & (uint)PermissionMask.Copy) == 0) + basePerms |= (uint)PermissionMask.Transfer; + + // unlock + basePerms |= (uint)PermissionMask.Move; + + basePerms &= ~(uint)PermissionMask.FoldedMask; + basePerms |= ((basePerms >> (int)PermissionMask.FoldingShift) & (uint)PermissionMask.FoldedMask); + + item.BasePermissions = basePerms; item.CurrentPermissions = item.BasePermissions; - item.NextPermissions = perms & so.RootPart.NextOwnerMask; + item.NextPermissions = effectivePerms & so.RootPart.NextOwnerMask; item.EveryOnePermissions = so.RootPart.EveryoneMask & so.RootPart.NextOwnerMask; item.GroupPermissions = so.RootPart.GroupMask & so.RootPart.NextOwnerMask; @@ -626,7 +631,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess (uint)PermissionMask.Modify | (uint)PermissionMask.Move | (uint)PermissionMask.Export | - 7); // Preserve folded permissions + (uint)PermissionMask.FoldedMask); // Preserve folded permissions ?? } return item; diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index 2f016fa276..edf8cb6f00 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs @@ -682,19 +682,19 @@ namespace OpenSim.Region.Framework.Scenes // These will be applied to the root prim at next rez. // The legacy slam bit (bit 3) and folded permission (bits 0-2) // are preserved due to the above mangling - ownerPerms &= nextPerms; +// ownerPerms &= nextPerms; // Mask the base permissions. This is a conservative // approach altering only the three main perms - basePerms &= nextPerms; +// basePerms &= nextPerms; // Mask out the folded portion of the base mask. // While the owner mask carries the actual folded // permissions, the base mask carries the original // base mask, before masking with the folded perms. // We need this later for rezzing. - basePerms &= ~(uint)PermissionMask.FoldedMask; - basePerms |= ((basePerms >> 13) & 7) | (((basePerms & (uint)PermissionMask.Export) != 0) ? (uint)PermissionMask.FoldedExport : 0); +// basePerms &= ~(uint)PermissionMask.FoldedMask; +// basePerms |= ((basePerms >> 13) & 7) | (((basePerms & (uint)PermissionMask.Export) != 0) ? (uint)PermissionMask.FoldedExport : 0); // If this is an object, root prim perms may be more // permissive than folded perms. Use folded perms as @@ -729,6 +729,11 @@ namespace OpenSim.Region.Framework.Scenes } } + // move here so nextperms are mandatory + ownerPerms &= nextPerms; + basePerms &= nextPerms; + basePerms &= ~(uint)PermissionMask.FoldedMask; + basePerms |= ((basePerms >> 13) & 7) | (((basePerms & (uint)PermissionMask.Export) != 0) ? (uint)PermissionMask.FoldedExport : 0); // Assign to the actual item. Make sure the slam bit is // set, if it wasn't set before. itemCopy.BasePermissions = basePerms; diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs index 081281e48f..42f47b5938 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs @@ -326,7 +326,7 @@ namespace OpenSim.Region.Framework.Scenes // aux const uint allmask = (uint)PermissionMask.AllEffective; const uint movemodmask = (uint)(PermissionMask.Move | PermissionMask.Modify); - const uint copytransfermast = (uint)(PermissionMask.Copy | PermissionMask.Transfer); + const uint copytransfermask = (uint)(PermissionMask.Copy | PermissionMask.Transfer); uint basePerms = (RootPart.BaseMask & allmask) | (uint)PermissionMask.Move; bool noBaseTransfer = (basePerms & (uint)PermissionMask.Transfer) == 0; @@ -350,7 +350,7 @@ namespace OpenSim.Region.Framework.Scenes // recover modify and move rootOwnerPerms &= movemodmask; owner |= rootOwnerPerms; - if((owner & copytransfermast) == 0) + if((owner & copytransfermask) == 0) owner |= (uint)PermissionMask.Transfer; owner &= basePerms; @@ -479,17 +479,13 @@ namespace OpenSim.Region.Framework.Scenes } } - public uint GetEffectivePermissions() - { - return GetEffectivePermissions(false); - } - public uint GetEffectivePermissions(bool useBase) { uint perms=(uint)(PermissionMask.Modify | PermissionMask.Copy | PermissionMask.Move | - PermissionMask.Transfer) | 7; + PermissionMask.Transfer | + PermissionMask.FoldedMask); uint ownerMask = 0x7fffffff; @@ -512,17 +508,8 @@ namespace OpenSim.Region.Framework.Scenes perms &= ~(uint)PermissionMask.Copy; if ((ownerMask & (uint)PermissionMask.Transfer) == 0) perms &= ~(uint)PermissionMask.Transfer; - - // If root prim permissions are applied here, this would screw - // with in-inventory manipulation of the next owner perms - // in a major way. So, let's move this to the give itself. - // Yes. I know. Evil. -// if ((ownerMask & RootPart.NextOwnerMask & (uint)PermissionMask.Modify) == 0) -// perms &= ~((uint)PermissionMask.Modify >> 13); -// if ((ownerMask & RootPart.NextOwnerMask & (uint)PermissionMask.Copy) == 0) -// perms &= ~((uint)PermissionMask.Copy >> 13); -// if ((ownerMask & RootPart.NextOwnerMask & (uint)PermissionMask.Transfer) == 0) -// perms &= ~((uint)PermissionMask.Transfer >> 13); + if ((ownerMask & (uint)PermissionMask.Export) == 0) + perms &= ~(uint)PermissionMask.Export; return perms; } diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index e4f18d9872..f948336feb 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -5288,9 +5288,9 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter // Export needs to be preserved in the base and everyone // mask, but removed in the owner mask as a next owner // can never change the export status - BaseMask &= NextOwnerMask | (uint)PermissionMask.Export; + BaseMask &= (NextOwnerMask | (uint)PermissionMask.Export); OwnerMask &= NextOwnerMask; - EveryoneMask &= NextOwnerMask | (uint)PermissionMask.Export; + EveryoneMask &= (NextOwnerMask | (uint)PermissionMask.Export); GroupMask = 0; // Giving an object zaps group permissions Inventory.ApplyNextOwnerPermissions(); diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs index b53c355333..894078dd8b 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs @@ -1340,33 +1340,38 @@ namespace OpenSim.Region.Framework.Scenes public uint MaskEffectivePermissions() { + // used to propagate permissions restrictions outwards + // Modify does not propagate outwards. uint mask=0x7fffffff; - + foreach (TaskInventoryItem item in m_items.Values) { if ((item.CurrentPermissions & item.NextPermissions & (uint)PermissionMask.Copy) == 0) - mask &= ~((uint)PermissionMask.Copy >> 13); + mask &= ~((uint)PermissionMask.FoldedCopy); if ((item.CurrentPermissions & item.NextPermissions & (uint)PermissionMask.Transfer) == 0) - mask &= ~((uint)PermissionMask.Transfer >> 13); - if ((item.CurrentPermissions & item.NextPermissions & (uint)PermissionMask.Modify) == 0) - mask &= ~((uint)PermissionMask.Modify >> 13); + mask &= ~((uint)PermissionMask.FoldedTransfer); + if ((item.CurrentPermissions & item.NextPermissions & (uint)PermissionMask.Export) == 0) + mask &= ~((uint)PermissionMask.FoldedExport); + // this breaks some SL legal use cases + // there should be no folding from task inventory +/* if (item.InvType == (int)InventoryType.Object) { - if ((item.CurrentPermissions & ((uint)PermissionMask.Copy >> 13)) == 0) - mask &= ~((uint)PermissionMask.Copy >> 13); - if ((item.CurrentPermissions & ((uint)PermissionMask.Transfer >> 13)) == 0) - mask &= ~((uint)PermissionMask.Transfer >> 13); - if ((item.CurrentPermissions & ((uint)PermissionMask.Modify >> 13)) == 0) - mask &= ~((uint)PermissionMask.Modify >> 13); + if ((item.CurrentPermissions & ((uint)PermissionMask.FoldedCopy)) == 0) + mask &= ~((uint)PermissionMask.FoldedCopy); + if ((item.CurrentPermissions & ((uint)PermissionMask.FoldedTransfer)) == 0) + mask &= ~((uint)PermissionMask.FoldedTransfer); + if ((item.CurrentPermissions & (uint)PermissionMask.FoldedExport) == 0) + mask &= ~((uint)PermissionMask.FoldedExport); } - +*/ if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0) mask &= ~(uint)PermissionMask.Copy; if ((item.CurrentPermissions & (uint)PermissionMask.Transfer) == 0) mask &= ~(uint)PermissionMask.Transfer; - if ((item.CurrentPermissions & (uint)PermissionMask.Modify) == 0) - mask &= ~(uint)PermissionMask.Modify; + if ((item.CurrentPermissions & (uint)PermissionMask.Export) == 0) + mask &= ~((uint)PermissionMask.Export); } return mask; } @@ -1375,19 +1380,24 @@ namespace OpenSim.Region.Framework.Scenes { foreach (TaskInventoryItem item in m_items.Values) { - if (item.InvType == (int)InventoryType.Object && (item.CurrentPermissions & 7) != 0) + + // this breaks legal SL use cases + // there should be no unfold into task inventory +/* + if (item.InvType == (int)InventoryType.Object && (item.CurrentPermissions & (uint)PermissionMask.FoldedMask) != 0) { // m_log.DebugFormat ( // "[SCENE OBJECT PART INVENTORY]: Applying next permissions {0} to {1} in {2} with current {3}, base {4}, everyone {5}", // item.NextPermissions, item.Name, m_part.Name, item.CurrentPermissions, item.BasePermissions, item.EveryonePermissions); - if ((item.CurrentPermissions & ((uint)PermissionMask.Copy >> 13)) == 0) + if ((item.CurrentPermissions & ((uint)PermissionMask.FoldedCopy)) == 0) item.CurrentPermissions &= ~(uint)PermissionMask.Copy; - if ((item.CurrentPermissions & ((uint)PermissionMask.Transfer >> 13)) == 0) + if ((item.CurrentPermissions & ((uint)PermissionMask.FoldedTransfer)) == 0) item.CurrentPermissions &= ~(uint)PermissionMask.Transfer; - if ((item.CurrentPermissions & ((uint)PermissionMask.Modify >> 13)) == 0) + if ((item.CurrentPermissions & ((uint)PermissionMask.FoldedModify)) == 0) item.CurrentPermissions &= ~(uint)PermissionMask.Modify; } +*/ item.CurrentPermissions &= item.NextPermissions; item.BasePermissions &= item.NextPermissions; item.EveryonePermissions &= item.NextPermissions; From 00091f1fb9dbe8926e467a844d2035fc83a00c80 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Fri, 28 Apr 2017 20:13:53 +0100 Subject: [PATCH 09/40] forgot a change... --- .../Framework/InventoryAccess/InventoryAccessModule.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index eb7211cb60..d916cc28a9 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -581,8 +581,8 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess foreach (SceneObjectGroup grp in objsForEffectivePermissions) { uint groupPerms = grp.GetEffectivePermissions(true); - if ((grp.RootPart.BaseMask & (uint)PermissionMask.Modify) != 0) - groupPerms |= (uint)PermissionMask.Modify; +// if ((grp.RootPart.BaseMask & (uint)PermissionMask.Modify) != 0) +// groupPerms |= (uint)PermissionMask.Modify; effectivePerms &= groupPerms; } From 019b34ea390998f4d51c0cc6d05f79b37aa558eb Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Fri, 28 Apr 2017 23:05:14 +0100 Subject: [PATCH 10/40] BuySell: bug fix, use all object permitions for sold item, and not the operation rights one --- .../World/Objects/BuySell/BuySellModule.cs | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs b/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs index 90d65c7101..f90285df51 100644 --- a/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs +++ b/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs @@ -205,15 +205,20 @@ namespace OpenSim.Region.CoreModules.World.Objects.BuySell item.AssetType = asset.Type; item.InvType = (int)InventoryType.Object; item.Folder = categoryID; - - uint nextPerms=(perms & 7) << 13; - if ((nextPerms & (uint)PermissionMask.Copy) == 0) - perms &= ~(uint)PermissionMask.Copy; - if ((nextPerms & (uint)PermissionMask.Transfer) == 0) - perms &= ~(uint)PermissionMask.Transfer; - if ((nextPerms & (uint)PermissionMask.Modify) == 0) - perms &= ~(uint)PermissionMask.Modify; - + + perms = group.GetEffectivePermissions(false); + +// if((perms & (uint)PermissionMask.FoldedMask) != 0) + { + if ((perms & (uint)PermissionMask.FoldedCopy) == 0) + perms &= ~(uint)PermissionMask.Copy; + if ((perms & (uint)PermissionMask.FoldedTransfer) == 0) + perms &= ~(uint)PermissionMask.Transfer; + if ((perms & (uint)PermissionMask.FoldedModify) == 0) + perms &= ~(uint)PermissionMask.Modify; + if ((perms & (uint)PermissionMask.FoldedExport) == 0) + perms &= ~(uint)PermissionMask.Export; + } item.BasePermissions = perms & part.NextOwnerMask; item.CurrentPermissions = perms & part.NextOwnerMask; item.NextPermissions = part.NextOwnerMask; From 74f0ffbda6bf59d246d4fcc98fa2fa5fc3a06f5c Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sat, 29 Apr 2017 02:45:26 +0100 Subject: [PATCH 11/40] fix chain of contents sells --- OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index edf8cb6f00..668766bc48 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs @@ -1273,11 +1273,16 @@ namespace OpenSim.Region.Framework.Scenes { agentItem.BasePermissions = taskItem.BasePermissions & (taskItem.NextPermissions | (uint)PermissionMask.Move); if (taskItem.InvType == (int)InventoryType.Object) - agentItem.CurrentPermissions = agentItem.BasePermissions & (((taskItem.CurrentPermissions & 7) << 13) | (taskItem.CurrentPermissions & (uint)PermissionMask.Move)); + { + if((taskItem.CurrentPermissions & (uint)PermissionMask.FoldedMask) != 0) + agentItem.BasePermissions &= + (((taskItem.CurrentPermissions & (uint)PermissionMask.FoldedMask ) << (int)PermissionMask.FoldingShift) | + (taskItem.CurrentPermissions & (uint)PermissionMask.Move)); + } else - agentItem.CurrentPermissions = agentItem.BasePermissions & taskItem.CurrentPermissions; + agentItem.BasePermissions &= taskItem.CurrentPermissions; - agentItem.BasePermissions = agentItem.CurrentPermissions; + agentItem.CurrentPermissions = agentItem.BasePermissions; agentItem.Flags |= (uint)InventoryItemFlags.ObjectSlamPerm; agentItem.Flags &= ~(uint)(InventoryItemFlags.ObjectOverwriteBase | InventoryItemFlags.ObjectOverwriteOwner | InventoryItemFlags.ObjectOverwriteGroup | InventoryItemFlags.ObjectOverwriteEveryone | InventoryItemFlags.ObjectOverwriteNextOwner); From 725ccbb4774043be83fbaa26f3657acfa5313ebe Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sat, 29 Apr 2017 16:58:43 +0100 Subject: [PATCH 12/40] add check for valid folded perms --- OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index 668766bc48..a6f6aa33c5 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs @@ -699,13 +699,9 @@ namespace OpenSim.Region.Framework.Scenes // If this is an object, root prim perms may be more // permissive than folded perms. Use folded perms as // a mask - if (item.InvType == (int)InventoryType.Object) + uint foldedPerms = (item.CurrentPermissions & (uint)PermissionMask.FoldedMask) << (int)PermissionMask.FoldingShift; + if (foldedPerms != 0 && item.InvType == (int)InventoryType.Object) { - // Create a safe mask for the current perms - uint foldedPerms = (item.CurrentPermissions & 7) << 13; - if ((item.CurrentPermissions & (uint)PermissionMask.FoldedExport) != 0) - foldedPerms |= (uint)PermissionMask.Export; - foldedPerms |= permsMask; bool isRootMod = (item.CurrentPermissions & From 04117d9f75ca278a921be9ce09c8c859f81cd428 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sat, 29 Apr 2017 19:07:04 +0100 Subject: [PATCH 13/40] recover PermissionsUtil.ApplyFoldedPermissions (well my version). its use easys code readability --- .../RemoteController/RemoteAdminPlugin.cs | 12 +++---- OpenSim/Framework/PermissionsUtil.cs | 32 +++++++++++++++++++ OpenSim/Framework/Util.cs | 4 +-- .../InventoryAccess/InventoryAccessModule.cs | 17 ++++------ .../World/Objects/BuySell/BuySellModule.cs | 18 ++++------- .../Framework/Scenes/Scene.Inventory.cs | 12 ++++--- 6 files changed, 59 insertions(+), 36 deletions(-) diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index 1ee24689dc..510905f64e 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs @@ -3087,15 +3087,13 @@ namespace OpenSim.ApplicationPlugins.RemoteController /// private void ApplyNextOwnerPermissions(InventoryItemBase item) { - if (item.InvType == (int)InventoryType.Object && (item.CurrentPermissions & 7) != 0) + if (item.InvType == (int)InventoryType.Object) { - if ((item.CurrentPermissions & ((uint)PermissionMask.Copy >> 13)) == 0) - item.CurrentPermissions &= ~(uint)PermissionMask.Copy; - if ((item.CurrentPermissions & ((uint)PermissionMask.Transfer >> 13)) == 0) - item.CurrentPermissions &= ~(uint)PermissionMask.Transfer; - if ((item.CurrentPermissions & ((uint)PermissionMask.Modify >> 13)) == 0) - item.CurrentPermissions &= ~(uint)PermissionMask.Modify; + uint perms = item.CurrentPermissions; + PermissionsUtil.ApplyFoldedPermissions(item.CurrentPermissions, ref perms); + item.CurrentPermissions = perms; } + item.CurrentPermissions &= item.NextPermissions; item.BasePermissions &= item.NextPermissions; item.EveryOnePermissions &= item.NextPermissions; diff --git a/OpenSim/Framework/PermissionsUtil.cs b/OpenSim/Framework/PermissionsUtil.cs index 3dce04dde0..a7f933c6cd 100644 --- a/OpenSim/Framework/PermissionsUtil.cs +++ b/OpenSim/Framework/PermissionsUtil.cs @@ -64,5 +64,37 @@ namespace OpenSim.Framework str = "."; return str; } + + public static void ApplyFoldedPermissions(uint source, ref uint target) + { + uint folded = source & (uint)PermissionMask.FoldedMask; + if(folded == 0) // invalid we need to ignore + return; + + folded <<= (int)PermissionMask.FoldingShift; + folded &= (uint)PermissionMask.UnfoldedMask; // not really necessary but well + folded |= ~(uint)PermissionMask.UnfoldedMask; + + uint tmp = target; + tmp &= folded; + target = tmp; + } + + // do not touch MOD + public static void ApplyNoModFoldedPermissions(uint source, ref uint target) + { + uint folded = source & (uint)PermissionMask.FoldedMask; + if(folded == 0) // invalid we need to ignore + return; + + folded <<= (int)PermissionMask.FoldingShift; + folded &= (uint)PermissionMask.UnfoldedMask; // not really necessary but well + folded |= (~(uint)PermissionMask.UnfoldedMask | (uint)PermissionMask.Modify); + + uint tmp = target; + tmp &= folded; + target = tmp; + } + } } diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index 4d025a9346..f6ded04cc1 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs @@ -92,8 +92,8 @@ namespace OpenSim.Framework // explicitly given All = 0x8e000, AllAndExport = 0x9e000, - AllEffective = 0x9e000 - + AllEffective = 0x9e000, + UnfoldedMask = 0x1e000 } /// diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index d916cc28a9..bce0610fd7 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -573,7 +573,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess InventoryItemBase item, SceneObjectGroup so, List objsForEffectivePermissions, IClientAPI remoteClient) { - uint effectivePerms = (uint)(PermissionMask.Copy | PermissionMask.Transfer | PermissionMask.Modify | PermissionMask.Move | PermissionMask.Export) | 7; + uint effectivePerms = (uint)(PermissionMask.Copy | PermissionMask.Transfer | PermissionMask.Modify | PermissionMask.Move | PermissionMask.Export | PermissionMask.FoldedMask); // For the porposes of inventory, an object is modify if the prims // are modify. This allows renaming an object that contains no @@ -586,19 +586,16 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess effectivePerms &= groupPerms; } - effectivePerms |= (uint)PermissionMask.Move; - + if (remoteClient != null && (remoteClient.AgentId != so.RootPart.OwnerID) && m_Scene.Permissions.PropagatePermissions()) { - if ((effectivePerms & (uint)PermissionMask.FoldedCopy) == 0) - effectivePerms &= ~(uint)PermissionMask.Copy; - if ((effectivePerms & (uint)PermissionMask.FoldedTransfer) == 0) - effectivePerms &= ~(uint)PermissionMask.Transfer; - if ((effectivePerms & (uint)PermissionMask.FoldedExport) == 0) - effectivePerms &= ~(uint)PermissionMask.Export; - + PermissionsUtil.ApplyNoModFoldedPermissions(effectivePerms, ref effectivePerms); + uint basePerms = effectivePerms & so.RootPart.NextOwnerMask; + // rebuild folded perms since we don't have then on inworld objects + // possible existent ones where already unfolded + if((basePerms & (uint)PermissionMask.Copy) == 0) basePerms |= (uint)PermissionMask.Transfer; diff --git a/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs b/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs index f90285df51..84f33d1bba 100644 --- a/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs +++ b/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs @@ -208,19 +208,13 @@ namespace OpenSim.Region.CoreModules.World.Objects.BuySell perms = group.GetEffectivePermissions(false); -// if((perms & (uint)PermissionMask.FoldedMask) != 0) - { - if ((perms & (uint)PermissionMask.FoldedCopy) == 0) - perms &= ~(uint)PermissionMask.Copy; - if ((perms & (uint)PermissionMask.FoldedTransfer) == 0) - perms &= ~(uint)PermissionMask.Transfer; - if ((perms & (uint)PermissionMask.FoldedModify) == 0) - perms &= ~(uint)PermissionMask.Modify; - if ((perms & (uint)PermissionMask.FoldedExport) == 0) - perms &= ~(uint)PermissionMask.Export; - } + PermissionsUtil.ApplyFoldedPermissions(perms, ref perms); + item.BasePermissions = perms & part.NextOwnerMask; - item.CurrentPermissions = perms & part.NextOwnerMask; + +// we need to rebuild folded here + + item.CurrentPermissions = item.BasePermissions; item.NextPermissions = part.NextOwnerMask; item.EveryOnePermissions = part.EveryoneMask & part.NextOwnerMask; diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index a6f6aa33c5..5e19a8ae1e 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs @@ -1267,17 +1267,19 @@ namespace OpenSim.Region.Framework.Scenes // TODO: Fix this after the inventory fixer exists and has beenr run if ((part.OwnerID != destAgent) && Permissions.PropagatePermissions()) { - agentItem.BasePermissions = taskItem.BasePermissions & (taskItem.NextPermissions | (uint)PermissionMask.Move); + agentItem.BasePermissions = taskItem.BasePermissions & taskItem.NextPermissions; if (taskItem.InvType == (int)InventoryType.Object) { - if((taskItem.CurrentPermissions & (uint)PermissionMask.FoldedMask) != 0) - agentItem.BasePermissions &= - (((taskItem.CurrentPermissions & (uint)PermissionMask.FoldedMask ) << (int)PermissionMask.FoldingShift) | - (taskItem.CurrentPermissions & (uint)PermissionMask.Move)); + uint perms = agentItem.BasePermissions; + PermissionsUtil.ApplyFoldedPermissions(taskItem.CurrentPermissions, ref perms ); + agentItem.BasePermissions = perms; } else agentItem.BasePermissions &= taskItem.CurrentPermissions; + // always unlock + agentItem.BasePermissions |= (uint)PermissionMask.Move; + agentItem.CurrentPermissions = agentItem.BasePermissions; agentItem.Flags |= (uint)InventoryItemFlags.ObjectSlamPerm; From 522695c821c9f68d6c13533220de428f0d036dd7 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sat, 29 Apr 2017 22:09:45 +0100 Subject: [PATCH 14/40] update folded permitions if taking from world, or after unfold --- OpenSim/Framework/PermissionsUtil.cs | 28 +++++++++++++++---- .../InventoryAccess/InventoryAccessModule.cs | 15 ++-------- .../World/Objects/BuySell/BuySellModule.cs | 4 +-- .../Framework/Scenes/Scene.Inventory.cs | 6 ++-- 4 files changed, 30 insertions(+), 23 deletions(-) diff --git a/OpenSim/Framework/PermissionsUtil.cs b/OpenSim/Framework/PermissionsUtil.cs index a7f933c6cd..39ccaba2ff 100644 --- a/OpenSim/Framework/PermissionsUtil.cs +++ b/OpenSim/Framework/PermissionsUtil.cs @@ -65,9 +65,9 @@ namespace OpenSim.Framework return str; } - public static void ApplyFoldedPermissions(uint source, ref uint target) + public static void ApplyFoldedPermissions(uint foldedSourcePerms, ref uint targetPerms) { - uint folded = source & (uint)PermissionMask.FoldedMask; + uint folded = foldedSourcePerms & (uint)PermissionMask.FoldedMask; if(folded == 0) // invalid we need to ignore return; @@ -75,15 +75,15 @@ namespace OpenSim.Framework folded &= (uint)PermissionMask.UnfoldedMask; // not really necessary but well folded |= ~(uint)PermissionMask.UnfoldedMask; - uint tmp = target; + uint tmp = targetPerms; tmp &= folded; - target = tmp; + targetPerms = tmp; } // do not touch MOD - public static void ApplyNoModFoldedPermissions(uint source, ref uint target) + public static void ApplyNoModFoldedPermissions(uint foldedSourcePerms, ref uint target) { - uint folded = source & (uint)PermissionMask.FoldedMask; + uint folded = foldedSourcePerms & (uint)PermissionMask.FoldedMask; if(folded == 0) // invalid we need to ignore return; @@ -96,5 +96,21 @@ namespace OpenSim.Framework target = tmp; } + public static uint FixAndFoldPermissions(uint perms) + { + uint tmp = perms; + + // C & T rule + if((tmp & (uint)(PermissionMask.Copy | PermissionMask.Transfer)) == 0) + tmp |= (uint)PermissionMask.Transfer; + + // unlock + tmp |= (uint)PermissionMask.Move; + + tmp &= ~(uint)PermissionMask.FoldedMask; + tmp |= ((tmp >> (int)PermissionMask.FoldingShift) & (uint)PermissionMask.FoldedMask); + + return tmp; + } } } diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index bce0610fd7..d4f9c16e7d 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -594,16 +594,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess uint basePerms = effectivePerms & so.RootPart.NextOwnerMask; // rebuild folded perms since we don't have then on inworld objects - // possible existent ones where already unfolded - - if((basePerms & (uint)PermissionMask.Copy) == 0) - basePerms |= (uint)PermissionMask.Transfer; - - // unlock - basePerms |= (uint)PermissionMask.Move; - - basePerms &= ~(uint)PermissionMask.FoldedMask; - basePerms |= ((basePerms >> (int)PermissionMask.FoldingShift) & (uint)PermissionMask.FoldedMask); + basePerms = PermissionsUtil.FixAndFoldPermissions(basePerms); item.BasePermissions = basePerms; item.CurrentPermissions = item.BasePermissions; @@ -1146,9 +1137,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess if ((item.BasePermissions & (uint)PermissionMask.FoldedMask) != 0) { // We have permissions stored there so use them - part.NextOwnerMask = ((item.BasePermissions & 7) << 13); - if ((item.BasePermissions & (uint)PermissionMask.FoldedExport) != 0) - part.NextOwnerMask |= (uint)PermissionMask.Export; + part.NextOwnerMask = ((item.BasePermissions & (uint)PermissionMask.FoldedMask) << (int)PermissionMask.FoldingShift); part.NextOwnerMask |= (uint)PermissionMask.Move; } else diff --git a/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs b/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs index 84f33d1bba..af53aa3ef0 100644 --- a/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs +++ b/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs @@ -210,9 +210,9 @@ namespace OpenSim.Region.CoreModules.World.Objects.BuySell PermissionsUtil.ApplyFoldedPermissions(perms, ref perms); - item.BasePermissions = perms & part.NextOwnerMask; + perms &= part.NextOwnerMask; -// we need to rebuild folded here + item.BasePermissions = PermissionsUtil.FixAndFoldPermissions(perms); item.CurrentPermissions = item.BasePermissions; item.NextPermissions = part.NextOwnerMask; diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index 5e19a8ae1e..054957157a 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs @@ -1272,14 +1272,16 @@ namespace OpenSim.Region.Framework.Scenes { uint perms = agentItem.BasePermissions; PermissionsUtil.ApplyFoldedPermissions(taskItem.CurrentPermissions, ref perms ); - agentItem.BasePermissions = perms; +// perms |= (uint)PermissionMask.Move; +// agentItem.BasePermissions = perms; + agentItem.BasePermissions = PermissionsUtil.FixAndFoldPermissions(perms); } else agentItem.BasePermissions &= taskItem.CurrentPermissions; // always unlock agentItem.BasePermissions |= (uint)PermissionMask.Move; - + agentItem.CurrentPermissions = agentItem.BasePermissions; agentItem.Flags |= (uint)InventoryItemFlags.ObjectSlamPerm; From fedd1a93d28c86459e66a05f8ce189498b7ab354 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sat, 29 Apr 2017 23:09:32 +0100 Subject: [PATCH 15/40] buysell: fix permissions masks hierachy --- .../World/Objects/BuySell/BuySellModule.cs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs b/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs index af53aa3ef0..ca392b8f93 100644 --- a/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs +++ b/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs @@ -208,18 +208,20 @@ namespace OpenSim.Region.CoreModules.World.Objects.BuySell perms = group.GetEffectivePermissions(false); - PermissionsUtil.ApplyFoldedPermissions(perms, ref perms); + PermissionsUtil.ApplyNoModFoldedPermissions(perms, ref perms); perms &= part.NextOwnerMask; - item.BasePermissions = PermissionsUtil.FixAndFoldPermissions(perms); + perms = PermissionsUtil.FixAndFoldPermissions(perms); - item.CurrentPermissions = item.BasePermissions; - item.NextPermissions = part.NextOwnerMask; - item.EveryOnePermissions = part.EveryoneMask & - part.NextOwnerMask; - item.GroupPermissions = part.GroupMask & - part.NextOwnerMask; + item.BasePermissions = perms; + item.CurrentPermissions = perms; + + perms &= part.NextOwnerMask; + item.NextPermissions = perms; + + item.EveryOnePermissions = part.EveryoneMask & perms; + item.GroupPermissions = part.GroupMask & perms; item.Flags |= (uint)InventoryItemFlags.ObjectSlamPerm; item.CreationDate = Util.UnixTimeSinceEpoch(); From d8341588b3b7d855c381831ddf6ca5656a6be9c3 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sat, 29 Apr 2017 23:59:56 +0100 Subject: [PATCH 16/40] nore permissions masks hierachy --- .../InventoryAccess/InventoryAccessModule.cs | 8 +++--- .../World/Objects/BuySell/BuySellModule.cs | 6 ++--- .../Framework/Scenes/Scene.Inventory.cs | 26 +++++++++---------- 3 files changed, 18 insertions(+), 22 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index d4f9c16e7d..a32d7dc5ca 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -597,10 +597,10 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess basePerms = PermissionsUtil.FixAndFoldPermissions(basePerms); item.BasePermissions = basePerms; - item.CurrentPermissions = item.BasePermissions; - item.NextPermissions = effectivePerms & so.RootPart.NextOwnerMask; - item.EveryOnePermissions = so.RootPart.EveryoneMask & so.RootPart.NextOwnerMask; - item.GroupPermissions = so.RootPart.GroupMask & so.RootPart.NextOwnerMask; + item.CurrentPermissions = basePerms; + item.NextPermissions = basePerms & so.RootPart.NextOwnerMask; + item.EveryOnePermissions = basePerms & so.RootPart.EveryoneMask; + item.GroupPermissions = basePerms & so.RootPart.GroupMask; // apply next owner perms on rez item.Flags |= (uint)InventoryItemFlags.ObjectSlamPerm; diff --git a/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs b/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs index ca392b8f93..6854b53cf7 100644 --- a/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs +++ b/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs @@ -216,12 +216,10 @@ namespace OpenSim.Region.CoreModules.World.Objects.BuySell item.BasePermissions = perms; item.CurrentPermissions = perms; - - perms &= part.NextOwnerMask; - item.NextPermissions = perms; - + item.NextPermissions = part.NextOwnerMask & perms; item.EveryOnePermissions = part.EveryoneMask & perms; item.GroupPermissions = part.GroupMask & perms; + item.Flags |= (uint)InventoryItemFlags.ObjectSlamPerm; item.CreationDate = Util.UnixTimeSinceEpoch(); diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index 054957157a..a2cee81832 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs @@ -1267,29 +1267,27 @@ namespace OpenSim.Region.Framework.Scenes // TODO: Fix this after the inventory fixer exists and has beenr run if ((part.OwnerID != destAgent) && Permissions.PropagatePermissions()) { - agentItem.BasePermissions = taskItem.BasePermissions & taskItem.NextPermissions; + uint perms = taskItem.BasePermissions & taskItem.NextPermissions; if (taskItem.InvType == (int)InventoryType.Object) { - uint perms = agentItem.BasePermissions; - PermissionsUtil.ApplyFoldedPermissions(taskItem.CurrentPermissions, ref perms ); -// perms |= (uint)PermissionMask.Move; -// agentItem.BasePermissions = perms; - agentItem.BasePermissions = PermissionsUtil.FixAndFoldPermissions(perms); + PermissionsUtil.ApplyFoldedPermissions(taskItem.CurrentPermissions, ref perms ); + perms = PermissionsUtil.FixAndFoldPermissions(perms); } else - agentItem.BasePermissions &= taskItem.CurrentPermissions; + perms &= taskItem.CurrentPermissions; // always unlock - agentItem.BasePermissions |= (uint)PermissionMask.Move; + perms |= (uint)PermissionMask.Move; - agentItem.CurrentPermissions = agentItem.BasePermissions; - - agentItem.Flags |= (uint)InventoryItemFlags.ObjectSlamPerm; - agentItem.Flags &= ~(uint)(InventoryItemFlags.ObjectOverwriteBase | InventoryItemFlags.ObjectOverwriteOwner | InventoryItemFlags.ObjectOverwriteGroup | InventoryItemFlags.ObjectOverwriteEveryone | InventoryItemFlags.ObjectOverwriteNextOwner); - agentItem.NextPermissions = taskItem.NextPermissions; - agentItem.EveryOnePermissions = taskItem.EveryonePermissions & (taskItem.NextPermissions | (uint)PermissionMask.Move); + agentItem.BasePermissions = perms; + agentItem.CurrentPermissions = perms; + agentItem.NextPermissions = perms & taskItem.NextPermissions; + agentItem.EveryOnePermissions = perms & taskItem.EveryonePermissions; // Group permissions make no sense here agentItem.GroupPermissions = 0; + + agentItem.Flags |= (uint)InventoryItemFlags.ObjectSlamPerm; + agentItem.Flags &= ~(uint)(InventoryItemFlags.ObjectOverwriteBase | InventoryItemFlags.ObjectOverwriteOwner | InventoryItemFlags.ObjectOverwriteGroup | InventoryItemFlags.ObjectOverwriteEveryone | InventoryItemFlags.ObjectOverwriteNextOwner); } else { From 116d32d947e3c1446ce98dca0be62ea74055216d Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sun, 30 Apr 2017 00:14:45 +0100 Subject: [PATCH 17/40] don't break groups permission mask --- OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index a2cee81832..afdd99ea44 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs @@ -1283,8 +1283,7 @@ namespace OpenSim.Region.Framework.Scenes agentItem.CurrentPermissions = perms; agentItem.NextPermissions = perms & taskItem.NextPermissions; agentItem.EveryOnePermissions = perms & taskItem.EveryonePermissions; - // Group permissions make no sense here - agentItem.GroupPermissions = 0; + agentItem.GroupPermissions = perms & taskItem.GroupPermissions; agentItem.Flags |= (uint)InventoryItemFlags.ObjectSlamPerm; agentItem.Flags &= ~(uint)(InventoryItemFlags.ObjectOverwriteBase | InventoryItemFlags.ObjectOverwriteOwner | InventoryItemFlags.ObjectOverwriteGroup | InventoryItemFlags.ObjectOverwriteEveryone | InventoryItemFlags.ObjectOverwriteNextOwner); @@ -1295,7 +1294,7 @@ namespace OpenSim.Region.Framework.Scenes agentItem.CurrentPermissions = taskItem.CurrentPermissions; agentItem.NextPermissions = taskItem.NextPermissions; agentItem.EveryOnePermissions = taskItem.EveryonePermissions; - agentItem.GroupPermissions = 0; + agentItem.GroupPermissions = taskItem.GroupPermissions; } message = null; From 514249e80ec527c79157bce80f39b8adb1b344c1 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sun, 30 Apr 2017 12:43:09 +0100 Subject: [PATCH 18/40] fix new landmarks default permissions --- .../InventoryAccess/InventoryAccessModule.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index a32d7dc5ca..916ddb0a97 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -212,6 +212,8 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess if (m_Scene.TryGetScenePresence(remoteClient.AgentId, out presence)) { byte[] data = null; + uint everyonemask = 0; + uint groupmask = 0; if (invType == (sbyte)InventoryType.Landmark && presence != null) { @@ -220,6 +222,8 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess data = Encoding.ASCII.GetBytes(strdata); name = prefix + name; description += suffix; + groupmask = (uint)PermissionMask.AllAndExport; + everyonemask = (uint)(PermissionMask.AllAndExport & ~PermissionMask.Modify); } AssetBase asset = m_Scene.CreateAsset(name, description, assetType, data, remoteClient.AgentId); @@ -227,9 +231,10 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess m_Scene.CreateNewInventoryItem( remoteClient, remoteClient.AgentId.ToString(), string.Empty, folderID, name, description, 0, callbackID, asset.FullID, asset.Type, invType, - (uint)PermissionMask.All | (uint)PermissionMask.Export, // Base - (uint)PermissionMask.All | (uint)PermissionMask.Export, // Current - 0, nextOwnerMask, 0, creationDate, false); // Data from viewer + (uint)PermissionMask.AllAndExport, // Base + (uint)PermissionMask.AllAndExport, // Current + everyonemask, + nextOwnerMask, groupmask, creationDate, false); // Data from viewer } else { From 10922c2a1a129050e9b29fe1193d48edc1822fe9 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sun, 30 Apr 2017 12:51:12 +0100 Subject: [PATCH 19/40] exclude lms from permissions checks. They are full rights, and broken on all dbs --- .../Scenes/SceneObjectPartInventory.cs | 36 +++---------------- 1 file changed, 5 insertions(+), 31 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs index 894078dd8b..946ed09b9f 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs @@ -1332,6 +1332,8 @@ namespace OpenSim.Region.Framework.Scenes { foreach (TaskInventoryItem item in m_items.Values) { + if(item.InvType == (sbyte)InventoryType.Landmark) + continue; owner &= item.CurrentPermissions; group &= item.GroupPermissions; everyone &= item.EveryonePermissions; @@ -1346,6 +1348,9 @@ namespace OpenSim.Region.Framework.Scenes foreach (TaskInventoryItem item in m_items.Values) { + if(item.InvType == (sbyte)InventoryType.Landmark) + continue; + if ((item.CurrentPermissions & item.NextPermissions & (uint)PermissionMask.Copy) == 0) mask &= ~((uint)PermissionMask.FoldedCopy); if ((item.CurrentPermissions & item.NextPermissions & (uint)PermissionMask.Transfer) == 0) @@ -1353,19 +1358,6 @@ namespace OpenSim.Region.Framework.Scenes if ((item.CurrentPermissions & item.NextPermissions & (uint)PermissionMask.Export) == 0) mask &= ~((uint)PermissionMask.FoldedExport); - // this breaks some SL legal use cases - // there should be no folding from task inventory -/* - if (item.InvType == (int)InventoryType.Object) - { - if ((item.CurrentPermissions & ((uint)PermissionMask.FoldedCopy)) == 0) - mask &= ~((uint)PermissionMask.FoldedCopy); - if ((item.CurrentPermissions & ((uint)PermissionMask.FoldedTransfer)) == 0) - mask &= ~((uint)PermissionMask.FoldedTransfer); - if ((item.CurrentPermissions & (uint)PermissionMask.FoldedExport) == 0) - mask &= ~((uint)PermissionMask.FoldedExport); - } -*/ if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0) mask &= ~(uint)PermissionMask.Copy; if ((item.CurrentPermissions & (uint)PermissionMask.Transfer) == 0) @@ -1380,24 +1372,6 @@ namespace OpenSim.Region.Framework.Scenes { foreach (TaskInventoryItem item in m_items.Values) { - - // this breaks legal SL use cases - // there should be no unfold into task inventory -/* - if (item.InvType == (int)InventoryType.Object && (item.CurrentPermissions & (uint)PermissionMask.FoldedMask) != 0) - { -// m_log.DebugFormat ( -// "[SCENE OBJECT PART INVENTORY]: Applying next permissions {0} to {1} in {2} with current {3}, base {4}, everyone {5}", -// item.NextPermissions, item.Name, m_part.Name, item.CurrentPermissions, item.BasePermissions, item.EveryonePermissions); - - if ((item.CurrentPermissions & ((uint)PermissionMask.FoldedCopy)) == 0) - item.CurrentPermissions &= ~(uint)PermissionMask.Copy; - if ((item.CurrentPermissions & ((uint)PermissionMask.FoldedTransfer)) == 0) - item.CurrentPermissions &= ~(uint)PermissionMask.Transfer; - if ((item.CurrentPermissions & ((uint)PermissionMask.FoldedModify)) == 0) - item.CurrentPermissions &= ~(uint)PermissionMask.Modify; - } -*/ item.CurrentPermissions &= item.NextPermissions; item.BasePermissions &= item.NextPermissions; item.EveryonePermissions &= item.NextPermissions; From cf1064a2451271011d8575fba56f8aec361a9dc9 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Sun, 30 Apr 2017 13:24:48 +0100 Subject: [PATCH 20/40] Add a missing viewer-relevant message to the perms module --- .../Region/CoreModules/World/Permissions/PermissionsModule.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs index 8eee8640ab..18d164f1e1 100644 --- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs +++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs @@ -2022,7 +2022,10 @@ namespace OpenSim.Region.CoreModules.World.Permissions uint perms = GetObjectPermissions(sp, sog, true); if((perms & (uint)PermissionMask.Copy) == 0) + { + sp.ControllingClient.SendAgentAlertMessage("Copying this item has been denied by the permissions system", false); return false; + } if(sog.OwnerID != sp.UUID && (perms & (uint)PermissionMask.Transfer) == 0) return false; From b67904a6510d4827e8219a3534b8bc07a5115ec3 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sun, 30 Apr 2017 14:31:46 +0100 Subject: [PATCH 21/40] remove a redundant operation --- OpenSim/Framework/PermissionsUtil.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/OpenSim/Framework/PermissionsUtil.cs b/OpenSim/Framework/PermissionsUtil.cs index 39ccaba2ff..aba8320efe 100644 --- a/OpenSim/Framework/PermissionsUtil.cs +++ b/OpenSim/Framework/PermissionsUtil.cs @@ -72,7 +72,6 @@ namespace OpenSim.Framework return; folded <<= (int)PermissionMask.FoldingShift; - folded &= (uint)PermissionMask.UnfoldedMask; // not really necessary but well folded |= ~(uint)PermissionMask.UnfoldedMask; uint tmp = targetPerms; @@ -88,7 +87,6 @@ namespace OpenSim.Framework return; folded <<= (int)PermissionMask.FoldingShift; - folded &= (uint)PermissionMask.UnfoldedMask; // not really necessary but well folded |= (~(uint)PermissionMask.UnfoldedMask | (uint)PermissionMask.Modify); uint tmp = target; From 0d59a29dc7c6f732da266a4ed4fddb5b39521ddf Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sun, 30 Apr 2017 14:39:20 +0100 Subject: [PATCH 22/40] save some nanoseconds if unfolding will not change anything ( export default mks it rare, but looks nice) --- OpenSim/Framework/PermissionsUtil.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenSim/Framework/PermissionsUtil.cs b/OpenSim/Framework/PermissionsUtil.cs index aba8320efe..cf93323b7a 100644 --- a/OpenSim/Framework/PermissionsUtil.cs +++ b/OpenSim/Framework/PermissionsUtil.cs @@ -68,7 +68,7 @@ namespace OpenSim.Framework public static void ApplyFoldedPermissions(uint foldedSourcePerms, ref uint targetPerms) { uint folded = foldedSourcePerms & (uint)PermissionMask.FoldedMask; - if(folded == 0) // invalid we need to ignore + if(folded == 0 || folded == (uint)PermissionMask.FoldedMask) // invalid we need to ignore, or nothing to do return; folded <<= (int)PermissionMask.FoldingShift; @@ -83,7 +83,7 @@ namespace OpenSim.Framework public static void ApplyNoModFoldedPermissions(uint foldedSourcePerms, ref uint target) { uint folded = foldedSourcePerms & (uint)PermissionMask.FoldedMask; - if(folded == 0) // invalid we need to ignore + if(folded == 0 || folded == (uint)PermissionMask.FoldedMask) // invalid we need to ignore, or nothing to do return; folded <<= (int)PermissionMask.FoldingShift; From a96c0f760a3df08217794e71ec450abddf3c3ef0 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sun, 30 Apr 2017 14:42:20 +0100 Subject: [PATCH 23/40] having the file open then let PermissionsToString know about Export --- OpenSim/Framework/PermissionsUtil.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OpenSim/Framework/PermissionsUtil.cs b/OpenSim/Framework/PermissionsUtil.cs index cf93323b7a..e50d4df8ea 100644 --- a/OpenSim/Framework/PermissionsUtil.cs +++ b/OpenSim/Framework/PermissionsUtil.cs @@ -60,6 +60,8 @@ namespace OpenSim.Framework str += "C"; if ((perms & (int)PermissionMask.Transfer) != 0) str += "T"; + if ((perms & (int)PermissionMask.Export) != 0) + str += "X"; if (str == "") str = "."; return str; From 2dbf96593cf216595a1528afa2a668c0f38e1791 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sun, 30 Apr 2017 19:44:49 +0100 Subject: [PATCH 24/40] Permissions compatibility hack 1: anyone copy - new permissions require that all items in all object parts contents have anyone copy set. Old code only required it on object. This hack tries to allow objects older than today to still work as before on this. (this is a test, we may need to change it) --- .../Framework/Scenes/SceneObjectGroup.Inventory.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs index 42f47b5938..66c901301d 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs @@ -338,6 +338,8 @@ namespace OpenSim.Region.Framework.Scenes uint rootEveryonePerms = RootPart.EveryoneMask; uint everyone = rootEveryonePerms; + // date is time of writing april 30th 2017 + bool newObject = (RootPart.CreationDate == 0 || RootPart.CreationDate > 1493574994); SceneObjectPart[] parts = m_parts.GetArray(); for (int i = 0; i < parts.Length; i++) { @@ -345,7 +347,8 @@ namespace OpenSim.Region.Framework.Scenes part.AggregateInnerPerms(); owner &= part.AggregatedInnerOwnerPerms; group &= part.AggregatedInnerGroupPerms; - everyone &= part.AggregatedInnerEveryonePerms; + if(newObject) + everyone &= part.AggregatedInnerEveryonePerms; } // recover modify and move rootOwnerPerms &= movemodmask; @@ -407,14 +410,16 @@ namespace OpenSim.Region.Framework.Scenes uint everyone = rootEveryonePerms; bool needUpdate = false; - + // date is time of writing april 30th 2017 + bool newObject = (RootPart.CreationDate == 0 || RootPart.CreationDate > 1493574994); SceneObjectPart[] parts = m_parts.GetArray(); for (int i = 0; i < parts.Length; i++) { SceneObjectPart part = parts[i]; owner &= part.AggregatedInnerOwnerPerms; group &= part.AggregatedInnerGroupPerms; - everyone &= part.AggregatedInnerEveryonePerms; + if(newObject) + everyone &= part.AggregatedInnerEveryonePerms; } // recover modify and move rootOwnerPerms &= movemodmask; From 442a736a4c3394ca0bc6cea9d9b6c2602d2b0b13 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sun, 30 Apr 2017 21:11:30 -0700 Subject: [PATCH 25/40] Add Permission tests project --- prebuild.xml | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/prebuild.xml b/prebuild.xml index c087def826..52fb74ac61 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -3300,7 +3300,46 @@ - + + + + ../../../bin/ + + + + + ../../../bin/ + + + + ../../../bin/ + + + + + + + + + + + + + + + + + + + + + + + + + + + From 60dc124872c52fb50cbf2f4413bd8813e50c527b Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Mon, 1 May 2017 14:18:59 +0100 Subject: [PATCH 26/40] rename sog.GetEffectivePermissions() since its use is now limited to more specific task, and no longer on current effective(full) path. Note that change ownermask start to be current ownermask, and filter it to all parts basemask --- .../InventoryAccess/InventoryAccessModule.cs | 17 +++++------------ .../World/Objects/BuySell/BuySellModule.cs | 10 +++++----- .../Scenes/SceneObjectGroup.Inventory.cs | 11 +++-------- 3 files changed, 13 insertions(+), 25 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 916ddb0a97..f1885dad14 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -579,26 +579,19 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess IClientAPI remoteClient) { uint effectivePerms = (uint)(PermissionMask.Copy | PermissionMask.Transfer | PermissionMask.Modify | PermissionMask.Move | PermissionMask.Export | PermissionMask.FoldedMask); - - // For the porposes of inventory, an object is modify if the prims - // are modify. This allows renaming an object that contains no - // mod items. + foreach (SceneObjectGroup grp in objsForEffectivePermissions) { - uint groupPerms = grp.GetEffectivePermissions(true); -// if ((grp.RootPart.BaseMask & (uint)PermissionMask.Modify) != 0) -// groupPerms |= (uint)PermissionMask.Modify; - - effectivePerms &= groupPerms; + effectivePerms &= grp.CurrentAndFoldedNextPermissions(); } if (remoteClient != null && (remoteClient.AgentId != so.RootPart.OwnerID) && m_Scene.Permissions.PropagatePermissions()) { + // apply parts inventory items next owner PermissionsUtil.ApplyNoModFoldedPermissions(effectivePerms, ref effectivePerms); - + // change to next owner uint basePerms = effectivePerms & so.RootPart.NextOwnerMask; - - // rebuild folded perms since we don't have then on inworld objects + // fix and update folded basePerms = PermissionsUtil.FixAndFoldPermissions(basePerms); item.BasePermissions = basePerms; diff --git a/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs b/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs index 6854b53cf7..d1a109ee6c 100644 --- a/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs +++ b/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs @@ -206,12 +206,12 @@ namespace OpenSim.Region.CoreModules.World.Objects.BuySell item.InvType = (int)InventoryType.Object; item.Folder = categoryID; - perms = group.GetEffectivePermissions(false); - + perms = group.CurrentAndFoldedNextPermissions(); + // apply parts inventory next perms PermissionsUtil.ApplyNoModFoldedPermissions(perms, ref perms); - - perms &= part.NextOwnerMask; - + // change to next owner perms + perms &= part.NextOwnerMask; + // update folded perms = PermissionsUtil.FixAndFoldPermissions(perms); item.BasePermissions = perms; diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs index 66c901301d..36844a9909 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs @@ -484,7 +484,7 @@ namespace OpenSim.Region.Framework.Scenes } } - public uint GetEffectivePermissions(bool useBase) + public uint CurrentAndFoldedNextPermissions() { uint perms=(uint)(PermissionMask.Modify | PermissionMask.Copy | @@ -492,18 +492,13 @@ namespace OpenSim.Region.Framework.Scenes PermissionMask.Transfer | PermissionMask.FoldedMask); - uint ownerMask = 0x7fffffff; + uint ownerMask = RootPart.OwnerMask; SceneObjectPart[] parts = m_parts.GetArray(); for (int i = 0; i < parts.Length; i++) { SceneObjectPart part = parts[i]; - - if (useBase) - ownerMask &= part.BaseMask; - else - ownerMask &= part.OwnerMask; - + ownerMask &= part.BaseMask; perms &= part.Inventory.MaskEffectivePermissions(); } From 28d8eda768a64e1eff9edf3006f494d4f0d62bc3 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Mon, 1 May 2017 14:42:38 +0100 Subject: [PATCH 27/40] buysell: make sure we dont buy child parts, dont mess with absolute position its useless with variable size regions, and its a rezing job --- .../World/Objects/BuySell/BuySellModule.cs | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs b/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs index d1a109ee6c..a7a9d1ddb7 100644 --- a/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs +++ b/OpenSim/Region/CoreModules/World/Objects/BuySell/BuySellModule.cs @@ -118,6 +118,11 @@ namespace OpenSim.Region.CoreModules.World.Objects.BuySell return false; SceneObjectGroup group = part.ParentGroup; + if(group == null || group.IsDeleted || group.inTransit) + return false; + + // make sure we are not buying a child part + part = group.RootPart; switch (saleType) { @@ -157,18 +162,6 @@ namespace OpenSim.Region.CoreModules.World.Objects.BuySell break; case 2: // Sell a copy - Vector3 inventoryStoredPosition = new Vector3( - Math.Min(group.AbsolutePosition.X, m_scene.RegionInfo.RegionSizeX - 6), - Math.Min(group.AbsolutePosition.Y, m_scene.RegionInfo.RegionSizeY - 6), - group.AbsolutePosition.Z); - - Vector3 originalPosition = group.AbsolutePosition; - - group.AbsolutePosition = inventoryStoredPosition; - - string sceneObjectXml = SceneObjectSerializer.ToOriginalXmlFormat(group); - group.AbsolutePosition = originalPosition; - uint perms = group.EffectiveOwnerPerms; if ((perms & (uint)PermissionMask.Transfer) == 0) @@ -185,6 +178,8 @@ namespace OpenSim.Region.CoreModules.World.Objects.BuySell return false; } + string sceneObjectXml = SceneObjectSerializer.ToOriginalXmlFormat(group); + AssetBase asset = m_scene.CreateAsset( group.GetPartName(localID), group.GetPartDescription(localID), From 45096b6238a3b6335429a680fa0bae0a6c0ce190 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Mon, 1 May 2017 07:06:50 -0700 Subject: [PATCH 28/40] Initial commit of the emerging test suite for permissions and more. --- .../Tests/Permissions/DirectTransferTests.cs | 252 ++++++++++++++++++ 1 file changed, 252 insertions(+) create mode 100644 OpenSim/Tests/Permissions/DirectTransferTests.cs diff --git a/OpenSim/Tests/Permissions/DirectTransferTests.cs b/OpenSim/Tests/Permissions/DirectTransferTests.cs new file mode 100644 index 0000000000..771677669d --- /dev/null +++ b/OpenSim/Tests/Permissions/DirectTransferTests.cs @@ -0,0 +1,252 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Threading; +using Nini.Config; +using NUnit.Framework; +using OpenMetaverse; +using OpenSim.Framework; +using OpenSim.Region.Framework.Scenes; +using OpenSim.Region.CoreModules.World.Permissions; +using OpenSim.Region.CoreModules.Avatar.Inventory.Transfer; +using OpenSim.Region.CoreModules.Framework.InventoryAccess; +using OpenSim.Region.Framework.Scenes.Serialization; +using OpenSim.Services.Interfaces; +using OpenSim.Tests.Common; +using PermissionMask = OpenSim.Framework.PermissionMask; + +namespace OpenSim.Tests.Permissions +{ + /// + /// Basic scene object tests (create, read and delete but not update). + /// + [TestFixture] + public class DirectTransferTests : OpenSimTestCase + { + private static string Perms = "Owner: {0}; Group: {1}; Everyone: {2}; Next: {3}"; + protected TestScene m_Scene; + private ScenePresence[] m_Avatars = new ScenePresence[3]; + + [SetUp] + public override void SetUp() + { + base.SetUp(); + TestHelpers.EnableLogging(); + + IConfigSource config = new IniConfigSource(); + config.AddConfig("Messaging"); + config.Configs["Messaging"].Set("InventoryTransferModule", "InventoryTransferModule"); + config.AddConfig("Modules"); + config.Configs["Modules"].Set("InventoryAccessModule", "BasicInventoryAccessModule"); + config.AddConfig("InventoryService"); + config.Configs["InventoryService"].Set("LocalServiceModule", "OpenSim.Services.InventoryService.dll:XInventoryService"); + config.Configs["InventoryService"].Set("StorageProvider", "OpenSim.Tests.Common.dll:TestXInventoryDataPlugin"); + + m_Scene = new SceneHelpers().SetupScene("Test", UUID.Random(), 1000, 1000, config); + // Add modules + SceneHelpers.SetupSceneModules(m_Scene, config, new DefaultPermissionsModule(), new InventoryTransferModule(), new BasicInventoryAccessModule()); + + // Add 3 avatars + for (int i = 0; i < 3; i++) + { + UUID id = TestHelpers.ParseTail(i+1); + + m_Avatars[i] = AddScenePresence("Bot", "Bot_" + i, id); + Assert.That(m_Avatars[i], Is.Not.Null); + Assert.That(m_Avatars[i].IsChildAgent, Is.False); + Assert.That(m_Avatars[i].UUID, Is.EqualTo(id)); + + Assert.That(m_Scene.GetScenePresences().Count, Is.EqualTo(i+1)); + } + } + + /// + /// Test adding an object to a scene. + /// + [Test] + public void TestGiveCBox() + { + TestHelpers.InMethod(); + + // Create a C Box + SceneObjectGroup boxC = AddSceneObject("Box C", 10, 1, m_Avatars[0].UUID); + + // field = 16 is NextOwner + // set = 1 means add the permission; set = 0 means remove permission + m_Scene.HandleObjectPermissionsUpdate((IClientAPI)m_Avatars[0].ClientView, m_Avatars[0].UUID, + ((IClientAPI)(m_Avatars[0].ClientView)).SessionId, 16, boxC.LocalId, (uint)PermissionMask.Copy, 1); + + m_Scene.HandleObjectPermissionsUpdate((IClientAPI)m_Avatars[0].ClientView, m_Avatars[0].UUID, + ((IClientAPI)(m_Avatars[0].ClientView)).SessionId, 16, boxC.LocalId, (uint)PermissionMask.Transfer, 0); + PrintPerms(boxC); + + Assert.True((boxC.RootPart.NextOwnerMask & (int)PermissionMask.Copy) != 0); + Assert.True((boxC.RootPart.NextOwnerMask & (int)PermissionMask.Modify) == 0); + Assert.True((boxC.RootPart.NextOwnerMask & (int)PermissionMask.Transfer) == 0); + + InventoryItemBase item = TakeCopyToInventory(boxC); + + GiveInventoryItem(item.ID, m_Avatars[0], m_Avatars[1]); + + item = GetItemFromInventory(m_Avatars[1].UUID, "Objects", "Box C"); + + // Check the receiver + PrintPerms(item); + Assert.True((item.BasePermissions & (int)PermissionMask.Copy) != 0); + Assert.True((item.BasePermissions & (int)PermissionMask.Modify) == 0); + Assert.True((item.BasePermissions & (int)PermissionMask.Transfer) == 0); + + // Rez it and check perms in scene too + m_Scene.RezObject(m_Avatars[1].ControllingClient, item.ID, UUID.Zero, Vector3.One, Vector3.Zero, UUID.Zero, 0, false, false, false, UUID.Zero); + Assert.That(m_Scene.GetSceneObjectGroups().Count, Is.EqualTo(2)); + SceneObjectGroup copyBoxC = m_Scene.GetSceneObjectGroups().Find(sog => sog.OwnerID == m_Avatars[1].UUID); + PrintPerms(copyBoxC); + Assert.That(copyBoxC, Is.Not.Null); + + } + + #region Helper Functions + + private void PrintPerms(SceneObjectGroup sog) + { + Console.WriteLine("SOG " + sog.Name + ": " + String.Format(Perms, (PermissionMask)sog.EffectiveOwnerPerms, + (PermissionMask)sog.EffectiveGroupPerms, (PermissionMask)sog.EffectiveEveryOnePerms, (PermissionMask)sog.RootPart.NextOwnerMask)); + + } + + private void PrintPerms(InventoryItemBase item) + { + Console.WriteLine("Inv " + item.Name + ": " + String.Format(Perms, (PermissionMask)item.BasePermissions, + (PermissionMask)item.GroupPermissions, (PermissionMask)item.EveryOnePermissions, (PermissionMask)item.NextPermissions)); + + } + + private ScenePresence AddScenePresence(string first, string last, UUID id) + { + UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(m_Scene, first, last, id, "pw"); + ScenePresence sp = SceneHelpers.AddScenePresence(m_Scene, id); + Assert.That(m_Scene.AuthenticateHandler.GetAgentCircuitData(id), Is.Not.Null); + + return sp; + } + + private SceneObjectGroup AddSceneObject(string name, int suffix, int partsToTestCount, UUID ownerID) + { + TestHelpers.InMethod(); + + SceneObjectGroup so = SceneHelpers.CreateSceneObject(partsToTestCount, ownerID, name, suffix); + so.Name = name; + so.Description = name; + + Assert.That(m_Scene.AddNewSceneObject(so, false), Is.True); + SceneObjectGroup retrievedSo = m_Scene.GetSceneObjectGroup(so.UUID); + + // If the parts have the same UUID then we will consider them as one and the same + Assert.That(retrievedSo.PrimCount, Is.EqualTo(partsToTestCount)); + + return so; + } + + private InventoryItemBase TakeCopyToInventory(SceneObjectGroup sog) + { + InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(m_Scene.InventoryService, sog.OwnerID, "Objects"); + Assert.That(objsFolder, Is.Not.Null); + + List localIds = new List(); localIds.Add(sog.LocalId); + m_Scene.DeRezObjects((IClientAPI)m_Avatars[0].ClientView, localIds, sog.UUID, DeRezAction.TakeCopy, objsFolder.ID); + Thread.Sleep(5000); + + List items = m_Scene.InventoryService.GetFolderItems(sog.OwnerID, objsFolder.ID); + InventoryItemBase item = items.Find(i => i.Name == sog.Name); + Assert.That(item, Is.Not.Null); + + return item; + + } + + private InventoryItemBase GetItemFromInventory(UUID userID, string folderName, string itemName) + { + InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(m_Scene.InventoryService, userID, folderName); + Assert.That(objsFolder, Is.Not.Null); + List items = m_Scene.InventoryService.GetFolderItems(userID, objsFolder.ID); + InventoryItemBase item = items.Find(i => i.Name == itemName); + Assert.That(item, Is.Not.Null); + + return item; + } + + private void GiveInventoryItem(UUID itemId, ScenePresence giverSp, ScenePresence receiverSp) + { + TestClient giverClient = (TestClient)giverSp.ControllingClient; + TestClient receiverClient = (TestClient)receiverSp.ControllingClient; + + UUID initialSessionId = TestHelpers.ParseTail(0x10); + byte[] giveImBinaryBucket = new byte[17]; + byte[] itemIdBytes = itemId.GetBytes(); + Array.Copy(itemIdBytes, 0, giveImBinaryBucket, 1, itemIdBytes.Length); + + GridInstantMessage giveIm + = new GridInstantMessage( + m_Scene, + giverSp.UUID, + giverSp.Name, + receiverSp.UUID, + (byte)InstantMessageDialog.InventoryOffered, + false, + "inventory offered msg", + initialSessionId, + false, + Vector3.Zero, + giveImBinaryBucket, + true); + + giverClient.HandleImprovedInstantMessage(giveIm); + + // These details might not all be correct. + GridInstantMessage acceptIm + = new GridInstantMessage( + m_Scene, + receiverSp.UUID, + receiverSp.Name, + giverSp.UUID, + (byte)InstantMessageDialog.InventoryAccepted, + false, + "inventory accepted msg", + initialSessionId, + false, + Vector3.Zero, + null, + true); + + receiverClient.HandleImprovedInstantMessage(acceptIm); + } + #endregion + } +} \ No newline at end of file From 9c6dd5d967d44d2eb222a2382d9f19572b871d87 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Mon, 1 May 2017 10:09:31 -0700 Subject: [PATCH 29/40] Perms test framework: make a lot of things more generic. --- OpenSim/Tests/Permissions/Common.cs | 259 ++++++++++++++++++ .../Tests/Permissions/DirectTransferTests.cs | 212 +++----------- 2 files changed, 295 insertions(+), 176 deletions(-) create mode 100644 OpenSim/Tests/Permissions/Common.cs diff --git a/OpenSim/Tests/Permissions/Common.cs b/OpenSim/Tests/Permissions/Common.cs new file mode 100644 index 0000000000..63b91b62ba --- /dev/null +++ b/OpenSim/Tests/Permissions/Common.cs @@ -0,0 +1,259 @@ +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Threading; +using Nini.Config; +using NUnit.Framework; +using OpenMetaverse; +using OpenSim.Framework; +using OpenSim.Region.Framework.Scenes; +using OpenSim.Region.CoreModules.World.Permissions; +using OpenSim.Region.CoreModules.Avatar.Inventory.Transfer; +using OpenSim.Region.CoreModules.Framework.InventoryAccess; +using OpenSim.Region.Framework.Scenes.Serialization; +using OpenSim.Services.Interfaces; +using OpenSim.Tests.Common; +using PermissionMask = OpenSim.Framework.PermissionMask; + +namespace OpenSim.Tests.Permissions +{ + [SetUpFixture] + public class Common : OpenSimTestCase + { + public static Common TheInstance; + + public static TestScene TheScene + { + get { return TheInstance.m_Scene; } + } + + public static ScenePresence[] TheAvatars + { + get { return TheInstance.m_Avatars; } + } + + private static string Perms = "Owner: {0}; Group: {1}; Everyone: {2}; Next: {3}"; + private TestScene m_Scene; + private ScenePresence[] m_Avatars = new ScenePresence[3]; + + [SetUp] + public override void SetUp() + { + if (TheInstance == null) + TheInstance = this; + + base.SetUp(); + TestHelpers.EnableLogging(); + + IConfigSource config = new IniConfigSource(); + config.AddConfig("Messaging"); + config.Configs["Messaging"].Set("InventoryTransferModule", "InventoryTransferModule"); + config.AddConfig("Modules"); + config.Configs["Modules"].Set("InventoryAccessModule", "BasicInventoryAccessModule"); + config.AddConfig("InventoryService"); + config.Configs["InventoryService"].Set("LocalServiceModule", "OpenSim.Services.InventoryService.dll:XInventoryService"); + config.Configs["InventoryService"].Set("StorageProvider", "OpenSim.Tests.Common.dll:TestXInventoryDataPlugin"); + + m_Scene = new SceneHelpers().SetupScene("Test", UUID.Random(), 1000, 1000, config); + // Add modules + SceneHelpers.SetupSceneModules(m_Scene, config, new DefaultPermissionsModule(), new InventoryTransferModule(), new BasicInventoryAccessModule()); + + SetUpBasicEnvironment(); + } + + /// + /// The basic environment consists of: + /// - 3 avatars: A1, A2, A3 + /// - 6 simple boxes inworld belonging to A0 and with Next Owner perms: + /// C, CT, MC, MCT, MT, T + /// - Copies of all of these boxes in A0's inventory in the Objects folder + /// - One additional box in A0's inventory which is a copy of MCT, but + /// with C removed in inventory. This one is called MCT-C + /// + private void SetUpBasicEnvironment() + { + Console.WriteLine("===> SetUpBasicEnvironment <==="); + + // Add 3 avatars + for (int i = 0; i < 3; i++) + { + UUID id = TestHelpers.ParseTail(i + 1); + + m_Avatars[i] = AddScenePresence("Bot", "Bot_" + (i+1), id); + Assert.That(m_Avatars[i], Is.Not.Null); + Assert.That(m_Avatars[i].IsChildAgent, Is.False); + Assert.That(m_Avatars[i].UUID, Is.EqualTo(id)); + Assert.That(m_Scene.GetScenePresences().Count, Is.EqualTo(i + 1)); + } + + AddA1Object("Box C", 10, PermissionMask.Copy); + AddA1Object("Box CT", 11, PermissionMask.Copy | PermissionMask.Transfer); + AddA1Object("Box MC", 12, PermissionMask.Modify | PermissionMask.Copy); + AddA1Object("Box MCT", 13, PermissionMask.Modify | PermissionMask.Copy | PermissionMask.Transfer); + AddA1Object("Box MT", 14, PermissionMask.Modify | PermissionMask.Transfer); + AddA1Object("Box T", 15, PermissionMask.Transfer); + + Thread.Sleep(5000); + + InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(m_Scene.InventoryService, m_Avatars[0].UUID, "Objects"); + List items = m_Scene.InventoryService.GetFolderItems(m_Avatars[0].UUID, objsFolder.ID); + Assert.That(items.Count, Is.EqualTo(6)); + } + + private ScenePresence AddScenePresence(string first, string last, UUID id) + { + UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(m_Scene, first, last, id, "pw"); + ScenePresence sp = SceneHelpers.AddScenePresence(m_Scene, id); + Assert.That(m_Scene.AuthenticateHandler.GetAgentCircuitData(id), Is.Not.Null); + + return sp; + } + + private void AddA1Object(string name, int suffix, PermissionMask nextOwnerPerms) + { + // Create a Box. Default permissions are just T + SceneObjectGroup box = AddSceneObject(name, suffix, 1, m_Avatars[0].UUID); + Assert.True((box.RootPart.NextOwnerMask & (int)PermissionMask.Copy) == 0); + Assert.True((box.RootPart.NextOwnerMask & (int)PermissionMask.Modify) == 0); + Assert.True((box.RootPart.NextOwnerMask & (int)PermissionMask.Transfer) != 0); + + // field = 16 is NextOwner + // set = 1 means add the permission; set = 0 means remove permission + + if ((nextOwnerPerms & PermissionMask.Copy) != 0) + m_Scene.HandleObjectPermissionsUpdate((IClientAPI)m_Avatars[0].ClientView, m_Avatars[0].UUID, + ((IClientAPI)(m_Avatars[0].ClientView)).SessionId, 16, box.LocalId, (uint)PermissionMask.Copy, 1); + + if ((nextOwnerPerms & PermissionMask.Modify) != 0) + m_Scene.HandleObjectPermissionsUpdate((IClientAPI)m_Avatars[0].ClientView, m_Avatars[0].UUID, + ((IClientAPI)(m_Avatars[0].ClientView)).SessionId, 16, box.LocalId, (uint)PermissionMask.Modify, 1); + + if ((nextOwnerPerms & PermissionMask.Transfer) == 0) + m_Scene.HandleObjectPermissionsUpdate((IClientAPI)m_Avatars[0].ClientView, m_Avatars[0].UUID, + ((IClientAPI)(m_Avatars[0].ClientView)).SessionId, 16, box.LocalId, (uint)PermissionMask.Transfer, 0); + + PrintPerms(box); + AssertPermissions(nextOwnerPerms, (PermissionMask)box.RootPart.NextOwnerMask, box.OwnerID.ToString().Substring(34) + " : " + box.Name); + + TakeCopyToInventory(box); + + } + + public void PrintPerms(SceneObjectGroup sog) + { + Console.WriteLine("SOG " + sog.Name + " (" + sog.OwnerID.ToString().Substring(34) + "): " + + String.Format(Perms, (PermissionMask)sog.EffectiveOwnerPerms, + (PermissionMask)sog.EffectiveGroupPerms, (PermissionMask)sog.EffectiveEveryOnePerms, (PermissionMask)sog.RootPart.NextOwnerMask)); + + } + + public void PrintPerms(InventoryItemBase item) + { + Console.WriteLine("Inv " + item.Name + " (" + item.Owner.ToString().Substring(34) + "): " + + String.Format(Perms, (PermissionMask)item.BasePermissions, + (PermissionMask)item.GroupPermissions, (PermissionMask)item.EveryOnePermissions, (PermissionMask)item.NextPermissions)); + + } + + public void AssertPermissions(PermissionMask desired, PermissionMask actual, string message) + { + if ((desired & PermissionMask.Copy) != 0) + Assert.True((actual & PermissionMask.Copy) != 0, message); + else + Assert.True((actual & PermissionMask.Copy) == 0, message); + + if ((desired & PermissionMask.Modify) != 0) + Assert.True((actual & PermissionMask.Modify) != 0, message); + else + Assert.True((actual & PermissionMask.Modify) == 0, message); + + if ((desired & PermissionMask.Transfer) != 0) + Assert.True((actual & PermissionMask.Transfer) != 0, message); + else + Assert.True((actual & PermissionMask.Transfer) == 0, message); + + } + + public SceneObjectGroup AddSceneObject(string name, int suffix, int partsToTestCount, UUID ownerID) + { + SceneObjectGroup so = SceneHelpers.CreateSceneObject(partsToTestCount, ownerID, name, suffix); + so.Name = name; + so.Description = name; + + Assert.That(m_Scene.AddNewSceneObject(so, false), Is.True); + SceneObjectGroup retrievedSo = m_Scene.GetSceneObjectGroup(so.UUID); + + // If the parts have the same UUID then we will consider them as one and the same + Assert.That(retrievedSo.PrimCount, Is.EqualTo(partsToTestCount)); + + return so; + } + + public void TakeCopyToInventory(SceneObjectGroup sog) + { + InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(m_Scene.InventoryService, sog.OwnerID, "Objects"); + Assert.That(objsFolder, Is.Not.Null); + + List localIds = new List(); localIds.Add(sog.LocalId); + // This is an async operation + m_Scene.DeRezObjects((IClientAPI)m_Avatars[0].ClientView, localIds, sog.UUID, DeRezAction.TakeCopy, objsFolder.ID); + } + + public InventoryItemBase GetItemFromInventory(UUID userID, string folderName, string itemName) + { + InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(m_Scene.InventoryService, userID, folderName); + Assert.That(objsFolder, Is.Not.Null); + List items = m_Scene.InventoryService.GetFolderItems(userID, objsFolder.ID); + InventoryItemBase item = items.Find(i => i.Name == itemName); + Assert.That(item, Is.Not.Null); + + return item; + } + + public void GiveInventoryItem(UUID itemId, ScenePresence giverSp, ScenePresence receiverSp) + { + TestClient giverClient = (TestClient)giverSp.ControllingClient; + TestClient receiverClient = (TestClient)receiverSp.ControllingClient; + + UUID initialSessionId = TestHelpers.ParseTail(0x10); + byte[] giveImBinaryBucket = new byte[17]; + byte[] itemIdBytes = itemId.GetBytes(); + Array.Copy(itemIdBytes, 0, giveImBinaryBucket, 1, itemIdBytes.Length); + + GridInstantMessage giveIm + = new GridInstantMessage( + m_Scene, + giverSp.UUID, + giverSp.Name, + receiverSp.UUID, + (byte)InstantMessageDialog.InventoryOffered, + false, + "inventory offered msg", + initialSessionId, + false, + Vector3.Zero, + giveImBinaryBucket, + true); + + giverClient.HandleImprovedInstantMessage(giveIm); + + // These details might not all be correct. + GridInstantMessage acceptIm + = new GridInstantMessage( + m_Scene, + receiverSp.UUID, + receiverSp.Name, + giverSp.UUID, + (byte)InstantMessageDialog.InventoryAccepted, + false, + "inventory accepted msg", + initialSessionId, + false, + Vector3.Zero, + null, + true); + + receiverClient.HandleImprovedInstantMessage(acceptIm); + } + } +} diff --git a/OpenSim/Tests/Permissions/DirectTransferTests.cs b/OpenSim/Tests/Permissions/DirectTransferTests.cs index 771677669d..e103d01d1a 100644 --- a/OpenSim/Tests/Permissions/DirectTransferTests.cs +++ b/OpenSim/Tests/Permissions/DirectTransferTests.cs @@ -48,205 +48,65 @@ namespace OpenSim.Tests.Permissions /// Basic scene object tests (create, read and delete but not update). /// [TestFixture] - public class DirectTransferTests : OpenSimTestCase + public class DirectTransferTests { - private static string Perms = "Owner: {0}; Group: {1}; Everyone: {2}; Next: {3}"; - protected TestScene m_Scene; - private ScenePresence[] m_Avatars = new ScenePresence[3]; [SetUp] - public override void SetUp() + public void SetUp() { - base.SetUp(); - TestHelpers.EnableLogging(); - - IConfigSource config = new IniConfigSource(); - config.AddConfig("Messaging"); - config.Configs["Messaging"].Set("InventoryTransferModule", "InventoryTransferModule"); - config.AddConfig("Modules"); - config.Configs["Modules"].Set("InventoryAccessModule", "BasicInventoryAccessModule"); - config.AddConfig("InventoryService"); - config.Configs["InventoryService"].Set("LocalServiceModule", "OpenSim.Services.InventoryService.dll:XInventoryService"); - config.Configs["InventoryService"].Set("StorageProvider", "OpenSim.Tests.Common.dll:TestXInventoryDataPlugin"); - - m_Scene = new SceneHelpers().SetupScene("Test", UUID.Random(), 1000, 1000, config); - // Add modules - SceneHelpers.SetupSceneModules(m_Scene, config, new DefaultPermissionsModule(), new InventoryTransferModule(), new BasicInventoryAccessModule()); - - // Add 3 avatars - for (int i = 0; i < 3; i++) - { - UUID id = TestHelpers.ParseTail(i+1); - - m_Avatars[i] = AddScenePresence("Bot", "Bot_" + i, id); - Assert.That(m_Avatars[i], Is.Not.Null); - Assert.That(m_Avatars[i].IsChildAgent, Is.False); - Assert.That(m_Avatars[i].UUID, Is.EqualTo(id)); - - Assert.That(m_Scene.GetScenePresences().Count, Is.EqualTo(i+1)); - } } /// - /// Test adding an object to a scene. + /// Test giving a C object. /// [Test] public void TestGiveCBox() { TestHelpers.InMethod(); - // Create a C Box - SceneObjectGroup boxC = AddSceneObject("Box C", 10, 1, m_Avatars[0].UUID); + // C, CT, MC, MCT, MT, T + string[] names = new string[6] { "Box C", "Box CT", "Box MC", "Box MCT", "Box MT", "Box T"}; + PermissionMask[] perms = new PermissionMask[6] { + PermissionMask.Copy, + PermissionMask.Copy | PermissionMask.Transfer, + PermissionMask.Modify | PermissionMask.Copy, + PermissionMask.Modify | PermissionMask.Copy | PermissionMask.Transfer, + PermissionMask.Modify | PermissionMask.Transfer, + PermissionMask.Transfer + }; - // field = 16 is NextOwner - // set = 1 means add the permission; set = 0 means remove permission - m_Scene.HandleObjectPermissionsUpdate((IClientAPI)m_Avatars[0].ClientView, m_Avatars[0].UUID, - ((IClientAPI)(m_Avatars[0].ClientView)).SessionId, 16, boxC.LocalId, (uint)PermissionMask.Copy, 1); + for (int i = 0; i < 6; i++) + TestOneBox(names[i], perms[i]); + } - m_Scene.HandleObjectPermissionsUpdate((IClientAPI)m_Avatars[0].ClientView, m_Avatars[0].UUID, - ((IClientAPI)(m_Avatars[0].ClientView)).SessionId, 16, boxC.LocalId, (uint)PermissionMask.Transfer, 0); - PrintPerms(boxC); + private void TestOneBox(string name, PermissionMask mask) + { + InventoryItemBase item = Common.TheInstance.GetItemFromInventory(Common.TheAvatars[0].UUID, "Objects", name); - Assert.True((boxC.RootPart.NextOwnerMask & (int)PermissionMask.Copy) != 0); - Assert.True((boxC.RootPart.NextOwnerMask & (int)PermissionMask.Modify) == 0); - Assert.True((boxC.RootPart.NextOwnerMask & (int)PermissionMask.Transfer) == 0); + Common.TheInstance.GiveInventoryItem(item.ID, Common.TheAvatars[0], Common.TheAvatars[1]); - InventoryItemBase item = TakeCopyToInventory(boxC); - - GiveInventoryItem(item.ID, m_Avatars[0], m_Avatars[1]); - - item = GetItemFromInventory(m_Avatars[1].UUID, "Objects", "Box C"); + item = Common.TheInstance.GetItemFromInventory(Common.TheAvatars[1].UUID, "Objects", name); // Check the receiver - PrintPerms(item); - Assert.True((item.BasePermissions & (int)PermissionMask.Copy) != 0); - Assert.True((item.BasePermissions & (int)PermissionMask.Modify) == 0); - Assert.True((item.BasePermissions & (int)PermissionMask.Transfer) == 0); + Common.TheInstance.PrintPerms(item); + Common.TheInstance.AssertPermissions(mask, (PermissionMask)item.BasePermissions, item.Owner.ToString().Substring(34) + " : " + item.Name); + int nObjects = Common.TheScene.GetSceneObjectGroups().Count; // Rez it and check perms in scene too - m_Scene.RezObject(m_Avatars[1].ControllingClient, item.ID, UUID.Zero, Vector3.One, Vector3.Zero, UUID.Zero, 0, false, false, false, UUID.Zero); - Assert.That(m_Scene.GetSceneObjectGroups().Count, Is.EqualTo(2)); - SceneObjectGroup copyBoxC = m_Scene.GetSceneObjectGroups().Find(sog => sog.OwnerID == m_Avatars[1].UUID); - PrintPerms(copyBoxC); - Assert.That(copyBoxC, Is.Not.Null); + Common.TheScene.RezObject(Common.TheAvatars[1].ControllingClient, item.ID, UUID.Zero, Vector3.One, Vector3.Zero, UUID.Zero, 0, false, false, false, UUID.Zero); + Assert.That(Common.TheScene.GetSceneObjectGroups().Count, Is.EqualTo(nObjects + 1)); + + SceneObjectGroup box = Common.TheScene.GetSceneObjectGroups().Find(sog => sog.OwnerID == Common.TheAvatars[1].UUID && sog.Name == name); + Common.TheInstance.PrintPerms(box); + Assert.That(box, Is.Not.Null); + + // Check Owner permissions + Common.TheInstance.AssertPermissions(mask, (PermissionMask)box.EffectiveOwnerPerms, box.OwnerID.ToString().Substring(34) + " : " + box.Name); + + // Check Next Owner permissions + Common.TheInstance.AssertPermissions(mask, (PermissionMask)box.RootPart.NextOwnerMask, box.OwnerID.ToString().Substring(34) + " : " + box.Name); } - #region Helper Functions - - private void PrintPerms(SceneObjectGroup sog) - { - Console.WriteLine("SOG " + sog.Name + ": " + String.Format(Perms, (PermissionMask)sog.EffectiveOwnerPerms, - (PermissionMask)sog.EffectiveGroupPerms, (PermissionMask)sog.EffectiveEveryOnePerms, (PermissionMask)sog.RootPart.NextOwnerMask)); - - } - - private void PrintPerms(InventoryItemBase item) - { - Console.WriteLine("Inv " + item.Name + ": " + String.Format(Perms, (PermissionMask)item.BasePermissions, - (PermissionMask)item.GroupPermissions, (PermissionMask)item.EveryOnePermissions, (PermissionMask)item.NextPermissions)); - - } - - private ScenePresence AddScenePresence(string first, string last, UUID id) - { - UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(m_Scene, first, last, id, "pw"); - ScenePresence sp = SceneHelpers.AddScenePresence(m_Scene, id); - Assert.That(m_Scene.AuthenticateHandler.GetAgentCircuitData(id), Is.Not.Null); - - return sp; - } - - private SceneObjectGroup AddSceneObject(string name, int suffix, int partsToTestCount, UUID ownerID) - { - TestHelpers.InMethod(); - - SceneObjectGroup so = SceneHelpers.CreateSceneObject(partsToTestCount, ownerID, name, suffix); - so.Name = name; - so.Description = name; - - Assert.That(m_Scene.AddNewSceneObject(so, false), Is.True); - SceneObjectGroup retrievedSo = m_Scene.GetSceneObjectGroup(so.UUID); - - // If the parts have the same UUID then we will consider them as one and the same - Assert.That(retrievedSo.PrimCount, Is.EqualTo(partsToTestCount)); - - return so; - } - - private InventoryItemBase TakeCopyToInventory(SceneObjectGroup sog) - { - InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(m_Scene.InventoryService, sog.OwnerID, "Objects"); - Assert.That(objsFolder, Is.Not.Null); - - List localIds = new List(); localIds.Add(sog.LocalId); - m_Scene.DeRezObjects((IClientAPI)m_Avatars[0].ClientView, localIds, sog.UUID, DeRezAction.TakeCopy, objsFolder.ID); - Thread.Sleep(5000); - - List items = m_Scene.InventoryService.GetFolderItems(sog.OwnerID, objsFolder.ID); - InventoryItemBase item = items.Find(i => i.Name == sog.Name); - Assert.That(item, Is.Not.Null); - - return item; - - } - - private InventoryItemBase GetItemFromInventory(UUID userID, string folderName, string itemName) - { - InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(m_Scene.InventoryService, userID, folderName); - Assert.That(objsFolder, Is.Not.Null); - List items = m_Scene.InventoryService.GetFolderItems(userID, objsFolder.ID); - InventoryItemBase item = items.Find(i => i.Name == itemName); - Assert.That(item, Is.Not.Null); - - return item; - } - - private void GiveInventoryItem(UUID itemId, ScenePresence giverSp, ScenePresence receiverSp) - { - TestClient giverClient = (TestClient)giverSp.ControllingClient; - TestClient receiverClient = (TestClient)receiverSp.ControllingClient; - - UUID initialSessionId = TestHelpers.ParseTail(0x10); - byte[] giveImBinaryBucket = new byte[17]; - byte[] itemIdBytes = itemId.GetBytes(); - Array.Copy(itemIdBytes, 0, giveImBinaryBucket, 1, itemIdBytes.Length); - - GridInstantMessage giveIm - = new GridInstantMessage( - m_Scene, - giverSp.UUID, - giverSp.Name, - receiverSp.UUID, - (byte)InstantMessageDialog.InventoryOffered, - false, - "inventory offered msg", - initialSessionId, - false, - Vector3.Zero, - giveImBinaryBucket, - true); - - giverClient.HandleImprovedInstantMessage(giveIm); - - // These details might not all be correct. - GridInstantMessage acceptIm - = new GridInstantMessage( - m_Scene, - receiverSp.UUID, - receiverSp.Name, - giverSp.UUID, - (byte)InstantMessageDialog.InventoryAccepted, - false, - "inventory accepted msg", - initialSessionId, - false, - Vector3.Zero, - null, - true); - - receiverClient.HandleImprovedInstantMessage(acceptIm); - } - #endregion } } \ No newline at end of file From 1ca2a7937ebf246bb2ebe4b1355f8068912ea4b0 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Mon, 1 May 2017 14:58:03 -0700 Subject: [PATCH 30/40] Permissions tests: added test with 2 direct transfers with permission changes in between (in inventory) --- OpenSim/Tests/Permissions/Common.cs | 64 ++++++++++++++++++- .../Tests/Permissions/DirectTransferTests.cs | 51 +++++++++++++-- 2 files changed, 110 insertions(+), 5 deletions(-) diff --git a/OpenSim/Tests/Permissions/Common.cs b/OpenSim/Tests/Permissions/Common.cs index 63b91b62ba..84dadf28a3 100644 --- a/OpenSim/Tests/Permissions/Common.cs +++ b/OpenSim/Tests/Permissions/Common.cs @@ -93,11 +93,16 @@ namespace OpenSim.Tests.Permissions AddA1Object("Box MT", 14, PermissionMask.Modify | PermissionMask.Transfer); AddA1Object("Box T", 15, PermissionMask.Transfer); + // MCT-C + AddA1Object("Box MCT-C", 16, PermissionMask.Modify | PermissionMask.Copy | PermissionMask.Transfer); + Thread.Sleep(5000); InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(m_Scene.InventoryService, m_Avatars[0].UUID, "Objects"); List items = m_Scene.InventoryService.GetFolderItems(m_Avatars[0].UUID, objsFolder.ID); - Assert.That(items.Count, Is.EqualTo(6)); + Assert.That(items.Count, Is.EqualTo(7)); + + RevokePermission(0, "Box MCT-C", PermissionMask.Copy); } private ScenePresence AddScenePresence(string first, string last, UUID id) @@ -139,6 +144,30 @@ namespace OpenSim.Tests.Permissions } + public void RevokePermission(int ownerIndex, string name, PermissionMask perm) + { + InventoryItemBase item = Common.TheInstance.GetItemFromInventory(m_Avatars[ownerIndex].UUID, "Objects", name); + Assert.That(item, Is.Not.Null); + + // Clone it, so to avoid aliasing -- just like the viewer does. + InventoryItemBase clone = Common.TheInstance.CloneInventoryItem(item); + // Revoke the permission in this copy + clone.NextPermissions &= ~(uint)perm; + Common.TheInstance.AssertPermissions((PermissionMask)clone.NextPermissions & ~perm, + (PermissionMask)clone.NextPermissions, Common.TheInstance.IdStr(clone)); + Assert.That(clone.ID == item.ID); + + // Update properties of the item in inventory. This should affect the original item above. + Common.TheScene.UpdateInventoryItemAsset(m_Avatars[ownerIndex].ControllingClient, UUID.Zero, clone.ID, clone); + + item = Common.TheInstance.GetItemFromInventory(m_Avatars[ownerIndex].UUID, "Objects", name); + Assert.That(item, Is.Not.Null); + Common.TheInstance.PrintPerms(item); + Common.TheInstance.AssertPermissions((PermissionMask)item.NextPermissions & ~perm, + (PermissionMask)item.NextPermissions, Common.TheInstance.IdStr(item)); + + } + public void PrintPerms(SceneObjectGroup sog) { Console.WriteLine("SOG " + sog.Name + " (" + sog.OwnerID.ToString().Substring(34) + "): " + @@ -210,6 +239,39 @@ namespace OpenSim.Tests.Permissions return item; } + public InventoryItemBase CloneInventoryItem(InventoryItemBase item) + { + InventoryItemBase clone = new InventoryItemBase(item.ID); + clone.Name = item.Name; + clone.Description = item.Description; + clone.AssetID = item.AssetID; + clone.AssetType = item.AssetType; + clone.BasePermissions = item.BasePermissions; + clone.CreatorId = item.CreatorId; + clone.CurrentPermissions = item.CurrentPermissions; + clone.EveryOnePermissions = item.EveryOnePermissions; + clone.Flags = item.Flags; + clone.Folder = item.Folder; + clone.GroupID = item.GroupID; + clone.GroupOwned = item.GroupOwned; + clone.GroupPermissions = item.GroupPermissions; + clone.InvType = item.InvType; + clone.NextPermissions = item.NextPermissions; + clone.Owner = item.Owner; + + return clone; + } + + public string IdStr(InventoryItemBase item) + { + return item.Owner.ToString().Substring(34) + " : " + item.Name; + } + + public string IdStr(SceneObjectGroup sog) + { + return sog.OwnerID.ToString().Substring(34) + " : " + sog.Name; + } + public void GiveInventoryItem(UUID itemId, ScenePresence giverSp, ScenePresence receiverSp) { TestClient giverClient = (TestClient)giverSp.ControllingClient; diff --git a/OpenSim/Tests/Permissions/DirectTransferTests.cs b/OpenSim/Tests/Permissions/DirectTransferTests.cs index e103d01d1a..3ca711aadf 100644 --- a/OpenSim/Tests/Permissions/DirectTransferTests.cs +++ b/OpenSim/Tests/Permissions/DirectTransferTests.cs @@ -48,7 +48,7 @@ namespace OpenSim.Tests.Permissions /// Basic scene object tests (create, read and delete but not update). /// [TestFixture] - public class DirectTransferTests + public class DirectTransferTests { [SetUp] @@ -57,15 +57,15 @@ namespace OpenSim.Tests.Permissions } /// - /// Test giving a C object. + /// Test giving simple objecta with various combinations of next owner perms. /// [Test] - public void TestGiveCBox() + public void TestGiveBox() { TestHelpers.InMethod(); // C, CT, MC, MCT, MT, T - string[] names = new string[6] { "Box C", "Box CT", "Box MC", "Box MCT", "Box MT", "Box T"}; + string[] names = new string[6] { "Box C", "Box CT", "Box MC", "Box MCT", "Box MT", "Box T" }; PermissionMask[] perms = new PermissionMask[6] { PermissionMask.Copy, PermissionMask.Copy | PermissionMask.Transfer, @@ -108,5 +108,48 @@ namespace OpenSim.Tests.Permissions } + /// + /// Test giving simple objecta with variour combinations of next owner perms. + /// + [Test] + public void TestDoubleGiveWithChange() + { + TestHelpers.InMethod(); + + string name = "Box MCT-C"; + InventoryItemBase item = Common.TheInstance.GetItemFromInventory(Common.TheAvatars[0].UUID, "Objects", name); + + // Now give the item to A2. We give the original item, not a clone. + // The giving methods are supposed to duplicate it. + Common.TheInstance.GiveInventoryItem(item.ID, Common.TheAvatars[0], Common.TheAvatars[1]); + + item = Common.TheInstance.GetItemFromInventory(Common.TheAvatars[1].UUID, "Objects", name); + + // Check the receiver + Common.TheInstance.PrintPerms(item); + Common.TheInstance.AssertPermissions(PermissionMask.Modify | PermissionMask.Transfer, + (PermissionMask)item.BasePermissions, Common.TheInstance.IdStr(item)); + + // --------------------------- + // Second transfer + //---------------------------- + + // A2 revokes M + Common.TheInstance.RevokePermission(1, name, PermissionMask.Modify); + + item = Common.TheInstance.GetItemFromInventory(Common.TheAvatars[1].UUID, "Objects", name); + + // Now give the item to A3. We give the original item, not a clone. + // The giving methods are supposed to duplicate it. + Common.TheInstance.GiveInventoryItem(item.ID, Common.TheAvatars[1], Common.TheAvatars[2]); + + item = Common.TheInstance.GetItemFromInventory(Common.TheAvatars[2].UUID, "Objects", name); + + // Check the receiver + Common.TheInstance.PrintPerms(item); + Common.TheInstance.AssertPermissions(PermissionMask.Transfer, + (PermissionMask)item.BasePermissions, Common.TheInstance.IdStr(item)); + + } } } \ No newline at end of file From 8498cc2f02ef61e93d603dac28c21df4321609a1 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Mon, 1 May 2017 23:07:57 +0100 Subject: [PATCH 31/40] save a few nanoseconds --- .../Scenes/SceneObjectPartInventory.cs | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs index 946ed09b9f..8c9d0bb4e3 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs @@ -1351,19 +1351,26 @@ namespace OpenSim.Region.Framework.Scenes if(item.InvType == (sbyte)InventoryType.Landmark) continue; - if ((item.CurrentPermissions & item.NextPermissions & (uint)PermissionMask.Copy) == 0) - mask &= ~((uint)PermissionMask.FoldedCopy); - if ((item.CurrentPermissions & item.NextPermissions & (uint)PermissionMask.Transfer) == 0) + // apply current to normal permission bits + uint newperms = item.CurrentPermissions; + + if ((newperms & (uint)PermissionMask.Copy) == 0) + mask &= ~(uint)PermissionMask.Copy; + if ((newperms & (uint)PermissionMask.Transfer) == 0) + mask &= ~(uint)PermissionMask.Transfer; + if ((newperms & (uint)PermissionMask.Export) == 0) + mask &= ~((uint)PermissionMask.Export); + + // apply next owner restricted by current to folded bits + newperms &= item.NextPermissions; + + if ((newperms & (uint)PermissionMask.Copy) == 0) + mask &= ~((uint)PermissionMask.FoldedCopy); + if ((newperms & (uint)PermissionMask.Transfer) == 0) mask &= ~((uint)PermissionMask.FoldedTransfer); - if ((item.CurrentPermissions & item.NextPermissions & (uint)PermissionMask.Export) == 0) + if ((newperms & (uint)PermissionMask.Export) == 0) mask &= ~((uint)PermissionMask.FoldedExport); - if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0) - mask &= ~(uint)PermissionMask.Copy; - if ((item.CurrentPermissions & (uint)PermissionMask.Transfer) == 0) - mask &= ~(uint)PermissionMask.Transfer; - if ((item.CurrentPermissions & (uint)PermissionMask.Export) == 0) - mask &= ~((uint)PermissionMask.Export); } return mask; } From 3c43cdbbcc2687e2f5d4319c5c3c3cbad4930fab Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Mon, 1 May 2017 16:42:47 -0700 Subject: [PATCH 32/40] Added some indirect transfer tests -- Take Copy by another avatar --- OpenSim/Tests/Permissions/Common.cs | 40 ++++- .../Tests/Permissions/DirectTransferTests.cs | 10 -- .../Permissions/IndirectTransferTests.cs | 137 ++++++++++++++++++ 3 files changed, 169 insertions(+), 18 deletions(-) create mode 100644 OpenSim/Tests/Permissions/IndirectTransferTests.cs diff --git a/OpenSim/Tests/Permissions/Common.cs b/OpenSim/Tests/Permissions/Common.cs index 84dadf28a3..e62991be17 100644 --- a/OpenSim/Tests/Permissions/Common.cs +++ b/OpenSim/Tests/Permissions/Common.cs @@ -1,6 +1,31 @@ -using System; +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +using System; using System.Collections.Generic; -using System.Reflection; using System.Threading; using Nini.Config; using NUnit.Framework; @@ -10,7 +35,6 @@ using OpenSim.Region.Framework.Scenes; using OpenSim.Region.CoreModules.World.Permissions; using OpenSim.Region.CoreModules.Avatar.Inventory.Transfer; using OpenSim.Region.CoreModules.Framework.InventoryAccess; -using OpenSim.Region.Framework.Scenes.Serialization; using OpenSim.Services.Interfaces; using OpenSim.Tests.Common; using PermissionMask = OpenSim.Framework.PermissionMask; @@ -67,7 +91,7 @@ namespace OpenSim.Tests.Permissions /// - 6 simple boxes inworld belonging to A0 and with Next Owner perms: /// C, CT, MC, MCT, MT, T /// - Copies of all of these boxes in A0's inventory in the Objects folder - /// - One additional box in A0's inventory which is a copy of MCT, but + /// - One additional box inworld and in A0's inventory which is a copy of MCT, but /// with C removed in inventory. This one is called MCT-C /// private void SetUpBasicEnvironment() @@ -140,7 +164,7 @@ namespace OpenSim.Tests.Permissions PrintPerms(box); AssertPermissions(nextOwnerPerms, (PermissionMask)box.RootPart.NextOwnerMask, box.OwnerID.ToString().Substring(34) + " : " + box.Name); - TakeCopyToInventory(box); + TakeCopyToInventory(0, box); } @@ -218,14 +242,14 @@ namespace OpenSim.Tests.Permissions return so; } - public void TakeCopyToInventory(SceneObjectGroup sog) + public void TakeCopyToInventory(int userIndex, SceneObjectGroup sog) { - InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(m_Scene.InventoryService, sog.OwnerID, "Objects"); + InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(m_Scene.InventoryService, m_Avatars[userIndex].UUID, "Objects"); Assert.That(objsFolder, Is.Not.Null); List localIds = new List(); localIds.Add(sog.LocalId); // This is an async operation - m_Scene.DeRezObjects((IClientAPI)m_Avatars[0].ClientView, localIds, sog.UUID, DeRezAction.TakeCopy, objsFolder.ID); + m_Scene.DeRezObjects((IClientAPI)m_Avatars[userIndex].ClientView, localIds, m_Avatars[userIndex].UUID, DeRezAction.TakeCopy, objsFolder.ID); } public InventoryItemBase GetItemFromInventory(UUID userID, string folderName, string itemName) diff --git a/OpenSim/Tests/Permissions/DirectTransferTests.cs b/OpenSim/Tests/Permissions/DirectTransferTests.cs index 3ca711aadf..3b711a1eb4 100644 --- a/OpenSim/Tests/Permissions/DirectTransferTests.cs +++ b/OpenSim/Tests/Permissions/DirectTransferTests.cs @@ -25,20 +25,10 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -using System; -using System.Collections.Generic; -using System.Reflection; -using System.Threading; -using Nini.Config; using NUnit.Framework; using OpenMetaverse; using OpenSim.Framework; using OpenSim.Region.Framework.Scenes; -using OpenSim.Region.CoreModules.World.Permissions; -using OpenSim.Region.CoreModules.Avatar.Inventory.Transfer; -using OpenSim.Region.CoreModules.Framework.InventoryAccess; -using OpenSim.Region.Framework.Scenes.Serialization; -using OpenSim.Services.Interfaces; using OpenSim.Tests.Common; using PermissionMask = OpenSim.Framework.PermissionMask; diff --git a/OpenSim/Tests/Permissions/IndirectTransferTests.cs b/OpenSim/Tests/Permissions/IndirectTransferTests.cs new file mode 100644 index 0000000000..6a6ba2f0fd --- /dev/null +++ b/OpenSim/Tests/Permissions/IndirectTransferTests.cs @@ -0,0 +1,137 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System.Collections.Generic; +using System.Threading; +using NUnit.Framework; +using OpenMetaverse; +using OpenSim.Framework; +using OpenSim.Region.Framework.Scenes; +using OpenSim.Tests.Common; +using PermissionMask = OpenSim.Framework.PermissionMask; + +namespace OpenSim.Tests.Permissions +{ + /// + /// Basic scene object tests (create, read and delete but not update). + /// + [TestFixture] + public class IndirectTransferTests + { + + [SetUp] + public void SetUp() + { + // Delete everything in A2 and A3's Objects folders from previous tests + for (int i = 1; i < 3; i++) + { + InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(Common.TheScene.InventoryService, Common.TheAvatars[i].UUID, "Objects"); + Assert.That(objsFolder, Is.Not.Null); + + List items = Common.TheScene.InventoryService.GetFolderItems(Common.TheAvatars[i].UUID, objsFolder.ID); + List ids = new List(); + foreach (InventoryItemBase it in items) + ids.Add(it.ID); + + Common.TheScene.InventoryService.DeleteItems(Common.TheAvatars[i].UUID, ids); + items = Common.TheScene.InventoryService.GetFolderItems(Common.TheAvatars[i].UUID, objsFolder.ID); + Assert.That(items.Count, Is.EqualTo(0), "A" + (i+1)); + } + } + + /// + /// Test giving simple objecta with various combinations of next owner perms. + /// + [Test] + public void SimpleTakeCopy() + { + TestHelpers.InMethod(); + + // The Objects folder of A2 + InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(Common.TheScene.InventoryService, Common.TheAvatars[1].UUID, "Objects"); + + // C, CT, MC, MCT, MT, T + string[] names = new string[6] { "Box C", "Box CT", "Box MC", "Box MCT", "Box MT", "Box T" }; + PermissionMask[] perms = new PermissionMask[6] { + PermissionMask.Copy, + PermissionMask.Copy | PermissionMask.Transfer, + PermissionMask.Modify | PermissionMask.Copy, + PermissionMask.Modify | PermissionMask.Copy | PermissionMask.Transfer, + PermissionMask.Modify | PermissionMask.Transfer, + PermissionMask.Transfer + }; + + // Try A2 takes copies of objects that cannot be copied. + for (int i = 0; i < 6; i++) + TakeOneBox(Common.TheScene.GetSceneObjectGroups(), names[i], perms[i]); + Thread.Sleep(5000); + + List items = Common.TheScene.InventoryService.GetFolderItems(Common.TheAvatars[1].UUID, objsFolder.ID); + Assert.That(items.Count, Is.EqualTo(0)); + + // A1 makes the objects copyable + for (int i = 0; i < 6; i++) + MakeCopyable(Common.TheScene.GetSceneObjectGroups(), names[i]); + + // Try A2 takes copies of objects that can be copied. + for (int i = 0; i < 6; i++) + TakeOneBox(Common.TheScene.GetSceneObjectGroups(), names[i], perms[i]); + Thread.Sleep(5000); + + items = Common.TheScene.InventoryService.GetFolderItems(Common.TheAvatars[1].UUID, objsFolder.ID); + Assert.That(items.Count, Is.EqualTo(6)); + + for (int i = 0; i < 6; i++) + { + InventoryItemBase item = Common.TheInstance.GetItemFromInventory(Common.TheAvatars[1].UUID, "Objects", names[i]); + Assert.That(item, Is.Not.Null); + Common.TheInstance.AssertPermissions(perms[i], (PermissionMask)item.BasePermissions, Common.TheInstance.IdStr(item)); + } + } + + private void TakeOneBox(List objs, string name, PermissionMask mask) + { + SceneObjectGroup box = objs.Find(sog => sog.Name == name && sog.OwnerID == Common.TheAvatars[0].UUID); + Assert.That(box, Is.Not.Null, name); + + // A2's inventory (index 1) + Common.TheInstance.TakeCopyToInventory(1, box); + } + + private void MakeCopyable(List objs, string name) + { + SceneObjectGroup box = objs.Find(sog => sog.Name == name && sog.OwnerID == Common.TheAvatars[0].UUID); + Assert.That(box, Is.Not.Null, name); + + // field = 8 is Everyone + // set = 1 means add the permission; set = 0 means remove permission + Common.TheScene.HandleObjectPermissionsUpdate((IClientAPI)Common.TheAvatars[0].ClientView, Common.TheAvatars[0].UUID, + Common.TheAvatars[0].ControllingClient.SessionId, 8, box.LocalId, (uint)PermissionMask.Copy, 1); + Common.TheInstance.PrintPerms(box); + } + } +} \ No newline at end of file From 9c82ff76730c9eff80cace1ddece0148d8d0a7ee Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Mon, 1 May 2017 16:49:42 -0700 Subject: [PATCH 33/40] Shuffle some code around --- OpenSim/Tests/Permissions/Common.cs | 20 +++++++++++++++++++ .../Tests/Permissions/DirectTransferTests.cs | 1 + .../Permissions/IndirectTransferTests.cs | 16 +-------------- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/OpenSim/Tests/Permissions/Common.cs b/OpenSim/Tests/Permissions/Common.cs index e62991be17..f93c1201e1 100644 --- a/OpenSim/Tests/Permissions/Common.cs +++ b/OpenSim/Tests/Permissions/Common.cs @@ -286,6 +286,26 @@ namespace OpenSim.Tests.Permissions return clone; } + public void DeleteObjectsFolders() + { + // Delete everything in A2 and A3's Objects folders, so we can restart + for (int i = 1; i < 3; i++) + { + InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(Common.TheScene.InventoryService, Common.TheAvatars[i].UUID, "Objects"); + Assert.That(objsFolder, Is.Not.Null); + + List items = Common.TheScene.InventoryService.GetFolderItems(Common.TheAvatars[i].UUID, objsFolder.ID); + List ids = new List(); + foreach (InventoryItemBase it in items) + ids.Add(it.ID); + + Common.TheScene.InventoryService.DeleteItems(Common.TheAvatars[i].UUID, ids); + items = Common.TheScene.InventoryService.GetFolderItems(Common.TheAvatars[i].UUID, objsFolder.ID); + Assert.That(items.Count, Is.EqualTo(0), "A" + (i + 1)); + } + + } + public string IdStr(InventoryItemBase item) { return item.Owner.ToString().Substring(34) + " : " + item.Name; diff --git a/OpenSim/Tests/Permissions/DirectTransferTests.cs b/OpenSim/Tests/Permissions/DirectTransferTests.cs index 3b711a1eb4..c68bbdfed7 100644 --- a/OpenSim/Tests/Permissions/DirectTransferTests.cs +++ b/OpenSim/Tests/Permissions/DirectTransferTests.cs @@ -44,6 +44,7 @@ namespace OpenSim.Tests.Permissions [SetUp] public void SetUp() { + Common.TheInstance.DeleteObjectsFolders(); } /// diff --git a/OpenSim/Tests/Permissions/IndirectTransferTests.cs b/OpenSim/Tests/Permissions/IndirectTransferTests.cs index 6a6ba2f0fd..7d8027f566 100644 --- a/OpenSim/Tests/Permissions/IndirectTransferTests.cs +++ b/OpenSim/Tests/Permissions/IndirectTransferTests.cs @@ -46,21 +46,7 @@ namespace OpenSim.Tests.Permissions [SetUp] public void SetUp() { - // Delete everything in A2 and A3's Objects folders from previous tests - for (int i = 1; i < 3; i++) - { - InventoryFolderBase objsFolder = UserInventoryHelpers.GetInventoryFolder(Common.TheScene.InventoryService, Common.TheAvatars[i].UUID, "Objects"); - Assert.That(objsFolder, Is.Not.Null); - - List items = Common.TheScene.InventoryService.GetFolderItems(Common.TheAvatars[i].UUID, objsFolder.ID); - List ids = new List(); - foreach (InventoryItemBase it in items) - ids.Add(it.ID); - - Common.TheScene.InventoryService.DeleteItems(Common.TheAvatars[i].UUID, ids); - items = Common.TheScene.InventoryService.GetFolderItems(Common.TheAvatars[i].UUID, objsFolder.ID); - Assert.That(items.Count, Is.EqualTo(0), "A" + (i+1)); - } + Common.TheInstance.DeleteObjectsFolders(); } /// From a890ea312b56821c88bec69cfd36b799733f7a41 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Tue, 2 May 2017 11:23:41 +0100 Subject: [PATCH 34/40] disable LSL http listener (llRequestURL/llRequestSecureURL) if ExternalHostNameForLSL is not set in cofiguration or does not resolve --- .../Scripting/LSLHttp/UrlModule.cs | 69 +++++++++++++++++-- 1 file changed, 62 insertions(+), 7 deletions(-) diff --git a/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs b/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs index 311deabe76..895020c791 100644 --- a/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs +++ b/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs @@ -26,15 +26,15 @@ */ using System; -using System.Threading; using System.Collections.Generic; using System.Collections; using System.Reflection; +using System.Net; +using System.Net.Sockets; using log4net; using Mono.Addins; using Nini.Config; using OpenMetaverse; -using OpenSim.Framework; using OpenSim.Framework.Servers; using OpenSim.Framework.Servers.HttpServer; using OpenSim.Region.Framework.Interfaces; @@ -89,6 +89,8 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp protected Dictionary m_UrlMap = new Dictionary(); + protected bool m_enabled = false; + protected string m_ErrorStr; protected uint m_HttpsPort = 0; protected IHttpServer m_HttpServer = null; protected IHttpServer m_HttpsServer = null; @@ -118,6 +120,7 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp public void Initialise(IConfigSource config) { IConfig networkConfig = config.Configs["Network"]; + m_enabled = false; if (networkConfig != null) { @@ -128,9 +131,47 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp if (ssl_enabled) m_HttpsPort = (uint)config.Configs["Network"].GetInt("https_port", (int)m_HttpsPort); } + else + { + m_ErrorStr = "[Network] configuration missing, HTTP listener for LSL disabled"; + m_log.Warn("[URL MODULE]: " + m_ErrorStr); + return; + } - if (ExternalHostNameForLSL == null) - ExternalHostNameForLSL = System.Environment.MachineName; + if (String.IsNullOrWhiteSpace(ExternalHostNameForLSL)) + { + m_ErrorStr = "ExternalHostNameForLSL not defined in configuration, HTTP listener for LSL disabled"; + m_log.Warn("[URL MODULE]: " + m_ErrorStr); + return; + } + + IPAddress ia = null; + try + { + foreach (IPAddress Adr in Dns.GetHostAddresses(ExternalHostNameForLSL)) + { + if (Adr.AddressFamily == AddressFamily.InterNetwork || + Adr.AddressFamily == AddressFamily.InterNetworkV6) // ipv6 will most likely smoke + { + ia = Adr; + break; + } + } + } + catch + { + ia = null; + } + + if (ia == null) + { + m_ErrorStr = "Could not resolve ExternalHostNameForLSL, HTTP listener for LSL disabled"; + m_log.Warn("[URL MODULE]: " + m_ErrorStr); + return; + } + + m_enabled = true; + m_ErrorStr = String.Empty; IConfig llFunctionsConfig = config.Configs["LL-Functions"]; @@ -146,7 +187,7 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp public void AddRegion(Scene scene) { - if (m_HttpServer == null) + if (m_enabled && m_HttpServer == null) { // There can only be one // @@ -197,11 +238,18 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp { UUID urlcode = UUID.Random(); + if(!m_enabled) + { + engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", m_ErrorStr }); + return urlcode; + } + lock (m_UrlMap) { if (m_UrlMap.Count >= TotalUrls) { - engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" }); + engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", + "Too many URLs already open" }); return urlcode; } string url = "http://" + ExternalHostNameForLSL + ":" + m_HttpServer.Port.ToString() + "/lslhttp/" + urlcode.ToString() + "/"; @@ -243,6 +291,12 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp { UUID urlcode = UUID.Random(); + if(!m_enabled) + { + engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", m_ErrorStr }); + return urlcode; + } + if (m_HttpsServer == null) { engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" }); @@ -253,7 +307,8 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp { if (m_UrlMap.Count >= TotalUrls) { - engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", "" }); + engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_DENIED", + "Too many URLs already open" }); return urlcode; } string url = "https://" + ExternalHostNameForLSL + ":" + m_HttpsServer.Port.ToString() + "/lslhttps/" + urlcode.ToString() + "/"; From 6c2f8176aea95297bbce7f6d2d0cba178b39ae5b Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Tue, 2 May 2017 11:39:29 +0100 Subject: [PATCH 35/40] change opensim.ini.example setting of ExternalHostNameForLSL to a defualt --- bin/OpenSim.ini.example | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index b0777d7657..da4cbe16e8 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example @@ -52,8 +52,11 @@ ; name and use default public port 9000. The private port is not used ; in the configuration for a standalone. - ;# {BaseURL} {} {BaseURL} {"http://example.com" "http://127.0.0.1"} "http://127.0.0.1" - BaseURL = http://127.0.0.1 + ;# {BaseHostname} {} {BaseHostname} {"example.com" "127.0.0.1"} "127.0.0.1" + BaseHostname = "127.0.0.1" + + ;# {BaseURL} {} {BaseURL} {"http://${Const|BaseHostname} https://${Const|BaseHostname}} "http://${Const|BaseHostname}" + BaseURL = http://${Const|BaseHostname} ;# {PublicPort} {} {PublicPort} {8002 9000} "8002" PublicPort = "8002" @@ -525,10 +528,9 @@ ;# {ExternalHostNameForLSL} {} {Hostname to use for HTTP-IN URLs. This should be reachable from the internet.} {} ;; Hostname to use in llRequestURL/llRequestSecureURL - ;; if not defined - default machine name is being used - ;; (on Windows this mean NETBIOS name - useably only inside local network) - ; ExternalHostNameForLSL = "127.0.0.1" - + ;; if not defined - llRequestURL/llRequestSecureURL are disabled + ExternalHostNameForLSL = ${Const|BaseHostname} + ;# {shard} {} {Name to use for X-Secondlife-Shard header? (press enter if unsure)} {} OpenSim ;; What is reported as the "X-Secondlife-Shard" ;; Defaults to the user server url if not set From a18ee3b6b354665d72b3f307bd6e52a8da230b4d Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Tue, 2 May 2017 12:35:06 +0100 Subject: [PATCH 36/40] fix LSL_ApiHttpTests --- .../ScriptEngine/Shared/Tests/LSL_ApiHttpTests.cs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiHttpTests.cs b/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiHttpTests.cs index 4dc8fc6829..241a24d04e 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiHttpTests.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiHttpTests.cs @@ -87,17 +87,21 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests uint port = 9999; MainServer.RemoveHttpServer(port); + m_engine = new MockScriptEngine(); + m_urlModule = new UrlModule(); + + IConfigSource config = new IniConfigSource(); + config.AddConfig("Network"); + config.Configs["Network"].Set("ExternalHostNameForLSL", "127.0.0.1"); + m_scene = new SceneHelpers().SetupScene(); + BaseHttpServer server = new BaseHttpServer(port, false, 0, ""); MainServer.AddHttpServer(server); MainServer.Instance = server; server.Start(); - m_engine = new MockScriptEngine(); - m_urlModule = new UrlModule(); - - m_scene = new SceneHelpers().SetupScene(); - SceneHelpers.SetupSceneModules(m_scene, new IniConfigSource(), m_engine, m_urlModule); + SceneHelpers.SetupSceneModules(m_scene, config, m_engine, m_urlModule); SceneObjectGroup so = SceneHelpers.AddSceneObject(m_scene); m_scriptItem = TaskInventoryHelpers.AddScript(m_scene.AssetService, so.RootPart); From 55f7986b449633477467f7fdda95873b4a00f8fd Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Tue, 2 May 2017 13:14:26 +0100 Subject: [PATCH 37/40] fix some comments --- bin/OpenSim.ini.example | 2 +- bin/OpenSimDefaults.ini | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index da4cbe16e8..021e44412e 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example @@ -55,7 +55,7 @@ ;# {BaseHostname} {} {BaseHostname} {"example.com" "127.0.0.1"} "127.0.0.1" BaseHostname = "127.0.0.1" - ;# {BaseURL} {} {BaseURL} {"http://${Const|BaseHostname} https://${Const|BaseHostname}} "http://${Const|BaseHostname}" + ;# {BaseURL} {} {BaseURL} {"http://${Const|BaseHostname}} "http://${Const|BaseHostname}" BaseURL = http://${Const|BaseHostname} ;# {PublicPort} {} {PublicPort} {8002 9000} "8002" diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini index f70f7dbe57..89954ef6e8 100644 --- a/bin/OpenSimDefaults.ini +++ b/bin/OpenSimDefaults.ini @@ -600,8 +600,7 @@ ; HttpBodyMaxLenMAX=16384 ; Hostname to use in llRequestURL/llRequestSecureURL - ; if not defined - default machine name is being used - ; (on Windows this mean NETBIOS name - useably only inside local network) + ; if not defined - llRequestURL/llRequestSecureURL are disabled ; ExternalHostNameForLSL=127.0.0.1 ; Disallow the following address ranges for user scripting calls (e.g. llHttpRequest()) From 710677cdc6afef7f67f700bf4efcf145d23b85d5 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Tue, 2 May 2017 15:16:56 +0100 Subject: [PATCH 38/40] mantis 8135 --- .../Scripting/WorldComm/WorldCommModule.cs | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/OpenSim/Region/CoreModules/Scripting/WorldComm/WorldCommModule.cs b/OpenSim/Region/CoreModules/Scripting/WorldComm/WorldCommModule.cs index 660e03f232..a5203ea750 100644 --- a/OpenSim/Region/CoreModules/Scripting/WorldComm/WorldCommModule.cs +++ b/OpenSim/Region/CoreModules/Scripting/WorldComm/WorldCommModule.cs @@ -113,7 +113,7 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm // wrap this in a try block so that defaults will work if // the config file doesn't specify otherwise. int maxlisteners = 1000; - int maxhandles = 64; + int maxhandles = 65; try { m_whisperdistance = config.Configs["Chat"].GetInt( @@ -130,8 +130,15 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm catch (Exception) { } - if (maxlisteners < 1) maxlisteners = int.MaxValue; - if (maxhandles < 1) maxhandles = int.MaxValue; + + if (maxlisteners < 1) + maxlisteners = int.MaxValue; + if (maxhandles < 1) + maxhandles = int.MaxValue; + + if (maxlisteners < maxhandles) + maxlisteners = maxhandles; + m_listenerManager = new ListenerManager(maxlisteners, maxhandles); m_pendingQ = new Queue(); m_pending = Queue.Synchronized(m_pendingQ); @@ -605,11 +612,9 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm li.GetHandle().Equals(handle)) { lis.Value.Remove(li); + m_curlisteners--; if (lis.Value.Count == 0) - { - m_listeners.Remove(lis.Key); - m_curlisteners--; - } + m_listeners.Remove(lis.Key); // bailing of loop so this does not smoke // there should be only one, so we bail out early return; } @@ -718,6 +723,9 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm } } + if(handles.Count >= m_maxhandles) + return -1; + // Note: 0 is NOT a valid handle for llListen() to return for (int i = 1; i <= m_maxhandles; i++) { From 1bfe9354e375b77318dde4222e7fa01937d4c5b8 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Tue, 2 May 2017 15:45:33 +0100 Subject: [PATCH 39/40] coment out optional fields that should be edited and uncomented if needed --- bin/OpenSimDefaults.ini | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini index 89954ef6e8..21ff8d6dcd 100644 --- a/bin/OpenSimDefaults.ini +++ b/bin/OpenSimDefaults.ini @@ -1898,7 +1898,8 @@ ; regex specifying for which regions concierge service is desired; if ; empty, then for all - regions = "^MeetingSpace-" + ;regions = "^MeetingSpace-" + regions = "" ; for each region that matches the regions regexp you can provide ; (optionally) a welcome template using format substitution: @@ -1906,14 +1907,14 @@ ; {1} is replaced with the name of the region ; {2} is replaced with the name of the concierge (whoami variable above) - welcomes = /path/to/welcome/template/directory + ;welcomes = /path/to/welcome/template/directory ; Concierge can send attendee lists to an event broker whenever an ; avatar enters or leaves a concierged region. the URL is subject ; to format substitution: ; {0} is replaced with the region's name ; {1} is replaced with the region's UUID - broker = "http://broker.place.com/{1}" + ;broker = "http://broker.place.com/{1}" [MRM] From 02b43f06d1965f6492fdae692373d0d460db881e Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Tue, 2 May 2017 20:45:01 +0100 Subject: [PATCH 40/40] recover a lost trim in permissions modules names parsing --- OpenSim/Region/Application/OpenSimBase.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index 168836c1e9..0862fcf302 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs @@ -237,7 +237,7 @@ namespace OpenSim string permissionModules = Util.GetConfigVarFromSections(Config, "permissionmodules", new string[] { "Startup", "Permissions" }, "DefaultPermissionsModule"); - m_permsModules = new List(permissionModules.Split(',')); + m_permsModules = new List(permissionModules.Split(',').Select(m => m.Trim())); managedStatsURI = startupConfig.GetString("ManagedStatsRemoteFetchURI", String.Empty); managedStatsPassword = startupConfig.GetString("ManagedStatsRemoteFetchPassword", String.Empty);