From d6837f5dc7ac27948f6fbfd1660f0471d202a4c0 Mon Sep 17 00:00:00 2001 From: dahlia Date: Sat, 22 Feb 2014 18:52:59 -0800 Subject: [PATCH] update libomv to 59280cfe3e96714151158f4ec7b167af57f60e93 (current head) to hopefully resolve zlib incompatibilities when rendering maptiles with mesh --- bin/OpenMetaverse.Rendering.Meshmerizer.dll | Bin 20480 -> 20480 bytes bin/OpenMetaverse.StructuredData.XML | 234 +- bin/OpenMetaverse.StructuredData.dll | Bin 106496 -> 106496 bytes bin/OpenMetaverse.XML | 38626 +++++++++--------- bin/OpenMetaverse.dll | Bin 1806336 -> 1806336 bytes bin/OpenMetaverseTypes.dll | Bin 110592 -> 110592 bytes 6 files changed, 19430 insertions(+), 19430 deletions(-) diff --git a/bin/OpenMetaverse.Rendering.Meshmerizer.dll b/bin/OpenMetaverse.Rendering.Meshmerizer.dll index 052490d868ca3ddf1d37526c969c71321fbe43f2..e1e251c3f5f388dae50609403b41d4c5ea33b5a4 100755 GIT binary patch delta 47 zcmV+~0MP${paFoO0g#9UsbC3Hv5cZ40@8!CFeJPO5Is9O-Y}y9M}v@Q*J|-RIJ5jK F1SGuq62<@k delta 47 zcmV+~0MP${paFoO0g#9UC7gLuv5cZ40@)F>FeJPO5XxqWGnfEON23)OpenMetaverse.StructuredData + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Uses reflection to create an SDMap from all of the SD + serializable types in an object + + Class or struct containing serializable types + An SDMap holding the serialized values from the + container object + + + + Uses reflection to deserialize member variables in an object from + an SDMap + + Reference to an object to fill with deserialized + values + Serialized values to put in the target + object + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -228,122 +345,5 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Uses reflection to create an SDMap from all of the SD - serializable types in an object - - Class or struct containing serializable types - An SDMap holding the serialized values from the - container object - - - - Uses reflection to deserialize member variables in an object from - an SDMap - - Reference to an object to fill with deserialized - values - Serialized values to put in the target - object - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/bin/OpenMetaverse.StructuredData.dll b/bin/OpenMetaverse.StructuredData.dll index ed613e710f0803df6ea03f2679ed6258d1caeb16..190a133865f4c7b5263c63a55b4093572e8c2ea0 100755 GIT binary patch literal 106496 zcmeFad4Lqf`8QtOJ=1gUF?-DH1+y$yJF`11yMPO*9LjxzD3^#FDsnW=fKiuS7Y{@Q z6*R;X6R#v{)OaLDP4J2)c{KrJjERazqVb5)XcCR__RkPXtbJ1Ugmv{RPFTO*-dMkUReg5T`uf%D>yMf>uYR4qa#g0NC_F%ko;^W`>6#&K zSQeV+r1rAV`$e>f5F0ch>Lqpk7Ulmooo9hs*KPtV_2R97auYOM`M))hK4-=#hH#(ScD?ftq0zAk~UOW^Ag___qXE`hI0 z;Oi3jx&*#1fv-#8>k|0?Q3=eZbv6EIZK?~u7R#zat}6(|HJS)pVxhBh7ItKxmYNCi%$7#}N5wmXD$G(ZY}1LLtmlO%@t& zNcGioiwWYn>c4z`SMh&OJ-@G>r_!@QUz=kO1b3={?do~CdS0iVH`BAcSr^C&m18XT zzd#9_C8E6*8e9E<>{sCsWmqAF;~mi>-ta;$#2e9ra%dq1{h=;_dq0jAN@p&<)Qqo+edCYVM~X~6m>WJ7B#(r==tvTA)3>WvsT(o`lg@|wIq+8Ic^d9rb#L;J#*a5^i7i$ zjh;Dfa{8u(qS4bD3`I+3o-$z>_x=riH-pcH&4GHntzlQzX#$ zQH9D_R<~G@fHj3;5r>K;{rWztT^XrJirc@PNGW|E)n`G-)7y!J5VDejkdwC)2_aOC zG9+NwAqK0jNww)*lAVYA)1QD=iJCP7VX5&VoknKc40NJq{K$+i86arWfX-NQk^t_NUy$+G>{q}&K-4BDTNXWmz(L5m}yUiw`I!Qy91c{V{0|1c??D9`Fu$*!|9b;o zUtKm;JS{0mHc4RUP6^1ShbK3;zB=0==-hbd>6d)Ash$D#B*Vi9Y}0cMF|tA9iE<>t zc0@fxlPqHtLzparp5^qU@zN06QI@Frm~PKRO@&Q+79Nqn#jA67 zgDDy>O0N!tt}6G%eEX)OM%ZvH3|`@;88M%3&wO|rDQc9*XX_GZe z^)L_;VGpsy4(jW|W;{9c8ncVyNJ=CSPc~l@=weynDv!?SZ+xi{dOJPipK17?a==vQ z*&y*LFe(mkJ!_%RW@5FDp|XH>436~xIkLiN*a*Ybo|MrLeW_h~J3Xxhh|^Rlfm=pW zoj3_5COIMtnnz6KGDMrs$8JPHyYV0T{PWLW8aKkM$MdW_nPR>C@G!F;&n`u#$_uZC zJ(FCFA^dkRxi3TByW>Xam4z~e80MzV^42MNFwq|J3{34^MJe>cCB*5&yyEFN6mDJj&Jl=p>v z>+^gVGkcMzn@)>I+eayLxlFW{LuZxW74SN`V=gDqpXc+qlJW={askNsBOdgKd7f1c zPnsoBzkv2A(DD>d9EEkFVyehjU#+K6LMV4L^pum>MS42{PS`pLv77V+3U8{unaH2T zk%VTSOerE)Dmn*Qt0hr2{W?!7n7sJ7E{8(DFzL6MNY*Jp@u9&iy0Z=8w3(exPZhQX zVUaS;wAPYX7#zn~*8`w0b3@is&*niWw~#=0E-(Z-X_DOfyHMDPL_8i(d@ zYXgB(;W!D(Nj!2&Qu9UF$CEkOoiFve-cHX7D~rgD10}L^1fmLTB(ciRrdG-tHC!&;RIaJj+!-SEnT3Ju4?xjy( zVee5OL808fdAV&XIL0Z*Nx{t?SY;$F53Dwl^&VIQojkA> zN_k+N(bt3e82LoLs$Mcvr>G1!dm!oMfuxrQl3pH2dU+u9@*qbqN<`{~TBX{MYdZz3 zO|l|6Bz2eMi0@2REtlTJ&SdHG1=3%&v#;Z=-njs4X+xk(;6Eqc`ed6MaecDcVXxY` zK503i8lc_*H2_r(s0DCStJ}HWO|H+*_5bguhh|H~Rbib*MO2&&p}&!)n>(E>8-1)V zHPe}R<<4+v1#N-3bWe;U^md}zXM#WenT`of!t!aD%}$g7xpoBP?m_=e?cHUitvLs8 z28Rne2v9$Z-augThJKbJ8D+xmL=bh@a-BR%1^Dcr^vt(%{m(p zk8|*_ImnH7Zecu1%vI_<0y7JQ$aHFQTM=|-w;&d!@^7CHhVAGmYE$6~r%*h^;$%2q z5!=Aqfi;%5BG4ZwT0uoHm!8YVpgB60)1sKmjDqb85mj~{@kqMb4Cw7d4%iogZu?Lr zPhS&AEQlyNv$y;~u0wQzd9A>*1?v#hg2}B6ixFNK@mSe=I68d@pnbpI!~H7U5F;TU z%b{3j6SN8I*7FFdYPHIQ9=BeEUoN&fS`i9b!b=+l8mWnN3^4;wOz&g7a947wTMz3l zXLv7iMo3zfSN5S^*;64KGyYiT5Kvv&BMW7BwDl0(fy|NC9?2b}lwi^s(<&;T81Eb? zxizh`3+1lq7~MngnvTPINM6%H8=Qz+?ac>FAzwz69wrqr-gY>6de}kfQPyL7NpD;) z>5cE69wxQ1&K6J)p5BpCPC?xsC25|LThlQ?(hBl75j5^($fRjn70x|HwuS!4wf%zr z2)&IPK)nwdK4F7f19cdTeD)5A$_HLdC?9x9LExnYXeS{jm0blvml2{mN4uDWCuXX# zcsSiE6E$Un)S-S&Yi$871e&2H>xq<^SP(X4xNNL@<0;hxxw*NVl0x6ZdHp89c611} zy-;c~*LWJbV1601c7sum>ld$1#)kOuNbAX%{Vfo~ays2xP<+Q?fqCi`;EDvY=!7>^ z+gAcK)djLBLeE*76A3G4zI_O;~Wf;U-nlp&Rcy@z5UXMdxj zkmbs>rW#qS5){c&b-6=Q4a_^uR2E(7hMb1@7?j!OU~i(DbfPIR_LNw7#I(N+6i9t0 zRc(r7=V(qu-TF7;%W|^*18-AQ&+bJqgF!0T`WGolL;ic@;j|J+tA^4ttoK30nDHH? z;wDDSMCU!F7Vy@Bx4sLW-1VfJ(O7GC&P2nEvwQJs`v#EBWZ1rup1Sn`BFiz#Cr&~p zVdycrpIdIm%n1=l!XQJ#py-1i#tMO&71QwhDSpr3hjuF}5H)~bTOAxd*^kAibh)=4 zPjIR!J-M3c4!Oo5XA8)E9rC6Ea%l4|6oA zn2Yp~!yJr*=ty2!kfN)|T8|9cDpXR+{d&yr$cg#l6rd!@J!k75R5iNXHMagqAp4SQ z6rvXPJqLw{f{p3P#VQe)o5?u}BO@|LyuBZeri+8Tb&afYy#?hq^IHeP!A4WGEhSnp`=265OG~`@rp&>44k3Z~~%>v++9(zqUJJ ztROEQ{Y~jvzHov8`n~w=1Z4_-ZQEtg+Tj)8T%B16ckSr6DK?!@17#OZz~qlN{Ll%B z1)x$3K}h@Pi6mhv9G+x{*_*J?f0*I6BS4NTe+&G2jr9pt#iwwhK?@BZOw|<7R|b3r zN>RwF=Kxv~>&a3MiPLm4Z1v}WzaVX|sB)i<9b%R|h#4O5&fu3lcFfOQ+L=E;i*(5bsj|`r$9gKx!^#idHRb@V%tk1j)H+xu?u|%m`6d&pfm_r{9 zHkRTM%_j;4&@2295wSB$V?OChdqIXf)Ehj~8wIUg-pN3D2pE1$Z=x;lxP>~Q5&3RB zA_303E}FmtdjgMhy7As#;=M=mqPc_D`Vk({VBGpKo<$*9<{H0t0SiWdgMN}E|Ae_y zbgpbcF4`340rzuQZm^DVC}1tYw87HhL=S|`M$Ko)RMyG?I;>6|`_Zlk zv#!ql1N(2_q2s3sL8OO{S)7C4T>M7hhqW3H%!lCV$FJ=XIJ)&1$wk@FWa@G9Q+ERY z6XZw#PyV07zm~fb0Ni_^Gw|b(kw%rW>;Y1`y&GYF_c4YM11Nb z*;-x+I1x|qcfa(9$p16xFM>auyAL1|sIuS16QxxiFoQceru{Z3gSejWpL z^YL_f00+>p6SF*$J}MT;58&lNqcK(%pH;*=DLjmVz_qFts_yYVMf*6v`6??bJz0tc2@?-e#gY z!Sr5WG~lJ&@#;AV&kOOZ1rNbq3dcPth|eaBRNN7VfVo?o7( z9e%g0>#2G?htVvY`xzW70?WYy-UDbX#kxuD^P|P1KkX3%;kC`0p!SR(Y~~^GVTDu< zaV{tY2%C`up+P*ciX0Hs*UPy8=7&iUqPc)Nldy`wZLfeB@X+{jBxJ+jV!4M|g&ev} znnT);;u+vGj_mmuec5L}Mnv5zhKzvya{@MIP*{hdtAIe7Q(ug(rV;Ygx(Qaq_6>{W zu6Y8U>+t&~ekdOC8h%ho49D*r{K^nr9YFG>$9%dvC+LLjEYJyyDC&KvlEa03-}#Ds zKm3Y(4}3+wUw%ct-+o2D7r!FkYlVEW0zYtxzn}uj`u*4pkY)8tBJ?ahxk?Mmli+MQ z`12LP#f(Ou9*=%`2I8v)kxZ+$fR~m#)R;Uqhv#20=HITI_@vg2*H-gw@ZSuPk3DkaQfm`wOK>uog%W;t6_Xiu+>gXAbbOh ztY1M>&P5kiqCUNAHe3syl{Z-DH5aCFn! zk4GfH4YuhctOJZrk~t?HJ&Z7pv7p8eFe63S2Qr%L&$jZ`Z?*>{cdlMUA@KedlK#`h04O#b5LmHPV`@D>OwoBW=4_6!Ayew&q2}mAd^=9{gw3gT+yMmP^LsH!qv-YtX=*J;BL9W07M0 z=yS|baaXI%N4x%E-0@WS-5Et zXQb^O2+GHdwB6W?U<_1pHSFYWFfX0U175)aYZVI)@VYtDwwMIFF(Yl$dJ%jG32yLc zjIowfWm=@IibS|Pkv41%_sBE`y|6{Q3MoBH9j<)WW53k3y-|G9d%qD%-)3fxI_6W1?1!MG)yw4PgK=X<- z6*3`DNF<%&+!l}$x)nnwhviWjKWx%+P(?(ysmn>0w8EsRqcLR;)1{jb-P9Dd4F$xqk10&akW=`KLb8QRZ8&c=_hVLGs@?@*tUKS%sM| z#@09M2V*kRPnfC4(`Znn`yg2?eKYT=S}w|9MCJM}&b**}vCPwIE;$zZH$#6O8=Km) zKY^}cbq=ut;`oRllEa)Y+%*e5eZV_#TCY1~-oHN%vW7xdc5)piA2br%e*ptu#g_05 z2O9R9@LF%d3HKOVO&-hTm}|Wa7L%<}QjrGjkzsFuMiuN`{FP*2g8;RKV}*BsxB7t<5(?vEdDm-v z!%aiZ(Ya|x$fyQLF+2}w#mJ6@JM^$vPJD>7bFsg?ELN60x_K7d!Oit>`^l}}8=%%` z193nfT? z$>2v%EDe0xyXxkup*N*-@MiY?LmND)1q(B)+%rdR^(WG757&vN>rlH*#SdW5V z@0w3+XlOleU1~OjAI<#Jq8gD660kk=Rp(F0P8AWvPO#m#v+!Q|N1Lv;HCL@G>EPc~R7WR!MX zc&MX&pKNK8MmTQp*+uZv0g@U;usu&BZKQ1sEJe2tp|}_c9Lb&FmQ^1MOMN4HEE2~a z0x28|L*qP4uhAl$3pM(q&&Tn?V5uVZ5)}DSCM(U0VnvF48DMi zK*9(?r9LQ)ee6O?K1xU#P}2(m?j6f?X&mwF#ZX1ktd}80)|ou+k^QSKu7w_l_M%6I z^&oB1|D862U2PCIlX({Is?0vP6EeRdX_?31Hf4V1>iQxyYl>&z?_Jk=*rB8A0_fUC zx?;JA^3R})ron>uh4cM#Bs;gksZ=D@m@(lVmqE`x7|c}0OlWR)MH(Y1 zjk`FFGi4IdAaC*3VBz-*S9p*&MT(r1_a{doxURn^Z6a)U2?5-oV10iI(M~LCsef}> zTzxw-IE8ZbMFl52#%3|GVU_djuq~R`(JE~ebe4NU;lh)23mG~bzmxEri{AtIy^P;Q z_|b`96u&kaIp`$)L(~P{ErXGon7k!7N`js|(ebQikF%rk5wYvZY;VL(y%7g{iD>do zRDC1`?Vp4A5S_Hpv&#lxk}ty=ywM71;9n^NlV8ZRwl^kpiyj4Jd^$ldp-!&>s=3GM z{Rw1GghsLr(cHukV^DtT1jGj+2&r9kg?mwgWQ#T~Uz zn&3cbf?j$tndYEw)=2xzI~`lJ|Bb>y1C=djF>5Oiain3+$1PH_ORh5<;>HVbC}ZkM zLOxk3%TSCwE$+pjzw1O)Njugp&&se`m-bz#U%UM=)b-_!-KUJbv%uJm?#ig{;wxFd z;g~* zKN7$pdPx9h=-~iL-ycX8(K?(5d3Q)}{=K{YfjD`V&ZB{vgbkAG+4TtX%pu(Iq6*`M z>Y0y~%ou1FRr+}kU8dhSs>OeD? zXxqI|CNT0EQa57mFA613Y_19=PmoI?Y!A`uNr0Lem9|64^_e3=v^1ghOe22S=cZ{0 zKgZ*lo)+vQCqU`rgMF26elQtT-l;)cE8_`LdQ31`q`bp|$&m6M5==&vw{OsyI;G2z z+a;~OL?j(@iL&siP!MX2ZKGj!ztL(2Mm5P1w>J9W_Lk#G{gNN>VocZ z$Bc_tCl*G0(L_-?4pG6&GCu60_o4IH?lnC$5DYXMp{D1Ya&3hSj4QG1kC2c|lkV-| zc3mR(37!!>dp|-r*!~m*oD|U`3IQ}GIq?;HxVs$0C&?_Nd;EjK$;%H11=8Fm9 zMBH{>D{`R7zlma;n2s-AP5`7knOhW{w;=e6A)kD8&BO|fSJAu+ked(nx-j+d)$n3r z;65xgd=^%};jVceD$GbxX~kHpcu~iS3NbDfLz1E%10TI4un5nl2))BCU&zM0L`1?3 zN27y1czI~CLtqaGOB@1wAmzB8Qi#M-*n>z*9RhnmINl+!hs#D2-&18HbC1cFPx@B7 zzBR6Io$IsVORnr%Mg(kCg}Y89pGH3Hd-!s=1`+N$g?tA2u(1apE`oHSEAY|F8{w`K zh=$dExNEuVTR}dw*l-utuF8i>^;yTDN3@Qm;e_TOd!h4K*j^{4s@piU4L543GVxhu z8HyFx)NO3chAmtm!}ZdKU`00WuHptx88!`Y=>a207`P~o?d@r}R&W*0XHdc6?E7Hl z{k5h{z{XK6j1?`UwO=rPm5u3V*z-kzqB0S%abOv?u=j&Y8aRT+d?a-7>XzF(sSpR2 z`{gkbt7zIdI243*Dv?c2D?m!D9>!Q#!wG zULK6&p2ZY8(#MPDWqu_T_c)|ff1+an38af1Xp&*Cc#x>NaAwE};GB;(3}UFOmODDh zS_hVgW#MzVnKm}6-NFy6!l&;HU_qf3Pt;V|w`t|mv>;Kb?Dye`4nEdNwu`stW!dL& z3W&E2*nZ0WaeO-Aa9n9Hdlqa{vP@Tb(p5p}an2GhrQ(nv7jQ7Mnwv~FWJG~86$$smWLkg$z)S@=L8D2r4E z*fpRTHa0P_<6S_)k`j~Q?5M#wRou}B238b`8`pqOkpoE)Z*}2e}H&Md5lfZVS!_+r}Po_}Bx=g+F^vNVt{7?qp zIH9m)c(*=tQ~foz>EuPpp`bO@;KpPt zd1Be9RandjVU{X5|o%!RJeG zI93g{2Blw7;u^={R)G&B^cn$dG-7Fu%XspJk#FM=q=86b8=V}s2<;3)W9|*3mKWQw zl_p}i7S)F4fJ&trPK?E1fjrJZ+N!UHhPcBk^`@fm7+Lk`7hQAUi+|DL7B1J5$dd;Tt>{O~2YqMv4yylS;k{VPjB&NdZ&eVDIi<C>GEr@9e{)JYCUz&m#&Br?{OK0)_vkXWqq45u)%R2Wdg>>?7=!#rZ^#$noO2@+iRnEeyA_}!w>yzHx{-<0NluT*t_7;do1Ms;+{i@gB&SDY*BVvi z4kz+yZe${LlG7uyYndu?rxW=bZe${LlG7uyYo#jkSx)5B-N;1hB&SDYG6uF-6}iia ze1;pDNS);Lh|Kmv4N67c;zT~vjZCCYa#UnD%04nNZ^~yok=xzKMCv3*MP_TH^!9bn z^EpoB&2D5Ob&{hZALgXDj||tF^0`jr4mUE9I?3q~natZ08Q)(rc(RB$CXL(_Gyr=l z91v;N=fhn}JW{ld!8b$ru zGuh9foW8LJlNZh;sNXr}0F6Ad-kY`tnGp zz9dOR9&B;7j5w*#IXZdlN=c-tS>r6jt_IY3qDFHEyf>9D$3zV~bGWi$`0zr2wGf(t zgeg+E>CXo$V_|t>fcxM$F^I?$1H-P8Vrf>H7fXn?oWtdKQ2`S&5{ub(UTickHY&y9 z%ok#dx{0L;QsY{zgjicbc7ntfGms5AeZd7r6NH%{c+xDEY0};E zVwonU;z+Z^NwbEt!nIn|xdIg(vS&d=V?qJUzA?we>s1Dg16VOE_wq=$JPDQ`q|299`Y^@5kte{|8nEX>UgN-? zVqzh^!afFp`PfLE%x2VSn8xDkhovax(t=VJ$k{MjXTBinKauZX>Y`PvpC|A8>$vuE z_!Ex*d-}yA444$PMIV2U0tFN6r0uhT5xLe~PZ`673{&qUZz9gt%YNRo#R5CvtZ^yr zQc6221~khxE{^`jj-( z4DjfXXEZ&G(6f+t5b4`HFMX&Pbx(&B6sJVx(a3QeEO9x|`6?hjv2rZg!c7(w^4XXO zpcAFNYATzlD4QJm6?6uA$09rfpP7sC;OTCdo0&%kIoomsFU1ZnSfyb5IC!@=$vpe$ zJe*z}kL8wvOtO#16S9}#!LybyFaGng_n{k<#U}^ARE86`Pe26tSE0;pR55*PN`CCH zMYmo@8Ss)fh3)1`!BK?|1}bl#ytgjzt;u_9^WH?>TMaK#*iEJDq~J%xae=A8UnuQ> z7X%5=yMicF?9$TGWqp-tU&_pdWYBIT=C@o(>iRRVp7c>x1&To7Rs>?YYVzWLk!e z^$$&FI4)*pVoqMiGGX{ss-%};W9buaJQ5!x8X~h9;A}?Abkxw zPYL4lHx`$;%nt@@y6ytoEQk*cIlj-{1Oe&83MFWeK?Uw)oixQhJQcXA9~EApu+t$N zBRdAYPX~1cICr{$vg1(e9O{K$YK=p^$V;ttsN0E(vo?883t7T$*nAkVAwLve;ikp2 zJei=eX#$#SV}w^=g;W5URH7+T$*~6L}Iap2H4J}sKV;H zg>j}-7+ub)PUYiqrc_vMw=m9>3adug8c#gV6h321c4PSH`@YmjsC^xZ@}EaGNBurwAsZ4HaZaJo!=gNWkT+#2^fNjn1#&Ck8n@Guq2 z8NF9Sc{(4~y&6_{!n#+(9iFi6)$kur7+1q0*TC7f9eo$Mw#{apCp%`%7M&+M7R|<- zCl{EhLq=M(aLtO55*IZ>Za_2rIMaUL2unF`8*fFMcVp#X{I2F;&01r`RZcq3q{uEZ=bjRrRuDMX6_5lv=(uP%x7Rc9{ z9If;!CI4g+O03=p>kWF*+n|2|K*x!aoZ1_?pHdBAs)+P()_itgR??YSJY; zPT62gJ`6~q6Qy|`KC@+0KZ@6-XnNR)vnpzqw64&_FOe43wJ}s+JZ132Tv}I#ze`P{ zGcGFz!G)PMFZXcHz@G&;98b(T#0mIel`Go1;NY7fa-PDjjm00$Jjh%Ob{)#aOd;3C z;to8UsqZt|$+fV0BMS9+MmxC{s*)(wcN*>FS}+)*(12&~uxG(q!l^h01I`4@j`R0T zJSl&YYP4!8L*)m%VJKDpiWhy^gI8E1@jMbgj36StQ17)drN`+xw-Ka=p)aItr14P| z?n%=Pdi)gbJkwQrf5_oK?tAenQ(X4V1~(>0M=Hq$tRqe8P+jdjxywC_S_+#vKNgqt z8a(c1nE1jJnJf-(Peve50u?u8P<^8Nq%jcZUC12Hv{W={>4wQdoOH44?EMiZ6~}6) zqDp1YBY=VQAIQpfYCLj{ONsG3wtW}ac-2KSRhnh032P3W2aWR@D|8UvFAC>bFD5J) z4zNz?pmd;!OpjWo3(ybcm#?rX)P)brvvOYgFt3;para z^D!rYJsAr0BHpZ&;j4iikAQ?k=#fJQ7w#Ydx)nfO(sx#vW|2XpE>yEyEWz%k zUiu<%pNW(`5oqkI)`VEZw)G$+wf_W8Q@P$wU|{=?;3gJy&_k-&L}Sa(05P^aOj7x( z0ks%v{Sd|LxTEk~jUOr#?@6(&_8%kCs5?N&_RBc&RM34SuT%k2U?etWM0S3!e71+L zX?gadUYW46adXpnc=qn@Or%T`KAp`>oV+&%O6)Ig3~CEB9-@!nKeSNFzb^0Jb?ha7 zTvl@pS2GY*F2-A`N*rgY=n-%aG~I}AgdIoU z`x_E9ssjs?&E|sr*QSfuKMv%DfO^e}Qo+l@nwEX^4?$46jph14j}0zh)sP8l`(u%V zIM+3Erah(9)EARrbb@3Z$$GwktERXQfztB243RgXVZaG1N;U?0R5mm5q(7t4@`}Va zJh_0`iiVKyKn+Fcf`5)QJ-Cc-){V}_zl1>m~6;Q2_~0hj%p)YlM=I)L)2RmZNJGAYhB{~ zd1618c#}&^E@8b@Ny%?*F{N#b%aa}KL`=hwsXVexF6B6-eX_nK>3BPvD|!k{x2j;h zo$SvFx`mQ$b)?Byl7X%VgypLeWB&LVuD8jWP`B@UH=Kpia88kZO_RyRkH$(zZ!Ja0p=CKH+o35>=dV{`QLM!cP1GuJ)FRQ?=ZuFO&VD>Q>QX`G%rbr}B{j z9YpekO6tO%eg8uG)Zp97lovv4K37dUeYAQRiX|sx6T~#>4-js*PuO ztRQGOA@%wlv ztY$p%jz2;Ux~J#m;{|%;uq}WwG?5&&Cl;+zIf=@6l#Gl=zGS1S1)T54lZ|^~MG2)*QI*oD zC?7BB=t8e`*OzfB#WI+Zlw!%}szbMFlMQ=fC5d`JvzJscl#!^B$VlW%E>=0kOW$!e z^*yoDJY%w51>=)+@p>xvJ$MbA%ZY4T${}B}K{4V}5KdW?%%46kDGUc9NCz*;^ zg_BH0KDeGNSIMu8RmK_biB)ZV zDpnO|HuR$+Clnyaunp=!LkO0|yae7vM;z~wcu8m9_tI5;)4lX@H7 zz78D^_S(OVM{1&^<-P-8Ur!VoM=n8sc^vvE!=1jwjpQmdeTf*(OeWJ8|J;bR481N6 zEBba&x2(&5c(Q}LX4=p~Z%UzcGBm(nKyX5J>jtEV&^|IWxE+JKCPSSVaZe0hOJFh2 ze|r0~NH4j#wFKuYoOFVFa7;lt;5Y=-_7>2NfJAQr9SErIEuf)wh~EB3q=rx4s?owt zi&AdF>&77`BJn95xJlsEKsD~Q(J;XUBUNOxXsy$eVHr2h|I8G<4zd}mv!kj30igMCvB%JHagWuQ9kW9scx z!i`v<(%^63gmicY&>8?MX@YG^6?QYiI>_R5s|m4X)#~k(|JI?plz3-%IXDGdM>7!K z9Z`wld(H8bY>sTf+)kw+`@2Xae4rTRMREfRVwiJzUW)36>kP~4pT9=`U~Xp#uIx$c*7yE2ZT3?fal-U z^F4ajScgFsxz0Ce50d}Xj#Q$9grUSp1ZwVWdenD;CHFllwRdIc-()Ds$CT+EdgO*e zYR6mTZD+URPw;c!gnmiRak2R^PA=m6gM|Ax;t>33uW<-|E%=%AMl7xJb^QGJ1@VjE zSBzf_zjPV?RiR`gm5ip6MX6+QDp`Ve)0-DkeoV9t`lIGW|2cl|ll;_%ynod9JAc$} zX;^e*5xqNhcQaIO}3BWOVSOqvX532#kDz|%dr z1Q?(Bcal$*0?+hdx|cu8gUf(tdvH1M91pGlp6kJt!1Fwq%Jpaurh=XC!Bn!xcrX?1 zu^voii|-h@`cmO8%;T=tVXdgdF)*Kj`#u7YZ{WU0MvMxlF_!i}d94OJUeesh#OJJ{ zCU%|1!j~DHo@pkBWQHLqGbBCU#QWU{T%Ku#FVmbJYT}*lz9zlXZ9q&3ehK`d_@yg# z>-%V2DYEPknRQ<_?=eogJ~ReOx9uGmo8C_CsvQd_Z0e1Ez8fXfg6<^GP;|uo-57?p z4EHjOY{tOA{M@qhQJs(JRCm0Jl<0`Zm5SVtYQ~1;;O0u?e)M_B0>J1XQfiw5$4oZL z7uVM!1bvoh1hE{y>zQ*@=A^a;W;?OD!Avfe1u_|7B!QkNvC-Gy+4dg>>qlS7&yAz6 z=4ZQ%ff5nu#HnON+kQBDvYeGg@AZn*InfP&VNRQTtWQ$3}v&|JqhX~=Tpy#?$O!p#5;xMkTI zj*UWEfsOsQHhNpP`2XWd!D!K#iIYt>rf0i0Sx+`O?tj}Rd$%?prj`kL7l67{YP0{R z%DZo2BcM7%+e*tWTSsCRl^cF(r&n#U8qg`Qt8=t7sdB<2F)!QFC5wI^bNhs zO>gpY{|_szk@}6}GJdKfEIhb3?ycV_Z0kqJ(wFu~6W}i>f5^|ahH1Gc`xdva{qlI5 zC|;y{ydhtj-YP6xYLVJk1j*&7$sUetEpL6tDQdkC&r(CEerw-_0YJYpi>k zUonqm-Q#_^u4@lk9~)I&rdN1u8Wz)#3D7LGFFwWC(=jgQ@kB%;D)%+!;2e)+eIRTu3wQ zfjq;;em&2uN2@3IHzW0A{0lQ`9ge)oZz5r*fQm-3Q=_AIJTXJ#@7cw}_4IEMVQEh- zKHl*@+_nc1=&1(Gd2p9HKW7;^6nClfa9m;N#GwTfoD*7blALEgv3Z$<1KTMnPmnbl zDhC!VU=`?aKaeb49KpY}>CCr0bxBcqozZ(1rBpf99F`v+4rXJ6ztG0qxisdw|1%pq z48{7z{o~-)K2mpQe%+(|j)r9L@`s*ur*cVWz8_EBjJsW)N(u8>sO*(J zW!Ln4B6Ul;+RK@uPRf~wcv=65F_`XJjE8RYmv(B6XF92jGfQST#G77TLDqI<7+z_0(%M;Xr%j>6!mH@taiuUD{~!YW+nT&o&8-5!Wpzqh zZVnPlJFU|iSEIF&oyzNNv_~Z|t`IOee}zErq~*Ai(&ZhruO)Z4>S@0Q7g}X%GC-=) zPF2*wy3qz8C+m{h#=+7@II$?_*e9-yMo9cmVevrk1DKX2-IXYVSCvOcXP)0`RJd}zy|0N9CI3-`}6 z(GPVBF?*H}e?=eHf8NII>h&klg-mhSML4T$25tU4am54t?@){Wljcu33Sr*^KCBX9 zH2iY1o(JhD;Wc($h<~sBocmW!L(1#o5c_CTmu@lC*ng8*#rNZ z*t79mi65y->Cyfj@%WUV@`JMlreXDkNhdB{h&a3T?2gw5gEE`lrR=U__hP*r^sCr^ zJ#*g1?o*(L#ryhi5$ZRHC&q3cgCyf_E8MZ{P6wq}>@X^Qpu@hyVieqBF~e8sD;CGI zdn&u*j{5 z8ccDZfp~7{Pq9w1rdg(#pCbPcQae+o_$9j^rJjSoDoyTI&h@x7<>FM9{Eam6cd&ad zyBD&%lihEzo9#zD*RcNvcE8W=o$UUN-Ebr6+_#Z9hqJqt-JOlK4W@Xz@hWI;Hc{v_ zb{DX_m)*ZK-4SaSpEU{5E}|K-gt|;vZx_ShKZjjYT){fb1Kkwu8OpUeglcWjklG=p zIB5u#`PoCLw70W+Gh9kV#`iHiVTc7q4{^g@(Vzfqi zk0~^U!|D|}lEa!5n#AZZg{Dz7F%75)Qf6u20Xhaqh;7h|N^k{-Z4)y@Zc?ejt`J=d0+si-1<^v|qZdg$_vm4P>A^ zA4Qj2g%g;GW9v8SHLhcPqO)*xkkMx7fX! z-Rs%C8LlJeHsf5#xs%<(l12zDjsaqRzG zpVRdx^r3UQ{>82tB!3ONLxK~5M)2pxoURMmy^7si+1<`KbA zGNP<6yV@TUq4J67SJLH^%$OKmJ{|6Cc26ol2L8?LURHjhIaFL<{wy?kxO@ZrzheJ$ z-+@3T96IMGjM_W^c4V|V-rqF*{9 z9E*wHv0HN}`HyG!Mt0w1H`7M+9J}|i`zgEQM-u&fcGIJN0RIYhuZF9M`uLoHCem># zfwnkV?@@8G-{b&7QL8pzZ?6)d#Ojo^5?#%|d zTiIRB^mXiJ**z8Xe5{qhW4g}hM{XCp=dpVcyO*+i1-sX>Tdx!6_3Xc$-MiVn*&zCZ z>|e_66YOqf`hNER4z82#i~XJe|7-02jotsSyA&=)>%c^e$1nCH%Xy7mUjzBe8^|`s zHT*9e(#&eu2lx1f-@#ptP?SkS9M-i3Jet_S?mZ1JA@mm<`a5>tZ1}UQ!^(b%&@o+g z1IV@59nS6;cBittnt9f-n`L*aLHwt(dl4uxF>gS>5HuMu1g<@RQtx1Q`vB7F3U+TA za414=W&eZh{)*k-4>%0;1ML6XfMVuZ)y;g!>~bzf-(Yr`M7}v;QZ9s5G7!M7H!XYxoT4EDopXrA@^hEarYr_#AesiXtK5HUSk_lS;*+|&;!N}%nX)D zq&;Tr0ylAw5xEbhlh5l{a0(6!_{e8Cs zZB?k%cQ?=ug^uvu2Xv`INBMpV^eu(v`yK(>qtHpdCxC8J=uF>}K({Hh!?z#kZiTM* zJqvWdLO=375A?7?dwnkh{X!z~n2+@Q4Wr%SDc@^AzgOrFzPE)TUUJdju`2nCi$27B z;9VDeikkn>MTQm-pSvi8Pqha63H z%EhG$P4&;#D#Qy49pk5e0N84fDXj1>)#Bn@g>3&SEg@c3sMEhzs}hIxmz)>)b6T}1 z9VpS2{xh^1@r%KXg4g?B!+SydT=X_(fzP?<@1n1G*+n0Uq(PON(+(BichOB+o4CtGw`wEB{Vw{UHcC9= zqWiSb;#V%(s~skucG2V7;o^@jdP+M&yy~K7v@zl>7d@|y74N&~Rc)O3*hOz@qIQiytu$zr=g)N4!@mowT~b!0`@ zKUw@-hOsV_#V;6RqX3Xznl z;#`GD>#5=eg-GkEqLH?J#N&dro+`F0L|RW3uP8)XPZe(}L|RYff6A8Pk=9d15mxtv zNYAOFQX9$$Mzv|;Hic+ZncoRq)m;sYlhax`6phe*vxm+7L9LX`S+F;F4WY`SPsh|-%bMoGl!O&5nV zqV(GI>0-L#B$+eB1qxA_%@Dg4qB5HyZcvEIY=-!uLR4lm#6t>E>NCX03Q-A6k2Nf^`+wb3avE13-nWk)|q$d$BV}lnuf3w#B+?cijC%8eYtpx(JR`e z=3_wbDAYIbJkaNi?2Iu~KYRsKu-{R*7#) zq-_k;8z+ey6xtl9Hcl3IDRfStMn6S7q|hXMg?^3rwL(;XYsK>ltuz~rwc@Xgwu+Ug z_jO{-NXoiDkT7x?B7noEyd2E*jz6Bpy-doyg!;SwDgUFPc)bw^0FB)ZzyC0ak*T2pNJzbDozbY^kb|9x?vLf01; z0}VKuICqP5$zbhPG1)~m{@cVdg=UxBs{KHmt5B|_!GF8>wnCR6><;mmLboIAPVok# zo#MA8HU1ysUv`(eybpAjcu1jGX^sDGv38LRYXZ7Q>{Dne(7oc^#WHMFY0Cd2@yQa2 z&Ms~B-zO&1C3)oi+S0@P_lr*y`cdfw|AS&1E|^o;3#GICd-?4hLL#=%|A-iH0)_1s z4Y3vepNnM*wE;aYHY+p}=n3(WLd#>P_bNfqtM+qHLFVTHLEp|FTN`Y4J0Kh9K;>;&FvW zA?&x}Hwux=XT)0yk<4er2MV2mc)t_>QRqU%``n>EVKb;`tmOPi1(fww!f^>eBVVMl+~FZxajjT%lubCybs;5 z{bkMOzg_e}*>Df~yljm5A5q1nBx~~%@uWmzYQ-M&6LHUp6m_Rq4D_jJK3Sr5K%e2; zffAinaijUUC_P1@3o33mHErWM2mRPIw4-c^F2hR7uf1`qMBit$f1^ZuD;_re+D8iQ ztN4Q%(#}1d!gh=2EB<5_X)n0w4YOGLn?hIm-!n_K`ZFZwmHv;+n6|=2B2cF7aFK~U zwHsYj5~$Gjxu_~osr_4_cPf5t#x)EPoccQz$v~BMm_i>`3=Y(2S17c%q9stP9Z)D( z8TQv{Zz)vA=wFQFtfWrcvz}z`6h*_{Fzd7*Dl{9YulATimjTslFDUdZP=ofCLe<0H zFb8O#DzpS>kXEWn_c|a;>#xwOKq+m6LW4%UVK!=ERr0wJ{#Zt+v60rPN5Itrv=7oXDZZ~ps@25TEpmag|1AT3C>RxdYIA5&6I~%LT@wY zT7{xjBxR#QLl|vVXbz)u723dPyF!;Tx?G{V7+s^#GmO5k(5H-kq|m_X&-~-G#}t}T zeO6$+_K8B9s?Q4?r48tidfr)mVPJx`S)sQPHc8vAP*Kf=fyvsPjJ5_3F)s~F)qbH+ zi@7^6OV;E_yhyP@Ci;5m=>Z`Ps3Vl{{OJJ4uOND5Ka-#OELIY}d zi4(Q=6*{W+W}xD;WeO{5cLSvqI;(aM&_sofb3ex9%3PMtjjkQv++X*A-e{_kLil_O3z~)%o>x znsJWQ^Om}I0_(JxLQjHoy_Qtyow^GHwl-X$qCU3-PSvI=)YPX&&uYgjG^@{EJ*S6l(4p1p0*0 zPBFS~aqx6)`c{g!RZKG951grORESoe?b_vxUe_k{O$6Ju)#nrE>l*d6o3)J!Q6ITk ztJ)@|P(RqAt#r}UK!B?`XRup68|S4i})LD-)ZD($~ZbZKuZ zRNuc+@6!IEP;>t`gIlyu6dD80EgF`N_}dzs4$duF5hFR1J6o%kVcavEtsUv2cY|kZ zb6oVV;5phxMq9+f{+|ZV)vmdSWNr~B_V?@OX<|E}onlRYBXpiNj?ose5n<Fw>!JnvrP{X@x)r+Y z)S^3Oyq_>yrqC}LJ*m)hjOuqu&Nq>xo!TQ31;xN!Vwd(Cg~|q2>btZT6&irB%e1!? z8i%mUw2u^8iZFa~>N1uYT*oM=Q2W4fq06;Wg~$dk*QyxFn!a31$}rUQHb}|1Xj15# zS{tJ+2%8z&tvx2=iSq`A{a0w?ub}jHiYo>l6S_h>Mxh%A9v`||JDJfIap%Bo;u_6& zC2?*MKO5-RuhmYwN}?yB=e63sjJAqrIqVIEUf{5!uOUu3`@L3MA`zF;wc1LBsFbeN z)+t1#v`5>d5S7v%ty3W?rR%h<3bha14RoIq|kMm?^@Dj zr}*ojGeh6jURLOzgTnsrXir`z!vcfP3VlaA>e~{<2cH|dUOW1FiTkW zs=SItK|w)5!3!vgUg6d&D0=Dr;9h&LUct}zE%^P{+WX8oGkG+nct8EVG@W(!UVH7e z_g-u5wV!jQ3bD`1U+CBz#O{!b?@(zA5W7>>-Kk;?h}|Wx)3GMR?v}UTrP9tr>>hdk z-72;QvHi089u-@M*u8SAj&&mTIeDFqU5MBL`K*pvh}|a(_N#mYh<#qJ(6J0+Uyx}X zyBx9m<^4K#6=Dy_pX=C15&NR7zE^R%5wS1H?K*ZFVh_rfbnH&V9+D@1PEp>6*q7zA zI`$A^Uy+X=P-%}L_OLwfJ{5Zku}9?9I`%!pzAC@3V?RXfYw`~|_EW?jm2*C?^1X`K zV=~RLQSr;UH;Avx+jZ=>b8kZI2ORsLc$3ra{sQG2#o2J7@pVaId!=v3XvO|9-{U&% zY5BjyH~F5(#{L}stnW$r5OY!1`jmW(V^_d>?)5z-f0&Kk?|WMQS2lK%@onk3pGqXk zhkeh;*&HJ-SBvk;GqSO7_@0#~tC={`3XSi}xhf`JJoA~t@5>=q+7IN2PV=1gW+C0Q zmSWaCg3lNJb;0yI=*IV7Tdn?Q>T^14grFhLc$>7d#Kq?v4imH`?8dC*)HPWeDbB%L z)9~F97k&@tz1)Ry^H+F+Hh+~@VVtnkJQd~&=H}+C@YgV2!Rt8uNro!?84eRP#9bVA z=xq#98bVR3@PkaL!jEOcQYfDJ&=5~%X>!BgW&8^+_$r4JuwJ^$=RkKoUt=0oX9}C* z@F_&;U{n~FhUXLB$54e8blNC6uOSph;&pe1C};W~&7r(w;Y_3&qMB(=b5S}qv`bf* zu^ikOs<|y&6;`rUVI^A?Za`V4)`G$`F~&`=Fe;b36enzm^Rjiu@7^$njf~j}Xo&ZW z2~VZZZs)u`oLBWbs-YB4*c2BdwLlOh?&C2${#=(ZAA$z+Hz(vjbxNuyZs{>+RZsGz zQn=v=(_FzcALOu-@O7^6%^dy|pegPFEWpjce3?AT`0r=&Zi(gEp6UyZ9_`-YE>VRQ z}sH-jTBu#}oc3*WV45{M{I3V{YH8Z1oW5C20Fk@|?JF3TR_qWg3Du zW-QIGnCACmAjwUNHyQ8tB*z+d`|9yW6Di#79UE2>7~4bLEmf(ibxI~wmZ|3kN>-{x zZhKI@v z!4UKU9w}M@4bcW@inWZ1GE{ur98}&or=}TR{x<^MKGUi5c;4?%Jbn>0#3;A!J#4WA zZOkmTWP&!vZ3CCg58{4pQ26nozuBTxgzKwZ(VK<4L_^UBJW(;f=qkX5qK|-v!VwM+i-Dq7k#`Mfb_v?I z+J*ZOzeJdBvg{HU6x|C-+TDt9YJ^iGBJCl}Wgg17pZX4o$bv(@M@0XER{^7dPjL7N9o`AdGr*i|JOd2Doq*3V&2voi95Anf z=K$b~jDL~wFEai`#vc+1q#hEx7^WCz01u0AE_ls%SRP#P2f%+_@TRX_6wVI#uNSnZ zw$b?00_@BHv)eNhKPz($&QdFCmieQ`xi#nbw;63UZx(JdHUZxzFRHm$Y%`)Y9{?rE z>W`9cVI7vqnokwXH%4mW{$0j3H7WmLd0Wkpf4=c#!Q}|=uer*9NPe~E8o+PYTnBg% zeC8W3)!YR7S3y5&{HA6f;2Sk}`}c{LYVPyz2mGr40TEpIEnvP~^CSOEzSp=Lh;!h6L&<68?)3LKXIys$d3-yqFy=N1t>$=J>|OyQ=$c35mH;H;vJfSZag1Z*hU z33ygf3UCd=9by6G*&!Nd4+C=nLW4O_AQM64q!vk zLBO=jP1OGz^t2;uy;2dNApe*{&z^HL6g% zZxZ`Z+iQy-0Q`9IVR={WEyerAgSDRle7yDm;CE}kgdXuDQ2OM*)_w}%U)BDw_(kab zUW8j`1;FQzwVRFCjq*jW6#vnvTXc!z_OCVGQH^iB|ejOz?y+6H0A^T&O2Xza?v#0Yy~@gt@C z%Y+!_ z%VrcE7S}f}FFV4ihs7<8H$V=D>o=4g7I!ypDJ#HD%v7L25@j)mi#dE)JPb;o*jtz` zd%%1yd}-N(%AmuzN|u$x7lZWp(z+5OgZ3}n@$A$ zdQ%nP(@m!U{$tZzz!#co054cn4|u3)DdW!u{LiM9fWK~96RKpr7f6z4F>@Z4GT9Et`dS4`pn@gf6K^!VFLaPwF$a{-8#R)~j=g5-nbe}TnoG-8Ncz51JKxypVE!G9 z>5#PVwq4TqsCtn)qbSX(X~v`_?Yvzn$+KO{@DrSRE0=NymvR8L3iuyHZ4U(=<+*_1VjQbua30Z#mh? z7g0*|thk@TkCwx?c%EeZGYp?&_+t4HnLaDvKf>)jg1#T{7w{NVU=aUe4p$f?nM#9f zV2;L6xCtZj1r-GbX{5kVd5K#k)04+I$sk+$fNwANHG)?Qg5U5RMq3IEukhk_x>pp7 zO@L+iUb5!UvA~Nrc#z~f zaMRr@w>~S8T`3!z(T_NblH)B0N`at5^%)W19+uz8Q|5% zDB!im2LZ1$t^xdnaUI~z#*Kit8h;OXyYXqjJB&L3?=kiR9xy%+c)#%_zz2 zFua}N;|yPBDC&s5rSVirdMOgORN%ckIE$H&Rr(;FHR9*K6a8!aTmAk1+x!ptzv+M8 z|BBxem=Wj;>@|3?x97w6Qt=)Y5dfwb zm=a)Ur_mGQ6z%ba1%6dI8{%81C@YA-u!06tI0ZmDn-+eSq)b@cS74_o-AX&m7|R zvr|Goyeo;rhfX8RuNZnyr*JvLs?#mdsJvros!k_v;d$3UwFayNd+V?f1K$eq01m=F z42(+wz-wSF1}+(t0)9%++hgv8y%<5I<$ONK(J6W7r@U0ACL%F#;?^xRK!!xd@o0fQDEm z>k(eg@J!hVOcTRVxdh?Algj|Fz_(Woaiu&9@G5*G72h+L=K_96HUr)yR{?%fwgTQP z*8uL7ZGe9-F95tnt_8eRt_QqLZUp?4+zj|>*$H^Nd^g}exef3$^1Xncl@|iuA-e$Y zlo7zYWDnro(gM6k_5<#hQNVlUPQcH}0l)*2eq{4Le1pXhpO-1L=nD)VkQrd^XZS_A z2ly`m8sb4YjPOH%hWN6)6ydJ`8hG!^<$%AD9{~KV90mNHyaMpQ?UF6B2B;>WFc(l2MnK=9@xky%=v)lm;u1^%o4zr zW+`Bc83J5wmIIz|&H#LuX_)U6?U-u3Q>-(K05_Okz)hwfu){0{++qd+x0)w_{ypYQ z!0m{?Q@qct0=&pP8L-==9ll=kRKPy-G{76oxqvH7AK*>q0>GQig@Au=E&{yOq#eRf zVRrORal2UtexEVJfOnV`fOnZE0^Vbu1bDAm33$Mq1^9Wh8t{H|4&WEf(*Yke=K+4% zJOl7yvk~0BiZ7hKQ#@)e1N^#4`;U*CX90fGqp*kFx-u8ieWJ8RF~A zr&c_UcVh_5mY(K#hsJNw_$?a$4MWjCp`ZVtpU>#$cMZkoyN2Q;R;*3*W@6SkV*Q{M zUu&f!yRBr(s>LhwGCk=`(&}xAq$9Pxv6xuDxus)x(3+Hxh*l?(1Cca^T8Db9!E`hc zrwDykCK53#!qK*P+UmEGgxzFCn7evSA7MJ_g?xCTY?Oz1GD?q?(Rd^|Orf=rL3%VN zlM#+@h@jF*u_2ilw36vzYDX{XE!v~$ccoB16K1jNyDzqS(%ES1&|o5&wvwwe@gCuh zTvRXG23%?G$VCm}-O0!xid!A&NheS(DhTxgMzm2_Co`UeDAp%?EfQ$7hh&15w8k?7 zRx*OzOvKVvE$K+?wBlk_BHkNi`Mo}E4A%XNRu!grpVi{{gB$}i|-Qez+g+x`Lo2Q#Vw6#Z5X^=4k7R}mBEFJBM zq|z-`%<3o8=nx&$8qvW-D$6*0Yc~&CJ<&)kdWqF5+Qz8C-2`_7P@P>FC{9(^)lQe* z>?V;8n+FGDs2_>P5#VlWe^;02jPHym_QZwV1#J6gc6W34d*YYM?ctP>x+B%A zBRXIquBwPWi6n-)s#{aNJ;~M|0_^8%#mF zsZO|&NwN)f5*BlUt2vaUTS7tQmjo-dBcWr7!7lh67*;ebHlxR}8Lzbly5Xlqiv_or zi(-QlaNm}$WM3qfvcoxjl?-TAA`?%uDYd1@d#sPghB=C^o8ka>Efs7d2a!T94v>q9 zMB^z?iss&4vB?@p>_(qV4zID&sza`Vw@;EAV?qQ5hdUAi$>aB+ah-zgXlm`QhVHmx ztnbK@xqXgJr*v8~=@5tE-8o5?h(+>$8%Z;ZH?0o^EVtx8nWj9ilgpfpT;t7EARi3p^ioC32$;A_F1x zsdQy4j>W3D%WM?_CDDvQk%u9D z$_j75*7-I*8|h}eXfZA1rX`X!*SvB(s90jt|i(n2BpSk9`8Y|JFm zR%%R!cz?_qH_7GZZ7uDArl&J&EMbj>P$iR2nk^k%MSqmnA5zBcW43G)9U%&CE84V!EsxoFfaO zSeIzA`XZRLrfj9r3{HD_1Zy|LQAQ{bzP2)HayR@S*bObRm=cCY|2!~>W zW$kQ^_h#LWvR+d6SS)6bYWC9>Uzv>b?6lDJfm0S@k0WqbLQSAn?TCO1BTI@FnlY>q ztyE8B(8}UPYhGMCk4;veUWW^{5@?I}B`}{PkXjwJV!gsr-nlDHTQ<>DSA@4p5Qt$} z%@cdA0A6j-q~0Cxr%8TFX@MvFI;`+Ck5%h{6bIco?Obgt2?h3M_dCR(+MkJHgi@TG z^@!%@LJ)=C(4h=e4Og@+cTXa|yDKr6$_5lgg7qIm`?cpN@pu8*&EJj)c7@XP05~N7qa0 zVr^8)g|pe)W@~RUXd_m02o<3jh6?f4f(q)TyoxAqKz_kygP@*=AVduCpt^I{M3_0@ zsdH|2aw4d6B1Ady$mT?tbK`+i1%OUV|yyQo5#X_U;hY_i5XAP_SF? z;4;2fvEXnNTsRP;%_a^hn^WPGnwecpyLDt{LM1A1G|s};wU1cakDjj<*Ha)w&C%I+ zBolGo?W4STs3|ZZ7Ml_YrO9k$yo`<$;%buj9kP0PWvq&J;#0~_-GKLCra;a63sa!u z?tqDu+6%9BZ%*qkL*vPg z1~g50EV|(Ro$>g&3?xOiNLy&*(7AS~Ysc`_v5m!>edDy%wUb^;8;3_BQJaWIBeM4xk3t78>e_oe3bEeN9M|H&XwpuB^vQYz zk|*pANSnAXAW@t7xYdHMpR`&?pR8I)p0HX-o48s?oUB@UEFMqZ+~FoN15TXS095j1 zs%Hv&!*#;q+tg0%gz4H4j*>q97Vc4cHuO2UK^`Ul#8p2^M%5DIUG)@TK6zMr6K&-#_FjK&F*1&JS949t#$3+ABA!% z!|!B6uf0+lw;ww*wF#0Z>&0qLH$ldU`*3#lH$l#$4X;O&vg(V@G1F1x`xb}FiL$AY zj8kK<QkB%g3cMERv2q>-nEVnu ztxI5^o!u%;jkV&|W#|MCr)3#zUD64iSVy~7wDjL>?c%4P-8rGAJsXmA^h)RG3{W7J zwX~#H30x2(v7!~NgQ;i?{jx2tCU$LcJ$J$$O0!;l4QDS)(3J-|)Q|V8>TZbi_R=n@ zR?iyz7$TiH^1dS~N!3;>V_ttkia^+FVys5_h5{}e^z6iOUQc?c3rj{US$9NIT}dl~ z9nW5f9xrgVkb;I{`xatX%vHE+H*MqD#j^~Q<*m#_W3&+G#YKu26kXjKH<+~2>0vBp zqtGE3&^{^7BAx9`y?!Ni(r^&hCzQ}zPMp#=FfRxetSH?br*s!rib86tG@{K$S`s=) zXV`5xHX{qbCbTt#0H5(}$fN~6>#RMoC=3Ka-N8EJN)XD!V%M!FI)L3F_P4B1(y5!qp3)({xit+ZTtqGdIU#i9M@u9p-$UlrBd2^ z=-6f@KU%Noi$k#l916unZc`>~hO3qwVbFUEhr0+ za@ff_wwpaiCLU!%60lMeOd1{qeNP2!dE=fG%Q72B=kfK~f&Ly4N%pdO9tu~g)7V^QqU2>NTf&&8lAWs@KfwHMe@ru3qzN(EJ+gdTD+QnqPzF z*P!_|Xny!*T-A={w5`O=BUNStO39sZNK3b!1giu!08@+f^JWb^p}uI+E3ii$!F7~j zIuPaKN3nA^4(8N)a1$<+V63WzyR)#hh)ww2QJAb)pGh~Tp|tJ{Oemsuqu~gL?44@b zUyYDj=^R9z74tMRk?O_1v4vYoy>yWPwg3z}8w${AKsrH(fV2VXocig*W}000!g$hj zz(+xFLPK_2*^{}UffyHqCv1hvw&=VK%|+#ss3@#5t`FjwQ2S=^1cm6$9u8|mP4xBA zTmbvAdW%b7Cl{Nw5Sre9Mh$3FTDi7#y+}8x5skOS`t)T&wVONr&~#iQ z#D2Mb;ZR%AW($J@OssZ;l^lqsQW!8$q!PAaS zRxC2ap_Ic;TQQL#sXH1&U7Xa`fk9aRdtl$9GaZekFyl(}>=2ArN3LxVep86z*b zRcyl-5#Eh2%B{gyP?~8j(AXg8P8uG7==>BRA3*s912v*h^3uhejEAll?F_3EQ0mka zqx)kT!!_tg5JTi}#pt4AYA})F5k>_qJ3r3Pacsm>I&kDjN?_&+iRqh@PV=1*wvnwq z%wBqljq(}rBVC-GYQ^I#&o(yO>8Mplf-AK$+K-Lrb&+*qZ3O2nn{XAa7nA51T|4HA zw8lGAI3Kn+=h%+9gtI?4dUxI`y;Mz@5ZkujpvFslj{bx?M!w7Pst%5HVJX-Kj(jP7{?>(-l{I6%J46 z4jJ;}v}EaGHQd=c$AG61+TE$cLPvdAqd2Q|wOVn-v0A{vhdM{JdYvn+uKfzCVe{ry zZEX-;6jvu{CaQ|$o|BBy_5h<(?~X#pM87Hmqq26QH(NW`C*cu5LGg}+^6EU3CB5(j zh6Ajnj)Y!1@y15qFv}TJBwLcCb~stq1(l=kp;2%{BBkz8bNLwI^>Lz&UK!bWGFxh$W}S-HfX#) zbH?b)%MMo*G%S^*n&z`W^`Wc6U}(#UYqfJGrgn7BIM6#7-Ovu)bck>VS&PFHx?$W( zLpWVLQ58fNrd48!3`O5V;XdwK_rSy%g*@uQ2J*1dRm`20Z+O_ZIB2ACxaK734%s?{ zkppZUGel%vqStcVj61@nz>a4H7IHK=W=$FX96MMzUWMa6=h9_MmMv*%sBc-=ylPqN z!o`h^D;KU@y}Fq|UDNW#%jy@muDTpIiq!bQm)^n5CA~Rw)Bs;Mw6w0SuD-5sVLi9F zEybS6Rtt$xYlXT>);VdLUSqjtN9fhKMy@UzySp`6?^-=2Q`X@~gVNgJiS^3Bj%F=i z(L<%Xqc|Jmi(5p4)hFc=bjtzGxP=F3Tx6%Y4O#B}45U^%Mmrnx=&>0Z$HCG3m%g;p9vM!! z=b9?c-op0UN*FxGkPvVMAc9dYj=gW3sITEYa4U(a804bAQDUd)I9*8KS&oGsVyDr9 zdMJxkXT{lQ)=X`VjKB>iTvUsv9X+CSoR`ytk!zM(6^p>_U=+X{s6S34H;weRg<&42 zF9VSO7c}{St)uIzUW3iybR>>uuvmEm7yRAVHK-6cWLC9UVIPa<9KD~@-PKhmR&AcM z;+&=~5YrY;b373r9!O+Ts;>4IGMXk~Q9m^nkx5uIOpQhNBrF=I#-e8u7K^9G0>6ni zp*WXJjfFJ{i=|Uz(KiW;Wm98;4mfd3mQRsKJ%&d;Ao zsN(uO(d06jqLQ&FpQJfcR5MoelQ5a0q8l0}V=_fmV=rNnnoLpG*oc^fNz>F+j9rXL zm_(+?Wa(r~x~Irw*&*|yvqSb6HGR&i8V?9nDveskY=b~0LqPvcvUW{)hW~ps2z|@Ucdt(nJ+Pf-( z-J|Rlg+}6gIQZ@+=8{f|J)F}~j)UEhN#QnO3eyDo`V0gQEYw@=b^jH_;7og7&r_oZWyuPZL8bKK zO&lVy0^j)_0>79LRTQqyrY_R>YG6TmYJO_Bh@u@4kwh&uO=cD1as1)iFThb7sWsR) z=9WeA&LRu=6jGCT`%n*_8HBJS#ngE3BpV}Bj>*CO0HGVZ%Ny>t( zqbwKV){hj6+lp;a#FZ>59lM!gH*+MJ)e3Q8ZfQ=d1|c16pK@LLxvWlbqH+cSN%BhS z#Gj;(FB<_W%_zx&d(YIlw}H=Yl!>iQ=GTeRqu|&F&PnKr+N~^tO18^K8JnkG2DM-( zJ_)f0uo@hPxi!_yA72at=Ojtx80x*2om7l!}{^>aE-8IWVCSd3h%R>GqsBLb99Nm|Tp z9b>ap%lsZ9e9EU#9mp%89cPifq)^8}{E-#fHt(*R(zv^B)Gx)dTHepo|+oT7s8_I0FVTqz*@&haB43;uKL2)2+jEtXL^E zgNpTGFk6l=IZMTF2pniQ>%q&DE$$Tg%3aOs8-Tl}K{EnA_+k;4w+mtAbox*Wa%ohy z8qi4jXCjX)!@H^ zxt@s<2ePI`&eNf82hSeV%r*{cy{c6$=T-G2LnRlVVpWkj5#3a3s_M50b#21ma@2S% zFOtNfacZ4EwAeY7hN$~ePTRSvnkx-a7gHVht?^dw;xEJf0=!;(8!V(5)1+p!Kv@@Q z%dIi$#H2HtNDP5e4IsI+ZhCT2WMj&KS$SOZx#vrk9A_WvRCTj_soDA6B~Hx4XwPS7)t}tj8W4{xW)ZB>VPTZ0^ALm#IHZan)kr zugzv#;R83Ik8ERq;Pxbc?G~p7)xQpT4zR~ukI|q9euPF#>Jw^=qd+AH<9;W54&v>tKPOTfJXHMv`FK##}dczBDyH zV?EM%{c>u&a;N#nH#WJo`qpb?FDQ<$F78Fj@o{pGT*uQYdrtM%dAOG>6Sc`1ttYlv zH_hZTA%`+|YfBbzh*GG)+J>6yIw!a!a+@96hCaR}6 zt5aH++iRUw7{S!04#8ah`T1yNL|Y}aepV~{YRpH}cFjbq!SOk|Yfo!owSMfz%!c@@ z?ZDjiyj>1$3sHY?uTAqektqGx=KOX`RlV%h(%ANnZH=SlsY=z!aWuU-l*eO1Za5mS*@*)d)(T}0aSq?!6eqv_vL-*-HNdv8%`SDxF>J&Z*m zdyllCeJOSd?et5r&w06!5q0?F>`_)@$J0I(v$u}bZXa>zz`RFo9lN)YbLnW`mNxEb zKlMz!gz*TRP;$5vt+O3Xd9Qk-aH8uz#@b8P(IYKz>n z0UR}@j;+*9=mC46F*ld7`|&iks>8>zM znN3cpna#&0xqO?p4<1Q!>L?sPj*~bxo^RE^s&zZ8H*##{<+p+M?die;&2>rpNwmb> z9+dDG=#i@S6Y8aqkJQI0m*(@d6Q#~eFTvA2Lr{{SapEmrMJc42l^FT-v59mdW2XZ; zx+##x=BwM_tKt0V0GJx1?gt&qlmVUb7*&3(^+O3GkGwr1Ad8}vIE`?0{ot)PyBhO> z9nieGKIIk|Su0&PqU!j|J_Vp)wT}Ja|norBFi8;Gx!E-e|NpBwb z+SiiQtb2a8bax8R!O!k+(W)6d={XKvklvLB=$YaewaD?za$5&9MYVVHRa|Z4IJTc?Ka-aZ$_Oh0MlIxG3V~!**I9`4( z86Gz;x=~Bk(=XnRcIIfJ$L<+ZY43QwhV-U33hYUN>g9BqijJz`T#vyj$=y54FJ<53 zxbfDh+xb|IG~MEQRgG=4;~K@uV^iI|TP!5+Fj4FC^NJGk8}<}WbTy-u?#)yh3du`s z#&+jAgi`QzczFV}P6LlEcapI3k-hA0$#2mdhdia?PJH6{F+ca9)5F%IW;<%|a#~5e z$$i6jESWryyX~%Avnb@{Urj5J_y$7({rDMvMi+pP1^B&8QBXv{LjXT5DGKoGkfMNo z_Y_%+3#z3I7F3In*Q^!>KJ@hAGMwSM84SG)eGL5!0}M+T7Bhr;z$CO$Jv#Xj-o}rrLWR6gJtFF1 zsYg^j2GnC0^9nDgI>@rh@N$S&7R-a}jUvM=B9TgI5CEcto+U<65L((;h;V2lLY*Ay zG>gL9D5Rju=%WmN0s$|KWti;9kC+a6ss&k4(5s%PN;QNUEUGpn2$9VQGPN>5PqkqL z%b00;Fr#m=K*sfHt?2&o!! zkSpY+3Xw{xH3SX9P!*~qtHKptU5@7DJ>}@%ekpc;vBvLQldjCqs?I9ZS7r)E&_iYs zg?*yF2o8_jhFbH`Eoq~uP|lY1vQ9>2Qf6egOv#w+mG6}o%1h0ZzzQ3)90m*wWd-e3h58vpI#`WdMIF>z zMIEt(VO61*`%O4jB*>Huzc5j_Q5GJ#5_!Whgoyypf}-%qM+sbS6v4K+ir1@hZ{)h6 z!0XF`l(HNldal4zRp@#+D+z|OGCZ;uoxs!#ZlmYOKF*&T&`sJGUhbnRjqF41vY{2( z5H;8v9swUzf8;h32^6g|(NZHAG^xUOq9bLq z4i&;6D^Db|MAfe>sV)eQ?59w8aNXh7Km6iT#Q{`ZChm1K}z z9Ysl-F=W$E{E#!^L2sFqv(V0K?Z6{NjDf9iIYB?7D5e8c#bpKsw;Qv>ED3Rh(xkIc zT8a8f4_bk75<{Y2D=-{`!%P=5UiqyU94=%p!e_JYSPfnZdMm*T^(jI)7>;p7d!iV0 zB`dkQJd(wDWQy^47NZdhT>-F!p_iebA^4DOghw8Ox0D7I=7n9DfLw@v*fS256EXdGHO|soC>MBAbPXtj(Hxh%&$P;M(5M}`q8X;g1 zFbNb8K&5GF005oP)BwOoz)v7RpqM}jfgpiW0%Zh31i}C);xe+BrwELYO^rN*CXZ0` zdjy_C{Q#AczNa3*L2;MCufXG&gbR)Qun_GXd9I)+G;%cx$M=xHD`a>XRC!6e;Or%q zpCIrExBF_v@DU~GN8tWU85;6dk#-OOPq2ei@fH?Ug-33tjMt&@Ub0P-{2L7XI!GIe z=U_4SJm7R6rtZd-9ikFKLt!6Th*v#=^q{)G3MpKOPXr$epC~>9`0O%@iVHk&cJQzs z*n1{4dKxMgVE^jF)P*!gV=sPJ+oMO;Sso<7A+La+U#@YAEZiC%onM5RS9o+G>;+Z3 zGn^^&z=07ayxdE$BIqep2o){zplr+!(9#lsk`jnu^lUUH2%q=>DpOTRcq0g(2pm*` zVZX%mNLaZDk2a(6RfW_Wfevj%V?rBsq?00@7!=?sM_bD>5%V`$V;#4{*_F$5*p^N@1kMddLB z5`)D6nCSvU2v`K71O^D~@^OW#;J1s&Hp&IcQ4lCd(o4fgXf%o#l#D0U$VB73a6K}J z0S~o>40my?u*hRVH$;Nb*y}~2-ya&yaCL$n57dtFUOiz|a3@3samzx;5{YFV4{6-~ z3wet@Ce0O;5mk6F&D3T^B-*Gjvnr&bBtYkSrYbOM(p*Lc)dYy zFubh<%0pef-tY>q2UUOpVwr$m<@0#FUc>7*O)#Q16nG3T`kLXVu#kRonpK5T=Kk$)kH{bT7HK z(c8QjIYvH;|J;PpeE|$zqgV0&8~vVw@aT;Q8yH|jXmmgMG0e>M1f8UUjsK?|rB`I`D@*@XW!=%1X?kf-p5@AGe`N+z50) zRBa!d5)=hB$|@5Lz*+-EAzPKF98+!hU=kZ1&}x*<= zK&q)AolBECg13y!K-(7UgcNTQA?p1-vj_ng2DP;k(lB5ufGDkyEItTxLvfFVMjxXw z;0~pfr{MpGF_Q_MU#bFnt}*hEozPxvC(z`Doz^otExaLUr>WTx4<^J6k_czu^U0TD zOrpngAx}~0d_*ZsXm6!W-mY9vs70;RLoHRFK&V}lhFaiufubA$3%!-75EVzW5zYdi z5^90kXW&ug@hd#Y$L2&ERZgxhrf91An1dl? z7!-|WyZCI??Fes$wP6+q>ouTyn$jSKkpxo5lV?Qm0VZY~Rh4Xum6a!Z%4kl9KNJJ; z)FV4QcsnM?)c#7c?;YVCK^|qp8(>>r8f$_k*usP`#1M++8{Q%U9)N()t`O0~c8kJW z5n$gC@FG+|pooBnfR8{iffDo=nkvwUjTTsIn5%BBX4_oIJYz1f7RuKC}_Fhp8;q1gv&nRMryzHOpG0F0RGeWe%6w9IGVJ`-D*kFpCqzFMW zhLU7VMVzLW{4t-$4ympI#|;0S&8Zl;_O)UmFjrXZD5zALwU>GHHiMm+WN3%|@FO}K z1~aO?;-UIwI0ivM5E_XY5i6NBO3H+T!de7?_C_!Z0x-y5rEO1tB|InG5~iO|5&kk* zk($K9F?qc-Jd^vQ@ep?YL)aRoE5Q=7xoU}IMBpD8>DSKyo}?X2SW&m(>@0S<=bcrU zoF4lhxVYxR9KoEJSy$;n#E;sRc>P|C_L%y;j+t_3Nj_7kGkfS|#*9*U7`Rwjx%OXp9mMpDrYFup9 zEpM73JB%{=VL@=hOIy@W$4hbEC~bABfA6DkwH?cSZgA156#Pt9vL%M!-^4pLxt^9) z+lyZnpnrcp4SYh1ZW>NYU|Isx5}202v;?LlFfD;;2~101S_0D&n3lk_1paSHK#DRH zeIhRM=hlE0^MY<&jlmP$`S@(TU5Z-`im89M8hEpx*djLL%Jvq~iXUCsjH}ypLyoR+ zuM?{grhktW{OV0QKFt4ju0~*QOt{!GwgpgvD_xRUjq4J0f0pi2(c32J-yA`?=qrnK zXD)?w=gSUEAnq?Xf+8jAq`s6+_cO$AT_$Q9mh*< zEKsOx-NexXAJv-NH>=vWmTSS8E}783d0hW?oWwUk)4-S!ud-<~=xW;ty@S@h*T)rNd&Idb9~fOzp8$+j7-r}opG%NXCSJX$^$ z!Zetcz_bLWB`__4X$eeAU|Isx5}202v;?Ll@c)|xMx-c4n+NeTB-8(@LeL;sPp&f{LgppdcQAfPzTl3~1uI z>!N796|Wc%JUKk#t?{eIBpT5qnt=K>coB?8yssEF!Q=frPgVEKEQ>L}@B9A#cwZN~ zx;{@m_0&^UPu<-;2ONH}Foh5ST;F~x#Dlog-*|Sv+v!1YN%El*abM(_fe*?l&kUS? z+@fs#vW$CdX6^~~$IM;2)LmXbZ$W)##nSpkOY8SOXj=UV?)(KU#l`jzEqdxiA*M)E zbXWfI5HGcD!WbBpQ6ZK|A?g+N!j;;8J?=upm|mvzCIactf7=iaI{leq{Fw|G!_jno zW1ih0_aO2??w1CW3Y}j|QB+9zeyCoEa2{tEc;7tSvV6ghmIGflSLciJny(nb5M@qF zCYw11e%1{-GEWcgd4J<NE5DqvI zKW1d%vu!JTk`z`n3GNpyU&vt z%Aq?K3Thix>$q z6;FO~QIUDqF7V%m>o{B;!>JD3(-A-WXQYk{ok9K=mH#K?-=h3ylm8XvKOcTO`vO2T zROJ=}p|mPOR(LhXbR(cNa#2|qE^7N*D8;5{opI#VpWT!4!+Q&w&aVTrc--?H7x#*d6s(Q4}j`3dM?) zWyh>kr78skv5i~u;KO7;lqJ{6Gbm5&TX}U-8Y|^Gp9&L5u~J1-J#>!*k%arTpsT$il&*?dsHjkW)yG1pK2%LCi0a>l zGE>pQv2cL}MB){8dO$23i^Oa;0o??Y3D}SUn?}X332cdlwU}ruT3`dHAY}t(>DE|T zo(&Y27qbDV`Ywr;puVG^aebGl`Yu!T{UqwUOx1TR7DIiQ~U@*oMh|OK?#a z40902;MyP8FL9CGUW}^}QA4;o`ol4j16h2^FkLdFc!E<+8OcRV_sBIKIa5Hc^T;a- z$jLH~o@Kg{ZKI>1dbOfPD6Rw=Rvbi+d0rlKQCKq<8xfB=90$>3o?nonugH=-8PtHZ zl!~Ac3wm;5fj9+dNhWu7P6JhqVRDz{px?4mnR|VsK)(?X2cz&JRKLmDIuSB@&XJ9b zs2rK@AkB7-5SXwSx(M&hlrXz)L2aE-GKCLPOnp^ zw`*VNan~A1AB=w3?^>fq@_3HppnJ5-B{wG*L!JHIZN~!IO+`H_p=rz4pGuywJ3KS1V=;h;nB=M>9w}dv($Gd=kKx)+!4DBfIG0I z3vTPIiHI&v$8{2}j=Ny2AkQ9)Sp<3J&6;R}em}0&pzMdM0|rb%OLnP*yQpOr`NzIT zv8jCnWoAu8$1f)1x)#?=P^pC=q;u>fk}w$#kM%Zt6Fg_JJN5uMuKjKB8#N9_Aj?5{ zTSZ}>%-9{(6i}xEP=*$|b(+lB9W*I3l4Tqc&yJ_!y^#a{hP3lVRRoM!KnYmO3>$kh z1i3z8%FN~N30XAU^32HY_-SwUkY*3%v7>{JXD3j^$kw99%xQjA#3IhklxljK&PCkW zi`eY$y>Ux86A47iqcPi=q`eNtMccWFV+}AI2f4P>m4<_93_Q`y>%MU6x2S&>;v!je zwJbv4C#lbbB6M~V%P$5y9?edMr5B~k!UlJ=Jgvic6%AQ!@1xl`7z8c!+Gr2D*A7EI z%~yX6dBuIm8^QASL9_7UUhT)tPrF!^SR}8&0^wLdtFarTXf^IPl3kvt?Y<~dgY|%A zP)Ce823dWB9UoC;J)5j=`3P>Lusro*IiW;l*0Q=$FD&dMfxZBBNVHx4?Nf1e%p7XC8Yny!iY0SHz3; z1@TT}US~RPMd7$J1NY*HDs#z4Zxs~RIaF~U#@wmNMm#$c-s~(m4u(Z5)n?=YD#vQ1 zMENkB!#VB_F%VwcDg~ugNqp{X@L@K9PTukX#&Hb$(XEk2?nI(n1?5ZGy%5Qyh>+b+ zQa0vb4q|bi%y|z8v^MHIW7#8Eh3t{Ip}%yG!adZDsi>WqZHi^=bLSAza4>zbLhf7w z?mV~_PYqK%UR`LQ*MdAfN5Ejna|HB8JU>8t7AN4k92d zcR@kA1}Er+omd!Vy0i+RGf}&cZ{_#oTm3!xuKu2Uw|q~&d%q{&FTW?>6NP-LAfNMz z^QnL`ZvyMGT0n#yOHa*6Y+Vt5_v6pu+UCJOn4W+!8C{NAS4B1N_5xlS+FQYrS2O-- zPgVp8Xnc0_{TS_oYP845g3(^@7wF1Vv!x=Pgc-=U$9Qo%W`rZWOkm55BxV*z!fI{s zmKLDegCYJZ4;o>>+^Jm!#MQVbV5{9|;em!?XCYMK66-G5Y;Ix zL%c*wG*gN~(rXL%M9^%jp&~MR61cyq=>9uY8FLvVB%|3Z0vj^a*5b}`_EXzRXg{@| zD($B>Qmy@D-!>)m-Nws zJoryzChR6t`o+@_^Gx>0^3GbINE(42k;U zH0^7YzRpv*Rzz(d&}`EyyP-^~z?hZGoaLO#!Y!VcMmz31VwgV5BL2e{vLP9t({<^U9XUYOGZve#Z&gOPc8a#ni6qpzNiI<5$3&O!WG z*gc&Ba&dV(hP8;M7wT%M@~VY0pl0Db=l065QYDlZ5>2N#w*{nx;b3b3xpT(yO*N>> zsNqtVlPqnANmEB-sT{^Lzk!BU=0!5EGeFPJTw{p$frWV1to^{OJ`@d?=0l$$YnT(E z?70_fhe46V40RYvYBcjImR(_ud1#9!ganI|;N}tv{ zNgBqyB)3zNYMX|QB9~=P!F=xOV2+zBvfRRyi6&_-&Ez|d{r1~$Go!&2%BwduS4BOF znm+PReWa&Mr!StDD?7`7)99UKo@Etgz69GmtRL-Tr=PS^8`Ee|qbc~2=wA!{d2DR%$Xp9uZRbn~Qd3Ue4vS{b0-%yrOqV4q}- zii$M6HNpTY_v{5E!*Y-j+ONA1NUaeh?ZJpT;-Mue=G(|J;!57@OEP@|(|Ib4xEJ|x z4O%OSdhqBuw&6?$DKsejb&P|f2WcAGy@7Ra_>FFuLm)v*Gi-?@M)V6a;lf2&2rhx$s8;L6 zDCZb6ddDEbPGW3>Lf+v0Jp4vCx~jtTh|nvx7vn~baaivdMA%7;WfX%pIxyJIXa7Fz zp9z0*$OW(vNjsCtA@0SnlH?F%^N)TuBiYp;V$h~>75fz9`+Eg|0h~tTXh#|3@DPEW zN%s=4(LN6Cja{GPwKgZ6_Gl(Pz>jThb}j|)XtY~V#Y$knjfLV>tVLB}^pMgb%u^R= zac)jdI61z3nBiUqS%qmD$w9Qp=93p5>gfC@^BH2s!rb69d(@!^yc`i#jbbZ`M%rk{ zI9Q57>vWuQhH3N=0lOYVzYu z)|wZ`iZ%ImBKw)lOUKJ3jvMq|SSjs=ZOJKH%Hwi0y(AZZeA3H`Ur1%Kvhop|M2|1)id`r06FOUnyz7qo1GJF(^WB(3GQaGP5m z^>yt;{+i>N7y8zfX2zbb*zXZTNLSiOjHX-AMblux8;J&OIdQ)n&5Ro8RVtEdYO&xR z*@BS;W1>Z6%!KyeaLdf`hIsF7J<>oQ8ROYcG>wxZN}?#tM=~{7_}%Uc5A&u-v6u4Z zgkILPIisYU}D26=h$IeG_Rvo zS|fB;dqQ^MsgZ*WVT~=0#f63}9>%o|7lv~|yW2&$I%wpeQ==+Ox;pMA@Qy6*VVQ zw-RNT>R}FLm@@*(F1gNdU=c6CkrvC)5^~8ZS*B*>X>lJ0z21wcllH8e_R&nS)wAzH z{W{&Np>DwSjXj`^y}Q8J&ECrB?&5n{zv-Dj&F7(b(o=K?p-rp}HBi+m#+-~kcP9;_ zFdtpIDeLDIhKdXB^V*3z|3Eh!OV?SOqahp^m43sj~7)KFC1TLI?`+EKto`u9;NZ**yiN0_E&jedCc$M z{J|O16q@TEGsNrpyfZlqEq567!m%FBV2V2Khccnj*T9WOtuD&M-G%kh43ER3pg86#G4sMjiCNJ=QKC2CJwutB zkxsRH13+{CQ0AT-DhXvC^%3S7&ImNjqOC`4H5<1IiyzWa@tQEhtE0}&DiCHB2($8q zAp!|YDINJN-ANFE%2&<9YsKu7gc$-fQC^23zx1b`4bsWRbo4!-yHda?P{1fq!04p_ zs(`lfI9b$5K%5Er%_vj#U{X^iS>hk8CQJBawb6(#j;r%xy`QtEDnnOb5_BW{R20|; zu~MpBnbusRidBJPRjNLBn^GfAx6CUjZ*S@%mWzy7Ar^?~m=Mko6U9O?S1iG)^8zjj zAts4E#S}3OA$ZOaWwcV$Sv7uaicdIuFb)NHw}f|lvNu7^o@t=fuo*OL`V4;OW};5d zqyEFE&Va90^M3AA56z=~;ZsphfmEI0tcAGLQAXyFMrs}g4TtMMa@G@l-VXGDvq1-3 zMG@2zEicAGG>2XRI?5nC@x?+L4O5dA8=bSEMssu%dS%18l_VVYi=oI8m&k7#$1?-<`VpL}-{ z4Q8Z$3*mFlfdM+_k`>ZC;8)PN1#O|5QZ?Lr5TQw?%EdSR!YI>nEbZ?F$$<>=?2kuSufiGN10ZDj4@JLx8hp(yA@>)!(=$>YD7W zVQh?`6zo^LbHkfN$=$+4QA$JHBq|xx7{X$gA zW~gf>)WV(1q3du0!hyA5G@;^*xW9z!KTV3q`Nq*y$Z#J8xgs3LGrjxKV2 zD4rQsQiF-EStO7iB1U!F`Qkw$`8b#61aOv2j|0b0S8aE8leIQf*sAck+${Ik;PwjN z)`hRmY&&GhB&o~3LsslBVL)oGxe51HDtoeB!~G3Jz{awV;f@Iu*-u32nrsKI;HY`pD20Ev$^|3#gm@R z1qE7;z~~q2rVgN?NXbLhqYR#axaP8M2HA}O?vs>2D6EQ91-MUvX1c$F+f-ga`aMWE zcbgBROR+>KY(tl9HiseH!6g`!(($E4sA^jVYiK$C!rpr-l{Xosv#4i~ zc5^IqDs)z3M0O7B`xK9WD%l#AX zc&dPjsc!1zEEhJ1(?|_A0~ju*Qg&0afb<+lQ5}=cx~x<;^_G5g1q!0)lPG#oSZl-4 z4SG$2&fgW$`EQ^U9*;N+vWp{4{Ueo$3((|c1s;gUQ(Tmd8)K#J3&fUr0Y#%|*p506 zBwa!k0hRlj@mr92gAQ~o-CzG1T>Rh}x_hg+22Y?N`xc6Mlv7yD2w|2g!+{WcIYw%U z$JBxj#tsXeS}8q9kNt7O#r7{wm}4Q6PN*!rKcK3!r3eiy>?RP}n0`%*YuXb}uApbd zbB<_f5$9#{;(Z2snmw?5Fw#II+bsbZw^#Uvrp8aRx4qg?kEk&`g5QyVN2QY(ABEp= zRv~TOSHDU^qe^coiaaB$9*aP24*ZfyMNxT_`%OFwzZLODuS9r`^cNC^r{O!PLu?uZ z5B0mtQ3iND1&BIcm2Y<&Sksqy97j`eVJF*t4dkZ&v65cwmF`~=&~Y?6O%G+*p9m2kTHO?I^8+?ANxSd!WXK z7KYYlxEOFPO)8EgW=*t_`-^ZrrY~s0e)LLWZ(Oywg18RD)qxQJ$+JyzS-KU#9qV({ zwXiMemJ)S!9+gINw+z&Dw~oH{SR$1Z>3ENXyh$HQ6-QPC`P?8z8vHpk$bYtV-uiA}t`& zQQ&FbMCv9dF9Ow(Dy1KL z5pMP)5UHCSj*yyUtR>5L-bbaJPZj7>J|GH-@+lt@g$l^0d_)u~0iW_QQ7DT(BDM1fJ{D1Rr)LQSE&^BGZ6nnDfH`3F(79B$dp=R_eJN*!)6MKy&lh}=YEUMJJD zTq9}za*9_NYpF0$D^?GYm~QiknVZh%Y}ukQ%&!J4B|s;HuY=yS>P__>qa!P0kLHeaqC5(GROu4CB*k z6RDe=9U@cB(%aNK&#S!1clwcu)J=|#yoZYtp#4&G6Q(|l%64?DO@v1&2QkbWm}y};oU==N=4PF zlEd8j6``ae zv@1&Ro@0qRglhmx5uGf2g#a~uIUd{~d<{Zgnk6btde5;$rHQFH(k%7TT*O)7S}pFL zkBW}C-#|oDLW6H9Wo%HuL|m#h9*}*WV>kly;AvBj$5L$M}wDbq^ z+e1qUklzcoQ?(P)69+ZqsOpZ;_MgRT>WC{zEEY0ULU zzo?s9*L@b`@OD9a9Ki1Wi6`S8Uj~tw zjyLvu%UIWawin@EKLU}MZa7!?5f0xp5T(JrnZc{IwS@USpaF$C)&pROJ?Vt13xZzAWdh8HQ^N2TkffWFiAfvEx7p5>x5IFMWSV-yfzs$_^cn z<%V?$F^CWtrHaLLZ9-&+!%$wkAs;4>xj0gtJq#x@cw5^(#RxdCT|8=S@;G8S&yjHO zlil~nefM1cRSBE!04fG-*;0mC{uJ3pcHH~Q(A7VSM*sYA3usI*KMPZrU1hT~#dC&uM; zEEhOfQK^z%c*z>PO?$ETL`5NETf9A{|=G1c2Vr8>-F9n~lWyhoT_o$d% z=cqLv6;rDmwbr9vKvbObsb>L^CG3V#pK7Y{np~;)#FkOb%y$k z3hrA}6ICDT0Dej1SLnV}Rq_BlnD+sR9EzGa#pvWx)M5R5g>j~I7(D>ES1K2eGo{07 zdxdePbXYaQF3*d{nHr-ycQZhnS=30VePJBO=_}f?*C}xSYFe~8g?IkFE+W@hL(0mv zVdHs4?x)Mats8}dEP8hD_e&L&Vx9VO4v*inknRM(ZSn%aj@#*WuPIT76V-i%QbIMy z5|3dR7}Di98NpXA)G)xU@mF5b-ate1^ZaUfkBTMLcQx#u&V}`^h70n-dRN1Xd11Y) zp`j@!ldIuy-@w_nJ$(=NZJW(HNA}E`EjmZ`ESiluM=mf^kBrvLUmK!14u4pPJeZ(Z zn8&Cg1>J0ZrKxVXnu-ops89_dv<5~2w>B>ZI$_0w(Zd(x6EXeriSzvK+8?>I7{2NG zB9qQ(>HTHw7}Gk@HiA4(MGY&&LsU6=a)xMz-88CE+cBouh2s`=@yalAeJM{1nh*(n zuj*yVic&9lJuy0R>Pgl7KoJw|Ad)Oa%&hRMlb%&D_NT69nHT+7 zMnd&A*=D5N#Y$#d$V>X@lsGPAlKe>|9Dlu4#QZ5we!AH=vMMc~CN5o+8=WVPu+*fF z3Yja=0T?(@Qd4^~`!aP^m?|PYj6t+>j%P%zFK0si%56W3!RY~qFW@dspt4!*&_R&BED4yR_IrxDx)JPP$#W+%BW9smK)snqwGo#Z+r6oq;` zvy)t>O;M=tG&{+4@SYLHI+rQrIwOe^$6&yjpfaTVVU@`FQ&h8Erc9lm*$9Ez(VKMi z#4@k2unOWY9ZbhPJ-wT zQ0xKWYLCDk5UwEt?lqf$ft{YS+iAVC+(=Cf7sMU2Xc{|zd!rlg*cN*eIL@%K-#K*bzoHY^s7Qc$!i2E>H zRF}hXwc)bpsa9g3$`0b93XbAJeC~A8Ceo=0r-QsJXsXp8xxKG=$VOEk>tKmFWLVBm;iDa$C)1n7b`mv z&W%ZRb3QHsMknXvQebp(J}v`B^YbyCeWD5axEvVG(8m?P zXo^0r1V(G}aX(-fy^pC}VTL}Yg550-Q_1e0hpA}sDJq|z%642HrotVc!#zKP#iA0? z)5?ZTUjnEnEUzR(=DIe-BHTS&KB9Gih1XJxtmL4U@$j{bO&@3_hqsKhl1H=*PfxJ$ zoHhdIwY0<6(wZJ&;o0mui=NHKG=jI?61W%PO83J%&(yrhx+7%Tb!_6}ymSL-5R`7m z2QW6HliF72b);_n*q3`zB5mdQ48?mq)Qe$6+b;PGqgydWWP#kebF#gc;;OqaVg+az z^^-+Q9@Dxf<-Q+sKlV&y0bne~0nxD^94pzR9zb7$kW+ENN<{@OB!R#&Eys3XM*_Zu zt%I!OY*ip=LxLpG9U)`Uy@-zO43>^X-GI1!EIKCKJ5`K0zzewO-mw{uk*r{4(MMgT zbWZfb-RK0lylWc7p zkq<|=4$`o1$sK>C+RPao-t53Q=G$K~(w5AJ#jRz!%5m$+1&Qy3Yk=k|tlU3xDlP}ej=(b{ZDQ5_FnP-$CZN7 zqNycLHrbS(>f2;J+2o%8pKY>lYYX5YFQL|3)TMrxt^KFvU02u$sLs%~(yGfgkeEZ| zhAZt=>rUEMhA75Uu%!%AzSe&fiNAk|Ur zchpf~Ti-*KzOqM}1b;{QLw=^+Hj;Lp8FL@;@8hkYc+uYRXtMp?=`CpAp*z)e@bA-{ zOKBGOPV?W#TSDc{UA; z8PpP@S!f+Tsi0;E`D0nKQma7IrJwSAq@PDo&8qK)qeW4N+L_*a`$|b$|emu1f`)7GIXtziFB=X9x`Q=3F)^v3~XNo#0Zyu7* z`Vz)q+WVe>JknpE#q;jkwmDAA>lI4JPloab68)0_>x~=5>eF zuZ6yeo9M#QD&WuAhag>5F0|d#RAzM2-PYSb*tYJx9+=;wMmYws>x=J4qYbEyo;a_x zx@qlfblw0rG3zQir=m?DcM^3KI8`9^vqxdNjRQeSyNOps#L`LYw5CO9ZDglv3z4>| z6pm{$R`s@vr94hEx@kG?rF2;rZEdLyu6o+9!4ZZ^O$8`5I%!hQn^wqtZ&Jseu=G)0 zEXsNQ9@{SnpM=l{I30qs&BMDGnOz);X8T{nMLTiq0pVdH;Qo*oz@8QdyAO8H-9%ic zcii|D@2&?yLLzj_Vn@R6A_4d=FN%+TH-l*oZMvq;)hEb!%;8l!2|;I!Q&uxS0@Xiu zgXuXE)Db32fzCVOG*>9l(202~-puQwn^Liv&R6aO#QDv8By|o|741p~QP&W~&r0l# z`yyNy;sQSl{y8Fzfpn4Czr~BEgYF=CFeYDt(LW)+)B5B?XXo=Z&&%B3Clj6?@R^!+ z&%D~3iIiz>$WJ~$21+b8+|!ZPtJLle!=3(M?38~)yiZG>PrO%T&*o&BkAyau|4)ZBTYVDKtZAs7D-CDV$z;wF~Haf}voWuM=$sFlP zQ?V2S?N8Y1lQ-jD!sdYr^S+|ex8clEhO=1pHO&?mKN>UjJly%B^66aQAmokyymrBs z?P5RMHnKancO|C@gCxmA=gnesop&yWy^s9;H{zNQ05q9Ege)Jqg7@=))ntU zrxHlr(Tl&E`c4OQNnvMfJTX%pt zMGWUiQY~|uSJWx$Q}$6w38O0C4l-wWOa<0O!V+E7tMAaW8qQ2eS97O1p3KDm3H^WK zsrFs^pXV|4p+Aj-JJp}&rPPCQ|6QG5CSKKYpFT(Rhq_z63lc}@p@*1L`5i*)iy+H61wz=DoL$8SM=0Oq>@`-Rz8Jx4Ea%6>Kz_wazT}{4 zX2k(|eF<@e67{8guSy=dCX|bkoUIt~(+!F-tQo_^i0@Q-vXe(9SR!5>M?fSmpi@bp zmmIVVe3U_@77LIRyeaOBsi#v@9U+LH|51tJcgu8yAV&!1MWAC;9f3Z_sUslwoS&G* z5%LP5p3Yfy1iY8*MeqtB7UBqbMNm(Nu{r|%5{pj3D+v7f7Ue+~MHsxQn8}yyR5e1c zI>eKmYhsZ^eFSuPR1OFzcJg_(LT@z3>uqMV6ZKK$sY-UO!4J7`Q89OyD)9=uJQJs| zs0yQaN+$VynfUZ(yuOS@6(y2m*2IdcbWVy?JW58zBVV#fXBqF%#FI^HV#NuqQE`>l zs5lod>FGkB=d3U1R7zAZC8@-c&sT@uSWgaG6Dv*B)4?`8RSZ=mY9uNW`I57BPVw>1 zIGg&KSXquS*{Or^6JzmuD)%+`oF|tP*|w5HzT_ayh)?=@Wl^4E^pmNGRd~r%qFbcG?AV^G5GE91JFmA{`4hoCKu@GOVspcGA(r`9$mrk zY2$(5x-ROL4U6A9?c%PP9vb^G`ecOmSD_*PlC2kN(2Ryc2dL2S`Nv|7s6xFM@w^zk zmRLxONcb?R7wGTHsX^_Cr z^ytyTPm5A+#%CiVUPR*4I&hP~C*Jh9hxLc0Gsh~jS+w`3{dm?te*SS@_Msq+MxGq9 z7HocE1AfPh)|0`uSLY|&b? z5RLr<;BUe&MRntjV+l>I1M0%o4i5T%ucKpEAfblFgc=$_FO@}TTu>Tmzs@wxZ-&P7Kzx!k~rY!{6;lg9XM_MlI)4QCB8QvVinN^HC6;!jDS%|4ZVFQ*@;U6Epp# zYSiMcrh5cEMOMQKLmgpAhEylgTkwpA)R z7eHg@dc@~%7ZU}2Pd|g?Pv9Kv`5s!Q_y1*iqJE;=3+ihvRpkEGeXD zSyOk=>x9BIq1VzKDDDoFWrY;Z^NzAlEaZah%np?74wU7El%2?4QOE_^C+$GNq`z00 zV^xq(;WgJ&-q_*)rm}i{rpVyeW|TGR*Qi08jwYfk(^#8n!w)F5NxaBu%5cM_Z_AbXNv!tXN94Vq-1cwN>jk!i&@k;mX2|6=@xr?pd~W z1CQOSgz27T%QsduE823pXSo#^E5_q7c4Tfj-Lu>x4D}8WGE76VYG%fY6I5J&`8dl> z&REf+X>@niQEM|+4A(TeJL?s#RnzG1Y)~|GCtNUecWzO%Hcg|ubE~4YYZ~31+lZ$6 z5qkFi0)wB_jv09`NaLeXE5TLQUSaZYtK!8u%p>*ZH%$H!=f&z<97gUX>vpGCEc}2s z7G?S)87h|gV1}`YYM0-z#k<%nZnOGGhmrfxg%|Ry`V5G%iL9g`&T;BfAI2s$dmVz8 zwa?}(Z=$Jy;x1C3`sT4YWo#lt@WuQD%*U&5e;Av{Z2Tw`qCNp)0GR`l)djjB+Rc6&^HbKAX;_=q9J{k`%Uo45{l66IowLJX;H8Wfb* z*rcks?^IS(6k@=u^c01?#-^dPi04#x=Z?BaD>VpG@Ugg3e0d6oe0DK@3vDj?aX{F) z-TXG*G|&4*wJ@^S=u4W)pOME$r1%$T)sH2I(h0mV51ZCMn2pcm;d6N7NMuNf+=jOt zLh4%qSWeL@cr)@@bK(6H&xuZ zdE(AZ5_fKfxO3CPotqn8LOUH5f)SVPhwiI1K2zV%(swdEjKD6NCNZ)><4*QP_*{KI zPv6hi_Y3r$?2Gs=(swc*!ekM2zl84UZ1Q}RE5;(cck@To6n;16QQV^VUSF1ebG``Q z^Ia68&mYDDo0h|r*l=iaY&Rc(Pc`so4V>E{j(!7-dyHoM&KG|UG1n$rDm)VPj>`5* z@mW0Y6N&VD_55pl^qIibVT@q`{8F8ucbsCz)B?ruGw|a=`0`++w>AxCgvFHy+&v+# zsb9pH8eu)Ksq%9u=x#&C_$T8jm4{Ib>Wz9kfsHR`3plXZ^fycm5z@(b?5NS5CbJ1T z`e9(_rgYl(@i@E;tOBjfKQSdu@$a|gh~4jy)b6**)iS+Fo2pqlgK0p14?%tt7feDi z)5g_^YpfoMqbS&)O154T>S0-SRi4i8l3eTs(mno-#DB^GQ@#5jg%`u9IKcNTfkLMe ztFtSrl(b`jS-20>$O@xjBebjYQhtw8zQpLHyV}+7r+{BZN}V_fCMGo^^BQzA@=Jet zvDG4l_z?fsm~H=M&rw!A?x$g~rO6a!+iyl%^|<$FGA$77MJcs^K7ly!w==ohAn&6+ zN70YC=F7wfnfMf(vqJJt(DJ4!aRu^BOzjI|Z`*5>JrIKFueY*~kF*DB83hV2R{Q1q zeINNB?=>pK1<@;AXr0rAi(x6%J!JwPpgNWAnXh4y-B?}P&S|<Wo;}^!Z)c=7eJ4-v;C(CG`p|wj-AU}oI-7>wZV7tEzR-O_9@S>@|JTbWiA)} zbGQt=pTp&KNCGl2MabpxR4y%i)&_&Pez%TzX5{l=lN}`r9-QtokIC;b9qRMMQCJv7 zn5i;XeYJUw@&l?a)F$24B=&FxIAI5q0K1vj$&-y!iRYVm8Xb;0ZbYthbPjSb(aAHC z{&}f0aqzaK(pt6ml`b+L-2Z5KZIoj-m2nUTv#iJEVjtrdk;wAr_|% zg?mwDD1PIs!!s>B0IBx&F{N(swm=vA`OJg*i89Kw8mel%VZuyS&9BEElsM|yYpjHs zEX$!Pvn~g!O`l6kRc9&Z6w0m3$?Z6XV=O*W32x1URc6x3gVkoTJ`dJFr#x5-rSf2Z zvn~$}Fms7~U%gbO7V8YR=0Vac50YMako3xfq*oqOD{cQ00MI06(?0O0Equw51G1MPAlr@^AT>jumA2+Q zd^tFLa0LOHe^sF#>bRe!NZ6Eje~KXLjMX}MjFN^;|0^j9vd4Vx&j{rLuOhfu1(vGc ztj29PItQ17{CHOv#-qf1rLG}xV1W>oPEGb&1f9|=h(+oAyKBI3{sc_3X>)N$VhP@9 z^D6?IVs_W3g%yF#I!!C62<9@fxfnD@r@c1J(=o-fiGkhQ$c4jCeflJDgWc-x1C$EQFi-vZ z*m&dxCQ{Yz;6wazhkm|FEw;KAAQZGjK5Zdr{2Ug^IRJVdL2~Bg%gFUpra8M3i09qXpuU#(+x`{+X1U5j@R-F5s9lDlX}(_7=sh1{b^F6|s>xi#%m z3*{c)MVp(w^G@5FpcUv$8=Rn3=jVgAIQ=rB^p2+VXxm}u>CuK~@APQPvv+#5>DfCy z+V(6+Zw{q5AJm-jk%ydLT}>- zQ163=PuS$vKph67fO|7U&0(`&AsDN5WmYJ#2W|VW%O?BM;s)?`(xpswmh?F>9JYj z*zG*DyH?O@PQ_BNo8F8rtba zLrR^VV`(B1t|egF1R{b2wg|-WxR1d_d&-?Wg>phu68Y z(23#UH8BjoDrAcTjp6Xmh2IhpzOT>D+2X4P8x$C3n*_Jq>h zr&gyd@jG_EOl^U`DoyUFG^My#ns}athUMa9+Xw4d2Vxw=z+gPT*B^s%~Yz-up4b5dKFwttZE^B zUT7i7b;HTsi`{ALUc;{0N<8JQ6nbGR+B1L~sO^`7m}*7(tw;vHxXu z-(t$QBdGj8?ll%)ulm8}mKVmmIhRXbe zF+^X*?mBkw9z$9U7;78Pi7U_+pA$E;dmr3C3vy9YV}FIaY769|P2hhT?Svj=!9SpJ zjQRoH0M3264b=gy#6ju|j1mJd>xu)H;m!12#Xx)mV>aG9FB9hiH2}?HbTy;d8r{O^ zC_x+iLOcjGOw1KaIlU(|%5d288lA*puW57&qmMP}CL!WmpaGC_I_qLfLg$G45K@MB z-KFgIuzM-Hx3l{=yDzc(5xZ8H|V$2U)gOKN%TeRZW*}@{sFs?JCEJVlb*|n30gAz*;Wkm95_{SwF-6>2t1g_W0_8)k;b!g8tc8_3p5xb9>mm~EFwWP`Z z14*lC>}J?qIgqrvbKuV)`IiINzpFd7S-EvHJ|Wo7vsM?%m+=a{9`U5s;Y)el)y2SRr?5C3j)#QNThFlB#@611!zbCYAHaY3(%x|6r5Iojtabz zOD}j_U|Sw?18?M^&cHi)=#0PzdFX<`Cwb_~z~{Vn;2Z^S3~U#sm!se<0U>G4Kz|#9 z_XjLVD+&7B82n`*Dru=ge;b2OA_Z({^B1O2iu)iO3k#_>XYzCh!Z(C6Nh61!nI`%9zLjMx{8* zN2NwTu~DO`k?BTUZ1T};BO(5-(TR~`jB4?fj}{v>Vz)+>!g-O5(O=v(RH1c|Q;a%M z?#&(={^eQe%jCh0ztFpMAd3AgX9_hf*41Ut%_GS>;-bHa^oape8G{=jn8Z9asZ0sqPYji$-fo+1gSfdRH+e_T1(US<Q^k*HDUS61QQT%u6IBxxsxH~hJXBOpB6NiqTQbR< zC8lb0Fwo&*iAKi)%@%KK)LAmcJVJa$+a-v1amh6EC^3Fth1QiEVa^pj8a)VfjQF)i zPn8^CED(3`G42)Osgk&{P*l=J9;7@~QfeG4o@cbW>gd>~#&Kfq{uFjr)$=9u%;Ur& zMrQym1X}5%CFUY=m5;V#XX0KTEjO2lXBd%`s9Y*u@KLAfifsyohn8Moo+!3!v}@@l zK!GWodYF3Jj40A*pVCi&`e`(+bPK-MIY6VM5SA5<8j;N9Vo!}o=5jGvqstL*g*Zf` zb%?h@%+}}^rR&U-#4#FeEWHbe{!A{3C(M&I+9*FL{e$^qAC;CpYj*mmw(M2&G>s_l zPnbP^*axMro2UDzwCp`|m5(Ui*&3;Mbm~Q^Q+i*R=lQ6#>?`wpAJvux0~cwe;$7^A zeNY+=T;ikBvhu*CKB_J2AGo3*-cS9o4@w6Ie&(anGA9q!mbC`17E8F4l)YRd>JK31 z)nZ}ng1|K*j2$vUCj(t8R$-rv&^bVB#HqAR1$1@n(!h0M{=o{Zja?hKK|F<{XbM{! zTN}7ZTzRNMcfumqirr=@^aP^@Y;F_h%dtBGYsD0e-j8hz+#~ehRpTy}JO$6E`F4O2-pv_{P zMt=f&Ry?Rt<*4IJpA)~=Xco}(;uVe70R6Z4P@~s@Uf`n}%Dc1c@uhzj<=P5P0NNsk zXmk(Ii(>2?rDwLIyzC{hM5Egn-KEj%j1Ezy8@{)En|Mhatr7J$FNwt((Y)>@u|gx7 z*S#cqG@^OkOX56@XkPb{xI!bE*S#ce(1_-BFNxb3y%zZ;r+1%5Z=~5O&Zn-P3jOx5VG{bmPW6+hBw zKzvSctJtK`%=ql!HnB~kQxNu=2rM9(XN5QPTNr#@^w;RceoKOHh}-?JZ164dz907E z;NQgTg&dDt&O725AAKU;5kL0P=i*&)k&m{E_rzKsS@M1Hh>v=LABY9VdNQN(L($3T zitsh@GlL(AGkkPj@MCeFk5&gi5tsVtr@>Ff)joPR@ON>OMjPVS20s(O^3hGfe~6cT zbW8Aa@r94>41OUhjw4;J2yckrAN*1bXY`u9FaB`wpJKd5uf=Bsw~I403Mb~7UyBhrtw?F~&%_q&K2Fl8y6P36c^Y+8 zZ3Cj86{dL8tKI>+N~062J^*?^ql>FP0eVKGyQ)6N{^uJS{i$j@c09Lh^j?)E4OzZe z$qZLVv2!_0qoLIwh=3g7qcRzgV>H^U`q^Mm?xoS3>UpLm57X$h>c@kYT%gen;0(#E zM!&C~6Aa69H2S2vCuqwx8pUe1i>SO;qupwr3Kq$yH9EEC&p_ehm7e#5vsCWOXr=hL zW@@lZ_Glz)w*qa`sJ!-dptdCxZ>1Pe`!>*2M(FEmKMcm?^(Ro+S$MSaS*%Q-(x@4= zSt;LU^p?fbnh}Loas;B8ckrdjS-Di?cn@Kg~=&(Td?>1l}0n_=9yJ8 zaw6-(ZL>?(dOg_ zK>IUNbCeo6U48R~T(w-Guae8G{_-o0qV+4R z0kViEfvZJ1P@TM4qiUd}eE&x(UOiB~eEY`=4Fwt~_dP|S7N9|LCQlbvi(P;QOa9y~ zQr`_|h}?o_@JN@vfEr{O9R&hS25OZ1YIF$DP`OH@!+{+6h(_~(hRM$~S`3tuO*pS4 zDH))&JWiuifSTm>8l4W*EVpQME>MfCg1T<2PKV5}A2DFPjOQYWdjgoh1^eoV>@)eC<0_u=WXHdMA;;;2v z#ArEFqj&4K0iDh0Eb(^^J9?Gk{JMUgIa-q6o56dCX4I$AhoL!aqbw~ulRgWrQEk~p z_~`QqEJe-1#>*87h4&t`4d*9a8ciRx9q4L}<`3E;_LMhiw0zJfK(}kOYS3NQ1bLrE zmx6PGd_<$`!8t)b!AM!_UUIVvMw-0q_Xti5F9OwyDz`=zzFY+|%h{Cv=Ft%-8_ zSroQXJTz#YIY~aqXtns&px;}QCRD{sq_e~TMyoVx zVzfo0-3LeIA@Y<9SSI&G)8tPyqMm4)yj&ydiKfdNHKLwqy1Yvx>WOB^2Q?ZqgwU@w zdNNrQnjxRkh<%e#LqbFdX28*up(X%lAT56QL-PSjgdEp>=HU!Rw*Pu1n1GRR--S6Yy+y($Y>Y? z&Vd>gH@t(e28}8k_CVM$jrupdg0PVq4Q}`VXskvDG)w^J1dWbt*cWI&jgD(L5NL`< zOB<#GP1ESKhFL&|YqYxIXrQ?o-Q2JM=s1mj(QrHvec%wgn)2y}6M;_BXj{X{K=e66 z3VWxa3uu)>JZ>H>&tr6j_^{!0gk7r9zZ%XC&5>98=)%xkd6SPW3(b?a`RJ<9G4fs? zT_2h+ANJ9@&;t3mMpom6p@s4f8dWsj9y(S&r&0gLdqT&_mo;i^d@!^~zV4$(LyP76 z8VzrZ8^_DfG#bwi2Ck&sULmG5J|9{ti!_?vcmRHlrc$G$8(#@6 zlT$Q0zVVIFiSkN~PHucZl#y>}w5sv5P*#rrnUZ;N<5!{O@*0h=krkM0Srlu!HU!O-dQc^^F*Izztdqqwn3zUiaihR&29_~_}- zS@It~dOq|M`L&M@FwU02>%9EE5;{i~`{<3(xw4;+-VdE82l(i-(D|~#M_+|5kj*{{ zgfEo4_^1Zwn!Ed`K76s9=%dE)YI%TsFP~CK+~0V9_y#%WdSy!+8!rvtD4$@YM)aHIGmJKdsXx0}Zt}xE z5jV@fs4zjj+gkZIji`59D?ihS`mD7wc7wp*MnQenTG^-(^+apsSdFOHSS$C{h-TYs zS@=> z$2B6Y*U6_fBCXfS7d0ZS*U7guBCXfSziUKVuanyqVm;T%Zy1rDpChdJMpY7|=X%+u z5lLAu$7@7dua{S9L|U(xZ)-$aub2DYq@*ci?k=E*Z#JSkLwHc^#&7d5w`8)z-^zbr@;ALGE_5N}crFAm?jDdTx;CYeaf(koRdsdTx-f zXheE$kmgz?h4kDYqZ*N(8)UskG^%Zoduv3a+6H-?Ml`BzkY{T|IocpER)}-7L0-y; z@~|$vLEfl2DSx-fJ2j#l-6A(?M7rD}U(|?FzeT>L5ovad{7@rG?-u#FLY&?$@}G<- zy?es9$nd&c{%(~MHKH=RRUV=dmD#QGXpN}MZj~o!L}hlXJXIq~{Z{#aMwEwJ<>MMr zx!fxMpb=?yt9(u&*6ddK0wdDw(eSPEP0dNUy-g<9D?Lf(ZL&!tD&5=UNR24<+vFsT zD23bPfeLX7x5^oQ{6@+lu#^5=5S21<`Ow^(<`e=yo8DD^v~aZ9eu z?v$k(QR;Wfgho_mcgnprqB6Tv-lq|j*`0F8tx5{%d8cesi1oZvj$%Zq&ol3o`}t@) zIFIzvOX0g@r;5kD+uia!jY#I*@-mG`>$~MTMsG!Er}S=luST1(A9=TYK%;QwTj9Iq z;~I^v{19l9MjQHl0rZ(hFZTQTf3^2D@NrgE-uFI}WM(oS%}i2CX#yz}+S)W%#(EJWG0=Dwvi7L1=lLLBB-#U(v^J|R#@pSh+RPl(p5xw!L7T> zTlWQJMf~AMd0iDjegEg&`^@vqY1UzCdmG zk#x;1@jfU+I#x2{cbW7L}?azMwZH%H{hbd36aL_VNn z@sb8#+e4IU;>uRFq^H zM&v9VqkbQeb2z4YdPFwq81?jsT&!dFOyBPvk!y79d(*G?J|QnvG5N&I8@*4;E*<;H z%(4$neh?tH{^$PjQZ~>`6(USG2<5RQ}P~;eNgN`zkgG{sncFK z?Ni>TrSSl@;YacaD4&rP98-Ih&&soP?CWzs=Y3XYqC~02!?W@l6%$P@PrII#-*Tiq zCy(m1u9jcB=%%$4XU;2ze;qEytU8-8pJBWcp3Qj)8sfa7uuG_1#i>#(Wy&>qdMOl5 zgfW-rp&=B8C=I5OLWOrSjS8Fjuu2^b4Ux#x6oxa5A9BE(Iea_AyBuMKvFj$eb$COv zrZG^%zvFQEStP5`@EB4J@k6Hhv4fJ@t|U+hM{{suNVb+tR9MMGg_TTH_&>qlrKP7Z zZ!yM6uP`c?vlKgQ2-ke8U4{rCjBmm+W)`3!YDR^fvZ9`%8&eiE#92(QauKvJ4U8vf zVZL`B<(e2SW%>&^Z###nrBc{omxusgB8XCotqe~+*LLPZ5V{J8Ur}bvX#SI@BtAv~ zA2lAGu#0KBxh#{zs;B5TPz|kn`#5|ZpiBG(Uu~#29--8)6k>+5qt;YCxB`gfV>#6`zJtJ>}&2-xVfZ zvPRs0R~`Pl%5{#i1ozab*JPiA4~=Un2wD<$VuqOVMurxid?6>^X^|AAlmBQ7sq!jo zV~3^YsW1n)L?>s3cUqh6^Gk#m^Iia-5I)oKnThY{(4QBd06rmnrsG3+d`}Q>&j{fc zDbB-p2hYQ|G|v-Zd}iX;rccA?41CVSXQr4hXq7l$oQ^fad~rGMv&ug^KL94A@mM3eW{dCPw#ZCz4{nLfMEEMuP&mZl`QioKZMQIEWLnOUn<6PcPVBz5zU6@k-lO}W-n;2&NP0sLa!^F<6gQTiS*-L4V9N6SXU&+7J|4!^6LBexrYh5LQm zjk6YZyS5v261ClESm*-jZA2r^)@UyZKNWW{hfbDlC$!~tU#FNh_qRy>$NKN$ zdtmO=l0;2Hji@mBpgNcA>+6J^b4nCHLO zIIkh*+as1X5QiD~O{l{t%O|C=yWzv-hq&#BAkWMFhefX8MR8c%0Qi)q|3pKdf5f<_ zA?1G_ls*}fB!>vYko?@7kD{!j!B6@_@x zNSwGb^vQ_)Mg#HrM#FJ%n9(phKz!x`e!F2|fOMt>;TIZO0bgziqb)Btlz3aXwoe)7 zHg*PDIec7xqM?VwK1rBsT;D_M;sNYxG!6uIGEIzOf?<~7apOmgUkF^w;TsskHXIQ@V$wHO?L;6a_Xz% z3r)CTARY$iSH)vZj|7h~C3bc}`7(!J*14Vor5E==UkJ{0{dC$(!J8OA+x3g49|z~V zs7GEE-sYQKGvzOueioc5PjCKp@HVEooB7<$;gIX}=53{K7_*zd3kjUw{JS7YyL8&U z7hGJUpehH*vZ#@_Zq)mnq|x&;P01S4_LPB1AxJ09|D}Q z>}J5)WgiFpV%?_z8<*Y5_|F3_Uv>{*>$3Z&{gP#MjHU51bDk;5y3Utm<>pJWa<6gy zU*r0F#fD}7JncRXzs2^mM3SWnx!$wv*XYN-Wz??sEPE+fCF%P#b8!3Ohpsx-*gD44 zN!piLEa`hTE0O9e*}$nA7_&jr&dg3pmOsXD5VG~j1k+?uw>Iy!T;dI=;Va&oB=!Dn zoO%Ol`vdQtjPY`=yX8I8SA_19B(WPn^SbYDggbzt{=E z%p4x%I@~R3);OSf{$wU`I5OjC;7Km`TMS!7^Q^Cxl0_}?9yFR~{VdetYM%9fLQR0b z3AFDQDP*zR2MgFMqU174TUn;wW zYjTv!Jt|9=?+B6|_@w_R*Os)XE!^ZPU%nBr0+29U!^g36_ihe%G3;ZQ3LllTmcQaX z%5pdgoAZkI7;`?xoL}bfYb>!}LQ1du-qIKfH@S|%TDAcGFno+lKc+bl&tGz`J*cx! z?!lb+MtBhL_u*kcSLFdfPvtFg@$x|B9dgz3aOED^wtNO)JK!LP2X*)&V1|KdEFA`h z;6;E3nC1Y}8~|npct!wkVf-zOzlHI)F#ZmC2~zKn8yRk9cq!l;vSWD-V08I8mG`a`mYeroy6m4{p}03VkxF8_SxcKI-7@TmOB@)t!^ z{&x9#gj;5v<9|bzuXv;~3R!&(@VphzRgSoptT=}GW!;LKk=NVs1HjG|@E>IF3Y^0j zdsn;${x`08z0%J!7r{4$-yr>@uud(p=^@NVok4X|f;lBZWyb{RWL7 znw7d;e&d!I=T%j6nBbeDnt4_mG&%^AK`M=lYU7ES*C9+AUTu)hSA*w{U^R2AHg zHS@0q&kt0+3O($0d4xx7#K$kT0^)n+fK_-WjYpg=qJY(+7qC|B2Am@X0O#SG7#>k4 z-V4|$-Uql?+yJ;t8~|L2-;nc&)%bq92XD8y9dNz)4B!U*KD-C-zW7_fE5rkUJHcYx8b|*r6@HGc&Eq$-X-<|-Yxb6-Xq=%c%Qfy@Bwi>;Dcfa@XO-;fRBh903R10 z1bk9_2>ibxJ}h10TjJw@&xua}9u>C(eph@N@R;~4AUrd`mvI*D5OPT62BA=0RBe&Bj8)&OMpTi1}u?}0D9zOfPVP|V1+yaSS7y!c)ENVuv$I~SSz0g zoFk6{&XfO!TGdHvd!u{-aIt&^aG87^^0^aR?jCWMK~lZjAgSJCkW}w8NUFc&)ZcLG zTbwFflv?7VRF8{f?st*QD_kV=D%V-ydAjSBGU$NoHNaZealorwR7%W6rR;K1DGBB? zz?J;?XMXhT?=}K32kX&9_cG;(gltns;V- zTlvN1?xl}qQFIgO@W^UW(T9ezYqGS)lGYN+OcVY zidhxy71vk1ToDYtE7Tf#cW5y5@zCc(Ukv?I==&if><$ORGs5SF8^f!@H-&!^{zZ6x zWk;o1nXSCF@>7+csr+K)LzTxW+o~c}o2#}}?Wl@Y^;Pv(;leap=7C4&gT)GBg}MN5 z)@cwkV2NhJ4%OgYVrPmA#aXaJwW1Yk+BM>A(I(D;MVcep#kpb~R>l`W^EN^r&z78q zv!s7z_#(qs8UCE%uNeM;VSL){7{H1?H;r;B%y&5agK1wu>Y7<^m0C2D;klma`)3ii zPtQVkiLY_^XADoTE&*mG!|rOLc^|{iGJJ&LzcKtj3_~?U)4;Hk;r<$WXVINCcwLM5 z7ly}cDiJ++ z`@r;ZcyzA2=MYWH?0Ie>6z7s@cY3g&|F)o#?Y(n}=Yw-MdWASVcN^gGn)d)Io=%$M zHTQZA=!y$_ItJc)f^#6@2Be)8iu(Y|u#;i{OF!(>15GmURv3aYXp|Htpn(~X-Z<08 zFb*vT;pdr4Eciu|O zwgkT;wgGdLVMtz%a9C~!tdu(dtK^lSIRkHG!Mk@E&XQ4JssVA9CVK$SlqTR=vJdcL z8As|R3^&T%z-(Z+N%kYWS*DP>1rRcndl2qtn35S_k_-oA4&gm=A7EMz0%qhjfWz`S z!0*ZT0sc@91O8lo0PszDBVf7l7l2{o0AP*r5x_ad&47)@Uji;QZUJ0o+zQxYd;)N} z@hQL+#vQ1`N{5JPOR(>`~xtL(+}#^^$hxh9p^~ z_e4KP<}tZ^GPKAwDY00Y4`FfFH*^ULkIiw5Rt;SqXT%q`ker zk~0ABl(fh9Svd>vE?EQk*YYgDXXR|b=j1tn-|P~f}d6~e&x#4GT={R;uhj8<6OkCwCneyn66M!>TS zpDSs{+=REFU}QAGa$hK3@Mg<@;@cm1f8f@@X99-;UkN-Nz$*lT;oybA4Z+Uf`+|QN z{Hx#-!RLeB(;k`j%(SD^YAY60EUGxaVpYYC3bP_vv8Upiikm9#sQ6OFqZLn8{AZX-JC_1gus8F?Jn=5rqXqcX zAx!^H6OS^VGsI&Cj30J$k8r$G<1f?r%QXI6sp#kG=Y0Ka(9b5R_+WLas=IPyDwa!_ z7l_RRW^$vMjqWwm8M7X*%**v;b7?cSHkysr#}Wy#C5nV}XKJ^Z6dU5%i!-UDAkaBD zV2TKZE>A}X2F$eB+_6>>Pso%rx9{&U2eNUn+LBHoZ+4LC5JQ=wHJy&yvCZ9An?2cl zV*CDqR61*>*X5Eu!Wp@$NksY`Y0k)1%|cgkU9=~gN)K`sHmXWf1E{THb2?^HyW>4n zuV{L(J(=q_(@|s)>oWaqsbtpNpA{R-{b*`OHkvipN0YGxB1nqGxiOcgz3%mF|yb31dqJ5kjmVh*h}d!z5u2fiXsLE5P)Y7v(K;}Yi1$RPJiGCiMH4xbrL!@Y z$RatDU27)HK5AU2=p-qMP9_4&JvnqBIFb_BQT=14?JWYvqi>Q2(7oK~m{#{*SQz~hSO}YMVbX#XSXNq;vM20XJS#7(b z=?-%bKSd`gmy*bqbiCihxQnM5Y&FpXs@E8*WYuXf}}yafxI&V8fjBNlj4KNy&Ec$#;`6x3XuKLfzgye7SruE2Mh9bM>A#wVnGM6bT*}6H8IL<`4nI_W2BJK3Xq-q zQez-@rAr%;vxU@FJhB;+GKNpTSZl&x zQBxCJhYn{17*0&>zA)^T5Iyp(({$2cQFSfihYAzr(!`>a4yi%7;2v_&%3 z;IPt^vz&$FIVN|N)g~IJo>oVVlMGd5UwfQnG%r!Ca8~_P_l}d12bxp=tXx)o#%$9V z!`{kwB8Ijg#^-zj8WdquY%$HNODa&+Oyk)QO)~();t6w zBa{P14l!0}Sc#HLpAg%UW~L`PVCM0ny(sPwvZ$xEon=n8n!S1rBVdQ&eMgeLDR{&L zGV9`IA|}`yHI=FD%F=2!p6QB`Uqpcft$X_5DeHb=>dY8%%lRZ)_?eWA$aK(|Tcf}{ zmS1Fw0k!^(V`@;;VG<3JFFUNBPzD#sCp(`)l};*)!^^c0cS%wVzyiv`SWg2Qdm zM4}trB6z-!C^F3PI@BNC--RB?Vl;Qfuw36IB1#RwdvBa9G8w@v7Asx7YW+$cUze%Z z=$S5Fl!=~PCY$OXg=X5gUb7d`7NfaWy85jxg2HH5f{Z`52zI4Vb98V|D!I2SHIT^% z6h(@cn>LrCxFRAw=o+y5q$sY4GUUhhbnWBSz9@((g8ClT#nxDi2X21*0tmGNabifb z9KCgsnZ+!-ck_UtF$DvUMdMaD>R6_y*Fe73u1BT-YwdT~SPO%_4@~KbPiIOmfE=@G zXUf{Yu}ZN@!1zn+f-O|WfwKz8V9k`tS|f*o-FnM{@ybI~G;p_7AVJGgPFB63!Wo`9 z#MQL8C&3HdMftJVmdcS^#9I~x>vqQqy`BciqzSPS#Gu%fP9=FKLk+UOc-Tl%lMqh4N*_)Ht&AqdIXcF**oO zrhg)|Eyqehfw34nl!<2?qRR)y$l%zrs~^2(r`j@3StrOkQK`HmHX(CGk>`;b=z?j% zmS8+95Qgbd;W1j|9QJLgfx*rcHe>lQ7O_KKFvNmBCm?IX&MWqJ8J>s~`@>OKG};YT zffHo7$jmx+C<|jJ$hs9P%e^!!@MA1udruNun$B{@)OCH#)pwK`5vEu>FWEhLXyEu@WKEhJ7X#1T~jy542lhn#)nH|Nr6+Ih6Kqdl3$@gb$zA*cak)S_Y| z=Aun>dWEH>nH3fbMNXt!O`Iqv1<~-iDei{y695ah-b{a2nkn>pkr2Do(W=H^nVQ)RR1Gy}-#$qr_m19g-Hy`xqNDsCf z=){Fqvb2aZEz?G;BfX8aCKperblTLi@~hIi_VVH^%jdeeWSsetq*|%IZB}(5lp;)? zri0tSTjVjNYHCr>48}@S{Se#S8{r00RGrLINO4e|vfkXU0$Wl8xdhsVBkWE(BhAo> zdykpPU@L|8Ra93rsYkPVEK-lf>aj#U&R376>ak2cTGRu-)66~Er1>;yMopSilV;VV zc{OQfO`2PiX4j84Rl$7&eW5Ax?7^L7$TO&U4)+= z#HR9lc{5v|7puJ%-qFAy#TJ&e%VMcCj~@)=p6q_;KaHhb(G12?6x--AjO>`$Wg-P9 z%-G4t$WhEySnDnv)~p^o&~2sa0~n3jL2QE1Y8@)hTiwF3Gp_eNNae^2NoG}(NY9;d zO5eh~aAFNslR|3?F9@u+V6fw}$=sKS z;|vf%)kD~=P|Z~nIW}y2;{DiIRg~?EUUB>@Us4X1Ek3KZe?Gd3S$SrAH(C{88OQ-Isa7_^d} zx}6lXT4;wCF-g9CcEVy#aI}JwbOR`;28n&zqjvNQ&SEXpUNt4>?_Q{re_buxtHHe; zYn@IW3eNN{GPM~S!~N2?g6bVteO69D296l`Ig@ViSaeEybp^UqeA^C}vo5%xXua<6 z&A~P!m@y6k;k&`|Pf!VGT~AnQQK1l`NM&L;o1mlgy=MMEyqm8)@X9Eo4%ylzW{H180wI3~T5P`D>+MO0XQGJ90QPH`Iay+w5BHN5G zCRg6a?$!4W)qx0EWrb&L)n`xoBt)p$m5eWD;Jswu)Y*%vk5$BOC~Q2oAMCLMz~@I@ zNt%SZ^{%^e7U0p64Cpj#Kc<8HRmNDn4-+WP)w+7f`-ATwGTqcUG5iE7`~?BWgk9~Z zbu=}o*sEHTXRIcLG;DegY`mIr;8x=7uAe*J?us<7n4&-Q?F#5X6i40h>>%H)5WDvd z2z~x$b#RA?i3|kwTg-HSJd=Ta%V69qq>Zynu+m!jzM{p((i8aL194o@%qxmQup_k9 zOhor{C}XqJ8Ho%@-SGtKVy7yVgheF%!cD`>Kq^B%HI_>hgddQhi+!8Z?fnC2E#j{U5xHb=_PXeK&odKPmVMpF##_jdj~m;*%@*}m(zX*u1-V~Ja17oHm9K;&{i9E;$;qZ#Iijj}K*^#` zD}RqYFMV38FtA4jaaE9m+Exr^1bQ2zTiA))5>f8MjW}WA>!)P8$VXAt?0~P0DzahM zcUjnFp(?}HJ5k7^E`1;m_l=4m~>dWSd1nlDcbxH3>`s*xFZO5!sZAsf)MN z%>@zG6!v#l!lNhCMEmr7Rf)&ZTAa^9!7sR`v9+zeeciG(3zsfh+qQ7=k~QrMTNbTr zTexIV+o6S(csAS{KdKy z63IqA7bu0YMTccyUL0o3##5fwjzFU}4s>0mr3jn#5S~ICZNzkf2*zBnY*NV3@f)j&u7$c{VTZg*>&XTW=#=Zk4WC&D$^}tHe zaqB7uYdX(rCWfp<6rou+k5$K^`6v%vD%E1m2wdC3^qb7uI>A!5IC4ZW;vnZiMR7-f zybNwcrY#YLi3FBYv5$(mu`fxJ4~f7U9GK?yMF_enAZSv=Fopl520ZrBv(Y44&b`HZ z-QcK46ElWsfyuy)11c3W6YCd^D;VLG*8PBjTL>3)cXc(2wvIU~FKFpP7TSAgO{S8A z{i$3=HNm>L-!cJUpIZsg>`llZSrRDFSkQ!pwaZ(!4R3y1V zCX>{GrXtxDGMS_nV4rh>=1fu#ut_=rlSyhqbMr(@CaDY9o}Hj3lT-%m?M}d?WpZ7N zjo}HHL?_AQ{E3)!Pm;;fiJ0_ElF71(n8YT@qy=M%hZznr^;3;BHN-IFRDcJaI(-oO z0S8=fopz>p=Nt$<-_oSCjaJ-=K{&G3ke?=2T9?mgs5Vcw3t+7a@=aD?#pRik zlo3Yt1wCC|w4h5w2YJ?A)P$Xuyf#@k;iwghFnmW*FUH9c-se;B&zQ7CK!`jZye|mIp$sQ=8A0Tn1MaxR{Y0?_j^=K>)MdMPH(npJ6<coap!dg751%a3PX1sU)^E0G>C43ZZFsX!5`XwAm8iv=4zMSKPa5w+jN&~8 zalF~b1il-gBrs_)h}Z`Fb>RIOwRjss8aewB$|0R{ns^676!bV}05$`zX@sJn$p~@I zN_?xk7HQZTLRk$(d@sbiI>cE-Gd2aM_pd3aOL1+ZC^3#YCB<@-v`M$i#70+~YeVhm zLyE~Y#2zBzs^yg41NyzdQJrIW4~@98ur#~n11t^PZ)JW|);5Hw9Bf>H5BAZ(fyznp z6W=pK%qb6W@0mRJ2>9$pnbar5cN^*$$FmnTPD8rXZqfpG}1^iCs*%{EO$#zwmhiD7ROqaVl88^F^N)9M%U!)U0ep$lk{|~G6*+t ziu|oUoshrR(qZAFu|XrNSBPodkZy`~kH(#tM*2fN*2l6HUNu@0LIjkqDE$)N97Y)R zyzs`*0?HxWIo1IY=w|t;(J4YyJJMrpo+H!;PTj~s$v;ybxEZ6B0Y!Fvs~UDgq0EM zMJ>q0QQ4|~)cMO1&M@UJ^hyT z>st%{E1BzZl-QqFEi$Gy^#<_lLCq}Xpw_Ee)pK4|Pf}De`5EpiQYWIDOifk&8cpIS?6wv5tHp&3jWw1gs_JP@KSq(AksSZE{0ww}&13)^1{ z8*X`Z);x16JnSXbpHshDn+flfjeV#5Y+K*P?h{+9Coa*ZJCTOkl!ba?>-%KJN#Xdm z^E&nLL^V+(#a^A#y4+gpv|$EQ8#@FG`4{J-l@V=~(E3@e>}kVQZP|>s8XTLWv-Y$W zR_n)Zcs9geZ4VZ%=dE&RYly~!b8T9@kwoby=kr@FRrRt~OQYL6x;1t$PgbgSjuZ8p zO?fIBrR`UY<#n)! z3-Q?kTTfQX+Iyr8?Q5`8Xr*6+ea`EIjH<&Zdymq2kY;TitKB~0& z|8`sC^ajwX%*mCy6(e9Ddd$gX^nN_et?H0<^brZljGtVY#gaTx+15Odk|HNpQakER zGnsXqWcw!KoLan?`ULIzFX}<3Jw_Y*POgo`(wy|+>VMIQv)09E*(r`Vi_^FxZu`ke zjz-*xkBn>al6P4;7ZyYIoE(33Jz*|vYvJ)4*-7$g)v>Abs10SDq>RQZ!`fqUawp3y z{|Gv5dz0h#OvlMdu2`q7gGZ8_IvU3hz@$!&=i9ZfYTXX)jh!TOf!RW@OIIVv z_K?+?3%{8BW@@z>w*&`xf5NJXl91e7%xAQePKsYs2hN_Ut#sp|9;X#_35WWJWUh8y zGQdZ03qf5J6W)lX7ON(kcP;YT{HRX{g_w~-3%kHs?F|tHSue5Osp_=bLu-gWmQxZE zq1ss&OVlMCk_@$gVzlC_MH}c+nYFs5RR>8|c8$;3xt4JD#=HV9w04=FFWt$XS2C+Q z^*O#(qB0Um^ec@XrN{KlaEyB1p5Ns5PUt(;-pN<3rtrO4q~NQ$niGu+x{gP*D$f99 zO7bMjO8J!zP<=6)hCZ?p8TNB=BtE*wrqnrwA$>K%)H!6x)jcAzbZU|(Or^G zY%$;knJgF*ZDHH?v2sz%E=Fmz3Aq+|NonvU3B<-ypkhjrP;p1laG{${WD+Pf2Z_?~ zk(a(RT&X1_>8z0NSUsJRm6wigC6!kwkBQq|co--*pE}0^NnUcQ{2VeoWnOekm$au( zyc6v#=!qU{WK5>LV~rZ>H?`ejxmIfI(v>ti@P~0d39Te^Z!cn%eve_s+b6H*qdAh( z%Jr%l-DcY~inB(iI!CuyNY-Jz))(g$0kRvGqb#~w(Mso*G);wMB|5Naya}NUY+XM_ zHI4LIc1e`^PJj#D;Eu7mCA+02bBjCiNeZ#ZIqCGU_9&lGOToEi#iMD@4qS23l7_d;iloOzrRXTJV$(9m)~{45wC^bQcWd;z-|=HRf= zfeX2BxGn3oCU#Lu*EWUgN_=+Ua~(d{AO|fBM8J|aNl964%S9@-PiFp(DcN{6QL3A$ zwk(`|Of=-;N*9$5?hS+JRr*_qOB@>kNlKmgo!<4>Q0&JaZSj(0)Qi7&3psys^q>?U z`T4Wu$1-1SzxAz-()SUvP&=_;!! z(q~2R^WCIHM}1pUPIl#f;Q|i$_zYmP=RocH858)4?zz`83tph+FL7hs2uufA?I1hQZTGOo!C}~ zcb3!LnLe2|_PnL3Uj=Bf^7J zs|qj)4=P-^0=Tm9(6E=Q7tV#}P17N&8RCsrN~pG?FlFe*eA1jiK53&2Riphoxr1_E zDAv%8V3R|KR^u5%C!o+};n)leeN~245|M=)@hjQXbORPh2B8it2hRD3 zFb}T|x+|nSQ-Gy<4jm}t0O=VO5iCa(Mbv@FUtv&iv2iATE!B<6!tSj$$^u4Nx$cH&ksd&uLdp~@lv8HKI_r(O6Yh;SEr+l!Bng>pZ`LtMLukPIV5vO3K0QHCQ7k1%|S z;WN}TS@4HdWJqPfz%VRh=w?XMCkPpmQebvw$jXxSlZIzQL-*_FA%2F39@6o{`uV7S zj_BtR{d`J4pJAS)BQ)r!UIs%CLodT}hCYS?hJG@dkof)jd5E7VUB?gW=cD>LqMt|f z^C|s&hNc*@*VSZlE2H6v&d)!*{~{i2P$9$E5ccz4DA8=G1h8y*b^i!dHv6_aYnRK zxXB_@G3tq8FqE=E*5L0Tq>T3v1-Sy+2vCHCOpPH3v6B|oV2-qSYgWiW+Wj9)da2j# z3J)C*$HLhX^i?qEE~8n=LvvnJ$nVzGg_2cD0^)2pCQq0iGKU}oyj|0TSBG|mo5Dl? z3EOKx-uOS?9X33HAVMd~Q|2~kKIcbGsT-CDvoi*hl%*wZO!XCRcTK7N7up3E6XFVI z18x^N2s&0OM0l8H%9_$(l^foKt{dg#x{<{MXHW#G7}(O#Fu4h6l*cDf?L+h*vr;WY zbSO~ehJt!L0gor>fm|L609opGyF3ukonAMpi1vGeU{qcn8V6lSB%dtA zL_Ih>pA2*`$jJV1bcWmQ=nQm@?hbI4Gz}w13rt3Mcoiby?cwc&3lF!V+2P@H`Tr7l z8_syA?PD zsRV=U%fKUaq0;Cc9~_~eQV)nVJiHxBj`j`R9xO$dlWSz4nwO%AkVG)N%?+R&ZVGxDjYnN>4h_f2VBO84)4jOI4I7sW4d=Yv8wl1` z=#chk;2~K_a{~D!@{o9d3|gshy7H;Y>Eh{(I6`{pS-@}(CQj6Zhp$tQ;gGv5REsE3 z!-V!!Tbbq{KD4*%T+3PjLwfXQ04P&2Q6xW>4(L@?Lw%Q9Kv8tI2Ul2l5040BkGW&0zeupV9}@> z6mEn*V;(~@jOywda7ue$mycLh0<_(K7ZlNZ@Np3oc! zg#=LT#n`F{R|Lrs2+u2lJ5ve}bfLdV1>q4BjuyP0G6HS@pVz7oWxxO^3pXObM#JYp zsDwZn0XG3J0Y8BNMkIMM0m7C8xJa>34pe@aMoVK}70_1nbvOsXM|3~jf@h;UR9y|% z3`z6w2Pso8abv?8?fod+JGGcIk$vvv0*$q_p;0fI-z?><3 z7{T*6^-Mt%@M4fuN~+#{9D)cG%CNBHQX6N=05Uc*86ludt?X)Yh3$yejz%x`0r<7} zR6aB8xUt%>f=ci!d=Gwzl1uQEgVJ+&2k29b{GKy2H8SC8Sj4Vd$_ST0-N;! ztT^0wHx0Zyc;X9hA@eiz8KUkaO*jaT9G1}I(dvJ%Qhy`h#%Ksoq*i)d6oKI#rf0c+ z`tYO^7w!fyQ6fP=O>E_;Y`|0QfzROy4?lx-3fyx7 zj}jOmaD>291fDU<{MfuG#rS3Dttp-D27o7mjfAW{SECu^$*^$IMkBlj2H1_IJefz3 zp{N6xbYQj^qoNQtv7#{^fEzpfeaM+6vSE}5-vONf|AAa;hKGE@MGi@61$nwqLb$yc zr!WK<^ z4*!QE{AxZN8vdys%oM_8M_RzHEH%f&HM@;#e3;>*3`ZCqVfYloXS`fs1cRp(Dnc6$ zVtQ!!I9nKcVw#u2gH@Vl^8>u2#RTW>wP6;cYUBy4o%HLH2kL z-uJ?9Jzv$mbZK-+&yw?-S{5xf8<(|Amz_oh{lX?V;k7P!Cnea?E@f<(p!#<`g=?)? z;d8)2hx=r0sr1?eeufrrcI8@{W_=7l2}}R}a4vX+3Ug1zrX(;Wfhh@0NnlC>Qxcex zz?1~0Brqj`DG5wTU`hh-v;?H60L#;b7%JpUOLZY|gJ~3==+@(N#a&X|X;4i4yVJm% z55;Ao0~fI`6YY30Z3ix7)4eykn7v7?LzwMR5lWxLgkZykwgbBn0C2yffi8`q-?9;8w(VV`^H1xte z^|u%oe;@;a>o~}3(bFsY=*z2g^Ur=)B9&8%Pa}3aY}(5}YrjsAXc}?T%l=?bLCgj{ zwT5nvrTLms0`gL?z7vodUByn~=9mczby=G@n&6{aQ~1RK>n?IVIMW3t`Ztg3zX5sr zz#+j`^9OJvjatx$yMnk?$8}F|T{dgHy7H9Bx7+%1_B&Ij#Vn^SD2u-MsM=60En7}} zmk%!mB-ys2_0)d4Ntr+^YM~j0QZCNNLYM+m5}1;}lmwpMvwE1KBS%Im4Qxcexz?1~0Brqj`DG5wTU`hg05}1;}lmwOpenMetaverse - + - Starts a thread that keeps the daemon running - - - - - - - Stops the daemon and the thread keeping it running + Sent to the client to indicate a teleport request has completed - + - - - - - - - - - This is used to get a list of audio devices that can be used for capture (input) of voice. - - - - - - This is used to get a list of audio devices that can be used for render (playback) of voice. + Interface requirements for Messaging system - - - This command is used to select the render device. - - The name of the device as returned by the Aux.GetRenderDevices command. + + The of the agent - - - This command is used to select the capture device. - - The name of the device as returned by the Aux.GetCaptureDevices command. + + - - - This command is used to start the audio capture process which will cause - AuxAudioProperty Events to be raised. These events can be used to display a - microphone VU meter for the currently selected capture device. This command - should not be issued if the user is on a call. - - (unused but required) - + + The simulators handle the agent teleported to - - - This command is used to stop the audio capture process. - - + + A Uri which contains a list of Capabilities the simulator supports - - - This command is used to set the mic volume while in the audio tuning process. - Once an acceptable mic level is attained, the application must issue a - connector set mic volume command to have that level be used while on voice - calls. - - the microphone volume (-100 to 100 inclusive) - + + Indicates the level of access required + to access the simulator, or the content rating, or the simulators + map status - - - This command is used to set the speaker volume while in the audio tuning - process. Once an acceptable speaker level is attained, the application must - issue a connector set speaker volume command to have that level be used while - on voice calls. - - the speaker volume (-100 to 100 inclusive) - + + The IP Address of the simulator - - - Create a Session - Sessions typically represent a connection to a media session with one or more - participants. This is used to generate an ‘outbound’ call to another user or - channel. The specifics depend on the media types involved. A session handle is - required to control the local user functions within the session (or remote - users if the current account has rights to do so). Currently creating a - session automatically connects to the audio media, there is no need to call - Session.Connect at this time, this is reserved for future use. - - Handle returned from successful Connector ‘create’ request - This is the URI of the terminating point of the session (ie who/what is being called) - This is the display name of the entity being called (user or channel) - Only needs to be supplied when the target URI is password protected - This indicates the format of the password as passed in. This can either be - “ClearText” or “SHA1UserName”. If this element does not exist, it is assumed to be “ClearText”. If it is - “SHA1UserName”, the password as passed in is the SHA1 hash of the password and username concatenated together, - then base64 encoded, with the final “=” character stripped off. - - - + + The UDP Port the simulator will listen for UDP traffic on - - - Used to accept a call - - SessionHandle such as received from SessionNewEvent - "default" - + + Status flags indicating the state of the Agent upon arrival, Flying, etc. - + - This command is used to start the audio render process, which will then play - the passed in file through the selected audio render device. This command - should not be issued if the user is on a call. + Serialize the object - The fully qualified path to the sound file. - True if the file is to be played continuously and false if it is should be played once. - + An containing the objects data - + - This command is used to stop the audio render process. + Deserialize the message - The fully qualified path to the sound file issued in the start render command. - + An containing the data - + - This is used to ‘end’ an established session (i.e. hang-up or disconnect). - - Handle returned from successful Session ‘create’ request or a SessionNewEvent - - - - - Set the combined speaking and listening position in 3D space. - - Handle returned from successful Session ‘create’ request or a SessionNewEvent - Speaking position - Listening position - - - - - Set User Volume for a particular user. Does not affect how other users hear that user. - - Handle returned from successful Session ‘create’ request or a SessionNewEvent - - The level of the audio, a number between -100 and 100 where 0 represents ‘normal’ speaking volume - - - - - Start up the Voice service. + Sent to the viewer when a neighboring simulator is requesting the agent make a connection to it. - + - Handle miscellaneous request status + Serialize the object - - - ///If something goes wrong, we log it. + An containing the objects data - + - Cleanup oject resources + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent to the client which indicates a teleport request has failed + and contains some information on why it failed - + + + + + A string key of the reason the teleport failed e.g. CouldntTPCloser + Which could be used to look up a value in a dictionary or enum + + + The of the Agent + + + A string human readable message containing the reason + An example: Could not teleport closer to destination + + - Request voice cap when changing regions + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Contains a list of prim owner information for a specific parcel in a simulator + + + A Simulator will always return at least 1 entry + If agent does not have proper permission the OwnerID will be UUID.Zero + If agent does not have proper permission OR there are no primitives on parcel + the DataBlocksExtended map will not be sent from the simulator + + + + An Array of objects + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Prim ownership information for a specified owner on a single parcel - + + The of the prim owner, + UUID.Zero if agent has no permission to view prim owner information + + + The total number of prims + + + True if the OwnerID is a + + + True if the owner is online + This is no longer used by the LL Simulators + + + The date the most recent prim was rezzed + + - Handle a change in session state + The details of a single parcel in a region, also contains some regionwide globals - - - Close a voice session - - + + Simulator-local ID of this parcel - - - Locate a Session context from its handle - - Creates the session context if it does not exist. + + Maximum corner of the axis-aligned bounding box for this + parcel - - - Handle completion of main voice cap request. - - - - + + Minimum corner of the axis-aligned bounding box for this + parcel - + + Total parcel land area + + + + + + Key of authorized buyer + + + Bitmap describing land layout in 4x4m squares across the + entire region + + + + + + Date land was claimed + + + Appears to always be zero + + + Parcel Description + + + + + + + + + Total number of primitives owned by the parcel group on + this parcel + + + Whether the land is deeded to a group or not + + + + + + Maximum number of primitives this parcel supports + + + The Asset UUID of the Texture which when applied to a + primitive will display the media + + + A URL which points to any Quicktime supported media type + + + A byte, if 0x1 viewer should auto scale media to fit object + + + URL For Music Stream + + + Parcel Name + + + Autoreturn value in minutes for others' objects + + + + + + Total number of other primitives on this parcel + + + UUID of the owner of this parcel + + + Total number of primitives owned by the parcel owner on + this parcel + + + + + + How long is pass valid for + + + Price for a temporary pass + + + + + + Disallows people outside the parcel from being able to see in + + + + + + + + + + + + True if the region denies access to age unverified users + + + + + + This field is no longer used + + + The result of a request for parcel properties + + + Sale price of the parcel, only useful if ForSale is set + The SalePrice will remain the same after an ownership + transfer (sale), so it can be used to see the purchase price after + a sale if the new owner has not changed it + + - Daemon has started so connect to it. + Number of primitives your avatar is currently + selecting and sitting on in this parcel - + + + + - The daemon TCP connection is open. + A number which increments by 1, starting at 0 for each ParcelProperties request. + Can be overriden by specifying the sequenceID with the ParcelPropertiesRequest being sent. + a Negative number indicates the action in has occurred. - + + Maximum primitives across the entire simulator + + + Total primitives across the entire simulator + + + + + + Key of parcel snapshot + + + Parcel ownership status + + + Total number of primitives on this parcel + + + + + + + + + A description of the media + + + An Integer which represents the height of the media + + + An integer which represents the width of the media + + + A boolean, if true the viewer should loop the media + + + A string which contains the mime type of the media + + + true to obscure (hide) media url + + + true to obscure (hide) music url + + - Handle creation of the Connector. + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + A message sent from the viewer to the simulator to updated a specific parcels settings + + + The of the agent authorized to purchase this + parcel of land or a NULL if the sale is authorized to anyone + + + true to enable auto scaling of the parcel media + + + The category of this parcel used when search is enabled to restrict + search results + + + A string containing the description to set + + + The of the which allows for additional + powers and restrictions. + + + The which specifies how avatars which teleport + to this parcel are handled + + + The LocalID of the parcel to update settings on + + + A string containing the description of the media which can be played + to visitors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + Base class used for the RemoteParcelRequest message + + + + A message sent from the viewer to the simulator to request information + on a remote parcel - + + Local sim position of the parcel we are looking up + + + Region handle of the parcel we are looking up + + + Region of the parcel we are looking up + + - Handle response to audio output device query + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the simulator to the viewer in response to a + which will contain parcel information - + + The grid-wide unique parcel ID + + - Handle response to audio input device query + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message containing a request for a remote parcel from a viewer, or a response + from the simulator to that request - - - Set voice channel for new parcel - - + + The request or response details block - + - Request info from a parcel capability Uri. + Serialize the object - + An containing the objects data - + - Receive parcel voice cap + Deserialize the message - - - + An containing the data - + - Tell Vivox where we are standing + Serialize the object - This has to be called when we move or turn. + An containing the objects data - + - Start and stop updating out position. + Deserialize the message - + An containing the data - + - This is used to login a specific user account(s). It may only be called after - Connector initialization has completed successfully + Serialize the object - Handle returned from successful Connector ‘create’ request - User's account name - User's account password - Values may be “AutoAnswer” or “VerifyAnswer” - "" - This is an integer that specifies how often - the daemon will send participant property events while in a channel. If this is not set - the default will be “on state change”, which means that the events will be sent when - the participant starts talking, stops talking, is muted, is unmuted. - The valid values are: - 0 – Never - 5 – 10 times per second - 10 – 5 times per second - 50 – 1 time per second - 100 – on participant state change (this is the default) - false - + An containing the objects data - + - This is used to logout a user session. It should only be called with a valid AccountHandle. + Deserialize the message - Handle returned from successful Connector ‘login’ request - + An containing the data - + - This is used to initialize and stop the Connector as a whole. The Connector - Create call must be completed successfully before any other requests are made - (typically during application initialization). The shutdown should be called - when the application is shutting down to gracefully release resources - - A string value indicting the Application name - URL for the management server - LoggingSettings - - - - - - Shutdown Connector -- Should be called when the application is shutting down - to gracefully release resources - - Handle returned from successful Connector ‘create’ request - - - - Mute or unmute the microphone - - Handle returned from successful Connector ‘create’ request - true (mute) or false (unmute) - - - - Mute or unmute the speaker - - Handle returned from successful Connector ‘create’ request - true (mute) or false (unmute) - - - - Set microphone volume - - Handle returned from successful Connector ‘create’ request - The level of the audio, a number between -100 and 100 where - 0 represents ‘normal’ speaking volume - - - - Set local speaker volume - - Handle returned from successful Connector ‘create’ request - The level of the audio, a number between -100 and 100 where - 0 represents ‘normal’ speaking volume - - - - Event for most mundane request reposnses. + A message sent from the simulator to an agent which contains + the groups the agent is in - - Response to Connector.Create request + + The Agent receiving the message - - Response to Aux.GetCaptureDevices request + + An array containing information + for each the agent is a member of - - Response to Aux.GetRenderDevices request + + An array containing information + for each the agent is a member of - - Audio Properties Events are sent after audio capture is started. - These events are used to display a microphone VU meter - - - Response to Account.Login request - - - This event message is sent whenever the login state of the - particular Account has transitioned from one value to another - - + - List of audio input devices + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + Group Details specific to the agent + + + true of the agent accepts group notices + + + The agents tier contribution to the group + + + The Groups + + + The of the groups insignia + + + The name of the group + + + The aggregate permissions the agent has in the group for all roles the agent + is assigned + + + An optional block containing additional agent specific information + + + true of the agent allows this group to be + listed in their profile + + + + A message sent from the viewer to the simulator which + specifies the language and permissions for others to detect + the language specified - + + A string containng the default language + to use for the agent + + + true of others are allowed to + know the language setting + + - List of audio output devices + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + An EventQueue message sent from the simulator to an agent when the agent + leaves a group - + - Set audio test mode + An Array containing the AgentID and GroupID - - Enable logging - - - The folder where any logs will be created - - - This will be prepended to beginning of each log file - - - The suffix or extension to be appended to each log file - - + - 0: NONE - No logging - 1: ERROR - Log errors only - 2: WARNING - Log errors and warnings - 3: INFO - Log errors, warnings and info - 4: DEBUG - Log errors, warnings, info and debug + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + An object containing the Agents UUID, and the Groups UUID + + + The ID of the Agent leaving the group + + + The GroupID the Agent is leaving + + + Base class for Asset uploads/results via Capabilities + + + + The request state - + - Constructor for default logging settings + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the viewer to the simulator to request a temporary upload capability + which allows an asset to be uploaded - - Audio Properties Events are sent after audio capture is started. These events are used to display a microphone VU meter + + The Capability URL sent by the simulator to upload the baked texture to - + + + A message sent from the simulator that will inform the agent the upload is complete, + and the UUID of the uploaded asset + + + + The uploaded texture asset ID + + + + A message sent from the viewer to the simulator to request a temporary + capability URI which is used to upload an agents baked appearance textures + + + + Object containing request or response + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the simulator which indicates the minimum version required for + using voice chat + + + + Major Version Required + + + Minor version required + + + The name of the region sending the version requrements + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the simulator to the viewer containing the + voice server URI + + + + The Parcel ID which the voice server URI applies + + + The name of the region + + + A uri containing the server/channel information + which the viewer can utilize to participate in voice conversations + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + - + - + - - - - - - - - - - - - - - - - + - Status of the last application run. - Used for error reporting to the grid login service for statistical purposes. + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent by the viewer to the simulator to request a temporary + capability for a script contained with in a Tasks inventory to be updated - - Application exited normally + + Object containing request or response - - Application froze - - - Application detected error and exited abnormally - - - Other crash - - - Application froze during logout - - - Application crashed during logout - - + - Login Request Parameters + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the simulator to the viewer to indicate + a Tasks scripts status. - - The URL of the Login Server + + The Asset ID of the script - - The number of milliseconds to wait before a login is considered - failed due to timeout + + True of the script is compiled/ran using the mono interpreter, false indicates it + uses the older less efficient lsl2 interprter - - The request method - login_to_simulator is currently the only supported method + + The Task containing the scripts - - The Agents First name + + true of the script is in a running state - - The Agents Last name + + + Serialize the object + + An containing the objects data - - A md5 hashed password - plaintext password will be automatically hashed + + + Deserialize the message + + An containing the data - - The agents starting location once logged in - Either "last", "home", or a string encoded URI - containing the simulator name and x/y/z coordinates e.g: uri:hooper&128&152&17 + + + A message containing the request/response used for updating a gesture + contained with an agents inventory + - - A string containing the client software channel information - Second Life Release + + Object containing request or response - - The client software version information - The official viewer uses: Second Life Release n.n.n.n - where n is replaced with the current version of the viewer + + + Serialize the object + + An containing the objects data - - A string containing the platform information the agent is running on + + + Deserialize the message + + An containing the data - - A string hash of the network cards Mac Address + + + A message request/response which is used to update a notecard contained within + a tasks inventory + - - Unknown or deprecated + + The of the Task containing the notecard asset to update - - A string hash of the first disk drives ID used to identify this clients uniqueness + + The notecard assets contained in the tasks inventory - - A string containing the viewers Software, this is not directly sent to the login server but - instead is used to generate the Version string + + + Serialize the object + + An containing the objects data - - A string representing the software creator. This is not directly sent to the login server but - is used by the library to generate the Version information + + + Deserialize the message + + An containing the data - - If true, this agent agrees to the Terms of Service of the grid its connecting to + + + A reusable class containing a message sent from the viewer to the simulator to request a temporary uploader capability + which is used to update an asset in an agents inventory + - + + + The Notecard AssetID to replace + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message containing the request/response used for updating a notecard + contained with an agents inventory + + + + Object containing request or response + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the simulator to the viewer which indicates + an error occurred while attempting to update a script in an agents or tasks + inventory + + + + true of the script was successfully compiled by the simulator + + + A string containing the error which occured while trying + to update the script + + + A new AssetID assigned to the script + + + + A message sent from the viewer to the simulator + requesting the update of an existing script contained + within a tasks inventory + + + + if true, set the script mode to running + + + The scripts InventoryItem ItemID to update + + + A lowercase string containing either "mono" or "lsl2" which + specifies the script is compiled and ran on the mono runtime, or the older + lsl runtime + + + The tasks which contains the script to update + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message containing either the request or response used in updating a script inside + a tasks inventory + + + + Object containing request or response + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Response from the simulator to notify the viewer the upload is completed, and + the UUID of the script asset and its compiled status + + + + The uploaded texture asset ID + + + true of the script was compiled successfully + + + + A message sent from a viewer to the simulator requesting a temporary uploader capability + used to update a script contained in an agents inventory + + + + The existing asset if of the script in the agents inventory to replace + + + The language of the script + Defaults to lsl version 2, "mono" might be another possible option + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message containing either the request or response used in updating a script inside + an agents inventory + + + + Object containing request or response + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + Base class for Map Layers via Capabilities + + + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Sent by an agent to the capabilities server to request map layers + + + + + A message sent from the simulator to the viewer which contains an array of map images and their grid coordinates + + + + An array containing LayerData items + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + An object containing map location details + + + + The Asset ID of the regions tile overlay + + + The grid location of the southern border of the map tile + + + The grid location of the western border of the map tile + + + The grid location of the eastern border of the map tile + + + The grid location of the northern border of the map tile + + + Object containing request or response + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + New as of 1.23 RC1, no details yet. + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + A string containing the method used + + + + A request sent from an agent to the Simulator to begin a new conference. + Contains a list of Agents which will be included in the conference + + + + An array containing the of the agents invited to this conference + + + The conferences Session ID + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A moderation request sent from a conference moderator + Contains an agent and an optional action to take + + + + The Session ID + + + + + + A list containing Key/Value pairs, known valid values: + key: text value: true/false - allow/disallow specified agents ability to use text in session + key: voice value: true/false - allow/disallow specified agents ability to use voice in session + + "text" or "voice" + + + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + A message sent from the agent to the simulator which tells the + simulator we've accepted a conference invitation + + + + The conference SessionID + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + Key of sender + + + Name of sender + + + Key of destination avatar + + + ID of originating estate + + + Key of originating region + + + Coordinates in originating region + + + Instant message type + + + Group IM session toggle + + + Key of IM session, for Group Messages, the groups UUID + + + Timestamp of the instant message + + + Instant message text + + + Whether this message is held for offline avatars + + + Context specific packed data + + + Is this invitation for voice group/conference chat + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Sent from the simulator to the viewer. + + When an agent initially joins a session the AgentUpdatesBlock object will contain a list of session members including + a boolean indicating they can use voice chat in this session, a boolean indicating they are allowed to moderate + this session, and lastly a string which indicates another agent is entering the session with the Transition set to "ENTER" + + During the session lifetime updates on individuals are sent. During the update the booleans sent during the initial join are + excluded with the exception of the Transition field. This indicates a new user entering or exiting the session with + the string "ENTER" or "LEAVE" respectively. + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + An EventQueue message sent when the agent is forcibly removed from a chatterbox session + + + + + A string containing the reason the agent was removed + + + + + The ChatterBoxSession's SessionID + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + + Event Queue message describing physics engine attributes of a list of objects + Sim sends these when object is selected + + + + Array with the list of physics properties + + + + Serializes the message + + Serialized OSD + + + + Deseializes the message + + Incoming data to deserialize + + + + A message sent from the viewer to the simulator which + specifies that the user has changed current URL + of the specific media on a prim face + + + + + New URL + + + + + Prim UUID where navigation occured + + + + + Face index + + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + Base class used for the ObjectMedia message + + + + Message used to retrive prim media data + + + + + Prim UUID + + + + + Requested operation, either GET or UPDATE + + + + + Serialize object + + Serialized object as OSDMap + + + + Deserialize the message + + An containing the data + + + + Message used to update prim media data + + + + + Prim UUID + + + + + Array of media entries indexed by face number + + + + + Media version string + + + + + Serialize object + + Serialized object as OSDMap + + + + Deserialize the message + + An containing the data + + + + Message used to update prim media data + + + + + Prim UUID + + + + + Array of media entries indexed by face number + + + + + Requested operation, either GET or UPDATE + + + + + Serialize object + + Serialized object as OSDMap + + + + Deserialize the message + + An containing the data + + + + Message for setting or getting per face MediaEntry + + + + The request or response details block + + + + Serialize the object + + An containing the objects data + + + + Deserialize the message + + An containing the data + + + Details about object resource usage + + + Object UUID + + + Object name + + + Indicates if object is group owned + + + Locatio of the object + + + Object owner + + + Resource usage, keys are resource names, values are resource usage for that specific resource + + + + Deserializes object from OSD + + An containing the data + + + + Makes an instance based on deserialized data + + serialized data + Instance containg deserialized data + + + Details about parcel resource usage + + + Parcel UUID + + + Parcel local ID + + + Parcel name + + + Indicates if parcel is group owned + + + Parcel owner + + + Array of containing per object resource usage + + + + Deserializes object from OSD + + An containing the data + + + + Makes an instance based on deserialized data + + serialized data + Instance containg deserialized data + + + Resource usage base class, both agent and parcel resource + usage contains summary information + + + Summary of available resources, keys are resource names, + values are resource usage for that specific resource + + + Summary resource usage, keys are resource names, + values are resource usage for that specific resource + + + + Serializes object + + serialized data + + + + Deserializes object from OSD + + An containing the data + + + Agent resource usage + + + Per attachment point object resource usage + + + + Deserializes object from OSD + + An containing the data + + + + Makes an instance based on deserialized data + + serialized data + Instance containg deserialized data + + + + Detects which class handles deserialization of this message + + An containing the data + Object capable of decoding this message + + + Request message for parcel resource usage + + + UUID of the parel to request resource usage info + + + + Serializes object + + serialized data + + + + Deserializes object from OSD + + An containing the data + + + Response message for parcel resource usage + + + URL where parcel resource usage details can be retrieved + + + URL where parcel resource usage summary can be retrieved + + + + Serializes object + + serialized data + + + + Deserializes object from OSD + + An containing the data + + + + Detects which class handles deserialization of this message + + An containing the data + Object capable of decoding this message + + + Parcel resource usage + + + Array of containing per percal resource usage + + + + Deserializes object from OSD + + An containing the data + + + + Reply to request for bunch if display names + + + + Current display name + + + Following UUIDs failed to return a valid display name + + + + Serializes the message + + OSD containting the messaage + + + + Message sent when requesting change of the display name + + + + Current display name + + + Desired new display name + + + + Serializes the message + + OSD containting the messaage + + + + Message recieved in response to request to change display name + + + + New display name + + + String message indicating the result of the operation + + + Numerical code of the result, 200 indicates success + + + + Serializes the message + + OSD containting the messaage + + + + Message recieved when someone nearby changes their display name + + + + Previous display name, empty string if default + + + New display name + + + + Serializes the message + + OSD containting the messaage + + + + + + + + + Initialize the UDP packet handler in server mode + + Port to listening for incoming UDP packets on + + + + Initialize the UDP packet handler in client mode + + Remote UDP server to connect to + + + + + + + + + + + + + + + + + + + + + + + No report + + + Unknown report type + + + Bug report + + + Complaint report + + + Customer service report + + + + Bitflag field for ObjectUpdateCompressed data blocks, describing + which options are present for each object + + + Unknown - - Status of the last application run sent to the grid login server for statistical purposes + + Whether the object has a TreeSpecies - - An array of string sent to the login server to enable various options + + Whether the object has floating text ala llSetText - - A randomly generated ID to distinguish between login attempts. This value is only used - internally in the library and is never sent over the wire + + Whether the object has an active particle system - - - Default constuctor, initializes sane default values - - - - - Instantiates new LoginParams object and fills in the values - - Instance of GridClient to read settings from - Login first name - Login last name - Password - Login channnel (application name) - Client version, should be application name + version number - - - - Instantiates new LoginParams object and fills in the values - - Instance of GridClient to read settings from - Login first name - Login last name - Password - Login channnel (application name) - Client version, should be application name + version number - URI of the login server - - - - The decoded data returned from the login server after a successful login - - - - true, false, indeterminate - - - Login message of the day - - - M or PG, also agent_region_access and agent_access_max - - - - Parse LLSD Login Reply Data - - An - contaning the login response data - XML-RPC logins do not require this as XML-RPC.NET - automatically populates the struct properly using attributes - - - - Login Routines - - - NetworkManager is responsible for managing the network layer of - OpenMetaverse. It tracks all the server connections, serializes - outgoing traffic and deserializes incoming traffic, and provides - instances of delegates for network-related events. - - - - The event subscribers, null of no subscribers - - - Raises the LoginProgress Event - A LoginProgressEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - Seed CAPS URL returned from the login server - - - Maximum number of groups an agent can belong to, -1 for unlimited - - - Server side baking service URL - - - A list of packets obtained during the login process which - networkmanager will log but not process - - - - Generate sane default values for a login request - - Account first name - Account last name - Account password - Client application name (channel) - Client application name + version - A populated struct containing - sane defaults - - - - Simplified login that takes the most common and required fields - - Account first name - Account last name - Account password - Client application name (channel) - Client application name + version - Whether the login was successful or not. On failure the - LoginErrorKey string will contain the error code and LoginMessage - will contain a description of the error - - - - Simplified login that takes the most common fields along with a - starting location URI, and can accept an MD5 string instead of a - plaintext password - - Account first name - Account last name - Account password or MD5 hash of the password - such as $1$1682a1e45e9f957dcdf0bb56eb43319c - Client application name (channel) - Starting location URI that can be built with - StartLocation() - Client application name + version - Whether the login was successful or not. On failure the - LoginErrorKey string will contain the error code and LoginMessage - will contain a description of the error - - - - Login that takes a struct of all the values that will be passed to - the login server - - The values that will be passed to the login - server, all fields must be set even if they are String.Empty - Whether the login was successful or not. On failure the - LoginErrorKey string will contain the error code and LoginMessage - will contain a description of the error - - - - Build a start location URI for passing to the Login function - - Name of the simulator to start in - X coordinate to start at - Y coordinate to start at - Z coordinate to start at - String with a URI that can be used to login to a specified - location - - - - LoginParams and the initial login XmlRpcRequest were made on a remote machine. - This method now initializes libomv with the results. - - - - - Handles response from XML-RPC login replies - - - - - Handles response from XML-RPC login replies with already parsed LoginResponseData - - - - - Handle response from LLSD login replies - - - - - - - - Get current OS - - Either "Win" or "Linux" - - - - Get clients default Mac Address - - A string containing the first found Mac Address - - - The event subscribers, null of no subscribers - - - Raises the PacketSent Event - A PacketSentEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the LoggedOut Event - A LoggedOutEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the SimConnecting Event - A SimConnectingEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the SimConnected Event - A SimConnectedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the SimDisconnected Event - A SimDisconnectedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the Disconnected Event - A DisconnectedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the SimChanged Event - A SimChangedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the EventQueueRunning Event - A EventQueueRunningEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - All of the simulators we are currently connected to - - - Handlers for incoming capability events - - - Handlers for incoming packets - - - Incoming packets that are awaiting handling - - - Outgoing packets that are awaiting handling - - - - Default constructor - - Reference to the GridClient object - - - - Register an event handler for a packet. This is a low level event - interface and should only be used if you are doing something not - supported in the library - - Packet type to trigger events for - Callback to fire when a packet of this type - is received - - - - Register an event handler for a packet. This is a low level event - interface and should only be used if you are doing something not - supported in the library - - Packet type to trigger events for - Callback to fire when a packet of this type - is received - True if the callback should be ran - asynchronously. Only set this to false (synchronous for callbacks - that will always complete quickly) - If any callback for a packet type is marked as - asynchronous, all callbacks for that packet type will be fired - asynchronously - - - - Unregister an event handler for a packet. This is a low level event - interface and should only be used if you are doing something not - supported in the library - - Packet type this callback is registered with - Callback to stop firing events for - - - - Register a CAPS event handler. This is a low level event interface - and should only be used if you are doing something not supported in - the library - - Name of the CAPS event to register a handler for - Callback to fire when a CAPS event is received - - - - Unregister a CAPS event handler. This is a low level event interface - and should only be used if you are doing something not supported in - the library - - Name of the CAPS event this callback is - registered with - Callback to stop firing events for - - - - Send a packet to the simulator the avatar is currently occupying - - Packet to send - - - - Send a packet to a specified simulator - - Packet to send - Simulator to send the packet to - - - - Connect to a simulator - - IP address to connect to - Port to connect to - Handle for this simulator, to identify its - location in the grid - Whether to set CurrentSim to this new - connection, use this if the avatar is moving in to this simulator - URL of the capabilities server to use for - this sim connection - A Simulator object on success, otherwise null - - - - Connect to a simulator - - IP address and port to connect to - Handle for this simulator, to identify its - location in the grid - Whether to set CurrentSim to this new - connection, use this if the avatar is moving in to this simulator - URL of the capabilities server to use for - this sim connection - A Simulator object on success, otherwise null - - - - Initiate a blocking logout request. This will return when the logout - handshake has completed or when Settings.LOGOUT_TIMEOUT - has expired and the network layer is manually shut down - - - - - Initiate the logout process. Check if logout succeeded with the - OnLogoutReply event, and if this does not fire the - Shutdown() function needs to be manually called - - - - - Close a connection to the given simulator - - - - - - - Shutdown will disconnect all the sims except for the current sim - first, and then kill the connection to CurrentSim. This should only - be called if the logout process times out on RequestLogout - - Type of shutdown - - - - Shutdown will disconnect all the sims except for the current sim - first, and then kill the connection to CurrentSim. This should only - be called if the logout process times out on RequestLogout - - Type of shutdown - Shutdown message - - - - Searches through the list of currently connected simulators to find - one attached to the given IPEndPoint - - IPEndPoint of the Simulator to search for - A Simulator reference on success, otherwise null - - - - Fire an event when an event queue connects for capabilities - - Simulator the event queue is attached to - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Raised when the simulator sends us data containing - ... - - - Called when a reply is received from the login server, the - login sequence will block until this event returns - - - Current state of logging in - - - Upon login failure, contains a short string key for the - type of login error that occurred - - - The raw XML-RPC reply from the login server, exactly as it - was received (minus the HTTP header) - - - During login this contains a descriptive version of - LoginStatusCode. After a successful login this will contain the - message of the day, and after a failed login a descriptive error - message will be returned - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Unique identifier associated with our connections to - simulators - - - The simulator that the logged in avatar is currently - occupying - - - Shows whether the network layer is logged in to the - grid or not - - - Number of packets in the incoming queue - - - Number of packets in the outgoing queue - - - - - - - - - - - - - - Explains why a simulator or the grid disconnected from us - - - - The client requested the logout or simulator disconnect - - - The server notified us that it is disconnecting + + Whether the object has sound attached to it - - Either a socket was closed or network traffic timed out + + Whether the object is attached to a root object or not - - The last active simulator shut down + + Whether the object has texture animation settings - - - Holds a simulator reference and a decoded packet, these structs are put in - the packet inbox for event handling - - - - Reference to the simulator that this packet came from - - - Packet that needs to be processed - - - - Holds a simulator reference and a serialized packet, these structs are put in - the packet outbox for sending - - - - Reference to the simulator this packet is destined for - - - Packet that needs to be sent - - - Sequence number of the wrapped packet - - - Number of times this packet has been resent - - - Environment.TickCount when this packet was last sent over the wire - - - Type of the packet - - - - Registers, unregisters, and fires events generated by incoming packets - - - - Reference to the GridClient object - - - - Default constructor - - - - - - Register an event handler - - Use PacketType.Default to fire this event on every - incoming packet - Packet type to register the handler for - Callback to be fired - True if this callback should be ran - asynchronously, false to run it synchronous - - - - Unregister an event handler - - Packet type to unregister the handler for - Callback to be unregistered - - - - Fire the events registered for this packet type - - Incoming packet type - Incoming packet - Simulator this packet was received from - - - - Object that is passed to worker threads in the ThreadPool for - firing packet callbacks - - - - Callback to fire for this packet - - - Reference to the simulator that this packet came from - - - The packet that needs to be processed - - - - Registers, unregisters, and fires events generated by the Capabilities - event queue - - - - Reference to the GridClient object - - - - Default constructor - - Reference to the GridClient object - - - - Register an new event handler for a capabilities event sent via the EventQueue - - Use String.Empty to fire this event on every CAPS event - Capability event name to register the - handler for - Callback to fire - - - - Unregister a previously registered capabilities handler - - Capability event name unregister the - handler for - Callback to unregister - - - - Fire the events registered for this event type synchronously - - Capability name - Decoded event body - Reference to the simulator that - generated this event - - - - Fire the events registered for this event type asynchronously - - Capability name - Decoded event body - Reference to the simulator that - generated this event - - - - Object that is passed to worker threads in the ThreadPool for - firing CAPS callbacks - - - - Callback to fire for this packet - - - Name of the CAPS event - - - Strongly typed decoded data - - - Reference to the simulator that generated this event - - - - Represends individual HTTP Download request - - - - URI of the item to fetch - - - Timout specified in milliseconds - - - Download progress callback - - - Download completed callback - - - Accept the following content type - - - How many times will this request be retried - - - Current fetch attempt - - - Default constructor - - - Constructor - - - - Manages async HTTP downloads with a limit on maximum - concurrent downloads - - - - Default constructor - - - Cleanup method - - - Setup http download request - - - Check the queue for pending work - - - Enqueue a new HTPP download - - - Maximum number of parallel downloads from a single endpoint - - - Client certificate - - - - Reads in a byte array of an Animation Asset created by the SecondLife(tm) client. - - - - - Rotation Keyframe count (used internally) - - - - - Position Keyframe count (used internally) - - - - - Animation Priority - - - - - The animation length in seconds. - - - - - Expression set in the client. Null if [None] is selected - - - - - The time in seconds to start the animation - - - - - The time in seconds to end the animation - - - - - Loop the animation - - - - - Meta data. Ease in Seconds. - - - - - Meta data. Ease out seconds. - - - - - Meta Data for the Hand Pose - - - - - Number of joints defined in the animation - - - - - Contains an array of joints - - - - - Searialize an animation asset into it's joints/keyframes/meta data - - - - - - Variable length strings seem to be null terminated in the animation asset.. but.. - use with caution, home grown. - advances the index. - - The animation asset byte array - The offset to start reading - a string - - - - Read in a Joint from an animation asset byte array - Variable length Joint fields, yay! - Advances the index - - animation asset byte array - Byte Offset of the start of the joint - The Joint data serialized into the binBVHJoint structure - - - - Read Keyframes of a certain type - advance i - - Animation Byte array - Offset in the Byte Array. Will be advanced - Number of Keyframes - Scaling Min to pass to the Uint16ToFloat method - Scaling Max to pass to the Uint16ToFloat method - - - - - Determines whether the specified is equal to the current . - - - true if the specified is equal to the current ; otherwise, false. - - The to compare with the current . - The parameter is null. - 2 - - - - Serves as a hash function for a particular type. - - - A hash code for the current . - - 2 - - - - A Joint and it's associated meta data and keyframes - - - - - Indicates whether this instance and a specified object are equal. - - - true if and this instance are the same type and represent the same value; otherwise, false. - - Another object to compare to. - 2 - - - - Returns the hash code for this instance. - - - A 32-bit signed integer that is the hash code for this instance. - - 2 - - - - Name of the Joint. Matches the avatar_skeleton.xml in client distros - - - - - Joint Animation Override? Was the same as the Priority in testing.. - - - - - Array of Rotation Keyframes in order from earliest to latest - - - - - Array of Position Keyframes in order from earliest to latest - This seems to only be for the Pelvis? - + + Whether the object has an angular velocity - - - Custom application data that can be attached to a joint - + + Whether the object has a name value pairs string - - - A Joint Keyframe. This is either a position or a rotation. - + + Whether the object has a Media URL set - + - Either a Vector3 position or a Vector3 Euler rotation + Specific Flags for MultipleObjectUpdate requests - - - Poses set in the animation metadata for the hands. - - - - Information about agents display name - - - Agent UUID - - - Username + + None - - Display name + + Change position of prims - - First name (legacy) + + Change rotation of prims - - Last name (legacy) + + Change size of prims - - Is display name default display name + + Perform operation on link set - - Cache display name until + + Scale prims uniformly, same as selecing ctrl+shift in the + viewer. Used in conjunction with Scale - - Last updated timestamp - - + - Creates AgentDisplayName object from OSD + Special values in PayPriceReply. If the price is not one of these + literal value of the price should be use - Incoming OSD data - AgentDisplayName object - + - Return object as OSD map + Indicates that this pay option should be hidden - OSD containing agent's display name data - - - Full name (legacy) - + - Holds group information for Avatars such as those you might find in a profile + Indicates that this pay option should have the default value - - true of Avatar accepts group notices - - - Groups Key - - - Texture Key for groups insignia - - - Name of the group - - - Powers avatar has in the group - - - Avatars Currently selected title - - - true of Avatar has chosen to list this in their profile - - + - Contains an animation currently being played by an agent + Contains the variables sent in an object update packet for objects. + Used to track position and movement of prims and avatars - - The ID of the animation asset - - - A number to indicate start order of currently playing animations - On Linden Grids this number is unique per region, with OpenSim it is per client - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - Holds group information on an individual profile pick + Handles all network traffic related to prims and avatar positions and + movement. - - - Retrieve friend status notifications, and retrieve avatar names and - profiles - - - + The event subscribers, null of no subscribers - - Raises the AvatarAnimation Event - An AvatarAnimationEventArgs object containing - the data sent from the simulator - - + Thread sync lock object - + The event subscribers, null of no subscribers - - Raises the AvatarAppearance Event - A AvatarAppearanceEventArgs object containing + + Raises the ObjectProperties Event + A ObjectPropertiesEventArgs object containing the data sent from the simulator - + Thread sync lock object - + The event subscribers, null of no subscribers - - Raises the UUIDNameReply Event - A UUIDNameReplyEventArgs object containing + + Raises the ObjectPropertiesUpdated Event + A ObjectPropertiesUpdatedEventArgs object containing the data sent from the simulator - + Thread sync lock object - + The event subscribers, null of no subscribers - - Raises the AvatarInterestsReply Event - A AvatarInterestsReplyEventArgs object containing + + Raises the ObjectPropertiesFamily Event + A ObjectPropertiesFamilyEventArgs object containing the data sent from the simulator - + Thread sync lock object - + The event subscribers, null of no subscribers - - Raises the AvatarPropertiesReply Event - A AvatarPropertiesReplyEventArgs object containing + + Raises the AvatarUpdate Event + A AvatarUpdateEventArgs object containing the data sent from the simulator - + Thread sync lock object - + The event subscribers, null of no subscribers - - Raises the AvatarGroupsReply Event - A AvatarGroupsReplyEventArgs object containing - the data sent from the simulator - - + Thread sync lock object - + The event subscribers, null of no subscribers - - Raises the AvatarPickerReply Event - A AvatarPickerReplyEventArgs object containing + + Raises the ObjectDataBlockUpdate Event + A ObjectDataBlockUpdateEventArgs object containing the data sent from the simulator - + Thread sync lock object - + The event subscribers, null of no subscribers - - Raises the ViewerEffectPointAt Event - A ViewerEffectPointAtEventArgs object containing + + Raises the KillObject Event + A KillObjectEventArgs object containing the data sent from the simulator - + Thread sync lock object - + The event subscribers, null of no subscribers - - Raises the ViewerEffectLookAt Event - A ViewerEffectLookAtEventArgs object containing + + Raises the KillObjects Event + A KillObjectsEventArgs object containing the data sent from the simulator - + Thread sync lock object - + The event subscribers, null of no subscribers - - Raises the ViewerEffect Event - A ViewerEffectEventArgs object containing + + Raises the AvatarSitChanged Event + A AvatarSitChangedEventArgs object containing the data sent from the simulator - + Thread sync lock object - + The event subscribers, null of no subscribers - - Raises the AvatarPicksReply Event - A AvatarPicksReplyEventArgs object containing + + Raises the PayPriceReply Event + A PayPriceReplyEventArgs object containing the data sent from the simulator - + Thread sync lock object - + The event subscribers, null of no subscribers - - Raises the PickInfoReply Event - A PickInfoReplyEventArgs object containing + + Raises the PhysicsProperties Event + A PhysicsPropertiesEventArgs object containing the data sent from the simulator - + Thread sync lock object - - The event subscribers, null of no subscribers + + Reference to the GridClient object - - Raises the AvatarClassifiedReply Event - A AvatarClassifiedReplyEventArgs object containing - the data sent from the simulator + + Does periodic dead reckoning calculation to convert + velocity and acceleration to new positions for objects - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the ClassifiedInfoReply Event - A ClassifiedInfoReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the DisplayNameUpdate Event - A DisplayNameUpdateEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - + - Represents other avatars + Construct a new instance of the ObjectManager class - + A reference to the instance - - Tracks the specified avatar on your map - Avatar ID to track - - + - Request a single avatar name + Request information for a single object from a + you are currently connected to - The avatar key to retrieve a name for + The the object is located + The Local ID of the object - + - Request a list of avatar names + Request information for multiple objects contained in + the same simulator - The avatar keys to retrieve names for + The the objects are located + An array containing the Local IDs of the objects - - - Check if Display Names functionality is available - - True if Display name functionality is available - - - - Request retrieval of display names (max 90 names per request) - - List of UUIDs to lookup - Callback to report result of the operation - - - - Start a request for Avatar Properties - - - - - - Search for an avatar (first name, last name) - - The name to search for - An ID to associate with this query - - - - Start a request for Avatar Picks - - UUID of the avatar - - - - Start a request for Avatar Classifieds - - UUID of the avatar - - - - Start a request for details of a specific profile pick - - UUID of the avatar - UUID of the profile pick - - - - Start a request for details of a specific profile classified - - UUID of the avatar - UUID of the profile classified - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - EQ Message fired when someone nearby changes their display name - - The message key - the IMessage object containing the deserialized data sent from the simulator - The which originated the packet - - - - Crossed region handler for message that comes across the EventQueue. Sent to an agent - when the agent crosses a sim border into a new region. - - The message key - the IMessage object containing the deserialized data sent from the simulator - The which originated the packet - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Raised when the simulator sends us data containing - an agents animation playlist - - - Raised when the simulator sends us data containing - the appearance information for an agent - - - Raised when the simulator sends us data containing - agent names/id values - - - Raised when the simulator sends us data containing - the interests listed in an agents profile - - - Raised when the simulator sends us data containing - profile property information for an agent - - - Raised when the simulator sends us data containing - the group membership an agent is a member of - - - Raised when the simulator sends us data containing - name/id pair - - - Raised when the simulator sends us data containing - the objects and effect when an agent is pointing at - - - Raised when the simulator sends us data containing - the objects and effect when an agent is looking at - - - Raised when the simulator sends us data containing - an agents viewer effect information - - - Raised when the simulator sends us data containing - the top picks from an agents profile - - - Raised when the simulator sends us data containing - the Pick details - - - Raised when the simulator sends us data containing - the classified ads an agent has placed - - - Raised when the simulator sends us data containing - the details of a classified ad - - - Raised when the simulator sends us data containing - the details of display name change - - - - Callback giving results when fetching display names - - If the request was successful - Array of display names - Array of UUIDs that could not be fetched - - - Provides data for the event - The event occurs when the simulator sends - the animation playlist for an agent + + + Attempt to purchase an original object, a copy, or the contents of + an object + + The the object is located + The Local ID of the object + Whether the original, a copy, or the object + contents are on sale. This is used for verification, if the this + sale type is not valid for the object the purchase will fail + Price of the object. This is used for + verification, if it does not match the actual price the purchase + will fail + Group ID that will be associated with the new + purchase + Inventory folder UUID where the object or objects + purchased should be placed - The following code example uses the and - properties to display the animation playlist of an avatar on the window. - // subscribe to the event - Client.Avatars.AvatarAnimation += Avatars_AvatarAnimation; - - private void Avatars_AvatarAnimation(object sender, AvatarAnimationEventArgs e) - { - // create a dictionary of "known" animations from the Animations class using System.Reflection - Dictionary<UUID, string> systemAnimations = new Dictionary<UUID, string>(); - Type type = typeof(Animations); - System.Reflection.FieldInfo[] fields = type.GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static); - foreach (System.Reflection.FieldInfo field in fields) - { - systemAnimations.Add((UUID)field.GetValue(type), field.Name); - } + BuyObject(Client.Network.CurrentSim, 500, SaleType.Copy, + 100, UUID.Zero, Client.Self.InventoryRootFolderUUID); + + + + + + Request prices that should be displayed in pay dialog. This will triggger the simulator + to send us back a PayPriceReply which can be handled by OnPayPriceReply event + + The the object is located + The ID of the object + The result is raised in the event + + + + Select a single object. This will cause the to send us + an which will raise the event + + The the object is located + The Local ID of the object + + + + + Select a single object. This will cause the to send us + an which will raise the event + + The the object is located + The Local ID of the object + if true, a call to is + made immediately following the request + + + + + Select multiple objects. This will cause the to send us + an which will raise the event + + The the objects are located + An array containing the Local IDs of the objects + Should objects be deselected immediately after selection + + + + + Select multiple objects. This will cause the to send us + an which will raise the event + + The the objects are located + An array containing the Local IDs of the objects + + + + + Update the properties of an object + + The the object is located + The Local ID of the object + true to turn the objects physical property on + true to turn the objects temporary property on + true to turn the objects phantom property on + true to turn the objects cast shadows property on + + + + Update the properties of an object + + The the object is located + The Local ID of the object + true to turn the objects physical property on + true to turn the objects temporary property on + true to turn the objects phantom property on + true to turn the objects cast shadows property on + Type of the represetnation prim will have in the physics engine + Density - normal value 1000 + Friction - normal value 0.6 + Restitution - standard value 0.5 + Gravity multiplier - standar value 1.0 + + + + Sets the sale properties of a single object + + The the object is located + The Local ID of the object + One of the options from the enum + The price of the object + + + + Sets the sale properties of multiple objects + + The the objects are located + An array containing the Local IDs of the objects + One of the options from the enum + The price of the object + + + + Deselect a single object + + The the object is located + The Local ID of the object + + + + Deselect multiple objects. + + The the objects are located + An array containing the Local IDs of the objects + + + + Perform a click action on an object + + The the object is located + The Local ID of the object + + + + Perform a click action (Grab) on a single object + + The the object is located + The Local ID of the object + The texture coordinates to touch + The surface coordinates to touch + The face of the position to touch + The region coordinates of the position to touch + The surface normal of the position to touch (A normal is a vector perpindicular to the surface) + The surface binormal of the position to touch (A binormal is a vector tangen to the surface + pointing along the U direction of the tangent space + + + + Create (rez) a new prim object in a simulator + + A reference to the object to place the object in + Data describing the prim object to rez + Group ID that this prim will be set to, or UUID.Zero if you + do not want the object to be associated with a specific group + An approximation of the position at which to rez the prim + Scale vector to size this prim + Rotation quaternion to rotate this prim + Due to the way client prim rezzing is done on the server, + the requested position for an object is only close to where the prim + actually ends up. If you desire exact placement you'll need to + follow up by moving the object after it has been created. This + function will not set textures, light and flexible data, or other + extended primitive properties + + + + Create (rez) a new prim object in a simulator + + A reference to the object to place the object in + Data describing the prim object to rez + Group ID that this prim will be set to, or UUID.Zero if you + do not want the object to be associated with a specific group + An approximation of the position at which to rez the prim + Scale vector to size this prim + Rotation quaternion to rotate this prim + Specify the + Due to the way client prim rezzing is done on the server, + the requested position for an object is only close to where the prim + actually ends up. If you desire exact placement you'll need to + follow up by moving the object after it has been created. This + function will not set textures, light and flexible data, or other + extended primitive properties + + + + Rez a Linden tree + + A reference to the object where the object resides + The size of the tree + The rotation of the tree + The position of the tree + The Type of tree + The of the group to set the tree to, + or UUID.Zero if no group is to be set + true to use the "new" Linden trees, false to use the old + + + + Rez grass and ground cover + + A reference to the object where the object resides + The size of the grass + The rotation of the grass + The position of the grass + The type of grass from the enum + The of the group to set the tree to, + or UUID.Zero if no group is to be set + + + + Set the textures to apply to the faces of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The texture data to apply + + + + Set the textures to apply to the faces of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The texture data to apply + A media URL (not used) + + + + Set the Light data on an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A object containing the data to set + + + + Set the flexible data on an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A object containing the data to set + + + + Set the sculptie texture and data on an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A object containing the data to set + + + + Unset additional primitive parameters on an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The extra parameters to set + + + + Link multiple prims into a linkset + + A reference to the object where the objects reside + An array which contains the IDs of the objects to link + The last object in the array will be the root object of the linkset TODO: Is this true? + + + + Delink/Unlink multiple prims from a linkset + + A reference to the object where the objects reside + An array which contains the IDs of the objects to delink + + + + Change the rotation of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new rotation of the object + + + + Set the name of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A string containing the new name of the object + + + + Set the name of multiple objects + + A reference to the object where the objects reside + An array which contains the IDs of the objects to change the name of + An array which contains the new names of the objects + + + + Set the description of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + A string containing the new description of the object + + + + Set the descriptions of multiple objects + + A reference to the object where the objects reside + An array which contains the IDs of the objects to change the description of + An array which contains the new descriptions of the objects + + + + Attach an object to this avatar + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The point on the avatar the object will be attached + The rotation of the attached object + + + + Drop an attached object from this avatar + + A reference to the + object where the objects reside. This will always be the simulator the avatar is currently in + + The object's ID which is local to the simulator the object is in + + + + Detach an object from yourself + + A reference to the + object where the objects reside - // find out which animations being played are known animations and which are assets - foreach (Animation animation in e.Animations) + This will always be the simulator the avatar is currently in + + An array which contains the IDs of the objects to detach + + + + Change the position of an object, Will change position of entire linkset + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new position of the object + + + + Change the position of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new position of the object + if true, will change position of (this) child prim only, not entire linkset + + + + Change the Scale (size) of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new scale of the object + If true, will change scale of this prim only, not entire linkset + True to resize prims uniformly + + + + Change the Rotation of an object that is either a child or a whole linkset + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new scale of the object + If true, will change rotation of this prim only, not entire linkset + + + + Send a Multiple Object Update packet to change the size, scale or rotation of a primitive + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new rotation, size, or position of the target object + The flags from the Enum + + + + Deed an object (prim) to a group, Object must be shared with group which + can be accomplished with SetPermissions() + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The of the group to deed the object to + + + + Deed multiple objects (prims) to a group, Objects must be shared with group which + can be accomplished with SetPermissions() + + A reference to the object where the object resides + An array which contains the IDs of the objects to deed + The of the group to deed the object to + + + + Set the permissions on multiple objects + + A reference to the object where the objects reside + An array which contains the IDs of the objects to set the permissions on + The new Who mask to set + Which permission to modify + The new state of permission + + + + Request additional properties for an object + + A reference to the object where the object resides + + + + + Request additional properties for an object + + A reference to the object where the object resides + Absolute UUID of the object + Whether to require server acknowledgement of this request + + + + Set the ownership of a list of objects to the specified group + + A reference to the object where the objects reside + An array which contains the IDs of the objects to set the group id on + The Groups ID + + + + Update current URL of the previously set prim media + + UUID of the prim + Set current URL to this + Prim face number + Simulator in which prim is located + + + + Set object media + + UUID of the prim + Array the length of prims number of faces. Null on face indexes where there is + no media, on faces which contain the media + Simulatior in which prim is located + + + + Retrieve information about object media + + UUID of the primitive + Simulator where prim is located + Call this callback when done + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + A terse object update, used when a transformation matrix or + velocity/acceleration for an object changes but nothing else + (scale/position/rotation/acceleration/velocity) + + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + + + + + + + + + Setup construction data for a basic primitive shape + + Primitive shape to construct + Construction data that can be plugged into a + + + + + + + + + + + + + + + + + + + + Set the Shape data of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + Data describing the prim shape + + + + Set the Material data of an object + + A reference to the object where the object resides + The objects ID which is local to the simulator the object is in + The new material of the object + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Raised when the simulator sends us data containing + A , Foliage or Attachment + + + + + Raised when the simulator sends us data containing + additional information + + + + + Raised when the simulator sends us data containing + Primitive.ObjectProperties for an object we are currently tracking + + + Raised when the simulator sends us data containing + additional and details + + + + Raised when the simulator sends us data containing + updated information for an + + + Raised when the simulator sends us data containing + and movement changes + + + Raised when the simulator sends us data containing + updates to an Objects DataBlock + + + Raised when the simulator informs us an + or is no longer within view + + + Raised when the simulator informs us when a group of + or is no longer within view + + + Raised when the simulator sends us data containing + updated sit information for our + + + Raised when the simulator sends us data containing + purchase price information for a + + + Raised when the simulator sends us data containing + additional information + + + + + + Callback for getting object media data via CAP + + Indicates if the operation was succesfull + Object media version string + Array indexed on prim face of media entry data + + + Provides data for the event + The event occurs when the simulator sends + an containing a Primitive, Foliage or Attachment data + Note 1: The event will not be raised when the object is an Avatar + Note 2: It is possible for the to be + raised twice for the same object if for example the primitive moved to a new simulator, then returned to the current simulator or + if an Avatar crosses the border into a new simulator and returns to the current simulator + + + The following code example uses the , , and + properties to display new Primitives and Attachments on the window. + + // Subscribe to the event that gives us prim and foliage information + Client.Objects.ObjectUpdate += Objects_ObjectUpdate; + + + private void Objects_ObjectUpdate(object sender, PrimEventArgs e) + { + Console.WriteLine("Primitive {0} {1} in {2} is an attachment {3}", e.Prim.ID, e.Prim.LocalID, e.Simulator.Name, e.IsAttachment); + } + + + + + + + + + Construct a new instance of the PrimEventArgs class + + The simulator the object originated from + The Primitive + The simulator time dilation + The prim was not in the dictionary before this update + true if the primitive represents an attachment to an agent + + + Get the simulator the originated from + + + Get the details + + + true if the did not exist in the dictionary before this update (always true if object tracking has been disabled) + + + true if the is attached to an + + + Get the simulator Time Dilation + + + Provides data for the event + The event occurs when the simulator sends + an containing Avatar data + Note 1: The event will not be raised when the object is an Avatar + Note 2: It is possible for the to be + raised twice for the same avatar if for example the avatar moved to a new simulator, then returned to the current simulator + + + The following code example uses the property to make a request for the top picks + using the method in the class to display the names + of our own agents picks listings on the window. + + // subscribe to the AvatarUpdate event to get our information + Client.Objects.AvatarUpdate += Objects_AvatarUpdate; + Client.Avatars.AvatarPicksReply += Avatars_AvatarPicksReply; + + private void Objects_AvatarUpdate(object sender, AvatarUpdateEventArgs e) + { + // we only want our own data + if (e.Avatar.LocalID == Client.Self.LocalID) + { + // Unsubscribe from the avatar update event to prevent a loop + // where we continually request the picks every time we get an update for ourselves + Client.Objects.AvatarUpdate -= Objects_AvatarUpdate; + // make the top picks request through AvatarManager + Client.Avatars.RequestAvatarPicks(e.Avatar.ID); + } + } + + private void Avatars_AvatarPicksReply(object sender, AvatarPicksReplyEventArgs e) + { + // we'll unsubscribe from the AvatarPicksReply event since we now have the data + // we were looking for + Client.Avatars.AvatarPicksReply -= Avatars_AvatarPicksReply; + // loop through the dictionary and extract the names of the top picks from our profile + foreach (var pickName in e.Picks.Values) { - if (systemAnimations.ContainsKey(animation.AnimationID)) - { - Console.WriteLine("{0} is playing {1} ({2}) sequence {3}", e.AvatarID, - systemAnimations[animation.AnimationID], animation.AnimationSequence); - } - else - { - Console.WriteLine("{0} is playing {1} (Asset) sequence {2}", e.AvatarID, - animation.AnimationID, animation.AnimationSequence); - } + Console.WriteLine(pickName); } } + + - + - Construct a new instance of the AvatarAnimationEventArgs class + Construct a new instance of the AvatarUpdateEventArgs class - The ID of the agent - The list of animations to start + The simulator the packet originated from + The data + The simulator time dilation + The avatar was not in the dictionary before this update - - Get the ID of the agent + + Get the simulator the object originated from - - Get the list of animations to start + + Get the data - - Provides data for the event - The event occurs when the simulator sends - the appearance data for an avatar + + Get the simulator time dilation + + + true if the did not exist in the dictionary before this update (always true if avatar tracking has been disabled) + + + Provides additional primitive data for the event + The event occurs when the simulator sends + an containing additional details for a Primitive, Foliage data or Attachment data + The event is also raised when a request is + made. + - The following code example uses the and - properties to display the selected shape of an avatar on the window. - - // subscribe to the event - Client.Avatars.AvatarAppearance += Avatars_AvatarAppearance; - - // handle the data when the event is raised - void Avatars_AvatarAppearance(object sender, AvatarAppearanceEventArgs e) + The following code example uses the , and + + properties to display new attachments and send a request for additional properties containing the name of the + attachment then display it on the window. + + // Subscribe to the event that provides additional primitive details + Client.Objects.ObjectProperties += Objects_ObjectProperties; + + // handle the properties data that arrives + private void Objects_ObjectProperties(object sender, ObjectPropertiesEventArgs e) { - Console.WriteLine("The Agent {0} is using a {1} shape.", e.AvatarID, (e.VisualParams[31] > 0) : "male" ? "female") - } + Console.WriteLine("Primitive Properties: {0} Name is {1}", e.Properties.ObjectID, e.Properties.Name); + } - + - Construct a new instance of the AvatarAppearanceEventArgs class + Construct a new instance of the ObjectPropertiesEventArgs class - The simulator request was from - The ID of the agent - true of the agent is a trial account - The default agent texture - The agents appearance layer textures - The for the agent + The simulator the object is located + The primitive Properties - - Get the Simulator this request is from of the agent + + Get the simulator the object is located - - Get the ID of the agent + + Get the primitive properties - - true if the agent is a trial account + + Provides additional primitive data for the event + The event occurs when the simulator sends + an containing additional details for a Primitive or Foliage data that is currently + being tracked in the dictionary + The event is also raised when a request is + made and is enabled + - - Get the default agent texture - - - Get the agents appearance layer textures - - - Get the for the agent - - - Version of the appearance system used. - Value greater than 0 indicates that server side baking is used - - - Version of the Current Outfit Folder the appearance is based on - - - Appearance flags, introduced with server side baking, currently unused - - - Represents the interests from the profile of an agent - - - Get the ID of the agent - - - The properties of an agent - - - Get the ID of the agent - - - Get the ID of the agent - - - Get the ID of the agent - - - Get the ID of the avatar - - + - Event args class for display name notification messages - + Construct a new instance of the ObjectPropertiesUpdatedEvenrArgs class + + The simulator the object is located + The Primitive + The primitive Properties - - - A linkset asset, containing a parent primitive and zero or more children - + + Get the primitive details - - - Base class for all Asset types - + + Provides additional primitive data, permissions and sale info for the event + The event occurs when the simulator sends + an containing additional details for a Primitive, Foliage data or Attachment. This includes + Permissions, Sale info, and other basic details on an object + The event is also raised when a request is + made, the viewer equivalent is hovering the mouse cursor over an object + - - A byte array containing the raw asset data + + Get the simulator the object is located - - True if the asset it only stored on the server temporarily - - - A unique ID - - - - Construct a new Asset object - - - - - Construct a new Asset object - - A unique specific to this asset - A byte array containing the raw asset data - - - - Regenerates the AssetData byte array from the properties - of the derived class. - - - - - Decodes the AssetData, placing it in appropriate properties of the derived - class. - - True if the asset decoding succeeded, otherwise false - - - The assets unique ID - - - - The "type" of asset, Notecard, Animation, etc - - - - Initializes a new instance of an AssetPrim object - - - - Initializes a new instance of an AssetPrim object - - A unique specific to this asset - A byte array containing the raw asset data - - - - - - - - - - - - - - Override the base classes AssetType - - - - Only used internally for XML serialization/deserialization - - - - - The deserialized form of a single primitive in a linkset asset - - - - Describes tasks returned in LandStatReply - - - - Estate level administration and utilities - - - - Textures for each of the four terrain height levels - - - Upper/lower texture boundaries for each corner of the sim - - - - Constructor for EstateTools class - - - - - The event subscribers. null if no subcribers - - - Raises the TopCollidersReply event - A TopCollidersReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the TopScriptsReply event - A TopScriptsReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the EstateUsersReply event - A EstateUsersReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the EstateGroupsReply event - A EstateGroupsReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the EstateManagersReply event - A EstateManagersReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the EstateBansReply event - A EstateBansReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the EstateCovenantReply event - A EstateCovenantReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the EstateUpdateInfoReply event - A EstateUpdateInfoReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - - Requests estate information such as top scripts and colliders - - - - - - - - Requests estate settings, including estate manager and access/ban lists - - - Requests the "Top Scripts" list for the current region - - - Requests the "Top Colliders" list for the current region - - - - Set several estate specific configuration variables - - The Height of the waterlevel over the entire estate. Defaults to 20 - The maximum height change allowed above the baked terrain. Defaults to 4 - The minimum height change allowed below the baked terrain. Defaults to -4 - true to use - if True forces the sun position to the position in SunPosition - The current position of the sun on the estate, or when FixedSun is true the static position - the sun will remain. 6.0 = Sunrise, 30.0 = Sunset - - - - Request return of objects owned by specified avatar - - The Agents owning the primitives to return - specify the coverage and type of objects to be included in the return - true to perform return on entire estate - - + - - - - - Used for setting and retrieving various estate panel settings - - EstateOwnerMessage Method field - List of parameters to include - - - - Kick an avatar from an estate - - Key of Agent to remove - - - - Ban an avatar from an estate - Key of Agent to remove - Ban user from this estate and all others owned by the estate owner - - - Unban an avatar from an estate - Key of Agent to remove - /// Unban user from this estate and all others owned by the estate owner - - - - Send a message dialog to everyone in an entire estate - - Message to send all users in the estate - - - - Send a message dialog to everyone in a simulator - - Message to send all users in the simulator - - - - Send an avatar back to their home location - - Key of avatar to send home - - - - Begin the region restart process - - - - - Cancels a region restart - - - - Estate panel "Region" tab settings - - - Estate panel "Debug" tab settings - - - Used for setting the region's terrain textures for its four height levels - - - - - - - Used for setting sim terrain texture heights - - - Requests the estate covenant - - - - Upload a terrain RAW file - - A byte array containing the encoded terrain data - The name of the file being uploaded - The Id of the transfer request - - - - Teleports all users home in current Estate - - - - - Remove estate manager - Key of Agent to Remove - removes manager to this estate and all others owned by the estate owner - - - - Add estate manager - Key of Agent to Add - Add agent as manager to this estate and all others owned by the estate owner - - - - Add's an agent to the estate Allowed list - Key of Agent to Add - Add agent as an allowed reisdent to All estates if true - - - - Removes an agent from the estate Allowed list - Key of Agent to Remove - Removes agent as an allowed reisdent from All estates if true - - - - - Add's a group to the estate Allowed list - Key of Group to Add - Add Group as an allowed group to All estates if true - - - - - Removes a group from the estate Allowed list - Key of Group to Remove - Removes Group as an allowed Group from All estates if true - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Used in the ReportType field of a LandStatRequest - - - Used by EstateOwnerMessage packets - - - Used by EstateOwnerMessage packets - - - - - - - - No flags set - - - Only return targets scripted objects - - - Only return targets objects if on others land - - - Returns target's scripted objects and objects on other parcels - - - Ground texture settings for each corner of the region - - - Used by GroundTextureHeightSettings - - - The high and low texture thresholds for each corner of the sim - - - Raised on LandStatReply when the report type is for "top colliders" - - - Construct a new instance of the TopCollidersReplyEventArgs class - The number of returned items in LandStatReply - Dictionary of Object UUIDs to tasks returned in LandStatReply - - - - The number of returned items in LandStatReply - - - - - A Dictionary of Object UUIDs to tasks returned in LandStatReply - - - - Raised on LandStatReply when the report type is for "top Scripts" - - - Construct a new instance of the TopScriptsReplyEventArgs class - The number of returned items in LandStatReply - Dictionary of Object UUIDs to tasks returned in LandStatReply - - - - The number of scripts returned in LandStatReply - - - - - A Dictionary of Object UUIDs to tasks returned in LandStatReply - - - - Returned, along with other info, upon a successful .RequestInfo() - - - Construct a new instance of the EstateBansReplyEventArgs class - The estate's identifier on the grid - The number of returned items in LandStatReply - User UUIDs banned - - - - The identifier of the estate - - - - - The number of returned itmes - - - - - List of UUIDs of Banned Users - - - - Returned, along with other info, upon a successful .RequestInfo() - - - Construct a new instance of the EstateUsersReplyEventArgs class - The estate's identifier on the grid - The number of users - Allowed users UUIDs - - - - The identifier of the estate - - - - - The number of returned items - - - - - List of UUIDs of Allowed Users - - - - Returned, along with other info, upon a successful .RequestInfo() - - - Construct a new instance of the EstateGroupsReplyEventArgs class - The estate's identifier on the grid - The number of Groups - Allowed Groups UUIDs - - - - The identifier of the estate - - - - - The number of returned items - - - - - List of UUIDs of Allowed Groups - - - - Returned, along with other info, upon a successful .RequestInfo() - - - Construct a new instance of the EstateManagersReplyEventArgs class - The estate's identifier on the grid - The number of Managers - Managers UUIDs - - - - The identifier of the estate - - - - - The number of returned items - - - - - List of UUIDs of the Estate's Managers - - - - Returned, along with other info, upon a successful .RequestInfo() - - - Construct a new instance of the EstateCovenantReplyEventArgs class - The Covenant ID - The timestamp - The estate's name - The Estate Owner's ID (can be a GroupID) - - - - The Covenant - - - - - The timestamp - - - - - The Estate name - - - - - The Estate Owner's ID (can be a GroupID) - - - - Returned, along with other info, upon a successful .RequestInfo() - - - Construct a new instance of the EstateUpdateInfoReplyEventArgs class - The estate's name - The Estate Owners ID (can be a GroupID) - The estate's identifier on the grid - - - - - The estate's name - - - - - The Estate Owner's ID (can be a GroupID) - - - - - The identifier of the estate on the grid - - - + + + Provides primitive data containing updated location, velocity, rotation, textures for the event + The event occurs when the simulator sends updated location, velocity, rotation, etc + + + + Get the simulator the object is located + + + Get the primitive details + + + + + + + + + + + + + + Get the simulator the object is located + + + Get the primitive details + + + + + + + + + + + + + + + Provides notification when an Avatar, Object or Attachment is DeRezzed or moves out of the avatars view for the + event + + + Get the simulator the object is located + + + The LocalID of the object + + + Provides notification when an Avatar, Object or Attachment is DeRezzed or moves out of the avatars view for the + event + + + Get the simulator the object is located + + + The LocalID of the object + + + + Provides updates sit position data + + + + Get the simulator the object is located + + + + + + + + + + + + + + + + + Get the simulator the object is located + + + + + + + + + + + + + Indicates if the operation was successful + + + + + Media version string + + + + + Array of media entries indexed by face number + + + + + Set when simulator sends us infomation on primitive's physical properties + + + + Simulator where the message originated + + + Updated physical properties + + + + Constructor + + Simulator where the message originated + Updated physical properties + Manager class for our own avatar @@ -4036,111 +4534,6 @@ Returns the global grid position of the avatar - - - Used to specify movement actions for your agent - - - - Empty flag - - - Move Forward (SL Keybinding: W/Up Arrow) - - - Move Backward (SL Keybinding: S/Down Arrow) - - - Move Left (SL Keybinding: Shift-(A/Left Arrow)) - - - Move Right (SL Keybinding: Shift-(D/Right Arrow)) - - - Not Flying: Jump/Flying: Move Up (SL Keybinding: E) - - - Not Flying: Croutch/Flying: Move Down (SL Keybinding: C) - - - Unused - - - Unused - - - Unused - - - Unused - - - ORed with AGENT_CONTROL_AT_* if the keyboard is being used - - - ORed with AGENT_CONTROL_LEFT_* if the keyboard is being used - - - ORed with AGENT_CONTROL_UP_* if the keyboard is being used - - - Fly - - - - - - Finish our current animation - - - Stand up from the ground or a prim seat - - - Sit on the ground at our current location - - - Whether mouselook is currently enabled - - - Legacy, used if a key was pressed for less than a certain amount of time - - - Legacy, used if a key was pressed for less than a certain amount of time - - - Legacy, used if a key was pressed for less than a certain amount of time - - - Legacy, used if a key was pressed for less than a certain amount of time - - - Legacy, used if a key was pressed for less than a certain amount of time - - - Legacy, used if a key was pressed for less than a certain amount of time - - - - - - - - - Set when the avatar is idled or set to away. Note that the away animation is - activated separately from setting this flag - - - - - - - - - - - - - Agent movement and camera control @@ -4417,6 +4810,111 @@ + + + Used to specify movement actions for your agent + + + + Empty flag + + + Move Forward (SL Keybinding: W/Up Arrow) + + + Move Backward (SL Keybinding: S/Down Arrow) + + + Move Left (SL Keybinding: Shift-(A/Left Arrow)) + + + Move Right (SL Keybinding: Shift-(D/Right Arrow)) + + + Not Flying: Jump/Flying: Move Up (SL Keybinding: E) + + + Not Flying: Croutch/Flying: Move Down (SL Keybinding: C) + + + Unused + + + Unused + + + Unused + + + Unused + + + ORed with AGENT_CONTROL_AT_* if the keyboard is being used + + + ORed with AGENT_CONTROL_LEFT_* if the keyboard is being used + + + ORed with AGENT_CONTROL_UP_* if the keyboard is being used + + + Fly + + + + + + Finish our current animation + + + Stand up from the ground or a prim seat + + + Sit on the ground at our current location + + + Whether mouselook is currently enabled + + + Legacy, used if a key was pressed for less than a certain amount of time + + + Legacy, used if a key was pressed for less than a certain amount of time + + + Legacy, used if a key was pressed for less than a certain amount of time + + + Legacy, used if a key was pressed for less than a certain amount of time + + + Legacy, used if a key was pressed for less than a certain amount of time + + + Legacy, used if a key was pressed for less than a certain amount of time + + + + + + + + + Set when the avatar is idled or set to away. Note that the away animation is + activated separately from setting this flag + + + + + + + + + + + + + Called once attachment resource usage information has been collected @@ -4424,6 +4922,1588 @@ Indicates if operation was successfull Attachment resource usage information + + + Represents a single Voice Session to the Vivox service. + + + + + Close this session. + + + + + Look up an existing Participants in this session + + + + + + + Create a Session + Sessions typically represent a connection to a media session with one or more + participants. This is used to generate an ‘outbound’ call to another user or + channel. The specifics depend on the media types involved. A session handle is + required to control the local user functions within the session (or remote + users if the current account has rights to do so). Currently creating a + session automatically connects to the audio media, there is no need to call + Session.Connect at this time, this is reserved for future use. + + Handle returned from successful Connector ‘create’ request + This is the URI of the terminating point of the session (ie who/what is being called) + This is the display name of the entity being called (user or channel) + Only needs to be supplied when the target URI is password protected + This indicates the format of the password as passed in. This can either be + “ClearText” or “SHA1UserName”. If this element does not exist, it is assumed to be “ClearText”. If it is + “SHA1UserName”, the password as passed in is the SHA1 hash of the password and username concatenated together, + then base64 encoded, with the final “=” character stripped off. + + + + + + + Used to accept a call + + SessionHandle such as received from SessionNewEvent + "default" + + + + + This command is used to start the audio render process, which will then play + the passed in file through the selected audio render device. This command + should not be issued if the user is on a call. + + The fully qualified path to the sound file. + True if the file is to be played continuously and false if it is should be played once. + + + + + This command is used to stop the audio render process. + + The fully qualified path to the sound file issued in the start render command. + + + + + This is used to ‘end’ an established session (i.e. hang-up or disconnect). + + Handle returned from successful Session ‘create’ request or a SessionNewEvent + + + + + Set the combined speaking and listening position in 3D space. + + Handle returned from successful Session ‘create’ request or a SessionNewEvent + Speaking position + Listening position + + + + + Set User Volume for a particular user. Does not affect how other users hear that user. + + Handle returned from successful Session ‘create’ request or a SessionNewEvent + + The level of the audio, a number between -100 and 100 where 0 represents ‘normal’ speaking volume + + + + + Start up the Voice service. + + + + + Handle miscellaneous request status + + + + ///If something goes wrong, we log it. + + + + Cleanup oject resources + + + + + Request voice cap when changing regions + + + + + Handle a change in session state + + + + + Close a voice session + + + + + + Locate a Session context from its handle + + Creates the session context if it does not exist. + + + + Handle completion of main voice cap request. + + + + + + + + Daemon has started so connect to it. + + + + + The daemon TCP connection is open. + + + + + Handle creation of the Connector. + + + + + Handle response to audio output device query + + + + + Handle response to audio input device query + + + + + Set voice channel for new parcel + + + + + + Request info from a parcel capability Uri. + + + + + + Receive parcel voice cap + + + + + + + + Tell Vivox where we are standing + + This has to be called when we move or turn. + + + + Start and stop updating out position. + + + + + + This is used to login a specific user account(s). It may only be called after + Connector initialization has completed successfully + + Handle returned from successful Connector ‘create’ request + User's account name + User's account password + Values may be “AutoAnswer” or “VerifyAnswer” + "" + This is an integer that specifies how often + the daemon will send participant property events while in a channel. If this is not set + the default will be “on state change”, which means that the events will be sent when + the participant starts talking, stops talking, is muted, is unmuted. + The valid values are: + 0 – Never + 5 – 10 times per second + 10 – 5 times per second + 50 – 1 time per second + 100 – on participant state change (this is the default) + false + + + + + This is used to logout a user session. It should only be called with a valid AccountHandle. + + Handle returned from successful Connector ‘login’ request + + + + + This is used to initialize and stop the Connector as a whole. The Connector + Create call must be completed successfully before any other requests are made + (typically during application initialization). The shutdown should be called + when the application is shutting down to gracefully release resources + + A string value indicting the Application name + URL for the management server + LoggingSettings + + + + + + Shutdown Connector -- Should be called when the application is shutting down + to gracefully release resources + + Handle returned from successful Connector ‘create’ request + + + + Mute or unmute the microphone + + Handle returned from successful Connector ‘create’ request + true (mute) or false (unmute) + + + + Mute or unmute the speaker + + Handle returned from successful Connector ‘create’ request + true (mute) or false (unmute) + + + + Set microphone volume + + Handle returned from successful Connector ‘create’ request + The level of the audio, a number between -100 and 100 where + 0 represents ‘normal’ speaking volume + + + + Set local speaker volume + + Handle returned from successful Connector ‘create’ request + The level of the audio, a number between -100 and 100 where + 0 represents ‘normal’ speaking volume + + + + This is used to get a list of audio devices that can be used for capture (input) of voice. + + + + + + This is used to get a list of audio devices that can be used for render (playback) of voice. + + + + + This command is used to select the render device. + + The name of the device as returned by the Aux.GetRenderDevices command. + + + + This command is used to select the capture device. + + The name of the device as returned by the Aux.GetCaptureDevices command. + + + + This command is used to start the audio capture process which will cause + AuxAudioProperty Events to be raised. These events can be used to display a + microphone VU meter for the currently selected capture device. This command + should not be issued if the user is on a call. + + (unused but required) + + + + + This command is used to stop the audio capture process. + + + + + + This command is used to set the mic volume while in the audio tuning process. + Once an acceptable mic level is attained, the application must issue a + connector set mic volume command to have that level be used while on voice + calls. + + the microphone volume (-100 to 100 inclusive) + + + + + This command is used to set the speaker volume while in the audio tuning + process. Once an acceptable speaker level is attained, the application must + issue a connector set speaker volume command to have that level be used while + on voice calls. + + the speaker volume (-100 to 100 inclusive) + + + + + Starts a thread that keeps the daemon running + + + + + + + Stops the daemon and the thread keeping it running + + + + + + + + + + + + + List of audio input devices + + + + + List of audio output devices + + + + + Set audio test mode + + + + + Event for most mundane request reposnses. + + + + Response to Connector.Create request + + + Response to Aux.GetCaptureDevices request + + + Response to Aux.GetRenderDevices request + + + Audio Properties Events are sent after audio capture is started. + These events are used to display a microphone VU meter + + + Response to Account.Login request + + + This event message is sent whenever the login state of the + particular Account has transitioned from one value to another + + + Enable logging + + + The folder where any logs will be created + + + This will be prepended to beginning of each log file + + + The suffix or extension to be appended to each log file + + + + 0: NONE - No logging + 1: ERROR - Log errors only + 2: WARNING - Log errors and warnings + 3: INFO - Log errors, warnings and info + 4: DEBUG - Log errors, warnings, info and debug + + + + + Constructor for default logging settings + + + + Audio Properties Events are sent after audio capture is started. These events are used to display a microphone VU meter + + + + Particle system specific enumerators, flags and methods. + + + + + + + + + + + + + + + + + + + + + + Foliage type for this primitive. Only applicable if this + primitive is foliage + + + Unknown + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Identifies the owner if audio or a particle system is + active + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Objects physics engine propertis + + + Extra data about primitive + + + Indicates if prim is attached to an avatar + + + Number of clients referencing this prim + + + + Default constructor + + + + + Packs PathTwist, PathTwistBegin, PathRadiusOffset, and PathSkew + parameters in to signed eight bit values + + Floating point parameter to pack + Signed eight bit value containing the packed parameter + + + + Unpacks PathTwist, PathTwistBegin, PathRadiusOffset, and PathSkew + parameters from signed eight bit integers to floating point values + + Signed eight bit value to unpack + Unpacked floating point value + + + + + + + + + + Current version of the media data for the prim + + + + + Array of media entries indexed by face number + + + + + + + Uses basic heuristics to estimate the primitive shape + + + + Parameters used to construct a visual representation of a primitive + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Calculdates hash code for prim construction data + + The has + + + Attachment point to an avatar + + + + + + + + + + + + + + + + Information on the flexible properties of a primitive + + + + + + + + + + + + + + + + + + + + + + + Default constructor + + + + + + + + + + + + + + + + + + + + + + + + Information on the light properties of a primitive + + + + + + + + + + + + + + + + + + + + Default constructor + + + + + + + + + + + + + + + + + + + + + + + + Information on the light properties of a primitive as texture map + + + + + + + + + + + Default constructor + + + + + + + + + + + + + + + + + + + + + + + + Information on the sculpt properties of a sculpted primitive + + + + + Default constructor + + + + + + + + + + + + Render inside out (inverts the normals). + + + + + Render an X axis mirror of the sculpty. + + + + + Extended properties to describe an object + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Default constructor + + + + + Set the properties that are set in an ObjectPropertiesFamily packet + + that has + been partially filled by an ObjectPropertiesFamily packet + + + + Describes physics attributes of the prim + + + + Primitive's local ID + + + Density (1000 for normal density) + + + Friction + + + Gravity multiplier (1 for normal gravity) + + + Type of physics representation of this primitive in the simulator + + + Restitution + + + + Creates PhysicsProperties from OSD + + OSDMap with incoming data + Deserialized PhysicsProperties object + + + + Serializes PhysicsProperties to OSD + + OSDMap with serialized PhysicsProperties data + + + + Texture animation mode + + + + Disable texture animation + + + Enable texture animation + + + Loop when animating textures + + + Animate in reverse direction + + + Animate forward then reverse + + + Slide texture smoothly instead of frame-stepping + + + Rotate texture instead of using frames + + + Scale texture instead of using frames + + + + A single textured face. Don't instantiate this class yourself, use the + methods in TextureEntry + + + + + Contains the definition for individual faces + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + In the future this will specify whether a webpage is + attached to this face + + + + + + + + + + Represents all of the texturable faces for an object + + Grid objects have infinite faces, with each face + using the properties of the default face unless set otherwise. So if + you have a TextureEntry with a default texture uuid of X, and face 18 + has a texture UUID of Y, every face would be textured with X except for + face 18 that uses Y. In practice however, primitives utilize a maximum + of nine faces + + + + + + + + + + Constructor that takes a default texture UUID + + Texture UUID to use as the default texture + + + + Constructor that takes a TextureEntryFace for the + default face + + Face to use as the default face + + + + Constructor that creates the TextureEntry class from a byte array + + Byte array containing the TextureEntry field + Starting position of the TextureEntry field in + the byte array + Length of the TextureEntry field, in bytes + + + + This will either create a new face if a custom face for the given + index is not defined, or return the custom face for that index if + it already exists + + The index number of the face to create or + retrieve + A TextureEntryFace containing all the properties for that + face + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Controls the texture animation of a particular prim + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Complete structure for the particle system + + + + Particle Flags + There appears to be more data packed in to this area + for many particle systems. It doesn't appear to be flag values + and serialization breaks unless there is a flag for every + possible bit so it is left as an unsigned integer + + + pattern of particles + + + A representing the maximimum age (in seconds) particle will be displayed + Maximum value is 30 seconds + + + A representing the number of seconds, + from when the particle source comes into view, + or the particle system's creation, that the object will emits particles; + after this time period no more particles are emitted + + + A in radians that specifies where particles will not be created + + + A in radians that specifies where particles will be created + + + A representing the number of seconds between burts. + + + A representing the number of meters + around the center of the source where particles will be created. + + + A representing in seconds, the minimum speed between bursts of new particles + being emitted + + + A representing in seconds the maximum speed of new particles being emitted. + + + A representing the maximum number of particles emitted per burst + + + A which represents the velocity (speed) from the source which particles are emitted + + + A which represents the Acceleration from the source which particles are emitted + + + The Key of the texture displayed on the particle + + + The Key of the specified target object or avatar particles will follow + + + Flags of particle from + + + Max Age particle system will emit particles for + + + The the particle has at the beginning of its lifecycle + + + The the particle has at the ending of its lifecycle + + + A that represents the starting X size of the particle + Minimum value is 0, maximum value is 4 + + + A that represents the starting Y size of the particle + Minimum value is 0, maximum value is 4 + + + A that represents the ending X size of the particle + Minimum value is 0, maximum value is 4 + + + A that represents the ending Y size of the particle + Minimum value is 0, maximum value is 4 + + + A that represents the start glow value + Minimum value is 0, maximum value is 1 + + + A that represents the end glow value + Minimum value is 0, maximum value is 1 + + + OpenGL blend function to use at particle source + + + OpenGL blend function to use at particle destination + + + + Can this particle system be packed in a legacy compatible way + + True if the particle system doesn't use new particle system features + + + + Decodes a byte[] array into a ParticleSystem Object + + ParticleSystem object + Start position for BitPacker + + + + Generate byte[] array from particle data + + Byte array + + + + Particle source pattern + + + + None + + + Drop particles from source position with no force + + + "Explode" particles in all directions + + + Particles shoot across a 2D area + + + Particles shoot across a 3D Cone + + + Inverse of AngleCone (shoot particles everywhere except the 3D cone defined + + + + Particle Data Flags + + + + None + + + Interpolate color and alpha from start to end + + + Interpolate scale from start to end + + + Bounce particles off particle sources Z height + + + velocity of particles is dampened toward the simulators wind + + + Particles follow the source + + + Particles point towards the direction of source's velocity + + + Target of the particles + + + Particles are sent in a straight line + + + Particles emit a glow + + + used for point/grab/touch + + + continuous ribbon particle + + + particle data contains glow + + + particle data contains blend functions + + + + Particle Flags Enum + + + + None + + + Acceleration and velocity for particles are + relative to the object rotation + + + Particles use new 'correct' angle parameters + + + + Return a decoded capabilities message as a strongly typed object + + A string containing the name of the capabilities message key + An to decode + A strongly typed object containing the decoded information from the capabilities message, or null + if no existing Message object exists for the specified event + + + + Type of gesture step + + + + + Base class for gesture steps + + + + + Retururns what kind of gesture step this is + + + + + Describes animation step of a gesture + + + + + If true, this step represents start of animation, otherwise animation stop + + + + + Animation asset + + + + + Animation inventory name + + + + + Returns what kind of gesture step this is + + + + + Describes sound step of a gesture + + + + + Sound asset + + + + + Sound inventory name + + + + + Returns what kind of gesture step this is + + + + + Describes sound step of a gesture + + + + + Text to output in chat + + + + + Returns what kind of gesture step this is + + + + + Describes sound step of a gesture + + + + + If true in this step we wait for all animations to finish + + + + + If true gesture player should wait for the specified amount of time + + + + + Time in seconds to wait if WaitForAnimation is false + + + + + Returns what kind of gesture step this is + + + + + Describes the final step of a gesture + + + + + Returns what kind of gesture step this is + + + + + Represents a sequence of animations, sounds, and chat actions + + + + + Base class for all Asset types + + + + A byte array containing the raw asset data + + + True if the asset it only stored on the server temporarily + + + A unique ID + + + + Construct a new Asset object + + + + + Construct a new Asset object + + A unique specific to this asset + A byte array containing the raw asset data + + + + Regenerates the AssetData byte array from the properties + of the derived class. + + + + + Decodes the AssetData, placing it in appropriate properties of the derived + class. + + True if the asset decoding succeeded, otherwise false + + + The assets unique ID + + + + The "type" of asset, Notecard, Animation, etc + + + + + Keyboard key that triggers the gestyre + + + + + Modifier to the trigger key + + + + + String that triggers playing of the gesture sequence + + + + + Text that replaces trigger in chat once gesture is triggered + + + + + Sequence of gesture steps + + + + + Constructs guesture asset + + + + + Constructs guesture asset + + A unique specific to this asset + A byte array containing the raw asset data + + + + Encodes gesture asset suitable for uplaod + + + + + Decodes gesture assset into play sequence + + true if the asset data was decoded successfully + + + + Returns asset type + + Represents an that can be worn on an avatar @@ -4504,6 +6584,14507 @@ Override the base classes AssetType + + + Temporary code to produce a tar archive in tar v7 format + + + + + Binary writer for the underlying stream + + + + + Write a directory entry to the tar archive. We can only handle one path level right now! + + + + + + Write a file to the tar archive + + + + + + + Write a file to the tar archive + + + + + + + Finish writing the raw tar archive data to a stream. The stream will be closed on completion. + + + + + Write a particular entry + + + + + + + + Temporary code to do the bare minimum required to read a tar archive for our purposes + + + + + Binary reader for the underlying stream + + + + + Used to trim off null chars + + + + + Used to trim off space chars + + + + + Generate a tar reader which reads from the given stream. + + + + + + Read the next entry in the tar file. + + + + the data for the entry. Returns null if there are no more entries + + + + Read the next 512 byte chunk of data as a tar header. + + A tar header struct. null if we have reached the end of the archive. + + + + Read data following a header + + + + + + + Convert octal bytes to a decimal representation + + + + + + + + + Static helper functions and global variables + + + + This header flag signals that ACKs are appended to the packet + + + This header flag signals that this packet has been sent before + + + This header flags signals that an ACK is expected for this packet + + + This header flag signals that the message is compressed using zerocoding + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Given an X/Y location in absolute (grid-relative) terms, a region + handle is returned along with the local X/Y location in that region + + The absolute X location, a number such as + 255360.35 + The absolute Y location, a number such as + 255360.35 + The sim-local X position of the global X + position, a value from 0.0 to 256.0 + The sim-local Y position of the global Y + position, a value from 0.0 to 256.0 + A 64-bit region handle that can be used to teleport to + + + + Converts a floating point number to a terse string format used for + transmitting numbers in wearable asset files + + Floating point number to convert to a string + A terse string representation of the input number + + + + Convert a variable length field (byte array) to a string, with a + field name prepended to each line of the output + + If the byte array has unprintable characters in it, a + hex dump will be written instead + The StringBuilder object to write to + The byte array to convert to a string + A field name to prepend to each line of output + + + + Decode a zerocoded byte array, used to decompress packets marked + with the zerocoded flag + + Any time a zero is encountered, the next byte is a count + of how many zeroes to expand. One zero is encoded with 0x00 0x01, + two zeroes is 0x00 0x02, three zeroes is 0x00 0x03, etc. The + first four bytes are copied directly to the output buffer. + + The byte array to decode + The length of the byte array to decode. This + would be the length of the packet up to (but not including) any + appended ACKs + The output byte array to decode to + The length of the output buffer + + + + Encode a byte array with zerocoding. Used to compress packets marked + with the zerocoded flag. Any zeroes in the array are compressed down + to a single zero byte followed by a count of how many zeroes to expand + out. A single zero becomes 0x00 0x01, two zeroes becomes 0x00 0x02, + three zeroes becomes 0x00 0x03, etc. The first four bytes are copied + directly to the output buffer. + + The byte array to encode + The length of the byte array to encode + The output byte array to encode to + The length of the output buffer + + + + Calculates the CRC (cyclic redundancy check) needed to upload inventory. + + Creation date + Sale type + Inventory type + Type + Asset ID + Group ID + Sale price + Owner ID + Creator ID + Item ID + Folder ID + Everyone mask (permissions) + Flags + Next owner mask (permissions) + Group mask (permissions) + Owner mask (permissions) + The calculated CRC + + + + Attempts to load a file embedded in the assembly + + The filename of the resource to load + A Stream for the requested file, or null if the resource + was not successfully loaded + + + + Attempts to load a file either embedded in the assembly or found in + a given search path + + The filename of the resource to load + An optional path that will be searched if + the asset is not found embedded in the assembly + A Stream for the requested file, or null if the resource + was not successfully loaded + + + + Converts a list of primitives to an object that can be serialized + with the LLSD system + + Primitives to convert to a serializable object + An object that can be serialized with LLSD + + + + Deserializes OSD in to a list of primitives + + Structure holding the serialized primitive list, + must be of the SDMap type + A list of deserialized primitives + + + + Converts a struct or class object containing fields only into a key value separated string + + The struct object + A string containing the struct fields as the keys, and the field value as the value separated + + + // Add the following code to any struct or class containing only fields to override the ToString() + // method to display the values of the passed object + + /// Print the struct data as a string + ///A string containing the field name, and field value + public override string ToString() + { + return Helpers.StructToString(this); + } + + + + + + Passed to Logger.Log() to identify the severity of a log entry + + + + No logging information will be output + + + Non-noisy useful information, may be helpful in + debugging a problem + + + A non-critical error occurred. A warning will not + prevent the rest of the library from operating as usual, + although it may be indicative of an underlying issue + + + A critical error has occurred. Generally this will + be followed by the network layer shutting down, although the + stability of the library after an error is uncertain + + + Used for internal testing, this logging level can + generate very noisy (long and/or repetitive) messages. Don't + pass this to the Log() function, use DebugLog() instead. + + + + + Avatar group management + + + + Key of Group Member + + + Total land contribution + + + Online status information + + + Abilities that the Group Member has + + + Current group title + + + Is a group owner + + + + Role manager for a group + + + + Key of the group + + + Key of Role + + + Name of Role + + + Group Title associated with Role + + + Description of Role + + + Abilities Associated with Role + + + Returns the role's title + The role's title + + + + Class to represent Group Title + + + + Key of the group + + + ID of the role title belongs to + + + Group Title + + + Whether title is Active + + + Returns group title + + + + Represents a group on the grid + + + + Key of Group + + + Key of Group Insignia + + + Key of Group Founder + + + Key of Group Role for Owners + + + Name of Group + + + Text of Group Charter + + + Title of "everyone" role + + + Is the group open for enrolement to everyone + + + Will group show up in search + + + + + + + + + + + + Is the group Mature + + + Cost of group membership + + + + + + + + + The total number of current members this group has + + + The number of roles this group has configured + + + Show this group in agent's profile + + + Returns the name of the group + A string containing the name of the group + + + + A group Vote + + + + Key of Avatar who created Vote + + + Text of the Vote proposal + + + Total number of votes + + + + A group proposal + + + + The Text of the proposal + + + The minimum number of members that must vote before proposal passes or failes + + + The required ration of yes/no votes required for vote to pass + The three options are Simple Majority, 2/3 Majority, and Unanimous + TODO: this should be an enum + + + The duration in days votes are accepted + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Struct representing a group notice + + + + + + + + + + + + + + + + + + + + + + + Struct representing a group notice list entry + + + + Notice ID + + + Creation timestamp of notice + + + Agent name who created notice + + + Notice subject + + + Is there an attachment? + + + Attachment Type + + + + Struct representing a member of a group chat session and their settings + + + + The of the Avatar + + + True if user has voice chat enabled + + + True of Avatar has moderator abilities + + + True if a moderator has muted this avatars chat + + + True if a moderator has muted this avatars voice + + + + Role update flags + + + + + + + + + + + + + + + + + + + + + + + + + Can send invitations to groups default role + + + Can eject members from group + + + Can toggle 'Open Enrollment' and change 'Signup fee' + + + Member is visible in the public member list + + + Can create new roles + + + Can delete existing roles + + + Can change Role names, titles and descriptions + + + Can assign other members to assigners role + + + Can assign other members to any role + + + Can remove members from roles + + + Can assign and remove abilities in roles + + + Can change group Charter, Insignia, 'Publish on the web' and which + members are publicly visible in group member listings + + + Can buy land or deed land to group + + + Can abandon group owned land to Governor Linden on mainland, or Estate owner for + private estates + + + Can set land for-sale information on group owned parcels + + + Can subdivide and join parcels + + + Can join group chat sessions + + + Can use voice chat in Group Chat sessions + + + Can moderate group chat sessions + + + Can toggle "Show in Find Places" and set search category + + + Can change parcel name, description, and 'Publish on web' settings + + + Can set the landing point and teleport routing on group land + + + Can change music and media settings + + + Can toggle 'Edit Terrain' option in Land settings + + + Can toggle various About Land > Options settings + + + Can always terraform land, even if parcel settings have it turned off + + + Can always fly while over group owned land + + + Can always rez objects on group owned land + + + Can always create landmarks for group owned parcels + + + Can set home location on any group owned parcel + + + Can modify public access settings for group owned parcels + + + Can manager parcel ban lists on group owned land + + + Can manage pass list sales information + + + Can eject and freeze other avatars on group owned land + + + Can return objects set to group + + + Can return non-group owned/set objects + + + Can return group owned objects + + + Can landscape using Linden plants + + + Can deed objects to group + + + Can move group owned objects + + + Can set group owned objects for-sale + + + Pay group liabilities and receive group dividends + + + List and Host group events + + + Can send group notices + + + Can receive group notices + + + Can create group proposals + + + Can vote on group proposals + + + + Handles all network traffic related to reading and writing group + information + + + + The event subscribers. null if no subcribers + + + Raises the CurrentGroups event + A CurrentGroupsEventArgs object containing the + data sent from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupNamesReply event + A GroupNamesEventArgs object containing the + data response from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupProfile event + An GroupProfileEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupMembers event + A GroupMembersEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupRolesDataReply event + A GroupRolesDataReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupRoleMembersReply event + A GroupRolesRoleMembersReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupTitlesReply event + A GroupTitlesReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupAccountSummary event + A GroupAccountSummaryReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupCreated event + An GroupCreatedEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupJoined event + A GroupOperationEventArgs object containing the + result of the operation returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupLeft event + A GroupOperationEventArgs object containing the + result of the operation returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupDropped event + An GroupDroppedEventArgs object containing the + the group your agent left + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupMemberEjected event + An GroupMemberEjectedEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupNoticesListReply event + An GroupNoticesListReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GroupInvitation event + An GroupInvitationEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + A reference to the current instance + + + Currently-active group members requests + + + Currently-active group roles requests + + + Currently-active group role-member requests + + + Dictionary keeping group members while request is in progress + + + Dictionary keeping mebmer/role mapping while request is in progress + + + Dictionary keeping GroupRole information while request is in progress + + + Caches group name lookups + + + + Construct a new instance of the GroupManager class + + A reference to the current instance + + + + Request a current list of groups the avatar is a member of. + + CAPS Event Queue must be running for this to work since the results + come across CAPS. + + + + Lookup name of group based on groupID + + groupID of group to lookup name for. + + + + Request lookup of multiple group names + + List of group IDs to request. + + + Lookup group profile data such as name, enrollment, founder, logo, etc + Subscribe to OnGroupProfile event to receive the results. + group ID (UUID) + + + Request a list of group members. + Subscribe to OnGroupMembers event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache + + + Request group roles + Subscribe to OnGroupRoles event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache + + + Request members (members,role) role mapping for a group. + Subscribe to OnGroupRolesMembers event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache + + + Request a groups Titles + Subscribe to OnGroupTitles event to receive the results. + group ID (UUID) + UUID of the request, use to index into cache + + + Begin to get the group account summary + Subscribe to the OnGroupAccountSummary event to receive the results. + group ID (UUID) + How long of an interval + Which interval (0 for current, 1 for last) + + + Invites a user to a group + The group to invite to + A list of roles to invite a person to + Key of person to invite + + + Set a group as the current active group + group ID (UUID) + + + Change the role that determines your active title + Group ID to use + Role ID to change to + + + Set this avatar's tier contribution + Group ID to change tier in + amount of tier to donate + + + + Save wheather agent wants to accept group notices and list this group in their profile + + Group + Accept notices from this group + List this group in the profile + + + Request to join a group + Subscribe to OnGroupJoined event for confirmation. + group ID (UUID) to join. + + + + Request to create a new group. If the group is successfully + created, L$100 will automatically be deducted + + Subscribe to OnGroupCreated event to receive confirmation. + Group struct containing the new group info + + + Update a group's profile and other information + Groups ID (UUID) to update. + Group struct to update. + + + Eject a user from a group + Group ID to eject the user from + Avatar's key to eject + + + Update role information + Modified role to be updated + + + Create a new group role + Group ID to update + Role to create + + + Delete a group role + Group ID to update + Role to delete + + + Remove an avatar from a role + Group ID to update + Role ID to be removed from + Avatar's Key to remove + + + Assign an avatar to a role + Group ID to update + Role ID to assign to + Avatar's ID to assign to role + + + Request the group notices list + Group ID to fetch notices for + + + Request a group notice by key + ID of group notice + + + Send out a group notice + Group ID to update + GroupNotice structure containing notice data + + + Start a group proposal (vote) + The Group ID to send proposal to + GroupProposal structure containing the proposal + + + Request to leave a group + Subscribe to OnGroupLeft event to receive confirmation + The group to leave + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Raised when the simulator sends us data containing + our current group membership + + + Raised when the simulator responds to a RequestGroupName + or RequestGroupNames request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when a response to a RequestGroupAccountSummary is returned + by the simulator + + + Raised when a request to create a group is successful + + + Raised when a request to join a group either + fails or succeeds + + + Raised when a request to leave a group either + fails or succeeds + + + Raised when A group is removed from the group server + + + Raised when a request to eject a member from a group either + fails or succeeds + + + Raised when the simulator sends us group notices + + + + Raised when another agent invites our avatar to join a group + + + Contains the current groups your agent is a member of + + + Construct a new instance of the CurrentGroupsEventArgs class + The current groups your agent is a member of + + + Get the current groups your agent is a member of + + + A Dictionary of group names, where the Key is the groups ID and the value is the groups name + + + Construct a new instance of the GroupNamesEventArgs class + The Group names dictionary + + + Get the Group Names dictionary + + + Represents the members of a group + + + + Construct a new instance of the GroupMembersReplyEventArgs class + + The ID of the request + The ID of the group + The membership list of the group + + + Get the ID as returned by the request to correlate + this result set and the request + + + Get the ID of the group + + + Get the dictionary of members + + + Represents the roles associated with a group + + + Construct a new instance of the GroupRolesDataReplyEventArgs class + The ID as returned by the request to correlate + this result set and the request + The ID of the group + The dictionary containing the roles + + + Get the ID as returned by the request to correlate + this result set and the request + + + Get the ID of the group + + + Get the dictionary containing the roles + + + Represents the Role to Member mappings for a group + + + Construct a new instance of the GroupRolesMembersReplyEventArgs class + The ID as returned by the request to correlate + this result set and the request + The ID of the group + The member to roles map + + + Get the ID as returned by the request to correlate + this result set and the request + + + Get the ID of the group + + + Get the member to roles map + + + Represents the titles for a group + + + Construct a new instance of the GroupTitlesReplyEventArgs class + The ID as returned by the request to correlate + this result set and the request + The ID of the group + The titles + + + Get the ID as returned by the request to correlate + this result set and the request + + + Get the ID of the group + + + Get the titles + + + Represents the summary data for a group + + + Construct a new instance of the GroupAccountSummaryReplyEventArgs class + The ID of the group + The summary data + + + Get the ID of the group + + + Get the summary data + + + A response to a group create request + + + Construct a new instance of the GroupCreatedReplyEventArgs class + The ID of the group + the success or faulure of the request + A string containing additional information + + + Get the ID of the group + + + true of the group was created successfully + + + A string containing the message + + + Represents a response to a request + + + Construct a new instance of the GroupOperationEventArgs class + The ID of the group + true of the request was successful + + + Get the ID of the group + + + true of the request was successful + + + Represents your agent leaving a group + + + Construct a new instance of the GroupDroppedEventArgs class + The ID of the group + + + Get the ID of the group + + + Represents a list of active group notices + + + Construct a new instance of the GroupNoticesListReplyEventArgs class + The ID of the group + The list containing active notices + + + Get the ID of the group + + + Get the notices list + + + Represents the profile of a group + + + Construct a new instance of the GroupProfileEventArgs class + The group profile + + + Get the group profile + + + + Provides notification of a group invitation request sent by another Avatar + + The invitation is raised when another avatar makes an offer for our avatar + to join a group. + + + The ID of the Avatar sending the group invitation + + + The name of the Avatar sending the group invitation + + + A message containing the request information which includes + the name of the group, the groups charter and the fee to join details + + + The Simulator + + + Set to true to accept invitation, false to decline + + + + Abstract base for rendering plugins + + + + + Generates a basic mesh structure from a primitive + + Primitive to generate the mesh from + Level of detail to generate the mesh at + The generated mesh + + + + Generates a basic mesh structure from a sculpted primitive and + texture + + Sculpted primitive to generate the mesh from + Sculpt texture + Level of detail to generate the mesh at + The generated mesh + + + + Generates a series of faces, each face containing a mesh and + metadata + + Primitive to generate the mesh from + Level of detail to generate the mesh at + The generated mesh + + + + Generates a series of faces for a sculpted prim, each face + containing a mesh and metadata + + Sculpted primitive to generate the mesh from + Sculpt texture + Level of detail to generate the mesh at + The generated mesh + + + + Apply texture coordinate modifications from a + to a list of vertices + + Vertex list to modify texture coordinates for + Center-point of the face + Face texture parameters + Scale of the prim + + + + Represents an AssetScriptBinary object containing the + LSO compiled bytecode of an LSL script + + + + Initializes a new instance of an AssetScriptBinary object + + + Initializes a new instance of an AssetScriptBinary object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + + TODO: Encodes a scripts contents into a LSO Bytecode file + + + + + TODO: Decode LSO Bytecode into a string + + true + + + Override the base classes AssetType + + + + Represents a Landmark with RegionID and Position vector + + + + UUID of the Landmark target region + + + Local position of the target + + + Construct an Asset of type Landmark + + + + Construct an Asset object of type Landmark + + A unique specific to this asset + A byte array containing the raw asset data + + + + Encode the raw contents of a string with the specific Landmark format + + + + + Decode the raw asset data, populating the RegionID and Position + + true if the AssetData was successfully decoded to a UUID and Vector + + + Override the base classes AssetType + + + + The current status of a texture request as it moves through the pipeline or final result of a texture request. + + + + The initial state given to a request. Requests in this state + are waiting for an available slot in the pipeline + + + A request that has been added to the pipeline and the request packet + has been sent to the simulator + + + A request that has received one or more packets back from the simulator + + + A request that has received all packets back from the simulator + + + A request that has taken longer than + to download OR the initial packet containing the packet information was never received + + + The texture request was aborted by request of the agent + + + The simulator replied to the request that it was not able to find the requested texture + + + + A callback fired to indicate the status or final state of the requested texture. For progressive + downloads this will fire each time new asset data is returned from the simulator. + + The indicating either Progress for textures not fully downloaded, + or the final result of the request after it has been processed through the TexturePipeline + The object containing the Assets ID, raw data + and other information. For progressive rendering the will contain + the data from the beginning of the file. For failed, aborted and timed out requests it will contain + an empty byte array. + + + + Texture request download handler, allows a configurable number of download slots which manage multiple + concurrent texture downloads from the + + This class makes full use of the internal + system for full texture downloads. + + + A dictionary containing all pending and in-process transfer requests where the Key is both the RequestID + and also the Asset Texture ID, and the value is an object containing the current state of the request and also + the asset data as it is being re-assembled + + + Holds the reference to the client object + + + Maximum concurrent texture requests allowed at a time + + + An array of objects used to manage worker request threads + + + An array of worker slots which shows the availablity status of the slot + + + The primary thread which manages the requests. + + + true if the TexturePipeline is currently running + + + A synchronization object used by the primary thread + + + A refresh timer used to increase the priority of stalled requests + + + + Default constructor, Instantiates a new copy of the TexturePipeline class + + Reference to the instantiated object + + + + Initialize callbacks required for the TexturePipeline to operate + + + + + Shutdown the TexturePipeline and cleanup any callbacks or transfers + + + + + Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator + + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + A float indicating the requested priority for the transfer. Higher priority values tell the simulator + to prioritize the request before lower valued requests. An image already being transferred using the can have + its priority changed by resending the request with the new priority value + Number of quality layers to discard. + This controls the end marker of the data sent + The packet number to begin the request at. A value of 0 begins the request + from the start of the asset texture + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + If true, the callback will be fired for each chunk of the downloaded image. + The callback asset parameter will contain all previously received chunks of the texture asset starting + from the beginning of the request + + + + Sends the actual request packet to the simulator + + The image to download + Type of the image to download, either a baked + avatar texture or a normal texture + Priority level of the download. Default is + 1,013,000.0f + Number of quality layers to discard. + This controls the end marker of the data sent + Packet number to start the download at. + This controls the start marker of the data sent + Sending a priority of 0 and a discardlevel of -1 aborts + download + + + + Cancel a pending or in process texture request + + The texture assets unique ID + + + + Master Download Thread, Queues up downloads in the threadpool + + + + + The worker thread that sends the request and handles timeouts + + A object containing the request details + + + + Handle responses from the simulator that tell us a texture we have requested is unable to be located + or no longer exists. This will remove the request from the pipeline and free up a slot if one is in use + + The sender + The EventArgs object containing the packet data + + + + Handles the remaining Image data that did not fit in the initial ImageData packet + + The sender + The EventArgs object containing the packet data + + + + Handle the initial ImageDataPacket sent from the simulator + + The sender + The EventArgs object containing the packet data + + + Current number of pending and in-process transfers + + + + A request task containing information and status of a request as it is processed through the + + + + The current which identifies the current status of the request + + + The Unique Request ID, This is also the Asset ID of the texture being requested + + + The slot this request is occupying in the threadpoolSlots array + + + The ImageType of the request. + + + The callback to fire when the request is complete, will include + the and the + object containing the result data + + + If true, indicates the callback will be fired whenever new data is returned from the simulator. + This is used to progressively render textures as portions of the texture are received. + + + An object that maintains the data of an request thats in-process. + + + + A set of textures that are layered on texture of each other and "baked" + in to a single texture, for avatar appearances + + + + Final baked texture + + + Component layers + + + Width of the final baked image and scratchpad + + + Height of the final baked image and scratchpad + + + Bake type + + + + Default constructor + + Bake type + + + + Adds layer for baking + + TexturaData struct that contains texture and its params + + + + Converts avatar texture index (face) to Bake type + + Face number (AvatarTextureIndex) + BakeType, layer to which this texture belongs to + + + + Make sure images exist, resize source if needed to match the destination + + Destination image + Source image + Sanitization was succefull + + + + Fills a baked layer as a solid *appearing* color. The colors are + subtly dithered on a 16x16 grid to prevent the JPEG2000 stage from + compressing it too far since it seems to cause upload failures if + the image is a pure solid color + + Color of the base of this layer + + + + Fills a baked layer as a solid *appearing* color. The colors are + subtly dithered on a 16x16 grid to prevent the JPEG2000 stage from + compressing it too far since it seems to cause upload failures if + the image is a pure solid color + + Red value + Green value + Blue value + + + Final baked texture + + + Component layers + + + Width of the final baked image and scratchpad + + + Height of the final baked image and scratchpad + + + Bake type + + + Is this one of the 3 skin bakes + + + + Represents a Sound Asset + + + + Initializes a new instance of an AssetSound object + + + Initializes a new instance of an AssetSound object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + + TODO: Encodes a sound file + + + + + TODO: Decode a sound file + + true + + + Override the base classes AssetType + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The ObservableDictionary class is used for storing key/value pairs. It has methods for firing + events to subscribers when items are added, removed, or changed. + + Key + Value + + + + A dictionary of callbacks to fire when specified action occurs + + + + + Register a callback to be fired when an action occurs + + The action + The callback to fire + + + + Unregister a callback + + The action + The callback to fire + + + + + + + + + + Internal dictionary that this class wraps around. Do not + modify or enumerate the contents of this dictionary without locking + + + + Initializes a new instance of the Class + with the specified key/value, has the default initial capacity. + + + + // initialize a new ObservableDictionary named testDict with a string as the key and an int as the value. + public ObservableDictionary<string, int> testDict = new ObservableDictionary<string, int>(); + + + + + + Initializes a new instance of the Class + with the specified key/value, With its initial capacity specified. + + Initial size of dictionary + + + // initialize a new ObservableDictionary named testDict with a string as the key and an int as the value, + // initially allocated room for 10 entries. + public ObservableDictionary<string, int> testDict = new ObservableDictionary<string, int>(10); + + + + + + Try to get entry from the with specified key + + Key to use for lookup + Value returned + if specified key exists, if not found + + + // find your avatar using the Simulator.ObjectsAvatars ObservableDictionary: + Avatar av; + if (Client.Network.CurrentSim.ObjectsAvatars.TryGetValue(Client.Self.AgentID, out av)) + Console.WriteLine("Found Avatar {0}", av.Name); + + + + + + + Finds the specified match. + + The match. + Matched value + + + // use a delegate to find a prim in the ObjectsPrimitives ObservableDictionary + // with the ID 95683496 + uint findID = 95683496; + Primitive findPrim = sim.ObjectsPrimitives.Find( + delegate(Primitive prim) { return prim.ID == findID; }); + + + + + Find All items in an + return matching items. + a containing found items. + + Find All prims within 20 meters and store them in a List + + int radius = 20; + List<Primitive> prims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( + delegate(Primitive prim) { + Vector3 pos = prim.Position; + return ((prim.ParentID == 0) && (pos != Vector3.Zero) && (Vector3.Distance(pos, location) < radius)); + } + ); + + + + + Find All items in an + return matching keys. + a containing found keys. + + Find All keys which also exist in another dictionary + + List<UUID> matches = myDict.FindAll( + delegate(UUID id) { + return myOtherDict.ContainsKey(id); + } + ); + + + + + Check if Key exists in Dictionary + Key to check for + if found, otherwise + + + Check if Value exists in Dictionary + Value to check for + if found, otherwise + + + + Adds the specified key to the dictionary, dictionary locking is not performed, + + + The key + The value + + + + Removes the specified key, dictionary locking is not performed + + The key. + if successful, otherwise + + + + Clear the contents of the dictionary + + + + + Enumerator for iterating dictionary entries + + + + + + Gets the number of Key/Value pairs contained in the + + + + + Indexer for the dictionary + + The key + The value + + + + A Name Value pair with additional settings, used in the protocol + primarily to transmit avatar names and active group in object packets + + + + + + + + + + + + + + + + + + + + Constructor that takes all the fields as parameters + + + + + + + + + + Constructor that takes a single line from a NameValue field + + + + + Type of the value + + + Unknown + + + String value + + + + + + + + + + + + + + + Deprecated + + + String value, but designated as an asset + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Wrapper around a byte array that allows bit to be packed and unpacked + one at a time or by a variable amount. Useful for very tightly packed + data like LayerData packets + + + + + + + + Default constructor, initialize the bit packer / bit unpacker + with a byte array and starting position + + Byte array to pack bits in to or unpack from + Starting position in the byte array + + + + Pack a floating point value in to the data + + Floating point value to pack + + + + Pack part or all of an integer in to the data + + Integer containing the data to pack + Number of bits of the integer to pack + + + + Pack part or all of an unsigned integer in to the data + + Unsigned integer containing the data to pack + Number of bits of the integer to pack + + + + Pack a single bit in to the data + + Bit to pack + + + + + + + + + + + + + + + + + + + + + + + + + Unpacking a floating point value from the data + + Unpacked floating point value + + + + Unpack a variable number of bits from the data in to integer format + + Number of bits to unpack + An integer containing the unpacked bits + This function is only useful up to 32 bits + + + + Unpack a variable number of bits from the data in to unsigned + integer format + + Number of bits to unpack + An unsigned integer containing the unpacked bits + This function is only useful up to 32 bits + + + + Unpack a 16-bit signed integer + + 16-bit signed integer + + + + Unpack a 16-bit unsigned integer + + 16-bit unsigned integer + + + + Unpack a 32-bit signed integer + + 32-bit signed integer + + + + Unpack a 32-bit unsigned integer + + 32-bit unsigned integer + + + + + + + + + + Index of TextureEntry slots for avatar appearances + + + + + Bake layers for avatar appearance + + + + + Appearance Flags, introdued with server side baking, currently unused + + + + Maximum number of concurrent downloads for wearable assets and textures + + + Maximum number of concurrent uploads for baked textures + + + Timeout for fetching inventory listings + + + Timeout for fetching a single wearable, or receiving a single packet response + + + Timeout for fetching a single texture + + + Timeout for uploading a single baked texture + + + Number of times to retry bake upload + + + When changing outfit, kick off rebake after + 20 seconds has passed since the last change + + + Total number of wearables for each avatar + + + Total number of baked textures on each avatar + + + Total number of wearables per bake layer + + + Mask for multiple attachments + + + Mapping between BakeType and AvatarTextureIndex + + + Map of what wearables are included in each bake + + + Magic values to finalize the cache check hashes for each + bake + + + Default avatar texture, used to detect when a custom + texture is not set for a face + + + The event subscribers. null if no subcribers + + + Raises the AgentWearablesReply event + An AgentWearablesReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the CachedBakesReply event + An AgentCachedBakesReplyEventArgs object containing the + data returned from the data server AgentCachedTextureResponse + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the AppearanceSet event + An AppearanceSetEventArgs object indicating if the operatin was successfull + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the RebakeAvatarRequested event + An RebakeAvatarTexturesEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + Visual parameters last sent to the sim + + + Textures about this client sent to the sim + + + A cache of wearables currently being worn + + + A cache of textures currently being worn + + + Incrementing serial number for AgentCachedTexture packets + + + Incrementing serial number for AgentSetAppearance packets + + + Indicates if WearablesRequest succeeded + + + Indicates whether or not the appearance thread is currently + running, to prevent multiple appearance threads from running + simultaneously + + + Reference to our agent + + + + Timer used for delaying rebake on changing outfit + + + + + Main appearance thread + + + + + Is server baking complete. It needs doing only once + + + + + Default constructor + + A reference to our agent + + + + Obsolete method for setting appearance. This function no longer does anything. + Use RequestSetAppearance() to manually start the appearance thread + + + + + Obsolete method for setting appearance. This function no longer does anything. + Use RequestSetAppearance() to manually start the appearance thread + + Unused parameter + + + + Starts the appearance setting thread + + + + + Starts the appearance setting thread + + True to force rebaking, otherwise false + + + + Check if current region supports server side baking + + True if server side baking support is detected + + + + Ask the server what textures our agent is currently wearing + + + + + Build hashes out of the texture assetIDs for each baking layer to + ask the simulator whether it has cached copies of each baked texture + + + + + Returns the AssetID of the asset that is currently being worn in a + given WearableType slot + + WearableType slot to get the AssetID for + The UUID of the asset being worn in the given slot, or + UUID.Zero if no wearable is attached to the given slot or wearables + have not been downloaded yet + + + + Add a wearable to the current outfit and set appearance + + Wearable to be added to the outfit + + + + Add a wearable to the current outfit and set appearance + + Wearable to be added to the outfit + Should existing item on the same point or of the same type be replaced + + + + Add a list of wearables to the current outfit and set appearance + + List of wearable inventory items to + be added to the outfit + Should existing item on the same point or of the same type be replaced + + + + Add a list of wearables to the current outfit and set appearance + + List of wearable inventory items to + be added to the outfit + Should existing item on the same point or of the same type be replaced + + + + Remove a wearable from the current outfit and set appearance + + Wearable to be removed from the outfit + + + + Removes a list of wearables from the current outfit and set appearance + + List of wearable inventory items to + be removed from the outfit + + + + Replace the current outfit with a list of wearables and set appearance + + List of wearable inventory items that + define a new outfit + + + + Replace the current outfit with a list of wearables and set appearance + + List of wearable inventory items that + define a new outfit + Check if we have all body parts, set this to false only + if you know what you're doing + + + + Checks if an inventory item is currently being worn + + The inventory item to check against the agent + wearables + The WearableType slot that the item is being worn in, + or WearbleType.Invalid if it is not currently being worn + + + + Returns a copy of the agents currently worn wearables + + A copy of the agents currently worn wearables + Avoid calling this function multiple times as it will make + a copy of all of the wearable data each time + + + + Calls either or + depending on the value of + replaceItems + + List of wearable inventory items to add + to the outfit or become a new outfit + True to replace existing items with the + new list of items, false to add these items to the existing outfit + + + + Adds a list of attachments to our agent + + A List containing the attachments to add + If true, tells simulator to remove existing attachment + first + + + + Adds a list of attachments to our agent + + A List containing the attachments to add + If true, tells simulator to remove existing attachment + If true replace existing attachment on this attachment point, otherwise add to it (multi-attachments) + first + + + + Attach an item to our agent at a specific attach point + + A to attach + the on the avatar + to attach the item to + + + + Attach an item to our agent at a specific attach point + + A to attach + the on the avatar + If true replace existing attachment on this attachment point, otherwise add to it (multi-attachments) + to attach the item to + + + + Attach an item to our agent specifying attachment details + + The of the item to attach + The attachments owner + The name of the attachment + The description of the attahment + The to apply when attached + The of the attachment + The on the agent + to attach the item to + + + + Attach an item to our agent specifying attachment details + + The of the item to attach + The attachments owner + The name of the attachment + The description of the attahment + The to apply when attached + The of the attachment + The on the agent + If true replace existing attachment on this attachment point, otherwise add to it (multi-attachments) + to attach the item to + + + + Detach an item from our agent using an object + + An object + + + + Detach an item from our agent + + The inventory itemID of the item to detach + + + + Inform the sim which wearables are part of our current outfit + + + + + Replaces the Wearables collection with a list of new wearable items + + Wearable items to replace the Wearables collection with + + + + Calculates base color/tint for a specific wearable + based on its params + + All the color info gathered from wearable's VisualParams + passed as list of ColorParamInfo tuples + Base color/tint for the wearable + + + + Blocking method to populate the Wearables dictionary + + True on success, otherwise false + + + + Blocking method to populate the Textures array with cached bakes + + True on success, otherwise false + + + + Populates textures and visual params from a decoded asset + + Wearable to decode + + Populates textures and visual params from a decoded asset + + Wearable to decode + + + + Blocking method to download and parse currently worn wearable assets + + True on success, otherwise false + + + + Get a list of all of the textures that need to be downloaded for a + single bake layer + + Bake layer to get texture AssetIDs for + A list of texture AssetIDs to download + + + + Helper method to lookup the TextureID for a single layer and add it + to a list if it is not already present + + + + + + + Blocking method to download all of the textures needed for baking + the given bake layers + + A list of layers that need baking + No return value is given because the baking will happen + whether or not all textures are successfully downloaded + + + + Blocking method to create and upload baked textures for all of the + missing bakes + + True on success, otherwise false + + + + Blocking method to create and upload a baked texture for a single + bake layer + + Layer to bake + True on success, otherwise false + + + + Blocking method to upload a baked texture + + Five channel JPEG2000 texture data to upload + UUID of the newly created asset on success, otherwise UUID.Zero + + + + Creates a dictionary of visual param values from the downloaded wearables + + A dictionary of visual param indices mapping to visual param + values for our agent that can be fed to the Baker class + + + + Initate server baking process + + True if the server baking was successful + + + + Get the latest version of COF + + Current Outfit Folder (or null if getting the data failed) + + + + Create an AgentSetAppearance packet from Wearables data and the + Textures array and send it + + + + + Converts a WearableType to a bodypart or clothing WearableType + + A WearableType + AssetType.Bodypart or AssetType.Clothing or AssetType.Unknown + + + + Converts a BakeType to the corresponding baked texture slot in AvatarTextureIndex + + A BakeType + The AvatarTextureIndex slot that holds the given BakeType + + + + Gives the layer number that is used for morph mask + + >A BakeType + Which layer number as defined in BakeTypeToTextures is used for morph mask + + + + Converts a BakeType to a list of the texture slots that make up that bake + + A BakeType + A list of texture slots that are inputs for the given bake + + + Triggered when an AgentWearablesUpdate packet is received, + telling us what our avatar is currently wearing + request. + + + Raised when an AgentCachedTextureResponse packet is + received, giving a list of cached bakes that were found on the + simulator + request. + + + + Raised when appearance data is sent to the simulator, also indicates + the main appearance thread is finished. + + request. + + + + Triggered when the simulator requests the agent rebake its appearance. + + + + + + Returns true if AppearanceManager is busy and trying to set or change appearance will fail + + + + + Contains information about a wearable inventory item + + + + Inventory ItemID of the wearable + + + AssetID of the wearable asset + + + WearableType of the wearable + + + AssetType of the wearable + + + Asset data for the wearable + + + + Data collected from visual params for each wearable + needed for the calculation of the color + + + + + Holds a texture assetID and the data needed to bake this layer into + an outfit texture. Used to keep track of currently worn textures + and baking data + + + + A texture AssetID + + + Asset data for the texture + + + Collection of alpha masks that needs applying + + + Tint that should be applied to the texture + + + Where on avatar does this texture belong + + + Contains the Event data returned from the data server from an AgentWearablesRequest + + + Construct a new instance of the AgentWearablesReplyEventArgs class + + + Contains the Event data returned from the data server from an AgentCachedTextureResponse + + + Construct a new instance of the AgentCachedBakesReplyEventArgs class + + + Contains the Event data returned from an AppearanceSetRequest + + + + Triggered when appearance data is sent to the sim and + the main appearance thread is done. + Indicates whether appearance setting was successful + + + Indicates whether appearance setting was successful + + + Contains the Event data returned from the data server from an RebakeAvatarTextures + + + + Triggered when the simulator sends a request for this agent to rebake + its appearance + + The ID of the Texture Layer to bake + + + The ID of the Texture Layer to bake + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Information about agents display name + + + Agent UUID + + + Username + + + Display name + + + First name (legacy) + + + Last name (legacy) + + + Is display name default display name + + + Cache display name until + + + Last updated timestamp + + + + Creates AgentDisplayName object from OSD + + Incoming OSD data + AgentDisplayName object + + + + Return object as OSD map + + OSD containing agent's display name data + + + Full name (legacy) + + + + Holds group information for Avatars such as those you might find in a profile + + + + true of Avatar accepts group notices + + + Groups Key + + + Texture Key for groups insignia + + + Name of the group + + + Powers avatar has in the group + + + Avatars Currently selected title + + + true of Avatar has chosen to list this in their profile + + + + Contains an animation currently being played by an agent + + + + The ID of the animation asset + + + A number to indicate start order of currently playing animations + On Linden Grids this number is unique per region, with OpenSim it is per client + + + + + + + Holds group information on an individual profile pick + + + + + Retrieve friend status notifications, and retrieve avatar names and + profiles + + + + The event subscribers, null of no subscribers + + + Raises the AvatarAnimation Event + An AvatarAnimationEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the AvatarAppearance Event + A AvatarAppearanceEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the UUIDNameReply Event + A UUIDNameReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the AvatarInterestsReply Event + A AvatarInterestsReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the AvatarPropertiesReply Event + A AvatarPropertiesReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the AvatarGroupsReply Event + A AvatarGroupsReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the AvatarPickerReply Event + A AvatarPickerReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the ViewerEffectPointAt Event + A ViewerEffectPointAtEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the ViewerEffectLookAt Event + A ViewerEffectLookAtEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the ViewerEffect Event + A ViewerEffectEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the AvatarPicksReply Event + A AvatarPicksReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the PickInfoReply Event + A PickInfoReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the AvatarClassifiedReply Event + A AvatarClassifiedReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the ClassifiedInfoReply Event + A ClassifiedInfoReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the DisplayNameUpdate Event + A DisplayNameUpdateEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + + Represents other avatars + + + + + Tracks the specified avatar on your map + Avatar ID to track + + + + Request a single avatar name + + The avatar key to retrieve a name for + + + + Request a list of avatar names + + The avatar keys to retrieve names for + + + + Check if Display Names functionality is available + + True if Display name functionality is available + + + + Request retrieval of display names (max 90 names per request) + + List of UUIDs to lookup + Callback to report result of the operation + + + + Start a request for Avatar Properties + + + + + + Search for an avatar (first name, last name) + + The name to search for + An ID to associate with this query + + + + Start a request for Avatar Picks + + UUID of the avatar + + + + Start a request for Avatar Classifieds + + UUID of the avatar + + + + Start a request for details of a specific profile pick + + UUID of the avatar + UUID of the profile pick + + + + Start a request for details of a specific profile classified + + UUID of the avatar + UUID of the profile classified + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + EQ Message fired when someone nearby changes their display name + + The message key + the IMessage object containing the deserialized data sent from the simulator + The which originated the packet + + + + Crossed region handler for message that comes across the EventQueue. Sent to an agent + when the agent crosses a sim border into a new region. + + The message key + the IMessage object containing the deserialized data sent from the simulator + The which originated the packet + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Raised when the simulator sends us data containing + an agents animation playlist + + + Raised when the simulator sends us data containing + the appearance information for an agent + + + Raised when the simulator sends us data containing + agent names/id values + + + Raised when the simulator sends us data containing + the interests listed in an agents profile + + + Raised when the simulator sends us data containing + profile property information for an agent + + + Raised when the simulator sends us data containing + the group membership an agent is a member of + + + Raised when the simulator sends us data containing + name/id pair + + + Raised when the simulator sends us data containing + the objects and effect when an agent is pointing at + + + Raised when the simulator sends us data containing + the objects and effect when an agent is looking at + + + Raised when the simulator sends us data containing + an agents viewer effect information + + + Raised when the simulator sends us data containing + the top picks from an agents profile + + + Raised when the simulator sends us data containing + the Pick details + + + Raised when the simulator sends us data containing + the classified ads an agent has placed + + + Raised when the simulator sends us data containing + the details of a classified ad + + + Raised when the simulator sends us data containing + the details of display name change + + + + Callback giving results when fetching display names + + If the request was successful + Array of display names + Array of UUIDs that could not be fetched + + + Provides data for the event + The event occurs when the simulator sends + the animation playlist for an agent + + The following code example uses the and + properties to display the animation playlist of an avatar on the window. + + // subscribe to the event + Client.Avatars.AvatarAnimation += Avatars_AvatarAnimation; + + private void Avatars_AvatarAnimation(object sender, AvatarAnimationEventArgs e) + { + // create a dictionary of "known" animations from the Animations class using System.Reflection + Dictionary<UUID, string> systemAnimations = new Dictionary<UUID, string>(); + Type type = typeof(Animations); + System.Reflection.FieldInfo[] fields = type.GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static); + foreach (System.Reflection.FieldInfo field in fields) + { + systemAnimations.Add((UUID)field.GetValue(type), field.Name); + } + + // find out which animations being played are known animations and which are assets + foreach (Animation animation in e.Animations) + { + if (systemAnimations.ContainsKey(animation.AnimationID)) + { + Console.WriteLine("{0} is playing {1} ({2}) sequence {3}", e.AvatarID, + systemAnimations[animation.AnimationID], animation.AnimationSequence); + } + else + { + Console.WriteLine("{0} is playing {1} (Asset) sequence {2}", e.AvatarID, + animation.AnimationID, animation.AnimationSequence); + } + } + } + + + + + + Construct a new instance of the AvatarAnimationEventArgs class + + The ID of the agent + The list of animations to start + + + Get the ID of the agent + + + Get the list of animations to start + + + Provides data for the event + The event occurs when the simulator sends + the appearance data for an avatar + + The following code example uses the and + properties to display the selected shape of an avatar on the window. + + // subscribe to the event + Client.Avatars.AvatarAppearance += Avatars_AvatarAppearance; + + // handle the data when the event is raised + void Avatars_AvatarAppearance(object sender, AvatarAppearanceEventArgs e) + { + Console.WriteLine("The Agent {0} is using a {1} shape.", e.AvatarID, (e.VisualParams[31] > 0) : "male" ? "female") + } + + + + + + Construct a new instance of the AvatarAppearanceEventArgs class + + The simulator request was from + The ID of the agent + true of the agent is a trial account + The default agent texture + The agents appearance layer textures + The for the agent + + + Get the Simulator this request is from of the agent + + + Get the ID of the agent + + + true if the agent is a trial account + + + Get the default agent texture + + + Get the agents appearance layer textures + + + Get the for the agent + + + Version of the appearance system used. + Value greater than 0 indicates that server side baking is used + + + Version of the Current Outfit Folder the appearance is based on + + + Appearance flags, introduced with server side baking, currently unused + + + Represents the interests from the profile of an agent + + + Get the ID of the agent + + + The properties of an agent + + + Get the ID of the agent + + + Get the ID of the agent + + + Get the ID of the agent + + + Get the ID of the avatar + + + + Event args class for display name notification messages + + + + + Capability to load TGAs to Bitmap + + + + + Represents Mesh asset + + + + + Decoded mesh data + + + + Initializes a new instance of an AssetMesh object + + + Initializes a new instance of an AssetMesh object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + + TODO: Encodes Collada file into LLMesh format + + + + + Decodes mesh asset. See + to furter decode it for rendering + true + + + Override the base classes AssetType + + + + NetworkManager is responsible for managing the network layer of + OpenMetaverse. It tracks all the server connections, serializes + outgoing traffic and deserializes incoming traffic, and provides + instances of delegates for network-related events. + + + Login Routines + + + + The event subscribers, null of no subscribers + + + Raises the PacketSent Event + A PacketSentEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the LoggedOut Event + A LoggedOutEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the SimConnecting Event + A SimConnectingEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the SimConnected Event + A SimConnectedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the SimDisconnected Event + A SimDisconnectedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the Disconnected Event + A DisconnectedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the SimChanged Event + A SimChangedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the EventQueueRunning Event + A EventQueueRunningEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + All of the simulators we are currently connected to + + + Handlers for incoming capability events + + + Handlers for incoming packets + + + Incoming packets that are awaiting handling + + + Outgoing packets that are awaiting handling + + + + Default constructor + + Reference to the GridClient object + + + + Register an event handler for a packet. This is a low level event + interface and should only be used if you are doing something not + supported in the library + + Packet type to trigger events for + Callback to fire when a packet of this type + is received + + + + Register an event handler for a packet. This is a low level event + interface and should only be used if you are doing something not + supported in the library + + Packet type to trigger events for + Callback to fire when a packet of this type + is received + True if the callback should be ran + asynchronously. Only set this to false (synchronous for callbacks + that will always complete quickly) + If any callback for a packet type is marked as + asynchronous, all callbacks for that packet type will be fired + asynchronously + + + + Unregister an event handler for a packet. This is a low level event + interface and should only be used if you are doing something not + supported in the library + + Packet type this callback is registered with + Callback to stop firing events for + + + + Register a CAPS event handler. This is a low level event interface + and should only be used if you are doing something not supported in + the library + + Name of the CAPS event to register a handler for + Callback to fire when a CAPS event is received + + + + Unregister a CAPS event handler. This is a low level event interface + and should only be used if you are doing something not supported in + the library + + Name of the CAPS event this callback is + registered with + Callback to stop firing events for + + + + Send a packet to the simulator the avatar is currently occupying + + Packet to send + + + + Send a packet to a specified simulator + + Packet to send + Simulator to send the packet to + + + + Connect to a simulator + + IP address to connect to + Port to connect to + Handle for this simulator, to identify its + location in the grid + Whether to set CurrentSim to this new + connection, use this if the avatar is moving in to this simulator + URL of the capabilities server to use for + this sim connection + A Simulator object on success, otherwise null + + + + Connect to a simulator + + IP address and port to connect to + Handle for this simulator, to identify its + location in the grid + Whether to set CurrentSim to this new + connection, use this if the avatar is moving in to this simulator + URL of the capabilities server to use for + this sim connection + A Simulator object on success, otherwise null + + + + Initiate a blocking logout request. This will return when the logout + handshake has completed or when Settings.LOGOUT_TIMEOUT + has expired and the network layer is manually shut down + + + + + Initiate the logout process. Check if logout succeeded with the + OnLogoutReply event, and if this does not fire the + Shutdown() function needs to be manually called + + + + + Close a connection to the given simulator + + + + + + + Shutdown will disconnect all the sims except for the current sim + first, and then kill the connection to CurrentSim. This should only + be called if the logout process times out on RequestLogout + + Type of shutdown + + + + Shutdown will disconnect all the sims except for the current sim + first, and then kill the connection to CurrentSim. This should only + be called if the logout process times out on RequestLogout + + Type of shutdown + Shutdown message + + + + Searches through the list of currently connected simulators to find + one attached to the given IPEndPoint + + IPEndPoint of the Simulator to search for + A Simulator reference on success, otherwise null + + + + Fire an event when an event queue connects for capabilities + + Simulator the event queue is attached to + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + The event subscribers, null of no subscribers + + + Raises the LoginProgress Event + A LoginProgressEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Seed CAPS URL returned from the login server + + + Maximum number of groups an agent can belong to, -1 for unlimited + + + Server side baking service URL + + + A list of packets obtained during the login process which + networkmanager will log but not process + + + + Generate sane default values for a login request + + Account first name + Account last name + Account password + Client application name (channel) + Client application name + version + A populated struct containing + sane defaults + + + + Simplified login that takes the most common and required fields + + Account first name + Account last name + Account password + Client application name (channel) + Client application name + version + Whether the login was successful or not. On failure the + LoginErrorKey string will contain the error code and LoginMessage + will contain a description of the error + + + + Simplified login that takes the most common fields along with a + starting location URI, and can accept an MD5 string instead of a + plaintext password + + Account first name + Account last name + Account password or MD5 hash of the password + such as $1$1682a1e45e9f957dcdf0bb56eb43319c + Client application name (channel) + Starting location URI that can be built with + StartLocation() + Client application name + version + Whether the login was successful or not. On failure the + LoginErrorKey string will contain the error code and LoginMessage + will contain a description of the error + + + + Login that takes a struct of all the values that will be passed to + the login server + + The values that will be passed to the login + server, all fields must be set even if they are String.Empty + Whether the login was successful or not. On failure the + LoginErrorKey string will contain the error code and LoginMessage + will contain a description of the error + + + + Build a start location URI for passing to the Login function + + Name of the simulator to start in + X coordinate to start at + Y coordinate to start at + Z coordinate to start at + String with a URI that can be used to login to a specified + location + + + + LoginParams and the initial login XmlRpcRequest were made on a remote machine. + This method now initializes libomv with the results. + + + + + Handles response from XML-RPC login replies + + + + + Handles response from XML-RPC login replies with already parsed LoginResponseData + + + + + Handle response from LLSD login replies + + + + + + + + Get current OS + + Either "Win" or "Linux" + + + + Get clients default Mac Address + + A string containing the first found Mac Address + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Unique identifier associated with our connections to + simulators + + + The simulator that the logged in avatar is currently + occupying + + + Shows whether the network layer is logged in to the + grid or not + + + Number of packets in the incoming queue + + + Number of packets in the outgoing queue + + + Raised when the simulator sends us data containing + ... + + + Called when a reply is received from the login server, the + login sequence will block until this event returns + + + Current state of logging in + + + Upon login failure, contains a short string key for the + type of login error that occurred + + + The raw XML-RPC reply from the login server, exactly as it + was received (minus the HTTP header) + + + During login this contains a descriptive version of + LoginStatusCode. After a successful login this will contain the + message of the day, and after a failed login a descriptive error + message will be returned + + + + Explains why a simulator or the grid disconnected from us + + + + The client requested the logout or simulator disconnect + + + The server notified us that it is disconnecting + + + Either a socket was closed or network traffic timed out + + + The last active simulator shut down + + + + Holds a simulator reference and a decoded packet, these structs are put in + the packet inbox for event handling + + + + Reference to the simulator that this packet came from + + + Packet that needs to be processed + + + + Holds a simulator reference and a serialized packet, these structs are put in + the packet outbox for sending + + + + Reference to the simulator this packet is destined for + + + Packet that needs to be sent + + + Sequence number of the wrapped packet + + + Number of times this packet has been resent + + + Environment.TickCount when this packet was last sent over the wire + + + Type of the packet + + + + + + + + + + + + + + Map layer request type + + + + Objects and terrain are shown + + + Only the terrain is shown, no objects + + + Overlay showing land for sale and for auction + + + + Type of grid item, such as telehub, event, populator location, etc. + + + + Telehub + + + PG rated event + + + Mature rated event + + + Popular location + + + Locations of avatar groups in a region + + + Land for sale + + + Classified ad + + + Adult rated event + + + Adult land for sale + + + + Information about a region on the grid map + + + + Sim X position on World Map + + + Sim Y position on World Map + + + Sim Name (NOTE: In lowercase!) + + + + + + Appears to always be zero (None) + + + Sim's defined Water Height + + + + + + UUID of the World Map image + + + Unique identifier for this region, a combination of the X + and Y position + + + + + + + + + + + + + + + + + + + + + + + Visual chunk of the grid map + + + + + Base class for Map Items + + + + The Global X position of the item + + + The Global Y position of the item + + + Get the Local X position of the item + + + Get the Local Y position of the item + + + Get the Handle of the region + + + + Represents an agent or group of agents location + + + + + Represents a Telehub location + + + + + Represents a non-adult parcel of land for sale + + + + + Represents an Adult parcel of land for sale + + + + + Represents a PG Event + + + + + Represents a Mature event + + + + + Represents an Adult event + + + + + Manages grid-wide tasks such as the world map + + + + The event subscribers. null if no subcribers + + + Raises the CoarseLocationUpdate event + A CoarseLocationUpdateEventArgs object containing the + data sent by simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GridRegion event + A GridRegionEventArgs object containing the + data sent by simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GridLayer event + A GridLayerEventArgs object containing the + data sent by simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the GridItems event + A GridItemEventArgs object containing the + data sent by simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the RegionHandleReply event + A RegionHandleReplyEventArgs object containing the + data sent by simulator + + + Thread sync lock object + + + A dictionary of all the regions, indexed by region name + + + A dictionary of all the regions, indexed by region handle + + + + Constructor + + Instance of GridClient object to associate with this GridManager instance + + + + + + + + + + Request a map layer + + The name of the region + The type of layer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Request data for all mainland (Linden managed) simulators + + + + + Request the region handle for the specified region UUID + + UUID of the region to look up + + + + Get grid region information using the region name, this function + will block until it can find the region or gives up + + Name of sim you're looking for + Layer that you are requesting + Will contain a GridRegion for the sim you're + looking for if successful, otherwise an empty structure + True if the GridRegion was successfully fetched, otherwise + false + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Raised when the simulator sends a + containing the location of agents in the simulator + + + Raised when the simulator sends a Region Data in response to + a Map request + + + Raised when the simulator sends GridLayer object containing + a map tile coordinates and texture information + + + Raised when the simulator sends GridItems object containing + details on events, land sales at a specific location + + + Raised in response to a Region lookup + + + Unknown + + + Current direction of the sun + + + Current angular velocity of the sun + + + Microseconds since the start of SL 4-hour day + + + = + + + Number of times we've received an unknown CAPS exception in series. + + + For exponential backoff on error. + + + X position of this patch + + + Y position of this patch + + + A 16x16 array of floats holding decompressed layer data + + + + Creates a LayerData packet for compressed land data given a full + simulator heightmap and an array of indices of patches to compress + + A 256 * 256 array of floating point values + specifying the height at each meter in the simulator + Array of indexes in the 16x16 grid of patches + for this simulator. For example if 1 and 17 are specified, patches + x=1,y=0 and x=1,y=1 are sent + + + + + Add a patch of terrain to a BitPacker + + BitPacker to write the patch to + Heightmap of the simulator, must be a 256 * + 256 float array + X offset of the patch to create, valid values are + from 0 to 15 + Y offset of the patch to create, valid values are + from 0 to 15 + + + + Add a custom decoder callback + + The key of the field to decode + The custom decode handler + + + + Remove a custom decoder callback + + The key of the field to decode + The custom decode handler + + + + Creates a formatted string containing the values of a Packet + + The Packet + A formatted string of values of the nested items in the Packet object + + + + Decode an IMessage object into a beautifully formatted string + + The IMessage object + Recursion level (used for indenting) + A formatted string containing the names and values of the source object + + + + A custom decoder callback + + The key of the object + the data to decode + A string represending the fieldData + + + + Singleton logging class for the entire library + + + + log4net logging engine + + + + Default constructor + + + + + Send a log message to the logging engine + + The log message + The severity of the log entry + + + + Send a log message to the logging engine + + The log message + The severity of the log entry + Instance of the client + + + + Send a log message to the logging engine + + The log message + The severity of the log entry + Exception that was raised + + + + Send a log message to the logging engine + + The log message + The severity of the log entry + Instance of the client + Exception that was raised + + + + If the library is compiled with DEBUG defined, an event will be + fired if an OnLogMessage handler is registered and the + message will be sent to the logging engine + + The message to log at the DEBUG level to the + current logging engine + + + + If the library is compiled with DEBUG defined and + GridClient.Settings.DEBUG is true, an event will be + fired if an OnLogMessage handler is registered and the + message will be sent to the logging engine + + The message to log at the DEBUG level to the + current logging engine + Instance of the client + + + Triggered whenever a message is logged. If this is left + null, log messages will go to the console + + + + Callback used for client apps to receive log messages from + the library + + Data being logged + The severity of the log entry from + + + Sort by name + + + Sort by date + + + Sort folders by name, regardless of whether items are + sorted by name or date + + + Place system folders at the top + + + + Possible destinations for DeRezObject request + + + + + + + Copy from in-world to agent inventory + + + Derez to TaskInventory + + + + + + Take Object + + + + + + Delete Object + + + Put an avatar attachment into agent inventory + + + + + + Return an object back to the owner's inventory + + + Return a deeded object back to the last owner's inventory + + + + Upper half of the Flags field for inventory items + + + + Indicates that the NextOwner permission will be set to the + most restrictive set of permissions found in the object set + (including linkset items and object inventory items) on next rez + + + Indicates that the object sale information has been + changed + + + If set, and a slam bit is set, indicates BaseMask will be overwritten on Rez + + + If set, and a slam bit is set, indicates OwnerMask will be overwritten on Rez + + + If set, and a slam bit is set, indicates GroupMask will be overwritten on Rez + + + If set, and a slam bit is set, indicates EveryoneMask will be overwritten on Rez + + + If set, and a slam bit is set, indicates NextOwnerMask will be overwritten on Rez + + + Indicates whether this object is composed of multiple + items or not + + + Indicates that the asset is only referenced by this + inventory item. If this item is deleted or updated to reference a + new assetID, the asset can be deleted + + + + Base Class for Inventory Items + + + + of item/folder + + + of parent folder + + + Name of item/folder + + + Item/Folder Owners + + + + Constructor, takes an itemID as a parameter + + The of the item + + + + + + + + + + + + + + + + Generates a number corresponding to the value of the object to support the use of a hash table, + suitable for use in hashing algorithms and data structures such as a hash table + + A Hashcode of all the combined InventoryBase fields + + + + Determine whether the specified object is equal to the current object + + InventoryBase object to compare against + true if objects are the same + + + + Determine whether the specified object is equal to the current object + + InventoryBase object to compare against + true if objects are the same + + + + Convert inventory to OSD + + OSD representation + + + + An Item in Inventory + + + + The of this item + + + The combined of this item + + + The type of item from + + + The type of item from the enum + + + The of the creator of this item + + + A Description of this item + + + The s this item is set to or owned by + + + If true, item is owned by a group + + + The price this item can be purchased for + + + The type of sale from the enum + + + Combined flags from + + + Time and date this inventory item was created, stored as + UTC (Coordinated Universal Time) + + + Used to update the AssetID in requests sent to the server + + + The of the previous owner of the item + + + + Construct a new InventoryItem object + + The of the item + + + + Construct a new InventoryItem object of a specific Type + + The type of item from + of the item + + + + Indicates inventory item is a link + + True if inventory item is a link to another inventory item + + + + + + + + + + + + + + + + Generates a number corresponding to the value of the object to support the use of a hash table. + Suitable for use in hashing algorithms and data structures such as a hash table + + A Hashcode of all the combined InventoryItem fields + + + + Compares an object + + The object to compare + true if comparison object matches + + + + Determine whether the specified object is equal to the current object + + The object to compare against + true if objects are the same + + + + Determine whether the specified object is equal to the current object + + The object to compare against + true if objects are the same + + + + Create InventoryItem from OSD + + OSD Data that makes up InventoryItem + Inventory item created + + + + Convert InventoryItem to OSD + + OSD representation of InventoryItem + + + + InventoryTexture Class representing a graphical image + + + + + + Construct an InventoryTexture object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryTexture object from a serialization stream + + + + + InventorySound Class representing a playable sound + + + + + Construct an InventorySound object + + A which becomes the + objects AssetUUID + + + + Construct an InventorySound object from a serialization stream + + + + + InventoryCallingCard Class, contains information on another avatar + + + + + Construct an InventoryCallingCard object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryCallingCard object from a serialization stream + + + + + InventoryLandmark Class, contains details on a specific location + + + + + Construct an InventoryLandmark object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryLandmark object from a serialization stream + + + + + Landmarks use the InventoryItemFlags struct and will have a flag of 1 set if they have been visited + + + + + InventoryObject Class contains details on a primitive or coalesced set of primitives + + + + + Construct an InventoryObject object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryObject object from a serialization stream + + + + + Gets or sets the upper byte of the Flags value + + + + + Gets or sets the object attachment point, the lower byte of the Flags value + + + + + InventoryNotecard Class, contains details on an encoded text document + + + + + Construct an InventoryNotecard object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryNotecard object from a serialization stream + + + + + InventoryCategory Class + + TODO: Is this even used for anything? + + + + Construct an InventoryCategory object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryCategory object from a serialization stream + + + + + InventoryLSL Class, represents a Linden Scripting Language object + + + + + Construct an InventoryLSL object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryLSL object from a serialization stream + + + + + InventorySnapshot Class, an image taken with the viewer + + + + + Construct an InventorySnapshot object + + A which becomes the + objects AssetUUID + + + + Construct an InventorySnapshot object from a serialization stream + + + + + InventoryAttachment Class, contains details on an attachable object + + + + + Construct an InventoryAttachment object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryAttachment object from a serialization stream + + + + + Get the last AttachmentPoint this object was attached to + + + + + InventoryWearable Class, details on a clothing item or body part + + + + + Construct an InventoryWearable object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryWearable object from a serialization stream + + + + + The , Skin, Shape, Skirt, Etc + + + + + InventoryAnimation Class, A bvh encoded object which animates an avatar + + + + + Construct an InventoryAnimation object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryAnimation object from a serialization stream + + + + + InventoryGesture Class, details on a series of animations, sounds, and actions + + + + + Construct an InventoryGesture object + + A which becomes the + objects AssetUUID + + + + Construct an InventoryGesture object from a serialization stream + + + + + A folder contains s and has certain attributes specific + to itself + + + + The Preferred for a folder. + + + The Version of this folder + + + Number of child items this folder contains. + + + + Constructor + + UUID of the folder + + + + + + + + + + Get Serilization data for this InventoryFolder object + + + + + Construct an InventoryFolder object from a serialization stream + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create InventoryFolder from OSD + + OSD Data that makes up InventoryFolder + Inventory folder created + + + + Convert InventoryItem to OSD + + OSD representation of InventoryItem + + + + Tools for dealing with agents inventory + + + + Used for converting shadow_id to asset_id + + + The event subscribers, null of no subscribers + + + Raises the ItemReceived Event + A ItemReceivedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the FolderUpdated Event + A FolderUpdatedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the InventoryObjectOffered Event + A InventoryObjectOfferedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the TaskItemReceived Event + A TaskItemReceivedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the FindObjectByPath Event + A FindObjectByPathEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the TaskInventoryReply Event + A TaskInventoryReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the SaveAssetToInventory Event + A SaveAssetToInventoryEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the ScriptRunningReply Event + A ScriptRunningReplyEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + Partial mapping of AssetTypes to folder names + + + + Default constructor + + Reference to the GridClient object + + + + Fetch an inventory item from the dataserver + + The items + The item Owners + a integer representing the number of milliseconds to wait for results + An object on success, or null if no item was found + Items will also be sent to the event + + + + Request A single inventory item + + The items + The item Owners + + + + + Request inventory items + + Inventory items to request + Owners of the inventory items + + + + + Request inventory items via Capabilities + + Inventory items to request + Owners of the inventory items + + + + + Get contents of a folder + + The of the folder to search + The of the folders owner + true to retrieve folders + true to retrieve items + sort order to return results in + a integer representing the number of milliseconds to wait for results + A list of inventory items matching search criteria within folder + + InventoryFolder.DescendentCount will only be accurate if both folders and items are + requested + + + + Request the contents of an inventory folder + + The folder to search + The folder owners + true to return s contained in folder + true to return s containd in folder + the sort order to return items in + + + + + Request the contents of an inventory folder using HTTP capabilities + + The folder to search + The folder owners + true to return s contained in folder + true to return s containd in folder + the sort order to return items in + + + + + Returns the UUID of the folder (category) that defaults to + containing 'type'. The folder is not necessarily only for that + type + + This will return the root folder if one does not exist + + The UUID of the desired folder if found, the UUID of the RootFolder + if not found, or UUID.Zero on failure + + + + Find an object in inventory using a specific path to search + + The folder to begin the search in + The object owners + A string path to search + milliseconds to wait for a reply + Found items or if + timeout occurs or item is not found + + + + Find inventory items by path + + The folder to begin the search in + The object owners + A string path to search, folders/objects separated by a '/' + Results are sent to the event + + + + Search inventory Store object for an item or folder + + The folder to begin the search in + An array which creates a path to search + Number of levels below baseFolder to conduct searches + if True, will stop searching after first match is found + A list of inventory items found + + + + Move an inventory item or folder to a new location + + The item or folder to move + The to move item or folder to + + + + Move an inventory item or folder to a new location and change its name + + The item or folder to move + The to move item or folder to + The name to change the item or folder to + + + + Move and rename a folder + + The source folders + The destination folders + The name to change the folder to + + + + Update folder properties + + of the folder to update + Sets folder's parent to + Folder name + Folder type + + + + Move a folder + + The source folders + The destination folders + + + + Move multiple folders, the keys in the Dictionary parameter, + to a new parents, the value of that folder's key. + + A Dictionary containing the + of the source as the key, and the + of the destination as the value + + + + Move an inventory item to a new folder + + The of the source item to move + The of the destination folder + + + + Move and rename an inventory item + + The of the source item to move + The of the destination folder + The name to change the folder to + + + + Move multiple inventory items to new locations + + A Dictionary containing the + of the source item as the key, and the + of the destination folder as the value + + + + Remove descendants of a folder + + The of the folder + + + + Remove a single item from inventory + + The of the inventory item to remove + + + + Remove a folder from inventory + + The of the folder to remove + + + + Remove multiple items or folders from inventory + + A List containing the s of items to remove + A List containing the s of the folders to remove + + + + Empty the Lost and Found folder + + + + + Empty the Trash folder + + + + + + + + + + + Proper use is to upload the inventory's asset first, then provide the Asset's TransactionID here. + + + + + + + + + + + + + Proper use is to upload the inventory's asset first, then provide the Asset's TransactionID here. + + + + + + + + Creates a new inventory folder + + ID of the folder to put this folder in + Name of the folder to create + The UUID of the newly created folder + + + + Creates a new inventory folder + + ID of the folder to put this folder in + Name of the folder to create + Sets this folder as the default folder + for new assets of the specified type. Use AssetType.Unknown + to create a normal folder, otherwise it will likely create a + duplicate of an existing folder type + The UUID of the newly created folder + If you specify a preferred type of AsseType.Folder + it will create a new root folder which may likely cause all sorts + of strange problems + + + + Create an inventory item and upload asset data + + Asset data + Inventory item name + Inventory item description + Asset type + Inventory type + Put newly created inventory in this folder + Delegate that will receive feedback on success or failure + + + + Create an inventory item and upload asset data + + Asset data + Inventory item name + Inventory item description + Asset type + Inventory type + Put newly created inventory in this folder + Permission of the newly created item + (EveryoneMask, GroupMask, and NextOwnerMask of Permissions struct are supported) + Delegate that will receive feedback on success or failure + + + + Creates inventory link to another inventory item or folder + + Put newly created link in folder with this UUID + Inventory item or folder + Method to call upon creation of the link + + + + Creates inventory link to another inventory item + + Put newly created link in folder with this UUID + Original inventory item + Method to call upon creation of the link + + + + Creates inventory link to another inventory folder + + Put newly created link in folder with this UUID + Original inventory folder + Method to call upon creation of the link + + + + Creates inventory link to another inventory item or folder + + Put newly created link in folder with this UUID + Original item's UUID + Name + Description + Asset Type + Inventory Type + Transaction UUID + Method to call upon creation of the link + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Request a copy of an asset embedded within a notecard + + Usually UUID.Zero for copying an asset from a notecard + UUID of the notecard to request an asset from + Target folder for asset to go to in your inventory + UUID of the embedded asset + callback to run when item is copied to inventory + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Save changes to notecard embedded in object contents + + Encoded notecard asset data + Notecard UUID + Object's UUID + Called upon finish of the upload with status information + + + + Upload new gesture asset for an inventory gesture item + + Encoded gesture asset + Gesture inventory UUID + Callback whick will be called when upload is complete + + + + Update an existing script in an agents Inventory + + A byte[] array containing the encoded scripts contents + the itemID of the script + if true, sets the script content to run on the mono interpreter + + + + + Update an existing script in an task Inventory + + A byte[] array containing the encoded scripts contents + the itemID of the script + UUID of the prim containting the script + if true, sets the script content to run on the mono interpreter + if true, sets the script to running + + + + + Rez an object from inventory + + Simulator to place object in + Rotation of the object when rezzed + Vector of where to place object + InventoryItem object containing item details + + + + Rez an object from inventory + + Simulator to place object in + Rotation of the object when rezzed + Vector of where to place object + InventoryItem object containing item details + UUID of group to own the object + + + + Rez an object from inventory + + Simulator to place object in + Rotation of the object when rezzed + Vector of where to place object + InventoryItem object containing item details + UUID of group to own the object + User defined queryID to correlate replies + If set to true, the CreateSelected flag + will be set on the rezzed object + + + + Rez an object from inventory + + Simulator to place object in + TaskID object when rezzed + Rotation of the object when rezzed + Vector of where to place object + InventoryItem object containing item details + UUID of group to own the object + User defined queryID to correlate replies + If set to true, the CreateSelected flag + will be set on the rezzed object + + + + DeRez an object from the simulator to the agents Objects folder in the agents Inventory + + The simulator Local ID of the object + If objectLocalID is a child primitive in a linkset, the entire linkset will be derezzed + + + + DeRez an object from the simulator and return to inventory + + The simulator Local ID of the object + The type of destination from the enum + The destination inventory folders -or- + if DeRezzing object to a tasks Inventory, the Tasks + The transaction ID for this request which + can be used to correlate this request with other packets + If objectLocalID is a child primitive in a linkset, the entire linkset will be derezzed + + + + Rez an item from inventory to its previous simulator location + + + + + + + + + Give an inventory item to another avatar + + The of the item to give + The name of the item + The type of the item from the enum + The of the recipient + true to generate a beameffect during transfer + + + + Give an inventory Folder with contents to another avatar + + The of the Folder to give + The name of the folder + The type of the item from the enum + The of the recipient + true to generate a beameffect during transfer + + + + Copy or move an from agent inventory to a task (primitive) inventory + + The target object + The item to copy or move from inventory + + For items with copy permissions a copy of the item is placed in the tasks inventory, + for no-copy items the object is moved to the tasks inventory + + + + Retrieve a listing of the items contained in a task (Primitive) + + The tasks + The tasks simulator local ID + milliseconds to wait for reply from simulator + A list containing the inventory items inside the task or null + if a timeout occurs + This request blocks until the response from the simulator arrives + or timeoutMS is exceeded + + + + Request the contents of a tasks (primitives) inventory from the + current simulator + + The LocalID of the object + + + + + Request the contents of a tasks (primitives) inventory + + The simulator Local ID of the object + A reference to the simulator object that contains the object + + + + + Move an item from a tasks (Primitive) inventory to the specified folder in the avatars inventory + + LocalID of the object in the simulator + UUID of the task item to move + The ID of the destination folder in this agents inventory + Simulator Object + Raises the event + + + + Remove an item from an objects (Prim) Inventory + + LocalID of the object in the simulator + UUID of the task item to remove + Simulator Object + You can confirm the removal by comparing the tasks inventory serial before and after the + request with the request combined with + the event + + + + Copy an InventoryScript item from the Agents Inventory into a primitives task inventory + + An unsigned integer representing a primitive being simulated + An which represents a script object from the agents inventory + true to set the scripts running state to enabled + A Unique Transaction ID + + The following example shows the basic steps necessary to copy a script from the agents inventory into a tasks inventory + and assumes the script exists in the agents inventory. + + uint primID = 95899503; // Fake prim ID + UUID scriptID = UUID.Parse("92a7fe8a-e949-dd39-a8d8-1681d8673232"); // Fake Script UUID in Inventory + + Client.Inventory.FolderContents(Client.Inventory.FindFolderForType(AssetType.LSLText), Client.Self.AgentID, + false, true, InventorySortOrder.ByName, 10000); + + Client.Inventory.RezScript(primID, (InventoryItem)Client.Inventory.Store[scriptID]); + + + + + + Request the running status of a script contained in a task (primitive) inventory + + The ID of the primitive containing the script + The ID of the script + The event can be used to obtain the results of the + request + + + + + Send a request to set the running state of a script contained in a task (primitive) inventory + + The ID of the primitive containing the script + The ID of the script + true to set the script running, false to stop a running script + To verify the change you can use the method combined + with the event + + + + Create a CRC from an InventoryItem + + The source InventoryItem + A uint representing the source InventoryItem as a CRC + + + + Reverses a cheesy XORing with a fixed UUID to convert a shadow_id to an asset_id + + Obfuscated shadow_id value + Deobfuscated asset_id value + + + + Does a cheesy XORing with a fixed UUID to convert an asset_id to a shadow_id + + asset_id value to obfuscate + Obfuscated shadow_id value + + + + Wrapper for creating a new object + + The type of item from the enum + The of the newly created object + An object with the type and id passed + + + + Parse the results of a RequestTaskInventory() response + + A string which contains the data from the task reply + A List containing the items contained within the tasks inventory + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + UpdateCreateInventoryItem packets are received when a new inventory item + is created. This may occur when an object that's rezzed in world is + taken into inventory, when an item is created using the CreateInventoryItem + packet, or when an object is purchased + + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + an inventory object sent by another avatar or primitive + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + + Get this agents Inventory data + + + + + Callback for inventory item creation finishing + + Whether the request to create an inventory + item succeeded or not + Inventory item being created. If success is + false this will be null + + + + Callback for an inventory item being create from an uploaded asset + + true if inventory item creation was successful + + + + + + + + + + + + + Reply received when uploading an inventory asset + + Has upload been successful + Error message if upload failed + Inventory asset UUID + New asset UUID + + + + Delegate that is invoked when script upload is completed + + Has upload succeded (note, there still might be compile errors) + Upload status message + Is compilation successful + If compilation failed, list of error messages, null on compilation success + Script inventory UUID + Script's new asset UUID + + + Set to true to accept offer, false to decline it + + + The folder to accept the inventory into, if null default folder for will be used + + + + Callback when an inventory object is accepted and received from a + task inventory. This is the callback in which you actually get + the ItemID, as in ObjectOfferedCallback it is null when received + from a task. + + + + + Attempts to convert an LLSD structure to a known Packet type + + Event name, this must match an actual + packet name for a Packet to be successfully built + LLSD to convert to a Packet + A Packet on success, otherwise null + + + + Class that handles the local asset cache + + + + + Default constructor + + A reference to the GridClient object + + + + Disposes cleanup timer + + + + + Only create timer when needed + + + + + Return bytes read from the local asset cache, null if it does not exist + + UUID of the asset we want to get + Raw bytes of the asset, or null on failure + + + + Returns ImageDownload object of the + image from the local image cache, null if it does not exist + + UUID of the image we want to get + ImageDownload object containing the image, or null on failure + + + + Constructs a file name of the cached asset + + UUID of the asset + String with the file name of the cahced asset + + + + Constructs a file name of the static cached asset + + UUID of the asset + String with the file name of the static cached asset + + + + Saves an asset to the local cache + + UUID of the asset + Raw bytes the asset consists of + Weather the operation was successfull + + + + Get the file name of the asset stored with gived UUID + + UUID of the asset + Null if we don't have that UUID cached on disk, file name if found in the cache folder + + + + Checks if the asset exists in the local cache + + UUID of the asset + True is the asset is stored in the cache, otherwise false + + + + Wipes out entire cache + + + + + Brings cache size to the 90% of the max size + + + + + Asynchronously brings cache size to the 90% of the max size + + + + + Adds up file sizes passes in a FileInfo array + + + + + Checks whether caching is enabled + + + + + Periodically prune the cache + + + + + Nicely formats file sizes + + Byte size we want to output + String with humanly readable file size + + + + Allows setting weather to periodicale prune the cache if it grows too big + Default is enabled, when caching is enabled + + + + + How long (in ms) between cache checks (default is 5 min.) + + + + + Helper class for sorting files by their last accessed time + + + + + Throttles the network traffic for various different traffic types. + Access this class through GridClient.Throttle + + + + + Default constructor, uses a default high total of 1500 KBps (1536000) + + + + + Constructor that decodes an existing AgentThrottle packet in to + individual values + + Reference to the throttle data in an AgentThrottle + packet + Offset position to start reading at in the + throttle data + This is generally not needed in clients as the server will + never send a throttle packet to the client + + + + Send an AgentThrottle packet to the current server using the + current values + + + + + Send an AgentThrottle packet to the specified server using the + current values + + + + + Convert the current throttle values to a byte array that can be put + in an AgentThrottle packet + + Byte array containing all the throttle values + + + Maximum bits per second for resending unacknowledged packets + + + Maximum bits per second for LayerData terrain + + + Maximum bits per second for LayerData wind data + + + Maximum bits per second for LayerData clouds + + + Unknown, includes object data + + + Maximum bits per second for textures + + + Maximum bits per second for downloaded assets + + + Maximum bits per second the entire connection, divided up + between invidiual streams using default multipliers + + + + Represents a Callingcard with AvatarID and Position vector + + + + UUID of the Callingcard target avatar + + + Construct an Asset of type Callingcard + + + + Construct an Asset object of type Callingcard + + A unique specific to this asset + A byte array containing the raw asset data + + + + Constuct an asset of type Callingcard + + UUID of the target avatar + + + + Encode the raw contents of a string with the specific Callingcard format + + + + + Decode the raw asset data, populating the AvatarID and Position + + true if the AssetData was successfully decoded to a UUID and Vector + + + Override the base classes AssetType + + + + Constants for the archiving module + + + + + Path for region settings. + + + + + The location of the archive control file + + + + + Path for the assets held in an archive + + + + + Path for the prims file + + + + + Path for terrains. Technically these may be assets, but I think it's quite nice to split them out. + + + + + Path for region settings. + + + + + The character the separates the uuid from extension information in an archived asset filename + + + + + Extensions used for asset types in the archive + + + + + Checks the instance back into the object pool + + + + + Returns an instance of the class that has been checked out of the Object Pool. + + + + + Creates a new instance of the ObjectPoolBase class. Initialize MUST be called + after using this constructor. + + + + + Creates a new instance of the ObjectPool Base class. + + The object pool is composed of segments, which + are allocated whenever the size of the pool is exceeded. The number of items + in a segment should be large enough that allocating a new segmeng is a rare + thing. For example, on a server that will have 10k people logged in at once, + the receive buffer object pool should have segment sizes of at least 1000 + byte arrays per segment. + + The minimun number of segments that may exist. + Perform a full GC.Collect whenever a segment is allocated, and then again after allocation to compact the heap. + The frequency which segments are checked to see if they're eligible for cleanup. + + + + Forces the segment cleanup algorithm to be run. This method is intended + primarly for use from the Unit Test libraries. + + + + + Responsible for allocate 1 instance of an object that will be stored in a segment. + + An instance of whatever objec the pool is pooling. + + + + Checks in an instance of T owned by the object pool. This method is only intended to be called + by the WrappedObject class. + + The segment from which the instance is checked out. + The instance of T to check back into the segment. + + + + Checks an instance of T from the pool. If the pool is not sufficient to + allow the checkout, a new segment is created. + + A WrappedObject around the instance of T. To check + the instance back into the segment, be sureto dispose the WrappedObject + when finished. + + + + The total number of segments created. Intended to be used by the Unit Tests. + + + + + The number of items that are in a segment. Items in a segment + are all allocated at the same time, and are hopefully close to + each other in the managed heap. + + + + + The minimum number of segments. When segments are reclaimed, + this number of segments will always be left alone. These + segments are allocated at startup. + + + + + The age a segment must be before it's eligible for cleanup. + This is used to prevent thrash, and typical values are in + the 5 minute range. + + + + + The frequence which the cleanup thread runs. This is typically + expected to be in the 5 minute range. + + + + + Main class to expose grid functionality to clients. All of the + classes needed for sending and receiving data are accessible through + this class. + + + + // Example minimum code required to instantiate class and + // connect to a simulator. + using System; + using System.Collections.Generic; + using System.Text; + using OpenMetaverse; + + namespace FirstBot + { + class Bot + { + public static GridClient Client; + static void Main(string[] args) + { + Client = new GridClient(); // instantiates the GridClient class + // to the global Client object + // Login to Simulator + Client.Network.Login("FirstName", "LastName", "Password", "FirstBot", "1.0"); + // Wait for a Keypress + Console.ReadLine(); + // Logout of simulator + Client.Network.Logout(); + } + } + } + + + + + Networking subsystem + + + Settings class including constant values and changeable + parameters for everything + + + Parcel (subdivided simulator lots) subsystem + + + Our own avatars subsystem + + + Other avatars subsystem + + + Estate subsystem + + + Friends list subsystem + + + Grid (aka simulator group) subsystem + + + Object subsystem + + + Group subsystem + + + Asset subsystem + + + Appearance subsystem + + + Inventory subsystem + + + Directory searches including classifieds, people, land + sales, etc + + + Handles land, wind, and cloud heightmaps + + + Handles sound-related networking + + + Throttling total bandwidth usage, or allocating bandwidth + for specific data stream types + + + + Default constructor + + + + + Return the full name of this instance + + Client avatars full name + + + Describes tasks returned in LandStatReply + + + + Estate level administration and utilities + + + + Textures for each of the four terrain height levels + + + Upper/lower texture boundaries for each corner of the sim + + + + Constructor for EstateTools class + + + + + The event subscribers. null if no subcribers + + + Raises the TopCollidersReply event + A TopCollidersReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the TopScriptsReply event + A TopScriptsReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the EstateUsersReply event + A EstateUsersReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the EstateGroupsReply event + A EstateGroupsReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the EstateManagersReply event + A EstateManagersReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the EstateBansReply event + A EstateBansReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the EstateCovenantReply event + A EstateCovenantReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the EstateUpdateInfoReply event + A EstateUpdateInfoReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + + Requests estate information such as top scripts and colliders + + + + + + + + Requests estate settings, including estate manager and access/ban lists + + + Requests the "Top Scripts" list for the current region + + + Requests the "Top Colliders" list for the current region + + + + Set several estate specific configuration variables + + The Height of the waterlevel over the entire estate. Defaults to 20 + The maximum height change allowed above the baked terrain. Defaults to 4 + The minimum height change allowed below the baked terrain. Defaults to -4 + true to use + if True forces the sun position to the position in SunPosition + The current position of the sun on the estate, or when FixedSun is true the static position + the sun will remain. 6.0 = Sunrise, 30.0 = Sunset + + + + Request return of objects owned by specified avatar + + The Agents owning the primitives to return + specify the coverage and type of objects to be included in the return + true to perform return on entire estate + + + + + + + + + Used for setting and retrieving various estate panel settings + + EstateOwnerMessage Method field + List of parameters to include + + + + Kick an avatar from an estate + + Key of Agent to remove + + + + Ban an avatar from an estate + Key of Agent to remove + Ban user from this estate and all others owned by the estate owner + + + Unban an avatar from an estate + Key of Agent to remove + /// Unban user from this estate and all others owned by the estate owner + + + + Send a message dialog to everyone in an entire estate + + Message to send all users in the estate + + + + Send a message dialog to everyone in a simulator + + Message to send all users in the simulator + + + + Send an avatar back to their home location + + Key of avatar to send home + + + + Begin the region restart process + + + + + Cancels a region restart + + + + Estate panel "Region" tab settings + + + Estate panel "Debug" tab settings + + + Used for setting the region's terrain textures for its four height levels + + + + + + + Used for setting sim terrain texture heights + + + Requests the estate covenant + + + + Upload a terrain RAW file + + A byte array containing the encoded terrain data + The name of the file being uploaded + The Id of the transfer request + + + + Teleports all users home in current Estate + + + + + Remove estate manager + Key of Agent to Remove + removes manager to this estate and all others owned by the estate owner + + + + Add estate manager + Key of Agent to Add + Add agent as manager to this estate and all others owned by the estate owner + + + + Add's an agent to the estate Allowed list + Key of Agent to Add + Add agent as an allowed reisdent to All estates if true + + + + Removes an agent from the estate Allowed list + Key of Agent to Remove + Removes agent as an allowed reisdent from All estates if true + + + + + Add's a group to the estate Allowed list + Key of Group to Add + Add Group as an allowed group to All estates if true + + + + + Removes a group from the estate Allowed list + Key of Group to Remove + Removes Group as an allowed Group from All estates if true + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Used in the ReportType field of a LandStatRequest + + + Used by EstateOwnerMessage packets + + + Used by EstateOwnerMessage packets + + + + + + + + No flags set + + + Only return targets scripted objects + + + Only return targets objects if on others land + + + Returns target's scripted objects and objects on other parcels + + + Ground texture settings for each corner of the region + + + Used by GroundTextureHeightSettings + + + The high and low texture thresholds for each corner of the sim + + + Raised on LandStatReply when the report type is for "top colliders" + + + Construct a new instance of the TopCollidersReplyEventArgs class + The number of returned items in LandStatReply + Dictionary of Object UUIDs to tasks returned in LandStatReply + + + + The number of returned items in LandStatReply + + + + + A Dictionary of Object UUIDs to tasks returned in LandStatReply + + + + Raised on LandStatReply when the report type is for "top Scripts" + + + Construct a new instance of the TopScriptsReplyEventArgs class + The number of returned items in LandStatReply + Dictionary of Object UUIDs to tasks returned in LandStatReply + + + + The number of scripts returned in LandStatReply + + + + + A Dictionary of Object UUIDs to tasks returned in LandStatReply + + + + Returned, along with other info, upon a successful .RequestInfo() + + + Construct a new instance of the EstateBansReplyEventArgs class + The estate's identifier on the grid + The number of returned items in LandStatReply + User UUIDs banned + + + + The identifier of the estate + + + + + The number of returned itmes + + + + + List of UUIDs of Banned Users + + + + Returned, along with other info, upon a successful .RequestInfo() + + + Construct a new instance of the EstateUsersReplyEventArgs class + The estate's identifier on the grid + The number of users + Allowed users UUIDs + + + + The identifier of the estate + + + + + The number of returned items + + + + + List of UUIDs of Allowed Users + + + + Returned, along with other info, upon a successful .RequestInfo() + + + Construct a new instance of the EstateGroupsReplyEventArgs class + The estate's identifier on the grid + The number of Groups + Allowed Groups UUIDs + + + + The identifier of the estate + + + + + The number of returned items + + + + + List of UUIDs of Allowed Groups + + + + Returned, along with other info, upon a successful .RequestInfo() + + + Construct a new instance of the EstateManagersReplyEventArgs class + The estate's identifier on the grid + The number of Managers + Managers UUIDs + + + + The identifier of the estate + + + + + The number of returned items + + + + + List of UUIDs of the Estate's Managers + + + + Returned, along with other info, upon a successful .RequestInfo() + + + Construct a new instance of the EstateCovenantReplyEventArgs class + The Covenant ID + The timestamp + The estate's name + The Estate Owner's ID (can be a GroupID) + + + + The Covenant + + + + + The timestamp + + + + + The Estate name + + + + + The Estate Owner's ID (can be a GroupID) + + + + Returned, along with other info, upon a successful .RequestInfo() + + + Construct a new instance of the EstateUpdateInfoReplyEventArgs class + The estate's name + The Estate Owners ID (can be a GroupID) + The estate's identifier on the grid + + + + + The estate's name + + + + + The Estate Owner's ID (can be a GroupID) + + + + + The identifier of the estate on the grid + + + + + + + + Archives assets + + + + + Archive assets + + + + + Archive the assets given to this archiver to the given archive. + + + + + + Write an assets metadata file to the given archive + + + + + + Write asset data files to the given archive + + + + + + Access to the data server which allows searching for land, events, people, etc + + + + The event subscribers. null if no subcribers + + + Raises the EventInfoReply event + An EventInfoReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the DirEventsReply event + An DirEventsReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the PlacesReply event + A PlacesReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the DirPlacesReply event + A DirPlacesReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the DirClassifiedsReply event + A DirClassifiedsReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the DirGroupsReply event + A DirGroupsReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the DirPeopleReply event + A DirPeopleReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the DirLandReply event + A DirLandReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + + Constructs a new instance of the DirectoryManager class + + An instance of GridClient + + + + Query the data server for a list of classified ads containing the specified string. + Defaults to searching for classified placed in any category, and includes PG, Adult and Mature + results. + + Responses are sent 16 per response packet, there is no way to know how many results a query reply will contain however assuming + the reply packets arrived ordered, a response with less than 16 entries would indicate all results have been received + + The event is raised when a response is received from the simulator + + A string containing a list of keywords to search for + A UUID to correlate the results when the event is raised + + + + Query the data server for a list of classified ads which contain specified keywords (Overload) + + The event is raised when a response is received from the simulator + + A string containing a list of keywords to search for + The category to search + A set of flags which can be ORed to modify query options + such as classified maturity rating. + A UUID to correlate the results when the event is raised + + Search classified ads containing the key words "foo" and "bar" in the "Any" category that are either PG or Mature + + UUID searchID = StartClassifiedSearch("foo bar", ClassifiedCategories.Any, ClassifiedQueryFlags.PG | ClassifiedQueryFlags.Mature); + + + + Responses are sent 16 at a time, there is no way to know how many results a query reply will contain however assuming + the reply packets arrived ordered, a response with less than 16 entries would indicate all results have been received + + + + + Starts search for places (Overloaded) + + The event is raised when a response is received from the simulator + + Search text + Each request is limited to 100 places + being returned. To get the first 100 result entries of a request use 0, + from 100-199 use 1, 200-299 use 2, etc. + A UUID to correlate the results when the event is raised + + + + Queries the dataserver for parcels of land which are flagged to be shown in search + + The event is raised when a response is received from the simulator + + A string containing a list of keywords to search for separated by a space character + A set of flags which can be ORed to modify query options + such as classified maturity rating. + The category to search + Each request is limited to 100 places + being returned. To get the first 100 result entries of a request use 0, + from 100-199 use 1, 200-299 use 2, etc. + A UUID to correlate the results when the event is raised + + Search places containing the key words "foo" and "bar" in the "Any" category that are either PG or Adult + + UUID searchID = StartDirPlacesSearch("foo bar", DirFindFlags.DwellSort | DirFindFlags.IncludePG | DirFindFlags.IncludeAdult, ParcelCategory.Any, 0); + + + + Additional information on the results can be obtained by using the ParcelManager.InfoRequest method + + + + + Starts a search for land sales using the directory + + The event is raised when a response is received from the simulator + + What type of land to search for. Auction, + estate, mainland, "first land", etc + The OnDirLandReply event handler must be registered before + calling this function. There is no way to determine how many + results will be returned, or how many times the callback will be + fired other than you won't get more than 100 total parcels from + each query. + + + + Starts a search for land sales using the directory + + The event is raised when a response is received from the simulator + + What type of land to search for. Auction, + estate, mainland, "first land", etc + Maximum price to search for + Maximum area to search for + Each request is limited to 100 parcels + being returned. To get the first 100 parcels of a request use 0, + from 100-199 use 1, 200-299 use 2, etc. + The OnDirLandReply event handler must be registered before + calling this function. There is no way to determine how many + results will be returned, or how many times the callback will be + fired other than you won't get more than 100 total parcels from + each query. + + + + Send a request to the data server for land sales listings + + + Flags sent to specify query options + + Available flags: + Specify the parcel rating with one or more of the following: + IncludePG IncludeMature IncludeAdult + + Specify the field to pre sort the results with ONLY ONE of the following: + PerMeterSort NameSort AreaSort PricesSort + + Specify the order the results are returned in, if not specified the results are pre sorted in a Descending Order + SortAsc + + Specify additional filters to limit the results with one or both of the following: + LimitByPrice LimitByArea + + Flags can be combined by separating them with the | (pipe) character + + Additional details can be found in + + What type of land to search for. Auction, + Estate or Mainland + Maximum price to search for when the + DirFindFlags.LimitByPrice flag is specified in findFlags + Maximum area to search for when the + DirFindFlags.LimitByArea flag is specified in findFlags + Each request is limited to 100 parcels + being returned. To get the first 100 parcels of a request use 0, + from 100-199 use 100, 200-299 use 200, etc. + The event will be raised with the response from the simulator + + There is no way to determine how many results will be returned, or how many times the callback will be + fired other than you won't get more than 100 total parcels from + each reply. + + Any land set for sale to either anybody or specific to the connected agent will be included in the + results if the land is included in the query + + + // request all mainland, any maturity rating that is larger than 512 sq.m + StartLandSearch(DirFindFlags.SortAsc | DirFindFlags.PerMeterSort | DirFindFlags.LimitByArea | DirFindFlags.IncludePG | DirFindFlags.IncludeMature | DirFindFlags.IncludeAdult, SearchTypeFlags.Mainland, 0, 512, 0); + + + + + Search for Groups + + The name or portion of the name of the group you wish to search for + Start from the match number + + + + + Search for Groups + + The name or portion of the name of the group you wish to search for + Start from the match number + Search flags + + + + + Search the People directory for other avatars + + The name or portion of the name of the avatar you wish to search for + + + + + + Search Places for parcels of land you personally own + + + + + Searches Places for land owned by the specified group + + ID of the group you want to recieve land list for (You must be a member of the group) + Transaction (Query) ID which can be associated with results from your request. + + + + Search the Places directory for parcels that are listed in search and contain the specified keywords + + A string containing the keywords to search for + Transaction (Query) ID which can be associated with results from your request. + + + + Search Places - All Options + + One of the Values from the DirFindFlags struct, ie: AgentOwned, GroupOwned, etc. + One of the values from the SearchCategory Struct, ie: Any, Linden, Newcomer + A string containing a list of keywords to search for separated by a space character + String Simulator Name to search in + LLUID of group you want to recieve results for + Transaction (Query) ID which can be associated with results from your request. + Transaction (Query) ID which can be associated with results from your request. + + + + Search All Events with specifid searchText in all categories, includes PG, Mature and Adult + + A string containing a list of keywords to search for separated by a space character + Each request is limited to 100 entries + being returned. To get the first group of entries of a request use 0, + from 100-199 use 100, 200-299 use 200, etc. + UUID of query to correlate results in callback. + + + + Search Events + + A string containing a list of keywords to search for separated by a space character + One or more of the following flags: DateEvents, IncludePG, IncludeMature, IncludeAdult + from the Enum + + Multiple flags can be combined by separating the flags with the | (pipe) character + "u" for in-progress and upcoming events, -or- number of days since/until event is scheduled + For example "0" = Today, "1" = tomorrow, "2" = following day, "-1" = yesterday, etc. + Each request is limited to 100 entries + being returned. To get the first group of entries of a request use 0, + from 100-199 use 100, 200-299 use 200, etc. + EventCategory event is listed under. + UUID of query to correlate results in callback. + + + Requests Event Details + ID of Event returned from the method + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming event message + The Unique Capabilities Key + The event message containing the data + The simulator the message originated from + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming event message + The Unique Capabilities Key + The event message containing the data + The simulator the message originated from + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Raised when the data server responds to a request. + + + Classified Ad categories + + + Classified is listed in the Any category + + + Classified is shopping related + + + Classified is + + + + + + + + + + + + + + + + + + + + + + + + Event Categories + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Query Flags used in many of the DirectoryManager methods to specify which query to execute and how to return the results. + + Flags can be combined using the | (pipe) character, not all flags are available in all queries + + + + Query the People database + + + + + + + + + Query the Groups database + + + Query the Events database + + + Query the land holdings database for land owned by the currently connected agent + + + + + + Query the land holdings database for land which is owned by a Group + + + Specifies the query should pre sort the results based upon traffic + when searching the Places database + + + + + + + + + + + + + + + Specifies the query should pre sort the results in an ascending order when searching the land sales database. + This flag is only used when searching the land sales database + + + Specifies the query should pre sort the results using the SalePrice field when searching the land sales database. + This flag is only used when searching the land sales database + + + Specifies the query should pre sort the results by calculating the average price/sq.m (SalePrice / Area) when searching the land sales database. + This flag is only used when searching the land sales database + + + Specifies the query should pre sort the results using the ParcelSize field when searching the land sales database. + This flag is only used when searching the land sales database + + + Specifies the query should pre sort the results using the Name field when searching the land sales database. + This flag is only used when searching the land sales database + + + When set, only parcels less than the specified Price will be included when searching the land sales database. + This flag is only used when searching the land sales database + + + When set, only parcels greater than the specified Size will be included when searching the land sales database. + This flag is only used when searching the land sales database + + + + + + + + + Include PG land in results. This flag is used when searching both the Groups, Events and Land sales databases + + + Include Mature land in results. This flag is used when searching both the Groups, Events and Land sales databases + + + Include Adult land in results. This flag is used when searching both the Groups, Events and Land sales databases + + + + + + + Land types to search dataserver for + + + + Search Auction, Mainland and Estate + + + Land which is currently up for auction + + + Parcels which are on the mainland (Linden owned) continents + + + Parcels which are on privately owned simulators + + + + The content rating of the event + + + + Event is PG + + + Event is Mature + + + Event is Adult + + + + Classified Ad Options + + There appear to be two formats the flags are packed in. + This set of flags is for the newer style + + + + + + + + + + + + + + + + + + + Classified ad query options + + + + Include all ads in results + + + Include PG ads in results + + + Include Mature ads in results + + + Include Adult ads in results + + + + The For Sale flag in PlacesReplyData + + + + Parcel is not listed for sale + + + Parcel is For Sale + + + + A classified ad on the grid + + + + UUID for this ad, useful for looking up detailed + information about it + + + The title of this classified ad + + + Flags that show certain options applied to the classified + + + Creation date of the ad + + + Expiration date of the ad + + + Price that was paid for this ad + + + Print the struct data as a string + A string containing the field name, and field value + + + + A parcel retrieved from the dataserver such as results from the + "For-Sale" listings or "Places" Search + + + + The unique dataserver parcel ID + This id is used to obtain additional information from the entry + by using the method + + + A string containing the name of the parcel + + + The size of the parcel + This field is not returned for Places searches + + + The price of the parcel + This field is not returned for Places searches + + + If True, this parcel is flagged to be auctioned + + + If true, this parcel is currently set for sale + + + Parcel traffic + + + Print the struct data as a string + A string containing the field name, and field value + + + + An Avatar returned from the dataserver + + + + Online status of agent + This field appears to be obsolete and always returns false + + + The agents first name + + + The agents last name + + + The agents + + + Print the struct data as a string + A string containing the field name, and field value + + + + Response to a "Groups" Search + + + + The Group ID + + + The name of the group + + + The current number of members + + + Print the struct data as a string + A string containing the field name, and field value + + + + Parcel information returned from a request + + Represents one of the following: + A parcel of land on the grid that has its Show In Search flag set + A parcel of land owned by the agent making the request + A parcel of land owned by a group the agent making the request is a member of + + + In a request for Group Land, the First record will contain an empty record + + Note: This is not the same as searching the land for sale data source + + + + The ID of the Agent of Group that owns the parcel + + + The name + + + The description + + + The Size of the parcel + + + The billable Size of the parcel, for mainland + parcels this will match the ActualArea field. For Group owned land this will be 10 percent smaller + than the ActualArea. For Estate land this will always be 0 + + + Indicates the ForSale status of the parcel + + + The Gridwide X position + + + The Gridwide Y position + + + The Z position of the parcel, or 0 if no landing point set + + + The name of the Region the parcel is located in + + + The Asset ID of the parcels Snapshot texture + + + The calculated visitor traffic + + + The billing product SKU + Known values are: + + 023Mainland / Full Region + 024Estate / Full Region + 027Estate / Openspace + 029Estate / Homestead + 129Mainland / Homestead (Linden Owned) + + + + + No longer used, will always be 0 + + + Get a SL URL for the parcel + A string, containing a standard SLURL + + + Print the struct data as a string + A string containing the field name, and field value + + + + An "Event" Listing summary + + + + The ID of the event creator + + + The name of the event + + + The events ID + + + A string containing the short date/time the event will begin + + + The event start time in Unixtime (seconds since epoch) + + + The events maturity rating + + + Print the struct data as a string + A string containing the field name, and field value + + + + The details of an "Event" + + + + The events ID + + + The ID of the event creator + + + The name of the event + + + The category + + + The events description + + + The short date/time the event will begin + + + The event start time in Unixtime (seconds since epoch) UTC adjusted + + + The length of the event in minutes + + + 0 if no cover charge applies + + + The cover charge amount in L$ if applicable + + + The name of the region where the event is being held + + + The gridwide location of the event + + + The maturity rating + + + Get a SL URL for the parcel where the event is hosted + A string, containing a standard SLURL + + + Print the struct data as a string + A string containing the field name, and field value + + + Contains the Event data returned from the data server from an EventInfoRequest + + + Construct a new instance of the EventInfoReplyEventArgs class + A single EventInfo object containing the details of an event + + + + A single EventInfo object containing the details of an event + + + + Contains the "Event" detail data returned from the data server + + + Construct a new instance of the DirEventsReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list containing the "Events" returned by the search query + + + The ID returned by + + + A list of "Events" returned by the data server + + + Contains the "Event" list data returned from the data server + + + Construct a new instance of PlacesReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list containing the "Places" returned by the data server query + + + The ID returned by + + + A list of "Places" returned by the data server + + + Contains the places data returned from the data server + + + Construct a new instance of the DirPlacesReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list containing land data returned by the data server + + + The ID returned by + + + A list containing Places data returned by the data server + + + Contains the classified data returned from the data server + + + Construct a new instance of the DirClassifiedsReplyEventArgs class + A list of classified ad data returned from the data server + + + A list containing Classified Ads returned by the data server + + + Contains the group data returned from the data server + + + Construct a new instance of the DirGroupsReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list of groups data returned by the data server + + + The ID returned by + + + A list containing Groups data returned by the data server + + + Contains the people data returned from the data server + + + Construct a new instance of the DirPeopleReplyEventArgs class + The ID of the query returned by the data server. + This will correlate to the ID returned by the method + A list of people data returned by the data server + + + The ID returned by + + + A list containing People data returned by the data server + + + Contains the land sales data returned from the data server + + + Construct a new instance of the DirLandReplyEventArgs class + A list of parcels for sale returned by the data server + + + A list containing land forsale data returned by the data server + + + + Reads in a byte array of an Animation Asset created by the SecondLife(tm) client. + + + + + Rotation Keyframe count (used internally) + + + + + Position Keyframe count (used internally) + + + + + Animation Priority + + + + + The animation length in seconds. + + + + + Expression set in the client. Null if [None] is selected + + + + + The time in seconds to start the animation + + + + + The time in seconds to end the animation + + + + + Loop the animation + + + + + Meta data. Ease in Seconds. + + + + + Meta data. Ease out seconds. + + + + + Meta Data for the Hand Pose + + + + + Number of joints defined in the animation + + + + + Contains an array of joints + + + + + Searialize an animation asset into it's joints/keyframes/meta data + + + + + + Variable length strings seem to be null terminated in the animation asset.. but.. + use with caution, home grown. + advances the index. + + The animation asset byte array + The offset to start reading + a string + + + + Read in a Joint from an animation asset byte array + Variable length Joint fields, yay! + Advances the index + + animation asset byte array + Byte Offset of the start of the joint + The Joint data serialized into the binBVHJoint structure + + + + Read Keyframes of a certain type + advance i + + Animation Byte array + Offset in the Byte Array. Will be advanced + Number of Keyframes + Scaling Min to pass to the Uint16ToFloat method + Scaling Max to pass to the Uint16ToFloat method + + + + + Determines whether the specified is equal to the current . + + + true if the specified is equal to the current ; otherwise, false. + + The to compare with the current . + The parameter is null. + 2 + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + 2 + + + + A Joint and it's associated meta data and keyframes + + + + + Indicates whether this instance and a specified object are equal. + + + true if and this instance are the same type and represent the same value; otherwise, false. + + Another object to compare to. + 2 + + + + Returns the hash code for this instance. + + + A 32-bit signed integer that is the hash code for this instance. + + 2 + + + + Name of the Joint. Matches the avatar_skeleton.xml in client distros + + + + + Joint Animation Override? Was the same as the Priority in testing.. + + + + + Array of Rotation Keyframes in order from earliest to latest + + + + + Array of Position Keyframes in order from earliest to latest + This seems to only be for the Pelvis? + + + + + Custom application data that can be attached to a joint + + + + + A Joint Keyframe. This is either a position or a rotation. + + + + + Either a Vector3 position or a Vector3 Euler rotation + + + + + Poses set in the animation metadata for the hands. + + + + + Extract the avatar UUID encoded in a SIP URI + + + + + + + The type of bump-mapping applied to a face + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The level of shininess applied to a face + + + + + + + + + + + + + + + + + The texture mapping style used for a face + + + + + + + + + + + + + + + + + Flags in the TextureEntry block that describe which properties are + set + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Permissions for control of object media + + + + + Style of cotrols that shold be displayed to the user + + + + + Class representing media data for a single face + + + + Is display of the alternative image enabled + + + Should media auto loop + + + Shoule media be auto played + + + Auto scale media to prim face + + + Should viewer automatically zoom in on the face when clicked + + + Should viewer interpret first click as interaction with the media + or when false should the first click be treated as zoom in commadn + + + Style of controls viewer should display when + viewer media on this face + + + Starting URL for the media + + + Currently navigated URL + + + Media height in pixes + + + Media width in pixels + + + Who can controls the media + + + Who can interact with the media + + + Is URL whitelist enabled + + + Array of URLs that are whitelisted + + + + Serialize to OSD + + OSDMap with the serialized data + + + + Deserialize from OSD data + + Serialized OSD data + Deserialized object + + + + Represents an that represents an avatars body ie: Hair, Etc. + + + + Initializes a new instance of an AssetBodyPart object + + + Initializes a new instance of an AssetBodyPart object with parameters + A unique specific to this asset + A byte array containing the raw asset data + + + Override the base classes AssetType + + + + Simulator (region) properties + + + + No flags set + + + Agents can take damage and be killed + + + Landmarks can be created here + + + Home position can be set in this sim + + + Home position is reset when an agent teleports away + + + Sun does not move + + + No object, land, etc. taxes + + + Disable heightmap alterations (agents can still plant + foliage) + + + Land cannot be released, sold, or purchased + + + All content is wiped nightly + + + Unknown: Related to the availability of an overview world map tile.(Think mainland images when zoomed out.) + + + Unknown: Related to region debug flags. Possibly to skip processing of agent interaction with world. + + + Region does not update agent prim interest lists. Internal debugging option. + + + No collision detection for non-agent objects + + + No scripts are ran + + + All physics processing is turned off + + + Region can be seen from other regions on world map. (Legacy world map option?) + + + Region can be seen from mainland on world map. (Legacy world map option?) + + + Agents not explicitly on the access list can visit the region. + + + Traffic calculations are not run across entire region, overrides parcel settings. + + + Flight is disabled (not currently enforced by the sim) + + + Allow direct (p2p) teleporting + + + Estate owner has temporarily disabled scripting + + + Restricts the usage of the LSL llPushObject function, applies to whole region. + + + Deny agents with no payment info on file + + + Deny agents with payment info on file + + + Deny agents who have made a monetary transaction + + + Parcels within the region may be joined or divided by anyone, not just estate owners/managers. + + + Abuse reports sent from within this region are sent to the estate owner defined email. + + + Region is Voice Enabled + + + Removes the ability from parcel owners to set their parcels to show in search. + + + Deny agents who have not been age verified from entering the region. + + + + Region protocol flags + + + + Nothing special + + + Region supports Server side Appearance + + + Viewer supports Server side Appearance + + + + Access level for a simulator + + + + Unknown or invalid access level + + + Trial accounts allowed + + + PG rating + + + Mature rating + + + Adult rating + + + Simulator is offline + + + Simulator does not exist + + + + + + + + A public reference to the client that this Simulator object + is attached to + + + A Unique Cache identifier for this simulator + + + The capabilities for this simulator + + + + + + The current version of software this simulator is running + + + + + + A 64x64 grid of parcel coloring values. The values stored + in this array are of the type + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true if your agent has Estate Manager rights on this region + + + + + + + + + + + + Statistics information for this simulator and the + connection to the simulator, calculated by the simulator itself + and the library + + + The regions Unique ID + + + The physical data center the simulator is located + Known values are: + + Dallas + Chandler + SF + + + + + The CPU Class of the simulator + Most full mainland/estate sims appear to be 5, + Homesteads and Openspace appear to be 501 + + + The number of regions sharing the same CPU as this one + "Full Sims" appear to be 1, Homesteads appear to be 4 + + + The billing product name + Known values are: + + Mainland / Full Region (Sku: 023) + Estate / Full Region (Sku: 024) + Estate / Openspace (Sku: 027) + Estate / Homestead (Sku: 029) + Mainland / Homestead (Sku: 129) (Linden Owned) + Mainland / Linden Homes (Sku: 131) + + + + + The billing product SKU + Known values are: + + 023 Mainland / Full Region + 024 Estate / Full Region + 027 Estate / Openspace + 029 Estate / Homestead + 129 Mainland / Homestead (Linden Owned) + 131 Linden Homes / Full Region + + + + + + Flags indicating which protocols this region supports + + + + The current sequence number for packets sent to this + simulator. Must be Interlocked before modifying. Only + useful for applications manipulating sequence numbers + + + + A thread-safe dictionary containing avatars in a simulator + + + + + A thread-safe dictionary containing primitives in a simulator + + + + + Checks simulator parcel map to make sure it has downloaded all data successfully + + true if map is full (contains no 0's) + + + + Is it safe to send agent updates to this sim + AgentMovementComplete message received + + + + Used internally to track sim disconnections + + + Event that is triggered when the simulator successfully + establishes a connection + + + Whether this sim is currently connected or not. Hooked up + to the property Connected + + + Coarse locations of avatars in this simulator + + + AvatarPositions key representing TrackAgent target + + + Sequence numbers of packets we've received + (for duplicate checking) + + + Packets we sent out that need ACKs from the simulator + + + Sequence number for pause/resume + + + Indicates if UDP connection to the sim is fully established + + + + + + Reference to the GridClient object + IPEndPoint of the simulator + handle of the simulator + + + + Called when this Simulator object is being destroyed + + + + + Attempt to connect to this simulator + + Whether to move our agent in to this sim or not + True if the connection succeeded or connection status is + unknown, false if there was a failure + + + + Initiates connection to the simulator + + Should we block until ack for this packet is recieved + + + + Disconnect from this simulator + + + + + Instructs the simulator to stop sending update (and possibly other) packets + + + + + Instructs the simulator to resume sending update packets (unpause) + + + + + Retrieve the terrain height at a given coordinate + + Sim X coordinate, valid range is from 0 to 255 + Sim Y coordinate, valid range is from 0 to 255 + The terrain height at the given point if the + lookup was successful, otherwise 0.0f + True if the lookup was successful, otherwise false + + + + Sends a packet + + Packet to be sent + + + + + + + + + Returns Simulator Name as a String + + + + + + + + + + + + + + + + + + + Sends out pending acknowledgements + + Number of ACKs sent + + + + Resend unacknowledged packets + + + + + Provides access to an internal thread-safe dictionary containing parcel + information found in this simulator + + + + + Provides access to an internal thread-safe multidimensional array containing a x,y grid mapped + to each 64x64 parcel's LocalID. + + + + The IP address and port of the server + + + Whether there is a working connection to the simulator or + not + + + Coarse locations of avatars in this simulator + + + AvatarPositions key representing TrackAgent target + + + Indicates if UDP connection to the sim is fully established + + + + Simulator Statistics + + + + Total number of packets sent by this simulator to this agent + + + Total number of packets received by this simulator to this agent + + + Total number of bytes sent by this simulator to this agent + + + Total number of bytes received by this simulator to this agent + + + Time in seconds agent has been connected to simulator + + + Total number of packets that have been resent + + + Total number of resent packets recieved + + + Total number of pings sent to this simulator by this agent + + + Total number of ping replies sent to this agent by this simulator + + + + Incoming bytes per second + + It would be nice to have this claculated on the fly, but + this is far, far easier + + + + Outgoing bytes per second + + It would be nice to have this claculated on the fly, but + this is far, far easier + + + Time last ping was sent + + + ID of last Ping sent + + + + + + + + + Current time dilation of this simulator + + + Current Frames per second of simulator + + + Current Physics frames per second of simulator + + + + + + + + + + + + + + + + + + + + + + + + + + + Total number of objects Simulator is simulating + + + Total number of Active (Scripted) objects running + + + Number of agents currently in this simulator + + + Number of agents in neighbor simulators + + + Number of Active scripts running in this simulator + + + + + + + + + + + + Number of downloads pending + + + Number of uploads pending + + + + + + + + + Number of local uploads pending + + + Unacknowledged bytes in queue + + + + Simulator handle + + + + + Number of GridClients using this datapool + + + + + Time that the last client disconnected from the simulator + + + + + The cache of prims used and unused in this simulator + + + + + Shared parcel info only when POOL_PARCEL_DATA == true + + + + + Type of return to use when returning objects from a parcel + + + + + + + Return objects owned by parcel owner + + + Return objects set to group + + + Return objects not owned by parcel owner or set to group + + + Return a specific list of objects on parcel + + + Return objects that are marked for-sale + + + + Blacklist/Whitelist flags used in parcels Access List + + + + Agent is denied access + + + Agent is granted access + + + + The result of a request for parcel properties + + + + No matches were found for the request + + + Request matched a single parcel + + + Request matched multiple parcels + + + + Flags used in the ParcelAccessListRequest packet to specify whether + we want the access list (whitelist), ban list (blacklist), or both + + + + Request the access list + + + Request the ban list + + + Request both White and Black lists + + + + Sequence ID in ParcelPropertiesReply packets (sent when avatar + tries to cross a parcel border) + + + + Parcel is currently selected + + + Parcel restricted to a group the avatar is not a + member of + + + Avatar is banned from the parcel + + + Parcel is restricted to an access list that the + avatar is not on + + + Response to hovering over a parcel + + + + The tool to use when modifying terrain levels + + + + Level the terrain + + + Raise the terrain + + + Lower the terrain + + + Smooth the terrain + + + Add random noise to the terrain + + + Revert terrain to simulator default + + + + The tool size to use when changing terrain levels + + + + Small + + + Medium + + + Large + + + + Reasons agent is denied access to a parcel on the simulator + + + + Agent is not denied, access is granted + + + Agent is not a member of the group set for the parcel, or which owns the parcel + + + Agent is not on the parcels specific allow list + + + Agent is on the parcels ban list + + + Unknown + + + Agent is not age verified and parcel settings deny access to non age verified avatars + + + + Parcel overlay type. This is used primarily for highlighting and + coloring which is why it is a single integer instead of a set of + flags + + These values seem to be poorly thought out. The first three + bits represent a single value, not flags. For example Auction (0x05) is + not a combination of OwnedByOther (0x01) and ForSale(0x04). However, + the BorderWest and BorderSouth values are bit flags that get attached + to the value stored in the first three bits. Bits four, five, and six + are unused + + + Public land + + + Land is owned by another avatar + + + Land is owned by a group + + + Land is owned by the current avatar + + + Land is for sale + + + Land is being auctioned + + + Land is private + + + To the west of this area is a parcel border + + + To the south of this area is a parcel border + + + + Various parcel properties + + + + No flags set + + + Allow avatars to fly (a client-side only restriction) + + + Allow foreign scripts to run + + + This parcel is for sale + + + Allow avatars to create a landmark on this parcel + + + Allows all avatars to edit the terrain on this parcel + + + Avatars have health and can take damage on this parcel. + If set, avatars can be killed and sent home here + + + Foreign avatars can create objects here + + + All objects on this parcel can be purchased + + + Access is restricted to a group + + + Access is restricted to a whitelist + + + Ban blacklist is enabled + + + Unknown + + + List this parcel in the search directory + + + Allow personally owned parcels to be deeded to group + + + If Deeded, owner contributes required tier to group parcel is deeded to + + + Restrict sounds originating on this parcel to the + parcel boundaries + + + Objects on this parcel are sold when the land is + purchsaed + + + Allow this parcel to be published on the web + + + The information for this parcel is mature content + + + The media URL is an HTML page + + + The media URL is a raw HTML string + + + Restrict foreign object pushes + + + Ban all non identified/transacted avatars + + + Allow group-owned scripts to run + + + Allow object creation by group members or group + objects + + + Allow all objects to enter this parcel + + + Only allow group and owner objects to enter this parcel + + + Voice Enabled on this parcel + + + Use Estate Voice channel for Voice on this parcel + + + Deny Age Unverified Users + + + + Parcel ownership status + + + + Placeholder + + + Parcel is leased (owned) by an avatar or group + + + Parcel is in process of being leased (purchased) by an avatar or group + + + Parcel has been abandoned back to Governor Linden + + + + Category parcel is listed in under search + + + + No assigned category + + + Linden Infohub or public area + + + Adult themed area + + + Arts and Culture + + + Business + + + Educational + + + Gaming + + + Hangout or Club + + + Newcomer friendly + + + Parks and Nature + + + Residential + + + Shopping + + + Not Used? + + + Other + + + Not an actual category, only used for queries + + + + Type of teleport landing for a parcel + + + + Unset, simulator default + + + Specific landing point set for this parcel + + + No landing point set, direct teleports enabled for + this parcel + + + + Parcel Media Command used in ParcelMediaCommandMessage + + + + Stop the media stream and go back to the first frame + + + Pause the media stream (stop playing but stay on current frame) + + + Start the current media stream playing and stop when the end is reached + + + Start the current media stream playing, + loop to the beginning when the end is reached and continue to play + + + Specifies the texture to replace with video + If passing the key of a texture, it must be explicitly typecast as a key, + not just passed within double quotes. + + + Specifies the movie URL (254 characters max) + + + Specifies the time index at which to begin playing + + + Specifies a single agent to apply the media command to + + + Unloads the stream. While the stop command sets the texture to the first frame of the movie, + unload resets it to the real texture that the movie was replacing. + + + Turn on/off the auto align feature, similar to the auto align checkbox in the parcel media properties + (NOT to be confused with the "align" function in the textures view of the editor!) Takes TRUE or FALSE as parameter. + + + Allows a Web page or image to be placed on a prim (1.19.1 RC0 and later only). + Use "text/html" for HTML. + + + Resizes a Web page to fit on x, y pixels (1.19.1 RC0 and later only). + This might still not be working + + + Sets a description for the media being displayed (1.19.1 RC0 and later only). + + + + Some information about a parcel of land returned from a DirectoryManager search + + + + Global Key of record + + + Parcel Owners + + + Name field of parcel, limited to 128 characters + + + Description field of parcel, limited to 256 characters + + + Total Square meters of parcel + + + Total area billable as Tier, for group owned land this will be 10% less than ActualArea + + + True of parcel is in Mature simulator + + + Grid global X position of parcel + + + Grid global Y position of parcel + + + Grid global Z position of parcel (not used) + + + Name of simulator parcel is located in + + + Texture of parcels display picture + + + Float representing calculated traffic based on time spent on parcel by avatars + + + Sale price of parcel (not used) + + + Auction ID of parcel + + + + Parcel Media Information + + + + A byte, if 0x1 viewer should auto scale media to fit object + + + A boolean, if true the viewer should loop the media + + + The Asset UUID of the Texture which when applied to a + primitive will display the media + + + A URL which points to any Quicktime supported media type + + + A description of the media + + + An Integer which represents the height of the media + + + An integer which represents the width of the media + + + A string which contains the mime type of the media + + + + Parcel of land, a portion of virtual real estate in a simulator + + + + The total number of contiguous 4x4 meter blocks your agent owns within this parcel + + + The total number of contiguous 4x4 meter blocks contained in this parcel owned by a group or agent other than your own + + + Deprecated, Value appears to always be 0 + + + Simulator-local ID of this parcel + + + UUID of the owner of this parcel + + + Whether the land is deeded to a group or not + + + + + + Date land was claimed + + + Appears to always be zero + + + This field is no longer used + + + Minimum corner of the axis-aligned bounding box for this + parcel + + + Maximum corner of the axis-aligned bounding box for this + parcel + + + Bitmap describing land layout in 4x4m squares across the + entire region + + + Total parcel land area + + + + + + Maximum primitives across the entire simulator owned by the same agent or group that owns this parcel that can be used + + + Total primitives across the entire simulator calculated by combining the allowed prim counts for each parcel + owned by the agent or group that owns this parcel + + + Maximum number of primitives this parcel supports + + + Total number of primitives on this parcel + + + For group-owned parcels this indicates the total number of prims deeded to the group, + for parcels owned by an individual this inicates the number of prims owned by the individual + + + Total number of primitives owned by the parcel group on + this parcel, or for parcels owned by an individual with a group set the + total number of prims set to that group. + + + Total number of prims owned by other avatars that are not set to group, or not the parcel owner + + + A bonus multiplier which allows parcel prim counts to go over times this amount, this does not affect + the max prims per simulator. e.g: 117 prim parcel limit x 1.5 bonus = 175 allowed + + + Autoreturn value in minutes for others' objects + + + + + + Sale price of the parcel, only useful if ForSale is set + The SalePrice will remain the same after an ownership + transfer (sale), so it can be used to see the purchase price after + a sale if the new owner has not changed it + + + Parcel Name + + + Parcel Description + + + URL For Music Stream + + + + + + Price for a temporary pass + + + How long is pass valid for + + + + + + Key of authorized buyer + + + Key of parcel snapshot + + + The landing point location + + + The landing point LookAt + + + The type of landing enforced from the enum + + + + + + + + + + + + Access list of who is whitelisted on this + parcel + + + Access list of who is blacklisted on this + parcel + + + TRUE of region denies access to age unverified users + + + true to obscure (hide) media url + + + true to obscure (hide) music url + + + A struct containing media details + + + + Displays a parcel object in string format + + string containing key=value pairs of a parcel object + + + + Defalt constructor + + Local ID of this parcel + + + + Update the simulator with any local changes to this Parcel object + + Simulator to send updates to + Whether we want the simulator to confirm + the update with a reply packet or not + + + + Set Autoreturn time + + Simulator to send the update to + + + + Parcel (subdivided simulator lots) subsystem + + + + The event subscribers. null if no subcribers + + + Raises the ParcelDwellReply event + A ParcelDwellReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ParcelInfoReply event + A ParcelInfoReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ParcelProperties event + A ParcelPropertiesEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ParcelAccessListReply event + A ParcelAccessListReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ParcelObjectOwnersReply event + A ParcelObjectOwnersReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the SimParcelsDownloaded event + A SimParcelsDownloadedEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ForceSelectObjectsReply event + A ForceSelectObjectsReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ParcelMediaUpdateReply event + A ParcelMediaUpdateReplyEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ParcelMediaCommand event + A ParcelMediaCommandEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + + Default constructor + + A reference to the GridClient object + + + + Request basic information for a single parcel + + Simulator-local ID of the parcel + + + + Request properties of a single parcel + + Simulator containing the parcel + Simulator-local ID of the parcel + An arbitrary integer that will be returned + with the ParcelProperties reply, useful for distinguishing between + multiple simultaneous requests + + + + Request the access list for a single parcel + + Simulator containing the parcel + Simulator-local ID of the parcel + An arbitrary integer that will be returned + with the ParcelAccessList reply, useful for distinguishing between + multiple simultaneous requests + + + + + Request properties of parcels using a bounding box selection + + Simulator containing the parcel + Northern boundary of the parcel selection + Eastern boundary of the parcel selection + Southern boundary of the parcel selection + Western boundary of the parcel selection + An arbitrary integer that will be returned + with the ParcelProperties reply, useful for distinguishing between + different types of parcel property requests + A boolean that is returned with the + ParcelProperties reply, useful for snapping focus to a single + parcel + + + + Request all simulator parcel properties (used for populating the Simulator.Parcels + dictionary) + + Simulator to request parcels from (must be connected) + + + + Request all simulator parcel properties (used for populating the Simulator.Parcels + dictionary) + + Simulator to request parcels from (must be connected) + If TRUE, will force a full refresh + Number of milliseconds to pause in between each request + + + + Request the dwell value for a parcel + + Simulator containing the parcel + Simulator-local ID of the parcel + + + + Send a request to Purchase a parcel of land + + The Simulator the parcel is located in + The parcels region specific local ID + true if this parcel is being purchased by a group + The groups + true to remove tier contribution if purchase is successful + The parcels size + The purchase price of the parcel + + + + + Reclaim a parcel of land + + The simulator the parcel is in + The parcels region specific local ID + + + + Deed a parcel to a group + + The simulator the parcel is in + The parcels region specific local ID + The groups + + + + Request prim owners of a parcel of land. + + Simulator parcel is in + The parcels region specific local ID + + + + Return objects from a parcel + + Simulator parcel is in + The parcels region specific local ID + the type of objects to return, + A list containing object owners s to return + + + + Subdivide (split) a parcel + + + + + + + + + + Join two parcels of land creating a single parcel + + + + + + + + + + Get a parcels LocalID + + Simulator parcel is in + Vector3 position in simulator (Z not used) + 0 on failure, or parcel LocalID on success. + A call to Parcels.RequestAllSimParcels is required to populate map and + dictionary. + + + + Terraform (raise, lower, etc) an area or whole parcel of land + + Simulator land area is in. + LocalID of parcel, or -1 if using bounding box + From Enum, Raise, Lower, Level, Smooth, Etc. + Size of area to modify + true on successful request sent. + Settings.STORE_LAND_PATCHES must be true, + Parcel information must be downloaded using RequestAllSimParcels() + + + + Terraform (raise, lower, etc) an area or whole parcel of land + + Simulator land area is in. + west border of area to modify + south border of area to modify + east border of area to modify + north border of area to modify + From Enum, Raise, Lower, Level, Smooth, Etc. + Size of area to modify + true on successful request sent. + Settings.STORE_LAND_PATCHES must be true, + Parcel information must be downloaded using RequestAllSimParcels() + + + + Terraform (raise, lower, etc) an area or whole parcel of land + + Simulator land area is in. + LocalID of parcel, or -1 if using bounding box + west border of area to modify + south border of area to modify + east border of area to modify + north border of area to modify + From Enum, Raise, Lower, Level, Smooth, Etc. + Size of area to modify + How many meters + or - to lower, 1 = 1 meter + true on successful request sent. + Settings.STORE_LAND_PATCHES must be true, + Parcel information must be downloaded using RequestAllSimParcels() + + + + Terraform (raise, lower, etc) an area or whole parcel of land + + Simulator land area is in. + LocalID of parcel, or -1 if using bounding box + west border of area to modify + south border of area to modify + east border of area to modify + north border of area to modify + From Enum, Raise, Lower, Level, Smooth, Etc. + Size of area to modify + How many meters + or - to lower, 1 = 1 meter + Height at which the terraform operation is acting at + + + + Sends a request to the simulator to return a list of objects owned by specific owners + + Simulator local ID of parcel + Owners, Others, Etc + List containing keys of avatars objects to select; + if List is null will return Objects of type selectType + Response data is returned in the event + + + + Eject and optionally ban a user from a parcel + + target key of avatar to eject + true to also ban target + + + + Freeze or unfreeze an avatar over your land + + target key to freeze + true to freeze, false to unfreeze + + + + Abandon a parcel of land + + Simulator parcel is in + Simulator local ID of parcel + + + + Requests the UUID of the parcel in a remote region at a specified location + + Location of the parcel in the remote region + Remote region handle + Remote region UUID + If successful UUID of the remote parcel, UUID.Zero otherwise + + + + Retrieves information on resources used by the parcel + + UUID of the parcel + Should per object resource usage be requested + Callback invoked when the request is complete + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + Raises the event + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a request + + + Raised when the simulator responds to a Parcel Update request + + + Raised when the parcel your agent is located sends a ParcelMediaCommand + + + + Parcel Accesslist + + + + Agents + + + + + + Flags for specific entry in white/black lists + + + + Owners of primitives on parcel + + + + Prim Owners + + + True of owner is group + + + Total count of prims owned by OwnerID + + + true of OwnerID is currently online and is not a group + + + The date of the most recent prim left by OwnerID + + + + Called once parcel resource usage information has been collected + + Indicates if operation was successfull + Parcel resource usage information + + + Contains a parcels dwell data returned from the simulator in response to an + + + + Construct a new instance of the ParcelDwellReplyEventArgs class + + The global ID of the parcel + The simulator specific ID of the parcel + The calculated dwell for the parcel + + + Get the global ID of the parcel + + + Get the simulator specific ID of the parcel + + + Get the calculated dwell + + + Contains basic parcel information data returned from the + simulator in response to an request + + + + Construct a new instance of the ParcelInfoReplyEventArgs class + + The object containing basic parcel info + + + Get the object containing basic parcel info + + + Contains basic parcel information data returned from the simulator in response to an request + + + + Construct a new instance of the ParcelPropertiesEventArgs class + + The object containing the details + The object containing the details + The result of the request + The number of primitieves your agent is + currently selecting and or sitting on in this parcel + The user assigned ID used to correlate a request with + these results + TODO: + + + Get the simulator the parcel is located in + + + Get the object containing the details + If Result is NoData, this object will not contain valid data + + + Get the result of the request + + + Get the number of primitieves your agent is + currently selecting and or sitting on in this parcel + + + Get the user assigned ID used to correlate a request with + these results + + + TODO: + + + Contains blacklist and whitelist data returned from the simulator in response to an request + + + + Construct a new instance of the ParcelAccessListReplyEventArgs class + + The simulator the parcel is located in + The user assigned ID used to correlate a request with + these results + The simulator specific ID of the parcel + TODO: + The list containing the white/blacklisted agents for the parcel + + + Get the simulator the parcel is located in + + + Get the user assigned ID used to correlate a request with + these results + + + Get the simulator specific ID of the parcel + + + TODO: + + + Get the list containing the white/blacklisted agents for the parcel + + + Contains blacklist and whitelist data returned from the + simulator in response to an request + + + + Construct a new instance of the ParcelObjectOwnersReplyEventArgs class + + The simulator the parcel is located in + The list containing prim ownership counts + + + Get the simulator the parcel is located in + + + Get the list containing prim ownership counts + + + Contains the data returned when all parcel data has been retrieved from a simulator + + + + Construct a new instance of the SimParcelsDownloadedEventArgs class + + The simulator the parcel data was retrieved from + The dictionary containing the parcel data + The multidimensional array containing a x,y grid mapped + to each 64x64 parcel's LocalID. + + + Get the simulator the parcel data was retrieved from + + + A dictionary containing the parcel data where the key correlates to the ParcelMap entry + + + Get the multidimensional array containing a x,y grid mapped + to each 64x64 parcel's LocalID. + + + Contains the data returned when a request + + + + Construct a new instance of the ForceSelectObjectsReplyEventArgs class + + The simulator the parcel data was retrieved from + The list of primitive IDs + true if the list is clean and contains the information + only for a given request + + + Get the simulator the parcel data was retrieved from + + + Get the list of primitive IDs + + + true if the list is clean and contains the information + only for a given request + + + Contains data when the media data for a parcel the avatar is on changes + + + + Construct a new instance of the ParcelMediaUpdateReplyEventArgs class + + the simulator the parcel media data was updated in + The updated media information + + + Get the simulator the parcel media data was updated in + + + Get the updated media information + + + Contains the media command for a parcel the agent is currently on + + + + Construct a new instance of the ParcelMediaCommandEventArgs class + + The simulator the parcel media command was issued in + + + The media command that was sent + + + + Get the simulator the parcel media command was issued in + + + + + + + + + Get the media command that was sent + + + + + + + Provides helper methods for parallelizing loops + + + + + Executes a for loop in which iterations may run in parallel + + The loop will be started at this index + The loop will be terminated before this index is reached + Method body to run for each iteration of the loop + + + + Executes a for loop in which iterations may run in parallel + + The number of concurrent execution threads to run + The loop will be started at this index + The loop will be terminated before this index is reached + Method body to run for each iteration of the loop + + + + Executes a foreach loop in which iterations may run in parallel + + Object type that the collection wraps + An enumerable collection to iterate over + Method body to run for each object in the collection + + + + Executes a foreach loop in which iterations may run in parallel + + Object type that the collection wraps + The number of concurrent execution threads to run + An enumerable collection to iterate over + Method body to run for each object in the collection + + + + Executes a series of tasks in parallel + + A series of method bodies to execute + + + + Executes a series of tasks in parallel + + The number of concurrent execution threads to run + A series of method bodies to execute + + + + Exception class to identify inventory exceptions + + + + + Responsible for maintaining inventory structure. Inventory constructs nodes + and manages node children as is necessary to maintain a coherant hirarchy. + Other classes should not manipulate or create InventoryNodes explicitly. When + A node's parent changes (when a folder is moved, for example) simply pass + Inventory the updated InventoryFolder and it will make the appropriate changes + to its internal representation. + + + + The event subscribers, null of no subscribers + + + Raises the InventoryObjectUpdated Event + A InventoryObjectUpdatedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the InventoryObjectRemoved Event + A InventoryObjectRemovedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the InventoryObjectAdded Event + A InventoryObjectAddedEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + + Returns the contents of the specified folder + + A folder's UUID + The contents of the folder corresponding to folder + When folder does not exist in the inventory + + + + Updates the state of the InventoryNode and inventory data structure that + is responsible for the InventoryObject. If the item was previously not added to inventory, + it adds the item, and updates structure accordingly. If it was, it updates the + InventoryNode, changing the parent node if item.parentUUID does + not match node.Parent.Data.UUID. + + You can not set the inventory root folder using this method + + The InventoryObject to store + + + + Removes the InventoryObject and all related node data from Inventory. + + The InventoryObject to remove. + + + + Used to find out if Inventory contains the InventoryObject + specified by uuid. + + The UUID to check. + true if inventory contains uuid, false otherwise + + + + Saves the current inventory structure to a cache file + + Name of the cache file to save to + + + + Loads in inventory cache file into the inventory structure. Note only valid to call after login has been successful. + + Name of the cache file to load + The number of inventory items sucessfully reconstructed into the inventory node tree + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + + The root folder of this avatars inventory + + + + + The default shared library folder + + + + + The root node of the avatars inventory + + + + + The root node of the default shared library + + + + + By using the bracket operator on this class, the program can get the + InventoryObject designated by the specified uuid. If the value for the corresponding + UUID is null, the call is equivelant to a call to RemoveNodeFor(this[uuid]). + If the value is non-null, it is equivelant to a call to UpdateNodeFor(value), + the uuid parameter is ignored. + + The UUID of the InventoryObject to get or set, ignored if set to non-null value. + The InventoryObject corresponding to uuid. + + + + The InternalDictionary class is used through the library for storing key/value pairs. + It is intended to be a replacement for the generic Dictionary class and should + be used in its place. It contains several methods for allowing access to the data from + outside the library that are read only and thread safe. + + + Key + Value + + + Internal dictionary that this class wraps around. Do not + modify or enumerate the contents of this dictionary without locking + on this member + + + + Initializes a new instance of the Class + with the specified key/value, has the default initial capacity. + + + + // initialize a new InternalDictionary named testDict with a string as the key and an int as the value. + public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(); + + + + + + Initializes a new instance of the Class + with the specified key/value, has its initial valies copied from the specified + + + + to copy initial values from + + + // initialize a new InternalDictionary named testAvName with a UUID as the key and an string as the value. + // populates with copied values from example KeyNameCache Dictionary. + + // create source dictionary + Dictionary<UUID, string> KeyNameCache = new Dictionary<UUID, string>(); + KeyNameCache.Add("8300f94a-7970-7810-cf2c-fc9aa6cdda24", "Jack Avatar"); + KeyNameCache.Add("27ba1e40-13f7-0708-3e98-5819d780bd62", "Jill Avatar"); + + // Initialize new dictionary. + public InternalDictionary<UUID, string> testAvName = new InternalDictionary<UUID, string>(KeyNameCache); + + + + + + Initializes a new instance of the Class + with the specified key/value, With its initial capacity specified. + + Initial size of dictionary + + + // initialize a new InternalDictionary named testDict with a string as the key and an int as the value, + // initially allocated room for 10 entries. + public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(10); + + + + + + Try to get entry from with specified key + + Key to use for lookup + Value returned + if specified key exists, if not found + + + // find your avatar using the Simulator.ObjectsAvatars InternalDictionary: + Avatar av; + if (Client.Network.CurrentSim.ObjectsAvatars.TryGetValue(Client.Self.AgentID, out av)) + Console.WriteLine("Found Avatar {0}", av.Name); + + + + + + + Finds the specified match. + + The match. + Matched value + + + // use a delegate to find a prim in the ObjectsPrimitives InternalDictionary + // with the ID 95683496 + uint findID = 95683496; + Primitive findPrim = sim.ObjectsPrimitives.Find( + delegate(Primitive prim) { return prim.ID == findID; }); + + + + + Find All items in an + return matching items. + a containing found items. + + Find All prims within 20 meters and store them in a List + + int radius = 20; + List<Primitive> prims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( + delegate(Primitive prim) { + Vector3 pos = prim.Position; + return ((prim.ParentID == 0) && (pos != Vector3.Zero) && (Vector3.Distance(pos, location) < radius)); + } + ); + + + + + Find All items in an + return matching keys. + a containing found keys. + + Find All keys which also exist in another dictionary + + List<UUID> matches = myDict.FindAll( + delegate(UUID id) { + return myOtherDict.ContainsKey(id); + } + ); + + + + + Perform an on each entry in an + to perform + + + // Iterates over the ObjectsPrimitives InternalDictionary and prints out some information. + Client.Network.CurrentSim.ObjectsPrimitives.ForEach( + delegate(Primitive prim) + { + if (prim.Text != null) + { + Console.WriteLine("NAME={0} ID = {1} TEXT = '{2}'", + prim.PropertiesFamily.Name, prim.ID, prim.Text); + } + }); + + + + + Perform an on each key of an + to perform + + + + Perform an on each KeyValuePair of an + + to perform + + + Check if Key exists in Dictionary + Key to check for + if found, otherwise + + + Check if Value exists in Dictionary + Value to check for + if found, otherwise + + + + Adds the specified key to the dictionary, dictionary locking is not performed, + + + The key + The value + + + + Removes the specified key, dictionary locking is not performed + + The key. + if successful, otherwise + + + + Gets the number of Key/Value pairs contained in the + + + + + Indexer for the dictionary + + The key + The value + + + + A Wrapper around openjpeg to encode and decode images to and from byte arrays + + + + TGA Header size + + + OpenJPEG is not threadsafe, so this object is used to lock + during calls into unmanaged code + + + + Encode a object into a byte array + + The object to encode + true to enable lossless conversion, only useful for small images ie: sculptmaps + A byte array containing the encoded Image object + + + + Encode a object into a byte array + + The object to encode + a byte array of the encoded image + + + + Decode JPEG2000 data to an and + + + JPEG2000 encoded data + ManagedImage object to decode to + Image object to decode to + True if the decode succeeds, otherwise false + + + + + + + + + + + + + + + + + + + + + Encode a object into a byte array + + The source object to encode + true to enable lossless decoding + A byte array containing the source Bitmap object + + + + Defines the beginning and ending file positions of a layer in an + LRCP-progression JPEG2000 file + + + + + This structure is used to marshal both encoded and decoded images. + MUST MATCH THE STRUCT IN dotnet.h! + + + + + Information about a single packet in a JPEG2000 stream + + + + Packet start position + + + Packet header end position + + + Packet end position + + + + Image width + + + + + Image height + + + + + Image channel flags + + + + + Red channel data + + + + + Green channel data + + + + + Blue channel data + + + + + Alpha channel data + + + + + Bump channel data + + + + + Create a new blank image + + width + height + channel flags + + + + + + + + + + Convert the channels in the image. Channels are created or destroyed as required. + + new channel flags + + + + Resize or stretch the image using nearest neighbor (ugly) resampling + + new width + new height + + + + Create a byte array containing 32-bit RGBA data with a bottom-left + origin, suitable for feeding directly into OpenGL + + A byte array containing raw texture data + + + + Create a byte array containing 32-bit RGBA data with a bottom-left + origin, suitable for feeding directly into OpenGL + + A byte array containing raw texture data + + + + Represents a texture + + + + A object containing image data + + + + + + + + + Initializes a new instance of an AssetTexture object + + + + Initializes a new instance of an AssetTexture object + + A unique specific to this asset + A byte array containing the raw asset data + + + + Initializes a new instance of an AssetTexture object + + A object containing texture data + + + + Populates the byte array with a JPEG2000 + encoded image created from the data in + + + + + Decodes the JPEG2000 data in AssetData to the + object + + True if the decoding was successful, otherwise false + + + + Decodes the begin and end byte positions for each quality layer in + the image + + + + + Override the base classes AssetType + + + + Operation to apply when applying color to texture + + + + + Information needed to translate visual param value to RGBA color + + + + + Construct VisualColorParam + + Operation to apply when applying color to texture + Colors + + + + Represents alpha blending and bump infor for a visual parameter + such as sleive length + + + + Stregth of the alpha to apply + + + File containing the alpha channel + + + Skip blending if parameter value is 0 + + + Use miltiply insted of alpha blending + + + + Create new alhpa information for a visual param + + Stregth of the alpha to apply + File containing the alpha channel + Skip blending if parameter value is 0 + Use miltiply insted of alpha blending + + + + A single visual characteristic of an avatar mesh, such as eyebrow height + + + + Index of this visual param + + + Internal name + + + Group ID this parameter belongs to + + + Name of the wearable this parameter belongs to + + + Displayable label of this characteristic + + + Displayable label for the minimum value of this characteristic + + + Displayable label for the maximum value of this characteristic + + + Default value + + + Minimum value + + + Maximum value + + + Is this param used for creation of bump layer? + + + Alpha blending/bump info + + + Color information + + + Array of param IDs that are drivers for this parameter + + + + Set all the values through the constructor + + Index of this visual param + Internal name + + + Displayable label of this characteristic + Displayable label for the minimum value of this characteristic + Displayable label for the maximum value of this characteristic + Default value + Minimum value + Maximum value + Is this param used for creation of bump layer? + Array of param IDs that are drivers for this parameter + Alpha blending/bump info + Color information + + + + Holds the Params array of all the avatar appearance parameters + + + + + Class for controlling various system settings. + + Some values are readonly because they affect things that + happen when the GridClient object is initialized, so changing them at + runtime won't do any good. Non-readonly values may affect things that + happen at login or dynamically + + + Main grid login server + + + Beta grid login server + + + + InventoryManager requests inventory information on login, + GridClient initializes an Inventory store for main inventory. + + + + + InventoryManager requests library information on login, + GridClient initializes an Inventory store for the library. + + + + Number of milliseconds between sending pings to each sim + + + Number of milliseconds between sending camera updates + + + Number of milliseconds between updating the current + positions of moving, non-accelerating and non-colliding objects + + + Millisecond interval between ticks, where all ACKs are + sent out and the age of unACKed packets is checked + + + The initial size of the packet inbox, where packets are + stored before processing + + + Maximum size of packet that we want to send over the wire + + + The maximum value of a packet sequence number before it + rolls over back to one + + + The relative directory where external resources are kept + + + Login server to connect to + + + IP Address the client will bind to + + + Use XML-RPC Login or LLSD Login, default is XML-RPC Login + + + + Use Caps for fetching inventory where available + + + + Number of milliseconds before an asset transfer will time + out + + + Number of milliseconds before a teleport attempt will time + out + + + Number of milliseconds before NetworkManager.Logout() will + time out + + + Number of milliseconds before a CAPS call will time out + Setting this too low will cause web requests time out and + possibly retry repeatedly + + + Number of milliseconds for xml-rpc to timeout + + + Milliseconds before a packet is assumed lost and resent + + + Milliseconds without receiving a packet before the + connection to a simulator is assumed lost + + + Milliseconds to wait for a simulator info request through + the grid interface + + + The maximum size of the sequence number archive, used to + check for resent and/or duplicate packets + + + Maximum number of queued ACKs to be sent before SendAcks() + is forced + + + Network stats queue length (seconds) + + + + Primitives will be reused when falling in/out of interest list (and shared between clients) + prims returning to interest list do not need re-requested + Helps also in not re-requesting prim.Properties for code that checks for a Properties == null per client + + + + + Pool parcel data between clients (saves on requesting multiple times when all clients may need it) + + + + + How long to preserve cached data when no client is connected to a simulator + The reason for setting it to something like 2 minutes is in case a client + is running back and forth between region edges or a sim is comming and going + + + + Enable/disable storing terrain heightmaps in the + TerrainManager + + + Enable/disable sending periodic camera updates + + + Enable/disable automatically setting agent appearance at + login and after sim crossing + + + Enable/disable automatically setting the bandwidth throttle + after connecting to each simulator + The default throttle uses the equivalent of the maximum + bandwidth setting in the official client. If you do not set a + throttle your connection will by default be throttled well below + the minimum values and you may experience connection problems + + + Enable/disable the sending of pings to monitor lag and + packet loss + + + Should we connect to multiple sims? This will allow + viewing in to neighboring simulators and sim crossings + (Experimental) + + + If true, all object update packets will be decoded in to + native objects. If false, only updates for our own agent will be + decoded. Registering an event handler will force objects for that + type to always be decoded. If this is disabled the object tracking + will have missing or partial prim and avatar information + + + If true, when a cached object check is received from the + server the full object info will automatically be requested + + + Whether to establish connections to HTTP capabilities + servers for simulators + + + Whether to decode sim stats + + + The capabilities servers are currently designed to + periodically return a 502 error which signals for the client to + re-establish a connection. Set this to true to log those 502 errors + + + If true, any reference received for a folder or item + the library is not aware of will automatically be fetched + + + If true, and SEND_AGENT_UPDATES is true, + AgentUpdate packets will continuously be sent out to give the bot + smoother movement and autopiloting + + + If true, currently visible avatars will be stored + in dictionaries inside Simulator.ObjectAvatars. + If false, a new Avatar or Primitive object will be created + each time an object update packet is received + + + If true, currently visible avatars will be stored + in dictionaries inside Simulator.ObjectPrimitives. + If false, a new Avatar or Primitive object will be created + each time an object update packet is received + + + If true, position and velocity will periodically be + interpolated (extrapolated, technically) for objects and + avatars that are being tracked by the library. This is + necessary to increase the accuracy of speed and position + estimates for simulated objects + + + + If true, utilization statistics will be tracked. There is a minor penalty + in CPU time for enabling this option. + + + + If true, parcel details will be stored in the + Simulator.Parcels dictionary as they are received + + + + If true, an incoming parcel properties reply will automatically send + a request for the parcel access list + + + + + if true, an incoming parcel properties reply will automatically send + a request for the traffic count. + + + + + If true, images, and other assets downloaded from the server + will be cached in a local directory + + + + Path to store cached texture data + + + Maximum size cached files are allowed to take on disk (bytes) + + + Default color used for viewer particle effects + + + Maximum number of times to resend a failed packet + + + Throttle outgoing packet rate + + + UUID of a texture used by some viewers to indentify type of client used + + + + Download textures using GetTexture capability when available + + + + The maximum number of concurrent texture downloads allowed + Increasing this number will not necessarily increase texture retrieval times due to + simulator throttles + + + + The Refresh timer inteval is used to set the delay between checks for stalled texture downloads + + This is a static variable which applies to all instances + + + + Textures taking longer than this value will be flagged as timed out and removed from the pipeline + + + + + Get or set the minimum log level to output to the console by default + + If the library is not compiled with DEBUG defined and this level is set to DEBUG + You will get no output on the console. This behavior can be overriden by creating + a logger configuration file for log4net + + + + Attach avatar names to log messages + + + Log packet retransmission info + + + Log disk cache misses and other info + + + Constructor + Reference to a GridClient object + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Cost of uploading an asset + Read-only since this value is dynamically fetched at login + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Size of the byte array used to store raw packet data + + + Raw packet data buffer + + + Length of the data to transmit + + + EndPoint of the remote host + + + + Create an allocated UDP packet buffer for receiving a packet + + + + + Create an allocated UDP packet buffer for sending a packet + + EndPoint of the remote host + + + + Create an allocated UDP packet buffer for sending a packet + + EndPoint of the remote host + Size of the buffer to allocate for packet data + + + + Object pool for packet buffers. This is used to allocate memory for all + incoming and outgoing packets, and zerocoding buffers for those packets + + + + + Initialize the object pool in client mode + + Server to connect to + + + + + + Initialize the object pool in server mode + + + + + + + Returns a packet buffer with EndPoint set if the buffer is in + client mode, or with EndPoint set to null in server mode + + Initialized UDPPacketBuffer object + + + + Default constructor + + + + + Check a packet buffer out of the pool + + A packet buffer object + + + + + + + + OK + + + Transfer completed + + + + + + + + + Unknown error occurred + + + Equivalent to a 404 error + + + Client does not have permission for that resource + + + Unknown status + + + + + + + + + + + Unknown + + + Virtually all asset transfers use this channel + + + + + + + + + + + Asset from the asset server + + + Inventory item + + + Estate asset, such as an estate covenant + + + + + + + + + + + + + + + + + + When requesting image download, type of the image requested + + + + Normal in-world object texture + + + Avatar texture + + + Server baked avatar texture + + + + Image file format + + + + + + + + + Number of milliseconds passed since the last transfer + packet was received + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Number of milliseconds to wait for a transfer header packet if out of order data was received + + + The event subscribers. null if no subcribers + + + Raises the XferReceived event + A XferReceivedEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the AssetUploaded event + A AssetUploadedEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the UploadProgress event + A UploadProgressEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the InitiateDownload event + A InitiateDownloadEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the ImageReceiveProgress event + A ImageReceiveProgressEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + Texture download cache + + + + Default constructor + + A reference to the GridClient object + + + + Request an asset download + + Asset UUID + Asset type, must be correct for the transfer to succeed + Whether to give this transfer an elevated priority + The callback to fire when the simulator responds with the asset data + + + + Request an asset download + + Asset UUID + Asset type, must be correct for the transfer to succeed + Whether to give this transfer an elevated priority + Source location of the requested asset + The callback to fire when the simulator responds with the asset data + + + + Request an asset download + + Asset UUID + Asset type, must be correct for the transfer to succeed + Whether to give this transfer an elevated priority + Source location of the requested asset + UUID of the transaction + The callback to fire when the simulator responds with the asset data + + + + Request an asset download + + Asset UUID + Asset type, must be correct for the transfer to succeed + Whether to give this transfer an elevated priority + Source location of the requested asset + UUID of the transaction + The callback to fire when the simulator responds with the asset data + + + + Request an asset download through the almost deprecated Xfer system + + Filename of the asset to request + Whether or not to delete the asset + off the server after it is retrieved + Use large transfer packets or not + UUID of the file to request, if filename is + left empty + Asset type of vFileID, or + AssetType.Unknown if filename is not empty + Sets the FilePath in the request to Cache + (4) if true, otherwise Unknown (0) is used + + + + + + + Use UUID.Zero if you do not have the + asset ID but have all the necessary permissions + The item ID of this asset in the inventory + Use UUID.Zero if you are not requesting an + asset from an object inventory + The owner of this asset + Asset type + Whether to prioritize this asset download or not + + + + + Used to force asset data into the PendingUpload property, ie: for raw terrain uploads + + An AssetUpload object containing the data to upload to the simulator + + + + Request an asset be uploaded to the simulator + + The Object containing the asset data + If True, the asset once uploaded will be stored on the simulator + in which the client was connected in addition to being stored on the asset server + The of the transfer, can be used to correlate the upload with + events being fired + + + + Request an asset be uploaded to the simulator + + The of the asset being uploaded + A byte array containing the encoded asset data + If True, the asset once uploaded will be stored on the simulator + in which the client was connected in addition to being stored on the asset server + The of the transfer, can be used to correlate the upload with + events being fired + + + + Request an asset be uploaded to the simulator + + + Asset type to upload this data as + A byte array containing the encoded asset data + If True, the asset once uploaded will be stored on the simulator + in which the client was connected in addition to being stored on the asset server + The of the transfer, can be used to correlate the upload with + events being fired + + + + Initiate an asset upload + + The ID this asset will have if the + upload succeeds + Asset type to upload this data as + Raw asset data to upload + Whether to store this asset on the local + simulator or the grid-wide asset server + The tranaction id for the upload + The transaction ID of this transfer + + + + Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator + + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + A float indicating the requested priority for the transfer. Higher priority values tell the simulator + to prioritize the request before lower valued requests. An image already being transferred using the can have + its priority changed by resending the request with the new priority value + Number of quality layers to discard. + This controls the end marker of the data sent. Sending with value -1 combined with priority of 0 cancels an in-progress + transfer. + A bug exists in the Linden Simulator where a -1 will occasionally be sent with a non-zero priority + indicating an off-by-one error. + The packet number to begin the request at. A value of 0 begins the request + from the start of the asset texture + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + If true, the callback will be fired for each chunk of the downloaded image. + The callback asset parameter will contain all previously received chunks of the texture asset starting + from the beginning of the request + + Request an image and fire a callback when the request is complete + + Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, TextureDownloader_OnDownloadFinished); + + private void TextureDownloader_OnDownloadFinished(TextureRequestState state, AssetTexture asset) + { + if(state == TextureRequestState.Finished) + { + Console.WriteLine("Texture {0} ({1} bytes) has been successfully downloaded", + asset.AssetID, + asset.AssetData.Length); + } + } + + Request an image and use an inline anonymous method to handle the downloaded texture data + + Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, delegate(TextureRequestState state, AssetTexture asset) + { + if(state == TextureRequestState.Finished) + { + Console.WriteLine("Texture {0} ({1} bytes) has been successfully downloaded", + asset.AssetID, + asset.AssetData.Length); + } + } + ); + + Request a texture, decode the texture to a bitmap image and apply it to a imagebox + + Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, TextureDownloader_OnDownloadFinished); + + private void TextureDownloader_OnDownloadFinished(TextureRequestState state, AssetTexture asset) + { + if(state == TextureRequestState.Finished) + { + ManagedImage imgData; + Image bitmap; + + if (state == TextureRequestState.Finished) + { + OpenJPEG.DecodeToImage(assetTexture.AssetData, out imgData, out bitmap); + picInsignia.Image = bitmap; + } + } + } + + + + + + Overload: Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator + + The of the texture asset to download + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + + + + Overload: Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator + + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + + + + Overload: Request a texture asset from the simulator using the system to + manage the requests and re-assemble the image from the packets received from the simulator + + The of the texture asset to download + The of the texture asset. + Use for most textures, or for baked layer texture assets + The callback to fire when the image is retrieved. The callback + will contain the result of the request and the texture asset data + If true, the callback will be fired for each chunk of the downloaded image. + The callback asset parameter will contain all previously received chunks of the texture asset starting + from the beginning of the request + + + + Cancel a texture request + + The texture assets + + + + Requests download of a mesh asset + + UUID of the mesh asset + Callback when the request completes + + + + Fetach avatar texture on a grid capable of server side baking + + ID of the avatar + ID of the texture + Name of the part of the avatar texture applies to + Callback invoked on operation completion + + + + Lets TexturePipeline class fire the progress event + + The texture ID currently being downloaded + the number of bytes transferred + the total number of bytes expected + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Raised when the simulator responds sends + + + Raised during upload completes + + + Raised during upload with progres update + + + Fired when the simulator sends an InitiateDownloadPacket, used to download terrain .raw files + + + Fired when a texture is in the process of being downloaded by the TexturePipeline class + + + + Callback used for various asset download requests + + Transfer information + Downloaded asset, null on fail + + + + Callback used upon competition of baked texture upload + + Asset UUID of the newly uploaded baked texture + + + + A callback that fires upon the completition of the RequestMesh call + + Was the download successfull + Resulting mesh or null on problems + + + Xfer data + + + Upload data + + + Filename used on the simulator + + + Filename used by the client + + + UUID of the image that is in progress + + + Number of bytes received so far + + + Image size in bytes + + + Positional vector of the users position + + + Velocity vector of the position + + + At Orientation (X axis) of the position + + + Up Orientation (Y axis) of the position + + + Left Orientation (Z axis) of the position + + + + Contains all mesh faces that belong to a prim + + + + List of primitive faces + + + + Decodes mesh asset into FacetedMesh + + Mesh primitive + Asset retrieved from the asset server + Level of detail + Resulting decoded FacetedMesh + True if mesh asset decoding was successful + + + + Represents a string of characters encoded with specific formatting properties + + + + A text string containing main text of the notecard + + + List of s embedded on the notecard + + + Construct an Asset of type Notecard + + + + Construct an Asset object of type Notecard + + A unique specific to this asset + A byte array containing the raw asset data + + + + Encode the raw contents of a string with the specific Linden Text properties + + + + + Decode the raw asset data including the Linden Text properties + + true if the AssetData was successfully decoded + + + Override the base classes AssetType + + + + Represents an Animation + + + + Default Constructor + + + + Construct an Asset object of type Animation + + A unique specific to this asset + A byte array containing the raw asset data + + + Override the base classes AssetType + + + + + + + + + An instance of DelegateWrapper which calls InvokeWrappedDelegate, + which in turn calls the DynamicInvoke method of the wrapped + delegate + + + + + Callback used to call EndInvoke on the asynchronously + invoked DelegateWrapper + + + + + Executes the specified delegate with the specified arguments + asynchronously on a thread pool thread + + + + + + + Invokes the wrapped delegate synchronously + + + + + + + Calls EndInvoke on the wrapper and Close on the resulting WaitHandle + to prevent resource leaks + + + + + + Delegate to wrap another delegate and its arguments + + + + + + + + + + + The event subscribers, null of no subscribers + + + Raises the AttachedSound Event + A AttachedSoundEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the AttachedSoundGainChange Event + A AttachedSoundGainChangeEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the SoundTrigger Event + A SoundTriggerEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + The event subscribers, null of no subscribers + + + Raises the PreloadSound Event + A PreloadSoundEventArgs object containing + the data sent from the simulator + + + Thread sync lock object + + + + Construct a new instance of the SoundManager class, used for playing and receiving + sound assets + + A reference to the current GridClient instance + + + + Plays a sound in the current region at full volume from avatar position + + UUID of the sound to be played + + + + Plays a sound in the current region at full volume + + UUID of the sound to be played. + position for the sound to be played at. Normally the avatar. + + + + Plays a sound in the current region + + UUID of the sound to be played. + position for the sound to be played at. Normally the avatar. + volume of the sound, from 0.0 to 1.0 + + + + Plays a sound in the specified sim + + UUID of the sound to be played. + UUID of the sound to be played. + position for the sound to be played at. Normally the avatar. + volume of the sound, from 0.0 to 1.0 + + + + Play a sound asset + + UUID of the sound to be played. + handle id for the sim to be played in. + position for the sound to be played at. Normally the avatar. + volume of the sound, from 0.0 to 1.0 + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Raised when the simulator sends us data containing + sound + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Raised when the simulator sends us data containing + ... + + + Provides data for the event + The event occurs when the simulator sends + the sound data which emits from an agents attachment + + The following code example shows the process to subscribe to the event + and a stub to handle the data passed from the simulator + + // Subscribe to the AttachedSound event + Client.Sound.AttachedSound += Sound_AttachedSound; + + // process the data raised in the event here + private void Sound_AttachedSound(object sender, AttachedSoundEventArgs e) + { + // ... Process AttachedSoundEventArgs here ... + } + + + + + + Construct a new instance of the SoundTriggerEventArgs class + + Simulator where the event originated + The sound asset id + The ID of the owner + The ID of the object + The volume level + The + + + Simulator where the event originated + + + Get the sound asset id + + + Get the ID of the owner + + + Get the ID of the Object + + + Get the volume level + + + Get the + + + Provides data for the event + The event occurs when an attached sound + changes its volume level + + + + Construct a new instance of the AttachedSoundGainChangedEventArgs class + + Simulator where the event originated + The ID of the Object + The new volume level + + + Simulator where the event originated + + + Get the ID of the Object + + + Get the volume level + + + Provides data for the event + The event occurs when the simulator forwards + a request made by yourself or another agent to play either an asset sound or a built in sound + + Requests to play sounds where the is not one of the built-in + will require sending a request to download the sound asset before it can be played + + + The following code example uses the , + and + properties to display some information on a sound request on the window. + + // subscribe to the event + Client.Sound.SoundTrigger += Sound_SoundTrigger; + + // play the pre-defined BELL_TING sound + Client.Sound.SendSoundTrigger(Sounds.BELL_TING); + + // handle the response data + private void Sound_SoundTrigger(object sender, SoundTriggerEventArgs e) + { + Console.WriteLine("{0} played the sound {1} at volume {2}", + e.OwnerID, e.SoundID, e.Gain); + } + + + + + + Construct a new instance of the SoundTriggerEventArgs class + + Simulator where the event originated + The sound asset id + The ID of the owner + The ID of the object + The ID of the objects parent + The volume level + The regionhandle + The source position + + + Simulator where the event originated + + + Get the sound asset id + + + Get the ID of the owner + + + Get the ID of the Object + + + Get the ID of the objects parent + + + Get the volume level + + + Get the regionhandle + + + Get the source position + + + Provides data for the event + The event occurs when the simulator sends + the appearance data for an avatar + + The following code example uses the and + properties to display the selected shape of an avatar on the window. + + // subscribe to the event + Client.Avatars.AvatarAppearance += Avatars_AvatarAppearance; + + // handle the data when the event is raised + void Avatars_AvatarAppearance(object sender, AvatarAppearanceEventArgs e) + { + Console.WriteLine("The Agent {0} is using a {1} shape.", e.AvatarID, (e.VisualParams[31] > 0) : "male" ? "female") + } + + + + + + Construct a new instance of the PreloadSoundEventArgs class + + Simulator where the event originated + The sound asset id + The ID of the owner + The ID of the object + + + Simulator where the event originated + + + Get the sound asset id + + + Get the ID of the owner + + + Get the ID of the Object + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Status of the last application run. + Used for error reporting to the grid login service for statistical purposes. + + + + Application exited normally + + + Application froze + + + Application detected error and exited abnormally + + + Other crash + + + Application froze during logout + + + Application crashed during logout + + + + Login Request Parameters + + + + The URL of the Login Server + + + The number of milliseconds to wait before a login is considered + failed due to timeout + + + The request method + login_to_simulator is currently the only supported method + + + The Agents First name + + + The Agents Last name + + + A md5 hashed password + plaintext password will be automatically hashed + + + The agents starting location once logged in + Either "last", "home", or a string encoded URI + containing the simulator name and x/y/z coordinates e.g: uri:hooper&128&152&17 + + + A string containing the client software channel information + Second Life Release + + + The client software version information + The official viewer uses: Second Life Release n.n.n.n + where n is replaced with the current version of the viewer + + + A string containing the platform information the agent is running on + + + A string hash of the network cards Mac Address + + + Unknown or deprecated + + + A string hash of the first disk drives ID used to identify this clients uniqueness + + + A string containing the viewers Software, this is not directly sent to the login server but + instead is used to generate the Version string + + + A string representing the software creator. This is not directly sent to the login server but + is used by the library to generate the Version information + + + If true, this agent agrees to the Terms of Service of the grid its connecting to + + + Unknown + + + Status of the last application run sent to the grid login server for statistical purposes + + + An array of string sent to the login server to enable various options + + + A randomly generated ID to distinguish between login attempts. This value is only used + internally in the library and is never sent over the wire + + + + Default constuctor, initializes sane default values + + + + + Instantiates new LoginParams object and fills in the values + + Instance of GridClient to read settings from + Login first name + Login last name + Password + Login channnel (application name) + Client version, should be application name + version number + + + + Instantiates new LoginParams object and fills in the values + + Instance of GridClient to read settings from + Login first name + Login last name + Password + Login channnel (application name) + Client version, should be application name + version number + URI of the login server + + + + The decoded data returned from the login server after a successful login + + + + true, false, indeterminate + + + Login message of the day + + + M or PG, also agent_region_access and agent_access_max + + + + Parse LLSD Login Reply Data + + An + contaning the login response data + XML-RPC logins do not require this as XML-RPC.NET + automatically populates the struct properly using attributes + + + + Static pre-defined animations available to all agents + + + + Agent with afraid expression on face + + + Agent aiming a bazooka (right handed) + + + Agent aiming a bow (left handed) + + + Agent aiming a hand gun (right handed) + + + Agent aiming a rifle (right handed) + + + Agent with angry expression on face + + + Agent hunched over (away) + + + Agent doing a backflip + + + Agent laughing while holding belly + + + Agent blowing a kiss + + + Agent with bored expression on face + + + Agent bowing to audience + + + Agent brushing himself/herself off + + + Agent in busy mode + + + Agent clapping hands + + + Agent doing a curtsey bow + + + Agent crouching + + + Agent crouching while walking + + + Agent crying + + + Agent unanimated with arms out (e.g. setting appearance) + + + Agent re-animated after set appearance finished + + + Agent dancing + + + Agent dancing + + + Agent dancing + + + Agent dancing + + + Agent dancing + + + Agent dancing + + + Agent dancing + + + Agent dancing + + + Agent on ground unanimated + + + Agent boozing it up + + + Agent with embarassed expression on face + + + Agent with afraid expression on face + + + Agent with angry expression on face + + + Agent with bored expression on face + + + Agent crying + + + Agent showing disdain (dislike) for something + + + Agent with embarassed expression on face + + + Agent with frowning expression on face + + + Agent with kissy face + + + Agent expressing laughgter + + + Agent with open mouth + + + Agent with repulsed expression on face + + + Agent expressing sadness + + + Agent shrugging shoulders + + + Agent with a smile + + + Agent expressing surprise + + + Agent sticking tongue out + + + Agent with big toothy smile + + + Agent winking + + + Agent expressing worry + + + Agent falling down + + + Agent walking (feminine version) + + + Agent wagging finger (disapproval) + + + I'm not sure I want to know + + + Agent in superman position + + + Agent in superman position + + + Agent greeting another + + + Agent holding bazooka (right handed) + + + Agent holding a bow (left handed) + + + Agent holding a handgun (right handed) + + + Agent holding a rifle (right handed) + + + Agent throwing an object (right handed) + + + Agent in static hover + + + Agent hovering downward + + + Agent hovering upward + + + Agent being impatient + + + Agent jumping + + + Agent jumping with fervor + + + Agent point to lips then rear end + + + Agent landing from jump, finished flight, etc + + + Agent laughing + + + Agent landing from jump, finished flight, etc + + + Agent sitting on a motorcycle + + + + + + Agent moving head side to side + + + Agent moving head side to side with unhappy expression + + + Agent taunting another + + + + + + Agent giving peace sign + + + Agent pointing at self + + + Agent pointing at another + + + Agent preparing for jump (bending knees) + + + Agent punching with left hand + + + Agent punching with right hand + + + Agent acting repulsed + + + Agent trying to be Chuck Norris + + + Rocks, Paper, Scissors 1, 2, 3 + + + Agent with hand flat over other hand + + + Agent with fist over other hand + + + Agent with two fingers spread over other hand + + + Agent running + + + Agent appearing sad + + + Agent saluting + + + Agent shooting bow (left handed) + + + Agent cupping mouth as if shouting + + + Agent shrugging shoulders + + + Agent in sit position + + + Agent in sit position (feminine) + + + Agent in sit position (generic) + + + Agent sitting on ground + + + Agent sitting on ground + + + + + + Agent sleeping on side + + + Agent smoking + + + Agent inhaling smoke + + + + + + Agent taking a picture + + + Agent standing + + + Agent standing up + + + Agent standing + + + Agent standing + + + Agent standing + + + Agent standing + + + Agent stretching + + + Agent in stride (fast walk) + + + Agent surfing + + + Agent acting surprised + + + Agent striking with a sword + + + Agent talking (lips moving) + + + Agent throwing a tantrum + + + Agent throwing an object (right handed) + + + Agent trying on a shirt + + + Agent turning to the left + + + Agent turning to the right + + + Agent typing + + + Agent walking + + + Agent whispering + + + Agent whispering with fingers in mouth + + + Agent winking + + + Agent winking + + + Agent worried + + + Agent nodding yes + + + Agent nodding yes with happy face + + + Agent floating with legs and arms crossed + + + + A dictionary containing all pre-defined animations + + A dictionary containing the pre-defined animations, + where the key is the animations ID, and the value is a string + containing a name to identify the purpose of the animation + + + + A linkset asset, containing a parent primitive and zero or more children + + + + Initializes a new instance of an AssetPrim object + + + + Initializes a new instance of an AssetPrim object + + A unique specific to this asset + A byte array containing the raw asset data + + + + + + + + + + + + + + Override the base classes AssetType + + + + Only used internally for XML serialization/deserialization + + + + + The deserialized form of a single primitive in a linkset asset + + + + + + + Looking direction, must be a normalized vector + Up direction, must be a normalized vector + + + + Align the coordinate frame X and Y axis with a given rotation + around the Z axis in radians + + Absolute rotation around the Z axis in + radians + + + Origin position of this coordinate frame + + + X axis of this coordinate frame, or Forward/At in grid terms + + + Y axis of this coordinate frame, or Left in grid terms + + + Z axis of this coordinate frame, or Up in grid terms + + + + + + + + The avatar has no rights + + + The avatar can see the online status of the target avatar + + + The avatar can see the location of the target avatar on the map + + + The avatar can modify the ojects of the target avatar + + + + This class holds information about an avatar in the friends list. There are two ways + to interface to this class. The first is through the set of boolean properties. This is the typical + way clients of this class will use it. The second interface is through two bitflag properties, + TheirFriendsRights and MyFriendsRights + + + + + Used internally when building the initial list of friends at login time + + System ID of the avatar being prepesented + Rights the friend has to see you online and to modify your objects + Rights you have to see your friend online and to modify their objects + + + + FriendInfo represented as a string + + A string reprentation of both my rights and my friends rights + + + + System ID of the avatar + + + + + full name of the avatar + + + + + True if the avatar is online + + + + + True if the friend can see if I am online + + + + + True if the friend can see me on the map + + + + + True if the freind can modify my objects + + + + + True if I can see if my friend is online + + + + + True if I can see if my friend is on the map + + + + + True if I can modify my friend's objects + + + + + My friend's rights represented as bitmapped flags + + + + + My rights represented as bitmapped flags + + + + + This class is used to add and remove avatars from your friends list and to manage their permission. + + + + The event subscribers. null if no subcribers + + + Raises the FriendOnline event + A FriendInfoEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the FriendOffline event + A FriendInfoEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the FriendRightsUpdate event + A FriendInfoEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the FriendNames event + A FriendNamesEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the FriendshipOffered event + A FriendshipOfferedEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the FriendshipResponse event + A FriendshipResponseEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the FriendshipTerminated event + A FriendshipTerminatedEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + The event subscribers. null if no subcribers + + + Raises the FriendFoundReply event + A FriendFoundReplyEventArgs object containing the + data returned from the data server + + + Thread sync lock object + + + + A dictionary of key/value pairs containing known friends of this avatar. + + The Key is the of the friend, the value is a + object that contains detailed information including permissions you have and have given to the friend + + + + + A Dictionary of key/value pairs containing current pending frienship offers. + + The key is the of the avatar making the request, + the value is the of the request which is used to accept + or decline the friendship offer + + + + + Internal constructor + + A reference to the GridClient Object + + + + Accept a friendship request + + agentID of avatatar to form friendship with + imSessionID of the friendship request message + + + + Decline a friendship request + + of friend + imSessionID of the friendship request message + + + + Overload: Offer friendship to an avatar. + + System ID of the avatar you are offering friendship to + + + + Offer friendship to an avatar. + + System ID of the avatar you are offering friendship to + A message to send with the request + + + + Terminate a friendship with an avatar + + System ID of the avatar you are terminating the friendship with + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + Change the rights of a friend avatar. + + the of the friend + the new rights to give the friend + This method will implicitly set the rights to those passed in the rights parameter. + + + + Use to map a friends location on the grid. + + Friends UUID to find + + + + + Use to track a friends movement on the grid + + Friends Key + + + + Ask for a notification of friend's online status + + Friend's UUID + + + + This handles the asynchronous response of a RequestAvatarNames call. + + + names cooresponding to the the list of IDs sent the the RequestAvatarNames call. + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + Process an incoming packet and raise the appropriate events + The sender + The EventArgs object containing the packet data + + + + Populate FriendList with data from the login reply + + true if login was successful + true if login request is requiring a redirect + A string containing the response to the login request + A string containing the reason for the request + A object containing the decoded + reply from the login server + + + Raised when the simulator sends notification one of the members in our friends list comes online + + + Raised when the simulator sends notification one of the members in our friends list goes offline + + + Raised when the simulator sends notification one of the members in our friends list grants or revokes permissions + + + Raised when the simulator sends us the names on our friends list + + + Raised when the simulator sends notification another agent is offering us friendship + + + Raised when a request we sent to friend another agent is accepted or declined + + + Raised when the simulator sends notification one of the members in our friends list has terminated + our friendship + + + Raised when the simulator sends the location of a friend we have + requested map location info for + + + Contains information on a member of our friends list + + + + Construct a new instance of the FriendInfoEventArgs class + + The FriendInfo + + + Get the FriendInfo + + + Contains Friend Names + + + + Construct a new instance of the FriendNamesEventArgs class + + A dictionary where the Key is the ID of the Agent, + and the Value is a string containing their name + + + A dictionary where the Key is the ID of the Agent, + and the Value is a string containing their name + + + Sent when another agent requests a friendship with our agent + + + + Construct a new instance of the FriendshipOfferedEventArgs class + + The ID of the agent requesting friendship + The name of the agent requesting friendship + The ID of the session, used in accepting or declining the + friendship offer + + + Get the ID of the agent requesting friendship + + + Get the name of the agent requesting friendship + + + Get the ID of the session, used in accepting or declining the + friendship offer + + + A response containing the results of our request to form a friendship with another agent + + + + Construct a new instance of the FriendShipResponseEventArgs class + + The ID of the agent we requested a friendship with + The name of the agent we requested a friendship with + true if the agent accepted our friendship offer + + + Get the ID of the agent we requested a friendship with + + + Get the name of the agent we requested a friendship with + + + true if the agent accepted our friendship offer + + + Contains data sent when a friend terminates a friendship with us + + + + Construct a new instance of the FrindshipTerminatedEventArgs class + + The ID of the friend who terminated the friendship with us + The name of the friend who terminated the friendship with us + + + Get the ID of the agent that terminated the friendship with us + + + Get the name of the agent that terminated the friendship with us + + + + Data sent in response to a request which contains the information to allow us to map the friends location + + + + + Construct a new instance of the FriendFoundReplyEventArgs class + + The ID of the agent we have requested location information for + The region handle where our friend is located + The simulator local position our friend is located + + + Get the ID of the agent we have received location information for + + + Get the region handle where our mapped friend is located + + + Get the simulator local position where our friend is located + + + + Avatar profile flags + + + + + Represents an avatar (other than your own) + + + + Groups that this avatar is a member of + + + Positive and negative ratings + + + Avatar properties including about text, profile URL, image IDs and + publishing settings + + + Avatar interests including spoken languages, skills, and "want to" + choices + + + Movement control flags for avatars. Typically not set or used by + clients. To move your avatar, use Client.Self.Movement instead + + + + Contains the visual parameters describing the deformation of the avatar + + + + + Appearance version. Value greater than 0 indicates using server side baking + + + + + Version of the Current Outfit Folder that the appearance is based on + + + + + Appearance flags. Introduced with server side baking, currently unused. + + + + + List of current avatar animations + + + + + Default constructor + + + + First name + + + Last name + + + Full name + + + Active group + + + + Positive and negative ratings + + + + Positive ratings for Behavior + + + Negative ratings for Behavior + + + Positive ratings for Appearance + + + Negative ratings for Appearance + + + Positive ratings for Building + + + Negative ratings for Building + + + Positive ratings given by this avatar + + + Negative ratings given by this avatar + + + + Avatar properties including about text, profile URL, image IDs and + publishing settings + + + + First Life about text + + + First Life image ID + + + + + + + + + + + + + + + Profile image ID + + + Flags of the profile + + + Web URL for this profile + + + Should this profile be published on the web + + + Avatar Online Status + + + Is this a mature profile + + + + + + + + + + Avatar interests including spoken languages, skills, and "want to" + choices + + + + Languages profile field + + + + + + + + + + + + + + + + Level of Detail mesh + + + + + Represents an Animation + + + + Default Constructor + + + + Construct an Asset object of type Animation + + Asset type + A unique specific to this asset + A byte array containing the raw asset data + + + Override the base classes AssetType + + + The event subscribers. null if no subcribers + + + Raises the LandPatchReceived event + A LandPatchReceivedEventArgs object containing the + data returned from the simulator + + + Thread sync lock object + + + + Default constructor + + + + + Raised when the simulator responds sends + + + Simulator from that sent tha data + + + Sim coordinate of the patch + + + Sim coordinate of the patch + + + Size of tha patch + + + Heightmap for the patch + + + + Registers, unregisters, and fires events generated by incoming packets + + + + Reference to the GridClient object + + + + Default constructor + + + + + + Register an event handler + + Use PacketType.Default to fire this event on every + incoming packet + Packet type to register the handler for + Callback to be fired + True if this callback should be ran + asynchronously, false to run it synchronous + + + + Unregister an event handler + + Packet type to unregister the handler for + Callback to be unregistered + + + + Fire the events registered for this packet type + + Incoming packet type + Incoming packet + Simulator this packet was received from + + + + Object that is passed to worker threads in the ThreadPool for + firing packet callbacks + + + + Callback to fire for this packet + + + Reference to the simulator that this packet came from + + + The packet that needs to be processed + + + + Registers, unregisters, and fires events generated by the Capabilities + event queue + + + + Reference to the GridClient object + + + + Default constructor + + Reference to the GridClient object + + + + Register an new event handler for a capabilities event sent via the EventQueue + + Use String.Empty to fire this event on every CAPS event + Capability event name to register the + handler for + Callback to fire + + + + Unregister a previously registered capabilities handler + + Capability event name unregister the + handler for + Callback to unregister + + + + Fire the events registered for this event type synchronously + + Capability name + Decoded event body + Reference to the simulator that + generated this event + + + + Fire the events registered for this event type asynchronously + + Capability name + Decoded event body + Reference to the simulator that + generated this event + + + + Object that is passed to worker threads in the ThreadPool for + firing CAPS callbacks + + + + Callback to fire for this packet + + + Name of the CAPS event + + + Strongly typed decoded data + + + Reference to the simulator that generated this event + + + + Represents an LSL Text object containing a string of UTF encoded characters + + + + A string of characters represting the script contents + + + Initializes a new AssetScriptText object + + + + Initializes a new AssetScriptText object with parameters + + A unique specific to this asset + A byte array containing the raw asset data + + + + Encode a string containing the scripts contents into byte encoded AssetData + + + + + Decode a byte array containing the scripts contents into a string + + true if decoding is successful + + + Override the base classes AssetType + @@ -4596,15 +21177,6 @@ A generic value, not an actual packet type - - - Attempts to convert an LLSD structure to a known Packet type - - Event name, this must match an actual - packet name for a Packet to be successfully built - LLSD to convert to a Packet - A Packet on success, otherwise null - @@ -8022,3780 +24594,238 @@ - + - Add a custom decoder callback - - The key of the field to decode - The custom decode handler - - - - Remove a custom decoder callback - - The key of the field to decode - The custom decode handler - - - - Creates a formatted string containing the values of a Packet - - The Packet - A formatted string of values of the nested items in the Packet object - - - - Decode an IMessage object into a beautifully formatted string - - The IMessage object - Recursion level (used for indenting) - A formatted string containing the names and values of the source object - - - - A custom decoder callback - - The key of the object - the data to decode - A string represending the fieldData - - - - Access to the data server which allows searching for land, events, people, etc + pre-defined built in sounds - - The event subscribers. null if no subcribers - - - Raises the EventInfoReply event - An EventInfoReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the DirEventsReply event - An DirEventsReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the PlacesReply event - A PlacesReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the DirPlacesReply event - A DirPlacesReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the DirClassifiedsReply event - A DirClassifiedsReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the DirGroupsReply event - A DirGroupsReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the DirPeopleReply event - A DirPeopleReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the DirLandReply event - A DirLandReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - - Constructs a new instance of the DirectoryManager class - - An instance of GridClient - - - - Query the data server for a list of classified ads containing the specified string. - Defaults to searching for classified placed in any category, and includes PG, Adult and Mature - results. - - Responses are sent 16 per response packet, there is no way to know how many results a query reply will contain however assuming - the reply packets arrived ordered, a response with less than 16 entries would indicate all results have been received - - The event is raised when a response is received from the simulator - - A string containing a list of keywords to search for - A UUID to correlate the results when the event is raised - - - - Query the data server for a list of classified ads which contain specified keywords (Overload) - - The event is raised when a response is received from the simulator - - A string containing a list of keywords to search for - The category to search - A set of flags which can be ORed to modify query options - such as classified maturity rating. - A UUID to correlate the results when the event is raised - - Search classified ads containing the key words "foo" and "bar" in the "Any" category that are either PG or Mature - - UUID searchID = StartClassifiedSearch("foo bar", ClassifiedCategories.Any, ClassifiedQueryFlags.PG | ClassifiedQueryFlags.Mature); - - - - Responses are sent 16 at a time, there is no way to know how many results a query reply will contain however assuming - the reply packets arrived ordered, a response with less than 16 entries would indicate all results have been received - - - - - Starts search for places (Overloaded) - - The event is raised when a response is received from the simulator - - Search text - Each request is limited to 100 places - being returned. To get the first 100 result entries of a request use 0, - from 100-199 use 1, 200-299 use 2, etc. - A UUID to correlate the results when the event is raised - - - - Queries the dataserver for parcels of land which are flagged to be shown in search - - The event is raised when a response is received from the simulator - - A string containing a list of keywords to search for separated by a space character - A set of flags which can be ORed to modify query options - such as classified maturity rating. - The category to search - Each request is limited to 100 places - being returned. To get the first 100 result entries of a request use 0, - from 100-199 use 1, 200-299 use 2, etc. - A UUID to correlate the results when the event is raised - - Search places containing the key words "foo" and "bar" in the "Any" category that are either PG or Adult - - UUID searchID = StartDirPlacesSearch("foo bar", DirFindFlags.DwellSort | DirFindFlags.IncludePG | DirFindFlags.IncludeAdult, ParcelCategory.Any, 0); - - - - Additional information on the results can be obtained by using the ParcelManager.InfoRequest method - - - - - Starts a search for land sales using the directory - - The event is raised when a response is received from the simulator - - What type of land to search for. Auction, - estate, mainland, "first land", etc - The OnDirLandReply event handler must be registered before - calling this function. There is no way to determine how many - results will be returned, or how many times the callback will be - fired other than you won't get more than 100 total parcels from - each query. - - - - Starts a search for land sales using the directory - - The event is raised when a response is received from the simulator - - What type of land to search for. Auction, - estate, mainland, "first land", etc - Maximum price to search for - Maximum area to search for - Each request is limited to 100 parcels - being returned. To get the first 100 parcels of a request use 0, - from 100-199 use 1, 200-299 use 2, etc. - The OnDirLandReply event handler must be registered before - calling this function. There is no way to determine how many - results will be returned, or how many times the callback will be - fired other than you won't get more than 100 total parcels from - each query. - - - - Send a request to the data server for land sales listings - - - Flags sent to specify query options - - Available flags: - Specify the parcel rating with one or more of the following: - IncludePG IncludeMature IncludeAdult - - Specify the field to pre sort the results with ONLY ONE of the following: - PerMeterSort NameSort AreaSort PricesSort - - Specify the order the results are returned in, if not specified the results are pre sorted in a Descending Order - SortAsc - - Specify additional filters to limit the results with one or both of the following: - LimitByPrice LimitByArea - - Flags can be combined by separating them with the | (pipe) character - - Additional details can be found in - - What type of land to search for. Auction, - Estate or Mainland - Maximum price to search for when the - DirFindFlags.LimitByPrice flag is specified in findFlags - Maximum area to search for when the - DirFindFlags.LimitByArea flag is specified in findFlags - Each request is limited to 100 parcels - being returned. To get the first 100 parcels of a request use 0, - from 100-199 use 100, 200-299 use 200, etc. - The event will be raised with the response from the simulator - - There is no way to determine how many results will be returned, or how many times the callback will be - fired other than you won't get more than 100 total parcels from - each reply. - - Any land set for sale to either anybody or specific to the connected agent will be included in the - results if the land is included in the query - - - // request all mainland, any maturity rating that is larger than 512 sq.m - StartLandSearch(DirFindFlags.SortAsc | DirFindFlags.PerMeterSort | DirFindFlags.LimitByArea | DirFindFlags.IncludePG | DirFindFlags.IncludeMature | DirFindFlags.IncludeAdult, SearchTypeFlags.Mainland, 0, 512, 0); - - - - - Search for Groups - - The name or portion of the name of the group you wish to search for - Start from the match number - - - - - Search for Groups - - The name or portion of the name of the group you wish to search for - Start from the match number - Search flags - - - - - Search the People directory for other avatars - - The name or portion of the name of the avatar you wish to search for - - - - - - Search Places for parcels of land you personally own - - - - - Searches Places for land owned by the specified group - - ID of the group you want to recieve land list for (You must be a member of the group) - Transaction (Query) ID which can be associated with results from your request. - - - - Search the Places directory for parcels that are listed in search and contain the specified keywords - - A string containing the keywords to search for - Transaction (Query) ID which can be associated with results from your request. - - - - Search Places - All Options - - One of the Values from the DirFindFlags struct, ie: AgentOwned, GroupOwned, etc. - One of the values from the SearchCategory Struct, ie: Any, Linden, Newcomer - A string containing a list of keywords to search for separated by a space character - String Simulator Name to search in - LLUID of group you want to recieve results for - Transaction (Query) ID which can be associated with results from your request. - Transaction (Query) ID which can be associated with results from your request. - - - - Search All Events with specifid searchText in all categories, includes PG, Mature and Adult - - A string containing a list of keywords to search for separated by a space character - Each request is limited to 100 entries - being returned. To get the first group of entries of a request use 0, - from 100-199 use 100, 200-299 use 200, etc. - UUID of query to correlate results in callback. - - - - Search Events - - A string containing a list of keywords to search for separated by a space character - One or more of the following flags: DateEvents, IncludePG, IncludeMature, IncludeAdult - from the Enum - - Multiple flags can be combined by separating the flags with the | (pipe) character - "u" for in-progress and upcoming events, -or- number of days since/until event is scheduled - For example "0" = Today, "1" = tomorrow, "2" = following day, "-1" = yesterday, etc. - Each request is limited to 100 entries - being returned. To get the first group of entries of a request use 0, - from 100-199 use 100, 200-299 use 200, etc. - EventCategory event is listed under. - UUID of query to correlate results in callback. - - - Requests Event Details - ID of Event returned from the method - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming event message - The Unique Capabilities Key - The event message containing the data - The simulator the message originated from - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming event message - The Unique Capabilities Key - The event message containing the data - The simulator the message originated from - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Raised when the data server responds to a request. - - - Classified Ad categories - - - Classified is listed in the Any category - - - Classified is shopping related - - - Classified is - - + - + - + - + - + - + - + - - Event Categories - - + - + + coins + + + cash register bell + + - + - + + rubber + + + plastic + + + flesh + + + wood splintering? + + + glass break + + + metal clunk + + + whoosh + + + shake + + - + + ding + + - + - + - + - + - + - + - + - - - Query Flags used in many of the DirectoryManager methods to specify which query to execute and how to return the results. - - Flags can be combined using the | (pipe) character, not all flags are available in all queries - - - - Query the People database - - + - + - - Query the Groups database - - - Query the Events database - - - Query the land holdings database for land owned by the currently connected agent - - + - - Query the land holdings database for land which is owned by a Group - - - Specifies the query should pre sort the results based upon traffic - when searching the Places database - - + - + - + - - - - - Specifies the query should pre sort the results in an ascending order when searching the land sales database. - This flag is only used when searching the land sales database - - - Specifies the query should pre sort the results using the SalePrice field when searching the land sales database. - This flag is only used when searching the land sales database - - - Specifies the query should pre sort the results by calculating the average price/sq.m (SalePrice / Area) when searching the land sales database. - This flag is only used when searching the land sales database - - - Specifies the query should pre sort the results using the ParcelSize field when searching the land sales database. - This flag is only used when searching the land sales database - - - Specifies the query should pre sort the results using the Name field when searching the land sales database. - This flag is only used when searching the land sales database - - - When set, only parcels less than the specified Price will be included when searching the land sales database. - This flag is only used when searching the land sales database - - - When set, only parcels greater than the specified Size will be included when searching the land sales database. - This flag is only used when searching the land sales database - - - - - - - - - Include PG land in results. This flag is used when searching both the Groups, Events and Land sales databases - - - Include Mature land in results. This flag is used when searching both the Groups, Events and Land sales databases - - - Include Adult land in results. This flag is used when searching both the Groups, Events and Land sales databases - - - - - + - Land types to search dataserver for + A dictionary containing all pre-defined sounds + A dictionary containing the pre-defined sounds, + where the key is the sounds ID, and the value is a string + containing a name to identify the purpose of the sound - - Search Auction, Mainland and Estate - - - Land which is currently up for auction - - - Parcels which are on the mainland (Linden owned) continents - - - Parcels which are on privately owned simulators - - - - The content rating of the event - - - - Event is PG - - - Event is Mature - - - Event is Adult - - - - Classified Ad Options - - There appear to be two formats the flags are packed in. - This set of flags is for the newer style - - - - - - - - - - - - - - - - - - - Classified ad query options - - - - Include all ads in results - - - Include PG ads in results - - - Include Mature ads in results - - - Include Adult ads in results - - - - The For Sale flag in PlacesReplyData - - - - Parcel is not listed for sale - - - Parcel is For Sale - - - - A classified ad on the grid - - - - UUID for this ad, useful for looking up detailed - information about it - - - The title of this classified ad - - - Flags that show certain options applied to the classified - - - Creation date of the ad - - - Expiration date of the ad - - - Price that was paid for this ad - - - Print the struct data as a string - A string containing the field name, and field value - - - - A parcel retrieved from the dataserver such as results from the - "For-Sale" listings or "Places" Search - - - - The unique dataserver parcel ID - This id is used to obtain additional information from the entry - by using the method - - - A string containing the name of the parcel - - - The size of the parcel - This field is not returned for Places searches - - - The price of the parcel - This field is not returned for Places searches - - - If True, this parcel is flagged to be auctioned - - - If true, this parcel is currently set for sale - - - Parcel traffic - - - Print the struct data as a string - A string containing the field name, and field value - - - - An Avatar returned from the dataserver - - - - Online status of agent - This field appears to be obsolete and always returns false - - - The agents first name - - - The agents last name - - - The agents - - - Print the struct data as a string - A string containing the field name, and field value - - - - Response to a "Groups" Search - - - - The Group ID - - - The name of the group - - - The current number of members - - - Print the struct data as a string - A string containing the field name, and field value - - - - Parcel information returned from a request - - Represents one of the following: - A parcel of land on the grid that has its Show In Search flag set - A parcel of land owned by the agent making the request - A parcel of land owned by a group the agent making the request is a member of - - - In a request for Group Land, the First record will contain an empty record - - Note: This is not the same as searching the land for sale data source - - - - The ID of the Agent of Group that owns the parcel - - - The name - - - The description - - - The Size of the parcel - - - The billable Size of the parcel, for mainland - parcels this will match the ActualArea field. For Group owned land this will be 10 percent smaller - than the ActualArea. For Estate land this will always be 0 - - - Indicates the ForSale status of the parcel - - - The Gridwide X position - - - The Gridwide Y position - - - The Z position of the parcel, or 0 if no landing point set - - - The name of the Region the parcel is located in - - - The Asset ID of the parcels Snapshot texture - - - The calculated visitor traffic - - - The billing product SKU - Known values are: - - 023Mainland / Full Region - 024Estate / Full Region - 027Estate / Openspace - 029Estate / Homestead - 129Mainland / Homestead (Linden Owned) - - - - - No longer used, will always be 0 - - - Get a SL URL for the parcel - A string, containing a standard SLURL - - - Print the struct data as a string - A string containing the field name, and field value - - - - An "Event" Listing summary - - - - The ID of the event creator - - - The name of the event - - - The events ID - - - A string containing the short date/time the event will begin - - - The event start time in Unixtime (seconds since epoch) - - - The events maturity rating - - - Print the struct data as a string - A string containing the field name, and field value - - - - The details of an "Event" - - - - The events ID - - - The ID of the event creator - - - The name of the event - - - The category - - - The events description - - - The short date/time the event will begin - - - The event start time in Unixtime (seconds since epoch) UTC adjusted - - - The length of the event in minutes - - - 0 if no cover charge applies - - - The cover charge amount in L$ if applicable - - - The name of the region where the event is being held - - - The gridwide location of the event - - - The maturity rating - - - Get a SL URL for the parcel where the event is hosted - A string, containing a standard SLURL - - - Print the struct data as a string - A string containing the field name, and field value - - - Contains the Event data returned from the data server from an EventInfoRequest - - - Construct a new instance of the EventInfoReplyEventArgs class - A single EventInfo object containing the details of an event - - - - A single EventInfo object containing the details of an event - - - - Contains the "Event" detail data returned from the data server - - - Construct a new instance of the DirEventsReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list containing the "Events" returned by the search query - - - The ID returned by - - - A list of "Events" returned by the data server - - - Contains the "Event" list data returned from the data server - - - Construct a new instance of PlacesReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list containing the "Places" returned by the data server query - - - The ID returned by - - - A list of "Places" returned by the data server - - - Contains the places data returned from the data server - - - Construct a new instance of the DirPlacesReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list containing land data returned by the data server - - - The ID returned by - - - A list containing Places data returned by the data server - - - Contains the classified data returned from the data server - - - Construct a new instance of the DirClassifiedsReplyEventArgs class - A list of classified ad data returned from the data server - - - A list containing Classified Ads returned by the data server - - - Contains the group data returned from the data server - - - Construct a new instance of the DirGroupsReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list of groups data returned by the data server - - - The ID returned by - - - A list containing Groups data returned by the data server - - - Contains the people data returned from the data server - - - Construct a new instance of the DirPeopleReplyEventArgs class - The ID of the query returned by the data server. - This will correlate to the ID returned by the method - A list of people data returned by the data server - - - The ID returned by - - - A list containing People data returned by the data server - - - Contains the land sales data returned from the data server - - - Construct a new instance of the DirLandReplyEventArgs class - A list of parcels for sale returned by the data server - - - A list containing land forsale data returned by the data server - - - - Interface requirements for Messaging system - - - - - Image width - - - - - Image height - - - - - Image channel flags - - - - - Red channel data - - - - - Green channel data - - - - - Blue channel data - - - - - Alpha channel data - - - - - Bump channel data - - - - - Create a new blank image - - width - height - channel flags - - - - - - - - - - Convert the channels in the image. Channels are created or destroyed as required. - - new channel flags - - - - Resize or stretch the image using nearest neighbor (ugly) resampling - - new width - new height - - - - Create a byte array containing 32-bit RGBA data with a bottom-left - origin, suitable for feeding directly into OpenGL - - A byte array containing raw texture data - - - - Create a byte array containing 32-bit RGBA data with a bottom-left - origin, suitable for feeding directly into OpenGL - - A byte array containing raw texture data - - - - Represents an Animation - - - - Default Constructor - - - - Construct an Asset object of type Animation - - Asset type - A unique specific to this asset - A byte array containing the raw asset data - - - Override the base classes AssetType - - - - Represents a Landmark with RegionID and Position vector - - - - UUID of the Landmark target region - - - Local position of the target - - - Construct an Asset of type Landmark - - - - Construct an Asset object of type Landmark - - A unique specific to this asset - A byte array containing the raw asset data - - - - Encode the raw contents of a string with the specific Landmark format - - - - - Decode the raw asset data, populating the RegionID and Position - - true if the AssetData was successfully decoded to a UUID and Vector - - - Override the base classes AssetType - - + - - - An instance of DelegateWrapper which calls InvokeWrappedDelegate, - which in turn calls the DynamicInvoke method of the wrapped - delegate - - - - - Callback used to call EndInvoke on the asynchronously - invoked DelegateWrapper - - - - - Executes the specified delegate with the specified arguments - asynchronously on a thread pool thread - - - - - - - Invokes the wrapped delegate synchronously - - - - - - - Calls EndInvoke on the wrapper and Close on the resulting WaitHandle - to prevent resource leaks - - - - - - Delegate to wrap another delegate and its arguments - - - - - - - The current status of a texture request as it moves through the pipeline or final result of a texture request. - - - - The initial state given to a request. Requests in this state - are waiting for an available slot in the pipeline - - - A request that has been added to the pipeline and the request packet - has been sent to the simulator - - - A request that has received one or more packets back from the simulator - - - A request that has received all packets back from the simulator - - - A request that has taken longer than - to download OR the initial packet containing the packet information was never received - - - The texture request was aborted by request of the agent - - - The simulator replied to the request that it was not able to find the requested texture - - - - A callback fired to indicate the status or final state of the requested texture. For progressive - downloads this will fire each time new asset data is returned from the simulator. - - The indicating either Progress for textures not fully downloaded, - or the final result of the request after it has been processed through the TexturePipeline - The object containing the Assets ID, raw data - and other information. For progressive rendering the will contain - the data from the beginning of the file. For failed, aborted and timed out requests it will contain - an empty byte array. - - - - Texture request download handler, allows a configurable number of download slots which manage multiple - concurrent texture downloads from the - - This class makes full use of the internal - system for full texture downloads. - - - A dictionary containing all pending and in-process transfer requests where the Key is both the RequestID - and also the Asset Texture ID, and the value is an object containing the current state of the request and also - the asset data as it is being re-assembled - - - Holds the reference to the client object - - - Maximum concurrent texture requests allowed at a time - - - An array of objects used to manage worker request threads - - - An array of worker slots which shows the availablity status of the slot - - - The primary thread which manages the requests. - - - true if the TexturePipeline is currently running - - - A synchronization object used by the primary thread - - - A refresh timer used to increase the priority of stalled requests - - - - Default constructor, Instantiates a new copy of the TexturePipeline class - - Reference to the instantiated object - - - - Initialize callbacks required for the TexturePipeline to operate - - - - - Shutdown the TexturePipeline and cleanup any callbacks or transfers - - - - - Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator - - The of the texture asset to download - The of the texture asset. - Use for most textures, or for baked layer texture assets - A float indicating the requested priority for the transfer. Higher priority values tell the simulator - to prioritize the request before lower valued requests. An image already being transferred using the can have - its priority changed by resending the request with the new priority value - Number of quality layers to discard. - This controls the end marker of the data sent - The packet number to begin the request at. A value of 0 begins the request - from the start of the asset texture - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - If true, the callback will be fired for each chunk of the downloaded image. - The callback asset parameter will contain all previously received chunks of the texture asset starting - from the beginning of the request - - - - Sends the actual request packet to the simulator - - The image to download - Type of the image to download, either a baked - avatar texture or a normal texture - Priority level of the download. Default is - 1,013,000.0f - Number of quality layers to discard. - This controls the end marker of the data sent - Packet number to start the download at. - This controls the start marker of the data sent - Sending a priority of 0 and a discardlevel of -1 aborts - download - - - - Cancel a pending or in process texture request - - The texture assets unique ID - - - - Master Download Thread, Queues up downloads in the threadpool - - - - - The worker thread that sends the request and handles timeouts - - A object containing the request details - - - - Handle responses from the simulator that tell us a texture we have requested is unable to be located - or no longer exists. This will remove the request from the pipeline and free up a slot if one is in use - - The sender - The EventArgs object containing the packet data - - - - Handles the remaining Image data that did not fit in the initial ImageData packet - - The sender - The EventArgs object containing the packet data - - - - Handle the initial ImageDataPacket sent from the simulator - - The sender - The EventArgs object containing the packet data - - - Current number of pending and in-process transfers - - - - A request task containing information and status of a request as it is processed through the - - - - The current which identifies the current status of the request - - - The Unique Request ID, This is also the Asset ID of the texture being requested - - - The slot this request is occupying in the threadpoolSlots array - - - The ImageType of the request. - - - The callback to fire when the request is complete, will include - the and the - object containing the result data - - - If true, indicates the callback will be fired whenever new data is returned from the simulator. - This is used to progressively render textures as portions of the texture are received. - - - An object that maintains the data of an request thats in-process. - - - Size of the byte array used to store raw packet data - - - Raw packet data buffer - - - Length of the data to transmit - - - EndPoint of the remote host - - - - Create an allocated UDP packet buffer for receiving a packet - - - - - Create an allocated UDP packet buffer for sending a packet - - EndPoint of the remote host - - - - Create an allocated UDP packet buffer for sending a packet - - EndPoint of the remote host - Size of the buffer to allocate for packet data - - - - Object pool for packet buffers. This is used to allocate memory for all - incoming and outgoing packets, and zerocoding buffers for those packets - - - - - Creates a new instance of the ObjectPoolBase class. Initialize MUST be called - after using this constructor. - - - - - Creates a new instance of the ObjectPool Base class. - - The object pool is composed of segments, which - are allocated whenever the size of the pool is exceeded. The number of items - in a segment should be large enough that allocating a new segmeng is a rare - thing. For example, on a server that will have 10k people logged in at once, - the receive buffer object pool should have segment sizes of at least 1000 - byte arrays per segment. - - The minimun number of segments that may exist. - Perform a full GC.Collect whenever a segment is allocated, and then again after allocation to compact the heap. - The frequency which segments are checked to see if they're eligible for cleanup. - - - - Forces the segment cleanup algorithm to be run. This method is intended - primarly for use from the Unit Test libraries. - - - - - Responsible for allocate 1 instance of an object that will be stored in a segment. - - An instance of whatever objec the pool is pooling. - - - - Checks in an instance of T owned by the object pool. This method is only intended to be called - by the WrappedObject class. - - The segment from which the instance is checked out. - The instance of T to check back into the segment. - - - - Checks an instance of T from the pool. If the pool is not sufficient to - allow the checkout, a new segment is created. - - A WrappedObject around the instance of T. To check - the instance back into the segment, be sureto dispose the WrappedObject - when finished. - - - - The total number of segments created. Intended to be used by the Unit Tests. - - - - - The number of items that are in a segment. Items in a segment - are all allocated at the same time, and are hopefully close to - each other in the managed heap. - - - - - The minimum number of segments. When segments are reclaimed, - this number of segments will always be left alone. These - segments are allocated at startup. - - - - - The age a segment must be before it's eligible for cleanup. - This is used to prevent thrash, and typical values are in - the 5 minute range. - - - - - The frequence which the cleanup thread runs. This is typically - expected to be in the 5 minute range. - - - - - Initialize the object pool in client mode - - Server to connect to - - - - - - Initialize the object pool in server mode - - - - - - - Returns a packet buffer with EndPoint set if the buffer is in - client mode, or with EndPoint set to null in server mode - - Initialized UDPPacketBuffer object - - - - Default constructor - - - - - Check a packet buffer out of the pool - - A packet buffer object - - - - Singleton logging class for the entire library - - - - log4net logging engine - - - - Default constructor - - - - - Send a log message to the logging engine - - The log message - The severity of the log entry - - - - Send a log message to the logging engine - - The log message - The severity of the log entry - Instance of the client - - - - Send a log message to the logging engine - - The log message - The severity of the log entry - Exception that was raised - - - - Send a log message to the logging engine - - The log message - The severity of the log entry - Instance of the client - Exception that was raised - - - - If the library is compiled with DEBUG defined, an event will be - fired if an OnLogMessage handler is registered and the - message will be sent to the logging engine - - The message to log at the DEBUG level to the - current logging engine - - - - If the library is compiled with DEBUG defined and - GridClient.Settings.DEBUG is true, an event will be - fired if an OnLogMessage handler is registered and the - message will be sent to the logging engine - - The message to log at the DEBUG level to the - current logging engine - Instance of the client - - - Triggered whenever a message is logged. If this is left - null, log messages will go to the console - - - - Callback used for client apps to receive log messages from - the library - - Data being logged - The severity of the log entry from - - - - - - - - The avatar has no rights - - - The avatar can see the online status of the target avatar - - - The avatar can see the location of the target avatar on the map - - - The avatar can modify the ojects of the target avatar - - - - This class holds information about an avatar in the friends list. There are two ways - to interface to this class. The first is through the set of boolean properties. This is the typical - way clients of this class will use it. The second interface is through two bitflag properties, - TheirFriendsRights and MyFriendsRights - - - - - Used internally when building the initial list of friends at login time - - System ID of the avatar being prepesented - Rights the friend has to see you online and to modify your objects - Rights you have to see your friend online and to modify their objects - - - - FriendInfo represented as a string - - A string reprentation of both my rights and my friends rights - - - - System ID of the avatar - - - - - full name of the avatar - - - - - True if the avatar is online - - - - - True if the friend can see if I am online - - - - - True if the friend can see me on the map - - - - - True if the freind can modify my objects - - - - - True if I can see if my friend is online - - - - - True if I can see if my friend is on the map - - - - - True if I can modify my friend's objects - - - - - My friend's rights represented as bitmapped flags - - - - - My rights represented as bitmapped flags - - - - - This class is used to add and remove avatars from your friends list and to manage their permission. - - - - The event subscribers. null if no subcribers - - - Raises the FriendOnline event - A FriendInfoEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the FriendOffline event - A FriendInfoEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the FriendRightsUpdate event - A FriendInfoEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the FriendNames event - A FriendNamesEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the FriendshipOffered event - A FriendshipOfferedEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the FriendshipResponse event - A FriendshipResponseEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the FriendshipTerminated event - A FriendshipTerminatedEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the FriendFoundReply event - A FriendFoundReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - - A dictionary of key/value pairs containing known friends of this avatar. - - The Key is the of the friend, the value is a - object that contains detailed information including permissions you have and have given to the friend - - - - - A Dictionary of key/value pairs containing current pending frienship offers. - - The key is the of the avatar making the request, - the value is the of the request which is used to accept - or decline the friendship offer - - - - - Internal constructor - - A reference to the GridClient Object - - - - Accept a friendship request - - agentID of avatatar to form friendship with - imSessionID of the friendship request message - - - - Decline a friendship request - - of friend - imSessionID of the friendship request message - - - - Overload: Offer friendship to an avatar. - - System ID of the avatar you are offering friendship to - - - - Offer friendship to an avatar. - - System ID of the avatar you are offering friendship to - A message to send with the request - - - - Terminate a friendship with an avatar - - System ID of the avatar you are terminating the friendship with - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - Change the rights of a friend avatar. - - the of the friend - the new rights to give the friend - This method will implicitly set the rights to those passed in the rights parameter. - - - - Use to map a friends location on the grid. - - Friends UUID to find - - - - - Use to track a friends movement on the grid - - Friends Key - - - - Ask for a notification of friend's online status - - Friend's UUID - - - - This handles the asynchronous response of a RequestAvatarNames call. - - - names cooresponding to the the list of IDs sent the the RequestAvatarNames call. - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - Populate FriendList with data from the login reply - - true if login was successful - true if login request is requiring a redirect - A string containing the response to the login request - A string containing the reason for the request - A object containing the decoded - reply from the login server - - - Raised when the simulator sends notification one of the members in our friends list comes online - - - Raised when the simulator sends notification one of the members in our friends list goes offline - - - Raised when the simulator sends notification one of the members in our friends list grants or revokes permissions - - - Raised when the simulator sends us the names on our friends list - - - Raised when the simulator sends notification another agent is offering us friendship - - - Raised when a request we sent to friend another agent is accepted or declined - - - Raised when the simulator sends notification one of the members in our friends list has terminated - our friendship - - - Raised when the simulator sends the location of a friend we have - requested map location info for - - - Contains information on a member of our friends list - - - - Construct a new instance of the FriendInfoEventArgs class - - The FriendInfo - - - Get the FriendInfo - - - Contains Friend Names - - - - Construct a new instance of the FriendNamesEventArgs class - - A dictionary where the Key is the ID of the Agent, - and the Value is a string containing their name - - - A dictionary where the Key is the ID of the Agent, - and the Value is a string containing their name - - - Sent when another agent requests a friendship with our agent - - - - Construct a new instance of the FriendshipOfferedEventArgs class - - The ID of the agent requesting friendship - The name of the agent requesting friendship - The ID of the session, used in accepting or declining the - friendship offer - - - Get the ID of the agent requesting friendship - - - Get the name of the agent requesting friendship - - - Get the ID of the session, used in accepting or declining the - friendship offer - - - A response containing the results of our request to form a friendship with another agent - - - - Construct a new instance of the FriendShipResponseEventArgs class - - The ID of the agent we requested a friendship with - The name of the agent we requested a friendship with - true if the agent accepted our friendship offer - - - Get the ID of the agent we requested a friendship with - - - Get the name of the agent we requested a friendship with - - - true if the agent accepted our friendship offer - - - Contains data sent when a friend terminates a friendship with us - - - - Construct a new instance of the FrindshipTerminatedEventArgs class - - The ID of the friend who terminated the friendship with us - The name of the friend who terminated the friendship with us - - - Get the ID of the agent that terminated the friendship with us - - - Get the name of the agent that terminated the friendship with us - - - - Data sent in response to a request which contains the information to allow us to map the friends location - - - - - Construct a new instance of the FriendFoundReplyEventArgs class - - The ID of the agent we have requested location information for - The region handle where our friend is located - The simulator local position our friend is located - - - Get the ID of the agent we have received location information for - - - Get the region handle where our mapped friend is located - - - Get the simulator local position where our friend is located - - - - Static pre-defined animations available to all agents - - - - Agent with afraid expression on face - - - Agent aiming a bazooka (right handed) - - - Agent aiming a bow (left handed) - - - Agent aiming a hand gun (right handed) - - - Agent aiming a rifle (right handed) - - - Agent with angry expression on face - - - Agent hunched over (away) - - - Agent doing a backflip - - - Agent laughing while holding belly - - - Agent blowing a kiss - - - Agent with bored expression on face - - - Agent bowing to audience - - - Agent brushing himself/herself off - - - Agent in busy mode - - - Agent clapping hands - - - Agent doing a curtsey bow - - - Agent crouching - - - Agent crouching while walking - - - Agent crying - - - Agent unanimated with arms out (e.g. setting appearance) - - - Agent re-animated after set appearance finished - - - Agent dancing - - - Agent dancing - - - Agent dancing - - - Agent dancing - - - Agent dancing - - - Agent dancing - - - Agent dancing - - - Agent dancing - - - Agent on ground unanimated - - - Agent boozing it up - - - Agent with embarassed expression on face - - - Agent with afraid expression on face - - - Agent with angry expression on face - - - Agent with bored expression on face - - - Agent crying - - - Agent showing disdain (dislike) for something - - - Agent with embarassed expression on face - - - Agent with frowning expression on face - - - Agent with kissy face - - - Agent expressing laughgter - - - Agent with open mouth - - - Agent with repulsed expression on face - - - Agent expressing sadness - - - Agent shrugging shoulders - - - Agent with a smile - - - Agent expressing surprise - - - Agent sticking tongue out - - - Agent with big toothy smile - - - Agent winking - - - Agent expressing worry - - - Agent falling down - - - Agent walking (feminine version) - - - Agent wagging finger (disapproval) - - - I'm not sure I want to know - - - Agent in superman position - - - Agent in superman position - - - Agent greeting another - - - Agent holding bazooka (right handed) - - - Agent holding a bow (left handed) - - - Agent holding a handgun (right handed) - - - Agent holding a rifle (right handed) - - - Agent throwing an object (right handed) - - - Agent in static hover - - - Agent hovering downward - - - Agent hovering upward - - - Agent being impatient - - - Agent jumping - - - Agent jumping with fervor - - - Agent point to lips then rear end - - - Agent landing from jump, finished flight, etc - - - Agent laughing - - - Agent landing from jump, finished flight, etc - - - Agent sitting on a motorcycle - - - - - - Agent moving head side to side - - - Agent moving head side to side with unhappy expression - - - Agent taunting another - - - - - - Agent giving peace sign - - - Agent pointing at self - - - Agent pointing at another - - - Agent preparing for jump (bending knees) - - - Agent punching with left hand - - - Agent punching with right hand - - - Agent acting repulsed - - - Agent trying to be Chuck Norris - - - Rocks, Paper, Scissors 1, 2, 3 - - - Agent with hand flat over other hand - - - Agent with fist over other hand - - - Agent with two fingers spread over other hand - - - Agent running - - - Agent appearing sad - - - Agent saluting - - - Agent shooting bow (left handed) - - - Agent cupping mouth as if shouting - - - Agent shrugging shoulders - - - Agent in sit position - - - Agent in sit position (feminine) - - - Agent in sit position (generic) - - - Agent sitting on ground - - - Agent sitting on ground - - - - - - Agent sleeping on side - - - Agent smoking - - - Agent inhaling smoke - - - - - - Agent taking a picture - - - Agent standing - - - Agent standing up - - - Agent standing - - - Agent standing - - - Agent standing - - - Agent standing - - - Agent stretching - - - Agent in stride (fast walk) - - - Agent surfing - - - Agent acting surprised - - - Agent striking with a sword - - - Agent talking (lips moving) - - - Agent throwing a tantrum - - - Agent throwing an object (right handed) - - - Agent trying on a shirt - - - Agent turning to the left - - - Agent turning to the right - - - Agent typing - - - Agent walking - - - Agent whispering - - - Agent whispering with fingers in mouth - - - Agent winking - - - Agent winking - - - Agent worried - - - Agent nodding yes - - - Agent nodding yes with happy face - - - Agent floating with legs and arms crossed - - - - A dictionary containing all pre-defined animations - - A dictionary containing the pre-defined animations, - where the key is the animations ID, and the value is a string - containing a name to identify the purpose of the animation - - - - Throttles the network traffic for various different traffic types. - Access this class through GridClient.Throttle - - - - - Default constructor, uses a default high total of 1500 KBps (1536000) - - - - - Constructor that decodes an existing AgentThrottle packet in to - individual values - - Reference to the throttle data in an AgentThrottle - packet - Offset position to start reading at in the - throttle data - This is generally not needed in clients as the server will - never send a throttle packet to the client - - - - Send an AgentThrottle packet to the current server using the - current values - - - - - Send an AgentThrottle packet to the specified server using the - current values - - - - - Convert the current throttle values to a byte array that can be put - in an AgentThrottle packet - - Byte array containing all the throttle values - - - Maximum bits per second for resending unacknowledged packets - - - Maximum bits per second for LayerData terrain - - - Maximum bits per second for LayerData wind data - - - Maximum bits per second for LayerData clouds - - - Unknown, includes object data - - - Maximum bits per second for textures - - - Maximum bits per second for downloaded assets - - - Maximum bits per second the entire connection, divided up - between invidiual streams using default multipliers - - - - Represents a single Voice Session to the Vivox service. - - - - - Close this session. - - - - - Look up an existing Participants in this session - - - - - - - Extract the avatar UUID encoded in a SIP URI - - - - - - - Permissions for control of object media - - - - - Style of cotrols that shold be displayed to the user - - - - - Class representing media data for a single face - - - - Is display of the alternative image enabled - - - Should media auto loop - - - Shoule media be auto played - - - Auto scale media to prim face - - - Should viewer automatically zoom in on the face when clicked - - - Should viewer interpret first click as interaction with the media - or when false should the first click be treated as zoom in commadn - - - Style of controls viewer should display when - viewer media on this face - - - Starting URL for the media - - - Currently navigated URL - - - Media height in pixes - - - Media width in pixels - - - Who can controls the media - - - Who can interact with the media - - - Is URL whitelist enabled - - - Array of URLs that are whitelisted - - - - Serialize to OSD - - OSDMap with the serialized data - - - - Deserialize from OSD data - - Serialized OSD data - Deserialized object - - - - Particle system specific enumerators, flags and methods. - - - - - Current version of the media data for the prim - - - - - Array of media entries indexed by face number - - - - - - - - - - - - - - - - - - - - - - - - - - - - Foliage type for this primitive. Only applicable if this - primitive is foliage - - - Unknown - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Identifies the owner if audio or a particle system is - active - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Objects physics engine propertis - - - Extra data about primitive - - - Indicates if prim is attached to an avatar - - - Number of clients referencing this prim - - - - Default constructor - - - - - Packs PathTwist, PathTwistBegin, PathRadiusOffset, and PathSkew - parameters in to signed eight bit values - - Floating point parameter to pack - Signed eight bit value containing the packed parameter - - - - Unpacks PathTwist, PathTwistBegin, PathRadiusOffset, and PathSkew - parameters from signed eight bit integers to floating point values - - Signed eight bit value to unpack - Unpacked floating point value - - - - - - Uses basic heuristics to estimate the primitive shape - - - - Texture animation mode - - - - Disable texture animation - - - Enable texture animation - - - Loop when animating textures - - - Animate in reverse direction - - - Animate forward then reverse - - - Slide texture smoothly instead of frame-stepping - - - Rotate texture instead of using frames - - - Scale texture instead of using frames - - - - A single textured face. Don't instantiate this class yourself, use the - methods in TextureEntry - - - - - Contains the definition for individual faces - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - In the future this will specify whether a webpage is - attached to this face - - - - - - - - - - Represents all of the texturable faces for an object - - Grid objects have infinite faces, with each face - using the properties of the default face unless set otherwise. So if - you have a TextureEntry with a default texture uuid of X, and face 18 - has a texture UUID of Y, every face would be textured with X except for - face 18 that uses Y. In practice however, primitives utilize a maximum - of nine faces - - - - - - - - - - Constructor that takes a default texture UUID - - Texture UUID to use as the default texture - - - - Constructor that takes a TextureEntryFace for the - default face - - Face to use as the default face - - - - Constructor that creates the TextureEntry class from a byte array - - Byte array containing the TextureEntry field - Starting position of the TextureEntry field in - the byte array - Length of the TextureEntry field, in bytes - - - - This will either create a new face if a custom face for the given - index is not defined, or return the custom face for that index if - it already exists - - The index number of the face to create or - retrieve - A TextureEntryFace containing all the properties for that - face - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Controls the texture animation of a particular prim - - - - - - - - - - - - - - - - - - - - - - - - + - - + + + De-serialization constructor for the InventoryNode Class + + + + + Serialization handler for the InventoryNode Class + + + + + De-serialization handler for the InventoryNode Class + + + - + + + + + User data + + + + + + + + + + + - Parameters used to construct a visual representation of a primitive + For inventory folder nodes specifies weather the folder needs to be + refreshed from the server - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - Calculdates hash code for prim construction data - - The has - - - Attachment point to an avatar - - - - - - - - - - - - - - - - Information on the flexible properties of a primitive + Represends individual HTTP Download request - - + + URI of the item to fetch - - + + Timout specified in milliseconds - - + + Download progress callback - - + + Download completed callback - - + + Accept the following content type - - + + How many times will this request be retried - + + Current fetch attempt + + + Default constructor + + + Constructor + + - Default constructor + Manages async HTTP downloads with a limit on maximum + concurrent downloads - - - - - - + + Default constructor - - - - - + + Cleanup method - - - - - + + Setup http download request - - - Information on the light properties of a primitive - + + Check the queue for pending work - - + + Enqueue a new HTPP download - - + + Maximum number of parallel downloads from a single endpoint - - - - - - - - - - - - Default constructor - - - - - - - - - - - - - - - - - - - - - - - - Information on the light properties of a primitive as texture map - - - - - - - - - - - Default constructor - - - - - - - - - - - - - - - - - - - - - - - - Information on the sculpt properties of a sculpted primitive - - - - - Default constructor - - - - - - - - - - - - Render inside out (inverts the normals). - - - - - Render an X axis mirror of the sculpty. - - - - - Extended properties to describe an object - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Default constructor - - - - - Set the properties that are set in an ObjectPropertiesFamily packet - - that has - been partially filled by an ObjectPropertiesFamily packet - - - - Describes physics attributes of the prim - - - - Primitive's local ID - - - Density (1000 for normal density) - - - Friction - - - Gravity multiplier (1 for normal gravity) - - - Type of physics representation of this primitive in the simulator - - - Restitution - - - - Creates PhysicsProperties from OSD - - OSDMap with incoming data - Deserialized PhysicsProperties object - - - - Serializes PhysicsProperties to OSD - - OSDMap with serialized PhysicsProperties data - - - - Complete structure for the particle system - - - - Particle Flags - There appears to be more data packed in to this area - for many particle systems. It doesn't appear to be flag values - and serialization breaks unless there is a flag for every - possible bit so it is left as an unsigned integer - - - pattern of particles - - - A representing the maximimum age (in seconds) particle will be displayed - Maximum value is 30 seconds - - - A representing the number of seconds, - from when the particle source comes into view, - or the particle system's creation, that the object will emits particles; - after this time period no more particles are emitted - - - A in radians that specifies where particles will not be created - - - A in radians that specifies where particles will be created - - - A representing the number of seconds between burts. - - - A representing the number of meters - around the center of the source where particles will be created. - - - A representing in seconds, the minimum speed between bursts of new particles - being emitted - - - A representing in seconds the maximum speed of new particles being emitted. - - - A representing the maximum number of particles emitted per burst - - - A which represents the velocity (speed) from the source which particles are emitted - - - A which represents the Acceleration from the source which particles are emitted - - - The Key of the texture displayed on the particle - - - The Key of the specified target object or avatar particles will follow - - - Flags of particle from - - - Max Age particle system will emit particles for - - - The the particle has at the beginning of its lifecycle - - - The the particle has at the ending of its lifecycle - - - A that represents the starting X size of the particle - Minimum value is 0, maximum value is 4 - - - A that represents the starting Y size of the particle - Minimum value is 0, maximum value is 4 - - - A that represents the ending X size of the particle - Minimum value is 0, maximum value is 4 - - - A that represents the ending Y size of the particle - Minimum value is 0, maximum value is 4 - - - A that represents the start glow value - Minimum value is 0, maximum value is 1 - - - A that represents the end glow value - Minimum value is 0, maximum value is 1 - - - OpenGL blend function to use at particle source - - - OpenGL blend function to use at particle destination - - - - Can this particle system be packed in a legacy compatible way - - True if the particle system doesn't use new particle system features - - - - Decodes a byte[] array into a ParticleSystem Object - - ParticleSystem object - Start position for BitPacker - - - - Generate byte[] array from particle data - - Byte array - - - - Particle source pattern - - - - None - - - Drop particles from source position with no force - - - "Explode" particles in all directions - - - Particles shoot across a 2D area - - - Particles shoot across a 3D Cone - - - Inverse of AngleCone (shoot particles everywhere except the 3D cone defined - - - - Particle Data Flags - - - - None - - - Interpolate color and alpha from start to end - - - Interpolate scale from start to end - - - Bounce particles off particle sources Z height - - - velocity of particles is dampened toward the simulators wind - - - Particles follow the source - - - Particles point towards the direction of source's velocity - - - Target of the particles - - - Particles are sent in a straight line - - - Particles emit a glow - - - used for point/grab/touch - - - continuous ribbon particle - - - particle data contains glow - - - particle data contains blend functions - - - - Particle Flags Enum - - - - None - - - Acceleration and velocity for particles are - relative to the object rotation - - - Particles use new 'correct' angle parameters - - - - Return a decoded capabilities message as a strongly typed object - - A string containing the name of the capabilities message key - An to decode - A strongly typed object containing the decoded information from the capabilities message, or null - if no existing Message object exists for the specified event - - - - A Wrapper around openjpeg to encode and decode images to and from byte arrays - - - - TGA Header size - - - OpenJPEG is not threadsafe, so this object is used to lock - during calls into unmanaged code - - - - Encode a object into a byte array - - The object to encode - true to enable lossless conversion, only useful for small images ie: sculptmaps - A byte array containing the encoded Image object - - - - Encode a object into a byte array - - The object to encode - a byte array of the encoded image - - - - Decode JPEG2000 data to an and - - - JPEG2000 encoded data - ManagedImage object to decode to - Image object to decode to - True if the decode succeeds, otherwise false - - - - - - - - - - - - - - - - - - - - - Encode a object into a byte array - - The source object to encode - true to enable lossless decoding - A byte array containing the source Bitmap object - - - - Defines the beginning and ending file positions of a layer in an - LRCP-progression JPEG2000 file - - - - - This structure is used to marshal both encoded and decoded images. - MUST MATCH THE STRUCT IN dotnet.h! - - - - - Information about a single packet in a JPEG2000 stream - - - - Packet start position - - - Packet header end position - - - Packet end position - - - The event subscribers. null if no subcribers - - - Raises the LandPatchReceived event - A LandPatchReceivedEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - - Default constructor - - - - - Raised when the simulator responds sends - - - Simulator from that sent tha data - - - Sim coordinate of the patch - - - Sim coordinate of the patch - - - Size of tha patch - - - Heightmap for the patch + + Client certificate @@ -11845,3368 +24875,6 @@ Decoded event data The simulator that generated the event - - - - - - - OK - - - Transfer completed - - - - - - - - - Unknown error occurred - - - Equivalent to a 404 error - - - Client does not have permission for that resource - - - Unknown status - - - - - - - - - - - Unknown - - - Virtually all asset transfers use this channel - - - - - - - - - - - Asset from the asset server - - - Inventory item - - - Estate asset, such as an estate covenant - - - - - - - - - - - - - - - - - - When requesting image download, type of the image requested - - - - Normal in-world object texture - - - Avatar texture - - - Server baked avatar texture - - - - Image file format - - - - - - - - - Number of milliseconds passed since the last transfer - packet was received - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Number of milliseconds to wait for a transfer header packet if out of order data was received - - - The event subscribers. null if no subcribers - - - Raises the XferReceived event - A XferReceivedEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the AssetUploaded event - A AssetUploadedEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the UploadProgress event - A UploadProgressEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the InitiateDownload event - A InitiateDownloadEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ImageReceiveProgress event - A ImageReceiveProgressEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - Texture download cache - - - - Default constructor - - A reference to the GridClient object - - - - Request an asset download - - Asset UUID - Asset type, must be correct for the transfer to succeed - Whether to give this transfer an elevated priority - The callback to fire when the simulator responds with the asset data - - - - Request an asset download - - Asset UUID - Asset type, must be correct for the transfer to succeed - Whether to give this transfer an elevated priority - Source location of the requested asset - The callback to fire when the simulator responds with the asset data - - - - Request an asset download - - Asset UUID - Asset type, must be correct for the transfer to succeed - Whether to give this transfer an elevated priority - Source location of the requested asset - UUID of the transaction - The callback to fire when the simulator responds with the asset data - - - - Request an asset download - - Asset UUID - Asset type, must be correct for the transfer to succeed - Whether to give this transfer an elevated priority - Source location of the requested asset - UUID of the transaction - The callback to fire when the simulator responds with the asset data - - - - Request an asset download through the almost deprecated Xfer system - - Filename of the asset to request - Whether or not to delete the asset - off the server after it is retrieved - Use large transfer packets or not - UUID of the file to request, if filename is - left empty - Asset type of vFileID, or - AssetType.Unknown if filename is not empty - Sets the FilePath in the request to Cache - (4) if true, otherwise Unknown (0) is used - - - - - - - Use UUID.Zero if you do not have the - asset ID but have all the necessary permissions - The item ID of this asset in the inventory - Use UUID.Zero if you are not requesting an - asset from an object inventory - The owner of this asset - Asset type - Whether to prioritize this asset download or not - - - - - Used to force asset data into the PendingUpload property, ie: for raw terrain uploads - - An AssetUpload object containing the data to upload to the simulator - - - - Request an asset be uploaded to the simulator - - The Object containing the asset data - If True, the asset once uploaded will be stored on the simulator - in which the client was connected in addition to being stored on the asset server - The of the transfer, can be used to correlate the upload with - events being fired - - - - Request an asset be uploaded to the simulator - - The of the asset being uploaded - A byte array containing the encoded asset data - If True, the asset once uploaded will be stored on the simulator - in which the client was connected in addition to being stored on the asset server - The of the transfer, can be used to correlate the upload with - events being fired - - - - Request an asset be uploaded to the simulator - - - Asset type to upload this data as - A byte array containing the encoded asset data - If True, the asset once uploaded will be stored on the simulator - in which the client was connected in addition to being stored on the asset server - The of the transfer, can be used to correlate the upload with - events being fired - - - - Initiate an asset upload - - The ID this asset will have if the - upload succeeds - Asset type to upload this data as - Raw asset data to upload - Whether to store this asset on the local - simulator or the grid-wide asset server - The tranaction id for the upload - The transaction ID of this transfer - - - - Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator - - The of the texture asset to download - The of the texture asset. - Use for most textures, or for baked layer texture assets - A float indicating the requested priority for the transfer. Higher priority values tell the simulator - to prioritize the request before lower valued requests. An image already being transferred using the can have - its priority changed by resending the request with the new priority value - Number of quality layers to discard. - This controls the end marker of the data sent. Sending with value -1 combined with priority of 0 cancels an in-progress - transfer. - A bug exists in the Linden Simulator where a -1 will occasionally be sent with a non-zero priority - indicating an off-by-one error. - The packet number to begin the request at. A value of 0 begins the request - from the start of the asset texture - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - If true, the callback will be fired for each chunk of the downloaded image. - The callback asset parameter will contain all previously received chunks of the texture asset starting - from the beginning of the request - - Request an image and fire a callback when the request is complete - - Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, TextureDownloader_OnDownloadFinished); - - private void TextureDownloader_OnDownloadFinished(TextureRequestState state, AssetTexture asset) - { - if(state == TextureRequestState.Finished) - { - Console.WriteLine("Texture {0} ({1} bytes) has been successfully downloaded", - asset.AssetID, - asset.AssetData.Length); - } - } - - Request an image and use an inline anonymous method to handle the downloaded texture data - - Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, delegate(TextureRequestState state, AssetTexture asset) - { - if(state == TextureRequestState.Finished) - { - Console.WriteLine("Texture {0} ({1} bytes) has been successfully downloaded", - asset.AssetID, - asset.AssetData.Length); - } - } - ); - - Request a texture, decode the texture to a bitmap image and apply it to a imagebox - - Client.Assets.RequestImage(UUID.Parse("c307629f-e3a1-4487-5e88-0d96ac9d4965"), ImageType.Normal, TextureDownloader_OnDownloadFinished); - - private void TextureDownloader_OnDownloadFinished(TextureRequestState state, AssetTexture asset) - { - if(state == TextureRequestState.Finished) - { - ManagedImage imgData; - Image bitmap; - - if (state == TextureRequestState.Finished) - { - OpenJPEG.DecodeToImage(assetTexture.AssetData, out imgData, out bitmap); - picInsignia.Image = bitmap; - } - } - } - - - - - - Overload: Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator - - The of the texture asset to download - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - - - - Overload: Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator - - The of the texture asset to download - The of the texture asset. - Use for most textures, or for baked layer texture assets - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - - - - Overload: Request a texture asset from the simulator using the system to - manage the requests and re-assemble the image from the packets received from the simulator - - The of the texture asset to download - The of the texture asset. - Use for most textures, or for baked layer texture assets - The callback to fire when the image is retrieved. The callback - will contain the result of the request and the texture asset data - If true, the callback will be fired for each chunk of the downloaded image. - The callback asset parameter will contain all previously received chunks of the texture asset starting - from the beginning of the request - - - - Cancel a texture request - - The texture assets - - - - Requests download of a mesh asset - - UUID of the mesh asset - Callback when the request completes - - - - Fetach avatar texture on a grid capable of server side baking - - ID of the avatar - ID of the texture - Name of the part of the avatar texture applies to - Callback invoked on operation completion - - - - Lets TexturePipeline class fire the progress event - - The texture ID currently being downloaded - the number of bytes transferred - the total number of bytes expected - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Raised when the simulator responds sends - - - Raised during upload completes - - - Raised during upload with progres update - - - Fired when the simulator sends an InitiateDownloadPacket, used to download terrain .raw files - - - Fired when a texture is in the process of being downloaded by the TexturePipeline class - - - - Callback used for various asset download requests - - Transfer information - Downloaded asset, null on fail - - - - Callback used upon competition of baked texture upload - - Asset UUID of the newly uploaded baked texture - - - - A callback that fires upon the completition of the RequestMesh call - - Was the download successfull - Resulting mesh or null on problems - - - Xfer data - - - Upload data - - - Filename used on the simulator - - - Filename used by the client - - - UUID of the image that is in progress - - - Number of bytes received so far - - - Image size in bytes - - - - Represents an LSL Text object containing a string of UTF encoded characters - - - - A string of characters represting the script contents - - - Initializes a new AssetScriptText object - - - - Initializes a new AssetScriptText object with parameters - - A unique specific to this asset - A byte array containing the raw asset data - - - - Encode a string containing the scripts contents into byte encoded AssetData - - - - - Decode a byte array containing the scripts contents into a string - - true if decoding is successful - - - Override the base classes AssetType - - - - Represents an AssetScriptBinary object containing the - LSO compiled bytecode of an LSL script - - - - Initializes a new instance of an AssetScriptBinary object - - - Initializes a new instance of an AssetScriptBinary object with parameters - A unique specific to this asset - A byte array containing the raw asset data - - - - TODO: Encodes a scripts contents into a LSO Bytecode file - - - - - TODO: Decode LSO Bytecode into a string - - true - - - Override the base classes AssetType - - - - Represents a Callingcard with AvatarID and Position vector - - - - UUID of the Callingcard target avatar - - - Construct an Asset of type Callingcard - - - - Construct an Asset object of type Callingcard - - A unique specific to this asset - A byte array containing the raw asset data - - - - Constuct an asset of type Callingcard - - UUID of the target avatar - - - - Encode the raw contents of a string with the specific Callingcard format - - - - - Decode the raw asset data, populating the AvatarID and Position - - true if the AssetData was successfully decoded to a UUID and Vector - - - Override the base classes AssetType - - - - - - - - The event subscribers, null of no subscribers - - - Raises the AttachedSound Event - A AttachedSoundEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the AttachedSoundGainChange Event - A AttachedSoundGainChangeEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the SoundTrigger Event - A SoundTriggerEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the PreloadSound Event - A PreloadSoundEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - - Construct a new instance of the SoundManager class, used for playing and receiving - sound assets - - A reference to the current GridClient instance - - - - Plays a sound in the current region at full volume from avatar position - - UUID of the sound to be played - - - - Plays a sound in the current region at full volume - - UUID of the sound to be played. - position for the sound to be played at. Normally the avatar. - - - - Plays a sound in the current region - - UUID of the sound to be played. - position for the sound to be played at. Normally the avatar. - volume of the sound, from 0.0 to 1.0 - - - - Plays a sound in the specified sim - - UUID of the sound to be played. - UUID of the sound to be played. - position for the sound to be played at. Normally the avatar. - volume of the sound, from 0.0 to 1.0 - - - - Play a sound asset - - UUID of the sound to be played. - handle id for the sim to be played in. - position for the sound to be played at. Normally the avatar. - volume of the sound, from 0.0 to 1.0 - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Raised when the simulator sends us data containing - sound - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Provides data for the event - The event occurs when the simulator sends - the sound data which emits from an agents attachment - - The following code example shows the process to subscribe to the event - and a stub to handle the data passed from the simulator - - // Subscribe to the AttachedSound event - Client.Sound.AttachedSound += Sound_AttachedSound; - - // process the data raised in the event here - private void Sound_AttachedSound(object sender, AttachedSoundEventArgs e) - { - // ... Process AttachedSoundEventArgs here ... - } - - - - - - Construct a new instance of the SoundTriggerEventArgs class - - Simulator where the event originated - The sound asset id - The ID of the owner - The ID of the object - The volume level - The - - - Simulator where the event originated - - - Get the sound asset id - - - Get the ID of the owner - - - Get the ID of the Object - - - Get the volume level - - - Get the - - - Provides data for the event - The event occurs when an attached sound - changes its volume level - - - - Construct a new instance of the AttachedSoundGainChangedEventArgs class - - Simulator where the event originated - The ID of the Object - The new volume level - - - Simulator where the event originated - - - Get the ID of the Object - - - Get the volume level - - - Provides data for the event - The event occurs when the simulator forwards - a request made by yourself or another agent to play either an asset sound or a built in sound - - Requests to play sounds where the is not one of the built-in - will require sending a request to download the sound asset before it can be played - - - The following code example uses the , - and - properties to display some information on a sound request on the window. - - // subscribe to the event - Client.Sound.SoundTrigger += Sound_SoundTrigger; - - // play the pre-defined BELL_TING sound - Client.Sound.SendSoundTrigger(Sounds.BELL_TING); - - // handle the response data - private void Sound_SoundTrigger(object sender, SoundTriggerEventArgs e) - { - Console.WriteLine("{0} played the sound {1} at volume {2}", - e.OwnerID, e.SoundID, e.Gain); - } - - - - - - Construct a new instance of the SoundTriggerEventArgs class - - Simulator where the event originated - The sound asset id - The ID of the owner - The ID of the object - The ID of the objects parent - The volume level - The regionhandle - The source position - - - Simulator where the event originated - - - Get the sound asset id - - - Get the ID of the owner - - - Get the ID of the Object - - - Get the ID of the objects parent - - - Get the volume level - - - Get the regionhandle - - - Get the source position - - - Provides data for the event - The event occurs when the simulator sends - the appearance data for an avatar - - The following code example uses the and - properties to display the selected shape of an avatar on the window. - - // subscribe to the event - Client.Avatars.AvatarAppearance += Avatars_AvatarAppearance; - - // handle the data when the event is raised - void Avatars_AvatarAppearance(object sender, AvatarAppearanceEventArgs e) - { - Console.WriteLine("The Agent {0} is using a {1} shape.", e.AvatarID, (e.VisualParams[31] > 0) : "male" ? "female") - } - - - - - - Construct a new instance of the PreloadSoundEventArgs class - - Simulator where the event originated - The sound asset id - The ID of the owner - The ID of the object - - - Simulator where the event originated - - - Get the sound asset id - - - Get the ID of the owner - - - Get the ID of the Object - - - Positional vector of the users position - - - Velocity vector of the position - - - At Orientation (X axis) of the position - - - Up Orientation (Y axis) of the position - - - Left Orientation (Z axis) of the position - - - - Contains all mesh faces that belong to a prim - - - - List of primitive faces - - - - Decodes mesh asset into FacetedMesh - - Mesh primitive - Asset retrieved from the asset server - Level of detail - Resulting decoded FacetedMesh - True if mesh asset decoding was successful - - - - Type of gesture step - - - - - Base class for gesture steps - - - - - Retururns what kind of gesture step this is - - - - - Describes animation step of a gesture - - - - - If true, this step represents start of animation, otherwise animation stop - - - - - Animation asset - - - - - Animation inventory name - - - - - Returns what kind of gesture step this is - - - - - Describes sound step of a gesture - - - - - Sound asset - - - - - Sound inventory name - - - - - Returns what kind of gesture step this is - - - - - Describes sound step of a gesture - - - - - Text to output in chat - - - - - Returns what kind of gesture step this is - - - - - Describes sound step of a gesture - - - - - If true in this step we wait for all animations to finish - - - - - If true gesture player should wait for the specified amount of time - - - - - Time in seconds to wait if WaitForAnimation is false - - - - - Returns what kind of gesture step this is - - - - - Describes the final step of a gesture - - - - - Returns what kind of gesture step this is - - - - - Represents a sequence of animations, sounds, and chat actions - - - - - Keyboard key that triggers the gestyre - - - - - Modifier to the trigger key - - - - - String that triggers playing of the gesture sequence - - - - - Text that replaces trigger in chat once gesture is triggered - - - - - Sequence of gesture steps - - - - - Constructs guesture asset - - - - - Constructs guesture asset - - A unique specific to this asset - A byte array containing the raw asset data - - - - Encodes gesture asset suitable for uplaod - - - - - Decodes gesture assset into play sequence - - true if the asset data was decoded successfully - - - - Returns asset type - - - - - Type of return to use when returning objects from a parcel - - - - - - - Return objects owned by parcel owner - - - Return objects set to group - - - Return objects not owned by parcel owner or set to group - - - Return a specific list of objects on parcel - - - Return objects that are marked for-sale - - - - Blacklist/Whitelist flags used in parcels Access List - - - - Agent is denied access - - - Agent is granted access - - - - The result of a request for parcel properties - - - - No matches were found for the request - - - Request matched a single parcel - - - Request matched multiple parcels - - - - Flags used in the ParcelAccessListRequest packet to specify whether - we want the access list (whitelist), ban list (blacklist), or both - - - - Request the access list - - - Request the ban list - - - Request both White and Black lists - - - - Sequence ID in ParcelPropertiesReply packets (sent when avatar - tries to cross a parcel border) - - - - Parcel is currently selected - - - Parcel restricted to a group the avatar is not a - member of - - - Avatar is banned from the parcel - - - Parcel is restricted to an access list that the - avatar is not on - - - Response to hovering over a parcel - - - - The tool to use when modifying terrain levels - - - - Level the terrain - - - Raise the terrain - - - Lower the terrain - - - Smooth the terrain - - - Add random noise to the terrain - - - Revert terrain to simulator default - - - - The tool size to use when changing terrain levels - - - - Small - - - Medium - - - Large - - - - Reasons agent is denied access to a parcel on the simulator - - - - Agent is not denied, access is granted - - - Agent is not a member of the group set for the parcel, or which owns the parcel - - - Agent is not on the parcels specific allow list - - - Agent is on the parcels ban list - - - Unknown - - - Agent is not age verified and parcel settings deny access to non age verified avatars - - - - Parcel overlay type. This is used primarily for highlighting and - coloring which is why it is a single integer instead of a set of - flags - - These values seem to be poorly thought out. The first three - bits represent a single value, not flags. For example Auction (0x05) is - not a combination of OwnedByOther (0x01) and ForSale(0x04). However, - the BorderWest and BorderSouth values are bit flags that get attached - to the value stored in the first three bits. Bits four, five, and six - are unused - - - Public land - - - Land is owned by another avatar - - - Land is owned by a group - - - Land is owned by the current avatar - - - Land is for sale - - - Land is being auctioned - - - Land is private - - - To the west of this area is a parcel border - - - To the south of this area is a parcel border - - - - Various parcel properties - - - - No flags set - - - Allow avatars to fly (a client-side only restriction) - - - Allow foreign scripts to run - - - This parcel is for sale - - - Allow avatars to create a landmark on this parcel - - - Allows all avatars to edit the terrain on this parcel - - - Avatars have health and can take damage on this parcel. - If set, avatars can be killed and sent home here - - - Foreign avatars can create objects here - - - All objects on this parcel can be purchased - - - Access is restricted to a group - - - Access is restricted to a whitelist - - - Ban blacklist is enabled - - - Unknown - - - List this parcel in the search directory - - - Allow personally owned parcels to be deeded to group - - - If Deeded, owner contributes required tier to group parcel is deeded to - - - Restrict sounds originating on this parcel to the - parcel boundaries - - - Objects on this parcel are sold when the land is - purchsaed - - - Allow this parcel to be published on the web - - - The information for this parcel is mature content - - - The media URL is an HTML page - - - The media URL is a raw HTML string - - - Restrict foreign object pushes - - - Ban all non identified/transacted avatars - - - Allow group-owned scripts to run - - - Allow object creation by group members or group - objects - - - Allow all objects to enter this parcel - - - Only allow group and owner objects to enter this parcel - - - Voice Enabled on this parcel - - - Use Estate Voice channel for Voice on this parcel - - - Deny Age Unverified Users - - - - Parcel ownership status - - - - Placeholder - - - Parcel is leased (owned) by an avatar or group - - - Parcel is in process of being leased (purchased) by an avatar or group - - - Parcel has been abandoned back to Governor Linden - - - - Category parcel is listed in under search - - - - No assigned category - - - Linden Infohub or public area - - - Adult themed area - - - Arts and Culture - - - Business - - - Educational - - - Gaming - - - Hangout or Club - - - Newcomer friendly - - - Parks and Nature - - - Residential - - - Shopping - - - Not Used? - - - Other - - - Not an actual category, only used for queries - - - - Type of teleport landing for a parcel - - - - Unset, simulator default - - - Specific landing point set for this parcel - - - No landing point set, direct teleports enabled for - this parcel - - - - Parcel Media Command used in ParcelMediaCommandMessage - - - - Stop the media stream and go back to the first frame - - - Pause the media stream (stop playing but stay on current frame) - - - Start the current media stream playing and stop when the end is reached - - - Start the current media stream playing, - loop to the beginning when the end is reached and continue to play - - - Specifies the texture to replace with video - If passing the key of a texture, it must be explicitly typecast as a key, - not just passed within double quotes. - - - Specifies the movie URL (254 characters max) - - - Specifies the time index at which to begin playing - - - Specifies a single agent to apply the media command to - - - Unloads the stream. While the stop command sets the texture to the first frame of the movie, - unload resets it to the real texture that the movie was replacing. - - - Turn on/off the auto align feature, similar to the auto align checkbox in the parcel media properties - (NOT to be confused with the "align" function in the textures view of the editor!) Takes TRUE or FALSE as parameter. - - - Allows a Web page or image to be placed on a prim (1.19.1 RC0 and later only). - Use "text/html" for HTML. - - - Resizes a Web page to fit on x, y pixels (1.19.1 RC0 and later only). - This might still not be working - - - Sets a description for the media being displayed (1.19.1 RC0 and later only). - - - - Some information about a parcel of land returned from a DirectoryManager search - - - - Global Key of record - - - Parcel Owners - - - Name field of parcel, limited to 128 characters - - - Description field of parcel, limited to 256 characters - - - Total Square meters of parcel - - - Total area billable as Tier, for group owned land this will be 10% less than ActualArea - - - True of parcel is in Mature simulator - - - Grid global X position of parcel - - - Grid global Y position of parcel - - - Grid global Z position of parcel (not used) - - - Name of simulator parcel is located in - - - Texture of parcels display picture - - - Float representing calculated traffic based on time spent on parcel by avatars - - - Sale price of parcel (not used) - - - Auction ID of parcel - - - - Parcel Media Information - - - - A byte, if 0x1 viewer should auto scale media to fit object - - - A boolean, if true the viewer should loop the media - - - The Asset UUID of the Texture which when applied to a - primitive will display the media - - - A URL which points to any Quicktime supported media type - - - A description of the media - - - An Integer which represents the height of the media - - - An integer which represents the width of the media - - - A string which contains the mime type of the media - - - - Parcel of land, a portion of virtual real estate in a simulator - - - - The total number of contiguous 4x4 meter blocks your agent owns within this parcel - - - The total number of contiguous 4x4 meter blocks contained in this parcel owned by a group or agent other than your own - - - Deprecated, Value appears to always be 0 - - - Simulator-local ID of this parcel - - - UUID of the owner of this parcel - - - Whether the land is deeded to a group or not - - - - - - Date land was claimed - - - Appears to always be zero - - - This field is no longer used - - - Minimum corner of the axis-aligned bounding box for this - parcel - - - Maximum corner of the axis-aligned bounding box for this - parcel - - - Bitmap describing land layout in 4x4m squares across the - entire region - - - Total parcel land area - - - - - - Maximum primitives across the entire simulator owned by the same agent or group that owns this parcel that can be used - - - Total primitives across the entire simulator calculated by combining the allowed prim counts for each parcel - owned by the agent or group that owns this parcel - - - Maximum number of primitives this parcel supports - - - Total number of primitives on this parcel - - - For group-owned parcels this indicates the total number of prims deeded to the group, - for parcels owned by an individual this inicates the number of prims owned by the individual - - - Total number of primitives owned by the parcel group on - this parcel, or for parcels owned by an individual with a group set the - total number of prims set to that group. - - - Total number of prims owned by other avatars that are not set to group, or not the parcel owner - - - A bonus multiplier which allows parcel prim counts to go over times this amount, this does not affect - the max prims per simulator. e.g: 117 prim parcel limit x 1.5 bonus = 175 allowed - - - Autoreturn value in minutes for others' objects - - - - - - Sale price of the parcel, only useful if ForSale is set - The SalePrice will remain the same after an ownership - transfer (sale), so it can be used to see the purchase price after - a sale if the new owner has not changed it - - - Parcel Name - - - Parcel Description - - - URL For Music Stream - - - - - - Price for a temporary pass - - - How long is pass valid for - - - - - - Key of authorized buyer - - - Key of parcel snapshot - - - The landing point location - - - The landing point LookAt - - - The type of landing enforced from the enum - - - - - - - - - - - - Access list of who is whitelisted on this - parcel - - - Access list of who is blacklisted on this - parcel - - - TRUE of region denies access to age unverified users - - - true to obscure (hide) media url - - - true to obscure (hide) music url - - - A struct containing media details - - - - Displays a parcel object in string format - - string containing key=value pairs of a parcel object - - - - Defalt constructor - - Local ID of this parcel - - - - Update the simulator with any local changes to this Parcel object - - Simulator to send updates to - Whether we want the simulator to confirm - the update with a reply packet or not - - - - Set Autoreturn time - - Simulator to send the update to - - - - Parcel (subdivided simulator lots) subsystem - - - - The event subscribers. null if no subcribers - - - Raises the ParcelDwellReply event - A ParcelDwellReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ParcelInfoReply event - A ParcelInfoReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ParcelProperties event - A ParcelPropertiesEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ParcelAccessListReply event - A ParcelAccessListReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ParcelObjectOwnersReply event - A ParcelObjectOwnersReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the SimParcelsDownloaded event - A SimParcelsDownloadedEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ForceSelectObjectsReply event - A ForceSelectObjectsReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ParcelMediaUpdateReply event - A ParcelMediaUpdateReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the ParcelMediaCommand event - A ParcelMediaCommandEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - - Default constructor - - A reference to the GridClient object - - - - Request basic information for a single parcel - - Simulator-local ID of the parcel - - - - Request properties of a single parcel - - Simulator containing the parcel - Simulator-local ID of the parcel - An arbitrary integer that will be returned - with the ParcelProperties reply, useful for distinguishing between - multiple simultaneous requests - - - - Request the access list for a single parcel - - Simulator containing the parcel - Simulator-local ID of the parcel - An arbitrary integer that will be returned - with the ParcelAccessList reply, useful for distinguishing between - multiple simultaneous requests - - - - - Request properties of parcels using a bounding box selection - - Simulator containing the parcel - Northern boundary of the parcel selection - Eastern boundary of the parcel selection - Southern boundary of the parcel selection - Western boundary of the parcel selection - An arbitrary integer that will be returned - with the ParcelProperties reply, useful for distinguishing between - different types of parcel property requests - A boolean that is returned with the - ParcelProperties reply, useful for snapping focus to a single - parcel - - - - Request all simulator parcel properties (used for populating the Simulator.Parcels - dictionary) - - Simulator to request parcels from (must be connected) - - - - Request all simulator parcel properties (used for populating the Simulator.Parcels - dictionary) - - Simulator to request parcels from (must be connected) - If TRUE, will force a full refresh - Number of milliseconds to pause in between each request - - - - Request the dwell value for a parcel - - Simulator containing the parcel - Simulator-local ID of the parcel - - - - Send a request to Purchase a parcel of land - - The Simulator the parcel is located in - The parcels region specific local ID - true if this parcel is being purchased by a group - The groups - true to remove tier contribution if purchase is successful - The parcels size - The purchase price of the parcel - - - - - Reclaim a parcel of land - - The simulator the parcel is in - The parcels region specific local ID - - - - Deed a parcel to a group - - The simulator the parcel is in - The parcels region specific local ID - The groups - - - - Request prim owners of a parcel of land. - - Simulator parcel is in - The parcels region specific local ID - - - - Return objects from a parcel - - Simulator parcel is in - The parcels region specific local ID - the type of objects to return, - A list containing object owners s to return - - - - Subdivide (split) a parcel - - - - - - - - - - Join two parcels of land creating a single parcel - - - - - - - - - - Get a parcels LocalID - - Simulator parcel is in - Vector3 position in simulator (Z not used) - 0 on failure, or parcel LocalID on success. - A call to Parcels.RequestAllSimParcels is required to populate map and - dictionary. - - - - Terraform (raise, lower, etc) an area or whole parcel of land - - Simulator land area is in. - LocalID of parcel, or -1 if using bounding box - From Enum, Raise, Lower, Level, Smooth, Etc. - Size of area to modify - true on successful request sent. - Settings.STORE_LAND_PATCHES must be true, - Parcel information must be downloaded using RequestAllSimParcels() - - - - Terraform (raise, lower, etc) an area or whole parcel of land - - Simulator land area is in. - west border of area to modify - south border of area to modify - east border of area to modify - north border of area to modify - From Enum, Raise, Lower, Level, Smooth, Etc. - Size of area to modify - true on successful request sent. - Settings.STORE_LAND_PATCHES must be true, - Parcel information must be downloaded using RequestAllSimParcels() - - - - Terraform (raise, lower, etc) an area or whole parcel of land - - Simulator land area is in. - LocalID of parcel, or -1 if using bounding box - west border of area to modify - south border of area to modify - east border of area to modify - north border of area to modify - From Enum, Raise, Lower, Level, Smooth, Etc. - Size of area to modify - How many meters + or - to lower, 1 = 1 meter - true on successful request sent. - Settings.STORE_LAND_PATCHES must be true, - Parcel information must be downloaded using RequestAllSimParcels() - - - - Terraform (raise, lower, etc) an area or whole parcel of land - - Simulator land area is in. - LocalID of parcel, or -1 if using bounding box - west border of area to modify - south border of area to modify - east border of area to modify - north border of area to modify - From Enum, Raise, Lower, Level, Smooth, Etc. - Size of area to modify - How many meters + or - to lower, 1 = 1 meter - Height at which the terraform operation is acting at - - - - Sends a request to the simulator to return a list of objects owned by specific owners - - Simulator local ID of parcel - Owners, Others, Etc - List containing keys of avatars objects to select; - if List is null will return Objects of type selectType - Response data is returned in the event - - - - Eject and optionally ban a user from a parcel - - target key of avatar to eject - true to also ban target - - - - Freeze or unfreeze an avatar over your land - - target key to freeze - true to freeze, false to unfreeze - - - - Abandon a parcel of land - - Simulator parcel is in - Simulator local ID of parcel - - - - Requests the UUID of the parcel in a remote region at a specified location - - Location of the parcel in the remote region - Remote region handle - Remote region UUID - If successful UUID of the remote parcel, UUID.Zero otherwise - - - - Retrieves information on resources used by the parcel - - UUID of the parcel - Should per object resource usage be requested - Callback invoked when the request is complete - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - Raises the event - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - Raises the event - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - Raises the event - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - Raises the event - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - Raises the event - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - Raises the event - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a Parcel Update request - - - Raised when the parcel your agent is located sends a ParcelMediaCommand - - - - Parcel Accesslist - - - - Agents - - - - - - Flags for specific entry in white/black lists - - - - Owners of primitives on parcel - - - - Prim Owners - - - True of owner is group - - - Total count of prims owned by OwnerID - - - true of OwnerID is currently online and is not a group - - - The date of the most recent prim left by OwnerID - - - - Called once parcel resource usage information has been collected - - Indicates if operation was successfull - Parcel resource usage information - - - Contains a parcels dwell data returned from the simulator in response to an - - - - Construct a new instance of the ParcelDwellReplyEventArgs class - - The global ID of the parcel - The simulator specific ID of the parcel - The calculated dwell for the parcel - - - Get the global ID of the parcel - - - Get the simulator specific ID of the parcel - - - Get the calculated dwell - - - Contains basic parcel information data returned from the - simulator in response to an request - - - - Construct a new instance of the ParcelInfoReplyEventArgs class - - The object containing basic parcel info - - - Get the object containing basic parcel info - - - Contains basic parcel information data returned from the simulator in response to an request - - - - Construct a new instance of the ParcelPropertiesEventArgs class - - The object containing the details - The object containing the details - The result of the request - The number of primitieves your agent is - currently selecting and or sitting on in this parcel - The user assigned ID used to correlate a request with - these results - TODO: - - - Get the simulator the parcel is located in - - - Get the object containing the details - If Result is NoData, this object will not contain valid data - - - Get the result of the request - - - Get the number of primitieves your agent is - currently selecting and or sitting on in this parcel - - - Get the user assigned ID used to correlate a request with - these results - - - TODO: - - - Contains blacklist and whitelist data returned from the simulator in response to an request - - - - Construct a new instance of the ParcelAccessListReplyEventArgs class - - The simulator the parcel is located in - The user assigned ID used to correlate a request with - these results - The simulator specific ID of the parcel - TODO: - The list containing the white/blacklisted agents for the parcel - - - Get the simulator the parcel is located in - - - Get the user assigned ID used to correlate a request with - these results - - - Get the simulator specific ID of the parcel - - - TODO: - - - Get the list containing the white/blacklisted agents for the parcel - - - Contains blacklist and whitelist data returned from the - simulator in response to an request - - - - Construct a new instance of the ParcelObjectOwnersReplyEventArgs class - - The simulator the parcel is located in - The list containing prim ownership counts - - - Get the simulator the parcel is located in - - - Get the list containing prim ownership counts - - - Contains the data returned when all parcel data has been retrieved from a simulator - - - - Construct a new instance of the SimParcelsDownloadedEventArgs class - - The simulator the parcel data was retrieved from - The dictionary containing the parcel data - The multidimensional array containing a x,y grid mapped - to each 64x64 parcel's LocalID. - - - Get the simulator the parcel data was retrieved from - - - A dictionary containing the parcel data where the key correlates to the ParcelMap entry - - - Get the multidimensional array containing a x,y grid mapped - to each 64x64 parcel's LocalID. - - - Contains the data returned when a request - - - - Construct a new instance of the ForceSelectObjectsReplyEventArgs class - - The simulator the parcel data was retrieved from - The list of primitive IDs - true if the list is clean and contains the information - only for a given request - - - Get the simulator the parcel data was retrieved from - - - Get the list of primitive IDs - - - true if the list is clean and contains the information - only for a given request - - - Contains data when the media data for a parcel the avatar is on changes - - - - Construct a new instance of the ParcelMediaUpdateReplyEventArgs class - - the simulator the parcel media data was updated in - The updated media information - - - Get the simulator the parcel media data was updated in - - - Get the updated media information - - - Contains the media command for a parcel the agent is currently on - - - - Construct a new instance of the ParcelMediaCommandEventArgs class - - The simulator the parcel media command was issued in - - - The media command that was sent - - - - Get the simulator the parcel media command was issued in - - - - - - - - - Get the media command that was sent - - - - - - - A Name Value pair with additional settings, used in the protocol - primarily to transmit avatar names and active group in object packets - - - - - - - - - - - - - - - - - - - - Constructor that takes all the fields as parameters - - - - - - - - - - Constructor that takes a single line from a NameValue field - - - - - Type of the value - - - Unknown - - - String value - - - - - - - - - - - - - - - Deprecated - - - String value, but designated as an asset - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Level of Detail mesh - - - - - Temporary code to produce a tar archive in tar v7 format - - - - - Binary writer for the underlying stream - - - - - Write a directory entry to the tar archive. We can only handle one path level right now! - - - - - - Write a file to the tar archive - - - - - - - Write a file to the tar archive - - - - - - - Finish writing the raw tar archive data to a stream. The stream will be closed on completion. - - - - - Write a particular entry - - - - - - - - Temporary code to do the bare minimum required to read a tar archive for our purposes - - - - - Binary reader for the underlying stream - - - - - Used to trim off null chars - - - - - Used to trim off space chars - - - - - Generate a tar reader which reads from the given stream. - - - - - - Read the next entry in the tar file. - - - - the data for the entry. Returns null if there are no more entries - - - - Read the next 512 byte chunk of data as a tar header. - - A tar header struct. null if we have reached the end of the archive. - - - - Read data following a header - - - - - - - Convert octal bytes to a decimal representation - - - - - - - - - Operation to apply when applying color to texture - - - - - Information needed to translate visual param value to RGBA color - - - - - Construct VisualColorParam - - Operation to apply when applying color to texture - Colors - - - - Represents alpha blending and bump infor for a visual parameter - such as sleive length - - - - Stregth of the alpha to apply - - - File containing the alpha channel - - - Skip blending if parameter value is 0 - - - Use miltiply insted of alpha blending - - - - Create new alhpa information for a visual param - - Stregth of the alpha to apply - File containing the alpha channel - Skip blending if parameter value is 0 - Use miltiply insted of alpha blending - - - - A single visual characteristic of an avatar mesh, such as eyebrow height - - - - Index of this visual param - - - Internal name - - - Group ID this parameter belongs to - - - Name of the wearable this parameter belongs to - - - Displayable label of this characteristic - - - Displayable label for the minimum value of this characteristic - - - Displayable label for the maximum value of this characteristic - - - Default value - - - Minimum value - - - Maximum value - - - Is this param used for creation of bump layer? - - - Alpha blending/bump info - - - Color information - - - Array of param IDs that are drivers for this parameter - - - - Set all the values through the constructor - - Index of this visual param - Internal name - - - Displayable label of this characteristic - Displayable label for the minimum value of this characteristic - Displayable label for the maximum value of this characteristic - Default value - Minimum value - Maximum value - Is this param used for creation of bump layer? - Array of param IDs that are drivers for this parameter - Alpha blending/bump info - Color information - - - - Holds the Params array of all the avatar appearance parameters - - - - - - - - - - Initialize the UDP packet handler in server mode - - Port to listening for incoming UDP packets on - - - - Initialize the UDP packet handler in client mode - - Remote UDP server to connect to - - - - - - - - - - - - - - - - - - - Static helper functions and global variables - - - - This header flag signals that ACKs are appended to the packet - - - This header flag signals that this packet has been sent before - - - This header flags signals that an ACK is expected for this packet - - - This header flag signals that the message is compressed using zerocoding - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Given an X/Y location in absolute (grid-relative) terms, a region - handle is returned along with the local X/Y location in that region - - The absolute X location, a number such as - 255360.35 - The absolute Y location, a number such as - 255360.35 - The sim-local X position of the global X - position, a value from 0.0 to 256.0 - The sim-local Y position of the global Y - position, a value from 0.0 to 256.0 - A 64-bit region handle that can be used to teleport to - - - - Converts a floating point number to a terse string format used for - transmitting numbers in wearable asset files - - Floating point number to convert to a string - A terse string representation of the input number - - - - Convert a variable length field (byte array) to a string, with a - field name prepended to each line of the output - - If the byte array has unprintable characters in it, a - hex dump will be written instead - The StringBuilder object to write to - The byte array to convert to a string - A field name to prepend to each line of output - - - - Decode a zerocoded byte array, used to decompress packets marked - with the zerocoded flag - - Any time a zero is encountered, the next byte is a count - of how many zeroes to expand. One zero is encoded with 0x00 0x01, - two zeroes is 0x00 0x02, three zeroes is 0x00 0x03, etc. The - first four bytes are copied directly to the output buffer. - - The byte array to decode - The length of the byte array to decode. This - would be the length of the packet up to (but not including) any - appended ACKs - The output byte array to decode to - The length of the output buffer - - - - Encode a byte array with zerocoding. Used to compress packets marked - with the zerocoded flag. Any zeroes in the array are compressed down - to a single zero byte followed by a count of how many zeroes to expand - out. A single zero becomes 0x00 0x01, two zeroes becomes 0x00 0x02, - three zeroes becomes 0x00 0x03, etc. The first four bytes are copied - directly to the output buffer. - - The byte array to encode - The length of the byte array to encode - The output byte array to encode to - The length of the output buffer - - - - Calculates the CRC (cyclic redundancy check) needed to upload inventory. - - Creation date - Sale type - Inventory type - Type - Asset ID - Group ID - Sale price - Owner ID - Creator ID - Item ID - Folder ID - Everyone mask (permissions) - Flags - Next owner mask (permissions) - Group mask (permissions) - Owner mask (permissions) - The calculated CRC - - - - Attempts to load a file embedded in the assembly - - The filename of the resource to load - A Stream for the requested file, or null if the resource - was not successfully loaded - - - - Attempts to load a file either embedded in the assembly or found in - a given search path - - The filename of the resource to load - An optional path that will be searched if - the asset is not found embedded in the assembly - A Stream for the requested file, or null if the resource - was not successfully loaded - - - - Converts a list of primitives to an object that can be serialized - with the LLSD system - - Primitives to convert to a serializable object - An object that can be serialized with LLSD - - - - Deserializes OSD in to a list of primitives - - Structure holding the serialized primitive list, - must be of the SDMap type - A list of deserialized primitives - - - - Converts a struct or class object containing fields only into a key value separated string - - The struct object - A string containing the struct fields as the keys, and the field value as the value separated - - - // Add the following code to any struct or class containing only fields to override the ToString() - // method to display the values of the passed object - - /// Print the struct data as a string - ///A string containing the field name, and field value - public override string ToString() - { - return Helpers.StructToString(this); - } - - - - - - Passed to Logger.Log() to identify the severity of a log entry - - - - No logging information will be output - - - Non-noisy useful information, may be helpful in - debugging a problem - - - A non-critical error occurred. A warning will not - prevent the rest of the library from operating as usual, - although it may be indicative of an underlying issue - - - A critical error has occurred. Generally this will - be followed by the network layer shutting down, although the - stability of the library after an error is uncertain - - - Used for internal testing, this logging level can - generate very noisy (long and/or repetitive) messages. Don't - pass this to the Log() function, use DebugLog() instead. - - - - = - - - Number of times we've received an unknown CAPS exception in series. - - - For exponential backoff on error. - - - - The type of bump-mapping applied to a face - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The level of shininess applied to a face - - - - - - - - - - - - - - - - - The texture mapping style used for a face - - - - - - - - - - - - - - - - - Flags in the TextureEntry block that describe which properties are - set - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Wrapper around a byte array that allows bit to be packed and unpacked - one at a time or by a variable amount. Useful for very tightly packed - data like LayerData packets - - - - - - - - Default constructor, initialize the bit packer / bit unpacker - with a byte array and starting position - - Byte array to pack bits in to or unpack from - Starting position in the byte array - - - - Pack a floating point value in to the data - - Floating point value to pack - - - - Pack part or all of an integer in to the data - - Integer containing the data to pack - Number of bits of the integer to pack - - - - Pack part or all of an unsigned integer in to the data - - Unsigned integer containing the data to pack - Number of bits of the integer to pack - - - - Pack a single bit in to the data - - Bit to pack - - - - - - - - - - - - - - - - - - - - - - - - - Unpacking a floating point value from the data - - Unpacked floating point value - - - - Unpack a variable number of bits from the data in to integer format - - Number of bits to unpack - An integer containing the unpacked bits - This function is only useful up to 32 bits - - - - Unpack a variable number of bits from the data in to unsigned - integer format - - Number of bits to unpack - An unsigned integer containing the unpacked bits - This function is only useful up to 32 bits - - - - Unpack a 16-bit signed integer - - 16-bit signed integer - - - - Unpack a 16-bit unsigned integer - - 16-bit unsigned integer - - - - Unpack a 32-bit signed integer - - 32-bit signed integer - - - - Unpack a 32-bit unsigned integer - - 32-bit unsigned integer - - - - - - - Permission request flags, asked when a script wants to control an Avatar @@ -16588,9673 +26256,5 @@ Details of the newly set display name - - - Abstract base for rendering plugins - - - - - Generates a basic mesh structure from a primitive - - Primitive to generate the mesh from - Level of detail to generate the mesh at - The generated mesh - - - - Generates a basic mesh structure from a sculpted primitive and - texture - - Sculpted primitive to generate the mesh from - Sculpt texture - Level of detail to generate the mesh at - The generated mesh - - - - Generates a series of faces, each face containing a mesh and - metadata - - Primitive to generate the mesh from - Level of detail to generate the mesh at - The generated mesh - - - - Generates a series of faces for a sculpted prim, each face - containing a mesh and metadata - - Sculpted primitive to generate the mesh from - Sculpt texture - Level of detail to generate the mesh at - The generated mesh - - - - Apply texture coordinate modifications from a - to a list of vertices - - Vertex list to modify texture coordinates for - Center-point of the face - Face texture parameters - Scale of the prim - - - - Represents Mesh asset - - - - - Decoded mesh data - - - - Initializes a new instance of an AssetMesh object - - - Initializes a new instance of an AssetMesh object with parameters - A unique specific to this asset - A byte array containing the raw asset data - - - - TODO: Encodes Collada file into LLMesh format - - - - - Decodes mesh asset. See - to furter decode it for rendering - true - - - Override the base classes AssetType - - - - Archives assets - - - - - Archive assets - - - - - Archive the assets given to this archiver to the given archive. - - - - - - Write an assets metadata file to the given archive - - - - - - Write asset data files to the given archive - - - - - - Avatar group management - - - - Key of Group Member - - - Total land contribution - - - Online status information - - - Abilities that the Group Member has - - - Current group title - - - Is a group owner - - - - Role manager for a group - - - - Key of the group - - - Key of Role - - - Name of Role - - - Group Title associated with Role - - - Description of Role - - - Abilities Associated with Role - - - Returns the role's title - The role's title - - - - Class to represent Group Title - - - - Key of the group - - - ID of the role title belongs to - - - Group Title - - - Whether title is Active - - - Returns group title - - - - Represents a group on the grid - - - - Key of Group - - - Key of Group Insignia - - - Key of Group Founder - - - Key of Group Role for Owners - - - Name of Group - - - Text of Group Charter - - - Title of "everyone" role - - - Is the group open for enrolement to everyone - - - Will group show up in search - - - - - - - - - - - - Is the group Mature - - - Cost of group membership - - - - - - - - - The total number of current members this group has - - - The number of roles this group has configured - - - Show this group in agent's profile - - - Returns the name of the group - A string containing the name of the group - - - - A group Vote - - - - Key of Avatar who created Vote - - - Text of the Vote proposal - - - Total number of votes - - - - A group proposal - - - - The Text of the proposal - - - The minimum number of members that must vote before proposal passes or failes - - - The required ration of yes/no votes required for vote to pass - The three options are Simple Majority, 2/3 Majority, and Unanimous - TODO: this should be an enum - - - The duration in days votes are accepted - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Struct representing a group notice - - - - - - - - - - - - - - - - - - - - - - - Struct representing a group notice list entry - - - - Notice ID - - - Creation timestamp of notice - - - Agent name who created notice - - - Notice subject - - - Is there an attachment? - - - Attachment Type - - - - Struct representing a member of a group chat session and their settings - - - - The of the Avatar - - - True if user has voice chat enabled - - - True of Avatar has moderator abilities - - - True if a moderator has muted this avatars chat - - - True if a moderator has muted this avatars voice - - - - Role update flags - - - - - - - - - - - - - - - - - - - - - - - - - Can send invitations to groups default role - - - Can eject members from group - - - Can toggle 'Open Enrollment' and change 'Signup fee' - - - Member is visible in the public member list - - - Can create new roles - - - Can delete existing roles - - - Can change Role names, titles and descriptions - - - Can assign other members to assigners role - - - Can assign other members to any role - - - Can remove members from roles - - - Can assign and remove abilities in roles - - - Can change group Charter, Insignia, 'Publish on the web' and which - members are publicly visible in group member listings - - - Can buy land or deed land to group - - - Can abandon group owned land to Governor Linden on mainland, or Estate owner for - private estates - - - Can set land for-sale information on group owned parcels - - - Can subdivide and join parcels - - - Can join group chat sessions - - - Can use voice chat in Group Chat sessions - - - Can moderate group chat sessions - - - Can toggle "Show in Find Places" and set search category - - - Can change parcel name, description, and 'Publish on web' settings - - - Can set the landing point and teleport routing on group land - - - Can change music and media settings - - - Can toggle 'Edit Terrain' option in Land settings - - - Can toggle various About Land > Options settings - - - Can always terraform land, even if parcel settings have it turned off - - - Can always fly while over group owned land - - - Can always rez objects on group owned land - - - Can always create landmarks for group owned parcels - - - Can set home location on any group owned parcel - - - Can modify public access settings for group owned parcels - - - Can manager parcel ban lists on group owned land - - - Can manage pass list sales information - - - Can eject and freeze other avatars on group owned land - - - Can return objects set to group - - - Can return non-group owned/set objects - - - Can return group owned objects - - - Can landscape using Linden plants - - - Can deed objects to group - - - Can move group owned objects - - - Can set group owned objects for-sale - - - Pay group liabilities and receive group dividends - - - List and Host group events - - - Can send group notices - - - Can receive group notices - - - Can create group proposals - - - Can vote on group proposals - - - - Handles all network traffic related to reading and writing group - information - - - - The event subscribers. null if no subcribers - - - Raises the CurrentGroups event - A CurrentGroupsEventArgs object containing the - data sent from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupNamesReply event - A GroupNamesEventArgs object containing the - data response from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupProfile event - An GroupProfileEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupMembers event - A GroupMembersEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupRolesDataReply event - A GroupRolesDataReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupRoleMembersReply event - A GroupRolesRoleMembersReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupTitlesReply event - A GroupTitlesReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupAccountSummary event - A GroupAccountSummaryReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupCreated event - An GroupCreatedEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupJoined event - A GroupOperationEventArgs object containing the - result of the operation returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupLeft event - A GroupOperationEventArgs object containing the - result of the operation returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupDropped event - An GroupDroppedEventArgs object containing the - the group your agent left - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupMemberEjected event - An GroupMemberEjectedEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupNoticesListReply event - An GroupNoticesListReplyEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GroupInvitation event - An GroupInvitationEventArgs object containing the - data returned from the simulator - - - Thread sync lock object - - - A reference to the current instance - - - Currently-active group members requests - - - Currently-active group roles requests - - - Currently-active group role-member requests - - - Dictionary keeping group members while request is in progress - - - Dictionary keeping mebmer/role mapping while request is in progress - - - Dictionary keeping GroupRole information while request is in progress - - - Caches group name lookups - - - - Construct a new instance of the GroupManager class - - A reference to the current instance - - - - Request a current list of groups the avatar is a member of. - - CAPS Event Queue must be running for this to work since the results - come across CAPS. - - - - Lookup name of group based on groupID - - groupID of group to lookup name for. - - - - Request lookup of multiple group names - - List of group IDs to request. - - - Lookup group profile data such as name, enrollment, founder, logo, etc - Subscribe to OnGroupProfile event to receive the results. - group ID (UUID) - - - Request a list of group members. - Subscribe to OnGroupMembers event to receive the results. - group ID (UUID) - UUID of the request, use to index into cache - - - Request group roles - Subscribe to OnGroupRoles event to receive the results. - group ID (UUID) - UUID of the request, use to index into cache - - - Request members (members,role) role mapping for a group. - Subscribe to OnGroupRolesMembers event to receive the results. - group ID (UUID) - UUID of the request, use to index into cache - - - Request a groups Titles - Subscribe to OnGroupTitles event to receive the results. - group ID (UUID) - UUID of the request, use to index into cache - - - Begin to get the group account summary - Subscribe to the OnGroupAccountSummary event to receive the results. - group ID (UUID) - How long of an interval - Which interval (0 for current, 1 for last) - - - Invites a user to a group - The group to invite to - A list of roles to invite a person to - Key of person to invite - - - Set a group as the current active group - group ID (UUID) - - - Change the role that determines your active title - Group ID to use - Role ID to change to - - - Set this avatar's tier contribution - Group ID to change tier in - amount of tier to donate - - - - Save wheather agent wants to accept group notices and list this group in their profile - - Group - Accept notices from this group - List this group in the profile - - - Request to join a group - Subscribe to OnGroupJoined event for confirmation. - group ID (UUID) to join. - - - - Request to create a new group. If the group is successfully - created, L$100 will automatically be deducted - - Subscribe to OnGroupCreated event to receive confirmation. - Group struct containing the new group info - - - Update a group's profile and other information - Groups ID (UUID) to update. - Group struct to update. - - - Eject a user from a group - Group ID to eject the user from - Avatar's key to eject - - - Update role information - Modified role to be updated - - - Create a new group role - Group ID to update - Role to create - - - Delete a group role - Group ID to update - Role to delete - - - Remove an avatar from a role - Group ID to update - Role ID to be removed from - Avatar's Key to remove - - - Assign an avatar to a role - Group ID to update - Role ID to assign to - Avatar's ID to assign to role - - - Request the group notices list - Group ID to fetch notices for - - - Request a group notice by key - ID of group notice - - - Send out a group notice - Group ID to update - GroupNotice structure containing notice data - - - Start a group proposal (vote) - The Group ID to send proposal to - GroupProposal structure containing the proposal - - - Request to leave a group - Subscribe to OnGroupLeft event to receive confirmation - The group to leave - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Raised when the simulator sends us data containing - our current group membership - - - Raised when the simulator responds to a RequestGroupName - or RequestGroupNames request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when the simulator responds to a request - - - Raised when a response to a RequestGroupAccountSummary is returned - by the simulator - - - Raised when a request to create a group is successful - - - Raised when a request to join a group either - fails or succeeds - - - Raised when a request to leave a group either - fails or succeeds - - - Raised when A group is removed from the group server - - - Raised when a request to eject a member from a group either - fails or succeeds - - - Raised when the simulator sends us group notices - - - - Raised when another agent invites our avatar to join a group - - - Contains the current groups your agent is a member of - - - Construct a new instance of the CurrentGroupsEventArgs class - The current groups your agent is a member of - - - Get the current groups your agent is a member of - - - A Dictionary of group names, where the Key is the groups ID and the value is the groups name - - - Construct a new instance of the GroupNamesEventArgs class - The Group names dictionary - - - Get the Group Names dictionary - - - Represents the members of a group - - - - Construct a new instance of the GroupMembersReplyEventArgs class - - The ID of the request - The ID of the group - The membership list of the group - - - Get the ID as returned by the request to correlate - this result set and the request - - - Get the ID of the group - - - Get the dictionary of members - - - Represents the roles associated with a group - - - Construct a new instance of the GroupRolesDataReplyEventArgs class - The ID as returned by the request to correlate - this result set and the request - The ID of the group - The dictionary containing the roles - - - Get the ID as returned by the request to correlate - this result set and the request - - - Get the ID of the group - - - Get the dictionary containing the roles - - - Represents the Role to Member mappings for a group - - - Construct a new instance of the GroupRolesMembersReplyEventArgs class - The ID as returned by the request to correlate - this result set and the request - The ID of the group - The member to roles map - - - Get the ID as returned by the request to correlate - this result set and the request - - - Get the ID of the group - - - Get the member to roles map - - - Represents the titles for a group - - - Construct a new instance of the GroupTitlesReplyEventArgs class - The ID as returned by the request to correlate - this result set and the request - The ID of the group - The titles - - - Get the ID as returned by the request to correlate - this result set and the request - - - Get the ID of the group - - - Get the titles - - - Represents the summary data for a group - - - Construct a new instance of the GroupAccountSummaryReplyEventArgs class - The ID of the group - The summary data - - - Get the ID of the group - - - Get the summary data - - - A response to a group create request - - - Construct a new instance of the GroupCreatedReplyEventArgs class - The ID of the group - the success or faulure of the request - A string containing additional information - - - Get the ID of the group - - - true of the group was created successfully - - - A string containing the message - - - Represents a response to a request - - - Construct a new instance of the GroupOperationEventArgs class - The ID of the group - true of the request was successful - - - Get the ID of the group - - - true of the request was successful - - - Represents your agent leaving a group - - - Construct a new instance of the GroupDroppedEventArgs class - The ID of the group - - - Get the ID of the group - - - Represents a list of active group notices - - - Construct a new instance of the GroupNoticesListReplyEventArgs class - The ID of the group - The list containing active notices - - - Get the ID of the group - - - Get the notices list - - - Represents the profile of a group - - - Construct a new instance of the GroupProfileEventArgs class - The group profile - - - Get the group profile - - - - Provides notification of a group invitation request sent by another Avatar - - The invitation is raised when another avatar makes an offer for our avatar - to join a group. - - - The ID of the Avatar sending the group invitation - - - The name of the Avatar sending the group invitation - - - A message containing the request information which includes - the name of the group, the groups charter and the fee to join details - - - The Simulator - - - Set to true to accept invitation, false to decline - - - - A set of textures that are layered on texture of each other and "baked" - in to a single texture, for avatar appearances - - - - Final baked texture - - - Component layers - - - Width of the final baked image and scratchpad - - - Height of the final baked image and scratchpad - - - Bake type - - - - Default constructor - - Bake type - - - - Adds layer for baking - - TexturaData struct that contains texture and its params - - - - Converts avatar texture index (face) to Bake type - - Face number (AvatarTextureIndex) - BakeType, layer to which this texture belongs to - - - - Make sure images exist, resize source if needed to match the destination - - Destination image - Source image - Sanitization was succefull - - - - Fills a baked layer as a solid *appearing* color. The colors are - subtly dithered on a 16x16 grid to prevent the JPEG2000 stage from - compressing it too far since it seems to cause upload failures if - the image is a pure solid color - - Color of the base of this layer - - - - Fills a baked layer as a solid *appearing* color. The colors are - subtly dithered on a 16x16 grid to prevent the JPEG2000 stage from - compressing it too far since it seems to cause upload failures if - the image is a pure solid color - - Red value - Green value - Blue value - - - Final baked texture - - - Component layers - - - Width of the final baked image and scratchpad - - - Height of the final baked image and scratchpad - - - Bake type - - - Is this one of the 3 skin bakes - - - - Represents a Sound Asset - - - - Initializes a new instance of an AssetSound object - - - Initializes a new instance of an AssetSound object with parameters - A unique specific to this asset - A byte array containing the raw asset data - - - - TODO: Encodes a sound file - - - - - TODO: Decode a sound file - - true - - - Override the base classes AssetType - - - - Represents an that represents an avatars body ie: Hair, Etc. - - - - Initializes a new instance of an AssetBodyPart object - - - Initializes a new instance of an AssetBodyPart object with parameters - A unique specific to this asset - A byte array containing the raw asset data - - - Override the base classes AssetType - - - - Avatar profile flags - - - - - Represents an avatar (other than your own) - - - - Groups that this avatar is a member of - - - Positive and negative ratings - - - Avatar properties including about text, profile URL, image IDs and - publishing settings - - - Avatar interests including spoken languages, skills, and "want to" - choices - - - Movement control flags for avatars. Typically not set or used by - clients. To move your avatar, use Client.Self.Movement instead - - - - Contains the visual parameters describing the deformation of the avatar - - - - - Appearance version. Value greater than 0 indicates using server side baking - - - - - Version of the Current Outfit Folder that the appearance is based on - - - - - Appearance flags. Introduced with server side baking, currently unused. - - - - - List of current avatar animations - - - - - Default constructor - - - - First name - - - Last name - - - Full name - - - Active group - - - - Positive and negative ratings - - - - Positive ratings for Behavior - - - Negative ratings for Behavior - - - Positive ratings for Appearance - - - Negative ratings for Appearance - - - Positive ratings for Building - - - Negative ratings for Building - - - Positive ratings given by this avatar - - - Negative ratings given by this avatar - - - - Avatar properties including about text, profile URL, image IDs and - publishing settings - - - - First Life about text - - - First Life image ID - - - - - - - - - - - - - - - Profile image ID - - - Flags of the profile - - - Web URL for this profile - - - Should this profile be published on the web - - - Avatar Online Status - - - Is this a mature profile - - - - - - - - - - Avatar interests including spoken languages, skills, and "want to" - choices - - - - Languages profile field - - - - - - - - - - - - - - - - Index of TextureEntry slots for avatar appearances - - - - - Bake layers for avatar appearance - - - - - Appearance Flags, introdued with server side baking, currently unused - - - - Maximum number of concurrent downloads for wearable assets and textures - - - Maximum number of concurrent uploads for baked textures - - - Timeout for fetching inventory listings - - - Timeout for fetching a single wearable, or receiving a single packet response - - - Timeout for fetching a single texture - - - Timeout for uploading a single baked texture - - - Number of times to retry bake upload - - - When changing outfit, kick off rebake after - 20 seconds has passed since the last change - - - Total number of wearables for each avatar - - - Total number of baked textures on each avatar - - - Total number of wearables per bake layer - - - Mask for multiple attachments - - - Mapping between BakeType and AvatarTextureIndex - - - Map of what wearables are included in each bake - - - Magic values to finalize the cache check hashes for each - bake - - - Default avatar texture, used to detect when a custom - texture is not set for a face - - - The event subscribers. null if no subcribers - - - Raises the AgentWearablesReply event - An AgentWearablesReplyEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the CachedBakesReply event - An AgentCachedBakesReplyEventArgs object containing the - data returned from the data server AgentCachedTextureResponse - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the AppearanceSet event - An AppearanceSetEventArgs object indicating if the operatin was successfull - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the RebakeAvatarRequested event - An RebakeAvatarTexturesEventArgs object containing the - data returned from the data server - - - Thread sync lock object - - - Visual parameters last sent to the sim - - - Textures about this client sent to the sim - - - A cache of wearables currently being worn - - - A cache of textures currently being worn - - - Incrementing serial number for AgentCachedTexture packets - - - Incrementing serial number for AgentSetAppearance packets - - - Indicates if WearablesRequest succeeded - - - Indicates whether or not the appearance thread is currently - running, to prevent multiple appearance threads from running - simultaneously - - - Reference to our agent - - - - Timer used for delaying rebake on changing outfit - - - - - Main appearance thread - - - - - Is server baking complete. It needs doing only once - - - - - Default constructor - - A reference to our agent - - - - Obsolete method for setting appearance. This function no longer does anything. - Use RequestSetAppearance() to manually start the appearance thread - - - - - Obsolete method for setting appearance. This function no longer does anything. - Use RequestSetAppearance() to manually start the appearance thread - - Unused parameter - - - - Starts the appearance setting thread - - - - - Starts the appearance setting thread - - True to force rebaking, otherwise false - - - - Check if current region supports server side baking - - True if server side baking support is detected - - - - Ask the server what textures our agent is currently wearing - - - - - Build hashes out of the texture assetIDs for each baking layer to - ask the simulator whether it has cached copies of each baked texture - - - - - Returns the AssetID of the asset that is currently being worn in a - given WearableType slot - - WearableType slot to get the AssetID for - The UUID of the asset being worn in the given slot, or - UUID.Zero if no wearable is attached to the given slot or wearables - have not been downloaded yet - - - - Add a wearable to the current outfit and set appearance - - Wearable to be added to the outfit - - - - Add a wearable to the current outfit and set appearance - - Wearable to be added to the outfit - Should existing item on the same point or of the same type be replaced - - - - Add a list of wearables to the current outfit and set appearance - - List of wearable inventory items to - be added to the outfit - Should existing item on the same point or of the same type be replaced - - - - Add a list of wearables to the current outfit and set appearance - - List of wearable inventory items to - be added to the outfit - Should existing item on the same point or of the same type be replaced - - - - Remove a wearable from the current outfit and set appearance - - Wearable to be removed from the outfit - - - - Removes a list of wearables from the current outfit and set appearance - - List of wearable inventory items to - be removed from the outfit - - - - Replace the current outfit with a list of wearables and set appearance - - List of wearable inventory items that - define a new outfit - - - - Replace the current outfit with a list of wearables and set appearance - - List of wearable inventory items that - define a new outfit - Check if we have all body parts, set this to false only - if you know what you're doing - - - - Checks if an inventory item is currently being worn - - The inventory item to check against the agent - wearables - The WearableType slot that the item is being worn in, - or WearbleType.Invalid if it is not currently being worn - - - - Returns a copy of the agents currently worn wearables - - A copy of the agents currently worn wearables - Avoid calling this function multiple times as it will make - a copy of all of the wearable data each time - - - - Calls either or - depending on the value of - replaceItems - - List of wearable inventory items to add - to the outfit or become a new outfit - True to replace existing items with the - new list of items, false to add these items to the existing outfit - - - - Adds a list of attachments to our agent - - A List containing the attachments to add - If true, tells simulator to remove existing attachment - first - - - - Adds a list of attachments to our agent - - A List containing the attachments to add - If true, tells simulator to remove existing attachment - If true replace existing attachment on this attachment point, otherwise add to it (multi-attachments) - first - - - - Attach an item to our agent at a specific attach point - - A to attach - the on the avatar - to attach the item to - - - - Attach an item to our agent at a specific attach point - - A to attach - the on the avatar - If true replace existing attachment on this attachment point, otherwise add to it (multi-attachments) - to attach the item to - - - - Attach an item to our agent specifying attachment details - - The of the item to attach - The attachments owner - The name of the attachment - The description of the attahment - The to apply when attached - The of the attachment - The on the agent - to attach the item to - - - - Attach an item to our agent specifying attachment details - - The of the item to attach - The attachments owner - The name of the attachment - The description of the attahment - The to apply when attached - The of the attachment - The on the agent - If true replace existing attachment on this attachment point, otherwise add to it (multi-attachments) - to attach the item to - - - - Detach an item from our agent using an object - - An object - - - - Detach an item from our agent - - The inventory itemID of the item to detach - - - - Inform the sim which wearables are part of our current outfit - - - - - Replaces the Wearables collection with a list of new wearable items - - Wearable items to replace the Wearables collection with - - - - Calculates base color/tint for a specific wearable - based on its params - - All the color info gathered from wearable's VisualParams - passed as list of ColorParamInfo tuples - Base color/tint for the wearable - - - - Blocking method to populate the Wearables dictionary - - True on success, otherwise false - - - - Blocking method to populate the Textures array with cached bakes - - True on success, otherwise false - - - - Populates textures and visual params from a decoded asset - - Wearable to decode - - Populates textures and visual params from a decoded asset - - Wearable to decode - - - - Blocking method to download and parse currently worn wearable assets - - True on success, otherwise false - - - - Get a list of all of the textures that need to be downloaded for a - single bake layer - - Bake layer to get texture AssetIDs for - A list of texture AssetIDs to download - - - - Helper method to lookup the TextureID for a single layer and add it - to a list if it is not already present - - - - - - - Blocking method to download all of the textures needed for baking - the given bake layers - - A list of layers that need baking - No return value is given because the baking will happen - whether or not all textures are successfully downloaded - - - - Blocking method to create and upload baked textures for all of the - missing bakes - - True on success, otherwise false - - - - Blocking method to create and upload a baked texture for a single - bake layer - - Layer to bake - True on success, otherwise false - - - - Blocking method to upload a baked texture - - Five channel JPEG2000 texture data to upload - UUID of the newly created asset on success, otherwise UUID.Zero - - - - Creates a dictionary of visual param values from the downloaded wearables - - A dictionary of visual param indices mapping to visual param - values for our agent that can be fed to the Baker class - - - - Initate server baking process - - True if the server baking was successful - - - - Get the latest version of COF - - Current Outfit Folder (or null if getting the data failed) - - - - Create an AgentSetAppearance packet from Wearables data and the - Textures array and send it - - - - - Converts a WearableType to a bodypart or clothing WearableType - - A WearableType - AssetType.Bodypart or AssetType.Clothing or AssetType.Unknown - - - - Converts a BakeType to the corresponding baked texture slot in AvatarTextureIndex - - A BakeType - The AvatarTextureIndex slot that holds the given BakeType - - - - Gives the layer number that is used for morph mask - - >A BakeType - Which layer number as defined in BakeTypeToTextures is used for morph mask - - - - Converts a BakeType to a list of the texture slots that make up that bake - - A BakeType - A list of texture slots that are inputs for the given bake - - - Triggered when an AgentWearablesUpdate packet is received, - telling us what our avatar is currently wearing - request. - - - Raised when an AgentCachedTextureResponse packet is - received, giving a list of cached bakes that were found on the - simulator - request. - - - - Raised when appearance data is sent to the simulator, also indicates - the main appearance thread is finished. - - request. - - - - Triggered when the simulator requests the agent rebake its appearance. - - - - - - Returns true if AppearanceManager is busy and trying to set or change appearance will fail - - - - - Contains information about a wearable inventory item - - - - Inventory ItemID of the wearable - - - AssetID of the wearable asset - - - WearableType of the wearable - - - AssetType of the wearable - - - Asset data for the wearable - - - - Data collected from visual params for each wearable - needed for the calculation of the color - - - - - Holds a texture assetID and the data needed to bake this layer into - an outfit texture. Used to keep track of currently worn textures - and baking data - - - - A texture AssetID - - - Asset data for the texture - - - Collection of alpha masks that needs applying - - - Tint that should be applied to the texture - - - Where on avatar does this texture belong - - - Contains the Event data returned from the data server from an AgentWearablesRequest - - - Construct a new instance of the AgentWearablesReplyEventArgs class - - - Contains the Event data returned from the data server from an AgentCachedTextureResponse - - - Construct a new instance of the AgentCachedBakesReplyEventArgs class - - - Contains the Event data returned from an AppearanceSetRequest - - - - Triggered when appearance data is sent to the sim and - the main appearance thread is done. - Indicates whether appearance setting was successful - - - Indicates whether appearance setting was successful - - - Contains the Event data returned from the data server from an RebakeAvatarTextures - - - - Triggered when the simulator sends a request for this agent to rebake - its appearance - - The ID of the Texture Layer to bake - - - The ID of the Texture Layer to bake - - - - Represents an Animation - - - - Default Constructor - - - - Construct an Asset object of type Animation - - A unique specific to this asset - A byte array containing the raw asset data - - - Override the base classes AssetType - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The ObservableDictionary class is used for storing key/value pairs. It has methods for firing - events to subscribers when items are added, removed, or changed. - - Key - Value - - - - A dictionary of callbacks to fire when specified action occurs - - - - - Register a callback to be fired when an action occurs - - The action - The callback to fire - - - - Unregister a callback - - The action - The callback to fire - - - - - - - - - - Internal dictionary that this class wraps around. Do not - modify or enumerate the contents of this dictionary without locking - - - - Initializes a new instance of the Class - with the specified key/value, has the default initial capacity. - - - - // initialize a new ObservableDictionary named testDict with a string as the key and an int as the value. - public ObservableDictionary<string, int> testDict = new ObservableDictionary<string, int>(); - - - - - - Initializes a new instance of the Class - with the specified key/value, With its initial capacity specified. - - Initial size of dictionary - - - // initialize a new ObservableDictionary named testDict with a string as the key and an int as the value, - // initially allocated room for 10 entries. - public ObservableDictionary<string, int> testDict = new ObservableDictionary<string, int>(10); - - - - - - Try to get entry from the with specified key - - Key to use for lookup - Value returned - if specified key exists, if not found - - - // find your avatar using the Simulator.ObjectsAvatars ObservableDictionary: - Avatar av; - if (Client.Network.CurrentSim.ObjectsAvatars.TryGetValue(Client.Self.AgentID, out av)) - Console.WriteLine("Found Avatar {0}", av.Name); - - - - - - - Finds the specified match. - - The match. - Matched value - - - // use a delegate to find a prim in the ObjectsPrimitives ObservableDictionary - // with the ID 95683496 - uint findID = 95683496; - Primitive findPrim = sim.ObjectsPrimitives.Find( - delegate(Primitive prim) { return prim.ID == findID; }); - - - - - Find All items in an - return matching items. - a containing found items. - - Find All prims within 20 meters and store them in a List - - int radius = 20; - List<Primitive> prims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( - delegate(Primitive prim) { - Vector3 pos = prim.Position; - return ((prim.ParentID == 0) && (pos != Vector3.Zero) && (Vector3.Distance(pos, location) < radius)); - } - ); - - - - - Find All items in an - return matching keys. - a containing found keys. - - Find All keys which also exist in another dictionary - - List<UUID> matches = myDict.FindAll( - delegate(UUID id) { - return myOtherDict.ContainsKey(id); - } - ); - - - - - Check if Key exists in Dictionary - Key to check for - if found, otherwise - - - Check if Value exists in Dictionary - Value to check for - if found, otherwise - - - - Adds the specified key to the dictionary, dictionary locking is not performed, - - - The key - The value - - - - Removes the specified key, dictionary locking is not performed - - The key. - if successful, otherwise - - - - Clear the contents of the dictionary - - - - - Enumerator for iterating dictionary entries - - - - - - Gets the number of Key/Value pairs contained in the - - - - - Indexer for the dictionary - - The key - The value - - - - - - - - - - - - - - - De-serialization constructor for the InventoryNode Class - - - - - Serialization handler for the InventoryNode Class - - - - - De-serialization handler for the InventoryNode Class - - - - - - - - - - - - - User data - - - - - - - - - - - - - For inventory folder nodes specifies weather the folder needs to be - refreshed from the server - - - - - Capability to load TGAs to Bitmap - - - - - Represents a string of characters encoded with specific formatting properties - - - - A text string containing main text of the notecard - - - List of s embedded on the notecard - - - Construct an Asset of type Notecard - - - - Construct an Asset object of type Notecard - - A unique specific to this asset - A byte array containing the raw asset data - - - - Encode the raw contents of a string with the specific Linden Text properties - - - - - Decode the raw asset data including the Linden Text properties - - true if the AssetData was successfully decoded - - - Override the base classes AssetType - - - - Simulator (region) properties - - - - No flags set - - - Agents can take damage and be killed - - - Landmarks can be created here - - - Home position can be set in this sim - - - Home position is reset when an agent teleports away - - - Sun does not move - - - No object, land, etc. taxes - - - Disable heightmap alterations (agents can still plant - foliage) - - - Land cannot be released, sold, or purchased - - - All content is wiped nightly - - - Unknown: Related to the availability of an overview world map tile.(Think mainland images when zoomed out.) - - - Unknown: Related to region debug flags. Possibly to skip processing of agent interaction with world. - - - Region does not update agent prim interest lists. Internal debugging option. - - - No collision detection for non-agent objects - - - No scripts are ran - - - All physics processing is turned off - - - Region can be seen from other regions on world map. (Legacy world map option?) - - - Region can be seen from mainland on world map. (Legacy world map option?) - - - Agents not explicitly on the access list can visit the region. - - - Traffic calculations are not run across entire region, overrides parcel settings. - - - Flight is disabled (not currently enforced by the sim) - - - Allow direct (p2p) teleporting - - - Estate owner has temporarily disabled scripting - - - Restricts the usage of the LSL llPushObject function, applies to whole region. - - - Deny agents with no payment info on file - - - Deny agents with payment info on file - - - Deny agents who have made a monetary transaction - - - Parcels within the region may be joined or divided by anyone, not just estate owners/managers. - - - Abuse reports sent from within this region are sent to the estate owner defined email. - - - Region is Voice Enabled - - - Removes the ability from parcel owners to set their parcels to show in search. - - - Deny agents who have not been age verified from entering the region. - - - - Region protocol flags - - - - Nothing special - - - Region supports Server side Appearance - - - Viewer supports Server side Appearance - - - - Access level for a simulator - - - - Unknown or invalid access level - - - Trial accounts allowed - - - PG rating - - - Mature rating - - - Adult rating - - - Simulator is offline - - - Simulator does not exist - - - - - - - - A public reference to the client that this Simulator object - is attached to - - - A Unique Cache identifier for this simulator - - - The capabilities for this simulator - - - - - - The current version of software this simulator is running - - - - - - A 64x64 grid of parcel coloring values. The values stored - in this array are of the type - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true if your agent has Estate Manager rights on this region - - - - - - - - - - - - Statistics information for this simulator and the - connection to the simulator, calculated by the simulator itself - and the library - - - The regions Unique ID - - - The physical data center the simulator is located - Known values are: - - Dallas - Chandler - SF - - - - - The CPU Class of the simulator - Most full mainland/estate sims appear to be 5, - Homesteads and Openspace appear to be 501 - - - The number of regions sharing the same CPU as this one - "Full Sims" appear to be 1, Homesteads appear to be 4 - - - The billing product name - Known values are: - - Mainland / Full Region (Sku: 023) - Estate / Full Region (Sku: 024) - Estate / Openspace (Sku: 027) - Estate / Homestead (Sku: 029) - Mainland / Homestead (Sku: 129) (Linden Owned) - Mainland / Linden Homes (Sku: 131) - - - - - The billing product SKU - Known values are: - - 023 Mainland / Full Region - 024 Estate / Full Region - 027 Estate / Openspace - 029 Estate / Homestead - 129 Mainland / Homestead (Linden Owned) - 131 Linden Homes / Full Region - - - - - - Flags indicating which protocols this region supports - - - - The current sequence number for packets sent to this - simulator. Must be Interlocked before modifying. Only - useful for applications manipulating sequence numbers - - - - A thread-safe dictionary containing avatars in a simulator - - - - - A thread-safe dictionary containing primitives in a simulator - - - - - Checks simulator parcel map to make sure it has downloaded all data successfully - - true if map is full (contains no 0's) - - - - Is it safe to send agent updates to this sim - AgentMovementComplete message received - - - - Used internally to track sim disconnections - - - Event that is triggered when the simulator successfully - establishes a connection - - - Whether this sim is currently connected or not. Hooked up - to the property Connected - - - Coarse locations of avatars in this simulator - - - AvatarPositions key representing TrackAgent target - - - Sequence numbers of packets we've received - (for duplicate checking) - - - Packets we sent out that need ACKs from the simulator - - - Sequence number for pause/resume - - - Indicates if UDP connection to the sim is fully established - - - - - - Reference to the GridClient object - IPEndPoint of the simulator - handle of the simulator - - - - Called when this Simulator object is being destroyed - - - - - Attempt to connect to this simulator - - Whether to move our agent in to this sim or not - True if the connection succeeded or connection status is - unknown, false if there was a failure - - - - Initiates connection to the simulator - - Should we block until ack for this packet is recieved - - - - Disconnect from this simulator - - - - - Instructs the simulator to stop sending update (and possibly other) packets - - - - - Instructs the simulator to resume sending update packets (unpause) - - - - - Retrieve the terrain height at a given coordinate - - Sim X coordinate, valid range is from 0 to 255 - Sim Y coordinate, valid range is from 0 to 255 - The terrain height at the given point if the - lookup was successful, otherwise 0.0f - True if the lookup was successful, otherwise false - - - - Sends a packet - - Packet to be sent - - - - - - - - - Returns Simulator Name as a String - - - - - - - - - - - - - - - - - - - Sends out pending acknowledgements - - Number of ACKs sent - - - - Resend unacknowledged packets - - - - - Provides access to an internal thread-safe dictionary containing parcel - information found in this simulator - - - - - Provides access to an internal thread-safe multidimensional array containing a x,y grid mapped - to each 64x64 parcel's LocalID. - - - - The IP address and port of the server - - - Whether there is a working connection to the simulator or - not - - - Coarse locations of avatars in this simulator - - - AvatarPositions key representing TrackAgent target - - - Indicates if UDP connection to the sim is fully established - - - - Simulator Statistics - - - - Total number of packets sent by this simulator to this agent - - - Total number of packets received by this simulator to this agent - - - Total number of bytes sent by this simulator to this agent - - - Total number of bytes received by this simulator to this agent - - - Time in seconds agent has been connected to simulator - - - Total number of packets that have been resent - - - Total number of resent packets recieved - - - Total number of pings sent to this simulator by this agent - - - Total number of ping replies sent to this agent by this simulator - - - - Incoming bytes per second - - It would be nice to have this claculated on the fly, but - this is far, far easier - - - - Outgoing bytes per second - - It would be nice to have this claculated on the fly, but - this is far, far easier - - - Time last ping was sent - - - ID of last Ping sent - - - - - - - - - Current time dilation of this simulator - - - Current Frames per second of simulator - - - Current Physics frames per second of simulator - - - - - - - - - - - - - - - - - - - - - - - - - - - Total number of objects Simulator is simulating - - - Total number of Active (Scripted) objects running - - - Number of agents currently in this simulator - - - Number of agents in neighbor simulators - - - Number of Active scripts running in this simulator - - - - - - - - - - - - Number of downloads pending - - - Number of uploads pending - - - - - - - - - Number of local uploads pending - - - Unacknowledged bytes in queue - - - - Simulator handle - - - - - Number of GridClients using this datapool - - - - - Time that the last client disconnected from the simulator - - - - - The cache of prims used and unused in this simulator - - - - - Shared parcel info only when POOL_PARCEL_DATA == true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - No report - - - Unknown report type - - - Bug report - - - Complaint report - - - Customer service report - - - - Bitflag field for ObjectUpdateCompressed data blocks, describing - which options are present for each object - - - - Unknown - - - Whether the object has a TreeSpecies - - - Whether the object has floating text ala llSetText - - - Whether the object has an active particle system - - - Whether the object has sound attached to it - - - Whether the object is attached to a root object or not - - - Whether the object has texture animation settings - - - Whether the object has an angular velocity - - - Whether the object has a name value pairs string - - - Whether the object has a Media URL set - - - - Specific Flags for MultipleObjectUpdate requests - - - - None - - - Change position of prims - - - Change rotation of prims - - - Change size of prims - - - Perform operation on link set - - - Scale prims uniformly, same as selecing ctrl+shift in the - viewer. Used in conjunction with Scale - - - - Special values in PayPriceReply. If the price is not one of these - literal value of the price should be use - - - - - Indicates that this pay option should be hidden - - - - - Indicates that this pay option should have the default value - - - - - Contains the variables sent in an object update packet for objects. - Used to track position and movement of prims and avatars - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Handles all network traffic related to prims and avatar positions and - movement. - - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the ObjectProperties Event - A ObjectPropertiesEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the ObjectPropertiesUpdated Event - A ObjectPropertiesUpdatedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the ObjectPropertiesFamily Event - A ObjectPropertiesFamilyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the AvatarUpdate Event - A AvatarUpdateEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the ObjectDataBlockUpdate Event - A ObjectDataBlockUpdateEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the KillObject Event - A KillObjectEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the KillObjects Event - A KillObjectsEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the AvatarSitChanged Event - A AvatarSitChangedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the PayPriceReply Event - A PayPriceReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the PhysicsProperties Event - A PhysicsPropertiesEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - Reference to the GridClient object - - - Does periodic dead reckoning calculation to convert - velocity and acceleration to new positions for objects - - - - Construct a new instance of the ObjectManager class - - A reference to the instance - - - - Request information for a single object from a - you are currently connected to - - The the object is located - The Local ID of the object - - - - Request information for multiple objects contained in - the same simulator - - The the objects are located - An array containing the Local IDs of the objects - - - - Attempt to purchase an original object, a copy, or the contents of - an object - - The the object is located - The Local ID of the object - Whether the original, a copy, or the object - contents are on sale. This is used for verification, if the this - sale type is not valid for the object the purchase will fail - Price of the object. This is used for - verification, if it does not match the actual price the purchase - will fail - Group ID that will be associated with the new - purchase - Inventory folder UUID where the object or objects - purchased should be placed - - - BuyObject(Client.Network.CurrentSim, 500, SaleType.Copy, - 100, UUID.Zero, Client.Self.InventoryRootFolderUUID); - - - - - - Request prices that should be displayed in pay dialog. This will triggger the simulator - to send us back a PayPriceReply which can be handled by OnPayPriceReply event - - The the object is located - The ID of the object - The result is raised in the event - - - - Select a single object. This will cause the to send us - an which will raise the event - - The the object is located - The Local ID of the object - - - - - Select a single object. This will cause the to send us - an which will raise the event - - The the object is located - The Local ID of the object - if true, a call to is - made immediately following the request - - - - - Select multiple objects. This will cause the to send us - an which will raise the event - - The the objects are located - An array containing the Local IDs of the objects - Should objects be deselected immediately after selection - - - - - Select multiple objects. This will cause the to send us - an which will raise the event - - The the objects are located - An array containing the Local IDs of the objects - - - - - Update the properties of an object - - The the object is located - The Local ID of the object - true to turn the objects physical property on - true to turn the objects temporary property on - true to turn the objects phantom property on - true to turn the objects cast shadows property on - - - - Update the properties of an object - - The the object is located - The Local ID of the object - true to turn the objects physical property on - true to turn the objects temporary property on - true to turn the objects phantom property on - true to turn the objects cast shadows property on - Type of the represetnation prim will have in the physics engine - Density - normal value 1000 - Friction - normal value 0.6 - Restitution - standard value 0.5 - Gravity multiplier - standar value 1.0 - - - - Sets the sale properties of a single object - - The the object is located - The Local ID of the object - One of the options from the enum - The price of the object - - - - Sets the sale properties of multiple objects - - The the objects are located - An array containing the Local IDs of the objects - One of the options from the enum - The price of the object - - - - Deselect a single object - - The the object is located - The Local ID of the object - - - - Deselect multiple objects. - - The the objects are located - An array containing the Local IDs of the objects - - - - Perform a click action on an object - - The the object is located - The Local ID of the object - - - - Perform a click action (Grab) on a single object - - The the object is located - The Local ID of the object - The texture coordinates to touch - The surface coordinates to touch - The face of the position to touch - The region coordinates of the position to touch - The surface normal of the position to touch (A normal is a vector perpindicular to the surface) - The surface binormal of the position to touch (A binormal is a vector tangen to the surface - pointing along the U direction of the tangent space - - - - Create (rez) a new prim object in a simulator - - A reference to the object to place the object in - Data describing the prim object to rez - Group ID that this prim will be set to, or UUID.Zero if you - do not want the object to be associated with a specific group - An approximation of the position at which to rez the prim - Scale vector to size this prim - Rotation quaternion to rotate this prim - Due to the way client prim rezzing is done on the server, - the requested position for an object is only close to where the prim - actually ends up. If you desire exact placement you'll need to - follow up by moving the object after it has been created. This - function will not set textures, light and flexible data, or other - extended primitive properties - - - - Create (rez) a new prim object in a simulator - - A reference to the object to place the object in - Data describing the prim object to rez - Group ID that this prim will be set to, or UUID.Zero if you - do not want the object to be associated with a specific group - An approximation of the position at which to rez the prim - Scale vector to size this prim - Rotation quaternion to rotate this prim - Specify the - Due to the way client prim rezzing is done on the server, - the requested position for an object is only close to where the prim - actually ends up. If you desire exact placement you'll need to - follow up by moving the object after it has been created. This - function will not set textures, light and flexible data, or other - extended primitive properties - - - - Rez a Linden tree - - A reference to the object where the object resides - The size of the tree - The rotation of the tree - The position of the tree - The Type of tree - The of the group to set the tree to, - or UUID.Zero if no group is to be set - true to use the "new" Linden trees, false to use the old - - - - Rez grass and ground cover - - A reference to the object where the object resides - The size of the grass - The rotation of the grass - The position of the grass - The type of grass from the enum - The of the group to set the tree to, - or UUID.Zero if no group is to be set - - - - Set the textures to apply to the faces of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The texture data to apply - - - - Set the textures to apply to the faces of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The texture data to apply - A media URL (not used) - - - - Set the Light data on an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A object containing the data to set - - - - Set the flexible data on an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A object containing the data to set - - - - Set the sculptie texture and data on an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A object containing the data to set - - - - Unset additional primitive parameters on an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The extra parameters to set - - - - Link multiple prims into a linkset - - A reference to the object where the objects reside - An array which contains the IDs of the objects to link - The last object in the array will be the root object of the linkset TODO: Is this true? - - - - Delink/Unlink multiple prims from a linkset - - A reference to the object where the objects reside - An array which contains the IDs of the objects to delink - - - - Change the rotation of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new rotation of the object - - - - Set the name of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A string containing the new name of the object - - - - Set the name of multiple objects - - A reference to the object where the objects reside - An array which contains the IDs of the objects to change the name of - An array which contains the new names of the objects - - - - Set the description of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - A string containing the new description of the object - - - - Set the descriptions of multiple objects - - A reference to the object where the objects reside - An array which contains the IDs of the objects to change the description of - An array which contains the new descriptions of the objects - - - - Attach an object to this avatar - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The point on the avatar the object will be attached - The rotation of the attached object - - - - Drop an attached object from this avatar - - A reference to the - object where the objects reside. This will always be the simulator the avatar is currently in - - The object's ID which is local to the simulator the object is in - - - - Detach an object from yourself - - A reference to the - object where the objects reside - - This will always be the simulator the avatar is currently in - - An array which contains the IDs of the objects to detach - - - - Change the position of an object, Will change position of entire linkset - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new position of the object - - - - Change the position of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new position of the object - if true, will change position of (this) child prim only, not entire linkset - - - - Change the Scale (size) of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new scale of the object - If true, will change scale of this prim only, not entire linkset - True to resize prims uniformly - - - - Change the Rotation of an object that is either a child or a whole linkset - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new scale of the object - If true, will change rotation of this prim only, not entire linkset - - - - Send a Multiple Object Update packet to change the size, scale or rotation of a primitive - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new rotation, size, or position of the target object - The flags from the Enum - - - - Deed an object (prim) to a group, Object must be shared with group which - can be accomplished with SetPermissions() - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The of the group to deed the object to - - - - Deed multiple objects (prims) to a group, Objects must be shared with group which - can be accomplished with SetPermissions() - - A reference to the object where the object resides - An array which contains the IDs of the objects to deed - The of the group to deed the object to - - - - Set the permissions on multiple objects - - A reference to the object where the objects reside - An array which contains the IDs of the objects to set the permissions on - The new Who mask to set - Which permission to modify - The new state of permission - - - - Request additional properties for an object - - A reference to the object where the object resides - - - - - Request additional properties for an object - - A reference to the object where the object resides - Absolute UUID of the object - Whether to require server acknowledgement of this request - - - - Set the ownership of a list of objects to the specified group - - A reference to the object where the objects reside - An array which contains the IDs of the objects to set the group id on - The Groups ID - - - - Update current URL of the previously set prim media - - UUID of the prim - Set current URL to this - Prim face number - Simulator in which prim is located - - - - Set object media - - UUID of the prim - Array the length of prims number of faces. Null on face indexes where there is - no media, on faces which contain the media - Simulatior in which prim is located - - - - Retrieve information about object media - - UUID of the primitive - Simulator where prim is located - Call this callback when done - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - A terse object update, used when a transformation matrix or - velocity/acceleration for an object changes but nothing else - (scale/position/rotation/acceleration/velocity) - - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - - - - - - - - - Setup construction data for a basic primitive shape - - Primitive shape to construct - Construction data that can be plugged into a - - - - - - - - - - - - - - - - - - - - Set the Shape data of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - Data describing the prim shape - - - - Set the Material data of an object - - A reference to the object where the object resides - The objects ID which is local to the simulator the object is in - The new material of the object - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Raised when the simulator sends us data containing - A , Foliage or Attachment - - - - - Raised when the simulator sends us data containing - additional information - - - - - Raised when the simulator sends us data containing - Primitive.ObjectProperties for an object we are currently tracking - - - Raised when the simulator sends us data containing - additional and details - - - - Raised when the simulator sends us data containing - updated information for an - - - Raised when the simulator sends us data containing - and movement changes - - - Raised when the simulator sends us data containing - updates to an Objects DataBlock - - - Raised when the simulator informs us an - or is no longer within view - - - Raised when the simulator informs us when a group of - or is no longer within view - - - Raised when the simulator sends us data containing - updated sit information for our - - - Raised when the simulator sends us data containing - purchase price information for a - - - Raised when the simulator sends us data containing - additional information - - - - - - Callback for getting object media data via CAP - - Indicates if the operation was succesfull - Object media version string - Array indexed on prim face of media entry data - - - Provides data for the event - The event occurs when the simulator sends - an containing a Primitive, Foliage or Attachment data - Note 1: The event will not be raised when the object is an Avatar - Note 2: It is possible for the to be - raised twice for the same object if for example the primitive moved to a new simulator, then returned to the current simulator or - if an Avatar crosses the border into a new simulator and returns to the current simulator - - - The following code example uses the , , and - properties to display new Primitives and Attachments on the window. - - // Subscribe to the event that gives us prim and foliage information - Client.Objects.ObjectUpdate += Objects_ObjectUpdate; - - - private void Objects_ObjectUpdate(object sender, PrimEventArgs e) - { - Console.WriteLine("Primitive {0} {1} in {2} is an attachment {3}", e.Prim.ID, e.Prim.LocalID, e.Simulator.Name, e.IsAttachment); - } - - - - - - - - - Construct a new instance of the PrimEventArgs class - - The simulator the object originated from - The Primitive - The simulator time dilation - The prim was not in the dictionary before this update - true if the primitive represents an attachment to an agent - - - Get the simulator the originated from - - - Get the details - - - true if the did not exist in the dictionary before this update (always true if object tracking has been disabled) - - - true if the is attached to an - - - Get the simulator Time Dilation - - - Provides data for the event - The event occurs when the simulator sends - an containing Avatar data - Note 1: The event will not be raised when the object is an Avatar - Note 2: It is possible for the to be - raised twice for the same avatar if for example the avatar moved to a new simulator, then returned to the current simulator - - - The following code example uses the property to make a request for the top picks - using the method in the class to display the names - of our own agents picks listings on the window. - - // subscribe to the AvatarUpdate event to get our information - Client.Objects.AvatarUpdate += Objects_AvatarUpdate; - Client.Avatars.AvatarPicksReply += Avatars_AvatarPicksReply; - - private void Objects_AvatarUpdate(object sender, AvatarUpdateEventArgs e) - { - // we only want our own data - if (e.Avatar.LocalID == Client.Self.LocalID) - { - // Unsubscribe from the avatar update event to prevent a loop - // where we continually request the picks every time we get an update for ourselves - Client.Objects.AvatarUpdate -= Objects_AvatarUpdate; - // make the top picks request through AvatarManager - Client.Avatars.RequestAvatarPicks(e.Avatar.ID); - } - } - - private void Avatars_AvatarPicksReply(object sender, AvatarPicksReplyEventArgs e) - { - // we'll unsubscribe from the AvatarPicksReply event since we now have the data - // we were looking for - Client.Avatars.AvatarPicksReply -= Avatars_AvatarPicksReply; - // loop through the dictionary and extract the names of the top picks from our profile - foreach (var pickName in e.Picks.Values) - { - Console.WriteLine(pickName); - } - } - - - - - - - - Construct a new instance of the AvatarUpdateEventArgs class - - The simulator the packet originated from - The data - The simulator time dilation - The avatar was not in the dictionary before this update - - - Get the simulator the object originated from - - - Get the data - - - Get the simulator time dilation - - - true if the did not exist in the dictionary before this update (always true if avatar tracking has been disabled) - - - Provides additional primitive data for the event - The event occurs when the simulator sends - an containing additional details for a Primitive, Foliage data or Attachment data - The event is also raised when a request is - made. - - - The following code example uses the , and - - properties to display new attachments and send a request for additional properties containing the name of the - attachment then display it on the window. - - // Subscribe to the event that provides additional primitive details - Client.Objects.ObjectProperties += Objects_ObjectProperties; - - // handle the properties data that arrives - private void Objects_ObjectProperties(object sender, ObjectPropertiesEventArgs e) - { - Console.WriteLine("Primitive Properties: {0} Name is {1}", e.Properties.ObjectID, e.Properties.Name); - } - - - - - - Construct a new instance of the ObjectPropertiesEventArgs class - - The simulator the object is located - The primitive Properties - - - Get the simulator the object is located - - - Get the primitive properties - - - Provides additional primitive data for the event - The event occurs when the simulator sends - an containing additional details for a Primitive or Foliage data that is currently - being tracked in the dictionary - The event is also raised when a request is - made and is enabled - - - - - Construct a new instance of the ObjectPropertiesUpdatedEvenrArgs class - - The simulator the object is located - The Primitive - The primitive Properties - - - Get the primitive details - - - Provides additional primitive data, permissions and sale info for the event - The event occurs when the simulator sends - an containing additional details for a Primitive, Foliage data or Attachment. This includes - Permissions, Sale info, and other basic details on an object - The event is also raised when a request is - made, the viewer equivalent is hovering the mouse cursor over an object - - - - Get the simulator the object is located - - - - - - - - - Provides primitive data containing updated location, velocity, rotation, textures for the event - The event occurs when the simulator sends updated location, velocity, rotation, etc - - - - Get the simulator the object is located - - - Get the primitive details - - - - - - - - - - - - - - Get the simulator the object is located - - - Get the primitive details - - - - - - - - - - - - - - - Provides notification when an Avatar, Object or Attachment is DeRezzed or moves out of the avatars view for the - event - - - Get the simulator the object is located - - - The LocalID of the object - - - Provides notification when an Avatar, Object or Attachment is DeRezzed or moves out of the avatars view for the - event - - - Get the simulator the object is located - - - The LocalID of the object - - - - Provides updates sit position data - - - - Get the simulator the object is located - - - - - - - - - - - - - - - - - Get the simulator the object is located - - - - - - - - - - - - - Indicates if the operation was successful - - - - - Media version string - - - - - Array of media entries indexed by face number - - - - - Set when simulator sends us infomation on primitive's physical properties - - - - Simulator where the message originated - - - Updated physical properties - - - - Constructor - - Simulator where the message originated - Updated physical properties - - - - Exception class to identify inventory exceptions - - - - - Responsible for maintaining inventory structure. Inventory constructs nodes - and manages node children as is necessary to maintain a coherant hirarchy. - Other classes should not manipulate or create InventoryNodes explicitly. When - A node's parent changes (when a folder is moved, for example) simply pass - Inventory the updated InventoryFolder and it will make the appropriate changes - to its internal representation. - - - - The event subscribers, null of no subscribers - - - Raises the InventoryObjectUpdated Event - A InventoryObjectUpdatedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the InventoryObjectRemoved Event - A InventoryObjectRemovedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the InventoryObjectAdded Event - A InventoryObjectAddedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - - Returns the contents of the specified folder - - A folder's UUID - The contents of the folder corresponding to folder - When folder does not exist in the inventory - - - - Updates the state of the InventoryNode and inventory data structure that - is responsible for the InventoryObject. If the item was previously not added to inventory, - it adds the item, and updates structure accordingly. If it was, it updates the - InventoryNode, changing the parent node if item.parentUUID does - not match node.Parent.Data.UUID. - - You can not set the inventory root folder using this method - - The InventoryObject to store - - - - Removes the InventoryObject and all related node data from Inventory. - - The InventoryObject to remove. - - - - Used to find out if Inventory contains the InventoryObject - specified by uuid. - - The UUID to check. - true if inventory contains uuid, false otherwise - - - - Saves the current inventory structure to a cache file - - Name of the cache file to save to - - - - Loads in inventory cache file into the inventory structure. Note only valid to call after login has been successful. - - Name of the cache file to load - The number of inventory items sucessfully reconstructed into the inventory node tree - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - - The root folder of this avatars inventory - - - - - The default shared library folder - - - - - The root node of the avatars inventory - - - - - The root node of the default shared library - - - - - By using the bracket operator on this class, the program can get the - InventoryObject designated by the specified uuid. If the value for the corresponding - UUID is null, the call is equivelant to a call to RemoveNodeFor(this[uuid]). - If the value is non-null, it is equivelant to a call to UpdateNodeFor(value), - the uuid parameter is ignored. - - The UUID of the InventoryObject to get or set, ignored if set to non-null value. - The InventoryObject corresponding to uuid. - - - - The InternalDictionary class is used through the library for storing key/value pairs. - It is intended to be a replacement for the generic Dictionary class and should - be used in its place. It contains several methods for allowing access to the data from - outside the library that are read only and thread safe. - - - Key - Value - - - Internal dictionary that this class wraps around. Do not - modify or enumerate the contents of this dictionary without locking - on this member - - - - Initializes a new instance of the Class - with the specified key/value, has the default initial capacity. - - - - // initialize a new InternalDictionary named testDict with a string as the key and an int as the value. - public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(); - - - - - - Initializes a new instance of the Class - with the specified key/value, has its initial valies copied from the specified - - - - to copy initial values from - - - // initialize a new InternalDictionary named testAvName with a UUID as the key and an string as the value. - // populates with copied values from example KeyNameCache Dictionary. - - // create source dictionary - Dictionary<UUID, string> KeyNameCache = new Dictionary<UUID, string>(); - KeyNameCache.Add("8300f94a-7970-7810-cf2c-fc9aa6cdda24", "Jack Avatar"); - KeyNameCache.Add("27ba1e40-13f7-0708-3e98-5819d780bd62", "Jill Avatar"); - - // Initialize new dictionary. - public InternalDictionary<UUID, string> testAvName = new InternalDictionary<UUID, string>(KeyNameCache); - - - - - - Initializes a new instance of the Class - with the specified key/value, With its initial capacity specified. - - Initial size of dictionary - - - // initialize a new InternalDictionary named testDict with a string as the key and an int as the value, - // initially allocated room for 10 entries. - public InternalDictionary<string, int> testDict = new InternalDictionary<string, int>(10); - - - - - - Try to get entry from with specified key - - Key to use for lookup - Value returned - if specified key exists, if not found - - - // find your avatar using the Simulator.ObjectsAvatars InternalDictionary: - Avatar av; - if (Client.Network.CurrentSim.ObjectsAvatars.TryGetValue(Client.Self.AgentID, out av)) - Console.WriteLine("Found Avatar {0}", av.Name); - - - - - - - Finds the specified match. - - The match. - Matched value - - - // use a delegate to find a prim in the ObjectsPrimitives InternalDictionary - // with the ID 95683496 - uint findID = 95683496; - Primitive findPrim = sim.ObjectsPrimitives.Find( - delegate(Primitive prim) { return prim.ID == findID; }); - - - - - Find All items in an - return matching items. - a containing found items. - - Find All prims within 20 meters and store them in a List - - int radius = 20; - List<Primitive> prims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( - delegate(Primitive prim) { - Vector3 pos = prim.Position; - return ((prim.ParentID == 0) && (pos != Vector3.Zero) && (Vector3.Distance(pos, location) < radius)); - } - ); - - - - - Find All items in an - return matching keys. - a containing found keys. - - Find All keys which also exist in another dictionary - - List<UUID> matches = myDict.FindAll( - delegate(UUID id) { - return myOtherDict.ContainsKey(id); - } - ); - - - - - Perform an on each entry in an - to perform - - - // Iterates over the ObjectsPrimitives InternalDictionary and prints out some information. - Client.Network.CurrentSim.ObjectsPrimitives.ForEach( - delegate(Primitive prim) - { - if (prim.Text != null) - { - Console.WriteLine("NAME={0} ID = {1} TEXT = '{2}'", - prim.PropertiesFamily.Name, prim.ID, prim.Text); - } - }); - - - - - Perform an on each key of an - to perform - - - - Perform an on each KeyValuePair of an - - to perform - - - Check if Key exists in Dictionary - Key to check for - if found, otherwise - - - Check if Value exists in Dictionary - Value to check for - if found, otherwise - - - - Adds the specified key to the dictionary, dictionary locking is not performed, - - - The key - The value - - - - Removes the specified key, dictionary locking is not performed - - The key. - if successful, otherwise - - - - Gets the number of Key/Value pairs contained in the - - - - - Indexer for the dictionary - - The key - The value - - - - Constants for the archiving module - - - - - Path for region settings. - - - - - The location of the archive control file - - - - - Path for the assets held in an archive - - - - - Path for the prims file - - - - - Path for terrains. Technically these may be assets, but I think it's quite nice to split them out. - - - - - Path for region settings. - - - - - The character the separates the uuid from extension information in an archived asset filename - - - - - Extensions used for asset types in the archive - - - - X position of this patch - - - Y position of this patch - - - A 16x16 array of floats holding decompressed layer data - - - - Creates a LayerData packet for compressed land data given a full - simulator heightmap and an array of indices of patches to compress - - A 256 * 256 array of floating point values - specifying the height at each meter in the simulator - Array of indexes in the 16x16 grid of patches - for this simulator. For example if 1 and 17 are specified, patches - x=1,y=0 and x=1,y=1 are sent - - - - - Add a patch of terrain to a BitPacker - - BitPacker to write the patch to - Heightmap of the simulator, must be a 256 * - 256 float array - X offset of the patch to create, valid values are - from 0 to 15 - Y offset of the patch to create, valid values are - from 0 to 15 - - - - pre-defined built in sounds - - - - - - - - - - - - - - - - - - - - - - - - - - - - coins - - - cash register bell - - - - - - - - - rubber - - - plastic - - - flesh - - - wood splintering? - - - glass break - - - metal clunk - - - whoosh - - - shake - - - - - - ding - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A dictionary containing all pre-defined sounds - - A dictionary containing the pre-defined sounds, - where the key is the sounds ID, and the value is a string - containing a name to identify the purpose of the sound - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Checks the instance back into the object pool - - - - - Returns an instance of the class that has been checked out of the Object Pool. - - - - - Sent to the client to indicate a teleport request has completed - - - - The of the agent - - - - - - The simulators handle the agent teleported to - - - A Uri which contains a list of Capabilities the simulator supports - - - Indicates the level of access required - to access the simulator, or the content rating, or the simulators - map status - - - The IP Address of the simulator - - - The UDP Port the simulator will listen for UDP traffic on - - - Status flags indicating the state of the Agent upon arrival, Flying, etc. - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Sent to the viewer when a neighboring simulator is requesting the agent make a connection to it. - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent to the client which indicates a teleport request has failed - and contains some information on why it failed - - - - - - - A string key of the reason the teleport failed e.g. CouldntTPCloser - Which could be used to look up a value in a dictionary or enum - - - The of the Agent - - - A string human readable message containing the reason - An example: Could not teleport closer to destination - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Contains a list of prim owner information for a specific parcel in a simulator - - - A Simulator will always return at least 1 entry - If agent does not have proper permission the OwnerID will be UUID.Zero - If agent does not have proper permission OR there are no primitives on parcel - the DataBlocksExtended map will not be sent from the simulator - - - - An Array of objects - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Prim ownership information for a specified owner on a single parcel - - - - The of the prim owner, - UUID.Zero if agent has no permission to view prim owner information - - - The total number of prims - - - True if the OwnerID is a - - - True if the owner is online - This is no longer used by the LL Simulators - - - The date the most recent prim was rezzed - - - - The details of a single parcel in a region, also contains some regionwide globals - - - - Simulator-local ID of this parcel - - - Maximum corner of the axis-aligned bounding box for this - parcel - - - Minimum corner of the axis-aligned bounding box for this - parcel - - - Total parcel land area - - - - - - Key of authorized buyer - - - Bitmap describing land layout in 4x4m squares across the - entire region - - - - - - Date land was claimed - - - Appears to always be zero - - - Parcel Description - - - - - - - - - Total number of primitives owned by the parcel group on - this parcel - - - Whether the land is deeded to a group or not - - - - - - Maximum number of primitives this parcel supports - - - The Asset UUID of the Texture which when applied to a - primitive will display the media - - - A URL which points to any Quicktime supported media type - - - A byte, if 0x1 viewer should auto scale media to fit object - - - URL For Music Stream - - - Parcel Name - - - Autoreturn value in minutes for others' objects - - - - - - Total number of other primitives on this parcel - - - UUID of the owner of this parcel - - - Total number of primitives owned by the parcel owner on - this parcel - - - - - - How long is pass valid for - - - Price for a temporary pass - - - - - - Disallows people outside the parcel from being able to see in - - - - - - - - - - - - True if the region denies access to age unverified users - - - - - - This field is no longer used - - - The result of a request for parcel properties - - - Sale price of the parcel, only useful if ForSale is set - The SalePrice will remain the same after an ownership - transfer (sale), so it can be used to see the purchase price after - a sale if the new owner has not changed it - - - - Number of primitives your avatar is currently - selecting and sitting on in this parcel - - - - - - - - A number which increments by 1, starting at 0 for each ParcelProperties request. - Can be overriden by specifying the sequenceID with the ParcelPropertiesRequest being sent. - a Negative number indicates the action in has occurred. - - - - Maximum primitives across the entire simulator - - - Total primitives across the entire simulator - - - - - - Key of parcel snapshot - - - Parcel ownership status - - - Total number of primitives on this parcel - - - - - - - - - A description of the media - - - An Integer which represents the height of the media - - - An integer which represents the width of the media - - - A boolean, if true the viewer should loop the media - - - A string which contains the mime type of the media - - - true to obscure (hide) media url - - - true to obscure (hide) music url - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - A message sent from the viewer to the simulator to updated a specific parcels settings - - - The of the agent authorized to purchase this - parcel of land or a NULL if the sale is authorized to anyone - - - true to enable auto scaling of the parcel media - - - The category of this parcel used when search is enabled to restrict - search results - - - A string containing the description to set - - - The of the which allows for additional - powers and restrictions. - - - The which specifies how avatars which teleport - to this parcel are handled - - - The LocalID of the parcel to update settings on - - - A string containing the description of the media which can be played - to visitors - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - Base class used for the RemoteParcelRequest message - - - - A message sent from the viewer to the simulator to request information - on a remote parcel - - - - Local sim position of the parcel we are looking up - - - Region handle of the parcel we are looking up - - - Region of the parcel we are looking up - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent from the simulator to the viewer in response to a - which will contain parcel information - - - - The grid-wide unique parcel ID - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message containing a request for a remote parcel from a viewer, or a response - from the simulator to that request - - - - The request or response details block - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent from the simulator to an agent which contains - the groups the agent is in - - - - The Agent receiving the message - - - An array containing information - for each the agent is a member of - - - An array containing information - for each the agent is a member of - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - Group Details specific to the agent - - - true of the agent accepts group notices - - - The agents tier contribution to the group - - - The Groups - - - The of the groups insignia - - - The name of the group - - - The aggregate permissions the agent has in the group for all roles the agent - is assigned - - - An optional block containing additional agent specific information - - - true of the agent allows this group to be - listed in their profile - - - - A message sent from the viewer to the simulator which - specifies the language and permissions for others to detect - the language specified - - - - A string containng the default language - to use for the agent - - - true of others are allowed to - know the language setting - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - An EventQueue message sent from the simulator to an agent when the agent - leaves a group - - - - - An Array containing the AgentID and GroupID - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - An object containing the Agents UUID, and the Groups UUID - - - The ID of the Agent leaving the group - - - The GroupID the Agent is leaving - - - Base class for Asset uploads/results via Capabilities - - - - The request state - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent from the viewer to the simulator to request a temporary upload capability - which allows an asset to be uploaded - - - - The Capability URL sent by the simulator to upload the baked texture to - - - - A message sent from the simulator that will inform the agent the upload is complete, - and the UUID of the uploaded asset - - - - The uploaded texture asset ID - - - - A message sent from the viewer to the simulator to request a temporary - capability URI which is used to upload an agents baked appearance textures - - - - Object containing request or response - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent from the simulator which indicates the minimum version required for - using voice chat - - - - Major Version Required - - - Minor version required - - - The name of the region sending the version requrements - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent from the simulator to the viewer containing the - voice server URI - - - - The Parcel ID which the voice server URI applies - - - The name of the region - - - A uri containing the server/channel information - which the viewer can utilize to participate in voice conversations - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - - - - - - - - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent by the viewer to the simulator to request a temporary - capability for a script contained with in a Tasks inventory to be updated - - - - Object containing request or response - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent from the simulator to the viewer to indicate - a Tasks scripts status. - - - - The Asset ID of the script - - - True of the script is compiled/ran using the mono interpreter, false indicates it - uses the older less efficient lsl2 interprter - - - The Task containing the scripts - - - true of the script is in a running state - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message containing the request/response used for updating a gesture - contained with an agents inventory - - - - Object containing request or response - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message request/response which is used to update a notecard contained within - a tasks inventory - - - - The of the Task containing the notecard asset to update - - - The notecard assets contained in the tasks inventory - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A reusable class containing a message sent from the viewer to the simulator to request a temporary uploader capability - which is used to update an asset in an agents inventory - - - - - The Notecard AssetID to replace - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message containing the request/response used for updating a notecard - contained with an agents inventory - - - - Object containing request or response - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent from the simulator to the viewer which indicates - an error occurred while attempting to update a script in an agents or tasks - inventory - - - - true of the script was successfully compiled by the simulator - - - A string containing the error which occured while trying - to update the script - - - A new AssetID assigned to the script - - - - A message sent from the viewer to the simulator - requesting the update of an existing script contained - within a tasks inventory - - - - if true, set the script mode to running - - - The scripts InventoryItem ItemID to update - - - A lowercase string containing either "mono" or "lsl2" which - specifies the script is compiled and ran on the mono runtime, or the older - lsl runtime - - - The tasks which contains the script to update - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message containing either the request or response used in updating a script inside - a tasks inventory - - - - Object containing request or response - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Response from the simulator to notify the viewer the upload is completed, and - the UUID of the script asset and its compiled status - - - - The uploaded texture asset ID - - - true of the script was compiled successfully - - - - A message sent from a viewer to the simulator requesting a temporary uploader capability - used to update a script contained in an agents inventory - - - - The existing asset if of the script in the agents inventory to replace - - - The language of the script - Defaults to lsl version 2, "mono" might be another possible option - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message containing either the request or response used in updating a script inside - an agents inventory - - - - Object containing request or response - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - Base class for Map Layers via Capabilities - - - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Sent by an agent to the capabilities server to request map layers - - - - - A message sent from the simulator to the viewer which contains an array of map images and their grid coordinates - - - - An array containing LayerData items - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - An object containing map location details - - - - The Asset ID of the regions tile overlay - - - The grid location of the southern border of the map tile - - - The grid location of the western border of the map tile - - - The grid location of the eastern border of the map tile - - - The grid location of the northern border of the map tile - - - Object containing request or response - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - New as of 1.23 RC1, no details yet. - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - A string containing the method used - - - - A request sent from an agent to the Simulator to begin a new conference. - Contains a list of Agents which will be included in the conference - - - - An array containing the of the agents invited to this conference - - - The conferences Session ID - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A moderation request sent from a conference moderator - Contains an agent and an optional action to take - - - - The Session ID - - - - - - A list containing Key/Value pairs, known valid values: - key: text value: true/false - allow/disallow specified agents ability to use text in session - key: voice value: true/false - allow/disallow specified agents ability to use voice in session - - "text" or "voice" - - - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - A message sent from the agent to the simulator which tells the - simulator we've accepted a conference invitation - - - - The conference SessionID - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - Key of sender - - - Name of sender - - - Key of destination avatar - - - ID of originating estate - - - Key of originating region - - - Coordinates in originating region - - - Instant message type - - - Group IM session toggle - - - Key of IM session, for Group Messages, the groups UUID - - - Timestamp of the instant message - - - Instant message text - - - Whether this message is held for offline avatars - - - Context specific packed data - - - Is this invitation for voice group/conference chat - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Sent from the simulator to the viewer. - - When an agent initially joins a session the AgentUpdatesBlock object will contain a list of session members including - a boolean indicating they can use voice chat in this session, a boolean indicating they are allowed to moderate - this session, and lastly a string which indicates another agent is entering the session with the Transition set to "ENTER" - - During the session lifetime updates on individuals are sent. During the update the booleans sent during the initial join are - excluded with the exception of the Transition field. This indicates a new user entering or exiting the session with - the string "ENTER" or "LEAVE" respectively. - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - An EventQueue message sent when the agent is forcibly removed from a chatterbox session - - - - - A string containing the reason the agent was removed - - - - - The ChatterBoxSession's SessionID - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - - Event Queue message describing physics engine attributes of a list of objects - Sim sends these when object is selected - - - - Array with the list of physics properties - - - - Serializes the message - - Serialized OSD - - - - Deseializes the message - - Incoming data to deserialize - - - - A message sent from the viewer to the simulator which - specifies that the user has changed current URL - of the specific media on a prim face - - - - - New URL - - - - - Prim UUID where navigation occured - - - - - Face index - - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - Base class used for the ObjectMedia message - - - - Message used to retrive prim media data - - - - - Prim UUID - - - - - Requested operation, either GET or UPDATE - - - - - Serialize object - - Serialized object as OSDMap - - - - Deserialize the message - - An containing the data - - - - Message used to update prim media data - - - - - Prim UUID - - - - - Array of media entries indexed by face number - - - - - Media version string - - - - - Serialize object - - Serialized object as OSDMap - - - - Deserialize the message - - An containing the data - - - - Message used to update prim media data - - - - - Prim UUID - - - - - Array of media entries indexed by face number - - - - - Requested operation, either GET or UPDATE - - - - - Serialize object - - Serialized object as OSDMap - - - - Deserialize the message - - An containing the data - - - - Message for setting or getting per face MediaEntry - - - - The request or response details block - - - - Serialize the object - - An containing the objects data - - - - Deserialize the message - - An containing the data - - - Details about object resource usage - - - Object UUID - - - Object name - - - Indicates if object is group owned - - - Locatio of the object - - - Object owner - - - Resource usage, keys are resource names, values are resource usage for that specific resource - - - - Deserializes object from OSD - - An containing the data - - - - Makes an instance based on deserialized data - - serialized data - Instance containg deserialized data - - - Details about parcel resource usage - - - Parcel UUID - - - Parcel local ID - - - Parcel name - - - Indicates if parcel is group owned - - - Parcel owner - - - Array of containing per object resource usage - - - - Deserializes object from OSD - - An containing the data - - - - Makes an instance based on deserialized data - - serialized data - Instance containg deserialized data - - - Resource usage base class, both agent and parcel resource - usage contains summary information - - - Summary of available resources, keys are resource names, - values are resource usage for that specific resource - - - Summary resource usage, keys are resource names, - values are resource usage for that specific resource - - - - Serializes object - - serialized data - - - - Deserializes object from OSD - - An containing the data - - - Agent resource usage - - - Per attachment point object resource usage - - - - Deserializes object from OSD - - An containing the data - - - - Makes an instance based on deserialized data - - serialized data - Instance containg deserialized data - - - - Detects which class handles deserialization of this message - - An containing the data - Object capable of decoding this message - - - Request message for parcel resource usage - - - UUID of the parel to request resource usage info - - - - Serializes object - - serialized data - - - - Deserializes object from OSD - - An containing the data - - - Response message for parcel resource usage - - - URL where parcel resource usage details can be retrieved - - - URL where parcel resource usage summary can be retrieved - - - - Serializes object - - serialized data - - - - Deserializes object from OSD - - An containing the data - - - - Detects which class handles deserialization of this message - - An containing the data - Object capable of decoding this message - - - Parcel resource usage - - - Array of containing per percal resource usage - - - - Deserializes object from OSD - - An containing the data - - - - Reply to request for bunch if display names - - - - Current display name - - - Following UUIDs failed to return a valid display name - - - - Serializes the message - - OSD containting the messaage - - - - Message sent when requesting change of the display name - - - - Current display name - - - Desired new display name - - - - Serializes the message - - OSD containting the messaage - - - - Message recieved in response to request to change display name - - - - New display name - - - String message indicating the result of the operation - - - Numerical code of the result, 200 indicates success - - - - Serializes the message - - OSD containting the messaage - - - - Message recieved when someone nearby changes their display name - - - - Previous display name, empty string if default - - - New display name - - - - Serializes the message - - OSD containting the messaage - - - - Provides helper methods for parallelizing loops - - - - - Executes a for loop in which iterations may run in parallel - - The loop will be started at this index - The loop will be terminated before this index is reached - Method body to run for each iteration of the loop - - - - Executes a for loop in which iterations may run in parallel - - The number of concurrent execution threads to run - The loop will be started at this index - The loop will be terminated before this index is reached - Method body to run for each iteration of the loop - - - - Executes a foreach loop in which iterations may run in parallel - - Object type that the collection wraps - An enumerable collection to iterate over - Method body to run for each object in the collection - - - - Executes a foreach loop in which iterations may run in parallel - - Object type that the collection wraps - The number of concurrent execution threads to run - An enumerable collection to iterate over - Method body to run for each object in the collection - - - - Executes a series of tasks in parallel - - A series of method bodies to execute - - - - Executes a series of tasks in parallel - - The number of concurrent execution threads to run - A series of method bodies to execute - - - Sort by name - - - Sort by date - - - Sort folders by name, regardless of whether items are - sorted by name or date - - - Place system folders at the top - - - - Possible destinations for DeRezObject request - - - - - - - Copy from in-world to agent inventory - - - Derez to TaskInventory - - - - - - Take Object - - - - - - Delete Object - - - Put an avatar attachment into agent inventory - - - - - - Return an object back to the owner's inventory - - - Return a deeded object back to the last owner's inventory - - - - Upper half of the Flags field for inventory items - - - - Indicates that the NextOwner permission will be set to the - most restrictive set of permissions found in the object set - (including linkset items and object inventory items) on next rez - - - Indicates that the object sale information has been - changed - - - If set, and a slam bit is set, indicates BaseMask will be overwritten on Rez - - - If set, and a slam bit is set, indicates OwnerMask will be overwritten on Rez - - - If set, and a slam bit is set, indicates GroupMask will be overwritten on Rez - - - If set, and a slam bit is set, indicates EveryoneMask will be overwritten on Rez - - - If set, and a slam bit is set, indicates NextOwnerMask will be overwritten on Rez - - - Indicates whether this object is composed of multiple - items or not - - - Indicates that the asset is only referenced by this - inventory item. If this item is deleted or updated to reference a - new assetID, the asset can be deleted - - - - Base Class for Inventory Items - - - - of item/folder - - - of parent folder - - - Name of item/folder - - - Item/Folder Owners - - - - Constructor, takes an itemID as a parameter - - The of the item - - - - - - - - - - - - - - - - Generates a number corresponding to the value of the object to support the use of a hash table, - suitable for use in hashing algorithms and data structures such as a hash table - - A Hashcode of all the combined InventoryBase fields - - - - Determine whether the specified object is equal to the current object - - InventoryBase object to compare against - true if objects are the same - - - - Determine whether the specified object is equal to the current object - - InventoryBase object to compare against - true if objects are the same - - - - Convert inventory to OSD - - OSD representation - - - - An Item in Inventory - - - - The of this item - - - The combined of this item - - - The type of item from - - - The type of item from the enum - - - The of the creator of this item - - - A Description of this item - - - The s this item is set to or owned by - - - If true, item is owned by a group - - - The price this item can be purchased for - - - The type of sale from the enum - - - Combined flags from - - - Time and date this inventory item was created, stored as - UTC (Coordinated Universal Time) - - - Used to update the AssetID in requests sent to the server - - - The of the previous owner of the item - - - - Construct a new InventoryItem object - - The of the item - - - - Construct a new InventoryItem object of a specific Type - - The type of item from - of the item - - - - Indicates inventory item is a link - - True if inventory item is a link to another inventory item - - - - - - - - - - - - - - - - Generates a number corresponding to the value of the object to support the use of a hash table. - Suitable for use in hashing algorithms and data structures such as a hash table - - A Hashcode of all the combined InventoryItem fields - - - - Compares an object - - The object to compare - true if comparison object matches - - - - Determine whether the specified object is equal to the current object - - The object to compare against - true if objects are the same - - - - Determine whether the specified object is equal to the current object - - The object to compare against - true if objects are the same - - - - Create InventoryItem from OSD - - OSD Data that makes up InventoryItem - Inventory item created - - - - Convert InventoryItem to OSD - - OSD representation of InventoryItem - - - - InventoryTexture Class representing a graphical image - - - - - - Construct an InventoryTexture object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryTexture object from a serialization stream - - - - - InventorySound Class representing a playable sound - - - - - Construct an InventorySound object - - A which becomes the - objects AssetUUID - - - - Construct an InventorySound object from a serialization stream - - - - - InventoryCallingCard Class, contains information on another avatar - - - - - Construct an InventoryCallingCard object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryCallingCard object from a serialization stream - - - - - InventoryLandmark Class, contains details on a specific location - - - - - Construct an InventoryLandmark object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryLandmark object from a serialization stream - - - - - Landmarks use the InventoryItemFlags struct and will have a flag of 1 set if they have been visited - - - - - InventoryObject Class contains details on a primitive or coalesced set of primitives - - - - - Construct an InventoryObject object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryObject object from a serialization stream - - - - - Gets or sets the upper byte of the Flags value - - - - - Gets or sets the object attachment point, the lower byte of the Flags value - - - - - InventoryNotecard Class, contains details on an encoded text document - - - - - Construct an InventoryNotecard object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryNotecard object from a serialization stream - - - - - InventoryCategory Class - - TODO: Is this even used for anything? - - - - Construct an InventoryCategory object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryCategory object from a serialization stream - - - - - InventoryLSL Class, represents a Linden Scripting Language object - - - - - Construct an InventoryLSL object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryLSL object from a serialization stream - - - - - InventorySnapshot Class, an image taken with the viewer - - - - - Construct an InventorySnapshot object - - A which becomes the - objects AssetUUID - - - - Construct an InventorySnapshot object from a serialization stream - - - - - InventoryAttachment Class, contains details on an attachable object - - - - - Construct an InventoryAttachment object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryAttachment object from a serialization stream - - - - - Get the last AttachmentPoint this object was attached to - - - - - InventoryWearable Class, details on a clothing item or body part - - - - - Construct an InventoryWearable object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryWearable object from a serialization stream - - - - - The , Skin, Shape, Skirt, Etc - - - - - InventoryAnimation Class, A bvh encoded object which animates an avatar - - - - - Construct an InventoryAnimation object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryAnimation object from a serialization stream - - - - - InventoryGesture Class, details on a series of animations, sounds, and actions - - - - - Construct an InventoryGesture object - - A which becomes the - objects AssetUUID - - - - Construct an InventoryGesture object from a serialization stream - - - - - A folder contains s and has certain attributes specific - to itself - - - - The Preferred for a folder. - - - The Version of this folder - - - Number of child items this folder contains. - - - - Constructor - - UUID of the folder - - - - - - - - - - Get Serilization data for this InventoryFolder object - - - - - Construct an InventoryFolder object from a serialization stream - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Create InventoryFolder from OSD - - OSD Data that makes up InventoryFolder - Inventory folder created - - - - Convert InventoryItem to OSD - - OSD representation of InventoryItem - - - - Tools for dealing with agents inventory - - - - Used for converting shadow_id to asset_id - - - The event subscribers, null of no subscribers - - - Raises the ItemReceived Event - A ItemReceivedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the FolderUpdated Event - A FolderUpdatedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the InventoryObjectOffered Event - A InventoryObjectOfferedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the TaskItemReceived Event - A TaskItemReceivedEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the FindObjectByPath Event - A FindObjectByPathEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the TaskInventoryReply Event - A TaskInventoryReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the SaveAssetToInventory Event - A SaveAssetToInventoryEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - The event subscribers, null of no subscribers - - - Raises the ScriptRunningReply Event - A ScriptRunningReplyEventArgs object containing - the data sent from the simulator - - - Thread sync lock object - - - Partial mapping of AssetTypes to folder names - - - - Default constructor - - Reference to the GridClient object - - - - Fetch an inventory item from the dataserver - - The items - The item Owners - a integer representing the number of milliseconds to wait for results - An object on success, or null if no item was found - Items will also be sent to the event - - - - Request A single inventory item - - The items - The item Owners - - - - - Request inventory items - - Inventory items to request - Owners of the inventory items - - - - - Request inventory items via Capabilities - - Inventory items to request - Owners of the inventory items - - - - - Get contents of a folder - - The of the folder to search - The of the folders owner - true to retrieve folders - true to retrieve items - sort order to return results in - a integer representing the number of milliseconds to wait for results - A list of inventory items matching search criteria within folder - - InventoryFolder.DescendentCount will only be accurate if both folders and items are - requested - - - - Request the contents of an inventory folder - - The folder to search - The folder owners - true to return s contained in folder - true to return s containd in folder - the sort order to return items in - - - - - Request the contents of an inventory folder using HTTP capabilities - - The folder to search - The folder owners - true to return s contained in folder - true to return s containd in folder - the sort order to return items in - - - - - Returns the UUID of the folder (category) that defaults to - containing 'type'. The folder is not necessarily only for that - type - - This will return the root folder if one does not exist - - The UUID of the desired folder if found, the UUID of the RootFolder - if not found, or UUID.Zero on failure - - - - Find an object in inventory using a specific path to search - - The folder to begin the search in - The object owners - A string path to search - milliseconds to wait for a reply - Found items or if - timeout occurs or item is not found - - - - Find inventory items by path - - The folder to begin the search in - The object owners - A string path to search, folders/objects separated by a '/' - Results are sent to the event - - - - Search inventory Store object for an item or folder - - The folder to begin the search in - An array which creates a path to search - Number of levels below baseFolder to conduct searches - if True, will stop searching after first match is found - A list of inventory items found - - - - Move an inventory item or folder to a new location - - The item or folder to move - The to move item or folder to - - - - Move an inventory item or folder to a new location and change its name - - The item or folder to move - The to move item or folder to - The name to change the item or folder to - - - - Move and rename a folder - - The source folders - The destination folders - The name to change the folder to - - - - Update folder properties - - of the folder to update - Sets folder's parent to - Folder name - Folder type - - - - Move a folder - - The source folders - The destination folders - - - - Move multiple folders, the keys in the Dictionary parameter, - to a new parents, the value of that folder's key. - - A Dictionary containing the - of the source as the key, and the - of the destination as the value - - - - Move an inventory item to a new folder - - The of the source item to move - The of the destination folder - - - - Move and rename an inventory item - - The of the source item to move - The of the destination folder - The name to change the folder to - - - - Move multiple inventory items to new locations - - A Dictionary containing the - of the source item as the key, and the - of the destination folder as the value - - - - Remove descendants of a folder - - The of the folder - - - - Remove a single item from inventory - - The of the inventory item to remove - - - - Remove a folder from inventory - - The of the folder to remove - - - - Remove multiple items or folders from inventory - - A List containing the s of items to remove - A List containing the s of the folders to remove - - - - Empty the Lost and Found folder - - - - - Empty the Trash folder - - - - - - - - - - - Proper use is to upload the inventory's asset first, then provide the Asset's TransactionID here. - - - - - - - - - - - - - Proper use is to upload the inventory's asset first, then provide the Asset's TransactionID here. - - - - - - - - Creates a new inventory folder - - ID of the folder to put this folder in - Name of the folder to create - The UUID of the newly created folder - - - - Creates a new inventory folder - - ID of the folder to put this folder in - Name of the folder to create - Sets this folder as the default folder - for new assets of the specified type. Use AssetType.Unknown - to create a normal folder, otherwise it will likely create a - duplicate of an existing folder type - The UUID of the newly created folder - If you specify a preferred type of AsseType.Folder - it will create a new root folder which may likely cause all sorts - of strange problems - - - - Create an inventory item and upload asset data - - Asset data - Inventory item name - Inventory item description - Asset type - Inventory type - Put newly created inventory in this folder - Delegate that will receive feedback on success or failure - - - - Create an inventory item and upload asset data - - Asset data - Inventory item name - Inventory item description - Asset type - Inventory type - Put newly created inventory in this folder - Permission of the newly created item - (EveryoneMask, GroupMask, and NextOwnerMask of Permissions struct are supported) - Delegate that will receive feedback on success or failure - - - - Creates inventory link to another inventory item or folder - - Put newly created link in folder with this UUID - Inventory item or folder - Method to call upon creation of the link - - - - Creates inventory link to another inventory item - - Put newly created link in folder with this UUID - Original inventory item - Method to call upon creation of the link - - - - Creates inventory link to another inventory folder - - Put newly created link in folder with this UUID - Original inventory folder - Method to call upon creation of the link - - - - Creates inventory link to another inventory item or folder - - Put newly created link in folder with this UUID - Original item's UUID - Name - Description - Asset Type - Inventory Type - Transaction UUID - Method to call upon creation of the link - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Request a copy of an asset embedded within a notecard - - Usually UUID.Zero for copying an asset from a notecard - UUID of the notecard to request an asset from - Target folder for asset to go to in your inventory - UUID of the embedded asset - callback to run when item is copied to inventory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Save changes to notecard embedded in object contents - - Encoded notecard asset data - Notecard UUID - Object's UUID - Called upon finish of the upload with status information - - - - Upload new gesture asset for an inventory gesture item - - Encoded gesture asset - Gesture inventory UUID - Callback whick will be called when upload is complete - - - - Update an existing script in an agents Inventory - - A byte[] array containing the encoded scripts contents - the itemID of the script - if true, sets the script content to run on the mono interpreter - - - - - Update an existing script in an task Inventory - - A byte[] array containing the encoded scripts contents - the itemID of the script - UUID of the prim containting the script - if true, sets the script content to run on the mono interpreter - if true, sets the script to running - - - - - Rez an object from inventory - - Simulator to place object in - Rotation of the object when rezzed - Vector of where to place object - InventoryItem object containing item details - - - - Rez an object from inventory - - Simulator to place object in - Rotation of the object when rezzed - Vector of where to place object - InventoryItem object containing item details - UUID of group to own the object - - - - Rez an object from inventory - - Simulator to place object in - Rotation of the object when rezzed - Vector of where to place object - InventoryItem object containing item details - UUID of group to own the object - User defined queryID to correlate replies - If set to true, the CreateSelected flag - will be set on the rezzed object - - - - Rez an object from inventory - - Simulator to place object in - TaskID object when rezzed - Rotation of the object when rezzed - Vector of where to place object - InventoryItem object containing item details - UUID of group to own the object - User defined queryID to correlate replies - If set to true, the CreateSelected flag - will be set on the rezzed object - - - - DeRez an object from the simulator to the agents Objects folder in the agents Inventory - - The simulator Local ID of the object - If objectLocalID is a child primitive in a linkset, the entire linkset will be derezzed - - - - DeRez an object from the simulator and return to inventory - - The simulator Local ID of the object - The type of destination from the enum - The destination inventory folders -or- - if DeRezzing object to a tasks Inventory, the Tasks - The transaction ID for this request which - can be used to correlate this request with other packets - If objectLocalID is a child primitive in a linkset, the entire linkset will be derezzed - - - - Rez an item from inventory to its previous simulator location - - - - - - - - - Give an inventory item to another avatar - - The of the item to give - The name of the item - The type of the item from the enum - The of the recipient - true to generate a beameffect during transfer - - - - Give an inventory Folder with contents to another avatar - - The of the Folder to give - The name of the folder - The type of the item from the enum - The of the recipient - true to generate a beameffect during transfer - - - - Copy or move an from agent inventory to a task (primitive) inventory - - The target object - The item to copy or move from inventory - - For items with copy permissions a copy of the item is placed in the tasks inventory, - for no-copy items the object is moved to the tasks inventory - - - - Retrieve a listing of the items contained in a task (Primitive) - - The tasks - The tasks simulator local ID - milliseconds to wait for reply from simulator - A list containing the inventory items inside the task or null - if a timeout occurs - This request blocks until the response from the simulator arrives - or timeoutMS is exceeded - - - - Request the contents of a tasks (primitives) inventory from the - current simulator - - The LocalID of the object - - - - - Request the contents of a tasks (primitives) inventory - - The simulator Local ID of the object - A reference to the simulator object that contains the object - - - - - Move an item from a tasks (Primitive) inventory to the specified folder in the avatars inventory - - LocalID of the object in the simulator - UUID of the task item to move - The ID of the destination folder in this agents inventory - Simulator Object - Raises the event - - - - Remove an item from an objects (Prim) Inventory - - LocalID of the object in the simulator - UUID of the task item to remove - Simulator Object - You can confirm the removal by comparing the tasks inventory serial before and after the - request with the request combined with - the event - - - - Copy an InventoryScript item from the Agents Inventory into a primitives task inventory - - An unsigned integer representing a primitive being simulated - An which represents a script object from the agents inventory - true to set the scripts running state to enabled - A Unique Transaction ID - - The following example shows the basic steps necessary to copy a script from the agents inventory into a tasks inventory - and assumes the script exists in the agents inventory. - - uint primID = 95899503; // Fake prim ID - UUID scriptID = UUID.Parse("92a7fe8a-e949-dd39-a8d8-1681d8673232"); // Fake Script UUID in Inventory - - Client.Inventory.FolderContents(Client.Inventory.FindFolderForType(AssetType.LSLText), Client.Self.AgentID, - false, true, InventorySortOrder.ByName, 10000); - - Client.Inventory.RezScript(primID, (InventoryItem)Client.Inventory.Store[scriptID]); - - - - - - Request the running status of a script contained in a task (primitive) inventory - - The ID of the primitive containing the script - The ID of the script - The event can be used to obtain the results of the - request - - - - - Send a request to set the running state of a script contained in a task (primitive) inventory - - The ID of the primitive containing the script - The ID of the script - true to set the script running, false to stop a running script - To verify the change you can use the method combined - with the event - - - - Create a CRC from an InventoryItem - - The source InventoryItem - A uint representing the source InventoryItem as a CRC - - - - Reverses a cheesy XORing with a fixed UUID to convert a shadow_id to an asset_id - - Obfuscated shadow_id value - Deobfuscated asset_id value - - - - Does a cheesy XORing with a fixed UUID to convert an asset_id to a shadow_id - - asset_id value to obfuscate - Obfuscated shadow_id value - - - - Wrapper for creating a new object - - The type of item from the enum - The of the newly created object - An object with the type and id passed - - - - Parse the results of a RequestTaskInventory() response - - A string which contains the data from the task reply - A List containing the items contained within the tasks inventory - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - - UpdateCreateInventoryItem packets are received when a new inventory item - is created. This may occur when an object that's rezzed in world is - taken into inventory, when an item is created using the CreateInventoryItem - packet, or when an object is purchased - - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - an inventory object sent by another avatar or primitive - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - Raised when the simulator sends us data containing - ... - - - - Get this agents Inventory data - - - - - Callback for inventory item creation finishing - - Whether the request to create an inventory - item succeeded or not - Inventory item being created. If success is - false this will be null - - - - Callback for an inventory item being create from an uploaded asset - - true if inventory item creation was successful - - - - - - - - - - - - - Reply received when uploading an inventory asset - - Has upload been successful - Error message if upload failed - Inventory asset UUID - New asset UUID - - - - Delegate that is invoked when script upload is completed - - Has upload succeded (note, there still might be compile errors) - Upload status message - Is compilation successful - If compilation failed, list of error messages, null on compilation success - Script inventory UUID - Script's new asset UUID - - - Set to true to accept offer, false to decline it - - - The folder to accept the inventory into, if null default folder for will be used - - - - Callback when an inventory object is accepted and received from a - task inventory. This is the callback in which you actually get - the ItemID, as in ObjectOfferedCallback it is null when received - from a task. - - - - - Map layer request type - - - - Objects and terrain are shown - - - Only the terrain is shown, no objects - - - Overlay showing land for sale and for auction - - - - Type of grid item, such as telehub, event, populator location, etc. - - - - Telehub - - - PG rated event - - - Mature rated event - - - Popular location - - - Locations of avatar groups in a region - - - Land for sale - - - Classified ad - - - Adult rated event - - - Adult land for sale - - - - Information about a region on the grid map - - - - Sim X position on World Map - - - Sim Y position on World Map - - - Sim Name (NOTE: In lowercase!) - - - - - - Appears to always be zero (None) - - - Sim's defined Water Height - - - - - - UUID of the World Map image - - - Unique identifier for this region, a combination of the X - and Y position - - - - - - - - - - - - - - - - - - - - - - - Visual chunk of the grid map - - - - - Base class for Map Items - - - - The Global X position of the item - - - The Global Y position of the item - - - Get the Local X position of the item - - - Get the Local Y position of the item - - - Get the Handle of the region - - - - Represents an agent or group of agents location - - - - - Represents a Telehub location - - - - - Represents a non-adult parcel of land for sale - - - - - Represents an Adult parcel of land for sale - - - - - Represents a PG Event - - - - - Represents a Mature event - - - - - Represents an Adult event - - - - - Manages grid-wide tasks such as the world map - - - - The event subscribers. null if no subcribers - - - Raises the CoarseLocationUpdate event - A CoarseLocationUpdateEventArgs object containing the - data sent by simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GridRegion event - A GridRegionEventArgs object containing the - data sent by simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GridLayer event - A GridLayerEventArgs object containing the - data sent by simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the GridItems event - A GridItemEventArgs object containing the - data sent by simulator - - - Thread sync lock object - - - The event subscribers. null if no subcribers - - - Raises the RegionHandleReply event - A RegionHandleReplyEventArgs object containing the - data sent by simulator - - - Thread sync lock object - - - A dictionary of all the regions, indexed by region name - - - A dictionary of all the regions, indexed by region handle - - - - Constructor - - Instance of GridClient object to associate with this GridManager instance - - - - - - - - - - Request a map layer - - The name of the region - The type of layer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Request data for all mainland (Linden managed) simulators - - - - - Request the region handle for the specified region UUID - - UUID of the region to look up - - - - Get grid region information using the region name, this function - will block until it can find the region or gives up - - Name of sim you're looking for - Layer that you are requesting - Will contain a GridRegion for the sim you're - looking for if successful, otherwise an empty structure - True if the GridRegion was successfully fetched, otherwise - false - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Raised when the simulator sends a - containing the location of agents in the simulator - - - Raised when the simulator sends a Region Data in response to - a Map request - - - Raised when the simulator sends GridLayer object containing - a map tile coordinates and texture information - - - Raised when the simulator sends GridItems object containing - details on events, land sales at a specific location - - - Raised in response to a Region lookup - - - Unknown - - - Current direction of the sun - - - Current angular velocity of the sun - - - Microseconds since the start of SL 4-hour day - - - - - - Looking direction, must be a normalized vector - Up direction, must be a normalized vector - - - - Align the coordinate frame X and Y axis with a given rotation - around the Z axis in radians - - Absolute rotation around the Z axis in - radians - - - Origin position of this coordinate frame - - - X axis of this coordinate frame, or Forward/At in grid terms - - - Y axis of this coordinate frame, or Left in grid terms - - - Z axis of this coordinate frame, or Up in grid terms - - - - Represents a texture - - - - A object containing image data - - - - - - - - - Initializes a new instance of an AssetTexture object - - - - Initializes a new instance of an AssetTexture object - - A unique specific to this asset - A byte array containing the raw asset data - - - - Initializes a new instance of an AssetTexture object - - A object containing texture data - - - - Populates the byte array with a JPEG2000 - encoded image created from the data in - - - - - Decodes the JPEG2000 data in AssetData to the - object - - True if the decoding was successful, otherwise false - - - - Decodes the begin and end byte positions for each quality layer in - the image - - - - - Override the base classes AssetType - - - - Class for controlling various system settings. - - Some values are readonly because they affect things that - happen when the GridClient object is initialized, so changing them at - runtime won't do any good. Non-readonly values may affect things that - happen at login or dynamically - - - Main grid login server - - - Beta grid login server - - - - InventoryManager requests inventory information on login, - GridClient initializes an Inventory store for main inventory. - - - - - InventoryManager requests library information on login, - GridClient initializes an Inventory store for the library. - - - - Number of milliseconds between sending pings to each sim - - - Number of milliseconds between sending camera updates - - - Number of milliseconds between updating the current - positions of moving, non-accelerating and non-colliding objects - - - Millisecond interval between ticks, where all ACKs are - sent out and the age of unACKed packets is checked - - - The initial size of the packet inbox, where packets are - stored before processing - - - Maximum size of packet that we want to send over the wire - - - The maximum value of a packet sequence number before it - rolls over back to one - - - The relative directory where external resources are kept - - - Login server to connect to - - - IP Address the client will bind to - - - Use XML-RPC Login or LLSD Login, default is XML-RPC Login - - - - Use Caps for fetching inventory where available - - - - Number of milliseconds before an asset transfer will time - out - - - Number of milliseconds before a teleport attempt will time - out - - - Number of milliseconds before NetworkManager.Logout() will - time out - - - Number of milliseconds before a CAPS call will time out - Setting this too low will cause web requests time out and - possibly retry repeatedly - - - Number of milliseconds for xml-rpc to timeout - - - Milliseconds before a packet is assumed lost and resent - - - Milliseconds without receiving a packet before the - connection to a simulator is assumed lost - - - Milliseconds to wait for a simulator info request through - the grid interface - - - The maximum size of the sequence number archive, used to - check for resent and/or duplicate packets - - - Maximum number of queued ACKs to be sent before SendAcks() - is forced - - - Network stats queue length (seconds) - - - - Primitives will be reused when falling in/out of interest list (and shared between clients) - prims returning to interest list do not need re-requested - Helps also in not re-requesting prim.Properties for code that checks for a Properties == null per client - - - - - Pool parcel data between clients (saves on requesting multiple times when all clients may need it) - - - - - How long to preserve cached data when no client is connected to a simulator - The reason for setting it to something like 2 minutes is in case a client - is running back and forth between region edges or a sim is comming and going - - - - Enable/disable storing terrain heightmaps in the - TerrainManager - - - Enable/disable sending periodic camera updates - - - Enable/disable automatically setting agent appearance at - login and after sim crossing - - - Enable/disable automatically setting the bandwidth throttle - after connecting to each simulator - The default throttle uses the equivalent of the maximum - bandwidth setting in the official client. If you do not set a - throttle your connection will by default be throttled well below - the minimum values and you may experience connection problems - - - Enable/disable the sending of pings to monitor lag and - packet loss - - - Should we connect to multiple sims? This will allow - viewing in to neighboring simulators and sim crossings - (Experimental) - - - If true, all object update packets will be decoded in to - native objects. If false, only updates for our own agent will be - decoded. Registering an event handler will force objects for that - type to always be decoded. If this is disabled the object tracking - will have missing or partial prim and avatar information - - - If true, when a cached object check is received from the - server the full object info will automatically be requested - - - Whether to establish connections to HTTP capabilities - servers for simulators - - - Whether to decode sim stats - - - The capabilities servers are currently designed to - periodically return a 502 error which signals for the client to - re-establish a connection. Set this to true to log those 502 errors - - - If true, any reference received for a folder or item - the library is not aware of will automatically be fetched - - - If true, and SEND_AGENT_UPDATES is true, - AgentUpdate packets will continuously be sent out to give the bot - smoother movement and autopiloting - - - If true, currently visible avatars will be stored - in dictionaries inside Simulator.ObjectAvatars. - If false, a new Avatar or Primitive object will be created - each time an object update packet is received - - - If true, currently visible avatars will be stored - in dictionaries inside Simulator.ObjectPrimitives. - If false, a new Avatar or Primitive object will be created - each time an object update packet is received - - - If true, position and velocity will periodically be - interpolated (extrapolated, technically) for objects and - avatars that are being tracked by the library. This is - necessary to increase the accuracy of speed and position - estimates for simulated objects - - - - If true, utilization statistics will be tracked. There is a minor penalty - in CPU time for enabling this option. - - - - If true, parcel details will be stored in the - Simulator.Parcels dictionary as they are received - - - - If true, an incoming parcel properties reply will automatically send - a request for the parcel access list - - - - - if true, an incoming parcel properties reply will automatically send - a request for the traffic count. - - - - - If true, images, and other assets downloaded from the server - will be cached in a local directory - - - - Path to store cached texture data - - - Maximum size cached files are allowed to take on disk (bytes) - - - Default color used for viewer particle effects - - - Maximum number of times to resend a failed packet - - - Throttle outgoing packet rate - - - UUID of a texture used by some viewers to indentify type of client used - - - - Download textures using GetTexture capability when available - - - - The maximum number of concurrent texture downloads allowed - Increasing this number will not necessarily increase texture retrieval times due to - simulator throttles - - - - The Refresh timer inteval is used to set the delay between checks for stalled texture downloads - - This is a static variable which applies to all instances - - - - Textures taking longer than this value will be flagged as timed out and removed from the pipeline - - - - - Get or set the minimum log level to output to the console by default - - If the library is not compiled with DEBUG defined and this level is set to DEBUG - You will get no output on the console. This behavior can be overriden by creating - a logger configuration file for log4net - - - - Attach avatar names to log messages - - - Log packet retransmission info - - - Log disk cache misses and other info - - - Constructor - Reference to a GridClient object - - - Process an incoming packet and raise the appropriate events - The sender - The EventArgs object containing the packet data - - - Cost of uploading an asset - Read-only since this value is dynamically fetched at login - - - - Main class to expose grid functionality to clients. All of the - classes needed for sending and receiving data are accessible through - this class. - - - - // Example minimum code required to instantiate class and - // connect to a simulator. - using System; - using System.Collections.Generic; - using System.Text; - using OpenMetaverse; - - namespace FirstBot - { - class Bot - { - public static GridClient Client; - static void Main(string[] args) - { - Client = new GridClient(); // instantiates the GridClient class - // to the global Client object - // Login to Simulator - Client.Network.Login("FirstName", "LastName", "Password", "FirstBot", "1.0"); - // Wait for a Keypress - Console.ReadLine(); - // Logout of simulator - Client.Network.Logout(); - } - } - } - - - - - Networking subsystem - - - Settings class including constant values and changeable - parameters for everything - - - Parcel (subdivided simulator lots) subsystem - - - Our own avatars subsystem - - - Other avatars subsystem - - - Estate subsystem - - - Friends list subsystem - - - Grid (aka simulator group) subsystem - - - Object subsystem - - - Group subsystem - - - Asset subsystem - - - Appearance subsystem - - - Inventory subsystem - - - Directory searches including classifieds, people, land - sales, etc - - - Handles land, wind, and cloud heightmaps - - - Handles sound-related networking - - - Throttling total bandwidth usage, or allocating bandwidth - for specific data stream types - - - - Default constructor - - - - - Return the full name of this instance - - Client avatars full name - - - - Class that handles the local asset cache - - - - - Default constructor - - A reference to the GridClient object - - - - Disposes cleanup timer - - - - - Only create timer when needed - - - - - Return bytes read from the local asset cache, null if it does not exist - - UUID of the asset we want to get - Raw bytes of the asset, or null on failure - - - - Returns ImageDownload object of the - image from the local image cache, null if it does not exist - - UUID of the image we want to get - ImageDownload object containing the image, or null on failure - - - - Constructs a file name of the cached asset - - UUID of the asset - String with the file name of the cahced asset - - - - Constructs a file name of the static cached asset - - UUID of the asset - String with the file name of the static cached asset - - - - Saves an asset to the local cache - - UUID of the asset - Raw bytes the asset consists of - Weather the operation was successfull - - - - Get the file name of the asset stored with gived UUID - - UUID of the asset - Null if we don't have that UUID cached on disk, file name if found in the cache folder - - - - Checks if the asset exists in the local cache - - UUID of the asset - True is the asset is stored in the cache, otherwise false - - - - Wipes out entire cache - - - - - Brings cache size to the 90% of the max size - - - - - Asynchronously brings cache size to the 90% of the max size - - - - - Adds up file sizes passes in a FileInfo array - - - - - Checks whether caching is enabled - - - - - Periodically prune the cache - - - - - Nicely formats file sizes - - Byte size we want to output - String with humanly readable file size - - - - Allows setting weather to periodicale prune the cache if it grows too big - Default is enabled, when caching is enabled - - - - - How long (in ms) between cache checks (default is 5 min.) - - - - - Helper class for sorting files by their last accessed time - - diff --git a/bin/OpenMetaverse.dll b/bin/OpenMetaverse.dll index 4b558e728190ab19a4107687799f68265a8624af..22911aafdcf32130b57d775afab53a2902aa2ea2 100755 GIT binary patch delta 39718 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 PWtluzg})!NBbog##Ss6U delta 40654 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 diff --git a/bin/OpenMetaverseTypes.dll b/bin/OpenMetaverseTypes.dll index 5add2f183e101a696766c52c99485b7b8b369bd6..e47254330e5d71e0335ee661b770c9db83f6c99a 100755 GIT binary patch delta 86 zcmV-c0IC0g;0A!;29SsZqF@PAfsD0`0V`f4MmRMzH#9;rEjKhnG%YkXMM5n&K{i1x sFfu_hFhN2?L`5|=x7%I;oe>bSbX54nbn8ZnY67APyxvx~h;RXTKgZ)8!TmxfsD0`0V`f4HZUa3&=6qr8!$t!wocAEHUKxbh;RXTKiel96#xJL